autotools: add m4 macro to check for options

This simplify autotools in elementary by recycling the same m4
and also compilation flags. Less code to read and maintain.
This commit is contained in:
Vincent Torri 2014-09-04 16:43:12 +02:00 committed by Cedric BAIL
parent be4ba83304
commit 8c705cac78
13 changed files with 135 additions and 229 deletions

View File

@ -234,6 +234,12 @@ ELM_CHECK_BACKEND([Win32])
ELM_CHECK_BACKEND([Wayland])
ELM_CHECK_BACKEND([DRM])
ELM_CHECK_OPTION([elocation], [0.1.0])
ELM_CHECK_OPTION([eweather], [0.2.0])
# emap is in svn : trunk/PROTO
ELM_CHECK_OPTION([emap], [0.1.0])
ELM_CHECK_OPTION([eweb])
PKG_CHECK_MODULES([ELEMENTARY],
[${requirement_elm}])
@ -438,143 +444,6 @@ case "$host_os" in
esac
ELM_ELOCATION_DEF="#undef"
have_elementary_elocation="no"
want_elementary_elocation="auto"
AC_ARG_ENABLE([elocation],
[AS_HELP_STRING([--disable-elocation], [disable elocation support. @<:@default=detect@:>@])],
[want_elementary_elocation=$enableval], [])
if test "x$want_elementary_elocation" != "xno"; then
PKG_CHECK_MODULES([ELEMENTARY_ELOCATION],
[
elocation >= 0.1.0
],
[
AC_DEFINE(HAVE_ELEMENTARY_ELOCATION, 1, [Elocation support for Elementary])
have_elementary_elocation="yes"
ELM_ELOCATION_DEF="#define"
requirement_elm="elocation >= 0.1.0 ${requirement_elm}"
],
[have_elementary_elocation="no"]
)
else
have_elementary_elocation="no"
fi
if test "x$want_elementary_elocation" = "xyes" -a "x$have_elementary_elocation" = "xno"; then
AC_MSG_ERROR([elocation support requested, but elocation was not found by pkg-config.])
fi
AC_SUBST(ELM_ELOCATION_DEF)
ELM_EWEATHER_DEF="#undef"
have_elementary_eweather="no"
want_elementary_eweather="auto"
AC_ARG_ENABLE([eweather],
[AS_HELP_STRING([--disable-eweather], [disable eweather support. @<:@default=detect@:>@])],
[want_elementary_eweather=$enableval], [])
if test "x$want_elementary_eweather" != "xno"; then
PKG_CHECK_MODULES([ELEMENTARY_EWEATHER],
[
eweather
],
[
AC_DEFINE(HAVE_ELEMENTARY_EWEATHER, 1, [EWeather support for Elementary])
have_elementary_eweather="yes"
ELM_EWEATHER_DEF="#define"
requirement_elm="eweather ${requirement_elm}"
],
[have_elementary_eweather="no"]
)
else
have_elementary_eweather="no"
fi
if test "x$want_elementary_eweather" = "xyes" -a "x$have_elementary_eweather" = "xno"; then
AC_MSG_ERROR([Eweather support requested, but eweather was not found by pkg-config.])
fi
AC_SUBST(ELM_EWEATHER_DEF)
ELM_EMAP_DEF="#undef"
have_elementary_emap="no"
want_elementary_emap="auto"
AC_ARG_ENABLE([emap],
[AS_HELP_STRING([--disable-emap], [disable emap support. @<:@default=detect@:>@])],
[want_elementary_emap=$enableval], [])
if test "x$want_elementary_emap" != "xno"; then
PKG_CHECK_MODULES([ELEMENTARY_EMAP],
[
emap
],
[
AC_DEFINE(HAVE_ELEMENTARY_EMAP, 1, [EMap support for Elementary])
have_elementary_emap="yes"
ELM_EMAP_DEF="#define"
requirement_elm="emap ${requirement_elm}"
],
[have_elementary_emap="no"]
)
else
have_elementary_emap="no"
fi
if test "x$want_elementary_emap" = "xyes" -a "x$have_elementary_emap" = "xno"; then
AC_MSG_ERROR([Emap support requested, but emap was not found by pkg-config.])
fi
AC_SUBST(ELM_EMAP_DEF)
ELM_WEB2_DEF="#undef"
elementary_web_backend="detect"
elementary_web="no"
want_elementary_web=""
AC_ARG_WITH([elementary-web-backend],
[AS_HELP_STRING([--with-elementary-web-backend=@<:@ewebkit2/detect/none@:>@], [Select the WebKit backend for Elementary to support web @<:@default=detect@:>@])],
[
elementary_web_backend=${withval}
],
[elementary_web_backend="detect"])
case "$elementary_web_backend" in
ewebkit2|detect|none) ;;
*) AC_MSG_ERROR([Invalid web backend: must be ewebkit2, detect or none]) ;;
esac
if test "x$elementary_web_backend" = "xdetect"; then
want_elementary_web="ewebkit2"
else
want_elementary_web=$elementary_web_backend
fi
if test "x$want_elementary_web" != "xnone"; then
PKG_CHECK_MODULES([ELEMENTARY_WEB],
[$want_elementary_web],
[
AC_DEFINE(HAVE_ELEMENTARY_WEB, 1, [Web support for Elementary])
webkit_datadir=$($PKG_CONFIG $want_elementary_web --variable=datadir)
AC_DEFINE_UNQUOTED(WEBKIT_DATADIR,
"$webkit_datadir",
"WebKit's data dir")
ELM_WEB2_DEF="#define"
o
elementary_web=$want_elementary_web
requirement_elm="${want_elementary_web} ${requirement_elm}"
],
[elementary_web="no"]
)
else
elementary_web="no"
fi
if test "x$elementary_web_backend" = "xewebkit2"; then
if test "x$elementary_web" = "xnone"; then
AC_MSG_ERROR([Web support requested, but no $elementary_web_backend found by pkg-config.])
fi
fi
AC_SUBST(ELM_WEB2_DEF)
AC_CONFIG_FILES([
Makefile
elementary.spec

View File

@ -12,11 +12,7 @@ AM_CPPFLAGS = \
-DPACKAGE_BIN_DIR=\"$(bindir)\" \
-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
-DDOCW_DIR=\"$(abs_top_builddir)/doc/widgets\" \
@ELEMENTARY_CFLAGS@ \
@ELEMENTARY_ELOCATION_CFLAGS@ \
@ELEMENTARY_EWEATHER_CFLAGS@ \
@ELEMENTARY_WEB_CFLAGS@ \
@ELEMENTARY_EMAP_CFLAGS@
@ELEMENTARY_CFLAGS@
noinst_DATA = widget_preview_prefs.epb
@ -101,8 +97,6 @@ widget_preview_web \
widget_preview_win
LDADD = $(top_builddir)/src/lib/libelementary.la \
@ELEMENTARY_EWEATHER_LIBS@ \
@ELEMENTARY_EMAP_LIBS@ \
@ELEMENTARY_LIBS@ \
@my_libs@

View File

@ -0,0 +1,118 @@
dnl use: ELM_CHECK_OPTION_DEP(option, pkgver)
AC_DEFUN([ELM_CHECK_OPTION_DEP],
[dnl
m4_pushdef([UP], m4_translit([$1], [-a-z], [_A-Z]))dnl
m4_pushdef([DOWN], m4_translit([$1], [-A-Z], [_a-z]))dnl
ELM_[]UP[]_DEF="#undef"
have_elementary_[]DOWN="no"
AC_ARG_ENABLE(DOWN,
[AS_HELP_STRING([--disable-]DOWN, [disable ]DOWN[ support. @<:@default=detect@:>@])],
[want_option=$enableval],
[want_option="auto"])
AC_MSG_CHECKING([whether to enable $1 option])
AC_MSG_RESULT([${want_option}])
if test "x${want_option}" != "xno"; then
PKG_CHECK_EXISTS(DOWN[ >= $2],
[
AC_DEFINE([HAVE_ELEMENTARY_]UP, [1], [$1 support for Elementary])
have_elementary_[]DOWN="yes"
ELM_[]UP[]_DEF="#define"
requirement_elm="[]DOWN >= $2 ${requirement_elm}"
],
[have_elementary_]DOWN[="no"]
)
fi
AC_MSG_CHECKING([whether to build $1 option])
AC_MSG_RESULT([${have_elementary_[]DOWN}])
if test "x${want_elementary_[]DOWN}" = "xyes" && test "x${have_elementary_[]DOWN}" = "xno"; then
AC_MSG_ERROR([$1 support requested, but $1 was not found by pkg-config.])
fi
AC_SUBST([ELM_]UP[_DEF])
m4_popdef([UP])dnl
m4_popdef([DOWN])dnl
])
dnl use: ELM_CHECK_OPTION_DEP_EWK2()
AC_DEFUN([ELM_CHECK_OPTION_DEP_EWK2],
[dnl
ELM_WEB2_DEF="#undef"
elementary_web="no"
AC_ARG_WITH([elementary-web-backend],
[AS_HELP_STRING(
[--with-elementary-web-backend=@<:@ewebkit2/detect/none@:>@],
[Select the WebKit backend for Elementary to support web @<:@default=detect@:>@])],
[elementary_web_backend=${withval}],
[elementary_web_backend="detect"])
case "${elementary_web_backend}" in
ewebkit2|detect|none)
;;
*)
AC_MSG_ERROR([Invalid web backend: must be ewebkit2, detect or none])
;;
esac
if test "x${elementary_web_backend}" = "xdetect"; then
want_elementary_web="ewebkit2"
else
want_elementary_web=${elementary_web_backend}
fi
AC_MSG_CHECKING([which web option to use])
AC_MSG_RESULT([${want_elementary_web}])
if test "x${want_elementary_web}" != "xnone"; then
PKG_CHECK_EXISTS([$want_elementary_web],
[
AC_DEFINE([HAVE_ELEMENTARY_WEB], [1], [Web support for Elementary])
webkit_datadir=$(${PKG_CONFIG} ${want_elementary_web} --variable=datadir)
AC_DEFINE_UNQUOTED([WEBKIT_DATADIR],
[${webkit_datadir}],
["WebKit's data dir"])
ELM_WEB2_DEF="#define"
elementary_web=${want_elementary_web}
requirement_elm="${want_elementary_web} ${requirement_elm}"
],
[elementary_web="no"]
)
fi
AC_MSG_CHECKING([whether to build web option])
AC_MSG_RESULT([${elementary_web}])
if test "x${elementary_web_backend}" = "xewebkit2" && test "x${elementary_web}" = "xnone"; then
AC_MSG_ERROR([Web support requested, but no ${elementary_web_backend} found by pkg-config.])
fi
AC_SUBST([ELM_WEB2_DEF])
])
dnl use: ELM_CHECK_OPTION(option, pkgver)
AC_DEFUN([ELM_CHECK_OPTION],
[dnl
m4_pushdef([UP], m4_translit([$1], [-a-z], [_A-Z]))dnl
m4_pushdef([DOWN], m4_translit([$1], [-A-Z], [_a-z]))dnl
if test "x$1" = "xeweb" ; then
ELM_CHECK_OPTION_DEP_EWK2
else
ELM_CHECK_OPTION_DEP($1, $2)
fi
m4_popdef([UP])dnl
m4_popdef([DOWN])dnl
])

