move CONFIG_vita

This commit is contained in:
olebeck 2025-07-07 15:02:57 +02:00
parent 53e57a0ccb
commit 0efac83ac5
27 changed files with 96 additions and 102 deletions

View File

@ -39,23 +39,17 @@ option(ISLE_BUILD_APP "Build isle application" ON)
option(ISLE_ASAN "Enable Address Sanitizer" OFF)
option(ISLE_UBSAN "Enable Undefined Behavior Sanitizer" OFF)
option(ISLE_WERROR "Treat warnings as errors" OFF)
option(ISLE_DEBUG "Enable imgui debug" ON)
cmake_dependent_option(ISLE_DEBUG "Enable imgui debug" ON "NOT VITA" 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_BUILD_CONFIG "Build CONFIG.EXE application" ON "MSVC OR ISLE_MINIWIN;NOT NINTENDO_3DS;NOT WINDOWS_STORE;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)
cmake_dependent_option(CMAKE_POSITION_INDEPENDENT_CODE "Build with -fPIC" ON "NOT VITA" OFF)
option(ENABLE_CLANG_TIDY "Enable clang-tidy")
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)
if(VITA)
set(BUILD_SHARED_LIBS OFF)
set(ISLE_DEBUG OFF)
set(CMAKE_POSITION_INDEPENDENT_CODE OFF)
endif()
cmake_dependent_option(BUILD_SHARED_LIBS "Build lego1 as a shared library" ON "NOT EMSCRIPTEN;NOT VITA" OFF)
message(STATUS "Isle app: ${ISLE_BUILD_APP}")
message(STATUS "Config app: ${ISLE_BUILD_CONFIG}")
@ -86,14 +80,7 @@ if (DOWNLOAD_DEPENDENCIES)
EXCLUDE_FROM_ALL
)
endif()
block()
if(VITA)
set(SDL_RENDER OFF)
set(SDL_GPU OFF)
endif()
FetchContent_MakeAvailable(SDL3)
endblock()
FetchContent_MakeAvailable(SDL3)
FetchContent_Declare(
iniparser
@ -172,12 +159,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")
set(LIBRARY_TYPE "STATIC")
if(BUILD_SHARED_LIBS)
set(LIBRARY_TYPE "SHARED")
endif()
add_library(lego1 ${LIBRARY_TYPE}
add_library(lego1
LEGO1/main.cpp
)
target_precompile_headers(lego1 PRIVATE "LEGO1/lego1_pch.h")
@ -611,35 +593,7 @@ if (ISLE_BUILD_APP)
endif()
if (ISLE_BUILD_CONFIG)
find_package(Qt6 REQUIRED COMPONENTS Core Widgets)
qt_standard_project_setup()
qt_add_executable(isle-config WIN32
LEGO1/mxdirectx/mxdirectxinfo.cpp
LEGO1/mxdirectx/legodxinfo.cpp
CONFIG/config.cpp
CONFIG/AboutDlg.cpp
CONFIG/MainDlg.cpp
CONFIG/detectdx5.cpp
CONFIG/res/config.rc
CONFIG/res/config.qrc
)
target_link_libraries(isle-config PRIVATE Qt6::Core Qt6::Widgets)
set_property(TARGET isle-config PROPERTY AUTOMOC ON)
set_property(TARGET isle-config PROPERTY AUTORCC ON)
set_property(TARGET isle-config PROPERTY AUTOUIC ON)
set_property(TARGET isle-config PROPERTY AUTOUIC_SEARCH_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/CONFIG/res")
list(APPEND isle_targets isle-config)
target_compile_definitions(isle-config PRIVATE _AFXDLL MXDIRECTX_FOR_CONFIG)
target_include_directories(isle-config PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/LEGO1")
target_include_directories(isle-config PUBLIC "$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/util>")
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 14)
target_link_libraries(isle-config PRIVATE DirectX5::DirectX5)
endif()
target_compile_definitions(isle-config PRIVATE DIRECT3D_VERSION=0x500)
target_link_libraries(isle-config PRIVATE SDL3::SDL3 Isle::iniparser)
if (NOT ISLE_MINIWIN)
target_link_libraries(isle-config PRIVATE ddraw dxguid)
endif()
add_subdirectory(CONFIG/qt)
endif()
if (ISLE_MINIWIN)
@ -734,30 +688,6 @@ if (NOT (NINTENDO_3DS OR WINDOWS_STORE))
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
)
endif()
if (ISLE_BUILD_CONFIG)
if(WIN32)
find_program(WINDEPLOYQT_EXECUTABLE windeployqt)
if(WINDEPLOYQT_EXECUTABLE)
install(CODE "message(STATUS \"Running windeployqt with minimal dependencies\")
execute_process(COMMAND \"${WINDEPLOYQT_EXECUTABLE}\"
\"$<TARGET_FILE:isle-config>\"
--dir QTLibs
--no-compiler-runtime
--no-opengl-sw
--no-system-d3d-compiler
--no-translations
--no-quick-import
)"
)
install(DIRECTORY "Build/QTLibs/" DESTINATION "${CMAKE_INSTALL_BINDIR}")
else()
message(STATUS "windeployqt not found: Qt binaries will not be installed")
endif()
endif()
install(TARGETS isle-config
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
)
endif()
if(EMSCRIPTEN)
install(FILES "$<TARGET_FILE_DIR:isle>/isle.js" "$<TARGET_FILE_DIR:isle>/isle.wasm"
DESTINATION "${CMAKE_INSTALL_BINDIR}"
@ -793,17 +723,17 @@ endif()
if(VITA)
include("${VITASDK}/share/vita.cmake" REQUIRED)
include(CONFIG_vita/CONFIG_vita.cmake)
add_subdirectory(CONFIG/vita)
set(ISLE_PACKAGE_NAME "vita-isle")
set(VITA_APP_NAME "Lego Island")
set(VITA_TITLEID "LEGO00001")
set(VITA_VERSION "01.00")
vita_create_self(isle.self isle UNSAFE)
list(APPEND VPK_FILE_ARGS FILE ${CMAKE_CURRENT_BINARY_DIR}/isle-config.self isle-config.self)
list(APPEND VPK_FILE_ARGS FILE ${CMAKE_CURRENT_BINARY_DIR}/config_plugin.rco config_plugin.rco)
list(APPEND VPK_FILE_ARGS FILE ${ISLE_CONFIG_SELF} isle-config.self)
list(APPEND VPK_FILE_ARGS FILE ${ISLE_CONFIG_RCO} config_plugin.rco)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/icon0.png sce_sys/icon0.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/pic0.png sce_sys/pic0.png)
@ -843,7 +773,6 @@ if(VITA)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/manual/027.png sce_sys/manual/027.png)
list(APPEND VPK_FILE_ARGS FILE packaging/vita/sce_sys/manual/028.png sce_sys/manual/028.png)
vita_create_vpk(isle.vpk ${VITA_TITLEID} isle.self
VERSION ${VITA_VERSION}
NAME ${VITA_APP_NAME}

View File

@ -7,22 +7,25 @@
},
"configurePresets": [
{
"name": "release",
"name": "base",
"generator": "Ninja",
"binaryDir": "${sourceDir}/build/${presetName}",
"hidden": true
},
{
"name": "release",
"inherits": ["base"],
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release"
}
},
{
"name": "debug",
"inherits": ["release"],
"inherits": ["base"],
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"ISLE_BUILD_CONFIG": false
"CMAKE_BUILD_TYPE": "Debug"
}
},
{
"name": "vita",
"inherits": ["release"],
@ -30,13 +33,9 @@
"CMAKE_TOOLCHAIN_FILE": "$env{VITASDK}/share/vita.toolchain.cmake"
}
},
{
"name": "vita-debug",
"inherits": ["debug"],
"cacheVariables": {
"CMAKE_TOOLCHAIN_FILE": "$env{VITASDK}/share/vita.toolchain.cmake"
}
"inherits": ["vita", "debug"]
}
]
}

