OUTDIR = build CXXFLAGS += $(shell sdl2-config --cflags) -std=c++14 -Wall -g CFLAGS += $(shell sdl2-config --cflags) CPPFLAGS += -I. -I$(OUTDIR) \ -I3rdparty/imgui -I3rdparty/glm \ -I3rdparty/icon-font-headers \ -I3rdparty/ebcl/include \ -DREAL_BUILD -DGLM_ENABLE_EXPERIMENTAL LIBS += $(shell sdl2-config --libs) -lGL -lGLEW -ldl \ $(LIBEBCL) -latomic FILEDUMPS = IMGUI = imgui.cpp imgui_draw.cpp COMMON = \ imgui_impl_sdl.cc \ \ utilities.cc \ texture.cc \ rendertarget.cc \ camera.cc \ colorgrading.cc \ \ filewatcher.cc \ window.cc \ globals.cc \ profiling.cc \ shaders.cc \ odbg.cc \ \ sync.cc \ syncoverrides.cc \ \ ops.cc \ opast.cc \ opparser.cc \ opcomp.cc \ opmgr.cc \ # END COMMON DEMO = \ demo.cc \ main.cc \ syncedit.cc \ syncview.cc \ undo.cc \ # END DEMO PARSERCHECK = \ parsercheck.cc \ # END PARSERCHECK IMGUI_OBJS = $(addprefix $(OUTDIR)/, $(addsuffix .o, $(basename $(IMGUI)))) COMMON_OBJS = $(addprefix $(OUTDIR)/, $(addsuffix .o, $(basename $(COMMON)))) DEMO_OBJS = $(addprefix $(OUTDIR)/, $(addsuffix .o, $(basename $(DEMO)))) PARSERCHECK_OBJS = $(addprefix $(OUTDIR)/, $(addsuffix .o, $(basename $(PARSERCHECK)))) LIBEBCL = $(OUTDIR)/ebcl/libebcorelib.a PCH=externals.hh.gch COMMON_DEPS = $(COMMON_OBJS:$(OUTDIR)/%.o=$(OUTDIR)/%.d) DEMO_DEPS = $(DEMO_OBJS:$(OUTDIR)/%.o=$(OUTDIR)/%.d) PARSERCHECK_DEPS = $(PARSERCHECK_OBJS:$(OUTDIR)/%.o=$(OUTDIR)/%.d) COMMON_REQ = $(COMMON_OBJS) $(IMGUI_OBJS) DEMO_BUILD = $(DEMO_OBJS) $(COMMON_REQ) PARSERCHECK_BUILD = $(PARSERCHECK_OBJS) $(COMMON_REQ) ALL_OBJS = $(DEMO_OBJS) $(PARSERCHECK_OBJS) $(COMMON_REQ) ALL_DEPS = $(COMMON_DEPS) $(DEMO_DEPS) $(PARSERCHECK_DEPS) all: demo parsercheck demo: $(LIBEBCL) $(DEMO_BUILD) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -o demo \ $(DEMO_BUILD) $(LIBS) parsercheck: $(LIBEBCL) $(PARSERCHECK_BUILD) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -o parsercheck \ $(PARSERCHECK_BUILD) $(LIBS) clean: rm -f $(ALL_OBJS) $(FILEDUMPS) demo parsercheck $(PCH) $(OUTDIR)/font-awesome.inl fullclean: clean @+make -C ebcl fullclean CONFIG=../ebcl-config rm -f $(ALL_DEPS) $(OUTDIR)/font-to-c .PHONY: all clean fullclean $(FILEDUMPS): fd-%.h: % xxd -i $< $@ outdir: @if ! [ -d "$(OUTDIR)" ]; then mkdir "$(OUTDIR)"; fi .PHONY: outdir #------------------------------------------------------------------------------- $(IMGUI_OBJS): $(OUTDIR)/%.o: 3rdparty/imgui/%.cpp | outdir $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $< #------------------------------------------------------------------------------- -include $(DEMO_DEPS) $(DEMO_OBJS): $(OUTDIR)/%.o: %.cc $(PCH) | outdir $(FILEDUMPS) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $< $(CXX) $(CXXFLAGS) $(CPPFLAGS) -M -MF $(@:%.o=%.d) -MT $@ $< #------------------------------------------------------------------------------- -include $(COMMON_DEPS) $(COMMON_OBJS): $(OUTDIR)/%.o: %.cc $(PCH) | outdir $(FILEDUMPS) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $< $(CXX) $(CXXFLAGS) $(CPPFLAGS) -M -MF $(@:%.o=%.d) -MT $@ $< #------------------------------------------------------------------------------- -include $(PARSERCHECK_DEPS) $(PARSERCHECK_OBJS): $(OUTDIR)/%.o: %.cc $(PCH) | outdir $(FILEDUMPS) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $< $(CXX) $(CXXFLAGS) $(CPPFLAGS) -M -MF $(@:%.o=%.d) -MT $@ $< #------------------------------------------------------------------------------- $(LIBEBCL): ebcl-config +make -C 3rdparty/ebcl CONFIG=../../ebcl-config $(PCH): externals.hh $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $< #------------------------------------------------------------------------------- $(OUTDIR)/window.o: window.cc $(OUTDIR)/font-awesome.inl $(OUTDIR)/font-awesome.inl: 3rdparty/font-awesome/fonts/fontawesome-webfont.ttf $(OUTDIR)/font-to-c $(OUTDIR)/font-to-c -base85 3rdparty/font-awesome/fonts/fontawesome-webfont.ttf \ FontAwesome_ >$@ $(OUTDIR)/font-to-c: 3rdparty/imgui/extra_fonts/binary_to_compressed_c.cpp $(CXX) -o $@ $<