FC = gfortran F2PY = f2py3 DEBUG = 0 VERBOSE = 0 BUILDDIR = ./build INSTALL_PREFIX = $(HOME)/.local ################################################################################ # GFORTRAN CONFIGURATION # ################################################################################ GFORTRAN_FFLAGS = -O2 -ffast-math GFORTRAN_FFLAGS_DBG = -g -Wall -Wextra -Warray-temporaries -Wconversion GFORTRAN_FFLAGS_DBG += -fbacktrace -ffree-line-length-0 -fcheck=all GFORTRAN_FFLAGS_DBG += -ffpe-trap=zero,overflow,underflow -finit-real=nan ################################################################################ ################################################################################ # IFORT CONFIGURATION # ################################################################################ IFORT_FFLAGS = IFORT_FFLAGS_DBG = ################################################################################ ################################################################################ # F2PY CONFIGURATION # ################################################################################ F2PYFLAGS = --opt=-O2 F2PYFLAGS_DBG = --debug-capi --debug ################################################################################ ################################################################################ # /!\ DO NOT EDIT BELOW THAT LINE (unlesss you know what you're doing...) # # CORE CONFIGURATION # ################################################################################ #VERSION:=$(shell python -c "import msspec; print(msspec.__version__)") VERSION:=$(shell git describe|sed 's/-\([[:digit:]]\+\)-.*/\.post\1/') VENV_PATH := $(INSTALL_PREFIX)/src/msspec_venv_$(VERSION) ifeq ($(VERBOSE),0) OUPUT_REDIRECTION := 1>/dev/null 2>/dev/null MAKEFLAGS = -s --no-print-directory else OUPUT_REDIRECTION:= MAKEFLAGS += --debug=b endif PREFIX= SUFFIX= ifeq ($(FC),gfortran) PREFIX = GFORTRAN endif ifeq ($(FC),IFORT) PREFIX = IFORT endif ifeq ($(DEBUG),1) SUFFIX = _DBG endif FFLAGS = $($(PREFIX)_FFLAGS$(SUFFIX)) OBJS = $(addprefix $(BUILDDIR)/, $(patsubst %.f,%.o, $(filter-out $(MAIN_F), $(SRCS)))) .PHONY: clean obj all info help: info: @echo "Compilation information for msspec $(VERSION)" @echo "FC : $(FC)" @echo "FFLAGS:" @for flag in $(FFLAGS); do echo "\t$$flag"; done all: $(SO) obj: $(OBJS) clean:: @if test -d $(abspath $(BUILDDIR)); then \ echo "Removing $(abspath $(BUILDDIR))..."; \ rm -r $(abspath $(BUILDDIR)); \ fi @if test x$(SO) != x; then \ if test -f $(SO); then \ echo "Removing $(SO)..."; rm $(SO); \ fi; \ fi $(BUILDDIR)/%.o: %.f @echo "Compiling $@..." mkdir -p $(basename $@) $(FC) $(FFLAGS) -J $(BUILDDIR) -I $(BUILDDIR) -fPIC -o $@ -c $^ $(OUPUT_REDIRECTION) $(SO): $(OBJS) $(MAIN_F) @echo "building Python binding $@..." mkdir -p $(BUILDDIR) $(F2PY) $(F2PYFLAGS) -I$(BUILDDIR) -m $(basename $@) -c $(OBJS) $(MAIN_F) $(OUPUT_REDIRECTION) mv $(basename $@).*.so $@