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
This commit is contained in:
Carsten Haitzler 2017-07-20 14:08:05 +09:00
parent 0756e43821
commit 8726c95e2b
22 changed files with 175 additions and 284 deletions

32
.gitignore vendored
View File

@ -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

View File

40
INSTALL
View File

@ -1,11 +1,37 @@
COMPILING and INSTALLING:
COMPILING and INSTALLING
------------------------
If you got a official release tar archive do:
./configure
Meson is the build system used for this project. For more information please
see:
Then to compile:
make
http://mesonbuild.com
To install (run this as root, or the user who handles installs):
make install
----
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

View File

@ -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."

0
NEWS
View File

22
README
View File

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

View File

@ -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

View File

@ -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"

2
data/desktop/meson.build Normal file
View File

@ -0,0 +1,2 @@
install_data('rage.desktop',
install_dir: join_paths(dir_data, 'applications'))

2
data/icons/meson.build Normal file
View File

@ -0,0 +1,2 @@
install_data('rage.png',
install_dir: join_paths(dir_data, 'icons'))

3
data/meson.build Normal file
View File

@ -0,0 +1,3 @@
subdir('themes')
subdir('desktop')
subdir('icons')

13
data/themes/meson.build Normal file
View File

@ -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')

3
data/themes/perms.sh Executable file
View File

@ -0,0 +1,3 @@
#!/bin/sh
chmod a+r "${DESTDIR}/${MESON_INSTALL_PREFIX}/share/rage/themes/default.edj"

View File

@ -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

View File

@ -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])
])

View File

@ -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)
])

View File

@ -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])
])

64
meson.build Normal file
View File

@ -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')

3
meson_options.txt Normal file
View File

@ -0,0 +1,3 @@
option('edje-cc',
type : 'string',
description: 'A path to a edje_cc. Defaults to system edje_cc')

30
src/bin/meson.build Normal file
View File

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

View File

@ -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;

1
src/meson.build Normal file
View File

@ -0,0 +1 @@
subdir('bin')