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.
 
 
 
 
 

83 lines
2.5 KiB

SHELL := /bin/sh
OBJDIR := build
SRCDIR := src
BINDIR := bin
LIBDIR := ext/tangerine
LIB := $(LIBDIR)/build/libTangerine.a
CXX := g++
CXXFLAGS := -std=c++11 -g -ggdb3 -Wall -I$(LIBDIR)/include/ $(shell sdl2-config --cflags)
LDFLAGS := $(shell sdl2-config --libs) -lGLEW -lGL -lassimp
COMMON_SOURCES := $(SRCDIR)/orbits.cpp
COMMON_OBJECTS := $(patsubst $(SRCDIR)/%.cpp, $(OBJDIR)/%.o, $(COMMON_SOURCES))
TESTDIR := tests
TEST_SOURCES := $(wildcard $(TESTDIR)/*.cpp)
TEST_OBJECTS := $(patsubst $(TESTDIR)/%.cpp, $(OBJDIR)/%.o, $(TEST_SOURCES))
TEST_BIN := $(BINDIR)/test_orbit
# imgui setup
IMGUI_DIR := ext/imgui
CXXFLAGS += -I$(IMGUI_DIR)
IMGUI_IMPL_DIR := $(IMGUI_DIR)/backends
IMGUI_IMPL_SOURCES := $(IMGUI_IMPL_DIR)/imgui_impl_opengl3.cpp $(IMGUI_IMPL_DIR)/imgui_impl_sdl.cpp
IMGUI_SOURCES := $(filter-out $(IMGUI_DIR)/imgui_demo.cpp, $(wildcard $(IMGUI_DIR)/*.cpp))
IMGUI_OBJECTS := $(patsubst $(IMGUI_DIR)/%.cpp, $(OBJDIR)/%.o, $(IMGUI_SOURCES))
IMGUI_IMP_OBJECTS += $(patsubst $(IMGUI_IMPL_DIR)/%.cpp, $(OBJDIR)/%.o, $(IMGUI_IMPL_SOURCES))
SOURCES := $(SRCDIR)/main.cpp $(SRCDIR)/gooey.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 -I$(ASSIMP_DIR)/build/include
ASSIMP_LIB := $(ASSIMP_DIR)/build/code/libassimp.a
LDFLAGS := -lSDL2 -lGLEW -lGL
endif
all: mkdirs $(BIN) $(TEST_BIN)
.PHONY: all
-include $(OBJDIR)/*.d
mkdirs:
@-mkdir -p ./bin ./build
.PHONY: mkdirs
$(BIN): $(COMMON_OBJECTS) $(OBJECTS) $(IMGUI_OBJECTS) $(IMGUI_IMP_OBJECTS) $(LIB)
$(CXX) -o $@ $(LDFLAGS) $(COMMON_OBJECTS) $(OBJECTS) $(LIB) $(ASSIMP_LIB) \
$(IMGUI_OBJECTS) $(IMGUI_IMP_OBJECTS)
$(TEST_BIN): $(TEST_OBJECTS) $(LIB)
$(CXX) -o $@ $(LDFLAGS) $(TEST_OBJECTS) $(LIB)
$(COMMON_OBJECTS): $(COMMON_SOURCES)
$(CXX) $(CXXFLAGS) -c -MMD $(SRCDIR)/orbits.cpp -o $@
$(OBJECTS): $(OBJDIR)/%.o : $(SRCDIR)/%.cpp
$(CXX) $(CXXFLAGS) -c -MMD $< -o $@
$(TEST_OBJECTS): $(OBJDIR)/%.o : $(TESTDIR)/%.cpp
$(CXX) $(CXXFLAGS) -c -MMD $< -o $@
$(IMGUI_OBJECTS): $(OBJDIR)/%.o : $(IMGUI_DIR)/%.cpp
$(CXX) $(CXXFLAGS) -c -MMD $< -o $@
$(IMGUI_IMP_OBJECTS): $(OBJDIR)/%.o : $(IMGUI_IMPL_DIR)/%.cpp
$(CXX) $(CXXFLAGS) -c -MMD $< -o $@
$(LIB):
USE_INTERNAL_ASSIMP=$(USE_INTERNAL_ASSIMP) $(MAKE) -C $(LIBDIR)
clean:
rm -rf $(OBJDIR)/* $(BIN) bin/test_orbit
$(MAKE) -C $(LIBDIR) clean
.PHONY: clean