stefan pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=92b049b4d7e70666b790ba78480da8f19c795b1c

commit 92b049b4d7e70666b790ba78480da8f19c795b1c
Author: Marcel Hollerbach <[email protected]>
Date:   Sun May 10 14:43:28 2020 +0200

    build: time for efl-one
    
    this is building parts of efl into a single .so and links all modules
    and binaries to it.
    
    The libraries themselfs are build as .a's which are linked together as
    .so's. Which is required as every subproject has its little custom
    c_flags, which are somtimes conflicting.
    
    After the final .so is then built, all the split up libraries are
    replaced with the efl-one. After that the modules and binaries are built
    correctly with the correct link on the efl-one parts.
    
    Reviewed-by: Stefan Schmidt <[email protected]>
    Differential Revision: https://phab.enlightenment.org/D11808
---
 meson.build                    | 129 +++++++++++++++++++++++++++--------------
 meson_options.txt              |   6 ++
 src/lib/ecore_evas/meson.build |   3 +
 src/lib/evas/meson.build       |   2 +
 4 files changed, 98 insertions(+), 42 deletions(-)

diff --git a/meson.build b/meson.build
index 330694951c..1533d984f7 100644
--- a/meson.build
+++ b/meson.build
@@ -295,48 +295,48 @@ endif
 
 subprojects = [
 # name              |   option              | mod  | lib  | bin  | bench | 
tests | examples | true if build in efl-one | pkg-config options | name of 
static libs
-['evil'             ,[]                    , false,  true, false, false, 
false, false, false, [], []],
-['eina'             ,[]                    , false,  true,  true,  true,  
true,  true, false,  [], []],
+['evil'             ,[]                    , false,  true, false, false, 
false, false,  true, [], []],
+['eina'             ,[]                    , false,  true,  true,  true,  
true,  true,  true, [], []],
 ['eolian'           ,[]                    , false,  true,  true, false,  
true, false, false, ['eina'], []],
-['eo'               ,[]                    , false,  true, false,  true,  
true, false, false, ['eina'], []],
-['efl'              ,[]                    , false,  true, false, false,  
true, false, false, ['eo'], []],
-['emile'            ,[]                    , false,  true, false, false,  
true,  true, false, ['eina', 'efl'], ['lz4', 'rg_etc']],
-['eet'              ,[]                    , false,  true,  true, false,  
true,  true, false, ['eina', 'emile', 'efl'], []],
-['ecore'            ,[]                    , false,  true, false, false, 
false, false, false, ['eina', 'eo', 'efl'], ['buildsystem']],
-['eldbus'           ,[]                    , false,  true,  true, false,  
true,  true, false, ['eina', 'eo', 'efl'], []],
-['ecore'            ,[]                    ,  true, false, false, false,  
true,  true, false, ['eina', 'eo', 'efl'], []], #ecores modules depend on eldbus
-['ecore_audio'      ,['audio']             , false,  true, false, false, 
false, false, false, ['eina', 'eo'], []],
+['eo'               ,[]                    , false,  true, false,  true,  
true, false,  true, ['eina'], []],
+['efl'              ,[]                    , false,  true, false, false,  
true, false,  true, ['eo'], []],
+['emile'            ,[]                    , false,  true, false, false,  
true,  true,  true, ['eina', 'efl'], ['lz4', 'rg_etc']],
+['eet'              ,[]                    , false,  true,  true, false,  
true,  true,  true, ['eina', 'emile', 'efl'], []],
+['ecore'            ,[]                    , false,  true, false, false, 
false, false,  true, ['eina', 'eo', 'efl'], ['buildsystem']],
+['eldbus'           ,[]                    , false,  true,  true, false,  
true,  true,  true, ['eina', 'eo', 'efl'], []],
+['ecore'            ,[]                    ,  true, false, false, false,  
true,  true,  true, ['eina', 'eo', 'efl'], []], #ecores modules depend on eldbus
+['ecore_audio'      ,['audio']             , false,  true, false, false, 
false, false,  true, ['eina', 'eo'], []],
 ['ecore_avahi'      ,['avahi']             , false,  true, false, false, 
false,  true, false, ['eina', 'ecore'], []],
-['ecore_con'        ,[]                    , false,  true,  true, false,  
true, false, false, ['eina', 'eo', 'efl', 'ecore'], ['http-parser']],
-['ecore_file'       ,[]                    , false,  true, false, false, 
false, false, false, ['eina'], []],
-['eeze'             ,['eeze']              ,  true,  true,  true, false,  
true, false, false, ['eina', 'efl'], []],
-['ecore_input'      ,[]                    , false,  true, false, false, 
false, false, false, ['eina', 'eo'], []],
-['ecore_x'          ,['x11']               , false,  true, false, false, 
false, false, false, ['eina', 'efl'], []],
-['ecore_fb'         ,['fb']                , false,  true, false, false, 
false, false, false, ['eina'], []],
-['ecore_wl2'        ,['wl']                ,  true,  true, false, false, true, 
false, false, ['eina'], ['libdrm']],
-['ecore_sdl'        ,['sdl']               , false,  true, false, false, 
false, false, false, ['eina'], []],
-['ecore_win32'      ,[]                    , false,  true, false, false, 
false, false, false, ['eina'], []],
-['ecore_ipc'        ,[]                    , false,  true, false, false, 
false, false, false, ['eina'], []],
-['ecore_buffer'     ,['buffer']            ,  true,  true,  true, false, 
false, false, false, ['eina'], []],
-['ector'            ,[]                    , false,  true, false, false,  
true, false, false, ['eina', 'efl'], ['draw', 'triangulator', 'freetype']],
-['elput'            ,['drm']               , false,  true, false, false,  
true, false, false, ['eina', 'eldbus'], []],
-['ecore_drm2'       ,['drm']               , false,  true, false, false, 
false, false, false, ['ecore'], ['libdrm']],
-['ecore_cocoa'      ,['cocoa']             , false,  true, false, false, 
false, false, false, ['eina'], []],
-['evas'             ,[]                    ,  true,  true, false, false,  
true,  true, false, ['eina', 'efl', 'eo'], ['vg_common', 'libunibreak']],
-['efreet'           ,[]                    , false,  true, false, false,  
true, false, false, ['eina', 'efl', 'eo'], []],
-['ecore_input_evas' ,[]                    , false,  true, false, false, 
false, false, false, ['eina', 'evas'], []],
-['ecore_evas'       ,[]                    ,  true,  true,  true, false, 
false, false, false, ['evas', 'ector'], []],
-['ecore_imf'        ,[]                    ,  true,  true, false, false, 
false, false, false, ['eina'], []],
-['embryo'           ,[]                    , false,  true,  true, false, 
false, false, false, ['eina', 'efl', 'eo'], []],
-['eio'              ,[]                    , false,  true, false, false,  
true,  true, false, ['eina', 'eet'], []],
-['efreet'           ,[]                    , false, false,  true, false, 
false, false, false, ['eina', 'efl', 'eo'], []],
-['ecore_imf_evas'   ,[]                    , false,  true, false, false, 
false, false, false, ['eina', 'efl', 'eo'], []],
-['ephysics'         ,['physics']           , false,  true, false, false, 
false, false, false, ['eina', 'efl', 'eo'], []],
-['edje'             ,[]                    , false,  true,  true, false,  
true,  true, false, ['evas', 'eo', 'efl', lua_pc_name], []],
-['emotion'          ,[]                    ,  true,  true, false, false,  
true,  true, false, ['eina', 'efl', 'eo'], []],
-['ethumb'           ,[]                    ,  true,  true,  true, false, 
false, false, false, ['eina', 'efl', 'eo'], []],
-['ethumb_client'    ,[]                    , false,  true,  true, false, 
false,  true, false, ['eina', 'efl', 'eo', 'ethumb'], []],
-['elementary'       ,[]                    ,  true,  true,  true,  true,  
true,  true, false, ['eina', 'efl', 'eo', 'eet', 'evas', 'ecore', 'ecore-evas', 
'ecore-file', 'ecore-input', 'edje', 'ethumb-client', 'emotion', 'ecore-imf', 
'ecore-con', 'eldbus', 'efreet', 'efreet-mime', 'efreet-trash', 'eio'], 
['atspi']],
+['ecore_con'        ,[]                    , false,  true,  true, false,  
true, false,  true, ['eina', 'eo', 'efl', 'ecore'], ['http-parser']],
+['ecore_file'       ,[]                    , false,  true, false, false, 
false, false,  true, ['eina'], []],
+['eeze'             ,['eeze']              ,  true,  true,  true, false,  
true, false,  true, ['eina', 'efl'], []],
+['ecore_input'      ,[]                    , false,  true, false, false, 
false, false,  true, ['eina', 'eo'], []],
+['ecore_x'          ,['x11']               , false,  true, false, false, 
false, false,  true, ['eina', 'efl'], []],
+['ecore_fb'         ,['fb']                , false,  true, false, false, 
false, false,  true, ['eina'], []],
+['ecore_wl2'        ,['wl']                ,  true,  true, false, false,  
true, false,  true, ['eina'], ['libdrm']],
+['ecore_sdl'        ,['sdl']               , false,  true, false, false, 
false, false,  true, ['eina'], []],
+['ecore_win32'      ,[]                    , false,  true, false, false, 
false, false,  true, ['eina'], []],
+['ecore_ipc'        ,[]                    , false,  true, false, false, 
false, false,  true, ['eina'], []],
+['ecore_buffer'     ,['buffer']            ,  true,  true,  true, false, 
false, false,  true, ['eina'], []],
+['ector'            ,[]                    , false,  true, false, false,  
true, false,  true, ['eina', 'efl'], ['draw', 'triangulator', 'freetype']],
+['elput'            ,['drm']               , false,  true, false, false,  
true, false,  true, ['eina', 'eldbus'], []],
+['ecore_drm2'       ,['drm']               , false,  true, false, false, 
false, false,  true, ['ecore'], ['libdrm']],
+['ecore_cocoa'      ,['cocoa']             , false,  true, false, false, 
false, false,  true, ['eina'], []],
+['evas'             ,[]                    ,  true,  true, false, false,  
true,  true,  true, ['eina', 'efl', 'eo'], ['vg_common', 'libunibreak']],
+['efreet'           ,[]                    , false,  true, false, false,  
true, false,  true, ['eina', 'efl', 'eo'], []],
+['ecore_input_evas' ,[]                    , false,  true, false, false, 
false, false,  true, ['eina', 'evas'], []],
+['ecore_evas'       ,[]                    ,  true,  true,  true, false, 
false, false,  true, ['evas', 'ector'], []],
+['ecore_imf'        ,[]                    ,  true,  true, false, false, 
false, false,  true, ['eina'], []],
+['embryo'           ,[]                    , false,  true,  true, false, 
false, false,  true, ['eina', 'efl', 'eo'], []],
+['eio'              ,[]                    , false,  true, false, false,  
true,  true,  true, ['eina', 'eet'], []],
+['efreet'           ,[]                    , false, false,  true, false, 
false, false,  true, ['eina', 'efl', 'eo'], []],
+['ecore_imf_evas'   ,[]                    , false,  true, false, false, 
false, false,  true, ['eina', 'efl', 'eo'], []],
+['ephysics'         ,['physics']           , false,  true, false, false, 
false, false,  true, ['eina', 'efl', 'eo'], []],
+['edje'             ,[]                    , false,  true,  true, false,  
true,  true,  true, ['evas', 'eo', 'efl', lua_pc_name], []],
+['emotion'          ,[]                    ,  true,  true, false, false,  
true,  true,  true, ['eina', 'efl', 'eo'], []],
+['ethumb'           ,[]                    ,  true,  true,  true, false, 
false, false,  true, ['eina', 'efl', 'eo'], []],
+['ethumb_client'    ,[]                    , false,  true,  true, false, 
false,  true,  true, ['eina', 'efl', 'eo', 'ethumb'], []],
+['elementary'       ,[]                    ,  true,  true,  true,  true,  
true,  true,  true, ['eina', 'efl', 'eo', 'eet', 'evas', 'ecore', 'ecore-evas', 
'ecore-file', 'ecore-input', 'edje', 'ethumb-client', 'emotion', 'ecore-imf', 
'ecore-con', 'eldbus', 'efreet', 'efreet-mime', 'efreet-trash', 'eio'], 
['atspi']],
 ['efl_canvas_wl'    ,['wl']                , false,  true,  true, false, 
false, false, false, ['eina', 'efl', 'eo', 'evas', 'ecore'], []],
 ['elua'             ,['elua']              , false,  true,  true, false,  
true, false, false, ['eina', 'luajit'], []],
 ['ecore_wayland'    ,['wl-deprecated']     , false,  true, false, false, 
false, false, false, ['eina'], []],
@@ -357,6 +357,10 @@ ecore_audio = declare_dependency()
 
 test_dirs = []
 example_dirs = []
+efl_one_parts = []
+efl_one_deps = []
+efl_one_eo_deps = []
+efl_one_include_dirs = []
 tmp_empty = declare_dependency()
 
 foreach package : subprojects
@@ -406,6 +410,28 @@ foreach package : subprojects
       set_variable(package_name + '_eot_files', pub_eo_types_files)
       set_variable(package_name + '_header_subdirs', package_header_subdirs)
       set_variable(package_name + '_eo_subdirs', package_eo_subdirs)
+      if (package[8] and get_option('efl-one'))
+        src = get_variable(package_name+'_src')
+        external_deps = get_variable(package_name+'_ext_deps')
+        efl_one_include_dirs += [include_directories('.'), 
include_directories(join_paths(local_lib, package_name))]
+
+        foreach subdirs : package_eo_subdirs
+          efl_one_include_dirs += include_directories(join_paths(local_lib, 
package_name))
+        endforeach
+
+        tmp = static_library('efl_one_part_'+package_name,
+            src, pub_eo_file_target, priv_eo_file_target,
+            include_directories: efl_one_include_dirs,
+            dependencies: external_deps + efl_one_eo_deps,
+            c_args : package_c_args,
+        )
+        # dependency for all the .eo file targets
+        efl_one_eo_deps += declare_dependency(
+          sources: pub_eo_file_target,
+        )
+        efl_one_deps += external_deps
+        efl_one_parts += tmp
+      endif
     endif
     #special case for eolian, this is never efl-one, but will be required in 
the library
     if (package_name == 'eolian')
@@ -498,9 +524,20 @@ endif
 foreach package : subprojects
   package_name = package[0]
   if package[1].length() == 0 or get_option(package[1][0])
+    dir_package_include = join_paths(dir_include, package_version_name)
+    dir_package_modules = join_paths(dir_lib, package_name, 'modules')
+    package_c_args = [
+      '-DPACKAGE_DATA_DIR="'+ join_paths(dir_data, package_name)+'"',
+      '-DNEED_RUN_IN_TREE=1',
+      '-DEFL_BUILD=1',
+    ]
     if (package[2])
        subdir(join_paths(local_module, package_name))
     endif
+    package_c_args = [
+      '-DPACKAGE_DATA_DIR="'+ join_paths(dir_data, package_name)+'"',
+      '-DNEED_RUN_IN_TREE=1',
+    ]
     if (package[4] and package_name != 'eolian')
        subdir(join_paths(local_bin, package_name))
     endif
@@ -523,13 +560,21 @@ if get_option('build-tests')
   check = dependency('check')
   subdir(join_paths('src', 'tests'))
   foreach test : test_dirs
-      subdir(join_paths(local_tests, test))
+    package_c_args = [
+      '-DPACKAGE_DATA_DIR="'+ join_paths(dir_data, test)+'"',
+      '-DNEED_RUN_IN_TREE=1',
+    ]
+    subdir(join_paths(local_tests, test))
   endforeach
 endif
 
 if get_option('build-examples')
   foreach example : example_dirs
-      subdir(join_paths(local_examples, example))
+    package_c_args = [
+      '-DPACKAGE_DATA_DIR="'+ join_paths(dir_data, example)+'"',
+      '-DNEED_RUN_IN_TREE=1',
+    ]
+    subdir(join_paths(local_examples, example))
   endforeach
 endif
 
diff --git a/meson_options.txt b/meson_options.txt
index 0d07d396fc..159f2c2649 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -364,3 +364,9 @@ option('mono-friend-assemblies',
   value : [],
   description : 'List of friend assemblies that can access efl_mono 
assembly\'s internal types and members.'
 )
+
+option('efl-one',
+  type: 'boolean',
+  value : false,
+  description : 'Build special set of .so´s as a single .so'
+)
diff --git a/src/lib/ecore_evas/meson.build b/src/lib/ecore_evas/meson.build
index 554c77cf44..2ce2b0fcd2 100644
--- a/src/lib/ecore_evas/meson.build
+++ b/src/lib/ecore_evas/meson.build
@@ -52,3 +52,6 @@ ecore_evas = declare_dependency(
 install_headers(ecore_evas_header_src,
   install_dir : dir_package_include,
 )
+
+#a custom directory that must be added to efl_one
+efl_one_include_dirs += [include_directories(join_paths('..', '..', 'modules', 
'evas', 'engines', 'buffer'))]
diff --git a/src/lib/evas/meson.build b/src/lib/evas/meson.build
index 5799685e87..0ff0535e4f 100644
--- a/src/lib/evas/meson.build
+++ b/src/lib/evas/meson.build
@@ -320,3 +320,5 @@ install_headers(evas_header_src,
 pub_eo_files = []
 package_eo_subdirs += ['canvas', 'gesture']
 package_header_subdirs += ['canvas', 'gesture']
+#special case becase evas has a more structures subfolder
+efl_one_include_dirs += evas_include_directories

-- 


Reply via email to