111 lines
3.5 KiB
Makefile
111 lines
3.5 KiB
Makefile
# STSAFE-A120 Test Makefile for Raspberry Pi
|
|
#
|
|
# Copyright 2025 wolfSSL Inc.
|
|
|
|
CC = gcc
|
|
CFLAGS = -Wall -Wextra -O0 -g -Wno-strict-prototypes -DWOLFSSL_USER_SETTINGS
|
|
|
|
# wolfSSL configuration
|
|
# Option 1: Use installed wolfSSL (after make install)
|
|
#WOLFSSL_DIR = /usr/local
|
|
# Option 2: Use local wolfSSL source
|
|
WOLFSSL_DIR = $(HOME)/wolfssl
|
|
|
|
# STSELib paths
|
|
STSELIB_DIR = $(HOME)/STSELib
|
|
PLATFORM_DIR = ./platform
|
|
|
|
# Include paths
|
|
# Note: Current directory (.) must come first so our user_settings.h is found
|
|
INCLUDES = -I. \
|
|
-I$(STSELIB_DIR) \
|
|
-I$(PLATFORM_DIR) \
|
|
-I$(WOLFSSL_DIR)
|
|
|
|
# Build directory for artifacts
|
|
BUILD_DIR = build
|
|
|
|
# wolfSSL source files - build directly from source
|
|
WOLFSSL_SRC = $(wildcard $(WOLFSSL_DIR)/src/*.c)
|
|
WOLFSSL_CRYPT_SRC = $(wildcard $(WOLFSSL_DIR)/wolfcrypt/src/*.c)
|
|
WOLFSSL_PORT_SRC = $(WOLFSSL_DIR)/wolfcrypt/src/port/st/stsafe.c
|
|
WOLFSSL_ALL_SRC = $(WOLFSSL_SRC) $(WOLFSSL_CRYPT_SRC) $(WOLFSSL_PORT_SRC)
|
|
|
|
# wolfSSL static library
|
|
WOLFSSL_LIB = $(BUILD_DIR)/libwolfssl.a
|
|
|
|
# Additional linker flags
|
|
LDFLAGS = -L$(BUILD_DIR) -lwolfssl -lm
|
|
|
|
# STSELib source files
|
|
STSELIB_CORE_SRC = $(STSELIB_DIR)/core/stse_device.c \
|
|
$(STSELIB_DIR)/core/stse_frame.c \
|
|
$(STSELIB_DIR)/core/stse_generic_typedef.c \
|
|
$(STSELIB_DIR)/core/stse_platform.c \
|
|
$(STSELIB_DIR)/core/stse_session.c
|
|
|
|
STSELIB_API_SRC = $(wildcard $(STSELIB_DIR)/api/*.c)
|
|
STSELIB_SERVICES_SRC = $(wildcard $(STSELIB_DIR)/services/stsafea/*.c) \
|
|
$(wildcard $(STSELIB_DIR)/services/stsafel/*.c)
|
|
STSELIB_CERT_SRC = $(wildcard $(STSELIB_DIR)/certificate/*.c)
|
|
|
|
# Platform source files
|
|
PLATFORM_SRC = $(PLATFORM_DIR)/stse_platform_linux.c
|
|
|
|
# Platform crypto source (wolfSSL implementation)
|
|
# Uncomment when building with wolfSSL crypto support:
|
|
PLATFORM_CRYPTO_SRC = $(PLATFORM_DIR)/stse_platform_crypto_wolfssl.c
|
|
|
|
# Targets
|
|
STSAFE_TARGET = stsafe_test
|
|
WOLFSSL_TARGET = wolfssl_stsafe_test
|
|
WOLFSSL_FULL_TARGET = wolfssl_stsafe_full_test
|
|
ALL_TARGETS = $(STSAFE_TARGET) $(WOLFSSL_TARGET) $(WOLFSSL_FULL_TARGET)
|
|
|
|
.PHONY: all clean test-all info
|
|
|
|
all: $(WOLFSSL_LIB) $(ALL_TARGETS)
|
|
|
|
# Create build directory
|
|
$(BUILD_DIR):
|
|
mkdir -p $(BUILD_DIR)
|
|
|
|
# Build wolfSSL static library
|
|
$(WOLFSSL_LIB): $(WOLFSSL_ALL_SRC) | $(BUILD_DIR)
|
|
@echo "Building wolfSSL library..."
|
|
$(CC) $(CFLAGS) $(INCLUDES) -c $(WOLFSSL_ALL_SRC)
|
|
mv *.o $(BUILD_DIR)/
|
|
ar rcs $@ $(BUILD_DIR)/*.o
|
|
@echo "wolfSSL library built successfully"
|
|
|
|
# Generic rule for all test targets - each target depends on its corresponding .c file
|
|
$(ALL_TARGETS): %: %.c $(WOLFSSL_LIB)
|
|
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $< \
|
|
$(PLATFORM_SRC) $(PLATFORM_CRYPTO_SRC) \
|
|
$(STSELIB_CORE_SRC) $(STSELIB_API_SRC) $(STSELIB_SERVICES_SRC) $(STSELIB_CERT_SRC) \
|
|
$(LDFLAGS)
|
|
|
|
test-all: all
|
|
@echo "=== Running stsafe_test ===" && ./$(STSAFE_TARGET)
|
|
@echo ""
|
|
@echo "=== Running wolfssl_stsafe_test ===" && ./$(WOLFSSL_TARGET)
|
|
@echo ""
|
|
@echo "=== Running wolfssl_stsafe_full_test ===" && ./$(WOLFSSL_FULL_TARGET)
|
|
|
|
clean:
|
|
rm -rf $(BUILD_DIR) $(ALL_TARGETS)
|
|
|
|
# Show configuration
|
|
info:
|
|
@echo "STSELib directory: $(STSELIB_DIR)"
|
|
@echo "wolfSSL directory: $(WOLFSSL_DIR)"
|
|
@echo "Platform directory: $(PLATFORM_DIR)"
|
|
@echo "Include paths: $(INCLUDES)"
|
|
@echo "Linker flags: $(LDFLAGS)"
|
|
@echo ""
|
|
@echo "Build targets:"
|
|
@echo " make - Build all test executables"
|
|
@echo " make test-all - Build and run all tests"
|
|
@echo " make clean - Clean build artifacts"
|
|
@echo " make info - Show this configuration"
|