Compare commits

...

7 Commits

Author SHA1 Message Date
Marcel Hollerbach edaf4a2dd8 build: add efl-canvasl-wl to efl-one
this is required by e, thank you Ross.

Differential Revision: https://phab.enlightenment.org/D11901
2020-05-28 12:09:21 +02:00
Marcel Hollerbach ee13fd8cf6 Introduce a test to verify efl-one only links to the correct libs
whenever this script finds any module linked to libe* (but not
libefl-one.so) it will error.

Differential Revision: https://phab.enlightenment.org/D11900
2020-05-28 11:50:16 +02:00
Marcel Hollerbach 55a0e7a9c4 build: vg_common depends on evas internals
this must depend on the eo file targets, as they must be generated.

Differential Revision: https://phab.enlightenment.org/D11899
2020-05-28 10:00:41 +02:00
Marcel Hollerbach 7c173351fb build: split off static parts from external parts in evas
this way we can use that list easily in the modules, and keep the list
for later module building.

Differential Revision: https://phab.enlightenment.org/D11897
2020-05-28 10:00:30 +02:00
Marcel Hollerbach fd8b758edd build: make eina drag in the -lm flag
eina uses math.h we need to drag in this flag everywhere.

Differential Revision: https://phab.enlightenment.org/D11896
2020-05-28 08:31:19 +02:00
Marcel Hollerbach 0dbbf795e8 build: add priv eo targets to efl_one_eo_deps
this was forgotten / never spotted before. Thank you Quelrond for the
report!

Differential Revision: https://phab.enlightenment.org/D11895
2020-05-28 08:31:07 +02:00
Marcel Hollerbach 2d2d52c88c build: rely on automatic pkg file generation for eina
this automatically brings it to efl-one, which makes this easier.

Differential Revision: https://phab.enlightenment.org/D11892
2020-05-28 08:30:56 +02:00
8 changed files with 83 additions and 31 deletions

View File

@ -337,7 +337,7 @@ subprojects = [
['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'], []],
['efl_canvas_wl' ,['wl'] , false, true, true, false, false, false, true, ['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'], []],
['ecore_drm' ,['drm-deprecated'] , false, true, false, false, false, false, false, ['eina'], []],
@ -428,7 +428,7 @@ foreach package : subprojects
)
# dependency for all the .eo file targets
efl_one_eo_deps += declare_dependency(
sources: pub_eo_file_target,
sources: pub_eo_file_target + priv_eo_file_target, #this here *needs* to be public and private, because our binaries and modules do depend on internal headers
)
efl_one_deps += external_deps
efl_one_parts += tmp

52
scripts/test-efl-one.py Executable file
View File

@ -0,0 +1,52 @@
#!/bin/env python3
import os
import subprocess
import argparse
import json
from elftools.elf.elffile import ELFFile
#meson changed behaviour from 0.49 to 0.50 so we need this:
def meson_fetch_filename(filename_object):
if isinstance(filename_object, str):
return filename_object
else:
return filename_object[0]
def needed_libs(filename):
print('Processing file:', filename)
result = []
with open(filename, 'rb') as f:
elffile = ELFFile(f)
for section in elffile.iter_sections():
if section.name.startswith('.dynamic'):
for tag in section.iter_tags():
if tag.entry.d_tag == 'DT_NEEDED':
result.append(getattr(tag, tag.entry.d_tag[3:].lower()))
return result
parser = argparse.ArgumentParser(description='Check that when build with efl-one that no module nor efl-one lib does drag in libeina or the likes')
parser.add_argument('builddir', metavar='build', help='the path where to find the meson build directory')
G = parser.parse_args()
#Run meson to fetch all examples
meson_introspect = subprocess.Popen(["meson", "introspect", G.builddir, "--targets"],
stdout = subprocess.PIPE,
stderr = subprocess.PIPE,
)
meson_introspect.poll()
build_targets = json.loads(meson_introspect.stdout.read())
build_modules = [meson_fetch_filename(b["filename"]) for b in build_targets if "modules" in meson_fetch_filename(b["filename"]) and meson_fetch_filename(b["filename"]).endswith('.so')]
for build_modules in build_modules:
libs = needed_libs(build_modules)
lib_es = [lib for lib in libs if lib.startswith("libe") and lib != "libefl-one.so.1"]
if len(lib_es) != 0:
print("Error, {} requies lib {}".format(build_modules, lib_es[0]))
exit(-1)
print("Nothing wrong found!")

