summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Hollerbach <mail@marcel-hollerbach.de>2020-05-10 14:43:28 +0200
committerStefan Schmidt <s.schmidt@samsung.com>2020-05-27 11:06:48 +0200
commit92b049b4d7e70666b790ba78480da8f19c795b1c (patch)
tree317064f8099bae0d2d15b941b84b877fd912e657
parent8e3606698eb439eecd7302a885504365aca7e564 (diff)
downloadefl-92b049b4d7e70666b790ba78480da8f19c795b1c.tar.gz
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 <stefan@datenfreihafen.org> Differential Revision: https://phab.enlightenment.org/D11808
-rw-r--r--meson.build129
-rw-r--r--meson_options.txt6
-rw-r--r--src/lib/ecore_evas/meson.build3
-rw-r--r--src/lib/evas/meson.build2
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