1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
--
-- xcode10.lua
-- Define the Apple XCode 10.0 action and support functions.
--
local premake = premake
premake.xcode10 = { }
local xcode = premake.xcode
local xcode8 = premake.xcode8
local xcode9 = premake.xcode9
local xcode10 = premake.xcode10
function xcode10.XCBuildConfiguration_Project(tr, prj, cfg)
local options = xcode9.XCBuildConfiguration_Project(tr, prj, cfg)
return table.merge(options, {
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = "YES",
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = "YES",
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = "YES",
CLANG_WARN_COMMA = "YES",
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = "YES",
CLANG_WARN_OBJC_LITERAL_CONVERSION = "YES",
CLANG_WARN_RANGE_LOOP_ANALYSIS = "YES",
CLANG_WARN_STRICT_PROTOTYPES = "YES",
})
end
function xcode10.XCBuildConfiguration_Target(tr, target, cfg)
local options = xcode8.XCBuildConfiguration_Target(tr, target, cfg)
if not cfg.flags.ObjcARC then
options.CLANG_ENABLE_OBJC_WEAK = "YES"
end
return options
end
function xcode10.project(prj)
local tr = xcode.buildprjtree(prj)
xcode.Header(tr, 48)
xcode.PBXBuildFile(tr)
xcode.PBXContainerItemProxy(tr)
xcode.PBXFileReference(tr,prj)
xcode.PBXFrameworksBuildPhase(tr)
xcode.PBXGroup(tr)
xcode.PBXNativeTarget(tr)
xcode.PBXProject(tr, "8.0")
xcode.PBXReferenceProxy(tr)
xcode.PBXResourcesBuildPhase(tr)
xcode.PBXShellScriptBuildPhase(tr)
xcode.PBXCopyFilesBuildPhase(tr)
xcode.PBXSourcesBuildPhase(tr,prj)
xcode.PBXVariantGroup(tr)
xcode.PBXTargetDependency(tr)
xcode.XCBuildConfiguration(tr, prj, {
ontarget = xcode10.XCBuildConfiguration_Target,
onproject = xcode10.XCBuildConfiguration_Project,
})
xcode.XCBuildConfigurationList(tr)
xcode.Footer(tr)
end
--
-- xcode10 action
--
newaction
{
trigger = "xcode10",
shortname = "Xcode 10",
description = "Generate Apple Xcode 10 project files (experimental)",
os = "macosx",
valid_kinds = { "ConsoleApp", "WindowedApp", "StaticLib", "SharedLib", "Bundle" },
valid_languages = { "C", "C++" },
valid_tools = {
cc = { "gcc" },
},
valid_platforms = {
Native = "Native",
x32 = "Native 32-bit",
x64 = "Native 64-bit",
Universal = "Universal",
},
default_platform = "Native",
onsolution = function(sln)
premake.generate(sln, "%%.xcworkspace/contents.xcworkspacedata", xcode.workspace_generate)
premake.generate(sln, "%%.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings", xcode.workspace_settings)
premake.generate(sln, "%%.xcworkspace/xcshareddata/xcschemes/-ALL-.xcscheme", xcode.workspace_scheme)
end,
onproject = function(prj)
premake.generate(prj, "%%.xcodeproj/project.pbxproj", xcode10.project)
xcode.generate_schemes(prj, "%%.xcodeproj/xcshareddata/xcschemes")
end,
oncleanproject = function(prj)
premake.clean.directory(prj, "%%.xcodeproj")
premake.clean.directory(prj, "%%.xcworkspace")
end,
oncheckproject = xcode.checkproject,
xcode = {
iOSTargetPlatformVersion = nil,
macOSTargetPlatformVersion = nil,
tvOSTargetPlatformVersion = nil,
},
}
|