mirror of
https://github.com/isledecomp/isle-portable.git
synced 2026-01-21 06:31:17 +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 PUBLIC SDL3::Headers)
|
||||||
target_link_libraries(imgui PRIVATE SDL3::SDL3)
|
target_link_libraries(imgui PRIVATE SDL3::SDL3)
|
||||||
set_property(TARGET imgui PROPERTY CXX_CLANG_TIDY "")
|
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)
|
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_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_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)
|
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(CMAKE_POSITION_INDEPENDENT_CODE "Build with -fPIC" ON)
|
||||||
option(ENABLE_CLANG_TIDY "Enable clang-tidy")
|
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(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)")
|
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)
|
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 "Isle app: ${ISLE_BUILD_APP}")
|
||||||
message(STATUS "Config app: ${ISLE_BUILD_CONFIG}")
|
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 "Isle debugging: ${ISLE_DEBUG}")
|
||||||
message(STATUS "Compile shaders: ${ISLE_COMPILE_SHADERS}")
|
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
|
# FetchContent downloads and configures dependencies
|
||||||
message(STATUS "Fetching SDL3 and iniparser. This might take a while...")
|
message(STATUS "Fetching SDL3 and iniparser. This might take a while...")
|
||||||
include(FetchContent)
|
include(FetchContent)
|
||||||
@ -63,17 +99,7 @@ if (DOWNLOAD_DEPENDENCIES)
|
|||||||
)
|
)
|
||||||
FetchContent_MakeAvailable(SDL3)
|
FetchContent_MakeAvailable(SDL3)
|
||||||
|
|
||||||
FetchContent_Declare(
|
fetch_iniparser()
|
||||||
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()
|
|
||||||
else()
|
else()
|
||||||
# find_package looks for already-installed system packages.
|
# find_package looks for already-installed system packages.
|
||||||
# Configure with `-DCMAKE_PREFIX_PATH="/path/to/package1;/path/to/package2"`
|
# 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)
|
add_library(Vec::Vec INTERFACE IMPORTED)
|
||||||
target_include_directories(Vec::Vec INTERFACE "${CMAKE_SOURCE_DIR}/3rdparty/vec")
|
target_include_directories(Vec::Vec INTERFACE "${CMAKE_SOURCE_DIR}/3rdparty/vec")
|
||||||
|
|
||||||
add_library(lego1
|
add_library(lego1 ${LIBRARY_TYPE}
|
||||||
LEGO1/main.cpp
|
LEGO1/main.cpp
|
||||||
)
|
)
|
||||||
target_precompile_headers(lego1 PRIVATE "LEGO1/lego1_pch.h")
|
target_precompile_headers(lego1 PRIVATE "LEGO1/lego1_pch.h")
|
||||||
@ -644,6 +670,23 @@ endif()
|
|||||||
|
|
||||||
set(CPACK_PACKAGE_DIRECTORY "dist")
|
set(CPACK_PACKAGE_DIRECTORY "dist")
|
||||||
set(CPACK_PACKAGE_FILE_NAME "isle-${PROJECT_VERSION}-${ISLE_PACKAGE_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
|
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)
|
if(MSVC)
|
||||||
set(CPACK_GENERATOR ZIP)
|
set(CPACK_GENERATOR ZIP)
|
||||||
else()
|
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")
|
message(STATUS "🧩 OpenGL 1.x support not enabled — needs OpenGL and GLEW")
|
||||||
endif()
|
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)
|
if(OPENGL_ES2_LIBRARY)
|
||||||
message(STATUS "Found OpenGL: enabling OpenGL ES 2.x renderer")
|
message(STATUS "Found OpenGL: enabling OpenGL ES 2.x renderer")
|
||||||
target_sources(miniwin PRIVATE src/d3drm/backends/opengles2/renderer.cpp)
|
target_sources(miniwin PRIVATE src/d3drm/backends/opengles2/renderer.cpp)
|
||||||
target_compile_definitions(miniwin PRIVATE USE_OPENGLES2)
|
target_compile_definitions(miniwin PRIVATE USE_OPENGLES2)
|
||||||
target_link_libraries(miniwin PRIVATE OpenGL::GL)
|
target_link_libraries(miniwin PRIVATE ${OPENGL_ES2_LIBRARY})
|
||||||
else()
|
else()
|
||||||
message(STATUS "🧩 OpenGL ES 2.x support not enabled")
|
message(STATUS "🧩 OpenGL ES 2.x support not enabled")
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user