# Figure out which architecture we're on # This is necessary because the x84_64 architecture requires position-indep code (-fPIC) ARCH := $(shell arch) OS := $(shell uname -s) # Get major version for Darwin; necessary because different version use different # xlf config files ifeq ($(OS),Darwin) OS_VERSION = $(shell uname -r) DARWIN_MAJOR_VERSION = $(word 1, $(subst ., ,$(OS_VERSION))) endif # C compiler is alway GCC CC := gcc CCFLAGS := -I$(PYTHONINC) -I$(NUMPYINC) -I$(CLIMT_SRC_DIR)/f2py \ -Wall -Wstrict-prototypes ifeq ($(ARCH),x86_64) CCFLAGS := $(CCFLAGS) -fPIC endif # Intel Fortran compiler: ifeq ($(FCOMPILER),Intel) FC := ifort F90 := ifort FFLAGS_SHARED := -r8 -132 -w95 -mp -O3 ifeq ($(OS),Darwin) LDFLAGS := -i-static -nofor_main -bundle -flat_namespace \ -undefined suppress else LDFLAGS := -shared ifeq ($(ARCH),x86_64) FFLAGS_SHARED := $(FFLAGS_SHARED) -fPIC else LDFLAGS := $(LDFLAGS) -Bstatic endif endif FCFLAGS := $(FFLAGS_SHARED) F90FLAGS := $(FFLAGS_SHARED) endif # Portland Group Fortran compiler: ifeq ($(FCOMPILER),PGI) FC := pgf90 F90 := pgf90 FFLAGS_SHARED := -Mr8 -Mextend -Mnosecond_underscore -Mrecursive -Mdalign -mp -O3 LDFLAGS := -Mnomain -shared ifeq ($(ARCH),x86_64) FFLAGS_SHARED := $(FFLAGS_SHARED) -fPIC else LDFLAGS := $(LDFLAGS) -Bstatic endif FCFLAGS := $(FFLAGS_SHARED) F90FLAGS := $(FFLAGS_SHARED) endif # IBM XLF Fortran compiler: ifeq ($(FCOMPILER),IBM) FC := xlf F90 := xlf90 FFLAGS_SHARED := -qautodbl=dbl4 -qextname -qthreaded -qtune=auto \ -qarch=auto -qsuppress=cmpmsg -qunroll=auto -O3 FCFLAGS := $(FFLAGS_SHARED) -qsuffix=f=f:cpp=F -qfixed=132 F90FLAGS := $(FFLAGS_SHARED) -qsuffix=f=f90:cpp=F90 -qfree=f90 LDFLAGS := -Wl,-bundle,-flat_namespace,-undefined,suppress \ -F$(CLIMT_SRC_DIR)/xlf_$(DARWIN_MAJOR_VERSION).cfg endif # GNU Fortran90 compiler ifeq ($(FCOMPILER),GNU) FC := gfortran F90 := gfortran FFLAGS_SHARED := -Wall -fdefault-real-8 -fno-second-underscore -ffixed-line-length-132 FCFLAGS := $(FFLAGS_SHARED) F90FLAGS := $(FFLAGS_SHARED) ifeq ($(OS),Darwin) LDFLAGS := -bundle -flat_namespace -undefined suppress else LDFLAGS := -shared endif endif