summaryrefslogtreecommitdiff
path: root/Skin++/src/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Skin++/src/Makefile')
-rwxr-xr-xSkin++/src/Makefile182
1 files changed, 182 insertions, 0 deletions
diff --git a/Skin++/src/Makefile b/Skin++/src/Makefile
new file mode 100755
index 0000000..fe13dae
--- /dev/null
+++ b/Skin++/src/Makefile
@@ -0,0 +1,182 @@
+#---------------------------------------------------------------------------
+#
+# Makefile for building the Skin++ library and load module
+# Author : A. Hebert (2018-5-10)
+#
+#---------------------------------------------------------------------------
+#
+ARCH = $(shell uname -m)
+ifneq (,$(filter $(ARCH),aarch64 arm64))
+ nbit =
+else
+ ifneq (,$(filter $(ARCH),i386 i686))
+ nbit = -m32
+ else
+ nbit = -m64
+ endif
+endif
+
+DIRNAME = $(shell uname -sm | sed 's/[ ]/_/')
+OS = $(shell uname -s | cut -d"_" -f1)
+opt = -O -g
+ifeq ($(openmp),1)
+ COMP = -fopenmp
+ FOMP = -fopenmp -D_OPENMP
+else
+ COMP =
+ FOMP =
+endif
+
+ifeq ($(intel),1)
+ fcompiler = ifort
+ ccompiler = icpc
+else
+ ifeq ($(nvidia),1)
+ fcompiler = nvfortran
+ ccompiler = nvc++
+ else
+ ifeq ($(llvm),1)
+ fcompiler = flang-new
+ ccompiler = clang++
+ else
+ fcompiler = gfortran
+ ccompiler = gcc
+ endif
+ endif
+endif
+
+clib = -lstdc++
+ifeq ($(OS),Darwin)
+ C = $(ccompiler) -std=c++17
+ F90 = $(fcompiler)
+ FLAGS = -DLinux -DUnix
+ CFLAGS = -Wall $(nbit) -fPIC
+ LFLAGS = $(nbit)
+ clib = -lc++
+else
+ifeq ($(OS),Linux)
+ ifeq ($(nvidia),1)
+ C = $(ccompiler) -std=c++14
+ else
+ C = $(ccompiler) -std=c++17
+ endif
+ F90 = $(fcompiler)
+ FLAGS = -DLinux -DUnix
+ CFLAGS = -Wall $(nbit) -fPIC
+ LFLAGS = $(nbit)
+else
+ifeq ($(OS),CYGWIN)
+ C = g++ -std=c++17
+ F90 = $(fcompiler)
+ FLAGS = -DLinux -DUnix
+ CFLAGS = -Wall $(nbit) -fPIC
+ LFLAGS = $(nbit)
+else
+ifeq ($(OS),SunOS)
+ MAKE = gmake
+ F90 = f90
+ C = cc
+ FLAGS = -DSunOS -DUnix
+ CFLAGS = $(nbit)
+ LFLAGS = $(nbit)
+else
+ifeq ($(OS),AIX)
+ opt = -O4
+ MAKE = gmake
+ DIRNAME = AIX
+ F90 = xlf90
+ C = xlc
+ FLAGS = -DAIX -DUnix
+ CFLAGS = -qstrict
+ LFLAGS = -qstrict -bmaxdata:0x80000000 -qipa
+else
+ $(error $(OS) is not a valid OS)
+endif
+endif
+endif
+endif
+endif
+INCLUDE = -I../../Ganlib/src/
+
+ifeq ($(intel),1)
+ FFLAGS = -fPIC
+ FFLAG77 = -fPIC
+ lib = ../lib/$(DIRNAME)_intel
+ bin = ../bin/$(DIRNAME)_intel
+ libUtl = ../../Utilib/lib/$(DIRNAME)_intel
+ libGan = ../../Ganlib/lib/$(DIRNAME)_intel
+ libTri = ../../Trivac/lib/$(DIRNAME)_intel
+ libDra = ../../Dragon/lib/$(DIRNAME)_intel
+ libDon = ../../Donjon/lib/$(DIRNAME)_intel
+else
+ ifeq ($(nvidia),1)
+ lib = ../lib/$(DIRNAME)_nvidia
+ bin = ../bin/$(DIRNAME)_nvidia
+ libUtl = ../../Utilib/lib/$(DIRNAME)_nvidia
+ libGan = ../../Ganlib/lib/$(DIRNAME)_nvidia
+ libTri = ../../Trivac/lib/$(DIRNAME)_nvidia
+ libDra = ../../Dragon/lib/$(DIRNAME)_nvidia
+ libDon = ../../Donjon/lib/$(DIRNAME)_nvidia
+ else
+ ifeq ($(llvm),1)
+ lib = ../lib/$(DIRNAME)_llvm
+ bin = ../bin/$(DIRNAME)_llvm
+ libUtl = ../../Utilib/lib/$(DIRNAME)_llvm
+ libGan = ../../Ganlib/lib/$(DIRNAME)_llvm
+ libTri = ../../Trivac/lib/$(DIRNAME)_llvm
+ libDra = ../../Dragon/lib/$(DIRNAME)_llvm
+ libDon = ../../Donjon/lib/$(DIRNAME)_llvm
+ LFLAGS += -lclang_rt.osx
+ else
+ lib = ../lib/$(DIRNAME)
+ bin = ../bin/$(DIRNAME)
+ libUtl = ../../Utilib/lib/$(DIRNAME)
+ libGan = ../../Ganlib/lib/$(DIRNAME)
+ libTri = ../../Trivac/lib/$(DIRNAME)
+ libDra = ../../Dragon/lib/$(DIRNAME)
+ libDon = ../../Donjon/lib/$(DIRNAME)
+ endif
+ endif
+endif
+
+ifeq ($(hdf5),1)
+ CFLAGS += -DHDF5_LIB -I${HDF5_INC}
+ LFLAGS += -L${HDF5_API} -lhdf5
+endif
+
+SRCC = $(shell ls *.cxx)
+OBJC = $(SRCC:.cxx=.o)
+all : sub-make Skin++
+ifeq ($(openmp),1)
+ @echo 'Skin++: openmp is defined'
+endif
+ifeq ($(intel),1)
+ @echo 'Skin++: intel is defined'
+endif
+ifeq ($(nvidia),1)
+ @echo 'Skin++: nvidia is defined'
+endif
+ifeq ($(llvm),1)
+ @echo 'Skin++: llvm is defined'
+endif
+ifeq ($(hdf5),1)
+ @echo 'Skin++: hdf5 is defined'
+endif
+sub-make:
+ $(MAKE) openmp=$(openmp) intel=$(intel) nvidia=$(nvidia) llvm=$(llvm) hdf5=$(hdf5) -C ../../Donjon/src
+%.o : %.cxx
+ $(C) $(CFLAGS) $(FLAGS) $(opt) $(COMP) $(INCLUDE) -c $< -o $@
+$(lib)/:
+ mkdir -p $(lib)/
+libSkin++.a: $(OBJC) $(lib)/
+ ar r $@ $(OBJC)
+ cp $@ $(lib)/$@
+$(bin)/:
+ mkdir -p $(bin)/
+Skin++: libSkin++.a Skin++.o $(bin)/ sub-make
+ $(F90) $(opt) $(FOMP) Skin++.o $(lib)/libSkin++.a $(libDon)/libDonjon.a $(libDra)/libDragon.a $(libTri)/libTrivac.a \
+ $(libDra)/libDragon.a $(libUtl)/libUtilib.a $(libGan)/libGanlib.a $(clib) $(LFLAGS) -o Skin++
+ cp $@ $(bin)/$@
+clean:
+ $(MAKE) -C ../../Donjon/src clean
+ /bin/rm -f *.o *.a sub-make Skin++