summaryrefslogtreecommitdiff
path: root/meson.build
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 /meson.build
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
Diffstat (limited to 'meson.build')
-rw-r--r--meson.build129
1 files changed, 87 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