raster pushed a commit to branch master.

http://git.enlightenment.org/apps/ecrire.git/commit/?id=261e4cb7b7b78fd5288e3c16c71b84acd0f5add5

commit 261e4cb7b7b78fd5288e3c16c71b84acd0f5add5
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date:   Mon Feb 17 14:29:22 2020 +0000

    move ecrire to meson ... just so we have a more consistent build story
---
 CMakeLists.txt                            |  84 ---------
 cmake/Modules/GettextTranslate.cmake      | 271 ------------------------------
 cmake/Modules/MakeDistcheck.cmake         | 122 --------------
 cmake/Modules/legacy/FindEcore.cmake      |  63 -------
 cmake/Modules/legacy/FindEdje.cmake       |  32 ----
 cmake/Modules/legacy/FindEet.cmake        |  32 ----
 cmake/Modules/legacy/FindEfreet.cmake     |  32 ----
 cmake/Modules/legacy/FindEina.cmake       |  32 ----
 cmake/Modules/legacy/FindElementary.cmake |  32 ----
 cmake/Modules/legacy/FindEvas.cmake       |  32 ----
 cmakeconfig.h.in                          |  22 ---
 data/CMakeLists.txt                       |   5 -
 data/{ => desktop}/ecrire.desktop         |   0
 data/desktop/meson.build                  |   2 +
 data/{ => icons}/ecrire.png               | Bin
 data/icons/meson.build                    |   2 +
 data/meson.build                          |   2 +
 meson.build                               |  54 ++++++
 meson_options.txt                         |   4 +
 po/CMakeLists.txt                         |   1 -
 po/meson.build                            |  19 +++
 src/bin/CMakeLists.txt                    |  35 ----
 src/bin/main.c                            |  90 +++++-----
 src/bin/meson.build                       |  17 ++
 src/bin/ui/alerts.c                       |  13 +-
 src/bin/ui/file_related.c                 |   5 +-
 src/bin/ui/font_dialog.c                  |  11 +-
 src/bin/ui/goto_dialog.c                  |   9 +-
 src/bin/ui/search_dialog.c                |  11 +-
 src/meson.build                           |   1 +
 30 files changed, 156 insertions(+), 879 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