View File

@ -10,11 +10,7 @@ AM_CPPFLAGS = \
-DPACKAGE_BIN_DIR=\"$(bindir)\" \
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
-DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" \
@ELEMENTARY_CFLAGS@ \
@ELEMENTARY_ELOCATION_CFLAGS@ \
@ELEMENTARY_EWEATHER_CFLAGS@ \
@ELEMENTARY_WEB_CFLAGS@ \
@ELEMENTARY_EMAP_CFLAGS@
@ELEMENTARY_CFLAGS@
bin_PROGRAMS = \
@ELEMENTARY_TEST_PRG@ \
@ -133,11 +129,7 @@ test_win_dialog.c \
test.h
elementary_test_LDADD = $(top_builddir)/src/lib/libelementary.la \
@ELEMENTARY_EWEATHER_LIBS@ \
@ELEMENTARY_ELOCATION_LIBS@ \
@ELEMENTARY_EMAP_LIBS@ \
@ELEMENTARY_LIBS@ \
@ELEMENTARY_WEB_LIBS@ \
@my_libs@
elementary_test_CFLAGS =
elementary_test_LDFLAGS =
@ -146,11 +138,7 @@ elementary_config_SOURCES = \
config.c
elementary_config_LDADD = $(top_builddir)/src/lib/libelementary.la \
@ELEMENTARY_EWEATHER_LIBS@ \
@ELEMENTARY_ELOCATION_LIBS@ \
@ELEMENTARY_EMAP_LIBS@ \
@ELEMENTARY_LIBS@ \
@ELEMENTARY_WEB_LIBS@ \
@my_libs@
elementary_config_LDFLAGS =
@ -160,10 +148,6 @@ elementary_codegen.c
elementary_codegen_LDADD = \
$(top_builddir)/src/lib/libelementary.la \
@ELEMENTARY_LIBS@ \
@ELEMENTARY_EWEATHER_LIBS@ \
@ELEMENTARY_ELOCATION_LIBS@ \
@ELEMENTARY_EMAP_LIBS@ \
@ELEMENTARY_WEB_LIBS@ \
@my_libs@
elementary_codegen_LDFLAGS =
@ -186,10 +170,6 @@ if BUILD_QUICKLAUNCH
elementary_quicklaunch_SOURCES = quicklaunch.c
elementary_quicklaunch_LDADD = $(top_builddir)/src/lib/libelementary.la \
@ELEMENTARY_LIBS@ \
@ELEMENTARY_EWEATHER_LIBS@ \
@ELEMENTARY_ELOCATION_LIBS@ \
@ELEMENTARY_EMAP_LIBS@ \
@ELEMENTARY_WEB_LIBS@ \
@my_libs@
elementary_quicklaunch_LDFLAGS =

