SHELL := /bin/sh OBJDIR := build SRCDIR := src TESTDIR := tests BINDIR := bin LIBDIR := ext/tangerine LIB := $(LIBDIR)/build/libTangerine.a CXX := g++ CXXFLAGS := -std=c++11 -g -ggdb3 -Wall -I$(LIBDIR)/include/ LDFLAGS := -lSDL2 -lGLEW -lGL -lassimp COMMON_SOURCES := $(SRCDIR)/orbits.cpp COMMON_OBJECTS := $(patsubst $(SRCDIR)/%.cpp, $(OBJDIR)/%.o, $(COMMON_SOURCES)) TEST_SOURCES := $(TESTDIR)/orbit_test.cpp TEST_OBJECTS := $(patsubst $(TESTDIR)/%.cpp, $(OBJDIR)/%.o, $(TEST_SOURCES)) TEST_MAIN_SOURCE := $(TESTDIR)/tests_main.cpp TEST_MAIN_OBJ := $(OBJDIR)/tests_main.o TEST_BIN := $(BINDIR)/test_orbit SOURCES := $(SRCDIR)/main.cpp OBJECTS := $(patsubst $(SRCDIR)/%.cpp, $(OBJDIR)/%.o, $(SOURCES)) BIN := $(BINDIR)/orbital_shipping # NOTE: Fixes an issue on Fedora where the default assimp version doesn't # support glTF2 ifeq ($(USE_INTERNAL_ASSIMP), y) $(warning using internal assimp) ASSIMP_DIR := $(LIBDIR)/ext/assimp CXXFLAGS += -I$(ASSIMP_DIR)/include LDFLAGS := -lSDL2 -lGLEW -lGL -L$(ASSIMP_DIR)/lib -lassimp endif all: mkdirs $(BIN) $(TEST_BIN) .PHONY: all -include $(OBJDIR)/*.d mkdirs: @-mkdir -p ./bin ./build .PHONY: mkdirs $(BIN): $(COMMON_OBJECTS) $(OBJECTS) $(LIB) $(CXX) -o $(BIN) $(LDFLAGS) $(COMMON_OBJECTS) $(OBJECTS) $(LIB) $(TEST_BIN): $(TEST_OBJECTS) $(TEST_MAIN_OBJ) $(CXX) -o $(TEST_BIN) $(LDFLAGS) $(TEST_OBJECTS) $(TEST_MAIN_OBJ) $(LIB) $(COMMON_OBJECTS): $(COMMON_SOURCES) $(CXX) $(CXXFLAGS) -c -MMD $(SRCDIR)/orbits.cpp -o $@ $(OBJECTS): $(SOURCES) $(CXX) $(CXXFLAGS) -c -MMD $(SOURCES) -o $(OBJECTS) $(TEST_OBJECTS): $(TEST_SOURCES) $(CXX) $(CXXFLAGS) -c -MMD $(TESTDIR)/orbit_test.cpp -o $(OBJDIR)/orbit_test.o $(TEST_MAIN_OBJ): $(TEST_MAIN_SOURCE) $(CXX) $(CXXFLAGS) -c -MMD $(TESTDIR)/tests_main.cpp -o $(OBJDIR)/tests_main.o $(LIB): USE_INTERNAL_ASSIMP=$(USE_INTERNAL_ASSIMP) $(MAKE) -C $(LIBDIR) build_assimp $(MAKE) -C $(LIBDIR) clean: rm -rf $(OBJDIR)/* $(BIN) bin/test_orbit $(MAKE) -C $(LIBDIR) clean .PHONY: clean