Skip to content

Commit

Permalink
Merge pull request #668 from UmbraSoftware/fixmakej
Browse files Browse the repository at this point in the history
Fix sporadic failures when using make -j#
  • Loading branch information
tvandijck authored Jan 20, 2017
2 parents be6ecbe + ea76aa2 commit 9ff8668
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 10 deletions.
11 changes: 7 additions & 4 deletions src/actions/make/_make.lua
Original file line number Diff line number Diff line change
Expand Up @@ -173,17 +173,20 @@
-- it screws up the escaping of spaces and parethesis (anyone know a fix?)
--

function make.mkdirRules(dirname)
_p('%s:', dirname)
_p('\t@echo Creating %s', dirname)
function make.mkdir(dirname)
_p('ifeq (posix,$(SHELLTYPE))')
_p('\t$(SILENT) mkdir -p %s', dirname)
_p('else')
_p('\t$(SILENT) mkdir $(subst /,\\\\,%s)', dirname)
_p('endif')
_p('')
end

function make.mkdirRules(dirname)
_p('%s:', dirname)
_p('\t@echo Creating %s', dirname)
make.mkdir(dirname)
_p('')
end

--
-- Format a list of values to be safely written as part of a variable assignment.
Expand Down
9 changes: 5 additions & 4 deletions src/actions/make/make_cpp.lua
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,6 @@
make.cppObjects,
make.shellType,
make.cppTargetRules,
make.targetDirRules,
make.objDirRules,
make.cppCleanRules,
make.preBuildRules,
make.preLinkRules,
Expand Down Expand Up @@ -153,12 +151,14 @@
if path.iscppfile(node.abspath) then
_x('$(OBJDIR)/%s.o: %s', node.objname, node.relpath)
_p('\t@echo $(notdir $<)')
make.mkdir('$(OBJDIR)')
cpp.buildcommand(prj, "o", node)

-- resource file
elseif path.isresourcefile(node.abspath) then
_x('$(OBJDIR)/%s.res: %s', node.objname, node.relpath)
_p('\t@echo $(notdir $<)')
make.mkdir('$(OBJDIR)')
_p('\t$(SILENT) $(RESCOMP) $< -O coff -o "$@" $(ALL_RESFLAGS)')
end
end
Expand Down Expand Up @@ -317,13 +317,13 @@

function make.cppAllRules(cfg, toolset)
if cfg.system == premake.MACOSX and cfg.kind == premake.WINDOWEDAPP then
_p('all: $(TARGETDIR) $(OBJDIR) prebuild prelink $(TARGET) $(dir $(TARGETDIR))PkgInfo $(dir $(TARGETDIR))Info.plist')
_p('all: prebuild prelink $(TARGET) $(dir $(TARGETDIR))PkgInfo $(dir $(TARGETDIR))Info.plist')
_p('\t@:')
_p('')
_p('$(dir $(TARGETDIR))PkgInfo:')
_p('$(dir $(TARGETDIR))Info.plist:')
else
_p('all: $(TARGETDIR) $(OBJDIR) prebuild prelink $(TARGET)')
_p('all: prebuild prelink $(TARGET)')
_p('\t@:')
end
end
Expand Down Expand Up @@ -365,6 +365,7 @@
function make.cppTargetRules(prj)
_p('$(TARGET): $(GCH) ${CUSTOMFILES} $(OBJECTS) $(LDDEPS) $(RESOURCES)')
_p('\t@echo Linking %s', prj.name)
make.mkdir('$(TARGETDIR)')
_p('\t$(SILENT) $(LINKCMD)')
_p('\t$(POSTBUILDCMDS)')
_p('')
Expand Down
20 changes: 20 additions & 0 deletions tests/actions/make/cpp/test_file_rules.lua
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,19 @@
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 @@ -55,9 +65,19 @@ $(OBJDIR)/hello1.o: src/hello.cpp
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 Down
4 changes: 2 additions & 2 deletions tests/actions/make/cpp/test_target_rules.lua
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
function suite.defaultRules()
prepare()
test.capture [[
all: $(TARGETDIR) $(OBJDIR) prebuild prelink $(TARGET)
all: prebuild prelink $(TARGET)
@:
]]
end
Expand All @@ -47,7 +47,7 @@ all: $(TARGETDIR) $(OBJDIR) prebuild prelink $(TARGET)
kind "WindowedApp"
prepare()
test.capture [[
all: $(TARGETDIR) $(OBJDIR) prebuild prelink $(TARGET) $(dir $(TARGETDIR))PkgInfo $(dir $(TARGETDIR))Info.plist
all: prebuild prelink $(TARGET) $(dir $(TARGETDIR))PkgInfo $(dir $(TARGETDIR))Info.plist
@:
$(dir $(TARGETDIR))PkgInfo:
Expand Down

0 comments on commit 9ff8668

Please sign in to comment.