completely new, megacool build system step 1
This commit is contained in:
239
ax_init_standard_project.m4
Normal file
239
ax_init_standard_project.m4
Normal file
@@ -0,0 +1,239 @@
|
||||
## @id $Id$
|
||||
|
||||
## 1 2 3 4 5 6 7 8
|
||||
## 45678901234567890123456789012345678901234567890123456789012345678901234567890
|
||||
|
||||
m4_define(x_least, m4_esyscmd_s(
|
||||
LEAST="ERROR-UNDEFINED-REVISION-to-be-built-in-subdirectory-of-svn-checkout"
|
||||
for path in . .. ../..; do
|
||||
if svn info $path 2>&1 > /dev/null; then
|
||||
LEAST=$(LANG= svn info $path | sed -n 's/Last Changed Rev: //p')
|
||||
(cd $path && svn2cl)
|
||||
break;
|
||||
fi
|
||||
done
|
||||
echo -n $LEAST
|
||||
))
|
||||
m4_define(x_bugreport, m4_esyscmd_s(
|
||||
head -1 AUTHORS | \
|
||||
sed -n 's,.*<\([-_.a-z0-9A-Z]*@[-_.a-z0-9A-Z]*\)>.*,\1,gp'
|
||||
))
|
||||
|
||||
m4_include(ax_check_qt.m4)
|
||||
|
||||
AC_ALIAS([AC_DEFINE_DIR], [AX_DEFINE_DIR])
|
||||
AC_DEFUN([AX_DEFINE_DIR], [
|
||||
prefix_NONE=
|
||||
exec_prefix_NONE=
|
||||
test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix
|
||||
test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix
|
||||
dnl In Autoconf 2.60, ${datadir} refers to ${datarootdir}, which in turn
|
||||
dnl refers to ${prefix}. Thus we have to use `eval' twice.
|
||||
eval ax_define_dir="\"[$]$2\""
|
||||
eval ax_define_dir="\"$ax_define_dir\""
|
||||
AC_SUBST($1, "$ax_define_dir")
|
||||
AC_DEFINE_UNQUOTED($1, "$ax_define_dir", [$3])
|
||||
test "$prefix_NONE" && prefix=NONE
|
||||
test "$exec_prefix_NONE" && exec_prefix=NONE
|
||||
])
|
||||
|
||||
AC_DEFUN([AX_ADD_MAKEFILE_TARGET_DEP], [
|
||||
sh_add_makefile_target_dep() {
|
||||
sed -i ':a;/^'${1}':.*\\$/{N;s/\\\n//;ta};s/^'${1}':.*$/& '${2}'/' "${3}"
|
||||
if ! egrep -q "${1}:.* ${2}" "${3}"; then
|
||||
echo "${1}: ${2}" >> "${3}"
|
||||
fi
|
||||
}
|
||||
sh_add_makefile_target_dep "$1" "$2" "$3"
|
||||
if test "$1" != ".PHONY"; then
|
||||
sh_add_makefile_target_dep ".PHONY" "$2" "$3"
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([AX_INIT_STANDARD_PROJECT], [
|
||||
AC_SUBST(HOME)
|
||||
README=$(tail -n +3 README)
|
||||
DESCRIPTION=$(head -1 README)
|
||||
AUTHOR=$(head -1 AUTHORS)
|
||||
AC_SUBST(AUTHOR)
|
||||
_AM_SUBST_NOTMAKE([AUTHOR])
|
||||
AC_SUBST(DESCRIPTION)
|
||||
_AM_SUBST_NOTMAKE([DESCRIPTION])
|
||||
AC_SUBST(README)
|
||||
_AM_SUBST_NOTMAKE([README])
|
||||
DISTRO=$(lsb_release -sc)
|
||||
AC_SUBST(DISTRO)
|
||||
BUILD_NUMBER=${BUILD_NUMBER:-1}
|
||||
AC_SUBST(BUILD_NUMBER)
|
||||
BUILD_DATE=$(date -R)
|
||||
AC_SUBST(BUILD_DATE)
|
||||
AC_CONFIG_FILES([makefile])
|
||||
AX_ADD_MAKEFILE_TARGET_DEP([clean-am], [clean-standard-project-targets], [makefile.in])
|
||||
AX_ADD_MAKEFILE_TARGET_DEP([distclean-am], [distclean-standard-project-targets], [makefile.in])
|
||||
AX_ADD_MAKEFILE_TARGET_DEP([maintainer-clean-am], [maintainer-clean-standard-project-targets], [makefile.in])
|
||||
test -f makefile.in && cat >> makefile.in <<EOF
|
||||
#### Begin: Appended by $0
|
||||
EXTRA_DIST = bootstrap.sh
|
||||
doc_DATA = AUTHORS NEWS README COPYING INSTALL ChangeLog @PACKAGE_NAME@.spec
|
||||
clean-standard-project-targets:
|
||||
-rm -rf \${PACKAGE_NAME}-\${PACKAGE_VERSION}
|
||||
-rm \${PACKAGE_TARNAME}-\${PACKAGE_VERSION}.tar.gz
|
||||
distclean-standard-project-targets:
|
||||
-rm -r autom4te.cache
|
||||
-rm aclocal.m4 config.guess config.sub configure depcomp compile install-sh ltmain.sh makefile missing mkinstalldirs
|
||||
maintainer-clean-standard-project-targets:
|
||||
-rm makefile.in
|
||||
#### End: $0
|
||||
EOF
|
||||
])
|
||||
|
||||
AC_DEFUN([AX_USE_CXX], [
|
||||
m4_include(ax_cxx_compile_stdcxx_11.m4)
|
||||
AC_LANG(C++)
|
||||
AX_CXX_COMPILE_STDCXX_11(noext, optional)
|
||||
AC_PROG_CXX
|
||||
AC_PROG_CPP
|
||||
|
||||
AC_CONFIG_FILES([src/makefile])
|
||||
|
||||
AM_CPPFLAGS="-DPACKAGE_VERSION='\"${PACKAGE_VERSION}\"' -DPACKAGE_NAME='\"${PACKAGE_NAME}\"'"
|
||||
|
||||
# Get rid of that stupid -O2 -g opions!
|
||||
CXXFLAGS="${CXXFLAGS:-}"
|
||||
|
||||
# pass compile flags to make distcheck
|
||||
AM_DISTCHECK_CONFIGURE_FLAGS="CXXFLAGS='${CXXFLAGS}' CPPFLAGS='${CPPFLAGS}' CFLAGS='${CFLAGS}' LDFLAGS='${LDFLAGS}'"
|
||||
AC_SUBST(AM_DISTCHECK_CONFIGURE_FLAGS)
|
||||
|
||||
AC_ARG_ENABLE(pedantic,
|
||||
[AS_HELP_STRING([--enable-pedantic],
|
||||
[enable all warnings and checks, abort on warnings])],
|
||||
[have_pedantic="$enableval"; test "$enableval" = "yes" && \
|
||||
AM_CXXFLAGS="${AM_CXXFLAGS:-} -pedantic-errors -Wall -W -Wfloat-equal -Wundef -Wendif-labels -Wpointer-arith -Wcast-align -Wwrite-strings -Wconversion -Wsign-compare -Wmissing-format-attribute -Wno-multichar -Wpacked -Wredundant-decls -Werror -Wshadow -Wcast-qual -Wno-ctor-dtor-privacy"])
|
||||
dnl problem in libs: -Wshadow -Wcast-qual
|
||||
dnl auto.hpp: -Wno-ctor-dtor-privacy (removed)
|
||||
AM_CONDITIONAL(PEDANTIC, test "$enableval" = "yes")
|
||||
if test "$have_pedantic" == "yes"; then
|
||||
AC_MSG_NOTICE([Pedantic compile mode enabled!
|
||||
- all warnings for GNU g++ are enabled
|
||||
- all warnings result in an error
|
||||
- doxygen warnings are treated as error too]); fi
|
||||
|
||||
MINGW32=no
|
||||
MAC=no
|
||||
case $host_os in
|
||||
*mingw32*) MINGW32=yes;;
|
||||
*darwin* | *rhapsody* | *macosx*) MAC=yes;;
|
||||
esac
|
||||
AM_CONDITIONAL(MINGW32, test "$MINGW32" = "yes")
|
||||
AM_CONDITIONAL(MAC, test "$MAC" = "yes")
|
||||
|
||||
AC_SUBST(AM_CXXFLAGS)
|
||||
AC_SUBST(AM_CPPFLAGS)
|
||||
])
|
||||
|
||||
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 library using "make check"
|
||||
- everything else works perfectly]); fi
|
||||
AC_CONFIG_FILES([test/makefile])
|
||||
])
|
||||
|
||||
AC_DEFUN([AX_BUILD_EXAMPLES], [
|
||||
AC_CONFIG_FILES([examples/makefile])
|
||||
])
|
||||
|
||||
AC_DEFUN([AX_USE_LIBTOOL], [
|
||||
# libtool versioning
|
||||
LIB_MAJOR=m4_eval(x_major+x_minor)
|
||||
LIB_MINOR=x_least
|
||||
LIB_LEAST=x_minor
|
||||
LIB_VERSION="${LIB_MAJOR}:${LIB_MINOR}:${LIB_LEAST}"
|
||||
AM_LDFLAGS = -version-info ${LIB_VERSION}
|
||||
AC_SUBST(AM_LDFLAGS)
|
||||
AC_SUBST(LIB_VERSION)
|
||||
AC_PROG_LIBTOOL
|
||||
AC_CONFIG_FILES([src/${PACKAGE_NAME}.pc])
|
||||
])
|
||||
|
||||
AC_DEFUN([AX_USE_DEBIAN_PACKAGING], [
|
||||
README_DEB=$(tail -n +3 README | sed -e 's/^$/./g' -e 's/^/ /g')
|
||||
AC_SUBST(README_DEB)
|
||||
_AM_SUBST_NOTMAKE([README_DEB])
|
||||
AC_CONFIG_FILES([debian/changelog debian/control])
|
||||
AX_ADD_MAKEFILE_TARGET_DEP([clean-am], [clean-debian-targets], [makefile.in])
|
||||
AX_ADD_MAKEFILE_TARGET_DEP([distclean-am], [distclean-debian-targets], [makefile.in])
|
||||
test -f makefile.in && cat >> makefile.in <<EOF
|
||||
#### Begin: Appended by $0
|
||||
EXTRA_DIST += debian
|
||||
clean-debian-targets:
|
||||
-rm -rf \${PACKAGE_NAME}_\${PACKAGE_VERSION}~\${DISTRO}.\${BUILD_NUMBER}.{dsc,tar.gz} \${PACKAGE_NAME}_\${PACKAGE_VERSION}~\${DISTRO}.\${BUILD_NUMBER}*.changes \$\$(sed -n 's,Package: \(.*\),\1_${PACKAGE_VERSION}~${DISTRO}.${BUILD_NUMBER}*.deb,p;' debian/control)
|
||||
deb: distdir
|
||||
cd \${PACKAGE_NAME}-\${PACKAGE_VERSION} && ( export CFLAGS="\${CFLAGS}"; export CPPFLAGS="\${CPPFLAGS}"; export CXXFLAGS="\${CXXFLAGS}"; export LDFLAGS="\${LDFLAGS}"; export DEB_CFLAGS_APPEND="\${CFLAGS}"; export DEB_CPPFLAGS_APPEND="\${CPPFLAGS}"; export DEB_CXXFLAGS_APPEND="\${CXXFLAGS}"; export DEB_LDFLAGS_APPEND="\${LDFLAGS}"; dpkg-buildpackage )
|
||||
distclean-debian-targets:
|
||||
-rm debian/changelog debian/control
|
||||
#### End: $0
|
||||
EOF
|
||||
])
|
||||
|
||||
AC_DEFUN([AX_USE_RPM_PACKAGING], [
|
||||
# m4_include(ax_rpm_rules.m4)
|
||||
AC_CONFIG_FILES([${PACKAGE_NAME}.spec])
|
||||
#AX_ADD_MAKEFILE_TARGET_DEP([clean-am], [clean-debian-targets], [makefile.in])
|
||||
AX_ADD_MAKEFILE_TARGET_DEP([.PHONY], [rpm], [makefile.in])
|
||||
test -f makefile.in && cat >> makefile.in <<EOF
|
||||
#### Begin: Appended by $0
|
||||
rpm: dist
|
||||
rpmbuild -ba --define "_topdir \$(pwd)" --define "_sourcedir \$(pwd)" \${PACKAGE_NAME}.spec
|
||||
#### End: $0
|
||||
EOF
|
||||
])
|
||||
|
||||
AC_DEFUN([AX_USE_DOXYGEN], [
|
||||
AC_CHECK_PROG(have_doxygen, doxygen, yes, no)
|
||||
AC_CHECK_PROG(have_dot, dot, yes, no)
|
||||
AC_CHECK_PROG(have_mscgen, mscgen, yes, no)
|
||||
if test "$have_doxygen" = "no"; then
|
||||
AC_MSG_WARN([Missing program doxygen!
|
||||
- you cannot rebuild the documentation
|
||||
- there are precompiled derived files in the distribution]); fi
|
||||
if test "$have_dot" = "no"; then
|
||||
AC_MSG_WARN([Missing program dot!
|
||||
- when you rebild documentation, there are no generated images
|
||||
- there are precompiled derived files in the distribution]); fi
|
||||
if test "$have_mscgen" = "no"; then
|
||||
AC_MSG_WARN([Missing program mscgen!
|
||||
- when you rebild documentation, there are no message state charts
|
||||
- there are precompiled derived files in the distribution]); fi
|
||||
AC_CONFIG_FILES([doc/makefile doc/doxyfile])
|
||||
AX_ADD_MAKEFILE_TARGET_DEP([clean-am], [clean-documentation], [doc/makefile.in])
|
||||
AX_ADD_MAKEFILE_TARGET_DEP([distclean-am], [distclean-documentation], [doc/makefile.in])
|
||||
AX_ADD_MAKEFILE_TARGET_DEP([maintainer-clean-am], [maintainer-clean-documentation], [doc/makefile.in])
|
||||
AX_ADD_MAKEFILE_TARGET_DEP([install-data-am], [install-data-documentation], [doc/makefile.in])
|
||||
AX_ADD_MAKEFILE_TARGET_DEP([uninstall-am], [uninstall-documentation], [doc/makefile.in])
|
||||
AX_ADD_MAKEFILE_TARGET_DEP([all], [doc], [doc/makefile.in])
|
||||
test -f doc/makefile.in && cat >> doc/makefile.in <<EOF
|
||||
#### Begin: Appended by $0
|
||||
doc: doxyfile
|
||||
doxygen doxyfile
|
||||
@PEDANTIC_TRUE@ test \! -s doxygen.errors
|
||||
clean-documentation:
|
||||
-rm doxygen.errors @PACKAGE_NAME@-@PACKAGE_VERSION@.pdf
|
||||
distclean-documentation:
|
||||
-rm -r html
|
||||
-rm @PACKAGE_NAME@.doxytag
|
||||
maintainer-clean-documentation:
|
||||
-rm makefile.in
|
||||
install-data-documentation:
|
||||
test -d \$(DESTDIR)\${docdir} || mkdir -p \$(DESTDIR)\${docdir}
|
||||
chmod -R u+w \$(DESTDIR)\${docdir}
|
||||
cp -r html \$(DESTDIR)\${docdir}/
|
||||
uninstall-documentation:
|
||||
-chmod -R u+w \$(DESTDIR)\${docdir}
|
||||
-rm -rf \$(DESTDIR)\${docdir}/*
|
||||
#### End: $0
|
||||
EOF
|
||||
])
|
101
bootstrap.sh
101
bootstrap.sh
@@ -1,5 +1,4 @@
|
||||
#! /bin/sh
|
||||
|
||||
#! /bin/bash
|
||||
## @file
|
||||
##
|
||||
## $Id$
|
||||
@@ -15,5 +14,99 @@
|
||||
## added file header
|
||||
##
|
||||
|
||||
test -f makefile && make distclean
|
||||
aclocal && libtoolize --force && automake -a && autoconf
|
||||
MY_NAME=${0##*/}
|
||||
PROJECT_PATH=${0%*/*}
|
||||
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
|
||||
|
||||
'
|
||||
|
||||
function 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
|
||||
}
|
||||
|
||||
function to {
|
||||
cat > "$1"
|
||||
run svn add "$1"
|
||||
run svn propset svn:keywords "Id" "$1"
|
||||
}
|
||||
|
||||
# Initialize the environment:
|
||||
if ! test -f configure.ac; then
|
||||
echo "->generating configure.ac"
|
||||
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"
|
||||
fi
|
||||
if ! test -f makefile.am; then
|
||||
echo "-> generating makefile.am"
|
||||
SUBDIRS=""
|
||||
for d in src test doc examples; do
|
||||
test -d $d && SUBDIRS="${SUBDIRS} $d"
|
||||
done
|
||||
echo "${HEADER}SUBDIRS =${SUBDIRS}" | to makefile.am
|
||||
fi
|
||||
if ( test -d doc || grep -q AX_USE_DOXYGEN configure.ac ) \
|
||||
&& ! test -f doc/makefile.am; then
|
||||
echo "-> generating doc/makefile.am"
|
||||
test -d doc || ( mkdir doc && svn add doc )
|
||||
echo "${HEADER}" | to doc/makefile.am
|
||||
fi
|
||||
|
||||
if test -f makefile; then
|
||||
run --no-check make distclean
|
||||
fi
|
||||
run aclocal
|
||||
run libtoolize --force
|
||||
run automake -a
|
||||
run autoconf
|
||||
|
172
configure.ac
172
configure.ac
@@ -1,93 +1,29 @@
|
||||
# $Id$
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
|
||||
# prevent HAVE_QTxxx does not appear in AM_CONDITIONAL
|
||||
# in old ubuntu / debian distros
|
||||
m4_include(m4/ax_check_qt.m4)
|
||||
m4_include(m4/ax_cxx_compile_stdcxx_11.m4)
|
||||
|
||||
m4_define(x_package_name, libpcscxx)
|
||||
m4_define(x_major, 3)
|
||||
m4_define(x_minor, 1)
|
||||
|
||||
AC_ALIAS([AC_DEFINE_DIR], [AX_DEFINE_DIR])
|
||||
AC_DEFUN([AX_DEFINE_DIR], [
|
||||
prefix_NONE=
|
||||
exec_prefix_NONE=
|
||||
test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix
|
||||
test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix
|
||||
dnl In Autoconf 2.60, ${datadir} refers to ${datarootdir}, which in turn
|
||||
dnl refers to ${prefix}. Thus we have to use `eval' twice.
|
||||
eval ax_define_dir="\"[$]$2\""
|
||||
eval ax_define_dir="\"$ax_define_dir\""
|
||||
AC_SUBST($1, "$ax_define_dir")
|
||||
AC_DEFINE_UNQUOTED($1, "$ax_define_dir", [$3])
|
||||
test "$prefix_NONE" && prefix=NONE
|
||||
test "$exec_prefix_NONE" && exec_prefix=NONE
|
||||
])
|
||||
|
||||
m4_define(x_least, m4_esyscmd_s(
|
||||
LEAST="ERROR-UNDEFINED-REVISION-to-be-built-in-subdirectory-of-svn-checkout"
|
||||
for path in . .. ../..; do
|
||||
if svn info $path 2>&1 > /dev/null; then
|
||||
LEAST=$(LANG= svn info $path | sed -n 's/Last Changed Rev: //p')
|
||||
(cd $path && svn2cl)
|
||||
break;
|
||||
fi
|
||||
done
|
||||
echo -n $LEAST
|
||||
))
|
||||
m4_define(x_bugreport, m4_esyscmd_s(
|
||||
head -1 AUTHORS | \
|
||||
sed -n 's,.*<\([-_.a-z0-9A-Z]*@[-_.a-z0-9A-Z]*\)>.*,\1,gp'
|
||||
))
|
||||
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])
|
||||
|
||||
SRC_DIR=src
|
||||
TST_DIR=
|
||||
DOC_DIR=doc
|
||||
|
||||
# files to create
|
||||
AC_CONFIG_FILES([makefile ${PACKAGE_NAME}.spec
|
||||
src/makefile
|
||||
doc/doxyfile doc/examples/makefile doc/makefile
|
||||
src/${PACKAGE_NAME}.pc debian/changelog debian/control])
|
||||
|
||||
# libtool versioning
|
||||
LIB_MAJOR=m4_eval(x_major+x_minor)
|
||||
LIB_MINOR=x_least
|
||||
LIB_LEAST=x_minor
|
||||
LIB_VERSION="${LIB_MAJOR}:${LIB_MINOR}:${LIB_LEAST}"
|
||||
AC_SUBST(LIB_VERSION)
|
||||
|
||||
# home
|
||||
AC_SUBST(HOME)
|
||||
|
||||
# datadir for languages
|
||||
AX_DEFINE_DIR([DATADIR], [datadir])
|
||||
#AC_SUBST(DATADIR)
|
||||
|
||||
AM_CPPFLAGS="-DPACKAGE_VERSION='\"${PACKAGE_VERSION}\"' -DPACKAGE_NAME='\"${PACKAGE_NAME}\"'"
|
||||
|
||||
# Get rid of that stupid -O2 -g opions!
|
||||
CXXFLAGS="${CXXFLAGS:-}"
|
||||
AX_INIT_STANDARD_PROJECT
|
||||
|
||||
# languages
|
||||
AC_LANG(C++)
|
||||
AX_CXX_COMPILE_STDCXX_11(noext, optional)
|
||||
AX_USE_CXX
|
||||
AX_USE_LIBTOOL
|
||||
AX_USE_DOXYGEN
|
||||
AX_USE_DEBIAN_PACKAGING
|
||||
AX_USE_RPM_PACKAGING
|
||||
#AX_USE_CPPUNIT
|
||||
AX_BUILD_EXAMPLES
|
||||
|
||||
# qt features
|
||||
AX_CXX_CHECK_QT([QTGUI], [QtCore QtGui])
|
||||
AX_CXX_CHECK_QT([QTWIDGETS], [QtWidgets]) # optional, needed only for qt5
|
||||
AX_CXX_CHECK_QT([QTNETWORK], [QtNetwork])
|
||||
|
||||
# programs
|
||||
AC_PROG_CXX
|
||||
AC_PROG_CPP
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_LN_S
|
||||
AC_PROG_MAKE_SET
|
||||
AC_PROG_LIBTOOL
|
||||
AC_CHECK_PROG(have_doxygen, doxygen, yes, no)
|
||||
AC_CHECK_PROG(have_dot, dot, yes, no)
|
||||
PKG_PROG_PKG_CONFIG
|
||||
#PKG_PROG_PKG_CONFIG
|
||||
|
||||
# libraries
|
||||
AC_ARG_ENABLE(pkcs11-download,
|
||||
@@ -109,84 +45,6 @@ dnl auto.hpp: -Wno-ctor-dtor-privacy (removed)
|
||||
AC_CHECK_HEADER([pkcs11.h], [], [AC_MSG_ERROR([Header pkcs11.h is required])])
|
||||
AC_CHECK_HEADER([wintypes.h], [], [AC_MSG_ERROR([Header wintypes.h is required])])
|
||||
AC_CHECK_HEADER([mrw/checkcxx11.hxx], [], [AC_MSG_ERROR([please install mrw-c++])])
|
||||
AX_CXX_CHECK_QT([QTGUI], [QtCore QtGui])
|
||||
AX_CXX_CHECK_QT([QTWIDGETS], [QtWidgets]) # optional, needed only for qt5
|
||||
AX_CXX_CHECK_QT([QTNETWORK], [QtNetwork])
|
||||
|
||||
AC_ARG_ENABLE(pedantic,
|
||||
[AS_HELP_STRING([--enable-pedantic],
|
||||
[enable all warnings and checks, abort on warnings])],
|
||||
[have_pedantic="$enableval"; test "$enableval" = "yes" && \
|
||||
AM_CXXFLAGS="${AM_CXXFLAGS:-} -pedantic-errors -Wall -W -Wfloat-equal -Wundef -Wendif-labels -Wpointer-arith -Wcast-align -Wwrite-strings -Wconversion -Wsign-compare -Wmissing-format-attribute -Wno-multichar -Wpacked -Wredundant-decls -Werror -Wshadow -Wcast-qual -Wno-ctor-dtor-privacy"])
|
||||
dnl problem in libs: -Wshadow -Wcast-qual
|
||||
dnl auto.hpp: -Wno-ctor-dtor-privacy (removed)
|
||||
AM_CONDITIONAL(PEDANTIC, test "$enableval" = "yes")
|
||||
AC_ARG_ENABLE(dot,
|
||||
[AS_HELP_STRING([--disable-dot],
|
||||
[disable dot graphic tools for documentation])],
|
||||
[have_dot="$enableval"])
|
||||
test "$enableval" = "yes" && HAVE_DOT="YES" || HAVE_DOT="NO";
|
||||
AM_PATH_CPPUNIT([1.0.0], [have_cppunit="yes"], [have_cppunit="no"])
|
||||
|
||||
MINGW32=no
|
||||
MAC=no
|
||||
case $host_os in
|
||||
*mingw32*) MINGW32=yes;;
|
||||
*darwin* | *rhapsody* | *macosx*) MAC=yes;;
|
||||
esac
|
||||
AM_CONDITIONAL(MINGW32, test "$MINGW32" = "yes")
|
||||
AM_CONDITIONAL(MAC, test "$MAC" = "yes")
|
||||
|
||||
# macros
|
||||
README=$(tail -n +3 README)
|
||||
README_DEB=$(tail -n +3 README | sed -e 's/^$/./g' -e 's/^/ /g')
|
||||
DESCRIPTION=$(head -1 README)
|
||||
AUTHOR=$(head -1 AUTHORS)
|
||||
AC_SUBST(AUTHOR)
|
||||
_AM_SUBST_NOTMAKE([AUTHOR])
|
||||
AC_SUBST(DESCRIPTION)
|
||||
_AM_SUBST_NOTMAKE([DESCRIPTION])
|
||||
AC_SUBST(README)
|
||||
_AM_SUBST_NOTMAKE([README])
|
||||
AC_SUBST(README_DEB)
|
||||
_AM_SUBST_NOTMAKE([README_DEB])
|
||||
DISTRO=$(lsb_release -sc)
|
||||
AC_SUBST(DISTRO)
|
||||
BUILD_NUMBER=${BUILD_NUMBER:-1}
|
||||
AC_SUBST(BUILD_NUMBER)
|
||||
BUILD_DATE=$(date -R)
|
||||
AC_SUBST(BUILD_DATE)
|
||||
|
||||
# export macros
|
||||
SRCDIR=${srcdir}
|
||||
AC_SUBST(SRCDIR)
|
||||
AC_SUBST(SRC_DIR)
|
||||
AC_SUBST(TST_DIR)
|
||||
AC_SUBST(DOC_DIR)
|
||||
AC_SUBST(HAVE_DOT)
|
||||
AC_SUBST(THREADS)
|
||||
AC_SUBST(AM_CXXFLAGS)
|
||||
AC_SUBST(AM_CPPFLAGS)
|
||||
AC_SUBST(LIBS)
|
||||
|
||||
# create output
|
||||
AC_OUTPUT
|
||||
|
||||
# infos and warnings
|
||||
if test "$have_doxygen" = "no"; then
|
||||
AC_MSG_WARN([Missing program doxygen!
|
||||
- you cannot rebuild the documentation with make doc
|
||||
- there are precompiled derived files in the distribution]); fi
|
||||
if test "$have_dot" = "no"; then
|
||||
AC_MSG_WARN([Missing program dot!
|
||||
- when you rebild documentation with make doc, there are no generated images
|
||||
- there are precompiled derived files in the distribution]); fi
|
||||
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
|
||||
if test "$have_pedantic" == "yes"; then
|
||||
AC_MSG_NOTICE([Pedantic compile mode enabled!
|
||||
- all warnings for GNU g++ are enabled
|
||||
- all warnings result in an error
|
||||
- doxygen warnings are treated as error too]); fi
|
||||
|
2
debian/changelog.in
vendored
2
debian/changelog.in
vendored
@@ -1,5 +1,5 @@
|
||||
@PACKAGE@ (@PACKAGE_VERSION@~@DISTRO@.@BUILD_NUMBER@) @DISTRO@; urgency=low
|
||||
|
||||
* See https://dev.marc.waeckerlin.org/projects/@PACKAGE@ for changes
|
||||
* Please see ChangeLog of @PACKAGE@
|
||||
|
||||
-- @AUTHOR@ @BUILD_DATE@
|
||||
|
@@ -660,7 +660,7 @@ WARN_LOGFILE = doxygen.errors
|
||||
# directories like "/usr/src/myproject". Separate the files or directories
|
||||
# with spaces.
|
||||
|
||||
INPUT = @SRCDIR@/../src
|
||||
INPUT = @top_srcdir@/src
|
||||
|
||||
# This tag can be used to specify the character encoding of the source files
|
||||
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
|
||||
@@ -723,7 +723,7 @@ EXCLUDE_SYMBOLS =
|
||||
# directories that contain example code fragments that are included (see
|
||||
# the \include command).
|
||||
|
||||
EXAMPLE_PATH = examples
|
||||
EXAMPLE_PATH = @top_srcdir@/examples
|
||||
|
||||
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
|
||||
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
|
||||
@@ -1220,7 +1220,7 @@ SERVER_BASED_SEARCH = NO
|
||||
# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
|
||||
# generate Latex output.
|
||||
|
||||
GENERATE_LATEX = YES
|
||||
GENERATE_LATEX = NO
|
||||
|
||||
# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
|
||||
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
|
||||
|
@@ -1,48 +1,9 @@
|
||||
## @file
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
## @id $Id$
|
||||
#
|
||||
# This file has been added by bootstrap.sh on Wed, 11 Mar 2015 16:57:43 +0100
|
||||
# Feel free to change it or even remove and rebuild it, up to your needs
|
||||
#
|
||||
## 1 2 3 4 5 6 7 8
|
||||
## 45678901234567890123456789012345678901234567890123456789012345678901234567890
|
||||
|
||||
SUBDIRS = examples
|
||||
ALL_SRC = ${top_srcdir}/src/*.[ch]xx ${top_srcdir}/src/*.doc
|
||||
# ${top_srcdir}/src/*.doc
|
||||
|
||||
DIRS = html
|
||||
#latex
|
||||
|
||||
all: ${DIRS}
|
||||
|
||||
.PHONY: doc clean-local distclean-local dist-hool install-data-hook \
|
||||
uninstall-hook
|
||||
|
||||
deps = ${top_srcdir}/COPYING ${top_srcdir}/README \
|
||||
${top_srcdir}/INSTALL ${top_srcdir}/NEWS ${top_srcdir}/ChangeLog
|
||||
|
||||
html: ${ALL_SRC} doxyfile ${deps}
|
||||
doxygen doxyfile
|
||||
if PEDANTIC
|
||||
test \! -s doxygen.errors
|
||||
endif
|
||||
# cd latex && make
|
||||
# mv latex/refman.pdf @PACKAGE_NAME@-@PACKAGE_VERSION@.pdf
|
||||
|
||||
CLEANFILES = doxygen.errors @PACKAGE_NAME@-@PACKAGE_VERSION@.pdf
|
||||
DISTCLEANFILES = @PACKAGE_NAME@.doxytag
|
||||
MAINTAINERCLEANFILES = makefile.in
|
||||
|
||||
distclean-local:
|
||||
- rm -r html latex
|
||||
|
||||
dist-hook: html
|
||||
# cp -r html latex ${distdir}/
|
||||
|
||||
install-data-hook:
|
||||
test -d $(DESTDIR)${docdir} || mkdir -p $(DESTDIR)${docdir}
|
||||
chmod -R u+w $(DESTDIR)${docdir}
|
||||
cp -r html $(DESTDIR)${docdir}/
|
||||
|
||||
uninstall-hook:
|
||||
-chmod -R u+w $(DESTDIR)${docdir}
|
||||
-rm -rf $(DESTDIR)${docdir}/*
|
||||
|
66
makefile.am
66
makefile.am
@@ -1,63 +1,9 @@
|
||||
## @file
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
## $Date: 2008-08-26 13:09:21 $
|
||||
## $Author: marc $
|
||||
##
|
||||
## @copy © Marc Wäckerlin
|
||||
## @license LGPL, see file <a href="license.html">COPYING</a>
|
||||
##
|
||||
## @id $Id$
|
||||
#
|
||||
# This file has been added by bootstrap.sh on Wed, 11 Mar 2015 16:57:43 +0100
|
||||
# Feel free to change it or even remove and rebuild it, up to your needs
|
||||
#
|
||||
## 1 2 3 4 5 6 7 8
|
||||
## 45678901234567890123456789012345678901234567890123456789012345678901234567890
|
||||
|
||||
SUBDIRS = @SRC_DIR@ @TST_DIR@ @DOC_DIR@
|
||||
|
||||
nobase_include_HEADERS =
|
||||
|
||||
EXTRA_DIST = bootstrap.sh debian
|
||||
|
||||
DISTCLEANFILES = debian/changelog
|
||||
|
||||
deb: dist
|
||||
tar xzvf @PACKAGE_TARNAME@-@VERSION@.tar.gz
|
||||
cd @PACKAGE_TARNAME@-@VERSION@ && dpkg-buildpackage
|
||||
rm -rf @PACKAGE_TARNAME@-@VERSION@
|
||||
|
||||
doc_DATA = AUTHORS NEWS README COPYING INSTALL ChangeLog @PACKAGE_NAME@.spec
|
||||
|
||||
RPMS = /usr/src/packages/RPMS/i586/@PACKAGE_NAME@-@PACKAGE_VERSION@-1.i586.rpm \
|
||||
/usr/src/packages/RPMS/i586/@PACKAGE_NAME@-devel-@PACKAGE_VERSION@-1.i586.rpm \
|
||||
/usr/src/packages/SRPMS/@PACKAGE_NAME@-@PACKAGE_VERSION@-1.src.rpm
|
||||
|
||||
.PHONY: release tag rpm webserver \
|
||||
doc clean-local distclean-local dist-hool install-data-hook \
|
||||
uninstall-hook
|
||||
|
||||
release: tag webserver
|
||||
|
||||
rpm: dist
|
||||
cp @PACKAGE_NAME@-@PACKAGE_VERSION@.tar.gz \
|
||||
/usr/src/packages/SOURCES/
|
||||
rpmbuild -ba --clean @PACKAGE_NAME@.spec
|
||||
|
||||
deps = ${top_srcdir}/COPYING ${top_srcdir}/README ${top_srcdir}/INSTALL ${top_srcdir}/NEWS ${top_srcdir}/ChangeLog
|
||||
|
||||
clean-local:
|
||||
- rm doxygen.err lib@PACKAGE_NAME@.doxytag
|
||||
- rm @PACKAGE_NAME@-dev_@PACKAGE_VERSION@-*.deb \
|
||||
@PACKAGE_NAME@_@PACKAGE_VERSION@-*.changes \
|
||||
@PACKAGE_NAME@_@PACKAGE_VERSION@-1.tar.gz \
|
||||
@PACKAGE_NAME@_@PACKAGE_VERSION@-1.dsc \
|
||||
@PACKAGE_NAME@-@PACKAGE_VERSION@.tar.gz \
|
||||
@PACKAGE_NAME@_@PACKAGE_VERSION@-*.deb
|
||||
|
||||
distclean-local:
|
||||
- rm -r ${top_builddir}/@DOC_DIR@/html/* ${top_builddir}/@DOC_DIR@/latex/*
|
||||
- rm makefile makefile.in doxygen.err libmrw.doxytag
|
||||
- find . -name '*~' | xargs rm
|
||||
- rm -r autom4te.cache
|
||||
- rm aclocal.m4 config.guess config.sub configure depcomp \
|
||||
install-sh ltmain.sh makefile makefile.in missing \
|
||||
mkinstalldirs m4/libtool.m4 m4/ltoptions.m4 \
|
||||
m4/ltsugar.m4 m4/ltversion.m4 m4/lt~obsolete.m4 compile
|
||||
SUBDIRS = src doc examples
|
||||
|
@@ -5,10 +5,8 @@
|
||||
## 1 2 3 4 5 6 7 8
|
||||
## 45678901234567890123456789012345678901234567890123456789012345678901234567890
|
||||
|
||||
#MOC_FILES=moc_certimport.cxx
|
||||
include_HEADERS = pcsc.hxx cryptoki.hxx openssl.hxx cryptaux.hxx \
|
||||
openssl-engine.hxx suisseid.hxx cardos.hxx
|
||||
#certimport.hxx
|
||||
|
||||
noinst_HEADERS = cardgui.hxx cardgui-model.hxx
|
||||
|
||||
@@ -33,7 +31,6 @@ lib_LTLIBRARIES = libpcscxx.la
|
||||
|
||||
libpcscxx_la_SOURCES = cryptoki.cxx cryptoki.hxx pcsc.cxx version.cxx \
|
||||
openssl-engine.cxx
|
||||
#moc_certimport.cxx
|
||||
libpcscxx_la_LDFLAGS = -version-info ${LIB_VERSION}
|
||||
libpcscxx_la_LIBADD = -lssl -lcrypto
|
||||
if MINGW32
|
||||
@@ -58,9 +55,6 @@ endif
|
||||
noinst_PROGRAMS = versiontest
|
||||
versiontest_SOURCES = versiontest.cxx
|
||||
|
||||
clean-local:
|
||||
-rm -r ${QMAKE_TARGET}.app
|
||||
|
||||
CLEANFILES = ${MOC_FILES} ${BUILT_SOURCES}
|
||||
CLEANFILES = ${BUILT_SOURCES}
|
||||
DISTCLEANFILES = $(pkgconfig_DATA)
|
||||
MAINTAINERCLEANFILES = makefile.in
|
||||
|
Reference in New Issue
Block a user