You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
309 lines
8.1 KiB
309 lines
8.1 KiB
#! /bin/bash |
|
## @file |
|
## |
|
## $Id$ |
|
## |
|
## $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 |
|
## |
|
|
|
configure=0 |
|
while test $# -gt 0; do |
|
case "$1" in |
|
(--configure|-c) configure=1;; |
|
(*) break;; |
|
esac |
|
shift; |
|
done |
|
|
|
|
|
MY_NAME=${0##*/} |
|
PROJECT_PATH=$(pwd) |
|
DEFAULT_PROJECT_NAME=${PROJECT_PATH##*/} |
|
|
|
HEADER='## @id $Id$ |
|
# |
|
# This file has been added by '${MY_NAME}' on '$(date -R)' |
|
# Feel free to change it or even remove and rebuild it, up to your needs |
|
# |
|
## 1 2 3 4 5 6 7 8 |
|
## 45678901234567890123456789012345678901234567890123456789012345678901234567890 |
|
|
|
' |
|
|
|
run() { |
|
check=1 |
|
while test $# -gt 0; do |
|
case "$1" in |
|
(--no-check) check=0;; |
|
(*) break;; |
|
esac |
|
shift; |
|
done |
|
echo -n "-> running: $* ..." |
|
result=$($* 2>&1) |
|
res=$? |
|
if test $res -ne 0; then |
|
if test $check -eq 1; then |
|
echo " error" |
|
echo "*** Failed with return code: $res" |
|
if test -n "$result"; then |
|
echo "$result" |
|
fi |
|
exit 1 |
|
else |
|
echo " ignored" |
|
fi |
|
else |
|
echo " success" |
|
fi |
|
} |
|
|
|
testtag() { |
|
egrep -q '^ *'"$1" configure.ac |
|
} |
|
|
|
checkdir() { |
|
if ! test -d "$1"; then # create path |
|
run mkdir -p "$1" |
|
run svn add "$1" |
|
fi |
|
} |
|
|
|
to() { |
|
while test $# -gt 0; do |
|
case "$1" in |
|
(--condition) shift # test for a tag, abort if not set |
|
if ! testtag "$1" configure.ac; then |
|
return |
|
fi;; |
|
(*) break;; |
|
esac |
|
shift; |
|
done |
|
if test -f "$1"; then # file already exists |
|
return |
|
fi |
|
checkdir "$(dirname ${1})" |
|
echo -n "-> generating $1 ..." |
|
result=$(cat > "$1" 2>&1) |
|
res=$? |
|
if test $res -ne 0; then |
|
echo " error" |
|
echo "*** Failed with return code: $res" |
|
if test -n "$result"; then |
|
echo "$result" |
|
fi |
|
exit 1 |
|
else |
|
echo " success" |
|
fi |
|
run svn add "$1" |
|
run svn propset svn:keywords "Id" "$1" |
|
} |
|
|
|
copy() { |
|
if ! test -f "$1"; then |
|
run cp "${0%/*}/$1" "$1" |
|
run svn add "$1" |
|
run svn propset svn:keywords "Id" "$1" |
|
fi |
|
} |
|
|
|
doxyreplace() { |
|
echo -n "-> doxyfile: configure $1 ..." |
|
if sed -i 's§\(^'"$1"' *=\) *§\1'" $2"'§g' doc/doxyfile.in; then |
|
echo " success" |
|
else |
|
echo " ignored" |
|
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 |
|
if ! test -f configure.ac; then |
|
to configure.ac <<EOF |
|
${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) |
|
AC_INIT(x_package_name, x_major.x_minor.x_least, x_bugreport, x_package_name) |
|
AM_INIT_AUTOMAKE([1.9 tar-pax]) |
|
AX_INIT_STANDARD_PROJECT |
|
|
|
# requirements, uncomment, what you need: |
|
#AX_USE_CXX |
|
#AX_USE_LIBTOOL |
|
#AX_USE_DOXYGEN |
|
#AX_USE_DEBIAN_PACKAGING |
|
#AX_USE_RPM_PACKAGING |
|
#AX_USE_CPPUNIT |
|
#AX_BUILD_EXAMPLES |
|
|
|
# create output |
|
AC_OUTPUT |
|
EOF |
|
echo "please edit configure.ac, then rerun $0" |
|
exit 0 |
|
fi |
|
PACKAGE_NAME=$(sed -n 's/.*m4_define *( *x_package_name *, *\([^ ]*\) *).*/\1/p' configure.ac) |
|
echo "${HEADER}" | to --condition AX_USE_CXX src/makefile.am |
|
echo "${HEADER}" | to --condition AX_USE_CPPUNIT test/makefile.am |
|
echo "${HEADER}" | to --condition AX_USE_DOXYGEN doc/makefile.am |
|
echo "${HEADER}" | to --condition AX_BUILD_EXAMPLES examples/makefile.am |
|
if testtag AX_USE_DOXYGEN && ! test -f doc/doxyfile.in; then |
|
run doxygen -g doc/doxyfile.in |
|
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 |
|
doxyreplace ALIASES '"id=\par File-ID\n" "copy=\par Copyright\n" "license=\par License\n" "classmutex=\par Reentrant:\nAccess is locked with class static mutex @c " "instancemutex=\par Reentrant:\nAccess is locked with per instance mutex @c " "mutex=\par Reentrant:\nAccess is locked with mutex @c "' |
|
doxyreplace BUILTIN_STL_SUPPORT YES |
|
doxyreplace DISTRIBUTE_GROUP_DOC YES |
|
doxyreplace EXTRACT_ALL 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 SORT_MEMBERS_CTORS_1ST YES |
|
doxyreplace WARN_IF_UNDOCUMENTED NO |
|
doxyreplace WARN_LOGFILE doxygen.errors |
|
doxyreplace INPUT "@top_srcdir@/src" |
|
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 |
|
doxyreplace SOURCE_BROWSER YES |
|
doxyreplace INLINE_SOURCES YES |
|
doxyreplace GENERATE_TREEVIEW NO |
|
doxyreplace SEARCHENGINE YES |
|
doxyreplace GENERATE_HTML YES |
|
doxyreplace GENERATE_LATEX YES |
|
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@ |
|
$(if testtag AX_USE_LIBTOOL; then echo "Section: libs"; fi) |
|
Architecture: any |
|
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 debian/${PACKAGE_NAME}.install <<EOF |
|
usr/bin/* |
|
usr/lib/lib*.so.* |
|
EOF |
|
to debian/${PACKAGE_NAME}.dirs <<EOF |
|
usr/lib |
|
EOF |
|
if testtag AX_USE_LIBTOOL; then |
|
to debian/${PACKAGE_NAME}-dev.install <<EOF |
|
usr/include/* |
|
usr/lib/lib*.a |
|
usr/lib/lib*.so |
|
usr/lib/pkgconfig/* |
|
usr/lib/*.la |
|
usr/share/pkgconfig/* |
|
EOF |
|
to debian/${PACKAGE_NAME}-dev.dirs <<EOF |
|
usr/lib |
|
usr/include |
|
EOF |
|
fi |
|
to debian/rules <<EOF |
|
%: |
|
dh $@ |
|
EOF |
|
echo 7 | to debian/compat |
|
fi |
|
if ! test -f makefile.am; then |
|
SUBDIRS="" |
|
for d in src test doc examples; do |
|
test -d $d && SUBDIRS="${SUBDIRS} $d" |
|
done |
|
echo "${HEADER}SUBDIRS =${SUBDIRS}" | to makefile.am |
|
fi |
|
to --condition AX_USE_LIBTOOL src/${PACKAGE_NAME}.pc.in <<EOF |
|
${HEADER}prefix=@PACKAGE_NAME@ |
|
exec_prefix=${prefix} |
|
libdir=${exec_prefix}/lib |
|
includedir=${prefix}/include |
|
|
|
Name: @PACKAGE_NAME@ |
|
Description: @DESCRIPTION@ |
|
Version: @VERSION@ |
|
Libs: -L${libdir} -l@PACKAGE_NAME@ |
|
Cflags: -I${includedir} |
|
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
|
|
|