summaryrefslogtreecommitdiff
path: root/meson.build
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@osg.samsung.com>2017-07-21 16:20:03 -0400
committerMike Blumenkrantz <zmike@osg.samsung.com>2017-07-20 17:18:33 -0400
commite8dc71cd4828ce8ccf791b27326f75b5d5ec8ab8 (patch)
tree14ecd21fda244cfa38132157ec4210ee8d696d91 /meson.build
parent4d3e157b30269276772806ddb0283ca20198ff8e (diff)
downloadenlightenment-e8dc71cd4828ce8ccf791b27326f75b5d5ec8ab8.tar.gz
meson.
Diffstat (limited to 'meson.build')
-rw-r--r--meson.build500
1 files changed, 500 insertions, 0 deletions
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000000..030faa68bc
--- /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'))