discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=e8dc71cd4828ce8ccf791b27326f75b5d5ec8ab8

commit e8dc71cd4828ce8ccf791b27326f75b5d5ec8ab8
Author: Mike Blumenkrantz <zm...@osg.samsung.com>
Date:   Fri Jul 21 16:20:03 2017 -0400

    meson.
---
 config/default/meson.build                       |  15 +
 config/meson.build                               |  14 +
 config/mobile/meson.build                        |  19 +
 config/standard/meson.build                      |  38 ++
 config/tiling/meson.build                        |  40 ++
 data/backgrounds/meson.build                     |  42 ++
 data/desktop/meson.build                         |   8 +
 data/etc/meson.build                             |  15 +
 data/favorites/meson.build                       |  11 +
 data/flags/meson.build                           | 105 +++++
 data/icons/meson.build                           |  18 +
 data/images/meson.build                          |  11 +
 data/input_methods/meson.build                   |  13 +
 data/tools/meson.build                           |   7 +
 data/units/meson.build                           |   8 +
 data/xsession/meson.build                        |   6 +
 meson.build                                      | 500 ++++++++++++++++++++
 meson/meson_inst.sh                              |   6 +
 meson/meson_modules.sh                           |   6 +
 meson_options.txt                                | 309 ++++++++++++
 po/meson.build                                   |   5 +
 src/bin/e_fm/meson.build                         |  50 ++
 src/bin/generated/meson.build                    |  19 +
 src/bin/meson.build                              | 576 +++++++++++++++++++++++
 src/modules/appmenu/meson.build                  |  28 ++
 src/modules/backlight/meson.build                |  30 ++
 src/modules/battery/meson.build                  |  45 ++
 src/modules/bluez4/meson.build                   |  30 ++
 src/modules/clock/meson.build                    |  29 ++
 src/modules/conf/meson.build                     |  30 ++
 src/modules/conf_applications/meson.build        |  33 ++
 src/modules/conf_bindings/meson.build            |  33 ++
 src/modules/conf_dialogs/meson.build             |  31 ++
 src/modules/conf_display/meson.build             |  34 ++
 src/modules/conf_interaction/meson.build         |  31 ++
 src/modules/conf_intl/meson.build                |  31 ++
 src/modules/conf_menus/meson.build               |  30 ++
 src/modules/conf_paths/meson.build               |  31 ++
 src/modules/conf_performance/meson.build         |  31 ++
 src/modules/conf_randr/meson.build               |  31 ++
 src/modules/conf_shelves/meson.build             |  31 ++
 src/modules/conf_theme/meson.build               |  37 ++
 src/modules/conf_window_manipulation/meson.build |  34 ++
 src/modules/conf_window_remembers/meson.build    |  30 ++
 src/modules/connman/meson.build                  |  33 ++
 src/modules/cpufreq/meson.build                  |  40 ++
 src/modules/everything/meson.build               |  70 +++
 src/modules/fileman/meson.build                  |  36 ++
 src/modules/fileman_opinfo/meson.build           |  28 ++
 src/modules/gadman/meson.build                   |  31 ++
 src/modules/geolocation/meson.build              |  42 ++
 src/modules/ibar/meson.build                     |  30 ++
 src/modules/ibox/meson.build                     |  30 ++
 src/modules/lokker/meson.build                   |  21 +
 src/modules/luncher/meson.build                  |  23 +
 src/modules/mixer/meson.build                    |  73 +++
 src/modules/msgbus/meson.build                   |  26 +
 src/modules/music-control/meson.build            |  34 ++
 src/modules/notification/meson.build             |  22 +
 src/modules/packagekit/meson.build               |  24 +
 src/modules/pager/meson.build                    |  25 +
 src/modules/pager_plain/meson.build              |  21 +
 src/modules/policy_mobile/meson.build            |  22 +
 src/modules/quickaccess/meson.build              |  24 +
 src/modules/shot/meson.build                     |  19 +
 src/modules/start/meson.build                    |  20 +
 src/modules/syscon/meson.build                   |  23 +
 src/modules/sysinfo/meson.build                  |  72 +++
 src/modules/systray/meson.build                  |  24 +
 src/modules/tasks/meson.build                    |  21 +
 src/modules/teamwork/meson.build                 |  35 ++
 src/modules/temperature/meson.build              |  23 +
 src/modules/tiling/meson.build                   |  23 +
 src/modules/time/meson.build                     |  23 +
 src/modules/winlist/meson.build                  |  23 +
 src/modules/wireless/meson.build                 |  22 +
 src/modules/wizard/meson.build                   |  67 +++
 src/modules/wl_buffer/meson.build                |  19 +
 src/modules/wl_desktop_shell/meson.build         |  35 ++
 src/modules/wl_drm/meson.build                   |  19 +
 src/modules/wl_fb/meson.build                    |  19 +
 src/modules/wl_text_input/meson.build            |  30 ++
 src/modules/wl_weekeyboard/meson.build           |  42 ++
 src/modules/wl_wl/meson.build                    |  19 +
 src/modules/wl_x11/meson.build                   |  19 +
 src/modules/xkbswitch/meson.build                |  26 +
 src/modules/xwayland/meson.build                 |  22 +
 87 files changed, 3781 insertions(+)

diff --git a/config/default/meson.build b/config/default/meson.build
new file mode 100644
index 000000000..9f05d508b
--- /dev/null
+++ b/config/default/meson.build
@@ -0,0 +1,15 @@
+config_default = ['e.src', 'e_bindings.src']
+config_default_output = ['e.cfg', 'e_bindings.cfg']
+
+config_dist_default = ['enlightenment-default.png', 'profile.desktop']
+i = 0
+foreach cd: config_default
+       custom_target(' '.join(['config_dist_default', cd]),
+               input: cd,
+               command: [eet, '-e', '@OUTPUT@', 'config', '@INPUT@', '1'],
+               output: config_default_output[i],
+               install: true,
+               install_dir: dir_config
+       )
+       i += 1
+endforeach
diff --git a/config/meson.build b/config/meson.build
new file mode 100644
index 000000000..2bad17a21
--- /dev/null
+++ b/config/meson.build
@@ -0,0 +1,14 @@
+dir_config = join_paths(dir_data, 'enlightenment/data/config')
+
+custom_target('profile.src',
+       input: 'profile.src',
+       command: [eet, '-i', '@OUTPUT@', 'config', '@INPUT@', '1'],
+       output: ['profile.cfg'],
+       install: true,
+       install_dir: dir_config
+)
+
+subdir('default')
+subdir('mobile')
+subdir('standard')
+subdir('tiling')
diff --git a/config/mobile/meson.build b/config/mobile/meson.build
new file mode 100644
index 000000000..f21b70f92
--- /dev/null
+++ b/config/mobile/meson.build
@@ -0,0 +1,19 @@
+config_mobile = ['e.src', 'e_bindings.src', 'module.battery.src', 
'module.conf.src']
+config_mobile_output = ['e.cfg', 'e_bindings.cfg', 'module.battery.cfg', 
'module.conf.cfg']
+
+i = 0
+foreach cd: config_mobile
+       custom_target(' '.join(['config_dist_mobile', cd]),
+               input: cd,
+               command: [eet, '-e', '@OUTPUT@', 'config', '@INPUT@', '1'],
+               output: config_mobile_output[i],
+               install: true,
+               install_dir: dir_config
+       )
+       i += 1
+endforeach
+
+config_dist_mobile = ['enlightenment-mobile.png', 'profile.desktop']
+install_data(config_dist_mobile,
+       install_dir: join_paths(dir_config, 'mobile')
+)
diff --git a/config/standard/meson.build b/config/standard/meson.build
new file mode 100644
index 000000000..aa85af99a
--- /dev/null
+++ b/config/standard/meson.build
@@ -0,0 +1,38 @@
+config_standard = ['e.src', 'e_bindings.src',
+       'module.battery.src',
+       'module.cpufreq.src',
+       'module.fileman.src',
+       'module.ibar.src',
+       'module.ibox.src',
+       'module.pager.src',
+       'module.temperature.src',
+       'module.conf.src'
+]
+
+config_standard_output = ['e.cfg', 'e_bindings.cfg',
+       'module.battery.cfg',
+       'module.cpufreq.cfg',
+       'module.fileman.cfg',
+       'module.ibar.cfg',
+       'module.ibox.cfg',
+       'module.pager.cfg',
+       'module.temperature.cfg',
+       'module.conf.cfg'
+]
+
+i = 0
+foreach cd: config_standard
+       custom_target(' '.join(['config_dist_standard', cd]),
+               input: cd,
+               command: [eet, '-e', '@OUTPUT@', 'config', '@INPUT@', '1'],
+               output: config_standard_output[i],
+               install: true,
+               install_dir: dir_config
+       )
+       i += 1
+endforeach
+
+config_dist_standard = ['enlightenment-standard.png', 'profile.desktop']
+install_data(config_dist_standard,
+       install_dir: join_paths(dir_config, 'standard')
+)
diff --git a/config/tiling/meson.build b/config/tiling/meson.build
new file mode 100644
index 000000000..9de6f849a
--- /dev/null
+++ b/config/tiling/meson.build
@@ -0,0 +1,40 @@
+config_tiling = ['e.src', 'e_bindings.src',
+       'module.battery.src',
+       'module.cpufreq.src',
+       'module.fileman.src',
+       'module.ibar.src',
+       'module.ibox.src',
+       'module.pager.src',
+       'module.temperature.src',
+       'module.tiling.src',
+       'module.conf.src'
+]
+
+config_tiling_output = ['e.cfg', 'e_bindings.cfg',
+       'module.battery.cfg',
+       'module.cpufreq.cfg',
+       'module.fileman.cfg',
+       'module.ibar.cfg',
+       'module.ibox.cfg',
+       'module.pager.cfg',
+       'module.temperature.cfg',
+       'module.tiling.cfg',
+       'module.conf.cfg'
+]
+
+i = 0
+foreach cd: config_tiling
+       custom_target(' '.join(['config_dist_tiling', cd]),
+               input: cd,
+               command: [eet, '-e', '@OUTPUT@', 'config', '@INPUT@', '1'],
+               output: config_tiling_output[i],
+               install: true,
+               install_dir: dir_config
+       )
+       i += 1
+endforeach
+
+config_dist_tiling = ['enlightenment-tiling.png', 'profile.desktop']
+install_data(config_dist_tiling,
+       install_dir: join_paths(dir_config, 'tiling')
+)
diff --git a/data/backgrounds/meson.build b/data/backgrounds/meson.build
new file mode 100644
index 000000000..ae6e11766
--- /dev/null
+++ b/data/backgrounds/meson.build
@@ -0,0 +1,42 @@
+backgrounds_dist = [
+       'Brown_Rock_Hi.edj',
+       'Colorful_Roses.edj',
+       'Darkconcrete.edj',
+       'Dark_Gradient.edj',
+       'Grassy.edj',
+       'Japanesemaple.edj',
+       'Lakegrass.edj',
+       'Light_Gradient.edj',
+       'Mossstring.edj',
+       'Motleyrock.edj',
+       'Newgrowth.edj',
+       'Orange_Roses.edj',
+       'Pattern_Radial.edj',
+       'Pattern_Vertical.edj',
+       'Pattern_Vertical_Hi.edj',
+       'Pine_Silhouettes.edj',
+       'Purple_Flower_Bunch.edj',
+       'Skywall.edj',
+       'Stringflower.edj',
+       'Wetgrass.edj',
+       'Wetleaf.edj',
+       'Whiterock.edj',
+       'Hills.edj',
+       'Light.edj',
+       'Temple.edj',
+       'Train.edj',
+       'Curly_Leaves.edj',
+       'Flower_Petals.edj',
+       'Go_Away.edj',
+       'Green_Stem.edj',
+       'Leafy_Red.edj',
+       'Ramen.edj',
+       'Shady_Leaves.edj',
+       'Windy_Palm.edj',
+       'Lantern_Cluster.edj',
+       'Wall_Lanterns.edj'
+]
+
+install_data(backgrounds_dist,
+       install_dir: join_paths(dir_data, 'enlightenment/data/backgrounds')
+)
diff --git a/data/desktop/meson.build b/data/desktop/meson.build
new file mode 100644
index 000000000..824f7bf2d
--- /dev/null
+++ b/data/desktop/meson.build
@@ -0,0 +1,8 @@
+desktop_dist = [
+       'enlightenment_filemanager.desktop',
+       'enlightenment_askpass.desktop'
+]
+
+install_data(desktop_dist,
+       install_dir: join_paths(dir_data, 'applications')
+)
diff --git a/data/etc/meson.build b/data/etc/meson.build
new file mode 100644
index 000000000..2fd358ff6
--- /dev/null
+++ b/data/etc/meson.build
@@ -0,0 +1,15 @@
+if get_option('install-sysactions')
+       configure_file(input: 'sysactions.conf.in',
+               output: 'sysactions.conf',
+               install: true,
+               install_dir: join_paths(dir_sysconf, 'enlightenment'),
+               configuration: sysactions
+       )
+endif
+
+if get_option('install-enlightenment-menu')
+       install_data('e-applications.menu',
+               install_dir: join_paths(dir_sysconf, 'xdg/menus')
+       )
+endif
+
diff --git a/data/favorites/meson.build b/data/favorites/meson.build
new file mode 100644
index 000000000..be8ffc581
--- /dev/null
+++ b/data/favorites/meson.build
@@ -0,0 +1,11 @@
+favorites_dist = [
+       '.order',
+       'desktop.desktop',
+       'home.desktop',
+       'root.desktop',
+       'tmp.desktop'
+]
+
+install_data(favorites_dist,
+       install_dir: join_paths(dir_data, 'enlightenment/data/favorites')
+)
diff --git a/data/flags/meson.build b/data/flags/meson.build
new file mode 100644
index 000000000..fd5017198
--- /dev/null
+++ b/data/flags/meson.build
@@ -0,0 +1,105 @@
+flags_dist = [
+       'ad_flag.png',
+       'af_flag.png',
+       'al_flag.png',
+       'am_flag.png',
+       'ara_flag.png',
+       'ar_flag.png',
+       'at_flag.png',
+       'az_flag.png',
+       'ba_flag.png',
+       'bd_flag.png',
+       'be_flag.png',
+       'bg_flag.png',
+       'brai_flag.png',
+       'br_flag.png',
+       'bt_flag.png',
+       'bw_flag.png',
+       'by_flag.png',
+       'ca_flag.png',
+       'cat_flag.png',
+       'cd_flag.png',
+       'ch_flag.png',
+       'cm_flag.png',
+       'cn_flag.png',
+       'cz_flag.png',
+       'de_flag.png',
+       'dk_flag.png',
+       'ee_flag.png',
+       'epo_flag.png',
+       'es_flag.png',
+       'et_flag.png',
+       'fi_flag.png',
+       'fo_flag.png',
+       'fr_flag.png',
+       'gb_flag.png',
+       'ge_flag.png',
+       'gh_flag.png',
+       'gn_flag.png',
+       'gr_flag.png',
+       'hr_flag.png',
+       'hu_flag.png',
+       'ie_flag.png',
+       'il_flag.png',
+       'in_flag.png',
+       'iq_flag.png',
+       'ir_flag.png',
+       'is_flag.png',
+       'it_flag.png',
+       'jp_flag.png',
+       'ke_flag.png',
+       'kg_flag.png',
+       'kh_flag.png',
+       'kr_flag.png',
+       'ku_flag.png',
+       'kz_flag.png',
+       'la_flag.png',
+       'lang-system.png',
+       'latam_flag.png',
+       'lk_flag.png',
+       'lt_flag.png',
+       'lv_flag.png',
+       'ma_flag.png',
+       'mao_flag.png',
+       'md_flag.png',
+       'me_flag.png',
+       'mk_flag.png',
+       'ml_flag.png',
+       'mm_flag.png',
+       'mn_flag.png',
+       'mt_flag.png',
+       'mv_flag.png',
+       'my_flag.png',
+       'ng_flag.png',
+       'nl_flag.png',
+       'no_flag.png',
+       'np_flag.png',
+       'ph_flag.png',
+       'pk_flag.png',
+       'pl_flag.png',
+       'pt_flag.png',
+       'ro_flag.png',
+       'rs_flag.png',
+       'ru_flag.png',
+       'se_flag.png',
+       'si_flag.png',
+       'sk_flag.png',
+       'sn_flag.png',
+       'sy_flag.png',
+       'th_flag.png',
+       'tj_flag.png',
+       'tm_flag.png',
+       'tr_flag.png',
+       'tw_flag.png',
+       'tz_flag.png',
+       'ua_flag.png',
+       'unknown_flag.png',
+       'us_flag.png',
+       'uz_flag.png',
+       'vn_flag.png',
+       'za_flag.png'
+]
+
+install_data(flags_dist,
+       install_dir: join_paths(dir_data, 'enlightenment/data/flags')
+)
diff --git a/data/icons/meson.build b/data/icons/meson.build
new file mode 100644
index 000000000..05fd5925e
--- /dev/null
+++ b/data/icons/meson.build
@@ -0,0 +1,18 @@
+icons_dist = [
+       'xterm.png',
+       'web_browser.png',
+       'audio_player.png',
+       'mail_client.png',
+       'video_player.png',
+       'text_editor.png',
+       'image_viewer.png',
+       'audio_player2.png'
+]
+
+install_data(icons_dist,
+       install_dir: join_paths(dir_data, 'enlightenment/data/icons')
+)
+
+install_data('enlightenment-askpass.png',
+       install_dir: join_paths(dir_data, 'pixmaps')
+)
diff --git a/data/images/meson.build b/data/images/meson.build
new file mode 100644
index 000000000..944c03bf1
--- /dev/null
+++ b/data/images/meson.build
@@ -0,0 +1,11 @@
+images_dist = [
+       'enlightenment.png',
+       'test.png',
+       'test.jpg',
+       'test.edj',
+       'test.svg'
+]
+
+install_data(images_dist,
+       install_dir: join_paths(dir_data, 'enlightenment/data/images')
+)
diff --git a/data/input_methods/meson.build b/data/input_methods/meson.build
new file mode 100644
index 000000000..147abdb71
--- /dev/null
+++ b/data/input_methods/meson.build
@@ -0,0 +1,13 @@
+input_methods_dist = [
+       'scim.imc',
+       'uim.imc',
+       'iiimf.imc',
+       'ibus.imc',
+       'gcin.imc',
+       'hime.imc',
+       'fcitx.imc'
+]
+
+install_data(input_methods_dist,
+       install_dir: join_paths(dir_data, 'enlightenment/data/input_methods')
+)
diff --git a/data/tools/meson.build b/data/tools/meson.build
new file mode 100644
index 000000000..212851082
--- /dev/null
+++ b/data/tools/meson.build
@@ -0,0 +1,7 @@
+tools_dist = [
+       'enlightenment_remote'
+]
+
+install_data(tools_dist,
+       install_dir: dir_bin
+)
diff --git a/data/units/meson.build b/data/units/meson.build
new file mode 100644
index 000000000..a30265b13
--- /dev/null
+++ b/data/units/meson.build
@@ -0,0 +1,8 @@
+if get_option('systemd') == true
+       configure_file(input: 'enlightenment.service.in',
+               output: 'enlightenment.service',
+               install: true,
+               install_dir: systemd_unitdir,
+               configuration: config_h
+       )
+endif
diff --git a/data/xsession/meson.build b/data/xsession/meson.build
new file mode 100644
index 000000000..ea895ab17
--- /dev/null
+++ b/data/xsession/meson.build
@@ -0,0 +1,6 @@
+configure_file(input: 'enlightenment.desktop.in',
+       output: 'enlightenment.desktop',
+       install: true,
+       install_dir: join_paths(dir_data, 'xsessions'),
+       configuration: config_h
+)
diff --git a/meson.build b/meson.build
new file mode 100644
index 000000000..030faa68b
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,500 @@
+project('enlightenment', 'c',
+       version: '0.21.99',
+       license: 'BSD 2 clause',
+       default_options: [ 'c_std=gnu99', 'warning_level=2' ],
+       meson_version: '>= 0.40.0')
+
+e_version = meson.project_version().split('.')
+git_version = '0'
+git = find_program('git')
+if git.found() == true
+       git_cmd = run_command(git.path(), 'rev-list', '--count', 'HEAD')
+       if git_cmd.returncode() == 0
+               git_version = git_cmd.stdout().strip()
+       endif
+endif  
+e_version_rev = '.'.join([meson.project_version(), git_version])
+#e_version_rev = e_version
+
+efl_version = '>= 1.19.99'
+
+release = 'ver-0.22'
+#for releases
+#release = '@0@.@1@.@2@'.format(e_version[0], e_version[1], e_version[2])
+
+add_global_arguments('-DHAVE_CONFIG_H=1', language: 'c')
+dir_prefix = get_option('prefix')
+dir_bin = join_paths(dir_prefix, get_option('bindir'))
+dir_sysconf = get_option('sysconfdir')
+dir_data = join_paths(dir_prefix, get_option('datadir'))
+dir_include = join_paths(dir_prefix, get_option('includedir'))
+dir_include_e = join_paths(dir_include, 'enlightenment')
+dir_lib = join_paths(dir_prefix, get_option('libdir'))
+dir_module_e = join_paths(dir_lib, 'enlightenment/modules')
+dir_util_e = join_paths(dir_lib, 'enlightenment/utils')
+dir_pc = join_paths(dir_data, 'pkgconfig')
+
+suid_exes = []
+
+pkgconfig = import('pkgconfig')
+cc = meson.get_compiler('c')
+dev_cflags = []
+
+# disable for release builds
+dev_cflags_try = [
+       '-Wall',
+       '-W',
+       '-Wpointer-arith',
+       '-Wshadow',
+       '-Wno-missing-field-initializers',
+       '-Wfloat-equal',
+       '-Wuninitialized',
+       '-Wundef',
+       '-Wcast-align',
+       '-Wformat=2',
+       '-Wno-format-y2k',
+]
+
+foreach cf: dev_cflags_try
+       if cc.has_argument(cf) == true
+               dev_cflags += cf
+       endif
+endforeach
+add_global_arguments(dev_cflags, language: 'c')
+
+config_h = configuration_data()
+config_h.set('E_INTERNAL', '1')
+config_h.set('_GNU_SOURCE', '1')
+config_h.set('_ALL_SOURCE', '1')
+config_h.set('_POSIX_PTHREAD_SEMANTICS', '1')
+config_h.set('_TANDEM_SOURCE', '1')
+config_h.set('__EXTENSIONS__', '1')
+#config_h.set('E_RELEASE_BUILD', '1')
+
+if get_option('nls') == true
+       subdir('po')
+endif
+
+darwin = host_machine.system().startswith('darwin')
+if darwin == true
+       code='''
+               #define _GNU_SOURCE 1
+               #include <unistd.h>
+               extern char **environ;
+       '''
+       if cc.links(code, name: 'environ test')
+               config_h.set('HAVE_ENVIRON', '1')
+       endif
+endif
+openbsd = host_machine.system().startswith('openbsd')
+netbsd = host_machine.system().startswith('netbsd')
+freebsd = host_machine.system().startswith('freebsd')
+suid_cflags = []
+suid_ldflags = []
+dep_crypt = []
+if freebsd == true or host_machine.system().startswith('pcbsd')
+       dep_crypt = cc.find_library('crypt', required: true)
+       if cc.links('', args: '-fPIE', link_args: '-pie') == true
+               suid_cflags = '-fPIE'
+               suid_ldflags = '-pie'
+       endif
+endif
+dragonfly = host_machine.system().startswith('dragonfly')
+
+#FIXME: other variants...
+host_os = host_machine.system()
+if host_os == 'linux'
+       if cc.has_header_symbol('features.h', '__UCLIBC__')
+               host_os = 'linux-uclibc'
+       elif cc.has_header_symbol('features.h', '__dietlibc__')
+               host_os = 'linux-dietlibc'
+       else
+               host_os = 'linux-gnu'
+       endif
+endif
+
+module_arch = '@0@-@1@-@2@'.format(host_os, host_machine.cpu_family(), release)
+config_h.set_quoted('MODULE_ARCH', module_arch)
+
+config_h.set_quoted('PACKAGE', 'enlightenment')
+config_h.set_quoted('PACKAGE_VERSION', e_version_rev)
+config_h.set_quoted('VERSION', e_version_rev)
+
+add_global_arguments('-DPACKAGE_BIN_DIR="@0@"'.format(dir_bin), language: 'c')
+add_global_arguments('-DPACKAGE_LIB_DIR="@0@"'.format(dir_lib), language: 'c')
+add_global_arguments('-DPACKAGE_DATA_DIR="@0@"'.format(dir_data), language: 
'c')
+add_global_arguments('-DPACKAGE_SYSCONF_DIR="@0@"'.format(dir_sysconf), 
language: 'c')
+
+config_h.set_quoted('LOCALE_DIR', join_paths([dir_prefix, 'share/locale']))
+config_h.set_quoted('PACKAGE_URL', 'https://www.enlightenment.org')
+config_h.set_quoted('PACKAGE_TARNAME', 'enlightenment')
+config_h.set_quoted('PACKAGE_BUGREPORT', 
'enlightenment-devel@lists.sourceforge.net')
+config_h.set_quoted('PACKAGE_STRING', 'enlightenment '.join([e_version_rev]))
+config_h.set_quoted('PACKAGE_NAME', 'enlightenment')
+
+config_h.set_quoted('BINDIR', dir_bin)
+config_h.set_quoted('DATADIR', dir_data)
+
+if cc.has_function('setenv') == true
+       config_h.set('HAVE_SETENV', '1')
+endif
+if cc.has_function('unsetenv') == true
+       config_h.set('HAVE_UNSETENV', '1')
+endif
+if cc.has_function('clearenv') == true
+       config_h.set('HAVE_CLEARENV', '1')
+endif
+if cc.has_header('features.h') == true
+       config_h.set('HAVE_FEATURES_H', '1')
+endif
+if cc.has_header('sys/ptrace.h') == true
+       config_h.set('HAVE_SYS_PTRACE_H', '1')
+endif
+if cc.has_header('arpa/inet.h') == true
+       config_h.set('HAVE_ARPA_INET_H', '1')
+endif
+if cc.has_header('netinet/in.h') == true
+       config_h.set('HAVE_NETINET_IN_H', '1')
+endif
+if cc.has_header('execinfo.h') == true
+       config_h.set('HAVE_EXECINFO_H', '1')
+else
+       if cc.has_function('backtrace_symbols_fd', dependencies: 'execinfo') == 
false
+               execinfo_dep = dependency('execinfo', required: false)
+       endif
+endif
+
+if cc.has_header('fnmatch.h') == false
+       error('fnmatch.h not found')
+endif
+if cc.has_function('fnmatch') == false
+       dep_fnmatch = dependency('fnmatch', required: true)
+endif
+
+if cc.has_header('CFBase.h',
+       args: '-I/System/Library/Frameworks/CoreFoundation.framework/Headers') 
== true
+       
add_global_arguments('-I/System/Library/Frameworks/CoreFoundation.framework/Headers',
 language: 'c')
