From 41dd86f8d8ea632b14c18e2581d04c6e4f4b3dd6 Mon Sep 17 00:00:00 2001 From: bbbradsmith Date: Sun, 21 Apr 2024 17:21:17 -0400 Subject: [PATCH] clang still isn't happy, or maybe it's apple make? --- core/makefile | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/core/makefile b/core/makefile index 68cf28a..09a76db 100644 --- a/core/makefile +++ b/core/makefile @@ -13,26 +13,34 @@ OBJS = $(addprefix $(CORE_INTDIR)/,$(SRCS:.cpp=.o)) DEPS = $(addprefix $(CORE_INTDIR)/,$(SRCS:.cpp=.d)) CXXFLAGS_ALL = $(CXXFLAGS) $(CXXFLAGS_EXTRA) $(INC_COMMON) +# precompiled header + PCH_H = core.h PCH_BUILD = pch.cpp PCH_DECOY = $(CORE_INTDIR)/$(CORE_NAME).h PCH = $(PCH_DECOY)$(PCH_SUFFIX) PCHFLAGS = $(PCH_USE) $(PCH_DECOY)$(PCH_USE_SUFFIX) -$(TARGET): $(OBJS) | $(dir $(TARGET)) - rm -f $(TARGET) - $(AR) rcs $(TARGET) $(OBJS) - $(PCH_DECOY): | $(CORE_INTDIR)/ echo "#error \"Precompiled header decoy $(notdir $(PCH_DECOY)) used instead of $(notdir $(PCH))\"" > $@ -$(PCH): $(PCH_BUILD) $(PCH_DECOY) $(PCH_H) | $(CORE_INTDIR)/ +$(PCH).d: $(PCH_BUILD) | $(CORE_INTDIR)/ + $(CXX) -M -MM -MF $@ -MT $(PCH) $(CXXFLAGS_ALL) -c $< + +$(PCH): $(PCH_BUILD) $(PCH_DECOY) $(PCH).d | $(CORE_INTDIR)/ $(CXX) $(PCH_COMPILE) -o $(PCH) $(CXXFLAGS_ALL) -c $(PCH_BUILD) +# target build + +$(TARGET): $(OBJS) | $(dir $(TARGET)) + rm -f $(TARGET) + $(AR) rcs $(TARGET) $(OBJS) + +# want $(PCHFLAGS) here but gcc does not appear to be able to use precompiled headers for -MF $(CORE_INTDIR)/%.d: %.cpp $(PCH) | $(CORE_INTDIR)/ $(CXX) -M -MM -MF $@ -MT $(CORE_INTDIR)/$(basename $<).o $(CXXFLAGS_ALL) -c $< -$(CORE_INTDIR)/%.o: %.cpp $(CORE_INTDIR)/%.d | $(CORE_INTDIR)/ +$(CORE_INTDIR)/%.o: %.cpp $(CORE_INTDIR)/%.d $(PCH) | $(CORE_INTDIR)/ $(CXX) -o $@ $(PCHFLAGS) $(CXXFLAGS_ALL) -c $< $(CORE_INTDIR)/: @@ -45,4 +53,4 @@ clean: rm -rf $(CORE_INTDIR) rm -rf $(dir $(TARGET)) -include $(DEPS) +include $(PCH).d $(DEPS)