
# Compiler settings
FC = ifort
OPT = -O3  # Optimization level (you can adjust this)
Inc = "/work/apps/intel_2016/netcdf/4.3.3.1/"

# List of source files
# BC_S2S_Ann_new.f90  BC_S2S_ecmwf.f90  S2S_Veri_BC_N2.f90  S2S_Veri_Org_N2.f90 
# SOURCES = neural.f90 BC_ANN_New_1982_2020_Apr_2024.f90
SOURCES1 = Dr_Stn_SPI_SPEI_2025.f90            # neural.f90 BC_S2S_Ann_new.f90 
SOURCES2 = Correlation_of_ClimIDX.f90          # BC_S2S_ecmwf.f90
SOURCES3 = PCA_DP_2021_VN.f90                  # S2S_Veri_Org_N2.f90
SOURCES4 = Dr_Chars_VN_2025.f90                # Dr_Chars_VN.f90 # S2S_Veri_BC_N2.f90
SOURCES5 = PCA_Dr_VN_2025.f90                  # neural.f90 Dr_fcs_Ann_new.f90 
SOURCES6 = Create_ENSO_Phase.f90               # Dr_fcs_Ann_Hai.f90 # neural.f90 Ann_Dr_testing.f90
SOURCES7 = Chars_Dr_VN_Stn_2025.f90 
SOURCES8 = MCA_Dr_Clim.f90
SOURCES9 = MCA_Dr_SST.f90 
# Directory for object files
OBJ_DIR = obj_files

# Object files (replace .f90 with .o)
OBJECTS1 = $(addprefix $(OBJ_DIR)/,$(SOURCES1:.f90=.o))
OBJECTS2 = $(addprefix $(OBJ_DIR)/,$(SOURCES2:.f90=.o))
OBJECTS3 = $(addprefix $(OBJ_DIR)/,$(SOURCES3:.f90=.o))
OBJECTS4 = $(addprefix $(OBJ_DIR)/,$(SOURCES4:.f90=.o))
OBJECTS5 = $(addprefix $(OBJ_DIR)/,$(SOURCES5:.f90=.o))
OBJECTS6 = $(addprefix $(OBJ_DIR)/,$(SOURCES6:.f90=.o))
OBJECTS7 = $(addprefix $(OBJ_DIR)/,$(SOURCES7:.f90=.o))
OBJECTS8 = $(addprefix $(OBJ_DIR)/,$(SOURCES8:.f90=.o))
OBJECTS9 = $(addprefix $(OBJ_DIR)/,$(SOURCES9:.f90=.o))

# Executable name
a1 = 1.exe
a2 = 2.exe
a3 = 3.exe
a4 = 4.exe
a5 = 5.exe
a6 = 6.exe
a7 = 7.exe
a8 = 8.exe
a9 = 9.exe

# Default target: build the executable
all: $(a1) $(a2) $(a3) $(a4) $(a5) # $(EXECUTABLE1) $(EXECUTABLE2)
1: $(a1)
2: $(a2)
3: $(a3)
4: $(a4)
5: $(a5)
6: $(a6)
7: ${a7}
8: ${a8}
9: ${a9}

# Compile Fortran source files to object files
$(OBJ_DIR)/%.o: %.f90
	@mkdir -p $(OBJ_DIR)
	$(FC) $(OPT) -c $< -o $@ -L ${Inc}lib/ -lnetcdff -I ${Inc}include/

# Link object files to create the executable
#$(EXECUTABLE1): $(OBJECTS)

$(a1): $(OBJECTS1)
	$(FC) -o $@ $(OBJECTS1) -L ${Inc}lib/ -lnetcdff -I ${Inc}include/  #$(MODULES)
$(a2): $(OBJECTS2)
	$(FC) -o $@ $(OBJECTS2) -L ${Inc}lib/ -lnetcdff -I ${Inc}include/
$(a3): $(OBJECTS3)
	$(FC) -o $@ $(OBJECTS3) -L ${Inc}lib/ -lnetcdff -I ${Inc}include/
$(a4): $(OBJECTS4)
	$(FC) -o $@ $(OBJECTS4) -L ${Inc}lib/ -lnetcdff -I ${Inc}include/
$(a5): $(OBJECTS5)
	$(FC) -o $@ $(OBJECTS5) -L ${Inc}lib/ -lnetcdff -I ${Inc}include/
$(a6): $(OBJECTS6)
	$(FC) -o $@ $(OBJECTS6) -L ${Inc}lib/ -lnetcdff -I ${Inc}include/
$(a7): $(OBJECTS7)
	$(FC) -o $@ $(OBJECTS7) -L ${Inc}lib/ -lnetcdff -I ${Inc}include/
$(a8): $(OBJECTS8)
	$(FC) -o $@ $(OBJECTS8) -L ${Inc}lib/ -lnetcdff -I ${Inc}include/
$(a9): $(OBJECTS9)
	$(FC) -o $@ $(OBJECTS9) -L ${Inc}lib/ -lnetcdff -I ${Inc}include/

# Clean up intermediate files
clean:
	rm -rf $(OBJ_DIR) $(a1) $(a2) *.exe  #EXECUTABLE)

