# engines/fortran/Makefile FC = gfortran FFLAGS = -O3 -march=native -Wall -Wextra SRCS = main.f90 LIB_SRC = dynamics_lib.f90 UNAME_S := $(shell uname -s 2>/dev/null || echo Windows) ifeq ($(UNAME_S),Windows) STATIC_FLAGS = -static-libgcc -static-libgfortran -static-libquadmath else STATIC_FLAGS = endif TARGET = build/dynamics_f90.exe ifeq ($(UNAME_S),Linux) DLL_TARGET = build/dynamics_f90.so DLL_FLAGS = -shared -fPIC else ifeq ($(UNAME_S),Darwin) DLL_TARGET = build/dynamics_f90.dylib DLL_FLAGS = -dynamiclib else DLL_TARGET = build/dynamics_f90.dll DLL_FLAGS = -shared -fPIC endif .PHONY: all dll clean all: $(TARGET) dll: $(DLL_TARGET) $(TARGET): $(SRCS) | build $(FC) $(FFLAGS) $(STATIC_FLAGS) -o $@ $(SRCS) @echo " === Fortran engine built: $@ ===" $(DLL_TARGET): $(LIB_SRC) | build $(FC) $(FFLAGS) $(STATIC_FLAGS) $(DLL_FLAGS) -o $@ $(LIB_SRC) @echo " === Fortran DLL built: $@ ===" build: mkdir -p build clean: rm -rf build *.o *.mod