+       add_global_arguments('-I 
/System/Library/Frameworks/IOKit.framework/Headers', language: 'c')
+       add_global_link_arguments('-framework CoreFoundation', '-framework 
IOKit')
+endif
+
+
+if get_option('pam') == true
+       if cc.has_header('security/pam_appl.h')
+               config_h.set('HAVE_PAM', '1')
+               dep_pam = cc.find_library('pam', required: true)
+       endif
+endif
+
+dep_m = cc.find_library('m', required: false)
+dep_dl = cc.find_library('dl', required: false)
+
+dep_bluez = dependency('bluez', required: false)
+if dep_bluez.found() == true
+       config_h.set('HAVE_BLUETOOTH', '1')
+endif
+
+systemd_unitdir = ''
+if get_option('systemd') == true
+       systemd_unitdir = get_option('systemdunitdir')
+       if systemd_unitdir == ''
+               dep_systemd = dependency('systemd', required: true)
+               systemd_unitdir = 
dep_systemd.get_pkgconfig_variable('systemduserunitdir')
+       endif
+endif
+
+
+HALT = '/sbin/shutdown -h now'
+REBOOT = '/sbin/shutdown -r now'
+SUSPEND = ''
+HIBERNATE = ''
+MOUNT = '/bin/mount'
+UMOUNT = '/bin/umount'
+EJECT = '/usr/bin/eject'
+
+if host_machine.system().contains('bsd') == true
+       #SUSPEND = 'acpiconf -s3'
+       SUSPEND = '/usr/sbin/zzz'
+       HIBERNATE = 'acpiconf -s4'
+       HALT = '/sbin/shutdown -p now'
+       MOUNT = '/sbin/mount'
+       UMOUNT = '/sbin/umount'
+       EJECT = '/usr/sbin/cdcontrol eject'
+else
+       if systemd_unitdir != ''
+               HALT = '/usr/bin/systemctl poweroff'
+               REBOOT = '/usr/bin/systemctl reboot'
+               SUSPEND = '/usr/bin/systemctl suspend'
+               HIBERNATE = '/usr/bin/systemctl hibernate'
+       else
+               sleep = find_program('sleep.sh', '/etc/acpi/sleep.sh', 
'/sbin/sleep.sh', '/usr/sbin/sleep.sh')
+               if sleep.found() == true
+                       SUSPEND = sleep.path()
+                       if sleep.path() == '/etc/acpi/sleep.sh'
+                               SUSPEND = '/etc/acpi/sleep.sh force'
+                       endif
+               else
+                       suspend = find_program('pm-suspend', 
'/etc/acpi/pm-suspend', '/sbin/pm-suspend', '/usr/sbin/pm-suspend')
+                       if suspend.found()
+                               SUSPEND = suspend.path()
+                       endif
+               endif
+
+               hibernate_sh = find_program('hibernate.sh', 
'/etc/acpi/hibernate.sh', '/sbin/hibernate.sh', '/usr/sbin/hibernate.sh')
+               if hibernate_sh.found() == true
+                       HIBERNATE = hibernate_sh.path()
+                       if hibernate_sh.path() == '/etc/acpi/hibernate.sh'
+                               SUSPEND = '/etc/acpi/hibernate.sh force'
+                       endif
+               else
+                       hibernate = find_program('pm-hibernate', 
'/etc/acpi/pm-hibernate', '/sbin/pm-hibernate', '/usr/sbin/pm-hibernate')
+                       if hibernate.found()
+                               HIBERNATE = hibernate.path()
+                       endif
+               endif
+       endif
+endif
+
+sysactions = configuration_data()
+sysactions.set('HALT', HALT)
+sysactions.set('REBOOT', REBOOT)
+sysactions.set('SUSPEND', SUSPEND)
+sysactions.set('HIBERNATE', HIBERNATE)
+sysactions.set('MOUNT', MOUNT)
+sysactions.set('UMOUNT', UMOUNT)
+sysactions.set('EJECT', EJECT)
+
+if cc.has_function('eeze_disk_function', dependencies: dependency('eeze')) == 
true
+       config_h.set('HAVE_EEZE_MOUNT', '1')
+       eeze_mount = true
+endif
+
+
+if get_option('files') == true
+       config_h.set('ENABLE_FILES', '1')
+endif
+
+dep_eeze = []
+requires_eeze = ''
+if get_option('device-udev') == true
+       dep_eeze = dependency('eeze', required: true)
+       config_h.set('HAVE_EEZE', '1')
+       requires_eeze = 'eeze'
+endif
+
+if get_option('mount-udisks') == true
+       config_h.set('HAVE_UDISKS_MOUNT', '1')
+endif
+
+if get_option('mount-eeze') == true
+       if config_h.has('HAVE_EEZE_MOUNT') == false
+               error('eeze not compiled with mount support')
+       endif
+       if get_option('device-udev') == false
+               dep_eeze = dependency('eeze', required: true)
+               requires_eeze = 'eeze'
+       endif
+endif
+
+dep_rt = cc.find_library('rt', required: false)
+dep_eina = dependency('eina', version: efl_version, required: true)
+dep_eet = dependency('eet', required: true)
+dep_ecore = dependency('ecore', required: true)
+dep_ecore_ipc = dependency('ecore-ipc', required: true)
+dep_ecore_file = dependency('ecore-file', required: true)
+dep_ecore_con = dependency('ecore-con', required: true)
+dep_ecore_input = dependency('ecore-input', required: true)
+dep_ecore_input_evas = dependency('ecore-input-evas', required: true)
+dep_ecore_evas = dependency('ecore-evas', required: true)
+dep_evas = dependency('evas', required: true)
+dep_edje = dependency('edje', required: true)
+dep_efreet = dependency('efreet', required: true)
+dep_efreet_mime = dependency('efreet-mime', required: true)
+dep_efreet_trash = dependency('efreet-trash', required: true)
+dep_eio = dependency('eio', required: true)
+dep_eo = dependency('eo', required: true)
+dep_eldbus = dependency('eldbus', required: true)
+dep_emotion = dependency('emotion', required: true)
+dep_elementary = dependency('elementary', required: true)
+
+dep_wayland = []
+if get_option('wayland') == true
+       wayland_protocols = dependency('wayland-protocols', version: '>= 1.7')
+       dir_wayland_protocols = 
wayland_protocols.get_pkgconfig_variable('pkgdatadir')
+       wayland_version = '>= 1.11.0'
+       dep_wayland = [
+               dependency('ecore-wl2'),
+               dependency('wayland-server', version: wayland_version),
+               dependency('wayland-client', version: wayland_version),
+               wayland_protocols,
+               dependency('wayland-scanner', version: wayland_version),
+               dependency('xkbcommon'),
+               dependency('uuid')
+       ]
+       dep_ecore_drm2 = dependency('ecore-drm2', required: 
get_option('wl-drm'))
+       requires_drm = ''
+       if get_option('wl-drm') == true
+               requires_drm = 'ecore-drm2'
+               dep_wayland += dep_ecore_drm2
+       endif
+       requires_wayland = ' '.join([
+               'wayland-protocols >= 1.7',
+               'ecore-wl2',
+               requires_drm,
+               ' '.join(['wayland-server', wayland_version]),
+               ' '.join(['wayland-client', wayland_version]),
+               ' '.join(['wayland-scanner', wayland_version]),
+               'xkbcommon',
+               'uuid'
+       ])
+       wayland_scanner = find_program('wayland-scanner')
+       gen_scanner_client = generator(wayland_scanner,
+               output: '@BASENAME@-client-protocol.h',
+               arguments: ['client-header', '@INPUT@', '@OUTPUT@'])
+       gen_scanner_server = generator(wayland_scanner,
+               output: '@BASENAME@-server-protocol.h',
+               arguments: ['server-header', '@INPUT@', '@OUTPUT@'])
+       gen_scanner_impl = generator(wayland_scanner,
+               output: '@BASENAME@-protocol.c',
+               arguments: ['code', '@INPUT@', '@OUTPUT@'])
+       config_h.set('HAVE_WAYLAND', '1')
+endif
+
+dep_ecore_x = []
+if get_option('wayland') == true and get_option('wl-x11') == false and 
get_option('xwayland')
+       config_h.set('HAVE_WAYLAND_ONLY', '1')
+else
+       dep_ecore_x = dependency('ecore-x')
+endif
+
+dep_xkeyboard_config = dependency('xkeyboard-config', required: false)
+if dep_xkeyboard_config.found() == true
+       config_h.set_quoted('XKB_BASE', 
dep_xkeyboard_config.get_pkgconfig_variable('xkb_base'))
+endif
+
+eet = find_program('eet')
+gen_eet = generator(eet,
+       output: '@BASENAME@.cfg',
+       arguments: ['-e', '@OUTPUT@', 'config', '@INPUT@', '1'])
+
+eldbus_codegen = find_program('eldbus-codegen')
+
+requires_e = []
+
+dir_pkgconfig = join_paths(dir_lib, 'pkgconfig')
+if freebsd == true
+       dir_pkgconfig = join_paths(dir_lib, 'data/pkgconfig')
+endif
+
+subdir('src/bin')
+
+module_files = []
+module_ldflags = '-module -avoid-version'
+module_includes = ['../../..', '../../bin', '../../bin/efx']
+module_deps = [deps_e, dep_dl]
+
+subdir('src/modules/ibar')
+subdir('src/modules/clock')
+subdir('src/modules/pager')
+subdir('src/modules/pager_plain')
+subdir('src/modules/battery')
+subdir('src/modules/temperature')
+subdir('src/modules/notification')
+subdir('src/modules/cpufreq')
+subdir('src/modules/ibox')
+subdir('src/modules/start')
+subdir('src/modules/winlist')
+subdir('src/modules/fileman')
+subdir('src/modules/fileman_opinfo')
+subdir('src/modules/wizard')
+subdir('src/modules/conf')
+subdir('src/modules/conf_theme')
+subdir('src/modules/conf_intl')
+subdir('src/modules/msgbus')
+subdir('src/modules/conf_applications')
+subdir('src/modules/conf_display')
+subdir('src/modules/conf_shelves')
+subdir('src/modules/conf_bindings')
+subdir('src/modules/conf_window_remembers')
+subdir('src/modules/conf_window_manipulation')
+subdir('src/modules/conf_menus')
+subdir('src/modules/conf_dialogs')
+subdir('src/modules/conf_performance')
+subdir('src/modules/conf_paths')
+subdir('src/modules/conf_interaction')
+subdir('src/modules/gadman')
+subdir('src/modules/mixer')
+subdir('src/modules/connman')
+subdir('src/modules/bluez4')
+subdir('src/modules/syscon')
+subdir('src/modules/everything')
+subdir('src/modules/systray')
+subdir('src/modules/appmenu')
+subdir('src/modules/quickaccess')
+subdir('src/modules/teamwork')
+subdir('src/modules/lokker')
+subdir('src/modules/shot')
+subdir('src/modules/backlight')
+subdir('src/modules/tasks')
+subdir('src/modules/conf_randr')
+subdir('src/modules/xkbswitch')
+subdir('src/modules/tiling')
+subdir('src/modules/music-control')
+subdir('src/modules/packagekit')
+subdir('src/modules/wl_desktop_shell')
+subdir('src/modules/wl_x11')
+subdir('src/modules/wl_wl')
+subdir('src/modules/wl_buffer')
+#subdir('src/modules/wl_fb')
+subdir('src/modules/wl_drm')
+subdir('src/modules/wl_text_input')
+subdir('src/modules/wl_weekeyboard')
+subdir('src/modules/policy_mobile')
+subdir('src/modules/geolocation')
+subdir('src/modules/xwayland')
+subdir('src/modules/wireless')
+subdir('src/modules/time')
+subdir('src/modules/sysinfo')
+subdir('src/modules/luncher')
+
+subdir('config')
+
+subdir('data/backgrounds')
+subdir('data/desktop')
+subdir('data/etc')
+subdir('data/favorites')
+subdir('data/flags')
+subdir('data/icons')
+subdir('data/images')
+subdir('data/input_methods')
+subdir('data/tools')
+subdir('data/units')
+subdir('data/xsession')
+
+
+meson.add_install_script('meson/meson_inst.sh', suid_exes)
+meson.add_install_script('meson/meson_modules.sh', module_files)
+configure_file(output: 'config.h', install: false, configuration: config_h)
+pkgconfig.generate(
+       name: 'enlightenment',
+       description: 'Enlightenment Window Manager',
+       filebase: 'enlightenment',
+       subdirs: 'enlightenment',
+       #requires: deps_e,
+       requires: requires_e,
+       version: e_version_rev,
+       libraries_private: '-lm',
+       install_dir: dir_pkgconfig,
+       variables: [
+               'exec_prefix=${prefix}',
+               'datarootdir=@0@'.format(dir_data),
+               'datadir=${datarootdir}',
+               'modules=@0@/enlightenment/modules'.format(dir_lib),
+               'pkgdatadir=${datarootdir}/enlightenment/data',
+               'themes=${pkgdatadir}/themes',
+               'backgrounds=${pkgdatadir}/backgrounds',
+               'release=@0@'.format(release)
+       ]
+)
+
+install_data(['AUTHORS', 'COPYING'], install_dir: join_paths(dir_data, 
'enlightenment'))
diff --git a/meson/meson_inst.sh b/meson/meson_inst.sh
new file mode 100644
index 000000000..321143e40
--- /dev/null
+++ b/meson/meson_inst.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+for x in "$@" ; do
+       chown root "$DESTDIR/$x"
+       chmod a=rx,u+xs "$DESTDIR/$x"
+done
diff --git a/meson/meson_modules.sh b/meson/meson_modules.sh
new file mode 100644
index 000000000..c6f23181a
--- /dev/null
+++ b/meson/meson_modules.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+for x in "$@" ; do
+       dir="$(dirname $x)"
+       mv "$DESTDIR"/"$x" "$DESTDIR"/"$dir"/module.so
+done
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 000000000..78d7dd66b
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,309 @@
+option('install-sysactions',
+       type: 'boolean',
+       default: true,
+       description: 'install /etc/enlightenment/sysactions.conf: 
(default=true)')
+option('install-enlightenment-menu',
+       type: 'boolean',
+       default: true,
+       description: 'install /etc/xdg/menus/e-applications.menu: 
(default=true)')
+option('files',
+       type: 'boolean',
+       default: true,
+       description: 'enable Files menu item: (default=true)')
+option('nls',
+       type: 'boolean',
+       default: true,
+       description: 'enable localization: (default=true)')
+
+option('pam',
+       type: 'boolean',
+       default: true,
+       description: 'enable PAM support: (default=true)')
+
+option('nls',
+       type: 'boolean',
+       default: true,
+       description: 'enable NLS support: (default=true)')
+
+option('device-udev',
+       type: 'boolean',
+       default: true,
+       description: 'enable udev device backend: (default=true)')
+option('mount-udisks',
+       type: 'boolean',
+       default: true,
+       description: 'enable udisks mounting support: (default=true)')
+option('mount-eeze',
+       type: 'boolean',
+       default: false,
+       description: 'enable eeze mounting support: (default=false)')
+
+option('wayland',
+       type: 'boolean',
+       default: false,
+       value: false,
+       description: 'enable wayland support: (default=false)')
+option('xwayland',
+       type: 'boolean',
+       default: true,
+       description: 'enable xwayland support: (default=true)')
+option('xwayland-bin',
+       type: 'string',
+       default: '',
+       description: 'set the path to Xwayland: (default=)')
+option('wl-buffer',
+       type: 'boolean',
+       default: true,
+       description: 'enable buffer wayland output: (default=true)')
+option('wl-drm',
+       type: 'boolean',
+       default: true,
+       description: 'enable drm wayland output: (default=true)')
+option('wl-wl',
+       type: 'boolean',
+       default: true,
+       description: 'enable nested wayland output: (default=true)')
+option('wl-x11',
+       type: 'boolean',
+       default: true,
+       description: 'enable x11 wayland output: (default=true)')
+option('wl-desktop-shell',
+       type: 'boolean',
+       default: true,
+       description: 'enable wayland desktop shell support: (default=true)')
+option('wl-text-input',
+       type: 'boolean',
+       default: true,
+       description: 'enable wayland vkbd support: (default=true)')
+option('wl-weekeyboard',
+       type: 'boolean',
+       default: true,
+       description: 'enable internal wayland vkbd: (default=true)')
+
+option('systemd',
+       type: 'boolean',
+       default: true,
+       description: 'enable systemd support: (default=true)')
+option('systemdunitdir',
+       type: 'string',
+       default: '',
+       description: 'path to systemd user services directory')
+
+option('appmenu',
+       type: 'boolean',
+       default: true,
+       description: 'enable appmenu module: (default=true)')
+option('backlight',
+       type: 'boolean',
+       default: true,
+       description: 'enable backlight module: (default=true)')
+option('battery',
+       type: 'boolean',
+       default: true,
+       description: 'enable battery module: (default=true)')
+option('bluez4',
+       type: 'boolean',
+       default: true,
+       description: 'enable bluez4 module: (default=true)')
+option('clock',
+       type: 'boolean',
+       default: true,
+       description: 'enable clock module: (default=true)')
+option('connman',
+       type: 'boolean',
+       default: true,
+       description: 'enable connman module: (default=true)')
+option('cpufreq',
+       type: 'boolean',
+       default: true,
+       description: 'enable cpufreq module: (default=true)')
+option('everything',
+       type: 'boolean',
+       default: true,
+       description: 'enable everything module: (default=true)')
+option('fileman',
+       type: 'boolean',
+       default: true,
+       description: 'enable fileman module: (default=true)')
+option('fileman-opinfo',
+       type: 'boolean',
+       default: true,
+       description: 'enable fileman-opinfo module: (default=true)')
+option('gadman',
+       type: 'boolean',
+       default: true,
+       description: 'enable gadman module: (default=true)')
+option('geolocation',
+       type: 'boolean',
+       default: true,
+       description: 'enable geolocation module: (default=true)')
+option('ibar',
+       type: 'boolean',
+       default: true,
+       description: 'enable ibar module: (default=true)')
+option('ibox',
+       type: 'boolean',
+       default: true,
+       description: 'enable ibox module: (default=true)')
+option('lokker',
+       type: 'boolean',
+       default: true,
+       description: 'enable lokker module: (default=true)')
+option('luncher',
+       type: 'boolean',
+       default: true,
+       description: 'enable luncher module: (default=true)')
+option('mixer',
+       type: 'boolean',
+       default: true,
+       description: 'enable mixer module: (default=true)')
+option('msgbus',
+       type: 'boolean',
+       default: true,
+       description: 'enable msgbus module: (default=true)')
+option('music-control',
+       type: 'boolean',
+       default: true,
+       description: 'enable music-control module: (default=true)')
+option('notification',
+       type: 'boolean',
+       default: true,
+       description: 'enable notification module: (default=true)')
+option('packagekit',
+       type: 'boolean',
+       default: true,
+       description: 'enable packagekit module: (default=true)')
+option('pager',
+       type: 'boolean',
+       default: true,
+       description: 'enable pager module: (default=true)')
+option('pager-plain',
+       type: 'boolean',
+       default: true,
+       description: 'enable pager_plain module: (default=true)')
+option('quickaccess',
+       type: 'boolean',
+       default: true,
+       description: 'enable quickaccess module: (default=true)')
+option('policy-mobile',
+       type: 'boolean',
+       default: true,
+       description: 'enable policy-mobile module: (default=true)')
+option('start',
+       type: 'boolean',
+       default: true,
+       description: 'enable start module: (default=true)')
+option('shot',
+       type: 'boolean',
+       default: true,
+       description: 'enable shot module: (default=true)')
+option('syscon',
+       type: 'boolean',
+       default: true,
+       description: 'enable syscon module: (default=true)')
+option('sysinfo',
+       type: 'boolean',
+       default: true,
+       description: 'enable sysinfo module: (default=true)')
+option('systray',
+       type: 'boolean',
+       default: true,
+       description: 'enable systray module: (default=true)')
+option('tasks',
+       type: 'boolean',
+       default: true,
+       description: 'enable tasks module: (default=true)')
+option('teamwork',
+       type: 'boolean',
+       default: true,
+       description: 'enable teamwork module: (default=true)')
+option('temperature',
+       type: 'boolean',
+       default: true,
+       description: 'enable temperature module: (default=true)')
+option('tiling',
+       type: 'boolean',
+       default: true,
+       description: 'enable tiling module: (default=true)')
+option('time',
+       type: 'boolean',
+       default: true,
+       description: 'enable time module: (default=true)')
+option('winlist',
+       type: 'boolean',
+       default: true,
+       description: 'enable winlist module: (default=true)')
+option('wireless',
+       type: 'boolean',
+       default: true,
+       description: 'enable wireless module: (default=true)')
+option('wizard',
+       type: 'boolean',
+       default: true,
+       description: 'enable wizard module: (default=true)')
+option('xkbswitch',
+       type: 'boolean',
+       default: true,
+       description: 'enable xkbswitch module: (default=true)')
+
+
+option('conf',
+       type: 'boolean',
+       default: true,
+       description: 'enable conf module: (default=true)')
+option('conf-applications',
+       type: 'boolean',
+       default: true,
+       description: 'enable conf-applications module: (default=true)')
+option('conf-bindings',
+       type: 'boolean',
+       default: true,
+       description: 'enable conf-bindings module: (default=true)')
+option('conf-dialogs',
+       type: 'boolean',
+       default: true,
+       description: 'enable conf-dialogs module: (default=true)')
+option('conf-display',
+       type: 'boolean',
+       default: true,
+       description: 'enable conf-display module: (default=true)')
+option('conf-interaction',
+       type: 'boolean',
+       default: true,
+       description: 'enable conf-interaction module: (default=true)')
+option('conf-intl',
+       type: 'boolean',
+       default: true,
+       description: 'enable conf-intl module: (default=true)')
+option('conf-menus',
+       type: 'boolean',
+       default: true,
+       description: 'enable conf-menus module: (default=true)')
+option('conf-paths',
+       type: 'boolean',
+       default: true,
+       description: 'enable conf-paths module: (default=true)')
+option('conf-performance',
+       type: 'boolean',
+       default: true,
+       description: 'enable conf-performance module: (default=true)')
+option('conf-randr',
+       type: 'boolean',
+       default: true,
+       description: 'enable conf-randr module: (default=true)')
+option('conf-shelves',
+       type: 'boolean',
+       default: true,
+       description: 'enable conf-shelves module: (default=true)')
+option('conf-theme',
+       type: 'boolean',
+       default: true,
+       description: 'enable conf-theme module: (default=true)')
+option('conf-window-manipulation',
+       type: 'boolean',
+       default: true,
+       description: 'enable conf-window-manipulation module: (default=true)')
+option('conf-window-remembers',
+       type: 'boolean',
+       default: true,
+       description: 'enable conf-window-remembers module: (default=true)')
diff --git a/po/meson.build b/po/meson.build
new file mode 100644
index 000000000..c8aafc73e
--- /dev/null
+++ b/po/meson.build
@@ -0,0 +1,5 @@
+if get_option('nls')
+       i18n = import('i18n')
+       i18n.gettext('enlightenment')
+       config_h.set('HAVE_GETTEXT', '1')
+endif
diff --git a/src/bin/e_fm/meson.build b/src/bin/e_fm/meson.build
new file mode 100644
index 000000000..6b6f9030e
--- /dev/null
+++ b/src/bin/e_fm/meson.build
@@ -0,0 +1,50 @@
+deps_efm = [
+       dep_eina,
+       dep_ecore,
+       dep_ecore_con,
+       dep_ecore_file,
+       dep_ecore_ipc,
+       dep_efreet
+]
+
+udisks_src = []
+if config_h.has('HAVE_UDISKS_MOUNT') == true
+       udisks_src = [
+               'e_fm_main_udisks.c',
+               'e_fm_main_udisks.h',
+               'e_fm_main_udisks2.c',
+               'e_fm_main_udisks2.h'
+       ]
+       deps_efm += [dep_eldbus]
+endif
+
+eeze_src = []
+if config_h.has('HAVE_EEZE_MOUNT') == true
+       eeze_src = [
+               '../e_prefix.c',
+               'e_fm_main_eeze.c',
+               'e_fm_main_eeze.h'
+       ]
+       deps_efm += [dep_eeze, dep_eet]
+endif
+
+efm_src = [
+       'e_fm_main.c',
+       'e_fm_main.h',
+       'e_fm_ipc.c',
+       'e_fm_ipc.h',
+       '../e_fm_shared_codec.c',
+       '../e_fm_shared_device.c',
+       '../e_user.c',
+       '../e_sha1.c',
+       udisks_src,
+       eeze_src
+]
+
+executable('enlightenment_fm',
+       [efm_src],
+       include_directories: include_directories('../../../', '../..', '.', 
'..'),
+       dependencies: [deps_efm],
+       install_dir: dir_e_utils,
+       install: true
+)
diff --git a/src/bin/generated/meson.build b/src/bin/generated/meson.build
new file mode 100644
index 000000000..e3ee230a0
--- /dev/null
+++ b/src/bin/generated/meson.build
@@ -0,0 +1,19 @@
+protos = [
+       
'@0@/unstable/linux-dmabuf/linux-dmabuf-unstable-v1.xml'.format(dir_wayland_protocols),
+       '../../protocol/session-recovery.xml',
+       '../../protocol/www.xml',
+       
'@0@/unstable/xdg-foreign/xdg-foreign-unstable-v1.xml'.format(dir_wayland_protocols),
+       
'@0@/unstable/relative-pointer/relative-pointer-unstable-v1.xml'.format(dir_wayland_protocols),
+       
'@0@/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml'.format(dir_wayland_protocols),
+]
+
+proto_c = []
+proto_h = []
+
+foreach proto: protos
+       proto_h += gen_scanner_server.process(proto)
+       proto_c += gen_scanner_impl.process(proto)
+endforeach
+
+wayland_proto_c = proto_c
+wayland_proto_h = proto_h
diff --git a/src/bin/meson.build b/src/bin/meson.build
new file mode 100644
index 000000000..fac63d96d
--- /dev/null
+++ b/src/bin/meson.build
@@ -0,0 +1,576 @@
+if config_h.has('HAVE_WAYLAND') == true
+       subdir('generated')
+endif
+
+e_fm_shared_types = configuration_data()
+e_fm_shared_types.set10('EEZE_MOUNT_CONFIG', config_h.has('HAVE_EEZE_MOUNT'))
+e_fm_shared_types.set10('DBUS_MOUNT_CONFIG', config_h.has('HAVE_UDISKS_MOUNT'))
+
+configure_file(input: 'e_fm_shared_types.h.in',
+       output: 'e_fm_shared_types.h',
+       configuration: e_fm_shared_types,
+       install: true,
+       install_dir: dir_include_e)
+
+deps_e = [
+       dep_rt,
+       dep_m,
+       dep_dl,
+       dep_pam,
+       dep_eina,
+       dep_eet,
+       dep_eeze,
+       dep_ecore,
+       dep_ecore_ipc,
+       dep_ecore_file,
+       dep_ecore_con,
+       dep_ecore_input,
+       dep_ecore_input_evas,
+       dep_evas,
+       dep_efreet,
+       dep_efreet_mime,
+       dep_eio,
+       dep_eldbus,
+       dep_emotion,
+       dep_elementary
+]
+
+requires_e = ' '.join([
+       'eina >= 1.19.99',
+       'eet',
+       'ecore',
+       'ecore-ipc',
+       'ecore-file',
+       'ecore-con',
+       'ecore-input',
+       'ecore-input-evas',
+       'evas',
+       'efreet',
+       'efreet-mime',
+       'eio',
+       requires_eeze,
+       'eldbus',
+       'emotion',
+       'elementary',
+])
+
+src_e = [
+       'e_about.c',
+       'e_acpi.c',
+       'e_actions.c',
+       'e_atoms.c',
+       'e_auth.c',
+       'e_backlight.c',
+       'e_bg.c',
+       'e_bindings.c',
+       'e_bryce.c',
+       'e_bryce_editor.c',
+       'e_client.c',
+       'e_client_volume.c',
+       'e_color.c',
+       'e_color_dialog.c',
+       'e_comp.c',
+       'e_comp_canvas.c',
+       'e_comp_cfdata.c',
+       'e_comp_object.c',
+       'e_config.c',
+       'e_config_data.c',
+       'e_config_dialog.c',
+       'e_configure.c',
+       'e_confirm_dialog.c',
+       'e_datastore.c',
+       'e_dbusmenu.c',
+       'e_desk.c',
+       'e_deskenv.c',
+       'e_desklock.c',
+       'e_deskmirror.c',
+       'e_dialog.c',
+       'e_dpms.c',
+       'e_desktop_editor.c',
+       'e_dnd.c',
+       'e_entry_dialog.c',
+       'e_env.c',
+       'e_error.c',
+       'e_exec.c',
+       'e_exehist.c',
+       'e_filereg.c',
+       'e_flowlayout.c',
+       'e_fm.c',
+       'e_fm_custom.c',
+       'e_fm_device.c',
+       'e_fm_mime.c',
+       'e_fm_op_registry.c',
+       'e_fm_prop.c',
+       'e_fm_shared_codec.c',
+       'e_fm_shared_device.c',
+       'e_focus.c',
+       'e_font.c',
+       'e_gadcon.c',
+       'e_gadcon_popup.c',
+       'e_gadget.c',
+       'e_grabinput.c',
+       'e_grab_dialog.c',
+       'e_hints.c',
+       'e_icon.c',
+       'e_ilist.c',
+       'e_import_config_dialog.c',
+       'e_import_dialog.c',
+       'e_init.c',
+       'e_int_client_locks.c',
+       'e_int_client_menu.c',
+       'e_int_client_prop.c',
+       'e_int_client_remember.c',
+       'e_int_config_modules.c',
+       'e_int_config_comp.c',
+       'e_int_config_comp_match.c',
+       'e_int_gadcon_config.c',
+       'e_intl.c',
+       'e_intl_data.c',
+       'e_int_menus.c',
+       'e_int_shelf_config.c',
+       'e_int_toolbar_config.c',
+       'e_ipc.c',
+       'e_ipc_codec.c',
+       'e_layout.c',
+       'e_livethumb.c',
+       'e_log.c',
+       'e_main.c',
+       'e_maximize.c',
+       'e_menu.c',
+       'e_module.c',
+       'e_mouse.c',
+       'e_moveresize.c',
+       'e_msgbus.c',
+       'e_notification.c',
+       'e_msg.c',
+       'e_obj_dialog.c',
+       'e_object.c',
+       'e_order.c',
+       'e_pan.c',
+       'e_path.c',
+       'e_pixmap.c',
+       'e_place.c',
+       'e_pointer.c',
+       'e_powersave.c',
+       'e_prefix.c',
+       'e_randr2.c',
+       'e_remember.c',
+       'e_resist.c',
+       'e_scale.c',
+       'e_screensaver.c',
+       'e_scrollframe.c',
+       'e_sha1.c',
+       'e_shelf.c',
+       'e_signals.c',
+       'e_slidecore.c',
+       'e_slider.c',
+       'e_slidesel.c',
+       'e_spectrum.c',
+       'e_startup.c',
+       'e_sys.c',
+       'e_test.c',
+       'e_theme_about.c',
+       'e_theme.c',
+       'e_thumb.c',
+       'e_toolbar.c',
+       'e_update.c',
+       'e_user.c',
+       'e_utils.c',
+       'e_video.c',
+       'e_widget_aspect.c',
+       'e_widget_button.c',
+       'e_widget.c',
+       'e_widget_check.c',
+       'e_widget_color_well.c',
+       'e_widget_config_list.c',
+       'e_widget_bgpreview.c',
+       'e_widget_entry.c',
+       'e_widget_filepreview.c',
+       'e_widget_flist.c',
+       'e_widget_font_preview.c',
+       'e_widget_framelist.c',
+       'e_widget_frametable.c',
+       'e_widget_fsel.c',
+       'e_widget_ilist.c',
+       'e_widget_image.c',
+       'e_widget_label.c',
+       'e_widget_list.c',
+       'e_widget_preview.c',
+       'e_widget_radio.c',
+       'e_widget_scrollframe.c',
+       'e_widget_slider.c',
+       'e_widget_spectrum.c',
+       'e_widget_table.c',
+       'e_widget_textblock.c',
+       'e_widget_toolbar.c',
+       'e_widget_toolbook.c',
+       'e_win.c',
+       'e_xkb.c',
+       'e_xinerama.c',
+       'e_zoomap.c',
+       'e_zone.c',
+       'efx/efx_bumpmapping.c',
+       'efx/efx.c',
+       'efx/efx_fade.c',
+       'efx/efx_helpers.c',
+       'efx/efx_move.c',
+       'efx/efx_pan.c',
+       'efx/e_efx_private.h',
+       'efx/efx_queue.c',
+       'efx/efx_resize.c',
+       'efx/efx_rotate.c',
+       'efx/efx_spin.c',
+       'efx/efx_util.c',
+       'efx/efx_zoom.c'
+]
+
+headers_e = [
+       'efx/e_Efx.h',
+       'e_about.h',
+       'e_acpi.h',
+       'e_actions.h',
+       'e_alert.h',
+       'e_atoms.h',
+       'e_auth.h',
+       'e_backlight.h',
+       'e_bg.h',
+       'e_bindings.h',
+       'e_bryce.h',
+       'e_client.h',
+       'e_client_volume.h',
+       'e_client.x',
+       'e_color_dialog.h',
+       'e_color.h',
+       'e_comp.h',
+       'e_comp_canvas.h',
+       'e_comp_cfdata.h',
+       'e_comp_object.h',
+       'e_comp_x.h',
+       'e_comp_x_randr.h',
+       'e_config_data.h',
+       'e_config_dialog.h',
+       'e_config.h',
+       'e_configure.h',
+       'e_confirm_dialog.h',
+       'e_datastore.h',
+       'e_dbusmenu.h',
+       'e_desk.h',
+       'e_deskenv.h',
+       'e_desklock.h',
+       'e_deskmirror.h',
+       'e_dialog.h',
+       'e_dnd.h',
+       'e_dpms.h',
+       'e_desktop_editor.h',
+       'e_entry_dialog.h',
+       'e_env.h',
+       'e_error.h',
+       'e_exec.h',
+       'e_exehist.h',
+       'e_filereg.h',
+       'e_flowlayout.h',
+       'e_fm_custom.h',
+       'e_fm_device.h',
+       'e_fm.h',
+       'e_fm_mime.h',
+       'e_fm_op.h',
+       'e_fm_op_registry.h',
+       'e_fm_prop.h',
+       'e_fm_shared_codec.h',
+       'e_fm_shared_device.h',
+       'e_focus.h',
+       'e_font.h',
+       'e_gadcon.h',
+       'e_gadcon_popup.h',
+       'e_gadget.h',
+       'e_grabinput.h',
+       'e_grab_dialog.h',
+       'e.h',
+       'e_macros.h',
+       'e_hints.h',
+       'e_icon.h',
+       'e_ilist.h',
+       'e_import_config_dialog.h',
+       'e_import_dialog.h',
+       'e_includes.h',
+       'e_init.h',
+       'e_int_client_locks.h',
+       'e_int_client_menu.h',
+       'e_int_client_prop.h',
+       'e_int_client_remember.h',
+       'e_int_config_modules.h',
+       'e_int_gadcon_config.h',
+       'e_intl_data.h',
+       'e_intl.h',
+       'e_int_menus.h',
+       'e_int_shelf_config.h',
+       'e_int_toolbar_config.h',
+       'e_ipc_codec.h',
+       'e_ipc.h',
+       'e_layout.h',
+       'e_livethumb.h',
+       'e_log.h',
+       'e_maximize.h',
+       'e_menu.h',
+       'e_mmx.h',
+       'e_module.h',
+       'e_mouse.h',
+       'e_moveresize.h',
+       'e_msgbus.h',
+       'e_notification.h',
+       'e_msg.h',
+       'e_obj_dialog.h',
+       'e_object.h',
+       'e_order.h',
+       'e_pan.h',
+       'e_path.h',
+       'e_pixmap.h',
+       'e_place.h',
+       'e_pointer.h',
+       'e_powersave.h',
+       'e_prefix.h',
+       'e_randr2.h',
+       'e_remember.h',
+       'e_resist.h',
+       'e_scale.h',
+       'e_screensaver.h',
+       'e_scrollframe.h',
+       'e_sha1.h',
+       'e_shelf.h',
+       'e_signals.h',
+       'e_slidecore.h',
+       'e_slider.h',
+       'e_slidesel.h',
+       'e_spectrum.h',
+       'e_startup.h',
+       'e_sys.h',
+       'e_test.h',
+       'e_theme_about.h',
+       'e_theme.h',
+       'e_thumb.h',
+       'e_toolbar.h',
+       'e_update.h',
+       'e_user.h',
+       'e_utils.h',
+       'e_video.h',
+       'e_widget_aspect.h',
+       'e_widget_button.h',
+       'e_widget_check.h',
+       'e_widget_color_well.h',
+       'e_widget_config_list.h',
+       'e_widget_bgpreview.h',
+       'e_widget_entry.h',
+       'e_widget_filepreview.h',
+       'e_widget_flist.h',
+       'e_widget_font_preview.h',
+       'e_widget_framelist.h',
+       'e_widget_frametable.h',
+       'e_widget_fsel.h',
+       'e_widget.h',
+       'e_widget_ilist.h',
+       'e_widget_image.h',
+       'e_widget_label.h',
+       'e_widget_list.h',
+       'e_widget_preview.h',
+       'e_widget_radio.h',
+       'e_widget_scrollframe.h',
+       'e_widget_slider.h',
+       'e_widget_spectrum.h',
+       'e_widget_table.h',
+       'e_widget_textblock.h',
+       'e_widget_toolbar.h',
+       'e_widget_toolbook.h',
+       'e_win.h',
+       'e_xinerama.h',
+       'e_xkb.h',
+       'e_xsettings.h',
+       'e_zoomap.h',
+       'e_zone.h'
+]
+
+if config_h.has('HAVE_WAYLAND') == true
+       src_e += [
+               'e_comp_wl_data.c',
+               'e_comp_wl_input.c',
+               'e_comp_wl_dmabuf.c',
+               'e_comp_wl.c',
+               'e_comp_wl_extensions.c',
+               wayland_proto_c,
+               wayland_proto_h
+       ]
+       headers_e += [
+               'e_comp_wl_data.h',
+               'e_comp_wl_dmabuf.h',
+               'e_comp_wl_input.h',
+               'e_comp_wl.h'
+       ]
+       deps_e += dep_wayland
+       requires_e = ' '.join([requires_e, requires_wayland])
+endif
+
+if config_h.has('HAVE_WAYLAND_ONLY') == false
+       src_e += [
+               'e_comp_x.c',
+               'e_comp_x_randr.c',
+               'e_alert.c',
+               'e_xsettings.c'
+       ]
+       deps_e += dep_ecore_x
+       requires_e = ' '.join([requires_e, 'ecore-x'])
+endif
+
+install_headers(
+       headers_e,
+       subdir: 'enlightenment'
+)
+
+executable('enlightenment',
+       src_e,
+       include_directories: include_directories('.', 'efx', 'generated', 
'../..'),
+       dependencies: deps_e,
+       c_args: '-DE_LOGGING=1',
+       link_args: '-export-dynamic',
+       install_dir: dir_bin,
+       install: true
+)
+
+dir_e_utils = join_paths(dir_lib, 'enlightenment/utils')
+
+executable('enlightenment_imc',
+       ['e_config_data.c',
+               'e_imc_main.c',
+               'e_intl_data.c'],
+       include_directories: include_directories('.', '../..'),
+       dependencies: [dep_eina, dep_eet, dep_ecore_file],
+       install_dir: dir_bin,
+       install: true
+)
+
+executable('enlightenment_start',
+       ['e_start_main.c'],
+       include_directories: include_directories('../..'),
+       dependencies: [dep_eina, dep_evas],
+       install_dir: dir_bin,
+       install: true
+)
+
+executable('enlightenment_filemanager',
+       ['e_fm_cmdline.c'],
+       include_directories: include_directories('../..'),
+       dependencies: [dep_eina, dep_ecore, dep_ecore_file, dep_eldbus, 
dep_efreet],
+       install_dir: dir_bin,
+       install: true
+)
+
+executable('enlightenment_open',
+       ['e_open.c'],
+       include_directories: include_directories('../..'),
+       dependencies: [dep_eina, dep_ecore, dep_efreet, dep_efreet_mime],
+       install_dir: dir_bin,
+       install: true
+)
+
+executable('enlightenment_askpass',
+       ['e_askpass_main.c'],
+       dependencies: [dep_elementary],
+       install_dir: dir_bin,
+       install: true
+)
+
+
+executable('enlightenment_backlight',
+       ['e_backlight_main.c'],
+       include_directories: include_directories('../..'),
+       dependencies: [dep_eina, dep_eeze],
+       c_args: suid_cflags,
+       link_args: suid_ldflags,
+       install_dir: dir_e_utils,
+       install: true
+)
+suid_exes += join_paths(dir_e_utils, 'enlightenment_backlight')
+
+executable('enlightenment_fm_op',
+       ['e_fm_op.c'],
+       include_directories: include_directories('../..'),
+       dependencies: [dep_m, dep_eina, dep_ecore, dep_ecore_file],
+       install_dir: dir_e_utils,
+       install: true
+)
+
+executable('enlightenment_thumb',
+       ['e_thumb_main.c', 'e_sha1.c', 'e_user.c'],
+       include_directories: include_directories('../..'),
+       dependencies: [
+               dep_m, dep_eina, dep_eet, dep_evas, dep_ecore,
+               dep_ecore_ipc, dep_ecore_evas, dep_efreet,
+               dep_ecore_file, dep_edje, dep_emotion
+       ],
+       install_dir: dir_e_utils,
+       install: true
+)
+
+executable('enlightenment_elm_cfgtool',
+       ['e_elm_cfgtool_main.c'],
+       include_directories: include_directories('../..'),
+       dependencies: [
+               dep_m, dep_elementary
+       ],
+       install_dir: dir_e_utils,
+       install: true
+)
+
+executable('enlightenment_static_grabber',
+       ['e_static_grab.c'],
+       include_directories: include_directories('../..'),
+       dependencies: [
+               dep_eina, dep_eet
+       ],
+       install_dir: dir_e_utils,
+       install: true
+)
+
+deps_e_alert = []
+if config_h.has('HAVE_WAYLAND') == true
+       deps_e_alert += [dep_ecore_drm2, dep_ecore_input]
+endif
+if config_h.has('HAVE_WAYLAND_ONLY') == false
+       deps_e_alert += [
+               dependency('xcb'),
+               dependency('xcb-shape'),
+               dependency('xcb-keysyms')
+       ]
+endif
+executable('enlightenment_alert',
+       ['e_alert_main.c'],
+       include_directories: include_directories('../..'),
+       dependencies: [
+               dep_eina, dep_ecore, dep_evas, dep_ecore_ipc,
+               deps_e_alert
+       ],
+       install_dir: dir_e_utils,
+       install: true
+)
+
+executable('enlightenment_sys',
+       ['e_sys_main.c', 'e_sys_l2ping.c'],
+       include_directories: include_directories('../..'),
+       dependencies: [dep_eina, dep_ecore, dep_bluez],
+       c_args: suid_cflags,
+       link_args: suid_ldflags,
+       install_dir: dir_e_utils,
+       install: true
+)
+suid_exes += join_paths(dir_e_utils, 'enlightenment_sys')
+
+if freebsd == true
+       executable('enlightenment_ckpasswd',
+               'e_ckpasswd_main.c',
+               c_args: suid_cflags,
+               link_args: suid_ldflags,
+               install_dir: dir_e_utils,
+               install: true
+       )
+       suid_exes += join_paths(dir_e_utils, 'enlightenment_ckpasswd')
+endif
+
+subdir('e_fm')
diff --git a/src/modules/appmenu/meson.build b/src/modules/appmenu/meson.build
new file mode 100644
index 000000000..40b7e093b
--- /dev/null
+++ b/src/modules/appmenu/meson.build
@@ -0,0 +1,28 @@
+appmenu_dist = [
+       'e-module-appmenu.edj',
+       'module.desktop',
+]
+
+appmenu_src = [
+       'e_mod_main.c',
+]
+
+appmenu_dir = join_paths(dir_module_e, 'appmenu', module_arch)
+if get_option('appmenu') == true
+       config_h.set('USE_MODULE_APPMENU', '1')
+
+       install_data(appmenu_dist,
+               install_dir: join_paths(dir_module_e, 'appmenu')
+       )
+
+        module_files += join_paths(appmenu_dir, 'appmenu.so')
+       shared_module('appmenu',
+                appmenu_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: appmenu_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/backlight/meson.build 
b/src/modules/backlight/meson.build
new file mode 100644
index 000000000..939090420
--- /dev/null
+++ b/src/modules/backlight/meson.build
@@ -0,0 +1,30 @@
+backlight_dist = [
+       'e-module-backlight.edj',
+       'module.desktop',
+]
+
+backlight_src = [
+       'e_mod_main.c',
+       'gadget/backlight.c',
+       'gadget/mod.c'
+]
+
+backlight_dir = join_paths(dir_module_e, 'backlight', module_arch)
+if get_option('backlight') == true
+       config_h.set('USE_MODULE_BACKLIGHT', '1')
+
+       install_data(backlight_dist,
+               install_dir: join_paths(dir_module_e, 'backlight')
+       )
+
+        module_files += join_paths(backlight_dir, 'backlight.so')
+       shared_module('backlight',
+                backlight_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: backlight_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/battery/meson.build b/src/modules/battery/meson.build
new file mode 100644
index 000000000..4d138a099
--- /dev/null
+++ b/src/modules/battery/meson.build
@@ -0,0 +1,45 @@
+battery_dist = [
+       'e-module-battery.edj',
+       'module.desktop',
+]
+
+battery_src = [
+       'e_mod_config.c',
+       'e_mod_main.c',
+       'e_mod_main.h',
+]
+
+if config_h.has('HAVE_EEZE') == true
+       battery_src += 'e_mod_udev.c'
+elif host_machine.system().contains('bsd') == true
+       battery_src += 'e_mod_sysctl.c'
+else
+       battery_src += 'e_mod_upower.c'
+endif
+
+battery_dir = join_paths(dir_module_e, 'battery', module_arch)
+if get_option('battery') == true
+       config_h.set('USE_MODULE_BATTERY', '1')
+
+       install_data(battery_dist,
+               install_dir: join_paths(dir_module_e, 'battery')
+       )
+
+        module_files += join_paths(battery_dir, 'battery.so')
+       shared_module('battery',
+                battery_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: battery_dir,
+                install: true
+        )
+
+       executable('batget',
+               'batget.c',
+               include_directories: include_directories(module_includes),
+               dependencies: [dep_eina, dep_ecore, dep_ecore_con, 
dep_ecore_file],
+               install_dir: battery_dir,
+               install: true
+       )
+endif
diff --git a/src/modules/bluez4/meson.build b/src/modules/bluez4/meson.build
new file mode 100644
index 000000000..7c6e107ea
--- /dev/null
+++ b/src/modules/bluez4/meson.build
@@ -0,0 +1,30 @@
+bluez4_dist = [
+       'e-module-bluez4.edj',
+       'module.desktop',
+]
+
+bluez4_src = [
+       'agent.c',
+       'ebluez4.c',
+       'e_mod_main.c'
+]
+
+bluez4_dir = join_paths(dir_module_e, 'bluez4', module_arch)
+if get_option('bluez4') == true
+       config_h.set('USE_MODULE_BLUEZ4', '1')
+
+       install_data(bluez4_dist,
+               install_dir: join_paths(dir_module_e, 'bluez4')
+       )
+
+        module_files += join_paths(bluez4_dir, 'bluez4.so')
+       shared_module('bluez4',
+                bluez4_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: bluez4_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/clock/meson.build b/src/modules/clock/meson.build
new file mode 100644
index 000000000..8fc730244
--- /dev/null
+++ b/src/modules/clock/meson.build
@@ -0,0 +1,29 @@
+clock_dist = [
+       'e-module-clock.edj',
+       'module.desktop',
+]
+
+clock_src = [
+       'e_mod_config.c',
+       'e_mod_main.c'
+]
+
+clock_dir = join_paths(dir_module_e, 'clock', module_arch)
+if get_option('clock') == true
+       config_h.set('USE_MODULE_CLOCK', '1')
+
+       install_data(clock_dist,
+               install_dir: join_paths(dir_module_e, 'clock')
+       )
+
+        module_files += join_paths(clock_dir, 'clock.so')
+       shared_module('clock',
+                clock_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: clock_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/conf/meson.build b/src/modules/conf/meson.build
new file mode 100644
index 000000000..75e02d4d9
--- /dev/null
+++ b/src/modules/conf/meson.build
@@ -0,0 +1,30 @@
+conf_dist = [
+       'e-module-conf.edj',
+       'module.desktop',
+]
+
+conf_src = [
+       'e_conf.c',
+       'e_mod_config.c',
+       'e_mod_main.c'
+]
+
+conf_dir = join_paths(dir_module_e, 'conf', module_arch)
+if get_option('conf') == true
+       config_h.set('USE_MODULE_CONF', '1')
+
+       install_data(conf_dist,
+               install_dir: join_paths(dir_module_e, 'conf')
+       )
+
+        module_files += join_paths(conf_dir, 'conf.so')
+       shared_module('conf',
+                conf_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: conf_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/conf_applications/meson.build 
b/src/modules/conf_applications/meson.build
new file mode 100644
index 000000000..3975a9397
--- /dev/null
+++ b/src/modules/conf_applications/meson.build
@@ -0,0 +1,33 @@
+conf_applications_dist = [
+       'e-module-conf_applications.edj',
+       'module.desktop',
+]
+
+conf_applications_src = [
+       'e_int_config_apps.c',
+       'e_int_config_apps_personal.c',
+       'e_int_config_defapps.c',
+       'e_int_config_deskenv.c',
+       'e_mod_main.c',
+       'e_mod_main.h',
+]
+
+conf_applications_dir = join_paths(dir_module_e, 'conf_applications', 
module_arch)
+if get_option('conf-applications') == true
+       config_h.set('USE_MODULE_CONF_APPLICATIONS', '1')
+
+       install_data(conf_applications_dist,
+               install_dir: join_paths(dir_module_e, 'conf_applications')
+       )
+
+        module_files += join_paths(conf_applications_dir, 
'conf_applications.so')
+       shared_module('conf_applications',
+                conf_applications_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: conf_applications_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/conf_bindings/meson.build 
b/src/modules/conf_bindings/meson.build
new file mode 100644
index 000000000..c6507f68d
--- /dev/null
+++ b/src/modules/conf_bindings/meson.build
@@ -0,0 +1,33 @@
+conf_bindings_dist = [
+       'module.desktop',
+]
+
+conf_bindings_src = [
+       'e_int_config_acpibindings.c',
+       'e_int_config_edgebindings.c',
+       'e_int_config_keybindings.c',
+       'e_int_config_mousebindings.c',
+       'e_int_config_signalbindings.c',
+       'e_mod_main.c',
+       'e_mod_main.h',
+]
+
+conf_bindings_dir = join_paths(dir_module_e, 'conf_bindings', module_arch)
+if get_option('conf-bindings') == true
+       config_h.set('USE_MODULE_CONF_BINDINGS', '1')
+
+       install_data(conf_bindings_dist,
+               install_dir: join_paths(dir_module_e, 'conf_bindings')
+       )
+
+        module_files += join_paths(conf_bindings_dir, 'conf_bindings.so')
+       shared_module('conf_bindings',
+                conf_bindings_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: conf_bindings_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/conf_dialogs/meson.build 
b/src/modules/conf_dialogs/meson.build
new file mode 100644
index 000000000..6ef8e8c3b
--- /dev/null
+++ b/src/modules/conf_dialogs/meson.build
@@ -0,0 +1,31 @@
+conf_dialogs_dist = [
+       'e-module-conf_dialogs.edj',
+       'module.desktop',
+]
+
+conf_dialogs_src = [
+       'e_int_config_dialogs.c',
+       'e_int_config_profiles.c',
+       'e_mod_main.c',
+       'e_mod_main.h',
+]
+
+conf_dialogs_dir = join_paths(dir_module_e, 'conf_dialogs', module_arch)
+if get_option('conf-dialogs') == true
+       config_h.set('USE_MODULE_CONF_DIALOGS', '1')
+
+       install_data(conf_dialogs_dist,
+               install_dir: join_paths(dir_module_e, 'conf_dialogs')
+       )
+
+        module_files += join_paths(conf_dialogs_dir, 'conf_dialogs.so')
+       shared_module('conf_dialogs',
+                conf_dialogs_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: conf_dialogs_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/conf_display/meson.build 
b/src/modules/conf_display/meson.build
new file mode 100644
index 000000000..d6d3dd47e
--- /dev/null
+++ b/src/modules/conf_display/meson.build
@@ -0,0 +1,34 @@
+conf_display_dist = [
+       'module.desktop',
+]
+
+conf_display_src = [
+       'e_int_config_desk.c',
+       'e_int_config_desklock.c',
+       'e_int_config_desklock_fsel.c',
+       'e_int_config_desks.c',
+       'e_int_config_dpms.c',
+       'e_int_config_screensaver.c',
+       'e_mod_main.c',
+       'e_mod_main.h',
+]
+
+conf_display_dir = join_paths(dir_module_e, 'conf_display', module_arch)
+if get_option('conf-display') == true
+       config_h.set('USE_MODULE_CONF_DISPLAY', '1')
+
+       install_data(conf_display_dist,
+               install_dir: join_paths(dir_module_e, 'conf_display')
+       )
+
+        module_files += join_paths(conf_display_dir, 'conf_display.so')
+       shared_module('conf_display',
+                conf_display_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: conf_display_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/conf_interaction/meson.build 
b/src/modules/conf_interaction/meson.build
new file mode 100644
index 000000000..f33026f35
--- /dev/null
+++ b/src/modules/conf_interaction/meson.build
@@ -0,0 +1,31 @@
+conf_interaction_dist = [
+       'e-module-conf_interaction.edj',
+       'module.desktop',
+]
+
+conf_interaction_src = [
+       'e_int_config_interaction.c',
+       'e_int_config_mouse.c',
+       'e_mod_main.c',
+       'e_mod_main.h',
+]
+
+conf_interaction_dir = join_paths(dir_module_e, 'conf_interaction', 
module_arch)
+if get_option('conf-interaction') == true
+       config_h.set('USE_MODULE_CONF_INTERACTION', '1')
+
+       install_data(conf_interaction_dist,
+               install_dir: join_paths(dir_module_e, 'conf_interaction')
+       )
+
+        module_files += join_paths(conf_interaction_dir, 'conf_interaction.so')
+       shared_module('conf_interaction',
+                conf_interaction_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: conf_interaction_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/conf_intl/meson.build 
b/src/modules/conf_intl/meson.build
new file mode 100644
index 000000000..bffa6cbc9
--- /dev/null
+++ b/src/modules/conf_intl/meson.build
@@ -0,0 +1,31 @@
+conf_intl_dist = [
+       'module.desktop',
+]
+
+conf_intl_src = [
+       'e_int_config_imc.c',
+       'e_int_config_imc_import.c',
+       'e_int_config_intl.c',
+       'e_mod_main.c',
+       'e_mod_main.h',
+]
+
+conf_intl_dir = join_paths(dir_module_e, 'conf_intl', module_arch)
+if get_option('conf-intl') == true
+       config_h.set('USE_MODULE_CONF_INTL', '1')
+
+       install_data(conf_intl_dist,
+               install_dir: join_paths(dir_module_e, 'conf_intl')
+       )
+
+        module_files += join_paths(conf_intl_dir, 'conf_intl.so')
+       shared_module('conf_intl',
+                conf_intl_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: conf_intl_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/conf_menus/meson.build 
b/src/modules/conf_menus/meson.build
new file mode 100644
index 000000000..d699b8a30
--- /dev/null
+++ b/src/modules/conf_menus/meson.build
@@ -0,0 +1,30 @@
+conf_menus_dist = [
+       'e-module-conf_menus.edj',
+       'module.desktop',
+]
+
+conf_menus_src = [
+       'e_int_config_menus.c',
+       'e_mod_main.c',
+       'e_mod_main.h',
+]
+
+conf_menus_dir = join_paths(dir_module_e, 'conf_menus', module_arch)
+if get_option('conf-menus') == true
+       config_h.set('USE_MODULE_CONF_MENUS', '1')
+
+       install_data(conf_menus_dist,
+               install_dir: join_paths(dir_module_e, 'conf_menus')
+       )
+
+        module_files += join_paths(conf_menus_dir, 'conf_menus.so')
+       shared_module('conf_menus',
+                conf_menus_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: conf_menus_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/conf_paths/meson.build 
b/src/modules/conf_paths/meson.build
new file mode 100644
index 000000000..0e62e776b
--- /dev/null
+++ b/src/modules/conf_paths/meson.build
@@ -0,0 +1,31 @@
+conf_paths_dist = [
+       'e-module-conf_paths.edj',
+       'module.desktop',
+]
+
+conf_paths_src = [
+       'e_int_config_env.c',
+       'e_int_config_paths.c',
+       'e_mod_main.c',
+       'e_mod_main.h',
+]
+
+conf_paths_dir = join_paths(dir_module_e, 'conf_paths', module_arch)
+if get_option('conf-paths') == true
+       config_h.set('USE_MODULE_CONF_PATHS', '1')
+
+       install_data(conf_paths_dist,
+               install_dir: join_paths(dir_module_e, 'conf_paths')
+       )
+
+        module_files += join_paths(conf_paths_dir, 'conf_paths.so')
+       shared_module('conf_paths',
+                conf_paths_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: conf_paths_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/conf_performance/meson.build 
b/src/modules/conf_performance/meson.build
new file mode 100644
index 000000000..85c122c3f
--- /dev/null
+++ b/src/modules/conf_performance/meson.build
@@ -0,0 +1,31 @@
+conf_performance_dist = [
+       'e-module-conf_performance.edj',
+       'module.desktop',
+]
+
+conf_performance_src = [
+       'e_int_config_performance.c',
+       'e_int_config_powermanagement.c',
+       'e_mod_main.c',
+       'e_mod_main.h',
+]
+
+conf_performance_dir = join_paths(dir_module_e, 'conf_performance', 
module_arch)
+if get_option('conf-performance') == true
+       config_h.set('USE_MODULE_CONF_PERFORMANCE', '1')
+
+       install_data(conf_performance_dist,
+               install_dir: join_paths(dir_module_e, 'conf_performance')
+       )
+
+        module_files += join_paths(conf_performance_dir, 'conf_performance.so')
+       shared_module('conf_performance',
+                conf_performance_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: conf_performance_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/conf_randr/meson.build 
b/src/modules/conf_randr/meson.build
new file mode 100644
index 000000000..2ce882dba
--- /dev/null
+++ b/src/modules/conf_randr/meson.build
@@ -0,0 +1,31 @@
+conf_randr_dist = [
+       'e-module-conf_randr.edj',
+       'module.desktop',
+]
+
+conf_randr_src = [
+       'e_int_config_randr2.c',
+       'e_mod_main.c',
+       'e_int_config_randr2.h',
+       'e_mod_main.h',
+]
+
+conf_randr_dir = join_paths(dir_module_e, 'conf_randr', module_arch)
+if get_option('conf-randr') == true
+       config_h.set('USE_MODULE_CONF_RANDR', '1')
+
+       install_data(conf_randr_dist,
+               install_dir: join_paths(dir_module_e, 'conf_randr')
+       )
+
+        module_files += join_paths(conf_randr_dir, 'conf_randr.so')
+       shared_module('conf_randr',
+                conf_randr_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: conf_randr_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/conf_shelves/meson.build 
b/src/modules/conf_shelves/meson.build
new file mode 100644
index 000000000..387aeec86
--- /dev/null
+++ b/src/modules/conf_shelves/meson.build
@@ -0,0 +1,31 @@
+conf_shelves_dist = [
+       'e-module-conf_shelves.edj',
+       'module.desktop',
+]
+
+conf_shelves_src = [
+       'e_int_config_shelf.c',
+       'e_mod_main.c',
+       'e_int_config_shelf.h',
+       'e_mod_main.h',
+]
+
+conf_shelves_dir = join_paths(dir_module_e, 'conf_shelves', module_arch)
+if get_option('conf-shelves') == true
+       config_h.set('USE_MODULE_CONF_SHELVES', '1')
+
+       install_data(conf_shelves_dist,
+               install_dir: join_paths(dir_module_e, 'conf_shelves')
+       )
+
+        module_files += join_paths(conf_shelves_dir, 'conf_shelves.so')
+       shared_module('conf_shelves',
+                conf_shelves_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: conf_shelves_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/conf_theme/meson.build 
b/src/modules/conf_theme/meson.build
new file mode 100644
index 000000000..28ff663c4
--- /dev/null
+++ b/src/modules/conf_theme/meson.build
@@ -0,0 +1,37 @@
+conf_theme_dist = [
+       'module.desktop',
+]
+
+conf_theme_src = [
+       'e_int_config_borders.c',
+       'e_int_config_color_classes.c',
+       'e_int_config_fonts.c',
+       'e_int_config_scale.c',
+       'e_int_config_theme.c',
+       'e_int_config_theme_import.c',
+       'e_int_config_transitions.c',
+       'e_int_config_wallpaper.c',
+       'e_int_config_xsettings.c',
+       'e_mod_main.c',
+       'e_mod_main.h',
+]
+
+conf_theme_dir = join_paths(dir_module_e, 'conf_theme', module_arch)
+if get_option('conf-theme') == true
+       config_h.set('USE_MODULE_CONF_THEME', '1')
+
+       install_data(conf_theme_dist,
+               install_dir: join_paths(dir_module_e, 'conf_theme')
+       )
+
+        module_files += join_paths(conf_theme_dir, 'conf_theme.so')
+       shared_module('conf_theme',
+                conf_theme_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: conf_theme_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/conf_window_manipulation/meson.build 
b/src/modules/conf_window_manipulation/meson.build
new file mode 100644
index 000000000..e404b3c83
--- /dev/null
+++ b/src/modules/conf_window_manipulation/meson.build
@@ -0,0 +1,34 @@
+conf_window_manipulation_dist = [
+       'e-module-conf_winmanip.edj',
+       'module.desktop',
+]
+
+conf_window_manipulation_src = [
+       'e_int_config_clientlist.c',
+       'e_int_config_focus.c',
+       'e_int_config_window_display.c',
+       'e_int_config_window_geometry.c',
+       'e_int_config_window_process.c',
+       'e_mod_main.c',
+       'e_mod_main.h',
+]
+
+conf_window_manipulation_dir = join_paths(dir_module_e, 
'conf_window_manipulation', module_arch)
+if get_option('conf-window-manipulation') == true
+       config_h.set('USE_MODULE_CONF_WINDOW_MANIPULATION', '1')
+
+       install_data(conf_window_manipulation_dist,
+               install_dir: join_paths(dir_module_e, 
'conf_window_manipulation')
+       )
+
+        module_files += join_paths(conf_window_manipulation_dir, 
'conf_window_manipulation.so')
+       shared_module('conf_window_manipulation',
+                conf_window_manipulation_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: conf_window_manipulation_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/conf_window_remembers/meson.build 
b/src/modules/conf_window_remembers/meson.build
new file mode 100644
index 000000000..ed4f1bc8d
--- /dev/null
+++ b/src/modules/conf_window_remembers/meson.build
@@ -0,0 +1,30 @@
+conf_window_remembers_dist = [
+       'e-module-conf_window_remembers.edj',
+       'module.desktop',
+]
+
+conf_window_remembers_src = [
+       'e_int_config_remembers.c',
+       'e_mod_main.c',
+       'e_mod_main.h',
+]
+
+conf_window_remembers_dir = join_paths(dir_module_e, 'conf_window_remembers', 
module_arch)
+if get_option('conf-window-remembers') == true
+       config_h.set('USE_MODULE_CONF_WINDOW_REMEMBERS', '1')
+
+       install_data(conf_window_remembers_dist,
+               install_dir: join_paths(dir_module_e, 'conf_window_remembers')
+       )
+
+        module_files += join_paths(conf_window_remembers_dir, 
'conf_window_remembers.so')
+       shared_module('conf_window_remembers',
+                conf_window_remembers_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: conf_window_remembers_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/connman/meson.build b/src/modules/connman/meson.build
new file mode 100644
index 000000000..7d1327a88
--- /dev/null
+++ b/src/modules/connman/meson.build
@@ -0,0 +1,33 @@
+connman_dist = [
+       'e-module-connman.edj',
+       'module.desktop',
+]
+
+connman_src = [
+       'agent.c',
+       'e_connman.c',
+       'e_mod_config.c',
+       'e_mod_main.c',
+       'E_Connman.h',
+       'e_mod_main.h',
+]
+
+connman_dir = join_paths(dir_module_e, 'connman', module_arch)
+if get_option('connman') == true
+       config_h.set('USE_MODULE_CONNMAN', '1')
+
+       install_data(connman_dist,
+               install_dir: join_paths(dir_module_e, 'connman')
+       )
+
+        module_files += join_paths(connman_dir, 'connman.so')
+       shared_module('connman',
+                connman_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: connman_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/cpufreq/meson.build b/src/modules/cpufreq/meson.build
new file mode 100644
index 000000000..e69f255b0
--- /dev/null
+++ b/src/modules/cpufreq/meson.build
@@ -0,0 +1,40 @@
+cpufreq_dist = [
+       'e-module-cpufreq.edj',
+       'module.desktop',
+]
+
+cpufreq_src = [
+       'e_mod_config.c',
+       'e_mod_main.c',
+       'freqset.c',
+       'e_mod_main.h',
+]
+
+cpufreq_dir = join_paths(dir_module_e, 'cpufreq', module_arch)
+if get_option('cpufreq') == true
+       config_h.set('USE_MODULE_CPUFREQ', '1')
+
+       install_data(cpufreq_dist,
+               install_dir: join_paths(dir_module_e, 'cpufreq')
+       )
+
+        module_files += join_paths(cpufreq_dir, 'cpufreq.so')
+       shared_module('cpufreq',
+                cpufreq_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: cpufreq_dir,
+                install: true
+        )
+
+       executable('freqset',
+               'freqset.c',
+               c_args: suid_cflags,
+               link_args: suid_ldflags,
+               install_dir: cpufreq_dir,
+               install: true
+       )
+       suid_exes += join_paths(cpufreq_dir, 'freqset')
+endif
+
diff --git a/src/modules/everything/meson.build 
b/src/modules/everything/meson.build
new file mode 100644
index 000000000..15f8619c2
--- /dev/null
+++ b/src/modules/everything/meson.build
@@ -0,0 +1,70 @@
+everything_dist = [
+       'e-module-everything.edj',
+       'e-module-everything-start.edj',
+       'module.desktop',
+]
+
+everything_src = [
+       'e_mod_main.c',
+       'evry.c',
+       'evry_config.c',
+       'evry_gadget.c',
+       'evry_history.c',
+       'evry_plug_actions.c',
+       'evry_plug_aggregator.c',
+       'evry_plug_apps.c',
+       'evry_plug_calc.c',
+       'evry_plug_clipboard.c',
+       'evry_plug_collection.c',
+       'evry_plug_files.c',
+       'evry_plugin.c',
+       'evry_plug_settings.c',
+       'evry_plug_text.c',
+       'evry_plug_windows.c',
+       'evry_util.c',
+       'evry_view.c',
+       'evry_view_help.c',
+       'evry_view_tabs.c',
+       'md5.c',
+       'e_mod_main.h',
+       'evry_api.h',
+       'evry_types.h',
+       'md5.h',
+]
+
+everything_dir = join_paths(dir_module_e, 'everything', module_arch)
+if get_option('everything') == true
+       config_h.set('USE_MODULE_EVERYTHING', '1')
+
+       install_data(everything_dist,
+               install_dir: join_paths(dir_module_e, 'everything')
+       )
+
+        module_files += join_paths(everything_dir, 'everything.so')
+       shared_module('everything',
+                everything_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: everything_dir,
+                install: true
+        )
+
+       install_headers(['evry_api.h', 'evry_types.h'],
+               subdir: 'enlightenment'
+       )
+       pkgconfig.generate(
+               name: 'e17-everything',
+               description: 'Everything module for Enlightenment',
+               filebase: 'everything',
+               subdirs: 'enlightenment',
+               requires: 'enlightenment',
+               version: e_version_rev,
+               install_dir: dir_pkgconfig,
+               variables: [
+                       'exec_prefix=${prefix}',
+                       
'plugindir=${libdir}/enlightenment/modules/everything/plugins'
+               ]
+       )
+endif
+
diff --git a/src/modules/fileman/meson.build b/src/modules/fileman/meson.build
new file mode 100644
index 000000000..629d9527f
--- /dev/null
+++ b/src/modules/fileman/meson.build
@@ -0,0 +1,36 @@
+fileman_dist = [
+       'e-module-fileman.edj',
+       'module.desktop',
+]
+
+fileman_src = [
+       'e_fwin.c',
+       'e_fwin_nav.c',
+       'e_int_config_mime.c',
+       'e_int_config_mime_edit.c',
+       'e_mod_config.c',
+       'e_mod_dbus.c',
+       'e_mod_main.c',
+       'e_mod_menu.c',
+       'e_mod_main.h',
+]
+
+fileman_dir = join_paths(dir_module_e, 'fileman', module_arch)
+if get_option('fileman') == true
+       config_h.set('USE_MODULE_FILEMAN', '1')
+
+       install_data(fileman_dist,
+               install_dir: join_paths(dir_module_e, 'fileman')
+       )
+
+        module_files += join_paths(fileman_dir, 'fileman.so')
+       shared_module('fileman',
+                fileman_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: fileman_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/fileman_opinfo/meson.build 
b/src/modules/fileman_opinfo/meson.build
new file mode 100644
index 000000000..b726b4f14
--- /dev/null
+++ b/src/modules/fileman_opinfo/meson.build
@@ -0,0 +1,28 @@
+fileman_opinfo_dist = [
+       'e-module-fileman_opinfo.edj',
+       'module.desktop',
+]
+
+fileman_opinfo_src = [
+       'e_mod_main.c',
+]
+
+fileman_opinfo_dir = join_paths(dir_module_e, 'fileman_opinfo', module_arch)
+if get_option('fileman-opinfo') == true
+       config_h.set('USE_MODULE_FILEMAN_OPINFO', '1')
+
+       install_data(fileman_opinfo_dist,
+               install_dir: join_paths(dir_module_e, 'fileman_opinfo')
+       )
+
+        module_files += join_paths(fileman_opinfo_dir, 'fileman_opinfo.so')
+       shared_module('fileman_opinfo',
+                fileman_opinfo_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: fileman_opinfo_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/gadman/meson.build b/src/modules/gadman/meson.build
new file mode 100644
index 000000000..d6e4d61da
--- /dev/null
+++ b/src/modules/gadman/meson.build
@@ -0,0 +1,31 @@
+gadman_dist = [
+       'e-module-gadman.edj',
+       'module.desktop',
+]
+
+gadman_src = [
+       'e_mod_config.c',
+       'e_mod_gadman.c',
+       'e_mod_main.c',
+       'e_mod_gadman.h',
+]
+
+gadman_dir = join_paths(dir_module_e, 'gadman', module_arch)
+if get_option('gadman') == true
+       config_h.set('USE_MODULE_GADMAN', '1')
+
+       install_data(gadman_dist,
+               install_dir: join_paths(dir_module_e, 'gadman')
+       )
+
+        module_files += join_paths(gadman_dir, 'gadman.so')
+       shared_module('gadman',
+                gadman_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: gadman_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/geolocation/meson.build 
b/src/modules/geolocation/meson.build
new file mode 100644
index 000000000..21c413200
--- /dev/null
+++ b/src/modules/geolocation/meson.build
@@ -0,0 +1,42 @@
+geolocation_dist = [
+       'e-module-geolocation.edj',
+       'module.desktop',
+]
+
+geolocation_src = [
+       'e_mod_main.c'
+]
+
+geolocation_dir = join_paths(dir_module_e, 'geolocation', module_arch)
+if get_option('geolocation') == true
+       config_h.set('USE_MODULE_GEOLOCATION', '1')
+
+       install_data(geolocation_dist,
+               install_dir: join_paths(dir_module_e, 'geolocation')
+       )
+
+       gen_geo = custom_target('geolocation_gen',
+               input: 'org.freedesktop.GeoClue2.xml',
+               command: [eldbus_codegen, '@INPUT@', '-O', '@OUTDIR@'],
+               output: [
+                       'eldbus_geo_clue2_client.c',
+                       'eldbus_geo_clue2_client.h',
+                       'eldbus_geo_clue2_location.c',
+                       'eldbus_geo_clue2_location.h',
+                       'eldbus_geo_clue2_manager.c',
+                       'eldbus_geo_clue2_manager.h',
+                       'eldbus_utils.h'
+               ]
+       )
+
+        module_files += join_paths(geolocation_dir, 'geolocation.so')
+       shared_module('geolocation',
+                [geolocation_src, gen_geo],
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: geolocation_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/ibar/meson.build b/src/modules/ibar/meson.build
new file mode 100644
index 000000000..f5bffbffe
--- /dev/null
+++ b/src/modules/ibar/meson.build
@@ -0,0 +1,30 @@
+ibar_dist = [
+       'e-module-ibar.edj',
+       'module.desktop',
+]
+
+ibar_src = [
+       'e_mod_config.c',
+       'e_mod_main.c',
+       'e_mod_main.h',
+]
+
+ibar_dir = join_paths(dir_module_e, 'ibar', module_arch)
+if get_option('ibar') == true
+       config_h.set('USE_MODULE_IBAR', '1')
+
+       install_data(ibar_dist,
+               install_dir: join_paths(dir_module_e, 'ibar')
+       )
+
+        module_files += join_paths(ibar_dir, 'ibar.so')
+       shared_module('ibar',
+                ibar_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: ibar_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/ibox/meson.build b/src/modules/ibox/meson.build
new file mode 100644
index 000000000..0a9c40468
--- /dev/null
+++ b/src/modules/ibox/meson.build
@@ -0,0 +1,30 @@
+ibox_dist = [
+       'e-module-ibox.edj',
+       'module.desktop',
+]
+
+ibox_src = [
+       'e_mod_config.c',
+       'e_mod_main.c',
+       'e_mod_main.h',
+]
+
+ibox_dir = join_paths(dir_module_e, 'ibox', module_arch)
+if get_option('ibox') == true
+       config_h.set('USE_MODULE_IBOX', '1')
+
+       install_data(ibox_dist,
+               install_dir: join_paths(dir_module_e, 'ibox')
+       )
+
+        module_files += join_paths(ibox_dir, 'ibox.so')
+       shared_module('ibox',
+                ibox_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: ibox_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/lokker/meson.build b/src/modules/lokker/meson.build
new file mode 100644
index 000000000..c9acbfcc5
--- /dev/null
+++ b/src/modules/lokker/meson.build
@@ -0,0 +1,21 @@
+lokker_src = [
+       'e_mod_main.c',
+       'lokker.c',
+       'e_mod_main.h',
+]
+
+lokker_dir = join_paths(dir_module_e, 'lokker', module_arch)
+if get_option('lokker') == true
+       config_h.set('USE_MODULE_LOKKER', '1')
+
+        module_files += join_paths(lokker_dir, 'lokker.so')
+       shared_module('lokker',
+                lokker_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: lokker_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/luncher/meson.build b/src/modules/luncher/meson.build
new file mode 100644
index 000000000..62c89bc72
--- /dev/null
+++ b/src/modules/luncher/meson.build
@@ -0,0 +1,23 @@
+luncher_src = [
+       'bar.c',
+       'config.c',
+       'grid.c',
+       'mod.c',
+       'luncher.h',
+]
+
+luncher_dir = join_paths(dir_module_e, 'luncher', module_arch)
+if get_option('luncher') == true
+       config_h.set('USE_MODULE_LUNCHER', '1')
+
+        module_files += join_paths(luncher_dir, 'luncher.so')
+       shared_module('luncher',
+                luncher_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: luncher_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/mixer/meson.build b/src/modules/mixer/meson.build
new file mode 100644
index 000000000..e427701f0
--- /dev/null
+++ b/src/modules/mixer/meson.build
@@ -0,0 +1,73 @@
+mixer_dist = [
+       'e-module-mixer.edj',
+       'module.desktop',
+]
+
+mixer_src = [
+       'e_mod_config.c',
+       'e_mod_main.c',
+       'e_mod_config.h',
+       'e_mod_main.h',
+       'gadget/mixer.h',
+       'gadget/mixer.c',
+       'gadget/mod.c',
+]
+
+mixer_lib = [
+       'lib/emix.c',
+       'lib/emix.h'
+]
+
+mixer_dir = join_paths(dir_module_e, 'mixer', module_arch)
+if get_option('mixer') == true
+       config_h.set('USE_MODULE_MIXER', '1')
+
+       dep_alsa = dependency('alsa', version: '>= 1.0.8', required: false)
+       config_h.set10('HAVE_ALSA', dep_alsa.found())
+       dep_pulse = dependency('libpulse', required: false)
+       dep_pulse_simple = dependency('libpulse-simple', required: false)
+       config_h.set10('HAVE_PULSE', dep_pulse.found() and 
dep_pulse_simple.found())
+       if config_h.has('HAVE_ALSA') == true
+               mixer_lib += ['lib/backends/alsa/alsa.c']
+       endif
+       if config_h.has('HAVE_PULSE') == true
+               mixer_lib += [
+                       'lib/backends/pulseaudio/pulse_ml.c',
+                       'lib/backends/pulseaudio/pulse.c'
+               ]
+       endif
+       if config_h.has('HAVE_PULSE') == false and config_h.has('HAVE_ALSA') == 
false
+               error('mixer support requested, but no backends found!')
+       endif
+
+       install_data(mixer_dist,
+               install_dir: join_paths(dir_module_e, 'mixer')
+       )
+       install_data('emixer.desktop',
+               install_dir: join_paths(dir_data, 'applications')
+       )
+       install_data('emixer.png',
+               install_dir: join_paths(dir_data, 'pixmaps')
+       )
+
+        module_files += join_paths(mixer_dir, 'mixer.so')
+       shared_module('mixer',
+                mixer_src, mixer_lib,
+                include_directories: include_directories(module_includes, '.', 
'lib'),
+                name_prefix: '',
+                dependencies: [module_deps, dep_alsa, dep_pulse, 
dep_pulse_simple],
+                install_dir: mixer_dir,
+                install: true
+        )
+
+       executable('emixer',
+               ['emixer.c', mixer_lib],
+               include_directories: include_directories(module_includes, '.', 
'lib'),
+               dependencies: [
+                       dep_elementary, dep_alsa, dep_pulse, dep_pulse_simple
+               ],
+               c_args: '-DEMIXER_BUILD',
+               install_dir: dir_bin,
+               install: true
+       )
+endif
diff --git a/src/modules/msgbus/meson.build b/src/modules/msgbus/meson.build
new file mode 100644
index 000000000..a2c52ed81
--- /dev/null
+++ b/src/modules/msgbus/meson.build
@@ -0,0 +1,26 @@
+msgbus_src = [
+       'e_mod_main.c',
+       'msgbus_audit.c',
+       'msgbus_desktop.c',
+       'msgbus_lang.c',
+       'msgbus_module.c',
+       'msgbus_profile.c',
+       'msgbus_window.c',
+       'e_mod_main.h',
+]
+
+msgbus_dir = join_paths(dir_module_e, 'msgbus', module_arch)
+if get_option('msgbus') == true
+       config_h.set('USE_MODULE_MSGBUS', '1')
+
+        module_files += join_paths(msgbus_dir, 'msgbus.so')
+       shared_module('msgbus',
+                msgbus_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: msgbus_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/music-control/meson.build 
b/src/modules/music-control/meson.build
new file mode 100644
index 000000000..b62bac142
--- /dev/null
+++ b/src/modules/music-control/meson.build
@@ -0,0 +1,34 @@
+music_control_src = [
+       'e_mod_main.c',
+       'ui.c',
+       'e_mod_main.h',
+       'private.h',
+]
+
+music_control_dir = join_paths(dir_module_e, 'music-control', module_arch)
+if get_option('music-control') == true
+       config_h.set('USE_MODULE_MUSIC_CONTROL', '1')
+
+       gen_music_control = custom_target('music_control_gen',
+               input: 'introspect.xml',
+               command: [eldbus_codegen, '@INPUT@', '-O', '@OUTDIR@'],
+               output: [
+                       'eldbus_media_player2_player.c',
+                       'eldbus_mpris_media_player2.c',
+                       'eldbus_media_player2_player.h',
+                       'eldbus_mpris_media_player2.h',
+                       'eldbus_utils.h',
+               ],
+       )
+
+        module_files += join_paths(music_control_dir, 'music-control.so')
+       shared_module('music-control',
+                [music_control_src, gen_music_control],
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: music_control_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/notification/meson.build 
b/src/modules/notification/meson.build
new file mode 100644
index 000000000..75f3ee37a
--- /dev/null
+++ b/src/modules/notification/meson.build
@@ -0,0 +1,22 @@
+notification_src = [
+       'e_mod_config.c',
+       'e_mod_main.c',
+       'e_mod_popup.c',
+       'e_mod_main.h',
+]
+
+notification_dir = join_paths(dir_module_e, 'notification', module_arch)
+if get_option('notification') == true
+       config_h.set('USE_MODULE_NOTIFICATION', '1')
+
+        module_files += join_paths(notification_dir, 'notification.so')
+       shared_module('notification',
+                notification_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: notification_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/packagekit/meson.build 
b/src/modules/packagekit/meson.build
new file mode 100644
index 000000000..2fdb95988
--- /dev/null
+++ b/src/modules/packagekit/meson.build
@@ -0,0 +1,24 @@
+packagekit_src = [
+       'e_mod_config.c',
+       'e_mod_main.c',
+       'e_mod_packagekit.c',
+       'e_mod_config.h',
+       'e_mod_main.h',
+       'e_mod_packagekit.h',
+]
+
+packagekit_dir = join_paths(dir_module_e, 'packagekit', module_arch)
+if get_option('packagekit') == true
+       config_h.set('USE_MODULE_PACKAGEKIT', '1')
+
+        module_files += join_paths(packagekit_dir, 'packagekit.so')
+       shared_module('packagekit',
+                packagekit_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: packagekit_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/pager/meson.build b/src/modules/pager/meson.build
new file mode 100644
index 000000000..93a5921de
--- /dev/null
+++ b/src/modules/pager/meson.build
@@ -0,0 +1,25 @@
+pager_src = [
+       'e_mod_config.c',
+       'e_mod_main.c',
+       'e_mod_main.h',
+       'gadget/pager.h',
+       'gadget/pager.c',
+       'gadget/mod.c',
+       'gadget/config.c'
+]
+
+pager_dir = join_paths(dir_module_e, 'pager', module_arch)
+if get_option('pager') == true
+       config_h.set('USE_MODULE_PAGER', '1')
+
+        module_files += join_paths(pager_dir, 'pager.so')
+       shared_module('pager',
+                pager_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: pager_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/pager_plain/meson.build 
b/src/modules/pager_plain/meson.build
new file mode 100644
index 000000000..0475791b1
--- /dev/null
+++ b/src/modules/pager_plain/meson.build
@@ -0,0 +1,21 @@
+pager_plain_src = [
+       'e_mod_config.c',
+       'e_mod_main.c',
+       'e_mod_main.h',
+]
+
+pager_plain_dir = join_paths(dir_module_e, 'pager_plain', module_arch)
+if get_option('pager-plain') == true
+       config_h.set('USE_MODULE_PAGER_PLAIN', '1')
+
+        module_files += join_paths(pager_plain_dir, 'pager_plain.so')
+       shared_module('pager_plain',
+                pager_plain_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: pager_plain_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/policy_mobile/meson.build 
b/src/modules/policy_mobile/meson.build
new file mode 100644
index 000000000..34b15ea5a
--- /dev/null
+++ b/src/modules/policy_mobile/meson.build
@@ -0,0 +1,22 @@
+policy_mobile_src = [
+       'e_mod_config.c',
+       'e_mod_main.c',
+       'e_mod_softkey.c',
+       'e_mod_main.h',
+]
+
+policy_mobile_dir = join_paths(dir_module_e, 'policy_mobile', module_arch)
+if get_option('policy-mobile') == true
+       config_h.set('USE_MODULE_POLICY_MOBILE', '1')
+
+        module_files += join_paths(policy_mobile_dir, 'policy_mobile.so')
+       shared_module('policy_mobile',
+                policy_mobile_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: policy_mobile_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/quickaccess/meson.build 
b/src/modules/quickaccess/meson.build
new file mode 100644
index 000000000..fcda28f4b
--- /dev/null
+++ b/src/modules/quickaccess/meson.build
@@ -0,0 +1,24 @@
+quickaccess_src = [
+       'e_mod_config.c',
+       'e_mod_main.c',
+       'e_mod_quickaccess.c',
+       'e_quickaccess_bindings.c',
+       'e_quickaccess_db.c',
+       'e_mod_main.h',
+]
+
+quickaccess_dir = join_paths(dir_module_e, 'quickaccess', module_arch)
+if get_option('quickaccess') == true
+       config_h.set('USE_MODULE_QUICKACCESS', '1')
+
+        module_files += join_paths(quickaccess_dir, 'quickaccess.so')
+       shared_module('quickaccess',
+                quickaccess_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: quickaccess_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/shot/meson.build b/src/modules/shot/meson.build
new file mode 100644
index 000000000..ba2b0d165
--- /dev/null
+++ b/src/modules/shot/meson.build
@@ -0,0 +1,19 @@
+shot_src = [
+       'e_mod_main.c',
+]
+
+shot_dir = join_paths(dir_module_e, 'shot', module_arch)
+if get_option('shot') == true
+       config_h.set('USE_MODULE_SHOT', '1')
+
+        module_files += join_paths(shot_dir, 'shot.so')
+       shared_module('shot',
+                shot_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: shot_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/start/meson.build b/src/modules/start/meson.build
new file mode 100644
index 000000000..57eab69f8
--- /dev/null
+++ b/src/modules/start/meson.build
@@ -0,0 +1,20 @@
+start_src = [
+       'e_mod_main.c',
+       'start.c',
+]
+
+start_dir = join_paths(dir_module_e, 'start', module_arch)
+if get_option('start') == true
+       config_h.set('USE_MODULE_START', '1')
+
+        module_files += join_paths(start_dir, 'start.so')
+       shared_module('start',
+                start_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: start_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/syscon/meson.build b/src/modules/syscon/meson.build
new file mode 100644
index 000000000..b21ed37ec
--- /dev/null
+++ b/src/modules/syscon/meson.build
@@ -0,0 +1,23 @@
+syscon_src = [
+       'e_int_config_syscon.c',
+       'e_mod_main.c',
+       'e_syscon.c',
+       'e_syscon_gadget.c',
+       'e_mod_main.h',
+]
+
+syscon_dir = join_paths(dir_module_e, 'syscon', module_arch)
+if get_option('syscon') == true
+       config_h.set('USE_MODULE_SYSCON', '1')
+
+        module_files += join_paths(syscon_dir, 'syscon.so')
+       shared_module('syscon',
+                syscon_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: syscon_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/sysinfo/meson.build b/src/modules/sysinfo/meson.build
new file mode 100644
index 000000000..0a349f807
--- /dev/null
+++ b/src/modules/sysinfo/meson.build
@@ -0,0 +1,72 @@
+sysinfo_src = [
+       'mod.c',
+       'sysinfo.c',
+       'sysinfo.h',
+       'batman/batman.h',
+       'batman/batman.c',
+       'batman/batman_fallback.c',
+       'batman/batman_config.c',
+       'thermal/thermal.h',
+       'thermal/thermal.c',
+       'thermal/thermal_config.c',
+       'thermal/thermal_fallback.c',
+       'cpuclock/cpuclock.h',
+       'cpuclock/cpuclock.c',
+       'cpuclock/cpuclock_config.c',
+       'cpumonitor/cpumonitor.h',
+       'cpumonitor/cpumonitor.c',
+       'cpumonitor/cpumonitor_config.c',
+       'cpumonitor/cpumonitor_proc.c',
+       'memusage/memusage.h',
+       'memusage/memusage.c',
+       'memusage/memusage_config.c',
+       'memusage/memusage_proc.c',
+       'netstatus/netstatus.h',
+       'netstatus/netstatus.c',
+       'netstatus/netstatus_config.c',
+       'netstatus/netstatus_proc.c',
+]
+
+if config_h.has('HAVE_EEZE') == true
+       sysinfo_src += ['batman/batman_udev.c', 'thermal/thermal_udev.c']
+elif host_machine.system().contains('bsd') == true
+       sysinfo_src += ['batman/batman_sysctl.c',
+               'thermal/thermal_sysctl.c',
+               'cpuclock/cpuclock_sysctl.c',
+               'netstatus/netstatus_sysctl.c',
+               'cpumonitor/cpumonitor_sysctl.c',
+               'memusage/memusage_sysctl.c'
+       ]
+else
+       sysinfo_src += ['batman/batman_upower.c',
+               'thermal/thermal_sysctl.c',
+               'cpuclock/cpuclock_sysctl.c'
+       ]
+endif
+
+sysinfo_dir = join_paths(dir_module_e, 'sysinfo', module_arch)
+if get_option('sysinfo') == true
+       config_h.set('USE_MODULE_SYSINFO', '1')
+
+        module_files += join_paths(sysinfo_dir, 'sysinfo.so')
+       shared_module('sysinfo',
+                sysinfo_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: sysinfo_dir,
+                install: true
+        )
+
+       executable('cpuclock_sysfs',
+               'cpuclock/cpuclock_sysfs.c',
+               include_directories: include_directories(module_includes),
+               dependencies: dep_crypt,
+               c_args: suid_cflags,
+               link_args: suid_ldflags,
+               install_dir: join_paths(dir_module_e, 'sysinfo'),
+               install: true
+       )
+       suid_exes == join_paths(sysinfo_dir, 'cpuclock_sysfs')
+endif
+
diff --git a/src/modules/systray/meson.build b/src/modules/systray/meson.build
new file mode 100644
index 000000000..224598108
--- /dev/null
+++ b/src/modules/systray/meson.build
@@ -0,0 +1,24 @@
+systray_src = [
+       'e_mod_main.c',
+       'e_mod_notifier_host.c',
+       'e_mod_notifier_host_dbus.c',
+       'e_mod_notifier_watcher.c',
+       'e_mod_main.h',
+       'e_mod_notifier_host_private.h',
+]
+
+systray_dir = join_paths(dir_module_e, 'systray', module_arch)
+if get_option('systray') == true
+       config_h.set('USE_MODULE_SYSTRAY', '1')
+
+        module_files += join_paths(systray_dir, 'systray.so')
+       shared_module('systray',
+                systray_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: systray_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/tasks/meson.build b/src/modules/tasks/meson.build
new file mode 100644
index 000000000..81fd90074
--- /dev/null
+++ b/src/modules/tasks/meson.build
@@ -0,0 +1,21 @@
+tasks_src = [
+       'e_mod_config.c',
+       'e_mod_main.c',
+       'e_mod_main.h',
+]
+
+tasks_dir = join_paths(dir_module_e, 'tasks', module_arch)
+if get_option('tasks') == true
+       config_h.set('USE_MODULE_TASKS', '1')
+
+        module_files += join_paths(tasks_dir, 'tasks.so')
+       shared_module('tasks',
+                tasks_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: tasks_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/teamwork/meson.build b/src/modules/teamwork/meson.build
new file mode 100644
index 000000000..d031447fc
--- /dev/null
+++ b/src/modules/teamwork/meson.build
@@ -0,0 +1,35 @@
+teamwork_src = [
+       'e_mod_config.c',
+       'e_mod_main.c',
+       'e_mod_tw.c',
+       'e_mod_main.h',
+]
+
+if config_h.has('HAVE_WAYLAND') == true
+       teamwork_src += [
+               'wl.c',
+               'wl_teamwork.c',
+               'wl_teamwork.h'
+       ]
+endif
+if config_h.has('HAVE_WAYLAND_ONLY') == false
+       teamwork_src += [
+               'x11.c'
+       ]
+endif
+
+teamwork_dir = join_paths(dir_module_e, 'teamwork', module_arch)
+if get_option('teamwork') == true
+       config_h.set('USE_MODULE_TEAMWORK', '1')
+
+        module_files += join_paths(teamwork_dir, 'teamwork.so')
+       shared_module('teamwork',
+                teamwork_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: teamwork_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/temperature/meson.build 
b/src/modules/temperature/meson.build
new file mode 100644
index 000000000..d90d881d5
--- /dev/null
+++ b/src/modules/temperature/meson.build
@@ -0,0 +1,23 @@
+temperature_src = [
+       'e_mod_config.c',
+       'e_mod_main.c',
+       'e_mod_tempget.c',
+       'e_mod_udev.c',
+       'e_mod_main.h',
+]
+
+temperature_dir = join_paths(dir_module_e, 'temperature', module_arch)
+if get_option('temperature') == true
+       config_h.set('USE_MODULE_TEMPERATURE', '1')
+
+        module_files += join_paths(temperature_dir, 'temperature.so')
+       shared_module('temperature',
+                temperature_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: temperature_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/tiling/meson.build b/src/modules/tiling/meson.build
new file mode 100644
index 000000000..dd0a66f14
--- /dev/null
+++ b/src/modules/tiling/meson.build
@@ -0,0 +1,23 @@
+tiling_src = [
+       'e_mod_config.c',
+       'e_mod_tiling.c',
+       'window_tree.c',
+       'e_mod_tiling.h',
+       'window_tree.h',
+]
+
+tiling_dir = join_paths(dir_module_e, 'tiling', module_arch)
+if get_option('tiling') == true
+       config_h.set('USE_MODULE_TILING', '1')
+
+        module_files += join_paths(tiling_dir, 'tiling.so')
+       shared_module('tiling',
+                tiling_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: tiling_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/time/meson.build b/src/modules/time/meson.build
new file mode 100644
index 000000000..97ee6f34e
--- /dev/null
+++ b/src/modules/time/meson.build
@@ -0,0 +1,23 @@
+time_src = [
+       'clock.c',
+       'config.c',
+       'mod.c',
+       'time.c',
+       'clock.h',
+]
+
+time_dir = join_paths(dir_module_e, 'time', module_arch)
+if get_option('time') == true
+       config_h.set('USE_MODULE_TIME', '1')
+
+        module_files += join_paths(time_dir, 'time.so')
+       shared_module('time',
+                time_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: time_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/winlist/meson.build b/src/modules/winlist/meson.build
new file mode 100644
index 000000000..82d68274d
--- /dev/null
+++ b/src/modules/winlist/meson.build
@@ -0,0 +1,23 @@
+winlist_src = [
+       'e_int_config_winlist.c',
+       'e_mod_main.c',
+       'e_winlist.c',
+       'e_mod_main.h',
+       'e_winlist.h',
+]
+
+winlist_dir = join_paths(dir_module_e, 'winlist', module_arch)
+if get_option('winlist') == true
+       config_h.set('USE_MODULE_WINLIST', '1')
+
+        module_files += join_paths(winlist_dir, 'winlist.so')
+       shared_module('winlist',
+                winlist_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: winlist_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/wireless/meson.build b/src/modules/wireless/meson.build
new file mode 100644
index 000000000..7b3df0ed5
--- /dev/null
+++ b/src/modules/wireless/meson.build
@@ -0,0 +1,22 @@
+wireless_src = [
+       'connman.c',
+       'mod.c',
+       'wireless.c',
+       'wireless.h',
+]
+
+wireless_dir = join_paths(dir_module_e, 'wireless', module_arch)
+if get_option('wireless') == true
+       config_h.set('USE_MODULE_WIRELESS', '1')
+
+        module_files += join_paths(wireless_dir, 'wireless.so')
+       shared_module('wireless',
+                wireless_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: wireless_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/wizard/meson.build b/src/modules/wizard/meson.build
new file mode 100644
index 000000000..2ca9d038a
--- /dev/null
+++ b/src/modules/wizard/meson.build
@@ -0,0 +1,67 @@
+wizard_dist = [
+       'data/def-ibar.txt',
+       'data/desktop/home.desktop',
+       'data/desktop/root.desktop',
+       'data/desktop/tmp.desktop'
+]
+
+wizard_src = [
+       'e_mod_main.c',
+       'e_wizard.c',
+       'e_wizard.h',
+]
+
+wizard_mods = [
+       'page_000',
+       'page_010',
+       'page_011',
+       'page_020',
+       'page_030',
+       'page_040',
+       'page_050',
+       'page_060',
+       'page_065',
+       'page_070',
+       'page_080',
+       'page_090',
+       'page_100',
+       'page_110',
+       'page_120',
+       'page_130',
+       'page_150',
+       'page_160',
+       'page_170',
+       'page_180',
+       'page_200',
+]
+
+wizard_dir = join_paths(dir_module_e, 'wizard', module_arch)
+if get_option('wizard') == true
+       config_h.set('USE_MODULE_WIZARD', '1')
+
+       install_data(wizard_dist,
+               install_dir: join_paths(dir_module_e, 'wizard')
+       )
+
+        module_files += join_paths(wizard_dir, 'wizard.so')
+       shared_module('wizard',
+                wizard_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: wizard_dir,
+                install: true
+        )
+
+       foreach wizard_mod: wizard_mods
+               shared_module(wizard_mod,
+                               '@0@.c'.format(wizard_mod),
+                               include_directories: 
include_directories(module_includes),
+                               name_prefix: '',
+                               dependencies: module_deps,
+                               install_dir: wizard_dir,
+                               install: true
+               )
+       endforeach
+endif
+
diff --git a/src/modules/wl_buffer/meson.build 
b/src/modules/wl_buffer/meson.build
new file mode 100644
index 000000000..b301b57eb
--- /dev/null
+++ b/src/modules/wl_buffer/meson.build
@@ -0,0 +1,19 @@
+wl_buffer_src = [
+       'e_mod_main.c',
+]
+
+wl_buffer_dir = join_paths(dir_module_e, 'wl_buffer', module_arch)
+if get_option('wl-buffer') == true and get_option('wayland') == true
+       config_h.set('USE_MODULE_WL_BUFFER', '1')
+
+        module_files += join_paths(wl_buffer_dir, 'wl_buffer.so')
+       shared_module('wl_buffer',
+                wl_buffer_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: wl_buffer_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/wl_desktop_shell/meson.build 
b/src/modules/wl_desktop_shell/meson.build
new file mode 100644
index 000000000..255c92ada
--- /dev/null
+++ b/src/modules/wl_desktop_shell/meson.build
@@ -0,0 +1,35 @@
+wl_desktop_shell_src = [
+       'e_mod_input_panel.c',
+       'e_mod_main.c',
+       'wl_shell.c',
+       'xdg5.c',
+       'xdg6.c',
+       'e_mod_main.h',
+]
+
+wl_desktop_shell_dir = join_paths(dir_module_e, 'wl_desktop_shell', 
module_arch)
+if get_option('wl-desktop-shell') == true and get_option('wayland') == true
+       config_h.set('USE_MODULE_WL_DESKTOP_SHELL', '1')
+
+       protos = [
+               
'@0@/unstable/xdg-shell/xdg-shell-unstable-v5.xml'.format(dir_wayland_protocols),
+               
'@0@/unstable/xdg-shell/xdg-shell-unstable-v6.xml'.format(dir_wayland_protocols),
+               
'@0@/unstable/input-method/input-method-unstable-v1.xml'.format(dir_wayland_protocols),
+       ]
+
+       foreach proto: protos
+               wl_desktop_shell_src += gen_scanner_server.process(proto)
+               wl_desktop_shell_src += gen_scanner_impl.process(proto)
+       endforeach
+
+        module_files += join_paths(wl_desktop_shell_dir, 'wl_desktop_shell.so')
+       shared_module('wl_desktop_shell',
+                wl_desktop_shell_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: wl_desktop_shell_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/wl_drm/meson.build b/src/modules/wl_drm/meson.build
new file mode 100644
index 000000000..f1db1fec6
--- /dev/null
+++ b/src/modules/wl_drm/meson.build
@@ -0,0 +1,19 @@
+wl_drm_src = [
+       'e_mod_main.c',
+]
+
+wl_drm_dir = join_paths(dir_module_e, 'wl_drm', module_arch)
+if get_option('wl-drm') == true and get_option('wayland') == true
+       config_h.set('USE_MODULE_WL_DRM', '1')
+
+        module_files += join_paths(wl_drm_dir, 'wl_drm.so')
+       shared_module('wl_drm',
+                wl_drm_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: wl_drm_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/wl_fb/meson.build b/src/modules/wl_fb/meson.build
new file mode 100644
index 000000000..4406e85f4
--- /dev/null
+++ b/src/modules/wl_fb/meson.build
@@ -0,0 +1,19 @@
+wl_fb_src = [
+       'e_mod_main.c',
+]
+
+wl_fb_dir = join_paths(dir_module_e, 'wl_fb', module_arch)
+if get_option('wl-fb') == true and get_option('wayland') == true
+       config_h.set('USE_MODULE_WL_FB', '1')
+
+        module_files += join_paths(wl_fb_dir, 'wl_fb.so')
+       shared_module('wl_fb',
+                wl_fb_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: wl_fb_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/wl_text_input/meson.build 
b/src/modules/wl_text_input/meson.build
new file mode 100644
index 000000000..7178bf577
--- /dev/null
+++ b/src/modules/wl_text_input/meson.build
@@ -0,0 +1,30 @@
+wl_text_input_src = [
+       'e_mod_main.c',
+]
+
+
+wl_text_input_dir = join_paths(dir_module_e, 'wl_text_input', module_arch)
+if get_option('wl-text-input') == true and get_option('wayland') == true
+       config_h.set('USE_MODULE_WL_TEXT_INPUT', '1')
+
+       protos = [
+               
'@0@/unstable/input-method/input-method-unstable-v1.xml'.format(dir_wayland_protocols),
+               
'@0@/unstable/text-input/text-input-unstable-v1.xml'.format(dir_wayland_protocols),
+       ]
+
+       foreach proto: protos
+               wl_text_input_src += gen_scanner_server.process(proto)
+               wl_text_input_src += gen_scanner_impl.process(proto)
+       endforeach
+
+        module_files += join_paths(wl_text_input_dir, 'wl_text_input.so')
+       shared_module('wl_text_input',
+                wl_text_input_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: wl_text_input_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/wl_weekeyboard/meson.build 
b/src/modules/wl_weekeyboard/meson.build
new file mode 100644
index 000000000..032f8d0cf
--- /dev/null
+++ b/src/modules/wl_weekeyboard/meson.build
@@ -0,0 +1,42 @@
+wl_weekeyboard_dist = [
+       'themes/default/default_600.edj',
+       'themes/default/default_720.edj',
+       'themes/default/default_1080.edj'
+]
+
+wl_weekeyboard_src = [
+       'e_mod_main.c',
+       'wkb-log.c',
+       'wkb-log.h',
+]
+
+wl_weekeyboard_dir = join_paths(dir_module_e, 'wl_weekeyboard', module_arch)
+if get_option('wl-weekeyboard') == true and get_option('wayland') == true
+       config_h.set('USE_MODULE_WL_WEEKEYBOARD', '1')
+
+       protos = [
+               
'@0@/unstable/input-method/input-method-unstable-v1.xml'.format(dir_wayland_protocols),
+               
'@0@/unstable/text-input/text-input-unstable-v1.xml'.format(dir_wayland_protocols),
+       ]
+
+       foreach proto: protos
+               wl_weekeyboard_src += gen_scanner_server.process(proto)
+               wl_weekeyboard_src += gen_scanner_client.process(proto)
+               wl_weekeyboard_src += gen_scanner_impl.process(proto)
+       endforeach
+
+       install_data(wl_weekeyboard_dist,
+               install_dir: join_paths(dir_module_e, 'wl_weekeyboard')
+       )
+       
+        module_files += join_paths(wl_weekeyboard_dir, 'wl_weekeyboard.so')
+       shared_module('wl_weekeyboard',
+                wl_weekeyboard_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: wl_weekeyboard_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/wl_wl/meson.build b/src/modules/wl_wl/meson.build
new file mode 100644
index 000000000..e5b2a3a21
--- /dev/null
+++ b/src/modules/wl_wl/meson.build
@@ -0,0 +1,19 @@
+wl_wl_src = [
+       'e_mod_main.c',
+]
+
+wl_wl_dir = join_paths(dir_module_e, 'wl_wl', module_arch)
+if get_option('wl-wl') == true and get_option('wayland') == true
+       config_h.set('USE_MODULE_WL_WL', '1')
+
+        module_files += join_paths(wl_wl_dir, 'wl_wl.so')
+       shared_module('wl_wl',
+                wl_wl_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: wl_wl_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/wl_x11/meson.build b/src/modules/wl_x11/meson.build
new file mode 100644
index 000000000..812f8880b
--- /dev/null
+++ b/src/modules/wl_x11/meson.build
@@ -0,0 +1,19 @@
+wl_x11_src = [
+       'e_mod_main.c',
+]
+
+wl_x11_dir = join_paths(dir_module_e, 'wl_x11', module_arch)
+if get_option('wl-x11') == true and get_option('wayland') == true
+       config_h.set('USE_MODULE_WL_X11', '1')
+
+        module_files += join_paths(wl_x11_dir, 'wl_x11.so')
+       shared_module('wl_x11',
+                wl_x11_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: wl_x11_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/xkbswitch/meson.build 
b/src/modules/xkbswitch/meson.build
new file mode 100644
index 000000000..ac682c50b
--- /dev/null
+++ b/src/modules/xkbswitch/meson.build
@@ -0,0 +1,26 @@
+xkbswitch_src = [
+       'e_mod_config.c',
+       'e_mod_main.c',
+       'e_mod_parse.c',
+       'e_mod_main.h',
+       'e_mod_parse.h',
+       'gadget/xkbswitch.h',
+       'gadget/xkbswitch.c',
+       'gadget/mod.c'
+]
+
+xkbswitch_dir = join_paths(dir_module_e, 'xkbswitch', module_arch)
+if get_option('xkbswitch') == true
+       config_h.set('USE_MODULE_XKBSWITCH', '1')
+
+        module_files += join_paths(xkbswitch_dir, 'xkbswitch.so')
+       shared_module('xkbswitch',
+                xkbswitch_src,
+                include_directories: include_directories(module_includes),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: xkbswitch_dir,
+                install: true
+        )
+endif
+
diff --git a/src/modules/xwayland/meson.build b/src/modules/xwayland/meson.build
new file mode 100644
index 000000000..3a2512b48
--- /dev/null
+++ b/src/modules/xwayland/meson.build
@@ -0,0 +1,22 @@
+xwayland_src = [
+       'dnd.c',
+       'e_mod_main.c',
+]
+
+xwayland_dir = join_paths(dir_module_e, 'xwayland', module_arch)
+if get_option('xwayland') == true and get_option('wayland') == true
+       config_h.set('USE_MODULE_XWAYLAND', '1')
+
+       xwayland = find_program('Xwayland')
+        module_files += join_paths(xwayland_dir, 'xwayland.so')
+       shared_module('xwayland',
+                xwayland_src,
+                include_directories: include_directories(module_includes),
+               c_args: '-DXWAYLAND_BIN="@0@"'.format(xwayland.path()),
+                name_prefix: '',
+                dependencies: module_deps,
+                install_dir: xwayland_dir,
+                install: true
+        )
+endif
+

-- 


Reply via email to