Blob Blame History Raw
HEALPIX         = $(PWD)
SHARPLDIR=$(PWD)/src/common_libraries/libsharp/.libs
SHLIB_SUFFIX    = ".so.0"
F90_FLAGNAMELIB = "-Wl,-soname,"

# ------------------------------ variables for F90 --------------------------
F90_BINDIR	= $(HEALPIX)/binf
F90_INCDIR	= $(HEALPIX)/includef
F90_LIBDIR	= $(HEALPIX)/libf
F90_BUILDDIR	= $(HEALPIX)/buildf
FITSDIR	= /usr/lib64
LIBFITS	= cfitsio

F90_FFTSRC  =

F90_PARALL  =

F90_FC	= gfortran
F90_FFLAGS	= -O3 -I$(F90_INCDIR) -fopenmp -fPIC
F90_CC	= gcc
F90_CFLAGS	= -O3 -std=c99 -I$(HEALPIX)/include -fopenmp -fPIC
F90_LDFLAGS	= -L$(F90_LIBDIR) -L$(FITSDIR) -L$(SHARPLDIR) -lhealpix -lhpxgif -lsharp -l$(LIBFITS) -lcurl
F90_AR        = gfortran -fPIC -shared -o 
F90_PPFLAGS	= 
F90_I8FLAG  = -fdefault-integer-8
F90_LIBSUFFIX = ".so.0"
F90_FLAGNAMELIB = -Wl,-soname,

F90_PGFLAG  = 
F90_PGLIBS  = 

F90_MOD	= mod
F90_MODDIR	= "-J"

F90_OS	= Linux

F90_MKFLAGS	= FC="$(F90_FC)" FFLAGS="$(F90_FFLAGS)" LDFLAGS="$(F90_LDFLAGS)" \
	CC="$(F90_CC)" CFLAGS="$(F90_CFLAGS)" MOD="$(F90_MOD)" MODDIR=$(F90_MODDIR) \
	OS="$(F90_OS)" HEALPIX=$(HEALPIX) LIBSUFFIX="$(F90_LIBSUFFIX)"\
	LIBDIR=$(F90_LIBDIR) INCDIR=$(F90_INCDIR) BINDIR=$(F90_BINDIR) BUILDDIR=$(F90_BUILDDIR) \
	FFTSRC=$(F90_FFTSRC) PARALL="$(F90_PARALL)" AR="$(F90_AR)" FLAGNAMELIB="$(F90_FLAGNAMELIB)"\
	PPFLAGS="$(F90_PPFLAGS)" PGFLAG="$(F90_PGFLAG)" PGLIBS="$(F90_PGLIBS)" FI8FLAG="$(F90_I8FLAG)"


f90-progs = map2gif anafast smoothing synfast ud_grade hotspot plmgen alteralm median_filter ngsims_full_sky process_mask
f90-libs  = f90-modules f90-libgif

f90-all: $(f90-libs) $(f90-progs)

# itemized list instead of loop to allow parallel compiling

# libraries
f90-modules:
	@cd src/f90/mod; \
	$(MAKE) $(F90_MKFLAGS); \
	cd $(TOPDIR)

f90-libgif: f90-modules
	@cd src/f90/lib; \
	$(MAKE) $(F90_MKFLAGS); \
	cd $(TOPDIR)

# visualization code
map2gif: $(f90-libs)
	@cd src/f90/$@; \
	$(MAKE) $(F90_MKFLAGS); \
	cd $(TOPDIR)

# processing codes
anafast: $(f90-libs)
	@cd src/f90/$@; \
	$(MAKE) $(F90_MKFLAGS); \
	cd $(TOPDIR)

smoothing: $(f90-libs)
	@cd src/f90/$@; \
	$(MAKE) $(F90_MKFLAGS); \
	cd $(TOPDIR)

synfast: $(f90-libs)
	@cd src/f90/$@; \
	$(MAKE) $(F90_MKFLAGS); \
	cd $(TOPDIR)

ud_grade: $(f90-libs)
	@cd src/f90/$@; \
	$(MAKE) $(F90_MKFLAGS); \
	cd $(TOPDIR)

