Skip to content

Commit

Permalink
Merge pull request #1105 from tdesveauxPKFX/gmake/fix-targetdir-dep
Browse files Browse the repository at this point in the history
gmake: Add rules and dependencies for directory creation
  • Loading branch information
samsinsane committed Jun 3, 2018
2 parents 313d7ed + e047f9d commit d6dfaa3
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 77 deletions.
12 changes: 0 additions & 12 deletions modules/d/actions/gmake.lua
Original file line number Diff line number Diff line change
Expand Up @@ -73,18 +73,6 @@
end
end)

--
-- Don't create $(OBJDIR) in the d-file rules
--

p.override(make, "objDirInFileRules", function(oldfn, prj, node)
-- node is nil when making pch rules
if not node or not path.isdfile(node.abspath) then
oldfn(prj, node)
end
end)



---
-- Add namespace for element definition lists for p.callarray()
Expand Down
37 changes: 26 additions & 11 deletions modules/gmake/gmake_cpp.lua
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@
make.cppObjects,
make.shellType,
make.cppTargetRules,
make.cppCustomFilesRules,
make.cppTargetDirRules,
make.cppObjDirRules,
make.cppCleanRules,
make.preBuildRules,
make.preLinkRules,
Expand Down Expand Up @@ -69,10 +72,6 @@
_p('\t@echo $(notdir $<)')
end

function make.objDirInFileRules(prj, node)
make.mkdir('$(OBJDIR)')
end

function make.cpp.generate(prj)
p.eol("\n")
p.callArray(cpp.elements.makefile, prj)
Expand All @@ -85,15 +84,13 @@
cpp.elements.standardFileRules = function(prj, node)
return {
make.fileDependency,
make.objDirInFileRules,
cpp.standardFileRules,
}
end

cpp.elements.customFileRules = function(prj, node)
return {
make.fileDependency,
make.objDirInFileRules,
cpp.customFileRules,
}
end
Expand Down Expand Up @@ -454,14 +451,31 @@ end


function make.cppTargetRules(prj)
_p('$(TARGET): $(GCH) ${CUSTOMFILES} $(OBJECTS) $(LDDEPS) $(RESOURCES)')
_p('$(TARGET): $(GCH) ${CUSTOMFILES} $(OBJECTS) $(LDDEPS) $(RESOURCES) | $(TARGETDIR)')
_p('\t@echo Linking %s', prj.name)
make.mkdir('$(TARGETDIR)')
_p('\t$(SILENT) $(LINKCMD)')
_p('\t$(POSTBUILDCMDS)')
_p('')
end

function make.cppCustomFilesRules(prj)
_p('$(CUSTOMFILES): | $(OBJDIR)')
_p('')
end

function make.cppTargetDirRules(prj)
_p('$(TARGETDIR):')
_p('\t@echo Creating $(TARGETDIR)')
make.mkdir('$(TARGETDIR)')
_p('')
end

function make.cppObjDirRules(prj)
_p('$(OBJDIR):')
_p('\t@echo Creating $(OBJDIR)')
make.mkdir('$(OBJDIR)')
_p('')
end

function make.cppTools(cfg, toolset)
local tool = toolset.gettoolname(cfg, "cc")
Expand Down Expand Up @@ -600,14 +614,15 @@ end

function make.pchRules(prj)
_p('ifneq (,$(PCH))')
_p('$(OBJECTS): $(GCH) $(PCH)')
_p('$(GCH): $(PCH)')
_p('$(OBJECTS): $(GCH) $(PCH) | $(OBJDIR)')
_p('$(GCH): $(PCH) | $(OBJDIR)')
_p('\t@echo $(notdir $<)')
make.objDirInFileRules(prj, nil)

local cmd = iif(prj.language == "C", "$(CC) -x c-header $(ALL_CFLAGS)", "$(CXX) -x c++-header $(ALL_CXXFLAGS)")
_p('\t$(SILENT) %s -o "$@" -MF "$(@:%%.gch=%%.d)" -c "$<"', cmd)

