raster pushed a commit to branch master.

http://git.enlightenment.org/apps/rage.git/commit/?id=8726c95e2b1f779653d15965f902a84621f90111

commit 8726c95e2b1f779653d15965f902a84621f90111
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
Date:   Thu Jul 20 14:08:05 2017 +0900

    replace autofoo with meson...
    
    learning how meson works. may not be the cleanest or nicest... but
    it's not too bad. it does work. ninja dist works.
    
    build times improved. for a full autogen.sh, make etc. -> 5.205s to 0.759s
---
 .gitignore               | 32 ++++------------------
 ChangeLog                |  0
 INSTALL                  | 42 ++++++++++++++++++++++------
 Makefile.am              | 34 -----------------------
 NEWS                     |  0
 README                   | 22 +++++++--------
 autogen.sh               | 17 ++----------
 configure.ac             | 60 ----------------------------------------
 data/desktop/meson.build |  2 ++
 data/icons/meson.build   |  2 ++
 data/meson.build         |  3 ++
 data/themes/meson.build  | 13 +++++++++
 data/themes/perms.sh     |  3 ++
 m4/ac_attribute.m4       | 47 --------------------------------
 m4/efl_beta.m4           |  5 ----
 m4/efl_binary.m4         | 71 ------------------------------------------------
 m4/efl_eo.m4             |  6 ----
 meson.build              | 64 +++++++++++++++++++++++++++++++++++++++++++
 meson_options.txt        |  3 ++
 src/bin/meson.build      | 30 ++++++++++++++++++++
 src/bin/thumb.c          |  2 +-
 src/meson.build          |  1 +
 22 files changed, 175 insertions(+), 284 deletions(-)

diff --git a/.gitignore b/.gitignore
index c80954a..ac6aab1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,33 +2,11 @@
 *.o
 *.swo
 *.swp
-Makefile
-Makefile.in
-/aclocal.m4
-/compile
-/config.log
-/config.status
-/configure
-/depcomp
-/install-sh
-/ltmain.sh
-/missing
-/stamp-h1
 /rage_config.h
-/rage_config.h.in
 /rage.spec
-/autom4te.cache/
 /data/themes/default.edj