57
CONFIG/qt/CMakeLists.txt Normal file
View File

@ -0,0 +1,57 @@
cmake_minimum_required(VERSION 3.25...4.0 FATAL_ERROR)
project(isle-config LANGUAGES CXX C VERSION 0.1)
find_package(Qt6 REQUIRED COMPONENTS Core Widgets)
qt_standard_project_setup()
qt_add_executable(isle-config WIN32
../../LEGO1/mxdirectx/mxdirectxinfo.cpp
../../LEGO1/mxdirectx/legodxinfo.cpp
config.cpp
AboutDlg.cpp
MainDlg.cpp
detectdx5.cpp
res/config.rc
res/config.qrc
)
target_link_libraries(isle-config PRIVATE Qt6::Core Qt6::Widgets)
set_property(TARGET isle-config PROPERTY AUTOMOC ON)
set_property(TARGET isle-config PROPERTY AUTORCC ON)
set_property(TARGET isle-config PROPERTY AUTOUIC ON)
set_property(TARGET isle-config PROPERTY AUTOUIC_SEARCH_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/res")
target_compile_definitions(isle-config PRIVATE _AFXDLL MXDIRECTX_FOR_CONFIG)
target_include_directories(isle-config PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../../LEGO1")
target_include_directories(isle-config PUBLIC "$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/util>")
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 14)
target_link_libraries(isle-config PRIVATE DirectX5::DirectX5)
endif()
target_compile_definitions(isle-config PRIVATE DIRECT3D_VERSION=0x500)
target_link_libraries(isle-config PRIVATE SDL3::SDL3 Isle::iniparser)
if (NOT ISLE_MINIWIN)
target_link_libraries(isle-config PRIVATE ddraw dxguid)
endif()
if(WIN32)
find_program(WINDEPLOYQT_EXECUTABLE windeployqt)
if(WINDEPLOYQT_EXECUTABLE)
install(CODE "message(STATUS \"Running windeployqt with minimal dependencies\")
execute_process(COMMAND \"${WINDEPLOYQT_EXECUTABLE}\"
\"$<TARGET_FILE:isle-config>\"
--dir QTLibs
--no-compiler-runtime
--no-opengl-sw
--no-system-d3d-compiler
--no-translations
--no-quick-import
)"
)
install(DIRECTORY "Build/QTLibs/" DESTINATION "${CMAKE_INSTALL_BINDIR}")
else()
message(STATUS "windeployqt not found: Qt binaries will not be installed")
endif()
endif()
install(TARGETS isle-config
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
)
set(isle_targets ${isle_targets};isle-config PARENT_SCOPE)

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 477 B

After

Width:  |  Height:  |  Size: 477 B

View File

Before

Width:  |  Height:  |  Size: 397 B

After

Width:  |  Height:  |  Size: 397 B

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -1,4 +1,9 @@
# config app
cmake_minimum_required(VERSION 3.25...4.0 FATAL_ERROR)
project(isle-config LANGUAGES CXX C VERSION 0.1)
include("${VITASDK}/share/vita.cmake" REQUIRED)
include(FetchContent)
FetchContent_Declare(
ScePaf_External
@ -7,8 +12,12 @@ FetchContent_Declare(
FetchContent_MakeAvailable(ScePaf_External)
add_executable(isle-config
${CMAKE_CURRENT_LIST_DIR}/src/app.cpp
${CMAKE_CURRENT_LIST_DIR}/src/main.cpp
src/app.cpp
src/main.cpp
)
set_target_properties(isle-config PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
)
target_compile_options(isle-config PRIVATE
@ -34,7 +43,7 @@ target_link_libraries(isle-config PRIVATE
block()
set(VITA_MAKE_FSELF_FLAGS "${VITA_MAKE_FSELF_FLAGS} -a 0x2F00000000000101")
vita_create_self(isle-config.self isle-config
CONFIG CONFIG_vita/exports.yml
CONFIG exports.yml
UNSAFE
STRIPPED
REL_OPTIMIZE
@ -42,4 +51,7 @@ block()
endblock()
include(${scepaf_external_SOURCE_DIR}/rco.cmake)
make_rco(${CMAKE_CURRENT_LIST_DIR}/cxml/config_plugin.xml config_plugin.rco)
make_rco(cxml/config_plugin.xml config_plugin.rco)
set(ISLE_CONFIG_SELF ${CMAKE_CURRENT_BINARY_DIR}/isle-config.self PARENT_SCOPE)
set(ISLE_CONFIG_RCO ${CMAKE_CURRENT_BINARY_DIR}/config_plugin.rco PARENT_SCOPE)

View File

@ -7,11 +7,8 @@ void VITA_SetupDefaultConfigOverrides(dictionary* p_dictionary)
{
SDL_Log("Overriding default config for VITA");
iniparser_set(p_dictionary, "isle:diskpath", "ux0:isledecompile/isle/disk");
iniparser_set(p_dictionary, "isle:cdpath", "ux0:isledecompile/isle/cd");
iniparser_set(p_dictionary, "isle:diskpath", "ux0:data/isledecompile/isle/disk");
iniparser_set(p_dictionary, "isle:cdpath", "ux0:data/isledecompile/isle/cd");
iniparser_set(p_dictionary, "isle:UseJoystick", "true");
iniparser_set(p_dictionary, "isle:Draw Cursor", "true");
// Use e_noAnimation/cut transition
// iniparser_set(p_dictionary, "isle:Transition Type", "1");
}

View File

@ -34,7 +34,7 @@ target_compile_definitions(miniwin PRIVATE
list(APPEND GRAPHICS_BACKENDS USE_SOFTWARE_RENDER)
list(APPEND GRAPHICS_BACKENDS USE_SDL_GPU)
if(NOT VITA AND NOT WINDOWS_STORE)
if(NOT (VITA OR WINDOWS_STORE))
find_package(OpenGL)
if(OpenGL_FOUND)
message(STATUS "Found OpenGL: enabling OpenGL 1.x renderer")