59 lines
2.4 KiB
Diff
Executable File
59 lines
2.4 KiB
Diff
Executable File
# HG changeset patch
|
|
# User Ben Henning
|
|
# Date 1376509869 25200
|
|
# Wed Aug 14 12:51:09 2013 -0700
|
|
# Node ID e8558df4fbdb173a2b9ed0d354d6c3e76b376698
|
|
# Parent a5f8b4f709722222e02fa481873d76ad25255e09
|
|
Fixed a bug in Xcode project generation wherein pre/prelink/post-build commands
|
|
would not be properly executed if the premake script only had the commands
|
|
in configuration blocks, rather than in the project block. According to the
|
|
website, these commands can exist in both blocks and the Xcode script does
|
|
properly generate the commands, it just doesn't add a single line which allows
|
|
Xcode to execute the commands at the correct stage. This patch fixes those
|
|
issues.
|
|
|
|
diff --git a/src/actions/xcode/xcode_common.lua b/src/actions/xcode/xcode_common.lua
|
|
--- a/src/actions/xcode/xcode_common.lua
|
|
+++ b/src/actions/xcode/xcode_common.lua
|
|
@@ -432,20 +432,37 @@
|
|
for _, node in ipairs(tr.products.children) do
|
|
local name = tr.project.name
|
|
|
|
+ -- This function checks whether there are build commands of a specific
|
|
+ -- type to be executed; they will be generated correctly, but the project
|
|
+ -- commands will not contain any per-configuration commands, so the logic
|
|
+ -- has to be extended a bit to account for that.
|
|
+ local function hasBuildCommands(which)
|
|
+ -- standard check...this is what existed before
|
|
+ if #tr.project[which] > 0 then
|
|
+ return true
|
|
+ end
|
|
+ -- what if there are no project-level commands? check configs...
|
|
+ for _, cfg in ipairs(tr.configs) do
|
|
+ if #cfg[which] > 0 then
|
|
+ return true
|
|
+ end
|
|
+ end
|
|
+ end
|
|
+
|
|
_p(2,'%s /* %s */ = {', node.targetid, name)
|
|
_p(3,'isa = PBXNativeTarget;')
|
|
_p(3,'buildConfigurationList = %s /* Build configuration list for PBXNativeTarget "%s" */;', node.cfgsection, name)
|
|
_p(3,'buildPhases = (')
|
|
- if #tr.project.prebuildcommands > 0 then
|
|
+ if hasBuildCommands('prebuildcommands') then
|
|
_p(4,'9607AE1010C857E500CD1376 /* Prebuild */,')
|
|
end
|
|
_p(4,'%s /* Resources */,', node.resstageid)
|
|
_p(4,'%s /* Sources */,', node.sourcesid)
|
|
- if #tr.project.prelinkcommands > 0 then
|
|
+ if hasBuildCommands('prelinkcommands') then
|
|
_p(4,'9607AE3510C85E7E00CD1376 /* Prelink */,')
|
|
end
|
|
_p(4,'%s /* Frameworks */,', node.fxstageid)
|
|
- if #tr.project.postbuildcommands > 0 then
|
|
+ if hasBuildCommands('postbuildcommands') then
|
|
_p(4,'9607AE3710C85E8F00CD1376 /* Postbuild */,')
|
|
end
|
|
_p(3,');')
|