| # HG changeset patch |
| # User Ben Henning |
| # Date 1376606083 25200 |
| # Thu Aug 15 15:34:43 2013 -0700 |
| # Node ID 8c9cd352c70012a64779356bff3c81998c3fb6a0 |
| # Parent e8558df4fbdb173a2b9ed0d354d6c3e76b376698 |
| Implemented the option to set custom source trees for Xcode frameworks (links) |
| using Visual Studio-esque variables, such as "$(SDKROOT)/OpenGLES.framework". |
| |
| 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 |
| @@ -318,18 +318,36 @@ |
| local pth, src |
| if xcode.isframework(node.path) then |
| --respect user supplied paths |
| - if string.find(node.path,'/') then |
| - if string.find(node.path,'^%.')then |
| + -- look for special variable-starting paths for different sources |
| + local nodePath = node.path |
| + local _, matchEnd, variable = string.find(nodePath, "^%$%((.+)%)/") |
| + if variable then |
| + -- by skipping the last '/' we support the same absolute/relative |
| + -- paths as before |
| + nodePath = string.sub(nodePath, matchEnd + 1) |
| + end |
| + if string.find(nodePath,'/') then |
| + if string.find(nodePath,'^%.')then |
| error('relative paths are not currently supported for frameworks') |
| end |
| - pth = node.path |
| + pth = nodePath |
| else |
| - pth = "/System/Library/Frameworks/" .. node.path |
| + pth = "/System/Library/Frameworks/" .. nodePath |
| end |
| - src = "absolute" |
| + -- if it starts with a variable, use that as the src instead |
| + if variable then |
| + src = variable |
| + -- if we are using a different source tree, it has to be relative |
| + -- to that source tree, so get rid of any leading '/' |
| + if string.find(pth, '^/') then |
| + pth = string.sub(pth, 2) |
| + end |
| + else |
| + src = "<absolute>" |
| + end |
| else |
| -- something else; probably a source code file |
| - src = "group" |
| + src = "<group>" |
| |
| -- if the parent node is virtual, it won't have a local path |
| -- of its own; need to use full relative path from project |
| @@ -340,7 +358,7 @@ |
| end |
| end |
| |
| - _p(2,'%s /* %s */ = {isa = PBXFileReference; lastKnownFileType = %s; name = "%s"; path = "%s"; sourceTree = "<%s>"; };', |
| + _p(2,'%s /* %s */ = {isa = PBXFileReference; lastKnownFileType = %s; name = "%s"; path = "%s"; sourceTree = "%s"; };', |
| node.id, node.name, xcode.getfiletype(node), node.name, pth, src) |
| end |
| end |