From 41187a2c434701122c9c7f26f82ea5a878970ed4 Mon Sep 17 00:00:00 2001
From: Antoine Hoffmann <antoine.hoffmann@epfl.ch>
Date: Sun, 12 Mar 2023 12:52:53 +0100
Subject: [PATCH] Simplification of the makefile and dirs.inc (should work on
 any plateforme)

---
 Makefile       | 114 +++++++++++++++++++++++--------------------------
 local/dirs.inc |   1 +
 2 files changed, 54 insertions(+), 61 deletions(-)

diff --git a/Makefile b/Makefile
index baac06c4..7eed6c98 100644
--- a/Makefile
+++ b/Makefile
@@ -1,77 +1,79 @@
 include local/dirs.inc
 include local/make.inc
-#Different namings depending on the make input
-EXEC = $(BINDIR)/gyacomo	#all
-EFST = $(BINDIR)/gyacomo_fast   #fast
-EDBG = $(BINDIR)/gyacomo_debug	#debug
-EALP = $(BINDIR)/gyacomo_alpha  #alpha
-EGFT = $(BINDIR)/gyacomo_gfort  #gfort version
-# F90 = mpiifort
-F90 = mpif90
-# #F90 = ftn #for piz-daint cluster
-# # Add Multiple-Precision Library
-# EXTLIBS += -L$(FMDIR)/lib
-# EXTINC += -I$(FMDIR)/mod
-# # Add local fftw dir
-# EXTLIBS += -L$(FFTWDIR)/lib
-# EXTINC += -I$(FFTWDIR)/include
-# # Add lapack
-# EXTLIBS += -L$(LAPACKDIR)/lib
-# EXTINC += -I$(LAPACKDIR)/mod
-# Standard version with optimized compilation
-all: dirs src/srcinfo.h
+
+# Standard version with optimized compilation (ifort compiler)
+all: F90 = mpif90
 all: F90FLAGS = -O3 -xHOST
-all: $(EXEC)
+all: EXEC = $(BINDIR)/gyacomo
+all: dirs src/srcinfo.h
+all: compile
+
 # Fast compilation
-fast: dirs src/srcinfo.h
+fast: F90 = mpif90
 fast: F90FLAGS = -fast
-fast: $(EFST)
+fast: EXEC = $(BINDIR)/gyacomo_fast
+fast: dirs src/srcinfo.h
+fast: compile
+
 # Debug version with all flags
-debug: dirs src/srcinfo.h
+debug: F90 = mpif90
 debug: F90FLAGS = -C -g -traceback -ftrapuv -warn all -debug all
-# debug: F90FLAGS = -g -traceback -check all -ftrapuv -warn all -debug all
-debug: $(EDBG)
-# Alpha version, optimized as all but creates another binary
-alpha: dirs src/srcinfo.h
-alpha: F90FLAGS = -O3 -xHOST
-alpha: $(EALP)
-# gfortran version, compile with gfortran
-gfort: dirs src/srcinfo.h
-gfort: F90FLAGS = -g -std=legacy -ffree-line-length-0
-gfort: EXTMOD   = -J $(MODDIR)
-gfort: $(EGFT)
-install: dirs src/srcinfo.h $(EXEC) mvmod
-
-run: all
-	(cd wk; $(EXEC);)
+debug: EXEC = $(BINDIR)/gyacomo_debug
+debug: dirs src/srcinfo.h
+debug: compile
+
+# For compiling on marconi
+marconi: F90 = mpiifort
+marconi: F90FLAGS = -O3 -xHOST
+marconi: EXEC = $(BINDIR)/gyacomo
+marconi: dirs src/srcinfo.h
+marconi: compile
+
+# For compiling on daint
+daint: F90 = ftn
+daint: F90FLAGS = -O3
+daint: EXEC = $(BINDIR)/gyacomo
+daint: dirs src/srcinfo.h
+daint: compile
+
+# gfortran opt version, for compilation with gfortran
+gopt: F90 = mpif90
+gopt: F90FLAGS = -O3 -std=legacy -ffree-line-length-0
+gopt: EXTMOD   = -J $(MODDIR)
+gopt: EXEC = $(BINDIR)/gyacomo
+gopt: dirs src/srcinfo.h
+gopt: compile
 
