summaryrefslogtreecommitdiff
path: root/src/lib/eio
diff options
context:
space:
mode:
authorMarcel Hollerbach <mail@marcel-hollerbach.de>2018-08-12 15:26:29 +0200
committerMarcel Hollerbach <mail@marcel-hollerbach.de>2018-10-02 17:22:50 +0200
commit46d464e5bfc10398461a33a2256c1c58d509dd1a (patch)
tree8c1a9272c05f14033a4430bc122632461bd73608 /src/lib/eio
parent70ecf1056bb4be5a68b63044f938ccc2fe0a58c0 (diff)
here comes meson
a new shiny buildtool that currently completes in the total of ~ 4 min.. 1 min. conf time 2:30 min. build time Where autotools takes: 1:50 min. conf time 3:40 min. build time. meson was taken because it went quite good for enlightenment, and is a traction gaining system that is also used by other mayor projects. Additionally, the DSL that is defined my meson makes the configuration of the builds a lot easier to read. Further informations can be gathered from the README.meson Right now, bindings & windows support are missing. It is highly recommented to use meson 0.48 due to optimizations in meson that reduced the time the meson call would need. Co-authored-by: Mike Blumenkrantz <zmike@samsung.com> Differential Revision: https://phab.enlightenment.org/D7012 Depends on D7011
Diffstat (limited to 'src/lib/eio')
-rw-r--r--src/lib/eio/meson.build90
1 files changed, 90 insertions, 0 deletions
diff --git a/src/lib/eio/meson.build b/src/lib/eio/meson.build
new file mode 100644
index 0000000000..2c685b1fba
--- /dev/null
+++ b/src/lib/eio/meson.build
@@ -0,0 +1,90 @@
1pub_eo_file_target = []
2
3pub_eo_files = [
4 'eio_model.eo',
5 'efl_io_manager.eo',
6 'eio_sentry.eo'
7]
8
9foreach eo_file : pub_eo_files
10 pub_eo_file_target += custom_target('eolian_gen_' + eo_file,
11 input : eo_file,
12 output : [eo_file + '.h'],
13 install : true,
14 install_dir : dir_package_include,
15 command : [eolian_gen, '-I', meson.current_source_dir(), eolian_include_directories,
16 '-o', 'h:' + join_paths(
17 meson.current_build_dir(), eo_file + '.h'),
18 '-o', 'c:' + join_paths(meson.current_build_dir(), eo_file + '.c'),
19 '-gch', '@INPUT@'])
20endforeach
21
22pub_eo_types_files = []
23
24eolian_include_directories += ['-I', meson.current_source_dir()]
25
26eio_header_src = [
27 'Eio.h',
28 'Eio_Legacy.h',
29 'Eio_Eo.h',
30 'eio_inline_helper.x'
31]
32
33eio_src = [
34 'eio_dir.c',
35 'eio_eet.c',
36 'eio_file.c',
37 'efl_io_manager.c',
38 'eio_sentry.c',
39 'eio_main.c',
40 'eio_map.c',
41 'eio_monitor.c',
42 'eio_monitor_poll.c',
43 'eio_single.c',
44 'eio_xattr.c',
45 'eio_model.c',
46 'eio_model_private.h',
47 'eio_private.h',
48 'eio_sentry_private.h'
49]
50
51linker_args = []
52
53if target_machine.system() == 'windows'
54 eio_src += ['eio_monitor_win32.c']
55elif target_machine.system() == 'darwin'
56 eio_src += ['eio_monitor_cocoa.c']
57 linker_args = [['-framework', 'CoreServices']]
58elif cc.has_header('sys/inotify.h')
59 eio_src += ['eio_monitor_inotify.c']
60elif target_machine.system() == 'bsd'
61 eio_src += ['eio_monitor_kevent.c']
62endif
63
64eio_deps = [ecore, ecore_file, eet, eo, eina, efl, emile, efreet_mime]
65eio_pub_deps = [eina, eet]
66
67eio_lib = library('eio',
68 eio_src, pub_eo_file_target,
69 dependencies: [eina, eo, efl, m, eio_deps],
70 include_directories : config_dir + [include_directories('.')],
71 install: true,
72 c_args : package_c_args,
73 link_args : linker_args,
74 version : meson.project_version()
75)
76
77eio = declare_dependency(
78 include_directories: [include_directories('.')],
79 link_with: eio_lib,
80 sources : pub_eo_file_target + priv_eo_file_target,
81 dependencies: eio_pub_deps,
82)
83
84install_data(pub_eo_files + pub_eo_types_files,
85 install_dir: join_paths(eolian_include_dir, package_version_name)
86)
87
88install_headers(eio_header_src,
89 install_dir : dir_package_include,
90)