View File

@ -10,10 +10,7 @@ AM_CPPFLAGS = \
-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
-DELEMENTARY_BUILD \
@ELEMENTARY_CFLAGS@ \
@ELEMENTARY_ELOCATION_CFLAGS@ \
@ELEMENTARY_EMAP_CFLAGS@ \
@ELEMENTARY_WEB_CFLAGS@
@ELEMENTARY_CFLAGS@
pkgdir = $(libdir)/edje/modules/elm/$(MODULE_EDJE)
pkg_LTLIBRARIES = module.la

View File

@ -16,17 +16,11 @@ AM_CPPFLAGS = \
-DPACKAGE_DATA_DIR="\"$(pkgdatadir)\"" \
-DPACKAGE_BIN_DIR=\"$(bindir)\" \
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
@ELEMENTARY_ELOCATION_CFLAGS@ \
@ELEMENTARY_EWEATHER_CFLAGS@ \
@ELEMENTARY_EMAP_CFLAGS@ \
@ELEMENTARY_WEB_CFLAGS@ \
@ELEMENTARY_CFLAGS@
LDADD = \
-lm \
@ELEMENTARY_LIBS@ \
@ELEMENTARY_ELOCATION_LIBS@ \
@ELEMENTARY_EMAP_LIBS@ \
$(top_builddir)/src/lib/libelementary.la
ELEMENTARY_CODEGEN = $(top_builddir)/src/bin/@ELEMENTARY_CODEGEN_PRG@
@ -313,9 +307,6 @@ endif
if HAVE_CXX11
box_cxx_example_02_SOURCES = box_cxx_example_02.cc
box_cxx_example_02_CXXFLAGS = \
@ELEMENTARY_ELOCATION_CFLAGS@ \
@ELEMENTARY_EWEATHER_CFLAGS@ \
@ELEMENTARY_EMAP_CFLAGS@ \
@ELEMENTARY_CFLAGS@ \
@ELEMENTARY_CXX_CFLAGS@
endif

