# TODO: Handle C sources and deduplicate. VPATH = $(dir $(CXXSRCS)) OBJS = $(addprefix $(OBJDIR)/,$(notdir $(CXXSRCS:.cpp=.o))) # Build types ifeq ($(TYPE),dll) BUILD_PRODUCT = $(BINDIR)/$(NAME).dll $(BINDIR)/$(NAME).dll: $(BINDIR)/ $(OBJDIR)/ $(OBJS) echo -e "\e[92mLinking DLL $@\e[0m" $(LD) $(BASE_LDFLAGS_SHARED) $(BASE_LDFLAGS) $($(CONFIG)_LDFLAGS) $(RTLIBS) $(LIBS) $(OBJS) /out:$@ else ifeq ($(TYPE),exe) BUILD_PRODUCT = $(BINDIR)/$(NAME).exe $(BINDIR)/$(NAME).exe: $(BINDIR)/ $(OBJDIR)/ $(OBJS) echo -e "\e[92mLinking EXE $@\e[0m" $(LD) $(BASE_LDFLAGS) $($(CONFIG)_LDFLAGS) $($(CONFIG)_RTLIBS) $(LIBS) $(OBJS) /out:$@ endif endif $(OBJDIR)/%.o: %.c echo -e "\e[94mCompiling C source file $< ($@)\e[0m" $(CC) -c $(BASE_CCFLAGS) $($(CONFIG)_CCFLAGS) $< -o $@ $(OBJDIR)/%.o: %.cpp echo -e "\e[94mCompiling C++ source file $< ($@)\e[0m" $(CC) -c $(BASE_CXXFLAGS) $($(CONFIG)_CXXFLAGS) $< -o $@ $(OBJDIR)/%.o: %.S echo -e "\e[94mAssembling $< ($@)\e[0m" $(CC) -xassembler-with-cpp -c $(BASE_CCFLAGS) $($(CONFIG)_CCFLAGS) $< -o $@ $(OBJDIR)/%.o: %.rc echo -e "\e[94mCompiling Windows resource script $<\e[0m" $(WINDRES) -Iinclude $< -o $@ # dir rules $(BINDIR)/: echo -e "\e[95mMKDIR $@\e[0m" mkdir -p $(BINDIR) $(OBJDIR)/: echo -e "\e[95mMKDIR $@\e[0m" mkdir -p $(OBJDIR)