Files
webtester/bootstrap.sh

670 lines
22 KiB
Bash
Raw Normal View History

2015-05-05 08:30:58 +00:00
#! /bin/bash
2015-02-06 15:00:37 +00:00
## @file
##
2015-05-05 08:30:58 +00:00
## $Id$
2015-02-06 15:00:37 +00:00
##
## $Date: 2004/08/31 15:57:19 $
## $Author: marc $
##
## @copy © Marc Wäckerlin
## @license LGPL, see file <a href="license.html">COPYING</a>
##
## $Log: bootstrap.sh,v $
## Revision 1.3 2004/08/31 15:57:19 marc
## added file header
##
2015-05-05 15:06:08 +00:00
MY_NAME=${0##*/}
PROJECT_PATH=$(pwd)
DEFAULT_PROJECT_NAME=${PROJECT_PATH##*/}
2015-05-05 08:30:58 +00:00
configure=0
build=0
overwrite=0
rebuild=0
2015-05-09 12:27:03 +00:00
rebuildfiles=()
2015-05-05 08:30:58 +00:00
while test $# -gt 0; do
case "$1" in
(--configure|-c) configure=1;;
(--build|-b) configure=1; build=1;;
(--overwrite|-o) overwrite=1;;
(--rebuild|-r) rebuild=1;;
2015-05-09 12:27:03 +00:00
(--rebuild-file|-f) shift; rebuildfiles+=("$1");;
(--version|-v)
echo "$Id$";
exit;;
2015-05-05 15:06:08 +00:00
(--help|-h) less <<EOF
SYNOPSIS
2015-05-09 12:27:03 +00:00
${MY_NAME} [--help|-h] [OPTIOS]
2015-05-05 15:06:08 +00:00
OPTIONS
2015-05-09 12:27:03 +00:00
--configure, -c call ./configure after initialization
--build, -c build, also call ./configure && make
--overwrite, -o overwrite all basic files (bootstrap.sh, m4-macros)
--rebuild, -r force rebuild of generated files, even if modified
--rebuild-file, -f <file> rebild specific file (can be added multiple times)
--help, -h show this help
--version, -v show version and date of this file
2015-05-05 15:06:08 +00:00
DESCRIPTION
2015-05-05 20:31:56 +00:00
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:
2015-05-05 15:06:08 +00:00
cd ~/svn
2015-05-05 20:31:56 +00:00
svn co https://dev.marc.waeckerlin.org/svn/bootstrap-build-environment/trunk \\
bootstrap-build-environment
2015-05-05 15:06:08 +00:00
svn co svn:/path/to/your/new-project/trunk new-project
cd new-project
../bootstrap-build-environment/bootstrap.sh
RUNNING
2015-05-05 20:31:56 +00:00
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.
2015-05-05 15:06:08 +00:00
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
2015-05-05 15:06:08 +00:00
* 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
2015-05-05 20:31:56 +00:00
* 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
2015-05-05 15:06:08 +00:00
* 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
2015-05-09 12:27:03 +00:00
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 <file>" to rebuild file
"<file>". You can add option "-f" more than once.
2015-05-05 15:06:08 +00:00
FILES TO EDIT
2015-05-05 20:31:56 +00:00
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.
2015-05-05 15:06:08 +00:00
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.:
2015-05-05 15:06:08 +00:00
* test/makefile.am depends on AX_USE_LIBTOOL
* doc/doxyfile.in depends on AX_BUILD_EXAMPLES
2015-05-05 20:31:56 +00:00
* debian/control.in depends on AX_USE_DOXYGEN, AX_USE_CPPUNIT,
AX_CXX_QT, AX_CXX_CHECK_QT, AX_USE_LIBTOOL
2015-05-05 15:06:08 +00:00
* 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
2015-05-05 20:31:56 +00:00
* 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++
<ou can access the readme by calling
${DEFAULT_PROJECT_NAME}::description().
* ChangeLog: Your changelog is automatically maintained from
subversion history, using svn2cl. You don't need to
care about.
* configure.ac: This file becomes very short and simple. You provide
the project name, the major and minor version. The
least version number is automatically taken from
subversion's revision, so every checkin
automatically increments the least version
number. The following macros are supported:
* Enable C++: AX_USE_CXX
* Enable LibTool library creation: AX_USE_LIBTOOL
* Enable Scripts: AX_USE_SCRIPTS
2015-05-05 20:31:56 +00:00
* Enable Doxygen documentation generation: AX_USE_DOXYGEN
* Enable Debian packaging by calling "make deb": AX_USE_DEBIAN_PACKAGING
2015-05-05 20:31:56 +00:00
* Not yet implemented: AX_USE_RPM_PACKAGING
* Enable C++ testing using CppUnit: AX_USE_CPPUNIT
* 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)
* Optionally use a QT module: AX_CHECK_QT (see ax_check_qt.m4)
* Require a module: AX_PKG_REQUIRE (see ax_init_standard_project.m4)
* Check for an optional module: AX_PKG_CHECK (see ax_init_standard_project.m4)
2015-05-05 15:06:08 +00:00
EXAMPLES: src/makefile.am in a QT project
In this example, you wrote the following files:
* ${DEFAULT_PROJECT_NAME}.hxx - Qt Header file, passed to moc
* ${DEFAULT_PROJECT_NAME}.cxx - C++ file containing main()
* ${DEFAULT_PROJECT_NAME}.ui - UI file
2015-05-05 20:31:56 +00:00
All rules are implicitely added, all you need to do is to add the
following definitions, most lines are generic:
2015-05-05 15:06:08 +00:00
bin_PROGRAMS = ${DEFAULT_PROJECT_NAME}
${DEFAULT_PROJECT_NAME}_MOCFILES = moc_${DEFAULT_PROJECT_NAME}.cxx
${DEFAULT_PROJECT_NAME}_UIFILES = ui_${DEFAULT_PROJECT_NAME}.hxx
${DEFAULT_PROJECT_NAME}_SOURCES = version.cxx version.hxx ${DEFAULT_PROJECT_NAME}.cxx ${DEFAULT_PROJECT_NAME}_MOCFILES ${DEFAULT_PROJECT_NAME}_UIFILES
BUILT_SOURCES = \${${DEFAULT_PROJECT_NAME}_MOCFILES} \${${DEFAULT_PROJECT_NAME}_UIFILES}
EXTRA_DIST = \${${DEFAULT_PROJECT_NAME}_MOCFILES:moc_%.cxx=%.hxx} \${${DEFAULT_PROJECT_NAME}_UIFILES:ui_%.hxx=%.ui}
MAINTAINERCLEANFILES = makefile.in
EOF
exit;;
2015-05-05 08:30:58 +00:00
(*) break;;
esac
shift;
done
HEADER='## @id '"\$Id\$"'
2015-05-05 08:30:58 +00:00
#
2015-05-09 12:27:03 +00:00
# This file has been added by '${MY_NAME}' on '$(LANG= date +"%a, %d %B %Y %H:%M:%S %z")'
2015-05-05 08:30:58 +00:00
# Feel free to change it or even remove and rebuild it, up to your needs
#
## 1 2 3 4 5 6 7 8
## 45678901234567890123456789012345678901234567890123456789012345678901234567890
'
2015-05-09 12:27:03 +00:00
notice() {
echo -e "\e[1;33m$*\e[0m"
}
2015-05-05 08:30:58 +00:00
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() {
egrep -q '^ *'"$1" configure.ac
}
2015-05-09 12:27:03 +00:00
contains() {
local e
for e in "${@:2}"; do [[ "$e" == "$1" ]] && return 0; done
return 1
}
2015-05-05 08:30:58 +00:00
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
}
2015-05-05 08:30:58 +00:00
to() {
while test $# -gt 0; do
2015-05-05 20:31:56 +00:00
mode="u=rw,g=rw,o=r"
2015-05-05 08:30:58 +00:00
case "$1" in
(--condition) shift # test for a tag, abort if not set
if ! testtag "$1" configure.ac; then
return
fi;;
2015-05-05 20:31:56 +00:00
(--mode) shift # test for a tag, abort if not set
mode="$1";;
2015-05-05 08:30:58 +00:00
(*) break;;
esac
shift;
done
2015-05-09 12:27:03 +00:00
if checkfile "$1" && test $rebuild -eq 0 \
&& ! contains "$1" "${rebuildfiles[@]}"; then
# file already exists and must not be rebuilt
return 1
2015-05-05 08:30:58 +00:00
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
2015-05-05 20:31:56 +00:00
chmod $mode $1
if test $exists -eq 0; then
run svn add "$1"
run svn propset svn:keywords "Id" "$1"
fi
2015-05-09 12:27:03 +00:00
return 0
2015-05-05 08:30:58 +00:00
}
copy() {
2015-05-09 12:27:03 +00:00
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
2015-05-05 08:30:58 +00:00
run svn add "$1"
run svn propset svn:keywords "Id" "$1"
fi
}
doxyreplace() {
echo -en "\e[1m-> doxyfile:\e[0m configure $1 ..."
2015-05-06 23:09:49 +00:00
if sed -i 's|\(^'"$1"' *=\) *.*|\1'" $2"'|g' doc/doxyfile.in; then
2015-05-05 08:30:58 +00:00
echo -e " \e[32msuccess\e[0m"
else
echo -e " \e[31merror\e[0m"
2015-05-06 23:09:49 +00:00
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"
2015-05-05 08:30:58 +00:00
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
2015-05-09 12:27:03 +00:00
AUTHOR=$(gpg -K | sed -n 's,uid *,,p' | sort | head -1)
if test -z "${AUTHOR}"; then
AUTHOR="FIRSTNAME LASTNAME (URL) <EMAIL>"
fi
echo "$AUTHOR" | to AUTHORS && notice "please edit AUTHORS"
to configure.ac <<EOF && \
( notice "please edit configure.ac, then rerun $0"; exit 0 )
2015-05-05 08:30:58 +00:00
${HEADER}m4_define(x_package_name, ${DEFAULT_PROJECT_NAME}) # project's name
m4_define(x_major, 0) # project's major version
m4_define(x_minor, 0) # project's minor version
m4_include(ax_init_standard_project.m4)
2015-05-09 12:27:03 +00:00
AC_INIT(x_package_name, x_version, x_package_name)
2015-05-05 08:30:58 +00:00
AM_INIT_AUTOMAKE([1.9 tar-pax])
AX_INIT_STANDARD_PROJECT
# requirements, uncomment, what you need:
#AX_USE_CXX
#AX_USE_LIBTOOL
#AX_USE_SCRIPTS
2015-05-05 08:30:58 +00:00
#AX_USE_DOXYGEN
#AX_USE_DEBIAN_PACKAGING
#AX_USE_RPM_PACKAGING
#AX_USE_CPPUNIT
#AX_BUILD_EXAMPLES
# qt features, uncomment, what you need:
#AX_CHECK_QT([QT], [QtCore QtGui QtNetwork], [QtWidgets])
2015-05-09 12:27:03 +00:00
#AX_QT_NO_KEYWORDS
2015-05-05 08:30:58 +00:00
# create output
AC_OUTPUT
EOF
PACKAGE_NAME=$(sed -n 's/.*m4_define *( *x_package_name *, *\([^ ]*\) *).*/\1/p' configure.ac)
2015-05-06 23:09:49 +00:00
echo "${HEADER}MAINTAINERCLEANFILES = makefile.in" | to --condition AX_USE_CXX src/makefile.am
2015-05-05 08:30:58 +00:00
to --condition AX_USE_CXX src/version.hxx <<EOF
/*! @file
@id \$Id\$
2015-05-05 08:30:58 +00:00
*/
// 1 2 3 4 5 6 7 8
// 45678901234567890123456789012345678901234567890123456789012345678901234567890
#include <string>
namespace NAMESPACE {
2015-05-05 15:06:08 +00:00
/// get package string which consists of package name and package version
2015-05-05 08:30:58 +00:00
std::string package_string();
2015-05-05 15:06:08 +00:00
/// get package name
2015-05-05 08:30:58 +00:00
std::string package_name();
2015-05-05 15:06:08 +00:00
/// get package version
2015-05-05 08:30:58 +00:00
std::string version();
2015-05-05 15:06:08 +00:00
/// get code build date
2015-05-05 08:30:58 +00:00
std::string build_date();
2015-05-05 15:06:08 +00:00
/// get author, i.e. copyright holder
2015-05-05 08:30:58 +00:00
std::string author();
2015-05-05 15:06:08 +00:00
/// get short package description (1st line of README)
2015-05-05 08:30:58 +00:00
std::string description();
2015-05-05 15:06:08 +00:00
/// get long package description (starting at 3rd line in README)
std::string readme();
/// get package logo file name
2015-05-05 08:30:58 +00:00
std::string logo();
2015-05-05 15:06:08 +00:00
/// get package icon file name
2015-05-05 08:30:58 +00:00
std::string icon();
2015-05-05 15:06:08 +00:00
/// used for <code>what filename</code>
2015-05-05 08:30:58 +00:00
extern const std::string WHAT;
2015-05-05 15:06:08 +00:00
/// used for <code>ident filename</code>
2015-05-05 08:30:58 +00:00
extern const std::string IDENT;
}
EOF
to --condition AX_USE_CXX src/version.cxx <<EOF
/*! @file
@id $Id\$
2015-05-05 08:30:58 +00:00
*/
// 1 2 3 4 5 6 7 8
// 45678901234567890123456789012345678901234567890123456789012345678901234567890
#include <string>
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() {
2015-05-05 15:06:08 +00:00
return BUILD_DATE;
2015-05-05 08:30:58 +00:00
}
std::string author() {
2015-05-05 15:06:08 +00:00
return AUTHOR;
2015-05-05 08:30:58 +00:00
}
std::string description() {
2015-05-05 15:06:08 +00:00
return DESCRIPTION;
}
std::string readme() {
return README;
2015-05-05 08:30:58 +00:00
}
std::string logo() {
2015-05-05 15:06:08 +00:00
return PROJECT_LOGO;
2015-05-05 08:30:58 +00:00
}
std::string icon() {
2015-05-05 15:06:08 +00:00
return PROJECT_ICON;
2015-05-05 08:30:58 +00:00
}
const std::string WHAT("#(@) " PACKAGE_STRING);
const std::string IDENT("\$Id: " PACKAGE_STRING);
}
EOF
2015-05-06 23:09:49 +00:00
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
2015-05-05 08:30:58 +00:00
to --condition AX_USE_CPPUNIT test/makefile.am <<EOF
${HEADER}AM_CPPFLAGS = -I${top_srcdir}/src -I${top_builddir}/src
AM_LDFLAGS = -L${top_builddir}/src/.libs
LDADD = -l${PACKAGE_NAME}
2015-05-06 23:09:49 +00:00
MAINTAINERCLEANFILES = makefile.in
2015-05-05 08:30:58 +00:00
EOF
to --condition AX_BUILD_EXAMPLES examples/makefile.am <<EOF
${HEADER}AM_CPPFLAGS = -I${top_srcdir}/src -I${top_builddir}/src
AM_LDFLAGS = -L${top_builddir}/src/.libs
LDADD = -l${PACKAGE_NAME}
2015-05-06 23:09:49 +00:00
MAINTAINERCLEANFILES = makefile.in
2015-05-05 08:30:58 +00:00
EOF
2015-05-09 12:27:03 +00:00
if testtag AX_USE_DOXYGEN && \
( ! checkfile doc/doxyfile.in || \
contains doc/doxyfile.in "${rebuildfiles[@]}" ); then
2015-05-05 08:30:58 +00:00
run doxygen -g doc/doxyfile.in
2015-05-09 12:27:03 +00:00
if test $exists -eq 0; then
run svn add doc/doxyfile.in
run svn propset svn:keywords "Id" doc/doxyfile.in
fi
2015-05-05 08:30:58 +00:00
doxyreplace PROJECT_NAME "@PACKAGE_NAME@"
doxyreplace PROJECT_NUMBER "@PACKAGE_VERSION@"
doxyreplace PROJECT_BRIEF "@DESCRIPTION@"
doxyreplace PROJECT_LOGO "@PROJECT_LOGO@"
doxyreplace INLINE_INHERITED_MEMB YES
doxyreplace MULTILINE_CPP_IS_BRIEF YES
doxyreplace TAB_SIZE 2
2015-05-06 23:09:49 +00:00
doxyreplace ALIASES '"id=\\par File-ID\\n"'
doxyadd ALIASES '"copy=\\par Copyright\\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 "'
doxyreplace ENABLE_PREPROCESSING YES
doxyreplace MACRO_EXPANSION YES
doxyadd PREDEFINED '"NAMESPACE=@PACKAGE_NAME@"'
2015-05-05 08:30:58 +00:00
doxyreplace BUILTIN_STL_SUPPORT YES
doxyreplace DISTRIBUTE_GROUP_DOC YES
doxyreplace EXTRACT_ALL YES
2015-05-06 23:09:49 +00:00
doxyreplace EXTRACT_PACKAGE YES
2015-05-05 08:30:58 +00:00
doxyreplace EXTRACT_PRIVATE YES
doxyreplace EXTRACT_STATIC YES
doxyreplace EXTRACT_LOCAL_CLASSES YES
doxyreplace EXTRACT_LOCAL_METHODS YES
doxyreplace EXTRACT_ANON_NSPACES YES
2015-05-06 23:09:49 +00:00
doxyreplace SHOW_GROUPED_MEMB_INC YES
2015-05-05 08:30:58 +00:00
doxyreplace SORT_MEMBERS_CTORS_1ST YES
doxyreplace WARN_IF_UNDOCUMENTED NO
doxyreplace WARN_LOGFILE doxygen.errors
doxyreplace INPUT "@top_srcdir@/src"
2015-05-06 23:09:49 +00:00
if testtag AX_USE_SCRIPTS; then
doxyadd INPUT "@top_srcdir@/scripts"
fi
if testtag 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'
doxyadd FILE_PATTERNS *.wt
2015-05-05 08:30:58 +00:00
doxyreplace RECURSIVE YES
doxyreplace EXCLUDE_PATTERNS "moc_* uic_* qrc_*"
if testtag AX_BUILD_EXAMPLES; then
doxyreplace EXAMPLE_PATH @top_srcdir@/examples
fi
doxyreplace EXAMPLE_RECURSIVE YES
2015-05-06 23:09:49 +00:00
doxyreplace FILTER_PATTERNS '*.wt=doxygen-webtester.sed'
2015-05-05 08:30:58 +00:00
doxyreplace SOURCE_BROWSER YES
doxyreplace INLINE_SOURCES YES
2015-05-06 23:09:49 +00:00
doxyreplace GENERATE_TESTLIST YES
2015-05-05 08:30:58 +00:00
doxyreplace GENERATE_TREEVIEW NO
doxyreplace SEARCHENGINE YES
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 YES
doxyreplace DOT_TRANSPARENT YES
fi
if testtag AX_USE_DEBIAN_PACKAGING; then
checkdir debian
to debian/changelog.in <<EOF
@PACKAGE@ (@PACKAGE_VERSION@~@DISTRO@.@BUILD_NUMBER@) @DISTRO@; urgency=low
* Please see ChangeLog of @PACKAGE@
-- @AUTHOR@ @BUILD_DATE@
EOF
to debian/control.in <<EOF
Source: @PACKAGE_NAME@
Priority: extra
Maintainer: @AUTHOR@
Build-Depends: debhelper, pkg-config, autotools-dev, lsb-release $(if testtag AX_USE_DOXYGEN; then echo -n ", doxygen, graphviz"; fi; if testtag AX_USE_CPPUNIT; then echo -n ", libcppunit-dev"; fi; if testtag AX_CXX_QT || testtag AX_CXX_CHECK_QT; then echo -n ", qtbase5-dev | libqt4-dev, qtbase5-dev-tools | qt4-dev-tools"; fi)
Package: @PACKAGE_NAME@
2015-05-05 20:31:56 +00:00
$(if testtag AX_USE_LIBTOOL; then echo "Section: libs"; fi)Architecture: any
2015-05-05 08:30:58 +00:00
Depends: \${shlibs:Depends}, \${misc:Depends}
Description: @DESCRIPTION@
@README_DEB@
$( if testtag AX_USE_LIBTOOL; then
cat <<EOF2
Package: @PACKAGE_NAME@-dev
Section: libdevel
Architecture: any
Depends: @PACKAGE_NAME@ (= \${binary:Version})
Description: @DESCRIPTION@ - Development Package
@README_DEB@
EOF2
fi)
EOF
to debian/docs <<EOF
NEWS
README
EOF
to --condition AX_USE_LIBTOOL debian/${PACKAGE_NAME}.install <<EOF
2015-05-05 08:30:58 +00:00
usr/lib/lib*.so.*
EOF
to --condition AX_USE_LIBTOOL debian/${PACKAGE_NAME}-dev.install <<EOF
2015-05-05 08:30:58 +00:00
usr/include/*
usr/lib/lib*.a
usr/lib/lib*.so
usr/lib/pkgconfig/*
usr/lib/*.la
usr/share/doc/${PACKAGE_NAME}/html
2015-05-05 08:30:58 +00:00
EOF
2015-05-05 20:31:56 +00:00
to --mode "u=rwx,g=rwx,o=rx" debian/rules <<EOF
2015-05-05 08:30:58 +00:00
${HEADER}%:
dh \$@
EOF
echo 7 | to debian/compat
fi
2015-05-09 12:27:03 +00:00
SUBDIRS=""
for d in src test scripts doc examples; do
test -d $d && SUBDIRS="${SUBDIRS} $d"
done
to makefile.am<<EOF
${HEADER}SUBDIRS =${SUBDIRS}
MAINTAINERCLEANFILES = makefile.in
EOF
2015-05-05 08:30:58 +00:00
to --condition AX_USE_LIBTOOL src/${PACKAGE_NAME}.pc.in <<EOF
${HEADER}prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=\${exec_prefix}/lib
includedir=\${prefix}/include
Name: @PACKAGE_NAME@
Description: @DESCRIPTION@
Version: @VERSION@
Libs: -L\${libdir} -l@PACKAGE_NAME@ @LDFLAGS@
Cflags: -I\${includedir} @CPPFLAGS@
2015-05-09 12:27:03 +00:00
Requires: @PKG_REQUIREMENTS@
2015-05-05 08:30:58 +00:00
EOF
#### Cleanup If Makefile Exists ####
if test -f makefile; then
run --no-check make distclean
fi
#### Bootstrap Before Configure ####
run aclocal
run libtoolize --force
run automake -a
run autoconf
#### Run Configure If User Requires ####
if test "$configure" -eq 1; then
./configure $*
fi
#### Run Make If User Requires ####
if test "$build" -eq 1; then
make
fi