|
| 1 | +# EVM C Implementation Makefile |
| 2 | +# Supports: macOS, Linux |
| 3 | + |
| 4 | +CC = gcc |
| 5 | +CFLAGS = -Wall -Wextra -O2 -std=c99 -D_GNU_SOURCE |
| 6 | +LDFLAGS = |
| 7 | +TARGET = evm |
| 8 | + |
| 9 | +# Source files |
| 10 | +SOURCES = main.c core.c utils.c list.c io.c group.c |
| 11 | +OBJECTS = $(SOURCES:.c=.o) |
| 12 | + |
| 13 | +# Default target |
| 14 | +all: $(TARGET) |
| 15 | + |
| 16 | +# Build target |
| 17 | +$(TARGET): $(OBJECTS) |
| 18 | + $(CC) $(OBJECTS) -o $(TARGET) $(LDFLAGS) |
| 19 | + @echo "Build complete: $(TARGET)" |
| 20 | + |
| 21 | +# Compile source files |
| 22 | +%.o: %.c evm.h |
| 23 | + $(CC) $(CFLAGS) -c $< -o $@ |
| 24 | + |
| 25 | +# Clean build files |
| 26 | +clean: |
| 27 | + rm -f $(OBJECTS) $(TARGET) |
| 28 | + rm -rf evm-cli-macos evm-cli-macos.tar.gz |
| 29 | + @echo "Clean complete" |
| 30 | + |
| 31 | +# Install locally (development) |
| 32 | +install-local: $(TARGET) |
| 33 | + cp $(TARGET) /usr/local/bin/ |
| 34 | + chmod +x /usr/local/bin/$(TARGET) |
| 35 | + @echo "Installed to /usr/local/bin/$(TARGET)" |
| 36 | + |
| 37 | +# Uninstall |
| 38 | +uninstall: |
| 39 | + rm -f /usr/local/bin/$(TARGET) |
| 40 | + @echo "Uninstalled $(TARGET)" |
| 41 | + |
| 42 | +# Create macOS distribution package |
| 43 | +dist-macos: $(TARGET) |
| 44 | + @echo "Creating macOS distribution package..." |
| 45 | + mkdir -p evm-cli-macos |
| 46 | + cp $(TARGET) evm-cli-macos/ |
| 47 | + cp ../../README.md evm-cli-macos/ 2>/dev/null || echo "README.md not found" |
| 48 | + cp ../../LICENSE evm-cli-macos/ 2>/dev/null || echo "LICENSE not found" |
| 49 | + cp ../../QUICKSTART.md evm-cli-macos/ 2>/dev/null || echo "QUICKSTART.md not found" |
| 50 | + |
| 51 | + @echo '#!/bin/bash' > evm-cli-macos/install.sh |
| 52 | + @echo '# EVM macOS Installation Script' >> evm-cli-macos/install.sh |
| 53 | + @echo 'set -e' >> evm-cli-macos/install.sh |
| 54 | + @echo '' >> evm-cli-macos/install.sh |
| 55 | + @echo 'echo "Installing EVM..."' >> evm-cli-macos/install.sh |
| 56 | + @echo 'INSTALL_DIR="/usr/local/bin"' >> evm-cli-macos/install.sh |
| 57 | + @echo '' >> evm-cli-macos/install.sh |
| 58 | + @echo 'if [[ ! -w "$$INSTALL_DIR" ]]; then' >> evm-cli-macos/install.sh |
| 59 | + @echo ' echo "需要管理员权限来安装到 $$INSTALL_DIR"' >> evm-cli-macos/install.sh |
| 60 | + @echo ' sudo cp evm "$$INSTALL_DIR/"' >> evm-cli-macos/install.sh |
| 61 | + @echo ' sudo chmod +x "$$INSTALL_DIR/evm"' >> evm-cli-macos/install.sh |
| 62 | + @echo 'else' >> evm-cli-macos/install.sh |
| 63 | + @echo ' cp evm "$$INSTALL_DIR/"' >> evm-cli-macos/install.sh |
| 64 | + @echo ' chmod +x "$$INSTALL_DIR/evm"' >> evm-cli-macos/install.sh |
| 65 | + @echo 'fi' >> evm-cli-macos/install.sh |
| 66 | + @echo '' >> evm-cli-macos/install.sh |
| 67 | + @echo 'echo "✓ EVM 安装成功!"' >> evm-cli-macos/install.sh |
| 68 | + @echo 'echo ""' >> evm-cli-macos/install.sh |
| 69 | + @echo 'echo "运行 'evm --help' 开始使用"' >> evm-cli-macos/install.sh |
| 70 | + |
| 71 | + chmod +x evm-cli-macos/install.sh |
| 72 | + chmod +x evm-cli-macos/$(TARGET) |
| 73 | + |
| 74 | + tar -czf evm-cli-macos.tar.gz evm-cli-macos |
| 75 | + @echo "Distribution package created: evm-cli-macos.tar.gz" |
| 76 | + |
| 77 | +# Debug build |
| 78 | +debug: CFLAGS = -Wall -Wextra -g -O0 -std=c99 -D_GNU_SOURCE |
| 79 | +debug: clean $(TARGET) |
| 80 | + |
| 81 | +# Run tests |
| 82 | +test: $(TARGET) |
| 83 | + ./$(TARGET) --version |
| 84 | + ./$(TARGET) set TEST_VAR "hello world" |
| 85 | + ./$(TARGET) get TEST_VAR |
| 86 | + ./$(TARGET) list |
| 87 | + ./$(TARGET) delete TEST_VAR |
| 88 | + @echo "Basic tests passed!" |
| 89 | + |
| 90 | +.PHONY: all clean install-local uninstall dist-macos debug test |
0 commit comments