View File

@ -23,11 +23,7 @@ AM_CPPFLAGS = \
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
-DICON_DIR=\"$(datadir)/icons\" \
-DELEMENTARY_BUILD \
@ELEMENTARY_CFLAGS@ \
@ELEMENTARY_ELOCATION_CFLAGS@ \
@ELEMENTARY_EWEATHER_CFLAGS@ \
@ELEMENTARY_WEB_CFLAGS@ \
@ELEMENTARY_EMAP_CFLAGS@
@ELEMENTARY_CFLAGS@
lib_LTLIBRARIES = libelementary.la
@ -505,10 +501,6 @@ libelementary_la_CFLAGS =
libelementary_la_LIBADD = \
@my_libs@ \
@ELEMENTARY_LIBS@ \
@ELEMENTARY_ELOCATION_LIBS@ \
@ELEMENTARY_EWEATHER_LIBS@ \
@ELEMENTARY_WEB_LIBS@ \
@ELEMENTARY_EMAP_LIBS@ \
@LTLIBINTL@
libelementary_la_LDFLAGS = @EFL_LTLIBRARY_FLAGS@

View File

@ -10,11 +10,7 @@ AM_CPPFLAGS = \
-DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" \
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
-DELEMENTARY_BUILD \
@ELEMENTARY_CFLAGS@ \
@ELEMENTARY_ELOCATION_CFLAGS@ \
@ELEMENTARY_EWEATHER_CFLAGS@ \
@ELEMENTARY_WEB_CFLAGS@ \
@ELEMENTARY_EMAP_CFLAGS@
@ELEMENTARY_CFLAGS@
pkgdir = $(pkglibdir)/modules/access_output/$(MODULE_ARCH)
pkg_LTLIBRARIES = module.la

View File

