stefan pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=8e3606698eb439eecd7302a885504365aca7e564

commit 8e3606698eb439eecd7302a885504365aca7e564
Author: Marcel Hollerbach <[email protected]>
Date:   Sun May 10 14:41:57 2020 +0200

    refactor build
    
    libraries are split into deps, external deps, and pub deps.
    Evas engines are refactored to use the predefined engine deps.
    
    this is preparation work for efl-one.
    
    Reviewed-by: Stefan Schmidt <[email protected]>
    Differential Revision: https://phab.enlightenment.org/D11806
---
 src/bin/ecore_buffer/meson.build                   |  2 +-
 src/bin/edje/meson.build                           |  3 +-
 src/bin/elementary/meson.build                     | 16 ++++----
 src/bin/exactness/meson.build                      |  4 +-
 src/examples/elementary/meson.build                |  2 +-
 src/lib/ecore/meson.build                          | 17 +++++----
 src/lib/ecore_audio/meson.build                    | 23 ++++++------
 src/lib/ecore_buffer/meson.build                   |  9 +++--
 src/lib/ecore_cocoa/meson.build                    | 14 +++++--
 src/lib/ecore_con/meson.build                      | 28 +++++++-------
 src/lib/ecore_drm2/meson.build                     |  9 +++--
 src/lib/ecore_evas/meson.build                     | 15 +++++---
 src/lib/ecore_fb/meson.build                       |  9 +++--
 src/lib/ecore_file/meson.build                     | 13 ++++---
 src/lib/ecore_imf/meson.build                      |  9 +++--
 src/lib/ecore_imf_evas/meson.build                 |  7 ++--
 src/lib/ecore_input/meson.build                    |  8 ++--
 src/lib/ecore_input_evas/meson.build               |  7 ++--
 src/lib/ecore_ipc/meson.build                      |  8 ++--
 src/lib/ecore_sdl/meson.build                      |  9 +++--
 src/lib/ecore_win32/meson.build                    | 16 +++++---
 src/lib/ecore_wl2/meson.build                      | 18 +++++----
 src/lib/ecore_x/meson.build                        | 19 +++++-----
 src/lib/ector/meson.build                          | 16 +++++---
 src/lib/edje/meson.build                           | 13 ++++---
 src/lib/eet/meson.build                            |  9 +++--
 src/lib/eeze/meson.build                           | 21 ++++++-----
 src/lib/efl/meson.build                            |  5 ++-
 src/lib/efl_canvas_wl/meson.build                  |  2 +-
 src/lib/efreet/meson.build                         | 13 ++++---
 src/lib/eina/meson.build                           | 19 ++++++----
 src/lib/eio/meson.build                            | 15 ++++----
 src/lib/eldbus/meson.build                         |  9 +++--
 src/lib/elementary/meson.build                     | 17 +++++----
 src/lib/elput/meson.build                          | 13 ++++---
 src/lib/embryo/meson.build                         | 12 +++---
 src/lib/emile/meson.build                          | 13 ++++---
 src/lib/emotion/meson.build                        |  7 ++--
 src/lib/eo/meson.build                             |  9 +++--
 src/lib/ephysics/meson.build                       | 10 ++---
 src/lib/ethumb/meson.build                         |  7 ++--
 src/lib/ethumb_client/meson.build                  |  7 ++--
 src/lib/evas/meson.build                           | 43 ++++++++++++----------
 src/lib/evas/software_generic/meson.build          |  2 +
 src/lib/evil/meson.build                           | 11 ++++--
 src/modules/ecore_evas/engines/wayland/meson.build |  2 +-
 src/modules/ecore_imf/meson.build                  |  1 -
 src/modules/evas/engines/buffer/meson.build        |  6 +--
 src/modules/evas/engines/drm/meson.build           |  4 +-
 src/modules/evas/engines/fb/meson.build            |  4 +-
 src/modules/evas/engines/gl_cocoa/meson.build      |  4 +-
 src/modules/evas/engines/gl_drm/meson.build        |  4 +-
 src/modules/evas/engines/gl_generic/meson.build    |  4 +-
 src/modules/evas/engines/gl_x11/meson.build        |  4 +-
 src/modules/evas/engines/meson.build               |  2 +-
 .../evas/engines/software_ddraw/meson.build        |  4 +-
 src/modules/evas/engines/software_gdi/meson.build  |  4 +-
 src/modules/evas/engines/software_x11/meson.build  |  4 +-
 src/modules/evas/engines/wayland_egl/meson.build   |  4 +-
 src/modules/evas/engines/wayland_shm/meson.build   |  4 +-
 src/modules/evas/image_loaders/meson.build         |  2 +-
 src/modules/evas/image_savers/meson.build          |  2 +-
 src/static_libs/buildsystem/meson.build            |  4 ++
 src/static_libs/draw/meson.build                   | 11 ++++++
 src/static_libs/rg_etc/meson.build                 |  4 ++
 src/tests/elementary/meson.build                   |  4 +-
 src/tests/evas/meson.build                         |  2 +-
 src/wayland_protocol/meson.build                   |  5 +++
 68 files changed, 360 insertions(+), 267 deletions(-)

diff --git a/src/bin/ecore_buffer/meson.build b/src/bin/ecore_buffer/meson.build
index 5e1a9d9381..b2df51b4f7 100644
--- a/src/bin/ecore_buffer/meson.build
+++ b/src/bin/ecore_buffer/meson.build
@@ -1,6 +1,6 @@
 executable('bqmgr',
   ['bq_mgr_protocol.c', 'bq_mgr.c'],
-  dependencies: [ecore, ecore_buffer, ecore_buffer_deps],
+  dependencies: [ecore, ecore_buffer, ecore_buffer_deps, 
ecore_buffer_ext_deps],
   install: true,
   install_dir: join_paths(dir_lib, 'ecore_buffer', 'bin')
 )
