
# 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
# SOURCES = neural.f90 BC_ANN_New_1982_2020_Apr_2024.f90
SOURCES1 = neural.f90 Ann_Dr.f90 
SOURCES2 = Veri_Dr.f90
SOURCES3 = neural.f90 Ann_Dr_paper.f90
SOURCES4 = Veri_Dr_4PP.f90
SOURCES5 = neural.f90 Ann_Dr_spi_spei.f90
SOURCES6 = neural.f90 Ann_Dr_testing.f90
SOURCES7 = neural.f90 Ann_Dr_find_para.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))

# Executable name
a1 = 1.exe
a2 = 2.exe
a3 = 3.exe
a4 = 4.exe
a5 = 5.exe
a6 = 6.exe
a7 = 7.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}

# 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/

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

