Browse Source

CMake: Split out platform libraries

pull/3826/head
Gleb Mazovetskiy 4 years ago
parent
commit
cacf55bb34
  1. 89
      CMake/Definitions.cmake
  2. 15
      CMake/Dependencies.cmake
  3. 83
      CMake/functions/devilutionx_library.cmake
  4. 10
      CMake/platforms/n3ds.cmake
  5. 3
      CMake/platforms/switch.cmake
  6. 12
      CMake/platforms/vita.cmake
  7. 233
      Source/CMakeLists.txt
  8. 30
      Source/platform/ctr/CMakeLists.txt
  9. 24
      Source/platform/switch/CMakeLists.txt
  10. 26
      Source/platform/vita/CMakeLists.txt

89
CMake/Definitions.cmake

@ -0,0 +1,89 @@
# Defines without value
foreach(
def_name
NOSOUND
NONET
PREFILL_PLAYER_NAME
DISABLE_TCP
DISABLE_ZERO_TIER
DISABLE_STREAMING_MUSIC
DISABLE_STREAMING_SOUNDS
BUILD_TESTING
GPERF
GPERF_HEAP_MAIN
GPERF_HEAP_FIRST_GAME_ITERATION
STREAM_ALL_AUDIO
PACKET_ENCRYPTION
VIRTUAL_GAMEPAD
)
if(${def_name})
list(APPEND DEVILUTIONX_DEFINITIONS ${def_name})
endif()
endforeach(def_name)
# Defines with value
foreach(
def_name
DEFAULT_WIDTH
DEFAULT_HEIGHT
DEFAULT_AUDIO_SAMPLE_RATE
DEFAULT_AUDIO_CHANNELS
DEFAULT_AUDIO_BUFFER_SIZE
DEFAULT_AUDIO_RESAMPLING_QUALITY
SDL1_VIDEO_MODE_BPP
SDL1_VIDEO_MODE_FLAGS
SDL1_VIDEO_MODE_SVID_FLAGS
SDL1_FORCE_SVID_VIDEO_MODE
SDL1_FORCE_DIRECT_RENDER
HAS_KBCTRL
KBCTRL_BUTTON_DPAD_LEFT
KBCTRL_BUTTON_DPAD_RIGHT
KBCTRL_BUTTON_DPAD_UP
KBCTRL_BUTTON_DPAD_DOWN
KBCTRL_BUTTON_B
KBCTRL_BUTTON_A
KBCTRL_BUTTON_Y
KBCTRL_BUTTON_X
KBCTRL_BUTTON_LEFTSTICK
KBCTRL_BUTTON_RIGHTSTICK
KBCTRL_BUTTON_RIGHTSHOULDER
KBCTRL_BUTTON_LEFTSHOULDER
KBCTRL_BUTTON_TRIGGERLEFT
KBCTRL_BUTTON_TRIGGERRIGHT
KBCTRL_BUTTON_START
KBCTRL_BUTTON_BACK
KBCTRL_IGNORE_1
JOY_AXIS_LEFTX
JOY_AXIS_LEFTY
JOY_AXIS_RIGHTX
JOY_AXIS_RIGHTY
JOY_HAT_DPAD_UP_HAT
JOY_HAT_DPAD_UP
JOY_HAT_DPAD_DOWN_HAT
JOY_HAT_DPAD_DOWN
JOY_HAT_DPAD_LEFT_HAT
JOY_HAT_DPAD_LEFT
JOY_HAT_DPAD_RIGHT_HAT
JOY_HAT_DPAD_RIGHT
JOY_BUTTON_DPAD_LEFT
JOY_BUTTON_DPAD_RIGHT
JOY_BUTTON_DPAD_UP
JOY_BUTTON_DPAD_DOWN
JOY_BUTTON_B
JOY_BUTTON_A
JOY_BUTTON_Y
JOY_BUTTON_X
JOY_BUTTON_LEFTSTICK
JOY_BUTTON_RIGHTSTICK
JOY_BUTTON_RIGHTSHOULDER
JOY_BUTTON_LEFTSHOULDER
JOY_BUTTON_TRIGGERLEFT
JOY_BUTTON_TRIGGERRIGHT
JOY_BUTTON_START
JOY_BUTTON_BACK
REMAP_KEYBOARD_KEYS
)
if(DEFINED ${def_name})
list(APPEND DEVILUTIONX_DEFINITIONS ${def_name}=${${def_name}})
endif()
endforeach(def_name)

