From 1aa8410a332200a3c96977242795b1b3cccd4a2b Mon Sep 17 00:00:00 2001 From: Andrey Kunitsyn Date: Thu, 31 Mar 2016 20:00:31 +0300 Subject: [PATCH] support embed frameworks --- _preload.lua | 6 ++++++ xcode_common.lua | 27 +++++++++++++++++++++++++++ xcode_project.lua | 3 +++ 3 files changed, 36 insertions(+) diff --git a/_preload.lua b/_preload.lua index 4c1cc1b..79ef186 100644 --- a/_preload.lua +++ b/_preload.lua @@ -23,6 +23,12 @@ kind = "list", } + p.api.register { + name = "xcodeembededframeworks", + scope = "config", + kind = "list", + } + -- -- Register the Xcode exporters. diff --git a/xcode_common.lua b/xcode_common.lua index 5159d5c..d2f1046 100644 --- a/xcode_common.lua +++ b/xcode_common.lua @@ -542,6 +542,32 @@ _p('') end + function xcode.PBXCopyFilesBuildPhase(tr) + _p('/* Begin PBXCopyFilesBuildPhase section */') + _p(2,'%s /* Embed Frameworks */ = {', tr.products.children[1].efxstageid) + _p(3,'isa = PBXCopyFilesBuildPhase;') + _p(3,'buildActionMask = 2147483647;') + _p(3,'dstPath = "";') + _p(3,'dstSubfolderSpec = 10;') + _p(3,'files = (') + + -- write out library dependencies + tree.traverse(tr.frameworks, { + onleaf = function(node) + if node.buildid and node.isEmbed then + _p(4,'%s /* %s in Embed Frameworks */,', node.buildid, node.name) + end + end + }) + + _p(3,');') + _p(3,'name = "Embed Frameworks";') + _p(3,'runOnlyForDeploymentPostprocessing = 0;') + _p(2,'};') + _p('/* End PBXFrameworksBuildPhase section */') + _p('') + end + function xcode.PBXGroup(tr) local settings = {} @@ -634,6 +660,7 @@ _p(4,'9607AE3510C85E7E00CD1376 /* Prelink */,') end _p(4,'%s /* Frameworks */,', node.fxstageid) + _p(4,'%s /* Embed Frameworks */,', node.efxstageid) if hasBuildCommands('postbuildcommands') then _p(4,'9607AE3710C85E8F00CD1376 /* Postbuild */,') end diff --git a/xcode_project.lua b/xcode_project.lua index e17ca57..27f028d 100644 --- a/xcode_project.lua +++ b/xcode_project.lua @@ -73,6 +73,7 @@ if xcode.isframework(name) and not tr.frameworks.children[name] then node = tree.insert(tr.frameworks, tree.new(name)) node.path = link + node.isEmbed = (cfg.xcodeembededframeworks or {})[name] end end end @@ -141,6 +142,7 @@ node.resstageid = xcode.newid(node.name, "rez") node.sourcesid = xcode.newid(node.name, "src") node.fxstageid = xcode.newid(node.name, "fxs") + node.efxstageid = xcode.newid(node.name, "efs") return tr end @@ -161,6 +163,7 @@ p.callArray(m.elements.project, prj) xcode.PBXBuildFile(tr) xcode.PBXContainerItemProxy(tr) + xcode.PBXCopyFilesBuildPhase(tr) xcode.PBXFileReference(tr) xcode.PBXFrameworksBuildPhase(tr) xcode.PBXGroup(tr)