From 2f73e3bdff863a5bea3c71e7bfb9158794bb7232 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20W=C3=A4ckerlin?= Date: Mon, 13 Jul 2015 11:27:14 +0000 Subject: [PATCH] update to new build system --- AUTHORS | 2 +- ChangeLog | 5 + ax_check_qt.m4 | 221 ++++++ ax_init_standard_project.m4 | 520 ++++++++++++++ bootstrap.sh | 673 +++++++++++++++++- configure.ac | 184 +---- debian/changelog.in | 2 +- debian/control.in | 19 +- debian/copyright | 26 - debian/dirs | 0 debian/libxml-cxx-dev.dirs | 2 - debian/libxml-cxx-dev.install | 2 +- debian/libxml-cxx.dirs | 1 - debian/libxml-cxx.doc-base.EX | 20 - debian/rules | 17 +- debian/shlibs.local.ex | 1 - debian/watch.ex | 23 - doc/makefile.am | 49 +- {doc/examples => examples}/address.cxx | 0 .../contain_serialization.cxx | 0 .../inherit_serialization.cxx | 0 .../list_serialization.cxx | 0 {doc/examples => examples}/makefile.am | 10 +- {doc/examples => examples}/node_macros.cxx | 0 .../optional_serialization.cxx | 0 {doc/examples => examples}/serialization.cxx | 0 makefile.am | 69 +- src/libxml-cxx.pc.in | 22 +- src/makefile.am | 23 +- src/version.cxx | 40 ++ src/version.hxx | 33 + src/xml.cxx | 12 +- test/makefile.am | 12 +- 33 files changed, 1587 insertions(+), 401 deletions(-) create mode 100644 ax_check_qt.m4 create mode 100644 ax_init_standard_project.m4 delete mode 100644 debian/copyright delete mode 100644 debian/dirs delete mode 100644 debian/libxml-cxx-dev.dirs delete mode 100644 debian/libxml-cxx.dirs delete mode 100644 debian/libxml-cxx.doc-base.EX mode change 100755 => 100644 debian/rules delete mode 100644 debian/shlibs.local.ex delete mode 100644 debian/watch.ex rename {doc/examples => examples}/address.cxx (100%) rename {doc/examples => examples}/contain_serialization.cxx (100%) rename {doc/examples => examples}/inherit_serialization.cxx (100%) rename {doc/examples => examples}/list_serialization.cxx (100%) rename {doc/examples => examples}/makefile.am (72%) rename {doc/examples => examples}/node_macros.cxx (100%) rename {doc/examples => examples}/optional_serialization.cxx (100%) rename {doc/examples => examples}/serialization.cxx (100%) create mode 100644 src/version.cxx create mode 100644 src/version.hxx diff --git a/AUTHORS b/AUTHORS index 5c421b1..bd79912 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1 +1 @@ -Marc Wäckerlin (http://marc.waeckerlin.org) \ No newline at end of file +Marc Wäckerlin (http://marc.waeckerlin.org) diff --git a/ChangeLog b/ChangeLog index ba64014..244bb62 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2015-05-08 22:00 marc + + * ChangeLog, src/xml-cxx/xml.hxx, src/xml.cxx: added Node::first() + and Node::last() to get the first or last child + 2015-03-24 08:03 marc * README: typo diff --git a/ax_check_qt.m4 b/ax_check_qt.m4 new file mode 100644 index 0000000..21c8104 --- /dev/null +++ b/ax_check_qt.m4 @@ -0,0 +1,221 @@ +# SYNOPSIS +# +# Check if a module exists: +# AX_CXX_CHECK_QT([qt_prefix], [list-of-qt-modules], [optional-modules]) +# +# Abort if a module does not exist: +# AX_CXX_REQUIRE_QT([qt_prefix], [list-of-qt-modules], [optional-modules]) +# +# DESCRIPTIONS +# +# qt_prefix +# +# Each call to AX_CXX_CHECK_QT should have a different prefix +# value (with a few exceptions discussed later on). This value, +# usually provided in uppercase, is used as prefix to the +# variables holding the compiler flags and libraries reported by +# pkg-config. +# +# For instance, if your prefix was to be FOO you'll be provided +# two variables FOO_CFLAGS and FOO_LIBS. +# +# This will also be used as message during the configure checks: +# checking for FOO.... +# +# list-of-modules +# +# A single call to the macro can check for the presence of one or +# more qt modules; you'll see later how to make good use of this +# feature. Each entry in the list can have a version comparison +# specifier, with the same syntax as the Requires keyword in the +# data files themselves. +# +# optional-modules +# +# Optional list of more, optional modules, e.g. modules that +# exist only in Qt5, but not in Qt4, such as QtWidgets or +# QtWebKitWidgets + + +AC_DEFUN([AX_CXX_QT_TOOL], [ + if test -z "$HAVE_$1"; then + HAVE_$1=1 + AC_MSG_CHECKING([for $2]) + AC_ARG_VAR([$1], [path to Qt tool $2]) + $1=${$1:-$(pkg-config --variable=$2_location Qt5Core)} + $1=${$1:-$(pkg-config --variable=host_bins Qt5Core)/$2} + $1=${$1:-$(pkg-config --variable=$2_location QtCore)} + $1=${$1:-$(pkg-config --variable=host_bins QtCore)/$2} + if ! which "${$1%% *}" > /dev/null; then + if which "$2" > /dev/null; then + $1=$2 + else + HAVE_$1=0 + $1="" + fi + fi + AC_SUBST($1) + AM_CONDITIONAL(HAVE_$1, test $HAVE_$1 -eq 1) + if test $HAVE_$1 -eq 1; then + AC_MSG_RESULT([$$1]) + else + AC_MSG_RESULT([not found]) + fi + fi +]) + +AC_DEFUN([AX_CXX_QT_TOOLS], [ + AX_CXX_QT_TOOL(QMAKE, qmake) + AX_CXX_QT_TOOL(MOC, moc) + AX_CXX_QT_TOOL(UIC, uic) + AX_CXX_QT_TOOL(RCC, rcc) + AX_CXX_QT_TOOL(LUPDATE, lupdate) + AX_CXX_QT_TOOL(LRELEASE, lrelease) +]) + +AC_DEFUN([AX_CHECK_VALID_FLAG], [ + AC_MSG_CHECKING([m4_default([$2], [for valid flag in "$1"])]) + save_cppflags="$CPPFLAGS" + newflag="no" + for test_flag in $1; do + CPPFLAGS+=" ${test_flag}" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [ + newflag="$test_flag" + CPPFLAGS="$save_cppflags" + CPPFLAGS+=" ${test_flag}" + break; + ]) + CPPFLAGS="$save_cppflags" + done + AC_SUBST(CPPFLAGS) + AC_MSG_RESULT([$newflag]) +]) + +AC_DEFUN([AX_CHECK_QT], [ + qt_modules="$2" + qt_modules_optional="$3" + AX_CXX_QT_TOOLS + HAVE_$1=0 + PKG_PROG_PKG_CONFIG + PKG_CHECK_MODULES([$1]5, [${qt_modules//Qt/Qt5}], [ + HAVE_$1=1 + AC_DEFINE([HAVE_$1]) + CPPFLAGS+=" ${[$1]5_CFLAGS}" + MOC_FLAGS+=" -DHAVE_$1=1 ${[$1]5_CFLAGS}" + CXXFLAGS+=" ${[$1]5_CFLAGS}" + LIBS+=" ${[$1]5_LIBS}" + PKG_REQUIREMENTS+=" ${qt_modules//Qt/Qt5}" + if test -n "${qt_modules_optional}"; then + PKG_CHECK_MODULES([$1]5_OPTIONAL, [${qt_modules_optional//Qt/Qt5}], [ + CPPFLAGS+=" ${[$1]5_OPTIONAL_CFLAGS}" + MOC_FLAGS+=" ${[$1]5_OPTIONAL_CFLAGS}" + CXXFLAGS+=" ${[$1]5_OPTIONAL_CFLAGS}" + LIBS+=" ${[$1]5_OPTIONAL_LIBS}" + PKG_REQUIREMENTS+=" ${qt_modules_optional//Qt/Qt5}" + ], [ + AC_MSG_NOTICE([Not found: ${qt_modules_optional//Qt/Qt5}]) + ]) + fi + ], [ + PKG_CHECK_MODULES([$1], [${qt_modules}], [ + HAVE_$1=1 + AC_DEFINE([HAVE_$1]) + CPPFLAGS+=" ${$1_CFLAGS}" + MOC_FLAGS+=" -DHAVE_$1=1 ${$1_CFLAGS}" + CXXFLAGS+=" ${$1_CFLAGS}" + LIBS+=" ${$1_LIBS}" + PKG_REQUIREMENTS+=" ${qt_modules}" + if test -n "$3"; then + PKG_CHECK_MODULES($1_OPTIONAL, [${qt_modules_optional}], [ + CPPFLAGS+=" ${$1_OPTIONAL_CFLAGS}" + MOC_FLAGS+=" ${$1_OPTIONAL_CFLAGS}" + CXXFLAGS+=" ${$1_OPTIONAL_CFLAGS}" + LIBS+=" ${$1_OPTIONAL_LIBS}" + PKG_REQUIREMENTS+=" ${qt_modules_optional}" + ], [ + AC_MSG_NOTICE([Not found: ${qt_modules_optional}]) + ]) + fi + ], [HAVE_$1=0]) + ]) + AM_CONDITIONAL(HAVE_$1, test $HAVE_$1 -eq 1) + AX_CHECK_VALID_FLAG([-fPIC -fPIE], [position independent code flag]) + AC_SUBST(CPPFLAGS) + AC_SUBST(MOC_FLAGS) + AC_SUBST(CXXFLAGS) + AC_SUBST(PKG_REQUIREMENTS) + AX_ADDITIONAL_QT_RULES_HACK=' + +LANGUAGE_FILE_BASE ?= translations + +ui_%.hxx: %.ui + $(UIC) -o [$][@] $< + +moc_%.cxx: %.hxx + $(MOC) $(MOC_FLAGS) -o [$][@] $< + +qrc_%.cxx: %.qrc + $(RCC) -o [$][@] -name ${<:%.qrc=%} $< + AC_SUBST(AX_ADDITIONAL_QT_RULES_HACK) + +#%.qrc: % +# cwd=$$(pwd) && cd $< && $(RCC) -project -o $${cwd}/[$][@] + +%.qm: %.ts + ${LRELEASE} $< -qm [$][@] + +#%.ts: ${LANGUAGE_FILES} +# ${LUPDATE} -no-obsolete \ +# -target-language ${@:${LANGUAGE_FILE_BASE}_%.ts=%} \ +# -ts [$][@] $< + +']) + +# SYNOPSIS +# +# AX_CXX_CHECK_QT([qt_prefix], [list-of-qt-modules], [optional-modules]) +# +# DESCRIPTIONS +# +# qt_prefix +# +# Each call to AX_CXX_CHECK_QT should have a different prefix +# value (with a few exceptions discussed later on). This value, +# usually provided in uppercase, is used as prefix to the +# variables holding the compiler flags and libraries reported by +# pkg-config. +# +# For instance, if your prefix was to be FOO you'll be provided +# two variables FOO_CFLAGS and FOO_LIBS. +# +# This will also be used as message during the configure checks: +# checking for FOO.... +# +# list-of-modules +# +# A single call to the macro can check for the presence of one or +# more qt modules; you'll see later how to make good use of this +# feature. Each entry in the list can have a version comparison +# specifier, with the same syntax as the Requires keyword in the +# data files themselves. +# +# optional-modules +# +# Optional list of more, optional modules, e.g. modules that +# exist only in Qt5, but not in Qt4, such as QtWidgets or +# QtWebKitWidgets + +AC_DEFUN([AX_REQUIRE_QT], [ + AX_CHECK_QT([$1], [$2], [$3]) + if ! test "$HAVE_$1" -eq 1; then + AC_MSG_ERROR([Required Qt modules not found: $2]) + fi +]) + + +# Omit Qt Keywords +# AX_QT_NO_KEYWORDS + +AC_DEFUN([AX_QT_NO_KEYWORDS], [ + CPPFLAGS+=" -DQT_NO_KEYWORDS" +]) diff --git a/ax_init_standard_project.m4 b/ax_init_standard_project.m4 new file mode 100644 index 0000000..9ea0553 --- /dev/null +++ b/ax_init_standard_project.m4 @@ -0,0 +1,520 @@ +## @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 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 <> src/makefile.in <> test/makefile.in <> examples/makefile.in <> examples/html.in <> src/makefile.in <> makefile.in <> makefile.in <> doc/makefile.in < rebild specific file (can be added multiple times) + --help, -h show this help + --version, -v show version and date of this file + +DESCRIPTION + + Initializes your build environment, as far as neccessary. Reads your + used features from configure.ac, if that file exists, or creates a + configure.ac. Automatically copies or creates all required template + files. + + From your new and empty project's subversion path, call $0 to + initialize your build environment. + + Before you call ${MY_NAME} the very first time, edit ${0#/*}/AUTHORS + and replace it with your name (or the authors of your project, one + name each line, main developper and copyright holder on the first + line). + + The first call to ${MY_NAME} should be something like + ../bootstrap-build-environment/${MY_NAME} and not + ./${MY_NAME}. Actually, you called $0. + + In the way you called ${MY_NAME}, it has detected + ${DEFAULT_PROJECT_NAME} as the project name for your project in + ${PROJECT_PATH}. In the first run, you should call ${MY_NAME} from a + checked out the bootstrap-build-environment from + https://dev.marc.waeckerlin.org/, and the path from where you call + ${MY_NAME} (which is actually ${PROJECT_PATH}) should be the path to + your newly created project. Please note that your project must be a + checked out subversion repository, since this build environment + relies on subversion. + + Example for an initial run, where your new projet is stored in + subversion on svn:/path/to/your/new-project: + + cd ~/svn + svn co https://dev.marc.waeckerlin.org/svn/bootstrap-build-environment/trunk \\ + bootstrap-build-environment + svn co svn:/path/to/your/new-project/trunk new-project + cd new-project + ../bootstrap-build-environment/bootstrap.sh + +RUNNING + + If you run ${MY_NAME}, it first generates the necessary files (see + below), then first runs make distclean if a makefile exists. After + this it calles aclocal, libtoolize, automake, autoconf and + optionally ./configure. + +GENERATED FILES + + This script copies the following files into your project environment: + * ${MY_NAME} + * ax_init_standard_project.m4 - auxiliary macro definition file + * ax_cxx_compile_stdcxx_11.m4 - auxiliary macro definition file + * ax_check_qt.m4 - auxiliary macro definition file + * AUTHORS - replace your name in AUTHORS before first run + * configure.ac - global configuration file template + * makefile.am - global makefile template + * src/makefile.am - if you enabled AX_USE_CXX + * src/version.hxx - if you enabled AX_USE_CXX + * src/version.cxx - if you enabled AX_USE_CXX + * html/makefile.am - if you enabled AX_BUILD_HTML + * scripts/makefile.in - if you enabled AX_USE_SCRIPTS + * doc/makefile.am - if you enabled AX_USE_DOXYGEN + * doc/doxyfile.in - if you enabled AX_USE_DOXYGEN + * test/makefile.am - if you enabled AX_USE_CPPUNIT + * examples/makefile.am - if you enabled AX_BUILD_EXAMPLES + * debian/changelog.in - if you enabled AX_USE_DEBIAN_PACKAGING + * debian/control.in - if you enabled AX_USE_DEBIAN_PACKAGING + * debian/docs - if you enabled AX_USE_DEBIAN_PACKAGING + * debian/${DEFAULT_PROJECT_NAME}.install - if you enabled AX_USE_DEBIAN_PACKAGING + * debian/${DEFAULT_PROJECT_NAME}.dirs - if you enabled AX_USE_DEBIAN_PACKAGING + * debian/${DEFAULT_PROJECT_NAME}-dev.install - if you enabled AX_USE_DEBIAN_PACKAGING + * debian/${DEFAULT_PROJECT_NAME}-dev.dirs - if you enabled AX_USE_DEBIAN_PACKAGING + * debian/rules - if you enabled AX_USE_DEBIAN_PACKAGING + * debian/compat - if you enabled AX_USE_DEBIAN_PACKAGING + * src/${DEFAULT_PROJECT_NAME}.pc.in - if you enabled AX_USE_LIBTOOL + +REBUILDING FILES + + To rebuild all these files, just run "${MY_NAME} -r". + + To copy only the files provided by this package, that means those + files you must never change, that means to update the build system + to the latest release, run "${MY_NAME} -o" + + You can also rebuild a list of singleany list of specific file files + by adding option "${MY_NAME} -f " to rebuild file + "". You can add option "-f" more than once. + +FILES TO EDIT + + After creation of the files, you can edit them according to your + needs. Please don't forget to redo your edits after rebuilding a + file. Most files don't even need to be edited, they work out of the + box. + + The following files normally require editing: + * AUTHORS + * README + * configure.ac + * src/makefile.am + * html/makefile.am + * test/makefile.am + * examples/makefile.am + +FILE DEPENDENCIES + + You should rebuild (see above) the files, whenever you change the + configuration a dependent, i.e.: + + * test/makefile.am depends on AX_USE_LIBTOOL + * html/makefile.am depends on AX_BUILD_HTML + * doc/doxyfile.in depends on AX_BUILD_EXAMPLES + * debian/control.in depends on AX_USE_DOXYGEN, AX_USE_CPPUNIT, + AX_CXX_QT, AX_CXX_CHECK_QT, AX_USE_LIBTOOL + * debian/${DEFAULT_PROJECT_NAME}.install depends on AX_USE_LIBTOOL + * debian/${DEFAULT_PROJECT_NAME}.dirs depends on AX_USE_LIBTOOL + * debian/${DEFAULT_PROJECT_NAME}-dev.install depends on AX_USE_LIBTOOL + * debian/${DEFAULT_PROJECT_NAME}-dev.dirs depends on AX_USE_LIBTOOL + +FILES + + * AUTHORS: First line is the main author and used in Debian and RPM + packaging, so there must be a GPG key that matches + to this line. + * README: First line is a short description of your project, then an + empty line must follow. All remaining lines are a + long description of your project. this information + is copied, e.g. in Debian or RPM packages. In C++ + running:\e[0m $* ..." + result=$($* 2>&1) + res=$? + if test $res -ne 0; then + if test $check -eq 1; then + echo -e " \e[31merror\e[0m" + echo -e "\e[1m*** Failed with return code: $res\e[0m" + if test -n "$result"; then + echo "$result" + fi + exit 1 + else + echo -e " \e[33mignored\e[0m" + fi + else + echo -e " \e[32msuccess\e[0m" + fi +} + +testtag() { + egrep -q '^ *'"$1" configure.ac +} + +contains() { + local e + for e in "${@:2}"; do [[ "$e" == "$1" ]] && return 0; done + return 1 +} + +checkdir() { + if ! test -d "$1"; then # create path + run mkdir -p "$1" + run svn add "$1" + fi +} + +checkfile() { + exists=0 + if test -f "$1"; then + exists=1 + fi + test $exists -eq 1 +} + +to() { + while test $# -gt 0; do + mode="u=rw,g=rw,o=r" + case "$1" in + (--condition) shift # test for a tag, abort if not set + if ! testtag "$1" configure.ac; then + return + fi;; + (--mode) shift # test for a tag, abort if not set + mode="$1";; + (*) break;; + esac + shift; + done + if checkfile "$1" && test $rebuild -eq 0 -o "$1" = "configure.ac" \ + && ! contains "$1" "${rebuildfiles[@]}"; then + # file already exists and must not be rebuilt + return 1 + fi + checkdir "$(dirname ${1})" + echo -en "\e[1m-> generating:\e[0m $1 ..." + result=$(cat > "$1" 2>&1) + res=$? + if test $res -ne 0; then + echo -e " \e[31merror\e[0m" + echo -e "\e[1m*** Failed with return code: $res\e[0m" + if test -n "$result"; then + echo "$result" + fi + exit 1 + else + echo -e " \e[32msuccess\e[0m" + fi + chmod $mode $1 + if test $exists -eq 0; then + run svn add "$1" + run svn propset svn:keywords "Id" "$1" + fi + return 0 +} + +copy() { + if checkfile "$1" && test $overwrite -eq 0 \ + && ! contains "$1" "${rebuildfiles[@]}"; then + # file already exists and must not be rebuilt + return + fi + run cp "${0%/*}/$1" "$1" + if test $exists -eq 0; then + run svn add "$1" + run svn propset svn:keywords "Id" "$1" + fi +} + +doxyreplace() { + echo -en "\e[1m-> doxyfile:\e[0m configure $1 ..." + if sed -i 's|\(^'"$1"' *=\) *.*|\1'" $2"'|g' doc/doxyfile.in; then + echo -e " \e[32msuccess\e[0m" + else + echo -e " \e[31merror\e[0m" + echo -e "\e[1m**** command: $0 $*\e[0m" + exit 1 + fi +} + +doxyadd() { + echo -en "\e[1m-> doxyfile:\e[0m configure $1 ..." + if sed -i '/^'"$1"' *=/a'"$1"' += '"$2" doc/doxyfile.in; then + echo -e " \e[32msuccess\e[0m" + else + echo -e " \e[31merror\e[0m" + echo -e "\e[1m**** command: $0 $*\e[0m" + exit 1 + fi +} + +# Initialize the environment: +copy ${MY_NAME} +copy ax_init_standard_project.m4 +copy ax_cxx_compile_stdcxx_11.m4 +copy ax_check_qt.m4 +AUTHOR=$(gpg -K | sed -n 's,uid *,,p' | sort | head -1) +if test -z "${AUTHOR}"; then + AUTHOR="FIRSTNAME LASTNAME (URL) " +fi +to AUTHORS < + +namespace NAMESPACE { + /// get package string which consists of package name and package version + std::string package_string(); + /// get package name + std::string package_name(); + /// get package version + std::string version(); + /// get code build date + std::string build_date(); + /// get author, i.e. copyright holder + std::string author(); + /// get short package description (1st line of README) + std::string description(); + /// get long package description (starting at 3rd line in README) + std::string readme(); + /// get package logo file name + std::string logo(); + /// get package icon file name + std::string icon(); + /// used for what filename + extern const std::string WHAT; + /// used for ident filename + extern const std::string IDENT; +} +EOF +to --condition AX_USE_CXX src/version.cxx < + +namespace NAMESPACE { + std::string package_string() { + return PACKAGE_STRING; + } + std::string package_name() { + return PACKAGE_NAME; + } + std::string version() { + return PACKAGE_VERSION; + } + std::string build_date() { + return BUILD_DATE; + } + std::string author() { + return AUTHOR; + } + std::string description() { + return DESCRIPTION; + } + std::string readme() { + return README; + } + std::string logo() { + return PROJECT_LOGO; + } + std::string icon() { + return PROJECT_ICON; + } + const std::string WHAT("#(@) " PACKAGE_STRING); + const std::string IDENT("\$Id: " PACKAGE_STRING); +} +EOF +echo "${HEADER}MAINTAINERCLEANFILES = makefile.in" | to --condition AX_USE_SCRIPTS scripts/makefile.am +echo "${HEADER}MAINTAINERCLEANFILES = makefile.in" | to --condition AX_USE_DOXYGEN doc/makefile.am +to --condition AX_USE_CPPUNIT test/makefile.am <&1 > /dev/null; then - LEAST=$(LANG= svn info $path | sed -n 's/Last Changed Rev: //p') - (cd $path && svn2cl) - break; - fi - done - echo -n $LEAST -)) -m4_define(x_bugreport, m4_esyscmd_s( - head -1 AUTHORS | \ - sed -n 's,.*<\([-_.a-z0-9A-Z]*@[-_.a-z0-9A-Z]*\)>.*,\1,gp' -)) -AC_INIT(x_package_name, x_major.x_minor.x_least, x_bugreport, x_package_name) - +## @id $Id$ +# +# This file has been added by bootstrap.sh on Mon, 13 July 2015 12:41:32 +0200 +# Feel free to change it or even remove and rebuild it, up to your needs +# +## 1 2 3 4 5 6 7 8 +## 45678901234567890123456789012345678901234567890123456789012345678901234567890 + +m4_define(x_package_name, libxml-cxx) # project's name +m4_define(x_major, 1) # project's major version +m4_define(x_minor, 2) # project's minor version +m4_include(ax_init_standard_project.m4) +AC_INIT(x_package_name, x_version, x_package_name) AM_INIT_AUTOMAKE([1.9 tar-pax]) +AX_INIT_STANDARD_PROJECT -SRC_DIR=src -TST_DIR=test -DOC_DIR=doc - -# files to create -AC_CONFIG_FILES([makefile ${PACKAGE_NAME}.spec src/version.cxx - src/makefile test/makefile doc/examples/makefile - doc/doxyfile doc/makefile - src/${PACKAGE_NAME}.pc debian/changelog debian/control]) - -# libtool versioning -LIB_MAJOR=m4_eval(x_major+x_minor) -LIB_MINOR=x_least -LIB_LEAST=x_minor -LIB_VERSION="${LIB_MAJOR}:${LIB_MINOR}:${LIB_LEAST}" -AC_SUBST(LIB_VERSION) - -# home -AC_SUBST(HOME) - -# datadir for languages -AX_DEFINE_DIR([DATADIR], [datadir]) -#AC_SUBST(DATADIR) +# requirements, uncomment, what you need: +AX_USE_CXX +AX_USE_LIBTOOL +#AX_USE_SCRIPTS +AX_USE_DOXYGEN +AX_USE_DEBIAN_PACKAGING +AX_USE_RPM_PACKAGING +AX_USE_CPPUNIT +AX_BUILD_EXAMPLES +#AX_BUILD_HTML -AM_CPPFLAGS="-DPACKAGE_VERSION='\"${PACKAGE_VERSION}\"' -DPACKAGE_NAME='\"${PACKAGE_NAME}\"'" +# qt features, uncomment, what you need: +#AX_CHECK_QT([QT], [QtCore QtGui QtNetwork], [QtWidgets]) +#AX_QT_NO_KEYWORDS -# Get rid of that stupid -O2 -g opions! -CXXFLAGS="${CXXFLAGS:-}" - -# languages -AC_LANG(C++) -AX_CXX_COMPILE_STDCXX_11(noext, optional) - -# programs -AC_PROG_CXX -AC_PROG_CPP -AC_PROG_INSTALL -AC_PROG_LN_S -AC_PROG_MAKE_SET -AC_PROG_LIBTOOL -AC_CHECK_PROG(have_doxygen, doxygen, yes, no) -AC_CHECK_PROG(have_dot, dot, yes, no) -PKG_PROG_PKG_CONFIG - -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") -AC_ARG_ENABLE(dot, - [AS_HELP_STRING([--disable-dot], - [disable dot graphic tools for documentation])], - [have_dot="$enableval"]) -test "$enableval" = "yes" && HAVE_DOT="YES" || HAVE_DOT="NO"; -AM_PATH_CPPUNIT([1.0.0], [have_cppunit="yes"], [have_cppunit="no"]) - -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") - -# macros -README=$(tail -n +3 README) -README_DEB=$(tail -n +3 README | sed -e 's/^$/./g' -e 's/^/ /g') -DESCRIPTION=$(head -1 README) -AUTHOR=$(head -1 AUTHORS) -AC_SUBST(AUTHOR) -_AM_SUBST_NOTMAKE([AUTHOR]) -AC_SUBST(DESCRIPTION) -_AM_SUBST_NOTMAKE([DESCRIPTION]) -AC_SUBST(README) -_AM_SUBST_NOTMAKE([README]) -AC_SUBST(README_DEB) -_AM_SUBST_NOTMAKE([README_DEB]) -DISTRO=$(lsb_release -sc) -AC_SUBST(DISTRO) -BUILD_NUMBER=${BUILD_NUMBER:-1} -AC_SUBST(BUILD_NUMBER) -BUILD_DATE=$(date -R) -AC_SUBST(BUILD_DATE) - -# export macros -SRCDIR=${srcdir} -AC_SUBST(SRCDIR) -AC_SUBST(SRC_DIR) -AC_SUBST(TST_DIR) -AC_SUBST(DOC_DIR) -AC_SUBST(HAVE_DOT) -AC_SUBST(THREADS) -AC_SUBST(AM_CXXFLAGS) -AC_SUBST(AM_CPPFLAGS) -AC_SUBST(LIBS) +AX_PKG_REQUIRE(libmrwcxx, libmrw-x++, mrw/string.hxx) # create output AC_OUTPUT - -# infos and warnings -if test "$have_doxygen" = "no"; then -AC_MSG_WARN([Missing program doxygen! - - you cannot rebuild the documentation with make doc - - 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 with make doc, there are no generated images - - there are precompiled derived files in the distribution]); fi -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 -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 diff --git a/debian/changelog.in b/debian/changelog.in index 8382038..7b10448 100644 --- a/debian/changelog.in +++ b/debian/changelog.in @@ -1,5 +1,5 @@ @PACKAGE@ (@PACKAGE_VERSION@~@DISTRO@.@BUILD_NUMBER@) @DISTRO@; urgency=low - * See https://dev.marc.waeckerlin.org/projects/@PACKAGE@ for changes + * Please see ChangeLog of @PACKAGE@ -- @AUTHOR@ @BUILD_DATE@ diff --git a/debian/control.in b/debian/control.in index f660df7..37ced77 100644 --- a/debian/control.in +++ b/debian/control.in @@ -1,17 +1,7 @@ Source: @PACKAGE_NAME@ Priority: extra Maintainer: @AUTHOR@ -Build-Depends: debhelper (>= 7), pkg-config, autotools-dev, doxygen, graphviz, lsb-release -Standards-Version: 3.8.1 -Section: libs -Homepage: https://dev.marc.waeckerlin.org/projects/libxml-cxx - -Package: @PACKAGE_NAME@-dev -Section: libdevel -Architecture: any -Depends: @PACKAGE_NAME@ (= ${binary:Version}) -Description: @DESCRIPTION@ -@README_DEB@ +Build-Depends: debhelper, pkg-config, autotools-dev, lsb-release , doxygen, graphviz, libcppunit-dev Package: @PACKAGE_NAME@ Section: libs @@ -19,3 +9,10 @@ Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: @DESCRIPTION@ @README_DEB@ + +Package: @PACKAGE_NAME@-dev +Section: libdevel +Architecture: any +Depends: @PACKAGE_NAME@ (= ${binary:Version}) +Description: @DESCRIPTION@ - Development Package +@README_DEB@ diff --git a/debian/copyright b/debian/copyright deleted file mode 100644 index 5f11668..0000000 --- a/debian/copyright +++ /dev/null @@ -1,26 +0,0 @@ -This package was debianized by Marc Wäckerlin on -Wed, 07 Apr 2010 10:23:02 +0200. - -It was downloaded from https://dev.marc.waeckerlin.org/projects/proxyface - -Upstream Author(s): - - Marc Wäckerlin - -Copyright: - - Marc Wäckerlin - -License: - - LGPL version 3 - -The Debian packaging is: - - Copyright (C) 2010 Marc Wäckerlin - -and is licensed under the GPL version 3, -see `/usr/share/common-licenses/GPL-3'. - -# Please also look if there are files or directories which have a -# different copyright/license attached and list them here. diff --git a/debian/dirs b/debian/dirs deleted file mode 100644 index e69de29..0000000 diff --git a/debian/libxml-cxx-dev.dirs b/debian/libxml-cxx-dev.dirs deleted file mode 100644 index 4418816..0000000 --- a/debian/libxml-cxx-dev.dirs +++ /dev/null @@ -1,2 +0,0 @@ -usr/lib -usr/include diff --git a/debian/libxml-cxx-dev.install b/debian/libxml-cxx-dev.install index 3c996c8..fce5f71 100644 --- a/debian/libxml-cxx-dev.install +++ b/debian/libxml-cxx-dev.install @@ -3,4 +3,4 @@ usr/lib/lib*.a usr/lib/lib*.so usr/lib/pkgconfig/* usr/lib/*.la -usr/share/pkgconfig/* +usr/share/doc/libxml-cxx/html diff --git a/debian/libxml-cxx.dirs b/debian/libxml-cxx.dirs deleted file mode 100644 index 6845771..0000000 --- a/debian/libxml-cxx.dirs +++ /dev/null @@ -1 +0,0 @@ -usr/lib diff --git a/debian/libxml-cxx.doc-base.EX b/debian/libxml-cxx.doc-base.EX deleted file mode 100644 index 5333865..0000000 --- a/debian/libxml-cxx.doc-base.EX +++ /dev/null @@ -1,20 +0,0 @@ -Document: proxyface -Title: Debian proxyface Manual -Author: -Abstract: This manual describes what proxyface is - and how it can be used to - manage online manuals on Debian systems. -Section: unknown - -Format: debiandoc-sgml -Files: /usr/share/doc/proxyface/proxyface.sgml.gz - -Format: postscript -Files: /usr/share/doc/proxyface/proxyface.ps.gz - -Format: text -Files: /usr/share/doc/proxyface/proxyface.text.gz - -Format: HTML -Index: /usr/share/doc/proxyface/html/index.html -Files: /usr/share/doc/proxyface/html/*.html diff --git a/debian/rules b/debian/rules old mode 100755 new mode 100644 index 9045bec..e25ce03 --- a/debian/rules +++ b/debian/rules @@ -1,13 +1,10 @@ -!/usr/bin/make -f -# -*- makefile -*- -# Sample debian/rules that uses debhelper. -# This file was originally written by Joey Hess and Craig Small. -# As a special exception, when this file is copied by dh-make into a -# dh-make output file, you may use that output file without restriction. -# This special exception was added by Craig Small in version 0.37 of dh-make. - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 +## @id $Id$ +# +# This file has been added by bootstrap.sh on Mon, 13 July 2015 12:42:59 +0200 +# Feel free to change it or even remove and rebuild it, up to your needs +# +## 1 2 3 4 5 6 7 8 +## 45678901234567890123456789012345678901234567890123456789012345678901234567890 %: dh $@ diff --git a/debian/shlibs.local.ex b/debian/shlibs.local.ex deleted file mode 100644 index 2566e8d..0000000 --- a/debian/shlibs.local.ex +++ /dev/null @@ -1 +0,0 @@ -libproxyface 1.0.34 proxyface (>> 1.0.34-0), proxyface (<< 1.0.34-99) diff --git a/debian/watch.ex b/debian/watch.ex deleted file mode 100644 index 9e3713b..0000000 --- a/debian/watch.ex +++ /dev/null @@ -1,23 +0,0 @@ -# Example watch control file for uscan -# Rename this file to "watch" and then you can run the "uscan" command -# to check for upstream updates and more. -# See uscan(1) for format - -# Compulsory line, this is a version 3 file -version=3 - -# Uncomment to examine a Webpage -# -#http://www.example.com/downloads.php proxyface-(.*)\.tar\.gz - -# Uncomment to examine a Webserver directory -#http://www.example.com/pub/proxyface-(.*)\.tar\.gz - -# Uncommment to examine a FTP server -#ftp://ftp.example.com/pub/proxyface-(.*)\.tar\.gz debian uupdate - -# Uncomment to find new files on sourceforge, for devscripts >= 2.9 -# http://sf.net/proxyface/proxyface-(.*)\.tar\.gz - -# Uncomment to find new files on GooglePages -# http://example.googlepages.com/foo.html proxyface-(.*)\.tar\.gz diff --git a/doc/makefile.am b/doc/makefile.am index 4f3ead4..779f7ae 100644 --- a/doc/makefile.am +++ b/doc/makefile.am @@ -1,48 +1,9 @@ -## @file -## -## $Id$ -## +## @id $Id$ +# +# This file has been added by bootstrap.sh on Mon, 13 July 2015 12:42:59 +0200 +# Feel free to change it or even remove and rebuild it, up to your needs +# ## 1 2 3 4 5 6 7 8 ## 45678901234567890123456789012345678901234567890123456789012345678901234567890 -SUBDIRS = examples -ALL_SRC = ${top_srcdir}/src/*.[ch]xx -# ${top_srcdir}/src/*.doc - -DIRS = html -#latex - -all: ${DIRS} - -.PHONY: doc clean-local distclean-local dist-hool install-data-hook \ - uninstall-hook - -deps = ${top_srcdir}/COPYING ${top_srcdir}/README \ - ${top_srcdir}/INSTALL ${top_srcdir}/NEWS ${top_srcdir}/ChangeLog - -html: ${ALL_SRC} doxyfile ${deps} - doxygen doxyfile -if PEDANTIC - test \! -s doxygen.errors -endif -# cd latex && make -# mv latex/refman.pdf @PACKAGE_NAME@-@PACKAGE_VERSION@.pdf - -CLEANFILES = doxygen.errors @PACKAGE_NAME@-@PACKAGE_VERSION@.pdf -DISTCLEANFILES = @PACKAGE_NAME@.doxytag MAINTAINERCLEANFILES = makefile.in - -distclean-local: - - rm -r html latex - -dist-hook: html -# cp -r html latex ${distdir}/ - -install-data-hook: - test -d $(DESTDIR)${docdir} || mkdir -p $(DESTDIR)${docdir} - chmod -R u+w $(DESTDIR)${docdir} - cp -r html $(DESTDIR)${docdir}/ - -uninstall-hook: - -chmod -R u+w $(DESTDIR)${docdir} - -rm -rf $(DESTDIR)${docdir}/* diff --git a/doc/examples/address.cxx b/examples/address.cxx similarity index 100% rename from doc/examples/address.cxx rename to examples/address.cxx diff --git a/doc/examples/contain_serialization.cxx b/examples/contain_serialization.cxx similarity index 100% rename from doc/examples/contain_serialization.cxx rename to examples/contain_serialization.cxx diff --git a/doc/examples/inherit_serialization.cxx b/examples/inherit_serialization.cxx similarity index 100% rename from doc/examples/inherit_serialization.cxx rename to examples/inherit_serialization.cxx diff --git a/doc/examples/list_serialization.cxx b/examples/list_serialization.cxx similarity index 100% rename from doc/examples/list_serialization.cxx rename to examples/list_serialization.cxx diff --git a/doc/examples/makefile.am b/examples/makefile.am similarity index 72% rename from doc/examples/makefile.am rename to examples/makefile.am index 1977302..8bcdfce 100644 --- a/doc/examples/makefile.am +++ b/examples/makefile.am @@ -1,10 +1,14 @@ ## @id $Id$ - +# +# This file has been added by bootstrap.sh on Mon, 13 July 2015 12:42:59 +0200 +# Feel free to change it or even remove and rebuild it, up to your needs +# ## 1 2 3 4 5 6 7 8 ## 45678901234567890123456789012345678901234567890123456789012345678901234567890 -AM_CXXFLAGS += -I ${top_srcdir}/src -AM_LDFLAGS = -L${top_builddir}/src -lxml-cxx +AM_CPPFLAGS = -I${top_srcdir}/src -I${top_srcdir}/src +AM_LDFLAGS = -L${abs_top_builddir}/src/.libs +LDADD = -lxml-cxx noinst_PROGRAMS = address node_macros serialization \ contain_serialization inherit_serialization \ diff --git a/doc/examples/node_macros.cxx b/examples/node_macros.cxx similarity index 100% rename from doc/examples/node_macros.cxx rename to examples/node_macros.cxx diff --git a/doc/examples/optional_serialization.cxx b/examples/optional_serialization.cxx similarity index 100% rename from doc/examples/optional_serialization.cxx rename to examples/optional_serialization.cxx diff --git a/doc/examples/serialization.cxx b/examples/serialization.cxx similarity index 100% rename from doc/examples/serialization.cxx rename to examples/serialization.cxx diff --git a/makefile.am b/makefile.am index faaa763..53263cd 100644 --- a/makefile.am +++ b/makefile.am @@ -1,66 +1,11 @@ -## @file -## -## $Id$ -## -## $Date: 2008-08-26 13:09:21 $ -## $Author: marc $ -## -## @copy © Marc Wäckerlin -## @license LGPL, see file COPYING -## +## @id $Id$ +# +# This file has been added by bootstrap.sh on Mon, 13 July 2015 12:42:59 +0200 +# Feel free to change it or even remove and rebuild it, up to your needs +# ## 1 2 3 4 5 6 7 8 ## 45678901234567890123456789012345678901234567890123456789012345678901234567890 -SUBDIRS = @SRC_DIR@ @TST_DIR@ @DOC_DIR@ +SUBDIRS = src test doc examples -nobase_include_HEADERS = - -EXTRA_DIST = bootstrap.sh debian - -DISTCLEANFILES = debian/changelog - -deb: dist - tar xzvf @PACKAGE_TARNAME@-@PACKAGE_VERSION@.tar.gz - cd @PACKAGE_TARNAME@-@PACKAGE_VERSION@ && dpkg-buildpackage - rm -rf @PACKAGE_TARNAME@-@PACKAGE_VERSION@ - -doc_DATA = AUTHORS NEWS README COPYING INSTALL ChangeLog @PACKAGE_NAME@.spec - -RPMS = /usr/src/packages/RPMS/i586/@PACKAGE_NAME@-@PACKAGE_VERSION@-1.i586.rpm \ - /usr/src/packages/RPMS/i586/@PACKAGE_NAME@-devel-@PACKAGE_VERSION@-1.i586.rpm \ - /usr/src/packages/SRPMS/@PACKAGE_NAME@-@PACKAGE_VERSION@-1.src.rpm - -.PHONY: release tag rpm webserver \ - doc clean-local distclean-local dist-hool install-data-hook \ - uninstall-hook - -release: tag webserver - -tag: distcheck - cvs ci -R . - cvs tag -FR REL_@PACKAGE_NAME@-@PACKAGE_VERSION@ . - -rpm: dist - cp @PACKAGE_TARNAME@-@PACKAGE_VERSION@.tar.gz \ - /usr/src/packages/SOURCES/ - rpmbuild -ba --clean @PACKAGE_NAME@.spec - -deps = ${top_srcdir}/COPYING ${top_srcdir}/README ${top_srcdir}/INSTALL ${top_srcdir}/NEWS ${top_srcdir}/ChangeLog - -clean-local: - - rm doxygen.err lib@PACKAGE_NAME@.doxytag - - rm @PACKAGE_NAME@-dev_@PACKAGE_VERSION@-*.deb \ - @PACKAGE_NAME@_@PACKAGE_VERSION@-*.changes \ - @PACKAGE_TARNAME@_@PACKAGE_VERSION@-1.tar.gz \ - @PACKAGE_NAME@_@PACKAGE_VERSION@-1.dsc \ - @PACKAGE_TARNAME@-@PACKAGE_VERSION@.tar.gz \ - @PACKAGE_NAME@_@PACKAGE_VERSION@-*.deb - -distclean-local: - - rm -r ${top_builddir}/@DOC_DIR@/html/* ${top_builddir}/@DOC_DIR@/latex/* - - rm makefile makefile.in doxygen.err libmrw.doxytag - - find . -name '*~' | xargs rm - - rm -r autom4te.cache - - rm aclocal.m4 config.guess config.sub configure \ - depcomp install-sh ltmain.sh makefile makefile.in \ - missing mkinstalldirs +MAINTAINERCLEANFILES = makefile.in diff --git a/src/libxml-cxx.pc.in b/src/libxml-cxx.pc.in index 35556dd..71f2a2c 100644 --- a/src/libxml-cxx.pc.in +++ b/src/libxml-cxx.pc.in @@ -1,11 +1,19 @@ -prefix=@PACKAGE_NAME@ -exec_prefix=${prefix} +## @id $Id$ +# +# This file has been added by bootstrap.sh on Mon, 13 July 2015 12:42:59 +0200 +# Feel free to change it or even remove and rebuild it, up to your needs +# +## 1 2 3 4 5 6 7 8 +## 45678901234567890123456789012345678901234567890123456789012345678901234567890 + +prefix=@prefix@ +exec_prefix=@exec_prefix@ libdir=${exec_prefix}/lib includedir=${prefix}/include Name: @PACKAGE_NAME@ -Description: C++ wrappers around pcsc-lite, cryptoki, openssh -Version: @PACKAGE_VERSION@ -Libs: -L${libdir} -lxml-cxx -Libs.private: -Cflags: -I${includedir} +Description: @DESCRIPTION@ +Version: @VERSION@ +Libs: -L${libdir} -l@PACKAGE_NAME@ @LDFLAGS@ +Cflags: -I${includedir} @CPPFLAGS@ +Requires: @PKG_REQUIREMENTS@ diff --git a/src/makefile.am b/src/makefile.am index e739468..8e7ada8 100644 --- a/src/makefile.am +++ b/src/makefile.am @@ -1,25 +1,14 @@ -## @file -## -## $Id$ -## +## @id $Id$ +# +# This file has been added by bootstrap.sh on Mon, 13 July 2015 12:42:59 +0200 +# Feel free to change it or even remove and rebuild it, up to your needs +# ## 1 2 3 4 5 6 7 8 ## 45678901234567890123456789012345678901234567890123456789012345678901234567890 -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = libxml-cxx.pc -pkgconfig2dir = $(datarootdir)/pkgconfig -pkgconfig2_DATA = $(pkgconfig_DATA) - -EXTRA_DIST = $(pkgconfig_DATA).in version.cxx.in - -BUILT_SOURCES = version.cxx - -AM_CXXFLAGS += -I ${top_srcdir}/src -lib_LTLIBRARIES = libxml-cxx.la nobase_include_HEADERS = xml-cxx/xml.hxx xml-cxx/any.hxx +lib_LTLIBRARIES = libxml-cxx.la libxml_cxx_la_SOURCES = xml.cxx version.cxx -libxml_cxx_la_LDFLAGS = -version-info ${LIB_VERSION} -DISTCLEANFILES = $(pkgconfig_DATA) MAINTAINERCLEANFILES = makefile.in diff --git a/src/version.cxx b/src/version.cxx new file mode 100644 index 0000000..c87b294 --- /dev/null +++ b/src/version.cxx @@ -0,0 +1,40 @@ +/*! @file + + @id $ +*/ +// 1 2 3 4 5 6 7 8 +// 45678901234567890123456789012345678901234567890123456789012345678901234567890 + +#include + +namespace NAMESPACE { + std::string package_string() { + return PACKAGE_STRING; + } + std::string package_name() { + return PACKAGE_NAME; + } + std::string version() { + return PACKAGE_VERSION; + } + std::string build_date() { + return BUILD_DATE; + } + std::string author() { + return AUTHOR; + } + std::string description() { + return DESCRIPTION; + } + std::string readme() { + return README; + } + std::string logo() { + return PROJECT_LOGO; + } + std::string icon() { + return PROJECT_ICON; + } + const std::string WHAT("#(@) " PACKAGE_STRING); + const std::string IDENT("$Id: " PACKAGE_STRING); +} diff --git a/src/version.hxx b/src/version.hxx new file mode 100644 index 0000000..3a560af --- /dev/null +++ b/src/version.hxx @@ -0,0 +1,33 @@ +/*! @file + + @id $Id$ +*/ +// 1 2 3 4 5 6 7 8 +// 45678901234567890123456789012345678901234567890123456789012345678901234567890 + +#include + +namespace NAMESPACE { + /// get package string which consists of package name and package version + std::string package_string(); + /// get package name + std::string package_name(); + /// get package version + std::string version(); + /// get code build date + std::string build_date(); + /// get author, i.e. copyright holder + std::string author(); + /// get short package description (1st line of README) + std::string description(); + /// get long package description (starting at 3rd line in README) + std::string readme(); + /// get package logo file name + std::string logo(); + /// get package icon file name + std::string icon(); + /// used for what filename + extern const std::string WHAT; + /// used for ident filename + extern const std::string IDENT; +} diff --git a/src/xml.cxx b/src/xml.cxx index 536e3e8..7528c6e 100644 --- a/src/xml.cxx +++ b/src/xml.cxx @@ -5,6 +5,7 @@ // 1 2 3 4 5 6 7 8 // 45678901234567890123456789012345678901234567890123456789012345678901234567890 +#include #include #include #include @@ -255,6 +256,7 @@ namespace xml { for (Contents::const_iterator it(o._contents.begin()); it!=o._contents.end(); ++it) _contents.push_back((*it)->clone(this).release()); + return *this; } //! Clones But resets the parent reference. /*! You get a new instance of the node, but detached from the @@ -736,9 +738,7 @@ namespace xml { Node::size_type min, Node::size_type max) */ UnsignedInteger::UnsignedInteger(std::string name, unsigned long i, size_type min, size_type max) throw(): - String(name, - dynamic_cast(std::stringstream()< UnsignedInteger::clone() const throw() { return std::auto_ptr(new UnsignedInteger(*this)); @@ -755,7 +755,7 @@ namespace xml { return *this; } std::string::size_type pos(txt.find_first_not_of("0123456789", start)); - if (pos0 && node->list(tpl[i].name()).size()list(tpl[i].name()).size()) + if ((tpl[i].min()>0 && node->list(tpl[i].name()).size()list(tpl[i].name()).size())) throw wrong_node_number(*node, is, tpl[i].name(), node->list(tpl[i].name()).size(), tpl[i].min(), tpl[i].max()); diff --git a/test/makefile.am b/test/makefile.am index f5afc7b..087f03c 100644 --- a/test/makefile.am +++ b/test/makefile.am @@ -1,11 +1,14 @@ ## @id $Id$ - +# +# This file has been added by bootstrap.sh on Mon, 13 July 2015 12:42:59 +0200 +# Feel free to change it or even remove and rebuild it, up to your needs +# ## 1 2 3 4 5 6 7 8 ## 45678901234567890123456789012345678901234567890123456789012345678901234567890 -AM_CXXFLAGS += -I ${top_srcdir}/src -AM_LDFLAGS = -L${top_builddir}/src -LDADD = -lcppunit -lxml-cxx +AM_CPPFLAGS = -I${top_srcdir}/src -I${top_srcdir}/src +AM_LDFLAGS = -L${abs_top_builddir}/src/.libs +LDADD = -lxml-cxx -lcppunit check_PROGRAMS = xml_test serialization_test \ container_serialization_test optional_serialization_test @@ -17,5 +20,4 @@ serialization_test_SOURCES = serialization_test.cxx container_serialization_test_SOURCES = container_serialization_test.cxx optional_serialization_test_SOURCES = optional_serialization_test.cxx -CLEANFILES = MAINTAINERCLEANFILES = makefile.in