#================================================================================
#
# Makefile for PCRTM library build
#
#================================================================================

# The library name
LIBRARY_TAG = PCRTM
LIBRARY_NAME = lib$(LIBRARY_TAG).a

# The library directories
SOURCE_DIR = SRC
LIBRARY_DIR = $(HOME)/SDPS_delivery/PCRTM/PREFIRE_PCRTM_V3.4/lib
INCLUDE_DIR = $(HOME)/SDPS_delivery/PCRTM/PREFIRE_PCRTM_V3.4/include

MONIKER = PREFIRE_PCRTM_V3.4
THIS_PROV = ../this_prov.txt
BUILD_PROV = ../build_provenance.txt

# -------------------
# Compilation targets
# -------------------
# Default compiler build
all: determine_provenance
	cd $(SOURCE_DIR); make; cd ..

intel: determine_provenance
	cd $(SOURCE_DIR); make intel; cd ..

intel_debug: determine_provenance
	cd $(SOURCE_DIR); make intel_debug; cd ..

gfortran: determine_provenance
	cd $(SOURCE_DIR); make gfortran; cd ..

gfortran_debug: determine_provenance
	cd $(SOURCE_DIR); make gfortran_debug; cd ..

determine_provenance:
	@git rev-parse --short=8 --verify HEAD 2>/dev/null 1>$(THIS_PROV) || (echo "unknown" > $(THIS_PROV)); \
	this_prov_tmp=`cat $(THIS_PROV)`; \
	if [ $$this_prov_tmp != "unknown" ]; then \
	   echo $(MONIKER) "$$this_prov_tmp" $(LIBRARY_DIR) $(INCLUDE_DIR) > $(BUILD_PROV); \
	   git diff --quiet || (echo $(MONIKER) "$$this_prov_tmp(modified)" $(LIBRARY_DIR) $(INCLUDE_DIR) > $(BUILD_PROV)); \
	else \
	   echo $(MONIKER) "unknown" $(LIBRARY_DIR) $(INCLUDE_DIR) > $(BUILD_PROV); \
	fi ; \
	rm -f $(THIS_PROV)

# ---------------------------------------------------------------------
# Install the library and include files in their respective directories
# ---------------------------------------------------------------------
install: install_lib install_include

install_lib:
	@if [ ! -d $(LIBRARY_DIR) ]; then \
	  mkdir $(LIBRARY_DIR); \
	fi; \
	cd $(SOURCE_DIR); \
	if [ -f $(LIBRARY_NAME) ]; then \
	  mv $(LIBRARY_NAME) $(LIBRARY_DIR); \
	fi ; \
	cd ..


install_include:
	@if [ ! -d $(INCLUDE_DIR) ]; then \
	  mkdir $(INCLUDE_DIR); \
	fi; \
	cp $(BUILD_PROV) $(INCLUDE_DIR); \
	cd $(SOURCE_DIR); \
	for FILE in `ls -1 | egrep "\.(mod|MOD|m|M)$$"`; do \
	  if [ -f $$FILE ]; then \
	    mv -f $$FILE $(INCLUDE_DIR); \
	  fi ; \
	done ; \
	for FILE in `ls -1 | egrep "\.(o|O)$$"`; do \
	  if [ -f $$FILE ]; then \
	    rm -f $$FILE ; \
	  fi ; \
	done ; \
	cd ..

# --------
# Clean up
# --------
# Just the source directory
clean:
	@rm -f $(BUILD_PROV) $(THIS_PROV); cd $(SOURCE_DIR); make clean; cd ..


# Everything
distclean: clean clean_lib clean_include

clean_lib:
	rm -r $(LIBRARY_DIR)

clean_include:
	rm -r $(INCLUDE_DIR)