diff --git a/src/bin/edje/meson.build b/src/bin/edje/meson.build
index fa059ca4b7..82d51c7a77 100644
--- a/src/bin/edje/meson.build
+++ b/src/bin/edje/meson.build
@@ -6,7 +6,8 @@ edje_bin_deps = [
   ecore_file, ecore_input,
   ecore_imf, ecore_imf_evas,
   embryo, efreet, eio,
-  edje, ecore_evas
+  edje, ecore_evas,
+  intl,
 ]
 
 edje_cc_src = [
diff --git a/src/bin/elementary/meson.build b/src/bin/elementary/meson.build
index ef5d3ded60..de731e55cf 100644
--- a/src/bin/elementary/meson.build
+++ b/src/bin/elementary/meson.build
@@ -177,7 +177,7 @@ else
 endif
 elementary_test = executable('elementary_test',
         elementary_test_src,
-        dependencies: [elementary] + elementary_deps + elementary_pub_deps,
+        dependencies: [elementary, intl] + elementary_deps + 
elementary_pub_deps,
         install: true,
         c_args : package_c_args + [
           '-Delementary_test_BIN_DIR="'+dir_bin+'"',
@@ -189,7 +189,7 @@ elementary_test = executable('elementary_test',
 
 library('elementary_test',
         elementary_test_src,
-        dependencies: [elementary] + elementary_deps + elementary_pub_deps,
+        dependencies: [elementary, intl] + elementary_deps + 
elementary_pub_deps,
         install: false,
         c_args : package_c_args + [
           '-Delementary_test_BIN_DIR="'+dir_bin+'"',
@@ -205,7 +205,7 @@ elementary_config_src = [
 
 elementary_config = executable('elementary_config',
         elementary_config_src,
-        dependencies: [elementary] + elementary_deps + elementary_pub_deps,
+        dependencies: [elementary, intl] + elementary_deps + 
elementary_pub_deps,
         install: true,
         c_args : package_c_args,
         link_args: link_args
@@ -218,7 +218,7 @@ if sys_windows == false
 
   elementary_quicklaunch = executable('elementary_quicklaunch',
           elementary_quicklaunch_src,
-          dependencies: [elementary] + elementary_deps + elementary_pub_deps,
+          dependencies: [elementary, intl] + elementary_deps + 
elementary_pub_deps,
           install: true,
           c_args : package_c_args,
           link_args: link_args
@@ -231,7 +231,7 @@ elementary_codegen_src = [
 
 elementary_codegen = executable('elementary_codegen',
         elementary_codegen_src,
-        dependencies: [elementary] + elementary_deps + elementary_pub_deps,
+        dependencies: [elementary, intl] + elementary_deps + 
elementary_pub_deps,
         install: true,
         c_args : package_c_args,
         link_args: link_args
@@ -260,7 +260,7 @@ elm_prefs_cc_src = [
 
 elm_prefs_cc = executable('elm_prefs_cc',
         elm_prefs_cc_src,
-        dependencies: [elementary] + elementary_deps + elementary_pub_deps,
+        dependencies: [elementary, intl] + elementary_deps + 
elementary_pub_deps,
         install: true,
         c_args : package_c_args,
         link_args: link_args
@@ -282,7 +282,7 @@ if sys_windows == false
 
   elementary_run = executable('elementary_run',
           elementary_run_src,
-          dependencies: [elementary] + elementary_deps + elementary_pub_deps,
+          dependencies: [elementary, intl] + elementary_deps + 
elementary_pub_deps,
           install: true,
           c_args : package_c_args,
           link_args: link_args
@@ -302,7 +302,7 @@ elementary_perf_src = [
 
 elementary_perf = executable('elementary_perf',
         elementary_perf_src,
-        dependencies: [elementary] + elementary_deps + elementary_pub_deps,
+        dependencies: [elementary, intl] + elementary_deps + 
elementary_pub_deps,
         install: true,
         c_args : package_c_args + [
           '-Delementary_test_BIN_DIR="'+dir_bin+'"',
diff --git a/src/bin/exactness/meson.build b/src/bin/exactness/meson.build
index 2f2b2bb280..4d048f18c9 100644
--- a/src/bin/exactness/meson.build
+++ b/src/bin/exactness/meson.build
@@ -32,7 +32,7 @@ edjs = custom_target('player_entry',
 
 exactness_play_bin = library('exactness_play',
   [ 'player.c', 'common.c', 'common.h', edjs ],
-  dependencies: [ elementary ],
+  dependencies: [ elementary, dl],
   c_args: '-DDATA_DIR="'+join_paths(dir_data, 'exactness')+'"',
   install: true,
   version : meson.project_version()
@@ -40,7 +40,7 @@ exactness_play_bin = library('exactness_play',
 
 exactness_record_bin = library('exactness_record',
   [ 'recorder.c', 'common.c', 'common.h' ],
-  dependencies: [ elementary ],
+  dependencies: [ elementary, dl],
   c_args: '-DDATA_DIR="'+join_paths(dir_data, 'exactness')+'"',
   install: true,
   version : meson.project_version()
diff --git a/src/examples/elementary/meson.build 
b/src/examples/elementary/meson.build
index 14a743c9c5..7876285349 100644
--- a/src/examples/elementary/meson.build
+++ b/src/examples/elementary/meson.build
@@ -122,7 +122,7 @@ examples = [
 ]
 
 foreach example : examples
-  executable(example, example + '.c', dependencies: [elementary, ecore, eio])
+  executable(example, example + '.c', dependencies: [elementary, ecore, eio, 
m])
 endforeach
 if get_option('bindings').contains('cxx')
   cxx_examples = [
diff --git a/src/lib/ecore/meson.build b/src/lib/ecore/meson.build
index 637761dcc4..0f72f4ba28 100644
--- a/src/lib/ecore/meson.build
+++ b/src/lib/ecore/meson.build
@@ -1,5 +1,6 @@
-ecore_deps = [intl]
+ecore_deps = []
 ecore_pub_deps = [eina, eo, efl]
+ecore_ext_deps = [intl, m, buildsystem]
 
 pub_legacy_eo_files = [
   'ecore_event_message.eo',
@@ -98,7 +99,7 @@ ecore_header_src = [
   'efl_loop_timer_eo.legacy.h',
 ]
 
-ecore_src = [
+ecore_src = files([
   'efl_app.c',
   'ecore.c',
   'ecore_alloc.c',
@@ -168,18 +169,18 @@ ecore_src = [
   'efl_core_env.c',
   'efl_core_proc_env.c',
   'efl_core_command_line.c',
-]
+])
 
 if sys_windows == true
   #nothing for now ... needs testing
-  ecore_src += ['ecore_exe_win32.c']
+  ecore_src += files(['ecore_exe_win32.c'])
 else
-  ecore_src += ['ecore_signal.c', 'ecore_exe_posix.c']
+  ecore_src += files(['ecore_signal.c', 'ecore_exe_posix.c'])
 endif
 
 if get_option('glib') == true and sys_windows == false
-  ecore_deps += dependency('glib-2.0')
-  ecore_deps += dependency('gthread-2.0')
+  ecore_ext_deps += dependency('glib-2.0')
+  ecore_ext_deps += dependency('gthread-2.0')
   config_h.set('GLIB_INTEGRATION_ALWAYS', '1')
   config_h.set('HAVE_GLIB', '1')
 endif
@@ -194,7 +195,7 @@ endif
 
 ecore_lib = library('ecore',
     ecore_src, pub_eo_file_target,
-    dependencies: ecore_pub_deps + [m, buildsystem, ecore_deps],
+    dependencies: ecore_pub_deps + [ecore_deps, ecore_ext_deps],
     include_directories : config_dir + 
[include_directories(join_paths('..','..'))],
     install: true,
     c_args : package_c_args,
diff --git a/src/lib/ecore_audio/meson.build b/src/lib/ecore_audio/meson.build
index 68a5c606c2..0376968a4b 100644
--- a/src/lib/ecore_audio/meson.build
+++ b/src/lib/ecore_audio/meson.build
@@ -1,5 +1,6 @@
 ecore_audio_deps = [ecore]
 ecore_audio_pub_deps = [eina, eo]
+ecore_audio_ext_deps = [m]
 
 pub_eo_files = [
   'ecore_audio.eo',
@@ -41,46 +42,46 @@ ecore_audio_header_src = [
   'ecore_audio_obj_out_wasapi.h'
 ]
 
-ecore_audio_src = [
+ecore_audio_src = files([
   'ecore_audio.c',
   'ecore_audio_obj.c',
   'ecore_audio_obj_in.c',
   'ecore_audio_obj_out.c',
   'ecore_audio_obj_in_tone.c',
   'ecore_audio_private.h'
-]
+])
 
-ecore_audio_src += [
+ecore_audio_src += files([
   'ecore_audio_obj_in_sndfile.c',
   'ecore_audio_obj_out_sndfile.c',
   'ecore_audio_sndfile_vio.c'
-]
+])
 
 ecore_audio_deps += dependency('sndfile')
 config_h.set('HAVE_SNDFILE', '1')
 
 if get_option('pulseaudio')
-  ecore_audio_deps += dependency('libpulse')
+  ecore_audio_ext_deps += dependency('libpulse')
 
-  ecore_audio_src += [
+  ecore_audio_src += files([
     'ecore_audio_pulse_ml.c',
     'ecore_audio_obj_out_pulse.c'
-  ]
+  ])
 
   config_h.set('HAVE_PULSE', '1')
 endif
 
 if sys_windows == true
-  ecore_audio_src += [
+  ecore_audio_src += files([
     'ecore_audio_obj_out_wasapi.c'
-  ]
-  ecore_audio_deps += [cc.find_library('ksuser', required: true), 
cc.find_library('winmm', required: true)]
+  ])
+  ecore_audio_ext_deps += [cc.find_library('ksuser', required: true), 
cc.find_library('winmm', required: true)]
 endif
 
 ecore_audio_lib = library('ecore_audio',
     ecore_audio_src, pub_eo_file_target,
     c_args : package_c_args,
-    dependencies: ecore_audio_pub_deps + [m] + ecore_audio_deps,
+    dependencies: ecore_audio_pub_deps + ecore_audio_deps + 
ecore_audio_ext_deps,
     include_directories : config_dir,
     install: true,
     version : meson.project_version()
diff --git a/src/lib/ecore_buffer/meson.build b/src/lib/ecore_buffer/meson.build
index c4aa63f62c..1d05cbe65b 100644
--- a/src/lib/ecore_buffer/meson.build
+++ b/src/lib/ecore_buffer/meson.build
@@ -1,12 +1,13 @@
-ecore_buffer_deps = [dependency('wayland-client'), 
dependency('wayland-server'), ecore]
+ecore_buffer_deps = [ecore]
 ecore_buffer_pub_deps = [eina]
+ecore_buffer_ext_deps = [dependency('wayland-client'), 
dependency('wayland-server')]
 
 ecore_buffer_header_src = [
   'Ecore_Buffer.h',
   'Ecore_Buffer_Queue.h'
 ]
 
-ecore_buffer_src = [
+ecore_buffer_src = files([
   'bq_mgr_protocol.c',
   'buffer_queue.c',
   'shared_buffer.c',
@@ -15,12 +16,12 @@ ecore_buffer_src = [
   'ecore_buffer_con.c',
   'ecore_buffer_provider.c',
   'ecore_buffer_consumer.c'
-]
+])
 
 ecore_buffer_lib = library('ecore_buffer',
     ecore_buffer_src, pub_eo_file_target,
     c_args : package_c_args,
-    dependencies: ecore_buffer_pub_deps + ecore_buffer_deps,
+    dependencies: ecore_buffer_pub_deps + ecore_buffer_deps + 
ecore_buffer_ext_deps,
     include_directories : config_dir,
     install: true,
     version : meson.project_version()
diff --git a/src/lib/ecore_cocoa/meson.build b/src/lib/ecore_cocoa/meson.build
index e04ca0fd5d..a44d6a4d58 100644
--- a/src/lib/ecore_cocoa/meson.build
+++ b/src/lib/ecore_cocoa/meson.build
@@ -1,12 +1,18 @@
+cocoa_external_dep = declare_dependency(
+  link_args : ['-lobjc', '-framework', 'CoreFoundation', '-framework', 
'cocoa', ],
+)
+
 ecore_cocoa_deps = [eina, ecore_input, ecore, emile, eet]
 ecore_cocoa_pub_deps = [eina]
+ecore_cocoa_ext_deps = [cocoa_external_dep]
+
 pub_eo_file_target = []
 
 ecore_cocoa_header_src = [
   'Ecore_Cocoa.h'
 ]
 
-ecore_cocoa_src = [
+ecore_cocoa_src = files([
   'ecore_cocoa.m',
   'ecore_cocoa_keys.h',
   'ecore_cocoa_window.h',
@@ -15,7 +21,7 @@ ecore_cocoa_src = [
   'ecore_cocoa_app.m',
   'ecore_cocoa_app.h',
   'ecore_cocoa_private.h'
-]
+])
 
 evas_include_directories = [
   include_directories(join_paths('..', 'evas')),
@@ -28,9 +34,9 @@ evas_include_directories = [
 ecore_cocoa_lib = library('ecore_cocoa',
     ecore_cocoa_src, pub_eo_file_target,
     c_args : package_c_args,
-    dependencies: ecore_cocoa_deps + ecore_cocoa_pub_deps,
+    dependencies: ecore_cocoa_deps + ecore_cocoa_pub_deps + 
ecore_cocoa_ext_deps,
+    link_args : '-Wl,-U,_evas_textblock_text_markup_to_utf8',
     include_directories : config_dir + evas_include_directories,
-    link_args : ['-lobjc', '-framework', 'CoreFoundation', '-framework', 
'cocoa', '-Wl,-U,_evas_textblock_text_markup_to_utf8'],
     install: true,
     version : meson.project_version()
 )
diff --git a/src/lib/ecore_con/meson.build b/src/lib/ecore_con/meson.build
index 44faa486af..bf288053ad 100644
--- a/src/lib/ecore_con/meson.build
+++ b/src/lib/ecore_con/meson.build
@@ -1,6 +1,6 @@
-ecore_con_deps = []
+ecore_con_deps = [buildsystem, eldbus, eet]
 ecore_con_pub_deps = [eina, eo, efl, ecore]
-
+ecore_con_ext_deps = [buildsystem_simple, dl, http_parser]
 if sys_windows == true
   ipv6 = true
 else
@@ -110,7 +110,7 @@ ecore_con_header_src = [
   'ecore_con_eet_server_obj_eo.legacy.h'
 ]
 
-ecore_con_src = [
+ecore_con_src = files([
   'ecore_con_alloc.c',
   'ecore_con.c',
   'ecore_con_proxy_helper.c',
@@ -145,46 +145,46 @@ ecore_con_src = [
   'efl_net_server_ssl.c',
   'ecore_con_local.c',
   'efl_net_ip_address.c'
-]
+])
 
 if sys_windows == true
-  ecore_con_src += [
+  ecore_con_src += files([
     'efl_net_socket_windows.c',
     'efl_net_dialer_windows.c',
     'efl_net_server_windows.c'
-  ]
+  ])
 else
-  ecore_con_src += [
+  ecore_con_src += files([
     'efl_net_socket_unix.c',
     'efl_net_dialer_unix.c',
     'efl_net_server_unix.c'
-  ]
+  ])
 endif
 
 if get_option('network-backend') == 'none'
-  ecore_con_src += [
+  ecore_con_src += files([
     'efl_net_control_access_point-none.c',
     'efl_net_control_technology-none.c',
     'efl_net_control-none.c',
     'efl_net_session-none.c'
-  ]
+  ])
 else
-  ecore_con_src += [
+  ecore_con_src += files([
     'efl_net-connman.h',
     'efl_net-connman.c',
     'efl_net_control_access_point-connman.c',
     'efl_net_control_technology-connman.c',
     'efl_net_control-connman.c',
     'efl_net_session-connman.c'
-  ]
+  ])
   ecore_con_deps += eldbus
 endif
 
-ecore_con_deps += crypto
+ecore_con_ext_deps += crypto
 
 ecore_con_lib = library('ecore_con',
     ecore_con_src, pub_eo_file_target,
-    dependencies: [ecore, ecore_con_deps, http_parser, eldbus, eet, 
buildsystem, dl],
+    dependencies: [ecore_con_deps, ecore_con_ext_deps, ecore_con_pub_deps],
     include_directories : config_dir,
     install: true,
     c_args : package_c_args,
diff --git a/src/lib/ecore_drm2/meson.build b/src/lib/ecore_drm2/meson.build
index 53ddc303b3..212dd366c7 100644
--- a/src/lib/ecore_drm2/meson.build
+++ b/src/lib/ecore_drm2/meson.build
@@ -1,23 +1,24 @@
-ecore_drm2_deps = [eeze, elput, dl, libdrm]
+ecore_drm2_deps = [eeze, elput]
 ecore_drm2_pub_deps = [ecore]
+ecore_drm2_ext_deps = [dl, libdrm]
 
 ecore_drm2_header_src = [
   'Ecore_Drm2.h'
 ]
 
-ecore_drm2_src = [
+ecore_drm2_src = files([
   'ecore_drm2_plane.c',
   'ecore_drm2_fb.c',
   'ecore_drm2_outputs.c',
   'ecore_drm2_device.c',
   'ecore_drm2.c',
   'ecore_drm2_private.h'
-]
+])
 
 ecore_drm2_lib = library('ecore_drm2',
     ecore_drm2_src, pub_eo_file_target,
     c_args : package_c_args,
-    dependencies: ecore_drm2_pub_deps + ecore_drm2_deps,
+    dependencies: ecore_drm2_pub_deps + ecore_drm2_deps + ecore_drm2_ext_deps,
     include_directories : config_dir,
     install: true,
     version : meson.project_version()
diff --git a/src/lib/ecore_evas/meson.build b/src/lib/ecore_evas/meson.build
index c673097dbc..554c77cf44 100644
--- a/src/lib/ecore_evas/meson.build
+++ b/src/lib/ecore_evas/meson.build
@@ -1,5 +1,6 @@
-ecore_evas_deps = [eina, ecore_input_evas, ecore_input, ecore, eet, evas, efl, 
eo, eina, emile]
+ecore_evas_deps = [eina, ecore_input_evas, ecore_input, ecore, eet, evas, efl, 
eo, eina, emile, buildsystem]
 ecore_evas_pub_deps = [evas, ecore]
+ecore_evas_ext_deps = [buildsystem_simple]
 pub_eo_file_target = []
 
 ecore_evas_header_src = [
@@ -8,7 +9,7 @@ ecore_evas_header_src = [
 
 ]
 
-ecore_evas_src = [
+ecore_evas_src = files([
   'ecore_evas.c',
   'ecore_evas_buffer.c',
   'ecore_evas_buffer.h',
@@ -25,20 +26,24 @@ ecore_evas_src = [
   'ecore_evas_x11.h',
   'ecore_evas_util.c',
   'ecore_evas_fallback_selection.c'
-]
+])
+
+ecore_evas_ext_deps += declare_dependency(
+  include_directories: include_directories(join_paths('..', '..', 'modules', 
'evas', 'engines', 'buffer')),
+)
 
 
 ecore_evas_lib = library('ecore_evas',
     ecore_evas_src, pub_eo_file_target,
     c_args : package_c_args,
-    dependencies: [ecore_evas_deps, buildsystem],
+    dependencies: ecore_evas_deps + ecore_evas_ext_deps,
     include_directories : config_dir,
     install: true,
     version : meson.project_version()
 )
 
 ecore_evas = declare_dependency(
-  include_directories: [include_directories('.')],
+  include_directories: [include_directories('.'), 
include_directories(join_paths('..', '..', 'modules', 'evas', 'engines', 
'buffer'))],
   link_with: ecore_evas_lib,
   sources : pub_eo_file_target + priv_eo_file_target,
   dependencies: [evas],
diff --git a/src/lib/ecore_fb/meson.build b/src/lib/ecore_fb/meson.build
index 28ad6bfe88..6d50e0f146 100644
--- a/src/lib/ecore_fb/meson.build
+++ b/src/lib/ecore_fb/meson.build
@@ -1,22 +1,23 @@
 ecore_fb_deps = [ecore, ecore_input]
 ecore_fb_pub_deps = [eina]
+ecore_fb_ext_deps = []
 
 if get_option('tslib')
-  ecore_fb_deps += dependency('tslib')
+  ecore_fb_ext_deps += dependency('tslib')
 endif
 
 ecore_fb_header_src = [
   'Ecore_Fb.h'
 ]
 
-ecore_fb_src = [
+ecore_fb_src = files([
   'ecore_fb.c',
   'ecore_fb_li.c',
   'ecore_fb_ts.c',
   'ecore_fb_vt.c',
   'ecore_fb_keytable.h',
   'ecore_fb_private.h'
-]
+])
 
 ecore_fb_lib = library('ecore_fb',
     ecore_fb_src, pub_eo_file_target,
@@ -31,7 +32,7 @@ ecore_fb = declare_dependency(
   include_directories: [include_directories('.')],
   link_with: ecore_fb_lib,
   sources : pub_eo_file_target + priv_eo_file_target,
-  dependencies: ecore_fb_pub_deps,
+  dependencies: ecore_fb_pub_deps + ecore_fb_ext_deps,
 )
 
 install_headers(ecore_fb_header_src,
diff --git a/src/lib/ecore_file/meson.build b/src/lib/ecore_file/meson.build
index 9bbee467d6..9e0212d6c0 100644
--- a/src/lib/ecore_file/meson.build
+++ b/src/lib/ecore_file/meson.build
@@ -1,20 +1,21 @@
 ecore_file_deps = [ecore_con, ecore]
 ecore_file_pub_deps = [eina]
+ecore_file_ext_deps = []
 
-ecore_file_src = [
+ecore_file_src = files([
   'ecore_file.c',
   'ecore_file_download.c',
   'ecore_file_monitor.c',
   'ecore_file_path.c',
   'ecore_file_private.h'
-]
+])
 
 if sys_windows == true
-  ecore_file_src += [ 'ecore_file_monitor_win32.c']
+  ecore_file_src += files([ 'ecore_file_monitor_win32.c'])
 elif sys_linux == true
-  ecore_file_src += [ 'ecore_file_monitor_inotify.c']
+  ecore_file_src += files([ 'ecore_file_monitor_inotify.c'])
 else
-  ecore_file_src += [ 'ecore_file_monitor_poll.c']
+  ecore_file_src += files([ 'ecore_file_monitor_poll.c'])
 endif
 
 ecore_file_header_src = ['Ecore_File.h']
@@ -23,7 +24,7 @@ ecore_file_header_src = ['Ecore_File.h']
 ecore_file_lib = library('ecore_file',
     ecore_file_src,
     c_args : package_c_args,
-    dependencies: ecore_file_deps + ecore_file_pub_deps + ecore_file_deps,
+    dependencies: ecore_file_deps + ecore_file_pub_deps + ecore_file_ext_deps,
     include_directories : config_dir + 
[include_directories(join_paths('..','..'))],
     install: true,
     version : meson.project_version()
diff --git a/src/lib/ecore_imf/meson.build b/src/lib/ecore_imf/meson.build
index 978594d20a..7b305751dd 100644
--- a/src/lib/ecore_imf/meson.build
+++ b/src/lib/ecore_imf/meson.build
@@ -1,21 +1,22 @@
-ecore_imf_deps = [ecore]
+ecore_imf_deps = [ecore, buildsystem]
 ecore_imf_pub_deps = [eina]
+ecore_imf_ext_deps = [buildsystem_simple]
 
 ecore_imf_header_src = [
    'Ecore_IMF.h'
 ]
 
-ecore_imf_src = [
+ecore_imf_src = files([
   'ecore_imf.c',
   'ecore_imf_context.c',
   'ecore_imf_module.c',
   'ecore_imf_private.h',
-]
+])
 
 
 ecore_imf_lib = library('ecore_imf',
     ecore_imf_src, pub_eo_file_target,
-    dependencies: [buildsystem, ecore_imf_deps, ecore_imf_pub_deps],
+    dependencies: [ecore_imf_deps, ecore_imf_pub_deps, ecore_imf_ext_deps],
     include_directories : config_dir,
     c_args : package_c_args,
     install: true,
diff --git a/src/lib/ecore_imf_evas/meson.build 
b/src/lib/ecore_imf_evas/meson.build
index 28d53ea78d..b5d2d64125 100644
--- a/src/lib/ecore_imf_evas/meson.build
+++ b/src/lib/ecore_imf_evas/meson.build
@@ -2,16 +2,17 @@ ecore_imf_evas_header_src = [
   'Ecore_IMF_Evas.h'
 ]
 
-ecore_imf_evas_src = [
+ecore_imf_evas_src = files([
   'ecore_imf_evas.c'
-]
+])
 
 ecore_imf_evas_deps = [ecore_imf, evas]
 ecore_imf_evas_pub_deps = [eina, eo, efl]
+ecore_imf_evas_ext_deps = [m]
 
 ecore_imf_evas_lib = library('ecore_imf_evas',
     ecore_imf_evas_src,
-    dependencies: ecore_imf_evas_pub_deps + [m] + ecore_imf_evas_deps,
+    dependencies: ecore_imf_evas_pub_deps + ecore_imf_evas_deps + 
ecore_imf_evas_ext_deps,
     include_directories : config_dir + [include_directories('.')],
     install: true,
     c_args : package_c_args,
diff --git a/src/lib/ecore_input/meson.build b/src/lib/ecore_input/meson.build
index d985eb58e8..d1250c3591 100644
--- a/src/lib/ecore_input/meson.build
+++ b/src/lib/ecore_input/meson.build
@@ -1,27 +1,27 @@
 ecore_input_deps = [ecore]
 ecore_input_pub_deps = [eina, eo]
+ecore_input_ext_deps = []
 
 ecore_input_header_src = [
   'Ecore_Input.h'
 ]
 
-ecore_input_src = [
+ecore_input_src = files([
   'ecore_input.c',
   'ecore_input_compose.c',
   'ecore_input_joystick.c',
   'ecore_input_compose.h',
   'ecore_input_private.h'
-]
+])
 
 if get_option('eeze')
   ecore_input_deps += eeze
 endif
 
-
 ecore_input_lib = library('ecore_input',
     ecore_input_src, pub_eo_file_target,
     c_args : package_c_args,
-    dependencies: ecore_input_pub_deps + ecore_input_deps,
+    dependencies: ecore_input_pub_deps + ecore_input_deps + 
ecore_input_ext_deps,
     include_directories : config_dir,
     install: true,
     version : meson.project_version()
diff --git a/src/lib/ecore_input_evas/meson.build 
b/src/lib/ecore_input_evas/meson.build
index ee2516bfbf..612a931c16 100644
--- a/src/lib/ecore_input_evas/meson.build
+++ b/src/lib/ecore_input_evas/meson.build
@@ -1,21 +1,22 @@
 ecore_input_evas_deps = [ecore, ecore_input, evas]
 ecore_input_evas_pub_deps = [eina, evas]
+ecore_input_evas_ext_deps = []
 pub_eo_file_target = []
 
 ecore_input_evas_header_src = [
    'Ecore_Input_Evas.h'
 ]
 
-ecore_input_evas_src = [
+ecore_input_evas_src = files([
   'ecore_input_evas.c',
   'ecore_input_evas_private.h',
-]
+])
 
 
 ecore_input_evas_lib = library('ecore_input_evas',
     ecore_input_evas_src, pub_eo_file_target,
     c_args : package_c_args,
-    dependencies: ecore_input_evas_pub_deps + ecore_input_evas_deps,
+    dependencies: [ecore_input_evas_pub_deps, ecore_input_evas_deps, 
ecore_input_evas_ext_deps],
     include_directories : config_dir,
     install: true,
     version : meson.project_version()
diff --git a/src/lib/ecore_ipc/meson.build b/src/lib/ecore_ipc/meson.build
index e34caa3619..6439148d16 100644
--- a/src/lib/ecore_ipc/meson.build
+++ b/src/lib/ecore_ipc/meson.build
@@ -1,19 +1,19 @@
 ecore_ipc_deps = [ecore, ecore_con]
 ecore_ipc_pub_deps = [eina]
-
+ecore_ipc_ext_deps = []
 ecore_ipc_header_src = [
   'Ecore_Ipc.h'
 ]
 
-ecore_ipc_src = [
+ecore_ipc_src = files([
   'ecore_ipc.c',
   'ecore_ipc_private.h',
-]
+])
 
 ecore_ipc_lib = library('ecore_ipc',
     ecore_ipc_src, pub_eo_file_target,
     c_args : package_c_args,
-    dependencies: ecore_ipc_deps + ecore_ipc_pub_deps,
+    dependencies: [ecore_ipc_deps, ecore_ipc_pub_deps, ecore_ipc_ext_deps],
     include_directories : config_dir,
     install: true,
     version : meson.project_version()
diff --git a/src/lib/ecore_sdl/meson.build b/src/lib/ecore_sdl/meson.build
index b4685818c1..f3cd70428d 100644
--- a/src/lib/ecore_sdl/meson.build
+++ b/src/lib/ecore_sdl/meson.build
@@ -1,20 +1,21 @@
 ecore_sdl_deps = [eina, ecore, ecore_input]
 ecore_sdl_pub_deps = []
+ecore_sdl_ext_deps = [m]
 
-ecore_sdl_src = [
+ecore_sdl_src = files([
   'ecore_sdl.c'
-]
+])
 
 ecore_sdl_header_src = [
   'Ecore_Sdl.h',
   'Ecore_Sdl_Keys.h'
 ]
 
-ecore_sdl_deps += dependency('sdl2')
+ecore_sdl_ext_deps += dependency('sdl2')
 
 ecore_sdl_lib = library('ecore_sdl',
     ecore_sdl_src,
-    dependencies: [m] + ecore_sdl_deps + ecore_sdl_pub_deps,
+    dependencies: [ecore_sdl_deps, ecore_sdl_pub_deps, ecore_sdl_ext_deps],
     include_directories : config_dir + 
[include_directories(join_paths('..','..'))],
     install: true,
     c_args : package_c_args,
diff --git a/src/lib/ecore_win32/meson.build b/src/lib/ecore_win32/meson.build
index 1bb4589f28..b105dbae91 100644
--- a/src/lib/ecore_win32/meson.build
+++ b/src/lib/ecore_win32/meson.build
@@ -1,8 +1,14 @@
+ecore_win32_deps = []
+ecore_win32_pub_deps = []
+ecore_win32_ext_deps = []
+ecore_win32_src = []
+
 if sys_windows == true
-  ecore_win32_deps = [evil, eina, ecore, ecore_input]
-  ecore_win32_pub_deps = []
+  ecore_win32_deps += [evil, eina, ecore, ecore_input]
+  ecore_win32_pub_deps += []
+  ecore_win32_ext_deps += []
 
-  ecore_win32_src = [
+  ecore_win32_src += files([
     'ecore_win32.c',
     'ecore_win32_clipboard.c',
     'ecore_win32_cursor.c',
@@ -14,7 +20,7 @@ if sys_windows == true
     'ecore_win32_event.c',
     'ecore_win32_monitor.c',
     'ecore_win32_window.c',
-  ]
+  ])
 
   ecore_win32_header_src = [
     'Ecore_Win32.h'
@@ -22,7 +28,7 @@ if sys_windows == true
 
   ecore_win32_lib = library('ecore_win32',
       ecore_win32_src,
-      dependencies: ecore_win32_deps + ecore_win32_pub_deps,
+      dependencies: [ecore_win32_deps, ecore_win32_pub_deps, 
ecore_win32_ext_deps],
       include_directories : config_dir,
       install: true,
       c_args : package_c_args,
diff --git a/src/lib/ecore_wl2/meson.build b/src/lib/ecore_wl2/meson.build
index 4260aa78a5..eb88e47703 100644
--- a/src/lib/ecore_wl2/meson.build
+++ b/src/lib/ecore_wl2/meson.build
@@ -1,14 +1,13 @@
-ecore_wl2_deps = [
-  dependency('wayland-client'), dependency('wayland-server'), 
dependency('xkbcommon'),
-  wayland_protocol, dl, m, ecore, ecore_input, libdrm, buildsystem
-]
+ecore_wl2_deps = [ecore, ecore_input, buildsystem]
 ecore_wl2_pub_deps = [eina, ecore]
+ecore_wl2_ext_deps = [dependency('wayland-client'), 
dependency('wayland-server'), dependency('xkbcommon'),
+  wayland_protocol, libdrm, buildsystem_simple, dl, m]
 
 ecore_wl2_header_src = [
   'Ecore_Wl2.h'
 ]
 
-ecore_wl2_src = [
+ecore_wl2_src = files([
   'ecore_wl2_internal.h',
   'ecore_wl2_subsurf.c',
   'ecore_wl2_dnd.c',
@@ -20,12 +19,12 @@ ecore_wl2_src = [
   'ecore_wl2_private.h',
   'ecore_wl2_buffer.c',
   'ecore_wl2_surface.c'
-]
+])
 
 ecore_wl2_lib = library('ecore_wl2',
     ecore_wl2_src, pub_eo_file_target,
     c_args : package_c_args,
-    dependencies: ecore_wl2_deps + ecore_wl2_pub_deps,
+    dependencies: ecore_wl2_deps + ecore_wl2_pub_deps + ecore_wl2_ext_deps,
     include_directories : config_dir,
     install: true,
     version : meson.project_version()
@@ -38,6 +37,11 @@ ecore_wl2 = declare_dependency(
   dependencies: ecore_wl2_pub_deps,
 )
 
+ecore_wl2_internal_headers = declare_dependency(
+  include_directories: include_directories('.'),
+  dependencies: [wayland_protocol_simple, libdrm, 
dependency('wayland-client'), dependency('wayland-server'), 
dependency('xkbcommon'),],
+)
+
 install_headers(ecore_wl2_header_src,
   install_dir : dir_package_include,
 )
diff --git a/src/lib/ecore_x/meson.build b/src/lib/ecore_x/meson.build
index 51bdb2a7e8..608d3cda22 100644
--- a/src/lib/ecore_x/meson.build
+++ b/src/lib/ecore_x/meson.build
@@ -1,5 +1,6 @@
-ecore_x_deps = [ecore, dl, m, ecore_input]
+ecore_x_deps = [ecore, ecore_input]
 ecore_x_pub_deps = [eina, efl]
+ecore_x_ext_deps = [dl, m]
 
 ecore_x_header_src = [
   'Ecore_X.h',
@@ -7,7 +8,7 @@ ecore_x_header_src = [
   'Ecore_X_Cursor.h'
 ]
 
-ecore_x_src = [
+ecore_x_src = files([
   'ecore_x_atoms_decl.h',
   'ecore_x.c',
   'ecore_x_dnd.c',
@@ -43,7 +44,7 @@ ecore_x_src = [
   'ecore_x_vsync.c',
   'ecore_x_gesture.c',
   'ecore_x_private.h'
-]
+])
 
 ecore_x_checks = [
   ['Xcomposite', 'Xcomposite.h', 'Xcomposite', 'XCompositeQueryExtension'],
@@ -104,12 +105,12 @@ int main () {
   else
     error('extension '+ecore_x_check[0]+' not found for X11')
   endif
-  ecore_x_deps += x_lib
+  ecore_x_ext_deps += x_lib
 endforeach
 
-ecore_x_deps += x11
-ecore_x_deps += xcb
-ecore_x_deps += x11_xcb
+ecore_x_ext_deps += x11
+ecore_x_ext_deps += xcb
+ecore_x_ext_deps += x11_xcb
 
 
 # there are a few special cases
@@ -125,12 +126,12 @@ cc.has_header_symbol('X11/Xcursor/Xcursor.h', 
'XcursorSupportsARGB',
   dependencies : [x11, xcb]
   )
 config_h.set('ECORE_XCURSOR', '1')
-ecore_x_deps += lib
+ecore_x_ext_deps += lib
 
 ecore_x_lib = library('ecore_x',
     ecore_x_src, pub_eo_file_target,
     c_args : package_c_args,
-    dependencies: ecore_x_pub_deps + ecore_x_deps,
+    dependencies: ecore_x_pub_deps + ecore_x_deps + ecore_x_ext_deps,
     include_directories : config_dir,
     install: true,
     version : meson.project_version()
diff --git a/src/lib/ector/meson.build b/src/lib/ector/meson.build
index 628c83f384..0d044b5404 100644
--- a/src/lib/ector/meson.build
+++ b/src/lib/ector/meson.build
@@ -1,5 +1,6 @@
-ector_deps = [eina, emile, eet, eo, efl]
+ector_deps = [eina, emile, eet, eo, efl, draw]
 ector_pub_deps = [eina, efl]
+ector_ext_deps = [triangulator, freetype, draw_without_deps, m]
 
 pub_eo_file_target = []
 ector_opt_lib = [ ]
@@ -9,7 +10,7 @@ ector_header_src = [
  # nothing for now ector stays only intree
 ]
 
-ector_src = [
+ector_src = files([
   'ector_main.c',
   'ector_gl_internal.h',
   'ector_buffer.c',
@@ -19,7 +20,7 @@ ector_src = [
   'ector_renderer_gradient.c',
   'ector_renderer_gradient_radial.c',
   'ector_renderer_gradient_linear.c'
-]
+])
 
 pub_eo_files = [
   'ector_surface.eo',
@@ -80,14 +81,19 @@ endforeach
 
 subdir('software')
 
+ector_opt_lib_dep = declare_dependency(
+  link_with: ector_opt_lib
+)
+
+ector_ext_deps += ector_opt_lib_dep
+
 ector_lib = library('ector',
     ector_src, pub_eo_file_target,
     c_args : package_c_args,
-    dependencies: ector_pub_deps + [triangulator, freetype, draw, m] + 
ector_deps,
+    dependencies: ector_pub_deps + ector_ext_deps + ector_deps,
     include_directories : config_dir,
     install: true,
     version : meson.project_version(),
-    link_with: ector_opt_lib
 )
 
 ector = declare_dependency(
diff --git a/src/lib/edje/meson.build b/src/lib/edje/meson.build
index 84b8ac7318..8332f9525a 100644
--- a/src/lib/edje/meson.build
+++ b/src/lib/edje/meson.build
@@ -3,10 +3,12 @@ edje_deps = [
   eet, evas, ecore_evas,
   ecore_file, ecore_input,
   ecore_imf, ecore_imf_evas,
-  embryo, efreet, eio, intl
+  embryo, efreet, eio, intl,
+  buildsystem
 ]
 
-edje_pub_deps = [m, evas, eo, efl, lua]
+edje_pub_deps = [evas, eo, efl]
+edje_ext_deps = [m, lua, buildsystem_simple]
 
 if (get_option('physics'))
   edje_deps += ephysics
@@ -102,7 +104,7 @@ edje_header_src = [
   'efl_canvas_layout_eo.legacy.h',
 ]
 
-edje_src = [
+edje_src = files([
   'edje_private.h',
   'edje_convert.h',
   'edje_box_layout.c',
@@ -141,12 +143,11 @@ edje_src = [
   'edje_part_box.c',
   'edje_part_text.c',
   'edje_part_invalid.c'
-
-]
+])
 
 edje_lib = library('edje',
     edje_src, pub_eo_file_target, priv_eo_file_target,
-    dependencies: edje_pub_deps + edje_deps,
+    dependencies: edje_pub_deps + edje_deps + edje_ext_deps,
     include_directories : config_dir + [include_directories('.')],
     install: true,
     c_args : [package_c_args],
diff --git a/src/lib/eet/meson.build b/src/lib/eet/meson.build
index 2dec5335c0..78b5146296 100644
--- a/src/lib/eet/meson.build
+++ b/src/lib/eet/meson.build
@@ -1,11 +1,12 @@
-eet_deps = [crypto, jpeg, rg_etc, m]
+eet_deps = [rg_etc]
 eet_pub_deps = [eina, emile, efl]
+eet_ext_deps = [crypto, jpeg, m, rg_etc_simple]
 
 eet_header_src = [
   'Eet.h'
 ]
 
-eet_src = [
+eet_src = files([
   'Eet_private.h',
   'eet_alloc.c',
   'eet_cipher.c',
@@ -16,12 +17,12 @@ eet_src = [
   'eet_lib.c',
   'eet_node.c',
   'eet_utils.c',
-]
+])
 
 eet_lib = library('eet',
     eet_src, pub_eo_file_target,
     c_args : package_c_args,
-    dependencies: eet_deps + eet_pub_deps,
+    dependencies: eet_deps + eet_pub_deps + eet_ext_deps,
     include_directories : config_dir,
     install: true,
     version : meson.project_version()
diff --git a/src/lib/eeze/meson.build b/src/lib/eeze/meson.build
index 313a73d888..1435fe7a2f 100644
--- a/src/lib/eeze/meson.build
+++ b/src/lib/eeze/meson.build
@@ -1,5 +1,6 @@
 eeze_deps = [buildsystem]
-eeze_pub_deps = [eina, efl]
+eeze_pub_deps = [eina, efl, ecore, ecore_file]
+eeze_ext_deps = []
 pub_eo_file_target = []
 
 eeze_header_src = [
@@ -10,7 +11,7 @@ eeze_header_src = [
   join_paths('..','..','bin','eeze','eeze_scanner','eeze_scanner.h')
 ]
 
-eeze_src = [
+eeze_src = files([
   'eeze_main.c',
   'eeze_net.c',
   'eeze_net_private.h',
@@ -26,7 +27,7 @@ eeze_src = [
   'eeze_disk_udev.c',
   'eeze_disk_mount.c',
   'eeze_disk_private.h'
-]
+])
 
 if get_option('v4l2')
   config_h.set('HAVE_V4L2', '1')
@@ -37,17 +38,17 @@ endif
 
 if (get_option('libmount'))
   libmount = dependency('mount')
-  eeze_deps += [libmount]
+  eeze_ext_deps += [libmount]
  if libmount.version() == '2.19'
-    eeze_src +=   'eeze_disk_libmount.c'
+    eeze_src +=   files('eeze_disk_libmount.c')
   elif libmount.version() < '2.19'
-    eeze_src +=   'eeze_disk_libmount_old.c'
+    eeze_src +=   files('eeze_disk_libmount_old.c')
   elif libmount.version() > '2.19'
-    eeze_src +=   'eeze_disk_libmount_new.c'
+    eeze_src +=   files('eeze_disk_libmount_new.c')
   endif
   config_h.set('HAVE_EEZE_MOUNT', '1')
 else
-  eeze_src +=   'eeze_disk_dummy.c'
+  eeze_src +=   files('eeze_disk_dummy.c')
 endif
 
 options_to_check = ['eject', 'mount', 'unmount']
@@ -55,7 +56,7 @@ options_to_check = ['eject', 'mount', 'unmount']
 udev = dependency('libudev',
   version: ['>=148']
 )
-eeze_deps += udev
+eeze_ext_deps += udev
 
 if udev.version() < '199'
    config_h.set('OLD_LIBUDEV', '1')
@@ -87,7 +88,7 @@ config_h.set_quoted('EEZE_UNMOUNT_BIN', unmount_bin)
 
 eeze_lib = library('eeze',
     eeze_src, pub_eo_file_target,
-    dependencies: eeze_deps + eeze_pub_deps + [ecore, ecore_file, buildsystem, 
eeze_deps],
+    dependencies: eeze_deps + eeze_pub_deps + eeze_deps + eeze_ext_deps,
     include_directories : config_dir,
     install: true,
     c_args : package_c_args,
diff --git a/src/lib/efl/meson.build b/src/lib/efl/meson.build
index 326e34eafd..5dbc825894 100644
--- a/src/lib/efl/meson.build
+++ b/src/lib/efl/meson.build
@@ -1,5 +1,6 @@
-efl_deps = []
+efl_deps = [m]
 efl_pub_deps = [eo]
+efl_ext_deps = []
 
 efl_header_src = [
   'Efl.h',
@@ -14,7 +15,7 @@ package_header_subdirs += 'interfaces'
 efl_lib = library('efl',
     efl_src, pub_eo_file_target,
     c_args : package_c_args,
-    dependencies: [eina, eo, m],
+    dependencies: [efl_deps, efl_pub_deps, efl_ext_deps],
     install: true,
     version : meson.project_version()
 )
diff --git a/src/lib/efl_canvas_wl/meson.build 
b/src/lib/efl_canvas_wl/meson.build
index d021975844..63527c7d5c 100644
--- a/src/lib/efl_canvas_wl/meson.build
+++ b/src/lib/efl_canvas_wl/meson.build
@@ -1,5 +1,5 @@
 efl_canvas_wl_deps = [ecore_wl2, ecore_input, ecore, ecore_evas, evas, emile, 
eina]
-efl_canvas_wl_pub_deps = [eo, efl, evas, dependency('wayland-server', version 
: '>= 1.11.0'), dependency('xkbcommon', version : '>= 0.6.0')]
+efl_canvas_wl_pub_deps = [eo, efl, evas, 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]
diff --git a/src/lib/efreet/meson.build b/src/lib/efreet/meson.build
index 271eca0b1a..41d3113566 100644
--- a/src/lib/efreet/meson.build
+++ b/src/lib/efreet/meson.build
@@ -11,7 +11,7 @@ efreet_header_src = [
   'Efreet_Trash.h'
 ]
 
-efreet_src = [
+efreet_src = files([
   'efreet.c',
   'efreet_base.c',
   'efreet_icon.c',
@@ -28,17 +28,20 @@ efreet_src = [
   'efreet_cache_private.h',
   'efreet_mime.c',
   'efreet_trash.c'
-]
+])
 
-efreet_deps = [eet, ecore, ecore_con, ecore_file, eo, efl, eina, emile, 
ecore_ipc, buildsystem,intl]
+efreet_deps = [eet, ecore, ecore_con, ecore_file, eo, efl, eina, emile, 
ecore_ipc, buildsystem]
 efreet_pub_deps = [eina, eo, efl]
+efreet_ext_deps = [buildsystem_simple, intl, m]
+
+package_c_args += ['-DDATA_DIR="'+dir_data+'"']
 
 efreet_lib = library('efreet',
     efreet_src,
-    dependencies: efreet_pub_deps + [m] + efreet_deps,
+    dependencies: efreet_pub_deps + efreet_ext_deps + efreet_deps,
     include_directories : config_dir + [include_directories('.')],
     install: true,
-    c_args : [package_c_args, '-DDATA_DIR="'+dir_data+'"'],
+    c_args : package_c_args,
     version : meson.project_version()
 )
 
diff --git a/src/lib/eina/meson.build b/src/lib/eina/meson.build
index 53e1b6120b..8df3660f31 100644
--- a/src/lib/eina/meson.build
+++ b/src/lib/eina/meson.build
@@ -1,5 +1,6 @@
 eina_deps = [dl]
 eina_pub_deps = [thread_dep]
+eina_ext_deps = [m, rt, dl, thread_dep]
 
 if sys_windows == true
    eina_pub_deps += [evil]
@@ -114,7 +115,7 @@ public_headers = [
   'Eina.h'
 ]
 
-sources = [
+eina_src = files([
 'eina_abi.c',
 'eina_accessor.c',
 'eina_array.c',
@@ -191,12 +192,12 @@ sources = [
 'eina_vpath.c',
 'eina_vpath_xdg.c',
 'eina_abstract_content.c',
-]
+]) + eina_mp_sources
 
 if sys_windows == true
-  sources += 'eina_file_win32.c'
+  eina_src += files('eina_file_win32.c')
 else
-  sources += 'eina_file.c'
+  eina_src += files('eina_file.c')
 endif
 
 eina_config = configuration_data()
@@ -242,7 +243,7 @@ if use_valgrind
    else
      config_h.set('HAVE_VALGRIND', 1)
    endif
-   eina_deps += valgrind
+   eina_ext_deps += valgrind
 else
    config_h.set('NVALGRIND', 1)
    valgrind = []
@@ -349,7 +350,7 @@ public_headers += eina_config_file
 unwind = dependency('libunwind-generic', required: false)
 if unwind.found()
    config_h.set('HAVE_UNWIND', 1)
-   eina_deps += unwind
+   eina_ext_deps += unwind
    config_h.set('EINA_LOG_BACKTRACE_ENABLE', 1)
 endif
 
@@ -358,13 +359,15 @@ iconv = dependency('iconv', required: false)
 if iconv.found() == false
   iconv = cc.find_library('iconv', required: false)
 endif
+eina_ext_deps += [iconv]
 
 execinfo = cc.find_library('execinfo', required: false)
+eina_ext_deps += [execinfo]
 
-eina_lib = library('eina', sources,
+eina_lib = library('eina', eina_src,
   c_args : package_c_args,
   include_directories : config_dir,
-  dependencies: [m, rt, dl, execinfo, iconv, eina_deps, thread_dep, 
eina_mem_pools, evil],
+  dependencies: eina_ext_deps + [eina_deps, evil],
   install: true,
   version : meson.project_version()
 )
diff --git a/src/lib/eio/meson.build b/src/lib/eio/meson.build
index 64f33a2430..a5536cd90b 100644
--- a/src/lib/eio/meson.build
+++ b/src/lib/eio/meson.build
@@ -32,7 +32,7 @@ eio_header_src = [
   'eio_inline_helper.x'
 ]
 
-eio_src = [
+eio_src = files([
   'eio_dir.c',
   'eio_eet.c',
   'eio_file.c',
@@ -48,27 +48,28 @@ eio_src = [
   'efl_io_model_private.h',
   'eio_private.h',
   'eio_sentry_private.h'
-]
+])
 
 linker_args = []
 
 if sys_windows == true
-  eio_src += ['eio_monitor_win32.c']
+  eio_src += files(['eio_monitor_win32.c'])
 elif sys_osx == true
-  eio_src += ['eio_monitor_cocoa.c']
+  eio_src += files(['eio_monitor_cocoa.c'])
   linker_args = [['-framework', 'CoreServices']]
 elif sys_linux == true
-  eio_src += ['eio_monitor_inotify.c']
+  eio_src += files(['eio_monitor_inotify.c'])
 elif sys_bsd == true
-  eio_src += ['eio_monitor_kevent.c']
+  eio_src += files(['eio_monitor_kevent.c'])
 endif
 
 eio_deps = [ecore, ecore_file, eet, eo, eina, efl, emile, efreet]
 eio_pub_deps = [eina, eet]
+eio_ext_deps = [m]
 
 eio_lib = library('eio',
     eio_src, pub_eo_file_target,
-    dependencies: [eina, eo, efl, m, eio_deps],
+    dependencies: eio_deps + eio_pub_deps + eio_ext_deps,
     include_directories : config_dir + [include_directories('.')],
     install: true,
     c_args : package_c_args,
diff --git a/src/lib/eldbus/meson.build b/src/lib/eldbus/meson.build
index a58be32b1b..ea3d6930c9 100644
--- a/src/lib/eldbus/meson.build
+++ b/src/lib/eldbus/meson.build
@@ -1,5 +1,6 @@
 eldbus_deps = [ecore]
 eldbus_pub_deps = [eina, eo, efl]
+eldbus_ext_deps = []
 
 pub_eo_files = [
   'eldbus_model_connection.eo',
@@ -61,7 +62,7 @@ eldbus_header_src = [
   'eldbus_message_eina_value.h'
 ]
 
-eldbus_src = [
+eldbus_src = files([
   'eldbus_private.h',
   'eldbus_private_types.h',
   'eldbus_model_private.h',
@@ -90,14 +91,14 @@ eldbus_src = [
   'eldbus_model_arguments.c',
   'eldbus_model_signal.c',
   'eldbus_introspection.c'
-]
+])
 
-eldbus_deps += dependency('dbus-1')
+eldbus_ext_deps += dependency('dbus-1')
 
 eldbus_lib = library('eldbus',
     eldbus_src, pub_eo_file_target,
     c_args : package_c_args,
-    dependencies: eldbus_pub_deps + eldbus_deps,
+    dependencies: eldbus_pub_deps + eldbus_deps + eldbus_ext_deps,
     include_directories : config_dir,
     install: true,
     version : meson.project_version()
diff --git a/src/lib/elementary/meson.build b/src/lib/elementary/meson.build
index fb4431d3f7..f6674fbdc3 100644
--- a/src/lib/elementary/meson.build
+++ b/src/lib/elementary/meson.build
@@ -712,7 +712,7 @@ elementary_header_src = [
   'Elementary_Cursor.h'
 ] + elementary_pub_headers + elementary_headers_unstable
 
-elementary_src = [
+elementary_src = files([
   'elm_priv.h',
   'elementary_config.h',
   'els_box.h',
@@ -947,12 +947,12 @@ elementary_src = [
   'efl_ui_stack.c',
   'efl_ui_separator.c',
   'efl_ui_spotlight_animation_manager.c',
-]
+])
 
-elementary_deps = [emile, eo, efl, edje, ethumb, ethumb_client, emotion, 
ecore_imf, ecore_con, eldbus, efreet, eio, atspi, dl, intl]
+elementary_deps = [emile, eo, efl, edje, ethumb, ethumb_client, emotion, 
ecore_imf, ecore_con, eldbus, efreet, eio]
 elementary_pub_deps = [eina, eet, evas, ecore, ecore_evas, ecore_file, 
ecore_input, ecore_imf, ecore_con,
                        edje, eldbus, efreet, ethumb_client, efl]
-
+elementary_ext_deps = [atspi, dl, intl]
 elm_options = configuration_data()
 
 config_h.set_quoted('ELM_TOP_BUILD_DIR', meson.build_root())
@@ -986,6 +986,10 @@ endif
 if get_option('wl')
   config_h.set('HAVE_ELEMENTARY_WL2', '1')
   elementary_deps += ecore_wl2
+  elementary_ext_deps += declare_dependency(
+    include_directories: include_directories([join_paths('..', '..', 
'modules', 'ecore_evas', 'engines', 'wayland'), join_paths('..', '..', 'lib', 
'ecore_wl2')]),
+    dependencies : ecore_wl2_internal_headers
+  )
 endif
 
 if get_option('drm')
@@ -1013,8 +1017,8 @@ elm_package_c_args =  package_c_args
 
 elementary_lib = library('elementary',
     elementary_src, pub_eo_file_target, priv_eo_file_target, c, embed_config,
-    dependencies: elementary_pub_deps + elementary_deps,
-    include_directories : config_dir + [include_directories('.')] + 
[include_directories(join_paths('..', '..', '..'))] + 
[ecore_evas_wayland_engine_include_dir],
+    dependencies: elementary_pub_deps + elementary_deps + elementary_ext_deps,
+    include_directories : config_dir + [include_directories('.')] + 
[include_directories(join_paths('..', '..', '..'))],
     install: true,
     c_args : elm_package_c_args,
     version : meson.project_version()
@@ -1027,7 +1031,6 @@ elementary = declare_dependency(
   dependencies: elementary_pub_deps,
 )
 
-
 if get_option('install-eo-files')
   install_data(pub_eo_files + pub_eo_types_files,
     install_dir: join_paths(eolian_include_dir, package_version_name)
diff --git a/src/lib/elput/meson.build b/src/lib/elput/meson.build
index bbfe85d74f..639840e424 100644
--- a/src/lib/elput/meson.build
+++ b/src/lib/elput/meson.build
@@ -1,11 +1,12 @@
 elput_deps = [ecore, ecore_input, eeze, eo, m]
 elput_pub_deps = [eina, eldbus]
+elput_ext_deps = []
 
 elput_header_src = [
   'Elput.h'
 ]
 
-elput_src = [
+elput_src = files([
   'elput_touch.c',
   'elput_evdev.c',
   'elput_input.c',
@@ -13,16 +14,16 @@ elput_src = [
   'elput_manager.c',
   'elput.c',
   'elput_private.h'
-]
+])
 
-elput_deps += dependency('libinput', version : ['>=1.7.0'])
-elput_deps += dependency('xkbcommon', version : ['>=0.3.0'])
-elput_deps += dependency('libudev')
+elput_ext_deps += dependency('libinput', version : ['>=1.7.0'])
+elput_ext_deps += dependency('xkbcommon', version : ['>=0.3.0'])
+elput_ext_deps += dependency('libudev')
 
 elput_lib = library('elput',
     elput_src, pub_eo_file_target,
     c_args : package_c_args,
-    dependencies: elput_pub_deps + elput_deps,
+    dependencies: elput_pub_deps + elput_deps + elput_ext_deps,
     include_directories : config_dir,
     install: true,
     version : meson.project_version()
diff --git a/src/lib/embryo/meson.build b/src/lib/embryo/meson.build
index 6ab8af8fe7..e0bb2385f9 100644
--- a/src/lib/embryo/meson.build
+++ b/src/lib/embryo/meson.build
@@ -1,12 +1,12 @@
-embryo_deps = [ecore]
+embryo_deps = [eina, ecore, buildsystem]
 embryo_pub_deps = [eina, eo, efl]
-
+embryo_ext_deps = [buildsystem_simple, m]
 
 embryo_header_src = [
   'Embryo.h'
 ]
 
-embryo_src = [
+embryo_src = files([
   'embryo_amx.c',
   'embryo_args.c',
   'embryo_float.c',
@@ -15,13 +15,11 @@ embryo_src = [
   'embryo_str.c',
   'embryo_time.c',
   'embryo_private.h'
-]
-
-embryo_deps = [eina, m]
+])
 
 embryo_lib = library('embryo',
     embryo_src,
-    dependencies: [m, buildsystem] + embryo_deps,
+    dependencies: [embryo_deps, embryo_pub_deps, embryo_ext_deps],
     include_directories : config_dir + 
[include_directories(join_paths('..','..'))],
     install: true,
     c_args : package_c_args,
diff --git a/src/lib/emile/meson.build b/src/lib/emile/meson.build
index d8734cd1f2..fb5822836b 100644
--- a/src/lib/emile/meson.build
+++ b/src/lib/emile/meson.build
@@ -1,5 +1,6 @@
-emile_deps = [jpeg, crypto, dependency('zlib')]
+emile_deps = []
 emile_pub_deps = [eina, efl]
+emile_ext_deps = [jpeg, crypto, dependency('zlib'), lz4, rg_etc, m]
 
 emile_headers = [
   'Emile.h',
@@ -9,25 +10,25 @@ emile_headers = [
   'emile_base64.h'
 ]
 
-emile_src = [
+emile_src = files([
   'emile_private.h',
   'emile_main.c',
   'emile_compress.c',
   'emile_image.c',
   'emile_base64.c',
-]
+])
 
 if (get_option('crypto') == 'gnutls')
-  emile_src += 'emile_cipher_gnutls.c'
+  emile_src += files('emile_cipher_gnutls.c')
 elif (get_option('crypto') == 'openssl')
-  emile_src += 'emile_cipher_openssl.c'
+  emile_src += files('emile_cipher_openssl.c')
 endif
 
 emile_lib = library('emile',
     emile_src,
     c_args : package_c_args,
     include_directories: config_dir,
-    dependencies: emile_pub_deps + emile_deps + [lz4, rg_etc, m],
+    dependencies: emile_pub_deps + emile_deps + emile_ext_deps,
     install: true,
     version : meson.project_version()
 )
diff --git a/src/lib/emotion/meson.build b/src/lib/emotion/meson.build
index e779a39248..b289fb221a 100644
--- a/src/lib/emotion/meson.build
+++ b/src/lib/emotion/meson.build
@@ -28,17 +28,18 @@ emotion_header_src = [
   'efl_canvas_video_eo.legacy.h',
 ]
 
-emotion_src = [
+emotion_src = files([
   'emotion_modules.h',
   'emotion_private.h',
   'emotion_smart.c',
   'emotion_webcam.c',
   'emotion_modules.c',
   'emotion_main.c'
-]
+])
 
 emotion_deps = [ecore, eet, evas, eio, emile]
 emotion_pub_deps = [eina, eo, efl]
+emotion_ext_deps = []
 
 if get_option('eeze') == true
   emotion_deps += [eeze]
@@ -49,7 +50,7 @@ emotion_package_c_args =  package_c_args
 
 emotion_lib = library('emotion',
     emotion_src, pub_eo_file_target, priv_eo_file_target,
-    dependencies: emotion_deps + emotion_pub_deps,
+    dependencies: emotion_deps + emotion_pub_deps + emotion_ext_deps,
     include_directories : config_dir + [include_directories('.')],
     install: true,
     c_args : emotion_package_c_args,
diff --git a/src/lib/eo/meson.build b/src/lib/eo/meson.build
index 1360276e60..9cd33775b0 100644
--- a/src/lib/eo/meson.build
+++ b/src/lib/eo/meson.build
@@ -1,5 +1,6 @@
 eo_deps = []
 eo_pub_deps = [eina]
+eo_ext_deps = [valgrind, dl, execinfo]
 
 pub_eo_files = [
   'efl_object.eo',
@@ -7,7 +8,7 @@ pub_eo_files = [
   'efl_object_override.eo'
 ]
 
-eo_src = [
+eo_src = files([
   'eo.c',
   'eo_ptr_indirection.c',
   'eo_ptr_indirection.h',
@@ -17,7 +18,7 @@ eo_src = [
   'eo_add_fallback.h',
   'eo_private.h',
   'eo_internal.h'
-]
+])
 
 pub_eo_types_files = [
   'eina_types.eot'
@@ -61,7 +62,7 @@ eolian_include_directories += ['-I', 
meson.current_source_dir()]
 eo_lib = library('eo',
     eo_src, pub_eo_file_target,
     c_args : package_c_args,
-    dependencies: [eina, valgrind, dl, execinfo],
+    dependencies: [eo_deps, eo_pub_deps, eo_ext_deps],
     install: true,
     version : meson.project_version()
 )
@@ -69,7 +70,7 @@ eo_lib = library('eo',
 eo_lib_dbg = library('eo_dbg',
     eo_src, pub_eo_file_target,
     c_args : package_c_args + [ '-DEO_DEBUG' ],
-    dependencies: [eina, valgrind, dl, execinfo],
+    dependencies: [eo_deps, eo_pub_deps, eo_ext_deps],
     install: true,
     version : meson.project_version()
 )
diff --git a/src/lib/ephysics/meson.build b/src/lib/ephysics/meson.build
index ad1a168ae5..6233f58885 100644
--- a/src/lib/ephysics/meson.build
+++ b/src/lib/ephysics/meson.build
@@ -1,13 +1,13 @@
 bullet = dependency('bullet')
 
-ephysics_deps = [evas, bullet]
+ephysics_deps = [evas]
 ephysics_pub_deps = [eina, eo, efl]
-
+ephysics_ext_deps = [m, bullet]
 ephysics_header_src = [
   'EPhysics.h'
 ]
 
-ephysics_src = [
+ephysics_src = files([
   'ephysics_private.h',
   'ephysics_trimesh.h',
   'ephysics_body_materials.h',
@@ -18,11 +18,11 @@ ephysics_src = [
   'ephysics_quaternion.cpp',
   'ephysics_shape.cpp',
   'ephysics_world.cpp'
-]
+])
 
 ephysics_lib = library('ephysics',
     ephysics_src,
-    dependencies: ephysics_pub_deps + [m] + ephysics_deps,
+    dependencies: ephysics_pub_deps + ephysics_deps + ephysics_ext_deps,
     include_directories : config_dir + [include_directories('.')],
     install: true,
     c_args : package_c_args,
diff --git a/src/lib/ethumb/meson.build b/src/lib/ethumb/meson.build
index ffc62e91e5..fbe1436e4b 100644
--- a/src/lib/ethumb/meson.build
+++ b/src/lib/ethumb/meson.build
@@ -2,19 +2,20 @@ ethumb_header_src = [
   'Ethumb.h'
 ]
 
-ethumb_src = [
+ethumb_src = files([
   'ethumb.c',
   'ethumb_private.h',
   'md5.h',
   'md5.c',
-]
+])
 
 ethumb_deps = [eet, evas, ecore, ecore_evas, ecore_file, ecore_imf, edje, 
emile]
 ethumb_pub_deps = [eina, eo, efl]
+ethumb_ext_deps = [m]
 
 ethumb_lib = library('ethumb',
     ethumb_src,
-    dependencies: ethumb_pub_deps + [m] + ethumb_deps,
+    dependencies: ethumb_pub_deps + ethumb_ext_deps + ethumb_deps,
     include_directories : config_dir + [include_directories('.')],
     install: true,
     c_args : package_c_args,
diff --git a/src/lib/ethumb_client/meson.build 
b/src/lib/ethumb_client/meson.build
index bddbab1d8d..1326fee995 100644
--- a/src/lib/ethumb_client/meson.build
+++ b/src/lib/ethumb_client/meson.build
@@ -2,9 +2,9 @@ ethumb_client_header_src = [
   'Ethumb_Client.h'
 ]
 
-ethumb_client_src = [
+ethumb_client_src = files([
   'ethumb_client.c'
-]
+])
 
 ethumb_client_deps = [
   eldbus,
@@ -12,10 +12,11 @@ ethumb_client_deps = [
 ]
 
 ethumb_client_pub_deps = [eina, eo, efl, ethumb]
+ethumb_client_ext_deps = []
 
 ethumb_client_lib = library('ethumb_client',
     ethumb_client_src,
-    dependencies: ethumb_client_pub_deps + ethumb_client_deps,
+    dependencies: ethumb_client_pub_deps + ethumb_client_deps + 
ethumb_client_ext_deps,
     include_directories : config_dir + [include_directories('.')],
     install: true,
     c_args : package_c_args,
diff --git a/src/lib/evas/meson.build b/src/lib/evas/meson.build
index 8b9c15f742..5799685e87 100644
--- a/src/lib/evas/meson.build
+++ b/src/lib/evas/meson.build
@@ -48,7 +48,9 @@ evas_vg_loaders_file = [
 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, buildsystem, intl]
+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]
+
 pub_eo_file_target = []
 priv_eo_files = []
 evas_include_directories = []
@@ -128,27 +130,24 @@ evas_include_directories += [
   include_directories('common'),
   include_directories('include'),
   include_directories('filters'),
-  vg_common_inc_dir
 ]
 
-evas_src += [
+evas_src += files([
    'main.c'
-]
+])
 
 evas_src_opt = [ ]
 
-evas_src += vg_common_src
-
-evas_deps += dependency('freetype2')
+evas_ext_deps += dependency('freetype2')
 
 if (get_option('fontconfig'))
    config_h.set('HAVE_FONTCONFIG', '1')
-   evas_deps += dependency('fontconfig')
+   evas_ext_deps += dependency('fontconfig')
 endif
 
 if (get_option('fribidi'))
    config_h.set('HAVE_FRIBIDI', '1')
-   evas_deps += dependency('fribidi')
+   evas_ext_deps += dependency('fribidi')
 endif
 
 if (get_option('pixman'))
@@ -156,16 +155,16 @@ if (get_option('pixman'))
    foreach support : pixman_support
      config_h.set(support, '1')
    endforeach
-   evas_deps += dependency('pixman-1')
+   evas_ext_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_deps += cc.find_library('hyphen')
+     evas_ext_deps += cc.find_library('hyphen')
    endif
-   evas_deps += hyphen
+   evas_ext_deps += hyphen
    config_h.set_quoted('EVAS_DICTS_HYPHEN_DIR', 
get_option('dictionaries-hyphen-dir'))
 endif
 
@@ -181,12 +180,12 @@ subdir('vg')
 gl_deps = []
 
 if get_option('harfbuzz')
-  evas_deps += dependency('harfbuzz')
+  evas_ext_deps += dependency('harfbuzz')
   config_h.set('HAVE_HARFBUZZ', '1')
 endif
 
 if get_option('wl')
-  evas_deps += wayland_protocol
+  evas_ext_deps += wayland_protocol
 endif
 
 
@@ -201,7 +200,7 @@ if get_option('opengl') != 'none'
 endif
 
 evas_link = [ ]
-evas_pub_deps = [eina, ecore, ector, emile]
+evas_pub_deps = [eina, ecore, ector, emile, buildsystem] #FIXME buildsystem 
here is wrong, but needed in this commit
 
 if cpu_sse3 == true or cpu_neon == true and cpu_neon_intrinsics == false
   evas_opt = static_library('evas_opt',
@@ -211,7 +210,7 @@ if cpu_sse3 == true or cpu_neon == true and 
cpu_neon_intrinsics == false
       evas_include_directories +
       [vg_common_inc_dir],
     c_args: native_arch_opt_c_args,
-    dependencies: [eina, eo, ector, emile, evas_deps, m],
+    dependencies: [eina, eo, ector, emile, evas_deps, evas_ext_deps],
   )
   evas_link += [ evas_opt ]
 endif
@@ -279,10 +278,16 @@ foreach loader : evas_vg_savers_file
   endif
 endforeach
 
+evas_ext_deps += evas_static_list
+
+evas_ext_deps += declare_dependency(
+  link_with: evas_link,
+)
+
 evas_lib = library('evas',
     include_directories: evas_include_directories + [vg_common_inc_dir],
     sources : [evas_src, pub_eo_file_target, priv_eo_file_target],
-    dependencies: [evas_deps, m, draw, valgrind, libunibreak, 
evas_static_list],
+    dependencies: [evas_deps, evas_ext_deps],
     link_with: evas_link,
     install: true,
     c_args : package_c_args,
@@ -292,13 +297,13 @@ evas_lib = library('evas',
 evas = declare_dependency(
    link_with : [evas_lib],
    sources: pub_eo_file_target,
-   dependencies : [m] + evas_pub_deps + evas_deps,
+   dependencies : evas_pub_deps,
    include_directories: evas_include_directories + [vg_common_inc_dir] + 
[include_directories(join_paths('..', '..', 'modules', 'evas', 'engines', 
'buffer'))],
 )
 
 evas_bin = declare_dependency(
    link_with : [evas_lib],
-   dependencies : [eina, ecore, ector, emile, lua],
+   dependencies : [eina, ecore, ector, emile],
    include_directories : evas_include_directories
 )
 
diff --git a/src/lib/evas/software_generic/meson.build 
b/src/lib/evas/software_generic/meson.build
index 187002a6af..8727feba32 100644
--- a/src/lib/evas/software_generic/meson.build
+++ b/src/lib/evas/software_generic/meson.build
@@ -33,4 +33,6 @@ foreach file : raw_evas_src
   evas_src += files(join_paths(rel_evas_modules, file))
 endforeach
 
+evas_include_directories += include_directories('.')
+
 subdir('filters')
diff --git a/src/lib/evil/meson.build b/src/lib/evil/meson.build
index 823b724a91..deecb9e3cb 100644
--- a/src/lib/evil/meson.build
+++ b/src/lib/evil/meson.build
@@ -1,7 +1,10 @@
 evil_deps = []
 evil_pub_deps = []
+evil_ext_deps = []
+evil_src = []
+
 if target_machine.system() == 'windows'
-  evil_src = [
+  evil_src += files([
   'evil_dlfcn.c',
   'evil_fcntl.c',
   'evil_langinfo.c',
@@ -15,7 +18,7 @@ if target_machine.system() == 'windows'
   'evil_unistd.c',
   'evil_util.c',
   'evil_private.h',
-  ]
+  ])
 
   psapi = cc.find_library('psapi')
   ole32 = cc.find_library('ole32')
@@ -23,9 +26,11 @@ if target_machine.system() == 'windows'
   secur32 = cc.find_library('secur32')
   uuid = cc.find_library('uuid')
 
+  evil_ext_deps += [psapi, ole32, ws2_32, secur32, uuid, regexp]
+
   evil_lib = library('evil', evil_src,
     c_args : package_c_args,
-    dependencies : [psapi, ole32, ws2_32, secur32, uuid, regexp],
+    dependencies : evil_ext_deps,
     include_directories : [config_dir],
     install: true,
     version: meson.project_version(),
diff --git a/src/modules/ecore_evas/engines/wayland/meson.build 
b/src/modules/ecore_evas/engines/wayland/meson.build
index fbc27a396b..259d8bcdd8 100644
--- a/src/modules/ecore_evas/engines/wayland/meson.build
+++ b/src/modules/ecore_evas/engines/wayland/meson.build
@@ -11,7 +11,7 @@ engine_src = files([
   'ecore_evas_wayland_private.h'
   ])
 
-engine_deps = [ecore_wl2, ecore_input]
+engine_deps = [ecore_wl2, ecore_input] + ecore_wl2_ext_deps
 engine_include_dir += include_directories(join_paths('..', '..', '..', 'evas', 
'engines', 'wayland_common'))
 
 
diff --git a/src/modules/ecore_imf/meson.build 
b/src/modules/ecore_imf/meson.build
index 72154d521d..72ab44ff51 100644
--- a/src/modules/ecore_imf/meson.build
+++ b/src/modules/ecore_imf/meson.build
@@ -8,7 +8,6 @@ if get_option('wl')
   mods += ['wayland']
 endif
 
-
 loader_disabler = get_option('ecore-imf-loaders-disabler')
 
 foreach mod_name : mods
diff --git a/src/modules/evas/engines/buffer/meson.build 
b/src/modules/evas/engines/buffer/meson.build
index 23aef86b9a..4a6f31fe3a 100644
--- a/src/modules/evas/engines/buffer/meson.build
+++ b/src/modules/evas/engines/buffer/meson.build
@@ -5,18 +5,18 @@ engine_src = files([
   'evas_outbuf.c'
 ])
 
-engine_deps = []
-
 evas_include_directories += include_directories('.')
 
 install_headers('Evas_Engine_Buffer.h',
   install_dir : join_paths(dir_include, 'evas-'+version_major),
 )
 
+engine_deps += [eet]
+
 evas_engine_buffer_mod = shared_module(mod_full_name, engine_src,
   c_args : package_c_args,
   include_directories : config_dir + [engine_include_dir],
-  dependencies : [eina, evas] + engine_deps,
+  dependencies : engine_deps,
   install : true,
   install_dir : mod_install_dir,
   name_suffix : sys_mod_extension
diff --git a/src/modules/evas/engines/drm/meson.build 
b/src/modules/evas/engines/drm/meson.build
index fb97b631de..a75732a1b1 100644
--- a/src/modules/evas/engines/drm/meson.build
+++ b/src/modules/evas/engines/drm/meson.build
@@ -5,11 +5,11 @@ engine_src = files([
   'evas_outbuf.c'
 ])
 
-engine_deps = [ecore_drm2, libdrm]
+engine_deps += [ecore_drm2, libdrm]
 
 shared_module(mod_full_name, engine_src,
   include_directories : config_dir + [engine_include_dir],
-  dependencies : [eina, evas] + engine_deps,
+  dependencies : engine_deps,
   install : true,
   install_dir : mod_install_dir,
   name_suffix : sys_mod_extension
diff --git a/src/modules/evas/engines/fb/meson.build 
b/src/modules/evas/engines/fb/meson.build
index 625edd5d33..29f3b76dd5 100644
--- a/src/modules/evas/engines/fb/meson.build
+++ b/src/modules/evas/engines/fb/meson.build
@@ -7,11 +7,11 @@ engine_src = files([
   'evas_fb_main.c',
 ])
 
-engine_deps = [ecore_fb]
+engine_deps += [ecore_fb]
 
 shared_module(mod_full_name, engine_src,
   include_directories : config_dir + [engine_include_dir],
-  dependencies : [eina, evas] + engine_deps,
+  dependencies : engine_deps,
   install : true,
   install_dir : mod_install_dir,
   name_suffix : sys_mod_extension
diff --git a/src/modules/evas/engines/gl_cocoa/meson.build 
b/src/modules/evas/engines/gl_cocoa/meson.build
index a0bd765c9b..2fc5bb9b2c 100644
--- a/src/modules/evas/engines/gl_cocoa/meson.build
+++ b/src/modules/evas/engines/gl_cocoa/meson.build
@@ -5,11 +5,11 @@ engine_src = files([
   'evas_outbuf.m',
 ])
 
-engine_deps = [ecore_cocoa, gl_deps]
+engine_deps += [ecore_cocoa, gl_deps]
 
 shared_module(mod_full_name, engine_src,
   include_directories : config_dir + [engine_include_dir],
-  dependencies : [eina, evas] + engine_deps,
+  dependencies : engine_deps,
   install : true,
   install_dir : mod_install_dir,
   name_suffix : sys_mod_extension
diff --git a/src/modules/evas/engines/gl_drm/meson.build 
b/src/modules/evas/engines/gl_drm/meson.build
index 8acf82365d..b21c00edb5 100644
--- a/src/modules/evas/engines/gl_drm/meson.build
+++ b/src/modules/evas/engines/gl_drm/meson.build
@@ -5,11 +5,11 @@ engine_src = files([
   'evas_outbuf.c',
 ])
 
-engine_deps = [ecore_drm2, libdrm, gl_deps, dependency('gbm')]
+engine_deps += [ecore_drm2, libdrm, gl_deps, dependency('gbm')]
 
 shared_module(mod_full_name, engine_src,
   include_directories : config_dir + [engine_include_dir],
-  dependencies : [eina, evas] + engine_deps,
+  dependencies : engine_deps,
   install : true,
   install_dir : mod_install_dir,
   name_suffix : sys_mod_extension
diff --git a/src/modules/evas/engines/gl_generic/meson.build 
b/src/modules/evas/engines/gl_generic/meson.build
index 68163b5711..3a00883b8a 100644
--- a/src/modules/evas/engines/gl_generic/meson.build
+++ b/src/modules/evas/engines/gl_generic/meson.build
@@ -62,13 +62,13 @@ foreach eo_file : pub_eo_files
                            '-gchd', '@INPUT@'])
 endforeach
 
-engine_deps = [gl_deps]
+engine_deps += [gl_deps]
 
 engine_include_dir = include_directories(join_paths('..','software_generic'), 
join_paths('..', 'gl_common'))
 
 shared_module(mod_full_name, engine_src,
   include_directories : config_dir + [engine_include_dir],
-  dependencies : [eina, evas] + engine_deps,
+  dependencies : engine_deps,
   install : true,
   install_dir : mod_install_dir,
   name_suffix : sys_mod_extension
diff --git a/src/modules/evas/engines/gl_x11/meson.build 
b/src/modules/evas/engines/gl_x11/meson.build
index 0bac84147e..fd39ba29e8 100644
--- a/src/modules/evas/engines/gl_x11/meson.build
+++ b/src/modules/evas/engines/gl_x11/meson.build
@@ -5,11 +5,11 @@ engine_src = files([
   'evas_x_main.c',
 ])
 
-engine_deps = [ecore_x_deps, gl_deps]
+engine_deps += [ecore_x_ext_deps, gl_deps]
 
 shared_module(mod_full_name, engine_src,
   include_directories : config_dir + [engine_include_dir],
-  dependencies : [eina, evas] + engine_deps,
+  dependencies : engine_deps,
   install : true,
   install_dir : mod_install_dir,
   name_suffix : sys_mod_extension
diff --git a/src/modules/evas/engines/meson.build 
b/src/modules/evas/engines/meson.build
index 2504a761a9..1efdbbddc8 100644
--- a/src/modules/evas/engines/meson.build
+++ b/src/modules/evas/engines/meson.build
@@ -46,7 +46,7 @@ foreach engine_conf : engines
   if build
     engine_include_dir = []
     engine_src = []
-    engine_deps = []
+    engine_deps = [eina, evas, evas_ext_deps]
     engine_dep = declare_dependency(
       include_directories: include_directories(engine),
     )
diff --git a/src/modules/evas/engines/software_ddraw/meson.build 
b/src/modules/evas/engines/software_ddraw/meson.build
index 1b58f71a04..b15acfd3ad 100644
--- a/src/modules/evas/engines/software_ddraw/meson.build
+++ b/src/modules/evas/engines/software_ddraw/meson.build
@@ -5,13 +5,13 @@ engine_src = files([
   'evas_ddraw_main.cpp',
 ])
 
-engine_deps = [cc.find_library('ddraw')]
+engine_deps += [cc.find_library('ddraw')]
 
 shared_module(mod_full_name, engine_src,
   include_directories : config_dir + [engine_include_dir],
   c_args : package_c_args,
   cpp_args: ['-fno-rtti', '-fno-exceptions'],
-  dependencies : [eina, evas] + engine_deps,
+  dependencies : engine_deps,
   install : true,
   install_dir : mod_install_dir,
   name_suffix : sys_mod_extension
diff --git a/src/modules/evas/engines/software_gdi/meson.build 
b/src/modules/evas/engines/software_gdi/meson.build
index 50bbb546ed..549094913f 100644
--- a/src/modules/evas/engines/software_gdi/meson.build
+++ b/src/modules/evas/engines/software_gdi/meson.build
@@ -5,12 +5,12 @@ engine_src = files([
   'evas_gdi_main.c',
 ])
 
-engine_deps = [cc.find_library('gdi32')]
+engine_deps += [cc.find_library('gdi32')]
 
 shared_module(mod_full_name, engine_src,
   c_args : package_c_args,
   include_directories : config_dir + [engine_include_dir],
-  dependencies : [eina, evas] + engine_deps,
+  dependencies : engine_deps,
   install : true,
   install_dir : mod_install_dir,
   name_suffix : sys_mod_extension
diff --git a/src/modules/evas/engines/software_x11/meson.build 
b/src/modules/evas/engines/software_x11/meson.build
index c2f8f544e8..6ddaeee37b 100644
--- a/src/modules/evas/engines/software_x11/meson.build
+++ b/src/modules/evas/engines/software_x11/meson.build
@@ -26,11 +26,11 @@ config_h.set('BUILD_ENGINE_SOFTWARE_XLIB', '1')
 
 #ecore_x_deps carries all the extensions etc. so we dont have to search them 
twice
 #it looks weird but is right, gl_deps is needed for evas_x_egl.c
-engine_deps = [x11, ecore_x, ecore_x_deps, gl_deps]
+engine_deps += [x11, ecore_x, ecore_x_deps, gl_deps]
 
 shared_module(mod_full_name, engine_src,
   include_directories : config_dir + [engine_include_dir],
-  dependencies : [eina, evas] + engine_deps,
+  dependencies : engine_deps,
   install : true,
   install_dir : mod_install_dir,
   name_suffix : sys_mod_extension
diff --git a/src/modules/evas/engines/wayland_egl/meson.build 
b/src/modules/evas/engines/wayland_egl/meson.build
index af7314627b..caeab5e0e3 100644
--- a/src/modules/evas/engines/wayland_egl/meson.build
+++ b/src/modules/evas/engines/wayland_egl/meson.build
@@ -4,13 +4,13 @@ engine_src = files([
   'evas_wl_main.c'
 ])
 
-engine_deps = [ecore_wl2, dependency('wayland-egl'), gl_deps]
+engine_deps += [ecore_wl2, dependency('wayland-egl'), gl_deps]
 
 engine_include_dir = include_directories(join_paths('..','wayland_common'))
 
 shared_module(mod_full_name, engine_src,
   include_directories : config_dir + [engine_include_dir],
-  dependencies : [eina, evas] + engine_deps,
+  dependencies : engine_deps,
   install : true,
   install_dir : mod_install_dir,
   name_suffix : sys_mod_extension
diff --git a/src/modules/evas/engines/wayland_shm/meson.build 
b/src/modules/evas/engines/wayland_shm/meson.build
index 2a181cea48..c5bbd6062c 100644
--- a/src/modules/evas/engines/wayland_shm/meson.build
+++ b/src/modules/evas/engines/wayland_shm/meson.build
@@ -4,13 +4,13 @@ engine_src = files([
   'evas_outbuf.c'
 ])
 
-engine_deps = [ecore_wl2]
+engine_deps += [ecore_wl2]
 
 engine_include_dir = include_directories(join_paths('..','wayland_common'))
 
 shared_module(mod_full_name, engine_src,
   include_directories : config_dir + [engine_include_dir],
-  dependencies : [eina, evas] + engine_deps,
+  dependencies : engine_deps,
   install : true,
   install_dir : mod_install_dir,
   name_suffix : sys_mod_extension
diff --git a/src/modules/evas/image_loaders/meson.build 
b/src/modules/evas/image_loaders/meson.build
index 999cb865a4..963245ecfe 100644
--- a/src/modules/evas/image_loaders/meson.build
+++ b/src/modules/evas/image_loaders/meson.build
@@ -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] + loader_deps,
+        dependencies : [eina, evas, evas_ext_deps] + loader_deps,
         install : true,
         install_dir : mod_install_dir,
         name_suffix : sys_mod_extension
diff --git a/src/modules/evas/image_savers/meson.build 
b/src/modules/evas/image_savers/meson.build
index 7ba39aa287..7a5ebcb3b3 100644
--- a/src/modules/evas/image_savers/meson.build
+++ b/src/modules/evas/image_savers/meson.build
@@ -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] + loader_deps,
+        dependencies : [eina, evas, eet, evas_ext_deps] + loader_deps,
         install : true,
         install_dir : mod_install_dir,
         name_suffix : sys_mod_extension
diff --git a/src/static_libs/buildsystem/meson.build 
b/src/static_libs/buildsystem/meson.build
index 61e7f1e37e..dd3b1f6dab 100644
--- a/src/static_libs/buildsystem/meson.build
+++ b/src/static_libs/buildsystem/meson.build
@@ -18,3 +18,7 @@ buildsystem = declare_dependency(
   link_with: buildsystem_lib,
   dependencies: [eina],
 )
+
+buildsystem_simple = declare_dependency(
+  include_directories: [include_directories('.'), 
include_directories(join_paths('..', '..', 'lib'))],
+)
diff --git a/src/static_libs/draw/meson.build b/src/static_libs/draw/meson.build
index 0e7dce9cdd..f9fbc96a83 100644
--- a/src/static_libs/draw/meson.build
+++ b/src/static_libs/draw/meson.build
@@ -27,3 +27,14 @@ draw = declare_dependency(
   sources : draw_src,
   link_with : draw_opt_lib
 )
+
+draw_without_deps = declare_dependency(
+  include_directories: [include_directories('.'), 
include_directories(join_paths('..', '..', 'lib'))],
+  dependencies: [rg_etc_simple],
+  sources : draw_src,
+  link_with : draw_opt_lib
+)
+
+draw_simple = declare_dependency(
+  include_directories: [include_directories('.'), 
include_directories(join_paths('..', '..', 'lib'))],
+)
diff --git a/src/static_libs/rg_etc/meson.build 
b/src/static_libs/rg_etc/meson.build
index cd093daba9..84a037ed20 100644
--- a/src/static_libs/rg_etc/meson.build
+++ b/src/static_libs/rg_etc/meson.build
@@ -9,3 +9,7 @@ rg_etc = declare_dependency(
   include_directories: include_directories('.'),
   sources : rg_etc_src
 )
+
+rg_etc_simple = declare_dependency(
+  include_directories: include_directories('.'),
+)
diff --git a/src/tests/elementary/meson.build b/src/tests/elementary/meson.build
index 1b43da7064..273ee418dc 100644
--- a/src/tests/elementary/meson.build
+++ b/src/tests/elementary/meson.build
@@ -108,7 +108,7 @@ elementary_suite_src = [
 
 elementary_suite = executable('elementary_suite',
   elementary_suite_src,
-  dependencies: [check, eina, elementary, elementary_deps],
+  dependencies: [check, eina, elementary, elementary_deps, intl],
   include_directories : [config_dir] + [elementary_config_dir],
   c_args : [
   '-DTESTS_BUILD_DIR="'+meson.current_build_dir()+'"',
@@ -172,7 +172,7 @@ efl_ui_suite_src = [
 
 efl_ui_suite = executable('efl_ui_suite',
   efl_ui_suite_src, priv_eo_file_target,
-  dependencies: [check, eina, elementary, elementary_deps],
+  dependencies: [check, eina, elementary, elementary_deps, intl],
   include_directories : [config_dir] + [elementary_config_dir],
   c_args : [
   '-DTESTS_BUILD_DIR="'+meson.current_build_dir()+'"',
diff --git a/src/tests/evas/meson.build b/src/tests/evas/meson.build
index fee57d91dd..b76d4572b3 100644
--- a/src/tests/evas/meson.build
+++ b/src/tests/evas/meson.build
@@ -25,7 +25,7 @@ evas_suite_src = [
 
 evas_suite = executable('evas_suite',
   evas_suite_src,
-  dependencies: [evas_bin, evas, ecore_evas, dl, check],
+  dependencies: [evas_bin, evas, ecore_evas, dl, check, evas_ext_deps], 
#external deps needed here since tests do include internal headers
   include_directories: include_directories(join_paths('..', '..', 'modules', 
'evas', 'engines', 'buffer')),
   c_args : [
   '-DTESTS_BUILD_DIR="'+meson.current_build_dir()+'"',
diff --git a/src/wayland_protocol/meson.build b/src/wayland_protocol/meson.build
index 5301adbe71..f08e84b31c 100644
--- a/src/wayland_protocol/meson.build
+++ b/src/wayland_protocol/meson.build
@@ -66,3 +66,8 @@ wayland_protocol = declare_dependency(
   sources: gen_obj_header,
   dependencies : [wayland_client]
 )
+
+wayland_protocol_simple = declare_dependency(
+  include_directories: include_directories('.'),
+  sources: gen_obj_header,
+)

-- 


Reply via email to