bu5hm4n pushed a commit to branch feature/meson.

http://git.enlightenment.org/core/efl.git/commit/?id=29b455518531086c551af3d5161b909946d6ba24

commit 29b455518531086c551af3d5161b909946d6ba24
Author: Marcel Hollerbach <[email protected]>
Date:   Fri Dec 29 08:50:15 2017 +0000

    meson: here comes the monster, the beast, the orge! EVAS!
---
 meson.build                                        |  17 +-
 meson/evas_loader_conf.sh                          |  16 ++
 meson_options.txt                                  |  39 ++++
 src/generic/evas/common/meson.build                |   6 +
 src/generic/evas/gst/meson.build                   |  14 ++
 src/generic/evas/meson.build                       |  42 ++++
 src/generic/evas/pdf/meson.build                   |  14 ++
 src/generic/evas/ps/meson.build                    |   5 +
 src/generic/evas/raw/meson.build                   |   6 +
 src/generic/evas/svg/meson.build                   |   6 +
 src/generic/evas/xcf/meson.build                   |   8 +
 src/lib/ecore_wl2/meson.build                      |   1 +
 src/lib/evas/cache/meson.build                     |   6 +
 src/lib/evas/canvas/meson.build                    | 217 +++++++++++++++++++++
 src/lib/evas/common/language/meson.build           |   7 +
 src/lib/evas/common/meson.build                    |  87 +++++++++
 src/lib/evas/common3d/meson.build                  |   2 +
 src/lib/evas/common3d/primitives/meson.build       |   5 +
 .../primitives/solids_of_revolution/meson.build    |   6 +
 .../evas/common3d/primitives/surfaces/meson.build  |   4 +
 .../primitives/tabulated_primitives/meson.build    |   4 +
 src/lib/evas/common3d/save_load/meson.build        |   6 +
 src/lib/evas/file/meson.build                      |   6 +
 src/lib/evas/filters/lua/meson.build               |   3 +
 src/lib/evas/filters/meson.build                   |  19 ++
 src/lib/evas/gesture/meson.build                   |  65 ++++++
 src/lib/evas/include/meson.build                   |  20 ++
 src/lib/evas/meson.build                           | 159 +++++++++++++++
 src/lib/evas/vg/meson.build                        |   1 +
 src/lib/evas_goal/empty.c                          |   0
 src/lib/evas_goal/meson.build                      |  19 ++
 src/modules/evas/engines/buffer/meson.build        |  14 ++
 src/modules/evas/engines/drm/meson.build           |   8 +
 src/modules/evas/engines/fb/meson.build            |  10 +
 src/modules/evas/engines/gl_cocoa/meson.build      |   8 +
 src/modules/evas/engines/gl_common/meson.build     |  34 ++++
 src/modules/evas/engines/gl_drm/meson.build        |   8 +
 src/modules/evas/engines/gl_generic/meson.build    |  35 ++++
 src/modules/evas/engines/gl_x11/meson.build        |   8 +
 .../evas/engines/software_ddraw/meson.build        |  10 +
 src/modules/evas/engines/software_gdi/meson.build  |  10 +
 .../engines/software_generic/filters/meson.build   |  13 ++
 .../evas/engines/software_generic/meson.build      |  31 +++
 src/modules/evas/engines/software_x11/meson.build  |  28 +++
 src/modules/evas/engines/wayland_egl/meson.build   |   9 +
 src/modules/evas/engines/wayland_shm/meson.build   |   9 +
 src/modules/evas/image_loaders/meson.build         |  42 ++++
 src/modules/evas/image_savers/meson.build          |  32 +++
 src/modules/evas/meson.build                       | 104 ++++++++++
 src/modules/evas/model_loaders/meson.build         |  16 ++
 src/modules/evas/model_savers/meson.build          |  16 ++
 src/modules/evas/vg_loaders/meson.build            |  13 ++
 src/modules/evas/vg_savers/meson.build             |  14 ++
 src/static_libs/libunibreak/meson.build            |  29 +++
 src/static_libs/vg_common/meson.build              |   8 +
 src/tests/evas/meson.build                         |  30 +++
 src/wayland_protocol/meson.build                   |   7 +-
 57 files changed, 1351 insertions(+), 5 deletions(-)

diff --git a/meson.build b/meson.build
index d3f48ae1df..114103f97c 100644
--- a/meson.build
+++ b/meson.build
@@ -36,6 +36,7 @@ endif
 
 module_arch = '@0@-@1@-@2@'.format(host_os, host_machine.cpu_family(), 
meson.project_version())
 module_files = []
+evas_loader_map = []
 
 #install paths
 dir_prefix    = get_option('prefix')
@@ -114,9 +115,10 @@ subprojects = [
 ['elput'            , false,  true, false, false,  true, false, []],
 ['ecore_drm2'       , false,  true, false, false, false, false, []],
 ['ecore_cocoa'      , false,  true, false, false, false, false, []],
+['evas'             ,  true,  true, false, false,  true, false, ['vg_common', 
'libunibreak']],
+['evas_goal'        , false,  true, false, false, false, false, []],
 ]
 
-
 # We generate Efl_Config.h and config.h later, they will be available here
 config_dir += include_directories('.')
 
@@ -159,17 +161,19 @@ foreach package : subprojects
     if (package[6])
        example_dirs += [package_name]
     endif
-    
+
     set_variable('build_'+package_name, true)
   else
     set_variable('build_'+package_name, false)
-    
+
     message(package_name+' disabled!')
 
   endif
 
 endforeach
 
+subdir(join_paths('src', 'generic', 'evas'))
+
 if get_option('build-tests')
   check = dependency('check')
   foreach test : test_dirs
@@ -187,6 +191,13 @@ subdir(join_paths(local_scripts))
 
 meson.add_install_script('meson/meson_modules.sh', module_files)
 
+foreach evas_loader_map_inst : evas_loader_map
+  evas_loader_original = evas_loader_map_inst[0]
+  evas_loader_link_types = evas_loader_map_inst[1]
+
+  meson.add_install_script('meson/evas_loader_conf.sh', evas_loader_original, 
evas_loader_link_types)
+endforeach
+
 #
 # Configure files
 #
diff --git a/meson/evas_loader_conf.sh b/meson/evas_loader_conf.sh
new file mode 100755
index 0000000000..d51f016b71
--- /dev/null
+++ b/meson/evas_loader_conf.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+original_loader=$1
+original_name="$(basename $original_loader .so)"
+loader_dir="$(dirname $original_loader)"
+loader="$(basename $original_loader)"
+loader_name="$(echo $original_name | cut -f 1 -d '.')"
+
+if [ ${original_loader: -3} == ".so" ]
+  then
+    mv "$DESTDIR"/"$original_loader" "$DESTDIR"/"$loader_dir"/"$original_name"
+fi
+
+for x in "${@:2}"; do
+  ln -sf "$DESTDIR"/"$loader_dir"/"$original_name" 
"$DESTDIR"/"$loader_dir"/"$loader_name"."$x"
+done
\ No newline at end of file
diff --git a/meson_options.txt b/meson_options.txt
index d739a5cbb9..c0efa9e95b 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -136,6 +136,25 @@ option('ecore_cocoa',
   description : 'build ecore_cocoa'
 )
 