@ -11,11 +11,7 @@ AM_CPPFLAGS = \
-DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" \
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
-DELEMENTARY_BUILD \
@ELEMENTARY_CFLAGS@ \
@ELEMENTARY_ELOCATION_CFLAGS@ \
@ELEMENTARY_EWEATHER_CFLAGS@ \
@ELEMENTARY_WEB_CFLAGS@ \
@ELEMENTARY_EMAP_CFLAGS@
@ELEMENTARY_CFLAGS@
pkgdir = $(pkglibdir)/modules/datetime_input_ctxpopup/$(MODULE_ARCH)
pkg_LTLIBRARIES = module.la

View File

@ -23,10 +23,7 @@ AM_CPPFLAGS = \
-DLOCALE_DIR=\"$(localedir)\" \
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
-DELEMENTARY_BUILD \
@ELEMENTARY_CFLAGS@ \
@ELEMENTARY_ELOCATION_CFLAGS@ \
@ELEMENTARY_WEB_CFLAGS@ \
@ELEMENTARY_EMAP_CFLAGS@
@ELEMENTARY_CFLAGS@
pkgdir = $(pkglibdir)/modules/prefs/$(MODULE_ARCH)
pkg_LTLIBRARIES = module.la

View File

@ -10,11 +10,7 @@ AM_CPPFLAGS = \
-DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" \
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
-DELEMENTARY_BUILD \
@ELEMENTARY_CFLAGS@ \
@ELEMENTARY_ELOCATION_CFLAGS@ \
@ELEMENTARY_EWEATHER_CFLAGS@ \
@ELEMENTARY_WEB_CFLAGS@ \
@ELEMENTARY_EMAP_CFLAGS@
@ELEMENTARY_CFLAGS@
pkgdir = $(pkglibdir)/modules/test_entry/$(MODULE_ARCH)
pkg_LTLIBRARIES = module.la

View File

@ -10,11 +10,7 @@ AM_CPPFLAGS = \
-DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" \
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
-DELEMENTARY_BUILD \
@ELEMENTARY_CFLAGS@ \
@ELEMENTARY_ELOCATION_CFLAGS@ \
@ELEMENTARY_EWEATHER_CFLAGS@ \
@ELEMENTARY_WEB_CFLAGS@ \
@ELEMENTARY_EMAP_CFLAGS@
@ELEMENTARY_CFLAGS@
pkgdir = $(pkglibdir)/modules/test_map/$(MODULE_ARCH)
pkg_LTLIBRARIES = module.la

View File

@ -79,20 +79,12 @@ elm_suite_CPPFLAGS = \
-I$(top_srcdir)/src/lib \
-I$(top_builddir)/src/lib \
@CHECK_CFLAGS@ \
@ELEMENTARY_CFLAGS@ \
@ELEMENTARY_ELOCATION_CFLAGS@ \
@ELEMENTARY_EWEATHER_CFLAGS@ \
@ELEMENTARY_WEB_CFLAGS@ \
@ELEMENTARY_EMAP_CFLAGS@
@ELEMENTARY_CFLAGS@
elm_suite_LDADD = \
$(top_builddir)/src/lib/libelementary.la \
@CHECK_LIBS@ \
@ELEMENTARY_EWEATHER_LIBS@ \
@ELEMENTARY_ELOCATION_LIBS@ \
@ELEMENTARY_EMAP_LIBS@ \
@ELEMENTARY_LIBS@ \
@ELEMENTARY_WEB_LIBS@ \
@my_libs@
if HAVE_CXX11
@ -106,19 +98,11 @@ elm_cxx_suite_CPPFLAGS = \
-I$(top_builddir)/src/lib \
@CHECK_CFLAGS@ \
@ELEMENTARY_CFLAGS@ \
@ELEMENTARY_CXX_CFLAGS@ \
@ELEMENTARY_ELOCATION_CFLAGS@ \
@ELEMENTARY_EWEATHER_CFLAGS@ \
@ELEMENTARY_WEB_CFLAGS@ \
@ELEMENTARY_EMAP_CFLAGS@
@ELEMENTARY_CXX_CFLAGS@
elm_cxx_suite_LDADD = \
$(top_builddir)/src/lib/libelementary.la \
@CHECK_LIBS@ \
@ELEMENTARY_EWEATHER_LIBS@ \
@ELEMENTARY_ELOCATION_LIBS@ \
@ELEMENTARY_EMAP_LIBS@ \
@ELEMENTARY_LIBS@ \
@ELEMENTARY_WEB_LIBS@ \
@my_libs@
endif