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')

-- 


Reply via email to