_p('else')
_p('$(OBJECTS): | $(OBJDIR)')
_p('endif')
_p('')
end
Expand Down
40 changes: 0 additions & 40 deletions modules/gmake/tests/cpp/test_file_rules.lua
Original file line number Diff line number Diff line change
Expand Up @@ -37,19 +37,9 @@
test.capture [[
$(OBJDIR)/hello.o: src/greetings/hello.cpp
@echo $(notdir $<)
ifeq (posix,$(SHELLTYPE))
$(SILENT) mkdir -p $(OBJDIR)
else
$(SILENT) mkdir $(subst /,\\,$(OBJDIR))
endif
$(SILENT) $(CXX) $(ALL_CXXFLAGS) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/hello1.o: src/hello.cpp
@echo $(notdir $<)
ifeq (posix,$(SHELLTYPE))
$(SILENT) mkdir -p $(OBJDIR)
else
$(SILENT) mkdir $(subst /,\\,$(OBJDIR))
endif
$(SILENT) $(CXX) $(ALL_CXXFLAGS) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
]]
Expand All @@ -66,19 +56,9 @@ endif
test.capture [[
$(OBJDIR)/hello.o: src/hello.c
@echo $(notdir $<)
ifeq (posix,$(SHELLTYPE))
$(SILENT) mkdir -p $(OBJDIR)
else
$(SILENT) mkdir $(subst /,\\,$(OBJDIR))
endif
$(SILENT) $(CC) $(ALL_CFLAGS) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/test.o: src/test.cpp
@echo $(notdir $<)
ifeq (posix,$(SHELLTYPE))
$(SILENT) mkdir -p $(OBJDIR)
else
$(SILENT) mkdir $(subst /,\\,$(OBJDIR))
endif
$(SILENT) $(CXX) $(ALL_CXXFLAGS) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
]]
Expand All @@ -96,11 +76,6 @@ endif
test.capture [[
$(OBJDIR)/hello.o: src/hello.c
@echo $(notdir $<)
ifeq (posix,$(SHELLTYPE))
$(SILENT) mkdir -p $(OBJDIR)
else
$(SILENT) mkdir $(subst /,\\,$(OBJDIR))
endif
ifeq ($(config),debug)
$(SILENT) $(CXX) $(ALL_CXXFLAGS) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
endif
Expand All @@ -109,11 +84,6 @@ ifeq ($(config),release)
endif
$(OBJDIR)/test.o: src/test.c
@echo $(notdir $<)
ifeq (posix,$(SHELLTYPE))
$(SILENT) mkdir -p $(OBJDIR)
else
$(SILENT) mkdir $(subst /,\\,$(OBJDIR))
endif
$(SILENT) $(CC) $(ALL_CFLAGS) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
]]
end
Expand All @@ -130,11 +100,6 @@ endif
test.capture [[
$(OBJDIR)/hello.o: src/hello.c
@echo $(notdir $<)
ifeq (posix,$(SHELLTYPE))
$(SILENT) mkdir -p $(OBJDIR)
else
$(SILENT) mkdir $(subst /,\\,$(OBJDIR))
endif
ifeq ($(config),debug)
$(SILENT) $(CXX) $(ALL_CXXFLAGS) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
endif
Expand All @@ -143,11 +108,6 @@ ifeq ($(config),release)
endif
$(OBJDIR)/test.o: src/test.c
@echo $(notdir $<)
ifeq (posix,$(SHELLTYPE))
$(SILENT) mkdir -p $(OBJDIR)
else
$(SILENT) mkdir $(subst /,\\,$(OBJDIR))
endif
$(SILENT) $(CC) $(ALL_CFLAGS) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
]]
end
Expand Down
22 changes: 8 additions & 14 deletions modules/gmake/tests/cpp/test_make_pch.lua
Original file line number Diff line number Diff line change
Expand Up @@ -93,15 +93,12 @@
prepareRules()
test.capture [[
ifneq (,$(PCH))
$(OBJECTS): $(GCH) $(PCH)
$(GCH): $(PCH)
$(OBJECTS): $(GCH) $(PCH) | $(OBJDIR)
$(GCH): $(PCH) | $(OBJDIR)
@echo $(notdir $<)
ifeq (posix,$(SHELLTYPE))
$(SILENT) mkdir -p $(OBJDIR)
else
$(SILENT) mkdir $(subst /,\\,$(OBJDIR))
endif
$(SILENT) $(CXX) -x c++-header $(ALL_CXXFLAGS) -o "$@" -MF "$(@:%.gch=%.d)" -c "$<"
else
$(OBJECTS): | $(OBJDIR)
endif
]]
end
Expand All @@ -117,15 +114,12 @@ endif
prepareRules()
test.capture [[
ifneq (,$(PCH))
$(OBJECTS): $(GCH) $(PCH)
$(GCH): $(PCH)
$(OBJECTS): $(GCH) $(PCH) | $(OBJDIR)
$(GCH): $(PCH) | $(OBJDIR)
@echo $(notdir $<)
ifeq (posix,$(SHELLTYPE))
$(SILENT) mkdir -p $(OBJDIR)
else
$(SILENT) mkdir $(subst /,\\,$(OBJDIR))
endif
$(SILENT) $(CC) -x c-header $(ALL_CFLAGS) -o "$@" -MF "$(@:%.gch=%.d)" -c "$<"
else
$(OBJECTS): | $(OBJDIR)
endif
]]
end
Expand Down

0 comments on commit d6dfaa3

Please sign in to comment.