C++ class for reading and writing XML structures. No need for a C++ code parser or special pre compiler. Specify a schema entirly in native C++. The schema is verified when XML is read and exceptions are thrown when the XML to be parse is invalid.
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
521 lines
18 KiB
521 lines
18 KiB
10 years ago
|
## @id $Id$
|
||
|
|
||
|
## 1 2 3 4 5 6 7 8
|
||
|
## 45678901234567890123456789012345678901234567890123456789012345678901234567890
|
||
|
|
||
|
# define least version number from subversion's revision number:
|
||
|
# it is taken modulo 256 due to a bug on Apple's MacOSX
|
||
|
m4_define(x_least, m4_esyscmd_s(
|
||
|
SVN_REVISION="ERROR-UNDEFINED-REVISION-to-be-built-in-subdirectory-of-svn-checkout"
|
||
|
for path in . .. ../..; do
|
||
|
if svn info $path 2>&1 > /dev/null; then
|
||
|
SVN_REVISION=$(LANG= svn info $path | sed -n 's/Last Changed Rev: //p')
|
||
|
(cd $path && svn2cl)
|
||
|
break;
|
||
|
fi
|
||
|
done
|
||
|
# Mac does not support LEAST > 255
|
||
|
echo $ECHO_N $(($SVN_REVISION%256))
|
||
|
))
|
||
|
# define version number from subversion's revision number:
|
||
|
# it is taken modulo 256 due to a bug on Apple's MacOSX
|
||
|
# add to x_minor if revision number is > 256
|
||
|
m4_define(x_minor_fixed, m4_esyscmd_s(
|
||
|
SVN_REVISION="ERROR-UNDEFINED-REVISION-to-be-built-in-subdirectory-of-svn-checkout"
|
||
|
for path in . .. ../..; do
|
||
|
if svn info $path 2>&1 > /dev/null; then
|
||
|
SVN_REVISION=$(LANG= svn info $path | sed -n 's/Last Changed Rev: //p')
|
||
|
(cd $path && svn2cl)
|
||
|
break;
|
||
|
fi
|
||
|
done
|
||
|
# Mac does not support LEAST > 255
|
||
|
echo $ECHO_N $((x_minor+$SVN_REVISION/256))
|
||
|
))
|
||
|
# setup version number
|
||
|
m4_define(x_version, m4_esyscmd_s(
|
||
|
echo $ECHO_N x_major.x_minor_fixed.x_least
|
||
|
))
|
||
|
|
||
|
## bugreport mail address is taken from <user@host> in first line of AUTHORS
|
||
|
m4_define(x_bugreport, m4_esyscmd_s(
|
||
|
head -1 AUTHORS | \
|
||
|
sed -n 's,.*<\([-_.a-z0-9A-Z]*@[-_.a-z0-9A-Z]*\)>.*,\1,gp'
|
||
|
))
|
||
|
|
||
|
m4_include(ax_check_qt.m4)
|
||
|
|
||
|
AC_ALIAS([AC_DEFINE_DIR], [AX_DEFINE_DIR])
|
||
|
AC_DEFUN([AX_DEFINE_DIR], [
|
||
|
prefix_NONE=
|
||
|
exec_prefix_NONE=
|
||
|
test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix
|
||
|
test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix
|
||
|
dnl In Autoconf 2.60, ${datadir} refers to ${datarootdir}, which in turn
|
||
|
dnl refers to ${prefix}. Thus we have to use `eval' twice.
|
||
|
eval ax_define_dir="\"[$]$2\""
|
||
|
eval ax_define_dir="\"$ax_define_dir\""
|
||
|
AC_SUBST($1, "$ax_define_dir")
|
||
|
AC_DEFINE_UNQUOTED($1, "$ax_define_dir", [$3])
|
||
|
test "$prefix_NONE" && prefix=NONE
|
||
|
test "$exec_prefix_NONE" && exec_prefix=NONE
|
||
|
])
|
||
|
|
||
|
# add target dependencies to an existing makefile.in
|
||
|
# - parameters:
|
||
|
# $1 = existing target
|
||
|
# $2 = new dependency for that target
|
||
|
# $3 = filename of makefile.in
|
||
|
AC_DEFUN([AX_ADD_MAKEFILE_TARGET_DEP], [
|
||
|
sh_add_makefile_target_dep() {
|
||
|
sed -i -e ':a;/^'${1}':.*\\$/{N;s/\\\n//;ta};s/^'${1}':.*$/& '${2}'/' "${srcdir}/${3}"
|
||
|
if ! egrep -q "${1}:.* ${2}" "${srcdir}/${3}"; then
|
||
|
echo "${1}: ${2}" >> "${srcdir}/${3}"
|
||
|
fi
|
||
|
}
|
||
|
sh_add_makefile_target_dep "$1" "$2" "$3"
|
||
|
if test "$1" != ".PHONY"; then
|
||
|
sh_add_makefile_target_dep ".PHONY" "$2" "$3"
|
||
|
fi
|
||
|
])
|
||
|
|
||
|
# Same as AC_SUBST, but adds -Dname="value" option to CPPFLAGS
|
||
|
# - parameters:
|
||
|
# $1 = variable name
|
||
|
AC_DEFUN([AX_SUBST], [
|
||
|
AC_SUBST([$1])
|
||
|
tmp_var=$(echo "${$1}" | awk 1 ORS='\\n')
|
||
|
tmp_var=${tmp_var//\"/\\\"}
|
||
|
tmp_var=${tmp_var//\'/\'\"\'\"\'}
|
||
|
tmp_var=${tmp_var//#/\\#}
|
||
|
AM_CPPFLAGS+=" '-D$1=\"${tmp_var}\"'"
|
||
|
AC_SUBST(AM_CPPFLAGS)
|
||
|
])
|
||
|
|
||
|
# must be called on the right position in configure.ac
|
||
|
#
|
||
|
# configure.ac must start with:
|
||
|
#
|
||
|
# m4_define(x_package_name, YOUR_PACKAGE_NAME) # project's name
|
||
|
# m4_define(x_major, MAJOR_NUMBER) # project's major version
|
||
|
# 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])
|
||
|
# AX_INIT_STANDARD_PROJECT
|
||
|
#
|
||
|
# you change nothing but: YOUR_PACKAGE_NAME, MAJOR_NUMBER, MINOR_NUMBER
|
||
|
#
|
||
|
# configures the basic environment
|
||
|
AC_DEFUN([AX_INIT_STANDARD_PROJECT], [
|
||
|
AM_CPPFLAGS+=" '-DMAKE_STRING(X)=\#X' '-DNAMESPACE=${PACKAGE_NAME//-/_}'"
|
||
|
AX_SUBST(NUMBERS)
|
||
|
AX_SUBST(HOME)
|
||
|
README=$(tail -n +3 README)
|
||
|
AX_SUBST(README)
|
||
|
_AM_SUBST_NOTMAKE([README])
|
||
|
DESCRIPTION=$(head -1 README)
|
||
|
AX_SUBST(DESCRIPTION)
|
||
|
_AM_SUBST_NOTMAKE([DESCRIPTION])
|
||
|
AUTHOR=$(head -1 AUTHORS)
|
||
|
AX_SUBST(AUTHOR)
|
||
|
_AM_SUBST_NOTMAKE([AUTHOR])
|
||
|
DISTRO=$(lsb_release -sc)
|
||
|
AX_SUBST(DISTRO)
|
||
|
BUILD_NUMBER=${BUILD_NUMBER:-1}
|
||
|
AX_SUBST(BUILD_NUMBER)
|
||
|
BUILD_DATE=$(LANG= date +"%a, %d %B %Y %H:%M:%S %z")
|
||
|
AX_SUBST(BUILD_DATE)
|
||
|
if test -f "${PROJECT_NAME}-logo.png"; then
|
||
|
PROJECT_LOGO="${PROJECT_NAME}-logo.png"
|
||
|
fi
|
||
|
AX_SUBST(PROJECT_LOGO)
|
||
|
if test -f "${PROJECT_NAME}-icon.png"; then
|
||
|
PROJECT_ICON="${PROJECT_NAME}-icon.png"
|
||
|
fi
|
||
|
AX_SUBST(PROJECT_ICON)
|
||
|
AC_CONFIG_FILES([makefile])
|
||
|
AX_ADD_MAKEFILE_TARGET_DEP([clean-am], [clean-standard-project-targets], [makefile.in])
|
||
|
AX_ADD_MAKEFILE_TARGET_DEP([distclean-am], [distclean-standard-project-targets], [makefile.in])
|
||
|
AX_ADD_MAKEFILE_TARGET_DEP([maintainer-clean-am], [maintainer-clean-standard-project-targets], [makefile.in])
|
||
|
test -f makefile.in && cat >> makefile.in <<EOF
|
||
|
#### Begin: Appended by $0
|
||
|
EXTRA_DIST = bootstrap.sh
|
||
|
doc_DATA = AUTHORS NEWS README COPYING INSTALL ChangeLog
|
||
|
clean-standard-project-targets:
|
||
|
-rm -rf \${PACKAGE_NAME}-\${PACKAGE_VERSION}
|
||
|
-rm \${PACKAGE_TARNAME}-\${PACKAGE_VERSION}.tar.gz
|
||
|
distclean-standard-project-targets:
|
||
|
-rm -r autom4te.cache
|
||
|
-rm aclocal.m4 config.guess config.sub configure depcomp compile install-sh ltmain.sh makefile missing mkinstalldirs
|
||
|
maintainer-clean-standard-project-targets:
|
||
|
-rm makefile.in
|
||
|
#### End: $0
|
||
|
EOF
|
||
|
])
|
||
|
|
||
|
# use this in configure.ac to support C++
|
||
|
AC_DEFUN([AX_USE_CXX], [
|
||
|
m4_include(ax_cxx_compile_stdcxx_11.m4)
|
||
|
AC_LANG(C++)
|
||
|
AX_CXX_COMPILE_STDCXX_11(noext, optional)
|
||
|
AC_PROG_CXX
|
||
|
AC_PROG_CPP
|
||
|
|
||
|
AC_CONFIG_FILES([src/makefile])
|
||
|
|
||
|
AM_CPPFLAGS+=' -I ${top_srcdir}/src -I ${top_builddir}/src -I ${srcdir} -I ${builddir}'
|
||
|
AM_LDFLAGS+=' -L ${top_srcdir}/src -L ${top_builddir}/src'
|
||
|
|
||
|
# Get rid of that stupid -O2 -g opions!
|
||
|
CXXFLAGS="${CXXFLAGS:-}"
|
||
|
|
||
|
# pass compile flags to make distcheck
|
||
|
AM_DISTCHECK_CONFIGURE_FLAGS="CXXFLAGS='${CXXFLAGS}' CPPFLAGS='${CPPFLAGS}' CFLAGS='${CFLAGS}' LDFLAGS='${LDFLAGS}'"
|
||
|
AC_SUBST(AM_DISTCHECK_CONFIGURE_FLAGS)
|
||
|
|
||
|
AC_ARG_ENABLE(pedantic,
|
||
|
[AS_HELP_STRING([--enable-pedantic],
|
||
|
[enable all warnings and checks, abort on warnings])],
|
||
|
[have_pedantic="$enableval"; test "$enableval" = "yes" && \
|
||
|
AM_CXXFLAGS="${AM_CXXFLAGS:-} -pedantic-errors -Wall -W -Wfloat-equal -Wundef -Wendif-labels -Wpointer-arith -Wcast-align -Wwrite-strings -Wconversion -Wsign-compare -Wmissing-format-attribute -Wno-multichar -Wpacked -Wredundant-decls -Werror -Wshadow -Wcast-qual -Wno-ctor-dtor-privacy"])
|
||
|
dnl problem in libs: -Wshadow -Wcast-qual
|
||
|
dnl auto.hpp: -Wno-ctor-dtor-privacy (removed)
|
||
|
AM_CONDITIONAL(PEDANTIC, test "$enableval" = "yes")
|
||
|
if test "$have_pedantic" == "yes"; then
|
||
|
AC_MSG_NOTICE([Pedantic compile mode enabled!
|
||
|
- all warnings for GNU g++ are enabled
|
||
|
- all warnings result in an error
|
||
|
- doxygen warnings are treated as error too]); fi
|
||
|
|
||
|
MINGW32=no
|
||
|
MAC=no
|
||
|
case $host_os in
|
||
|
*mingw32*) MINGW32=yes;;
|
||
|
*darwin* | *rhapsody* | *macosx*) MAC=yes;;
|
||
|
esac
|
||
|
AM_CONDITIONAL(MINGW32, test "$MINGW32" = "yes")
|
||
|
AM_CONDITIONAL(MAC, test "$MAC" = "yes")
|
||
|
|
||
|
AC_SUBST(AM_CXXFLAGS)
|
||
|
AC_SUBST(AM_CPPFLAGS)
|
||
|
AC_SUBST(AM_LDFLAGS)
|
||
|
AX_ADD_MAKEFILE_TARGET_DEP([maintainer-clean-am], [maintainer-clean-cxx-targets], [src/makefile.in])
|
||
|
test -f src/makefile.in && cat >> src/makefile.in <<EOF
|
||
|
#### Begin: Appended by $0
|
||
|
maintainer-clean-cxx-targets:
|
||
|
-rm makefile.in
|
||
|
#### End: $0
|
||
|
EOF
|
||
|
])
|
||
|
|
||
|
# use this in configure.ac to support CppUnit for C++ unit tests
|
||
|
AC_DEFUN([AX_USE_CPPUNIT], [
|
||
|
AM_PATH_CPPUNIT([1.0.0], [have_cppunit="yes"], [have_cppunit="no"])
|
||
|
# infos and warnings
|
||
|
if test "$have_cppunit" = "no"; then
|
||
|
AC_MSG_WARN([Missing cppunit development library!
|
||
|
- you cannot check the library using "make check"
|
||
|
- everything else works perfectly]); fi
|
||
|
AC_CONFIG_FILES([test/makefile])
|
||
|
AX_ADD_MAKEFILE_TARGET_DEP([maintainer-clean-am], [maintainer-clean-test-targets], [test/makefile.in])
|
||
|
test -f test/makefile.in && cat >> test/makefile.in <<EOF
|
||
|
#### Begin: Appended by $0
|
||
|
maintainer-clean-test-targets:
|
||
|
-rm makefile.in
|
||
|
#### End: $0
|
||
|
EOF
|
||
|
])
|
||
|
|
||
|
# use this in configure.ac to support C++ examples
|
||
|
AC_DEFUN([AX_BUILD_EXAMPLES], [
|
||
|
AC_CONFIG_FILES([examples/makefile])
|
||
|
AX_ADD_MAKEFILE_TARGET_DEP([maintainer-clean-am], [maintainer-clean-example-targets], [examples/makefile.in])
|
||
|
test -f examples/makefile.in && cat >> examples/makefile.in <<EOF
|
||
|
#### Begin: Appended by $0
|
||
|
maintainer-clean-example-targets:
|
||
|
-rm makefile.in
|
||
|
#### End: $0
|
||
|
EOF
|
||
|
])
|
||
|
|
||
|
# use this in configure.ac to support HTML data for webservers
|
||
|
AC_DEFUN([AX_BUILD_HTML], [
|
||
|
AC_CONFIG_FILES([html/makefile])
|
||
|
AX_ADD_MAKEFILE_TARGET_DEP([maintainer-clean-am], [maintainer-clean-example-targets], [html/makefile.in])
|
||
|
test -f html/makefile.in && cat >> examples/html.in <<EOF
|
||
|
#### Begin: Appended by $0
|
||
|
maintainer-clean-example-targets:
|
||
|
-rm makefile.in
|
||
|
#### End: $0
|
||
|
EOF
|
||
|
])
|
||
|
|
||
|
# use this in configure.ac to support C++ libraries
|
||
|
AC_DEFUN([AX_USE_LIBTOOL], [
|
||
|
# libtool versioning
|
||
|
LIB_MAJOR=m4_eval(x_major+x_minor_fixed)
|
||
|
LIB_MINOR=x_least
|
||
|
LIB_LEAST=x_minor_fixed
|
||
|
LIB_VERSION="${LIB_MAJOR}:${LIB_MINOR}:${LIB_LEAST}"
|
||
|
AM_LDFLAGS="-version-info ${LIB_VERSION}"
|
||
|
AC_SUBST(AM_LDFLAGS)
|
||
|
AC_SUBST(LIB_VERSION)
|
||
|
AC_PROG_LIBTOOL
|
||
|
AC_CONFIG_FILES([src/${PACKAGE_NAME}.pc])
|
||
|
AX_ADD_MAKEFILE_TARGET_DEP([install-data-am], [install-data-libtool-pkg], [src/makefile.in])
|
||
|
AX_ADD_MAKEFILE_TARGET_DEP([uninstall-am], [uninstall-data-am], [src/makefile.in])
|
||
|
AX_ADD_MAKEFILE_TARGET_DEP([uninstall-data-am], [uninstall-data-libtool-pkg], [src/makefile.in])
|
||
|
test -f src/makefile.in && cat >> src/makefile.in <<EOF
|
||
|
#### Begin: Appended by $0
|
||
|
install-data-libtool-pkg:
|
||
|
test -d \$(DESTDIR)\${libdir}/pkgconfig || mkdir -p \$(DESTDIR)\${libdir}/pkgconfig
|
||
|
chmod -R u+w \$(DESTDIR)\${libdir}/pkgconfig
|
||
|
cp \${PACKAGE_NAME}.pc \$(DESTDIR)\${libdir}/pkgconfig/
|
||
|
uninstall-data-libtool-pkg:
|
||
|
-chmod -R u+w \$(DESTDIR)\${libdir}/pkgconfig
|
||
|
-rm -f \$(DESTDIR)\${libdir}/pkgconfig/\${PACKAGE_NAME}.pc
|
||
|
#### End: $0
|
||
|
EOF
|
||
|
])
|
||
|
|
||
|
# use this in configure.ac to support debian packages
|
||
|
AC_DEFUN([AX_USE_DEBIAN_PACKAGING], [
|
||
|
README_DEB=$(tail -n +3 README | sed -e 's/^$/./g' -e 's/^/ /g')
|
||
|
AC_SUBST(README_DEB)
|
||
|
_AM_SUBST_NOTMAKE([README_DEB])
|
||
|
AC_CONFIG_FILES([debian/changelog debian/control])
|
||
|
AX_ADD_MAKEFILE_TARGET_DEP([clean-am], [clean-debian-targets], [makefile.in])
|
||
|
AX_ADD_MAKEFILE_TARGET_DEP([distclean-am], [distclean-debian-targets], [makefile.in])
|
||
|
test -f makefile.in && cat >> makefile.in <<EOF
|
||
|
#### Begin: Appended by $0
|
||
|
EXTRA_DIST += debian
|
||
|
clean-debian-targets:
|
||
|
-rm -rf \${PACKAGE_NAME}_\${PACKAGE_VERSION}~\${DISTRO}.\${BUILD_NUMBER}.{dsc,tar.gz} \${PACKAGE_NAME}_\${PACKAGE_VERSION}~\${DISTRO}.\${BUILD_NUMBER}*.changes \$\$(sed -n 's,Package: \(.*\),\1_${PACKAGE_VERSION}~${DISTRO}.${BUILD_NUMBER}*.deb,p;' debian/control)
|
||
|
deb: distdir
|
||
|
cd \${PACKAGE_NAME}-\${PACKAGE_VERSION} && ( export CFLAGS="\${CFLAGS}"; export CPPFLAGS="\${CPPFLAGS}"; export CXXFLAGS="\${CXXFLAGS}"; export LDFLAGS="\${LDFLAGS}"; export DEB_CFLAGS_APPEND="\${CFLAGS}"; export DEB_CPPFLAGS_APPEND="\${CPPFLAGS}"; export DEB_CXXFLAGS_APPEND="\${CXXFLAGS}"; export DEB_LDFLAGS_APPEND="\${LDFLAGS}"; dpkg-buildpackage )
|
||
|
distclean-debian-targets:
|
||
|
-rm debian/changelog debian/control
|
||
|
#### End: $0
|
||
|
EOF
|
||
|
])
|
||
|
|
||
|
# use this in configure.ac to support RPM packages
|
||
|
AC_DEFUN([AX_USE_RPM_PACKAGING], [
|
||
|
# m4_include(ax_rpm_rules.m4)
|
||
|
AC_CONFIG_FILES([${PACKAGE_NAME}.spec])
|
||
|
#AX_ADD_MAKEFILE_TARGET_DEP([clean-am], [clean-debian-targets], [makefile.in])
|
||
|
AX_ADD_MAKEFILE_TARGET_DEP([.PHONY], [rpm], [makefile.in])
|
||
|
test -f makefile.in && cat >> makefile.in <<EOF
|
||
|
#### Begin: Appended by $0
|
||
|
rpm: dist
|
||
|
rpmbuild -ba --define "_topdir \$(pwd)" --define "_sourcedir \$(pwd)" \${PACKAGE_NAME}.spec
|
||
|
#### End: $0
|
||
|
EOF
|
||
|
])
|
||
|
|
||
|
# use this in configure.ac to support scripts, e.g. bash scripts
|
||
|
AC_DEFUN([AX_USE_SCRIPTS], [
|
||
|
AC_CONFIG_FILES([scripts/makefile])
|
||
|
])
|
||
|
|
||
|
# use this in configure.ac to support Doxygen documentation generation
|
||
|
AC_DEFUN([AX_USE_DOXYGEN], [
|
||
|
AC_CHECK_PROG(have_doxygen, doxygen, yes, no)
|
||
|
AC_CHECK_PROG(have_dot, dot, yes, no)
|
||
|
AC_CHECK_PROG(have_mscgen, mscgen, yes, no)
|
||
|
PDF_DOC=${PACKAGE_NAME}-${PACKAGE_VERSION}.pdf
|
||
|
AC_SUBST(PDF_DOC)
|
||
|
if test "$have_doxygen" = "no"; then
|
||
|
AC_MSG_WARN([Missing program doxygen!
|
||
|
- you cannot rebuild the documentation
|
||
|
- there are precompiled derived files in the distribution]); fi
|
||
|
if test "$have_dot" = "no"; then
|
||
|
AC_MSG_WARN([Missing program dot!
|
||
|
- when you rebild documentation, there are no generated images
|
||
|
- there are precompiled derived files in the distribution]); fi
|
||
|
if test "$have_mscgen" = "no"; then
|
||
|
AC_MSG_WARN([Missing program mscgen!
|
||
|
- when you rebild documentation, there are no message state charts
|
||
|
- there are precompiled derived files in the distribution]); fi
|
||
|
AC_CONFIG_FILES([doc/makefile doc/doxyfile])
|
||
|
AX_ADD_MAKEFILE_TARGET_DEP([clean-am], [clean-documentation], [doc/makefile.in])
|
||
|
AX_ADD_MAKEFILE_TARGET_DEP([distclean-am], [distclean-documentation], [doc/makefile.in])
|
||
|
AX_ADD_MAKEFILE_TARGET_DEP([maintainer-clean-am], [maintainer-clean-documentation], [doc/makefile.in])
|
||
|
AX_ADD_MAKEFILE_TARGET_DEP([install-data-am], [install-data-documentation], [doc/makefile.in])
|
||
|
AX_ADD_MAKEFILE_TARGET_DEP([uninstall-am], [uninstall-documentation], [doc/makefile.in])
|
||
|
AX_ADD_MAKEFILE_TARGET_DEP([all], [doc], [doc/makefile.in])
|
||
|
AX_ADD_MAKEFILE_TARGET_DEP([.PHONY], [pdf], [doc/makefile.in])
|
||
|
test -f doc/makefile.in && cat >> doc/makefile.in <<EOF
|
||
|
#### Begin: Appended by $0
|
||
|
doc: doxyfile
|
||
|
doxygen doxyfile
|
||
|
@PEDANTIC_TRUE@ test \! -s doxygen.errors
|
||
|
|
||
|
clean-documentation:
|
||
|
-rm doxygen.errors @PDF_DOC@
|
||
|
distclean-documentation:
|
||
|
-rm -r html latex
|
||
|
-rm @PACKAGE_NAME@.doxytag
|
||
|
maintainer-clean-documentation:
|
||
|
-rm makefile.in
|
||
|
install-data-documentation:
|
||
|
test -d \$(DESTDIR)\${docdir} || mkdir -p \$(DESTDIR)\${docdir}
|
||
|
chmod -R u+w \$(DESTDIR)\${docdir}
|
||
|
cp -r html \$(DESTDIR)\${docdir}/
|
||
|
uninstall-documentation:
|
||
|
-chmod -R u+w \$(DESTDIR)\${docdir}
|
||
|
-rm -rf \$(DESTDIR)\${docdir}/*
|
||
|
#### End: $0
|
||
|
EOF
|
||
|
])
|
||
|
|
||
|
# require a specific package, with fallback: test for a header
|
||
|
# - parameter:
|
||
|
# $1 = unique id (no special characters)
|
||
|
# $2 = module name (optional, if different from id)
|
||
|
# $3 = a header file to find (optional)
|
||
|
# $4 = alternative module names (space separated, optional)
|
||
|
#
|
||
|
# uses PKG_CHECK_MODULES to test for a module
|
||
|
# then, if given, looks for the header file
|
||
|
# if header file is not found, searches in alternative modules
|
||
|
# sets all flags, so that the module can be used everywhere
|
||
|
# fails if not found
|
||
|
AC_DEFUN([AX_PKG_REQUIRE], [
|
||
|
PKG_PROG_PKG_CONFIG
|
||
|
$1_found=no
|
||
|
secondpar="m4_default([$2], [$1])"
|
||
|
PKG_CHECK_MODULES([$1], [m4_default([$2], [$1])], [
|
||
|
$1_found=$secondpar
|
||
|
PKG_REQUIREMENTS+=" $secondpar"
|
||
|
], [
|
||
|
if test -n "$4"; then
|
||
|
AC_MSG_WARN([Recommended package $secondpar for feature $1 not installed, trying $4])
|
||
|
for pkg in $4; do
|
||
|
PKG_CHECK_MODULES([$1], [$pkg], [
|
||
|
PKG_REQUIREMENTS+=" $pkg"
|
||
|
$1_found=$pkg
|
||
|
break;
|
||
|
], [
|
||
|
AC_MSG_WARN([Recommended package $pkg for feature $1 not installed])
|
||
|
])
|
||
|
done
|
||
|
fi
|
||
|
])
|
||
|
AC_SUBST(CPPFLAGS)
|
||
|
AC_SUBST(CXXFLAGS)
|
||
|
AC_SUBST(PKG_REQUIREMENTS)
|
||
|
if test -n "$3"; then
|
||
|
tmp_package=${$1_found}
|
||
|
$1_found=no
|
||
|
old_CPPFLAGS=${CPPFLAGS}
|
||
|
CPPFLAGS=" ${$1_CFLAGS} ${CPPFLAGS}"
|
||
|
AC_CHECK_HEADER([$3], [
|
||
|
$1_found=yes
|
||
|
], [
|
||
|
for x in ${$1_CFLAGS}; do
|
||
|
AC_MSG_NOTICE([search for $3 in ${x[#]-I}])
|
||
|
for f in $(find ${x[#]-I} -name "$3"); do
|
||
|
if test -f "$f"; then
|
||
|
$1_found=yes
|
||
|
$1_CFLAGS+=" -I${f%/*}"
|
||
|
AC_MSG_NOTICE([added path ${f%/*}])
|
||
|
break;
|
||
|
fi
|
||
|
done
|
||
|
if test "${$1_found}" != "no"; then
|
||
|
break;
|
||
|
fi
|
||
|
done
|
||
|
if test "${$1_found}" = "no"; then
|
||
|
tmp_includedir=$(pkg-config --variable=includedir $tmp_package)
|
||
|
for x in ${tmp_includedir}; do
|
||
|
AC_MSG_NOTICE([search for $3 in $x])
|
||
|
for f in $(find ${x} -name "$3"); do
|
||
|
if test -f "$f"; then
|
||
|
$1_found=yes
|
||
|
$1_CFLAGS+=" -I${f%/*}"
|
||
|
AC_MSG_NOTICE([added path ${f%/*}])
|
||
|
break;
|
||
|
fi
|
||
|
done
|
||
|
if test "${$1_found}" != "no"; then
|
||
|
break;
|
||
|
fi
|
||
|
done
|
||
|
fi
|
||
|
])
|
||
|
CPPFLAGS=${old_CPPFLAGS}
|
||
|
fi
|
||
|
if test "${$1_found}" = "no"; then
|
||
|
if test -n "$3"; then
|
||
|
if test -n "$4"; then
|
||
|
AC_MSG_ERROR([Feature $1 not found, need header $3 in modules $secondpar or $4])
|
||
|
else
|
||
|
AC_MSG_ERROR([Feature $1 not found, need header $3 in module $secondpar])
|
||
|
fi
|
||
|
else
|
||
|
AC_MSG_ERROR([Feature $1 not found please install module $secondpar])
|
||
|
fi
|
||
|
fi
|
||
|
CPPFLAGS+=" ${$1_CFLAGS}"
|
||
|
CXXFLAGS+=" ${$1_CFLAGS}"
|
||
|
LIBS+=" ${$1_LIBS}"
|
||
|
])
|
||
|
|
||
|
# check if a specific package exists
|
||
|
# - parameter:
|
||
|
# $1 = unique id (no special characters)
|
||
|
# $2 = module name (optional, if different from id)
|
||
|
#
|
||
|
# uses PKG_CHECK_MODULES to test for a module
|
||
|
# sets automake conditional HAVE_$1 to 0 (not found) or 1 (found)
|
||
|
# sets all flags, so that the module can be used everywhere
|
||
|
AC_DEFUN([AX_PKG_CHECK], [
|
||
|
PKG_PROG_PKG_CONFIG
|
||
|
PKG_CHECK_MODULES([$1], [m4_default([$2], [$1])], [
|
||
|
HAVE_$1=1
|
||
|
CPPFLAGS+=" ${$1_CFLAGS}"
|
||
|
CXXFLAGS+=" ${$1_CFLAGS}"
|
||
|
LIBS+=" ${$1_LIBS}"
|
||
|
if test -z "$PKG_REQUIREMENTS"; then
|
||
|
PKG_REQUIREMENTS="m4_default([$2], [$1])"
|
||
|
else
|
||
|
PKG_REQUIREMENTS="${PKG_REQUIREMENTS}, m4_default([$2], [$1])"
|
||
|
fi
|
||
|
], [
|
||
|
HAVE_$1=0
|
||
|
])
|
||
|
AM_CONDITIONAL(HAVE_$1, test $HAVE_$1 -eq 1)
|
||
|
AC_SUBST(HAVE_$1)
|
||
|
AC_SUBST(CPPFLAGS)
|
||
|
AC_SUBST(CXXFLAGS)
|
||
|
AC_SUBST(PKG_REQUIREMENTS)
|
||
|
])
|
||
|
|
||
|
# make sure, a specific header exists
|
||
|
# - parameter:
|
||
|
# $1 = header name
|
||
|
AC_DEFUN([AX_REQUIRE_HEADER], [
|
||
|
AC_CHECK_HEADER($1, [], [
|
||
|
if test -n "$2"; then
|
||
|
found=0
|
||
|
for d in $2; do
|
||
|
if test -f "${d}/$1"; then
|
||
|
AC_MSG_NOTICE([found file ${d}/$1])
|
||
|
CPPFLAGS+=" -I${d}"
|
||
|
found=1
|
||
|
break;
|
||
|
else
|
||
|
AC_MSG_NOTICE([not found file ${d}/$1])
|
||
|
fi
|
||
|
done
|
||
|
fi
|
||
|
if test $found -eq 0; then
|
||
|
AC_MSG_ERROR([Header $1 not found])
|
||
|
fi
|
||
|
], [])
|
||
|
], [])
|
||
|
])
|