Commit 94eb4f4a authored by Jorrit Fahlke's avatar Jorrit Fahlke

scrap outdated branch

[[Imported from SVN: r5756]]
parent 023a0161
Makefile
Makefile.in
config.*
configure
aclocal.m4
autom4te.cache
depcomp
install-sh
missing
mkinstalldirs
libtool
dune-common.pc
semantic.cache
configure.lineno
stamp-h1
dune-common-*.tar.gz
dune-common-?.?
ltmain.sh
dune
.libs
dependencies.m4
This diff is collapsed.
Installation Instructions
=========================
For a full explanation of the DUNE installation process please read
the installation notes [0]. The following introduction is meant for
the impatient.
Getting started
---------------
Suppose you have downloaded all DUNE modules of interest to your
computer and extracted then in one common directory. See [1] for a
list of available modules.
To compile the modules Dune has to check several components of
your system and whether prerequisites within the modules are met. For
the ease of users we have designed a custom build system on top of the
automake tools. Run
./dune-common/bin/dunecontrol all
to commence those tests and build all modules you have
downloaded. Don't worry about messages telling you that libraries are
missing: they are only needed for grid-self-checks we need for
developing.
You can customize the build to your specific needs by using an options file
(see below)
./dune-common/bin/dunecontrol --opts=/path_to/file.opts
If you did not tell dunecontrol to install with an options file you
need to run
./dune-common/bin/dunecontrol make install
to install Dune (you may need root-permissions for the install
part depending on the prefix set)
A more comprehensive introduction to the build system can be found in [2].
Passing options to the build process
------------------------------------
Using the dunecontrol script the following atomic commands can be
executed:
- autogen (runs autogen in each module, only needed when downloaded
via svn)
- configure (runs the configure tests for each module
- exec (executes a command in each module directory)
- make (runs make for each module)
- update (updates the svn version)
The composite command all simply runs autogen, configure and make for
each module.
As it is often not convenient (and for the target all impossible) to
specify the options for each command as parameters after the call, one
can pass the options via file specified by the --opts=<file>
option. For each atomic command one specify the options via a ine
<COMMANY_UPPERCASE>_FLAGS=<flags> # e.g.: MAKE_FLAGS=install
The available options for make and svn are the natural ones. The
configure commands available can be found by issuing
dunecontrol --only=dune-common configure --help
and for autogen by
dunecontrol --only=dune-common autogen --help
(In the svn version this has to be calles after running autogen.)
An example of an options file is
# use a special compiler (g++ version 3.4) and install to a custom
# directory, default is /usr/local/bin
CONFIGURE_FLAGS="CXX=g++-3.4 --prefix='/tmp/Hu Hu'"
# Set the default target of make to install. Now the call above will
# not just build the DUNE modules but also install it
MAKE_FLAGS=install
# The default versions of automake and autogen are not sufficient
# therefore we need to specify what versions to use
AUTOGEN_FLAGS="--ac=2.59 --am=1.9
Links
-----
0. http://www.dune-project.org/doc/installation-notes.html
1. http://www.dune-project.org/download.html
2. http://dune-project.org/doc/buildsystem/buildsystem.pdf
# $Id$
# we need the module file to be able to build via dunecontrol
EXTRA_DIST=dune.module
# don't follow the full GNU-standard
# need automake >= 1.5
AUTOMAKE_OPTIONS = foreign 1.5
SUBDIRS = common lib doc bin m4 am
sourcescheck_NOSOURCES=aclocal.m4 dependencies.m4
# use configured compiler for "make distcheck"
DISTCHECK_CONFIGURE_FLAGS = CXX="$(CXX)" CC="$(CC)" --enable-parallel=@ENABLE_PARALLEL@ MPICC="$(MPICC)"
include $(top_srcdir)/am/top-rules
include $(top_srcdir)/am/global-rules
DUNE-library
============
DUNE, the Distributed and Unified Numerics Environment is a modular toolbox
for solving partial differential equations with grid-based methods.
The main intention is to create slim interfaces allowing an efficient use of
legacy and/or new libraries. Using C++ techniques DUNE allows to use very
different implementation of the same concept (i.e. grid, solver, ...) under
a common interface with a very low overhead.
DUNE was designed with flexibility in mind. It supports easy discretization
using methods, like Finite Elements, Finite Volume and also Finite
Differences. Through separation of data structures DUNE allows fast Linear
Algebra like provided in the ISTL module, or usage of external libraries
like blas.
This package contains the basic DUNE common classes.
Dependencies
------------
dune-common depends on the following software packages
- pkg-config
- icc (C/C++) >= 7.0 or GNU C, C++ >=3.4
The following software is recommend but optional:
- MPI (either OpenMPI, lam, or mpich suffice)
For a full explanation of the DUNE installation process please read
the installation notes [0]. The following introduction is meant for
the impatient.
License
-------
The DUNE-library and headers are licensed under version 2 of the GNU
General Public License, with the so-called "runtime exception", as
follows:
As a special exception, you may use the DUNE source files as part
of a software library or application without restriction.
Specifically, if other files instantiate templates or use macros or
inline functions from one or more of the DUNE source files, or you
compile one or more of the DUNE source files and link them with
other files to produce an executable, this does not by itself cause
the resulting executable to be covered by the GNU General Public
License. This exception does not however invalidate any other
reasons why the executable file might be covered by the GNU General
Public License.
This licence clones the one of the libstc++ library. For further
implications of this library please see their licence page [3]
See the file COPYING for full copying permissions.
Installation
------------
Short installation instructions can be found in file INSTALL. For the
full instructions please see [0].
Links
-----
0. http://www.dune-project.org/doc/installation-notes.html
1. http://www.dune-project.org/download.html
2. http://dune-project.org/doc/buildsystem/buildsystem.pdf
3. http://gcc.gnu.org/onlinedocs/libstdc++/17_intro/license.html
Preparing the SVN-sources
=========================
Additional to the software mentioned in README you'll need the
following programs installed on your system:
automake >= 1.5
autoconf >= 2.50
libtool
For the documentation to build you'll need doxygen, wml, convert and latex
installed.
Dune also features a self-test. As some grid-components (e.g. Albert,
UG) depend on external libraries their self-tests will only run if
those libraries are found. The pathes would then need to be passed via
--with-...= parameters.
Important! If you don't want to develop Dune itself you won't need to
provide external components! The Dune-library and -headers are
independent of other libraries, instead the applications can choose
what parts to use.
$Id$
- nach perl und makedepend suchen (für undefAllMacros.pl)
- doxygen configuration files
- Installation doku in docs
- operator schnittstelle erweitern, damit man mehr Informationen
übergeben kann
Makefile
Makefile.in
semantic.cache
\ No newline at end of file
# $Id$
EXTRA_DIST = inkscape.am webstuff global-rules sourcescheck \
no-check-without-lib latex checklog doxygen top-rules \
headercheck
amdir = $(datadir)/dune-common/am
am_DATA = $(EXTRA_DIST)
include $(top_srcdir)/am/global-rules
# -*- Makefile -*-
# $Id$
LOG_FILE = $(top_srcdir)/check-log.log
LOG_DIR = $(top_srcdir)/check-log
LOG_STORE = $(SHELL) $(DUNE_COMMON_ROOT)/bin/check-log-store $(LOG_FILE) $(LOG_DIR)
LOG_SET_OPTIONS = \
path=`test "$(subdir)" = "." && \
echo "/@PACKAGE_NAME@" || echo "/@PACKAGE_NAME@/$(subdir)"`; \
ppath=`dirname $$path`; \
dir=`basename $$path`
$(DUNE_COMMON_ROOT)/bin/check-log-store: $(DUNE_COMMON_ROOT)/bin/check-log-store.in
cd $(DUNE_COMMON_ROOT)/bin/ && $(MAKE) check-log-store
check-log: $(DUNE_COMMON_ROOT)/bin/check-log-store
check-log:
rm -f $(LOG_FILE)
check-log: check-log-libs
check-log: check-log-build
check-log: check-log-test
check-log: check-log-sources
check-log: check-log-dir
check-log-libs: check-log-libs-recursive
check-log-build: check-log-build-recursive
check-log-test: check-log-test-recursive
check-log-sources: check-log-sources-recursive
check-log-dir: check-log-dir-recursive
check-log-sources-am:
$(LOG_SET_OPTIONS); \
$(MAKE) sourcescheck-am > $(LOG_FILE) 2>&1; \
$(LOG_STORE) "sources" "Makefile.am" "$$path"
check-log-libs-am:
$(LOG_SET_OPTIONS); \
for lib in $(LTLIBRARIES); do \
$(MAKE) $$lib > $(LOG_FILE) 2>&1; \
$(LOG_STORE) "lib" "$$lib" "$$path"; \
done;
check-log-build-am:
$(LOG_SET_OPTIONS); \
for target in $(check_PROGRAMS) $(PROGRAMS); do \
$(MAKE) $$target > $(LOG_FILE) 2>&1; \
$(LOG_STORE) "build" "$$target" "$$path"; \
done;
check-log-test-am:
@LOG () { \
echo "$$1" > $(LOG_FILE).2; \
cat $(LOG_FILE) >> $(LOG_FILE).2; \
mv $(LOG_FILE).2 $(LOG_FILE); \
}; \
$(LOG_SET_OPTIONS); \
for tst in $(TESTS); do \
if test -f ./$$tst; then dir=./; \
elif test -f $$tst; then dir=; \
else dir="$(srcdir)/"; fi; \
if $(TESTS_ENVIRONMENT) $${dir}$$tst > $(LOG_FILE) 2>&1; then \
case " $(XFAIL_TESTS) " in \
*" $$tst "*) \
LOG "ERROR: XPASS ($$tst)"; \
$(LOG_STORE) "run" "$$tst" "$$path" 1 0; \
;; \
*) \
LOG "SUCCESS: PASS ($$tst)"; \
$(LOG_STORE) "run" "$$tst" "$$path" 0 0; \
;; \
esac; \
elif test $$? -ne 77; then \
case " $(XFAIL_TESTS) " in \
*" $$tst "*) \
LOG "SUCCESS: XFAIL ($$tst)"; \
$(LOG_STORE) "run" "$$tst" "$$path" 0 0; \
;; \
*) \
LOG "ERROR: FAIL ($$tst)"; \
$(LOG_STORE) "run" "$$tst" "$$path" 1 0; \
;; \
esac; \
else \
LOG "WARNING: SKIP ($$tst)"; \
$(LOG_STORE) "run" "$$tst" "$$path" 0 1; \
fi; \
done;
check-log-dir-am:
$(LOG_SET_OPTIONS); \
$(LOG_STORE) "dir" "$$dir" "$$ppath"
check-log-libs-recursive \
check-log-build-recursive \
check-log-test-recursive \
check-log-sources-recursive \
check-log-dir-recursive:
@set fnord $$MAKEFLAGS; amf=$$2; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
.PHONY: check-log \
check-log-lib check-log-lib-am check-log-lib-recursive \
check-log-build check-log-build-am check-log-build-recursive \
check-log-test check-log-test-am check-log-test-recursive \
check-log-sources check-log-sources-am check-log-sources-recursive \
check-log-dir check-log-dir-am check-log-dir-recursive
# -*-makefile-automake-*-
if BUILD_DOCS
DOXYGENTAG = doxygen-tag
DOXYGEN_HTML = html
# EXTRAINSTALL in the html subdirectory
DOXYGENHTMLFILES = *.html *.css *.png *.gif
DOXYGENDISTFILES = doxygen-tag
DOXYGENINSTALL = $(DOXYGENHTMLFILES) ../doxygen.log
endif
DISTCLEANFILES = doxygen.log doxygen-tag
if DUNEWEB
if WML
DUNEWEBDOXY = @DUNEWEBDIR@/doc/doxygen
# themeing doxygen
DOXYGENHEADER = doxy-header.html
DOXYGENFOOTER = doxy-footer.html
DOXYGENSTYLESHEET = dune-doxy.css
doxy-header.html: BASEDIR=../../..
doxy-footer.html: BASEDIR=../../..
doxy-header.html: WMLOPTS=
doxy-footer.html: WMLOPTS=
doxy-header.html: @DUNEWEBDIR@/doc/doxygen/doxy-header.wml
$(WMLCMD) -I @DUNEWEBDIR@/doc/doxygen/ @DUNEWEBDIR@/doc/doxygen/doxy-header.wml -o $(abs_builddir)/doxy-header.html
doxy-footer.html: @DUNEWEBDIR@/doc/doxygen/doxy-footer.wml
$(WMLCMD) -I @DUNEWEBDIR@/doc/doxygen/ @DUNEWEBDIR@/doc/doxygen/doxy-footer.wml -o $(abs_builddir)/doxy-footer.html
endif
endif
DOXYGENFILES = $(DOXYGEN_HTML) $(DOXYGENHEADER) $(DOXYGENFOOTER)
#we need this in the distribution
if BUILD_DOCS
install-doxygen-data: $(DOXYGEN_HTML)
$(mkinstalldirs) $(DESTDIR)/$(doxygendir); \
dir=$(srcdir); \
if test -d ./html; then dir=.; fi; echo "dir=$$dir"; \
list='$(DOXYGENHTMLFILES)'; \
for p in $$list; do \
$(install_sh_DATA) $$dir/html/$$p $(DESTDIR)/$(doxygendir); \
done
uninstall-doxygen-data:
list='$(DOXYGENHTMLFILES)'; \
for p in $$list; do \
rm -f $(DESTDIR)/$(doxygendir)/$$p; \
done
install-data-local: install-doxygen-data
uninstall-local: uninstall-doxygen-data
endif
# what files does the doxygen-generated stuff depend on (find-syntax)
DOXYGEN_DEPENDON = -name \*.cc -o -name \*.hh -o -name \*.png -o -name Doxyfile -o -name modules
# check dependency ourself to be robust
doxygen-tag: FORCE Doxyfile $(DOXYGENHEADER) $(DOXYGENFOOTER)
set -e; \
if test ! -e doxygen-tag || test x"`find $(top_srcdir) \( $(DOXYGEN_DEPENDON) \) -a -cnewer doxygen-tag -print`" != x ; then \
echo Running doxygen. This may take a while... ; \
$(DOXYGEN) $(srcdir)/Doxyfile > doxygen.log 2>&1 <&- ; \
touch doxygen-tag ; \
fi
if DUNEWEB
$(DUNEWEBDOXY)/update-doxygen.css $(abs_builddir)/html
endif
doxygen-dist-install: doxygen-tag
mkdir $(distdir)/html
pushd $(srcdir)/html; \
for i in $(DOXYGENHTMLFILES); do \
cp $$i $(distdir)/html; done; popd
dist-hook: doxygen-dist-install
html: doxygen-tag
if WML
# how to install the doxygen documentation
web-install-doxygen:
if test -d $(DUNEWEBDIR) && test -r $(DUNEWEBDIR)/Make.global ; then \
pushd html; \
$(MAKE) -f $(DUNEWEBDIR)/Make.global \
EXTRAINSTALL="$(DOXYGENINSTALL)" CURDIR="$(CURDIR)/@DUNE_MOD_NAME@-html" install ; \
popd; \
fi
endif
web-install: web-install-doxygen web-install-default
clean-local: clean-doxygen
clean-doxygen:
rm -rf $(DOXYGENTAG) $(DOXYGENFILES) *~
# nice trick from the GNU make infopage to force a rule to run
FORCE:
include $(top_srcdir)/am/webstuff
# -*- Makefile -*-
# $Id$
#
# this file should be included into any Makefile.am so that we can
# easily introduce new global rules. DO NOT OVERUSE!
#
# add "sourcescheck"-target testing if all source files are mentioned
include $(top_srcdir)/am/sourcescheck
# check consistency of the headers (see FS#394)
include $(top_srcdir)/am/headercheck
# add "check-log"-target to create automated build logs
include $(top_srcdir)/am/checklog
# -*- Makefile -*-
# $Id: sourcescheck 5183 2008-04-27 17:37:08Z christi $
headercheck_PATTERN = *.hh
headercheck_IGNORE =
hctest.o: hctest.cc
$(CXX) -I$(top_srcdir) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) \
$(MPI_CPPFLAGS) $(ALL_PKG_CPPFLAGS) -c -o $@ $<
headercheck:
@if test x"$$HEADER" = "x"; then \
if test x"$$SILENT" = "x"; then \
SILENTSTR='SILENT=1' ; \
fi ; \
$(MAKE) $$SILENTSTR $(AM_MAKEFLAGS) headercheck-recursive; \
else \
if test x"$$SILENT" = "x"; then \
SILENTSTR='SILENT=0' ; \
fi ; \
$(MAKE) $$SILENTSTR $(AM_MAKEFLAGS) headercheck-am; \
fi
headercheck-am:
@if test x"$$HEADER" != "x"; then \
list="$$HEADER"; \
else \
list=`echo $(headercheck_PATTERN)`; \
fi; \
test "$$list" != "$(headercheck_PATTERN)" || exit 0; \
for f in $$list; do \
HEADER="$(subdir)/$$f"; \
test $$SILENT -ne 0 || echo "checking $$HEADER"; \
CCFILE=hctest.cc; \
OFILE=hctest.o; \
LOGFILE=hctest.log; \
rm -f $$CCFILE; \
test -n "$$NO_CONFIG_H" || echo "#include <config.h>" > $$CCFILE; \
echo "#include <$${HEADER}>" >> $$CCFILE; \
echo "#include <$${HEADER}>" >> $$CCFILE; \
echo "int main () {}" >> $$CCFILE; \
make $$OFILE > $$LOGFILE 2>&1; \
SUCCESS=$$?; \
if ! (test $$SUCCESS -eq 0 && test -e $$OFILE); then \
echo "Error in $$HEADER"; \
test $$SILENT -ne 0 || cat $$LOGFILE; \
fi; \
rm -f $$OFILE; \
rm -f $$CCFILE; \
rm -f $$LOGFILE; \
test $$SUCCESS -eq 0 || exit $$SUCCESS; \
done
headercheck-recursive:
@set fnord $$MAKEFLAGS; amf=$$2; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $(subdir)/$$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
.PHONY: headercheck headercheck-recursive headercheck-am
# vim:set filetype=automake:
if INKSCAPE
.svg.png:
$(INKSCAPE) -e $@ $<
endif INKSCAPE
# Rules for latex stuff
# rerun TEX if log-file suggests that
.tex.dvi:
set -e; \
TEXINPUTS=.:$(srcdir):${TEXINPUTS}: $(TEX) </dev/null $*; \
while grep Rerun $*.log > /dev/null ; do \
TEXINPUTS=.:$(srcdir):${TEXINPUTS}: $(TEX) </dev/null $* || exit $$?; \
done; \
if grep '^\\bibdata{' *.aux > /dev/null \
&& grep '^\\citation{' *.aux > /dev/null; \
then \
BSTINPUTS=.:$(srcdir):${BSTINPUTS}: BIBINPUTS=.:$(srcdir):${BIBINPUTS}: $(BIBTEX) $* || exit $$?; \
TEXINPUTS=.:$(srcdir):${TEXINPUTS}: $(TEX) </dev/null $* || exit $$?; \
while grep Rerun $*.log > /dev/null ; do \
TEXINPUTS=.:$(srcdir):${TEXINPUTS}: $(TEX) </dev/null $* || exit $$?; \
done ; \
fi
.dvi.pdf:
TEXINPUTS=.:$(srcdir):${TEXINPUTS}: $(DVIPDF) $*
.dvi.ps:
TEXINPUTS=.:$(srcdir):${TEXINPUTS}: $(DVIPS) $* -o
# -*- Makefile -*-
# $Id$
# many tests need parts of libdune. Telling the tests to use
# previously build partial libs is possible but difficult to maintain:
# the SUBDIRS have to be very carefully defined for this to work...
# Additionally, testing with a partial lib is unrealistic.
#
# As users may try to use "make check" without a full build we
# generate a meaningful error message instead of silently failing on a
# lib-dependency
# add a new dependency to automake-internal rule
check-am: libcheck
libcheck: libcheck-FORCE
@if test ! -f $(top_builddir)/lib/libdune.la ; then \
echo ; \
echo ' libdune not built, checks will not work yet!' ; \
echo ' Run a full make to fix this' ; \
echo ; \
exit 1; \
fi
libcheck-FORCE:
.PHONY: libcheck libcheck-FORCE
# -*- Makefile -*-
# $Id$
sourcescheck_IGNORE = aclocal.m4 dependencies.m4
sourcescheck_LIST = $(SOURCES) $(DIST_SOURCES) $(HEADERS) $(DIST_HEADERS) \
$(sourcescheck_NOSOURCES) $(dist_noinst_DATA) $(EXTRA_DIST)
sourcescheck: sourcescheck-recursive
# @(for f in $(sourcescheck_LIST) fnord; do echo $$f; done) | \
# grep '\.[hc][hc]$$' | sort | uniq > header_CHECK.install
sourcescheck-am:
@echo $(sourcescheck_LIST) | tr ' ' '\n' | \
grep '\.[hcm][hc4]$$' | sort | uniq > header_CHECK.install
@ls | \
grep '\.[hcm][hc4]$$' | sort | uniq > header_CHECK.present
@RESULT=0; \
if diff header_CHECK.* | grep ^[\<\>] -q; then \
echo "==== WARNING ===="; \
echo -n "Directory: "; pwd; \
echo "Files present but not installed:"; \
diff -u header_CHECK.install header_CHECK.present | \
grep -v ^+++ | grep ^+; \
echo "Files listed for install but not present:"; \
diff -u header_CHECK.install header_CHECK.present | \
grep -v ^--- | grep ^-; \
echo "==== END ===="; \
RESULT=1; \
fi; \
rm -f header_CHECK.install header_CHECK.present; \
exit $$RESULT
sourcescheck-recursive:
@set fnord $$MAKEFLAGS; amf=$$2; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
.PHONY: sourcescheck sourcescheck-recursive sourcescheck-am
# -*-makefile-*-
ACLOCAL_AMFLAGS=@ACLOCAL_AMFLAGS@
DUNECONTROL=@DUNE_COMMON_ROOT@/bin/dunecontrol
sourcescheck_NOSOURCES = aclocal.m4 dependencies.m4
all-am: dependencies.m4