forked from enlightenment/efl
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
This commit is contained in:
parent
8e3606698e
commit
92b049b4d7
129
meson.build
129
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
|
||||
|
||||
|
|
|
@ -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'
|
||||
)
|
||||
|
|
|
@ -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'))]
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue