# This is the makefile for building the mesa eos 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 = \
   eos_def.f \
   gauss_fermi.f \
   azbar.f \
   helm_alloc.f \
   helm.f \
   eos5_xtrin_h-he.f \
   opal_core.f \
   scvh_core.f \
   opal_scvh_driver.f \
   helm_opal_scvh_driver.f \
   create_eos_files.f

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

EOS_DEFS = 
EOS_OBJS = \
   eos_def.o \
   gauss_fermi.o \
   azbar.o \
   helm_alloc.o \
   helm.o \
   eos5_xtrin_h-he.o \
   opal_core.o \
   scvh_core.o \
   opal_scvh_driver.o \
   helm_opal_scvh_driver.o

CEOS = ceos
CEOS_OBJS = $(EOS_OBJS) create_eos_files.o

PLOT = plotter
PLOT_OBJS = $(EOS_OBJS) make_qtplots.o plotter.o

#all : $(CEOS) $(PLOT)
all : $(CEOS)

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

OTHER_LIBS_DIR = $(MESA_DIR)/lib
INCLUDES = -I$(MESA_DIR)/include
LOAD_OTHER_LIBS = -L$(OTHER_LIBS_DIR) $(LOAD_MESA_NUMERICS)

PKG_INCLUDES = -I$(PACKAGE_DIR)/make

$(CEOS) : $(EOS_DEFS) $(CEOS_OBJS)
	$(FC) $(FCopenmp) -o $(CEOS_DIR)/$(CEOS) $(CEOS_OBJS) $(LOAD_OTHER_LIBS)

$(PLOT) : $(EOS_DEFS) $(PLOT_OBJS)
	$(FC) $(FCopenmp) -o $(CEOS_DIR)/$(PLOT) $(PLOT_OBJS) $(LOAD_OTHER_LIBS)

COMPILE_NC = $(COMPILE_NO_CHECKS) $(FCfixed) $(PKG_INCLUDES)

COMPILE_CMD = $(COMPILE_TO_DEPLOY)

eos5_xtrin_h-he.o : COMPILE_CMD = $(COMPILE_NC)
make_ptplots.o: COMPILE_CMD = $(COMPILE_NO_CHECKS) $(FCfree) $(PKG_INCLUDES)
opal_core.o : COMPILE_CMD = $(COMPILE_NC)
scvh_core.o : COMPILE_CMD = $(COMPILE_NC)
helm.o : COMPILE_CMD = $(COMPILE_NC)

%.o : %.f
	$(COMPILE_CMD) $(FCfixed) $<
%.o : %.f90
	$(COMPILE_CMD) $(FCfree) $<
%.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):$(EOS_PUBLIC_DIR):$(EOS_PRIVATE_DIR)

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

endif