15
CMake/Dependencies.cmake

@ -41,6 +41,14 @@ else()
endif()
endif()
add_library(DevilutionX::SDL INTERFACE IMPORTED GLOBAL)
if(USE_SDL1)
target_link_libraries(DevilutionX::SDL INTERFACE ${SDL_LIBRARY})
target_compile_definitions(DevilutionX::SDL INTERFACE USE_SDL1)
else()
target_link_libraries(DevilutionX::SDL INTERFACE ${SDL2_MAIN} SDL2::SDL2)
endif()
macro(_find_SDL_image QUIET_OR_REQUIRED)
if(USE_SDL1)
find_package(SDL_image ${QUIET_OR_REQUIRED})
@ -77,6 +85,13 @@ else()
endif()
endif()
add_library(DevilutionX::SDL_image INTERFACE IMPORTED GLOBAL)
if(USE_SDL1)
target_link_libraries(DevilutionX::SDL_image INTERFACE SDL_image)
else()
target_link_libraries(DevilutionX::SDL_image INTERFACE SDL2::SDL2_image)
endif()
if(NOT NOSOUND)
dependency_options("SDL_audiolib" DEVILUTIONX_SYSTEM_SDL_AUDIOLIB OFF DEVILUTIONX_STATIC_SDL_AUDIOLIB)
if(DEVILUTIONX_SYSTEM_SDL_AUDIOLIB)

83
CMake/functions/devilutionx_library.cmake

@ -0,0 +1,83 @@
include(functions/genex)
# This function is equivalent to `add_library` but applies DevilutionX-specific
# compilation flags to it.
function(add_devilutionx_library NAME)
add_library(${NAME} ${ARGN})
target_include_directories(${NAME} PUBLIC ${DevilutionX_SOURCE_DIR}/Source)
target_compile_definitions(${NAME} PUBLIC ${DEVILUTIONX_PLATFORM_COMPILE_DEFINITIONS})
target_compile_options(${NAME} PUBLIC ${DEVILUTIONX_PLATFORM_COMPILE_OPTIONS})
genex_for_option(DEBUG)
target_compile_definitions(${NAME} PUBLIC "$<${DEBUG_GENEX}:_DEBUG>")
if(NOT NONET AND NOT DISABLE_TCP)
target_compile_definitions(${NAME} PUBLIC ASIO_STANDALONE)
endif()
genex_for_option(UBSAN)
target_compile_options(${NAME} PUBLIC $<${UBSAN_GENEX}:-fsanitize=undefined>)
target_link_libraries(${NAME} PUBLIC $<${UBSAN_GENEX}:-fsanitize=undefined>)
if(TSAN)
target_compile_options(${NAME} PUBLIC -fsanitize=thread)
target_link_libraries(${NAME} PUBLIC -fsanitize=thread)
else()
genex_for_option(ASAN)
target_compile_options(${NAME} PUBLIC "$<${ASAN_GENEX}:-fsanitize=address;-fsanitize-recover=address>")
target_link_libraries(${NAME} PUBLIC "$<${ASAN_GENEX}:-fsanitize=address;-fsanitize-recover=address>")
endif()
if(GPERF)
target_link_libraries(${NAME} PUBLIC ${GPERFTOOLS_LIBRARIES})
endif()
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
genex_for_option(DEVILUTIONX_STATIC_CXX_STDLIB)
target_link_libraries(${NAME} PUBLIC $<${DEVILUTIONX_STATIC_CXX_STDLIB_GENEX}:-static-libgcc;-static-libstdc++>)
endif()
if(NOT CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
# Note: For Valgrind support.
genex_for_option(DEBUG)
target_compile_options(${NAME} PUBLIC $<${DEBUG_GENEX}:-fno-omit-frame-pointer>)
# Warnings for devilutionX
target_compile_options(${NAME} PUBLIC -Wall -Wextra -Wno-unused-parameter)
# For ARM and other default unsigned char platforms
target_compile_options(${NAME} PUBLIC -fsigned-char)
endif()
if(NOT WIN32 AND NOT APPLE AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL FreeBSD)
# Enable POSIX extensions such as `readlink` and `ftruncate`.
add_definitions(-D_POSIX_C_SOURCE=200809L)
endif()
if(BUILD_TESTING)
if(ENABLE_CODECOVERAGE)
if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
message(WARNING "Codecoverage not supported with MSVC")
else()
target_compile_options(${NAME} PUBLIC --coverage)
target_link_options(${NAME} PUBLIC --coverage)
endif()
endif()
target_compile_definitions(${NAME} PRIVATE _DVL_EXPORTING)
endif()
target_compile_definitions(${NAME} PUBLIC ${DEVILUTIONX_DEFINITIONS})
endfunction()
# Same as add_devilutionx_library(${NAME} OBJECT) with an additional
# workaround for https://gitlab.kitware.com/cmake/cmake/-/issues/18090,
# allowing this object library to be "linked" to other object libraries.
function(add_devilutionx_object_library NAME)
add_devilutionx_library(${NAME} OBJECT ${ARGN})
# See https://gitlab.kitware.com/cmake/cmake/-/issues/18090
target_sources(${NAME} INTERFACE $<TARGET_OBJECTS:${NAME}>)
endfunction()

10
CMake/platforms/n3ds.cmake

@ -16,13 +16,9 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/ctr")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/ctr/modules")
find_package(CITRO3D REQUIRED)
list(APPEND DEVILUTIONX_PLATFORM_LINK_LIBRARIES
3ds::citro3d
3ds::ctrulib
)
list(APPEND DEVILUTIONX_PLATFORM_COMPILE_DEFINITIONS
__3DS__
)
list(APPEND DEVILUTIONX_PLATFORM_SUBDIRECTORIES platform/ctr)
list(APPEND DEVILUTIONX_PLATFORM_LINK_LIBRARIES libdevilutionx_ctr)
list(APPEND DEVILUTIONX_PLATFORM_COMPILE_DEFINITIONS __3DS__)
#SDL video mode parameters
set(SDL1_VIDEO_MODE_FLAGS SDL_DOUBLEBUF|SDL_HWSURFACE)

3
CMake/platforms/switch.cmake

@ -12,3 +12,6 @@ set(JOY_BUTTON_DPAD_LEFT 16)
set(JOY_BUTTON_DPAD_UP 17)
set(JOY_BUTTON_DPAD_RIGHT 18)
set(JOY_BUTTON_DPAD_DOWN 19)
list(APPEND DEVILUTIONX_PLATFORM_SUBDIRECTORIES platform/switch)
list(APPEND DEVILUTIONX_PLATFORM_LINK_LIBRARIES libdevilutionx_switch)

12
CMake/platforms/vita.cmake

@ -5,12 +5,6 @@ set(BUILD_TESTING OFF)
set(DISABLE_ZERO_TIER ON)
set(PREFILL_PLAYER_NAME ON)
list(APPEND DEVILUTIONX_PLATFORM_LINK_LIBRARIES
ScePower_stub
SceAppUtil_stub
SceNet_stub
SceNetCtl_stub
)
list(APPEND DEVILUTIONX_PLATFORM_COMPILE_DEFINITIONS
VITA
)
list(APPEND DEVILUTIONX_PLATFORM_SUBDIRECTORIES platform/vita)
list(APPEND DEVILUTIONX_PLATFORM_LINK_LIBRARIES libdevilutionx_vita)
list(APPEND DEVILUTIONX_PLATFORM_COMPILE_DEFINITIONS VITA)

233
Source/CMakeLists.txt

