# This is the makefile for the mesa star package

MESA_DIR = ../..

#################################################################

# STEP 1: get the standard compiler info

include $(MESA_DIR)/utils/makefile_header

#################################################################

# STEP 2: build the library



# define the PGSTAR files for star
ifeq ($(USE_PGSTAR),YES)
PGSTAR_OBJS = \
   pgstar_ctrls_io.o \
   pgstar_support.o \
   pgstar_conv.o \
   pgstar_hr.o \
   pgstar_trho.o \
   pgstar_cntr_hist.o \
   pgstar_surf_hist.o \
   pgstar_trho_profile.o \
   pgstar_profile.o \
   pgstar_mode_prop.o \
   pgstar_power.o \
   pgstar_abundance.o \
   pgstar_abund_power.o \
   pgstar_logg_Teff.o \
   pgstar_hr_trho.o \
   pgstar_summary.o \
   pgstar_dynamo.o \
   pgstar_mixing_Ds.o \
   pgstar_mixing_dynamo.o \
   pgstar_abund_pwr_dmix.o \
   pgstar_abund_pwr_dmix_dyn.o \
   pgstar.o
else
PGSTAR_OBJS = pgstar_stub.o
endif


# define the SE files for star
ifeq ($(USE_SE),YES)
SE_OBJS = se_support.o
else
SE_OBJS = se_support_stub.o
endif



LIB = libstar.a
LIB_DEFS = 


LIB_OBJS = \
    star_def.o \
    star_private_def.o \
    other_mixing.o \
    other_wind.o \
    other_torque.o \
    other_energy.o \
    other_energy_implicit.o \
    other_cgrav.o \
    other_mlt.o \
    other_atm.o \
    other_diffusion.o \
    other_eos.o \
    other_kap.o \
    other_pgstar_plots.o \
    other_mesh_functions.o \
    star_utils.o \
    ctrls_io.o \
    alloc.o \
    model_in.o \
    model_out.o \
    opacities.o \
    micro.o \
    solve_diffusion.o \
    solve_mix.o \
    solve_omega_mix.o \
    solve_burn.o \
    brunt.o \
    overshoot.o \
    turbulent_diffusion.o \
    mlt_info.o \
    rotation_mix_info.o \
    mix_smoothing.o \
    mix_info.o \
    solve_coupled_burn_mix.o \
    solve_split_burn_mix.o \
    solve_split_mtx.o \
    mesh_functions.o \
    mesh_plan.o \
    mesh_adjust.o \
    create_atm.o \
    hydro_gr_factors.o \
    hydro_rotation.o \
    hydro_vars.o \
    hydro_eqns_quad.o hydro_eqns_dble.o \
    hydro_mtx_quad.o hydro_mtx_dble.o \
    hydro_newton_procs_quad.o hydro_newton_procs_dble.o \
    hydro_bimd.o \
    report.o \
    log.o \
    pulsation_info.o \
    profile_getval.o \
    profile.o \
    do_one_utils.o \
    timestep.o \
    adjust_xyz.o \
    adjust_mass.o \
    adjust_mesh_support.o \
    adjust_mesh_plot.o \
    adjust_mesh.o \
    element_diffusion.o \
    evolve_support.o \
    solve_hydro.o \
    struct_burn_mix.o \
    kuma.o \
    winds.o \
    evolve.o \
    relax.o \
    pre_ms_model.o \
    read_model.o \
    write_model.o \
    init_model.o \
    init.o \
    $(PGSTAR_OBJS) \
    star_lib.o \
    $(SE_OBJS) \
    run_star_support.o \
    sample_pgstar_plot.o

#    hydro_seulex.o \

BIMD_OBJS = \
    bimdd.o bimd_test_pump.o bimdmtx.o bimdax.o \
    bimd.o bimd1.o bimd_report.o


$(LIB) : $(LIB_DEFS) $(LIB_OBJS) $(BIMD_OBJS)
	$(LIB_TOOL) $(LIB) $(LIB_OBJS) $(BIMD_OBJS)
	

#################################################################

COMPILE = $(COMPILE_TO_DEPLOY) $(FCfree) $(INCLUDE_SE)
#COMPILE = $(COMPILE_TO_TEST) $(FCfree) $(INCLUDE_SE)