+option('evas_goal',
+  type : 'boolean',
+  value : true,
+  description : 'build evas'
+)
+
+option('evas',
+  type : 'boolean',
+  value : true,
+  description : 'build evas'
+)
+
+option('opengl',
+  type : 'combo',
+  choices : ['full', 'es-egl', 'none'],
+  value : 'none',
+  description : 'build evas'
+)
+
 option('build-id',
   type : 'string',
   value : 'none',
@@ -266,4 +285,24 @@ option('unmount-path',
   type : 'string',
   value : 'detect',
   description : 'path to use as eject binary, if "detect" internal eeze bins 
are used'
+)
+
+option('evas-modules',
+  type : 'combo',
+  choices : ['shared', 'static'],
+  value : 'shared',
+  description : 'how to build the evas modules' 
+)
+
+option('evas-loaders-disabler',
+  type : 'array',
+  description : 'add names here to disable the loaders',
+  choices : ['gst', 'pdf', 'ps', 'raw', 'svg', 'xcf', 'bmp', 'dds', 'eet', 
'generic', 'gif', 'ico', 'jp2k', 'jpeg', 'pmaps', 'png', 'psd', 'tga', 'tgv', 
'tiff', 'wbmp', 'webp', 'xpm'],
+  value : []
+)
+
+option('harfbuzz',
+  type : 'boolean',
+  value : false,
+  description : 'harfbuzz support' 
 )
\ No newline at end of file
diff --git a/src/generic/evas/common/meson.build 
b/src/generic/evas/common/meson.build
new file mode 100644
index 0000000000..b90705e4c3
--- /dev/null
+++ b/src/generic/evas/common/meson.build
@@ -0,0 +1,6 @@
+generic_src = files([
+  'shmfile.c',
+  'shmfile.h',
+  'timeout.c',
+  'timeout.h',
+])
diff --git a/src/generic/evas/gst/meson.build b/src/generic/evas/gst/meson.build
new file mode 100644
index 0000000000..9689aee80a
--- /dev/null
+++ b/src/generic/evas/gst/meson.build
@@ -0,0 +1,14 @@
+
+# gstreamer 0.1 support
+#generic_deps = [dependency('gstreamer')]
+#generic_src = files([
+#  'main_0_10.c'
+#])
+
+
+generic_src = files([
+  'main.c'
+])
+
+generic_deps = [dependency('gstreamer-1.0')]
+generic_support = 
['264','3g2','3gp','3gp2','3gpp','3gpp2','3p2','asf','avi','bdm','bdmv','clpi','cpi','dv','fla','flv','m1v','m2t','m2v','m4v','mkv','mov','mp2','mp2ts','mp4','mpe','mpeg','mpg','mpl','mpls','mts','mxf','nut','nuv','ogg','ogm','ogv','qt','rm','rmj','rmm','rms','rmx','rmvb','rv','swf','ts','webm','weba','wmv']
\ No newline at end of file
diff --git a/src/generic/evas/meson.build b/src/generic/evas/meson.build
new file mode 100644
index 0000000000..e36b57805f
--- /dev/null
+++ b/src/generic/evas/meson.build
@@ -0,0 +1,42 @@
+generic_loaders = ['gst', 'pdf',
+'ps',
+'raw',
+'svg',
+'xcf']
+
+generic_src = []
+generic_deps = []
+
+subdir('common')
+
+common = static_library('evas_loader_common',
+    generic_src,
+    include_directories : config_dir,
+    dependencies: [generic_deps, rt],
+)
+
+foreach loader : generic_loaders
+  generic_src = []
+  generic_deps = []
+  generic_support = []
+
+  if get_option('evas-loaders-disabler').contains(loader) == false
+    subdir(loader)
+
+    tmp = shared_module('image_loader.'+loader,
+        generic_src,
+        include_directories : config_dir + [include_directories('common')],
+        link_with : common,
+        dependencies: [eina, generic_deps],
+        name_prefix : 'evas_',
+        install_dir : join_paths(dir_lib, 'evas', 'utils'),
+        install : true,
+    )
+
+    set_variable(loader, tmp)
+    mod = join_paths(dir_lib, 'evas', 'utils', 
'evas_image_loader.'+loader+'.so')
+    evas_loader_map += [[mod, generic_support]]
+  else
+    message('Image loader '+loader+' disabled')
+  endif
+endforeach
diff --git a/src/generic/evas/pdf/meson.build b/src/generic/evas/pdf/meson.build
new file mode 100644
index 0000000000..941918104b
--- /dev/null
+++ b/src/generic/evas/pdf/meson.build
@@ -0,0 +1,14 @@
+generic_src = files([
+  'main.cpp'
+])
+
+generic_deps = [dependency('poppler-cpp')]
+generic_support = 
['ppt','pptx','odp','xls','xlsx','ods','doc','docx','odt','rtf']
+
+install_data('evas_generic_pdf_loader.libreoffice',
+  install_dir : join_paths(dir_lib, 'evas', 'utils')
+)
+
+generic_pdf_loader_types = 
['ppt','pptx','odp','xls','xlsx','ods','doc','docx','odt','rtf']
+
+meson.add_install_script( 
join_paths('..','..','..','..','meson','evas_loader_conf.sh'), 
join_paths(dir_lib, 'evas', 'utils', 'evas_generic_pdf_loader.libreoffice'), 
generic_pdf_loader_types)
\ No newline at end of file
diff --git a/src/generic/evas/ps/meson.build b/src/generic/evas/ps/meson.build
new file mode 100644
index 0000000000..ca52781307
--- /dev/null
+++ b/src/generic/evas/ps/meson.build
@@ -0,0 +1,5 @@
+generic_src = files([
+  'main.c'
+])
+
+generic_deps = [dependency('libspectre')]
diff --git a/src/generic/evas/raw/meson.build b/src/generic/evas/raw/meson.build
new file mode 100644
index 0000000000..6843d01e90
--- /dev/null
+++ b/src/generic/evas/raw/meson.build
@@ -0,0 +1,6 @@
+generic_src = files([
+  'main.c'
+])
+
+generic_deps = [dependency('libraw')]
+generic_support = 
['arw','cr2','crw','dcr','dng','k25','kdc','erf','mrw','nef','nrf','nrw','orf','rw2','pef','raf','sr2','srf','x3f']
\ No newline at end of file
diff --git a/src/generic/evas/svg/meson.build b/src/generic/evas/svg/meson.build
new file mode 100644
index 0000000000..efda548da3
--- /dev/null
+++ b/src/generic/evas/svg/meson.build
@@ -0,0 +1,6 @@
+generic_src = files([
+  'main.c'
+])
+
+generic_deps = [dependency('librsvg-2.0')]
+generic_support = ['svgz', 'svg.gz']
\ No newline at end of file
diff --git a/src/generic/evas/xcf/meson.build b/src/generic/evas/xcf/meson.build
new file mode 100644
index 0000000000..0f5fb208c5
--- /dev/null
+++ b/src/generic/evas/xcf/meson.build
@@ -0,0 +1,8 @@
+generic_src = files([
+  'common.h',
+  'main.c',
+  'pixelfuncs.c'
+])
+
+generic_deps = [dependency('zlib')]
+generic_support = ['xcf.gz']
\ No newline at end of file
diff --git a/src/lib/ecore_wl2/meson.build b/src/lib/ecore_wl2/meson.build
index 052f4375a9..3e9055b075 100644
--- a/src/lib/ecore_wl2/meson.build
+++ b/src/lib/ecore_wl2/meson.build
@@ -21,6 +21,7 @@ ecore_wl2_deps += dependency('wayland-client')
 ecore_wl2_deps += dependency('wayland-server')
 ecore_wl2_deps += dependency('xkbcommon')
 ecore_wl2_deps += wayland_protocol
+ecore_wl2_deps += dependency('wayland-client')
 
 ecore_wl2_lib = library('ecore_wl2',
     ecore_wl2_src, pub_eo_file_target,
diff --git a/src/lib/evas/cache/meson.build b/src/lib/evas/cache/meson.build
new file mode 100644
index 0000000000..fa276ecad6
--- /dev/null
+++ b/src/lib/evas/cache/meson.build
@@ -0,0 +1,6 @@
+evas_src += files([
+  'evas_cache.h',
+  'evas_cache_engine_image.c',
+  'evas_cache_image.c',
+  'evas_preload.c',
+])
\ No newline at end of file
diff --git a/src/lib/evas/canvas/meson.build b/src/lib/evas/canvas/meson.build
new file mode 100644
index 0000000000..7d52a77b3d
--- /dev/null
+++ b/src/lib/evas/canvas/meson.build
@@ -0,0 +1,217 @@
+
+pub_legacy_eo_files = [
+  'efl_canvas_vg.eo',
+  'efl_canvas_rectangle.eo',
+  'efl_canvas_object.eo',
+  'evas_canvas.eo',
+  'evas_line.eo',
+  'evas_table.eo',
+  'evas_grid.eo',
+  'evas_box.eo',
+  'evas_text.eo',
+  'evas_textgrid.eo',
+  'evas_image.eo',
+  'efl_vg.eo',
+  'efl_vg_container.eo',
+  'efl_vg_shape.eo',
+  'efl_vg_gradient.eo',
+  'efl_vg_gradient_radial.eo',
+  'efl_vg_gradient_linear.eo',
+  'efl_canvas_group.eo',
+  'efl_gfx_map.eo',
+  'efl_canvas_object_event_grabber.eo',
+  'efl_canvas_text.eo',
+]
+
+foreach eo_file : pub_legacy_eo_files
+  pub_eo_file_target += custom_target('eolian_gen_' + eo_file,
+    input : eo_file,
+    output : [eo_file + '.h', eo_file + '.legacy.h',],
+    install : true,
+    install_dir : join_paths(dir_package_include, 'canvas'),
+    command : [eolian_gen, '-I', meson.current_source_dir(), 
eolian_include_directories,
+                           '-o', 'h:' + join_paths(meson.current_build_dir(), 
eo_file + '.h'),
+                           '-o', 'c:' + join_paths(meson.current_build_dir(), 
eo_file + '.c'),
+                           '-o', 'l:' + join_paths(meson.current_build_dir(), 
eo_file + '.legacy.h'),
+                           '-gchl', '@INPUT@'])
+
+endforeach
+
+pub_eo_files = [
+  'efl_canvas_polygon.eo',
+  'efl_canvas_image_internal.eo',
+  'evas_canvas3d_camera.eo',
+  'evas_canvas3d_texture.eo',
+  'evas_canvas3d_material.eo',
+  'evas_canvas3d_light.eo',
+  'evas_canvas3d_mesh.eo',
+  'evas_canvas3d_primitive.eo',
+  'evas_canvas3d_node.eo',
+  'evas_canvas3d_scene.eo',
+  'evas_canvas3d_object.eo',
+  'efl_canvas_image.eo',
+  'efl_canvas_snapshot.eo',
+  'efl_canvas_proxy.eo',
+  'efl_canvas_scene3d.eo',
+  'efl_canvas_surface.eo',
+  'efl_canvas_surface_tbm.eo',
+  'efl_canvas_surface_x11.eo',
+  'efl_canvas_surface_wayland.eo',
+  'efl_canvas_filter_internal.eo',
+  'efl_input_state.eo',
+  'efl_input_interface.eo',
+  'efl_input_event.eo',
+  'efl_input_key.eo',
+  'efl_input_pointer.eo',
+  'efl_input_hold.eo',
+  'efl_input_focus.eo',
+  'efl_animation.eo',
+  'efl_animation_alpha.eo',
+  'efl_animation_rotate.eo',
+  'efl_animation_scale.eo',
+  'efl_animation_translate.eo',
+  'efl_animation_group.eo',
+  'efl_animation_group_parallel.eo',
+  'efl_animation_group_sequential.eo',
+  'efl_animation_object.eo',
+  'efl_animation_object_alpha.eo',
+  'efl_animation_object_rotate.eo',
+  'efl_animation_object_scale.eo',
+  'efl_animation_object_translate.eo',
+  'efl_animation_object_group.eo',
+  'efl_animation_object_group_parallel.eo',
+  'efl_animation_object_group_sequential.eo',
+]
+
+foreach eo_file : pub_eo_files
+  pub_eo_file_target += custom_target('eolian_gen_' + eo_file,
+    input : eo_file,
+    output : [eo_file + '.h'],
+    install : true,
+    install_dir : join_paths(dir_package_include, 'canvas'),
+    command : [eolian_gen, '-I', meson.current_source_dir(), 
eolian_include_directories,
+                           '-o', 'h:' + join_paths(meson.current_build_dir(), 
eo_file + '.h'),
+                           '-o', 'c:' + join_paths(meson.current_build_dir(), 
eo_file + '.c'),
+                           '-o', 'l:' + join_paths(meson.current_build_dir(), 
eo_file + '.legacy.h'),
+                           '-gchl', '@INPUT@'])
+endforeach
+
+
+pub_eo_types_files = [
+    'evas_canvas3d_types.eot',
+    'efl_animation_types.eot'
+]
+
+foreach eo_file : pub_eo_types_files
+  pub_eo_file_target += custom_target('eolian_gen_' + eo_file,
+    input : eo_file,
+    output : [eo_file + '.h'],
+    install : true,
+    install_dir : join_paths(dir_package_include, 'canvas'),
+    command : [eolian_gen, '-I', meson.current_source_dir(), 
eolian_include_directories,
+                           '-o', 'h:' + join_paths(meson.current_build_dir(), 
eo_file + '.h'),
+                           '-gh', '@INPUT@'])
+endforeach
+
+evas_src += files([
+  'evas_callbacks.c',
+  'evas_clip.c',
+  'evas_data.c',
+  'evas_device.c',
+  'evas_events.c',
+  'evas_events_legacy.c',
+  'evas_focus.c',
+  'evas_key.c',
+  'evas_key_grab.c',
+  'evas_layer.c',
+  'evas_main.c',
+  'evas_name.c',
+  'evas_image_legacy.c',
+  'evas_object_image.c',
+  'evas_object_main.c',
+  'evas_object_inform.c',
+  'evas_object_intercept.c',
+  'evas_object_line.c',
+  'evas_object_polygon.c',
+  'evas_object_rectangle.c',
+  'evas_object_smart.c',
+  'evas_object_smart_clipped.c',
+  'evas_object_box.c',
+  'evas_object_table.c',
+  'evas_object_text.c',
+  'evas_object_textblock.c',
+  'evas_object_textgrid.c',
+  'evas_object_grid.c',
+  'evas_font_dir.c',
+  'evas_rectangle.c',
+  'evas_render.c',
+  'render2/evas_render2.c',
+  'render2/evas_render2.h',
+  'evas_smart.c',
+  'evas_stack.c',
+  'evas_async_events.c',
+  'evas_stats.c',
+  'evas_touch_point.c',
+  'evas_map.c',
+  'evas_map.h',
+  'evas_gl.c',
+  'evas_out.c',
+  'efl_canvas_image.c',
+  'efl_canvas_object_event_grabber.c',
+  'efl_canvas_proxy.c',
+  'efl_canvas_snapshot.c',
+  'efl_canvas_scene3d.c',
+  'efl_canvas_surface.c',
+  'efl_canvas_surface_tbm.c',
+  'efl_canvas_surface_x11.c',
+  'efl_canvas_surface_wayland.c',
+  'efl_gfx_map.c',
+  'efl_input_event.c',
+  'efl_input_key.c',
+  'efl_input_pointer.c',
+  'efl_input_hold.c',
+  'efl_input_focus.c',
+  'efl_animation.c',
+  'efl_animation_alpha.c',
+  'efl_animation_rotate.c',
+  'efl_animation_scale.c',
+  'efl_animation_translate.c',
+  'efl_animation_group.c',
+  'efl_animation_group_parallel.c',
+  'efl_animation_group_sequential.c',
+  'efl_animation_object.c',
+  'efl_animation_object_alpha.c',
+  'efl_animation_object_rotate.c',
+  'efl_animation_object_scale.c',
+  'efl_animation_object_translate.c',
+  'efl_animation_object_group.c',
+  'efl_animation_object_group_parallel.c',
+  'efl_animation_object_group_sequential.c',
+  'efl_canvas_vg.c',
+  'evas_vg_node.c',
+  'evas_vg_container.c',
+  'evas_vg_gradient.c',
+  'evas_vg_gradient_linear.c',
+  'evas_vg_gradient_radial.c',
+  'evas_vg_utils.c',
+  'evas_vg_shape.c',
+  'evas_filter_mixin.c',
+  'evas_canvas3d_object.c',
+  'evas_canvas3d_scene.c',
+  'evas_canvas3d_node.c',
+  'evas_canvas3d_camera.c',
+  'evas_canvas3d_light.c',
+  'evas_canvas3d_mesh.c',
+  'evas_canvas3d_texture.c',
+  'evas_canvas3d_material.c',
+  'evas_canvas3d_primitive.c',
+  'evas_canvas3d_node_callback.h',
+  'evas_canvas3d_eet.c',
+  ])
+
+evas_include_directories += include_directories('render2')
+evas_include_directories += include_directories('.')
+
+install_headers('evas_textblock_legacy.h',
+  install_dir : join_paths(dir_package_include, 'canvas'),
+)
\ No newline at end of file
diff --git a/src/lib/evas/common/language/meson.build 
b/src/lib/evas/common/language/meson.build
new file mode 100644
index 0000000000..dd725a92bc
--- /dev/null
+++ b/src/lib/evas/common/language/meson.build
@@ -0,0 +1,7 @@
+evas_src += files([
+  'evas_bidi_utils.c',
+  'evas_language_utils.c',
+  'evas_bidi_utils.h',
+  'evas_language_utils.h',
+  'evas_script_table.h',
+])
\ No newline at end of file
diff --git a/src/lib/evas/common/meson.build b/src/lib/evas/common/meson.build
new file mode 100644
index 0000000000..6f3cca1eec
--- /dev/null
+++ b/src/lib/evas/common/meson.build
@@ -0,0 +1,87 @@
+evas_include_directories += include_directories('.')
+
+evas_src += files([
+'evas_op_copy_main_.c',
+'evas_op_blend_main_.c',
+'evas_op_add_main_.c',
+'evas_op_sub_main_.c',
+'evas_op_mask_main_.c',
+'evas_op_mul_main_.c',
+'evas_blend_main.c',
+'evas_blit_main.c',
+'evas_convert_color.c',
+'evas_convert_colorspace.c',
+'evas_convert_gry_1.c',
+'evas_convert_gry_8.c',
+'evas_convert_main.c',
+'evas_convert_rgb_16.c',
+'evas_convert_rgb_24.c',
+'evas_convert_rgb_8.c',
+'evas_convert_grypal_6.c',
+'evas_convert_yuv.c',
+'evas_cpu.c',
+'evas_draw_main.c',
+'evas_font_draw.c',
+'evas_font_load.c',
+'evas_font_main.c',
+'evas_font_query.c',
+'evas_font_compress.c',
+'evas_image_load.c',
+'evas_image_save.c',
+'evas_image_main.c',
+'evas_image_data.c',
+'evas_image_scalecache.c',
+'evas_line_main.c',
+'evas_polygon_main.c',
+'evas_rectangle_main.c',
+'evas_scale_main.c',
+'evas_scale_sample.c',
+'evas_scale_smooth.c',
+'evas_scale_span.c',
+'evas_thread_render.c',
+'evas_tiler.c',
+'evas_pipe.c',
+'language/evas_bidi_utils.c',
+'language/evas_language_utils.c',
+'evas_text_utils.c',
+'evas_font_ot.c',
+'evas_map_image.c',
+'evas_map_image.h',
+'evas_blend.h',
+'evas_blend_private.h',
+'evas_convert_color.h',
+'evas_convert_colorspace.h',
+'evas_convert_gry_1.h',
+'evas_convert_gry_8.h',
+'evas_convert_grypal_6.h',
+'evas_convert_main.h',
+'evas_convert_rgb_16.h',
+'evas_convert_rgb_24.h',
+'evas_convert_rgb_32.h',
+'evas_convert_rgb_32.c',
+'evas_convert_rgb_8.h',
+'evas_convert_yuv.h',
+'evas_draw.h',
+'evas_font.h',
+'evas_font_private.h',
+'evas_image.h',
+'evas_image_private.h',
+'evas_line.h',
+'evas_polygon.h',
+'evas_rectangle.h',
+'evas_scale_main.h',
+'evas_scale_smooth.h',
+'evas_scale_span.h',
+'evas_pipe.h',
+'language/evas_bidi_utils.h',
+'language/evas_language_utils.h',
+'language/evas_script_table.h',
+'evas_text_utils.h',
+'evas_font_ot.h',
+'evas_font_draw.h',
+'evas_common_generic_cache.c'
+])
+
+#subdir('evas_op_blend')
+#subdir('evas_op_sub')
+subdir('language')
\ No newline at end of file
diff --git a/src/lib/evas/common3d/meson.build 
b/src/lib/evas/common3d/meson.build
new file mode 100644
index 0000000000..22341b4a84
--- /dev/null
+++ b/src/lib/evas/common3d/meson.build
@@ -0,0 +1,2 @@
+subdir('primitives')
+subdir('save_load')
\ No newline at end of file
diff --git a/src/lib/evas/common3d/primitives/meson.build 
b/src/lib/evas/common3d/primitives/meson.build
new file mode 100644
index 0000000000..2888869bf8
--- /dev/null
+++ b/src/lib/evas/common3d/primitives/meson.build
@@ -0,0 +1,5 @@
+subdir('solids_of_revolution')
+subdir('surfaces')
+subdir('tabulated_primitives')
+
+evas_src += files(['primitive_common.c'])
\ No newline at end of file
diff --git a/src/lib/evas/common3d/primitives/solids_of_revolution/meson.build 
b/src/lib/evas/common3d/primitives/solids_of_revolution/meson.build
new file mode 100644
index 0000000000..ac35b05093
--- /dev/null
+++ b/src/lib/evas/common3d/primitives/solids_of_revolution/meson.build
@@ -0,0 +1,6 @@
+evas_src += files([
+  'cone.c',
+  'cylinder.c',
+  'sphere.c',
+  'torus.c'
+])
\ No newline at end of file
diff --git a/src/lib/evas/common3d/primitives/surfaces/meson.build 
b/src/lib/evas/common3d/primitives/surfaces/meson.build
new file mode 100644
index 0000000000..398996f148
--- /dev/null
+++ b/src/lib/evas/common3d/primitives/surfaces/meson.build
@@ -0,0 +1,4 @@
+evas_src += files([
+  'surface.c',
+  'terrain.c'
+])
\ No newline at end of file
diff --git a/src/lib/evas/common3d/primitives/tabulated_primitives/meson.build 
b/src/lib/evas/common3d/primitives/tabulated_primitives/meson.build
new file mode 100644
index 0000000000..a24df304d1
--- /dev/null
+++ b/src/lib/evas/common3d/primitives/tabulated_primitives/meson.build
@@ -0,0 +1,4 @@
+evas_src += files([
+  'cube.c',
+  'square.c'
+])
\ No newline at end of file
diff --git a/src/lib/evas/common3d/save_load/meson.build 
b/src/lib/evas/common3d/save_load/meson.build
new file mode 100644
index 0000000000..72f430d31e
--- /dev/null
+++ b/src/lib/evas/common3d/save_load/meson.build
@@ -0,0 +1,6 @@
+evas_src += files([
+  'evas_model_load.c',
+  'evas_model_load_save_common.c',
+  'evas_model_load_save_common.h',
+  'evas_model_save.c',
+])
\ No newline at end of file
diff --git a/src/lib/evas/file/meson.build b/src/lib/evas/file/meson.build
new file mode 100644
index 0000000000..3fb4c754a9
--- /dev/null
+++ b/src/lib/evas/file/meson.build
@@ -0,0 +1,6 @@
+evas_src += files([
+  'evas_module.c',
+  'evas_module.h',
+  'evas_path.c',
+  'evas_path.h',
+])
diff --git a/src/lib/evas/filters/lua/meson.build 
b/src/lib/evas/filters/lua/meson.build
new file mode 100644
index 0000000000..26658feae7
--- /dev/null
+++ b/src/lib/evas/filters/lua/meson.build
@@ -0,0 +1,3 @@
+install_data('color.lua',
+  install_dir : join_paths(dir_data, 'evas', 'filters', 'lua')
+)
\ No newline at end of file
diff --git a/src/lib/evas/filters/meson.build b/src/lib/evas/filters/meson.build
new file mode 100644
index 0000000000..c15c7671a2
--- /dev/null
+++ b/src/lib/evas/filters/meson.build
@@ -0,0 +1,19 @@
+subdir('lua')
+
+evas_src += files([
+  'evas_filter.c',
+  'evas_filter_parser.c',
+  'evas_filter_private.h',
+  'evas_filter_utils.c',
+])
+
+luajit = dependency('luajit')
+if target_machine.system() == 'darwin'
+# luajit on macos is broken, this means we need to generate our own dependency 
with our arguments, a library later still needs to link to luajit for the 
pagesize argument thingy
+  luajit = declare_dependency(
+    include_directories: 
include_directories(luajit.get_pkgconfig_variable('includedir')),
+    link_args: ['-L'+luajit.get_pkgconfig_variable('libdir'), 
'-l'+luajit.get_pkgconfig_variable('libname')]
+  )
+endif
+
+evas_deps += luajit
\ No newline at end of file
diff --git a/src/lib/evas/gesture/meson.build b/src/lib/evas/gesture/meson.build
new file mode 100644
index 0000000000..d7728a7b04
--- /dev/null
+++ b/src/lib/evas/gesture/meson.build
@@ -0,0 +1,65 @@
+pub_eo_files = [
+  'efl_gesture_touch.eo',
+  'efl_gesture.eo',
+  'efl_gesture_tap.eo',
+  'efl_gesture_long_tap.eo',
+  'efl_gesture_recognizer.eo',
+  'efl_gesture_manager.eo'
+]
+
+foreach eo_file : pub_eo_files
+  pub_eo_file_target += custom_target('eolian_gen_' + eo_file,
+    input : eo_file,
+    output : [eo_file + '.h'],
+    install : true,
+    install_dir : dir_package_include,
+    command : [eolian_gen, '-I', meson.current_source_dir(), 
eolian_include_directories,
+                           '-o', 'h:' + join_paths(meson.current_build_dir(), 
eo_file + '.h'),
+                           '-o', 'c:' + join_paths(meson.current_build_dir(), 
eo_file + '.c'),
+                           '-o', 'l:' + join_paths(meson.current_build_dir(), 
eo_file + '.legacy.h'),
+                           '-gchl', '@INPUT@'])
+endforeach
+
+pub_eo_files = [
+  'efl_gesture_recognizer_tap.eo',
+  'efl_gesture_recognizer_long_tap.eo'
+]
+
+foreach eo_file : pub_eo_files
+  pub_eo_file_target += custom_target('eolian_gen_' + eo_file,
+    input : eo_file,
+    output : [eo_file + '.h'],
+    install : false,
+    install_dir : dir_package_include,
+    command : [eolian_gen, '-I', meson.current_source_dir(), 
eolian_include_directories,
+                           '-o', 'h:' + join_paths(meson.current_build_dir(), 
eo_file + '.h'),
+                           '-o', 'c:' + join_paths(meson.current_build_dir(), 
eo_file + '.c'),
+                           '-o', 'l:' + join_paths(meson.current_build_dir(), 
eo_file + '.legacy.h'),
+                           '-gchl', '@INPUT@'])
+endforeach
+
+pub_eo_types_files = [
+  'efl_gesture_types.eot',
+]
+
+foreach eo_file : pub_eo_types_files
+  pub_eo_file_target += custom_target('eolian_gen_' + eo_file,
+    input : eo_file,
+    output : [eo_file + '.h'],
+    install : true,
+    install_dir : dir_package_include,
+    command : [eolian_gen, '-I', meson.current_source_dir(), 
eolian_include_directories,
+                           '-o', 'h:' + join_paths(meson.current_build_dir(), 
eo_file + '.h'),
+                           '-gh', '@INPUT@'])
+endforeach
+
+evas_src += files([
+  'efl_gesture_touch.c',
+  'efl_gesture.c',
+  'efl_gesture_tap.c',
+  'efl_gesture_long_tap.c',
+  'efl_gesture_recognizer.c',
+  'efl_gesture_recognizer_tap.c',
+  'efl_gesture_recognizer_long_tap.c',
+  'efl_gesture_manager.c',
+])
\ No newline at end of file
diff --git a/src/lib/evas/include/meson.build b/src/lib/evas/include/meson.build
new file mode 100644
index 0000000000..42aa2e47bd
--- /dev/null
+++ b/src/lib/evas/include/meson.build
@@ -0,0 +1,20 @@
+evas_include_directories += [include_directories('.')]
+
+
+pub_eo_files = [
+  'evas_ector_buffer.eo'
+]
+
+foreach eo_file : pub_eo_files
+  pub_eo_file_target += custom_target('eolian_gen_' + eo_file,
+    input : eo_file,
+    output : [eo_file + '.h'],
+    install : true,
+    install_dir : dir_package_include,
+    command : [eolian_gen, '-I', meson.current_source_dir(), 
eolian_include_directories,
+                           '-o', 'h:' + join_paths(meson.current_build_dir(), 
eo_file + '.h'),
+                           '-o', 'c:' + join_paths(meson.current_build_dir(), 
eo_file + '.c'),
+                           '-gch', '@INPUT@'])
+endforeach
+
+eolian_include_directories += ['-I', meson.current_source_dir()]
diff --git a/src/lib/evas/meson.build b/src/lib/evas/meson.build
new file mode 100644
index 0000000000..0d81d536d8
--- /dev/null
+++ b/src/lib/evas/meson.build
@@ -0,0 +1,159 @@
+# README
+# 
+# Evas build is a bit more complex.
+# the final shared library is build in src/lib/evas_goal/meson.build.
+#
+# The content of lib/evas is build as static_library as 
+# are all the engines loaders and savers.
+#
+# All those stages are defining dependencies with theire source code
+# as 'source :', later everything is build as libevas.so.
+#
+# For now loaders and savers are ALWAYS build statically.
+# 
+
+evas_deps = [eo, eet, eina, efl, emile, ector, ecore]
+pub_eo_file_target = []
+
+pub_legacy_eo_files = [
+
+] 
+
+foreach eo_file : pub_legacy_eo_files
+  pub_eo_file_target += custom_target('eolian_gen_' + eo_file,
+    input : eo_file,
+    output : [eo_file + '.h', eo_file + '.legacy.h',],
+    install : true,
+    install_dir : dir_package_include,
+    command : [eolian_gen, '-I', meson.current_source_dir(), 
eolian_include_directories,
+                           '-o', 'h:' + join_paths(meson.current_build_dir(), 
eo_file + '.h'),
+                           '-o', 'c:' + join_paths(meson.current_build_dir(), 
eo_file + '.c'),
+                           '-o', 'l:' + join_paths(meson.current_build_dir(), 
eo_file + '.legacy.h'),
+                           '-gchl', '@INPUT@'])
+
+endforeach
+
+pub_eo_files = [
+  
+]
+
+foreach eo_file : pub_eo_files
+  pub_eo_file_target += custom_target('eolian_gen_' + eo_file,
+    input : eo_file,
+    output : [eo_file + '.h'],
+    install : true,
+    install_dir : dir_package_include,
+    command : [eolian_gen, '-I', meson.current_source_dir(), 
eolian_include_directories,
+                           '-o', 'h:' + join_paths(meson.current_build_dir(), 
eo_file + '.h'),
+                           '-o', 'c:' + join_paths(meson.current_build_dir(), 
eo_file + '.c'),
+                           '-gch', '@INPUT@'])
+endforeach
+
+
+pub_eo_types_files = [
+
+]
+
+foreach eo_file : pub_eo_types_files
+  pub_eo_file_target += custom_target('eolian_gen_' + eo_file,
+    input : eo_file,
+    output : [eo_file + '.h'],
+    install : true,
+    install_dir : dir_package_include,
+    command : [eolian_gen, '-I', meson.current_source_dir(), 
eolian_include_directories,
+                           '-o', 'h:' + join_paths(meson.current_build_dir(), 
eo_file + '.h'),
+                           '-gh', '@INPUT@'])
+endforeach
+
+eolian_include_directories += ['-I', meson.current_source_dir()]
+
+evas_header_src = [
+  'Evas.h',
+  'Evas_Common.h',
+  'Evas_Eo.h',
+  'Evas_GL.h',
+  'Evas_Internal.h',
+  'Evas_Legacy.h',
+  'Evas_Loader.h',
+]
+
+evas_include_directories = [
+  include_directories('.'),
+  include_directories('common'),
+  include_directories('common3d'),
+  include_directories(join_paths('common3d', 'save_load')),
+  include_directories('include'),
+  include_directories('filters'),
+  vg_common_inc_dir
+]
+
+evas_src = [
+   'main.c'
+]
+
+evas_src += vg_common_src
+
+evas_deps += dependency('freetype2')
+
+font_config = dependency('fontconfig')
+if (font_config.found())
+   config_h.set('HAVE_FONTCONFIG', '1')
+   evas_deps += font_config
+endif
+
+fribidi = dependency('fribidi')
+if (fribidi.found())
+   config_h.set('HAVE_FRIBIDI', '1')
+   evas_deps += fribidi
+endif
+
+subdir('include')
+subdir('common')
+subdir('canvas')
+subdir('gesture')
+subdir('filters')
+subdir('cache')
+subdir('common3d')
+subdir('file')
+subdir('vg')
+
+gl_deps = []
+
+if get_option('harfbuzz')
+  evas_deps += dependency('harfbuzz')
+  config_h.set('HAVE_HARFBUZZ', '1')
+endif
+
+if get_option('ecore_wl2') or get_option('ecore_buffer')
+  evas_deps += wayland_protocol
+endif
+
+
+if get_option('opengl') != 'none'
+  gl_deps += dependency('gl')
+endif
+
+if get_option('opengl') == 'es-egl'
+  config_h.set('GL_GLES', '1')
+  gl_deps += dependency('egl')
+endif
+
+evas_pre = declare_dependency(
+  include_directories: evas_include_directories + [vg_common_inc_dir],
+  sources : pub_eo_file_target,
+  dependencies: [eina, eo, ector, emile, evas_deps],
+)
+
+evas_pre_lib_dep = declare_dependency(
+  include_directories: evas_include_directories + [vg_common_inc_dir],
+  sources : [evas_src, pub_eo_file_target],
+  dependencies: [evas_deps, m, draw, valgrind, libunibreak]
+)
+
+#install_data(pub_eo_files,
+#  install_dir: join_paths(eolian_include_dir, package_version_name)
+#)
+
+install_headers(evas_header_src,
+  install_dir : dir_package_include,
+)
\ No newline at end of file
diff --git a/src/lib/evas/vg/meson.build b/src/lib/evas/vg/meson.build
new file mode 100644
index 0000000000..2f9622312d
--- /dev/null
+++ b/src/lib/evas/vg/meson.build
@@ -0,0 +1 @@
+evas_src += files(['evas_vg_cache.c'])
\ No newline at end of file
diff --git a/src/lib/evas_goal/empty.c b/src/lib/evas_goal/empty.c
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/lib/evas_goal/meson.build b/src/lib/evas_goal/meson.build
new file mode 100644
index 0000000000..097708571d
--- /dev/null
+++ b/src/lib/evas_goal/meson.build
@@ -0,0 +1,19 @@
+evas_lib = library('evas', 
+    'empty.c',
+    #all the source code is coming from evas_pre_lib_dep
+    dependencies: [evas_pre_lib_dep, evas_static_list],
+    install: true,
+    c_args : '-DPACKAGE_DATA_DIR="'+join_paths(dir_data, 'evas')+'"',
+)
+
+evas = declare_dependency(
+   link_with : [evas_lib],
+   dependencies : [eina, ecore, ector, emile, evas_pre],
+   include_directories : evas_include_directories
+)
+
+evas_bin = declare_dependency(
+   link_with : [evas_lib],
+   dependencies : [eina, ecore, ector, emile, dependency('luajit')],
+   include_directories : evas_include_directories
+)
\ No newline at end of file
diff --git a/src/modules/evas/engines/buffer/meson.build 
b/src/modules/evas/engines/buffer/meson.build
new file mode 100644
index 0000000000..3373b7d5ea
--- /dev/null
+++ b/src/modules/evas/engines/buffer/meson.build
@@ -0,0 +1,14 @@
+engine_src = files([
+  'Evas_Engine_Buffer.h',
+  'evas_engine.c',
+  'evas_engine.h',
+  'evas_outbuf.c'
+])
+
+engine_deps = []
+
+evas_include_directories += include_directories('.')
+
+install_headers('Evas_Engine_Buffer.h',
+  install_dir : dir_package_include,
+)
\ No newline at end of file
diff --git a/src/modules/evas/engines/drm/meson.build 
b/src/modules/evas/engines/drm/meson.build
new file mode 100644
index 0000000000..4d30f61349
--- /dev/null
+++ b/src/modules/evas/engines/drm/meson.build
@@ -0,0 +1,8 @@
+engine_src = files([
+  'Evas_Engine_Drm.h',
+  'evas_engine.c',
+  'evas_engine.h',
+  'evas_outbuf.c'
+])
+
+engine_deps = [ecore_drm2, libdrm]
\ No newline at end of file
diff --git a/src/modules/evas/engines/fb/meson.build 
b/src/modules/evas/engines/fb/meson.build
new file mode 100644
index 0000000000..c59910fda3
--- /dev/null
+++ b/src/modules/evas/engines/fb/meson.build
@@ -0,0 +1,10 @@
+engine_src = files([
+  'Evas_Engine_FB.h',
+  'evas_engine.c',
+  'evas_engine.h',
+  'evas_outbuf.c',
+  'evas_fb.h',
+  'evas_fb_main.c',
+])
+
+engine_deps = [ecore_fb]
diff --git a/src/modules/evas/engines/gl_cocoa/meson.build 
b/src/modules/evas/engines/gl_cocoa/meson.build
new file mode 100644
index 0000000000..71e1649594
--- /dev/null
+++ b/src/modules/evas/engines/gl_cocoa/meson.build
@@ -0,0 +1,8 @@
+engine_src = files([
+  'Evas_Engine_GL_Cocoa.h',
+  'evas_engine.c',
+  'evas_engine.h',
+  'evas_outbuf.m',
+])
+
+engine_deps = [ecore_cocoa]
diff --git a/src/modules/evas/engines/gl_common/meson.build 
b/src/modules/evas/engines/gl_common/meson.build
new file mode 100644
index 0000000000..cbfe8ce0de
--- /dev/null
+++ b/src/modules/evas/engines/gl_common/meson.build
@@ -0,0 +1,34 @@
+engine_src = files([
+  'evas_gl_private.h',
+  'evas_gl_common.h',
+  'evas_gl_define.h',
+  'evas_gl_context.c',
+  'evas_gl_file_cache.c',
+  'evas_gl_shader.c',
+  'evas_gl_rectangle.c',
+  'evas_gl_texture.c',
+  'evas_gl_preload.c',
+  'evas_gl_image.c',
+  'evas_gl_font.c',
+  'evas_gl_polygon.c',
+  'evas_gl_line.c',
+  'evas_gl_core.c',
+  'evas_gl_api_ext.h',
+  'evas_gl_api_ext_def.h',
+  'evas_gl_core.h',
+  'evas_gl_core_private.h',
+  'evas_gl_api.c',
+  'evas_gl_api_def.h',
+  'evas_gl_api_gles1.c',
+  'evas_gl_api_gles3_def.h',
+  'evas_gl_api_ext.c',
+  'evas_gl_3d_common.h',
+  'evas_gl_3d_private.h',
+  'evas_gl_3d.c',
+  'evas_gl_3d_renderer.c',
+  'evas_gl_3d_shader.c',
+  #join_paths('shader_3d', 'evas_gl_3d_shaders.x'),
+  #join_paths('shader','evas_gl_shaders.x'),
+])
+
+engine_deps = [gl_deps]
diff --git a/src/modules/evas/engines/gl_drm/meson.build 
b/src/modules/evas/engines/gl_drm/meson.build
new file mode 100644
index 0000000000..5115cfb0b1
--- /dev/null
+++ b/src/modules/evas/engines/gl_drm/meson.build
@@ -0,0 +1,8 @@
+engine_src = files([
+  'Evas_Engine_GL_Drm.h',
+  'evas_engine.c',
+  'evas_engine.h',
+  'evas_outbuf.c',
+])
+
+engine_deps = [ecore_drm2, libdrm]
diff --git a/src/modules/evas/engines/gl_generic/meson.build 
b/src/modules/evas/engines/gl_generic/meson.build
new file mode 100644
index 0000000000..76d456f963
--- /dev/null
+++ b/src/modules/evas/engines/gl_generic/meson.build
@@ -0,0 +1,35 @@
+engine_src = files([
+  'evas_engine.c',
+  'Evas_Engine_GL_Generic.h',
+  'Evas_Engine_GL_Shared.h',
+  'evas_ector_gl.h',
+  'evas_ector_gl_buffer.c',
+  'evas_ector_gl_image_buffer.c',
+  join_paths('filters','gl_engine_filter.h'),
+  join_paths('filters','gl_filter_blend.c'),
+  join_paths('filters','gl_filter_blur.c'),
+  join_paths('filters','gl_filter_curve.c'),
+  join_paths('filters','gl_filter_displace.c'),
+  join_paths('filters','gl_filter_fill.c'),
+  join_paths('filters','gl_filter_mask.c'),
+])
+
+
+pub_eo_files = [
+  'evas_ector_gl_buffer.eo',
+  'evas_ector_gl_image_buffer.eo'
+]
+
+foreach eo_file : pub_eo_files
+  engine_src += custom_target('eolian_gen_' + eo_file,
+    input : eo_file,
+    output : [eo_file + '.h'],
+    install : true,
+    install_dir : dir_package_include,
+    command : [eolian_gen, '-I', meson.current_source_dir(), 
eolian_include_directories,
+                           '-o', 'h:' + join_paths(meson.current_build_dir(), 
eo_file + '.h'),
+                           '-o', 'c:' + join_paths(meson.current_build_dir(), 
eo_file + '.c'),
+                           '-gch', '@INPUT@'])
+endforeach
+
+engine_deps = [gl_common]
diff --git a/src/modules/evas/engines/gl_x11/meson.build 
b/src/modules/evas/engines/gl_x11/meson.build
new file mode 100644
index 0000000000..bb5e87aa91
--- /dev/null
+++ b/src/modules/evas/engines/gl_x11/meson.build
@@ -0,0 +1,8 @@
+engine_src = files([
+  'Evas_Engine_GL_X11.h',
+  'evas_engine.c',
+  'evas_engine.h',
+  'evas_x_main.c',
+])
+
+engine_deps = [ecore_x_deps, gl_deps, ]
\ No newline at end of file
diff --git a/src/modules/evas/engines/software_ddraw/meson.build 
b/src/modules/evas/engines/software_ddraw/meson.build
new file mode 100644
index 0000000000..8c0c482fb4
--- /dev/null
+++ b/src/modules/evas/engines/software_ddraw/meson.build
@@ -0,0 +1,10 @@
+engine_src = files([
+  'Evas_Engine_Software_DDraw.h',
+  'evas_engine.c',
+  'evas_engine.h',
+  'evas_outbuf.c',
+  'evas_ddraw_buffer.c',
+  'evas_ddraw_main.c',
+])
+
+engine_deps = []
diff --git a/src/modules/evas/engines/software_gdi/meson.build 
b/src/modules/evas/engines/software_gdi/meson.build
new file mode 100644
index 0000000000..76f35b06c8
--- /dev/null
+++ b/src/modules/evas/engines/software_gdi/meson.build
@@ -0,0 +1,10 @@
+engine_src = files([
+  'Evas_Engine_Software_Gdi.h',
+  'evas_engine.c',
+  'evas_engine.h',
+  'evas_outbuf.c',
+  'evas_gdi_buffer.c',
+  'evas_gdi_main.c',
+])
+
+engine_deps = []
diff --git a/src/modules/evas/engines/software_generic/filters/meson.build 
b/src/modules/evas/engines/software_generic/filters/meson.build
new file mode 100644
index 0000000000..6ccd5f59a1
--- /dev/null
+++ b/src/modules/evas/engines/software_generic/filters/meson.build
@@ -0,0 +1,13 @@
+engine_include_dir += include_directories('.')
+
+engine_src += files([
+  'evas_engine_filter.h',
+  'evas_filter_blend.c',
+  'evas_filter_blur.c',
+  'evas_filter_bump.c',
+  'evas_filter_curve.c',
+  'evas_filter_displace.c',
+  'evas_filter_fill.c',
+  'evas_filter_mask.c',
+  'evas_filter_transform.c',
+])
\ No newline at end of file
diff --git a/src/modules/evas/engines/software_generic/meson.build 
b/src/modules/evas/engines/software_generic/meson.build
new file mode 100644
index 0000000000..626796ebc1
--- /dev/null
+++ b/src/modules/evas/engines/software_generic/meson.build
@@ -0,0 +1,31 @@
+engine_src = files([
+  'evas_engine.c',
+  'Evas_Engine_Software_Generic.h',
+  'Evas_Engine_Software_Shared.h',
+  'evas_native_tbm.c',
+  'evas_native_dmabuf.c',
+  'evas_ector_software_buffer.c',
+  'evas_native_common.h',
+  'evas_ector_software.h',
+])
+
+
+pub_eo_files = [
+  'evas_ector_software_buffer.eo'
+]
+
+subdir('filters')
+
+foreach eo_file : pub_eo_files
+  engine_src += custom_target('eolian_gen_' + eo_file,
+    input : eo_file,
+    output : [eo_file + '.h'],
+    install : true,
+    install_dir : dir_package_include,
+    command : [eolian_gen, '-I', meson.current_source_dir(), 
eolian_include_directories,
+                           '-o', 'h:' + join_paths(meson.current_build_dir(), 
eo_file + '.h'),
+                           '-o', 'c:' + join_paths(meson.current_build_dir(), 
eo_file + '.c'),
+                           '-gch', '@INPUT@'])
+endforeach
+
+engine_deps = [draw, dl]
diff --git a/src/modules/evas/engines/software_x11/meson.build 
b/src/modules/evas/engines/software_x11/meson.build
new file mode 100644
index 0000000000..c326b39cdf
--- /dev/null
+++ b/src/modules/evas/engines/software_x11/meson.build
@@ -0,0 +1,28 @@
+engine_src = files([
+  'evas_engine.c',
+  'evas_engine.h',
+  'evas_x_egl.c',
+  'evas_x_egl.h',
+  'Evas_Engine_Software_X11.h',
+  'evas_xlib_swapbuf.c',
+  'evas_xlib_outbuf.c',
+  'evas_xlib_buffer.c',
+  'evas_xlib_color.c',
+  'evas_xlib_main.c',
+  'evas_xlib_swapper.c',
+  'evas_xlib_image.c',
+  'evas_xlib_dri_image.c',
+  'evas_xlib_outbuf.h',
+  'evas_xlib_swapbuf.h',
+  'evas_xlib_buffer.h',
+  'evas_xlib_color.h',
+  'evas_xlib_swapper.h',
+  'evas_xlib_image.h',
+  'evas_xlib_dri_image.h'
+])
+
+#xcb is DEAD ... we only use xlib
+config_h.set('BUILD_ENGINE_SOFTWARE_XLIB', '1')
+
+#ecore_x_deps carries all the extensions etc. so we dont have to search them 
twice
+engine_deps = [x11, ecore_x, ecore_x_deps]
diff --git a/src/modules/evas/engines/wayland_egl/meson.build 
b/src/modules/evas/engines/wayland_egl/meson.build
new file mode 100644
index 0000000000..114edaed12
--- /dev/null
+++ b/src/modules/evas/engines/wayland_egl/meson.build
@@ -0,0 +1,9 @@
+engine_src = files([
+  'evas_engine.c',
+  'evas_engine.h',
+  'evas_wl_main.c'
+])
+
+engine_deps = [ecore_wl2, dependency('wayland-egl')]
+
+engine_include_dir = include_directories(join_paths('..','wayland_common'))
\ No newline at end of file
diff --git a/src/modules/evas/engines/wayland_shm/meson.build 
b/src/modules/evas/engines/wayland_shm/meson.build
new file mode 100644
index 0000000000..2cc5a5fbc6
--- /dev/null
+++ b/src/modules/evas/engines/wayland_shm/meson.build
@@ -0,0 +1,9 @@
+engine_src = files([
+  'evas_engine.c',
+  'evas_engine.h',
+  'evas_outbuf.c'
+])
+
+engine_deps = [ecore_wl2]
+
+engine_include_dir = include_directories(join_paths('..','wayland_common'))
\ No newline at end of file
diff --git a/src/modules/evas/image_loaders/meson.build 
b/src/modules/evas/image_loaders/meson.build
new file mode 100644
index 0000000000..df0d8968ac
--- /dev/null
+++ b/src/modules/evas/image_loaders/meson.build
@@ -0,0 +1,42 @@
+evas_image_loaders_file = [
+  ['bmp', []],
+  ['eet', [eet]],
+  ['generic', [rt]],
+  ['gif', [giflib]],
+  ['ico', []],
+  ['jpeg', [jpeg]],
+  ['pmaps', []],
+  ['png', [png]],
+  ['psd', []],
+  ['tga', []],
+  ['tgv', [rg_etc, lz4]],
+  ['tiff', [tiff]],
+  ['wbmp', []],
+  ['webp', [webp]],
+  ['xpm', []],
+]
+
+foreach loader_inst : evas_image_loaders_file
+       loader = loader_inst[0]
+       loader_deps = loader_inst[1]
+
+
+  if get_option('evas-loaders-disabler').contains(loader) == false
+       file = join_paths(loader, 'evas_image_load_'+loader+'.c')
+
+       tmp = static_library('image_loader_'+loader, file,
+               include_directories : config_dir,
+               dependencies : [evas_pre] + loader_deps
+       )
+
+    evas_static_list += [declare_dependency(
+      sources: file,
+      dependencies: loader_deps,
+    )]
+
+       config_h.set('EVAS_STATIC_BUILD_'+loader.to_upper(), '1')
+    config_h.set('BUILD_LOADER_'+loader.to_upper(), '1')
+  else
+    message('Image loader '+loader+' disabled')
+  endif
+endforeach
\ No newline at end of file
diff --git a/src/modules/evas/image_savers/meson.build 
b/src/modules/evas/image_savers/meson.build
new file mode 100644
index 0000000000..81bdbd9f55
--- /dev/null
+++ b/src/modules/evas/image_savers/meson.build
@@ -0,0 +1,32 @@
+
+evas_image_savers_file = [
+['eet', [eet]], 
+['jpeg', [jpeg]], 
+['png', [png]], 
+['tgv', [rg_etc, lz4]], 
+['tiff', [tiff]], 
+['webp', []]
+]
+
+foreach loader_inst : evas_image_savers_file
+  loader = loader_inst[0]
+  loader_deps = loader_inst[1]
+
+  if get_option('evas-loaders-disabler').contains(loader) == false
+    file = join_paths(loader, 'evas_image_save_'+loader+'.c')
+
+    tmp = static_library('image_saver_'+loader, file,
+      include_directories : config_dir,
+      dependencies : [evas_pre] + loader_deps
+    )
+
+    evas_static_list += [declare_dependency(
+      sources: file,
+      dependencies: loader_deps,
+    )]
+
+    config_h.set('EVAS_STATIC_BUILD_'+loader.to_upper(), '1')
+  else
+    message('Image saver '+loader+' disabled')
+  endif
+endforeach
diff --git a/src/modules/evas/meson.build b/src/modules/evas/meson.build
new file mode 100644
index 0000000000..748a931c47
--- /dev/null
+++ b/src/modules/evas/meson.build
@@ -0,0 +1,104 @@
+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,
+          sources : engine_src,
+          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+'.so')
+    endif
+    config_h.set('BUILD_ENGINE_'+engine.to_upper(), '1')
+  endif
+endforeach
\ No newline at end of file
diff --git a/src/modules/evas/model_loaders/meson.build 
b/src/modules/evas/model_loaders/meson.build
new file mode 100644
index 0000000000..7aae3611cc
--- /dev/null
+++ b/src/modules/evas/model_loaders/meson.build
@@ -0,0 +1,16 @@
+evas_model_loaders_file = ['eet', 'md2', 'obj', 'ply']
+
+foreach loader : evas_model_loaders_file
+       file = join_paths(loader, 'evas_model_load_'+loader+'.c')
+
+       tmp = static_library('model_loader_'+loader, file,
+               include_directories : config_dir,
+               dependencies : [evas_pre]
+       )
+
+  evas_static_list += [declare_dependency(
+    include_directories: include_directories('.'),
+    sources: file,
+    dependencies: evas_pre,
+  )]
+endforeach
diff --git a/src/modules/evas/model_savers/meson.build 
b/src/modules/evas/model_savers/meson.build
new file mode 100644
index 0000000000..bb0dca2e3a
--- /dev/null
+++ b/src/modules/evas/model_savers/meson.build
@@ -0,0 +1,16 @@
+evas_model_savers_file = ['eet', 'obj', 'ply']
+
+foreach loader : evas_model_savers_file
+       file = join_paths(loader, 'evas_model_save_'+loader+'.c')
+
+       tmp = static_library('model_saver_'+loader, file,
+               include_directories : config_dir,
+               dependencies : evas_pre
+       )
+
+  evas_static_list += [declare_dependency(
+    include_directories: include_directories('.'),
+    sources: file,
+    dependencies: evas_pre,
+  )]
+endforeach
diff --git a/src/modules/evas/vg_loaders/meson.build 
b/src/modules/evas/vg_loaders/meson.build
new file mode 100644
index 0000000000..584501a825
--- /dev/null
+++ b/src/modules/evas/vg_loaders/meson.build
@@ -0,0 +1,13 @@
+evas_vg_loaders_file = ['eet', 'svg']
+
+foreach loader : evas_vg_loaders_file
+       file = join_paths(loader, 'evas_vg_load_'+loader+'.c')
+       static_library('vg_loader_'+loader, file,
+               include_directories : config_dir,
+               dependencies : evas_pre 
+       )
+  evas_static_list += [declare_dependency(
+    sources: file,
+  )]
+  config_h.set('EVAS_STATIC_BUILD_VG_'+loader.to_upper(), '1')
+endforeach
diff --git a/src/modules/evas/vg_savers/meson.build 
b/src/modules/evas/vg_savers/meson.build
new file mode 100644
index 0000000000..414a695c27
--- /dev/null
+++ b/src/modules/evas/vg_savers/meson.build
@@ -0,0 +1,14 @@
+evas_vg_savers_file = ['eet', 'svg']
+
+foreach loader : evas_vg_savers_file
+       file = join_paths(loader, 'evas_vg_save_'+loader+'.c')
+       tmp = static_library('vg_saver_'+loader, file,
+               include_directories : config_dir,
+    dependencies: [eo, ector, emile, freetype, eet, evas_pre],
+       )
+  evas_static_list += [declare_dependency(
+    sources: file,
+    dependencies: [eo, ector, emile, freetype, eet, evas_pre],
+  )]
+  config_h.set('EVAS_STATIC_BUILD_VG_'+loader.to_upper(), '1')
+endforeach
\ No newline at end of file
diff --git a/src/static_libs/libunibreak/meson.build 
b/src/static_libs/libunibreak/meson.build
new file mode 100644
index 0000000000..7ac5e73859
--- /dev/null
+++ b/src/static_libs/libunibreak/meson.build
@@ -0,0 +1,29 @@
+
+libunibreak_src = [
+  'unibreakbase.h',
+  'unibreakdef.h',
+  'linebreak.h',
+  'linebreakdef.h',
+  'wordbreakdef.h',
+  'wordbreak.h',
+  'wordbreakdata.c',
+  'unibreakbase.c',
+  'unibreakdef.c',
+  'linebreak.c',
+  'linebreakdata.c',
+  'linebreakdef.c',
+  'wordbreak.c'
+]
+
+
+libunibreak_lib = static_library('libunibreak',
+    libunibreak_src,
+    include_directories : config_dir,
+    install: false,
+)
+
+libunibreak = declare_dependency(
+  include_directories: [include_directories('.')],
+  link_with: libunibreak_lib,
+  dependencies: [eina],
+)
diff --git a/src/static_libs/vg_common/meson.build 
b/src/static_libs/vg_common/meson.build
new file mode 100644
index 0000000000..f222429f02
--- /dev/null
+++ b/src/static_libs/vg_common/meson.build
@@ -0,0 +1,8 @@
+#vg common is not really a static lib, is required by evas and requires evas 
... so only collecting src here and compile them into evas ... ...
+
+vg_common_src = files([
+  'vg_common.c',
+  'vg_common.h',
+])
+
+vg_common_inc_dir = include_directories('.')
\ No newline at end of file
diff --git a/src/tests/evas/meson.build b/src/tests/evas/meson.build
new file mode 100644
index 0000000000..52fd5b6997
--- /dev/null
+++ b/src/tests/evas/meson.build
@@ -0,0 +1,30 @@
+evas_suite_src = [
+  'evas_suite.c',
+  'evas_test_init.c',
+  'evas_test_object.c',
+  'evas_test_object_smart.c',
+  'evas_test_textblock.c',
+  'evas_test_text.c',
+  'evas_test_callbacks.c',
+  'evas_test_render_engines.c',
+  'evas_test_filters.c',
+  'evas_test_image.c',
+  'evas_test_mesh.c',
+  'evas_test_mask.c',
+  'evas_test_evasgl.c',
+  'evas_test_matrix.c',
+  'evas_tests_helpers.h',
+  'evas_suite.h'
+]
+
+evas_suite = executable('evas_suite',
+  evas_suite_src,
+  dependencies: [evas_bin, evas_pre, ecore_evas, dl, check],
+  c_args : [
+  '-DTESTS_BUILD_DIR="'+meson.current_build_dir()+'"',
+  '-DTESTS_SRC_DIR="'+meson.current_source_dir()+'"']
+)
+
+test('evas-suite', evas_suite,
+  is_parallel: true,
+)
\ No newline at end of file
diff --git a/src/wayland_protocol/meson.build b/src/wayland_protocol/meson.build
index 3433cd8a9f..6dbcbc4ad2 100644
--- a/src/wayland_protocol/meson.build
+++ b/src/wayland_protocol/meson.build
@@ -1,6 +1,8 @@
 wayland_scanner_bin = find_program('wayland-scanner')
 
-wayland_protocols = dependency('wayland-protocols')
+#make it typo proof
+_wayland_protocols = dependency('wayland-protocols')
+wayland_client = dependency('wayland-client')
 
 wl_protocol_local = [
   'efl-aux-hints.xml',
@@ -17,7 +19,7 @@ wl_protocol_sys = [
 
 foreach sys_protocol : wl_protocol_sys
        wl_protocol_local += [ 
-               
join_paths(wayland_protocols.get_pkgconfig_variable('pkgdatadir'), 'unstable',
+               
join_paths(_wayland_protocols.get_pkgconfig_variable('pkgdatadir'), 'unstable',
                        sys_protocol)]
 endforeach
 
@@ -50,4 +52,5 @@ wayland_protocol = declare_dependency(
        include_directories: include_directories('.'),
        link_with: wayland_protocol_lib,
   sources: gen_obj,
+  dependencies : [wayland_client]
 )
\ No newline at end of file

-- 


Reply via email to