C++ Library containing a lot of needful things: Stack Trace, Command Line Parser, Resource Handling, Configuration Files, Unix Command Execution, Directories, Regular Expressions, Tokenizer, Function Trace, Standard Extensions.
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.

186 lines
6.7 KiB

## @file
##
## $Id$
##
## $Date$
## $Author$
##
## @copy © Marc Wäckerlin
## @license LGPL, see file <a href="license.html">COPYING</a>
##
21 years ago
# init
AC_INIT([mrw/mrw.hpp.in])
PACKAGENAME=mrw-c++
20 years ago
m4_define(x_major, 2)
m4_define(x_minor, 1)
m4_define(x_least, 1)
AM_INIT_AUTOMAKE(@PACKAGENAME@, @MAJOR@.@MINOR@.@LEAST@, [marc@waeckerlin.org])
# copy M4 to shell
MAJOR=x_major
MINOR=x_minor
LEAST=x_least
AC_SUBST(MAJOR)
AC_SUBST(MINOR)
AC_SUBST(LEAST)
# 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)
21 years ago
# macros
README=README
AC_SUBST_FILE(README)
CHANGE_LOG=ChangeLog
AC_SUBST_FILE(CHANGE_LOG)
# Get rid of that stupid -O2 -g opions!
CXXFLAGS="${CXXFLAGS:-}"
# languages
AC_LANG(C++)
# 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)
21 years ago
# solaris?
AC_CHECK_HEADER(sys/old_procfs.h, [AM_CPPFLAGS=-D__solaris__])
# libraries
AC_CHECK_HEADER(log4cxx/logger.h, [have_log4cxx=yes])
20 years ago
AC_CHECK_HEADER(ltdl.h, [have_ltdl=yes])
# Arguments
AM_MAINTAINER_MODE
AC_ARG_ENABLE(threads,
[ --disable-threads disable multithreading],
[with_threads="$enableval"], [with_threads="yes"])
THREADS="-pthread"
AM_CONDITIONAL(HAVE_THREADS, test "$with_threads" == "yes")
AC_ARG_ENABLE(autofntrace,
[ --disable-autofntrace disable automated function trace (requires gcc)],
[with_autofntrace="$enableval"], [with_autofntrace="yes"])
AM_CONDITIONAL(AUTOFNTRACE, test "$with_autofntrace" == "yes" -a -n "$GCC")
21 years ago
AC_ARG_ENABLE(pedantic,
[ --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,
[ --disable-dot disable dot graphic tools for documentation],
[have_dot="$enableval"])
test "$enableval" = "yes" && HAVE_DOT="YES" || HAVE_DOT="NO";
AC_ARG_ENABLE(log4cxx,
[ --disable-log4cxx disable use of log4cxx library in automated
stack trace],
[have_log4cxx="$enableval"])
AM_CONDITIONAL(HAVE_LOG4CXX, test "$have_log4cxx" = "yes")
20 years ago
AC_ARG_ENABLE(ltdl,
[ --disable-ltdl disable use of libtool library dynamic loading
Note: For automated stack trace, you need ltdl],
[have_ltdl="$enableval"])
AM_CONDITIONAL(HAVE_LTDL, test "$have_ltdl" = "yes")
AC_ARG_ENABLE(stacktrace,
[ --disable-stacktrace disable stack trace, use this if you cannot
compile the library on your system otherwise and
you still want to use the other parts],
20 years ago
[have_stacktrace="$enableval"], [have_stacktrace=$have_ltdl])
AM_CONDITIONAL(HAVE_STACKTRACE, test "$have_stacktrace" = "yes")
if test "$have_stacktrace" = "yes"; then
AC_SEARCH_LIBS(cplus_demangle, [demangle iberty],
[AC_MSG_RESULT([OK, found cplus_demangle])],
[AC_MSG_ERROR([Function cplus_demangle not found!
- I looked in libdemangle and libiberty
- Try "ls -l /usr/lib/libdemangle* /usr/lib/libiberty*"
- is one of them installed?
- If yes, try: "nm <filename> | grep cplus_demangle"
-> is the symbol defined?
- Try to compile with option --disable-stacktrace
If you are not a developer, you perhaps don't need it...?])])
fi
AC_ARG_WITH([boost-thread],AS_HELP_STRING([--with-boost-thread],
[specify the boost thread library or suffix to use]),
[if test "$with_boost_thread" != "no"; then
if test "$with_boost_thread" != "yes"; then
chk_libs="$with_boost_thread boost_thread-$with_boost_thread"
else
chk_libs="boost_thread boost_thread-mt boost_thread-gcc-mt"
fi
else
chk_libs=""
fi],
[chk_libs="boost_thread boost_thread-mt boost_thread-gcc-mt"])
for ax_lib in $chk_libs; do
AC_CHECK_LIB($ax_lib, main, [BOOST_THREAD_LIB="-l$ax_lib" break])
done
AC_SUBST(BOOST_THREAD_LIB)
AM_CONDITIONAL(HAVE_BOOST_THREAD, test -n "$BOOST_THREAD_LIB")
20 years ago
AM_PATH_CPPUNIT([1.0.0], [have_cppunit="yes"], [have_cppunit="no"])
# export macros
AC_SUBST(HAVE_DOT)
AC_SUBST(THREADS)
AC_SUBST(PACKAGENAME)
21 years ago
AC_SUBST(AM_CXXFLAGS)
AC_SUBST(AM_CPPFLAGS)
AC_SUBST(LIBS)
# create output
AC_CONFIG_FILES([makefile mrw-c++.spec
mrw/makefile mrw/doxyfile mrw/mrw.hpp mrw/version.cpp])
21 years ago
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
20 years ago
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
if test "$with_threads" == "no"; then
AC_MSG_WARN([Multithreading support is disabled!
- use --enable-threads to enable it
- actually, there's only support for automated function trace]); fi
if test "$have_log4cxx" != "yes"; then
AC_MSG_WARN([Library log4cxx will not be used!
- if you want it, download it from:
http://logging.apache.org/log4cxx]); fi
if test "$have_stacktrace" != "yes"; then
AC_MSG_WARN([mrw::StackTrace is disabled!]); fi
20 years ago
if test "$have_ltdl" != "yes"; then
AC_MSG_ERROR([mrw::DynamicLibrary dynamic library loading is disabled!
- mrw::StackTrace is disabled without mrw::DynamicLibrary
- install the GNU libtool, if you need mrw::DynamicLibrary]);fi
if test "$with_autofntrace" != "yes" -o -z "$GCC"; then
AC_MSG_WARN([Automated GNU gcc function tracing is disabled!
- libmrwautofunctiontracelog4cxx won't be built]);fi
if test -z "$BOOST_THREAD_LIB"; then
AC_MSG_WARN([Boost thread library not found!
- multithreading is based on boost thread library
- support for multithreading is disabled
- try to pass the library name, e.g.
--with-boost-thread=boost_thread-icc-mt]);fi