#! /bin/bash ## @file ## ## $Id$ ## ## $Date$ ## $Author$ ## ## @copy © Marc Wäckerlin ## @license LGPL, see file COPYING ## ## $Log: bootstrap.sh,v $ ## Revision 1.3 2004/08/31 15:57:19 marc ## added file header ## MY_NAME=${0##*/} PROJECT_PATH=$(pwd) DEFAULT_PROJECT_NAME=${PROJECT_PATH##*/} configure=0 build=0 docker=0 buildtarget="" overwrite=0 rebuild=0 novcs=0 excludevcs=() rebuildfiles=() while test $# -gt 0; do case "$1" in (--configure|-c) configure=1;; (--docker|-d) docker=1;; (--build|-b) configure=1; build=1; buildtarget+=" distcheck";; (--all|-a) shift; configure=1; build=1; buildtarget+=" all";; (--clean) shift; configure=1; build=1; buildtarget+=" maintainer-clean";; (--target|-t) shift; configure=1; build=1; buildtarget+=" $1";; (--overwrite|-o) overwrite=1;; (--rebuild|-r) rebuild=1;; (--rebuild-file|-f) shift; rebuildfiles+=("$1");; (--no-vcs|-n) novcs=1;; (--exclude-vcs|-x) shift; excludevcs+=("$1");; (--version|-v) echo "$Id$"; exit;; (--help|-h) less < same as -b, but specify target instead of distcheck --overwrite, -o overwrite all basic files (bootstrap.sh, m4-macros) --rebuild, -r force rebuild of generated files, even if modified --rebuild-file, -f rebild specific file (can be added multiple times) --no-vcs, -n do not automatically add files to version control --exclude-vcs, -x exclude specific file from version control --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 or git 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 or git repository, since this build environment relies on subversion or git. Example for an initial run, where your new projet is stored in subversion on https:/path/to/your/new-project: cd ~/svn svn co https://dev.marc.waeckerlin.org/svn/bootstrap-build-environment/trunk \\ bootstrap-build-environment svn co https:/path/to/your/new-project/trunk new-project cd new-project ../bootstrap-build-environment/bootstrap.sh Example for an initial run, where your new projet is stored in git on https:/path/to/your/new-project: cd ~/svn svn co https://dev.marc.waeckerlin.org/svn/bootstrap-build-environment/trunk \\ bootstrap-build-environment cd ~/git git clone https:/path/to/your/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. If necessary, files are added to version control. GENERATED FILES This script copies the following files into your project environment: * ${MY_NAME} * autogen.sh - just the basics to initialize auto tools and create configure * 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 * makefile_test.inc.am - makefile to be included in tests * resolve-debbuilddeps.sh - script to install debian package dependencies * resolve-rpmbuilddeps.sh - script to install RPM package dependencies * build-in-docker.sh - script to build the project encapsulated in a docker container * build-in-docker.conf - additional configuration for build-in-docker.sh * rpmsign.exp - script for signing rpms unattended * build-resource-file.sh - build resource.qrc file from a resource directory * sql-to-dot.sed - script to convert SQL schema files to graphviz dot in doxygen * mac-create-app-bundle.sh - script to create apple mac os-x app-bundle * test/runtests.sh - template file to run test scripts, i.e. docker based * AUTHORS - replace your name in AUTHORS before first run * NEWS - empty file add your project's news * README - add project description (first line is header, followed by an empty line) * configure.ac - global configuration file template * makefile.am - global makefile template * ${DEFAULT_PROJECT_NAME}.desktop.in - linux desktop file * 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 * etc/makefile.am - if you enable AX_USE_ETC * html/makefile.am - if you enabled AX_BUILD_HTML or AX_BUILD_HTML_NPM * html/package.json.in - if you enabled AX_BUILD_HTML_NPM * scripts/makefile.am - if you enabled AX_USE_SCRIPTS * nodejs/makefile.am - if you add AX_USE_NODEJS * nodejs/${DEFAULT_PROJECT_NAME}.js - if you add AX_USE_NODEJS * nodejs/package.json.in - if you add AX_USE_NODEJS * nodejs/etc/${DEFAULT_PROJECT_NAME}.json - if you add AX_USE_NODEJS * nodejs/etc/default/${DEFAULT_PROJECT_NAME} - if you add AX_USE_NODEJS * nodejs/etc/init/${DEFAULT_PROJECT_NAME}.conf - if you add AX_USE_NODEJS * nodejs/etc/systemd/system/${DEFAULT_PROJECT_NAME}.service - if you add AX_USE_NODEJS * nodejs/public - if you add AX_USE_NODEJS * nodejs/public/images - if you add AX_USE_NODEJS * nodejs/public/javascripts/${DEFAULT_PROJECT_NAME}.js - if you add AX_USE_NODEJS * nodejs/public/stylesheets/style.styl - if you add AX_USE_NODEJS * nodejs/routes/index.js - if you add AX_USE_NODEJS * nodejs/sockets/index.js - if you add AX_USE_NODEJS * nodejs/views/index.ejs - if you add AX_USE_NODEJS * nodejs/views/layout.ejs - if you add AX_USE_NODEJS * nodejs/node_modules - if you add AX_USE_NODEJS * doc/makefile.am - if you enabled AX_USE_DOXYGEN or AX_USE_PERLDOC * doc/doxyfile.in - if you enabled AX_USE_DOXYGEN * doc/header.html.in - if you enabled AX_USE_DOXYGEN * doc/footer.html.in - if you enabled AX_USE_DOXYGEN * doc/style.css - if you enabled AX_USE_DOXYGEN * doc/plantuml.jar - if you enable AX_USE_DOXYGEN * test/makefile.am - if you enabled AX_USE_CPPUNIT and AX_USE_CXX * test/${DEFAULT_PROJECT_NAME#lib}.cxx - if you enabled AX_BUILD_TEST or 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 * ${DEFAULT_PROJECT_NAME}.spec.in - if you enable AX_USE_RPM_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 * NEWS * README * configure.ac * src/makefile.am * html/makefile.am * test/makefile.am * test/${DEFAULT_PROJECT_NAME}.cxx * 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 or AX_BUILD_HTML_NPM * doc/doxyfile.in depends on AX_BUILD_EXAMPLES * debian/control.in depends on AX_USE_DOXYGEN, AX_USE_PERLDOC, AX_USE_CPPUNIT AX_CXX_QT, AX_CHECK_QT, AX_REQUIRE_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 * ${DEFAULT_PROJECT_NAME}.spec.in depends on AX_USE_RPM_PACKAGING, AX_USE_LIBTOOL, AX_CHECK_QT, AX_REQUIRE_QT, AX_CXX_QT, AX_USE_CPPUNIT 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. * NEWS: File to add project news. * 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++ checking:\e[0m for version control system ..." VCS="" VCSDEPENDS="" if test -d .svn; then VCS="svn" VCSDEPENDS_DEB="svn2cl, subversion, subversion-tools," VCSDEPENDS_RPM="subversion," echo -e " \e[32msuccess\e[0m detected ${VCS}" elif test -d .git; then VCS="git" VCSDEPENDS_DEB="git2cl, git," VCSDEPENDS_RPM="git," echo -e " \e[32msuccess\e[0m detected ${VCS}" else echo -e " \e[33mignored\e[0m" fi HEADER='## @id '"\$Id\$"' ## ## This file has been added: ## - by '${MY_NAME}' ## - on '$(LANG= date +"%a, %d %B %Y %H:%M:%S %z")' ## Feel free to change it or even remove and rebuild it, up to your needs ## ## 1 2 3 4 5 6 7 8 ## 45678901234567890123456789012345678901234567890123456789012345678901234567890 ' CHEADER='/** @id '"\$Id\$"' This file has been added: - by '${MY_NAME}' - on '$(LANG= date +"%a, %d %B %Y %H:%M:%S %z")' */ // 1 2 3 4 5 6 7 8 // 45678901234567890123456789012345678901234567890123456789012345678901234567890 ' notice() { echo -e "\e[1;33m$*\e[0m" } run() { check=1 while test $# -gt 0; do case "$1" in (--no-check) check=0;; (*) break;; esac shift; done echo -en "\e[1m-> 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() { local IFS="|" egrep -q '^ *'"($*)"' *(\(.*)? *$' 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" if test -n "${VCS}" -a $novcs -eq 0 && ! contains "$1" "${excludevcs[@]}"; then run ${VCS} add "$1" fi fi } checkfile() { exists=0 if test -f "$1" -o -f "$1".in; then exists=1 fi test $exists -eq 1 } to() { mode="u=rw,g=rw,o=r" while test $# -gt 0; do case "$1" in (--condition) shift # test for a tag, abort if not set if ! testtag "$1"; then return 0 fi;; (--unless) shift # test for a tag, abort if set if testtag "$1"; then return 0 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 run chmod $mode $1 if test $exists -eq 0; then if test -n "${VCS}" -a $novcs -eq 0 && ! contains "$1" "${excludevcs[@]}"; then run ${VCS} add "$1" if test "${VCS}" = "svn"; then run svn propset svn:keywords "Id" "$1" fi fi 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 local source="${0%/*}/$1" if ! test -r "${source}"; then source="../${source}" if ! test -r "${source}"; then source="${0%/*}/$1" fi fi if test "${1%/*}" != "$1"; then test -d "${1%/*}" || svn mkdir "${1%/*}" fi run cp "${source}" "$1" if test $exists -eq 0; then if test -n "${VCS}" -a $novcs -eq 0 && ! contains "$1" "${excludevcs[@]}"; then run ${VCS} add "$1" if test "${VCS}" = "svn"; then run svn propset svn:keywords "Id" "$1" fi fi 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 } vcs2cl() { exists=0 if test -f "ChangeLog"; then exists=1 else touch "ChangeLog" fi if test -x $(which ${VCS}2cl); then if test "${VCS}" = "git"; then ${VCS}2cl > ChangeLog elif test "${VCS}" = "svn"; then ${VCS}2cl --break-before-msg -a -i elif test -n "${VCS}"; then ${VCS}2cl fi fi if test $exists -eq 0; then if test -n "${VCS}" -a $novcs -eq 0 && ! contains "ChangeLog" "${excludevcs[@]}"; then run ${VCS} add ChangeLog fi fi } # Check if we are in subversion root, if so, create trunk, branches, tags: if test "${VCS}" = "svn" -a $novcs -eq 0; then if test "$(LANG= svn info | sed -n 's,Relative URL: *,,p')" = "^/"; then svn mkdir trunk branches tags cd trunk fi 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 makefile_test.inc.am copy resolve-debbuilddeps.sh copy resolve-rpmbuilddeps.sh copy build-in-docker.sh copy rpmsign.exp copy build-resource-file.sh copy sql-to-dot.sed copy mac-create-app-bundle.sh AUTHOR=$(gpg -K 2>/dev/null | sed -n 's,uid *\(\[ultimate\] *\)\?,,p' | head -1) if test -z "${AUTHOR}"; then AUTHOR="FIRSTNAME LASTNAME (URL) " fi to AUTHORS < #include #include #include #include int main(int argc, char *argv[]) try { QApplication a(argc, argv); a.setApplicationDisplayName(a.tr("${PACKAGE_NAME}")); a.setApplicationName(${PACKAGE_NAME}::package_name().c_str()); a.setApplicationVersion(${PACKAGE_NAME}::version().c_str()); QCommandLineParser parser; parser.addHelpOption(); parser.process(a); QStringList scripts(parser.positionalArguments()); ${PackageName} w; w.show(); return a.exec(); } catch (std::exception &x) { std::cerr<<"**** error: "< #include /// Main Window /** Main window for ${PACKAGE_NAME} */ class ${PackageName}: public QMainWindow, protected Ui::${PackageName} { Q_OBJECT; public: explicit ${PackageName}(QWidget *parent = 0): QMainWindow(parent) { setTitle(tr("${PACKAGE_NAME}[*]")); setupUi(this); } virtual ~${PackageName}() {} }; #endif EOF fi to --condition AX_USE_CXX src/${PACKAGE_NAME#lib}.ui < ${PackageName} 0 0 800 600 ${PackageName} 0 0 800 22 EOF to --condition AX_USE_CXX src/languages.qrc < ${PACKAGE_NAME}_de.qm ${PACKAGE_NAME}_fr.qm ${PACKAGE_NAME}_it.qm ${PACKAGE_NAME}_en.qm EOF fi to --condition AX_USE_CXX src/version.hxx < 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 PACKAGE_LOGO; } std::string icon() { return PACKAGE_ICON; } const std::string WHAT("#(@) " PACKAGE_STRING); const std::string IDENT("\$Id: " PACKAGE_STRING); } EOF to --condition AX_USE_ETC etc/makefile.am <= 0.0.1", "socket.io": "~1.4.4", "socketio-auth": "0.0.5", "ldapauth": "git+https://github.com/DimensionSoftware/node-ldapauth.git" }, "description": "@DESCRIPTION@", "main": "@PACKAGE_NAME@.js", "devDependencies": {}, "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "@AUTHOR@", "license": "@LICENSE@", "path": { "prefix": "@PREFIX@", "sysconf": "@SYSCONFDIR@", "pkgdata": "@PKGDATADIR@", "localstate": "@LOCALSTATEDIR@", "log": "@LOCALSTATEDIR@/log/@PACKAGE_NAME@.log", "config": "@SYSCONFDIR@/@PACKAGE_NAME@.json", "nodejs": "@PKGDATADIR@/nodejs" } } EOF to --condition AX_USE_NODEJS nodejs/etc/${PACKAGE_NAME}.json < /var/run/${PACKAGE_NAME}.pid # there are some useful defaults # do not edit this file, overwrite values in /etc/default/${PACKAGE_NAME} EXEC_${PACKAGE_NAME^^}="/usr/bin/nodejs /usr/share/${PACKAGE_NAME}/nodejs/${PACKAGE_NAME}" ${PACKAGE_NAME^^}_LOG="/var/log/${PACKAGE_NAME}.log" ${PACKAGE_NAME^^}_USER="${PACKAGE_NAME}" ${PACKAGE_NAME^^}_PORT="" [ -r /etc/default/${PACKAGE_NAME} ] && . /etc/default/${PACKAGE_NAME} if test -n "\${${PACKAGE_NAME^^}_USER}"; then exec sudo -u "\${${PACKAGE_NAME^^}_USER}" \${EXEC_${PACKAGE_NAME^^}} \${${PACKAGE_NAME^^}_PORT} >> \${${PACKAGE_NAME^^}_LOG} 2>&1 else exec \${EXEC_${PACKAGE_NAME^^}} \${${PACKAGE_NAME^^}_PORT} >> \${${PACKAGE_NAME^^}_LOG} 2>&1 fi end script pre-start script ${PACKAGE_NAME^^}_LOG="/var/log/${PACKAGE_NAME}.log" [ -r /etc/default/${PACKAGE_NAME} ] && . /etc/default/${PACKAGE_NAME} # Date format same as (new Date()).toISOString() for consistency echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Starting" >> \${${PACKAGE_NAME^^}_LOG} end script pre-stop script ${PACKAGE_NAME^^}_LOG="/var/log/${PACKAGE_NAME}.log" [ -r /etc/default/${PACKAGE_NAME} ] && . /etc/default/${PACKAGE_NAME} rm /var/run/${PACKAGE_NAME}.pid echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Stopping" >> \${${PACKAGE_NAME^^}_LOG} end script EOF to --condition AX_USE_NODEJS nodejs/etc/systemd/system/${PACKAGE_NAME}.service < new connection from "+userdata.username); function emit(signal, data, info) { if (typeof data == 'string' && !data.match("\n")) { console.log("<- signal: "+signal+"("+data+")"); } else { console.log("<- signal: "+signal); } if (info) console.log(info); socket.emit(signal, data); } function fail(txt, data) { console.log("** "+txt, data); emit("fail", txt); } /* socket .on("xxx", xxx) .on("yyy", yyy; */ } // Handle Connection require('socketio-auth')(io, { authenticate: function (socket, data, callback) { console.log("=> authenticate: ", data.username); //get credentials sent by the client var username = data.username; var password = data.password; authentication(data.username, data.password, function() { console.log("####LOGIN-SUCESS####"); callback(null, true) }, function() { console.log("####LOGIN-FAIL####"); callback(new Error("wrong credentials")) }); }, postAuthenticate: connection, timeout: "none" }); return module; } EOF to --condition AX_USE_NODEJS nodejs/views/index.ejs < $(head -1 README)

