bu5hm4n pushed a commit to branch feature/meson. http://git.enlightenment.org/core/efl.git/commit/?id=a4483682d246b81a239ad9f76bed194d0b1b2f85
commit a4483682d246b81a239ad9f76bed194d0b1b2f85 Author: Marcel Hollerbach <[email protected]> Date: Thu Dec 21 20:30:25 2017 +0100 meson: here comes eo & eolian in one batch since they are bound together ... YEY --- meson.build | 34 ++++++++++++++-- src/benchmarks/eo/meson.build | 16 ++++++++ src/bin/eolian/meson.build | 18 +++++++++ src/lib/eo/meson.build | 63 +++++++++++++++++++++++++++++ src/lib/eolian/meson.build | 49 ++++++++++++++++++++++ src/scripts/eo/meson.build | 11 +++++ src/scripts/meson.build | 1 + src/tests/eo/access/meson.build | 20 +++++++++ src/tests/eo/children/meson.build | 17 ++++++++ src/tests/eo/composite_objects/meson.build | 19 +++++++++ src/tests/eo/constructors/meson.build | 31 ++++++++++++++ src/tests/eo/function_overrides/meson.build | 23 +++++++++++ src/tests/eo/interface/meson.build | 21 ++++++++++ src/tests/eo/meson.build | 9 +++++ src/tests/eo/mixin/meson.build | 27 +++++++++++++ src/tests/eo/signals/meson.build | 17 ++++++++ src/tests/eo/suite/meson.build | 32 +++++++++++++++ src/tests/eolian/meson.build | 37 +++++++++++++++++ src/tests/meson.build | 2 + 19 files changed, 443 insertions(+), 4 deletions(-) diff --git a/meson.build b/meson.build index a077f72951..9415a6513b 100644 --- a/meson.build +++ b/meson.build @@ -43,6 +43,7 @@ local_module = join_paths('src', 'modules') local_tests = join_paths('src', 'tests') local_benchmark = join_paths('src', 'benchmarks') local_examples = join_paths('src', 'examples') +local_scripts = join_paths('src', 'scripts') add_global_arguments('-DHAVE_CONFIG_H=1', language: 'c') add_global_arguments('-D_GNU_SOURCE=1', language: 'c') @@ -70,15 +71,38 @@ config_h.set_quoted('DATADIR', dir_data) config_h.set10('EFL_HAVE_THREADS', true) config_dir = [include_directories('.')] +eolian_include_directories = [] subdir('header_checks') +subprojects = [ +# name | mod | lib | bin | bench | +['eina' , true, true, true, true], +['eolian', false, true, true, false], +['eo' , false, true, false, true], +] + subdir(join_paths(local_lib, 'efl')) -subdir(join_paths(local_module, 'eina')) -subdir(join_paths(local_lib, 'eina')) -subdir(join_paths(local_bin, 'eina')) -subdir(join_paths(local_benchmark, 'eina')) +foreach package : subprojects + package_name = package[0] + package_version_name = package_name + '-' + version_major + + dir_package_include = join_paths(dir_include, package_version_name) + + if (package[1]) + subdir(join_paths(local_module, package_name)) + endif + if (package[2]) + subdir(join_paths(local_lib, package_name)) + endif + if (package[3]) + subdir(join_paths(local_bin, package_name)) + endif + if (package[4]) + subdir(join_paths(local_benchmark, package_name)) + endif +endforeach if get_option('build-tests') subdir(join_paths(local_tests)) @@ -88,4 +112,6 @@ if get_option('build-examples') subdir(join_paths(local_examples)) endif +subdir(join_paths(local_scripts)) + configure_file(output: 'config.h', install: false, configuration: config_h) diff --git a/src/benchmarks/eo/meson.build b/src/benchmarks/eo/meson.build new file mode 100644 index 0000000000..2df6c71e97 --- /dev/null +++ b/src/benchmarks/eo/meson.build @@ -0,0 +1,16 @@ +eo_benchmark_src = [ + 'class_simple.c', + 'class_simple.h', + 'eo_bench.c', + 'eo_bench.h', + 'eo_bench_callbacks.c', + 'eo_bench_eo_do.c', + 'eo_bench_eo_add.c' +] + +eo_bench = executable('eo_bench', + eo_benchmark_src, + dependencies: [eo, eina], +) + +benchmark('eo', eo_bench) diff --git a/src/bin/eolian/meson.build b/src/bin/eolian/meson.build new file mode 100644 index 0000000000..da6d051af4 --- /dev/null +++ b/src/bin/eolian/meson.build @@ -0,0 +1,18 @@ +eolian_gen_src = [ + 'main.c', + 'main.h', + 'types.c', + 'types.h', + 'headers.c', + 'headers.h', + 'sources.c', + 'sources.h', + 'docs.c', + 'docs.h' +] + +eolian_gen = executable('eolian_gen', + eolian_gen_src, + dependencies: eolian, + install: true, +) diff --git a/src/lib/eo/meson.build b/src/lib/eo/meson.build new file mode 100644 index 0000000000..a880347a02 --- /dev/null +++ b/src/lib/eo/meson.build @@ -0,0 +1,63 @@ +pub_eo_files = [ + 'efl_object.eo', + 'efl_class.eo', + 'efl_object_override.eo', + 'efl_interface.eo' +] + +eo_src = [ + 'eo.c', + 'eo_ptr_indirection.c', + 'eo_ptr_indirection.h', + 'eo_base_class.c', + 'eo_class_class.c', + 'eo_add_fallback.c', + 'eo_add_fallback.h', + 'eo_private.h', + 'efl_future.c' +] + +eo_header = ['Eo.h'] + +pub_eo_file_target = [] +foreach eo_file : pub_eo_files + pub_eo_file_target += custom_target('eolian_gen_' + eo_file, + input : eo_file, + output : [eo_file + '.h'], + install : true, + install_dir : dir_package_include, + command : [eolian_gen, '-I', meson.current_source_dir(), eolian_include_directories, + '-o', 'h:' + join_paths(meson.current_build_dir(), eo_file + '.h'), + '-o', 'c:' + join_paths(meson.current_build_dir(), eo_file + '.c'), + '-gch', '@INPUT@']) +endforeach + +eolian_include_directories += ['-I', meson.current_source_dir()] + +eo_lib = library('eo', + eo_src, pub_eo_file_target, + dependencies: [eina, valgrind, dl, execinfo], + install: true, +) + +library('eo-dbg', + eo_src, pub_eo_file_target, + dependencies: [eina, valgrind, dl, execinfo], + install: true, + c_args : '-DEO_DEBUG' +) + +eo = declare_dependency( + include_directories: [include_directories('.')], + link_with: eo_lib, + sources : pub_eo_file_target, + dependencies: [eina], +) + +install_data(pub_eo_files, + install_dir: join_paths(eolian_include_dir, package_version_name) +) + +install_headers(eo_header, + install_dir : dir_package_include, +) diff --git a/src/lib/eolian/meson.build b/src/lib/eolian/meson.build new file mode 100644 index 0000000000..20317cce09 --- /dev/null +++ b/src/lib/eolian/meson.build @@ -0,0 +1,49 @@ +eolian_src = [ +'eo_lexer.c', +'eo_lexer.h', +'eo_parser.c', +'eo_parser.h', +'eolian.c', +'eolian_priv.h', +'eolian_database.c', +'eolian_database.h', +'database_class.c', +'database_class_api.c', +'database_function.c', +'database_function_api.c', +'database_function_parameter.c', +'database_function_parameter_api.c', +'database_type.c', +'database_type_api.c', +'database_implement.c', +'database_implement_api.c', +'database_constructor.c', +'database_constructor_api.c', +'database_event.c', +'database_event_api.c', +'database_part.c', +'database_part_api.c', +'database_expr.c', +'database_expr_api.c', +'database_var.c', +'database_var_api.c', +'database_validate.c' +] + +eolian_lib = library('eolian', eolian_src, + include_directories: config_dir, + dependencies: eina, + install: true, +) + +eolian = declare_dependency( + include_directories: include_directories('.'), + link_with : eolian_lib, + dependencies: eina, +) + +eolian_include_dir = join_paths(dir_data, 'eolian', 'include') + +install_headers('Eolian.h', + install_dir : dir_package_include +) diff --git a/src/scripts/eo/meson.build b/src/scripts/eo/meson.build new file mode 100644 index 0000000000..bdb2803541 --- /dev/null +++ b/src/scripts/eo/meson.build @@ -0,0 +1,11 @@ +eo_debug_config = configuration_data() + +eo_debug_config.set('prefix', dir_prefix) +eo_debug_config.set('exec_prefix', '${prefix}') +eo_debug_config.set('libdir', dir_lib) + +configure_file( + input: 'eo_debug.in', + output: 'eo_debug', + configuration: eo_debug_config, + install_dir: dir_bin) diff --git a/src/scripts/meson.build b/src/scripts/meson.build new file mode 100644 index 0000000000..86d62372b1 --- /dev/null +++ b/src/scripts/meson.build @@ -0,0 +1 @@ +subdir('eo') diff --git a/src/tests/eo/access/meson.build b/src/tests/eo/access/meson.build new file mode 100644 index 0000000000..ecf8eb52bf --- /dev/null +++ b/src/tests/eo/access/meson.build @@ -0,0 +1,20 @@ +eo_access_src = [ + 'access_inherit.c', + 'access_inherit.h', + 'access_main.c', + 'access_simple.c', + 'access_simple.h', + 'access_simple_protected.h' +] + +eo_access = executable('eo_access', + eo_access_src, + dependencies: [eo], + c_args : [ + '-DTESTS_BUILD_DIR="'+meson.current_build_dir()+'"', + '-DTESTS_SRC_DIR="'+meson.current_source_dir()+'"'] +) + +test('eo-access', eo_access, + is_parallel: true, +) diff --git a/src/tests/eo/children/meson.build b/src/tests/eo/children/meson.build new file mode 100644 index 0000000000..5c16e23f5c --- /dev/null +++ b/src/tests/eo/children/meson.build @@ -0,0 +1,17 @@ +eo_children_src = [ + 'children_main.c', + 'children_simple.c', + 'children_simple.h' +] + +eo_children = executable('eo_children', + eo_children_src, + dependencies: [eo], + c_args : [ + '-DTESTS_BUILD_DIR="'+meson.current_build_dir()+'"', + '-DTESTS_SRC_DIR="'+meson.current_source_dir()+'"'] +) + +test('eo-children', eo_children, + is_parallel: true, +) diff --git a/src/tests/eo/composite_objects/meson.build b/src/tests/eo/composite_objects/meson.build new file mode 100644 index 0000000000..1d22c38ef3 --- /dev/null +++ b/src/tests/eo/composite_objects/meson.build @@ -0,0 +1,19 @@ +eo_composite_objects_src = [ + 'composite_objects_comp.c', + 'composite_objects_comp.h', + 'composite_objects_main.c', + 'composite_objects_simple.c', + 'composite_objects_simple.h' +] + +eo_composite_objects = executable('eo_composite_objects', + eo_composite_objects_src, + dependencies: [eo], + c_args : [ + '-DTESTS_BUILD_DIR="'+meson.current_build_dir()+'"', + '-DTESTS_SRC_DIR="'+meson.current_source_dir()+'"'] +) + +test('eo-composite-objects', eo_composite_objects, + is_parallel: true, +) diff --git a/src/tests/eo/constructors/meson.build b/src/tests/eo/constructors/meson.build new file mode 100644 index 0000000000..b4921815bc --- /dev/null +++ b/src/tests/eo/constructors/meson.build @@ -0,0 +1,31 @@ +eo_constructors_src = [ + 'constructors_main.c', + 'constructors_mixin.c', + 'constructors_mixin.h', + 'constructors_simple.c', + 'constructors_simple.h', + 'constructors_simple2.c', + 'constructors_simple2.h', + 'constructors_simple3.c', + 'constructors_simple3.h', + 'constructors_simple4.c', + 'constructors_simple4.h', + 'constructors_simple5.c', + 'constructors_simple5.h', + 'constructors_simple6.c', + 'constructors_simple6.h', + 'constructors_simple7.c', + 'constructors_simple7.h' +] + +eo_constructors = executable('eo_constructors', + eo_constructors_src, + dependencies: [eo], + c_args : [ + '-DTESTS_BUILD_DIR="'+meson.current_build_dir()+'"', + '-DTESTS_SRC_DIR="'+meson.current_source_dir()+'"'] +) + +test('eo-constructors', eo_constructors, + is_parallel: true, +) diff --git a/src/tests/eo/function_overrides/meson.build b/src/tests/eo/function_overrides/meson.build new file mode 100644 index 0000000000..2516f1a729 --- /dev/null +++ b/src/tests/eo/function_overrides/meson.build @@ -0,0 +1,23 @@ +eo_function_overrides_src = [ + 'function_overrides_inherit.c', + 'function_overrides_inherit.h', + 'function_overrides_inherit2.c', + 'function_overrides_inherit2.h', + 'function_overrides_inherit3.c', + 'function_overrides_inherit3.h', + 'function_overrides_main.c', + 'function_overrides_simple.c', + 'function_overrides_simple.h' +] + +eo_function_overrides = executable('eo_function_overrides', + eo_function_overrides_src, + dependencies: [eo], + c_args : [ + '-DTESTS_BUILD_DIR="'+meson.current_build_dir()+'"', + '-DTESTS_SRC_DIR="'+meson.current_source_dir()+'"'] +) + +test('eo-function-overrides', eo_interface, + is_parallel: true, +) diff --git a/src/tests/eo/interface/meson.build b/src/tests/eo/interface/meson.build new file mode 100644 index 0000000000..67eb0187c7 --- /dev/null +++ b/src/tests/eo/interface/meson.build @@ -0,0 +1,21 @@ +eo_interface_src = [ + 'interface_interface.c', + 'interface_interface.h', + 'interface_interface2.c', + 'interface_interface2.h', + 'interface_main.c', + 'interface_simple.c', + 'interface_simple.h' +] + +eo_interface = executable('eo_interface', + eo_interface_src, + dependencies: [eo], + c_args : [ + '-DTESTS_BUILD_DIR="'+meson.current_build_dir()+'"', + '-DTESTS_SRC_DIR="'+meson.current_source_dir()+'"'] +) + +test('eo-interface', eo_interface, + is_parallel: true, +) diff --git a/src/tests/eo/meson.build b/src/tests/eo/meson.build new file mode 100644 index 0000000000..da4a899da7 --- /dev/null +++ b/src/tests/eo/meson.build @@ -0,0 +1,9 @@ +subdir('suite') +subdir('signals') +subdir('mixin') +subdir('interface') +subdir('function_overrides') +subdir('constructors') +subdir('composite_objects') +subdir('children') +subdir('access') diff --git a/src/tests/eo/mixin/meson.build b/src/tests/eo/mixin/meson.build new file mode 100644 index 0000000000..3ecda3155f --- /dev/null +++ b/src/tests/eo/mixin/meson.build @@ -0,0 +1,27 @@ +eo_mixin_src = [ + 'mixin_inherit.c', + 'mixin_inherit.h', + 'mixin_main.c', + 'mixin_mixin.c', + 'mixin_mixin.h', + 'mixin_mixin2.c', + 'mixin_mixin2.h', + 'mixin_mixin3.c', + 'mixin_mixin3.h', + 'mixin_mixin4.c', + 'mixin_mixin4.h', + 'mixin_simple.c', + 'mixin_simple.h' +] + +eo_mixin = executable('eo_mixin', + eo_mixin_src, + dependencies: [eo], + c_args : [ + '-DTESTS_BUILD_DIR="'+meson.current_build_dir()+'"', + '-DTESTS_SRC_DIR="'+meson.current_source_dir()+'"'] +) + +test('eo-mixins', eo_mixin, + is_parallel: true, +) diff --git a/src/tests/eo/signals/meson.build b/src/tests/eo/signals/meson.build new file mode 100644 index 0000000000..6d03c396ea --- /dev/null +++ b/src/tests/eo/signals/meson.build @@ -0,0 +1,17 @@ +eo_signals_src = [ + 'signals_main.c', + 'signals_simple.c', + 'signals_simple.h' +] + +eo_signals = executable('eo_signals', + eo_signals_src, + dependencies: [eo], + c_args : [ + '-DTESTS_BUILD_DIR="'+meson.current_build_dir()+'"', + '-DTESTS_SRC_DIR="'+meson.current_source_dir()+'"'] +) + +test('eo-signals', eo_signals, + is_parallel: true, +) diff --git a/src/tests/eo/suite/meson.build b/src/tests/eo/suite/meson.build new file mode 100644 index 0000000000..7bed58aebc --- /dev/null +++ b/src/tests/eo/suite/meson.build @@ -0,0 +1,32 @@ +eo_suite_src = [ + 'eo_test_class_simple.c', + 'eo_test_class_simple.h', + 'eo_test_class_singleton.c', + 'eo_test_class_singleton.h', + 'eo_test_domain.c', + 'eo_test_domain.h', + 'eo_suite.c', + 'eo_suite.h', + 'eo_error_msgs.h', + 'eo_error_msgs.c', + 'eo_test_class_errors.c', + 'eo_test_class_behaviour_errors.c', + 'eo_test_call_errors.c', + 'eo_test_general.c', + 'eo_test_value.c', + 'eo_test_event.c', + 'eo_test_threaded_calls.c', + 'eo_test_init.c' +] + +eo_suite = executable('eo_suite', + eo_suite_src, + dependencies: [eo, check], + c_args : [ + '-DTESTS_BUILD_DIR="'+meson.current_build_dir()+'"', + '-DTESTS_SRC_DIR="'+meson.current_source_dir()+'"'] +) + +test('eo-suite', eo_suite, + is_parallel: true, +) diff --git a/src/tests/eolian/meson.build b/src/tests/eolian/meson.build new file mode 100644 index 0000000000..c47f63db44 --- /dev/null +++ b/src/tests/eolian/meson.build @@ -0,0 +1,37 @@ +priv_eo_files = [ + 'generated_future.eo' +] + +eolian_test_src = [ +'eolian_parsing.c', +'eolian_generation.c', +'eolian_generated_future.c', +'eolian_suite.c', +'eolian_suite.h' +] + +priv_eo_file_target = [] +foreach eo_file : priv_eo_files + priv_eo_file_target += custom_target('eolian_gen_' + eo_file, + input : eo_file, + output : [eo_file + '.h'], + command : [eolian_gen, '-I', meson.current_source_dir(), eolian_include_directories, + '-o', 'h:' + join_paths(meson.current_build_dir(), eo_file + '.h'), + '-o', 'c:' + join_paths(meson.current_build_dir(), eo_file + '.c'), + '-gch', '@INPUT@']) +endforeach + +eolian_suite = executable('eolian_suite', + eolian_test_src, priv_eo_file_target, + #FIXME eolian + dependencies: [eolian, check, eo], + c_args : [ + '-DEOLIAN_GEN="'+eolian_gen.full_path()+'"', + '-DTESTS_BUILD_DIR="'+meson.current_build_dir()+'"', + '-DTESTS_SRC_DIR="'+meson.current_source_dir()+'"'] +) + +test('eolian', eolian_suite, + is_parallel: true, + timeout: 30, +) diff --git a/src/tests/meson.build b/src/tests/meson.build index 856d351fa4..bfefbfd42a 100644 --- a/src/tests/meson.build +++ b/src/tests/meson.build @@ -1,2 +1,4 @@ check = dependency('check') subdir('eina') +subdir('eolian') +subdir('eo') --
