updated build system
This commit is contained in:
159
bootstrap.sh
159
bootstrap.sh
@@ -19,6 +19,7 @@ PROJECT_PATH=$(pwd)
|
||||
DEFAULT_PROJECT_NAME=${PROJECT_PATH##*/}
|
||||
configure=0
|
||||
build=0
|
||||
docker=0
|
||||
buildtarget="distcheck"
|
||||
overwrite=0
|
||||
rebuild=0
|
||||
@@ -26,6 +27,7 @@ rebuildfiles=()
|
||||
while test $# -gt 0; do
|
||||
case "$1" in
|
||||
(--configure|-c) configure=1;;
|
||||
(--docker|-d) docker=1;;
|
||||
(--build|-b) configure=1; build=1;;
|
||||
(--target|-t) shift; configure=1; build=1; buildtarget="$1";;
|
||||
(--overwrite|-o) overwrite=1;;
|
||||
@@ -42,6 +44,7 @@ SYNOPSIS
|
||||
OPTIONS
|
||||
|
||||
--configure, -c call ./configure after initialization
|
||||
--docker, -d build and run tests in a docker instance
|
||||
--build, -b build, also call ./configure && make distcheck
|
||||
--target, -t <target> same as -b, but specify target instead of distcheck
|
||||
--overwrite, -o overwrite all basic files (bootstrap.sh, m4-macros)
|
||||
@@ -105,6 +108,7 @@ GENERATED FILES
|
||||
* ax_check_qt.m4 - auxiliary macro definition file
|
||||
* 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-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
|
||||
* AUTHORS - replace your name in AUTHORS before first run
|
||||
@@ -119,7 +123,7 @@ GENERATED FILES
|
||||
* 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
|
||||
* test/makefile.am - 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
|
||||
@@ -170,7 +174,7 @@ FILE DEPENDENCIES
|
||||
* 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,
|
||||
* debian/control.in depends on AX_USE_DOXYGEN, 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
|
||||
@@ -207,6 +211,7 @@ FILES
|
||||
* Enable Debian packaging by calling "make deb": AX_USE_DEBIAN_PACKAGING
|
||||
* Enable RPM packaging by calling "make rpm": AX_USE_RPM_PACKAGING
|
||||
* Enable C++ testing using CppUnit: AX_USE_CPPUNIT
|
||||
* Enable other tests: AX_BUILD_TEST
|
||||
* 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)
|
||||
* Require a QT module: AX_REQUIRE_QT (see ax_check_qt.m4)
|
||||
@@ -240,15 +245,29 @@ done
|
||||
|
||||
|
||||
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
|
||||
#
|
||||
##
|
||||
## 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"
|
||||
}
|
||||
@@ -390,6 +409,7 @@ copy ax_cxx_compile_stdcxx_11.m4
|
||||
copy ax_check_qt.m4
|
||||
copy resolve-debbuilddeps.sh
|
||||
copy resolve-rpmbuilddeps.sh
|
||||
copy build-in-docker.sh
|
||||
copy build-resource-file.sh
|
||||
copy mac-create-app-bundle.sh
|
||||
AUTHOR=$(gpg -K | sed -n 's,uid *,,p' | sort | head -1)
|
||||
@@ -425,6 +445,7 @@ AX_INIT_STANDARD_PROJECT
|
||||
#AX_USE_DEBIAN_PACKAGING
|
||||
#AX_USE_RPM_PACKAGING
|
||||
#AX_USE_CPPUNIT
|
||||
#AX_BUILD_TEST
|
||||
#AX_BUILD_EXAMPLES
|
||||
#AX_BUILD_HTML
|
||||
|
||||
@@ -436,12 +457,19 @@ AX_INIT_STANDARD_PROJECT
|
||||
# create output
|
||||
AC_OUTPUT
|
||||
EOF
|
||||
|
||||
PACKAGE_NAME=$(sed -n 's/.*m4_define *( *x_package_name *, *\([^ ]*\) *).*/\1/p' configure.ac)
|
||||
if ! testtag "AX_CHECK_QT" configure.ac && \
|
||||
! testtag "AX_REQUIRE_QT" configure.ac; then
|
||||
SAVEIFS="$IFS"
|
||||
IFS="-" PackageName=( $PACKAGE_NAME )
|
||||
IFS="$SAVEIFS"
|
||||
PackageName=${PackageName[*]^}
|
||||
PackageName=${PackageName// /}
|
||||
|
||||
if ! testtag AX_CHECK_QT && \
|
||||
! testtag AX_REQUIRE_QT; then
|
||||
echo "${HEADER}MAINTAINERCLEANFILES = makefile.in" | \
|
||||
to --condition AX_USE_CXX src/makefile.am
|
||||
else
|
||||
elif ! test -e src/makefile.am; then
|
||||
to --condition AX_USE_CXX src/makefile.am <<EOF
|
||||
${HEADER}bin_PROGRAMS = ${PACKAGE_NAME}
|
||||
|
||||
@@ -475,7 +503,7 @@ ${PACKAGE_NAME//-/_}_UIFILES = ui_${PACKAGE_NAME}.hxx
|
||||
|
||||
## list all %.qrc resource files as qrc_%.cxx
|
||||
## note: if there exists a directory %, the file %.qrc is generated from that
|
||||
${PACKAGE_NAME//-/_}_RESOURCES = qrc_languages.cxx qrc_resources.cxx
|
||||
${PACKAGE_NAME//-/_}_RESOURCES = qrc_languages.cxx # qrc_resources.cxx
|
||||
|
||||
## list all final translation files, list all supported languages here
|
||||
${PACKAGE_NAME//-/_}_TRANSLATIONS = \${LANGUAGE_FILE_BASE}_en.qm \\
|
||||
@@ -487,7 +515,7 @@ ${PACKAGE_NAME//-/_}_TRANSLATIONS = \${LANGUAGE_FILE_BASE}_en.qm \\
|
||||
${PACKAGE_NAME//-/_}_TR_FILES = main.cxx version.cxx
|
||||
|
||||
## automatic assembly, no need to change
|
||||
${PACKAGE_NAME//-/_}_SOURCES = ${swisssign_pin_entry_TR_FILES} ${BUILT_SOURCES}
|
||||
${PACKAGE_NAME//-/_}_SOURCES = \${${PACKAGE_NAME//-/_}_TR_FILES} \${BUILT_SOURCES}
|
||||
|
||||
## automatic assembly, no need to change
|
||||
BUILT_SOURCES = \${${PACKAGE_NAME//-/_}_MOCFILES} \
|
||||
@@ -510,6 +538,89 @@ EXTRA_DIST = \${EXTRA_DIST_TR} \
|
||||
LANGUAGE_FILES = \${EXTRA_DIST_TR} \${${PACKAGE_NAME//-/_}_TR_FILES}
|
||||
|
||||
MAINTAINERCLEANFILES = makefile.in
|
||||
EOF
|
||||
to --condition AX_USE_CXX src/main.cxx <<EOF
|
||||
${CHEADER}#include <${PACKAGE_NAME}.hxx>
|
||||
#include <QApplication>
|
||||
#include <QCommandLineParser>
|
||||
#include <iostream>
|
||||
|
||||
int main(int argc, char *argv[]) try {
|
||||
QApplication a(argc, argv);
|
||||
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: "<<x.what()<<std::endl;
|
||||
return 1;
|
||||
}
|
||||
EOF
|
||||
to --condition AX_USE_CXX src/${PACKAGE_NAME}.hxx <<EOF
|
||||
${CHEADER}#ifndef ${PackageName^^}_HXX
|
||||
#define ${PackageName^^}_HXX
|
||||
|
||||
#include <QMainWindow>
|
||||
#include <ui_${PACKAGE_NAME}.hxx>
|
||||
|
||||
/// Main Window
|
||||
/** Main window for ${PACKAGE_NAME} */
|
||||
class ${PackageName}: public QMainWindow, protected Ui::${PackageName} {
|
||||
Q_OBJECT;
|
||||
public:
|
||||
explicit ${PackageName}(QWidget *parent = 0): QMainWindow(parent) {
|
||||
setupUi(this);
|
||||
}
|
||||
virtual ~${PackageName}() {}
|
||||
};
|
||||
|
||||
#endif
|
||||
EOF
|
||||
to --condition AX_USE_CXX src/${PACKAGE_NAME}.ui <<EOF
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>${PackageName}</class>
|
||||
<widget class="QMainWindow" name="${PackageName}">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>800</width>
|
||||
<height>600</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>${PackageName}</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralwidget"/>
|
||||
<widget class="QMenuBar" name="menubar">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>800</width>
|
||||
<height>22</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QStatusBar" name="statusbar"/>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
EOF
|
||||
to --condition AX_USE_CXX src/languages.qrc <<EOF
|
||||
<RCC>
|
||||
<qresource prefix="/language">
|
||||
<file>${PACKAGE_NAME}_de.qm</file>
|
||||
<file>${PACKAGE_NAME}_fr.qm</file>
|
||||
<file>${PACKAGE_NAME}_it.qm</file>
|
||||
<file>${PACKAGE_NAME}_en.qm</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
EOF
|
||||
fi
|
||||
to --condition AX_USE_CXX src/version.hxx <<EOF
|
||||
@@ -591,10 +702,20 @@ namespace NAMESPACE {
|
||||
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 <<EOF
|
||||
${HEADER}AM_CPPFLAGS = -I\${top_srcdir}/src -I\${top_builddir}/src
|
||||
to --condition 'AX_BUILD_TEST|AX_USE_CPPUNIT' test/makefile.am <<EOF
|
||||
${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
|
||||
$(if testtag AX_USE_LIBTOOL; then
|
||||
cat <<EOF3
|
||||
LDADD = -l${PACKAGE_NAME#lib}
|
||||
EOF3
|
||||
fi)
|
||||
EOF2
|
||||
fi)
|
||||
|
||||
TESTS =
|
||||
|
||||
MAINTAINERCLEANFILES = makefile.in
|
||||
EOF
|
||||
@@ -657,7 +778,7 @@ if testtag AX_USE_DOXYGEN; then
|
||||
if testtag AX_BUILD_HTML; then
|
||||
doxyadd INPUT "@top_srcdir@/html"
|
||||
fi
|
||||
if testtag AX_USE_CPPUNIT; then
|
||||
if testtag AX_BUILD_TEST AX_USE_CPPUNIT; then
|
||||
doxyadd INPUT "@top_srcdir@/test"
|
||||
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'
|
||||
@@ -698,11 +819,12 @@ if testtag AX_USE_DEBIAN_PACKAGING; then
|
||||
|
||||
-- @AUTHOR@ @BUILD_DATE@
|
||||
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
|
||||
Source: @PACKAGE_NAME@
|
||||
Priority: extra
|
||||
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@
|
||||
Section: $(if testtag AX_USE_LIBTOOL; then echo "libs"; fi)
|
||||
@@ -716,7 +838,7 @@ $( if testtag AX_USE_LIBTOOL; then
|
||||
Package: @PACKAGE_NAME@-dev
|
||||
Section: libdevel
|
||||
Architecture: any
|
||||
Depends: @PACKAGE_NAME@ (= \${binary:Version})
|
||||
Depends: @PACKAGE_NAME@ (= \${binary:Version}), ${BUILD-DEPENDS}
|
||||
Description: @DESCRIPTION@ - Development Package
|
||||
@README_DEB@
|
||||
EOF2
|
||||
@@ -907,3 +1029,8 @@ fi
|
||||
if test "$build" -eq 1; then
|
||||
make $buildtarget
|
||||
fi
|
||||
|
||||
#### Build In Docker If User Requires ####
|
||||
if test "$docker" -eq 1; then
|
||||
./build-in-docker.sh
|
||||
fi
|
||||
|
Reference in New Issue
Block a user