## @file
##
## $Id$
##
## $Date$
## $Author$
##
## @copy &copy; Marc W&auml;ckerlin
## @license LGPL, see file <a href="license.html">COPYING</a>
##

AM_CPPFLAGS += -I${top_srcdir}

if HAVE_STACKTRACE
  AM_CPPFLAGS += -DHAVE_STACKTRACE
endif

CLEANFILES = doxygen.errors functiontrace_test.log \
             mrwautofunctiontracelog4cxx_test.log \
	     mrwautofunctiontracelog4cxx_test-mt.log
examplesdir = ${pkgdatadir}/examples
dist_examples_DATA = ${top_srcdir}/mrw/examples/*
htmldir = ${pkgdatadir}/doc/html
html_DATA = ${top_builddir}/doc/html/index.html
pdfdir =  ${pkgdatadir}/doc/pdf
dist_pdf_DATA = ${top_builddir}/doc/latex/@PACKAGENAME@-@MAJOR@.@MINOR@.@LEAST@.pdf

lib_LTLIBRARIES = libmrw.la
if HAVE_BOOST_THREAD
  lib_LTLIBRARIES += libmrw-mt.la
endif
if HAVE_STACKTRACE
 lib_LTLIBRARIES += libmrwexcstderr.la
if HAVE_THREADS
if HAVE_BOOST_THREAD
    lib_LTLIBRARIES += libmrwexcstderr-mt.la
endif
endif
if AUTOFNTRACE
    lib_LTLIBRARIES += libmrwautofunctiontracestdlog.la
if HAVE_THREADS
if HAVE_BOOST_THREAD
      lib_LTLIBRARIES += libmrwautofunctiontracestdlog-mt.la
endif
endif
endif
if HAVE_LOG4CXX
    lib_LTLIBRARIES += libmrwexclog4cxx.la \
                       libmrwlog4cxxconfiguration.la
if HAVE_THREADS
    lib_LTLIBRARIES += libmrwlog4cxxconfiguration-mt.la
if HAVE_BOOST_THREAD
    lib_LTLIBRARIES += libmrwexclog4cxx-mt.la
endif
endif
if AUTOFNTRACE
    lib_LTLIBRARIES += libmrwautofunctiontracelog4cxx.la
if HAVE_THREADS
if HAVE_BOOST_THREAD
      lib_LTLIBRARIES += libmrwautofunctiontracelog4cxx-mt.la
endif
endif
endif
endif
endif

libmrw_la_SOURCES = \
                    mrw.hpp version.cpp \
                    arg.cpp arg.hpp auto.hpp deque.hpp \
                    exception.cpp exception.hpp \
                    exec.cpp exec.hpp list.hpp \
                    map.hpp multimap.hpp multiset.hpp \
                    set.hpp \
                    smartpointer.hpp stdext.cpp stdext.hpp \
                    string.hpp unistd.hpp vector.hpp regexp.hpp regexp.cpp \
		    tokenizer.hpp configfile.hpp configfile.cpp file.hpp \
		    errno.hpp errno.cpp
if HAVE_LTDL
  libmrw_la_SOURCES += dynamiclibrary.hpp
endif
if HAVE_LOG4CXX
  libmrw_la_SOURCES += functiontrace.cpp functiontrace.hpp
endif
if HAVE_STACKTRACE
libmrw_la_SOURCES += \
                     stacktrace.hpp stacktrace.cpp
endif
libmrw_la_LDFLAGS = -version-info @LIB_VERSION@
libmrw_la_LIBADD = 
if HAVE_STACKTRACE
libmrw_la_LIBADD += -lltdl
endif

if HAVE_THREADS
if HAVE_BOOST_THREAD
  libmrw_mt_la_SOURCES = ${libmrw_la_SOURCES}
  libmrw_mt_la_CXXFLAGS = @THREADS@
  libmrw_mt_la_LDFLAGS = ${libmrw_la_LDFLAGS} -version-info @LIB_VERSION@ \
                         @THREADS@
  libmrw_mt_la_LIBADD  = ${libmrw_la_LIBADD} @BOOST_THREAD_LIB@
endif
endif

if HAVE_STACKTRACE
  libmrwexcstderr_la_SOURCES = autostacktracestderr.cpp version.cpp
  libmrwexcstderr_la_LDFLAGS = -version-info @LIB_VERSION@
  libmrwexcstderr_la_LIBADD = ${top_builddir}/mrw/libmrw.la
if HAVE_THREADS
if HAVE_BOOST_THREAD
    libmrwexcstderr_mt_la_SOURCES = autostacktracestderr.cpp version.cpp
    libmrwexcstderr_mt_la_CXXFLAGS = @THREADS@
    libmrwexcstderr_mt_la_LDFLAGS = -version-info @LIB_VERSION@ @THREADS@
    libmrwexcstderr_mt_la_LIBADD = ${top_builddir}/mrw/libmrw-mt.la
endif
endif

if AUTOFNTRACE
    libmrwautofunctiontracestdlog_la_SOURCES = autofunctiontracestdlog.cpp \
                                               version.cpp
    libmrwautofunctiontracestdlog_la_CXXFLAGS = -w
    libmrwautofunctiontracestdlog_la_LDFLAGS = -version-info @LIB_VERSION@
    libmrwautofunctiontracestdlog_la_LIBADD  = ${top_builddir}/mrw/libmrw.la
if HAVE_THREADS
if HAVE_BOOST_THREAD
      libmrwautofunctiontracestdlog_mt_la_SOURCES = \
        autofunctiontracelog4cxx.cpp  version.cpp
      libmrwautofunctiontracestdlog_mt_la_CXXFLAGS = @THREADS@ -w
      libmrwautofunctiontracestdlog_mt_la_LDFLAGS = \
        -version-info @LIB_VERSION@ @THREADS@
      libmrwautofunctiontracestdlog_mt_la_LIBADD  = \
        ${top_builddir}/mrw/libmrw-mt.la
endif
endif
endif
if HAVE_LOG4CXX
    libmrwexclog4cxx_la_SOURCES = autostacktracelog4cxx.cpp version.cpp
    libmrwexclog4cxx_la_LDFLAGS = -version-info @LIB_VERSION@
    libmrwexclog4cxx_la_LIBADD = ${top_builddir}/mrw/libmrw.la -llog4cxx
    libmrwlog4cxxconfiguration_la_SOURCES = log4cxxconfiguration.cpp version.cpp
    libmrwlog4cxxconfiguration_la_LDFLAGS = -version-info @LIB_VERSION@
    libmrwlog4cxxconfiguration_la_LIBADD = -llog4cxx
if HAVE_THREADS
if HAVE_BOOST_THREAD
      libmrwexclog4cxx_mt_la_SOURCES = autostacktracelog4cxx.cpp version.cpp
      libmrwexclog4cxx_mt_la_CXXFLAGS = @THREADS@
      libmrwexclog4cxx_mt_la_LDFLAGS = -version-info @LIB_VERSION@ @THREADS@
      libmrwexclog4cxx_mt_la_LIBADD = ${top_builddir}/mrw/libmrw-mt.la -llog4cxx
      libmrwlog4cxxconfiguration_mt_la_SOURCES = log4cxxconfiguration.cpp \
                                                 version.cpp
      libmrwlog4cxxconfiguration_mt_la_CXXFLAGS = @THREADS@
      libmrwlog4cxxconfiguration_mt_la_LDFLAGS = -version-info @LIB_VERSION@ \
                                                 @THREADS@
      libmrwlog4cxxconfiguration_mt_la_LIBADD = -llog4cxx
endif
endif

if AUTOFNTRACE
    libmrwautofunctiontracelog4cxx_la_SOURCES = autofunctiontracelog4cxx.cpp \
                                                version.cpp
    libmrwautofunctiontracelog4cxx_la_CXXFLAGS = -w
    libmrwautofunctiontracelog4cxx_la_LDFLAGS = -version-info @LIB_VERSION@
    libmrwautofunctiontracelog4cxx_la_LIBADD  = ${top_builddir}/mrw/libmrw.la -llog4cxx
if HAVE_THREADS
if HAVE_BOOST_THREAD
      libmrwautofunctiontracelog4cxx_mt_la_SOURCES = \
        autofunctiontracelog4cxx.cpp  version.cpp
      libmrwautofunctiontracelog4cxx_mt_la_CXXFLAGS = @THREADS@ -w
      libmrwautofunctiontracelog4cxx_mt_la_LDFLAGS = \
        -version-info @LIB_VERSION@ @THREADS@
      libmrwautofunctiontracelog4cxx_mt_la_LIBADD  = \
        ${top_builddir}/mrw/libmrw-mt.la -llog4cxx
endif
endif
endif
endif
endif

check_PROGRAMS = auto_test smartpointer_test exec_test stdext_test regexp_test \
                 tokenizer_test configfile_test string_test
if HAVE_LTDL
check_PROGRAMS += dynamiclibrary_test
endif
if HAVE_LOG4CXX
  check_PROGRAMS += functiontrace_test
endif
dist_check_SCRIPTS = configfile_check.sh
if HAVE_STACKTRACE
  check_PROGRAMS += stacktrace_test mrwexcstderr_test
if HAVE_LOG4CXX
    check_PROGRAMS += mrwexclog4cxx_test
if AUTOFNTRACE
      check_PROGRAMS += mrwautofunctiontracelog4cxx_test
if HAVE_THREADS
if HAVE_BOOST_THREAD
        check_PROGRAMS += mrwautofunctiontracelog4cxx_test-mt
endif
endif
endif
endif
endif
auto_test_SOURCES = auto_test.cpp version.cpp
auto_test_CPPFLAGS = -I${top_srcdir} @CPPUNIT_CFLAGS@ -g3 -O0
auto_test_CXXFLAGS = -g3 -O0
auto_test_LDFLAGS = @CPPUNIT_LIBS@
auto_test_LDADD = ${top_builddir}/mrw/libmrw.la
if HAVE_STACKTRACE
  auto_test_LDADD += ${top_builddir}/mrw/libmrwexcstderr.la
endif
smartpointer_test_SOURCES = smartpointer_test.cpp version.cpp
smartpointer_test_CPPFLAGS = -I${top_srcdir} @CPPUNIT_CFLAGS@ -g3 -O0
smartpointer_test_CXXFLAGS = -g3 -O0
smartpointer_test_LDFLAGS = @CPPUNIT_LIBS@
smartpointer_test_LDADD = ${top_builddir}/mrw/libmrw.la
if HAVE_STACKTRACE
  smartpointer_test_LDADD += ${top_builddir}/mrw/libmrwexcstderr.la
endif
exec_test_SOURCES = exec_test.cpp version.cpp
exec_test_CPPFLAGS = -I${top_srcdir} @CPPUNIT_CFLAGS@ -g3 -O0
exec_test_CXXFLAGS = -g3 -O0
exec_test_LDFLAGS = @CPPUNIT_LIBS@
exec_test_LDADD = ${top_builddir}/mrw/libmrw.la
if HAVE_STACKTRACE
  exec_test_LDADD += ${top_builddir}/mrw/libmrwexcstderr.la
endif
stdext_test_SOURCES = stdext_test.cpp version.cpp
stdext_test_CPPFLAGS = -I${top_srcdir} @CPPUNIT_CFLAGS@ -g3 -O0
stdext_test_CXXFLAGS = -g3 -O0
stdext_test_LDFLAGS = @CPPUNIT_LIBS@
stdext_test_LDADD = ${top_builddir}/mrw/libmrw.la
if HAVE_STACKTRACE
  stdext_test_LDADD += ${top_builddir}/mrw/libmrwexcstderr.la
endif
string_test_SOURCES = string_test.cpp version.cpp
string_test_CPPFLAGS = -I${top_srcdir} @CPPUNIT_CFLAGS@ -g3 -O0
string_test_CXXFLAGS = -g3 -O0
string_test_LDFLAGS = @CPPUNIT_LIBS@
string_test_LDADD = ${top_builddir}/mrw/libmrw.la
if HAVE_STACKTRACE
  string_test_LDADD += ${top_builddir}/mrw/libmrwexcstderr.la
endif
regexp_test_SOURCES = regexp_test.cpp version.cpp
regexp_test_CPPFLAGS = -I${top_srcdir} @CPPUNIT_CFLAGS@ -g3 -O0
regexp_test_CXXFLAGS = -g3 -O0
regexp_test_LDFLAGS = @CPPUNIT_LIBS@
regexp_test_LDADD = ${top_builddir}/mrw/libmrw.la
if HAVE_STACKTRACE
  regexp_test_LDADD += ${top_builddir}/mrw/libmrwexcstderr.la
endif
tokenizer_test_SOURCES = tokenizer_test.cpp version.cpp
tokenizer_test_CPPFLAGS = -I${top_srcdir} @CPPUNIT_CFLAGS@ -g3 -O0
tokenizer_test_CXXFLAGS = -g3 -O0
tokenizer_test_LDFLAGS = @CPPUNIT_LIBS@
tokenizer_test_LDADD = ${top_builddir}/mrw/libmrw.la
if HAVE_STACKTRACE
  tokenizer_test_LDADD += ${top_builddir}/mrw/libmrwexcstderr.la
endif
configfile_test_SOURCES = configfile_test.cpp version.cpp
configfile_test_CPPFLAGS = -I${top_srcdir} @CPPUNIT_CFLAGS@ -g3 -O0
configfile_test_CXXFLAGS = -g3 -O0
configfile_test_LDFLAGS = @CPPUNIT_LIBS@
configfile_test_LDADD = ${top_builddir}/mrw/libmrw.la
if HAVE_STACKTRACE
  configfile_test_LDADD += ${top_builddir}/mrw/libmrwexcstderr.la
endif
if HAVE_LTDL
  check_LTLIBRARIES = libdynamiclibrary_testlib.la
  libdynamiclibrary_testlib_la_SOURCES = dynamiclibrary_testlib.cpp
  libdynamiclibrary_testlib_la_LDFLAGS = -module -rpath /bullshit
  dynamiclibrary_test_SOURCES = dynamiclibrary_test.cpp version.cpp
  dynamiclibrary_test_CPPFLAGS = -I${top_srcdir} @CPPUNIT_CFLAGS@ -g3 -O0
  dynamiclibrary_test_CXXFLAGS = -g3 -O0
  dynamiclibrary_test_LDFLAGS = @CPPUNIT_LIBS@
  dynamiclibrary_test_LDADD = ${top_builddir}/mrw/libmrw.la -lltdl
endif
if HAVE_LOG4CXX
  functiontrace_test_SOURCES = functiontrace_test.cpp version.cpp
  functiontrace_test_CPPFLAGS = -I${top_srcdir} @CPPUNIT_CFLAGS@ -g3 -O0
  functiontrace_test_CXXFLAGS = -g3 -O0
  functiontrace_test_LDFLAGS = @CPPUNIT_LIBS@
  functiontrace_test_LDADD = ${top_builddir}/mrw/libmrw.la -llog4cxx
if HAVE_STACKTRACE
  functiontrace_test_LDADD += ${top_builddir}/mrw/libmrwexcstderr.la
endif
endif
if HAVE_STACKTRACE
  stacktrace_test_SOURCES = stacktrace_test.cpp version.cpp
  stacktrace_test_CPPFLAGS = -I${top_srcdir} @CPPUNIT_CFLAGS@ -g3 -O0
  stacktrace_test_CXXFLAGS = -g3 -O0
  stacktrace_test_LDFLAGS = @CPPUNIT_LIBS@
  stacktrace_test_LDADD = ${top_builddir}/mrw/libmrw.la ${top_builddir}/mrw/libmrwexcstderr.la
  mrwexcstderr_test_SOURCES = mrwexcstderr_test.cpp version.cpp
  mrwexcstderr_test_CPPFLAGS = -I${top_srcdir} @CPPUNIT_CFLAGS@ -g3 -O0
  mrwexcstderr_test_CXXFLAGS = -g3 -O0
  mrwexcstderr_test_LDFLAGS = @CPPUNIT_LIBS@
  mrwexcstderr_test_LDADD = ${top_builddir}/mrw/libmrwexcstderr.la
if HAVE_LOG4CXX
    mrwexclog4cxx_test_SOURCES = mrwexclog4cxx_test.cpp version.cpp
    mrwexclog4cxx_test_CPPFLAGS = -I${top_srcdir} @CPPUNIT_CFLAGS@ -g3 -O0
    mrwexclog4cxx_test_CXXFLAGS = -g3 -O0
    mrwexclog4cxx_test_LDFLAGS = @CPPUNIT_LIBS@
    mrwexclog4cxx_test_LDADD = ${top_builddir}/mrw/libmrwexclog4cxx.la -llog4cxx
if AUTOFNTRACE
      mrwautofunctiontracelog4cxx_test_SOURCES = \
        mrwautofunctiontracelog4cxx_test.cpp version.cpp
      mrwautofunctiontracelog4cxx_test_CPPFLAGS = \
        -I${top_srcdir} @CPPUNIT_CFLAGS@ -finstrument-functions -g3 -O0
      mrwautofunctiontracelog4cxx_test_CXXFLAGS = -g3 -O0 -finstrument-functions
      mrwautofunctiontracelog4cxx_test_LDFLAGS = \
        @CPPUNIT_LIBS@ -finstrument-functions
      mrwautofunctiontracelog4cxx_test_LDADD = \
        -llog4cxx ${top_builddir}/mrw/libmrwautofunctiontracelog4cxx.la
if HAVE_THREADS
if HAVE_BOOST_THREAD
        mrwautofunctiontracelog4cxx_test_mt_SOURCES = \
          mrwautofunctiontracelog4cxx_test.cpp version.cpp
        mrwautofunctiontracelog4cxx_test_mt_CPPFLAGS = \
          -I${top_srcdir} @CPPUNIT_CFLAGS@ -finstrument-functions -g3 -O0
        mrwautofunctiontracelog4cxx_test_mt_CXXFLAGS = -g3 -O0 \
	  -finstrument-functions @THREADS@
        mrwautofunctiontracelog4cxx_test_mt_LDFLAGS = \
          @CPPUNIT_LIBS@ @THREADS@ -finstrument-functions
        mrwautofunctiontracelog4cxx_test_mt_LDADD = \
          -llog4cxx ${top_builddir}/mrw/libmrwautofunctiontracelog4cxx-mt.la @BOOST_THREAD_LIB@
endif
endif
endif
endif
endif

dist_check_DATA = test.dat configfile.ini configfile.ini.result
EXTRA_DIST = head.html foot.html style.css
TESTS = ${check_PROGRAMS} ${dist_check_SCRIPTS}

.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

doc: ${top_builddir}/doc/html/index.html ${top_builddir}/doc/latex/@PACKAGENAME@-@MAJOR@.@MINOR@.@LEAST@.pdf

${html_DATA}: doxyfile *.[ch]pp ${deps} style.css head.html foot.html
	test -d ${top_builddir}/doc/latex || mkdir -p ${top_builddir}/doc/latex
	test -d ${top_builddir}/doc/html || mkdir -p ${top_builddir}/doc/html
	@test -f ${top_builddir}/doc/html/hintergrund.png || \
	  cp ~/www/marc/linux/hintergrund.png \
	  ${top_builddir}/doc/html || \
	  ( \
	    echo "**** sorry, you are missing the html background image"; \
	    echo "     (after distclean doc/html/hintergrund.png is deleted)" \
	  )
	doxygen doxyfile
if PEDANTIC
	test \! -s doxygen.errors
endif

${top_builddir}/doc/latex/@PACKAGENAME@-@MAJOR@.@MINOR@.@LEAST@.pdf: doxyfile *.[ch]pp ${deps} ${html_DATA}
	cd ${top_builddir}/doc/latex && make && \
	  mv refman.pdf @PACKAGENAME@-@MAJOR@.@MINOR@.@LEAST@.pdf

clean-local:
	- rm doxygen.err libmrw.doxytag

distclean-local:
	- rm -r ${top_builddir}/doc/html/* ${top_builddir}/doc/latex/*
	- rm makefile makefile.in doxygen.err libmrw.doxytag

dist-hook:
	test -d ${distdir}/doc/html || \
	  mkdir -p ${distdir}/doc/html
	cp ${top_builddir}/doc/html/* ${distdir}/doc/html/.

install-data-hook:
	chmod -R u+w ${pkgdatadir}/doc
	cp -rf ${top_builddir}/doc/html ${pkgdatadir}/doc/

uninstall-hook:
	chmod -R u+w ${pkgdatadir}/doc
	rm -rf ${pkgdatadir}/doc/html
