#====================================================================== # SOVEREIGN-IDE — 16-Layer Fortran 2018 IDE # Build: make all | wasm | debug | run | clean #====================================================================== FC = gfortran FFLAGS = -O3 -march=native -std=f2018 -fopenmp FFLAGS_DEBUG = -g -O0 -Wall -Wextra -fcheck=all -fbacktrace -std=f2018 LDFLAGS = -fopenmp BUILD_DIR = build LIB_DIR = lib OBJ_DIR = $(BUILD_DIR)/obj LIB_NAME = libsovereign_ide STATIC_LIB = $(LIB_DIR)/$(LIB_NAME).a # ── Sources in strict dependency order (layer 0 first, layer 15 last) ── SOURCES = \ layer-0-runtime/runtime.f90 \ layer-1-platform/platform.f90 \ layer-2-gui/gui.f90 \ layer-3-text-buffer/text_buffer.f90 \ layer-4-parser/parser.f90 \ layer-5-syntax/syntax.f90 \ layer-6-semantic/semantic.f90 \ layer-7-refactoring/refactoring.f90 \ layer-8-search/search.f90 \ layer-9-terminal/terminal.f90 \ layer-10-vcs/vcs.f90 \ layer-11-build/build_system.f90 \ layer-12-lsp/lsp_client.f90 \ layer-13-dap/dap_client.f90 \ layer-14-extensions/extension_host.f90 \ layer-15-shell/shell.f90 OBJECTS = $(patsubst %.f90,$(OBJ_DIR)/%.o,$(notdir $(SOURCES))) .PHONY: all clean debug wasm run info all: directories $(STATIC_LIB) directories: @mkdir -p $(OBJ_DIR) $(LIB_DIR) $(STATIC_LIB): $(OBJECTS) @echo "[AR] $@" ar rcs $@ $^ # Pattern rule — compile any layer's .f90 $(OBJ_DIR)/%.o: layer-*/%.f90 @echo "[FC] $<" $(FC) $(FFLAGS) -J$(OBJ_DIR) -c $< -o $@ # ── WASM target (requires wasm-pack + Rust bridge) ───────────────────── wasm: @echo "[WASM] sovereign-ide → browser" @echo "TODO: Rust bridge wrapping Fortran modules via C ABI" # ── Debug build ──────────────────────────────────────────────────────── debug: FFLAGS = $(FFLAGS_DEBUG) debug: clean all # ── Run ──────────────────────────────────────────────────────────────── run: all @echo "[RUN] Sovereign IDE" @echo "TODO: link + execute shell module" clean: rm -rf $(BUILD_DIR) $(LIB_DIR) info: @echo "SOVEREIGN-IDE" @echo "=============" @echo "Layers: 16" @echo "Sources: $(words $(SOURCES))" @echo "Target: $(STATIC_LIB)" @echo "" @echo "Targets: all wasm debug run clean info"