deleted file mode 100644
index b8b8251..0000000
--- a/CMakeLists.txt
+++ /dev/null
@@ -1,84 +0,0 @@
-cmake_minimum_required(VERSION 2.6)
-project(ecrire)
-set(VMAJ 0)
-set(VMIN 1)
-set(VMIC 0)
-set(PACKAGE_VERSION ${VMAJ}.${VMIN}.${VMIC})
-
-set(PACKAGE ${CMAKE_PROJECT_NAME})
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} 
"${CMAKE_SOURCE_DIR}/cmake/Modules/")
-
-include_directories ("${PROJECT_BINARY_DIR}")
-
-# FIXME: add version checking!
-find_package(Eina REQUIRED)
-find_package(Eet REQUIRED)
-find_package(Evas REQUIRED)
-find_package(Ecore REQUIRED)
-find_package(Ecore COMPONENTS X)
-find_package(Edje REQUIRED)
-find_package(Efreet REQUIRED)
-find_package(Elementary REQUIRED)
-
-if(DEFINED ECORE_X_FOUND)
-   set(HAVE_ECORE_X 1)
-endif(DEFINED ECORE_X_FOUND)
-
-
-INCLUDE(CheckIncludeFiles)
-CHECK_INCLUDE_FILES(unistd.h HAVE_UNISTD_H)
-
-# likely put this into an FindCompilerAttribute.cmake:
-INCLUDE(CheckCSourceCompiles)
-SET(HAVE___ATTRIBUTE__)
-CHECK_C_SOURCE_COMPILES(
-   "void  foo (int bar __attribute__((unused)) ) { }
-   static void baz (void) __attribute__((unused));
-   static void baz (void) { }
-   int main(){}
-   " HAVE___ATTRIBUTE__
-   )
-
-ADD_DEFINITIONS(-DPACKAGE_BIN_DIR="${CMAKE_INSTALL_PREFIX}/bin"
-   -DPACKAGE_DATA_DIR="${CMAKE_INSTALL_PREFIX}/share/${CMAKE_PROJECT_NAME}"
-   -DPACKAGE_LIB_DIR="${CMAKE_INSTALL_PREFIX}/lib")
-
-set(LOCALEDIR "${CMAKE_INSTALL_PREFIX}/share/locale")
- 
-ADD_DEFINITIONS(
-   -DLOCALE_DIR="${LOCALEDIR}"
-   )
-
-ADD_DEFINITIONS(-DHAVE_CONFIG_H)
-
-find_package(Gettext)
-if (GETTEXT_FOUND)
-   set(GettextTranslate_ALL true)
-   set(GettextTranslate_GMO_BINARY true)
-   include(GettextTranslate)
-   set(ENABLE_NLS 1)
-endif (GETTEXT_FOUND)
-
-configure_file (
-   "${PROJECT_SOURCE_DIR}/cmakeconfig.h.in"
-   "${PROJECT_BINARY_DIR}/config.h"
-   )
-
-add_subdirectory(src/bin)
-add_subdirectory(data)
-add_subdirectory(po)
-
-# Make dist
-set(CPACK_PACKAGE_VERSION_MAJOR ${VMAJ})
-set(CPACK_PACKAGE_VERSION_MINOR ${VMIN})
-set(CPACK_PACKAGE_VERSION_PATCH ${VMIC})
-set(CPACK_SOURCE_GENERATOR "TGZ;TBZ2")
-set(CPACK_SOURCE_PACKAGE_FILE_NAME
-   
"${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
-set(CPACK_SOURCE_IGNORE_FILES
-   "${CMAKE_BINARY_DIR};/.git/;.svn/;.swp$;~$;${CPACK_SOURCE_IGNORE_FILES}")
-include(CPack)
-add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source)
-
-include(MakeDistcheck)
-add_distcheck()
diff --git a/cmake/Modules/GettextTranslate.cmake 
b/cmake/Modules/GettextTranslate.cmake
deleted file mode 100644
index 93bdacc..0000000
--- a/cmake/Modules/GettextTranslate.cmake
+++ /dev/null
@@ -1,271 +0,0 @@
-# Copyright (c) 2012, Jarryd Beck
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# Redistributions of source code must retain the above copyright notice, this
-# list of conditions and the following disclaimer.
-# Redistributions in binary form must reproduce the above copyright notice, 
-# this list of conditions and the following disclaimer in the documentation 
-# and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
-# POSSIBILITY OF SUCH DAMAGE.
-
-
-# This module creates build rules for updating translation files made 
-# with gettext
-# In your top level CMakeLists.txt, do
-#   include(GettextTranslate)
-# then in any po directory where you want things to be translated, write
-#   GettextTranslate()
-#
-# This module also finds the gettext binaries. If these are in a non-standard
-# location, you can define the following variables to provide paths to search
-# in
-# GettextTranslate_BINARIES  --- a path in which to look for every program
-# GettextTranslate_XGETTEXT  --- the xgettext program
-# GettextTranslate_MSGINIT   --- the msginit program
-# GettextTranslate_MSGFILTER --- the msgfilter program
-# GettextTranslate_MSGCONV   --- the msgconv program
-# GettextTranslate_MSGMERGE  --- the msgmerge program
-# GettextTranslate_MSGFMT    --- the msgfmt program
-# these are searched first before $PATH, so set this if you have your own
-# version that overrides the system version
-#
-# it reads variables from Makevars, one of the most important being DOMAIN
-# it reads the languages to generate from LINGUAS
-#
-# it adds the following targets
-# update-po
-# update-gmo
-# ${DOMAIN}-pot.update
-# generate-${DOMAIN}-${lang}-po
-# generate-${DOMAIN}-${lang}-gmo
-#
-# where ${DOMAIN} is the DOMAIN variable read from Makevars
-# and ${lang} is each language mentioned in LINGUAS
-#
-# if you want update-gmo to be added to the "all" target, then define the
-# variable GettextTranslate_ALL before including this file
-#
-# by default, the gmo files are built in the source directory. If you want
-# them to be built in the binary directory, then define the variable
-# GettextTranslate_GMO_BINARY
-
-
-
-# add the update-po and update-gmo targets, the actual files that need to
-# depend on this will be added as we go
-
-if (DEFINED GettextTranslate_ALL)
-  set(_addToALL "ALL")
-endif()
-
-add_custom_target(update-po)
-add_custom_target(update-gmo ${_addToALL})
-
-#look for all the programs
-#xgettext, msginit, msgfilter, msgconv, msgmerge, msgfmt
-
-function(REQUIRE_BINARY binname varname)
-  if (defined ${${varname}-NOTFOUND})
-    message(FATAL_ERROR "Could not find " binname)
-  endif()
-endfunction()
-
-find_program(GettextTranslate_XGETTEXT_EXECUTABLE xgettext
-  HINTS ${GettextTranslate_XGETTEXT} ${GettextTranslate_BINARIES}
-)
-REQUIRE_BINARY(xgettext GettextTranslate_XGETTEXT_EXECUTABLE)
-
-find_program(GettextTranslate_MSGINIT_EXECUTABLE msginit
-  HINTS ${GettextTranslate_MSGINIT} ${GettextTranslate_BINARIES}
-)
-REQUIRE_BINARY(msginit GettextTranslate_MSGINIT_EXECUTABLE)
-
-find_program(GettextTranslate_MSGFILTER_EXECUTABLE msgfilter
-  HINTS ${GettextTranslate_MSGFILTER} ${GettextTranslate_BINARIES}
-)
-REQUIRE_BINARY(msgfilter GettextTranslate_MSGFILTER_EXECUTABLE)
-
-find_program(GettextTranslate_MSGCONV_EXECUTABLE msgconv
-  HINTS ${GettextTranslate_MSGCONV} ${GettextTranslate_BINARIES}
-)
-REQUIRE_BINARY(msgconv GettextTranslate_MSGCONV_EXECUTABLE)
-
-find_program(GettextTranslate_MSGMERGE_EXECUTABLE msgmerge
-  HINTS ${GettextTranslate_MSGMERGE} ${GettextTranslate_BINARIES}
-)
-REQUIRE_BINARY(msgmerge GettextTranslate_MSGMERGE_EXECUTABLE)
-
-find_program(GettextTranslate_MSGFMT_EXECUTABLE msgfmt
-  HINTS ${GettextTranslate_MSGFMT} ${GettextTranslate_BINARIES}
-)
-REQUIRE_BINARY(msgfmt GettextTranslate_MSGFMT_EXECUTABLE)
-
-mark_as_advanced(
-  GettextTranslate_MSGCONV_EXECUTABLE 
-  GettextTranslate_MSGFILTER_EXECUTABLE 
-  GettextTranslate_MSGFMT_EXECUTABLE 
-  GettextTranslate_MSGINIT_EXECUTABLE 
-  GettextTranslate_MSGMERGE_EXECUTABLE 
-  GettextTranslate_XGETTEXT_EXECUTABLE
-)
-
-macro(GettextTranslate)
-
-  if(GettextTranslate_GMO_BINARY)
-    set (GMO_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR})
-  else()
-    set (GMO_BUILD_DIR ${CMAKE_CURRENT_SOURCE_DIR})
-  endif()
-
-  if (NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/POTFILES.in)
-    message(FATAL_ERROR "There is no POTFILES.in in
-    ${CMAKE_CURRENT_SOURCE_DIR}")
-  endif()
-
-  if (NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Makevars)
-    message(FATAL_ERROR "There is no Makevars in ${CMAKE_CURRENT_SOURCE_DIR}")
-  endif()
-
-  file(STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/Makevars makevars
-    REGEX "^[^=]+=(.*)$"
-  )
-
-  foreach(makevar ${makevars})
-    string(REGEX REPLACE "^([^= ]+) =[ ]?(.*)$" "\\1" MAKEVAR_KEY ${makevar})
-    string(REGEX REPLACE "^([^= ]+) =[ ]?(.*)$" "\\2" 
-      MAKEVAR_${MAKEVAR_KEY} ${makevar})
-  endforeach()
-
-  configure_file(${CMAKE_CURRENT_SOURCE_DIR}/POTFILES.in
-    ${CMAKE_CURRENT_BINARY_DIR}/POTFILES
-    COPYONLY
-  )
-
-  configure_file(${CMAKE_CURRENT_SOURCE_DIR}/LINGUAS
-    ${CMAKE_CURRENT_BINARY_DIR}/LINGUAS
-    COPYONLY
-  )
-
-  #set the directory to not clean
-  set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-    PROPERTY CLEAN_NO_CUSTOM true)
-
-  file(STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/POTFILES.in potfiles
-    REGEX "^[^#].*"
-  )
-
-  foreach(potfile ${potfiles})
-    list(APPEND source_translatable 
-      ${CMAKE_CURRENT_SOURCE_DIR}/${MAKEVAR_top_builddir}/${potfile})
-  endforeach()
-
-  set(TEMPLATE_FILE ${MAKEVAR_DOMAIN}.pot)
-  set(TEMPLATE_FILE_ABS ${CMAKE_CURRENT_SOURCE_DIR}/${TEMPLATE_FILE})
-  add_custom_target(${MAKEVAR_DOMAIN}.pot-update DEPENDS
-    ${TEMPLATE_FILE_ABS}
-  )
-
-  string(REGEX MATCHALL "[^ ]+" XGETTEXT_OPTS ${MAKEVAR_XGETTEXT_OPTIONS})
-  add_custom_command(OUTPUT ${TEMPLATE_FILE_ABS}
-    COMMAND ${GettextTranslate_XGETTEXT_EXECUTABLE} ${XGETTEXT_OPTS}
-      -o ${TEMPLATE_FILE_ABS} 
-      --default-domain=${MAKEVAR_DOMAIN}
-      --add-comments=TRANSLATORS:
-      --copyright-holder=${MAKEVAR_COPYRIGHT_HOLDER}
-      --msgid-bugs-address="${MAKEVAR_MSGID_BUGS_ADDRESS}"
-      --directory=${MAKEVAR_top_builddir}
-      --files-from=${CMAKE_CURRENT_BINARY_DIR}/POTFILES
-      --package-version=${VERSION}
-      --package-name=${CMAKE_PROJECT_NAME}
-    DEPENDS ${source_translatable}
-    ${CMAKE_CURRENT_SOURCE_DIR}/POTFILES.in
-    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-  )
-
-  add_dependencies(update-po ${MAKEVAR_DOMAIN}.pot-update)
-
-  file(STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/LINGUAS LINGUAS 
-      REGEX "^[^#].*")
-  string(REGEX MATCHALL "[^ ]+" languages ${LINGUAS})
-
-  foreach(lang ${languages})
-    set(PO_FILE_NAME "${CMAKE_CURRENT_SOURCE_DIR}/${lang}.po")
-    set(GMO_FILE_NAME "${GMO_BUILD_DIR}/${lang}.gmo")
-    set(PO_TARGET "generate-${MAKEVAR_DOMAIN}-${lang}-po")
-    set(GMO_TARGET "generate-${MAKEVAR_DOMAIN}-${lang}-gmo")
-    list(APPEND po_files ${PO_TARGET})
-    list(APPEND gmo_files ${GMO_TARGET})
-
-    if(${lang} MATCHES "en@(.*)quot")
-
-      add_custom_command(OUTPUT ${lang}.insert-header
-        COMMAND
-        sed -e "'/^#/d'" -e 's/HEADER/${lang}.header/g'
-        ${CMAKE_CURRENT_SOURCE_DIR}/insert-header.sin > ${lang}.insert-header
-      )
-
-      #generate the en@quot files
-      add_custom_command(OUTPUT ${PO_FILE_NAME}
-        COMMAND
-        ${GettextTranslate_MSGINIT_EXECUTABLE} -i ${TEMPLATE_FILE_ABS} 
-        --no-translator -l ${lang} 
-        -o - 2>/dev/null
-        | sed -f ${CMAKE_CURRENT_BINARY_DIR}/${lang}.insert-header 
-        | ${GettextTranslate_MSGCONV_EXECUTABLE} -t UTF-8 
-        | ${GettextTranslate_MSGFILTER_EXECUTABLE} sed -f 
-          ${CMAKE_CURRENT_SOURCE_DIR}/`echo ${lang} 
-        | sed -e 's/.*@//'`.sed 2>/dev/null >
-        ${PO_FILE_NAME}
-        DEPENDS ${lang}.insert-header ${TEMPLATE_FILE_ABS}
-        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-      )
-
-    else()
-
-      add_custom_command(OUTPUT ${PO_FILE_NAME}
-        COMMAND ${GettextTranslate_MSGMERGE_EXECUTABLE} --lang=${lang}
-          ${PO_FILE_NAME} ${TEMPLATE_FILE_ABS} 
-          -o ${PO_FILE_NAME}.new
-        COMMAND mv ${PO_FILE_NAME}.new ${PO_FILE_NAME}
-        DEPENDS ${TEMPLATE_FILE_ABS}
-      )
-
-    endif()
-
-    add_custom_command(OUTPUT ${GMO_FILE_NAME}
-      COMMAND ${GettextTranslate_MSGFMT_EXECUTABLE} -c --statistics --verbose 
-        -o ${GMO_FILE_NAME} ${PO_FILE_NAME}
-        DEPENDS ${PO_TARGET}
-    )
-    add_custom_target(${GMO_TARGET} DEPENDS ${GMO_FILE_NAME})
-
-    add_custom_target(${PO_TARGET} DEPENDS ${PO_FILE_NAME})
-    add_dependencies(${PO_TARGET} ${MAKEVAR_DOMAIN}.pot-update)
-
-    install(FILES ${GMO_FILE_NAME} DESTINATION
-      ${LOCALEDIR}/${lang}/LC_MESSAGES
-      RENAME ${MAKEVAR_DOMAIN}.mo
-    )
-
-  endforeach()
-
-  add_dependencies(update-po ${po_files})
-  add_dependencies(update-gmo ${gmo_files})
-
-#string(REGEX MATCH "^[^=]+=(.*)$" parsed_variables ${makevars})
-
-endmacro()
diff --git a/cmake/Modules/MakeDistcheck.cmake 
b/cmake/Modules/MakeDistcheck.cmake
deleted file mode 100644
index 1f383a5..0000000
--- a/cmake/Modules/MakeDistcheck.cmake
+++ /dev/null
@@ -1,122 +0,0 @@
-# - adds support for the 'make distcheck' command      -*- cmake -*-
-# Dependencies:
-# 1. CPack generating ${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz.
-# 2. Having a "dist" target, e.g:
-#    add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source)
-# Usage:
-#   add_distcheck()    ... called exactly once per project in the top-level
-#                         CMakeLists.txt; it adds the 'dist' and 'distcheck'
-#                         targets
-#
-# This module implements the 'make dist' and 'make distcheck'
-# commands.
-# It supports the following variables:
-#
-#   DISTCHECK_TMPDIR   ... directory for temporary files
-#   DISTCHECK_FILENAME ... basename of existing tar.gz.; defaults to
-#                         ${CPACK_SOURCE_PACKAGE_FILE_NAME}
-#   DISTCHECK_CMAKEFLAGS
-#                     ... flags which are given to 'cmake' by 'make distcheck'
-#   DISTCHECK_BUILDTARGETS
-#                     ... the build-targets tried by 'make distcheck';
-#                         defaults to nothing (--> all)
-#   DISTCHECK_INSTALLTARGETS
-#                     ... the install-targets tried by 'make distcheck';
-#                         defaults to 'install'
-#
-# Example:
-#   --- top-level CMakeLists.txt ---
-#   add_subdirectory(foo)
-#   ...
-#   ...
-#   set(CPACK_PACKAGE_VERSION_MAJOR ${ECRIRE_VERSION_MAJOR})
-#   set(CPACK_PACKAGE_VERSION_MINOR ${ECRIRE_VERSION_MINOR})
-#   set(CPACK_PACKAGE_VERSION_PATCH ${ECRIRE_VERSION_MICRO})
-#   set(CPACK_SOURCE_GENERATOR "TGZ")
-#   set(CPACK_SOURCE_IGNORE_FILES
-#      "${CMAKE_BINARY_DIR};/.git/;~$;${CPACK_SOURCE_IGNORE_FILES}")
-#   include(CPack)
-#   add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source)
-#
-#   find_package(Distcheck)
-#   add_distcheck()
-#
-#
-# Copyright (C) 2012 Tom Hacohen <[email protected]>
-# Based on the work done by:
-# Copyright (C) 2006 Enrico Scholz <[email protected]>
-#
-# Redistribution and use, with or without modification, are permitted
-# provided that the following conditions are met:
-# 
-#    1. Redistributions must retain the above copyright notice, this
-#       list of conditions and the following disclaimer.
-#    2. The name of the author may not be used to endorse or promote
-#       products derived from this software without specific prior
-#       written permission.
-# 
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
-# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-macro(add_distcheck)
-   set(MakeDist_FOUND 1)
-
-   set(DISTCHECK_TMPDIR         "${CMAKE_BINARY_DIR}/.make-dist"               
   CACHE PATH "directory for temporary files created by'make dist*'")
-   set(DISTCHECK_FILENAME       ${CPACK_SOURCE_PACKAGE_FILE_NAME}              
   CACHE PATH "basename of the tarball created by 'make dist'")
-   set(DISTCHECK_CMAKEFLAGS                                                    
   CACHE STRING "flags which are given to 'cmake' by 'make distcheck'")
-   set(DISTCHECK_BUILDTARGETS   ""                                             
   CACHE STRING "build-target(s) tried by 'make distcheck'")
-   set(DISTCHECK_INSTALLTARGETS install                                        
   CACHE STRING "install-target(s) tried by 'make distcheck'")
-
-   mark_as_advanced(DISTCHECK_TMPDIR DISTCHECK_FILENAME DISTCHECK_CMAKEFLAGS 
DISTCHECK_BUILDTARGETS DISTCHECK_INSTALLTARGETS)
-
-   set(DISTCHECK_BASESOURCEDIR "${DISTCHECK_TMPDIR}/source")
-   set(DISTCHECK_SOURCEDIR "${DISTCHECK_BASESOURCEDIR}/${DISTCHECK_FILENAME}")
-   set(DISTCHECK_BUILDDIR "${DISTCHECK_TMPDIR}/build")
-   set(DISTCHECK_INSTALLTARGETS "install")
-   add_custom_target(distcheck
-      # Create the tarball
-      COMMAND ${CMAKE_MAKE_PROGRAM} dist
-
-      # Create the temp dir.
-      COMMAND chmod -Rf a+w "${DISTCHECK_TMPDIR}" 2>/dev/null || :
-      COMMAND rm -rf "${DISTCHECK_TMPDIR}"
-      COMMAND mkdir -p "${DISTCHECK_SOURCEDIR}" "${DISTCHECK_BUILDDIR}"
-
-      # extract tarball
-      COMMAND tar xzf ${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz -C 
"${DISTCHECK_BASESOURCEDIR}"
-      # write-protect sources to detect modifies-sourcetree bugs
-      COMMAND chmod -R a-w "${DISTCHECK_SOURCEDIR}"
-
-      COMMAND cd "${DISTCHECK_BUILDDIR}" && ${CMAKE_COMMAND} 
-DCMAKE_INSTALL_PREFIX:PATH="${DISTCHECK_TMPDIR}/install" 
${DISTCHECK_CMAKEFLAGS} "${DISTCHECK_SOURCEDIR}"
-
-      COMMAND cd "${DISTCHECK_BUILDDIR}"  && ${CMAKE_MAKE_PROGRAM} 
${DISTCHECK_BUILDTARGETS}
-
-      # execute 'make install' without DESTDIR
-      COMMAND cd "${DISTCHECK_BUILDDIR}"  && ${CMAKE_MAKE_PROGRAM} 
${DISTCHECK_INSTALLTARGETS} DESTDIR=
-      # write protect installation path to detect writing outside of DESTDIR
-      COMMAND chmod -R a-w "${DISTCHECK_TMPDIR}/install"
-      # execute 'make install' with DESTDIR and move the files to a better 
location
-      COMMAND cd "${DISTCHECK_BUILDDIR}"  && ${CMAKE_MAKE_PROGRAM} 
${DISTCHECK_INSTALLTARGETS} DESTDIR="${DISTCHECK_TMPDIR}/install-tmp"
-      COMMAND mv "${DISTCHECK_TMPDIR}/install-tmp/${DISTCHECK_TMPDIR}/install" 
"${DISTCHECK_TMPDIR}/install-destdir"
-
-      # generate list of files which were installed by the both 'make
-      # install' commands above and compare them
-      COMMAND cd "${DISTCHECK_TMPDIR}/install"         && find -type f | sort 
> ../files.install
-      COMMAND cd "${DISTCHECK_TMPDIR}/install-destdir" && find -type f | sort 
> ../files.destdir
-      COMMAND cd "${DISTCHECK_TMPDIR}" && diff files.install files.destdir
-
-      # cleanup tmpdir
-      COMMAND chmod -R u+Xw "${DISTCHECK_TMPDIR}" 2>/dev/null || :
-      COMMAND rm -rf "${DISTCHECK_TMPDIR}"
-      )
-endmacro(add_distcheck)
-
diff --git a/cmake/Modules/legacy/FindEcore.cmake 
b/cmake/Modules/legacy/FindEcore.cmake
deleted file mode 100644
index 25368cb..0000000
--- a/cmake/Modules/legacy/FindEcore.cmake
+++ /dev/null
@@ -1,63 +0,0 @@
-# - Try to find ecore
-# Once done this will define
-#  ECORE_FOUND - System has ecore
-#  ECORE_INCLUDE_DIRS - The ecore include directories
-#  ECORE_LIBRARIES - The libraries needed to use ecore
-#  ECORE_DEFINITIONS - Compiler switches required for using ecore
-
-# Use FIND_PACKAGE( Ecore COMPONENTS ... ) to enable modules
-IF( Ecore_FIND_COMPONENTS )
-  FOREACH( component ${Ecore_FIND_COMPONENTS} )
-    STRING( TOUPPER ${component} _COMPONENT )
-    SET( ECORE_USE_${_COMPONENT} 1 )
-  ENDFOREACH( component )
-ENDIF( Ecore_FIND_COMPONENTS )
-
-find_package(PkgConfig)
-if ("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}" 
VERSION_GREATER "2.8.1")
-   # "QUIET" was introduced in 2.8.2
-   set(_QUIET QUIET)
-endif ()
-pkg_check_modules(PC_LIBECORE ${_QUIET} ecore)
-set(ECORE_DEFINITIONS ${PC_LIBECORE_CFLAGS_OTHER})
-
-find_path(ECORE_INCLUDE_DIR Ecore.h
-          HINTS ${PC_LIBECORE_INCLUDEDIR} ${PC_LIBECORE_INCLUDE_DIRS}
-          PATH_SUFFIXES ecore )
-
-find_library(ECORE_LIBRARY NAMES ecore
-             HINTS ${PC_LIBECORE_LIBDIR} ${PC_LIBECORE_LIBRARY_DIRS} )
-
-set(ECORE_LIBRARIES ${ECORE_LIBRARY} )
-set(ECORE_INCLUDE_DIRS ${ECORE_INCLUDE_DIR} )
-
-include(FindPackageHandleStandardArgs)
-# handle the QUIETLY and REQUIRED arguments and set ECORE_FOUND to TRUE
-# if all listed variables are TRUE
-find_package_handle_standard_args(ecore  DEFAULT_MSG
-                                  ECORE_LIBRARY ECORE_INCLUDE_DIR)
-
-mark_as_advanced( ECORE_INCLUDE_DIR ECORE_LIBRARY )
-
-if (ECORE_USE_ECORE-X)
-   pkg_check_modules(PC_LIBECORE_X ${_QUIET} ecore-x)
-   set(ECORE_X_DEFINITIONS ${PC_LIBECORE_X_CFLAGS_OTHER})
-
-   find_path(ECORE_X_INCLUDE_DIR Ecore_X.h
-             HINTS ${PC_LIBECORE_X_INCLUDEDIR} ${PC_LIBECORE_X_INCLUDE_DIRS}
-             PATH_SUFFIXES ecore )
-
-   find_library(ECORE_X_LIBRARY NAMES ecore_x
-                HINTS ${PC_LIBECORE_X_LIBDIR} ${PC_LIBECORE_X_LIBRARY_DIRS} )
-
-   set(ECORE_X_LIBRARIES ${ECORE_X_LIBRARY} )
-   set(ECORE_X_INCLUDE_DIRS ${ECORE_X_INCLUDE_DIR} )
-
-   include(FindPackageHandleStandardArgs)
-# handle the QUIETLY and REQUIRED arguments and set ECORE_X_FOUND to TRUE
-# if all listed variables are TRUE
-   find_package_handle_standard_args(ecore_x  DEFAULT_MSG
-                                     ECORE_X_LIBRARY ECORE_X_INCLUDE_DIR)
-
-   mark_as_advanced( ECORE_X_INCLUDE_DIR ECORE_X_LIBRARY )
-endif (ECORE_USE_ECORE-X)
diff --git a/cmake/Modules/legacy/FindEdje.cmake 
b/cmake/Modules/legacy/FindEdje.cmake
deleted file mode 100644
index 3e58d79..0000000
--- a/cmake/Modules/legacy/FindEdje.cmake
+++ /dev/null
@@ -1,32 +0,0 @@
-# - Try to find edje
-# Once done this will define
-#  EDJE_FOUND - System has edje
-#  EDJE_INCLUDE_DIRS - The edje include directories
-#  EDJE_LIBRARIES - The libraries needed to use edje
-#  EDJE_DEFINITIONS - Compiler switches required for using edje
-
-find_package(PkgConfig)
-if ("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}" 
VERSION_GREATER "2.8.1")
-   # "QUIET" was introduced in 2.8.2
-   set(_QUIET QUIET)
-endif ()
-pkg_check_modules(PC_LIBEDJE ${_QUIET} edje)
-set(EDJE_DEFINITIONS ${PC_LIBEDJE_CFLAGS_OTHER})
-
-find_path(EDJE_INCLUDE_DIR Edje.h
-          HINTS ${PC_LIBEDJE_INCLUDEDIR} ${PC_LIBEDJE_INCLUDE_DIRS}
-          PATH_SUFFIXES edje )
-
-find_library(EDJE_LIBRARY NAMES edje
-             HINTS ${PC_LIBEDJE_LIBDIR} ${PC_LIBEDJE_LIBRARY_DIRS} )
-
-set(EDJE_LIBRARIES ${EDJE_LIBRARY} )
-set(EDJE_INCLUDE_DIRS ${EDJE_INCLUDE_DIR} )
-
-include(FindPackageHandleStandardArgs)
-# handle the QUIETLY and REQUIRED arguments and set EDJE_FOUND to TRUE
-# if all listed variables are TRUE
-find_package_handle_standard_args(edje  DEFAULT_MSG
-                                  EDJE_LIBRARY EDJE_INCLUDE_DIR)
-
-mark_as_advanced(EDJE_INCLUDE_DIR EDJE_LIBRARY )
diff --git a/cmake/Modules/legacy/FindEet.cmake 
b/cmake/Modules/legacy/FindEet.cmake
deleted file mode 100644
index c749883..0000000
--- a/cmake/Modules/legacy/FindEet.cmake
+++ /dev/null
@@ -1,32 +0,0 @@
-# - Try to find eet
-# Once done this will define
-#  EET_FOUND - System has eet
-#  EET_INCLUDE_DIRS - The eet include directories
-#  EET_LIBRARIES - The libraries needed to use eet
-#  EET_DEFINITIONS - Compiler switches required for using eet
-
-find_package(PkgConfig)
-if ("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}" 
VERSION_GREATER "2.8.1")
-   # "QUIET" was introduced in 2.8.2
-   set(_QUIET QUIET)
-endif ()
-pkg_check_modules(PC_LIBEET ${_QUIET} eet)
-set(EET_DEFINITIONS ${PC_LIBEET_CFLAGS_OTHER})
-
-find_path(EET_INCLUDE_DIR Eet.h
-          HINTS ${PC_LIBEET_INCLUDEDIR} ${PC_LIBEET_INCLUDE_DIRS}
-          PATH_SUFFIXES eet )
-
-find_library(EET_LIBRARY NAMES eet
-             HINTS ${PC_LIBEET_LIBDIR} ${PC_LIBEET_LIBRARY_DIRS} )
-
-set(EET_LIBRARIES ${EET_LIBRARY} )
-set(EET_INCLUDE_DIRS ${EET_INCLUDE_DIR} )
-
-include(FindPackageHandleStandardArgs)
-# handle the QUIETLY and REQUIRED arguments and set EET_FOUND to TRUE
-# if all listed variables are TRUE
-find_package_handle_standard_args(eet  DEFAULT_MSG
-                                  EET_LIBRARY EET_INCLUDE_DIR)
-
-mark_as_advanced( EET_INCLUDE_DIR EET_LIBRARY )
diff --git a/cmake/Modules/legacy/FindEfreet.cmake 
b/cmake/Modules/legacy/FindEfreet.cmake
deleted file mode 100644
index 0ec8637..0000000
--- a/cmake/Modules/legacy/FindEfreet.cmake
+++ /dev/null
@@ -1,32 +0,0 @@
-# - Try to find efreet
-# Once done this will define
-#  EFREET_FOUND - System has efreet
-#  EFREET_INCLUDE_DIRS - The efreet include directories
-#  EFREET_LIBRARIES - The libraries needed to use efreet
-#  EFREET_DEFINITIONS - Compiler switches required for using efreet
-
-find_package(PkgConfig)
-if ("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}" 
VERSION_GREATER "2.8.1")
-   # "QUIET" was introduced in 2.8.2
-   set(_QUIET QUIET)
-endif ()
-pkg_check_modules(PC_LIBEFREET ${_QUIET} efreet)
-set(EFREET_DEFINITIONS ${PC_LIBEFREET_CFLAGS_OTHER})
-
-find_path(EFREET_INCLUDE_DIR Efreet.h
-          HINTS ${PC_LIBEFREET_INCLUDEDIR} ${PC_LIBEFREET_INCLUDE_DIRS}
-          PATH_SUFFIXES efreet )
-
-find_library(EFREET_LIBRARY NAMES efreet
-             HINTS ${PC_LIBEFREET_LIBDIR} ${PC_LIBEFREET_LIBRARY_DIRS} )
-
-set(EFREET_LIBRARIES ${EFREET_LIBRARY} )
-set(EFREET_INCLUDE_DIRS ${EFREET_INCLUDE_DIR} )
-
-include(FindPackageHandleStandardArgs)
-# handle the QUIETLY and REQUIRED arguments and set EFREET_FOUND to TRUE
-# if all listed variables are TRUE
-find_package_handle_standard_args(efreet  DEFAULT_MSG
-                                  EFREET_LIBRARY EFREET_INCLUDE_DIR)
-
-mark_as_advanced(EFREET_INCLUDE_DIR EFREET_LIBRARY )
diff --git a/cmake/Modules/legacy/FindEina.cmake 
b/cmake/Modules/legacy/FindEina.cmake
deleted file mode 100644
index 35989e4..0000000
--- a/cmake/Modules/legacy/FindEina.cmake
+++ /dev/null
@@ -1,32 +0,0 @@
-# - Try to find eina
-# Once done this will define
-#  EINA_FOUND - System has eina
-#  EINA_INCLUDE_DIRS - The eina include directories
-#  EINA_LIBRARIES - The libraries needed to use eina
-#  EINA_DEFINITIONS - Compiler switches required for using eina
-
-find_package(PkgConfig)
-if ("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}" 
VERSION_GREATER "2.8.1")
-   # "QUIET" was introduced in 2.8.2
-   set(_QUIET QUIET)
-endif ()
-pkg_check_modules(PC_LIBEINA ${_QUIET} eina)
-set(EINA_DEFINITIONS ${PC_LIBEINA_CFLAGS_OTHER})
-
-find_path(EINA_INCLUDE_DIR Eina.h
-          HINTS ${PC_LIBEINA_INCLUDEDIR} ${PC_LIBEINA_INCLUDE_DIRS}
-          PATH_SUFFIXES eina )
-
-find_library(EINA_LIBRARY NAMES eina
-             HINTS ${PC_LIBEINA_LIBDIR} ${PC_LIBEINA_LIBRARY_DIRS} )
-
-set(EINA_LIBRARIES ${EINA_LIBRARY} )
-set(EINA_INCLUDE_DIRS ${EINA_INCLUDE_DIR} "${EINA_INCLUDE_DIR}/eina" )
-
-include(FindPackageHandleStandardArgs)
-# handle the QUIETLY and REQUIRED arguments and set EINA_FOUND to TRUE
-# if all listed variables are TRUE
-find_package_handle_standard_args(eina  DEFAULT_MSG
-                                  EINA_LIBRARY EINA_INCLUDE_DIR)
-
-mark_as_advanced(EINA_INCLUDE_DIR EINA_LIBRARY )
diff --git a/cmake/Modules/legacy/FindElementary.cmake 
b/cmake/Modules/legacy/FindElementary.cmake
deleted file mode 100644
index 5b09da0..0000000
--- a/cmake/Modules/legacy/FindElementary.cmake
+++ /dev/null
@@ -1,32 +0,0 @@
-# - Try to find elementary
-# Once done this will define
-#  ELEMENTARY_FOUND - System has elementary
-#  ELEMENTARY_INCLUDE_DIRS - The elementary include directories
-#  ELEMENTARY_LIBRARIES - The libraries needed to use elementary
-#  ELEMENTARY_DEFINITIONS - Compiler switches required for using elementary
-
-find_package(PkgConfig)
-if ("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}" 
VERSION_GREATER "2.8.1")
-   # "QUIET" was introduced in 2.8.2
-   set(_QUIET QUIET)
-endif ()
-pkg_check_modules(PC_LIBELEMENTARY ${_QUIET} elementary)
-set(ELEMENTARY_DEFINITIONS ${PC_LIBELEMENTARY_CFLAGS_OTHER})
-
-find_path(ELEMENTARY_INCLUDE_DIR Elementary.h
-          HINTS ${PC_LIBELEMENTARY_INCLUDEDIR} ${PC_LIBELEMENTARY_INCLUDE_DIRS}
-          PATH_SUFFIXES elementary )
-
-find_library(ELEMENTARY_LIBRARY NAMES elementary
-             HINTS ${PC_LIBELEMENTARY_LIBDIR} ${PC_LIBELEMENTARY_LIBRARY_DIRS} 
)
-
-set(ELEMENTARY_LIBRARIES ${ELEMENTARY_LIBRARY} )
-set(ELEMENTARY_INCLUDE_DIRS ${PC_LIBELEMENTARY_INCLUDEDIR} 
${PC_LIBELEMENTARY_INCLUDE_DIRS} )
-
-include(FindPackageHandleStandardArgs)
-# handle the QUIETLY and REQUIRED arguments and set ELEMENTARY_FOUND to TRUE
-# if all listed variables are TRUE
-find_package_handle_standard_args(elementary  DEFAULT_MSG
-                                  ELEMENTARY_LIBRARY ELEMENTARY_INCLUDE_DIR)
-
-mark_as_advanced(ELEMENTARY_INCLUDE_DIR ELEMENTARY_LIBRARY )
diff --git a/cmake/Modules/legacy/FindEvas.cmake 
b/cmake/Modules/legacy/FindEvas.cmake
deleted file mode 100644
index 25a81fa..0000000
--- a/cmake/Modules/legacy/FindEvas.cmake
+++ /dev/null
@@ -1,32 +0,0 @@
-# - Try to find evas
-# Once done this will define
-#  EVAS_FOUND - System has evas
-#  EVAS_INCLUDE_DIRS - The evas include directories
-#  EVAS_LIBRARIES - The libraries needed to use evas
-#  EVAS_DEFINITIONS - Compiler switches required for using evas
-
-find_package(PkgConfig)
-if ("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}" 
VERSION_GREATER "2.8.1")
-   # "QUIET" was introduced in 2.8.2
-   set(_QUIET QUIET)
-endif ()
-pkg_check_modules(PC_LIBEVAS ${_QUIET} evas)
-set(EVAS_DEFINITIONS ${PC_LIBEVAS_CFLAGS_OTHER})
-
-find_path(EVAS_INCLUDE_DIR Evas.h
-          HINTS ${PC_LIBEVAS_INCLUDEDIR} ${PC_LIBEVAS_INCLUDE_DIRS}
-          PATH_SUFFIXES evas )
-
-find_library(EVAS_LIBRARY NAMES evas
-             HINTS ${PC_LIBEVAS_LIBDIR} ${PC_LIBEVAS_LIBRARY_DIRS} )
-
-set(EVAS_LIBRARIES ${EVAS_LIBRARY} )
-set(EVAS_INCLUDE_DIRS ${EVAS_INCLUDE_DIR} )
-
-include(FindPackageHandleStandardArgs)
-# handle the QUIETLY and REQUIRED arguments and set EVAS_FOUND to TRUE
-# if all listed variables are TRUE
-find_package_handle_standard_args(evas  DEFAULT_MSG
-                                  EVAS_LIBRARY EVAS_INCLUDE_DIR)
-
-mark_as_advanced(EVAS_INCLUDE_DIR EVAS_LIBRARY )
diff --git a/cmakeconfig.h.in b/cmakeconfig.h.in
deleted file mode 100644
index 3895fee..0000000
--- a/cmakeconfig.h.in
+++ /dev/null
@@ -1,22 +0,0 @@
-#define PACKAGE "@PACKAGE@"
-#define PACKAGE_NAME PACKAGE
-#define VERSION "@PACKAGE_VERSION@"
-#define VMAJ @VMAJ@
-#define VMIN @VMIN@
-#define VMIC @VMIC@
-
-#cmakedefine HAVE___ATTRIBUTE__
-#ifdef HAVE___ATTRIBUTE__
-#define __UNUSED__ __attribute__((unused))
-#else
-#define __UNUSED__
-#endif
-
-#cmakedefine HAVE_PATH_MAX
-#ifndef HAVE_PATH_MAX
-#define PATH_MAX 4096
-#endif
-
-#cmakedefine HAVE_ECORE_X
-
-#cmakedefine ENABLE_NLS
diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt
deleted file mode 100644
index a4b01f9..0000000
--- a/data/CMakeLists.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-install(FILES "${PROJECT_SOURCE_DIR}/data/ecrire.png"
-   DESTINATION "share/icons")
-
-install(FILES "${PROJECT_SOURCE_DIR}/data/ecrire.desktop"
-   DESTINATION "share/applications")
diff --git a/data/ecrire.desktop b/data/desktop/ecrire.desktop
similarity index 100%
rename from data/ecrire.desktop
rename to data/desktop/ecrire.desktop
diff --git a/data/desktop/meson.build b/data/desktop/meson.build
new file mode 100644
index 0000000..b7f25a6
--- /dev/null
+++ b/data/desktop/meson.build
@@ -0,0 +1,2 @@
+install_data('ecrire.desktop',
+             install_dir: join_paths(dir_data, 'applications'))
diff --git a/data/ecrire.png b/data/icons/ecrire.png
similarity index 100%
rename from data/ecrire.png
rename to data/icons/ecrire.png
diff --git a/data/icons/meson.build b/data/icons/meson.build
new file mode 100644
index 0000000..817293f
--- /dev/null
+++ b/data/icons/meson.build
@@ -0,0 +1,2 @@
+install_data('ecrire.png',
+             install_dir: join_paths(dir_data, 'icons'))
diff --git a/data/meson.build b/data/meson.build
new file mode 100644
index 0000000..8a19d38
--- /dev/null
+++ b/data/meson.build
@@ -0,0 +1,2 @@
+subdir('desktop')
+subdir('icons')
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..70e1f1d
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,54 @@
+##### project
+project('ecrire', 'c',
+        version        : '0.1.1',
+        license        : 'GPL',
+        default_options: [ 'buildtype=plain', 'c_std=gnu99' ],
+        meson_version  : '>= 0.40.0')
+base_url = 'https://www.enlightenment.org/about-'
+
+##### convenience variables for later
+proj     = meson.project_name()
+ver      = meson.project_version()
+
+##### dependencies
+efl_version = '>= 1.22.3'
+deps = dependency('elementary', version: efl_version)
+
+##### dir locations
+dir_prefix = get_option('prefix')
+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_locale = join_paths(dir_prefix, get_option('localedir'))
+
+install_data([ 'AUTHORS',
+               'COPYING'
+             ],
+             install_dir: join_paths(dir_data, 'ecrire'))
+
+##### config.h
+cfg = configuration_data()
+cfg.set_quoted('PACKAGE'                 , proj)
+cfg.set_quoted('PACKAGE_NAME'            , proj)
+cfg.set_quoted('PACKAGE_VERSION'         , ver)
+cfg.set_quoted('PACKAGE_STRING'          , proj + ' ' + ver)
+cfg.set_quoted('LOCALE_DIR'              , join_paths([dir_prefix, 
'share/locale']))
+cfg.set_quoted('PACKAGE_URL'             , base_url + proj)
+cfg.set_quoted('PACKAGE_BIN_DIR'         , dir_bin)
+cfg.set_quoted('PACKAGE_LIB_DIR'         , dir_lib)
+cfg.set_quoted('PACKAGE_DATA_DIR'        , join_paths(dir_data, proj))
+cfg.set_quoted('LOCALEDIR'               , dir_locale)
+cfg.set       ('_GNU_SOURCE'             , 1)
+cfg.set       ('__EXTENSIONS__'          , 1)
+cfg.set       ('_POSIX_PTHREAD_SEMANTICS', 1)
+cfg.set       ('_ALL_SOURCE'             , 1)
+cfg.set       ('_POSIX_SOURCE'           , 1)
+cfg.set       ('_POSIX_1_SOURCE'         , 1)
+
+subdir('po')
+
+configure_file(output: 'config.h', configuration: cfg)
+
+##### subdirs
+subdir('src')
+subdir('data')
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 0000000..fe7f83b
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,4 @@
+option('nls',
+        type: 'boolean',
+        value: true,
+        description: 'enable localization: (default=true)')
diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt
deleted file mode 100644
index 892654a..0000000
--- a/po/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-GettextTranslate()
diff --git a/po/meson.build b/po/meson.build
new file mode 100644
index 0000000..dcbeba9
--- /dev/null
+++ b/po/meson.build
@@ -0,0 +1,19 @@
+dep_intl = []
+
+if get_option('nls')
+  i18n = import('i18n')
+  i18n.gettext('ecrire',
+    args: [
+      '--keyword=_',
+      '--keyword=d_:1',
+      '--keyword=P_:1,2',
+      '--keyword=dP_:1,2',
+      '--keyword=N_',
+      '--keyword=NP_:1,2',
+      '--from-code=UTF-8',
+      '--foreign-user'
+    ])
+  cfg.set('ENABLE_NLS', '1')
+  cc = meson.get_compiler('c')
+  dep_intl = cc.find_library('intl', required : false)
+endif
diff --git a/src/bin/CMakeLists.txt b/src/bin/CMakeLists.txt
deleted file mode 100644
index d79cff9..0000000
--- a/src/bin/CMakeLists.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-LIST(APPEND ECRIRE_CC_SOURCES
-   main.c
-   file_utils.c
-   cfg.c
-   ui/file_related.c
-   ui/search_dialog.c
-   ui/goto_dialog.c
-   ui/font_dialog.c
-   ui/alerts.c
-   )
-
-include_directories(
-   ${EINA_INCLUDE_DIRS}
-   ${ELEMENTARY_INCLUDE_DIRS}
-   ${EDJE_INCLUDE_DIRS}
-   ${ECORE_INCLUDE_DIRS}
-   ${ECORE_X_INCLUDE_DIRS}
-   ${EFREET_INCLUDE_DIRS}
-   ${EVAS_INCLUDE_DIRS}
-   ${EET_INCLUDE_DIRS}
-   )
-
-add_executable(ecrire ${ECRIRE_CC_SOURCES})
-target_link_libraries(ecrire
-   ${EINA_LIBRARIES}
-   ${ELEMENTARY_LIBRARIES}
-   ${EDJE_LIBRARIES}
-   ${ECORE_LIBRARIES}
-   ${ECORE_X_LIBRARIES}
-   ${EFREET_LIBRARIES}
-   ${EVAS_LIBRARIES}
-   ${EET_LIBRARIES}
-   )
-
-install(TARGETS ecrire DESTINATION bin)
diff --git a/src/bin/main.c b/src/bin/main.c
index 993d551..dc8589f 100644
--- a/src/bin/main.c
+++ b/src/bin/main.c
@@ -1,17 +1,5 @@
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-/*
-#ifdef HAVE_ECORE_X
-# include <Ecore_X.h>
-#endif
-*/
-
+#include "config.h"
+#include <unistd.h>
 #include <Elementary.h>
 
 #include "mess_header.h"
@@ -72,8 +60,8 @@ _alert_if_need_saving(void (*done)(void *data), Ecrire_Entry 
*ent)
 }
 
 static void
