@@ -4,9 +4,10 @@ FFLAGS = -O2 -Wall -ffree-line-length-none |
| 4 | SRC_DIR = src | 4 | SRC_DIR = src |
| 5 | BUILD_DIR = build | 5 | BUILD_DIR = build |
| 6 | BIN_DIR = . | 6 | BIN_DIR = . |
| | 7 | +VERSION := $(shell cat VERSION 2>/dev/null || echo "unknown") |
| 7 | | 8 | |
| 8 | # Module files (order matters for dependencies) | 9 | # Module files (order matters for dependencies) |
| 9 | -MODULES = types_module.f90 cache_module.f90 terminal_module.f90 git_module.f90 tree_module.f90 display_module.f90 | 10 | +MODULES = version_module.f90 types_module.f90 cache_module.f90 terminal_module.f90 git_module.f90 tree_module.f90 display_module.f90 |
| 10 | MODULE_OBJS = $(MODULES:%.f90=$(BUILD_DIR)/%.o) | 11 | MODULE_OBJS = $(MODULES:%.f90=$(BUILD_DIR)/%.o) |
| 11 | | 12 | |
| 12 | # Main program | 13 | # Main program |
@@ -26,7 +27,18 @@ all: $(TARGET) |
| 26 | $(BUILD_DIR): | 27 | $(BUILD_DIR): |
| 27 | mkdir -p $(BUILD_DIR) | 28 | mkdir -p $(BUILD_DIR) |
| 28 | | 29 | |
| | 30 | +# Generate version module before building |
| | 31 | +$(SRC_DIR)/version_module.f90: VERSION |
| | 32 | + @echo "Generating version module..." |
| | 33 | + @echo "module version_module" > $@ |
| | 34 | + @echo " implicit none" >> $@ |
| | 35 | + @echo " character(len=*), parameter :: VERSION = '$(VERSION)'" >> $@ |
| | 36 | + @echo "end module version_module" >> $@ |
| | 37 | + |
| 29 | # Build modules with explicit dependencies | 38 | # Build modules with explicit dependencies |
| | 39 | +$(BUILD_DIR)/version_module.o: $(SRC_DIR)/version_module.f90 | $(BUILD_DIR) |
| | 40 | + $(FC) $(FFLAGS) -J$(BUILD_DIR) -c $< -o $@ |
| | 41 | + |
| 30 | $(BUILD_DIR)/types_module.o: $(SRC_DIR)/types_module.f90 | $(BUILD_DIR) | 42 | $(BUILD_DIR)/types_module.o: $(SRC_DIR)/types_module.f90 | $(BUILD_DIR) |
| 31 | $(FC) $(FFLAGS) -J$(BUILD_DIR) -c $< -o $@ | 43 | $(FC) $(FFLAGS) -J$(BUILD_DIR) -c $< -o $@ |
| 32 | | 44 | |
@@ -54,4 +66,4 @@ $(TARGET): $(MODULE_OBJS) $(MAIN_OBJ) |
| 54 | $(FC) $(FFLAGS) -o $@ $^ | 66 | $(FC) $(FFLAGS) -o $@ $^ |
| 55 | | 67 | |
| 56 | clean: | 68 | clean: |
| 57 | - rm -rf $(BUILD_DIR) $(TARGET) | 69 | + rm -rf $(BUILD_DIR) $(TARGET) $(SRC_DIR)/version_module.f90 |