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 +)