Sherman-Morrison/Makefile.verificarlo
Aurélien Delval 7e42a000c4 Update integration of vfc_probes
vfc_probes used to be built along the code in the previous versions.
This has been removed so that the verison used is the one provided
system wide by Verificarlo. Moreover, vfc_test_h5.cpp has been update to
reflect the name changes of vfc_probes functions.
2021-09-02 12:37:22 +02:00

111 lines
3.0 KiB
Makefile

## Compilers
H5CXX = h5c++
CXX = verificarlo-c++
FC = verificarlo-f
## Compiler flags
H5FLAGS = "-I/usr/include/hdf5/serial \
-L/usr/lib/x86_64-linux-gnu/hdf5/serial \
/usr/lib/x86_64-linux-gnu/hdf5/serial/libhdf5_hl_cpp.a \
/usr/lib/x86_64-linux-gnu/hdf5/serial/libhdf5_cpp.a \
/usr/lib/x86_64-linux-gnu/hdf5/serial/libhdf5_hl.a \
/usr/lib/x86_64-linux-gnu/hdf5/serial/libhdf5.a \
-lpthread -lsz -lz -ldl -lm -lvfc_probes \
-Wl,-rpath -Wl,/usr/lib/x86_64-linux-gnu/hdf5/serial"
CXXFLAGS = -O0 -g $(H5FLAGS)
## MKL linker flags
ifeq ($(MKL),-DMKL)
CXXFLAGS += $(MKL)
H5LFLAGS = -L${MKLROOT}/lib/intel64 -Wl,--no-as-needed -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -ldl
ifeq ($(ENV),INTEL)
LFLAGS = -mkl=sequential # implicit
else
LFLAGS = $(H5LFLAGS)
endif
endif
H5CXXFLAGS = $(CXXFLAGS)
FFLAGS = $(CXXFLAGS) -lvfc_probes_f
INCLUDE = -I $(INC_DIR)/
DEPS_CXX = $(OBJ_DIR)/SM_Maponi.o \
$(OBJ_DIR)/SM_Standard.o \
$(OBJ_DIR)/Woodbury.o \
$(OBJ_DIR)/SMWB.o \
$(OBJ_DIR)/Helpers.o
DEPS_F = $(DEPS_CXX) \
$(OBJ_DIR)/finterface_mod.o \
$(OBJ_DIR)/helpers_mod.o
FLIBS = -lstdc++
SRC_DIR := src
TST_DIR := tests
INC_DIR := include
OBJ_DIR := build
BIN_DIR := bin
EXEC := $(BIN_DIR)/cMaponiA3_test_3x3_3 \
$(BIN_DIR)/test_h5 \
$(BIN_DIR)/vfc_test_h5 \
$(BIN_DIR)/fMaponiA3_test_3x3_3 \
$(BIN_DIR)/fMaponiA3_test_4x4_2 \
$(BIN_DIR)/QMCChem_dataset_test
#$(BIN_DIR)/test_external_h5 \
## Build tagets
.PHONY: all clean distclean
all: $(EXEC)
clean:
@rm -vrf $(OBJ_DIR) .*.o *.dbg *.cmdx *.cmod *.ilm *.stb
distclean: clean
@rm -vrf $(BIN_DIR) \
Slater* Updates.dat
#### COMPILING
$(BIN_DIR) $(OBJ_DIR):
mkdir -p $@
### IMPLICIT BUILD RULES
## C++ objects
$(OBJ_DIR)/%.o: $(TST_DIR)/%.cpp $(INC_DIR)/* | $(OBJ_DIR)
$(CXX) $(CXXFLAGS) $(ARCH) $(INCLUDE) -c -o $@ $<
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp $(INC_DIR)/* | $(OBJ_DIR)
$(CXX) $(CXXFLAGS) $(INCLUDE) -c -o $@ $<
## HDF5/C++ objects
$(OBJ_DIR)/%_h5.o: $(TST_DIR)/%_h5.cpp $(INC_DIR)/* | $(OBJ_DIR)
$(H5CXX) $(H5CXXFLAGS) $(INCLUDE) -c -o $@ $<
## Fortran modules
$(OBJ_DIR)/%_mod.o: $(SRC_DIR)/%_mod.f90 | $(OBJ_DIR)
$(FC) $(FFLAGS) $(ARCH) -J $(OBJ_DIR)/ -c -o $@ $<
## Fortran objects
$(OBJ_DIR)/%.o: $(TST_DIR)/%.f90 | $(OBJ_DIR)
$(FC) $(FFLAGS) $(ARCH) -I $(OBJ_DIR)/ -c -o $@ $<
#### LINKING
$(BIN_DIR)/cMaponiA3_test_3x3_3: $(OBJ_DIR)/cMaponiA3_test_3x3_3.o $(DEPS_CXX) | $(BIN_DIR)
$(CXX) $(LFLAGS) -o $@ $^
$(BIN_DIR)/test_h5: $(OBJ_DIR)/test_h5.o $(DEPS_CXX) | $(BIN_DIR)
$(CXX) $(H5LFLAGS) -o $@ $^ $(H5FLAGS)
$(BIN_DIR)/vfc_test_h5: $(OBJ_DIR)/vfc_test_h5.o $(DEPS_CXX) | $(BIN_DIR)
$(CXX) $(H5LFLAGS) -o $@ $^ $(H5FLAGS)
$(BIN_DIR)/fMaponiA3_test_3x3_3: $(DEPS_F) $(OBJ_DIR)/fMaponiA3_test_3x3_3.o | $(BIN_DIR)
$(FC) $(LFLAGS) $(FLIBS) -o $@ $^
$(BIN_DIR)/fMaponiA3_test_4x4_2: $(DEPS_F) $(OBJ_DIR)/fMaponiA3_test_4x4_2.o | $(BIN_DIR)
$(FC) $(LFLAGS) $(FLIBS) -o $@ $^
$(BIN_DIR)/QMCChem_dataset_test: $(DEPS_F) $(OBJ_DIR)/QMCChem_dataset_test.o | $(BIN_DIR)
$(FC) $(LFLAGS) $(FLIBS) -o $@ $^