53 lines
1.4 KiB
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
|