#COMPILE = $(COMPILE_NO_OPENMP_NO_OPT) $(FCfree) $(INCLUDE_SE)
#COMPILE = $(COMPILE_TO_TEST) $(FCfree) $(FCwarn_unused) $(INCLUDE_SE)
#COMPILE = $(COMPILE_FAST) $(FCfree) -g $(INCLUDE_SE)


pgstar_ctrls_io.o: \
  $(MOD_PRIVATE_DIR)/pgstar_ctrls_io.f \
  $(MOD_PRIVATE_DIR)/pgstar_controls.dek \
  $(MOD_PUBLIC_DIR)/pgstar_defaults.dek
	$(COMPILE) $<

run_star_support.o: \
  $(MOD_PUBLIC_DIR)/run_star_support.f \
  $(MOD_PUBLIC_DIR)/run_star_defaults.dek
	$(COMPILE) $<

star_def.o: \
  $(MOD_PUBLIC_DIR)/star_def.f \
  $(MOD_PUBLIC_DIR)/star_data.dek \
  $(MOD_PRIVATE_DIR)/pgstar_controls.dek \
  $(MOD_PUBLIC_DIR)/star_controls.dek \
  $(MOD_PUBLIC_DIR)/star_defaults.dek
	$(COMPILE) $(FC_free_preprocess) -D$(FC) $<

ctrls_io.o: \
  $(MOD_PRIVATE_DIR)/ctrls_io.f \
  $(MOD_PRIVATE_DIR)/private_defaults.dek \
  $(MOD_PUBLIC_DIR)/star_controls.dek \
  $(MOD_PUBLIC_DIR)/star_defaults.dek
	$(COMPILE) $<

hydro_newton_procs_dble.o: $(MOD_PRIVATE_DIR)/hydro_newton_procs.f
	$(COMPILE) $(FC_free_preprocess) -DDBLE -o hydro_newton_procs_dble.o $<
hydro_newton_procs_quad.o: $(MOD_PRIVATE_DIR)/hydro_newton_procs.f
	$(COMPILE) $(FC_free_preprocess) -o hydro_newton_procs_quad.o $<

hydro_mtx_dble.o: $(MOD_PRIVATE_DIR)/hydro_mtx.f
	$(COMPILE) $(FC_free_preprocess) -DDBLE -o hydro_mtx_dble.o $<
hydro_mtx_quad.o: $(MOD_PRIVATE_DIR)/hydro_mtx.f
	$(COMPILE) $(FC_free_preprocess) -o hydro_mtx_quad.o $<

hydro_eqns_dble.o: $(MOD_PRIVATE_DIR)/hydro_eqns.f
	$(COMPILE) $(FC_free_preprocess) -DDBLE -o hydro_eqns_dble.o $<
hydro_eqns_quad.o: $(MOD_PRIVATE_DIR)/hydro_eqns.f
	$(COMPILE) $(FC_free_preprocess) -o hydro_eqns_quad.o $<

report.o: $(MOD_PRIVATE_DIR)/report.f
	$(COMPILE_BASIC) $(FCfree) -c -O $<

profile.o: $(MOD_PRIVATE_DIR)/profile.f
	$(COMPILE_BASIC) $(FCfree) -c -O $<

kuma.o: $(MOD_PRIVATE_DIR)/kuma.f
	$(COMPILE_BASIC) $(FCfixed) -c -O $<
	

bimdd.o: $(MOD_PRIVATE_DIR)/bimdd.f
	$(COMPILE_BASIC) $(FCfixed) -c -O $<

bimdmtx.o: $(MOD_PRIVATE_DIR)/bimdmtx.f
	$(COMPILE_BASIC) $(FCfixed) -c -O $<

bimd_report.o: $(MOD_PRIVATE_DIR)/bimd_report.f
	$(COMPILE_BASIC) $(FCfixed) -c -O $<

bimd_test_pump.o: $(MOD_PRIVATE_DIR)/bimd_test_pump.f
	$(COMPILE_BASIC) $(FCfixed) -c -O $<

%.o: $(MOD_PUBLIC_DIR)/%.f
	$(COMPILE) $<

%.o: $(MOD_PRIVATE_DIR)/%.f
	$(COMPILE) $<


clean:
	-@rm -f *.o *.mod *.hh $(LIB)
