diff options
| author | stainer_t <thomas.stainer@oecd-nea.org> | 2025-09-08 13:48:49 +0200 |
|---|---|---|
| committer | stainer_t <thomas.stainer@oecd-nea.org> | 2025-09-08 13:48:49 +0200 |
| commit | 7dfcc480ba1e19bd3232349fc733caef94034292 (patch) | |
| tree | 03ee104eb8846d5cc1a981d267687a729185d3f3 /Skin++/src/Makefile | |
Initial commit from Polytechnique Montreal
Diffstat (limited to 'Skin++/src/Makefile')
| -rwxr-xr-x | Skin++/src/Makefile | 182 |
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++ |