-/m4/libtool.m4
-/m4/ltoptions.m4
-/m4/ltsugar.m4
-/m4/ltversion.m4
-/m4/lt~obsolete.m4
-/src/bin/.deps/
-/src/bin/rage
-/src/bin/rage_thumb
-pkgbuild/PKGBUILD
-pkgbuild/pkg
-pkgbuild/src
-pkgbuild/*.tar.xz
-.dirstamp
+/pkgbuild/PKGBUILD
+/pkgbuild/pkg
+/pkgbuild/src
+/pkgbuild/*.tar.xz
+/build
diff --git a/ChangeLog b/ChangeLog
deleted file mode 100644
index e69de29..0000000
diff --git a/INSTALL b/INSTALL
index f67815a..c07185d 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,11 +1,37 @@
-COMPILING and INSTALLING:
+COMPILING and INSTALLING
+------------------------
 
-If you got a official release tar archive do:
-    ./configure
-    
-Then to compile:
-    make
+Meson is the build system used for this project. For more information please
+see:
 
-To install (run this as root, or the user who handles installs):
-    make install
+    http://mesonbuild.com
+
+----
+
+Normal compilation in /usr/local:
+
+    meson . build
+    cd build
+    ninja
+    sudo ninja install
+
+For meson build generic options:
+
+    meson --help
+
+For a list of project specific options supported:
+
+    cat meson_options.txt
+
+To set 1 or more project specific options:
+
+    meson -Doption=value [-Dother=value2] ...
+
+To display current configuration:
+
+    mesonconf build
+
+The above will only work after at least the following is done:
+
+    meson . build
 
diff --git a/Makefile.am b/Makefile.am
deleted file mode 100644
index ccc377d..0000000
--- a/Makefile.am
+++ /dev/null
@@ -1,34 +0,0 @@
-ACLOCAL_AMFLAGS = -I m4
-
-SUBDIRS = src data
-
-MAINTAINERCLEANFILES = \
-Makefile.in \
-$(PACKAGE_TARNAME)-$(PACKAGE_VERSION).tar.gz \
-$(PACKAGE_TARNAME)-$(PACKAGE_VERSION).tar.bz2 \
-aclocal.m4 \
-config.guess \
-rage_config.h.in \
-config.sub \
-configure \
-compile \
-depcomp \
-install-sh \
-ltconfig \
-ltmain.sh \
-missing \
-mkinstalldirs \
-stamp-h.in \
-stamp-h \
-m4/libtool.m4 \
-m4/lt~obsolete.m4 \
-m4/ltoptions.m4 \
-m4/ltsugar.m4 \
-m4/ltversion.m4
-
-EXTRA_DIST = README AUTHORS COPYING autogen.sh rage.spec pkgbuild/PKGBUILD
-
-.PHONY: doc
-
-doc:
-       @echo "Empty doc target until we have real documentation."
diff --git a/NEWS b/NEWS
deleted file mode 100644
index e69de29..0000000
diff --git a/README b/README
index 81c51a2..4b032ec 100644
--- a/README
+++ b/README
@@ -121,15 +121,15 @@ F7              - DVD nav menu 7
 Requirements:
 -------------
 
-  * elementary (>= 1.18.0)
-  * eina (>= 1.18.0)
-  * eet (>= 1.18.0)
-  * evas (>= 1.18.0)
-  * ecore (>= 1.18.0)
-  * edje (>= 1.18.0)
-  * emotion (>= 1.18.0)
-  * ecore-imf (>= 1.18.0)
-  * ecore-imf-evas (>= 1.18.0)
-  * ecore-input (>= 1.18.0)
-  * ethumb (>= 1.18.0)
+  * elementary (>= 1.19.0)
+  * eina (>= 1.19.0)
+  * eet (>= 1.19.0)
+  * evas (>= 1.19.0)
+  * ecore (>= 1.19.0)
+  * edje (>= 1.19.0)
+  * emotion (>= 1.19.0)
+  * ecore-imf (>= 1.19.0)
+  * ecore-imf-evas (>= 1.19.0)
+  * ecore-input (>= 1.19.0)
+  * ethumb (>= 1.19.0)
 
diff --git a/autogen.sh b/autogen.sh
index 31ccda0..6531487 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -1,16 +1,5 @@
 #!/bin/sh
 
-rm -rf autom4te.cache
-rm -f aclocal.m4 ltmain.sh
-
-touch README
-
-echo "Running aclocal..." ; aclocal -I m4 $ACLOCAL_FLAGS || exit 1
-echo "Running autoheader..." ; autoheader || exit 1
-echo "Running autoconf..." ; autoconf || exit 1
-echo "Running libtoolize..." ; (libtoolize --copy --automake || glibtoolize 
--automake) || exit 1
-echo "Running automake..." ; automake --add-missing --copy --gnu || exit 1
-
-if [ -z "$NOCONFIGURE" ]; then
-       ./configure "$@"
-fi
+rm -rf build
+meson $@ . build
+mesonconf build
diff --git a/configure.ac b/configure.ac
deleted file mode 100644
index 20f5229..0000000
--- a/configure.ac
+++ /dev/null
@@ -1,60 +0,0 @@
-# get rid of that stupid cache mechanism
-rm -f config.cache
-
-AC_INIT([rage], [0.2.1], [enlightenment-devel@lists.sourceforge.net])
-AC_PREREQ([2.60])
-AC_CONFIG_SRCDIR([configure.ac])
-AC_CONFIG_MACRO_DIR([m4])
-
-AC_CONFIG_HEADERS([rage_config.h])
-
-AM_INIT_AUTOMAKE([1.6 dist-bzip2 dist-xz])
-m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
-
-AC_USE_SYSTEM_EXTENSIONS
-AC_PROG_CC
-AM_PROG_CC_C_O
-AC_C___ATTRIBUTE__
-
-efl_version="1.18.0"
-requirements="\
-   elementary >= ${efl_version} \
-   edje >= ${efl_version} \
-   emotion >= ${efl_version} \
-   eio >= ${efl_version} \
-   eina >= ${efl_version} \
-   ecore >= ${efl_version} \
-   evas >= ${efl_version} \
-   "
-PKG_CHECK_MODULES([RAGE], [${requirements}])
-
-EFL_WITH_BIN([edje], [edje-cc], [edje_cc])
-
-AC_CONFIG_FILES([
-Makefile
-rage.spec
-src/Makefile
-src/bin/Makefile
-data/Makefile
-data/desktop/Makefile
-data/icons/Makefile
-data/themes/Makefile
-data/themes/images/Makefile
-pkgbuild/PKGBUILD
-])
-AC_OUTPUT
-
-echo
-echo
-echo
-echo "------------------------------------------------------------------------"
-echo "$PACKAGE $VERSION"
-echo "------------------------------------------------------------------------"
-echo
-echo "Compilation................: make (or gmake)"
-echo "  CPPFLAGS.................: $CPPFLAGS"
-echo "  CFLAGS...................: $CFLAGS"
-echo "  LDFLAGS..................: $LDFLAGS"
-echo
-echo "Installation...............: make install (as root if needed, with 'su' 
or 'sudo')"
-echo "  prefix...................: $prefix"
diff --git a/data/desktop/meson.build b/data/desktop/meson.build
new file mode 100644
index 0000000..8fa561b
--- /dev/null
+++ b/data/desktop/meson.build
@@ -0,0 +1,2 @@
+install_data('rage.desktop',
+             install_dir: join_paths(dir_data, 'applications'))
diff --git a/data/icons/meson.build b/data/icons/meson.build
new file mode 100644
index 0000000..d7de06a
--- /dev/null
+++ b/data/icons/meson.build
@@ -0,0 +1,2 @@
+install_data('rage.png',
+             install_dir: join_paths(dir_data, 'icons'))
diff --git a/data/meson.build b/data/meson.build
new file mode 100644
index 0000000..2f97830
--- /dev/null
+++ b/data/meson.build
@@ -0,0 +1,3 @@
+subdir('themes')
+subdir('desktop')
+subdir('icons')
diff --git a/data/themes/meson.build b/data/themes/meson.build
new file mode 100644
index 0000000..e895488
--- /dev/null
+++ b/data/themes/meson.build
@@ -0,0 +1,13 @@
+cmd = [ edje_cmd,
+        '-id', join_paths(meson.source_root(), 'data' , 'themes', 'images'),
+        '@INPUT@', '@OUTPUT@'
+      ]
+src = 'default'
+custom_target(src + '.edj',
+              input      : src + '.edc',
+              output     : src + '.edj',
+              command    : cmd,
+              install_dir: join_paths(dir_data, proj, 'themes'),
+              install    : true
+             )
+meson.add_install_script('perms.sh')
diff --git a/data/themes/perms.sh b/data/themes/perms.sh
new file mode 100755
index 0000000..9aa2a99
--- /dev/null
+++ b/data/themes/perms.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+chmod a+r "${DESTDIR}/${MESON_INSTALL_PREFIX}/share/rage/themes/default.edj"
diff --git a/m4/ac_attribute.m4 b/m4/ac_attribute.m4
deleted file mode 100644
index 23479a9..0000000
--- a/m4/ac_attribute.m4
+++ /dev/null
@@ -1,47 +0,0 @@
-dnl Copyright (C) 2004-2008 Kim Woelders
-dnl Copyright (C) 2008 Vincent Torri <vtorri at univ-evry dot fr>
-dnl That code is public domain and can be freely used or copied.
-dnl Originally snatched from somewhere...
-
-dnl Macro for checking if the compiler supports __attribute__
-
-dnl Usage: AC_C___ATTRIBUTE__
-dnl call AC_DEFINE for HAVE___ATTRIBUTE__ and __UNUSED__
-dnl if the compiler supports __attribute__, HAVE___ATTRIBUTE__ is
-dnl defined to 1 and __UNUSED__ is defined to __attribute__((unused))
-dnl otherwise, HAVE___ATTRIBUTE__ is not defined and __UNUSED__ is
-dnl defined to nothing.
-
-AC_DEFUN([AC_C___ATTRIBUTE__],
-[
-
-AC_MSG_CHECKING([for __attribute__])
-
-AC_CACHE_VAL([ac_cv___attribute__],
-   [AC_TRY_COMPILE(
-       [
-#include <stdlib.h>
-
-int func(int x);
-int foo(int x __attribute__ ((unused)))
-{
-   exit(1);
-}
-       ],
-       [],
-       [ac_cv___attribute__="yes"],
-       [ac_cv___attribute__="no"]
-    )])
-
-AC_MSG_RESULT($ac_cv___attribute__)
-
-if test "x${ac_cv___attribute__}" = "xyes" ; then
-   AC_DEFINE([HAVE___ATTRIBUTE__], [1], [Define to 1 if your compiler has 
__attribute__])
-   AC_DEFINE([__UNUSED__], [__attribute__((unused))], [Macro declaring a 
function argument to be unused])
-  else
-    AC_DEFINE([__UNUSED__], [], [Macro declaring a function argument to be 
unused])
-fi
-
-])
-
-dnl End of ac_attribute.m4
diff --git a/m4/efl_beta.m4 b/m4/efl_beta.m4
deleted file mode 100644
index c804729..0000000
--- a/m4/efl_beta.m4
+++ /dev/null
@@ -1,5 +0,0 @@
-dnl use: EFL_ENABLE_BETA_API_SUPPORT
-AC_DEFUN([EFL_ENABLE_BETA_API_SUPPORT],
-[
-  AC_DEFINE([EFL_BETA_API_SUPPORT], [1], [Enable access to unstable EFL API 
that are still in beta])
-])
diff --git a/m4/efl_binary.m4 b/m4/efl_binary.m4
deleted file mode 100644
index c774688..0000000
--- a/m4/efl_binary.m4
+++ /dev/null
@@ -1,71 +0,0 @@
-dnl Copyright (C) 2010 Vincent Torri <vtorri at univ-evry dot fr>
-dnl That code is public domain and can be freely used or copied.
-
-dnl Macro that check if a binary is built or not
-
-dnl Usage: EFL_ENABLE_BIN(binary)
-dnl Call AC_SUBST(BINARY_PRG) (BINARY is the uppercase of binary, - being 
transformed into _)
-dnl Define have_binary (- is transformed into _)
-dnl Define conditional BUILD_BINARY (BINARY is the uppercase of binary, - 
being transformed into _)
-
-AC_DEFUN([EFL_ENABLE_BIN],
-[
-
-m4_pushdef([UP], m4_translit([[$1]], [-a-z], [_A-Z]))dnl
-m4_pushdef([DOWN], m4_translit([[$1]], [-A-Z], [_a-z]))dnl
-
-have_[]m4_defn([DOWN])="yes"
-
-dnl configure option
-
-AC_ARG_ENABLE([$1],
-   [AC_HELP_STRING([--disable-$1], [disable building of ]DOWN)],
-   [
-    if test "x${enableval}" = "xyes" ; then
-       have_[]m4_defn([DOWN])="yes"
-    else
-       have_[]m4_defn([DOWN])="no"
-    fi
-   ])
-
-AC_MSG_CHECKING([whether to build ]DOWN[ binary])
-AC_MSG_RESULT([$have_[]m4_defn([DOWN])])
-
-if test "x$have_[]m4_defn([DOWN])" = "xyes"; then
-   UP[]_PRG=DOWN[${EXEEXT}]
-fi
-
-AC_SUBST(UP[]_PRG)
-
-AM_CONDITIONAL(BUILD_[]UP, test "x$have_[]m4_defn([DOWN])" = "xyes")
-
-AS_IF([test "x$have_[]m4_defn([DOWN])" = "xyes"], [$2], [$3])
-
-])
-
-
-dnl Macro that check if a binary is built or not
-
-dnl Usage: EFL_WITH_BIN(package, binary, default_value)
-dnl Call AC_SUBST(_binary) (_binary is the lowercase of binary, - being 
transformed into _ by default, or the value set by the user)
-
-AC_DEFUN([EFL_WITH_BIN],
-[
-
-m4_pushdef([DOWN], m4_translit([[$2]], [-A-Z], [_a-z]))dnl
-
-dnl configure option
-
-AC_ARG_WITH([$2],
-   [AC_HELP_STRING([--with-$2=PATH], [specify a specific path to ]DOWN[ 
@<:@default=$3@:>@])],
-   [_efl_with_binary=${withval}],
-   [_efl_with_binary=$(pkg-config --variable=prefix $1)/bin/$3])
-
-DOWN=${_efl_with_binary}
-AC_MSG_NOTICE(DOWN[ set to ${_efl_with_binary}])
-
-with_binary_[]m4_defn([DOWN])=${_efl_with_binary}
-
-AC_SUBST(DOWN)
-
-])
diff --git a/m4/efl_eo.m4 b/m4/efl_eo.m4
deleted file mode 100644
index 864baf5..0000000
--- a/m4/efl_eo.m4
+++ /dev/null
@@ -1,6 +0,0 @@
-dnl use: EFL_ENABLE_EO_API_SUPPORT
-AC_DEFUN([EFL_ENABLE_EO_API_SUPPORT],
-[
-  AC_DEFINE([EFL_EO_API_SUPPORT], [1], [Enable access to unstable EFL Eo API])
-])
-
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..216849e
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,64 @@
+##### project
+project('rage', 'c',
+        version        : '0.2.1',
+        license        : 'BSD 2 clause',
+        default_options: [ '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.19.0'
+deps = dependency('elementary', version: efl_version)
+edje = dependency('edje',       version: efl_version)
+
+##### edje_cc binary compiler tool
+edje_cmd = get_option('edje-cc')
+if edje_cmd == ''
+  edje_cmd = join_paths(edje.get_pkgconfig_variable('prefix'),
+                        'bin', 'edje_cc')
+endif
+
+##### 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'))
+
+##### 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('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)
+configure_file(output: 'rage_config.h', configuration: cfg)
+
+##### packaging files for distro packages
+pkg = configuration_data()
+pkg.set('PACKAGE', proj)
+pkg.set('VERSION', ver)
+configure_file(input        : proj + '.spec.in',
+               output       : proj + '.spec',
+               configuration: pkg)
+configure_file(input        : join_paths('pkgbuild', 'PKGBUILD.in'),
+               output       : 'PKGBUILD',
+               configuration: pkg)
+
+##### subdirs
+subdir('src')
+subdir('data')
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 0000000..460359b
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,3 @@
+option('edje-cc',
+       type       : 'string',
+       description: 'A path to a edje_cc. Defaults to system edje_cc')
diff --git a/src/bin/meson.build b/src/bin/meson.build
new file mode 100644
index 0000000..c97dca4
--- /dev/null
+++ b/src/bin/meson.build
@@ -0,0 +1,30 @@
+inc = include_directories('.', '../..')
+executable('rage', [
+    'controls.c',   'controls.h',
+    'dnd.c',        'dnd.h',
+    'gesture.c',    'gesture.h',
+    'key.c',        'key.h',
+    'main.c',       'main.h',
+    'video.c',      'video.h',
+    'winvid.c',     'winvid.h',
+    'win.c',        'win.h',
+    'winlist.c',    'winlist.h',
+    'config.c',     'config.h',
+    'sha1.c',       'sha1.h',
+    'videothumb.c', 'videothumb.h',
+    'albumart.c',   'albumart.h',
+    'browser.c',    'browser.h'
+  ],
+  include_directories: inc,
+  dependencies       : deps,
+  gui_app            : true,
+  install            : true)
+executable('rage_thumb', [
+    'thumb.c',
+    'sha1.c',     'sha1.h',
+    'albumart.c', 'albumart.h'
+  ],
+  include_directories: inc,
+  dependencies       : deps,
+  install_dir        : join_paths(dir_lib, proj, 'utils'),
+  install            : true)
diff --git a/src/bin/thumb.c b/src/bin/thumb.c
index cd2b38d..deddeef 100644
--- a/src/bin/thumb.c
+++ b/src/bin/thumb.c
@@ -2,7 +2,7 @@
 #include <Emotion.h>
 #include "sha1.h"
 #include "albumart.h"
-
+#include "rage_config.h"
 
 static Evas_Object *win = NULL, *subwin = NULL, *image = NULL, *vid = NULL;
 static Evas_Object *vidimage = NULL;
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