mirror of
https://github.com/johndoe6345789/SDL3CPlusPlus.git
synced 2026-04-24 13:44:58 +00:00
feat: Add Vita SDK integration with CMake support and update development scripts
This commit is contained in:
@@ -1,4 +1,11 @@
|
||||
cmake_minimum_required(VERSION 3.24)
|
||||
option(ENABLE_VITA "Enable Vita SDK integration" OFF)
|
||||
if(ENABLE_VITA)
|
||||
if(NOT DEFINED ENV{VITASDK})
|
||||
message(FATAL_ERROR "VITASDK environment variable must be set when ENABLE_VITA is ON")
|
||||
endif()
|
||||
set(CMAKE_TOOLCHAIN_FILE "$ENV{VITASDK}/share/vita.toolchain.cmake" CACHE FILEPATH "Vita SDK toolchain" FORCE)
|
||||
endif()
|
||||
if(CMAKE_GENERATOR MATCHES "Ninja")
|
||||
if(DEFINED CMAKE_GENERATOR_PLATFORM)
|
||||
set(CMAKE_GENERATOR_PLATFORM "" CACHE STRING "" FORCE)
|
||||
@@ -50,6 +57,11 @@ if(ENABLE_CLANG_TIDY)
|
||||
message(WARNING "clang-tidy requested but not found on the PATH; disabling lint step")
|
||||
endif()
|
||||
endif()
|
||||
if(ENABLE_VITA)
|
||||
include("$ENV{VITASDK}/share/vita.cmake" REQUIRED)
|
||||
set(VITA_APP_NAME "SDL3App")
|
||||
set(VITA_TITLEID "ABCD00001")
|
||||
endif()
|
||||
option(BUILD_SDL3_APP "Build the SDL3 Vulkan demo" ON)
|
||||
set(SDL_VERSION "SDL3" CACHE STRING "SDL version to use: SDL3 or sdl")
|
||||
set_property(CACHE SDL_VERSION PROPERTY STRINGS "SDL3" "sdl")
|
||||
|
||||
@@ -3,6 +3,18 @@
|
||||
"vendor": {
|
||||
"conan": {}
|
||||
},
|
||||
"configurePresets": [
|
||||
{
|
||||
"name": "vita-release",
|
||||
"inherits": ["conan-release"],
|
||||
"cacheVariables": {
|
||||
"ENABLE_VITA": "ON"
|
||||
},
|
||||
"environment": {
|
||||
"VITASDK": "/home/rewrich/vita-toolchain"
|
||||
}
|
||||
}
|
||||
],
|
||||
"include": [
|
||||
"build/build/Release/generators/CMakePresets.json"
|
||||
]
|
||||
|
||||
10
conanfile.py
10
conanfile.py
@@ -18,6 +18,16 @@ class SDL3CppConan(ConanFile):
|
||||
def layout(self):
|
||||
cmake_layout(self)
|
||||
|
||||
def generate(self):
|
||||
from conan.tools.cmake import CMakeToolchain
|
||||
tc = CMakeToolchain(self)
|
||||
if self.settings.os == "Vita":
|
||||
import os
|
||||
vitasdk = os.environ.get("VITASDK")
|
||||
if vitasdk:
|
||||
tc.toolchain_file = f"{vitasdk}/share/vita.toolchain.cmake"
|
||||
tc.generate()
|
||||
|
||||
def requirements(self):
|
||||
self.requires("lua/5.4.8")
|
||||
self.requires("sdl/3.2.20")
|
||||
|
||||
13
profiles/vita
Normal file
13
profiles/vita
Normal file
@@ -0,0 +1,13 @@
|
||||
[settings]
|
||||
os=Vita
|
||||
arch=armv7
|
||||
compiler=gcc
|
||||
compiler.version=9
|
||||
compiler.libcxx=libstdc++11
|
||||
build_type=Release
|
||||
|
||||
[tool_requires]
|
||||
# Vita SDK isn't in Conan; handle separately
|
||||
|
||||
[conf]
|
||||
tools.cmake.cmaketoolchain:generator=Ninja
|
||||
@@ -180,6 +180,13 @@ def dependencies(args: argparse.Namespace) -> None:
|
||||
|
||||
def configure(args: argparse.Namespace) -> None:
|
||||
"""Configure a CMake project based on the chosen generator and options."""
|
||||
if args.preset:
|
||||
cmake_args = ["cmake", "--preset", args.preset]
|
||||
cmake_extra_args = _strip_leading_double_dash(args.cmake_args)
|
||||
if cmake_extra_args:
|
||||
cmake_args.extend(cmake_extra_args)
|
||||
run_argvs([cmake_args], args.dry_run)
|
||||
return
|
||||
generator = args.generator or DEFAULT_GENERATOR
|
||||
build_dir = _as_build_dir(
|
||||
args.build_dir, GENERATOR_DEFAULT_DIR.get(generator, "build")
|
||||
@@ -499,6 +506,11 @@ def gui(args: argparse.Namespace) -> None:
|
||||
|
||||
layout = QFormLayout(self)
|
||||
|
||||
self.preset_combo = QComboBox()
|
||||
self.preset_combo.addItems(["default", "vita-release"])
|
||||
self.preset_combo.setCurrentText("default")
|
||||
layout.addRow("Preset:", self.preset_combo)
|
||||
|
||||
self.generator_combo = QComboBox()
|
||||
self.generator_combo.addItems(["ninja", "ninja-msvc", "vs"])
|
||||
self.generator_combo.setCurrentText(DEFAULT_GENERATOR)
|
||||
@@ -592,6 +604,7 @@ def gui(args: argparse.Namespace) -> None:
|
||||
self.current_game = None
|
||||
|
||||
# Build settings
|
||||
self.preset = "default"
|
||||
self.generator = DEFAULT_GENERATOR
|
||||
self.build_type = "Release"
|
||||
self.target = "sdl3_app"
|
||||
@@ -1115,15 +1128,17 @@ def gui(args: argparse.Namespace) -> None:
|
||||
def show_settings(self):
|
||||
"""Show build settings dialog"""
|
||||
dialog = BuildSettingsDialog(self)
|
||||
dialog.preset_combo.setCurrentText(self.preset)
|
||||
dialog.generator_combo.setCurrentText(self.generator)
|
||||
dialog.build_type_combo.setCurrentText(self.build_type)
|
||||
dialog.target_combo.setCurrentText(self.target)
|
||||
|
||||
if dialog.exec() == QDialog.DialogCode.Accepted:
|
||||
self.preset = dialog.preset_combo.currentText()
|
||||
self.generator = dialog.generator_combo.currentText()
|
||||
self.build_type = dialog.build_type_combo.currentText()
|
||||
self.target = dialog.target_combo.currentText()
|
||||
self.log(f"Settings updated: Generator={self.generator}, Build Type={self.build_type}, Target={self.target}")
|
||||
self.log(f"Settings updated: Preset={self.preset}, Generator={self.generator}, Build Type={self.build_type}, Target={self.target}")
|
||||
|
||||
def show_new_project_dialog(self):
|
||||
"""Show new project creation dialog"""
|
||||
@@ -1609,20 +1624,28 @@ return {{
|
||||
def run_dependencies(self):
|
||||
"""Run conan dependencies installation"""
|
||||
cmd = [sys.executable, __file__, "dependencies"]
|
||||
if self.preset == "vita-release":
|
||||
cmd.extend(["--conan-install-args", "--profile", "profiles/vita"])
|
||||
self.run_command(cmd)
|
||||
|
||||
def run_configure(self):
|
||||
"""Run CMake configuration"""
|
||||
cmd = [
|
||||
sys.executable, __file__, "configure",
|
||||
"--generator", self.generator,
|
||||
"--build-type", self.build_type
|
||||
]
|
||||
cmd = [sys.executable, __file__, "configure"]
|
||||
if self.preset != "default":
|
||||
cmd.extend(["--preset", self.preset])
|
||||
else:
|
||||
cmd.extend([
|
||||
"--generator", self.generator,
|
||||
"--build-type", self.build_type
|
||||
])
|
||||
self.run_command(cmd)
|
||||
|
||||
def run_build(self):
|
||||
"""Run build command"""
|
||||
build_dir = GENERATOR_DEFAULT_DIR.get(self.generator, DEFAULT_BUILD_DIR)
|
||||
if self.preset != "default":
|
||||
build_dir = f"build-{self.preset.split('-')[0]}" # e.g., build-vita
|
||||
else:
|
||||
build_dir = GENERATOR_DEFAULT_DIR.get(self.generator, DEFAULT_BUILD_DIR)
|
||||
cmd = [
|
||||
sys.executable, __file__, "build",
|
||||
"--build-dir", build_dir,
|
||||
@@ -1662,6 +1685,10 @@ def main() -> int:
|
||||
)
|
||||
deps.set_defaults(func=dependencies)
|
||||
conf = subparsers.add_parser("configure", help="configure CMake project")
|
||||
conf.add_argument(
|
||||
"--preset",
|
||||
help="use a CMake preset instead of manual configuration",
|
||||
)
|
||||
conf.add_argument(
|
||||
"--generator",
|
||||
choices=["vs", "ninja", "ninja-msvc"],
|
||||
|
||||
Reference in New Issue
Block a user