$(head -1 README)

generated by bootstrap, please edit

EOF to --condition AX_USE_NODEJS nodejs/views/layout.ejs < EOF echo "${HEADER}MAINTAINERCLEANFILES = makefile.in" | to --condition 'AX_USE_DOXYGEN|AX_USE_PERLDOC' doc/makefile.am if testtag AX_BUILD_TEST; then to test/runtests.sh < ${0%/*}/test/runtests.sh fi to --condition 'AX_BUILD_TEST|AX_USE_CPPUNIT' test/makefile.am < #include #include #include #include #include /// @todo Rename DummyTest and DummyTest::dummy() /// @todo Write test cases class DummyTest: public CppUnit::TestFixture { public: void dummy() { } CPPUNIT_TEST_SUITE(DummyTest); CPPUNIT_TEST(dummy); CPPUNIT_TEST_SUITE_END(); }; CPPUNIT_TEST_SUITE_REGISTRATION(DummyTest); int main(int argc, char** argv) try { std::ofstream ofs((*argv+std::string(".xml")).c_str()); CppUnit::TextUi::TestRunner runner; runner.setOutputter(new CppUnit::XmlOutputter(&runner.result(), ofs)); runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest()); return runner.run() ? 0 : 1; } catch (std::exception& e) { std::cerr<<"***Exception: "< \$projectname: \$title \$title \$treeview \$search \$mathjax \$extrastylesheet
\$projectname \$projectnumber
\$projectbrief
EOF to --condition AX_USE_DOXYGEN doc/footer.html.in <
EOF to --condition AX_USE_DOXYGEN doc/style.css <@AUTHOR_NAME@\\n"' doxyadd ALIASES '"license=\\par License\\n"' doxyadd ALIASES '"classmutex=\\par Reentrant:\\nAccess is locked with class static mutex @c "' doxyadd ALIASES '"instancemutex=\\par Reentrant:\\nAccess is locked with per instance mutex @c "' doxyadd ALIASES '"mutex=\\par Reentrant:\\nAccess is locked with mutex @c "' doxyadd ALIASES '"api=\\xrefitem api \\"API Call\\" \\"\\""' doxyadd ALIASES '"description=@DESCRIPTION@"' doxyadd ALIASES '"readme=@README_HTML@"' doxyadd ALIASES '"author=@AUTHOR_NAME@"' doxyreplace PLANTUML_JAR_PATH '"@top_srcdir@/doc/plantuml.jar"' doxyreplace ENABLE_PREPROCESSING YES doxyreplace MACRO_EXPANSION YES doxyadd PREDEFINED '"NAMESPACE=@PACKAGE_NAME@"' doxyreplace BUILTIN_STL_SUPPORT YES doxyreplace DISTRIBUTE_GROUP_DOC YES doxyreplace EXTRACT_ALL YES doxyreplace EXTRACT_PACKAGE YES doxyreplace EXTRACT_PRIVATE YES doxyreplace EXTRACT_STATIC YES doxyreplace EXTRACT_LOCAL_CLASSES YES doxyreplace EXTRACT_LOCAL_METHODS YES doxyreplace EXTRACT_ANON_NSPACES YES doxyreplace SHOW_GROUPED_MEMB_INC YES doxyreplace SORT_MEMBERS_CTORS_1ST YES doxyreplace WARN_IF_UNDOCUMENTED NO doxyreplace WARN_LOGFILE doxygen.errors doxyreplace INPUT "@top_srcdir@/src" if testtag AX_USE_SCRIPTS; then doxyadd INPUT "@top_srcdir@/scripts" fi if testtag AX_BUILD_HTML; then doxyadd INPUT "@top_srcdir@/html" fi if testtag AX_BUILD_TEST AX_USE_CPPUNIT; then doxyadd INPUT "@top_srcdir@/test" fi if testtag AX_USE_NODEJS; then doxyadd INPUT "@top_srcdir@/nodejs" doxyadd EXCLUDE "@top_srcdir@/nodejs/node_modules" doxyadd EXCLUDE "@top_srcdir@/nodejs/public/javascripts/ext" fi doxyreplace FILE_PATTERNS '*.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.idl *.ddl *.odl *.h *.hh *.hxx *.hpp *.h++ *.cs *.d *.php *.php4 *.php5 *.phtml *.inc *.m *.markdown *.md *.mm *.dox *.py *.f90 *.f *.for *.tcl *.vhd *.vhdl *.ucf *.qsf *.as *.js *.wt *.sql' doxyreplace RECURSIVE YES doxyreplace EXCLUDE_PATTERNS "moc_* uic_* qrc_* version.[ch]xx" doxyreplace HTML_HEADER header.html doxyreplace HTML_FOOTER footer.html doxyreplace HTML_EXTRA_STYLESHEET style.css doxyreplace HTML_DYNAMIC_SECTIONS YES doxyreplace DISABLE_INDEX NO doxyreplace GENERATE_TREEVIEW YES if testtag AX_BUILD_EXAMPLES; then doxyreplace EXAMPLE_PATH @top_srcdir@/examples fi doxyreplace EXAMPLE_RECURSIVE YES doxyreplace FILTER_PATTERNS '*.wt=doxygen-webtester.sed *.sql=@top_srcdir@/sql-to-dot.sed' doxyreplace SOURCE_BROWSER YES doxyreplace INLINE_SOURCES YES doxyreplace GENERATE_TESTLIST YES doxyreplace SEARCHENGINE NO doxyreplace GENERATE_HTML YES doxyreplace GENERATE_LATEX NO doxyreplace LATEX_BATCHMODE YES doxyreplace LATEX_HIDE_INDICES YES doxyreplace COMPACT_RTF YES doxyreplace RTF_HYPERLINKS YES doxyreplace GENERATE_TAGFILE "@PACKAGE_NAME@.doxytag" doxyreplace HIDE_UNDOC_RELATIONS NO doxyreplace HAVE_DOT YES doxyreplace CLASS_GRAPH YES doxyreplace TEMPLATE_RELATIONS YES doxyreplace DOT_IMAGE_FORMAT svg doxyreplace INTERACTIVE_SVG NO doxyreplace DOT_TRANSPARENT YES fi fi if testtag AX_USE_DEBIAN_PACKAGING; then checkdir debian to debian/changelog.in < 6 || 0%{?rhl} > 6 || 0%{?centos} > 6 || 0%{?fedora} || 0%{?mageia} BuildRequires: rpm-sign %endif %if 0%{?mageia} BuildRequires: gnupg, lsb-release$( if testtag AX_USE_LIBTOOL; then echo -n ", libltdl-devel" fi ) %else BuildRequires: gpg, redhat-lsb$( if testtag AX_USE_LIBTOOL; then echo -n ", libtool-ltdl-devel" fi ) %endif %if ! ( 0%{?centos} || 0%{?centos_ver} || 0%{?centos_version} ) $(if testtag AX_USE_DOXYGEN; then echo -n "BuildRequires: mscgen"; fi) $(if testtag AX_REQUIRE_QT || testtag AX_CHECK_QT AX_REQUIRE_QT; then echo -n "BuildRequires: qt5-qtbase-devel, qt5-qttools, qt5-qtwebkit-devel"; fi) %else $(if testtag AX_REQUIRE_QT || testtag AX_CHECK_QT AX_REQUIRE_QT; then echo -n "BuildRequires: qt-devel"; fi) %endif %else%if 0%{?suse_version} || 0%{?sles_version} BuildRequires: pkg-config, lsb-release$( if testtag AX_USE_CPPUNIT; then echo -n ", libcppunit-devel"; fi) %if 0%{?suse_version} < 1200 || 0%{?sles_version} < 1200 $(if testtag AX_REQUIRE_QT || testtag AX_CHECK_QT AX_REQUIRE_QT; then echo -n "BuildRequires: libqt4-devel, qt4-x11-tools, libQtWebKit-devel"; fi) %else $(if testtag AX_REQUIRE_QT || testtag AX_CHECK_QT AX_REQUIRE_QT; then echo -n "BuildRequires: libqt5-qtbase-devel, libqt5-qttools, libQt5WebKit5-devel"; fi) %endif %endif%endif %description @README@ $(if testtag AX_USE_LIBTOOL; then echo echo This package contains only the shared libraries required at runtime. fi) $(if ! testtag 'AX_USE_LIBTOOL|AX_USE_CXX'; then echo '%global debug_package %{nil}' fi) %prep %setup -q ./configure --prefix=/usr \\ --sysconfdir=/etc \\ --docdir=/usr/share/doc/packages/@PACKAGE_NAME@ \\ --libdir=/usr/%_lib %build make %install DESTDIR=\$RPM_BUILD_ROOT make install %clean rm -rf \$RPM_BUILD_ROOT %files %defattr(-,root,root,-) $(if testtag AX_USE_LIBTOOL; then echo '/usr/%_lib/*.so.*' else echo '/usr/bin/*' echo '/usr/share/applications/*' fi) $(if testtag AX_USE_NODEJS AX_BUILD_HTML AX_BUILD_HTML_NPM; then echo '/usr/share/@PACKAGE_NAME@' fi) %doc $(if testtag AX_USE_LIBTOOL; then cat < ChangeLog";; esac) fi aclocal $(if testtag AX_USE_LIBTOOL; then echo libtoolize --force; fi) automake -a autoconf EOF to makefile.am<