## @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

EXTRA_DIST = head.html foot.html style.css hintergrund.png
CLEANFILES = doxygen.errors functiontrace_test.log \
             mrwautofunctiontracelog4cxx_test.log \
	     mrwautofunctiontracelog4cxx_test-mt.log \
	     $(VALTESTS) valgrind.log
examplesdir = $(pkgdatadir)/examples
dist_examples_DATA = $(top_srcdir)/mrw/examples/*
htmldir = $(pkgdatadir)/doc/html
pdfdir =  $(pkgdatadir)/doc/pdf
if HAVE_DOXYGEN
html_DATA = $(top_builddir)/doc/html/index.html
pdf_DATA = $(top_builddir)/doc/latex/@PACKAGE_NAME@-@PACKAGE_VERSION@.pdf
EXTRA_DIST += $(pdf_DATA)
endif

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
if HAVE_BOOST_THREAD
    lib_LTLIBRARIES += libmrwexclog4cxx-mt.la
endif
if AUTOFNTRACE
    lib_LTLIBRARIES += libmrwautofunctiontracelog4cxx.la
if HAVE_THREADS
if HAVE_BOOST_THREAD
      lib_LTLIBRARIES += libmrwautofunctiontracelog4cxx-mt.la
endif
endif
endif
endif
endif
if HAVE_LOG4CXX
    lib_LTLIBRARIES += libmrwlog4cxxconfiguration.la
if HAVE_THREADS
    lib_LTLIBRARIES += libmrwlog4cxxconfiguration-mt.la
endif
endif

libmrw_la_SOURCES = \
                    mrw.hxx version.cxx \
                    arg.cxx arg.hxx auto.hxx deque.hxx \
                    exception.cxx exception.hxx \
                    list.hxx \
                    map.hxx multimap.hxx multiset.hxx \
                    set.hxx \
                    smartpointer.hxx stdext.cxx stdext.hxx \
                    string.hxx unistd.hxx vector.hxx \
		    tokenizer.hxx \
		    errno.hxx errno.cxx
if HAVE_DIR
  libmrw_la_SOURCES += file.hxx configfile.hxx configfile.cxx
endif
if HAVE_REGEXP
  libmrw_la_SOURCES += regexp.hxx regexp.cxx
endif
if HAVE_EXEC
  libmrw_la_SOURCES += exec.cxx exec.hxx
endif
if HAVE_LTDL
  libmrw_la_SOURCES += dynamiclibrary.hxx
endif
if HAVE_LOG4CXX
  libmrw_la_SOURCES += functiontrace.cxx functiontrace.hxx
endif
if HAVE_STACKTRACE
libmrw_la_SOURCES += \
                     stacktrace.hxx stacktrace.cxx
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.cxx version.cxx
  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.cxx version.cxx
    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.cxx \
                                               version.cxx
    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.cxx  version.cxx
      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.cxx version.cxx
    libmrwexclog4cxx_la_LDFLAGS = -version-info @LIB_VERSION@
    libmrwexclog4cxx_la_LIBADD = $(top_builddir)/mrw/libmrw.la -llog4cxx
if HAVE_THREADS
if HAVE_BOOST_THREAD
      libmrwexclog4cxx_mt_la_SOURCES = autostacktracelog4cxx.cxx version.cxx
      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
endif
endif
if AUTOFNTRACE
    libmrwautofunctiontracelog4cxx_la_SOURCES = autofunctiontracelog4cxx.cxx \
                                                version.cxx
    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.cxx  version.cxx
      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
if HAVE_LOG4CXX
  libmrwlog4cxxconfiguration_la_SOURCES = log4cxxconfiguration.cxx version.cxx
  libmrwlog4cxxconfiguration_la_LDFLAGS = -version-info @LIB_VERSION@
  libmrwlog4cxxconfiguration_la_LIBADD = -llog4cxx
if HAVE_THREADS
    libmrwlog4cxxconfiguration_mt_la_SOURCES = log4cxxconfiguration.cxx \
                                               version.cxx
    libmrwlog4cxxconfiguration_mt_la_CXXFLAGS = @THREADS@
    libmrwlog4cxxconfiguration_mt_la_LDFLAGS = -version-info @LIB_VERSION@ \
                                               @THREADS@
    libmrwlog4cxxconfiguration_mt_la_LIBADD = -llog4cxx
endif
endif

VALGRIND_CHECKS = auto_test smartpointer_test stdext_test \
                 tokenizer_test string_test
NO_VALGRIND_CHECKS = 
if HAVE_DIR
  VALGRIND_CHECKS += configfile_test
  dist_check_SCRIPTS = configfile_check.sh
endif
if HAVE_REGEXP
  VALGRIND_CHECKS += regexp_test
endif
if HAVE_EXEC
  VALGRIND_CHECKS += exec_test
endif
if HAVE_LTDL
  VALGRIND_CHECKS += dynamiclibrary_test
endif
if HAVE_LOG4CXX
  VALGRIND_CHECKS += functiontrace_test
endif
if HAVE_STACKTRACE
  NO_VALGRIND_CHECKS += stacktrace_test
  VALGRIND_CHECKS += mrwexcstderr_test
if HAVE_LOG4CXX
    VALGRIND_CHECKS += mrwexclog4cxx_test
if AUTOFNTRACE
      NO_VALGRIND_CHECKS += mrwautofunctiontracelog4cxx_test
if HAVE_THREADS
if HAVE_BOOST_THREAD
        NO_VALGRIND_CHECKS += mrwautofunctiontracelog4cxx_test-mt
endif
endif
endif
endif
endif

auto_test_SOURCES = auto_test.cxx version.cxx
auto_test_CPPFLAGS = -I$(top_srcdir) @CPPUNIT_CFLAGS@ -g3 -O0
auto_test_CXXFLAGS = -g3 -O0
auto_test_LDFLAGS = @CPPUNIT_LIBS@ -L.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.cxx version.cxx
smartpointer_test_CPPFLAGS = -I$(top_srcdir) @CPPUNIT_CFLAGS@ -g3 -O0
smartpointer_test_CXXFLAGS = -g3 -O0
smartpointer_test_LDFLAGS = @CPPUNIT_LIBS@ -L.libs
smartpointer_test_LDADD = $(top_builddir)/mrw/libmrw.la
if HAVE_STACKTRACE
  smartpointer_test_LDADD += $(top_builddir)/mrw/libmrwexcstderr.la
endif
if HAVE_EXEC
exec_test_SOURCES = exec_test.cxx version.cxx
exec_test_CPPFLAGS = -I$(top_srcdir) @CPPUNIT_CFLAGS@ -g3 -O0
exec_test_CXXFLAGS = -g3 -O0
exec_test_LDFLAGS = @CPPUNIT_LIBS@ -L.libs
exec_test_LDADD = $(top_builddir)/mrw/libmrw.la
if HAVE_STACKTRACE
  exec_test_LDADD += $(top_builddir)/mrw/libmrwexcstderr.la
endif
endif
stdext_test_SOURCES = stdext_test.cxx version.cxx
stdext_test_CPPFLAGS = -I$(top_srcdir) @CPPUNIT_CFLAGS@ -g3 -O0
stdext_test_CXXFLAGS = -g3 -O0
stdext_test_LDFLAGS = @CPPUNIT_LIBS@ -L.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.cxx version.cxx
string_test_CPPFLAGS = -I$(top_srcdir) @CPPUNIT_CFLAGS@ -g3 -O0
string_test_CXXFLAGS = -g3 -O0
string_test_LDFLAGS = @CPPUNIT_LIBS@ -L.libs
string_test_LDADD = $(top_builddir)/mrw/libmrw.la
if HAVE_STACKTRACE
  string_test_LDADD += $(top_builddir)/mrw/libmrwexcstderr.la
endif
if HAVE_REGEXP
  regexp_test_SOURCES = regexp_test.cxx version.cxx
  regexp_test_CPPFLAGS = -I$(top_srcdir) @CPPUNIT_CFLAGS@ -g3 -O0
  regexp_test_CXXFLAGS = -g3 -O0
  regexp_test_LDFLAGS = @CPPUNIT_LIBS@ -L.libs
  regexp_test_LDADD = $(top_builddir)/mrw/libmrw.la
if HAVE_STACKTRACE
    regexp_test_LDADD += $(top_builddir)/mrw/libmrwexcstderr.la
endif
endif
tokenizer_test_SOURCES = tokenizer_test.cxx version.cxx
tokenizer_test_CPPFLAGS = -I$(top_srcdir) @CPPUNIT_CFLAGS@ -g3 -O0
tokenizer_test_CXXFLAGS = -g3 -O0
tokenizer_test_LDFLAGS = @CPPUNIT_LIBS@ -L.libs
tokenizer_test_LDADD = $(top_builddir)/mrw/libmrw.la
if HAVE_STACKTRACE
  tokenizer_test_LDADD += $(top_builddir)/mrw/libmrwexcstderr.la
endif
if HAVE_DIR
  configfile_test_SOURCES = configfile_test.cxx version.cxx
  configfile_test_CPPFLAGS = -I$(top_srcdir) @CPPUNIT_CFLAGS@ -g3 -O0
  configfile_test_CXXFLAGS = -g3 -O0
  configfile_test_LDFLAGS = @CPPUNIT_LIBS@ -L.libs
  configfile_test_LDADD = $(top_builddir)/mrw/libmrw.la
if HAVE_STACKTRACE
    configfile_test_LDADD += $(top_builddir)/mrw/libmrwexcstderr.la
endif
endif
if HAVE_LTDL
  check_LTLIBRARIES = libdynamiclibrary_testlib.la
  libdynamiclibrary_testlib_la_SOURCES = dynamiclibrary_testlib.cxx
  libdynamiclibrary_testlib_la_LDFLAGS = -module -rpath /bullshit
  dynamiclibrary_test_SOURCES = dynamiclibrary_test.cxx version.cxx
  dynamiclibrary_test_CPPFLAGS = -I$(top_srcdir) @CPPUNIT_CFLAGS@ -g3 -O0
  dynamiclibrary_test_CXXFLAGS = -g3 -O0
  dynamiclibrary_test_LDFLAGS = @CPPUNIT_LIBS@ -L.libs
  dynamiclibrary_test_LDADD = $(top_builddir)/mrw/libmrw.la -lltdl
endif
if HAVE_LOG4CXX
  functiontrace_test_SOURCES = functiontrace_test.cxx version.cxx
  functiontrace_test_CPPFLAGS = -I$(top_srcdir) @CPPUNIT_CFLAGS@ -g3 -O0
  functiontrace_test_CXXFLAGS = -g3 -O0
  functiontrace_test_LDFLAGS = @CPPUNIT_LIBS@ -L.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.cxx version.cxx
  stacktrace_test_CPPFLAGS = -I$(top_srcdir) @CPPUNIT_CFLAGS@ -g3 -O0
  stacktrace_test_CXXFLAGS = -g3 -O0
  stacktrace_test_LDFLAGS = @CPPUNIT_LIBS@ -L.libs
  stacktrace_test_LDADD = $(top_builddir)/mrw/libmrw.la $(top_builddir)/mrw/libmrwexcstderr.la
  mrwexcstderr_test_SOURCES = mrwexcstderr_test.cxx version.cxx
  mrwexcstderr_test_CPPFLAGS = -I$(top_srcdir) @CPPUNIT_CFLAGS@ -g3 -O0
  mrwexcstderr_test_CXXFLAGS = -g3 -O0
  mrwexcstderr_test_LDFLAGS = @CPPUNIT_LIBS@ -L.libs
  mrwexcstderr_test_LDADD = $(top_builddir)/mrw/libmrwexcstderr.la
if HAVE_LOG4CXX
    mrwexclog4cxx_test_SOURCES = mrwexclog4cxx_test.cxx version.cxx
    mrwexclog4cxx_test_CPPFLAGS = -I$(top_srcdir) @CPPUNIT_CFLAGS@ -g3 -O0
    mrwexclog4cxx_test_CXXFLAGS = -g3 -O0
    mrwexclog4cxx_test_LDFLAGS = @CPPUNIT_LIBS@ -L.libs
    mrwexclog4cxx_test_LDADD = $(top_builddir)/mrw/libmrwexclog4cxx.la -llog4cxx
if AUTOFNTRACE
      mrwautofunctiontracelog4cxx_test_SOURCES = \
        mrwautofunctiontracelog4cxx_test.cxx version.cxx
      mrwautofunctiontracelog4cxx_test_CPPFLAGS = \
        -I$(top_srcdir) @CPPUNIT_CFLAGS@ -finstrument-functions -g3 -O0
      mrwautofunctiontracelog4cxx_test_CXXFLAGS = -g3 -O0 -finstrument-functions
      mrwautofunctiontracelog4cxx_test_LDFLAGS = \
        @CPPUNIT_LIBS@ -L.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.cxx version.cxx
        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@ -L.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
if HAVE_VALGRIND
VALTESTS=$(VALGRIND_CHECKS:%=valcheck_%)
TESTS = $(VALTESTS) $(NO_VALGRIND_CHECKS) $(dist_check_SCRIPTS)
valcheck_%: %
	echo "LD_LIBRARY_PATH=.libs $(top_srcdir)/valcheck.sh .libs/$<" > $@
	chmod ugo+x $@
else
TESTS = $(check_PROGRAMS) $(dist_check_SCRIPTS)
endif
check_PROGRAMS = $(VALGRIND_CHECKS) $(NO_VALGRIND_CHECKS)

.PHONY: doc clean-local distclean-local dist-hook install-data-hook \
        uninstall-hook

deps = $(top_srcdir)/COPYING $(top_srcdir)/README $(top_srcdir)/INSTALL $(top_srcdir)/NEWS $(top_srcdir)/ChangeLog

doc: $(html_DATA) $(pdf_DATA)

$(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 $(srcdir)/hintergrund.png \
	  $(top_builddir)/doc/html && \
	  chmod u+w $(top_builddir)/doc/html/hintergrund.png
	doxygen doxyfile || \
	  ( echo "**** ERROR in Doxygen ****" && cat doxygen.errors && false )
if PEDANTIC
	test \! -s doxygen.errors
endif

$(pdf_DATA): doxyfile *.[ch]pp $(deps) $(html_DATA)
	cd $(top_builddir)/doc/latex && make && \
	  mv refman.pdf $(pdf_DATA) || \
	  ( echo "**** ERROR in Doxygen-PDF ****" && false )

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

if HAVE_DOXYGEN
dist-hook:
	test -d $(distdir)/doc/html || \
	  mkdir -p $(distdir)/doc/html
	cp $(top_builddir)/doc/html/* $(distdir)/doc/html/.

install-data-hook:
	env | grep -i tmp
	test -d "$(DESTDIR)$(pkgdatadir)/doc" || \
	  mkdir -p "$(DESTDIR)$(pkgdatadir)/doc"
	chmod -R u+w "$(DESTDIR)$(pkgdatadir)/doc"
	cp -rf $(top_builddir)/doc/html "$(DESTDIR)$(pkgdatadir)/doc/"

uninstall-hook:
	chmod -R u+w "$(DESTDIR)$(pkgdatadir)/doc"
	rm -rf "$(DESTDIR)$(pkgdatadir)/doc/html"
endif