+# gfortran version, compile with gfortran
+gdebug: F90 = mpif90
+gdebug: F90FLAGS = -C -g -std=legacy -ffree-line-length-0
+gdebug: EXTMOD   = -J $(MODDIR)
+gdebug: EXEC = $(BINDIR)/gyacomo_debug
+gdebug: dirs src/srcinfo.h
+gdebug: compile
+
+# subroutines
 dirs:
 	mkdir -p $(BINDIR)
 	mkdir -p $(OBJDIR)
 	mkdir -p $(MODDIR)
-
 src/srcinfo.h:
 	( cd src/srcinfo; $(MAKE);)
-
 clean: cleanobj cleanmod
 	@rm -f src/srcinfo.h
 	@rm -f src/srcinfo/srcinfo.h
-
 cleanobj:
 	@rm -f $(OBJDIR)/*o
-
 cleanmod:
 	@rm -f $(MODDIR)/*mod
 	@rm -f *.mod
-
-cleanbin:
-	@rm -f $(EXEC)
-
 mvmod:
 	mv *.mod mod/.
 
+# attach git info
 $(OBJDIR)/diagnose.o : src/srcinfo.h
 
+# Main source dependencies
 FOBJ=$(OBJDIR)/advance_field_mod.o $(OBJDIR)/array_mod.o $(OBJDIR)/auxval.o \
 $(OBJDIR)/basic_mod.o $(OBJDIR)/coeff_mod.o $(OBJDIR)/closure_mod.o \
 $(OBJDIR)/collision_mod.o $(OBJDIR)/nonlinear_mod.o $(OBJDIR)/control.o \
@@ -86,21 +88,11 @@ $(OBJDIR)/processing_mod.o $(OBJDIR)/readinputs.o $(OBJDIR)/restarts_mod.o \
 $(OBJDIR)/solve_EM_fields.o $(OBJDIR)/stepon.o $(OBJDIR)/tesend.o \
 $(OBJDIR)/time_integration_mod.o $(OBJDIR)/utility_mod.o
 
- $(EXEC): $(FOBJ)
-	$(F90) $(LDFLAGS) $(OBJDIR)/*.o $(EXTMOD) $(EXTINC) $(EXTLIBS) -o $@
-
- $(EFST): $(FOBJ)
-	$(F90) $(LDFLAGS) $(OBJDIR)/*.o $(EXTMOD) $(EXTINC) $(EXTLIBS) -o $@
-
- $(EDBG): $(FOBJ)
-	$(F90) $(LDFLAGS) $(OBJDIR)/*.o $(EXTMOD) $(EXTINC) $(EXTLIBS) -o $@
-
- $(EALP): $(FOBJ)
-	$(F90) $(LDFLAGS) $(OBJDIR)/*.o $(EXTMOD) $(EXTINC) $(EXTLIBS) -o $@
-
- $(EGFT): $(FOBJ)
-	$(F90) $(LDFLAGS) $(OBJDIR)/*.o $(EXTMOD) $(EXTINC) $(EXTLIBS) -o $@
+# To compile the executable
+ compile: $(FOBJ)
+	$(F90) $(LDFLAGS) $(OBJDIR)/*.o $(EXTMOD) $(EXTINC) $(EXTLIBS) -o $(EXEC)
 
+# Modules compilation
  $(OBJDIR)/advance_field_mod.o : src/advance_field_mod.F90 \
    $(OBJDIR)/grid_mod.o $(OBJDIR)/array_mod.o $(OBJDIR)/initial_par_mod.o \
 	 $(OBJDIR)/prec_const_mod.o $(OBJDIR)/time_integration_mod.o $(OBJDIR)/basic_mod.o \
diff --git a/local/dirs.inc b/local/dirs.inc
index 2695b83f..c2714d1e 100644
--- a/local/dirs.inc
+++ b/local/dirs.inc
@@ -6,6 +6,7 @@ OBJDIR   = $(PREFIX)/obj
 LIBDIR   = $(PREFIX)/lib
 MODDIR   = $(PREFIX)/mod
 
+HDF5_LIB   = /usr/local/hdf5-1.8.22/lib
 FMDIR      = $(HOME)/lib/FM
 FFTW3DIR   = $(HOME)/lib/fftw-3.3.8
 #FFTW3DIR   = $(FFTW_HOME)#for Marconi
-- 
GitLab