-_sel_start(void *data, Evas_Object *obj __UNUSED__,
-      void *event_info __UNUSED__)
+_sel_start(void *data, Evas_Object *obj EINA_UNUSED,
+      void *event_info EINA_UNUSED)
 {
    Ecrire_Entry *ent = data;
    elm_object_item_disabled_set(ent->copy_item, EINA_FALSE);
@@ -81,8 +69,8 @@ _sel_start(void *data, Evas_Object *obj __UNUSED__,
 }
 
 static void
-_sel_clear(void *data __UNUSED__, Evas_Object *obj __UNUSED__,
-      void *event_info __UNUSED__)
+_sel_clear(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
+      void *event_info EINA_UNUSED)
 {
    Ecrire_Entry *ent = data;
    elm_object_item_disabled_set(ent->copy_item, EINA_TRUE);
@@ -109,7 +97,7 @@ _update_cur_file(const char *file, Ecrire_Entry *ent)
 }
 
 static void
-_cur_changed(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+_cur_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
 {
    char buf[50];
    int line;
@@ -130,7 +118,7 @@ _cur_changed(void *data, Evas_Object *obj, void *event_info 
__UNUSED__)
 }
 
 static void
-_cur_changed_manual(void *data, Evas_Object *obj __UNUSED__, void *event_info 
__UNUSED__)
+_cur_changed_manual(void *data, Evas_Object *obj EINA_UNUSED, void *event_info 
EINA_UNUSED)
 {
    Ecrire_Entry *ent = data;
    ent->undo_stack_can_merge = EINA_FALSE;
@@ -269,7 +257,7 @@ _undo_redo_do(Ecrire_Entry *ent, Elm_Entry_Change_Info 
*inf, Eina_Bool undo)
 }
 
 static void
-_undo(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+_undo(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
 {
    /* In undo we care about the current item */
    Ecrire_Entry *ent = data;
@@ -298,7 +286,7 @@ _undo(void *data, Evas_Object *obj __UNUSED__, void 
*event_info __UNUSED__)
 }
 
 static void
-_redo(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+_redo(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
 {
    Ecrire_Entry *ent = data;
    Elm_Entry_Change_Info *inf = NULL;
@@ -331,7 +319,7 @@ _redo(void *data, Evas_Object *obj __UNUSED__, void 
*event_info __UNUSED__)
 }
 
 static void
-_ent_changed(void *data, Evas_Object *obj __UNUSED__, void *event_info)
+_ent_changed(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
 {
    Ecrire_Entry *ent = data;
    elm_object_item_disabled_set(ent->save_item, EINA_FALSE);
@@ -368,7 +356,7 @@ _load_to_entry(Ecrire_Entry *ent, const char *file)
 }
 
 static void
-_fs_open_done(void *data __UNUSED__, Evas_Object *obj __UNUSED__,
+_fs_open_done(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
       void *event_info)
 {
    const char *selected = event_info;
@@ -390,7 +378,7 @@ save_do(const char *file, Ecrire_Entry *ent)
 }
 
 static void
-_fs_save_done(void *data __UNUSED__, Evas_Object *obj __UNUSED__,
+_fs_save_done(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
       void *event_info)
 {
    const char *selected = event_info;
@@ -409,14 +397,14 @@ _open_do(void *data)
 }
 
 static void
-_goto_line(void *data, Evas_Object *obj __UNUSED__, void *event_info 
__UNUSED__)
+_goto_line(void *data, Evas_Object *obj EINA_UNUSED, void *event_info 
EINA_UNUSED)
 {
    Ecrire_Entry *ent = data;
    ui_goto_dialog_open(ent->win, ent);
 }
 
 static void
-_open(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+_open(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
 {
    Ecrire_Entry *ent = data;
    _alert_if_need_saving(_open_do, ent);
@@ -436,14 +424,14 @@ editor_save(Ecrire_Entry *ent, void *callback_func)
 }
 
 static void
-_save(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+_save(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
 {
    Ecrire_Entry *ent = data;
    editor_save(ent, _fs_save_done);
 }
 
 static void
-_save_as(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+_save_as(void *data, Evas_Object *obj EINA_UNUSED, void *event_info 
EINA_UNUSED)
 {
    Ecrire_Entry *ent = data;
    ui_file_open_save_dialog_open(ent->win, _fs_save_done, EINA_TRUE);
@@ -460,42 +448,42 @@ _new_do(void *data)
 }
 
 static void
-_new(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+_new(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
 {
    Ecrire_Entry *ent = data;
    _alert_if_need_saving(_new_do, ent);
 }
 
 static void
-_cut(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+_cut(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
 {
    Ecrire_Entry *ent = data;
    elm_entry_selection_cut(ent->entry);
 }
 
 static void
-_copy(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+_copy(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
 {
    Ecrire_Entry *ent = data;
    elm_entry_selection_copy(ent->entry);
 }
 
 static void
-_paste(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+_paste(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
 {
    Ecrire_Entry *ent = data;
    elm_entry_selection_paste(ent->entry);
 }
 
 static void
-_find(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+_find(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
 {
    Ecrire_Entry *ent = data;
    ui_find_dialog_open(ent->win, ent);
 }
 
 static void
-_font_settings(void *data, Evas_Object *obj __UNUSED__, void *event_info 
__UNUSED__)
+_font_settings(void *data, Evas_Object *obj EINA_UNUSED, void *event_info 
EINA_UNUSED)
 {
    Ecrire_Entry *ent = data;
    ui_font_dialog_open(elm_object_top_widget_get(ent->win), ent, 
_ent_cfg->font.name, _ent_cfg->font.size);
@@ -503,7 +491,7 @@ _font_settings(void *data, Evas_Object *obj __UNUSED__, 
void *event_info __UNUSE
 
 
 static void
-_win_del_do(void *data __UNUSED__)
+_win_del_do(void *data EINA_UNUSED)
 {
    elm_exit();
 }
@@ -572,7 +560,7 @@ editor_font_choose(Ecrire_Entry *ent, const char *font, int 
size)
 /*
 #ifdef HAVE_ECORE_X
 static Eina_Bool
-_selection_notify(void *data, int type __UNUSED__, void *_event)
+_selection_notify(void *data, int type EINA_UNUSED, void *_event)
 {
    Ecrire_Entry *ent = data;
    Ecore_X_Event_Fixes_Selection_Notify *event =
@@ -593,7 +581,7 @@ _selection_notify(void *data, int type __UNUSED__, void 
*_event)
 */
 
 static void
-_key_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event)
+_key_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event)
 {
    Ecrire_Entry *ent = data;
    Eina_Bool ctrl, alt, shift;
@@ -617,8 +605,8 @@ _key_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, 
void *event)
      _save(data, obj, event);
 }
 
-int
-main(int argc, char *argv[])
+EAPI_MAIN int
+elm_main(int argc, char **argv)
 {
    Evas_Object *bg, *tbar, *bx, *cur_info;
    Evas_Coord w = 600, h = 600;
@@ -626,12 +614,6 @@ main(int argc, char *argv[])
 
    opterr = 0;
 
-   if (!eina_init())
-     {
-        printf("Failed to initialize Eina_log module\n");
-        return EXIT_FAILURE;
-     }
-
    _ecrire_log_dom = eina_log_domain_register("ecrire", 
ECRIRE_DEFAULT_LOG_COLOR);
    if (_ecrire_log_dom < 0)
      {
@@ -661,12 +643,18 @@ main(int argc, char *argv[])
           }
      }
 
+   elm_app_compile_bin_dir_set(PACKAGE_BIN_DIR);
+   elm_app_compile_lib_dir_set(PACKAGE_LIB_DIR);
+   elm_app_compile_data_dir_set(PACKAGE_DATA_DIR);
+#ifdef ENABLE_NLS
+   elm_app_compile_locale_set(LOCALEDIR);
+#endif
+   elm_app_info_set(elm_main, "ecrire", "COPYING");
+
    setlocale(LC_ALL, "");
    bindtextdomain(PACKAGE, LOCALE_DIR);
    textdomain(PACKAGE);
 
-   elm_init(argc, argv);
-
    ecrire_cfg_init(PACKAGE_NAME);
    ecrire_cfg_load();
 
@@ -683,7 +671,7 @@ main(int argc, char *argv[])
 
    DBG("Opening filename: '%s'", main_ec_ent->filename);
 
-   main_ec_ent->win = elm_win_add(NULL, "editor", ELM_WIN_BASIC);
+   main_ec_ent->win = elm_win_add(NULL, "Ecrire", ELM_WIN_BASIC);
    elm_win_autodel_set(main_ec_ent->win, EINA_FALSE);
 
    bg = elm_bg_add(main_ec_ent->win);
@@ -793,13 +781,11 @@ main(int argc, char *argv[])
    elm_run();
 
    ecrire_cfg_shutdown();
-   elm_shutdown();
    eina_log_domain_unregister(_ecrire_log_dom);
    _ecrire_log_dom = -1;
-   eina_shutdown();
-
    return 0;
 }
+ELM_MAIN()
 
 static void
 print_usage(const char *bin)
diff --git a/src/bin/meson.build b/src/bin/meson.build
new file mode 100644
index 0000000..0b4a4a4
--- /dev/null
+++ b/src/bin/meson.build
@@ -0,0 +1,17 @@
+inc = include_directories('.', '../..')
+executable('ecrire', [
+    'cfg.c', 'cfg.h',
+    'file_utils.c',
+    'main.c',
+    'mess_header.h',
+    'ui/alerts.c',
+    'ui/file_related.c',
+    'ui/font_dialog.c',
+    'ui/goto_dialog.c',
+    'ui/search_dialog.c',
+    'ui/ui.h'
+  ],
+  include_directories: inc,
+  dependencies       : [ deps, dep_intl ] ,
+  gui_app            : true,
+  install            : true)
diff --git a/src/bin/ui/alerts.c b/src/bin/ui/alerts.c
index 2da479d..2247ec0 100644
--- a/src/bin/ui/alerts.c
+++ b/src/bin/ui/alerts.c
@@ -1,7 +1,4 @@
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
+#include "config.h"
 #include <Elementary.h>
 
 #include "../mess_header.h"
@@ -10,7 +7,7 @@ static void *done_data;
 static void (*done_cb)(void *data);
 
 static void
-_discard(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+_discard(void *data, Evas_Object *obj EINA_UNUSED, void *event_info 
EINA_UNUSED)
 {
    Ecrire_Entry *ent = done_data;
 
@@ -19,7 +16,7 @@ _discard(void *data, Evas_Object *obj __UNUSED__, void 
*event_info __UNUSED__)
 }
 
 static void
-_fs_save_done(void *data __UNUSED__, Evas_Object *obj __UNUSED__,
+_fs_save_done(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
       void *event_info)
 {
    const char *selected = event_info;
@@ -32,7 +29,7 @@ _fs_save_done(void *data __UNUSED__, Evas_Object *obj 
__UNUSED__,
 }
 
 static void
-_save(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+_save(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
 {
    Ecrire_Entry *ent = done_data;
 
@@ -41,7 +38,7 @@ _save(void *data, Evas_Object *obj __UNUSED__, void 
*event_info __UNUSED__)
 }
 
 static void
-_cancel(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+_cancel(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
 {
    evas_object_del(data);
 }
diff --git a/src/bin/ui/file_related.c b/src/bin/ui/file_related.c
index fcab732..89bc031 100644
--- a/src/bin/ui/file_related.c
+++ b/src/bin/ui/file_related.c
@@ -1,7 +1,4 @@
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
+#include "config.h"
 #include <Elementary.h>
 
 Evas_Object *inwin;
diff --git a/src/bin/ui/font_dialog.c b/src/bin/ui/font_dialog.c
index 4924bd8..f2ded5d 100644
--- a/src/bin/ui/font_dialog.c
+++ b/src/bin/ui/font_dialog.c
@@ -1,7 +1,4 @@
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
+#include "config.h"
 #include <Elementary.h>
 
 #include "../mess_header.h"
@@ -49,7 +46,7 @@ _font_list_get(const Evas *e)
 
 static void
 _set_clicked(void *data,
-      Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+      Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
 {
    Ecrire_Entry *ent = data;
    const char *selected = NULL;
@@ -63,8 +60,8 @@ _set_clicked(void *data,
 }
 
 static void
-_check_changed_cb(void *data __UNUSED__, Evas_Object *obj,
-      void *event_info __UNUSED__)
+_check_changed_cb(void *data EINA_UNUSED, Evas_Object *obj,
+      void *event_info EINA_UNUSED)
 {
    elm_object_disabled_set(list, elm_check_state_get(obj));
    elm_object_disabled_set(fsize, elm_check_state_get(obj));
diff --git a/src/bin/ui/goto_dialog.c b/src/bin/ui/goto_dialog.c
index da22e95..fe2319a 100644
--- a/src/bin/ui/goto_dialog.c
+++ b/src/bin/ui/goto_dialog.c
@@ -1,7 +1,4 @@
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
+#include "config.h"
 #include <Elementary.h>
 
 #include "../mess_header.h"
@@ -29,13 +26,13 @@ _goto_do(Evas_Object *entry, const char *text)
 
 static void
 _goto_clicked(void *data,
-     Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+     Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
 {
    _goto_do(data, elm_object_text_get(sent));
 }
 
 static void
-_my_win_del(void *data __UNUSED__, Evas_Object *obj, void *event_info)
+_my_win_del(void *data EINA_UNUSED, Evas_Object *obj, void *event_info)
 {
    (void) obj;
    (void) event_info;
diff --git a/src/bin/ui/search_dialog.c b/src/bin/ui/search_dialog.c
index 2f2064f..2e20cfc 100644
--- a/src/bin/ui/search_dialog.c
+++ b/src/bin/ui/search_dialog.c
@@ -1,7 +1,4 @@
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
+#include "config.h"
 #include <Elementary.h>
 
 #include "../mess_header.h"
@@ -97,14 +94,14 @@ _find_in_entry(Evas_Object *entry, const char *text, 
Eina_Bool jump_next)
 
 static void
 _find_clicked(void *data,
-      Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+      Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
 {
    _find_in_entry(data, elm_object_text_get(sent), EINA_TRUE);
 }
 
 static void
 _replace_clicked(void *data,
-      Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+      Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
 {
    if (_find_in_entry(data, elm_object_text_get(sent), EINA_FALSE))
      {
@@ -118,7 +115,7 @@ _replace_clicked(void *data,
 }
 
 static void
-my_win_del(void *data __UNUSED__, Evas_Object *obj, void *event_info)
+my_win_del(void *data EINA_UNUSED, Evas_Object *obj, void *event_info)
 {
    (void) obj;
    (void) event_info;
diff --git a/src/meson.build b/src/meson.build
new file mode 100644
index 0000000..2ca5545
--- /dev/null
+++ b/src/meson.build
@@ -0,0 +1 @@
+subdir('bin')

-- 


Reply via email to