HEALPIX = $(PWD)
SHLIB_SUFFIX = ".so.0"
F90_FLAGNAMELIB = "-Wl,-soname,"
F90_BINDIR = $(HEALPIX)/binf
F90_INCDIR = $(HEALPIX)/includef
F90_LIBDIR = $(HEALPIX)/libf
F90_BUILDDIR = $(HEALPIX)/buildf
FITSDIR = /usr/lib64
LIBFITS = cfitsio
F90_FFTSRC = healpix_fft
F90_ADDUS =
F90_PARALL =
F90_FC = gfortran
F90_FFLAGS = -O3 -DGFORTRAN -fno-second-underscore -fopenmp -fPIC
F90_CC = gcc
F90_CFLAGS = -O3 -std=c99 -DgFortran -fopenmp -fPIC
F90_LDFLAGS = -L$(F90_LIBDIR) -L$(FITSDIR) -lhealpix -lhpxgif -l$(LIBFITS) -Wl,-R$(FITSDIR)
F90_AR = gfortran -shared -o
F90_PPFLAGS =
F90_I8FLAG = -fdefault-integer-8
F90_PGFLAG =
F90_PGLIBS =
F90_MOD = mod
F90_MODDIR = "-J"
F90_OS = Linux
F90_MKFLAGS = FC="$(F90_FC)" FFLAGS="$(F90_FFLAGS) -I$(F90_INCDIR)" LDFLAGS="$(F90_LDFLAGS)" \
CC="$(F90_CC)" CFLAGS="$(F90_CFLAGS)" MOD="$(F90_MOD)" MODDIR=$(F90_MODDIR) \
OS="$(F90_OS)" HEALPIX=$(HEALPIX) FLAGNAMELIB="$(F90_FLAGNAMELIB)" LIBSUFFIX="$(SHLIB_SUFFIX)" \
LIBDIR=$(F90_LIBDIR) INCDIR=$(F90_INCDIR) BINDIR=$(F90_BINDIR) BUILDDIR=$(F90_BUILDDIR) \
FFTSRC=$(F90_FFTSRC) ADDUS="$(F90_ADDUS)" PARALL="$(F90_PARALL)" AR="$(F90_AR)" \
PPFLAGS="$(F90_PPFLAGS)" PGFLAG="$(F90_PGFLAG)" PGLIBS="$(F90_PGLIBS)" FI8FLAG="$(F90_I8FLAG)"
f90-prog = map2gif anafast smoothing synfast ud_grade hotspot plmgen alteralm median_filter ngsims_full_sky process_mask
f90-all: f90-libsharp f90-modules f90-libgif $(f90-prog)
# itemized list instead of loop to allow parallel compiling
# libraries
f90-libsharp:
@cd src/f90/sharp; $(MAKE) $(F90_MKFLAGS)
f90-modules: f90-libsharp
@cd src/f90/mod; $(MAKE) $(F90_MKFLAGS)
f90-libgif: f90-modules
@cd src/f90/lib; $(MAKE) $(F90_MKFLAGS)
# visualization code
map2gif: f90-libsharp f90-modules f90-libgif
@cd src/f90/$@; $(MAKE) $(F90_MKFLAGS)
# processing codes
anafast: f90-libsharp f90-modules f90-libgif
@cd src/f90/$@; $(MAKE) $(F90_MKFLAGS)
smoothing: f90-libsharp f90-modules f90-libgif
@cd src/f90/$@; $(MAKE) $(F90_MKFLAGS)
synfast: f90-libsharp f90-modules f90-libgif
@cd src/f90/$@; $(MAKE) $(F90_MKFLAGS)
ud_grade: f90-libsharp f90-modules f90-libgif
@cd src/f90/$@; $(MAKE) $(F90_MKFLAGS)
hotspot: f90-libsharp f90-modules f90-libgif
@cd src/f90/$@; $(MAKE) $(F90_MKFLAGS)
plmgen: f90-libsharp f90-modules f90-libgif
@cd src/f90/$@; $(MAKE) $(F90_MKFLAGS)
alteralm: f90-libsharp f90-modules f90-libgif
@cd src/f90/$@; $(MAKE) $(F90_MKFLAGS)
median_filter: f90-libsharp f90-modules f90-libgif
@cd src/f90/$@; $(MAKE) $(F90_MKFLAGS)
ngsims_full_sky: f90-libsharp f90-modules f90-libgif
@cd src/f90/$@; $(MAKE) $(F90_MKFLAGS)
process_mask: f90-libsharp f90-modules f90-libgif
@cd src/f90/$@; $(MAKE) $(F90_MKFLAGS)
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)/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`/10"
f90-clean:
for p in $(f90-prog) lib mod sharp; 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
f90-vclean: f90-clean
for p in $(f90-prog); do \
$(RM) $(F90_BINDIR)/$$p; \
done
$(RM) $(F90_BINDIR)/sky_ng_sim*
$(RM) $(F90_INCDIR)/*.$(F90_MOD)
$(RM) $(F90_INCDIR)/*.pc $(F90_INCDIR)/*.pcl
$(RM) $(F90_LIBDIR)/*.a
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: