hermet pushed a commit to branch master.

http://git.enlightenment.org/tools/enventor.git/commit/?id=f1f92e6abb58ad1880a3036dd0f62e9a662de29a

commit f1f92e6abb58ad1880a3036dd0f62e9a662de29a
Author: Vincent Torri <vincent.to...@gmail.com>
Date:   Thu Nov 4 16:47:57 2021 +0900

    Build: add meson build system
    
    Test Plan: Compilation, comparison with autotools, and run of enventor (on 
Windows)
    
    Reviewers: Hermet, raster
    
    Differential Revision: https://phab.enlightenment.org/D12304
---
 data/autocomp/meson.build       |  14 ++++
 data/color/meson.build          |  19 +++++
 data/desktop/meson.build        |   5 ++
 data/help/meson.build           |  13 ++++
 data/icon/meson.build           |   5 ++
 data/images/meson.build         |  59 ++++++++++++++++
 data/reference/meson.build      |   5 ++
 data/sounds/meson.build         |   5 ++
 data/templates/meson.build      |  54 ++++++++++++++
 data/themes/default/meson.build |  25 +++++++
 meson.build                     | 152 ++++++++++++++++++++++++++++++++++++++++
 meson_options.txt               |   6 ++
 pc/meson.build                  |  20 ++++++
 po/meson.build                  |  17 +++++
 src/bin/meson.build             |  34 +++++++++
 src/lib/meson.build             |  45 ++++++++++++
 16 files changed, 478 insertions(+)

