summaryrefslogtreecommitdiff
path: root/src/modules/evas/meson.build
blob: e8976084994da379d866c526e5b6c8bc01c09d2d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
engines = [
 ['buffer', []],
 ['software_generic', []],
 ['fb', ['ecore_fb']],
 ['drm', ['ecore_drm2']],
 ['software_x11', ['ecore_x']],
 ['wayland_shm', ['ecore_wl2']],
]

if get_option('opengl') != 'none'
  engines += [
   ['gl_common', []],
   ['gl_generic', []],
   ['gl_x11', ['ecore_x']],
   ['gl_drm', ['ecore_drm2']],
   ['gl_cocoa', ['ecore_cocoa']],
  ]
endif

if get_option('opengl') == 'es-egl'
  engines += [['wayland_egl', ['ecore_wl2']]]
endif

#there are a few modules that should NEVER be build as a module but rather be build as static lib and linked in later
evas_force_static = ['software_generic', 'gl_common']
evas_static_list = []

#fixed dependencies by efl
png = dependency('libpng')
tiff = dependency('libtiff-4')
giflib = cc.find_library('gif')

#we need to make this a optional
webp = dependency('libwebp')

subdir('image_loaders')
subdir('image_savers')
subdir('model_savers')
subdir('model_loaders')
subdir('vg_savers')
subdir('vg_loaders')

foreach engine_conf : engines
  engine = engine_conf[0]
  build = true
  if engine_conf[1].length() > 0 
    build = get_option(engine_conf[1][0])
  endif
  if build
    engine_include_dir = []
    engine_src = []
    engine_deps = []
    engine_dep = declare_dependency(
      include_directories: include_directories(join_paths('engines', engine)),    
    )

  	subdir(join_paths('engines', engine))

    var_name = 'engine_'+engine
    set_variable(var_name, engine_dep)

    mod_full_name = 'evas_engine_'+engine
    mod_install_dir = join_paths(dir_package_modules, 'engines', engine, module_arch)

    if get_option('evas-modules') == 'static' or evas_force_static.contains(engine)
      tmp = static_library(mod_full_name, engine_src,
        include_directories : config_dir + [engine_include_dir],
        dependencies : [eina, evas_pre] + engine_deps,
      )

      if engine == 'gl_common'
        #gl_common will only be used by gl_generic, NOT by libevas.so, so we work arround the static list
        gl_common = declare_dependency(
          include_directories : include_directories(join_paths('engines', 'gl_common')),
          link_with: tmp,
        )
      else 
        evas_static_list += declare_dependency(
          include_directories: [include_directories('.')] + config_dir + [engine_include_dir],
          link_with: tmp,
          dependencies: [evas_pre],
        )
        if engine == 'gl_generic'
          #special case, see evas_module.c
          config_h.set('EVAS_STATIC_BUILD_GL_COMMON', value)
        else 
          config_h.set('EVAS_STATIC_BUILD_'+engine.to_upper(), '1')
        endif
        
      endif

    else
      shared_module(mod_full_name, engine_src,
        include_directories : config_dir + [engine_include_dir],
        dependencies : [eina, evas_pre] + engine_deps,
        install : true,
        install_dir : mod_install_dir
      )
      module_files += join_paths(mod_install_dir, 'lib'+mod_full_name + sys_lib_extension)
    endif
    config_h.set('BUILD_ENGINE_'+engine.to_upper(), '1')
  endif
endforeach