hotspot: $(f90-libs)
	@cd src/f90/$@; \
	$(MAKE) $(F90_MKFLAGS); \
	cd $(TOPDIR)

plmgen: $(f90-libs)
	@cd src/f90/$@; \
	$(MAKE) $(F90_MKFLAGS); \
	cd $(TOPDIR)

alteralm: $(f90-libs)
	@cd src/f90/$@; \
	$(MAKE) $(F90_MKFLAGS); \
	cd $(TOPDIR)

median_filter: $(f90-libs)
	@cd src/f90/$@; \
	$(MAKE) $(F90_MKFLAGS); \
	cd $(TOPDIR)

ngsims_full_sky: $(f90-libs)
	@cd src/f90/$@; \
	$(MAKE) $(F90_MKFLAGS); \
	cd $(TOPDIR)

process_mask: $(f90-libs)
	@cd src/f90/$@; \
	$(MAKE) $(F90_MKFLAGS); \
	cd $(TOPDIR)

f90-test: f90-all
	@cd test; \
	$(RM) test*; \
	$(F90_BINDIR)/synfast syn.par; \
	$(F90_BINDIR)/map2gif -inp test_map.fits -out test_map.gif -bar t -ttl 'CMB Map'; \
	$(F90_BINDIR)/smoothing smo.par; \
	$(F90_BINDIR)/map2gif -inp test_sm.fits -out test_sm.gif -bar t -ttl 'Smoothed CMB Map'; \
	$(F90_BINDIR)/ud_grade udg.par; \
	$(F90_BINDIR)/map2gif -inp test_LOres.fits -out test_LOres.gif -bar t -ttl 'Degraded Map'; \
	$(F90_BINDIR)/hotspot hot.par; \
	$(F90_BINDIR)/map2gif -inp test_ext.fits -out test_ext.gif -bar t -ttl 'Extrema Only Map'; \
	$(F90_BINDIR)/anafast ana.par; \
        $(F90_BINDIR)/anafast ana2maps.par; \
        $(F90_BINDIR)/anafast ana_w2.par; \
	$(F90_BINDIR)/alteralm alt.par; \
	$(F90_BINDIR)/median_filter med.par; \
	$(F90_BINDIR)/map2gif -inp test_mf.fits -out test_mf.gif -bar t -ttl 'Median Filtered Map'; \
	$(F90_BINDIR)/sky_ng_sim ngfs.par; \
	$(F90_BINDIR)/map2gif -inp test_ngfs.fits -out test_ngfs.gif -bar t -ttl 'Non-Gaussian Map'; \
	$(F90_BINDIR)/process_mask prmask.par; \
	$(F90_BINDIR)/map2gif -inp test_distmask.fits -out test_distmask.gif -bar t -ttl 'Distance to mask border'; \
	echo "Healpix F90 tests done"; \
	echo "success rate: `ls -1 test*fits | wc -l`/12"

f90-clean:
	for p in $(f90-progs) lib mod; do \
	$(RM) src/f90/$$p/*.o src/f90/$$p/*.$(F90_MOD) src/f90/$$p/lib*.a src/f90/$$p/*.pc src/f90/$$p/*.pcl src/f90/$$p/*.il; \
	done
	$(RM) -r $(F90_BUILDDIR)

f90-vclean: f90-clean
	for p in $(f90-progs); do \
	$(RM) $(F90_BINDIR)/$$p; \
	done
	$(RM) $(F90_BINDIR)/sky_ng_sim*
	$(RM) $(F90_INCDIR)/*.$(F90_MOD)
	$(RM) $(F90_INCDIR)/*.pc $(F90_INCDIR)/*.pcl $(F90_LIBDIR)/*.pc
	$(RM) $(F90_LIBDIR)/*.a $(F90_LIBDIR)/*$(F90_LIBSUFFIX) $(F90_LIBDIR)/*.so $(F90_LIBDIR)/*.dylib 

f90-tidy: f90-vclean
	$(RM) Makefile.bak test/test*

f90-distclean: f90-tidy
	$(RM) Makefile
	$(RM) -r $(F90_BINDIR) $(F90_INCDIR) $(F90_LIBDIR)

f90-void: