Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@

# Build folder
build/
123 changes: 9 additions & 114 deletions common.mk
Original file line number Diff line number Diff line change
Expand Up @@ -5,123 +5,18 @@

# Program name
PROGNAME = OceanWave3D
LIBNAME = libOceanWave3D_botp.so
LIBNAME = libOceanWave3D.so

# Installation directory
INSTALLDIR = $(HOME)/bin
LIBINSTALLDIR = $(HOME)/lib
INSTALLDIR ?= install/bin

# Build directory where object files are stored
BUILDDIR = $(PWD)/build
BUILDDIR = build

# The build environment is set either by the choice of a compiler
# flag, or by creating a block for a specific $USER.
# Choose the Fortran compiler on this system
# E.g. pathf90, f90, gfortran, gf90, ifort
#FC = gfortran
#FC = gfortran44
#FC = gfortran-4.4
#FC = gf90
FC = gfortran
LIBDIRS ?= -Llib
LINLIB ?= -llapack -lskit -lblas -lharwell
DBFLAGS ?= -pg -g -O0 -fPIC -fbounds-check -ffpe-trap=invalid,zero,overflow -ffree-line-length-none
OPTFLAGS ?= -O3 -fPIC -ffpe-trap=invalid,zero,overflow -ffree-line-length-none -fstack-protector-all
SHLIBFLAGS ?= -shared -O2 -fPIC -fbounds-check -ffpe-trap=invalid,zero,overflow -ffree-line-length-none -fstack-protector-all

USER = hbb

# First the blocks based on compiler name:

ifeq ($(FC),gfortran44)
# gbar linux machines
LIBDIRS = -L $(HOME)/lib/
LINLIB = -lharwell -lskit -llapack -lblas
DBFLAGS = -pg -g -O0 -fbounds-check -ffpe-trap=invalid,zero,overflow -ffree-line-length-none
OPTFLAGS = -O3 -ffpe-trap=invalid,zero,overflow -ffree-line-length-none
endif

ifeq ($(FC),ifort)
# hbb work machine with intel compiler
LIBDIRS = -L/usr/local/lib/
LINLIB = -lharwell_intel -lskit_intel -llapack_intel -lblas_intel
DBFLAGS = -g -CB -fpe0 -fpstkchk -traceback
OPTFLAGS = -O3 -tpp7
# OPTFLAGS = -g -fast
endif


ifeq ($(FC),gfortran)
# MacOS, apek
LIBDIRS = -L $(HOME)/lib/
# -L/Users/apek/Documents/Fortran/Harwell/lib -L/usr/local/atlas/lib -L/Users/apek/Documents/Fortran/SPARSKIT2
# LINLIB = -lharwell -lskit -latlas -llapack -l_VTK_IO
# LINLIB = -lharwell -lskit -latlas -l_VTK_IO -framework veclib
LINLIB = -lharwell -lskit -latlas -framework veclib
DBFLAGS = -pg -g -O -fcheck=all -ffpe-trap=invalid,zero,overflow
OPTFLAGS = -O2
endif

ifeq ($(FC),pathf90)
# Niflheim cluster, DTU, apek
LIBDIRS = -L/opt/acml3.5.0/pathscale64/lib -L$(HOME)/lib
LINLIB = -lharwellFPATH90 -lskitPATHF90 -llinpackPATHF90 -lacml
DBFLAGS = -pg -g -O -static -woffoptions
OPTFLAGS = -O2 -static -woffoptions -ffortran-bounds-check
endif

ifeq ($(FC),f90)
# gbar, DTU, apek
LIBDIRS = -L$(HOME)/lib/
LINLIB = -lharwell -lskit -xlic_lib=sunperf
DBFLAGS = -pg -g -O0 # -static -woffoptions
OPTFLAGS = -O -fast
# OPTFLAGS = -g -fast
endif

# Then the blocks for specific users (this clobbers the above info.)
ifeq ($(USER),hbb)
# hbb machine, gfortran
FC=gfortran
LIBDIRS = -L $(HOME)/lib/
LINLIB = -lharwell -lskit -llapack -lblas
DBFLAGS = -pg -g -fbounds-check -ffpe-trap=invalid,zero,overflow -ffree-line-length-none -fno-automatic
OPTFLAGS = -pg -O3 -ffree-line-length-none -fno-automatic -ffpe-trap=invalid,zero,overflow
# OPTFLAGS = -g -fast
endif

ifeq ($(USER),botp-dev)
# botp kubuntu, 10.04-64bit
FC = gfortran
LIBDIRS = -L$(HOME)/lib/
LINLIB = -lharwell_gfortran -ltmglib_gfortran -llapack_gfortran -lblas -lskit_gfortran
DBFLAGS = -pg -g -O0 -fPIC -fbounds-check -ffpe-trap=invalid,zero,overflow -ffree-line-length-none
OPTFLAGS = -O3 -fPIC -ffpe-trap=invalid,zero,overflow -ffree-line-length-none -fstack-protector-all
SHLIBFLAGS = -shared -O2 -fPIC -fbounds-check -ffpe-trap=invalid,zero,overflow -ffree-line-length-none -fstack-protector-all
endif


ifeq ($(USER),olli)
# olli linux machine
FC = gfortran
LIBDIRS = -L$(HOME)/lib/ -Ldep/SPARSKIT2/ -Ldep/Harwell/
LINLIB = -lharwell -lskit -llapack -lblas
DBFLAGS = -pg -g -O0 -fbounds-check -ffpe-trap=invalid,zero,overflow -ffree-line-length-none
OPTFLAGS = -O3 -ffpe-trap=invalid,zero,overflow -ffree-line-length-none
endif


ifeq ($(USER),gudu)
# gudu linux machine
FC = ifort
LIBDIRS = -L$(HOME)/lib/
LINLIB = -lharwell -lskit -llapack -lblas
DBFLAGS = -O0 -traceback -check all -warn all
OPTFLAGS = -O3 -xHOST -ipo -ip
endif

ifeq ($(USER),apek)
# MacOS, apek
FC = gfortran
LIBDIRS = -L $(HOME)/lib/
# -L/Users/apek/Documents/Fortran/Harwell/lib -L/usr/local/atlas/lib -L/Users/apek/Documents/Fortran/SPARSKIT2
# LINLIB = -lharwell -lskit -latlas -llapack -l_VTK_IO
# LINLIB = -lharwell -lskit -latlas -l_VTK_IO -framework veclib
LINLIB = -lharwell -lskit -latlas -framework veclib
DBFLAGS = -pg -g -O -fcheck=all -ffpe-trap=invalid,zero,overflow
OPTFLAGS = -O2
endif
54 changes: 28 additions & 26 deletions makefile
Original file line number Diff line number Diff line change
Expand Up @@ -60,38 +60,34 @@ OBJECTS := $(OBJECTS:.f90=.o)
OBJECTSNODIR = $(notdir $(OBJECTS))
OBJECTSBUILDDIR = $(addprefix $(BUILDDIR)/,$(OBJECTSNODIR))

#
#test: $(OBJECTSBUILDDIR)
# @echo $(OBJECTSBUILDDIR)

# default target creates directory
default:
-@mkdir -p -v $(BUILDDIR)
@echo "To install OceanWave3D type 'make Debug|Release'"

# Targets for linking
.PHONY: Release
Release: FFLAGS = $(OPTFLAGS)
Release: $(OBJECTSBUILDDIR)
Release: MODE = "Release"
Release: $(INSTALLDIR)/$(PROGNAME)

.PHONY: Debug
Debug: FFLAGS = $(DBFLAGS)
Debug: MODE = "Debug"
Debug: $(INSTALLDIR)/$(PROGNAME)

$(INSTALLDIR)/$(PROGNAME): $(OBJECTSBUILDDIR) $(INSTALLDIR)
@if ls *.mod &> /dev/null; then \
mv -v ./*.mod $(BUILDDIR); \
cp -v ./thirdpartylibs/LIB_VTK_IO/static/lib_vtk_io.mod $(BUILDDIR); \
fi
@echo "*** Starting linking of files for OceanWave3D (Release)... ***"
@echo "*** Starting linking of files for OceanWave3D ($(MODE))... ***"
@$(FC) $(FFLAGS) -o $(INSTALLDIR)/$(PROGNAME) $(OBJECTSBUILDDIR) $(LIBDIRS) $(LINLIB) $(INCLUDEDIRS)
@echo "OceanWave3D has been built successfully."

Debug: FFLAGS = $(DBFLAGS)
Debug: $(OBJECTSBUILDDIR)
@if ls *.mod &> /dev/null; then \
mv -v *.mod $(BUILDDIR); \
cp -v thirdpartylibs/LIB_VTK_IO/static/lib_vtk_io.mod $(BUILDDIR); \
fi
@echo "*** Starting linking of files for OceanWave3D (Debug)... ***"
$(FC) $(FFLAGS) -o $(INSTALLDIR)/$(PROGNAME) $(OBJECTSBUILDDIR) $(LIBDIRS) $(LINLIB) $(INCLUDEDIRS)
@echo "OceanWave3D ($(MODE)) has been built successfully."

.PHONY: all
all: Release


.PHONY: sharedLlib
sharedLib: FFLAGS = $(SHLIBFLAGS)
sharedLib: $(OBJECTSBUILDDIR)
@if ls *.mod &> /dev/null; then \
Expand All @@ -103,14 +99,14 @@ sharedLib: $(OBJECTSBUILDDIR)
@echo "Shared library for OceanWave3D has been built successfully."



# Compile only - compile all source file to build directory
.PHONY: compile
compile: $(OBJECTSBUILDDIR)

.PHONY: clean
clean:
rm -f $(BUILDDIR)/*.o
rm -f $(BUILDDIR)/*.mod
rm -f $(INSTALLDIR)/$(PROGNAME)
-rm -r $(BUILDDIR)
-rm $(INSTALLDIR)/$(PROGNAME)

#
# Special source dependencies
Expand All @@ -124,18 +120,24 @@ clean:
# $< - A single changed dependency of the current target.

# Generic compilation rules
$(BUILDDIR)/%.o: %.f
$(BUILDDIR)/%.o: %.f $(BUILDDIR)
$(FC) $(FFLAGS) -c $< -o $@ $(INCLUDEDIRS)

$(BUILDDIR)/%.o: %.f90
$(BUILDDIR)/%.o: %.f90 $(BUILDDIR)
@if ls *.mod &> /dev/null; then \
mv -v *.mod $(BUILDDIR); \
cp -v thirdpartylibs/LIB_VTK_IO/static/lib_vtk_io.mod $(BUILDDIR); \
fi
$(FC) $(FFLAGS) -c $< -o $@ $(INCLUDEDIRS)

$(BUILDDIR)/%.mod: %.f
$(BUILDDIR)/%.mod: %.f $(BUILDDIR)
$(FC) $(FFLAGS) -c $< -o $@ $(INCLUDEDIRS)

$(BUILDDIR)/%.mod: %.f90
$(BUILDDIR)/%.mod: %.f90 $(BUILDDIR)
$(FC) $(FFLAGS) -c $< -o $@ $(INCLUDEDIRS)

$(BUILDDIR):
@mkdir -p $@

$(INSTALLDIR):
@mkdir -p $@