8ad6aafa9ff20fa023236897bf1dd9833ac00f91
[platform/upstream/efl.git] / src / modules / evas / meson.build
1 engines = [
2  ['buffer', []],
3  ['software_generic', []],
4  ['fb', ['fb']],
5  ['drm', ['drm']],
6  ['software_x11', ['x11']],
7  ['wayland_shm', ['wl']],
8 ]
9
10 if get_option('opengl') != 'none'
11   engines += [
12    ['gl_common', []],
13    ['gl_generic', []],
14    ['gl_x11', ['x11']],
15    ['gl_drm', ['drm']],
16    ['gl_cocoa', ['cocoa']],
17   ]
18 endif
19
20 if get_option('opengl') == 'es-egl'
21   engines += [['wayland_egl', ['wl']]]
22 endif
23
24 #there are a few modules that should NEVER be build as a module but rather be build as static lib and linked in later
25 evas_force_static = ['software_generic', 'gl_common']
26 evas_static_list = []
27
28 #fixed dependencies by efl
29 png = dependency('libpng')
30 tiff = dependency('libtiff-4')
31 giflib = cc.find_library('gif')
32 json = dependency('rlottie', required: get_option('evas-loaders-disabler').contains('json') == false)
33 webp = dependency('libwebp', required: get_option('evas-loaders-disabler').contains('webp') == false)
34
35 subdir('image_loaders')
36 subdir('image_savers')
37 subdir('model_savers')
38 subdir('model_loaders')
39 subdir('vg_savers')
40 subdir('vg_loaders')
41
42 foreach engine_conf : engines
43   engine = engine_conf[0]
44   build = true
45   if engine_conf[1].length() > 0
46     build = get_option(engine_conf[1][0])
47   endif
48   if build
49     engine_include_dir = []
50     engine_src = []
51     engine_deps = []
52     engine_dep = declare_dependency(
53       include_directories: include_directories(join_paths('engines', engine)),
54     )
55
56     var_name = 'engine_'+engine
57     set_variable(var_name, engine_dep)
58
59     mod_full_name = engine
60     mod_install_dir = join_paths(dir_package_modules, 'engines', engine, version_name)
61
62         subdir(join_paths('engines', engine))
63
64     if get_option('evas-modules') == 'static' or evas_force_static.contains(engine)
65       tmp = static_library(mod_full_name, engine_src,
66         include_directories : config_dir + [engine_include_dir],
67         dependencies : [eina, evas_pre] + engine_deps,
68       )
69
70       if engine == 'software_generic'
71         software_generic = declare_dependency(
72           include_directories: engine_include_dir,
73           sources : gen_src,
74           dependencies : [eina, evas_pre] + engine_deps,
75           link_with : tmp
76         )
77       endif
78       if engine == 'gl_common'
79         #gl_common will only be used by gl_generic, NOT by libevas.so, so we work arround the static list
80         gl_common = declare_dependency(
81           include_directories : include_directories(join_paths('engines', 'gl_common')),
82           link_with: tmp,
83         )
84       else
85         evas_static_list += declare_dependency(
86           include_directories: [include_directories('.')] + config_dir + [engine_include_dir],
87           link_with: tmp,
88           dependencies : [eina, evas_pre] + engine_deps,
89           sources : engine_src
90         )
91         if engine == 'gl_generic'
92           #special case, see evas_module.c
93           config_h.set('EVAS_STATIC_BUILD_GL_COMMON', '1')
94         else
95           config_h.set('EVAS_STATIC_BUILD_'+engine.to_upper(), '1')
96         endif
97       endif
98     else
99       #nothing here shared building is handled directly on the engine configuration side
100       #reason for this is that the .so files have to be placed in the correct directory in order
101       # to make them discoverable by evas module code
102     endif
103     config_h.set('BUILD_ENGINE_'+engine.to_upper(), '1')
104   endif
105 endforeach