# This is the makefile for building the mesa eosDE data

MESA_DIR = ../../..

#################################################################
#
# PREAMBLE

include $(MESA_DIR)/utils/makefile_header

CEOS_DIR = ..
PACKAGE_DIR = ../..

SRC_DIR = $(CEOS_DIR)/src
EOS_PUBLIC_DIR = $(PACKAGE_DIR)/public
EOS_PRIVATE_DIR = $(PACKAGE_DIR)/private

#################################################################
#
# SOURCE FILES

SRCS = \
   ceos.f90 \
   create_eosde_files.f90 \
   eval_eosde.f90 \
   make_veplots.f90 \
   plotter.f90

#################################################################
#
# TARGETS

OBJS = eval_eosde.o create_eosde_files.o

CEOS = ceos
CEOS_OBJS = $(OBJS) ceos.o

PLOT = plotter
PLOT_OBJS = $(OBJS) make_veplots.o plotter.o

all : $(CEOS) $(PLOT)

#################################################################
#
# COMPILATION RULES

INCLUDES = -I$(MESA_DIR)/include
LOAD_LOCAL = -L$(LOCAL_LIB_DIR) -leos
LOAD_OTHER = -L$(MESA_LIB_DIR) -lchem -lnum $(LOAD_MATRIX) \
   -lcrlibm -linterp_2d -linterp_1d -lutils -lconst

PKG_INCLUDES = -I$(PACKAGE_DIR)/make

$(CEOS) : $(CEOS_OBJS)
	$(FC) $(FCopenmp) -o $(CEOS_DIR)/$(CEOS) $(CEOS_OBJS) \
	$(LOAD_LOCAL) $(LOAD_OTHER)

$(PLOT) : $(PLOT_OBJS)
	$(FC) $(FCopenmp) -o $(CEOS_DIR)/$(PLOT) $(PLOT_OBJS) \
	$(LOAD_LOCAL) $(LOAD_OTHER)

COMPILE_CMD = $(COMPILE_TO_DEPLOY)

%.o : %.f
	$(COMPILE_TO_DEPLOY) $(FCfixed) $<
%.o : %.f90
	$(COMPILE_TO_DEPLOY) $(FCfree) -I$(EOS_PRIVATE_DIR) $<
%.mod : %.o
	@true

clean:
	-@rm -f *.o *.mod $(CEOS_DIR)/$(CEOS) .depend

#################################################################
#
# DEPENDENCIES

# Paths to search for source & include files

VPATH = $(SRC_DIR):$(EOS_PUBLIC_DIR):$(EOS_PRIVATE_DIR)

# Automatic dependency generation using makedepf90

nodeps : $(.DEFAULT_GOAL)

NODEPS = $(or $(filter nodeps,$(MAKECMDGOALS)),$(filter clean,$(MAKECMDGOALS)))

ifeq ($(NODEPS),)

  DEPEND_DIRS = $(SRC_DIR)

  .depend :
	makedepf90 -m %m.mod -I$(DEPEND_DIRS) $(SRCS) > .depend
  -include .depend

endif
