Sections:
############################################################################
# $Id: Makefile 2909 2009-12-08 20:01:05Z scholz $
#############################################################################
#
# This file is part of magpar.
#
# Copyright (C) 2002-2009 Werner Scholz
#
# www: http://www.magpar.net/
# email: magpar(at)magpar.net
#
# magpar is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# magpar is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with magpar; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#############################################################################
magpar_exe = magpar.exe
magpar_revh = magpar_revision.h
magpar_verh = magpar_version.h
all: $(magpar_exe)
# (de)activate libraries, library versions, set paths, compiler flags, etc.
# imported from Makefile.in and Makefile.in.$HOSTNAME
include Makefile.in
# read list of files and other settings
include Makefile.files
magpar_rev=$(shell awk '{print $$3}' $(magpar_revh)|sed "s/\"//"g)
magpar_ver=$(shell awk '{print $$3}' $(magpar_verh)|sed "s/\"//"g)
$(magpar_revh): FORCE
@r_old=$(magpar_rev); \
if [ -d .svn ] && which svnversion >& /dev/null && svn -u status >& /dev/null; then \
r_new=`svnversion`; \
else \
r_old2=`echo $$r_old|sed "s/_mod//"g`; \
r_new=""$$r_old2"_mod"; \
fi; \
if [ "$$r_new" == "exported" ]; then \
r_old2=`echo $$r_old|sed "s/_mod//"g`; \
r_new=""$$r_old2"_mod"; \
fi; \
if [ "$$r_new" != "$$r_old" ]; then \
echo '#define MAGPAR_REVISION "'$$r_new'"' > $@ ; \
echo "Recreated $@ for revision $$r_new"; \
fi
# all *.c depend on grid*.h and the Makefile (due to #define) !
$(magparobj): %.o: %.c $(griddata) Makefile Makefile.in
$(magpar_exe): $(magparobj)
-$(CLINKER) $(magparobj) -o $(magpar_exe) $(TAO_LIB) $(PETSC_TS_LIB)
@echo ""; echo "Built magpar version $(magpar_ver) revision $(magpar_rev)"
# strip $(magpar_exe)
tags: FORCE
ctags `find . -name "*.c" -o -name "*.h"`
doxygen: $(magpar_revh) FORCE
-rm -f ../doc/html/*
ENABLED_SECTIONS="$(ENABLED_SECTIONS) changelog"; export ENABLED_SECTIONS; \
PROJECT_NUMBER="Version $(magpar_ver) Build $(magpar_rev)"; export PROJECT_NUMBER; \
GENERATE_HTML="YES"; export GENERATE_HTML; \
GENERATE_LATEX="NO"; export GENERATE_LATEX; \
EXTRACT_ALL="YES"; export EXTRACT_ALL; \
SOURCE_BROWSER="YES"; export SOURCE_BROWSER; \
VERBATIM_HEADERS="YES"; export VERBATIM_HEADERS; \
HAVE_DOT="YES"; export HAVE_DOT; \
CALL_GRAPH="YES"; export CALL_GRAPH; \
CALLER_GRAPH="YES"; export CALLER_GRAPH; \
MAGPAR_HOME=$(MAGPAR_HOME); export MAGPAR_HOME; \
ALIASES=$(DOXYGEN_ALIASES); export ALIASES; \
(set; echo $$MAGPAR_HOME; doxygen --version; doxygen Doxyfile; echo ""; echo "Documentation complete!") \
>& make_doxygen.log
doxygen_ng: $(magpar_revh) FORCE
-rm -f ../doc/html/*
ENABLED_SECTIONS="$(ENABLED_SECTIONS) changelog"; export ENABLED_SECTIONS; \
PROJECT_NUMBER="version $(magpar_ver) build $(magpar_rev)"; export PROJECT_NUMBER; \
GENERATE_HTML="YES"; export GENERATE_HTML; \
GENERATE_LATEX="NO"; export GENERATE_LATEX; \
EXTRACT_ALL="YES"; export EXTRACT_ALL; \
SOURCE_BROWSER="YES"; export SOURCE_BROWSER; \
VERBATIM_HEADERS="YES"; export VERBATIM_HEADERS; \
HAVE_DOT="NO"; export HAVE_DOT; \
CALL_GRAPH="NO"; export CALL_GRAPH; \
CALLER_GRAPH="NO"; export CALLER_GRAPH; \
MAGPAR_HOME=$(MAGPAR_HOME); export MAGPAR_HOME; \
ALIASES=$(DOXYGEN_ALIASES); export ALIASES; \
(doxygen --version; doxygen Doxyfile; echo ""; echo "Documentation complete!") \
>& make_doxygen.log
# cannot use $(MAKE) here: otherwise current make waits for submake to finish
doxygenb: FORCE
make doxygen >& make_doxygenb.log &
doxygen_latex: $(magpar_revh) FORCE
-rm -f ../doc/latex/* AAA
ln -s doc AAA
ENABLED_SECTIONS="$(ENABLED_SECTIONS)"; export ENABLED_SECTIONS; \
PROJECT_NUMBER="version $(magpar_ver) build $(magpar_rev)"; export PROJECT_NUMBER; \
GENERATE_HTML="NO"; export GENERATE_HTML; \
GENERATE_LATEX="YES"; export GENERATE_LATEX; \
EXTRACT_ALL="NO"; export EXTRACT_ALL; \
SOURCE_BROWSER="NO"; export SOURCE_BROWSER; \
VERBATIM_HEADERS="NO"; export VERBATIM_HEADERS; \
HAVE_DOT="NO"; export HAVE_DOT; \
CALL_GRAPH="NO"; export CALL_GRAPH; \
CALLER_GRAPH="NO"; export CALLER_GRAPH; \
ALIASES=$(DOXYGEN_ALIASES); export ALIASES; \
doxygen Doxyfile >& make_doxygenlatex.log
rm AAA
(cd ../doc/latex; $(MAKE)) >> make_doxygenlatex.log; true
mv ../doc/latex/refman.pdf ../doc/magpar.pdf; rm -r -f ../doc/latex/
linkcheck: FORCE
-cd ../doc/html/; linkchecker index.html >& ../../src/make_linkchecker.log
(echo ""; echo "===== Errors and Warnings ====="; \
grep Warning make_linkchecker.log; grep Error make_linkchecker.log \
) > make_linkchecker2.log
alloptcheck: FORCE
grep "PetscOption" `find . -name "*.c"`|awk -F "\"" '{print $$2}'|sort|uniq > make_options_code.log
(for i in `find . -name "allopt_*" | grep -v "\.svn"`; do grep "^-" $$i; done)|awk '{print $$1}' >> make_options_code.log
sort make_options_code.log|uniq > x_t; mv x_t make_options_code.log
grep "PetscOption" `find . -name "*.c"`|grep "-"|sed 's/:[^\"]*\"/\t\t/'|sed 's/\".*//'|sort|uniq > make_options_allopt.log
(for i in `find . -name "allopt*" | grep -v "\.svn"`; do grep "^-" $$i; done)|awk '{print $$1}'|sort|uniq > make_options_allopt.log;diff -B make_options_code.log make_options_allopt.log > make_options.log
bakclean: FORCE
-rm -f -v `find . -name "~*"`
-rm -f -v `find . -name ".#*"`
oclean: FORCE
-rm -f `find . -name "*.o"` $(magpar_exe)
distclean: bakclean oclean
-rm -f *.exe *.log
varinfo: $(magpar_revh) FORCE
@echo "HOSTNAME = $(HOSTNAME)"
@echo "MAGPAR_HOME = $(MAGPAR_HOME)"
@echo "UNIPROC = $(UNIPROC)"
@echo "uni = $(uni)"
@echo "EXCH = $(EXCH)"
@echo "PRECISION = $(PRECISION)"
@echo "CC = $(CC)"
@echo "CXX = $(CXX)"
@echo "F77 = $(F77)"
@echo "FC = $(FC)"
@echo "F90 = $(F90)"
@echo "CFLAGS = $(CFLAGS)"
@echo "OPTFLAGS = $(OPTFLAGS)"
@echo "C_CLINKER_SLFLAG = $(C_CLINKER_SLFLAG)"
@echo "EXTERNAL_LIB = $(EXTERNAL_LIB)"
@echo "ENABLED_SECTIONS = $(ENABLED_SECTIONS)"
@echo "dyn = $(dyn)"
@echo "SVNSERVER = $(SVNSERVER)"
@echo "magpar_ver = $(magpar_ver)"
@echo "magpar_rev = $(magpar_rev)"
@echo
@echo "Libraries:"
@echo "PD = $(PD)"
@echo "PETSC_VERSION = $(PETSC_VERSION)"
@echo "PETSC_ARCH = $(PETSC_ARCH)"
@echo "PETSC_DIR = $(PETSC_DIR)"
@echo "TAO_DIR = $(TAO_DIR)"
@echo "METIS_DIR = $(METIS_DIR)"
@echo "SUNDIALS_VERSION = $(SUNDIALS_VERSION)"
@echo "SUNDIALS_DIR = $(SUNDIALS_DIR)"
@echo "ATLAS_DIR = $(ATLAS_DIR)"
@echo "MPI_DIR = $(MPI_DIR)"
@echo "PNG_DIR = $(PNG_DIR)"
@echo "ZLIB_DIR = $(ZLIB_DIR)"
testall: FORCE
@echo "--------------------------------------------------------------------"
$(MAKE) distclean
@echo "--------------------------------------------------------------------"
for i in 3.0.0 2.3.3; do \
for j in 230; do \
$(MAKE) PETSC_VERSION=$$i SUNDIALS_VERSION=$$j test; \
done; \
done
test: distclean FORCE
@echo "--------------------------------------------------------------------"
for i in test1 test2 test3 test4 test5 test6; do \
$(MAKE) $$i ; \
done; \
$(MAKE)
test1: $(magpar_revh) FORCE
@echo "--------------------------------------------------------------------"
-$(MAKE) oclean
-$(MAKE) SUNDIALS_VERSION=FALSE PNG_DIR=FALSE varinfo $(magpar_exe) >& make_$(magpar_rev)_$@.log
-mv $(magpar_exe) magpar_$(magpar_rev)_$@.exe
test2: $(magpar_revh) FORCE
@echo "--------------------------------------------------------------------"
-$(MAKE) oclean
-$(MAKE) TAO_DIR=FALSE ZLIB_DIR=FALSE PNG_DIR=FALSE varinfo $(magpar_exe) >& make_$(magpar_rev)_$@.log
-mv $(magpar_exe) magpar_$(magpar_rev)_$@.exe
test3: $(magpar_revh) FORCE
@echo "--------------------------------------------------------------------"
-$(MAKE) oclean
-$(MAKE) ADDONS=FALSE varinfo $(magpar_exe) >& make_$(magpar_rev)_$@.log
-mv $(magpar_exe) magpar_$(magpar_rev)_$@.exe
test4: $(magpar_revh) FORCE
@echo "--------------------------------------------------------------------"
-$(MAKE) oclean
-$(MAKE) ADDONS=FALSE TAO_DIR=FALSE ZLIB_DIR=FALSE PNG_DIR=FALSE varinfo $(magpar_exe) >& make_$(magpar_rev)_$@.log
-mv $(magpar_exe) magpar_$(magpar_rev)_$@.exe
test5: $(magpar_revh) FORCE
@echo "--------------------------------------------------------------------"
-$(MAKE) oclean
-$(MAKE) ADDONS=TRUE MFP=TRUE varinfo $(magpar_exe) >& make_$(magpar_rev)_$@.log
-mv $(magpar_exe) magpar_$(magpar_rev)_$@.exe
test6: $(magpar_revh) FORCE
@echo "--------------------------------------------------------------------"
-$(MAKE) oclean
-$(MAKE) varinfo $(magpar_exe) >& make_$(magpar_rev)_$@.log
-mv $(magpar_exe) magpar_$(magpar_rev)_$@.exe
FORCE:
#############################################################################
# $Id: Makefile.in 2890 2009-12-03 20:48:54Z scholz $
#############################################################################
# include default settings ##################################################
include Makefile.in.defaults
# include Makefile.in.$HOSTNAME #############################################
# set hostname if undefined
ifeq ($(HOSTNAME),)
HOSTNAME=$(shell hostname)
endif
# possibly override various options (above) with those
# from machine specific Makefiles.in.$HOSTNAME
# check if file exists
exist := $(wildcard Makefile.in.$(HOSTNAME))
ifneq ($(strip $(exist)),)
# include if it does
include Makefile.in.$(HOSTNAME)
else
exist := $(wildcard addons/Makefile.in.$(HOSTNAME))
ifneq ($(strip $(exist)),)
# include if it does
include addons/Makefile.in.$(HOSTNAME)
endif
endif
# PETSC #####################################################################
ifeq ($(PETSC_VERSION),3.0.0)
PETSC_ARCH = PETSc-config-magpar
PETSC_DIR = $(PD)/petsc-3.0.0-p10
TAO_DIR = $(PD)/tao-1.10-p1
# check if we compile for single processor only
uni=$(shell grep "define *PETSC_HAVE_MPIUNI *1" $(PETSC_DIR)/$(PETSC_ARCH)/include/petscconf.h)
endif
ifeq ($(PETSC_VERSION),2.3.3)
PETSC_ARCH = PETSc-config-magpar
PETSC_DIR = $(PD)/petsc-2.3.3-p15
TAO_DIR = $(PD)/tao-1.9
# check if we compile for single processor only
uni=$(shell grep "define *PETSC_HAVE_MPIUNI *1" $(PETSC_DIR)/bmake/$(PETSC_ARCH)/petscconf.h)
endif
ifneq ($(TAO_DIR),FALSE)
file := $(TAO_DIR)/bmake/tao_common
exist := $(wildcard $(file))
ifneq ($(strip $(exist)),)
include $(file)
CFLAGS += -DTAO
endif
else
ifeq ($(PETSC_VERSION),3.0.0)
file := $(PETSC_DIR)/conf/base
else
file := $(PETSC_DIR)/bmake/common/base
endif
exist := $(wildcard $(file))
ifneq ($(strip $(exist)),)
include $(file)
endif
endif
# SUNDIALS ##################################################################
SUNDIALS_LIBS = -L$(SUNDIALS_DIR)/lib -lsundials_cvode
ifeq ($(uni),)
UNIPROC = FALSE
else
UNIPROC = TRUE
CFLAGS += -DUNIPROC
endif
ifeq ($(UNIPROC),TRUE)
SUNDIALS_LIBS += -lsundials_nvecserial
else
SUNDIALS_LIBS += -lsundials_nvecparallel
endif
ifeq ($(SUNDIALS_VERSION),240)
# SUNDIALS version 2.4.0
SUNDIALS_DIR = $(PD)/sundials-2.4.0
CFLAGS += -DSUNDIALS_VERSION=$(SUNDIALS_VERSION) -I$(SUNDIALS_DIR)/include
endif
ifeq ($(SUNDIALS_VERSION),230)
# SUNDIALS version 2.3.0
SUNDIALS_DIR = $(PD)/sundials-2.3.0
CFLAGS += -DSUNDIALS_VERSION=$(SUNDIALS_VERSION) -I$(SUNDIALS_DIR)/include
endif
ifneq ($(SUNDIALS_VERSION),FALSE)
EXTERNAL_LIB += $(SUNDIALS_LIBS)
endif
# other libraries ###########################################################
ifneq ($(METIS_DIR),FALSE)
EXTERNAL_LIB += -L$(METIS_DIR) -lmetis
CFLAGS += -DMETIS -I$(METIS_DIR)/METISLib
endif
ifneq ($(PNG_DIR),FALSE)
EXTERNAL_LIB += -L$(PNG_DIR) -L$(PNG_DIR)/lib -lpng
CFLAGS += -DPNG -I$(PNG_DIR)
endif
ifneq ($(ZLIB_DIR),FALSE)
EXTERNAL_LIB += -L$(ZLIB_DIR) -lz
CFLAGS += -DZLIB -I$(ZLIB_DIR)
endif
ifneq ($(PYTHON),FALSE)
EXTERNAL_LIB += -L$(PYTHON)/config/ -l$(PYTHON)
CFLAGS += -DPYTHON -I/usr/include/$(PYTHON)
endif
############################################################################# # $Id: Makefile.in.defaults 2891 2009-12-03 20:50:13Z scholz $ ############################################################################# # default settings ########################################################## # magpar home directory MAGPAR_HOME = $(HOME)/work/magpar # directory where the manually compiled libraries are installed PD = $(MAGPAR_HOME)/libs # directory of magpar source code MAGPAR_SRC = $(MAGPAR_HOME)/src # set floating point precision (single/double) PRECISION=double # select your PETSc version (suitable TAO required!) # check Makefile.in for valid values PETSC_VERSION = 3.0.0 # set to FALSE to disable #TAO_DIR = # set dummy PETSC_XTRALIBS= # select your SUNDIALS version # # check Makefile.in for valid values # and update the path to your SUNDIALS installation directory; # set to FALSE to disable SUNDIALS_VERSION = 230 # select BLAS/ATLAS version # below in the hardware specific section! # select LAPACK version liblapack=lapack-3.2.1 # additional libraries ###################################################### # # activate by setting correct path # deactivate by setting to FALSE # NB: libpng requires zlib! # ParMetis is required! METIS_DIR = $(PD)/ParMetis-3.1.1 PNG_DIR = $(PD)/libpng-1.2.40 ZLIB_DIR = $(PD)/zlib-1.2.3 #DRL: added these, will be used by PETSc, #rather than assuming they are under $(PD) ATLAS_DIR = $(PD)/atlas/lib MPI_DIR = $(PD)/mpi ##### use SUPERLU for A*u1=divM (experimental) #CFLAGS += -DSUPERLU # XOR ##### BLOCKSOLVE for A*u1=divM (experimental) #CFLAGS += -DBLOCKSOLVE # magpar specific flags ##################################################### ##### calculate exchange energy separately? # # set define to have exchange field and energy calculated separately from # anisotropy; then the exchange energy is also slightly more accurate and # the exchange energy is stored in a separate column in the log file; # calculation of the anisotropy energy for cubic anisotropy is done # properly including K1 and K2 terms for both uniaxial and cubic anisotropy # (important especially for large K2!) # # undefine (comment out) to have anisotropy and exchange field and energy # combined (slightly faster: saves two matrix-vector multiplications) # anisotropy energy might be very inaccurate (for large K2) # K2 term of uniaxial anisotropy is ignored! # # disable #EXCH = FALSE # enable EXCH = TRUE ADDONS = FALSE SPINTORQ = FALSE EBM = FALSE PYTHON = FALSE SVNSERVER = 300.300.300.300 # dummy # compiler flags ############################################################ CFLAGS += -Wunused # Adjust the following variables according to your hardware ################# # set filename of requested ATLAS library (precompiled binary) # for your hardware check ATLAS download page for available versions: # http://sourceforge.net/project/showfiles.php?group_id=23725 # libatlas = atlas3.6.0_Linux_PIIISSE1.tar.gz # general optimization options # # used during PETSc compilation and then immutable # use CFLAGS to change compile options later # OPTFLAGS += -O2 #OPTFLAGS += -O3 # CPU specific compiler options for GCC >= 3.0 # #OPTFLAGS += -march=pentium4 -msse -msse2 -mfpmath=sse #OPTFLAGS += -march=pentium-m -msse -msse2 -mfpmath=sse #OPTFLAGS += -march=athlon -m3dnow -mfpmath=sse #OPTFLAGS += -march=athlon-xp -m3dnow -mfpmath=sse #OPTFLAGS += -march=opteron -msse -msse2 -mfpmath=sse -m64 #OPTFLAGS += -march=nocona -msse2 -mfpmath=sse -m64 # for Mac OS X on an iBook G4 (cf. FAQ in documentation) # #OPTFLAGS += -mcpu=7450 -O2 -arch=G4 -faltivec # more (possibly unsafe!) optimizations (for newer gcc versions) # (inspired by Acovea: http://www.coyotegulch.com/products/acovea/ ) # #OPTFLAGS += -ffast-math # --fast-math implies: # -fno-math-errno -funsafe-math-optimizations -ffinite-math-only -fno-trapping-math #OPTFLAGS += -funroll-loops -ftree-loop-linear #OPTFLAGS += -ftree-vectorize -ftracer -fvariable-expansion-in-unroller #OPTFLAGS += -funsafe-loop-optimizations -Wunsafe-loop-optimizations # compiler options for development/debugging # #OPTFLAGS += -pedantic -msg_enable noansi -msg_enable obsolescent #OPTFLAGS += -msg_enable performance -msg_enable portable #OPTFLAGS += -msg_enable overflow -msg_enable questcode #OPTFLAGS += -msg_enable unused #-msg_enable returnchecks #OPTFLAGS += -fbounds-check # currently only supported by gcj and gfortran # set Fortran compiler # default: gfortran # use g77 on old Linux distributions # g77 usually requires libg2c (uncomment PETSC_XTRALIBS below) # #FC = g77 #PETSC_XTRALIBS=/usr/lib/gcc-lib/i386-redhat-linux/2.96/libg2c.a # link static magpar binary #STATIC = TRUE
# example Makefile.in.$HOST for a machine running Debian testing (lenny/sid) # # using Debian packages: # libatlas-$ATLAS_ARCH-dev (ATLAS_ARCH=base, 3dnow, sse, or sse2) - see below # libmpich1.0-dev # mpichbin # libparmetis-dev # libpng12-dev # zlib1g-dev # # Debian packages need to be installed first: # apt-get install libmpich1.0-dev libparmetis-dev libpng12-dev zlib1g-dev METIS_DIR = EXTERNAL_LIB += -lmetis CFLAGS += -DMETIS -I/usr/include/metis PNG_DIR = /usr/lib ZLIB_DIR = /usr/lib MPI_DIR = /usr/lib/mpich # ATLAS packages: includes full BLAS and LAPACK # # Debian has different ATLAS packages optimized for different optimized # instruction sets. Check the processor flags in /proc/cpuinfo to find out # which extensions your processor supports, and install the appropriate # package. # # apt-get install libatlas3-$ATLAS_ARCH-dev # # ATLAS_ARCH should be set to the highest-performing vectorized math implementation # that your system is capable of, in decreasing order of preference: # # optimized packages: # # ATLAS_ARCH comment # ----------------------------------------------------------------- # sse2 AMD/Intel processors with SSE2 extensions (32-bit mode) # sse AMD/Intel processors with SSE extensions (32-bit mode) # 3dnow AMD processors with 3dnow extensions (32-bit mode) # altivec PowerPC processors # ev6 Alpha processors # v9 Sparc processors # #ATLAS_ARCH = sse2 #ATLAS_DIR = /usr/lib/$ATLAS_ARCH/atlas #EXTERNAL_LIB += -L/usr/lib/$ATLAS_ARCH -latlas # # generic package: # # ATLAS_ARCH comment # ----------------------------------------------------------------- # base generic for i386 compatible processors and # for AMD/Intel 64-bit processors in 64-bit mode # ATLAS_ARCH = generic ATLAS_DIR = /usr/lib/atlas EXTERNAL_LIB += -latlas
# example Makefile.in.$HOST using older libraries # override settings in Makefile.in.defaults libatlas = atlas3.6.0_Linux_HAMMER64SSE2.tar.gz liblapack=lapack-3.1 METIS_DIR = $(PD)/ParMetis-3.1 PNG_DIR = $(PD)/libpng-1.2.22 ZLIB_DIR = $(PD)/zlib-1.2.3 # override settings in Makefile.in PETSC_VERSION = 2.3.3-p4 PETSC_ARCH = PETSc-config-magpar PETSC_DIR = $(PD)/petsc-$(PETSC_VERSION) TAO_DIR = $(PD)/tao-1.9 # set Fortran compiler # use g77 on old RedHat FC = g77 PETSC_XTRALIBS=/usr/lib/gcc-lib/i386-redhat-linux/2.96/libg2c.a
############################################################################
# $Id: Makefile.files 2746 2009-08-26 21:49:39Z scholz $
#############################################################################
griddata = griddata.h
magparobj = main.o
main.o: $(magpar_verh) $(magpar_revh)
initdir = init
initobj = $(initdir)/destroyinit.o \
$(initdir)/distortmesh.o \
$(initdir)/elevertvol.o \
$(initdir)/facnb.o \
$(initdir)/filterelements.o \
$(initdir)/filternodes.o \
$(initdir)/initinfo.o \
$(initdir)/maginit.o \
$(initdir)/magset.o \
$(initdir)/modifyprop_par.o \
$(initdir)/modifyprop_ser.o \
$(initdir)/movedata.o \
$(initdir)/parinit.o \
$(initdir)/parteleser.o \
$(initdir)/regrefine.o \
$(initdir)/reorder.o \
$(initdir)/serinit.o \
$(initdir)/vertprop.o
magparobj += $(initobj)
$(initdir)/initinfo.o: $(magpar_verh)
fielddir = field
fieldobj = $(fielddir)/bele.o \
$(fielddir)/hdemag.o \
$(fielddir)/hexch_ani.o \
$(fielddir)/hcubic.o \
$(fielddir)/helastic.o \
$(fielddir)/hexternal.o \
$(fielddir)/hext_cu.o \
$(fielddir)/hext_ho.o \
$(fielddir)/hext_py.o \
$(fielddir)/htot.o \
$(fielddir)/hstep_file.o
magparobj += $(fieldobj)
$(fielddir)/hdemag.o: $(fielddir)/bmatrix.c
iodir = io
ioobj = $(iodir)/readinp.o \
$(iodir)/readmesh.o \
$(iodir)/readkrn.o \
$(iodir)/readpatran.o \
$(iodir)/writedata.o \
$(iodir)/writedataavs.o \
$(iodir)/writedatadat.o \
$(iodir)/writefemavs.o \
$(iodir)/writelog.o \
$(iodir)/writelog_pid.o
magparobj += $(ioobj)
utildir = util
utilobj = $(utildir)/area.o \
$(utildir)/ascat.o \
$(utildir)/axesrot.o \
$(utildir)/barycent.o \
$(utildir)/bbox2.o \
$(utildir)/calAfe2fe.o \
$(utildir)/calAfe2sq.o \
$(utildir)/calAsq2fe.o \
$(utildir)/calcbbox.o \
$(utildir)/cart2sphere.o \
$(utildir)/distint.o \
$(utildir)/distortvec.o \
$(utildir)/distpointline.o \
$(utildir)/ipol.o \
$(utildir)/matviewstruct.o \
$(utildir)/matcreateseqadj.o \
$(utildir)/mesh2dual.o \
$(utildir)/printmatinfo.o \
$(utildir)/progressbar.o \
$(utildir)/renormvec.o \
$(utildir)/solidangle.o \
$(utildir)/syncffprintf.o \
$(utildir)/tettri.o \
$(utildir)/vecsetvec.o
magparobj += $(utilobj)
llgdir = llg
llgobj = $(llgdir)/myllgjacobian.o \
$(llgdir)/calc_dMdt.o
ifneq ($(SUNDIALS_VERSION),FALSE)
llgobj +=$(llgdir)/checkiterationllg.o \
$(llgdir)/mytscreatepvode.o \
$(llgdir)/mytssteppvode.o \
$(llgdir)/precond.o \
$(llgdir)/rhsfunction.o \
$(llgdir)/writelog_pvode.o
endif
magparobj += $(llgobj)
ifneq ($(TAO_DIR),FALSE)
eminidir = emini
eminiobj = $(eminidir)/checkiterationemini.o \
$(eminidir)/eminisolve.o
magparobj += $(eminiobj)
endif
ifneq ($(PNG_DIR),FALSE)
pngdir = png
pngobj = $(pngdir)/writedatapng.o \
$(pngdir)/writedatapng2.o \
$(pngdir)/writepng.o
magparobj += $(pngobj)
endif
ifeq ($(EBM),TRUE)
ifneq ($(SUNDIALS_VERSION),FALSE)
CFLAGS += -DEBM
include ebm/Makefile.in
endif
endif
ifeq ($(ADDONS),TRUE)
ENABLED_SECTIONS = addons
CFLAGS += -DADDONS
addonsdir = addons
include $(addonsdir)/Makefile.in
llg2dir = llg2
llg2obj = $(llg2dir)/myts2.o \
$(llg2dir)/checkiteration2.o
magparobj += $(llg2obj)
llgtsdir = llgts
llgtsobj = $(llgtsdir)/mytscreate.o \
$(llgtsdir)/checkiterationllgts.o
magparobj += $(llgtsobj)
browndir = brown
brownobj = $(browndir)/brown.o
magparobj += $(brownobj)
endif
ifeq ($(SPINTORQ),TRUE)
CFLAGS += -DSPINTORQ
spintorqdir = spintorq
include $(spintorqdir)/Makefile.in
endif
# other settings ############################################################
ifeq ($(EXCH),TRUE)
CFLAGS += -DEXCH
endif
# append default CFLAGS (maybe set to "CFLAGS += -I. -o $@")
CFLAGS += -I.
# configure for linking static executable if requested
ifeq ($(STATIC),TRUE)
EXTERNAL_LIB += -static
SL_LINKER_LIBS := $(SL_LINKER_LIBS:-lgcc_s=)
BLASLAPACK_LIB := $(BLASLAPACK_LIB:-lgcc_s=)
PCC_LINKER_LIBS:= $(PCC_LINKER_LIBS:-lgcc_s=)
FC_LINKER_LIBS := $(FC_LINKER_LIBS:-lgcc_s=)
endif
#############################################################################
# $Id: Makefile.libs 2908 2009-12-08 19:54:00Z scholz $
#############################################################################
#
# This file is part of magpar.
#
# Copyright (C) 2002-2009 Werner Scholz
#
# www: http://www.magpar.net/
# email: magpar(at)magpar.net
#
# magpar is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# magpar is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with magpar; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#############################################################################
# set Fortran compiler
# GNU GCC >=4.0 Fortran 77/95: gfortran
FC=gfortran
TIMER=INT_ETIME
#
# GNU GCC < 4.0 Fortran 77: g77
#FC=g77
#TIMER=EXT_ETIME
# Modify Makefile.in, Makefile.in.$HOSTNAME:
# Update variables, paths to required libraries, compiler options, etc.
# get desired configuration
include Makefile.in
# Tell make to export all variables to child processes by default.
# http://www.cs.utah.edu/dept/old/texinfo/make/make.html#SEC62
export
all: atlas lapack mpi parmetis sundials petsc tao zlib libpng
others: atlas_compile gmp mpfr gcc mgridgen python numpy matplotlib scotch
############################
# GMP
############################
# http://gmplib.org/
gmplib=$(PD)/gmplib/
# latest version is: 4.3.1
gmp: $(gmplib)
$(gmplib):
gmprel=4.2.2; \
cd $(PD); \
lib=gmp-$$gmprel; \
if [ ! -e $$lib.tar.gz ]; then wget -N ftp://ftp.gnu.org/gnu/gmp/$$lib.tar.gz; fi; \
if [ ! -d $$lib ] ; then gunzip -c $$lib.tar.gz|tar xv ; fi ; \
cd $$lib; \
instdir=$(PD)/gmp_$$gmprel; \
./configure --prefix=$$instdir 2>&1 | tee configure.log; \
$(MAKE) 2>&1 | tee make.log; \
$(MAKE) check 2>&1 | tee makecheck.log; \
$(MAKE) install 2>&1 | tee makeinst.log; \
ln -s $$instdir $(PD)/gmp
############################
# MPFR
############################
# http://www.mpfr.org/
mpfrlib=$(PD)/mpfrlib/
# latest version is: 2.4.2
mpfr: $(mpfrlib)
$(mpfrlib):
mpfrrel=2.3.1; \
cd $(PD); \
lib=mpfr-$$mpfrrel; \
if [ ! -e $$lib.tar.gz ]; then wget -N http://www.mpfr.org/mpfr-current/$$lib.tar.gz; fi; \
if [ ! -d $$lib ] ; then gunzip -c $$lib.tar.gz|tar xv ; fi ; \
cd $$lib; \
instdir=$(PD)/mpfr_$$mpfrrel; \
./configure --with-gmp=$(PD)/gmp --prefix=$$instdir 2>&1 | tee configure.log; \
$(MAKE) 2>&1 | tee make.log; \
$(MAKE) check 2>&1 | tee makecheck.log; \
$(MAKE) install 2>&1 | tee makeinst.log; \
ln -s $$instdir $(PD)/mpfr
############################
# GCC
############################
# http://gcc.gnu.org/mirrors.html
# ftp://mirrors.laffeycomputer.com/pub/gcc.gnu.org/pub/gcc/releases/
gccbin=$(PD)/gcc/bin/gcc
# latest version is: 4.4.2
gcc: $(gccbin)
$(gccbin):
gccrel=4.3.0; \
cd $(PD); \
srcdir=$(PD)/gccsrc-$$gccrel; \
mkdir $$srcdir; \
cd $$srcdir; \
ftpserv=http://mirrors.usc.edu/pub/gnu/gcc/; \
for i in core fortran g++ ; do \
lib=gcc-$$i-$$gccrel.tar.bz2; \
if [ ! -e $$lib ]; then wget -N $$ftpserv/gcc-$$gccrel/$$lib; fi; \
bunzip2 -c $$lib | tar xvf -; \
done; \
instdir=$(PD)/gcc-$$gccrel; \
cd gcc-$$gccrel;\
./configure --with-gmp=$(PD)/gmp --with-mpfr=$(PD)/mpfr --prefix=$$instdir 2>&1 | tee configure.log; \
$(MAKE) 2>&1 | tee make.log; \
$(MAKE) install 2>&1 | tee makeinst.log; \
ln -s $$instdir $(PD)/gcc
############################
# ATLAS
############################
atlaslib = $(PD)/atlas/lib/libatlas.a
atlas: $(atlaslib)
$(atlaslib):
cd $(PD); \
if [ -n "$$libatlas" ]; then lib=$(libatlas); \
else lib=atlas3.6.0_Linux_PIIISSE1.tar.gz; \
fi; \
if [ ! -e $$lib ]; then wget -N http://downloads.sourceforge.net/math-atlas/$$lib; fi; \
arctype=`file $$lib | awk '{print $$2}'` ; \
echo $$lib; \
if [ ! -d $$lib ] ; then $$arctype -d -c $$lib | tar xvf - ; fi ; \
atlasdir=`$$arctype -d -c $$lib | tar tf - |grep libatlas.a` ; \
atlasdir=`dirname $$atlasdir`; atlasdir=`dirname $$atlasdir`; \
rm -f atlas; ln -s -f $$atlasdir atlas; \
mv $(lapacklib) $(lapacklib).atlas
atlas_compile:
instdir=$(PD)/atlas; \
cd $(PD); \
mkdir -p $$instdir; \
lib=atlas3.9.17.tar.bz2; \
if [ ! -e $$lib ]; then wget -N http://downloads.sourceforge.net/math-atlas/$$lib; fi; \
bunzip2 -c $$lib | tar xvf -; \
cd $(PD)/atlas; \
$(PD)/ATLAS/configure $(atlasgcc) 2>&1 | tee configure.log; \
$(MAKE) -j 1 2>&1 | tee make.log; \
$(MAKE) check 2>&1 | tee make_check.log; \
$(MAKE) ptcheck 2>&1 | tee make_ptcheck.log; \
$(MAKE) test 2>&1 | tee make_test.log; \
$(MAKE) time 2>&1 | tee make_time.log; \
ln -s -f Linux_* atlas; \
mv $(lapacklib) $(lapacklib).atlas
############################
# LAPACK
############################
lapacklib2 = $(PD)/$(liblapack)/lapack_LINUX.a
$(lapacklib2): $(atlaslib)
$(FC) --version
cd $(PD); \
lib=$(liblapack); \
if [ ! -e $$lib.tgz ]; then wget -N http://www.netlib.org/lapack/$$lib.tgz; fi; \
if [ ! -d $$lib ] ; then gunzip -c $$lib.tgz|tar xv ; fi ; \
cd $(liblapack); \
mtmpl=INSTALL/make.inc.gfortran; \
cp $$mtmpl make.inc; \
$(MAKE) "FORTRAN=$(FC)" "LOADER=$(FC)" \
"TIMER=$(TIMER)" \
"BLASLIB=$(PD)/atlas/lib/libf77blas.a $(PD)/atlas/lib/libatlas.a" \
"OPTS=-funroll-all-loops $(OPTFLAGS)" \
"NOOPT=$(NOOPT)" \
lapacklib 2>&1 | tee make.log; \
lapacklib = $(PD)/atlas/lib/liblapack.a
lapack: $(lapacklib2) $(lapacklib)
$(lapacklib): $(atlaslib) FORCE
cd $(PD)/atlas/lib; \
cp $(lapacklib).atlas $(lapacklib); \
mkdir tmp; cd tmp; \
ar x $(PD)/$(liblapack)/lapack_LINUX.a; \
ar r ../liblapack.a *.o; \
cd ..; rm -rf tmp
############################
# MPI
############################
# select requested mpi library here (choose from targets below)
mpiimp=mpich2
mpilib=$($(mpiimp)lib)
mpi: $(mpiimp)
############################
# MPICH2
############################
mpich2lib = $(PD)/mpich2/lib/libmpich.a
mpich2: $(mpich2lib)
$(mpich2lib):
cd $(PD); \
lib=1.2.1; \
if [ ! -e mpich2-$$lib.tar.gz ]; then wget -N --retr-symlinks http://www.mcs.anl.gov/research/projects/mpich2/downloads/tarballs/$$lib/mpich2-$$lib.tar.gz; fi; \
if [ ! -e mpich2-$$lib.tar.gz ]; then \
lib=1.2.1; \
echo "Automatic fallback to older version mpich2-$$lib"; \
wget -N --retr-symlinks ftp://ftp.mcs.anl.gov/pub/mpi/mpich2-$$lib.tar.gz; \
fi; \
if [ ! -d mpich2-$$lib ] ; then gunzip -c mpich2-$$lib.tar.gz|tar xv ; fi ; \
cd mpich2-$$lib; \
instdir=$(PD)/$(mpiimp); \
./configure --prefix=$$instdir --with-device=ch3:ssm 2>&1 | tee configure.log; \
echo "Enforcing '-j 1' because of problems"; \
echo "with simultaneous/parallel make jobs"; \
$(MAKE) -j 1 2>&1 | tee make.log; \
$(MAKE) install 2>&1 | tee makeinst.log; \
cd ..; ln -s $(mpiimp) mpi
############################
# MVAPICH2 1.0.X
############################
mvapich2olib = $(PD)/mvapich2o/lib/libmpich.a
mvapich2o: $(mvapich2olib)
$(mvapich2olib):
cd $(PD); \
lib=mvapich2-1.1; ext=tar.gz; \
pl= ; \
if [ ! -e $$lib$$pl.tar.gz ]; then wget -N --retr-symlinks http://mvapich.cse.ohio-state.edu/download/mvapich2/$$lib$$pl.$$ext; fi; \
if [ ! -d $$lib ] ; then gunzip -c $$lib$$pl.$$ext|tar xv ; fi ; \
cd $$lib; \
instdir=$(PD)/$(mpiimp); \
unset CFLAGS; export PREFIX=$$instdir; export OPEN_IB_HOME=/usr; export F77=$(FC); export F90=$(FC); \
./make.mvapich2.ofa | tee configure.log; \
cd ..; ln -s $(mpiimp) mpi
# ./configure --prefix=$$instdir --with-device=osu_ch3:mrail:ssm --with-rdma=gen2 --with-pm=mpd --disable-romio --without-mpe 2>&1 | tee configure.log; \
# $(MAKE) 2>&1 | tee make.log; \
# $(MAKE) install 2>&1 | tee makeinst.log
############################
# MVAPICH2 1.2 and later
############################
mvapich2lib = $(PD)/mvapich2/lib/libmpich.a
mvapich2: $(mvapich2lib)
$(mvapich2lib):
cd $(PD); \
lib=mvapich2-1.4; ext=tgz; \
pl= ; \
if [ ! -e $$lib$$pl.tar.gz ]; then wget -N --retr-symlinks http://mvapich.cse.ohio-state.edu/download/mvapich2/$$lib$$pl.$$ext; fi; \
if [ ! -d $$lib ] ; then gunzip -c $$lib$$pl.$$ext|tar xv ; fi ; \
cd $$lib; \
instdir=$(PD)/$(mpiimp); \
./configure --prefix=$$instdir 2>&1 | tee configure.log; \
$(MAKE) 2>&1 | tee make.log; \
$(MAKE) install 2>&1 | tee makeinst.log; \
cd ..; ln -s $(mpiimp) mpi
############################
# MPICH1
############################
mpich1lib = $(PD)/mpich1/lib/libmpich.a
mpich1: $(mpich1lib)
$(mpich1lib):
cd $(PD); \
lib=mpich-1.2.7p1; \
if [ ! -e $$lib.tar.gz ]; then wget -N --retr-symlinks ftp://ftp.mcs.anl.gov/pub/mpi/$$lib.tar.gz; fi; \
if [ ! -d $$lib ] ; then gunzip -c $$lib.tar.gz|tar xv ; fi ; \
cd $$lib; \
instdir=$(PD)/$(mpiimp); \
./configure | tee configure.log; \
$(MAKE) 2>&1 | tee make.log; \
$(MAKE) testing 2>&1 | tee makeinst.log; \
./bin/mpiinstall --prefix=$$instdir; \
cd ..; ln -s $(mpiimp) mpi
############################
# OpenMPI
############################
openmpilib = $(PD)/openmpi/lib/libopenmpi.a
openmpi: $(openmpilib)
$(openmpilib):
cd $(PD); \
lib=openmpi-1.3.4; \
if [ ! -e $$lib.tar.gz ]; then wget -N --retr-symlinks http://www.open-mpi.org/software/ompi/v1.2/downloads/$$lib.tar.gz; fi; \
if [ ! -d $$lib ] ; then gunzip -c $$lib.tar.gz|tar xv ; fi ; \
cd $$lib; \
instdir=$(PD)/$(mpiimp); \
./configure --prefix=$$instdir | tee configure.log; \
$(MAKE) 2>&1 | tee make.log; \
$(MAKE) install 2>&1 | tee makeinst.log; \
cd ..; ln -s $(mpiimp) mpi
############################
# ParMETIS
############################
parmetislib = $(PD)/ParMetis-3.1.1/libmetis.a
parmetis: $(parmetislib)
$(parmetislib):
cd $(PD); \
lib=ParMetis-3.1.1; \
if [ ! -e $$lib.tar.gz ]; then wget -N http://glaros.dtc.umn.edu/gkhome/fetch/sw/parmetis/$$lib.tar.gz; fi; \
if [ ! -d $$lib ] ; then gunzip -c $$lib.tar.gz|tar xv ; fi ; \
cd $$lib/METISLib; \
$(MAKE) "CC=$(MPI_DIR)/bin/mpicc" "LD=$(MPI_DIR)/bin/mpicc" 2>&1 | tee make.log
############################
# MGridGen
############################
mgridgenlib = $(PD)/ParMGridGen-1.0/libmgrid.a
mgridgen: $(mgridgenlib)
$(mgridgenlib):
cd $(PD); \
lib=ParMGridGen-1.0; \
if [ ! -e $$lib.tar.gz ]; then wget -N http://www-users.cs.umn.edu/~moulitsa/download/$$lib.tar.gz; fi; \
if [ ! -d $$lib ] ; then gunzip -c $$lib.tar.gz|tar xv ; fi ; \
cd $$lib/; \
$(MAKE) "make=make" 2>&1 | tee make.log
############################
# SCOTCH
############################
scotchlib = $(PD)/scotch_5.0/libscotch.a
scotch: $(scotchlib)
$(scotchlib):
cd $(PD); \
lib=scotch_5.0; \
if [ ! -e $$lib.6.tgz ]; then wget -N http://gforge.inria.fr/frs/download.php/5218/$$lib.6.tgz; fi; \
if [ ! -d $$lib ] ; then gunzip -c $$lib.tar.gz|tar xv ; fi ; \
cd $$lib/src; \
ln -s Make.inc/Makefile.inc.i686_pc_linux2 Makefile.inc ; \
$(MAKE) 2>&1 | tee make.log; \
$(MAKE) install 2>&1 | tee makeinst.log
############################
# SUNDIALS/PVODE
############################
# set compiler options (modify for your setup!)
# add CPU specific options, e.g. -march=pentium4 -msse2 (cf. man gcc)
sundialslib = $(SUNDIALS_DIR)/lib/libsundials_cvode.a
sundials: $(sundialslib)
$(sundialslib):
cd $(PD); \
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"; \
echo "Please register on the SUNDIALS webpage:"; \
echo "http://www.llnl.gov/CASC/sundials/download/download.html"; \
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"; \
lib=`basename $(SUNDIALS_DIR)`; \
if [ ! -e $$lib.tar.gz ]; then wget -N http://www.magpar.net/static/magpar/libs/$$lib.tar.gz; fi; \
if [ ! -d $$lib ] ; then gunzip -c $$lib.tar.gz|tar xv ; fi ; \
cd $(PD)/$$lib; \
instdir=$(PD)/$$lib; \
./configure --prefix=$$instdir --with-mpi-root=$(MPI_DIR) CFLAGS="$(OPTFLAGS)" --with-precision=$(PRECISION) 2>&1 | tee configure.log; \
echo "forcing make install with -i to ignore errors when overwriting include files"; \
$(MAKE) 2>&1 | tee make.log; \
$(MAKE) -i install 2>&1 | tee makeinst.log
############################
# Python
############################
pythonver=2.6.4
python: FORCE
cd $(PD); \
libver=$(pythonver); \
lib=Python-$$libver; \
if [ ! -e $$lib.tgz ]; then wget -N http://www.python.org/ftp/python/$$libver/$$lib.tgz; fi; \
if [ ! -d $$lib ] ; then gunzip -c $$lib.tgz|tar xv ; fi ; \
cd $$lib; \
export CPP=cpp CC=gcc CXX=g++; \
./configure --prefix=$(PD)/python 2>&1 | tee configure.log; \
$(MAKE) 2>&1 | tee make.log; \
$(MAKE) install 2>&1 | tee makeinst.log
############################
# NumPy
############################
numpy: FORCE
cd $(PD); \
libver=1.3.0; \
lib=numpy-$$libver; \
if [ ! -e $$lib.tar.gz ]; then wget -N http://internap.dl.sourceforge.net/sourceforge/numpy/$$lib.tar.gz; fi; \
if [ ! -d $$lib ] ; then gunzip -c $$lib.tar.gz|tar xv ; fi ; \
cd $$lib; \
export CPP=cpp CC=gcc CXX=g++; unset CFLAGS; unset LDFLAGS; \
rm -f site.cfg ; \
echo "[atlas]" >> site.cfg; \
echo "libraries = f77blas, cblas, atlas" >> site.cfg; \
echo "library_dirs = $(PD)/atlas/lib" >> site.cfg; \
echo "include_dirs = $(PD)/atlas/include" >> site.cfg; \
$(PD)/python/bin/python setup.py install
############################
# matplotlib
############################
matplotlib: FORCE
cd $(PD); \
libver=0.99.1.2; \
lib=matplotlib-$$libver; \
if [ ! -e $$lib.tar.gz ]; then wget -N http://internap.dl.sourceforge.net/sourceforge/matplotlib/$$lib.tar.gz; fi; \
if [ ! -d $$lib ] ; then gunzip -c $$lib.tar.gz|tar xv ; fi ; \
cd $$lib; \
export CPP=cpp CC=gcc CXX=g++; unset CFLAGS; unset LDFLAGS; \
$(PD)/python/bin/python setup.py build; \
$(PD)/python/bin/python setup.py install
############################
# PETSc
############################
#petsclib = $(PETSC_DIR)/lib/PETSc-config-magpar/libpetsc.a
petsc: FORCE
cd $(PD); \
lib=`basename $(PETSC_DIR)`; \
if [ ! -e $$lib.tar.gz ]; then wget ftp://ftp.mcs.anl.gov/pub/petsc/release-snapshots/$$lib.tar.gz; fi; \
if [ ! -d $$lib ] ; then gunzip -c $$lib.tar.gz|tar xv ; fi ; \
cd $$lib; \
cp $(MAGPAR_SRC)/PETSc-config-magpar.py $(PETSC_DIR)/config/; \
OPTFLAGS="$(OPTFLAGS)"; export OPTFLAGS; \
PRECISION="$(PRECISION)"; export PRECISION; \
./config/PETSc-config-magpar.py 2>&1 | tee config.log; \
$(MAKE) all 2>&1 | tee make.log
petsc_mingw: FORCE
cd $(PD); \
lib=`basename $(PETSC_DIR)`; \
if [ ! -e $$lib.tar.gz ]; then Xwget ftp://ftp.mcs.anl.gov/pub/petsc/release-snapshots/$$lib.tar.gz; fi; \
if [ ! -d $$lib ] ; then gunzip -c $$lib.tar.gz|tar xv ; fi ; \
cd $$lib; \
cp $(MAGPAR_SRC)/PETSc-config-magpar.py $(PETSC_DIR)/config/; \
OPTFLAGS="$(OPTFLAGS)"; export OPTFLAGS; \
PRECISION="$(PRECISION)"; export PRECISION; \
./config/PETSc-config-magpar.py 2>&1 | tee config.log; \
hfile=PETSc-config-magpar/include/petscconf.h; \
cp $$hfile $$hfile.bak; \
cat $$hfile.bak | \
sed "/PETSC_HAVE_GETPAGESIZE/,+2 d" | \
sed "/PETSC_HAVE_IEEEFP_H/,+2 d" | \
sed "/PETSC_HAVE_NETDB_H/,+2 d" | \
sed "/PETSC_HAVE_PWD_H/,+2 d" | \
sed "/PETSC_HAVE_SYS_PROCFS_H/,+2 d" | \
sed "/PETSC_HAVE_SYS_RESOURCE_H/,+2 d" | \
sed "/PETSC_HAVE_SYS_TIMES_H/,+2 d" | \
sed "/PETSC_HAVE_SYS_UTSNAME_H/,+2 d" \
> $$hfile; \
$(MAKE) all 2>&1 | tee make.log
# Installation instructions for PETSc versions older than 2.3.0
# have been moved to the FAQ page.
############################
# TAO
############################
# magpar requires
# (PETSc version 3.0.0 and TAO 1.10) or
# (PETSc version 2.3.3 and TAO 1.9) or
# (PETSc version 2.3.2 and TAO 1.8.2) or
# (PETSc version 2.3.0 and TAO 1.8) or
# (PETSc version 2.2.1 and TAO 1.7) or
# (PETSc version 2.2.0 and TAO 1.6) or
# (PETSc version 2.1.6 and TAO 1.5)
taolib = $(TAO_DIR)/lib/PETSc-config-magpar/libtao.a
tao: $(taolib)
$(taolib):
cd $(PD); \
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"; \
echo "Please register on the TAO webpage:"; \
echo "http://www.mcs.anl.gov/research/projects/tao/download/"; \
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"; \
lib=`basename $(TAO_DIR)`; \
if [ ! -e $$lib.tar.gz ]; then wget -N http://www.mcs.anl.gov/research/projects/tao/download/$$lib.tar.gz; fi; \
if [ ! -d $$lib ] ; then gunzip -c $$lib.tar.gz|tar xv ; fi ; \
cd $(TAO_DIR); \
echo "Enforcing '-j 1' because of problems"; \
echo "with simultaneous/parallel make jobs"; \
$(MAKE) -j 1 2>&1 | tee make.log
############################
# zlib
############################
zliblib = $(ZLIB_DIR)/libz.a
zlib: $(zliblib)
$(zliblib):
cd $(PD); \
lib=`basename $(ZLIB_DIR)`; \
if [ ! -e $$lib.tar.gz ]; then wget -N http://www.zlib.net/$$lib.tar.gz; fi; \
if [ ! -d $$lib ] ; then gunzip -c $$lib.tar.gz|tar xv ; fi ; \
ln -s $$lib zlib; \
cd $$lib; \
$(MAKE) CC=$(CC) CFLAGS="-O -fPIC" 2>&1 | tee make.log; \
$(MAKE) test 2>&1 | tee maketest.log
############################
# libpng
############################
pnglib = $(PNG_DIR)/lib/libpng12.a
libpng: $(pnglib)
$(pnglib): $(zliblib)
cd $(PD); \
lib=`basename $(PNG_DIR)`; \
if [ ! -e $$lib.tar.gz ]; then wget -N http://downloads.sourceforge.net/libpng/$$lib.tar.gz; fi; \
if [ ! -d $$lib ] ; then gunzip -c $$lib.tar.gz|tar xv ; fi ; \
cd $$lib; \
instdir=$(PD)/$$lib; \
true ./configure --prefix=$$instdir --enable-shared=no 2>&1 | tee configure.log; \
true CFLAGS="-I$(ZLIB_DIR)"; export CFLAGS; \
true LDFLAGS="-L$(ZLIB_DIR)"; export LDFLAGS; \
./configure CFLAGS="-I$(ZLIB_DIR)" LDFLAGS="-L$(ZLIB_DIR)" --prefix=$$instdir --enable-shared=no 2>&1 | tee configure.log; \
$(MAKE) 2>&1 | tee make.log; \
$(MAKE) install 2>&1 | tee makeinst.log; \
$(MAKE) check 2>&1 | tee makecheck.log
############################
# Gmsh
############################
gmsh: FORCE
cd $(PD); \
ver=2.4.2; \
arc=gmsh-$$ver-Linux.tgz; \
if [ ! -e $$arc ]; then wget -N http://geuz.org/gmsh/bin/Linux/$$arc; fi; \
gunzip -c $$arc|tar xv
############################
# Netgen
############################
netgen: FORCE
cd $(PD); \
ver=4.9.11; \
arc=netgen-$$ver.tar.gz; \
if [ ! -e $$arc ]; then wget -N http://voxel.dl.sourceforge.net/sourceforge/netgen-mesher/$$arc; fi; \
gunzip -c $$arc|tar xv
# dummy target to enforce rebuild of other targets
FORCE:
.PHONY: all atlas atlas_compile lapack mpi mpich2 mvapich2 mpich2 openmpi parmetis mgridgen sundials petsc tao zlib libpng