updated build system
This commit is contained in:
		| @@ -265,14 +265,8 @@ maintainer-clean-cxx-targets: | |||||||
| EOF | EOF | ||||||
| ]) | ]) | ||||||
|  |  | ||||||
| # use this in configure.ac to support CppUnit for C++ unit tests | # use this in configure.ac to support tests without CppUnit | ||||||
| AC_DEFUN([AX_USE_CPPUNIT], [ | AC_DEFUN([AX_BUILD_TEST], [ | ||||||
|   AM_PATH_CPPUNIT([1.0.0], [have_cppunit="yes"], [have_cppunit="no"]) |  | ||||||
|   # infos and warnings |  | ||||||
|   if test "$have_cppunit" = "no"; then |  | ||||||
|     AC_MSG_WARN([Missing cppunit development library! |  | ||||||
|      - you cannot check the library using "make check" |  | ||||||
|      - everything else works perfectly]); fi |  | ||||||
|   AC_CONFIG_FILES([test/makefile]) |   AC_CONFIG_FILES([test/makefile]) | ||||||
|   AX_ADD_MAKEFILE_TARGET_DEP([maintainer-clean-am], [maintainer-clean-test-targets], [test/makefile.in]) |   AX_ADD_MAKEFILE_TARGET_DEP([maintainer-clean-am], [maintainer-clean-test-targets], [test/makefile.in]) | ||||||
|   test -f test/makefile.in && cat >> test/makefile.in <<EOF |   test -f test/makefile.in && cat >> test/makefile.in <<EOF | ||||||
| @@ -283,6 +277,17 @@ maintainer-clean-test-targets: | |||||||
| EOF | EOF | ||||||
| ]) | ]) | ||||||
|  |  | ||||||
|  | # use this in configure.ac to support CppUnit for C++ unit tests | ||||||
|  | AC_DEFUN([AX_USE_CPPUNIT], [ | ||||||
|  |   AM_PATH_CPPUNIT([1.0.0], [have_cppunit="yes"], [have_cppunit="no"]) | ||||||
|  |   # infos and warnings | ||||||
|  |   if test "$have_cppunit" = "no"; then | ||||||
|  |     AC_MSG_WARN([Missing cppunit development library! | ||||||
|  |      - you cannot check the project using "make check" | ||||||
|  |      - everything else works perfectly]); fi | ||||||
|  |   AX_BUILD_TEST | ||||||
|  | ]) | ||||||
|  |  | ||||||
| # use this in configure.ac to support C++ examples | # use this in configure.ac to support C++ examples | ||||||
| AC_DEFUN([AX_BUILD_EXAMPLES], [ | AC_DEFUN([AX_BUILD_EXAMPLES], [ | ||||||
|   AC_CONFIG_FILES([examples/makefile]) |   AC_CONFIG_FILES([examples/makefile]) | ||||||
|   | |||||||
							
								
								
									
										41
									
								
								bootstrap.sh
									
									
									
									
									
								
							
							
						
						
									
										41
									
								
								bootstrap.sh
									
									
									
									
									
								
							| @@ -19,6 +19,7 @@ PROJECT_PATH=$(pwd) | |||||||
| DEFAULT_PROJECT_NAME=${PROJECT_PATH##*/} | DEFAULT_PROJECT_NAME=${PROJECT_PATH##*/} | ||||||
| configure=0 | configure=0 | ||||||
| build=0 | build=0 | ||||||
|  | docker=0 | ||||||
| buildtarget="distcheck" | buildtarget="distcheck" | ||||||
| overwrite=0 | overwrite=0 | ||||||
| rebuild=0 | rebuild=0 | ||||||
| @@ -26,6 +27,7 @@ rebuildfiles=() | |||||||
| while test $# -gt 0; do | while test $# -gt 0; do | ||||||
|     case "$1" in |     case "$1" in | ||||||
|         (--configure|-c) configure=1;; |         (--configure|-c) configure=1;; | ||||||
|  |         (--docker|-d) docker=1;; | ||||||
|         (--build|-b) configure=1; build=1;; |         (--build|-b) configure=1; build=1;; | ||||||
|         (--target|-t) shift; configure=1; build=1; buildtarget="$1";; |         (--target|-t) shift; configure=1; build=1; buildtarget="$1";; | ||||||
|         (--overwrite|-o) overwrite=1;; |         (--overwrite|-o) overwrite=1;; | ||||||
| @@ -42,6 +44,7 @@ SYNOPSIS | |||||||
| OPTIONS | OPTIONS | ||||||
|  |  | ||||||
|   --configure, -c            call ./configure after initialization |   --configure, -c            call ./configure after initialization | ||||||
|  |   --docker, -d               build and run tests in a docker instance | ||||||
|   --build, -b                build, also call ./configure && make distcheck |   --build, -b                build, also call ./configure && make distcheck | ||||||
|   --target, -t <target>      same as -b, but specify target instead of distcheck |   --target, -t <target>      same as -b, but specify target instead of distcheck | ||||||
|   --overwrite, -o            overwrite all basic files (bootstrap.sh, m4-macros) |   --overwrite, -o            overwrite all basic files (bootstrap.sh, m4-macros) | ||||||
| @@ -105,6 +108,7 @@ GENERATED FILES | |||||||
|     * ax_check_qt.m4 - auxiliary macro definition file |     * ax_check_qt.m4 - auxiliary macro definition file | ||||||
|     * resolve-debbuilddeps.sh - script to install debian package dependencies |     * resolve-debbuilddeps.sh - script to install debian package dependencies | ||||||
|     * resolve-rpmbuilddeps.sh - script to install RPM 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-resource-file.sh - build resource.qrc file from a resource directory |     * build-resource-file.sh - build resource.qrc file from a resource directory | ||||||
|     * mac-create-app-bundle.sh - script to create apple mac os-x app-bundle |     * mac-create-app-bundle.sh - script to create apple mac os-x app-bundle | ||||||
|     * AUTHORS - replace your name in AUTHORS before first run |     * AUTHORS - replace your name in AUTHORS before first run | ||||||
| @@ -119,7 +123,7 @@ GENERATED FILES | |||||||
|     * scripts/makefile.in - if you enabled AX_USE_SCRIPTS |     * scripts/makefile.in - if you enabled AX_USE_SCRIPTS | ||||||
|     * doc/makefile.am - if you enabled AX_USE_DOXYGEN |     * doc/makefile.am - if you enabled AX_USE_DOXYGEN | ||||||
|     * doc/doxyfile.in - if you enabled AX_USE_DOXYGEN |     * doc/doxyfile.in - if you enabled AX_USE_DOXYGEN | ||||||
|     * test/makefile.am - if you enabled AX_USE_CPPUNIT |     * test/makefile.am - if you enabled AX_BUILD_TEST or AX_USE_CPPUNIT | ||||||
|     * examples/makefile.am - if you enabled AX_BUILD_EXAMPLES |     * examples/makefile.am - if you enabled AX_BUILD_EXAMPLES | ||||||
|     * debian/changelog.in - if you enabled AX_USE_DEBIAN_PACKAGING |     * debian/changelog.in - if you enabled AX_USE_DEBIAN_PACKAGING | ||||||
|     * debian/control.in - if you enabled AX_USE_DEBIAN_PACKAGING |     * debian/control.in - if you enabled AX_USE_DEBIAN_PACKAGING | ||||||
| @@ -170,7 +174,7 @@ FILE DEPENDENCIES | |||||||
|     * test/makefile.am depends on AX_USE_LIBTOOL |     * test/makefile.am depends on AX_USE_LIBTOOL | ||||||
|     * html/makefile.am depends on AX_BUILD_HTML |     * html/makefile.am depends on AX_BUILD_HTML | ||||||
|     * doc/doxyfile.in depends on AX_BUILD_EXAMPLES |     * doc/doxyfile.in depends on AX_BUILD_EXAMPLES | ||||||
|     * debian/control.in depends on AX_USE_DOXYGEN, AX_USE_CPPUNIT, |     * debian/control.in depends on AX_USE_DOXYGEN, AX_USE_CPPUNIT | ||||||
|       AX_CXX_QT, AX_CHECK_QT, AX_REQUIRE_QT, AX_USE_LIBTOOL |       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}.install depends on AX_USE_LIBTOOL | ||||||
|     * debian/${DEFAULT_PROJECT_NAME}.dirs depends on AX_USE_LIBTOOL |     * debian/${DEFAULT_PROJECT_NAME}.dirs depends on AX_USE_LIBTOOL | ||||||
| @@ -207,6 +211,7 @@ FILES | |||||||
|       * Enable Debian packaging by calling "make deb": AX_USE_DEBIAN_PACKAGING |       * Enable Debian packaging by calling "make deb": AX_USE_DEBIAN_PACKAGING | ||||||
|       * Enable RPM packaging by calling "make rpm": AX_USE_RPM_PACKAGING |       * Enable RPM packaging by calling "make rpm": AX_USE_RPM_PACKAGING | ||||||
|       * Enable C++ testing using CppUnit: AX_USE_CPPUNIT |       * Enable C++ testing using CppUnit: AX_USE_CPPUNIT | ||||||
|  |       * Enable other tests: AX_BUILD_TEST | ||||||
|       * Enable C++ examples, i.e. for libraries: AX_BUILD_EXAMPLES |       * Enable C++ examples, i.e. for libraries: AX_BUILD_EXAMPLES | ||||||
|       * Check for C++11 support: AX_CXX_COMPILE_STDCXX_11 (see ax_cxx_compile_stdcxx_11.m4) |       * Check for C++11 support: AX_CXX_COMPILE_STDCXX_11 (see ax_cxx_compile_stdcxx_11.m4) | ||||||
|       * Require a QT module: AX_REQUIRE_QT (see ax_check_qt.m4) |       * Require a QT module: AX_REQUIRE_QT (see ax_check_qt.m4) | ||||||
| @@ -404,6 +409,7 @@ copy ax_cxx_compile_stdcxx_11.m4 | |||||||
| copy ax_check_qt.m4 | copy ax_check_qt.m4 | ||||||
| copy resolve-debbuilddeps.sh | copy resolve-debbuilddeps.sh | ||||||
| copy resolve-rpmbuilddeps.sh | copy resolve-rpmbuilddeps.sh | ||||||
|  | copy build-in-docker.sh | ||||||
| copy build-resource-file.sh | copy build-resource-file.sh | ||||||
| copy mac-create-app-bundle.sh | copy mac-create-app-bundle.sh | ||||||
| AUTHOR=$(gpg -K  | sed -n 's,uid *,,p' | sort | head -1) | AUTHOR=$(gpg -K  | sed -n 's,uid *,,p' | sort | head -1) | ||||||
| @@ -439,6 +445,7 @@ AX_INIT_STANDARD_PROJECT | |||||||
| #AX_USE_DEBIAN_PACKAGING | #AX_USE_DEBIAN_PACKAGING | ||||||
| #AX_USE_RPM_PACKAGING | #AX_USE_RPM_PACKAGING | ||||||
| #AX_USE_CPPUNIT | #AX_USE_CPPUNIT | ||||||
|  | #AX_BUILD_TEST | ||||||
| #AX_BUILD_EXAMPLES | #AX_BUILD_EXAMPLES | ||||||
| #AX_BUILD_HTML | #AX_BUILD_HTML | ||||||
|  |  | ||||||
| @@ -458,8 +465,8 @@ IFS="$SAVEIFS" | |||||||
| PackageName=${PackageName[*]^} | PackageName=${PackageName[*]^} | ||||||
| PackageName=${PackageName// /} | PackageName=${PackageName// /} | ||||||
|  |  | ||||||
| if ! testtag "AX_CHECK_QT" configure.ac && \ | if ! testtag AX_CHECK_QT && \ | ||||||
|    ! testtag "AX_REQUIRE_QT" configure.ac; then |    ! testtag AX_REQUIRE_QT; then | ||||||
|     echo "${HEADER}MAINTAINERCLEANFILES = makefile.in" | \ |     echo "${HEADER}MAINTAINERCLEANFILES = makefile.in" | \ | ||||||
|         to --condition AX_USE_CXX src/makefile.am |         to --condition AX_USE_CXX src/makefile.am | ||||||
| elif ! test -e src/makefile.am; then | elif ! test -e src/makefile.am; then | ||||||
| @@ -695,10 +702,20 @@ namespace NAMESPACE { | |||||||
| EOF | EOF | ||||||
| echo "${HEADER}MAINTAINERCLEANFILES = makefile.in" | to --condition AX_USE_SCRIPTS scripts/makefile.am | 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 | echo "${HEADER}MAINTAINERCLEANFILES = makefile.in" | to --condition AX_USE_DOXYGEN doc/makefile.am | ||||||
| to --condition AX_USE_CPPUNIT test/makefile.am <<EOF | to --condition 'AX_BUILD_TEST|AX_USE_CPPUNIT' test/makefile.am <<EOF | ||||||
| ${HEADER}AM_CPPFLAGS = -I\${top_srcdir}/src -I\${top_builddir}/src | ${HEADER}$(if testtag AX_USE_CXX; then | ||||||
|  | cat <<EOF2 | ||||||
|  | AM_CPPFLAGS = -I\${top_srcdir}/src -I\${top_builddir}/src | ||||||
| AM_LDFLAGS = -L\${abs_top_builddir}/src/.libs | AM_LDFLAGS = -L\${abs_top_builddir}/src/.libs | ||||||
|  | $(if testtag AX_USE_LIBTOOL; then | ||||||
|  | cat <<EOF3 | ||||||
| LDADD = -l${PACKAGE_NAME#lib} | LDADD = -l${PACKAGE_NAME#lib} | ||||||
|  | EOF3 | ||||||
|  | fi) | ||||||
|  | EOF2 | ||||||
|  | fi) | ||||||
|  |  | ||||||
|  | TESTS = | ||||||
|  |  | ||||||
| MAINTAINERCLEANFILES = makefile.in | MAINTAINERCLEANFILES = makefile.in | ||||||
| EOF | EOF | ||||||
| @@ -761,7 +778,7 @@ if testtag AX_USE_DOXYGEN; then | |||||||
|         if testtag AX_BUILD_HTML; then |         if testtag AX_BUILD_HTML; then | ||||||
|             doxyadd INPUT "@top_srcdir@/html" |             doxyadd INPUT "@top_srcdir@/html" | ||||||
|         fi |         fi | ||||||
|         if testtag AX_USE_CPPUNIT; then |         if testtag AX_BUILD_TEST AX_USE_CPPUNIT; then | ||||||
|             doxyadd INPUT "@top_srcdir@/test" |             doxyadd INPUT "@top_srcdir@/test" | ||||||
|         fi |         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' |         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' | ||||||
| @@ -802,11 +819,12 @@ if testtag AX_USE_DEBIAN_PACKAGING; then | |||||||
|  |  | ||||||
|  -- @AUTHOR@  @BUILD_DATE@ |  -- @AUTHOR@  @BUILD_DATE@ | ||||||
| EOF | EOF | ||||||
|  |     BUILD_DEPENDS="debhelper, subversion, svn2cl, pkg-config, automake, libtool, autotools-dev, lsb-release $(if testtag AX_USE_DOXYGEN; then echo -n ", doxygen, graphviz, mscgen"; fi; if testtag AX_USE_CPPUNIT; then echo -n ", libcppunit-dev"; fi; if testtag AX_CXX_QT || testtag AX_CHECK_QT AX_REQUIRE_QT; then echo -n ", qt5-default | qt4-default | qt5-qmake | qt4-qmake, qtbase5-dev | libqt4-dev, qtbase5-dev-tools | qt4-dev-tools, qttools5-dev-tools | qt4-dev-tools, qttools5-dev-tools | qt4-dev-tools"; fi)" | ||||||
|     to debian/control.in <<EOF |     to debian/control.in <<EOF | ||||||
| Source: @PACKAGE_NAME@ | Source: @PACKAGE_NAME@ | ||||||
| Priority: extra | Priority: extra | ||||||
| Maintainer: @AUTHOR@ | Maintainer: @AUTHOR@ | ||||||
| Build-Depends: debhelper, subversion, pkg-config, autotools-dev, lsb-release $(if testtag AX_USE_DOXYGEN; then echo -n ", doxygen, graphviz, mscgen"; fi; if testtag AX_USE_CPPUNIT; then echo -n ", libcppunit-dev"; fi; if testtag AX_CXX_QT || testtag AX_CHECK_QT AX_REQUIRE_QT; then echo -n ", qt5-default | qt4-default | qt5-qmake | qt4-qmake, qtbase5-dev | libqt4-dev, qtbase5-dev-tools | qt4-dev-tools, qttools5-dev-tools | qt4-dev-tools, qttools5-dev-tools | qt4-dev-tools"; fi) | Build-Depends: ${BUILD-DEPENDS} | ||||||
|  |  | ||||||
| Package: @PACKAGE_NAME@ | Package: @PACKAGE_NAME@ | ||||||
| Section: $(if testtag AX_USE_LIBTOOL; then echo  "libs"; fi) | Section: $(if testtag AX_USE_LIBTOOL; then echo  "libs"; fi) | ||||||
| @@ -820,7 +838,7 @@ $(      if testtag AX_USE_LIBTOOL; then | |||||||
| Package: @PACKAGE_NAME@-dev | Package: @PACKAGE_NAME@-dev | ||||||
| Section: libdevel | Section: libdevel | ||||||
| Architecture: any | Architecture: any | ||||||
| Depends: @PACKAGE_NAME@ (= \${binary:Version}) | Depends: @PACKAGE_NAME@ (= \${binary:Version}), ${BUILD-DEPENDS} | ||||||
| Description: @DESCRIPTION@ - Development Package | Description: @DESCRIPTION@ - Development Package | ||||||
| @README_DEB@ | @README_DEB@ | ||||||
| EOF2 | EOF2 | ||||||
| @@ -1011,3 +1029,8 @@ fi | |||||||
| if test "$build" -eq 1; then | if test "$build" -eq 1; then | ||||||
|     make $buildtarget |     make $buildtarget | ||||||
| fi | fi | ||||||
|  |  | ||||||
|  | #### Build In Docker If User Requires #### | ||||||
|  | if test "$docker" -eq 1; then | ||||||
|  |     ./build-in-docker.sh | ||||||
|  | fi | ||||||
|   | |||||||
							
								
								
									
										15
									
								
								build-in-docker.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										15
									
								
								build-in-docker.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | #! /bin/bash -ex | ||||||
|  |  | ||||||
|  | # build and test everything in a fresh docker installation | ||||||
|  |  | ||||||
|  | DOCKER_ID=$(docker run -d -v $(pwd):/workdir -w /workdir ubuntu sleep infinity) | ||||||
|  | trap "docker rm -f ${DOCKER_ID}" INT TERM EXIT | ||||||
|  | docker exec ${DOCKER_ID} apt-get install -y software-properties-common apt-transport-https dpkg-dev | ||||||
|  | docker exec ${DOCKER_ID} apt-add-repository universe | ||||||
|  | docker exec ${DOCKER_ID} apt-add-repository https://dev.marc.waeckerlin.org/repository | ||||||
|  | wget -O- https://dev.marc.waeckerlin.org/repository/PublicKey \ | ||||||
|  |    | docker exec -i ${DOCKER_ID} apt-key add - | ||||||
|  | docker exec ${DOCKER_ID} apt-get update | ||||||
|  | docker exec ${DOCKER_ID} ./resolve-debbuilddeps.sh | ||||||
|  | docker exec -u $(id -u) ${DOCKER_ID} svn upgrade || true | ||||||
|  | docker exec -u $(id -u) ${DOCKER_ID} ./bootstrap.sh -t "all check distcheck" | ||||||
| @@ -22,6 +22,7 @@ function install() { | |||||||
|             return 0 |             return 0 | ||||||
|         fi |         fi | ||||||
|     fi |     fi | ||||||
|  |     return 1 | ||||||
| } | } | ||||||
|  |  | ||||||
| TO_INSTALL= | TO_INSTALL= | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user