From a272608e114fed948879e7a8d686482b64f6f0c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20W=C3=A4ckerlin?= Date: Tue, 23 Jun 2015 12:07:47 +0000 Subject: [PATCH] minor changes - don't know wha it does not compile for precise, lucid, squeeze --- ChangeLog | 6 + ax_check_qt.m4 | 206 ++++++++++++ ax_init_standard_project.m4 | 464 +++++++++++++++++++++++++ bootstrap.sh | 650 +++++++++++++++++++++++++++++++++++- src/mrw/auto.hxx | 6 +- src/mrw/checkcxx11.hxx | 2 +- 6 files changed, 1326 insertions(+), 8 deletions(-) create mode 100644 ax_check_qt.m4 create mode 100644 ax_init_standard_project.m4 diff --git a/ChangeLog b/ChangeLog index 92d3ad5..cdfef13 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2015-05-25 08:03 marc + + * ChangeLog, doc/makefile.am, src/mrw/auto.hxx, test/auto_test.cxx, + test/exec_test.cxx, test/stdext_test.cxx: fixed some non-explicit + conversions, so that make distcheck runs on mac yosemite + 2015-05-05 18:43 marc * configure.ac: need to do a minor update due to least modulo 256 diff --git a/ax_check_qt.m4 b/ax_check_qt.m4 new file mode 100644 index 0000000..3d5ab67 --- /dev/null +++ b/ax_check_qt.m4 @@ -0,0 +1,206 @@ +# 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_cxxflags="$CXXFLAGS" + newflag="no" + for test_flag in $1; do + CXXFLAGS+=" ${test_flag}" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [ + newflag="$test_flag" + AM_CXXFLAGS+=" ${test_flag}" + CXXFLAGS="$save_cxxflags" + break; + ]) + CXXFLAGS="$save_cxxflags" + done + AC_SUBST(AM_CXXFLAGS) + 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]) + AM_CPPFLAGS+=" ${[$1]5_CFLAGS}" + MOC_FLAGS+=" -DHAVE_$1=1 ${[$1]5_CFLAGS}" + AM_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}], [ + AM_CPPFLAGS+=" ${[$1]5_OPTIONAL_CFLAGS}" + MOC_FLAGS+=" ${[$1]5_OPTIONAL_CFLAGS}" + AM_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]) + AM_CPPFLAGS+=" ${$1_CFLAGS}" + MOC_FLAGS+=" -DHAVE_$1=1 ${$1_CFLAGS}" + AM_CXXFLAGS+=" ${$1_CFLAGS}" + LIBS+=" ${$1_LIBS}" + PKG_REQUIREMENTS+=" ${qt_modules}" + if test -n "$3"; then + PKG_CHECK_MODULES($1_OPTIONAL, [${qt_modules_optional}], [ + AM_CPPFLAGS+=" ${$1_OPTIONAL_CFLAGS}" + MOC_FLAGS+=" ${$1_OPTIONAL_CFLAGS}" + AM_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(AM_CPPFLAGS) + AC_SUBST(MOC_FLAGS) + AC_SUBST(AM_CXXFLAGS) + AC_SUBST(PKG_REQUIREMENTS) + AX_ADDITIONAL_QT_RULES_HACK=' +ui_%.hxx: %.ui + $(UIC) -o [$][@] $< + +moc_%.cxx: %.hxx + $(MOC) $(MOC_FLAGS) -o [$][@] $< + +qrc_%.cxx: %.qrc + $(RCC) -o [$][@] $<' + AC_SUBST(AX_ADDITIONAL_QT_RULES_HACK) +]) + +# 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], [ + AM_CPPFLAGS+=" -DQT_NO_KEYWORDS" +]) diff --git a/ax_init_standard_project.m4 b/ax_init_standard_project.m4 new file mode 100644 index 0000000..978fac0 --- /dev/null +++ b/ax_init_standard_project.m4 @@ -0,0 +1,464 @@ +## @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 <> 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 + * 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 + * 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 + * 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 \ + && ! 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 +copy AUTHORS +to configure.ac < + +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 < AutoBfd; template class Auto { public: - typedef mrw::AutoResource Free; + typedef mrw::AutoResource Free; }; @endcode @param RESOURCE_TYPE type of the resource to manage @@ -97,7 +97,7 @@ namespace mrw { typename FUNCTION_PTR, FUNCTION_PTR FREE_FUNCTION, typename INITIAL_VALUE_TYPE = RESOURCE_TYPE, - INITIAL_VALUE_TYPE INITIAL_VALUE = (INITIAL_VALUE_TYPE)0, + INITIAL_VALUE_TYPE INITIAL_VALUE = INITIAL_VALUE_TYPE(0), typename FREE_TYPE = RESOURCE_TYPE> class AutoResource { public: @@ -436,7 +436,7 @@ namespace mrw { */ template class Auto { public: - typedef mrw::AutoResource Free; + typedef mrw::AutoResource Free; private: /** @internal work around compiler warning: diff --git a/src/mrw/checkcxx11.hxx b/src/mrw/checkcxx11.hxx index edd1a32..457f528 100644 --- a/src/mrw/checkcxx11.hxx +++ b/src/mrw/checkcxx11.hxx @@ -32,7 +32,7 @@ # else // __cplusplus==1 is a known bug in gcc 4.6.3 # warning your compiler has a know bug, please upgrade to gcc >= 4.7 -# warning see __cplusplus in http://gcc.gnu.org/gcc-4.7/changes.html +# warning "see __cplusplus in http://gcc.gnu.org/gcc-4.7/changes.html" # endif # else /// Code is compiled with an old non C++11 standard compliant compiler