From 4037d0d6de497c897e67c0f83b93f54e9ac48c31 Mon Sep 17 00:00:00 2001 From: "Mulas, Giacomo" <gmulas@oa-cagliari.inaf.it> Date: Mon, 12 Feb 2024 17:56:51 +0100 Subject: [PATCH] update Makefiles to build libnptm library, then link to it --- {src/objects => build/libnptm}/.gitkeep | 0 src/Makefile | 37 ++++++++++++------ src/cluster/Makefile | 29 ++++++++++---- src/libnptm/Makefile | 51 +++++++++++++++++++++++++ src/make.inc | 23 +++++++++++ src/sphere/Makefile | 29 ++++++++++---- src/testing/Makefile | 30 +++++++++++---- src/trapping/Makefile | 28 ++++++++++---- 8 files changed, 187 insertions(+), 40 deletions(-) rename {src/objects => build/libnptm}/.gitkeep (100%) create mode 100644 src/libnptm/Makefile diff --git a/src/objects/.gitkeep b/build/libnptm/.gitkeep similarity index 100% rename from src/objects/.gitkeep rename to build/libnptm/.gitkeep diff --git a/src/Makefile b/src/Makefile index 0f1c7078..dd65769a 100644 --- a/src/Makefile +++ b/src/Makefile @@ -4,9 +4,17 @@ OBJDIR=$(SRCDIR)/objects ifndef BUILDDIR override BUILDDIR=$(SRCDIR)/../build endif +ifndef BUILDDIR_NPTM +override BUILDDIR_NPTM=$(BUILDDIR)/libnptm +endif +ifndef LIBNPTM +# choose one of the two following lines, depending on whether a static or dynamic libnptm is wanted +#override LIBNPTM=$(BUILDDIR_NPTM)/libnptm.a +override LIBNPTM=$(BUILDDIR_NPTM)/libnptm.so +endif DOCSDIR=$(SRCDIR)/../doc -all: $(SUBDIRS) $(BUILDDIR) +all: $(BUILDDIR) $(SUBDIRS) docs: cd $(DOCSDIR)/src; doxygen config.dox @@ -14,20 +22,27 @@ docs: $(BUILDDIR): mkdir -p $(BUILDDIR) -$(SUBDIRS): $(BUILDDIR) - $(MAKE) -C $@ +$(LIBNPTM): + #echo "BUILDDIR_NPTM in libnptm is $(BUILDDIR_NPTM)" + #echo "LIBNPTM in libnptm is $(LIBNPTM)" + BUILDDIR=$(BUILDDIR) BUILDDIR_NPTM=$(BUILDDIR_NPTM) LIBNPTM=$(LIBNPTM) $(MAKE) -C libnptm $@ + +$(SUBDIRS): $(BUILDDIR) $(LIBNPTM) + BUILDDIR=$(BUILDDIR) BUILDDIR_NPTM=$(BUILDDIR_NPTM) LIBNPTM=$(LIBNPTM) $(MAKE) -C $@ clean: $(BUILDDIR) - $(MAKE) -C cluster clean - $(MAKE) -C sphere clean - $(MAKE) -C trapping clean - $(MAKE) -C testing clean + BUILDDIR=$(BUILDDIR) $(MAKE) -C cluster clean + BUILDDIR=$(BUILDDIR) $(MAKE) -C sphere clean + BUILDDIR=$(BUILDDIR) $(MAKE) -C trapping clean + BUILDDIR=$(BUILDDIR) $(MAKE) -C testing clean + BUILDDIR=$(BUILDDIR) BUILDDIR_NPTM=$(BUILDDIR_NPTM) $(MAKE) -C libnptm clean wipe: $(BUILDDIR) - $(MAKE) -C cluster wipe - $(MAKE) -C sphere wipe - $(MAKE) -C trapping wipe - $(MAKE) -C testing wipe + BUILDDIR=$(BUILDDIR) $(MAKE) -C cluster wipe + BUILDDIR=$(BUILDDIR) $(MAKE) -C sphere wipe + BUILDDIR=$(BUILDDIR) $(MAKE) -C trapping wipe + BUILDDIR=$(BUILDDIR) $(MAKE) -C testing wipe + BUILDDIR=$(BUILDDIR) BUILDDIR_NPTM=$(BUILDDIR_NPTM) $(MAKE) -C libnptm wipe if [ -d $(DOCSDIR)/build/html ]; then rm -r $(DOCSDIR)/build/html; fi if [ -d $(DOCSDIR)/build/latex ]; then rm -r $(DOCSDIR)/build/latex; fi diff --git a/src/cluster/Makefile b/src/cluster/Makefile index a8da6ac5..7aa295bd 100644 --- a/src/cluster/Makefile +++ b/src/cluster/Makefile @@ -5,7 +5,15 @@ ifndef BUILDDIR_CLU override BUILDDIR_CLU=$(BUILDDIR)/cluster endif ifndef OBJDIR -override OBJDIR=../objects +override OBJDIR=./objects +endif +ifndef BUILDDIR_NPTM +override BUILDDIR_NPTM=$(BUILDDIR)/libnptm +endif +ifndef LIBNPTM +# choose one of the two following lines, depending on whether a static or dynamic libnptm is wanted +override LIBNPTM=$(BUILDDIR_NPTM)/libnptm.a +#override LIBNPTM=$(BUILDDIR_NPTM)/libnpTm.so endif include ../make.inc @@ -13,22 +21,29 @@ include ../make.inc F_CLU_OBJS=$(OBJDIR)/clu.o $(OBJDIR)/edfb_clu.o -CXX_CLU_OBJS=$(OBJDIR)/np_cluster.o $(OBJDIR)/Commons.o $(OBJDIR)/Configuration.o $(OBJDIR)/file_io.o $(OBJDIR)/Parsers.o $(OBJDIR)/sph_subs.o $(OBJDIR)/clu_subs.o $(OBJDIR)/cluster.o $(OBJDIR)/TransitionMatrix.o +#CXX_CLU_OBJS=$(OBJDIR)/np_cluster.o $(OBJDIR)/Commons.o $(OBJDIR)/Configuration.o $(OBJDIR)/file_io.o $(OBJDIR)/Parsers.o $(OBJDIR)/sph_subs.o $(OBJDIR)/clu_subs.o $(OBJDIR)/cluster.o $(OBJDIR)/TransitionMatrix.o +CXX_CLU_OBJS=$(OBJDIR)/np_cluster.o $(OBJDIR)/cluster.o $(LIBNPTM) + + +all: $(LIBNPTM) $(BUILDDIR_CLU)/clu $(BUILDDIR_CLU)/edfb_clu $(BUILDDIR_CLU)/np_cluster +$(OBJDIR): + mkdir -p $(OBJDIR) -all: $(BUILDDIR_CLU)/clu $(BUILDDIR_CLU)/edfb_clu $(BUILDDIR_CLU)/np_cluster +$(LIBNPTM): + $(MAKE) -C ../libnptm $@ $(BUILDDIR_CLU): mkdir -p $(BUILDDIR_CLU) -$(BUILDDIR_CLU)/clu: $(OBJDIR)/clu.o $(BUILDDIR_CLU) +$(BUILDDIR_CLU)/clu: $(OBJDIR) $(OBJDIR)/clu.o $(BUILDDIR_CLU) $(FC) $(FCFLAGS) -o $(BUILDDIR_CLU)/clu $(OBJDIR)/clu.o $(LDFLAGS) -$(BUILDDIR_CLU)/edfb_clu: $(OBJDIR)/edfb_clu.o $(BUILDDIR_CLU) +$(BUILDDIR_CLU)/edfb_clu: $(OBJDIR) $(OBJDIR)/edfb_clu.o $(BUILDDIR_CLU) $(FC) $(FCFLAGS) -o $(BUILDDIR_CLU)/edfb_clu $(OBJDIR)/edfb_clu.o $(LDFLAGS) -$(BUILDDIR_CLU)/np_cluster: $(CXX_CLU_OBJS) $(BUILDDIR_CLU) - $(CXX) $(CXXFLAGS) -o $(BUILDDIR_CLU)/np_cluster $(CXX_CLU_OBJS) $(CXXLDFLAGS) +$(BUILDDIR_CLU)/np_cluster: $(OBJDIR) $(CXX_CLU_OBJS) $(BUILDDIR_CLU) $(LIBNPTM) + $(CXX) $(CXXFLAGS) -o $(BUILDDIR_CLU)/np_cluster $(CXX_CLU_OBJS) $(LIBNPTM) $(CXXLDFLAGS) clean: rm -f $(F_CLU_OBJS) $(CXX_CLU_OBJS) diff --git a/src/libnptm/Makefile b/src/libnptm/Makefile new file mode 100644 index 00000000..e7e4cdf1 --- /dev/null +++ b/src/libnptm/Makefile @@ -0,0 +1,51 @@ +ifndef BUILDDIR +override BUILDDIR=../../build +endif +ifndef BUILDDIR_NPTM +override BUILDDIR_NPTM=$(BUILDDIR)/libnptm +endif +ifndef LIBNPTM +# choose one of the two following lines, depending on whether a static or dynamic libnptm is wanted +override LIBNPTM=$(BUILDDIR_NPTM)/libnptm.a +#override LIBNPTM=$(BUILDDIR_NPTM)/libnptm.so +endif +ifndef OBJDIR +override OBJDIR=./objects +endif +ifndef DYNOBJDIR +override DYNOBJDIR=./dynobjects +endif + +include ../make.inc + + +CXX_NPTM_OBJS=$(OBJDIR)/Commons.o $(OBJDIR)/Configuration.o $(OBJDIR)/file_io.o $(OBJDIR)/Parsers.o $(OBJDIR)/sph_subs.o $(OBJDIR)/clu_subs.o $(OBJDIR)/tra_subs.o $(OBJDIR)/TransitionMatrix.o + +CXX_NPTM_DYNOBJS=$(DYNOBJDIR)/Commons.o $(DYNOBJDIR)/Configuration.o $(DYNOBJDIR)/file_io.o $(DYNOBJDIR)/Parsers.o $(DYNOBJDIR)/sph_subs.o $(DYNOBJDIR)/clu_subs.o $(DYNOBJDIR)/tra_subs.o $(DYNOBJDIR)/TransitionMatrix.o + + +all: $(BUILDDIR_NPTM)/libnptm.a $(BUILDDIR_NPTM)/libnptm.so + +$(OBJDIR): + mkdir -p $(OBJDIR) + +$(DYNOBJDIR): + mkdir -p $(DYNOBJDIR) + +$(BUILDDIR_NPTM): + mkdir -p $(BUILDDIR_NPTM) + +$(BUILDDIR_NPTM)/libnptm.a: $(BUILDDIR_NPTM) $(OBJDIR) $(CXX_NPTM_OBJS) + $(AR) $(ARFLAGS) $(BUILDDIR_NPTM)/libnptm.a $(CXX_NPTM_OBJS) + +$(BUILDDIR_NPTM)/libnptm.so: $(BUILDDIR_NPTM) $(DYNOBJDIR) $(CXX_NPTM_DYNOBJS) + $(CXX) $(CXXFLAGS) $(PICFLAGS) $(SOFLAGS) -o $(BUILDDIR_NPTM)/libnptm.so $(CXX_NPTM_DYNOBJS) + +clean: + rm -f $(CXX_NPTM_OBJS) $(CXX_NPTM_DYNOBJS) + +wipe: + #echo "BUILDDIR_NPTM in libnptm is $(BUILDDIR_NPTM)" + #echo "LIBNPTM in libnptm is $(LIBNPTM)" + rm -f $(BUILDDIR_NPTM)/libnptm.a $(BUILDDIR_NPTM)/libnptm.so $(CXX_NPTM_OBJS) $(CXX_NPTM_DYNOBJS) + diff --git a/src/make.inc b/src/make.inc index 83639562..b1536f10 100644 --- a/src/make.inc +++ b/src/make.inc @@ -8,6 +8,21 @@ ifndef FCFLAGS override FCFLAGS=-std=legacy -O3 endif +# AR defines the command to create static library files +ifndef AR +override AR=ar +endif + +# ARFLAGS defines the flags for AR to create static library files +ifndef ARFLAGS +override ARFLAGS=-rs +endif + +# PICFLAGS defines the additional flags for the c++ compiler to create objects suitable for shared library creation +ifndef PICFLAGS +override PICFLAGS=-fPIC +endif + # LDFLAGS defines the default linker flags ifndef LDFLAGS override LDFLAGS= @@ -40,6 +55,11 @@ override CXXLDFLAGS=-L/usr/lib64 -L$(HDF5_LIB) -lhdf5 $(LDFLAGS) #override CXXLDFLAGS=-L/usr/lib64 -L$(HDF5_LIB) -lhdf5 $(CXXLDFLAGS) endif +#SOFLAGS defines the additional flags for the c++ compiler to create a shared object file +ifndef SOFLAGS +override SOFLAGS=-shared +endif + %.o : %.f $(FC) $(FCFLAGS) -c -o $@ $< @@ -52,5 +72,8 @@ $(OBJDIR)/%.o : %.f $(OBJDIR)/%.o : %.cpp $(CXX) $(CXXFLAGS) -c -o $@ $< +$(DYNOBJDIR)/%.o : %.cpp + $(CXX) $(CXXFLAGS) $(PICFLAGS) -c -o $@ $< + $(OBJDIR)/%.o : ../libnptm/%.cpp $(CXX) $(CXXFLAGS) -c -o $@ $< diff --git a/src/sphere/Makefile b/src/sphere/Makefile index d012622e..a2b56691 100644 --- a/src/sphere/Makefile +++ b/src/sphere/Makefile @@ -5,7 +5,15 @@ ifndef BUILDDIR_SPH override BUILDDIR_SPH=$(BUILDDIR)/sphere endif ifndef OBJDIR -override OBJDIR=../objects +override OBJDIR=./objects +endif +ifndef BUILDDIR_NPTM +override BUILDDIR_NPTM=$(BUILDDIR)/libnptm +endif +ifndef LIBNPTM +# choose one of the two following lines, depending on whether a static or dynamic libnptm is wanted +override LIBNPTM=$(BUILDDIR_NPTM)/libnptm.a +#override LIBNPTM=$(BUILDDIR_NPTM)/libnpTm.so endif include ../make.inc @@ -13,21 +21,28 @@ include ../make.inc F_SPH_OBJS=$(OBJDIR)/edfb_sph.o $(OBJDIR)/sph.o -CXX_SPH_OBJS=$(OBJDIR)/np_sphere.o $(OBJDIR)/Commons.o $(OBJDIR)/Configuration.o $(OBJDIR)/file_io.o $(OBJDIR)/Parsers.o $(OBJDIR)/sph_subs.o $(OBJDIR)/sphere.o $(OBJDIR)/TransitionMatrix.o +#CXX_SPH_OBJS=$(OBJDIR)/np_sphere.o $(OBJDIR)/Commons.o $(OBJDIR)/Configuration.o $(OBJDIR)/file_io.o $(OBJDIR)/Parsers.o $(OBJDIR)/sph_subs.o $(OBJDIR)/sphere.o $(OBJDIR)/TransitionMatrix.o +CXX_SPH_OBJS=$(OBJDIR)/np_sphere.o $(OBJDIR)/sphere.o + +all: $(LIBNPTM) $(BUILDDIR_SPH)/edfb_sph $(BUILDDIR_SPH)/sph $(BUILDDIR_SPH)/np_sphere + +$(OBJDIR): + mkdir -p $(OBJDIR) -all: $(BUILDDIR_SPH)/edfb_sph $(BUILDDIR_SPH)/sph $(BUILDDIR_SPH)/np_sphere +$(LIBNPTM): + $(MAKE) -C ../libnptm $@ $(BUILDDIR_SPH): mkdir -p $(BUILDDIR_SPH) -$(BUILDDIR_SPH)/edfb_sph: $(OBJDIR)/edfb_sph.o $(BUILDDIR_SPH) +$(BUILDDIR_SPH)/edfb_sph: $(OBJDIR) $(OBJDIR)/edfb_sph.o $(BUILDDIR_SPH) $(FC) $(FCFLAGS) -o $(BUILDDIR_SPH)/edfb_sph $(OBJDIR)/edfb_sph.o $(LDFLAGS) -$(BUILDDIR_SPH)/sph: $(OBJDIR)/sph.o $(BUILDDIR_SPH) +$(BUILDDIR_SPH)/sph: $(OBJDIR) $(OBJDIR)/sph.o $(BUILDDIR_SPH) $(FC) $(FCFLAGS) -o $(BUILDDIR_SPH)/sph $(OBJDIR)/sph.o $(LDFLAGS) -$(BUILDDIR_SPH)/np_sphere: $(CXX_SPH_OBJS) $(BUILDDIR_SPH) - $(CXX) $(CXXFLAGS) -o $(BUILDDIR_SPH)/np_sphere $(CXX_SPH_OBJS) $(CXXLDFLAGS) +$(BUILDDIR_SPH)/np_sphere: $(OBJDIR) $(CXX_SPH_OBJS) $(BUILDDIR_SPH) $(LIBNPTM) + $(CXX) $(CXXFLAGS) -o $(BUILDDIR_SPH)/np_sphere $(CXX_SPH_OBJS) $(LIBNPTM) $(CXXLDFLAGS) clean: rm -f $(F_SPH_OBJS) $(CXX_SPH_OBJS) diff --git a/src/testing/Makefile b/src/testing/Makefile index 9fff52e8..4e3f4abe 100644 --- a/src/testing/Makefile +++ b/src/testing/Makefile @@ -5,26 +5,40 @@ ifndef BUILDDIR_TEST override BUILDDIR_TEST=$(BUILDDIR)/testing endif ifndef OBJDIR -override OBJDIR=../objects +override OBJDIR=./objects +endif +ifndef BUILDDIR_NPTM +override BUILDDIR_NPTM=$(BUILDDIR)/libnptm +endif +ifndef LIBNPTM +# choose one of the two following lines, depending on whether a static or dynamic libnptm is wanted +override LIBNPTM=$(BUILDDIR_NPTM)/libnptm.a +#override LIBNPTM=$(BUILDDIR_NPTM)/libnpTm.so endif include ../make.inc -CXX_TEDF_OBJS=$(OBJDIR)/test_TEDF.o $(OBJDIR)/Configuration.o $(OBJDIR)/file_io.o $(OBJDIR)/Parsers.o +CXX_TEDF_OBJS=$(OBJDIR)/test_TEDF.o + +CXX_TTMS_OBJS=$(OBJDIR)/test_TTMS.o + +all: $(LIBNPTM) $(BUILDDIR_TEST)/test_TEDF $(BUILDDIR_TEST)/test_TTMS -CXX_TTMS_OBJS=$(OBJDIR)/test_TTMS.o $(OBJDIR)/file_io.o $(OBJDIR)/Parsers.o $(OBJDIR)/TransitionMatrix.o +$(OBJDIR): + mkdir -p $(OBJDIR) -all: $(BUILDDIR_TEST)/test_TEDF $(BUILDDIR_TEST)/test_TTMS +$(LIBNPTM): + $(MAKE) -C ../libnptm $@ $(BUILDDIR_TEST): mkdir -p $(BUILDDIR_TEST) -$(BUILDDIR_TEST)/test_TEDF: $(CXX_TEDF_OBJS) $(BUILDDIR_TEST) - $(CXX) $(CXXFLAGS) -o $(BUILDDIR_TEST)/test_TEDF $(CXX_TEDF_OBJS) $(CXXLDFLAGS) +$(BUILDDIR_TEST)/test_TEDF: $(OBJDIR) $(CXX_TEDF_OBJS) $(BUILDDIR_TEST) $(LIBNPTM) + $(CXX) $(CXXFLAGS) -o $(BUILDDIR_TEST)/test_TEDF $(CXX_TEDF_OBJS) $(LIBNPTM) $(CXXLDFLAGS) -$(BUILDDIR_TEST)/test_TTMS: $(CXX_TTMS_OBJS) $(BUILDDIR_TEST) - $(CXX) $(CXXFLAGS) -o $(BUILDDIR_TEST)/test_TTMS $(CXX_TTMS_OBJS) $(CXXLDFLAGS) +$(BUILDDIR_TEST)/test_TTMS: $(OBJDIR) $(CXX_TTMS_OBJS) $(BUILDDIR_TEST) $(LIBNPTM) + $(CXX) $(CXXFLAGS) -o $(BUILDDIR_TEST)/test_TTMS $(CXX_TTMS_OBJS) $(LIBNPTM) $(CXXLDFLAGS) clean: rm -f $(CXX_TEDF_OBJS) $(CXX_TTMS_OBJS) diff --git a/src/trapping/Makefile b/src/trapping/Makefile index bf595535..624a0607 100644 --- a/src/trapping/Makefile +++ b/src/trapping/Makefile @@ -5,7 +5,15 @@ ifndef BUILDDIR_TRA override BUILDDIR_TRA=$(BUILDDIR)/trapping endif ifndef OBJDIR -override OBJDIR=../objects +override OBJDIR=./objects +endif +ifndef BUILDDIR_NPTM +override BUILDDIR_NPTM=$(BUILDDIR)/libnptm +endif +ifndef LIBNPTM +# choose one of the two following lines, depending on whether a static or dynamic libnptm is wanted +override LIBNPTM=$(BUILDDIR_NPTM)/libnptm.a +#override LIBNPTM=$(BUILDDIR_NPTM)/libnpTm.so endif include ../make.inc @@ -13,21 +21,27 @@ include ../make.inc F_TRAP_OBJS=$(OBJDIR)/frfme.o $(OBJDIR)/lffft.o -CXX_TRAP_OBJS=$(OBJDIR)/np_trapping.o $(OBJDIR)/cfrfme.o $(OBJDIR)/clffft.o $(OBJDIR)/Parsers.o $(OBJDIR)/Commons.o $(OBJDIR)/Configuration.o $(OBJDIR)/file_io.o $(OBJDIR)/sph_subs.o $(OBJDIR)/tra_subs.o +CXX_TRAP_OBJS=$(OBJDIR)/np_trapping.o $(OBJDIR)/cfrfme.o $(OBJDIR)/clffft.o + +all: $(LIBNPTM) $(BUILDDIR_TRA)/frfme $(BUILDDIR_TRA)/lffft $(BUILDDIR_TRA)/np_trapping + +$(OBJDIR): + mkdir -p $(OBJDIR) -all: $(BUILDDIR_TRA)/frfme $(BUILDDIR_TRA)/lffft $(BUILDDIR_TRA)/np_trapping +$(LIBNPTM): + $(MAKE) -C ../libnptm $@ $(BUILDDIR_TRA): mkdir -p $(BUILDDIR_TRA) -$(BUILDDIR_TRA)/frfme: $(OBJDIR)/frfme.o $(BUILDDIR_TRA) +$(BUILDDIR_TRA)/frfme: $(OBJDIR) $(OBJDIR)/frfme.o $(BUILDDIR_TRA) $(FC) $(FCFLAGS) -o $(BUILDDIR_TRA)/frfme $(OBJDIR)/frfme.o $(LDFLAGS) -$(BUILDDIR_TRA)/lffft: $(OBJDIR)/lffft.o $(BUILDDIR_TRA) +$(BUILDDIR_TRA)/lffft: $(OBJDIR) $(OBJDIR)/lffft.o $(BUILDDIR_TRA) $(FC) $(FCFLAGS) -o $(BUILDDIR_TRA)/lffft $(OBJDIR)/lffft.o $(LDFLAGS) -$(BUILDDIR_TRA)/np_trapping: $(CXX_TRAP_OBJS) $(BUILDDIR_TRA) - $(CXX) $(CXXFLAGS) -o $(BUILDDIR_TRA)/np_trapping $(CXX_TRAP_OBJS) $(CXXLDFLAGS) +$(BUILDDIR_TRA)/np_trapping: $(OBJDIR) $(CXX_TRAP_OBJS) $(BUILDDIR_TRA) $(LIBNPTM) + $(CXX) $(CXXFLAGS) -o $(BUILDDIR_TRA)/np_trapping $(CXX_TRAP_OBJS) $(LIBNPTM) $(CXXLDFLAGS) clean: rm -f $(F_TRAP_OBJS) $(CXX_TRAP_OBJS) -- GitLab