bu5hm4n pushed a commit to branch feature/meson.

http://git.enlightenment.org/core/efl.git/commit/?id=227d96b1aed9721312fb42075aa268085df1a6c7

commit 227d96b1aed9721312fb42075aa268085df1a6c7
Author: Marcel Hollerbach <[email protected]>
Date:   Fri Dec 22 20:19:20 2017 +0100

    meson: here come efl-interfaces!
    
    Efl_Config.h creation is now moved to the source root directory.
---
 meson.build                        |  33 +++++++-
 src/lib/efl/interfaces/meson.build | 168 +++++++++++++++++++++++++++++++++++++
 src/lib/efl/meson.build            |  41 +++++----
 src/tests/efl/meson.build          |  13 +++
 src/tests/meson.build              |   2 +
 5 files changed, 238 insertions(+), 19 deletions(-)

diff --git a/meson.build b/meson.build
index 9e5aa7dfd3..d42980de8f 100644
--- a/meson.build
+++ b/meson.build
@@ -83,9 +83,12 @@ subprojects = [
 ['eina'  ,  true,  true,  true,  true],
 ['eolian', false,  true,  true, false],
 ['eo'    , false,  true, false,  true],
+['efl'   , false,  true, false, false]
 ]
 
-subdir(join_paths(local_lib, 'efl'))
+
+# We generate Efl_Config.h and config.h later, they will be available here
+config_dir += include_directories('.')
 
 foreach package : subprojects
   package_name = package[0]
@@ -117,4 +120,30 @@ endif
 
 subdir(join_paths(local_scripts))
 
-configure_file(output: 'config.h', install: false, configuration: config_h)
+
+#
+# Configure files
+#
+
+efl_config_h = configuration_data()
+efl_config_h.set('EFL_VERSION_MAJOR', version_major)
+efl_config_h.set('EFL_VERSION_MINOR', version_minor)
+efl_config_h.set('EFL_VERSION_MICRO', version_micro)
+efl_config_h.set('EFL_BUILD_ID', get_option('build-id'))
+
+#FIXME placeholder
+efl_config_h.set('EFL_API_EO_DEF', '#define EFL_API_EO_DEF "FIXME NOT 
IMPLEMENTED"')
+efl_config_h.set('EFL_API_LEGACY_DEF', '#define EFL_API_LEGACY_DEF "FIXME NOT 
IMPLEMENTED"')
+
+configure_file(
+  output: 'config.h',
+  install: false,
+  configuration: config_h
+)
+
+configure_file(
+  input: join_paths('src','lib', 'efl', 'Efl_Config.h.in'),
+  output: 'Efl_Config.h',
+  install_dir : join_paths(dir_include,'efl-'+version_major),
+  configuration: efl_config_h
+)
diff --git a/src/lib/efl/interfaces/meson.build 
b/src/lib/efl/interfaces/meson.build
new file mode 100644
index 0000000000..9f4a331876
--- /dev/null
+++ b/src/lib/efl/interfaces/meson.build
@@ -0,0 +1,168 @@
+pub_legacy_eo_files = [
+  'efl_gfx_fill.eo',
+  'efl_gfx.eo',
+  'efl_gfx_color.eo',
+  'efl_image.eo',
+  'efl_image_animated.eo',
+  'efl_input_device.eo',
+  'efl_ui_draggable.eo',
+  'efl_ui_clickable.eo',
+  'efl_ui_scrollable.eo',
+  'efl_ui_scrollable_interactive.eo',
+  'efl_ui_scrollbar.eo',
+  'efl_ui_selectable.eo',
+  'efl_ui_zoom.eo',
+]
+
+pub_eo_file_target = []
+foreach eo_file : pub_legacy_eo_files
+  pub_eo_file_target += custom_target('eolian_gen_' + eo_file,
+    input : eo_file,
+    output : [eo_file + '.h', eo_file + '.legacy.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'),
+                           '-o', 'l:' + join_paths(meson.current_build_dir(), 
eo_file + '.legacy.h'),
+                           '-gchl', '@INPUT@'])
+
+endforeach
+
+pub_eo_files = [
+  'efl_canvas.eo',
+  'efl_canvas_pointer.eo',
+  'efl_config.eo',
+  'efl_control.eo',
+  'efl_duplicate.eo',
+  'efl_file.eo',
+  'efl_image_load.eo',
+  'efl_part.eo',
+  'efl_player.eo',
+  'efl_text.eo',
+  'efl_text_font.eo',
+  'efl_text_style.eo',
+  'efl_text_format.eo',
+  'efl_text_cursor.eo',
+  'efl_text_annotate.eo',
+  'efl_text_markup.eo',
+  'efl_text_markup_util.eo',
+  'efl_text_properties.eo',
+  'efl_gfx_stack.eo',
+  'efl_gfx_view.eo',
+  'efl_gfx_buffer.eo',
+  'efl_gfx_path.eo',
+  'efl_gfx_shape.eo',
+  'efl_gfx_gradient.eo',
+  'efl_gfx_gradient_linear.eo',
+  'efl_gfx_gradient_radial.eo',
+  'efl_gfx_filter.eo',
+  'efl_gfx_blur.eo',
+  'efl_gfx_size_hint.eo',
+  'efl_model.eo',
+  'efl_animator.eo',
+  'efl_orientation.eo',
+  'efl_flipable.eo',
+  'efl_container.eo',
+  'efl_content.eo',
+  'efl_pack.eo',
+  'efl_pack_layout.eo',
+  'efl_pack_linear.eo',
+  'efl_pack_table.eo',
+  'efl_vpath.eo',
+  'efl_vpath_manager.eo',
+  'efl_vpath_file.eo',
+  'efl_vpath_core.eo',
+  'efl_vpath_file_core.eo',
+  'efl_ui_base.eo',
+  'efl_ui_direction.eo',
+  'efl_ui_drag.eo',
+  'efl_ui_range.eo',
+  'efl_ui_view.eo',
+  'efl_ui_model_connect.eo',
+  'efl_ui_factory.eo',
+  'efl_ui_model_factory_connect.eo',
+  'efl_screen.eo',
+  'efl_io_closer.eo',
+  'efl_io_positioner.eo',
+  'efl_io_reader.eo',
+  'efl_io_sizer.eo',
+  'efl_io_writer.eo',
+  'efl_io_buffer.eo',
+  'efl_io_queue.eo',
+  'efl_observer.eo',
+  'efl_observable.eo',
+  'efl_ui_item.eo',
+  'efl_ui_menu.eo',
+  'efl_ui_autorepeat.eo',
+  'efl_ui_format.eo',
+  'efl_gfx_color_class.eo',
+  'efl_gfx_text_class.eo',
+  'efl_gfx_size_class.eo',
+]
+
+#FIXME efl depends on evas ... YEAH
+eolian_include_directories += ['-I', join_paths(meson.source_root(), 'src', 
'lib', 'evas', 'canvas')]
+
+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
+
+pub_eo_types_files = [
+  'efl_gfx_types.eot',
+  'efl_ui_types.eot',
+  'efl_input_types.eot',
+  'efl_types.eot',
+  'efl_text_types.eot',
+]
+
+foreach eo_file : pub_eo_types_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'),
+                           '-gh', '@INPUT@'])
+endforeach
+
+pub_eo_files = files(pub_eo_files + pub_legacy_eo_files)
+
+efl_src += files([
+  'efl_interfaces_main.c',
+  'efl_model_common.c',
+  'efl_gfx_path.c',
+  'efl_gfx_shape.c',
+  'efl_gfx_color.c',
+  'efl_vpath_file.c',
+  'efl_vpath_manager.c',
+  'efl_vpath_core.c',
+  'efl_vpath_file_core.c',
+  'efl_input_device.c',
+  'efl_io_closer.c',
+  'efl_io_positioner.c',
+  'efl_io_reader.c',
+  'efl_io_sizer.c',
+  'efl_io_writer.c',
+  'efl_io_buffer.c',
+  'efl_io_queue.c',
+  'efl_observer.c',
+  'efl_file.c',
+  'efl_ui_format.c',
+  'efl_text_markup_util.c',
+])
+
+efl_header_src += files([
+  'efl_common_internal.h'
+])
+
+eolian_include_directories += ['-I', meson.current_source_dir()]
diff --git a/src/lib/efl/meson.build b/src/lib/efl/meson.build
index f6462f4b4a..e4f8e95773 100644
--- a/src/lib/efl/meson.build
+++ b/src/lib/efl/meson.build
@@ -1,22 +1,29 @@
-#FIXME
-#weird to have here ... but oooooh well and its not correct aaarg
-efl_config_h = configuration_data()
-efl_config_h.set('EFL_VERSION_MAJOR', version_major)
-efl_config_h.set('EFL_VERSION_MINOR', version_minor)
-efl_config_h.set('EFL_VERSION_MICRO', version_micro)
-efl_config_h.set('EFL_BUILD_ID', get_option('build-id'))
+efl_header_src = [
+  'Efl.h',
+  'Efl_Model_Common.h'
+]
 
