# engines/fortran/Makefile # 编译 DLL(主程序通过 ctypes 直接调用) FC = gfortran FFLAGS = -O3 -march=native -Wall -Wextra LIB_SRC = dynamics_lib.f90 UNAME_S := $(shell uname -s 2>/dev/null || echo Windows) ifeq ($(UNAME_S),Windows) STATIC_FLAGS = -static else STATIC_FLAGS = endif 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: dll dll: $(DLL_TARGET) $(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