summaryrefslogtreecommitdiff
path: root/m4
diff options
context:
space:
mode:
authorVincent Torri <vincent.torri@gmail.com>2014-09-04 16:43:12 +0200
committerCedric BAIL <cedric@osg.samsung.com>2014-09-04 17:33:05 +0200
commit4664b183e3babe46917f48870069cb5958df2f76 (patch)
tree173aa412027e5633b52f874db948bb61ecc3a462 /m4
parentad9aa4a41697c9ea1ef394b5315f983a74bee34f (diff)
downloadelementary-4664b183e3babe46917f48870069cb5958df2f76.tar.gz
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.
Diffstat (limited to 'm4')
-rw-r--r--m4/elm_check_option.m4118
1 files changed, 118 insertions, 0 deletions
diff --git a/m4/elm_check_option.m4 b/m4/elm_check_option.m4
new file mode 100644
index 000000000..abad0f167
--- /dev/null
+++ b/m4/elm_check_option.m4
@@ -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
+])