712.patch (2444B)
1# HG changeset patch 2# User Ben Henning 3# Date 1376509869 25200 4# Wed Aug 14 12:51:09 2013 -0700 5# Node ID e8558df4fbdb173a2b9ed0d354d6c3e76b376698 6# Parent a5f8b4f709722222e02fa481873d76ad25255e09 7Fixed a bug in Xcode project generation wherein pre/prelink/post-build commands 8would not be properly executed if the premake script only had the commands 9in configuration blocks, rather than in the project block. According to the 10website, these commands can exist in both blocks and the Xcode script does 11properly generate the commands, it just doesn't add a single line which allows 12Xcode to execute the commands at the correct stage. This patch fixes those 13issues. 14 15diff --git a/src/actions/xcode/xcode_common.lua b/src/actions/xcode/xcode_common.lua 16--- a/src/actions/xcode/xcode_common.lua 17+++ b/src/actions/xcode/xcode_common.lua 18@@ -432,20 +432,37 @@ 19 for _, node in ipairs(tr.products.children) do 20 local name = tr.project.name 21 22+ -- This function checks whether there are build commands of a specific 23+ -- type to be executed; they will be generated correctly, but the project 24+ -- commands will not contain any per-configuration commands, so the logic 25+ -- has to be extended a bit to account for that. 26+ local function hasBuildCommands(which) 27+ -- standard check...this is what existed before 28+ if #tr.project[which] > 0 then 29+ return true 30+ end 31+ -- what if there are no project-level commands? check configs... 32+ for _, cfg in ipairs(tr.configs) do 33+ if #cfg[which] > 0 then 34+ return true 35+ end 36+ end 37+ end 38+ 39 _p(2,'%s /* %s */ = {', node.targetid, name) 40 _p(3,'isa = PBXNativeTarget;') 41 _p(3,'buildConfigurationList = %s /* Build configuration list for PBXNativeTarget "%s" */;', node.cfgsection, name) 42 _p(3,'buildPhases = (') 43- if #tr.project.prebuildcommands > 0 then 44+ if hasBuildCommands('prebuildcommands') then 45 _p(4,'9607AE1010C857E500CD1376 /* Prebuild */,') 46 end 47 _p(4,'%s /* Resources */,', node.resstageid) 48 _p(4,'%s /* Sources */,', node.sourcesid) 49- if #tr.project.prelinkcommands > 0 then 50+ if hasBuildCommands('prelinkcommands') then 51 _p(4,'9607AE3510C85E7E00CD1376 /* Prelink */,') 52 end 53 _p(4,'%s /* Frameworks */,', node.fxstageid) 54- if #tr.project.postbuildcommands > 0 then 55+ if hasBuildCommands('postbuildcommands') then 56 _p(4,'9607AE3710C85E8F00CD1376 /* Postbuild */,') 57 end 58 _p(3,');')