ARMv8/extension/Makefile

53 lines
1.4 KiB
Makefile

# Compiler and flags
CC = gcc
CFLAGS = -Wall -Wextra -std=c99 -I$(UNITY_DIR)/src
### Add -g if you want to debug. It is removed to avoid OS-dependent build files.
# Linker flags
LDLIBS = -lm
# Directories
SRC_DIR = src
TEST_DIR = tests
UNITY_DIR = $(TEST_DIR)/unity
BUILD_DIR = build
EXAMPLES_DIR = examples
MNIST_DIR = $(EXAMPLES_DIR)/MNIST
# Unity
UNITY_SRC = $(UNITY_DIR)/src/unity.c
# Executable names
TEST_MATRIX = $(BUILD_DIR)/test_matrix
TEST_NETWORK = $(BUILD_DIR)/test_network
TEST_XOR = $(BUILD_DIR)/test_xor
TEST_MNIST = $(BUILD_DIR)/test_mnist
MNIST_TRAIN = $(BUILD_DIR)/mnist_train
all: $(BUILD_DIR) $(TEST_MATRIX) $(TEST_NETWORK) $(TEST_XOR) $(TEST_MNIST) $(MNIST_TRAIN)
$(BUILD_DIR):
mkdir -p $(BUILD_DIR)
$(TEST_MATRIX): $(UNITY_SRC) $(SRC_DIR)/matrix.c $(TEST_DIR)/test_matrix.c
$(CC) $(CFLAGS) -o $@ $^ $(LDLIBS)
$(TEST_NETWORK): $(UNITY_SRC) $(SRC_DIR)/network.c $(SRC_DIR)/matrix.c $(TEST_DIR)/test_network.c
$(CC) $(CFLAGS) -o $@ $^ $(LDLIBS)
$(TEST_XOR): $(SRC_DIR)/network.c $(SRC_DIR)/matrix.c $(TEST_DIR)/xor.c
$(CC) $(CFLAGS) -o $@ $^ $(LDLIBS)
$(TEST_MNIST): $(SRC_DIR)/network.c $(SRC_DIR)/matrix.c $(MNIST_DIR)/test_mnist.c
$(CC) $(CFLAGS) -o $@ $^ $(LDLIBS)
$(MNIST_TRAIN): $(SRC_DIR)/network.c $(SRC_DIR)/matrix.c $(MNIST_DIR)/mnist_train.c
$(CC) $(CFLAGS) -o $@ $^ $(LDLIBS)
test: $(TEST_MATRIX) $(TEST_NETWORK) $(TEST_XOR) $(TEST_MNIST)
clean:
rm -rf $(BUILD_DIR)
.PHONY: all test clean