ifeq ($(MACH), Linux) include Linux_g++_make.inc ifeq ($(BLAS), 1) # ===== OpenBLAS ======== BLASYES = -DCBLAS BLASDIR = /opt/OpenBLAS BLASINC = -I$(BLASDIR)/include BLASLIB = -L$(BLASDIR)/lib BLASLIBN = $(BLASLIB) -lopenblas endif else include Darwin_g++_omp_make.inc # ===== nNative BLAS (Darwin) BLASYES = -DCBLAS -flax-vector-conversions BLASLIBN = -framework Accelerate endif # ===== Libsharp ===== #SHARPDIR = /libsharp-code/auto/ SHARPDIR = /Users/campagne/Travail/kits/libsharp-code/auto SHARPLIB = $(SHARPDIR)/lib SHARPINC = -I$(SHARPDIR)/include SHARPLIBN = -L$(SHARPLIB) -lsharp -lc_utils -lfftpack SRC = ./src/ LIB = ./lib/ OBJ = ./objs/ EXE = ./bin/ DATA = ./data/ # Define our target list .PHONY: default default: makedir lib lagsht_testsuite .PHONY: all all : makedir lib lagsht_testsuite .PHONY: check check : makedir lagsht_testsuite $(EXE)lagsht_testsuite -t 1 -n 1024 @paste lagWeights-1024-Func.txt $(DATA)lagWeights-1024-Func.txt.TEST | awk '{x=($$1-$$2)/$$2;y=(x<0?-x:x);if(max==""){max=y};if(y>max){max=y};sum+=(x<0?-x:x)} END {print "Weight Test: Max Err. ",max,"Abs. Relativ. Err =",sum/NR}' @paste lagNodes-1024-Func.txt $(DATA)lagNodes-1024-Func.txt.TEST | awk '{x=($$1-$$2)/$$2;y=(x<0?-x:x);if(max==""){max=y};if(y>max){max=y};sum+=(x<0?-x:x)} END {print "Nodes Test: Max Err. ",max,"Abs. Relativ. Err =",sum/NR}' .PHONY: makedir makedir : mkdir -p $(OBJ) mkdir -p $(EXE) mkdir -p $(LIB) .PHONY: tidy tidy : rm *~ .PHONY: clean clean : rm -f $(OBJ)/* rm -f $(EXE)/* rm -f $(LIB)/* #C++ common Objects CXXOBJ = $(OBJ)laguerreBuilder.o \ $(OBJ)laguerreTransform.o \ $(OBJ)lagsht_spheregeom.o \ $(OBJ)lagSphericTransform.o \ $(OBJ)walltimer.o CXXSHOBJ = laguerreBuilder.o \ laguerreTransform.o \ lagsht_spheregeom.o \ lagSphericTransform.o \ walltimer.o #C++ common Headers CXXHDR = $(SRC)lagsht_exceptions.h \ $(SRC)lagsht_numbers.h \ $(SRC)lagsht_utils.h \ $(SRC)lagsht_geom.h \ $(SRC)lagsht_spheregeom.h \ $(SRC)lagsht_healpixhelper.h \ $(SRC)laguerreBuilder.h \ $(SRC)laguerreTransform.h \ $(SRC)lagSphericTransform.h \ $(SRC)walltimer.h CPPFLAGS += $(BLASYES) $(SHARPINC) $(BLASINC) LDFLAGS += $(SHARPLIBN) $(BLASLIBN) -lm #C++ rule for compiling $(OBJ)%.o: $(SRC)%.cc $(CXXHDR) echo "compile... $<", $(CXXCOMPILE) $< -o $@ ###################### .PHONY: sharelib sharelib : $(CXXOBJ) echo $(CXXSHOBJ) ; \ cd $(OBJ); \ $(CMDSHLCXX) -o $(LIB)liblagsht.$(SLEXT) $(CXXSHOBJ) $(LDFLAGS) .PHONY: lib lib : $(LIB)liblagsht.a $(LIB)liblagsht.a : $(CXXOBJ) $(AR) $(ARFLAGS) $@ $? ###################### .PHONY: lagsht_testsuite lagsht_testsuite: $(EXE)lagsht_testsuite echo '---- lagsht_testsuite made' $(EXE)lagsht_testsuite : $(OBJ)lagsht_testsuite.o $(CXXOBJ) echo "Link..." $(CXXLINK) -o $@ $(OBJ)lagsht_testsuite.o $(CXXOBJ) $(LDFLAGS) $(OBJ)lagsht_testsuite.o: $(SRC)lagsht_testsuite.cc $(CXXHDR) echo "compile... $<" $(CXXCOMPILE) $< -o $@ ###################### .PHONY: fullcheck fullcheck : $(EXE)lagsht_testsuite -t 0 $(EXE)lagsht_testsuite -t 1 -n 1024 $(EXE)lagsht_testsuite -t 2 -n 128 $(EXE)lagsht_testsuite -t 3 -l 512 -g ECP $(EXE)lagsht_testsuite -t 3 -l 512 -g Gauss $(EXE)lagsht_testsuite -t 3 -l 512 -g Healpix $(EXE)lagsht_testsuite -t 4 -l 1024 -n 128 -nphi 2048 -g ECP $(EXE)lagsht_testsuite -t 4 -l 1024 -n 128 -nphi 2048 -g Gauss $(EXE)lagsht_testsuite -t 4 -l 1024 -n 128 -ntheta 512 -g Healpix