diff options
Diffstat (limited to '3rdparty/genie/src/actions/xcode/xcode10.lua')
-rw-r--r-- | 3rdparty/genie/src/actions/xcode/xcode10.lua | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/3rdparty/genie/src/actions/xcode/xcode10.lua b/3rdparty/genie/src/actions/xcode/xcode10.lua new file mode 100644 index 00000000000..f8ae0b42cac --- /dev/null +++ b/3rdparty/genie/src/actions/xcode/xcode10.lua @@ -0,0 +1,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, + }, + } |