Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
27
Src/external_dependencies/openmpt-trunk/include/premake/modules/xcode/LICENSE.TXT
vendored
Normal file
27
Src/external_dependencies/openmpt-trunk/include/premake/modules/xcode/LICENSE.TXT
vendored
Normal file
|
@ -0,0 +1,27 @@
|
|||
Copyright (c) 2003-2015 Jason Perkins, Mihai Sebea and individual contributors.
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
3. Neither the name of Premake nor the names of its contributors may be
|
||||
used to endorse or promote products derived from this software without
|
||||
specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
7
Src/external_dependencies/openmpt-trunk/include/premake/modules/xcode/_manifest.lua
vendored
Normal file
7
Src/external_dependencies/openmpt-trunk/include/premake/modules/xcode/_manifest.lua
vendored
Normal file
|
@ -0,0 +1,7 @@
|
|||
return {
|
||||
"_preload.lua",
|
||||
"xcode.lua",
|
||||
"xcode4_workspace.lua",
|
||||
"xcode_common.lua",
|
||||
"xcode_project.lua",
|
||||
}
|
101
Src/external_dependencies/openmpt-trunk/include/premake/modules/xcode/_preload.lua
vendored
Normal file
101
Src/external_dependencies/openmpt-trunk/include/premake/modules/xcode/_preload.lua
vendored
Normal file
|
@ -0,0 +1,101 @@
|
|||
---
|
||||
-- xcode/_preload.lua
|
||||
-- Define the Apple XCode actions and new APIs.
|
||||
-- Copyright (c) 2009-2015 Jason Perkins and the Premake project
|
||||
---
|
||||
|
||||
local p = premake
|
||||
|
||||
|
||||
--
|
||||
-- Register new Xcode-specific project fields.
|
||||
--
|
||||
|
||||
p.api.register {
|
||||
name = "xcodebuildsettings",
|
||||
scope = "config",
|
||||
kind = "key-array",
|
||||
}
|
||||
|
||||
p.api.register {
|
||||
name = "xcodebuildresources",
|
||||
scope = "config",
|
||||
kind = "list",
|
||||
}
|
||||
|
||||
p.api.register {
|
||||
name = "xcodecodesigningidentity",
|
||||
scope = "config",
|
||||
kind = "string",
|
||||
}
|
||||
|
||||
p.api.register {
|
||||
name = "xcodesystemcapabilities",
|
||||
scope = "project",
|
||||
kind = "key-boolean",
|
||||
}
|
||||
|
||||
p.api.register {
|
||||
name = "iosfamily",
|
||||
scope = "config",
|
||||
kind = "string",
|
||||
allowed = {
|
||||
"iPhone/iPod touch",
|
||||
"iPad",
|
||||
"Universal",
|
||||
}
|
||||
}
|
||||
|
||||
p.api.register {
|
||||
name = "embed",
|
||||
scope = "config",
|
||||
kind = "list",
|
||||
}
|
||||
|
||||
p.api.register {
|
||||
name = "embedAndSign",
|
||||
scope = "config",
|
||||
kind = "list",
|
||||
}
|
||||
|
||||
--
|
||||
-- Register the Xcode exporters.
|
||||
--
|
||||
|
||||
newaction {
|
||||
trigger = "xcode4",
|
||||
shortname = "Apple Xcode 4",
|
||||
description = "Generate Apple Xcode 4 project files",
|
||||
|
||||
-- Xcode always uses Mac OS X path and naming conventions
|
||||
|
||||
toolset = "clang",
|
||||
|
||||
-- The capabilities of this action
|
||||
|
||||
valid_kinds = { "ConsoleApp", "WindowedApp", "SharedLib", "StaticLib", "Makefile", "Utility", "None" },
|
||||
valid_languages = { "C", "C++" },
|
||||
valid_tools = {
|
||||
cc = { "gcc", "clang" },
|
||||
},
|
||||
|
||||
|
||||
-- Workspace and project generation logic
|
||||
|
||||
onWorkspace = function(wks)
|
||||
p.generate(wks, ".xcworkspace/contents.xcworkspacedata", p.modules.xcode.generateWorkspace)
|
||||
end,
|
||||
|
||||
onProject = function(prj)
|
||||
p.generate(prj, ".xcodeproj/project.pbxproj", p.modules.xcode.generateProject)
|
||||
end,
|
||||
}
|
||||
|
||||
|
||||
--
|
||||
-- Decide when the full module should be loaded.
|
||||
--
|
||||
|
||||
return function(cfg)
|
||||
return (_ACTION == "xcode4")
|
||||
end
|
9
Src/external_dependencies/openmpt-trunk/include/premake/modules/xcode/tests/_tests.lua
vendored
Normal file
9
Src/external_dependencies/openmpt-trunk/include/premake/modules/xcode/tests/_tests.lua
vendored
Normal file
|
@ -0,0 +1,9 @@
|
|||
require ("xcode")
|
||||
|
||||
return {
|
||||
"test_header_footer.lua",
|
||||
"test_xcode4_project.lua",
|
||||
"test_xcode4_workspace.lua",
|
||||
"test_xcode_dependencies.lua",
|
||||
"test_xcode_project.lua",
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
---
|
||||
-- xcode/tests/test_header.lua
|
||||
-- Validate generation for Xcode workspaces.
|
||||
-- Author Jason Perkins
|
||||
-- Copyright (c) 2009-2015 Jason Perkins and the Premake project
|
||||
---
|
||||
|
||||
local suite = test.declare("xcode_header")
|
||||
local p = premake
|
||||
local xcode = p.modules.xcode
|
||||
|
||||
|
||||
--
|
||||
-- Setup
|
||||
--
|
||||
|
||||
local wks
|
||||
|
||||
function suite.setup()
|
||||
_TARGET_OS = "macosx"
|
||||
p.action.set('xcode4')
|
||||
wks = test.createWorkspace()
|
||||
end
|
||||
|
||||
local function prepare()
|
||||
prj = test.getproject(wks, 1)
|
||||
xcode.header(prj)
|
||||
xcode.footer(prj)
|
||||
end
|
||||
|
||||
|
||||
--
|
||||
-- Check basic structure
|
||||
--
|
||||
|
||||
function suite.onDefaults()
|
||||
prepare()
|
||||
test.capture [[
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
};
|
||||
rootObject = 08FB7793FE84155DC02AAC07 /* Project object */;
|
||||
}
|
||||
]]
|
||||
end
|
111
Src/external_dependencies/openmpt-trunk/include/premake/modules/xcode/tests/test_xcode4_project.lua
vendored
Normal file
111
Src/external_dependencies/openmpt-trunk/include/premake/modules/xcode/tests/test_xcode4_project.lua
vendored
Normal file
|
@ -0,0 +1,111 @@
|
|||
---
|
||||
-- tests/actions/xcode/test_xcode4_project.lua
|
||||
-- Automated test suite for Xcode project generation.
|
||||
-- Copyright (c) 2011-2015 Jason Perkins and the Premake project
|
||||
---
|
||||
|
||||
|
||||
local suite = test.declare("xcode4_proj")
|
||||
local p = premake
|
||||
local xcode = p.modules.xcode
|
||||
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- Setup/Teardown
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
local tr, wks
|
||||
|
||||
function suite.teardown()
|
||||
tr = nil
|
||||
end
|
||||
|
||||
function suite.setup()
|
||||
_TARGET_OS = "macosx"
|
||||
p.action.set('xcode4')
|
||||
io.eol = "\n"
|
||||
wks = test.createWorkspace()
|
||||
end
|
||||
|
||||
local function prepare()
|
||||
wks = p.oven.bakeWorkspace(wks)
|
||||
xcode.prepareWorkspace(wks)
|
||||
local prj = p.workspace.getproject(wks, 1)
|
||||
tr = xcode.buildprjtree(prj)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- xcode id generation tests
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
local function print_id(...)
|
||||
_p("%s", xcode.newid(...))
|
||||
end
|
||||
|
||||
function suite.IDGeneratorIsDeterministic()
|
||||
print_id("project", "Debug")
|
||||
print_id("project", "Release")
|
||||
test.capture [[
|
||||
B266956655B21E987082EBA6
|
||||
DAC961207F1BFED291544760
|
||||
]]
|
||||
end
|
||||
|
||||
function suite.IDGeneratorIsDifferent()
|
||||
print_id("project", "Debug", "file")
|
||||
print_id("project", "Debug", "hello")
|
||||
test.capture [[
|
||||
47C6E72E5ED982604EF57D6E
|
||||
8DCA12C2873014347ACB7102
|
||||
]]
|
||||
end
|
||||
|
||||
function suite.IDGeneratorSame3()
|
||||
print_id("project", "Release", "file")
|
||||
print_id("project", "Release", "file")
|
||||
print_id("project", "Release", "file")
|
||||
test.capture [[
|
||||
022ECCE82854FC9A8F5BF328
|
||||
022ECCE82854FC9A8F5BF328
|
||||
022ECCE82854FC9A8F5BF328
|
||||
]]
|
||||
end
|
||||
|
||||
function suite.IDGeneratorMoreThanNecessary()
|
||||
print_id("a", "b", "c", "d", "e", "f")
|
||||
print_id("abcdef")
|
||||
test.capture [[
|
||||
63AEF3DD89D5238FF0DC1A1D
|
||||
9F1AF6957CC5F947506A7CD5
|
||||
]]
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- XCBuildConfiguration_Project tests
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
function suite.XCBuildConfigurationProject_OnSymbols()
|
||||
symbols "On"
|
||||
prepare()
|
||||
xcode.XCBuildConfiguration_Project(tr, tr.configs[1])
|
||||
test.capture [[
|
||||
A14350AC4595EE5E57CE36EC /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = "$(NATIVE_ARCH_ACTUAL)";
|
||||
CONFIGURATION_BUILD_DIR = "$(SYMROOT)";
|
||||
CONFIGURATION_TEMP_DIR = "$(OBJROOT)";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
OBJROOT = obj/Debug;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SYMROOT = bin/Debug;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
]]
|
||||
end
|
|
@ -0,0 +1,133 @@
|
|||
---
|
||||
-- xcode/tests/test_xcode4_workspace.lua
|
||||
-- Validate generation for Xcode workspaces.
|
||||
-- Author Mihai Sebea
|
||||
-- Modified by Jason Perkins
|
||||
-- Copyright (c) 2014-2015 Jason Perkins and the Premake project
|
||||
---
|
||||
|
||||
local suite = test.declare("xcode4_workspace")
|
||||
local p = premake
|
||||
local xcode = p.modules.xcode
|
||||
|
||||
|
||||
--
|
||||
-- Setup
|
||||
--
|
||||
|
||||
local wks, prj
|
||||
|
||||
function suite.setup()
|
||||
_TARGET_OS = "macosx"
|
||||
p.action.set('xcode4')
|
||||
wks = test.createWorkspace()
|
||||
end
|
||||
|
||||
local function prepare()
|
||||
wks = test.getWorkspace(wks)
|
||||
xcode.generateWorkspace(wks)
|
||||
end
|
||||
|
||||
|
||||
--
|
||||
-- Check the basic structure of a workspace.
|
||||
--
|
||||
|
||||
function suite.onEmptyWorkspace()
|
||||
wks.projects = {}
|
||||
prepare()
|
||||
test.capture [[
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
</Workspace>
|
||||
]]
|
||||
end
|
||||
|
||||
|
||||
function suite.onDefaultWorkspace()
|
||||
prepare()
|
||||
test.capture [[
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "group:MyProject.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
]]
|
||||
end
|
||||
|
||||
|
||||
function suite.onMultipleProjects()
|
||||
test.createproject(wks)
|
||||
prepare()
|
||||
test.capture [[
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "group:MyProject.xcodeproj">
|
||||
</FileRef>
|
||||
<FileRef
|
||||
location = "group:MyProject2.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
]]
|
||||
end
|
||||
|
||||
function suite.onMultipleProjectsGrouped()
|
||||
test.createGroup(wks)
|
||||
test.createproject(wks)
|
||||
prepare()
|
||||
test.capture [[
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<Group
|
||||
location = "container:"
|
||||
name = "MyGroup1">
|
||||
<FileRef
|
||||
location = "group:MyProject2.xcodeproj">
|
||||
</FileRef>
|
||||
</Group>
|
||||
<FileRef
|
||||
location = "group:MyProject.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
]]
|
||||
end
|
||||
|
||||
|
||||
|
||||
--
|
||||
-- Projects should include relative path from workspace.
|
||||
--
|
||||
|
||||
function suite.onNestedProjectPath()
|
||||
location "MyProject"
|
||||
prepare()
|
||||
test.capture [[
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "group:MyProject/MyProject.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
]]
|
||||
end
|
||||
|
||||
function suite.onExternalProjectPath()
|
||||
location "../MyProject"
|
||||
prepare()
|
||||
test.capture [[
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "group:../MyProject/MyProject.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
]]
|
||||
end
|
|
@ -0,0 +1,398 @@
|
|||
--
|
||||
-- tests/actions/xcode/test_xcode_dependencies.lua
|
||||
-- Automated test suite for Xcode project dependencies.
|
||||
-- Copyright (c) 2009-2011 Jason Perkins and the Premake project
|
||||
--
|
||||
|
||||
local suite = test.declare("xcode_deps")
|
||||
local p = premake
|
||||
local xcode = p.modules.xcode
|
||||
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- Setup/Teardown
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
local wks, prj, prj2, tr
|
||||
|
||||
function suite.teardown()
|
||||
wks = nil
|
||||
prj = nil
|
||||
prj2 = nil
|
||||
tr = nil
|
||||
end
|
||||
|
||||
function suite.setup()
|
||||
_TARGET_OS = "macosx"
|
||||
p.action.set('xcode4')
|
||||
|
||||
wks, prj = test.createWorkspace()
|
||||
links { "MyProject2" }
|
||||
|
||||
prj2 = test.createproject(wks)
|
||||
kind "StaticLib"
|
||||
configuration "Debug"
|
||||
targetsuffix "-d"
|
||||
end
|
||||
|
||||
local function prepare()
|
||||
wks = p.oven.bakeWorkspace(wks)
|
||||
xcode.prepareWorkspace(wks)
|
||||
local prj3 = p.workspace.getproject(wks, 1)
|
||||
--prj2 = test.getproject(wks, 2)
|
||||
tr = xcode.buildprjtree(prj3)
|
||||
end
|
||||
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- PBXBuildFile tests
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
function suite.PBXBuildFile_ListsDependencyTargets_OnStaticLib()
|
||||
prepare()
|
||||
xcode.PBXBuildFile(tr)
|
||||
test.capture [[
|
||||
/* Begin PBXBuildFile section */
|
||||
5931FBCA4D31453CD21C5A0A /* libMyProject2-d.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CCB6C53210CA9664049C1B72 /* libMyProject2-d.a */; };
|
||||
/* End PBXBuildFile section */
|
||||
]]
|
||||
end
|
||||
|
||||
function suite.PBXBuildFile_ListsDependencyTargets_OnSharedLib()
|
||||
kind "SharedLib"
|
||||
prepare()
|
||||
xcode.PBXBuildFile(tr)
|
||||
test.capture [[
|
||||
/* Begin PBXBuildFile section */
|
||||
1BC538B0FA67D422AF49D6F0 /* libMyProject2-d.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 107168B810144BEA4A68FEF8 /* libMyProject2-d.dylib */; };
|
||||
/* End PBXBuildFile section */
|
||||
]]
|
||||
end
|
||||
|
||||
function suite.PBXBuildFile_ListsDependencyTargets_OnSharedLibWhenEmbedding()
|
||||
kind "SharedLib"
|
||||
|
||||
project "MyProject"
|
||||
embed { "MyProject2" }
|
||||
|
||||
prepare()
|
||||
xcode.PBXBuildFile(tr)
|
||||
test.capture [[
|
||||
/* Begin PBXBuildFile section */
|
||||
1BC538B0FA67D422AF49D6F0 /* libMyProject2-d.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 107168B810144BEA4A68FEF8 /* libMyProject2-d.dylib */; };
|
||||
6514841E8D4F3CD074EACA5E /* libMyProject2-d.dylib in Embed Libraries */ = {isa = PBXBuildFile; fileRef = 107168B810144BEA4A68FEF8 /* libMyProject2-d.dylib */; };
|
||||
/* End PBXBuildFile section */
|
||||
]]
|
||||
end
|
||||
|
||||
function suite.PBXBuildFile_ListsDependencyTargets_OnSharedLibWhenEmbeddingAndSigning()
|
||||
kind "SharedLib"
|
||||
|
||||
project "MyProject"
|
||||
embedAndSign { "MyProject2" }
|
||||
|
||||
prepare()
|
||||
xcode.PBXBuildFile(tr)
|
||||
test.capture [[
|
||||
/* Begin PBXBuildFile section */
|
||||
1BC538B0FA67D422AF49D6F0 /* libMyProject2-d.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 107168B810144BEA4A68FEF8 /* libMyProject2-d.dylib */; };
|
||||
6514841E8D4F3CD074EACA5E /* libMyProject2-d.dylib in Embed Libraries */ = {isa = PBXBuildFile; fileRef = 107168B810144BEA4A68FEF8 /* libMyProject2-d.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
||||
/* End PBXBuildFile section */
|
||||
]]
|
||||
end
|
||||
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- PBXContainerItemProxy tests
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
function suite.PBXContainerItemProxy_ListsProjectConfigs()
|
||||
prepare()
|
||||
xcode.PBXContainerItemProxy(tr)
|
||||
test.capture [[
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
17DF877139AB34A376605DB1 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = CBD893DEB01F9C10340CCA1E /* MyProject2.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = E052136F28C2F7A16D61C9AF;
|
||||
remoteInfo = "libMyProject2-d.a";
|
||||
};
|
||||
6A19FA0A8BE5A73CC89AD04A /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = CBD893DEB01F9C10340CCA1E /* MyProject2.xcodeproj */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = DA5DB975C549DF670D2FA7B5;
|
||||
remoteInfo = "libMyProject2-d.a";
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
]]
|
||||
end
|
||||
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- PBXFileReference tests
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
function suite.PBXFileReference_ListsDependencies()
|
||||
prepare()
|
||||
xcode.PBXFileReference(tr)
|
||||
test.capture [[
|
||||
/* Begin PBXFileReference section */
|
||||
19A5C4E61D1697189E833B26 /* MyProject */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = MyProject; path = MyProject; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
CBD893DEB01F9C10340CCA1E /* libMyProject2-d.a */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "MyProject2.xcodeproj"; path = MyProject2.xcodeproj; sourceTree = SOURCE_ROOT; };
|
||||
/* End PBXFileReference section */
|
||||
]]
|
||||
end
|
||||
|
||||
function suite.PBXFileReference_UsesRelativePaths()
|
||||
prj.location = "MyProject"
|
||||
prj2.location = "MyProject2"
|
||||
prepare()
|
||||
xcode.PBXFileReference(tr)
|
||||
test.capture [[
|
||||
/* Begin PBXFileReference section */
|
||||
149CF6C96C0269BB1E108509 /* libMyProject2-d.a */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "MyProject2.xcodeproj"; path = ../MyProject2.xcodeproj; sourceTree = SOURCE_ROOT; };
|
||||
19A5C4E61D1697189E833B26 /* MyProject */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = MyProject; path = MyProject; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
/* End PBXFileReference section */
|
||||
]]
|
||||
end
|
||||
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- PBXFrameworksBuildPhase tests
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
function suite.PBXFrameworksBuildPhase_ListsDependencies_OnStaticLib()
|
||||
prepare()
|
||||
xcode.PBXFrameworksBuildPhase(tr)
|
||||
test.capture [[
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
9FDD37564328C0885DF98D96 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
5931FBCA4D31453CD21C5A0A /* libMyProject2-d.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
]]
|
||||
end
|
||||
|
||||
function suite.PBXFrameworksBuildPhase_ListsDependencies_OnSharedLib()
|
||||
kind "SharedLib"
|
||||
prepare()
|
||||
xcode.PBXFrameworksBuildPhase(tr)
|
||||
test.capture [[
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
9FDD37564328C0885DF98D96 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
1BC538B0FA67D422AF49D6F0 /* libMyProject2-d.dylib in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
]]
|
||||
end
|
||||
|
||||
function suite.PBXFrameworksBuildPhase_ListsDependencies_OnSharedLibWithTargetExtension()
|
||||
kind "SharedLib"
|
||||
targetextension ".plugin"
|
||||
prepare()
|
||||
xcode.PBXFrameworksBuildPhase(tr)
|
||||
test.capture [[
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
9FDD37564328C0885DF98D96 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
6B7205267D294518F2973366 /* libMyProject2-d.plugin in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
]]
|
||||
end
|
||||
---------------------------------------------------------------------------
|
||||
-- PBXCopyFilesBuildPhaseForEmbedFrameworks tests
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
function suite.PBXCopyFilesBuildPhaseForEmbedFrameworks_ListsDependencies_OnSharedLib()
|
||||
kind "SharedLib"
|
||||
|
||||
project "MyProject"
|
||||
embed { "MyProject2" }
|
||||
|
||||
prepare()
|
||||
xcode.PBXCopyFilesBuildPhaseForEmbedFrameworks(tr)
|
||||
test.capture [[
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
E1D3B542862652F4985E9B82 /* Embed Libraries */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
6514841E8D4F3CD074EACA5E /* MyProject2 in Projects */,
|
||||
);
|
||||
name = "Embed Libraries";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
]]
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- PBXGroup tests
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
function suite.PBXGroup_ListsDependencies()
|
||||
prepare()
|
||||
xcode.PBXGroup(tr)
|
||||
test.capture [[
|
||||
/* Begin PBXGroup section */
|
||||
12F5A37D963B00EFBF8281BD /* MyProject */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
A6C936B49B3FADE6EA134CF4 /* Products */,
|
||||
9D968EAA920D05DCE0E0A4EA /* Projects */,
|
||||
);
|
||||
name = MyProject;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9D968EAA920D05DCE0E0A4EA /* Projects */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
CBD893DEB01F9C10340CCA1E /* MyProject2.xcodeproj */,
|
||||
);
|
||||
name = Projects;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
A6C936B49B3FADE6EA134CF4 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
19A5C4E61D1697189E833B26 /* MyProject */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
C7F36A91F7853983D29278D1 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
CCB6C53210CA9664049C1B72 /* libMyProject2-d.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
]]
|
||||
end
|
||||
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- PBXNativeTarget tests
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
function suite.PBXNativeTarget_ListsDependencies()
|
||||
prepare()
|
||||
xcode.PBXNativeTarget(tr)
|
||||
test.capture [[
|
||||
/* Begin PBXNativeTarget section */
|
||||
48B5980C775BEBFED09D464C /* MyProject */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 8E187FB5316408E74C34D5F5 /* Build configuration list for PBXNativeTarget "MyProject" */;
|
||||
buildPhases = (
|
||||
0FC4B7F6B3104128CDE10E36 /* Resources */,
|
||||
7971D14D1CBD5A7F378E278D /* Sources */,
|
||||
9FDD37564328C0885DF98D96 /* Frameworks */,
|
||||
E1D3B542862652F4985E9B82 /* Embed Libraries */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
B5ABA79AE53D768CC04AB5DA /* PBXTargetDependency */,
|
||||
);
|
||||
name = MyProject;
|
||||
productInstallPath = "$(HOME)/bin";
|
||||
productName = MyProject;
|
||||
productReference = 19A5C4E61D1697189E833B26 /* MyProject */;
|
||||
productType = "com.apple.product-type.tool";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
]]
|
||||
end
|
||||
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- PBXProject tests
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
function suite.PBXProject_ListsDependencies()
|
||||
prepare()
|
||||
xcode.PBXProject(tr)
|
||||
test.capture [[
|
||||
/* Begin PBXProject section */
|
||||
08FB7793FE84155DC02AAC07 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "MyProject" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
hasScannedForEncodings = 1;
|
||||
mainGroup = 12F5A37D963B00EFBF8281BD /* MyProject */;
|
||||
projectDirPath = "";
|
||||
projectReferences = (
|
||||
{
|
||||
ProductGroup = C7F36A91F7853983D29278D1 /* Products */;
|
||||
ProjectRef = CBD893DEB01F9C10340CCA1E /* MyProject2.xcodeproj */;
|
||||
},
|
||||
);
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
48B5980C775BEBFED09D464C /* MyProject */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
]]
|
||||
end
|
||||
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- PBXReferenceProxy tests
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
function suite.PBXReferenceProxy_ListsDependencies()
|
||||
prepare()
|
||||
xcode.PBXReferenceProxy(tr)
|
||||
test.capture [[
|
||||
/* Begin PBXReferenceProxy section */
|
||||
CCB6C53210CA9664049C1B72 /* libMyProject2-d.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = "libMyProject2-d.a";
|
||||
remoteRef = 17DF877139AB34A376605DB1 /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
/* End PBXReferenceProxy section */
|
||||
]]
|
||||
end
|
||||
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- PBXTargetDependency tests
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
function suite.PBXTargetDependency_ListsDependencies()
|
||||
prepare()
|
||||
xcode.PBXTargetDependency(tr)
|
||||
test.capture [[
|
||||
/* Begin PBXTargetDependency section */
|
||||
B5ABA79AE53D768CC04AB5DA /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = "libMyProject2-d.a";
|
||||
targetProxy = 6A19FA0A8BE5A73CC89AD04A /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
]]
|
||||
end
|
4214
Src/external_dependencies/openmpt-trunk/include/premake/modules/xcode/tests/test_xcode_project.lua
vendored
Normal file
4214
Src/external_dependencies/openmpt-trunk/include/premake/modules/xcode/tests/test_xcode_project.lua
vendored
Normal file
File diff suppressed because it is too large
Load diff
19
Src/external_dependencies/openmpt-trunk/include/premake/modules/xcode/xcode.lua
vendored
Normal file
19
Src/external_dependencies/openmpt-trunk/include/premake/modules/xcode/xcode.lua
vendored
Normal file
|
@ -0,0 +1,19 @@
|
|||
---
|
||||
-- xcode/xcode.lua
|
||||
-- Common support code for the Apple Xcode exporters.
|
||||
-- Copyright (c) 2009-2015 Jason Perkins and the Premake project
|
||||
---
|
||||
|
||||
local p = premake
|
||||
|
||||
p.modules.xcode = {}
|
||||
|
||||
local m = p.modules.xcode
|
||||
m._VERSION = p._VERSION
|
||||
m.elements = {}
|
||||
|
||||
include("xcode_common.lua")
|
||||
include("xcode4_workspace.lua")
|
||||
include("xcode_project.lua")
|
||||
|
||||
return m
|
133
Src/external_dependencies/openmpt-trunk/include/premake/modules/xcode/xcode4_workspace.lua
vendored
Normal file
133
Src/external_dependencies/openmpt-trunk/include/premake/modules/xcode/xcode4_workspace.lua
vendored
Normal file
|
@ -0,0 +1,133 @@
|
|||
---
|
||||
-- xcode/xcode4_workspace.lua
|
||||
-- Generate an Xcode workspace.
|
||||
-- Author Mihai Sebea
|
||||
-- Modified by Jason Perkins
|
||||
-- Copyright (c) 2014-2015 Jason Perkins and the Premake project
|
||||
---
|
||||
|
||||
local p = premake
|
||||
local m = p.modules.xcode
|
||||
local tree = p.tree
|
||||
|
||||
|
||||
---
|
||||
-- Generate an Xcode contents.xcworkspacedata file.
|
||||
---
|
||||
|
||||
m.elements.workspace = function(wks)
|
||||
return {
|
||||
m.xmlDeclaration,
|
||||
m.workspace,
|
||||
m.reorderProjects,
|
||||
m.workspaceFileRefs,
|
||||
m.workspaceTail,
|
||||
}
|
||||
end
|
||||
|
||||
function m.generateWorkspace(wks)
|
||||
m.prepareWorkspace(wks)
|
||||
p.callArray(m.elements.workspace, wks)
|
||||
end
|
||||
|
||||
|
||||
function m.workspace()
|
||||
p.push('<Workspace')
|
||||
p.w('version = "1.0">')
|
||||
end
|
||||
|
||||
|
||||
function m.workspaceTail()
|
||||
-- Don't output final newline. Xcode doesn't.
|
||||
p.out('</Workspace>')
|
||||
end
|
||||
|
||||
|
||||
--
|
||||
-- If a startup project is specified, move it (and any enclosing groups)
|
||||
-- to the front of the project list. This will make Visual Studio treat
|
||||
-- it like a startup project.
|
||||
--
|
||||
-- I force the new ordering into the tree so that it will get applied to
|
||||
-- all sections of the solution; otherwise the first change to the solution
|
||||
-- in the IDE will cause the orderings to get rewritten.
|
||||
--
|
||||
|
||||
function m.reorderProjects(wks)
|
||||
if wks.startproject then
|
||||
local np
|
||||
local tr = p.workspace.grouptree(wks)
|
||||
tree.traverse(tr, {
|
||||
onleaf = function(n)
|
||||
if n.project.name == wks.startproject then
|
||||
np = n
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
while np and np.parent do
|
||||
local p = np.parent
|
||||
local i = table.indexof(p.children, np)
|
||||
table.remove(p.children, i)
|
||||
table.insert(p.children, 1, np)
|
||||
np = p
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
---
|
||||
-- Generate the list of project references.
|
||||
---
|
||||
|
||||
m.elements.workspaceFileRef = function(prj)
|
||||
return {
|
||||
m.workspaceLocation,
|
||||
}
|
||||
end
|
||||
|
||||
function m.workspaceFileRefs(wks)
|
||||
local tr = p.workspace.grouptree(wks)
|
||||
tree.traverse(tr, {
|
||||
onleaf = function(n)
|
||||
local prj = n.project
|
||||
|
||||
p.push('<FileRef')
|
||||
local contents = p.capture(function()
|
||||
p.callArray(m.elements.workspaceFileRef, prj)
|
||||
end)
|
||||
p.outln(contents .. ">")
|
||||
p.pop('</FileRef>')
|
||||
end,
|
||||
|
||||
onbranchenter = function(n)
|
||||
local prj = n.project
|
||||
|
||||
p.push('<Group')
|
||||
p.w('location = "container:"')
|
||||
p.w('name = "%s">', n.name)
|
||||
end,
|
||||
|
||||
onbranchexit = function(n)
|
||||
p.pop('</Group>')
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
--
|
||||
-- Handlers for individual project elements
|
||||
--
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
|
||||
function m.workspaceLocation(prj)
|
||||
local fname = p.filename(prj, ".xcodeproj")
|
||||
fname = path.getrelative(prj.workspace.location, fname)
|
||||
p.w('location = "group:%s"', fname)
|
||||
end
|
||||
|
||||
|
||||
function m.xmlDeclaration()
|
||||
p.xmlUtf8(true)
|
||||
end
|
1689
Src/external_dependencies/openmpt-trunk/include/premake/modules/xcode/xcode_common.lua
vendored
Normal file
1689
Src/external_dependencies/openmpt-trunk/include/premake/modules/xcode/xcode_common.lua
vendored
Normal file
File diff suppressed because it is too large
Load diff
268
Src/external_dependencies/openmpt-trunk/include/premake/modules/xcode/xcode_project.lua
vendored
Normal file
268
Src/external_dependencies/openmpt-trunk/include/premake/modules/xcode/xcode_project.lua
vendored
Normal file
|
@ -0,0 +1,268 @@
|
|||
---
|
||||
-- xcode/xcode4_project.lua
|
||||
-- Generate an Xcode project file.
|
||||
-- Author Jason Perkins
|
||||
-- Modified by Mihai Sebea
|
||||
-- Copyright (c) 2009-2015 Jason Perkins and the Premake project
|
||||
---
|
||||
|
||||
local p = premake
|
||||
local m = p.modules.xcode
|
||||
|
||||
local xcode = p.modules.xcode
|
||||
local project = p.project
|
||||
local config = p.config
|
||||
local fileconfig = p.fileconfig
|
||||
local tree = p.tree
|
||||
|
||||
--
|
||||
-- Checks if a node must be excluded completely from a target or not. It will
|
||||
-- return true only if the node has the "ExcludeFromBuild" flag in all the
|
||||
-- configurations.
|
||||
--
|
||||
-- @param node
|
||||
-- The node to check.
|
||||
-- @param prj
|
||||
-- The project being generated.
|
||||
-- @returns
|
||||
-- A boolean, telling whether the node must be excluded from its target or not.
|
||||
--
|
||||
function xcode.mustExcludeFromTarget(node, prj)
|
||||
if not node.configs then
|
||||
return false
|
||||
end
|
||||
|
||||
local value
|
||||
for cfg in premake.project.eachconfig(prj) do
|
||||
local filecfg = premake.fileconfig.getconfig(node, cfg)
|
||||
if filecfg then
|
||||
local newValue = not not filecfg.flags.ExcludeFromBuild
|
||||
if value == nil then
|
||||
value = newValue
|
||||
elseif value ~= newValue then
|
||||
p.warn(node.name .. " is excluded in just some configurations. Autocompletion will not work correctly on this file in Xcode.")
|
||||
return false
|
||||
end
|
||||
end
|
||||
end
|
||||
return value
|
||||
end
|
||||
|
||||
--
|
||||
-- Create a tree corresponding to what is shown in the Xcode project browser
|
||||
-- pane, with nodes for files and folders, resources, frameworks, and products.
|
||||
--
|
||||
-- @param prj
|
||||
-- The project being generated.
|
||||
-- @returns
|
||||
-- A tree, loaded with metadata, which mirrors Xcode's view of the project.
|
||||
--
|
||||
|
||||
function xcode.buildprjtree(prj)
|
||||
local tr = project.getsourcetree(prj, nil , false)
|
||||
tr.project = prj
|
||||
|
||||
-- create a list of build configurations and assign IDs
|
||||
tr.configs = {}
|
||||
|
||||
for cfg in project.eachconfig(prj) do
|
||||
cfg.xcode = {}
|
||||
cfg.xcode.targetid = xcode.newid(prj.xcode.projectnode.name, cfg.buildcfg, "target")
|
||||
cfg.xcode.projectid = xcode.newid(tr.name, cfg.buildcfg)
|
||||
table.insert(tr.configs, cfg)
|
||||
end
|
||||
|
||||
-- convert localized resources from their filesystem layout (English.lproj/MainMenu.xib)
|
||||
-- to Xcode's display layout (MainMenu.xib/English).
|
||||
tree.traverse(tr, {
|
||||
onbranch = function(node)
|
||||
if path.getextension(node.name) == ".lproj" then
|
||||
local lang = path.getbasename(node.name) -- "English", "French", etc.
|
||||
|
||||
-- create a new language group for each file it contains
|
||||
for _, filenode in ipairs(node.children) do
|
||||
local grpnode = node.parent.children[filenode.name]
|
||||
if not grpnode then
|
||||
grpnode = tree.insert(node.parent, tree.new(filenode.name))
|
||||
grpnode.kind = "vgroup"
|
||||
end
|
||||
|
||||
-- convert the file node to a language node and add to the group
|
||||
filenode.name = path.getbasename(lang)
|
||||
tree.insert(grpnode, filenode)
|
||||
end
|
||||
|
||||
-- remove this directory from the tree
|
||||
tree.remove(node)
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
-- the special folder "Frameworks" lists all linked frameworks
|
||||
tr.frameworks = tree.new("Frameworks")
|
||||
for cfg in project.eachconfig(prj) do
|
||||
for _, link in ipairs(config.getlinks(cfg, "system", "fullpath")) do
|
||||
local name = path.getname(link)
|
||||
if xcode.isframeworkordylib(name) and not tr.frameworks.children[name] then
|
||||
node = tree.insert(tr.frameworks, tree.new(name))
|
||||
node.path = link
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- only add it to the tree if there are frameworks to link
|
||||
if #tr.frameworks.children > 0 then
|
||||
tree.insert(tr, tr.frameworks)
|
||||
end
|
||||
|
||||
-- the special folder "Products" holds the target produced by the project; this
|
||||
-- is populated below
|
||||
tr.products = tree.insert(tr, tree.new("Products"))
|
||||
|
||||
-- the special folder "Projects" lists sibling project dependencies
|
||||
tr.projects = tree.new("Projects")
|
||||
for _, dep in ipairs(project.getdependencies(prj, "linkOnly")) do
|
||||
xcode.addDependency(prj, tr, dep, true)
|
||||
end
|
||||
for _, dep in ipairs(project.getdependencies(prj, "dependOnly")) do
|
||||
xcode.addDependency(prj, tr, dep, false)
|
||||
end
|
||||
|
||||
if #tr.projects.children > 0 then
|
||||
tree.insert(tr, tr.projects)
|
||||
end
|
||||
|
||||
-- Final setup
|
||||
tree.traverse(tr, {
|
||||
onnode = function(node)
|
||||
local nodePath
|
||||
if node.path then
|
||||
nodePath = path.getrelative(tr.project.location, node.path)
|
||||
end
|
||||
-- assign IDs to every node in the tree
|
||||
node.id = xcode.newid(node.name, nil, nodePath)
|
||||
|
||||
node.isResource = xcode.isItemResource(prj, node)
|
||||
|
||||
-- check to see if this file has custom build
|
||||
if node.configs then
|
||||
for cfg in project.eachconfig(prj) do
|
||||
local filecfg = fileconfig.getconfig(node, cfg)
|
||||
if fileconfig.hasCustomBuildRule(filecfg) then
|
||||
if not node.buildcommandid then
|
||||
node.buildcommandid = xcode.newid(node.name, "buildcommand", nodePath)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- assign build IDs to buildable files
|
||||
if xcode.getbuildcategory(node) and not node.excludefrombuild and not xcode.mustExcludeFromTarget(node, tr.project) then
|
||||
node.buildid = xcode.newid(node.name, "build", nodePath)
|
||||
|
||||
if xcode.shouldembed(tr, node) then
|
||||
node.embedid = xcode.newid(node.name, "embed", nodepath)
|
||||
end
|
||||
end
|
||||
|
||||
-- remember key files that are needed elsewhere
|
||||
if string.endswith(node.name, "Info.plist") then
|
||||
tr.infoplist = node
|
||||
end
|
||||
end
|
||||
}, true)
|
||||
|
||||
-- Plug in the product node into the Products folder in the tree. The node
|
||||
-- was built in xcode.prepareWorkspace() in xcode_common.lua; it contains IDs
|
||||
-- that are necessary for inter-project dependencies
|
||||
node = tree.insert(tr.products, prj.xcode.projectnode)
|
||||
node.kind = "product"
|
||||
node.path = node.cfg.buildtarget.fullpath
|
||||
node.cfgsection = xcode.newid(node.name, "cfg")
|
||||
node.resstageid = xcode.newid(node.name, "rez")
|
||||
node.sourcesid = xcode.newid(node.name, "src")
|
||||
node.fxstageid = xcode.newid(node.name, "fxs")
|
||||
node.embedstageid = xcode.newid(node.name, "embed")
|
||||
|
||||
return tr
|
||||
end
|
||||
|
||||
function xcode.addDependency(prj, tr, dep, build)
|
||||
-- create a child node for the dependency's xcodeproj
|
||||
local xcpath = xcode.getxcodeprojname(dep)
|
||||
local xcnode = tree.insert(tr.projects, tree.new(path.getname(xcpath)))
|
||||
xcnode.path = xcpath
|
||||
xcnode.project = dep
|
||||
xcnode.productgroupid = xcode.newid(xcnode.name, "prodgrp")
|
||||
xcnode.productproxyid = xcode.newid(xcnode.name, "prodprox")
|
||||
xcnode.targetproxyid = xcode.newid(xcnode.name, "targprox")
|
||||
xcnode.targetdependid = xcode.newid(xcnode.name, "targdep")
|
||||
|
||||
-- create a grandchild node for the dependency's link target
|
||||
local lprj = p.workspace.findproject(prj.workspace, dep.name)
|
||||
local cfg = project.findClosestMatch(lprj, prj.configurations[1])
|
||||
node = tree.insert(xcnode, tree.new(cfg.linktarget.name))
|
||||
node.path = cfg.linktarget.fullpath
|
||||
node.cfg = cfg
|
||||
|
||||
-- don't link the dependency if it's a dependency only
|
||||
if build == false then
|
||||
node.excludefrombuild = true
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
---
|
||||
-- Generate an Xcode .xcodeproj for a Premake project.
|
||||
---
|
||||
|
||||
m.elements.project = function(prj)
|
||||
return {
|
||||
m.header,
|
||||
}
|
||||
end
|
||||
|
||||
function m.generateProject(prj)
|
||||
local tr = xcode.buildprjtree(prj)
|
||||
p.callArray(m.elements.project, prj)
|
||||
xcode.PBXBuildFile(tr)
|
||||
xcode.PBXContainerItemProxy(tr)
|
||||
xcode.PBXFileReference(tr)
|
||||
xcode.PBXFrameworksBuildPhase(tr)
|
||||
xcode.PBXCopyFilesBuildPhaseForEmbedFrameworks(tr)
|
||||
xcode.PBXGroup(tr)
|
||||
xcode.PBXNativeTarget(tr)
|
||||
xcode.PBXAggregateTarget(tr)
|
||||
xcode.PBXProject(tr)
|
||||
xcode.PBXReferenceProxy(tr)
|
||||
xcode.PBXResourcesBuildPhase(tr)
|
||||
xcode.PBXShellScriptBuildPhase(tr)
|
||||
xcode.PBXSourcesBuildPhase(tr)
|
||||
xcode.PBXTargetDependency(tr)
|
||||
xcode.PBXVariantGroup(tr)
|
||||
xcode.XCBuildConfiguration(tr)
|
||||
xcode.XCBuildConfigurationList(tr)
|
||||
xcode.footer(prj)
|
||||
end
|
||||
|
||||
|
||||
|
||||
function m.header(prj)
|
||||
p.w('// !$*UTF8*$!')
|
||||
p.push('{')
|
||||
p.w('archiveVersion = 1;')
|
||||
p.w('classes = {')
|
||||
p.w('};')
|
||||
p.w('objectVersion = 46;')
|
||||
p.push('objects = {')
|
||||
p.w()
|
||||
end
|
||||
|
||||
|
||||
|
||||
function xcode.footer(prj)
|
||||
p.pop('};')
|
||||
p.w('rootObject = 08FB7793FE84155DC02AAC07 /* Project object */;')
|
||||
p.pop('}')
|
||||
end
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue