summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/genie/src/actions/xcode/xcode14.lua
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/genie/src/actions/xcode/xcode14.lua')
-rw-r--r--3rdparty/genie/src/actions/xcode/xcode14.lua121
1 files changed, 121 insertions, 0 deletions
diff --git a/3rdparty/genie/src/actions/xcode/xcode14.lua b/3rdparty/genie/src/actions/xcode/xcode14.lua
new file mode 100644
index 00000000000..2b17166ad0c
--- /dev/null
+++ b/3rdparty/genie/src/actions/xcode/xcode14.lua
@@ -0,0 +1,121 @@
+--
+-- xcode14.lua
+-- Define the Apple XCode 14.0 action and support functions.
+--
+
+ local premake = premake
+ premake.xcode14 = { }
+
+ local xcode = premake.xcode
+ local xcode10 = premake.xcode10
+ local xcode11 = premake.xcode11
+ local xcode14 = premake.xcode14
+
+ function xcode14.XCBuildConfiguration_Target(tr, target, cfg)
+ local options = xcode11.XCBuildConfiguration_Target(tr, target, cfg)
+ options.CODE_SIGN_IDENTITY = "-"
+
+ local action = premake.action.current()
+ xcode.setdeploymenttarget(cfg, action.xcode, options)
+
+ local iosversion = options.IPHONEOS_DEPLOYMENT_TARGET
+ local macosversion = options.MACOSX_DEPLOYMENT_TARGET
+ local tvosversion = options.TVOS_DEPLOYMENT_TARGET
+
+ if iosversion and not xcode.versionge(iosversion, "11") then
+ error("XCode14 does not support deployment for iOS older than 11")
+ elseif macosversion and not xcode.versionge(macosversion, "10.13") then
+ error("XCode14 does not support deployment for macOS older than 10.13")
+ elseif tvosversion and not xcode.versionge(tvosversion, "11") then
+ error("XCode14 does not support deployment for tvOS older than 11")
+ end
+
+ return options
+ end
+
+ function xcode14.XCBuildConfiguration_Project(tr, prj, cfg)
+ local options = xcode10.XCBuildConfiguration_Project(tr, prj, cfg)
+
+ options.ENABLE_BITCODE = "NO" -- Bitcode is now deprecated.
+
+ -- We need to set the deployment target for both target
+ -- and project. XCode will complain, otherwise.
+ local action = premake.action.current()
+ xcode.setdeploymenttarget(cfg, action.xcode, options)
+
+ return options
+ end
+
+ function xcode14.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 = xcode14.XCBuildConfiguration_Target,
+ onproject = xcode14.XCBuildConfiguration_Project,
+ })
+ xcode.XCBuildConfigurationList(tr)
+ xcode.Footer(tr)
+ end
+ --]]
+
+
+--
+-- xcode14 action
+--
+
+ newaction
+ {
+ trigger = "xcode14",
+ shortname = "Xcode 14",
+ description = "Generate Apple Xcode 14 project files",
+ os = "macosx",
+
+ valid_kinds = { "ConsoleApp", "WindowedApp", "StaticLib", "SharedLib", "Bundle" },
+
+ valid_languages = { "C", "C++" },
+
+ valid_tools = {
+ cc = { "gcc" },
+ },
+
+ valid_platforms = { Native = "Native" },
+ 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", xcode14.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,
+ },
+ }