mirror of
https://github.com/isledecomp/isle-portable.git
synced 2026-01-13 03:01:16 +00:00
add psvita to cmake
This commit is contained in:
parent
2e1d961c2c
commit
1ef3166601
3
3rdparty/CMakeLists.txt
vendored
3
3rdparty/CMakeLists.txt
vendored
@ -72,3 +72,6 @@ target_include_directories(imgui PUBLIC ${imgui_SOURCE_DIR})
|
||||
target_link_libraries(imgui PUBLIC SDL3::Headers)
|
||||
target_link_libraries(imgui PRIVATE SDL3::SDL3)
|
||||
set_property(TARGET imgui PROPERTY CXX_CLANG_TIDY "")
|
||||
if(VITA)
|
||||
target_compile_definitions(imgui PRIVATE IMGUI_DISABLE_DEFAULT_SHELL_FUNCTIONS)
|
||||
endif()
|
||||
|
||||
@ -35,7 +35,7 @@ option(ISLE_WERROR "Treat warnings as errors" OFF)
|
||||
option(ISLE_DEBUG "Enable imgui debug" ON)
|
||||
cmake_dependent_option(ISLE_USE_DX5 "Build with internal DirectX 5 SDK" "${NOT_MINGW}" "WIN32;CMAKE_SIZEOF_VOID_P EQUAL 4" OFF)
|
||||
cmake_dependent_option(ISLE_MINIWIN "Use miniwin" ON "NOT ISLE_USE_DX5" OFF)
|
||||
cmake_dependent_option(ISLE_BUILD_CONFIG "Build CONFIG.EXE application" ON "MSVC OR ISLE_MINIWIN" OFF)
|
||||
cmake_dependent_option(ISLE_BUILD_CONFIG "Build CONFIG.EXE application" ON "MSVC OR ISLE_MINIWIN;NOT VITA" OFF)
|
||||
cmake_dependent_option(ISLE_COMPILE_SHADERS "Compile shaders" ON "SDL_SHADERCROSS_BIN;TARGET Python3::Interpreter" OFF)
|
||||
option(CMAKE_POSITION_INDEPENDENT_CODE "Build with -fPIC" ON)
|
||||
option(ENABLE_CLANG_TIDY "Enable clang-tidy")
|
||||
@ -43,6 +43,7 @@ option(DOWNLOAD_DEPENDENCIES "Download dependencies" ON)
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" CACHE PATH "Directory where to put executables and dll")
|
||||
set(ISLE_EMSCRIPTEN_HOST "" CACHE STRING "Host URL for Emscripten streaming (e.g., https://test.com)")
|
||||
cmake_dependent_option(BUILD_SHARED_LIBS "Build lego1 as a shared library" ON "NOT EMSCRIPTEN" OFF)
|
||||
set(LIBRARY_TYPE "SHARED")
|
||||
|
||||
message(STATUS "Isle app: ${ISLE_BUILD_APP}")
|
||||
message(STATUS "Config app: ${ISLE_BUILD_CONFIG}")
|
||||
@ -51,7 +52,42 @@ message(STATUS "Internal miniwin: ${ISLE_MINIWIN}")
|
||||
message(STATUS "Isle debugging: ${ISLE_DEBUG}")
|
||||
message(STATUS "Compile shaders: ${ISLE_COMPILE_SHADERS}")
|
||||
|
||||
if (DOWNLOAD_DEPENDENCIES)
|
||||
macro(fetch_iniparser)
|
||||
FetchContent_Declare(
|
||||
iniparser
|
||||
GIT_REPOSITORY "https://gitlab.com/iniparser/iniparser.git"
|
||||
GIT_TAG "main"
|
||||
EXCLUDE_FROM_ALL
|
||||
)
|
||||
block()
|
||||
set(BUILD_DOCS off)
|
||||
set(BUILD_SHARED_LIBS off)
|
||||
FetchContent_MakeAvailable(iniparser)
|
||||
endblock()
|
||||
endmacro()
|
||||
|
||||
if(VITA)
|
||||
set(LIBRARY_TYPE "STATIC")
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/modules")
|
||||
include(cmake/modules/pvr_psp2.cmake)
|
||||
|
||||
FetchContent_Declare(
|
||||
SDL3
|
||||
GIT_REPOSITORY "https://github.com/libsdl-org/SDL.git"
|
||||
GIT_TAG "main"
|
||||
EXCLUDE_FROM_ALL
|
||||
)
|
||||
block()
|
||||
set(VIDEO_VITA_PVR ON)
|
||||
get_target_property(PVR_INCLUDES GLESv2 INTERFACE_INCLUDE_DIRECTORIES)
|
||||
list(APPEND CMAKE_REQUIRED_INCLUDES ${PVR_INCLUDES})
|
||||
FetchContent_MakeAvailable(SDL3)
|
||||
target_include_directories(SDL3-static PRIVATE ${PVR_INCLUDES})
|
||||
endblock()
|
||||
|
||||
fetch_iniparser()
|
||||
|
||||
elseif (DOWNLOAD_DEPENDENCIES)
|
||||
# FetchContent downloads and configures dependencies
|
||||
message(STATUS "Fetching SDL3 and iniparser. This might take a while...")
|
||||
include(FetchContent)
|
||||
@ -63,17 +99,7 @@ if (DOWNLOAD_DEPENDENCIES)
|
||||
)
|
||||
FetchContent_MakeAvailable(SDL3)
|
||||
|
||||
FetchContent_Declare(
|
||||
iniparser
|
||||
GIT_REPOSITORY "https://gitlab.com/iniparser/iniparser.git"
|
||||
GIT_TAG "main"
|
||||
EXCLUDE_FROM_ALL
|
||||
)
|
||||
block()
|
||||
set(BUILD_DOCS off)
|
||||
set(BUILD_SHARED_LIBS off)
|
||||
FetchContent_MakeAvailable(iniparser)
|
||||
endblock()
|
||||
fetch_iniparser()
|
||||
else()
|
||||
# find_package looks for already-installed system packages.
|
||||
# Configure with `-DCMAKE_PREFIX_PATH="/path/to/package1;/path/to/package2"`
|
||||
@ -141,7 +167,7 @@ target_link_directories(DirectX5::DirectX5 INTERFACE "${CMAKE_SOURCE_DIR}/3rdpar
|
||||
add_library(Vec::Vec INTERFACE IMPORTED)
|
||||
target_include_directories(Vec::Vec INTERFACE "${CMAKE_SOURCE_DIR}/3rdparty/vec")
|
||||
|
||||
add_library(lego1
|
||||
add_library(lego1 ${LIBRARY_TYPE}
|
||||
LEGO1/main.cpp
|
||||
)
|
||||
target_precompile_headers(lego1 PRIVATE "LEGO1/lego1_pch.h")
|
||||
@ -644,6 +670,23 @@ endif()
|
||||
|
||||
set(CPACK_PACKAGE_DIRECTORY "dist")
|
||||
set(CPACK_PACKAGE_FILE_NAME "isle-${PROJECT_VERSION}-${ISLE_PACKAGE_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
|
||||
if(VITA)
|
||||
include("${VITASDK}/share/vita.cmake" REQUIRED)
|
||||
|
||||
target_link_libraries(lego1 PRIVATE GLESv2)
|
||||
|
||||
set(ISLE_PACKAGE_NAME "vita-isle")
|
||||
set(VITA_APP_NAME "Hello World")
|
||||
set(VITA_TITLEID "VSDK00006")
|
||||
set(VITA_VERSION "01.00")
|
||||
|
||||
vita_create_self(isle.self isle)
|
||||
|
||||
vita_create_vpk(isle.vpk ${VITA_TITLEID} isle.self
|
||||
VERSION ${VITA_VERSION}
|
||||
NAME ${VITA_APP_NAME}
|
||||
)
|
||||
endif()
|
||||
if(MSVC)
|
||||
set(CPACK_GENERATOR ZIP)
|
||||
else()
|
||||
|
||||
41
CMakePresets.json
Normal file
41
CMakePresets.json
Normal file
@ -0,0 +1,41 @@
|
||||
{
|
||||
"version": 5,
|
||||
"cmakeMinimumRequired": {
|
||||
"major": 3,
|
||||
"minor": 22,
|
||||
"patch": 0
|
||||
},
|
||||
"configurePresets": [
|
||||
{
|
||||
"name": "release",
|
||||
"generator": "Ninja",
|
||||
"binaryDir": "${sourceDir}/build/${presetName}",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Release"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "debug",
|
||||
"inherits": ["release"],
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Debug"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"name": "vita",
|
||||
"inherits": ["release"],
|
||||
"cacheVariables": {
|
||||
"CMAKE_TOOLCHAIN_FILE": "$env{VITASDK}/share/vita.toolchain.cmake"
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"name": "vita-debug",
|
||||
"inherits": ["debug"],
|
||||
"cacheVariables": {
|
||||
"CMAKE_TOOLCHAIN_FILE": "$env{VITASDK}/share/vita.toolchain.cmake"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
53
cmake/modules/pvr_psp2.cmake
Normal file
53
cmake/modules/pvr_psp2.cmake
Normal file
@ -0,0 +1,53 @@
|
||||
cmake_minimum_required(VERSION 3.21)
|
||||
|
||||
include(FetchContent)
|
||||
|
||||
# headers
|
||||
FetchContent_Declare(
|
||||
PVR_PSP2
|
||||
URL https://github.com/GrapheneCt/PVR_PSP2/archive/refs/tags/v3.9.tar.gz
|
||||
SOURCE_SUBDIR .
|
||||
DOWNLOAD_EXTRACT_TIMESTAMP FALSE
|
||||
)
|
||||
FetchContent_MakeAvailable(PVR_PSP2)
|
||||
set(PVR_PSP2_SOURCE_DIR ${pvr_psp2_SOURCE_DIR})
|
||||
set(PVR_PSP2_BINARY_DIR ${pvr_psp2_BINARY_DIR})
|
||||
|
||||
# stubs
|
||||
file(DOWNLOAD
|
||||
https://github.com/GrapheneCt/PVR_PSP2/releases/download/v3.9/vitasdk_stubs.zip
|
||||
${PVR_PSP2_BINARY_DIR}/vitasdk_stubs.zip
|
||||
EXPECTED_HASH SHA256=7ee2498b58cb97871fcb0e3e134ce1045acf2c22ce4873b1844a391b5da4fe47
|
||||
)
|
||||
|
||||
# suprxs
|
||||
file(DOWNLOAD
|
||||
https://github.com/GrapheneCt/PVR_PSP2/releases/download/v3.9/PSVita_Release.zip
|
||||
${PVR_PSP2_BINARY_DIR}/PSVita_Release.zip
|
||||
EXPECTED_HASH SHA256=ed69be89f21c4894e8009a8c3567c89b1778c8db0beb3c2f4ea134adab4c494f
|
||||
)
|
||||
|
||||
# extract
|
||||
file(MAKE_DIRECTORY ${PVR_PSP2_BINARY_DIR}/extracted)
|
||||
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf ${PVR_PSP2_BINARY_DIR}/vitasdk_stubs.zip
|
||||
WORKING_DIRECTORY ${PVR_PSP2_BINARY_DIR}/extracted)
|
||||
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf ${PVR_PSP2_BINARY_DIR}/PSVita_Release.zip
|
||||
WORKING_DIRECTORY ${PVR_PSP2_BINARY_DIR}/extracted)
|
||||
|
||||
# create library
|
||||
add_library(GLESv2 INTERFACE)
|
||||
target_include_directories(GLESv2 INTERFACE
|
||||
${PVR_PSP2_SOURCE_DIR}/include
|
||||
)
|
||||
target_link_directories(GLESv2 INTERFACE
|
||||
${PVR_PSP2_BINARY_DIR}/extracted/libGLESv2_stub_vitasdk.a/
|
||||
${PVR_PSP2_BINARY_DIR}/extracted/libgpu_es4_ext_stub_vitasdk.a/
|
||||
${PVR_PSP2_BINARY_DIR}/extracted/libIMGEGL_stub_vitasdk.a/
|
||||
)
|
||||
target_link_libraries(GLESv2 INTERFACE
|
||||
libGLESv2_stub_weak
|
||||
libgpu_es4_ext_stub_weak
|
||||
libIMGEGL_stub_weak
|
||||
)
|
||||
@ -38,12 +38,16 @@ else()
|
||||
message(STATUS "🧩 OpenGL 1.x support not enabled — needs OpenGL and GLEW")
|
||||
endif()
|
||||
|
||||
find_library(OPENGL_ES2_LIBRARY NAMES GLESv2)
|
||||
if(TARGET GLESv2)
|
||||
set(OPENGL_ES2_LIBRARY GLESv2)
|
||||
else()
|
||||
find_library(OPENGL_ES2_LIBRARY NAMES GLESv2)
|
||||
endif()
|
||||
if(OPENGL_ES2_LIBRARY)
|
||||
message(STATUS "Found OpenGL: enabling OpenGL ES 2.x renderer")
|
||||
target_sources(miniwin PRIVATE src/d3drm/backends/opengles2/renderer.cpp)
|
||||
target_compile_definitions(miniwin PRIVATE USE_OPENGLES2)
|
||||
target_link_libraries(miniwin PRIVATE OpenGL::GL)
|
||||
target_link_libraries(miniwin PRIVATE ${OPENGL_ES2_LIBRARY})
|
||||
else()
|
||||
message(STATUS "🧩 OpenGL ES 2.x support not enabled")
|
||||
endif()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user