refactor: 源码迁至 engines/src/,删除旧的 engines/{c,cpp,fortran}/
- 删除 engines/{c,cpp,fortran}/ 目录(源码和 Makefile 已移至 src/)
- engines/src/{c,cpp,fortran}/: 清理 main.*/bak 等无用文件
- Makefile 改为直接编译 DLL 到 engines/release/
- .gitignore: 更新路径指向 engines/src/*/build/
- engine_dll.py: 更新注释中的编译命令路径
This commit is contained in:
@@ -1,47 +1,44 @@
|
||||
# engines/fortran/Makefile
|
||||
# engines/src/fortran/Makefile
|
||||
# 编译 DLL 到 engines/release/(主程序通过 ctypes 直接调用)
|
||||
|
||||
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
|
||||
STATIC_FLAGS = -static
|
||||
else
|
||||
STATIC_FLAGS =
|
||||
endif
|
||||
|
||||
TARGET = build/dynamics_f90.exe
|
||||
# DLL 输出到 engines/release/
|
||||
DLL_DIR = ../../release
|
||||
|
||||
ifeq ($(UNAME_S),Linux)
|
||||
DLL_TARGET = build/dynamics_f90.so
|
||||
DLL_TARGET = $(DLL_DIR)/dynamics_f90.so
|
||||
DLL_FLAGS = -shared -fPIC
|
||||
else ifeq ($(UNAME_S),Darwin)
|
||||
DLL_TARGET = build/dynamics_f90.dylib
|
||||
DLL_TARGET = $(DLL_DIR)/dynamics_f90.dylib
|
||||
DLL_FLAGS = -dynamiclib
|
||||
else
|
||||
DLL_TARGET = build/dynamics_f90.dll
|
||||
DLL_TARGET = $(DLL_DIR)/dynamics_f90.dll
|
||||
DLL_FLAGS = -shared -fPIC
|
||||
endif
|
||||
|
||||
.PHONY: all dll clean
|
||||
|
||||
all: $(TARGET)
|
||||
all: dll
|
||||
|
||||
dll: $(DLL_TARGET)
|
||||
|
||||
$(TARGET): $(SRCS) | build
|
||||
$(FC) $(FFLAGS) $(STATIC_FLAGS) -o $@ $(SRCS)
|
||||
@echo " === Fortran engine built: $@ ==="
|
||||
|
||||
$(DLL_TARGET): $(LIB_SRC) | build
|
||||
$(DLL_TARGET): $(LIB_SRC) | $(DLL_DIR)
|
||||
$(FC) $(FFLAGS) $(STATIC_FLAGS) $(DLL_FLAGS) -o $@ $(LIB_SRC)
|
||||
@echo " === Fortran DLL built: $@ ==="
|
||||
|
||||
build:
|
||||
mkdir -p build
|
||||
$(DLL_DIR):
|
||||
mkdir -p $(DLL_DIR)
|
||||
|
||||
clean:
|
||||
rm -rf build *.o *.mod
|
||||
rm -f $(DLL_TARGET)
|
||||
|
||||
Reference in New Issue
Block a user