View File

@ -1,9 +1,10 @@
efl_canvas_wl_deps = [ecore_wl2, ecore_input, ecore, ecore_evas, evas, emile, eina, wayland_protocol ]
efl_canvas_wl_pub_deps = [eo, efl, evas, dependency('wayland-server', version : '>= 1.11.0'), dependency('xkbcommon', version : '>= 0.6.0')]
efl_canvas_wl_deps = [ecore_wl2, ecore_input, ecore, ecore_evas, evas, emile, eina]
efl_canvas_wl_pub_deps = [eo, efl, evas]
efl_canvas_wl_ext_deps = [dependency('wayland-server', version : '>= 1.11.0'), dependency('xkbcommon', version : '>= 0.6.0'), wayland_protocol]
if (get_option('x11'))
efl_canvas_wl_deps += [ecore_x]
efl_canvas_wl_pub_deps += [dependency('xkbcommon-x11')]
efl_canvas_wl_ext_deps += [dependency('xkbcommon-x11')]
endif
pub_eo_files = [
@ -25,16 +26,17 @@ foreach eo_file : pub_eo_files
'-gchd', '@INPUT@'])
endforeach
efl_canvas_wl_src = [
efl_canvas_wl_src = files([
'dmabuf.c',
'efl_canvas_wl.c',
]
])
efl_canvas_wl_header_src = ['Efl_Canvas_Wl.h']
eolian_include_directories += ['-I', meson.current_source_dir()]
efl_canvas_wl_lib = library('efl_canvas_wl',
efl_canvas_wl_src, pub_eo_file_target,
dependencies: [m, dl] + efl_canvas_wl_deps + efl_canvas_wl_pub_deps,
dependencies: efl_canvas_wl_deps + efl_canvas_wl_pub_deps + efl_canvas_wl_ext_deps,
include_directories : config_dir + [include_directories(join_paths('..','..'))],
install: true,
c_args : package_c_args,

View File

@ -1,5 +1,5 @@
eina_deps = [dl]
eina_pub_deps = [thread_dep]
eina_pub_deps = [thread_dep, m]
eina_pc_deps = [m, rt, dl, thread_dep] #special case, this array is taken to drag in external deps to efl-one
eina_ext_deps = eina_pc_deps
@ -388,11 +388,6 @@ install_headers(public_sub_headers,
install_dir : join_paths(dir_package_include, 'eina')
)
automatic_pkgfile = false
pkgconfig.generate(eina_lib,
name : 'eina',
subdirs : ['eina-'+version_major, 'efl-'+version_major, join_paths('eina-'+version_major, 'eina')],
version : version_major + '.' + version_minor + '.' + version_micro,
libraries : eina_pub_deps + eina_pc_deps,
)
package_header_subdirs += 'eina'
#special case here to support -lm -ldl -threads
eina_pub_deps += eina_pc_deps

View File

@ -49,7 +49,8 @@ evas_vg_savers_file = ['eet', 'svg']
rel_evas_modules = join_paths('..', '..', '..', 'modules', 'evas', 'engines', 'software_generic')
evas_deps = [eo, eet, eina, efl, emile, ector, ecore, draw, buildsystem]
evas_ext_deps = [buildsystem_simple, intl, m, draw_simple, valgrind, libunibreak, lua, vg_common]
evas_ext_deps = []
evas_ext_none_static_deps = [buildsystem_simple, intl, m, draw_simple, valgrind, libunibreak, lua, vg_common]
pub_eo_file_target = []
priv_eo_files = []
@ -138,16 +139,16 @@ evas_src += files([
evas_src_opt = [ ]
evas_ext_deps += dependency('freetype2')
evas_ext_none_static_deps += dependency('freetype2')
if (get_option('fontconfig'))
config_h.set('HAVE_FONTCONFIG', '1')
evas_ext_deps += dependency('fontconfig')
evas_ext_none_static_deps += dependency('fontconfig')
endif
if (get_option('fribidi'))
config_h.set('HAVE_FRIBIDI', '1')
evas_ext_deps += dependency('fribidi')
evas_ext_none_static_deps += dependency('fribidi')
endif
if (get_option('pixman'))
@ -155,16 +156,16 @@ if (get_option('pixman'))
foreach support : pixman_support
config_h.set(support, '1')
endforeach
evas_ext_deps += dependency('pixman-1')
evas_ext_none_static_deps += dependency('pixman-1')
endif
if (get_option('hyphen'))
config_h.set('HAVE_HYPHEN', '1')
hyphen = dependency('hyphen', required : false)
if hyphen.found() == false
evas_ext_deps += cc.find_library('hyphen')
evas_ext_none_static_deps += cc.find_library('hyphen')
endif
evas_ext_deps += hyphen
evas_ext_none_static_deps += hyphen
config_h.set_quoted('EVAS_DICTS_HYPHEN_DIR', get_option('dictionaries-hyphen-dir'))
endif
@ -180,12 +181,12 @@ subdir('vg')
gl_deps = []
if get_option('harfbuzz')
evas_ext_deps += dependency('harfbuzz')
evas_ext_none_static_deps += dependency('harfbuzz')
config_h.set('HAVE_HARFBUZZ', '1')
endif
if get_option('wl')
evas_ext_deps += wayland_protocol
evas_ext_none_static_deps += wayland_protocol
endif
@ -204,13 +205,13 @@ evas_pub_deps = [eina, ecore, ector, emile]
if cpu_sse3 == true or cpu_neon == true and cpu_neon_intrinsics == false
evas_opt = static_library('evas_opt',
sources: evas_src_opt,
sources: [evas_src_opt, pub_eo_file_target, priv_eo_file_target],
include_directories:
[ include_directories('../../..') ] +
evas_include_directories +
[vg_common_inc_dir],
c_args: native_arch_opt_c_args,
dependencies: [eina, eo, ector, emile, evas_deps, evas_ext_deps],
dependencies: [eina, eo, ector, emile, evas_deps, evas_ext_none_static_deps],
)
evas_link += [ evas_opt ]
endif
@ -284,6 +285,8 @@ evas_ext_deps += declare_dependency(
link_with: evas_link,
)
evas_ext_deps += evas_ext_none_static_deps
evas_lib = library('evas',
include_directories: evas_include_directories + [vg_common_inc_dir],
sources : [evas_src, pub_eo_file_target, priv_eo_file_target],

View File

@ -46,7 +46,7 @@ foreach engine_conf : engines
if build
engine_include_dir = []
engine_src = []
engine_deps = [eina, evas, evas_ext_deps]
engine_deps = [eina, evas, evas_ext_none_static_deps, eet]
engine_dep = declare_dependency(
include_directories: include_directories(engine),
)

View File

@ -11,7 +11,7 @@ foreach loader_inst : evas_image_loaders_file
shared_module('shared_loader_'+loader, file,
c_args : package_c_args,
include_directories : config_dir,
dependencies : [eina, evas, evas_ext_deps] + loader_deps,
dependencies : [eina, evas, eet, evas_ext_none_static_deps] + loader_deps,
install : true,
install_dir : mod_install_dir,
name_suffix : sys_mod_extension

View File

@ -11,7 +11,7 @@ foreach loader_inst : evas_image_savers_file
shared_module('shared_saver_'+loader, file,
c_args : package_c_args,
include_directories : config_dir,
dependencies : [eina, evas, eet, evas_ext_deps] + loader_deps,
dependencies : [eina, evas, eet, evas_ext_none_static_deps] + loader_deps,
install : true,
install_dir : mod_install_dir,
name_suffix : sys_mod_extension