diff --git a/data/autocomp/meson.build b/data/autocomp/meson.build
new file mode 100644
index 0000000..a297fb2
--- /dev/null
+++ b/data/autocomp/meson.build
@@ -0,0 +1,14 @@
+
+custom_target('autocomp.eet',
+  input       : 'autocomp.src',
+  output      : 'autocomp.eet',
+  command     : eet_exe + [
+                            '-e',
+                            join_paths(meson.current_build_dir(), 
'autocomp.eet'),
+                            'node',
+                            join_paths(meson.current_source_dir(), 
'autocomp.src'),
+                            '1'
+                          ],
+  install     : true,
+  install_dir : join_paths(dir_pkgdata, 'autocomp')
+)
diff --git a/data/color/meson.build b/data/color/meson.build
new file mode 100644
index 0000000..3b4930b
--- /dev/null
+++ b/data/color/meson.build
@@ -0,0 +1,19 @@
+
+custom_target('color.eet',
+  input       : 'edc.src',
+  output      : 'edc.eet',
+  command     : eet_exe + [
+                            '-e',
+                            join_paths(meson.current_build_dir(), 'edc.eet'),
+                            'color',
+                            join_paths(meson.current_source_dir(), 'edc.src'),
+                            '1'
+                          ],
+  install     : true,
+  install_dir : join_paths(dir_pkgdata, 'color')
+)
+
+install_data(
+  sources     : 'syntax_template.dat',
+  install_dir : join_paths(dir_pkgdata, 'color')
+)
diff --git a/data/desktop/meson.build b/data/desktop/meson.build
new file mode 100644
index 0000000..fed182a
--- /dev/null
+++ b/data/desktop/meson.build
@@ -0,0 +1,5 @@
+
+install_data(
+  sources     : 'enventor.desktop',
+  install_dir : join_paths(dir_data, 'applications')
+)
diff --git a/data/help/meson.build b/data/help/meson.build
new file mode 100644
index 0000000..d9d63a3
--- /dev/null
+++ b/data/help/meson.build
@@ -0,0 +1,13 @@
+
+help_files = [
+  'INTRO',
+  'HISTORY',
+  'SHORTCUT',
+  'COMMAND',
+  'DEVEL'
+]
+
+install_data(
+  sources     : help_files,
+  install_dir : join_paths(dir_pkgdata, 'help')
+)
diff --git a/data/icon/meson.build b/data/icon/meson.build
new file mode 100644
index 0000000..6e84550
--- /dev/null
+++ b/data/icon/meson.build
@@ -0,0 +1,5 @@
+
+install_data(
+  sources     : 'enventor.png',
+  install_dir : join_paths(dir_data, 'icons')
+)
diff --git a/data/images/meson.build b/data/images/meson.build
new file mode 100644
index 0000000..6b778ef
--- /dev/null
+++ b/data/images/meson.build
@@ -0,0 +1,59 @@
+
+image_files = [
+  'ENVENTOR_EMBEDDED_BAT1.svg',
+  'ENVENTOR_EMBEDDED_BAT2.svg',
+  'ENVENTOR_EMBEDDED_BG1.png',
+  'ENVENTOR_EMBEDDED_BG2.png',
+  'ENVENTOR_EMBEDDED_BG3.png',
+  'ENVENTOR_EMBEDDED_BUTTON_BG.png',
+  'ENVENTOR_EMBEDDED_BUTTON_BG_DOWN.png',
+  'ENVENTOR_EMBEDDED_BUTTON_BG_HOVER.png',
+  'ENVENTOR_EMBEDDED_CHERRY.png',
+  'ENVENTOR_EMBEDDED_FIELD.png',
+  'ENVENTOR_EMBEDDED_ICON_ARROW.png',
+  'ENVENTOR_EMBEDDED_ICON_BADGE.png',
+  'ENVENTOR_EMBEDDED_ICON_BADGE_DOWN.png',
+  'ENVENTOR_EMBEDDED_ICON_CLIP.png',
+  'ENVENTOR_EMBEDDED_ICON_CLIP_DOWN.png',
+  'ENVENTOR_EMBEDDED_ICON_DOCK.png',
+  'ENVENTOR_EMBEDDED_ICON_DOCK_DOWN.png',
+  'ENVENTOR_EMBEDDED_ICON_LOCK.png',
+  'ENVENTOR_EMBEDDED_ICON_LOCK_DOWN.png',
+  'ENVENTOR_EMBEDDED_IMAGE.png',
+  'ENVENTOR_EMBEDDED_LADDER.png',
+  'ENVENTOR_EMBEDDED_MASK.png',
+  'ENVENTOR_EMBEDDED_MELON.png',
+  'ENVENTOR_EMBEDDED_MONTH_STROKE.png',
+  'ENVENTOR_EMBEDDED_MOONPHASE_COVER.png',
+  'ENVENTOR_EMBEDDED_MOONPHASE_MOON.png',
+  'ENVENTOR_EMBEDDED_NEEDLE_HOUR.png',
+  'ENVENTOR_EMBEDDED_NEEDLE_HOUR_RECT.png',
+  'ENVENTOR_EMBEDDED_NEEDLE_MINUTE.png',
+  'ENVENTOR_EMBEDDED_NEEDLE_MINUTE_RECT.png',
+  'ENVENTOR_EMBEDDED_NEEDLE_SECOND.png',
+  'ENVENTOR_EMBEDDED_NEEDLE_SECOND_RECT.png',
+  'ENVENTOR_EMBEDDED_PLATFORM.png',
+  'ENVENTOR_EMBEDDED_SVG.svg',
+  'ENVENTOR_EMBEDDED_TACK.png',
+  'ENVENTOR_EMBEDDED_TRIAB-01.png',
+  'ENVENTOR_EMBEDDED_TRIAB-02.png',
+  'ENVENTOR_EMBEDDED_TRIAB-03.png',
+  'ENVENTOR_EMBEDDED_TRIAB-04.png',
+  'ENVENTOR_EMBEDDED_TRIAB-05.png',
+  'ENVENTOR_EMBEDDED_TRIAB-06.png',
+  'ENVENTOR_EMBEDDED_TRIAB-07.png',
+  'ENVENTOR_EMBEDDED_TRIAB-08.png',
+  'ENVENTOR_EMBEDDED_TRIAB-09.png',
+  'ENVENTOR_EMBEDDED_TRIAB-10.png',
+  'ENVENTOR_EMBEDDED_TRIAB-11.png',
+  'ENVENTOR_EMBEDDED_TRIAB-12.png',
+  'ENVENTOR_EMBEDDED_WATCHFACE.png',
+  'ENVENTOR_EMBEDDED_WATCHFACE_RECT.png',
+  'ENVENTOR_EMBEDDED_WATERMELON.png',
+  'enventor_logo.png',
+]
+
+install_data(
+  sources     : image_files,
+  install_dir : join_paths(dir_pkgdata, 'images')
+)
diff --git a/data/reference/meson.build b/data/reference/meson.build
new file mode 100644
index 0000000..587500d
--- /dev/null
+++ b/data/reference/meson.build
@@ -0,0 +1,5 @@
+
+install_data(
+  sources     : 'reference.src',
+  install_dir : join_paths(dir_pkgdata, 'reference')
+)
diff --git a/data/sounds/meson.build b/data/sounds/meson.build
new file mode 100644
index 0000000..48de51c
--- /dev/null
+++ b/data/sounds/meson.build
@@ -0,0 +1,5 @@
+
+install_data(
+  sources     : 'ENVENTOR_EMBEDDED_TAP.wav',
+  install_dir : join_paths(dir_pkgdata, 'sounds')
+)
diff --git a/data/templates/meson.build b/data/templates/meson.build
new file mode 100644
index 0000000..0965438
--- /dev/null
+++ b/data/templates/meson.build
@@ -0,0 +1,54 @@
+
+edc_template_files = [
+  'Basic.edc',
+  'BgAnimation.edc',
+  'Clip.edc',
+  'CustomButton.edc',
+  'Empty.edc',
+  'GameStage.edc',
+  'Group.edc',
+  'Image.edc',
+  'Interpolation.edc',
+  'Listitem.edc',
+  'Map.edc',
+  'Mask.edc',
+  'MobileLayout.edc',
+  'Morphing.edc',
+  'MouseEvent.edc',
+  'Proxy.edc',
+  'Rect.edc',
+  'Rotation+Zoom.edc',
+  'Sound.edc',
+  'Spacer.edc',
+  'Text.edc',
+  'Textblock.edc',
+  'Transition.edc',
+  'Tween.edc',
+  'Vector.edc',
+  'Watchface.edc',
+  'Watchface2.edc'
+]
+
+enventor_templates = []
+
+foreach edc_file : edc_template_files
+  enventor_templates += custom_target('edje_cc_' + edc_file,
+    input       : edc_file,
+    depfile     : '@BASENAME@.edj.d',
+    output      : '@BASENAME@.edj',
+    command     : edje_cc_exe +
+                  [
+                   '-beta',
+                   '-sd', join_paths(meson.source_root(), 'data/sounds'),
+                   '-id', join_paths(meson.source_root(), 'data/images'),
+                   '@INPUT@', '@OUTPUT@'
+                  ],
+    install     : true,
+    install_dir : join_paths(dir_pkgdata, 'templates'),
+  )
+endforeach
+
+install_data(
+  sources     : edc_template_files,
+  install_dir : join_paths(dir_pkgdata, 'templates')
+)
diff --git a/data/themes/default/meson.build b/data/themes/default/meson.build
new file mode 100644
index 0000000..8bbb36d
--- /dev/null
+++ b/data/themes/default/meson.build
@@ -0,0 +1,25 @@
+
+edc_theme_files = [
+  'enventor.edc'
+]
+
+enventor_themes = []
+
+_edje_cc = find_program('edje_cc', native: true)
+edje_cc_exe = [_edje_cc]
+
+foreach edc_file : edc_theme_files
+  enventor_themes += custom_target('edje_cc_' + edc_file,
+    input       : edc_file,
+    depfile     : '@BASENAME@.edj.d',
+    output      : '@BASENAME@.edj',
+    command     : edje_cc_exe +
+                  [
+                   '-sd', join_paths(meson.current_source_dir(), 'sounds'),
+                   '-id', join_paths(meson.current_source_dir(), 'images'),
+                   '@INPUT@', '@OUTPUT@'
+                  ],
+    install     : true,
+    install_dir : join_paths(dir_pkgdata, 'themes'),
+  )
+endforeach
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..b09d4db
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,152 @@
+project('enventor', 'c',
+  version : '1.0.99',
+  meson_version : '>= 0.53',
+  default_options : [
+    'warning_level=2',
+    'buildtype=debugoptimized',
+    'c_std=c99'
+  ]
+)
+
+v_array = meson.project_version().split('.')
+v_maj = v_array[0]
+v_min = v_array[1]
+v_mic = v_array[2]
+
+# install paths
+
+dir_prefix = get_option('prefix')
+dir_include = join_paths(dir_prefix, get_option('includedir'))
+dir_pkginclude = join_paths(dir_include, meson.project_name())
+dir_bin = join_paths(dir_prefix, get_option('bindir'))
+dir_lib = join_paths(dir_prefix, get_option('libdir'))
+dir_data = join_paths(dir_prefix, get_option('datadir'))
+dir_pkgdata = join_paths(dir_data, meson.project_name())
+dir_locale = join_paths(dir_prefix, get_option('localedir'))
+
+# binaries
+
+cc = meson.get_compiler('c')
+
+enventor_cflags = []
+enventor_cflags_try = [
+  '-Wshadow',
+  '-Wstrict-prototypes',
+  '-Werror=missing-prototypes',
+  '-Werror=pointer-arith',
+  '-Wno-missing-field-initializers']
+
+foreach cf: enventor_cflags_try
+  if cc.has_argument(cf) == true
+    enventor_cflags += cf
+  endif
+endforeach
+add_global_arguments(enventor_cflags, language: 'c')
+
+have_visibility_hidden = cc.has_argument('-fvisibility=hidden')
+if have_visibility_hidden
+  add_global_arguments('-fvisibility=hidden', language: 'c')
+endif
+
+pkgconfig = import('pkgconfig')
+windows = import('windows')
+
+eet = find_program('eet', native: true)
+eet_exe = [ eet ]
+
+edje_cc = find_program('edje_cc', native: true)
+edje_cc_exe = [ edje_cc ]
+
+# libraries
+
+config_dir = [include_directories('.')]
+
+efl_req = '>= 1.18.0'
+enventor_deps = [
+  dependency('eina', version : efl_req),
+  dependency('eo', version : efl_req),
+  dependency('efl', version : efl_req),
+  dependency('eet', version : efl_req),
+  dependency('ecore', version : efl_req),
+  dependency('ecore-file', version : efl_req),
+  dependency('evas', version : efl_req),
+  dependency('eio', version : efl_req),
+  dependency('efreet', version : efl_req),
+  dependency('edje', version : efl_req),
+  dependency('elementary', version : efl_req)
+]
+
+requirement_enventor_pc = ' eina ' + efl_req + ' eo ' + efl_req + ' efl ' + 
efl_req + ' eet ' + efl_req + ' ecore ' + efl_req + ' ecore-file ' + efl_req + 
' evas ' + efl_req + ' eio ' + efl_req + ' efreet ' + efl_req + ' edje ' + 
efl_req + ' elementary ' + efl_req
+
+enventor_cargs = [
+  '-D_POSIX_C_SOURCE=200809L',
+  '-D_XOPEN_SOURCE=500' ]
+
+have_nls = false
+if get_option('nls') == true
+  intl_dep = cc.find_library('intl', required: false)
+  if intl_dep.found() == true and cc.has_header('libintl.h') == true
+    enventor_deps += cc.find_library('intl', required: true)
+    enventor_cargs += '-DENABLE_NLS'
+    have_nls = true
+  endif
+endif
+
+# configuration
+
+config_h = configuration_data()
+config_h.set_quoted('PACKAGE_NAME', meson.project_name())
+config_h.set_quoted('PACKAGE_VERSION', meson.project_version())
+config_h.set_quoted('PACKAGE_BIN_DIR', dir_bin)
+config_h.set_quoted('PACKAGE_LIB_DIR', dir_lib)
+config_h.set_quoted('PACKAGE_DATA_DIR', dir_pkgdata)
+config_h.set_quoted('LOCALE_DIR', dir_locale)
+config_h.set('EFL_BETA_API_SUPPORT', '1')
+config_h.set('EFL_UI_FOCUS_OBJECT_PROTECTED', '1')
+config_h.set('ENVENTOR_BETA_API_SUPPORT', '1')
+
+subdir('src/lib')
+subdir('src/bin')
+subdir('data/autocomp')
+subdir('data/color')
+subdir('data/desktop')
+subdir('data/help')
+subdir('data/icon')
+subdir('data/images')
+subdir('data/reference')
+subdir('data/sounds')
+subdir('data/templates')
+subdir('data/themes/default')
+subdir('pc')
+if have_nls == true
+  subdir('po')
+endif
+
+install_data(
+  sources     : 'README',
+  install_dir : join_paths(dir_pkgdata, 'docs')
+)
+
+# Use config_h after all subdirs have set values
+
+configure_file(output : 'config.h', configuration : config_h)
+
+# output
+
+summary({'OS': host_machine.system(),
+         'NLS': have_nls ? 'yes' : 'no'
+        }, section: 'Configuration Options Summary:')
+
+summary({'prefix': dir_prefix,
+         'bindir': dir_bin,
+         'libdir': dir_lib,
+         'incdir': dir_include,
+         'pkgincdir': dir_pkginclude,
+         'datadir': dir_data,
+         'pkgdatadir': dir_pkgdata,
+         'localedir': dir_locale,
+        }, section: 'Directories:')
+
+summary({'compilation': 'ninja',
+         'installation': 'ninja install',
+        }, section: 'Compilation')
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 0000000..d48dc63
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,6 @@
+
+option('nls',
+  type: 'boolean',
+  value: true,
+  description: 'enable localization: (default=true)'
+)
diff --git a/pc/meson.build b/pc/meson.build
new file mode 100644
index 0000000..52f14cf
--- /dev/null
+++ b/pc/meson.build
@@ -0,0 +1,20 @@
+
+pkgconf = configuration_data()
+
+pkgconf.set('prefix', get_option('prefix'))
+pkgconf.set('exec_prefix', '${prefix}')
+pkgconf.set('libdir', '${prefix}/@0@'.format(get_option('libdir')))
+pkgconf.set('includedir', '${prefix}/@0@'.format(get_option('includedir')))
+pkgconf.set('pkgincludedir', '${prefix}/@0@'.format(get_option('includedir')) 
+ '/enventor')
+pkgconf.set('ENVENTOR_VERSION_MAJOR', v_maj)
+pkgconf.set('VERSION', meson.project_version())
+pkgconf.set('requirement_enventor', requirement_enventor_pc)
+
+pkg_install_dir = '@0@/pkgconfig'.format(get_option('libdir'))
+
+configure_file(
+  input : join_paths(meson.source_root(), 'pc/enventor.pc.in'),
+  output : 'enventor.pc',
+  configuration : pkgconf,
+  install_dir : pkg_install_dir
+)
diff --git a/po/meson.build b/po/meson.build
new file mode 100644
index 0000000..ab3286d
--- /dev/null
+++ b/po/meson.build
@@ -0,0 +1,17 @@
+
+if get_option('nls')
+    i18n = import('i18n')
+    i18n.gettext(meson.project_name(),
+          args: [
+            '--directory=' + meson.source_root(),
+            '--keyword=_',
+            '--keyword=d_:1',
+            '--keyword=P_:1,2',
+            '--keyword=dP_:1,2',
+            '--keyword=N_',
+            '--keyword=NP_:1,2',
+            '--from-code=UTF-8',
+            '--foreign-user'
+            ])
+  config_h.set('ENABLE_NLS', '1')
+endif
diff --git a/src/bin/meson.build b/src/bin/meson.build
new file mode 100644
index 0000000..6005576
--- /dev/null
+++ b/src/bin/meson.build
@@ -0,0 +1,34 @@
+
+enventor_bin_src = [
+  'base_gui.c',
+  'build_setting.c',
+  'config_data.c',
+  'console.c',
+  'edc_navigator.c',
+  'file_browser.c',
+  'file_mgr.c',
+  'file_tab.c',
+  'goto.c',
+  'help.c',
+  'live_edit.c',
+  'main.c',
+  'menu.c',
+  'newfile.c',
+  'panes.c',
+  'preference_setting.c',
+  'search.c',
+  'setting.c',
+  'statusbar.c',
+  'text_setting.c',
+  'tools.c',
+  'utils.c'
+]
+
+enventor_bin = executable('enventor', enventor_bin_src,
+  c_args : [ enventor_cargs,
+             '-DHAVE_CONFIG_H',
+             '-I' + join_paths(meson.source_root(), 'src/include') ],
+  dependencies : [ enventor,  dependency('elementary', version : efl_req) ],
+  include_directories : config_dir,
+  install : true
+)
diff --git a/src/lib/meson.build b/src/lib/meson.build
new file mode 100644
index 0000000..fe8a18a
--- /dev/null
+++ b/src/lib/meson.build
@@ -0,0 +1,45 @@
+
+enventor_header_src = [ 'Enventor.h' ]
+
+install_headers(enventor_header_src,
+  install_dir : dir_pkginclude + '-' + v_maj
+)
+
+enventor_src = [
+  'auto_comp.c',
+  'build.c',
+  'ctxpopup.c',
+  'dummy_obj.c',
+  'edc_editor.c',
+  'edc_parser.c',
+  'edj_mgr.c',
+  'edj_viewer.c',
+  'enventor_main.c',
+  'enventor_smart.c',
+  'redoundo.c',
+  'reference.c',
+  'syntax_color.c',
+  'syntax_helper.c',
+  'syntax_indent.c',
+  'template.c',
+  'util.c',
+  'wireframes_obj.c'
+]
+
+enventor_lib = library('enventor', enventor_src,
+  c_args : [ enventor_cargs,
+             '-DHAVE_CONFIG_H',
+             '-DENVENTOR_WIN32_BUILD_SUPPORT',
+             '-I' + join_paths(meson.source_root(), 'src/include')
+           ],
+  dependencies : enventor_deps,
+  include_directories : config_dir,
+  install : true,
+  version : meson.project_version()
+)
+
+enventor = declare_dependency(
+  include_directories : [ include_directories('.')],
+  link_with : enventor_lib,
+  dependencies : enventor_deps
+)

-- 


Reply via email to