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 all: lib test-build example $(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