# SE050 WireGuard Makefile # Fallback for environments without CMake CC = gcc AR = ar CFLAGS = -Wall -Wextra -std=c11 -I include LDFLAGS = # Source files SRCS = src/se050_i2c_hal.c \ src/se050_session.c \ src/se050_keystore.c \ src/se050_rng.c \ src/se050_x25519.c \ src/se050_x25519_sw.c \ src/se050_scp03.c \ src/se050_scp03_keys.c # Object files OBJS = $(SRCS:.c=.o) # Test sources TEST_SRCS = tests/test_scp03.c tests/test_scp03_hardware.c TEST_OBJS = $(TEST_SRCS:.c=.o) # Test executables TEST_SCP03 = test_scp03 TEST_HARDWARE = test_scp03_hardware TEST_SE050 = test_scp03_se050 TEST_X25519 = test_x25519_ecdh TEST_KEY_ROTATION = test_key_rotation TEST_X25519_SW = test_x25519_sw # Target library LIB = libse050_wireguard.a # Chip selection (default: SE050C0) SE050_CHIP ?= SE050C0 # I2C bus options I2C_OPTS ?= # Chip ID mapping ifeq ($(SE050_CHIP),SE050C0) CHIP_ID = 0 else ifeq ($(SE050_CHIP),SE050C1) CHIP_ID = 1 else ifeq ($(SE050_CHIP),SE050C2) CHIP_ID = 2 else ifeq ($(SE050_CHIP),SE050E2) CHIP_ID = 3 else $(error Invalid SE050_CHIP. Use SE050C0, SE050C1, SE050C2, or SE050E2) endif # Default target all: $(LIB) $(TEST_SCP03) $(TEST_HARDWARE) $(TEST_SE050) $(TEST_X25519) $(TEST_X25519_SW) # Create build directory build: @mkdir -p build # Build static library $(LIB): $(OBJS) @mkdir -p build $(AR) rcs build/$@ $^ # Build test executables $(TEST_SCP03): tests/test_scp03.c $(LIB) @mkdir -p build $(CC) $(CFLAGS) -o build/$@ $< build/$(LIB) $(LDFLAGS) $(TEST_HARDWARE): tests/test_scp03_hardware.c $(LIB) @mkdir -p build $(CC) $(CFLAGS) -o build/$@ $< build/$(LIB) $(LDFLAGS) # SE050 hardware test with chip selection $(TEST_SE050): tests/test_scp03_se050.c $(LIB) @mkdir -p build $(CC) $(CFLAGS) -DSE050_CHIP=$(CHIP_ID) -o build/$@ $< build/$(LIB) $(LDFLAGS) # X25519 ECDH test $(TEST_X25519): tests/test_x25519_ecdh.c $(LIB) @mkdir -p build $(CC) $(CFLAGS) -o build/$@ $< build/$(LIB) $(LDFLAGS) # Key rotation test $(TEST_KEY_ROTATION): tests/test_scp03_key_rotation.c $(LIB) @mkdir -p build $(CC) $(CFLAGS) -DSE050_CHIP=$(CHIP_ID) -o build/$@ $< build/$(LIB) $(LDFLAGS) # Software X25519 test (standalone, no library needed) $(TEST_X25519_SW): src/se050_x25519_sw.c @mkdir -p build $(CC) $(CFLAGS) -DX25519_SW_TEST -o build/$@ $< # Compile source files src/%.o: src/%.c $(CC) $(CFLAGS) -c $< -o $@ # Compile test files tests/%.o: tests/%.c $(CC) $(CFLAGS) -c $< -o $@ # Run all tests test: all @echo "Running SCP03 tests..." ./build/$(TEST_SCP03) @echo "" @echo "Running SCP03 hardware tests (mock)..." ./build/$(TEST_HARDWARE) @echo "" @echo "Running X25519 ECDH tests..." ./build/$(TEST_X25519) @echo "" @echo "Running Software X25519 tests..." ./build/$(TEST_X25519_SW) @echo "" @echo "Note: To run SE050 hardware tests, use:" @echo " make SE050_CHIP=SE050C1 test_se050" # Run SE050 hardware tests (requires actual hardware) test_se050: $(TEST_SE050) @echo "Running SE050 hardware tests..." @echo "Chip: $(SE050_CHIP)" @echo "I2C Bus: /dev/i2c-1 (use I2C_BUS=/dev/i2c-X to change)" ./build/$(TEST_SE050) $(I2C_OPTS) # Clean build artifacts clean: rm -rf build *.o src/*.o tests/*.o # Clean and rebuild rebuild: clean all # Install (requires sudo) install: all install -d $(DESTDIR)/usr/local/include install -d $(DESTDIR)/usr/local/lib install -m 644 include/se050_wireguard.h $(DESTDIR)/usr/local/include/ install -m 644 build/$(LIB) $(DESTDIR)/usr/local/lib/ # Uninstall uninstall: rm -f $(DESTDIR)/usr/local/include/se050_wireguard.h rm -f $(DESTDIR)/usr/local/lib/$(LIB) .PHONY: all build test clean rebuild install uninstall