@ -1,3 +1,5 @@
include(Definitions)
include(functions/devilutionx_library)
include(functions/genex)
set(libdevilutionx_SRCS
@ -183,61 +185,14 @@ if(VIRTUAL_GAMEPAD)
controls/touch/renderers.cpp)
endif()
if(NINTENDO_SWITCH)
list(APPEND libdevilutionx_SRCS
platform/switch/network.cpp
platform/switch/keyboard.cpp
platform/switch/docking.cpp
platform/switch/asio/pause.c
platform/switch/asio/net/if.c
platform/switch/asio/sys/signal.c)
if(PACKET_ENCRYPTION)
list(APPEND libdevilutionx_SRCS
platform/switch/random.cpp)
endif()
endif()
if(VITA)
list(APPEND libdevilutionx_SRCS
platform/vita/network.cpp
platform/vita/keyboard.cpp
platform/vita/touch.cpp)
if(PACKET_ENCRYPTION)
list(APPEND libdevilutionx_SRCS
platform/vita/random.cpp)
endif()
endif()
if(NINTENDO_3DS)
list(APPEND libdevilutionx_SRCS
platform/ctr/system.cpp
platform/ctr/keyboard.cpp
platform/ctr/display.cpp
platform/ctr/messagebox.cpp
platform/ctr/sockets.cpp
platform/ctr/locale.cpp
platform/ctr/asio/net/if.c
platform/ctr/asio/sys/socket.c
platform/ctr/asio/sys/uio.c)
if(PACKET_ENCRYPTION)
list(APPEND libdevilutionx_SRCS
platform/ctr/random.cpp)
endif()
endif()
if(DISCORD_INTEGRATION)
list(APPEND libdevilutionx_SRCS
discord/discord.cpp
)
endif()
add_library(libdevilutionx OBJECT ${libdevilutionx_SRCS})
target_include_directories(libdevilutionx PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
add_devilutionx_library(libdevilutionx OBJECT ${libdevilutionx_SRCS})
target_include_directories(libdevilutionx PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
# Use file GENERATE instead of configure_file because configure_file
# does not support generator expressions.
@ -266,14 +221,17 @@ if(GPERF)
find_package(Gperftools REQUIRED)
endif()
target_link_libraries(libdevilutionx PUBLIC Threads::Threads)
target_link_libraries(libdevilutionx PUBLIC
Threads::Threads
DevilutionX::SDL
DevilutionX::SDL_image
fmt::fmt
PKWare
libmpq
libsmackerdec
simpleini
hoehrmann_utf8)
hoehrmann_utf8
)
if(NOT NONET)
if(NOT DISABLE_TCP)
@ -284,40 +242,6 @@ if(NOT NONET)
endif()
endif()
target_link_libraries(libdevilutionx PUBLIC fmt::fmt)
genex_for_option(DEBUG)
target_compile_definitions(libdevilutionx PUBLIC "$<${DEBUG_GENEX}:_DEBUG>")
if(NOT NONET AND NOT DISABLE_TCP)
target_compile_definitions(libdevilutionx PUBLIC ASIO_STANDALONE)
endif()
genex_for_option(UBSAN)
target_compile_options(libdevilutionx PUBLIC $<${UBSAN_GENEX}:-fsanitize=undefined>)
target_link_libraries(libdevilutionx PUBLIC $<${UBSAN_GENEX}:-fsanitize=undefined>)
if(TSAN)
target_compile_options(libdevilutionx PUBLIC -fsanitize=thread)
target_link_libraries(libdevilutionx PUBLIC -fsanitize=thread)
else()
genex_for_option(ASAN)
target_compile_options(libdevilutionx PUBLIC "$<${ASAN_GENEX}:-fsanitize=address;-fsanitize-recover=address>")
target_link_libraries(libdevilutionx PUBLIC "$<${ASAN_GENEX}:-fsanitize=address;-fsanitize-recover=address>")
endif()
if(USE_SDL1)
target_link_libraries(libdevilutionx PUBLIC
${SDL_LIBRARY}
SDL_image)
target_compile_definitions(libdevilutionx PUBLIC USE_SDL1)
else()
target_link_libraries(libdevilutionx PUBLIC
${SDL2_MAIN}
SDL2::SDL2
SDL2::SDL2_image)
endif()
if(NOT NOSOUND)
target_link_libraries(libdevilutionx PUBLIC SDL_audiolib)
endif()
@ -330,137 +254,8 @@ if(NOT NONET AND NOT DISABLE_ZERO_TIER)
endif()
endif()
target_link_libraries(libdevilutionx PUBLIC ${DEVILUTIONX_PLATFORM_LINK_LIBRARIES})
target_compile_definitions(libdevilutionx PUBLIC ${DEVILUTIONX_PLATFORM_COMPILE_DEFINITIONS})
target_compile_options(libdevilutionx PUBLIC ${DEVILUTIONX_PLATFORM_COMPILE_OPTIONS})
if(GPERF)
target_link_libraries(libdevilutionx PUBLIC ${GPERFTOOLS_LIBRARIES})
endif()
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
genex_for_option(DEVILUTIONX_STATIC_CXX_STDLIB)
target_link_libraries(libdevilutionx PUBLIC $<${DEVILUTIONX_STATIC_CXX_STDLIB_GENEX}:-static-libgcc;-static-libstdc++>)
endif()
if(NOT CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
# Note: For Valgrind support.
genex_for_option(DEBUG)
target_compile_options(libdevilutionx PUBLIC $<${DEBUG_GENEX}:-fno-omit-frame-pointer>)
# Warnings for devilutionX
target_compile_options(libdevilutionx PUBLIC -Wall -Wextra -Wno-unused-parameter)
# For ARM and other default unsigned char platforms
target_compile_options(libdevilutionx PUBLIC -fsigned-char)
endif()
if(NOT WIN32 AND NOT APPLE AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL FreeBSD)
# Enable POSIX extensions such as `readlink` and `ftruncate`.
add_definitions(-D_POSIX_C_SOURCE=200809L)
endif()
if(BUILD_TESTING)
if(ENABLE_CODECOVERAGE)
if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
message(WARNING "Codecoverage not supported with MSVC")
else()
target_compile_options(libdevilutionx PUBLIC --coverage)
target_link_options(libdevilutionx PUBLIC --coverage)
endif()
endif()
target_compile_definitions(libdevilutionx PRIVATE _DVL_EXPORTING)
endif()
# Defines without value
foreach(
def_name
NOSOUND
NONET
PREFILL_PLAYER_NAME
DISABLE_TCP
DISABLE_ZERO_TIER
DISABLE_STREAMING_MUSIC
DISABLE_STREAMING_SOUNDS
BUILD_TESTING
GPERF
GPERF_HEAP_MAIN
GPERF_HEAP_FIRST_GAME_ITERATION
STREAM_ALL_AUDIO
PACKET_ENCRYPTION
VIRTUAL_GAMEPAD
)
if(${def_name})
list(APPEND def_list ${def_name})
endif()
endforeach(def_name)
foreach(path ${DEVILUTIONX_PLATFORM_SUBDIRECTORIES})
add_subdirectory(${path})
endforeach()
# Defines with value
foreach(
def_name
DEFAULT_WIDTH
DEFAULT_HEIGHT
DEFAULT_AUDIO_SAMPLE_RATE
DEFAULT_AUDIO_CHANNELS
DEFAULT_AUDIO_BUFFER_SIZE
DEFAULT_AUDIO_RESAMPLING_QUALITY
SDL1_VIDEO_MODE_BPP
SDL1_VIDEO_MODE_FLAGS
SDL1_VIDEO_MODE_SVID_FLAGS
SDL1_FORCE_SVID_VIDEO_MODE
SDL1_FORCE_DIRECT_RENDER
HAS_KBCTRL
KBCTRL_BUTTON_DPAD_LEFT
KBCTRL_BUTTON_DPAD_RIGHT
KBCTRL_BUTTON_DPAD_UP
KBCTRL_BUTTON_DPAD_DOWN
KBCTRL_BUTTON_B
KBCTRL_BUTTON_A
KBCTRL_BUTTON_Y
KBCTRL_BUTTON_X
KBCTRL_BUTTON_LEFTSTICK
KBCTRL_BUTTON_RIGHTSTICK
KBCTRL_BUTTON_RIGHTSHOULDER
KBCTRL_BUTTON_LEFTSHOULDER
KBCTRL_BUTTON_TRIGGERLEFT
KBCTRL_BUTTON_TRIGGERRIGHT
KBCTRL_BUTTON_START
KBCTRL_BUTTON_BACK
KBCTRL_IGNORE_1
JOY_AXIS_LEFTX
JOY_AXIS_LEFTY
JOY_AXIS_RIGHTX
JOY_AXIS_RIGHTY
JOY_HAT_DPAD_UP_HAT
JOY_HAT_DPAD_UP
JOY_HAT_DPAD_DOWN_HAT
JOY_HAT_DPAD_DOWN
JOY_HAT_DPAD_LEFT_HAT
JOY_HAT_DPAD_LEFT
JOY_HAT_DPAD_RIGHT_HAT
JOY_HAT_DPAD_RIGHT
JOY_BUTTON_DPAD_LEFT
JOY_BUTTON_DPAD_RIGHT
JOY_BUTTON_DPAD_UP
JOY_BUTTON_DPAD_DOWN
JOY_BUTTON_B
JOY_BUTTON_A
JOY_BUTTON_Y
JOY_BUTTON_X
JOY_BUTTON_LEFTSTICK
JOY_BUTTON_RIGHTSTICK
JOY_BUTTON_RIGHTSHOULDER
JOY_BUTTON_LEFTSHOULDER
JOY_BUTTON_TRIGGERLEFT
JOY_BUTTON_TRIGGERRIGHT
JOY_BUTTON_START
JOY_BUTTON_BACK
REMAP_KEYBOARD_KEYS
)
if(DEFINED ${def_name})
list(APPEND def_list ${def_name}=${${def_name}})
endif()
endforeach(def_name)
target_compile_definitions(libdevilutionx PUBLIC ${def_list})
target_link_libraries(libdevilutionx PUBLIC ${DEVILUTIONX_PLATFORM_LINK_LIBRARIES})

30
Source/platform/ctr/CMakeLists.txt

@ -0,0 +1,30 @@
include(functions/devilutionx_library)
add_devilutionx_object_library(libdevilutionx_ctr
system.cpp
keyboard.cpp
display.cpp
messagebox.cpp
sockets.cpp
locale.cpp
asio/net/if.c
asio/sys/socket.c
asio/sys/uio.c
)
if(NOT NONET)
if(NOT DISABLE_TCP)
target_link_libraries(libdevilutionx_ctr PUBLIC asio)
endif()
if(PACKET_ENCRYPTION)
target_sources(libdevilutionx_ctr PRIVATE random.cpp)
target_link_libraries(libdevilutionx_ctr PUBLIC sodium)
endif()
endif()
target_link_libraries(libdevilutionx_ctr PUBLIC
DevilutionX::SDL
fmt::fmt
3ds::citro3d
3ds::ctrulib
)

24
Source/platform/switch/CMakeLists.txt

@ -0,0 +1,24 @@
include(functions/devilutionx_library)
add_devilutionx_object_library(libdevilutionx_switch
network.cpp
keyboard.cpp
docking.cpp
asio/pause.c
asio/net/if.c
asio/sys/signal.c
)
if(NOT NONET)
if(NOT DISABLE_TCP)
target_link_libraries(libdevilutionx_switch PUBLIC asio)
endif()
if(PACKET_ENCRYPTION)
target_sources(libdevilutionx_switch PRIVATE random.cpp)
target_link_libraries(libdevilutionx_switch PUBLIC sodium)
endif()
endif()
target_link_libraries(libdevilutionx_switch PUBLIC
DevilutionX::SDL
)

26
Source/platform/vita/CMakeLists.txt

@ -0,0 +1,26 @@
include(functions/devilutionx_library)
add_devilutionx_object_library(libdevilutionx_vita
network.cpp
keyboard.cpp
touch.cpp
)
if(NOT NONET)
if(NOT DISABLE_TCP)
target_link_libraries(libdevilutionx_vita PUBLIC asio)
endif()
if(PACKET_ENCRYPTION)
target_sources(libdevilutionx_vita PRIVATE random.cpp)
target_link_libraries(libdevilutionx_vita PUBLIC sodium)
endif()
endif()
target_link_libraries(libdevilutionx_vita PUBLIC
DevilutionX::SDL
SDL_audiolib
ScePower_stub
SceAppUtil_stub
SceNet_stub
SceNetCtl_stub
)
Loading…
Cancel
Save