-#FIXME placeholder
-efl_config_h.set('EFL_API_EO_DEF', '#define EFL_API_EO_DEF "FIXME NOT 
IMPLEMENTED"')
-efl_config_h.set('EFL_API_LEGACY_DEF', '#define EFL_API_LEGACY_DEF "FIXME NOT 
IMPLEMENTED"')
+efl_src = []
 
-efl_config_file = configure_file(
-  input: '../efl/Efl_Config.h.in',
-  output: 'Efl_Config.h',
-  configuration: efl_config_h)
+subdir('interfaces')
 
-install_headers(efl_config_file)
+efl_lib = library('efl',
+    efl_src, pub_eo_file_target,
+    dependencies: [eina, eo, m],
+    install: true,
+)
 
-config_dir += include_directories('.')
+efl = declare_dependency(
+  include_directories: [include_directories('.'), config_dir],
+  link_with: efl_lib,
+  dependencies: [eo],
+  sources : pub_eo_file_target
+)
 
-#end FIXME
+install_data(pub_eo_files,
+  install_dir: join_paths(eolian_include_dir, package_version_name)
+)
+
+install_headers(efl_header_src,
+  install_dir : dir_package_include,
+)
diff --git a/src/tests/efl/meson.build b/src/tests/efl/meson.build
new file mode 100644
index 0000000000..aa5e62347c
--- /dev/null
+++ b/src/tests/efl/meson.build
@@ -0,0 +1,13 @@
+efl_suite_src = [
+  'efl_suite.c',
+  'efl_suite.h',
+  'efl_test_model_composite.c',
+  'efl_test_model_container.c'
+]
+
+efl_suite_bin = executable('efl_suite',
+  efl_suite_src,
+  dependencies: [efl, ecore],
+)
+
+test('efl-suite', efl_suite_bin)
diff --git a/src/tests/meson.build b/src/tests/meson.build
index bfefbfd42a..fcc1ee5b4b 100644
--- a/src/tests/meson.build
+++ b/src/tests/meson.build
@@ -2,3 +2,5 @@ check = dependency('check')
 subdir('eina')
 subdir('eolian')
 subdir('eo')
+#disabled for now we need ecore first
+#subdir('efl')

-- 


Reply via email to