Merge pull request #5 from GayPizzaSpecifications/use-sdl-main

use main.m and SDL_main functionality
This commit is contained in:
Alex Zenla 2024-09-03 05:04:35 -04:00 committed by GitHub
commit 788cd28994
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 29 additions and 16 deletions

View File

@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.24)
set(CMAKE_OSX_DEPLOYMENT_TARGET "13.6" CACHE STRING "Minimum MacOS version" FORCE)
set(CMAKE_Swift_LANGUAGE_VERSION 5)
project(voxelotl LANGUAGES C Swift VERSION "0.1.0")
project(voxelotl LANGUAGES C OBJC Swift VERSION "0.1.0")
find_library(SDL3 SDL3 REQUIRED PATHS "${CMAKE_SOURCE_DIR}/Frameworks" NO_DEFAULT_PATH)

View File

@ -66,7 +66,10 @@ add_executable(Voxelotl MACOSX_BUNDLE
GameDelegate.swift
Application.swift
main.swift)
# Entry point
Program.swift
main.m
)
set_source_files_properties(
shader.metal PROPERTIES
@ -103,7 +106,7 @@ set_source_files_properties(test.png PROPERTIES MACOSX_PACKAGE_LOCATION Resource
#TODO: should use TREE mode as documented in https://cmake.org/cmake/help/latest/command/source_group.html
source_group("Resources" FILES Assets.xcassets test.png)
source_group("Source Files" REGULAR_EXPRESSION "\\.(swift|metal)$")
source_group("Source Files" REGULAR_EXPRESSION "\\.(swift|metal|m)$")
source_group("Source Files\\Common" REGULAR_EXPRESSION "Common/")
source_group("Source Files\\Random" REGULAR_EXPRESSION "Random/")
source_group("Source Files\\Noise" REGULAR_EXPRESSION "Noise/")

View File

@ -0,0 +1,17 @@
import Foundation
@objc public class Program: NSObject {
@objc public static func run() -> Int32 {
Thread.current.qualityOfService = .userInteractive
let app = Application(
delegate: Game(),
configuration: ApplicationConfiguration(
frame: Size(1280, 720),
title: "Voxelotl Demo",
flags: [ .resizable, .highDPI ],
vsyncMode: .on(interval: 1)))
return app.run()
}
}

6
Sources/Voxelotl/main.m Normal file
View File

@ -0,0 +1,6 @@
#include <SDL3/SDL_main.h>
#include <Voxelotl-Swift.h>
int main(int argc, char** argv) {
return [Program run];
}

View File

@ -1,13 +0,0 @@
import Foundation
Thread.current.qualityOfService = .userInteractive
let app = Application(
delegate: Game(),
configuration: ApplicationConfiguration(
frame: Size(1280, 720),
title: "Voxelotl Demo",
flags: [ .resizable, .highDPI ],
vsyncMode: .on(interval: 1)))
exit(app.run())