summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Schmidt <stefan@osg.samsung.com>2015-11-09 16:06:16 +0100
committerStefan Schmidt <stefan@osg.samsung.com>2015-11-09 16:06:16 +0100
commitab7d7d7da8e18a5de84fd21bd30c001afc5f5765 (patch)
treeee061c53133ed4e168d01b975b6450e1c81ec99a
parentf44028b62a86e9f6385b69ccdc145e4f59ecef3b (diff)
downloadevas_generic_loaders-ab7d7d7da8e18a5de84fd21bd30c001afc5f5765.tar.gz
build: use the same version handling macros as efl and elementary
Instead of having our slightly different set of macros here for version handling switch to the efl.m4 file we are already using. This annoyed me since I took over the release handling 2 years back.
-rw-r--r--configure.ac41
-rw-r--r--m4/efl.m4449
2 files changed, 452 insertions, 38 deletions
diff --git a/configure.ac b/configure.ac
index ed0da4c..0db5f25 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,23 +1,5 @@
-##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
-##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
-m4_define([v_maj], [1])
-m4_define([v_min], [16])
-m4_define([v_mic], [99])
-dnl m4_define([v_rev], m4_esyscmd([(git rev-list --count HEAD 2>/dev/null || echo 0) | tr -d '\n']))
-##-- When released, remove the dnl on the below line
-dnl m4_undefine([v_rev])
-##-- When doing snapshots - change soname. remove dnl on below line
-m4_define([relname], [dev])
-dnl m4_define([v_rel], [-release relname])
-##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
-m4_ifdef([v_rev], [m4_define([v_ver], [v_maj.v_min.v_mic.v_rev])], [m4_define([v_ver], [v_maj.v_min.v_mic])])
-m4_define([lt_cur], m4_eval(v_maj + v_min))
-m4_define([lt_rev], v_mic)
-m4_define([lt_age], v_min)
-##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
-##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
-
-AC_INIT([evas_generic_loaders], [v_ver], [enlightenment-devel@lists.sourceforge.net])
+EFL_VERSION([1], [16], [99], [dev])
+AC_INIT([evas_generic_loaders], [efl_version], [enlightenment-devel@lists.sourceforge.net])
AC_PREREQ([2.52])
AC_CONFIG_SRCDIR([configure.ac])
AC_CONFIG_MACRO_DIR([m4])
@@ -27,23 +9,6 @@ AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE([1.6 dist-xz])
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
-##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
-##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
-m4_ifdef([v_rev], , [m4_define([v_rev], [0])])
-m4_ifdef([v_rel], , [m4_define([v_rel], [])])
-AC_DEFINE_UNQUOTED(VMAJ, [v_maj], [Major version])
-AC_DEFINE_UNQUOTED(VMIN, [v_min], [Minor version])
-AC_DEFINE_UNQUOTED(VMIC, [v_mic], [Micro version])
-AC_DEFINE_UNQUOTED(VREV, [v_rev], [Revison])
-version_info="lt_cur:lt_rev:lt_age"
-release_info="v_rel"
-AC_SUBST(version_info)
-AC_SUBST(release_info)
-##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
-##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
-VMAJ=v_maj
-AC_SUBST(VMAJ)
-
### Needed information
AC_CANONICAL_BUILD
@@ -266,7 +231,7 @@ echo
echo
echo
echo "------------------------------------------------------------------------"
-echo "$PACKAGE $VERSION"
+echo "$PACKAGE_NAME $PACKAGE_VERSION"
echo "------------------------------------------------------------------------"
echo
echo
diff --git a/m4/efl.m4 b/m4/efl.m4
new file mode 100644
index 0000000..3598ce7
--- /dev/null
+++ b/m4/efl.m4
@@ -0,0 +1,449 @@
+dnl file to manage modules in efl
+
+dnl EFL_VERSION(major, minor, micro, release)
+dnl This setup EFL version information and should be called BEFORE AC_INIT().
+dnl
+dnl release parameter is 'dev' to use from SVN or libtool -release field.
+dnl It may be empty if not dev (svn/live build) and no -release is to be used.
+dnl
+dnl Examples:
+dnl EFL_VERSION(1, 7, 99, dev)
+dnl EFL_VERSION(1, 7, 99, ver-1234)
+dnl This will define couple of m4 symbols:
+dnl v_maj = given major number (first parameter)
+dnl v_min = given minor number (second parameter)
+dnl v_mic = given micro number (third parameter)
+dnl v_rev = if release, it's 0, otherwise it's dev_version.
+dnl v_rel = if release, it's -release followed by fourth parameter,
+dnl otherwise it's empty. (mostly for libtool)
+dnl efl_version = if release, it's major.minor.micro, otherwise it's
+dnl major.minor.micro.dev_version
+dnl dev_version = development version (svn revision).
+dnl def_build_profile = dev or release based on 'dev' release parameter.
+AC_DEFUN([EFL_VERSION],
+[dnl
+m4_define([v_maj], [$1])dnl
+m4_define([v_min], [$2])dnl
+m4_define([v_mic], [$3])dnl
+m4_define([dev_version], m4_esyscmd([(git rev-list --count HEAD 2>/dev/null || echo 0) | tr -d '\n']))dnl
+m4_define([v_rev], m4_if($4, dev, [dev_version], [0]))dnl
+m4_define([v_rel], [])dnl
+m4_define([def_build_profile], m4_if($4, dev, [dev], [release]))dnl
+m4_define([efl_version], m4_if($4, dev, [v_maj.v_min.v_mic.v_rev], [v_maj.v_min.v_mic]))dnl
+dnl m4_define([efl_version], [v_maj.v_min.v_mic])dnl
+])
+
+dnl EFL_COLOR
+dnl will check if terminal supports color and if color is wanted by user.
+dnl
+dnl Used Variables:
+dnl WANT_COLOR: if no, forces no color output.
+dnl TERM: used to check if color should be enabled.
+dnl
+dnl Defined Variables:
+dnl COLOR_YES: to be used in positive/yes conditions
+dnl COLOR_NO: to be used in negative/no conditions
+dnl COLOR_OTHER: to be used to highlight some other condition
+dnl COLOR_RESET: to reset color
+dnl want_color: yes or no
+AC_DEFUN([EFL_COLOR],
+[dnl
+case "$TERM" in
+ xterm|xterm-color|xterm-256color|Eterm|aterm|kterm|rxvt*|screen|gnome|interix)
+ want_color="${WANT_COLOR:-yes}"
+ ;;
+ *)
+ want_color="no"
+ ;;
+esac
+
+### echo compatibility
+
+## the BSD echo does not have the -e option (it is the default behaviour)
+echo_e=
+if test "`echo -e x`" = "x"; then
+ echo_e=-e
+fi
+AC_SUBST([ECHO_E], [${echo_e}])
+
+if test "${want_color}" = "yes"; then
+ COLOR_YES=`echo $echo_e "\033@<:@1;32m"`
+ COLOR_NO=`echo $echo_e "\033@<:@1;31m"`
+ COLOR_OTHER=`echo $echo_e "\033@<:@1;36m"`
+ COLOR_RESET=`echo $echo_e "\033@<:@0m"`
+else
+ COLOR_YES=""
+ COLOR_NO=""
+ COLOR_OTHER=""
+ COLOR_RESET=""
+fi
+])
+
+dnl EFL_INIT()
+dnl Will AC_DEFINE() the following:
+dnl VMAJ = v_maj
+dnl VMIN = v_min
+dnl VMIC = v_mic
+dnl VREV = v_rev
+dnl Will AC_SUBST() the following:
+dnl VMAJ = v_maj
+dnl VMIN = v_min
+dnl VMIC = v_mic
+dnl EFL_LTLIBRARY_FLAGS="-no-undefined -version-info ..."
+dnl EFL_LTMODULE_FLAGS="-no-undefined -avoid-version"
+dnl Will define the following m4:
+dnl lt_cur = libtool 'current' field of libtool's -version-info
+dnl lt_rev = libtool 'revision' field of libtool's -version-info
+dnl lt_age = libtool 'age' field of libtool's -version-info
+AC_DEFUN([EFL_INIT],
+[dnl
+AC_REQUIRE([EFL_COLOR])dnl
+AC_DEFINE_UNQUOTED([VMAJ], [v_maj], [Major version])dnl
+AC_DEFINE_UNQUOTED([VMIN], [v_min], [Minor version])dnl
+AC_DEFINE_UNQUOTED([VMIC], [v_mic], [Micro version])dnl
+AC_DEFINE_UNQUOTED([VREV], [v_rev], [Revison])dnl
+VMAJ=v_maj
+VMIN=v_min
+VMIC=v_mic
+AC_SUBST([VMAJ])dnl
+AC_SUBST([VMIN])dnl
+AC_SUBST([VMIC])dnl
+dnl
+dnl TODO: warning - lt_cur:
+dnl the previous code assumed v_maj + v_min, but this will be a problem when
+dnl we bump v_maj and reset v_min. 1 + 7 == 7 + 1, so if v_maj is bumped
+dnl we multiply it by 100.
+m4_define([lt_cur], m4_if(m4_cmp(v_maj, 1), 0, m4_eval(v_maj + v_min), m4_eval(v_maj * 100 + v_min)))dnl
+m4_define([lt_rev], v_mic)dnl
+m4_define([lt_age], v_min)dnl
+dnl
+EFL_LTLIBRARY_FLAGS="-no-undefined -version-info lt_cur:lt_rev:lt_age v_rel"
+AC_SUBST(EFL_LTLIBRARY_FLAGS)dnl
+EFL_LTMODULE_FLAGS="-no-undefined -avoid-version"
+AC_SUBST([EFL_LTMODULE_FLAGS])dnl
+AC_MSG_NOTICE([Initialized AC_PACKAGE_NAME (AC_PACKAGE_VERSION) development=dev_version v_rel])
+])
+
+dnl EFL_EVAL_PKGS(EFL)
+dnl does PKG_CHECK_MODULES() for given EFL
+AC_DEFUN([EFL_EVAL_PKGS],
+[dnl
+m4_pushdef([DOWNEFL], m4_translit([$1], [-A-Z], [_a-z]))dnl
+if test "x${requirements_pc_deps_[]m4_defn([DOWNEFL])}" != "x"; then
+ PKG_CHECK_MODULES([$1], [${requirements_pc_deps_[]m4_defn([DOWNEFL])}])
+fi
+m4_popdef([DOWNEFL])dnl
+])
+
+dnl EFL_INTERNAL_DEPEND_PKG(EFL, OTHEREFL)
+dnl Adds a pkg-config dependency on another EFL.
+AC_DEFUN([EFL_INTERNAL_DEPEND_PKG],
+[dnl
+m4_pushdef([DOWNEFL], m4_translit([$1], [-A-Z], [_a-z]))dnl
+m4_pushdef([DOWNOTHER], m4_translit([$2], [-A-Z], [_a-z]))dnl
+dnl TODO: we need to fix the package config names for 2.0
+dnl TODO: and make them uniform in scheme.
+depname="$2"
+libdirname="m4_defn([DOWNOTHER])"
+libname="m4_defn([DOWNOTHER])"
+case "m4_defn([DOWNOTHER])" in
+ ethumb_client)
+ depname="ethumb_client"
+ ;;
+esac
+requirements_pc_[]m4_defn([DOWNEFL])="${depname} >= ${PACKAGE_VERSION} ${requirements_pc_[][]m4_defn([DOWNEFL])}"
+requirements_cflags_[]m4_defn([DOWNEFL])="-I\$(top_srcdir)/src/lib/${libdirname} -I\$(top_builddir)/src/lib/${libdirname} ${requirements_cflags_[][]m4_defn([DOWNEFL])}"
+requirements_internal_libs_[]m4_defn([DOWNEFL])="lib/${libdirname}/lib${libname}.la ${requirements_internal_libs_[][]m4_defn([DOWNEFL])}"
+requirements_internal_deps_libs_[]m4_defn([DOWNEFL])="${requirements_public_libs_[]m4_defn([DOWNOTHER])} ${requirements_internal_deps_libs_[][]m4_defn([DOWNEFL])}"
+m4_popdef([DOWNOTHER])dnl
+m4_popdef([DOWNEFL])dnl
+])
+
+dnl EFL_PLATFORM_DEPEND(EFL, PLATFORM)
+dnl PLATFORM is one of: all, evil, escape, exotic
+AC_DEFUN([EFL_PLATFORM_DEPEND],
+[dnl
+m4_pushdef([DOWNOTHER], m4_translit([$2], [-A-Z], [_a-z]))dnl
+case "m4_defn([DOWNOTHER])" in
+ all)
+ if test "x${efl_lib_optional_evil}" = "xyes"; then
+ EFL_INTERNAL_DEPEND_PKG([$1], [evil])
+ elif test "x${efl_lib_optional_escape}" = "xyes"; then
+ EFL_INTERNAL_DEPEND_PKG([$1], [escape])
+ elif test "x${efl_lib_optional_exotic}" = "xyes"; then
+ EFL_INTERNAL_DEPEND_PKG([$1], [exotic])
+ fi
+ ;;
+ *)
+ if test "x${efl_lib_optional_[]m4_defn([DOWNOTHER])}" = "xyes"; then
+ EFL_INTERNAL_DEPEND_PKG([$1], [$2])
+ fi
+ ;;
+esac
+m4_popdef([DOWNOTHER])dnl
+])
+
+dnl EFL_CRYPTO_DEPEND(EFL)
+dnl the given EFL will use/depend on system crypto settings
+AC_DEFUN([EFL_CRYPTO_DEPEND],
+[dnl
+m4_pushdef([DOWNEFL], m4_translit([$1], [-A-Z], [_a-z]))dnl
+requirements_pc_[]m4_defn([DOWNEFL])="${requirements_pc_crypto} ${requirements_pc_[][]m4_defn([DOWNEFL])}"
+requirements_pc_deps_[]m4_defn([DOWNEFL])="${requirements_pc_deps_crypto} ${requirements_pc_deps_[][]m4_defn([DOWNEFL])}"
+requirements_libs_[]m4_defn([DOWNEFL])="${requirements_libs_crypto} ${requirements_libs_[][]m4_defn([DOWNEFL])}"
+requirements_cflags_[]m4_defn([DOWNEFL])="${requirements_cflags_crypto} ${requirements_cflags_[][]m4_defn([DOWNEFL])}"
+m4_popdef([DOWNEFL])dnl
+])
+
+dnl EFL_DEPEND_PKG(EFL, NAME, PACKAGE, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+dnl Adds a pkg-config dependency to an efl, AC_DEFINE() HAVE_NAME,
+dnl and inserts dependencies in proper variables
+AC_DEFUN([EFL_DEPEND_PKG],
+[dnl
+m4_pushdef([UPEFL], m4_translit([$1], [-a-z], [_A-Z]))dnl
+m4_pushdef([DOWNEFL], m4_translit([$1], [-A-Z], [_a-z]))dnl
+m4_pushdef([UPNAME], m4_translit([$2], [-a-z], [_A-Z]))dnl
+m4_pushdef([DOWNNAME], m4_translit([$2], [-A-Z], [_a-z]))dnl
+
+ have_[]m4_defn([DOWNNAME])="no"
+
+ EFL_PKG_CHECK_STRICT([$3], [
+ AC_DEFINE([HAVE_]m4_defn([UPNAME]), [1], [Have `]m4_defn([DOWNNAME])[' pkg-config installed.])
+ requirements_pc_[]m4_defn([DOWNEFL])="$3 ${requirements_pc_[][]m4_defn([DOWNEFL])}"
+ requirements_pc_deps_[]m4_defn([DOWNEFL])="$3 ${requirements_pc_deps_[]m4_defn([DOWNEFL])}"
+ have_[]m4_defn([DOWNNAME])="yes"
+
+ $4
+
+ ], [$5])
+
+m4_popdef([DOWNNAME])
+m4_popdef([UPNAME])
+m4_popdef([DOWNEFL])
+m4_popdef([UPEFL])
+])
+
+dnl EFL_OPTIONAL_DEPEND_PKG(EFL, VARIABLE, NAME, PACKAGE, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+AC_DEFUN([EFL_OPTIONAL_DEPEND_PKG],
+[dnl
+m4_pushdef([DOWN], m4_translit([$3], [-A-Z], [_a-z]))dnl
+
+ have_[]m4_defn([DOWN])="no"
+ if test "x$2" = "xyes"; then
+ EFL_DEPEND_PKG([$1], [$3], [$4], [$5], [$6])
+ fi
+m4_popdef([DOWN])dnl
+])
+
+dnl EFL_OPTIONAL_INTERNAL_DEPEND_PKG(EFL, VARIABLE, NAME)
+AC_DEFUN([EFL_OPTIONAL_INTERNAL_DEPEND_PKG],
+[dnl
+ if test "x$2" = "xyes"; then
+ EFL_INTERNAL_DEPEND_PKG([$1], [$3])
+ fi
+])
+
+dnl EFL_ADD_LIBS(PKG, LIBS)
+dnl Add libraries that the EFL library will depend on
+dnl See EFL_DEPEND_PKG() for pkg-config version.
+AC_DEFUN([EFL_ADD_LIBS],
+[dnl
+m4_pushdef([DOWN], m4_translit([$1], [-A-Z], [_a-z]))dnl
+requirements_libs_[]m4_defn([DOWN])="${requirements_libs_[]m4_defn([DOWN])} $2"
+m4_popdef([DOWN])dnl
+])
+
+dnl EFL_ADD_PUBLIC_LIBS(PKG, PUBLIC_LIBS)
+dnl Add libraries that the EFL library will depend on when used.
+dnl
+dnl Unlike EFL_ADD_LIBS(), that is only used when generating PKG,
+dnl this one is used when linking PKG to other libraries or applications.
+dnl
+dnl For instance if you use some other library in your header that user
+dnl inclues.
+AC_DEFUN([EFL_ADD_PUBLIC_LIBS],
+[dnl
+m4_pushdef([DOWN], m4_translit([$1], [-A-Z], [_a-z]))dnl
+requirements_public_libs_[]m4_defn([DOWN])="${requirements_public_libs_[]m4_defn([DOWN])} $2"
+m4_popdef([DOWN])dnl
+])
+
+dnl EFL_ADD_CFLAGS(PKG, CFLAGS)
+dnl Add CFLAGS that the EFL library will use
+dnl See EFL_DEPEND_PKG() for pkg-config version.
+AC_DEFUN([EFL_ADD_CFLAGS],
+[dnl
+m4_pushdef([DOWN], m4_translit([$1], [-A-Z], [_a-z]))dnl
+requirements_cflags_[]m4_defn([DOWN])="${requirements_cflags_[]m4_defn([DOWN])} $2"
+m4_popdef([DOWN])dnl
+])
+
+dnl EFL_LIB_START(PKG)
+dnl start the setup of an EFL library, defines variables and prints a notice
+dnl
+dnl Exports (AC_SUBST)
+dnl PKG_CFLAGS: what to use for CFLAGS
+dnl
+dnl PKG_LDFLAGS: what to use for LDFLAGS
+dnl
+dnl PKG_LIBS: what to use in automake's _LIBADD or _LDADD. Includes
+dnl everything else.
+dnl
+dnl PKG_INTERNAL_LIBS: all other EFL as lib/name/libname.la that this
+dnl package depend. Used in automake's _DEPENDENCIES.
+dnl
+dnl USE_PKG_LIBS: what to use in automake's _LIBADD or _LDADD when using
+dnl this PKG (PKG_LIBS + libpkg.la)
+dnl
+dnl USE_PKG_INTERNAL_LIBS: extends PKG_INTERNAL_LIBS with lib/pkg/libpkg.la
+dnl
+dnl requirements_pc_pkg: all pkg-config (pc) files used by this pkg,
+dnl includes internal EFL (used in 'Requires.private' in pkg.pc)
+dnl
+dnl requirements_libs_pkg: external libraries this package needs when
+dnl linking (used in 'Libs.private' in pkg.pc)
+dnl
+dnl requirements_public_libs_pkg: external libraries other packages need
+dnl when using this (used in 'Libs' in pkg.pc)
+dnl
+dnl requirements_cflags_pkg: what to use for CFLAGS (same as PKG_CFLAGS).
+dnl
+dnl Variables:
+dnl requirements_pc_deps_pkg: external pkg-config (pc) files used by this
+dnl pkg (used in EFL_EVAL_PKGS())
+dnl
+dnl requirements_internal_libs_pkg: all other EFL as lib/name/libname.la
+dnl that this package depend.
+dnl
+dnl requirements_internal_deps_libs_pkg: external libraries that are public
+dnl dependencies (due internal libs).
+dnl
+AC_DEFUN([EFL_LIB_START],
+[dnl
+m4_pushdef([DOWN], m4_translit([$1], [-A-Z], [_a-z]))dnl
+m4_pushdef([UP], m4_translit([$1], [-a-z], [_A-Z]))dnl
+
+requirements_internal_libs_[]m4_defn([DOWN])=""
+requirements_internal_deps_libs_[]m4_defn([DOWN])=""
+requirements_libs_[]m4_defn([DOWN])=""
+requirements_public_libs_[]m4_defn([DOWN])=""
+requirements_cflags_[]m4_defn([DOWN])=""
+requirements_pc_[]m4_defn([DOWN])=""
+requirements_pc_deps_[]m4_defn([DOWN])=""
+
+m4_defn([UP])_LIBS="${m4_defn([UP])_LIBS}"
+m4_defn([UP])_INTERNAL_LIBS="${m4_defn([UP])_INTERNAL_LIBS}"
+USE_[]m4_defn([UP])_LIBS="${USE_[]m4_defn([UP])_LIBS}"
+USE_[]m4_defn([UP])_INTERNAL_LIBS="${USE_[]m4_defn([UP])_INTERNAL_LIBS}"
+m4_defn([UP])_LDFLAGS="${m4_defn([UP])_LDFLAGS}"
+m4_defn([UP])_CFLAGS="${m4_defn([UP])_CFLAGS}"
+
+AC_SUBST([requirements_libs_]m4_defn([DOWN]))dnl
+AC_SUBST([requirements_public_libs_]m4_defn([DOWN]))dnl
+AC_SUBST([requirements_cflags_]m4_defn([DOWN]))dnl
+AC_SUBST([requirements_pc_]m4_defn([DOWN]))dnl
+AC_SUBST(m4_defn([UP])[_LIBS])dnl
+AC_SUBST(m4_defn([UP])[_INTERNAL_LIBS])dnl
+AC_SUBST([USE_]m4_defn([UP])[_LIBS])dnl
+AC_SUBST([USE_]m4_defn([UP])[_INTERNAL_LIBS])dnl
+AC_SUBST(m4_defn([UP])[_LDFLAGS])dnl
+AC_SUBST(m4_defn([UP])[_CFLAGS])dnl
+AC_MSG_NOTICE([Start $1 checks])dnl
+m4_popdef([UP])dnl
+m4_popdef([DOWN])dnl
+])
+
+dnl EFL_LIB_END(PKG)
+dnl finishes the setup of an EFL library
+AC_DEFUN([EFL_LIB_END],
+[dnl
+m4_pushdef([DOWN], m4_translit([$1], [-A-Z], [_a-z]))dnl
+m4_pushdef([UP], m4_translit([$1], [-a-z], [_A-Z]))dnl
+
+libdirname="m4_defn([DOWN])"
+libname="m4_defn([DOWN])"
+
+m4_defn([UP])_LDFLAGS="${EFLALL_COV_LDFLAGS} ${EFLALL_LDFLAGS} ${m4_defn([UP])_LDFLAGS}"
+m4_defn([UP])_LIBS=" ${m4_defn([UP])_LDFLAGS} ${EFLALL_COV_LIBS} ${EFLALL_LIBS} ${m4_defn([UP])_LIBS} ${requirements_internal_libs_[]m4_defn([DOWN])} ${requirements_internal_deps_libs_[]m4_defn([DOWN])} ${requirements_public_libs_[]m4_defn([DOWN])} ${requirements_libs_[]m4_defn([DOWN])} ${requirements_libs_eflall} "
+m4_defn([UP])_INTERNAL_LIBS="${m4_defn([UP])_INTERNAL_LIBS} ${requirements_internal_libs_[]m4_defn([DOWN])}"
+USE_[]m4_defn([UP])_LIBS="${m4_defn([UP])_LIBS} lib/${libdirname}/lib${libname}.la"
+USE_[]m4_defn([UP])_INTERNAL_LIBS="${m4_defn([UP])_INTERNAL_LIBS} lib/${libdirname}/lib${libname}.la"
+m4_defn([UP])_CFLAGS="${EFLALL_COV_CFLAGS} ${EFLALL_CFLAGS} ${m4_defn([UP])_CFLAGS} -I\$(top_srcdir)/src/lib/${libdirname} -I\$(top_builddir)/src/lib/${libdirname} -I\$(top_srcdir)/src/bindings/${libdirname} -I\$(top_builddir)/src/bindings/${libdirname} ${requirements_cflags_[]m4_defn([DOWN])} ${requirements_cflags_eflall} -DEFL_[]m4_defn([UP])_BUILD=1"
+requirements_pc_[]m4_defn([DOWN])="${requirements_pc_[]m4_defn([DOWN])} ${requirements_pc_eflall}"
+requirements_pc_deps_[]m4_defn([DOWN])="${requirements_pc_deps_[]m4_defn([DOWN])} ${requirements_pc_deps_eflall}"
+
+AC_MSG_NOTICE([Finished $1 checks])dnl
+m4_popdef([UP])dnl
+m4_popdef([DOWN])dnl
+])
+
+dnl EFL_LIB_START_OPTIONAL(PKG, TEST)
+dnl test if library should be build and then EFL_LIB_START()
+dnl must call EFL_LIB_END_OPTIONAL() to close it.
+AC_DEFUN([EFL_LIB_START_OPTIONAL],
+[dnl
+m4_pushdef([DOWN], m4_translit([$1], [-A-Z], [_a-z]))dnl
+m4_pushdef([UP], m4_translit([$1], [-a-z], [_A-Z]))dnl
+
+if $2; then
+ efl_lib_optional_[]m4_defn([DOWN])="yes"
+else
+ efl_lib_optional_[]m4_defn([DOWN])="no"
+ AC_MSG_NOTICE([Skipping $1 checks (disabled)])
+fi
+
+if test "$efl_lib_optional_[]m4_defn([DOWN])" = "yes"; then
+ EFL_LIB_START([$1])
+ AC_DEFINE([HAVE_]m4_defn([UP]), [1], [optional EFL $1 is enabled])
+dnl closed at EFL_LIB_END_OPTIONAL()
+m4_popdef([UP])dnl
+m4_popdef([DOWN])dnl
+])
+
+dnl EFL_LIB_END_OPTIONAL(PKG)
+dnl closes block started by EFL_LIB_START_OPTIONAL() and then
+dnl defines AM_CONDITIONAL([HAVE_PKG]) and AC_DEFINE([HAVE_PKG])
+AC_DEFUN([EFL_LIB_END_OPTIONAL],
+[dnl
+m4_pushdef([DOWN], m4_translit([$1], [-A-Z], [_a-z]))dnl
+m4_pushdef([UP], m4_translit([$1], [-a-z], [_A-Z]))dnl
+
+dnl close if started at EFL_LIB_START_OPTIONAL()
+ EFL_LIB_END([$1])
+fi
+
+AM_CONDITIONAL([HAVE_]m4_defn([UP]), [test "$efl_lib_optional_[]m4_defn([DOWN])" = "yes"])dnl
+m4_popdef([UP])dnl
+m4_popdef([DOWN])dnl
+])
+
+dnl EFL_ADD_FEATURE(PKG, NAME, [VALUE])
+dnl if VALUE is not specified, will use ${have_name} instead.
+dnl
+dnl Defined Variables:
+dnl features_pkg
+AC_DEFUN([EFL_ADD_FEATURE],
+[dnl
+m4_pushdef([DOWNPKG], m4_translit([$1], [-A-Z], [_a-z]))dnl
+m4_pushdef([DOWNNAME], m4_translit([$2], [-A-Z], [_a-z]))dnl
+
+value="m4_if($3, , [${have_]m4_defn([DOWNNAME])[:-${want_]m4_defn([DOWNNAME])[}}], [$3])"
+case "${value}" in
+ yes)
+ tmp="${COLOR_YES}+$2${COLOR_RESET}"
+ ;;
+ no)
+ tmp="${COLOR_NO}-$2${COLOR_RESET}"
+ ;;
+ *)
+ tmp="${COLOR_OTHER}$2=${value}${COLOR_RESET}"
+ ;;
+esac
+if test -z "${features_[]m4_defn([DOWNPKG])}"; then
+ features_[]m4_defn([DOWNPKG])="${tmp}"
+else
+ features_[]m4_defn([DOWNPKG])="${features_[]m4_defn([DOWNPKG])} ${tmp}"
+fi
+m4_popdef([DOWNNAME])dnl
+m4_popdef([DOWNPKG])dnl
+])