diff --git a/ax_cxx_compile_stdcxx_11.m4 b/ax_cxx_compile_stdcxx_11.m4
index af37acd..4c831e0 100644
--- a/ax_cxx_compile_stdcxx_11.m4
+++ b/ax_cxx_compile_stdcxx_11.m4
@@ -4,12 +4,16 @@
#
# SYNOPSIS
#
+# AX_REQUIRE_STDCXX_11
+# AX_REQUIRE_STDCXX_14
# AX_CXX_COMPILE_STDCXX_11([ext|noext],[mandatory|optional])
+# AX_CXX_COMPILE_STDCXX_14([ext|noext],[mandatory|optional])
#
# DESCRIPTION
#
# Check for baseline language coverage in the compiler for the C++11
-# standard; if necessary, add switches to CXXFLAGS to enable support.
+# or C++14 standard; if necessary, add switches to CXXFLAGS to
+# enable support.
#
# The first argument, if specified, indicates whether you insist on an
# extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
@@ -131,3 +135,97 @@ AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [dnl
AC_SUBST(HAVE_CXX11)
fi
])
+
+AC_DEFUN([AX_CXX_COMPILE_STDCXX_14], [dnl
+ m4_if([$1], [], [],
+ [$1], [ext], [],
+ [$1], [noext], [],
+ [m4_fatal([invalid argument `$1' to AX_CXX_COMPILE_STDCXX_14])])dnl
+ m4_if([$2], [], [ax_cxx_compile_cxx14_required=true],
+ [$2], [mandatory], [ax_cxx_compile_cxx14_required=true],
+ [$2], [optional], [ax_cxx_compile_cxx14_required=false],
+ [m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX_14])])dnl
+ AC_LANG_PUSH([C++])dnl
+ ac_success=no
+ AC_CACHE_CHECK(whether $CXX supports C++14 features by default,
+ ax_cv_cxx_compile_cxx14,
+ [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])],
+ [ax_cv_cxx_compile_cxx14=yes],
+ [ax_cv_cxx_compile_cxx14=no])])
+ if test x$ax_cv_cxx_compile_cxx14 = xyes; then
+ ac_success=yes
+ fi
+
+ m4_if([$1], [noext], [], [dnl
+ if test x$ac_success = xno; then
+ for switch in -std=gnu++14 -std=gnu++0y; do
+ cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx14_$switch])
+ AC_CACHE_CHECK(whether $CXX supports C++14 features with $switch,
+ $cachevar,
+ [ac_save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAGS $switch"
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])],
+ [eval $cachevar=yes],
+ [eval $cachevar=no])
+ CXXFLAGS="$ac_save_CXXFLAGS"])
+ if eval test x\$$cachevar = xyes; then
+ CXXFLAGS="$CXXFLAGS $switch"
+ ac_success=yes
+ break
+ fi
+ done
+ fi])
+
+ m4_if([$1], [ext], [], [dnl
+ if test x$ac_success = xno; then
+ for switch in -std=c++14 -std=c++0y; do
+ cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx14_$switch])
+ AC_CACHE_CHECK(whether $CXX supports C++14 features with $switch,
+ $cachevar,
+ [ac_save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAGS $switch"
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])],
+ [eval $cachevar=yes],
+ [eval $cachevar=no])
+ CXXFLAGS="$ac_save_CXXFLAGS"])
+ if eval test x\$$cachevar = xyes; then
+ CXXFLAGS="$CXXFLAGS $switch"
+ ac_success=yes
+ break
+ fi
+ done
+ fi])
+ AC_LANG_POP([C++])
+ if test x$ax_cxx_compile_cxx14_required = xtrue; then
+ if test x$ac_success = xno; then
+ AC_MSG_ERROR([*** A compiler with support for C++14 language features is required.])
+ fi
+ else
+ if test x$ac_success = xno; then
+ HAVE_CXX14=0
+ AC_MSG_NOTICE([No compiler with C++14 support was found])
+ AX_CXX_COMPILE_STDCXX_11([$1], [optional])
+ else
+ HAVE_CXX11=1
+ HAVE_CXX14=1
+ AC_DEFINE(HAVE_CXX14,1,
+ [define if the compiler supports basic C++14 syntax])
+ AC_DEFINE(HAVE_CXX11,1,
+ [define if the compiler supports basic C++14 syntax])
+ fi
+ AC_SUBST(HAVE_CXX11)
+ AC_SUBST(HAVE_CXX14)
+ fi
+])
+
+AC_DEFUN([AX_REQUIRE_STDCXX_11], [
+ if test x${HAVE_CXX11} != x1; then
+ AC_MSG_ERROR([*** A compiler with support for C++11 language features is required.])
+ fi
+])
+
+AC_DEFUN([AX_REQUIRE_STDCXX_14], [
+ if test x${HAVE_CXX14} != x1; then
+ AC_MSG_ERROR([*** A compiler with support for C++14 language features is required.])
+ fi
+])
diff --git a/ax_init_standard_project.m4 b/ax_init_standard_project.m4
index 4128d9f..4f63768 100644
--- a/ax_init_standard_project.m4
+++ b/ax_init_standard_project.m4
@@ -7,7 +7,7 @@
m4_define([mrw_esyscmd_s], [m4_normalize(m4_esyscmd([$1]))])
# define least version number from subversion's revision number:
-# it is taken modulo 256 due to a bug on Apple's MacOSX
+# it is taken modulo 256 due to a bug on Apple's SX
m4_define(x_least, m4_ifdef([x_least_fix], [x_least_fix],
m4_ifdef([x_least_diff],
mrw_esyscmd_s([
@@ -129,7 +129,7 @@ AC_DEFUN([AX_SUBST], [
# m4_define(x_minor, MINOR_NUMBER) # project's minor version
# m4_include(ax_init_standard_project.m4)
# AC_INIT(x_package_name, x_version, x_bugreport, x_package_name)
-# AM_INIT_AUTOMAKE([1.9 tar-pax])
+# AM_INIT_AUTOMAKE([1.9 tar-pax parallel-tests color-tests])
# AX_INIT_STANDARD_PROJECT
#
# you change nothing but: YOUR_PACKAGE_NAME, MAJOR_NUMBER, MINOR_NUMBER
@@ -170,15 +170,45 @@ AC_DEFUN([AX_INIT_STANDARD_PROJECT], [
AM_CPPFLAGS+=" '-DMAKE_STRING(X)=\#X' '-DNAMESPACE=${PACKAGE_TARNAME//[^a-zA-Z0-9]/_}'"
AX_SUBST(NUMBERS)
AX_SUBST(HOME)
- README=$(tail -n +3 README)
+ if test -f README.md; then
+ README=$(tail -n +3 README.md)
+ DESCRIPTION=$(head -1 README.md)
+ else
+ README=$(tail -n +3 README)
+ DESCRIPTION=$(head -1 README)
+ fi
+ README_ESCAPED=$(echo "$README" | sed ':a;N;$!ba;s/\n/\\n/g;s,",\\",g')
+ if which pandoc 2>&1 > /dev/null; then
+ README_HTML=$(echo "$README" | pandoc -f markdown_github -t html | sed ':a;N;$!ba;s,\\\(.\),\\\\\1,g;s/\n/\\n/g;s,",\\",g;s, ,\ \ ,g')
+ else
+ README_HTML="${README}"
+ fi
AX_SUBST(README)
_AM_SUBST_NOTMAKE([README])
- DESCRIPTION=$(head -1 README)
+ AX_SUBST(README_ESCAPED)
+ _AM_SUBST_NOTMAKE([README_ESCAPED])
+ AX_SUBST(README_HTML)
+ _AM_SUBST_NOTMAKE([README_HTML])
AX_SUBST(DESCRIPTION)
_AM_SUBST_NOTMAKE([DESCRIPTION])
+ LICENSE=$(echo $(head -1 COPYING))
+ AX_SUBST(LICENSE)
+ COPYING=$(.*,\1,')
AX_SUBST(AUTHOR)
_AM_SUBST_NOTMAKE([AUTHOR])
+ AX_SUBST(AUTHOR_NAME)
+ AX_SUBST(AUTHOR_URL)
+ AX_SUBST(AUTHOR_MAIL)
+ PROJECT_URL="${PROJECT_URL:-${AUTHOR_URL}/projects/${PACKAGE_NAME}}"
+ SOURCE_DOWNLOAD="${SOURCE_DOWNLOAD:-${AUTHOR_URL}/downloads/${PACKAGE_NAME}}"
+ AX_SUBST(PROJECT_URL)
+ AX_SUBST(SOURCE_DOWNLOAD)
DISTRO=$(lsb_release -sc 2>/dev/null || uname -s 2>/dev/null)
AX_SUBST(DISTRO)
ARCH=$((@<:@@<:@ $(uname -sm) =~ 64 @:>@@:>@ && echo amd64) || (@<:@@<:@ $(uname -sm) =~ 'i?86' @:>@@:>@ && echo i386 || uname -sm))
@@ -242,6 +272,25 @@ AC_DEFUN([AX_INIT_STANDARD_PROJECT], [
else
AM_CPPFLAGS="${AM_CPPFLAGS} -DQT_NO_DEBUG_OUTPUT -DQT_NO_DEBUG"
fi
+
+ AC_ARG_WITH(gcov,
+ [AS_HELP_STRING([--with-gcov=FILE],
+ [enable gcov, set gcov file (defaults to gcov)])],
+ [GCOV="$enableval"], [GCOV="no"])
+ AM_CONDITIONAL(COVERAGE, test "$GCOV" != "no")
+ if test "$GCOV" != "no"; then
+ if test "$GCOV" == "yes"; then
+ GCOV=gcov
+ fi
+ AC_CHECK_PROG(has_gcov, [$GCOV], [yes], [no])
+ if test "$has_gcov" != "yes"; then
+ AC_MSG_ERROR([gcov: program $GCOV not found])
+ fi
+ AC_MSG_NOTICE([Coverage tests enabled, using ${GCOV}]);
+ AM_CXXFLAGS="${AM_CXXFLAGS:-} -O0 --coverage -fprofile-arcs -ftest-coverage"
+ AM_LDFLAGS="${AM_LDFLAGS} -O0 --coverage -fprofile-arcs"
+ AX_SUBST(GCOV)
+ fi
if test -f ${PACKAGE_NAME}.desktop.in; then
AC_CONFIG_FILES([${PACKAGE_NAME}.desktop])
@@ -273,7 +322,7 @@ EOF
AC_DEFUN([AX_USE_CXX], [
m4_include(ax_cxx_compile_stdcxx_11.m4)
AC_LANG(C++)
- AX_CXX_COMPILE_STDCXX_11(noext, optional)
+ AX_CXX_COMPILE_STDCXX_14(noext, optional)
AC_PROG_CXX
AC_PROG_CPP
@@ -383,6 +432,33 @@ maintainer-clean-example-targets:
EOF
])
+# use this in configure.ac to support C++ examples
+AC_DEFUN([AX_USE_NODEJS], [
+ AC_PATH_PROG(ANDROID, [android], [0],
+ [${PATH}${PATH_SEPARATOR}${ANDROID_HOME}/tools])
+ AC_PATH_PROG(CORDOVA, [cordova], [0],
+ [${PATH}${PATH_SEPARATOR}$(pwd)/node_modules/cordova/bin])
+ if test ${CORDOVA} = 0; then
+ AC_MSG_WARN([cordova is missing, on ubuntu install cordova-cli from repository ppa:cordova-ubuntu/ppa])
+ fi
+ if test ${ANDROID} = 0; then
+ AC_MSG_WARN([android sdk is missing, set variable ANDROID_HOME after installation])
+ fi
+ AM_CONDITIONAL(HAVE_CORDOVA, [test ${CORDOVA} != 0 -a ${ANDROID} != 0])
+ AX_SUBST(CORDOVA)
+ AC_CONFIG_FILES([nodejs/package.json])
+ AC_CONFIG_FILES([nodejs/makefile])
+ AC_CONFIG_FILES([cordova/makefile])
+ AC_CONFIG_FILES([cordova/config.xml])
+ AX_ADD_MAKEFILE_TARGET_DEP([maintainer-clean-am], [maintainer-clean-example-targets], [examples/makefile.in])
+ test -f examples/makefile.in && cat >> examples/makefile.in <> doc/makefile.in <> doc/makefile.in <Perl DocumentationPerl Documentation
" > perldoc/index.html
+ for p in \${PERL_SOURCES:%=perldoc/%}; do \
+ echo '- '"\$\${p#perldoc/}"'
' >> perldoc/index.html; \
+ done
+ echo "