You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.5 KiB
56 lines
1.5 KiB
CXX = g++ |
|
CXXFLAGS = -Wall -Wextra -g -ggdb3 -std=c++14 \ |
|
-I./src \ |
|
-isystem./ext/tomlc17/src |
|
LDFLAGS = -lm |
|
|
|
SRC_DIR = src |
|
BUILD_DIR ?= build |
|
TEST_DIR = tests |
|
|
|
CPP_SOURCES := $(wildcard $(SRC_DIR)/*.cpp) |
|
C_SOURCES = ext/tomlc17/src/tomlc17.c |
|
TEST_SOURCES := $(wildcard $(TEST_DIR)/*.cpp) |
|
|
|
CPP_OBJECTS = $(CPP_SOURCES:$(SRC_DIR)/%.cpp=$(BUILD_DIR)/%.o) |
|
C_OBJECTS = $(BUILD_DIR)/tomlc17.o |
|
TEST_OBJECTS := $(patsubst $(TEST_DIR)/%.cpp, $(BUILD_DIR)/%.o, $(TEST_SOURCES)) |
|
|
|
LIBRARY = $(BUILD_DIR)/liborbit.a |
|
|
|
# Default target (updates ctags if available) |
|
all: lib test-build |
|
@command -v ctags >/dev/null 2>&1 && ctags -R tests/ src/ || true |
|
|
|
$(BUILD_DIR): |
|
mkdir -p $(BUILD_DIR) |
|
|
|
$(CPP_OBJECTS): $(BUILD_DIR)/%.o : $(SRC_DIR)/%.cpp |
|
$(CXX) $(CXXFLAGS) -c $< -o $@ |
|
|
|
$(C_OBJECTS): $(BUILD_DIR)/%.o : $(C_SOURCES) |
|
$(CC) -Wall -Wextra -g -ggdb3 -std=c99 -I./src -I./ext/tomlc17/src -c $< -o $@ |
|
|
|
lib: $(BUILD_DIR) $(C_OBJECTS) $(CPP_OBJECTS) |
|
ar rcs $(LIBRARY) $(C_OBJECTS) $(CPP_OBJECTS) |
|
@echo "Built $(LIBRARY)" |
|
|
|
$(TEST_OBJECTS): $(BUILD_DIR)/%.o : $(TEST_DIR)/%.cpp |
|
$(CXX) $(CXXFLAGS) -c $< -o $@ |
|
|
|
test-build: lib $(BUILD_DIR) $(TEST_OBJECTS) |
|
$(CXX) $(TEST_OBJECTS) -o $(BUILD_DIR)/orbit_test -L$(BUILD_DIR) -lorbit -lCatch2Main -lCatch2 -lm |
|
|
|
test: test-build |
|
./$(BUILD_DIR)/orbit_test |
|
|
|
example: lib |
|
$(MAKE) -C example all BUILD_DIR=../$(BUILD_DIR) |
|
|
|
clean: |
|
rm -rf $(BUILD_DIR) $(LIBRARY) |
|
$(MAKE) -C example clean |
|
|
|
rebuild: clean all |
|
|
|
.PHONY: all lib test-build test example clean rebuild
|
|
|