@@ -555,7 +555,10 @@ elseif(NINTENDO_SWITCH)
555555elseif (VITA)
556556 set (PLAYER_TARGET_PLATFORM "psvita" CACHE STRING "Platform to compile for." )
557557elseif (NINTENDO_WII)
558- set (PLAYER_TARGET_PLATFORM "wii" CACHE STRING "Platform to compile for." )
558+ set (PLAYER_TARGET_PLATFORM "SDL2" CACHE STRING "Platform to compile for. Options: SDL2 SDL1" )
559+ set (PLAYER_AUDIO_BACKEND "AESND" CACHE STRING "Audio system to use. Options: SDL2 SDL1 AESND OFF" )
560+ set_property (CACHE PLAYER_TARGET_PLATFORM PROPERTY STRINGS SDL2 SDL1)
561+ set_property (CACHE PLAYER_AUDIO_BACKEND PROPERTY STRINGS SDL2 SDL1 AESND)
559562elseif (NINTENDO_WIIU)
560563 set (PLAYER_TARGET_PLATFORM "SDL2" CACHE STRING "Platform to compile for." )
561564elseif (AMIGA)
@@ -578,8 +581,6 @@ endif()
578581
579582if (${PLAYER_TARGET_PLATFORM} STREQUAL "SDL2" )
580583 target_sources (${PROJECT_NAME} PRIVATE
581- src/platform/sdl/sdl_audio.cpp
582- src/platform/sdl/sdl_audio.h
583584 src/platform/sdl/sdl2_ui.cpp
584585 src/platform/sdl/sdl2_ui.h)
585586 target_compile_definitions (${PROJECT_NAME} PUBLIC USE_SDL=2)
@@ -597,9 +598,12 @@ if(${PLAYER_TARGET_PLATFORM} STREQUAL "SDL2")
597598
598599 if (ANDROID)
599600 set (PLAYER_BUILD_EXECUTABLE OFF )
600- endif ()
601-
602- if (NINTENDO_WIIU)
601+ elseif (NINTENDO_WII)
602+ target_compile_definitions (${PROJECT_NAME} PUBLIC PLAYER_NINTENDO)
603+ target_sources (${PROJECT_NAME} PRIVATE
604+ src/platform/wii/clock.h
605+ src/platform/wii/input_buttons.cpp)
606+ elseif (NINTENDO_WIIU)
603607 target_compile_definitions (${PROJECT_NAME} PUBLIC PLAYER_NINTENDO)
604608 target_sources (${PROJECT_NAME} PRIVATE
605609 src/platform/wiiu/main.h
@@ -610,15 +614,25 @@ if(${PLAYER_TARGET_PLATFORM} STREQUAL "SDL2")
610614 target_link_libraries (${PROJECT_NAME} "Dwmapi" )
611615 endif ()
612616elseif (${PLAYER_TARGET_PLATFORM} STREQUAL "SDL1" )
617+ if (NINTENDO_WII)
618+ find_package (SDL REQUIRED)
619+ target_compile_definitions (${PROJECT_NAME} PUBLIC PLAYER_NINTENDO)
620+ target_include_directories (${PROJECT_NAME} PUBLIC ${SDL_INCLUDE_DIR} )
621+ target_sources (${PROJECT_NAME} PRIVATE
622+ src/platform/wii/clock.h
623+ src/platform/wii/input_buttons.cpp)
624+ else ()
625+ player_find_package(NAME SDL1 TARGET SDL::SDLmain REQUIRED)
626+ endif ()
627+
613628 target_sources (${PROJECT_NAME} PRIVATE
614- src/platform/sdl/sdl_audio.cpp
615- src/platform/sdl/sdl_audio.h
616629 src/platform/sdl/axis.h
617630 src/platform/sdl/sdl_ui.cpp
618631 src/platform/sdl/sdl_ui.h)
619- target_compile_definitions (${PROJECT_NAME} PUBLIC USE_SDL=1)
620-
621- player_find_package(NAME SDL1 TARGET SDL::SDLmain REQUIRED)
632+ target_compile_definitions (${PROJECT_NAME} PUBLIC
633+ USE_SDL=1
634+ EASYRPG_CONFIG_NAME="config_sdl1.ini"
635+ )
622636elseif (${PLAYER_TARGET_PLATFORM} STREQUAL "libretro" )
623637 target_compile_definitions (${PROJECT_NAME} PUBLIC PLAYER_UI=LibretroUi USE_LIBRETRO=1)
624638 set (PLAYER_BUILD_EXECUTABLE OFF )
@@ -682,31 +696,63 @@ elseif(${PLAYER_TARGET_PLATFORM} STREQUAL "switch")
682696 src/platform/switch/ui.cpp
683697 src/platform/switch/ui.h)
684698 target_link_libraries (${PROJECT_NAME} switch-assets)
685- elseif (${PLAYER_TARGET_PLATFORM} STREQUAL "wii" )
686- find_package (SDL REQUIRED)
687- target_compile_definitions (${PROJECT_NAME} PUBLIC USE_SDL=1 PLAYER_NINTENDO)
688- target_include_directories (${PROJECT_NAME} PUBLIC ${SDL_INCLUDE_DIR} )
699+ else ()
700+ message (FATAL_ERROR "Invalid target platform" )
701+ endif ()
702+
703+ # Sound system to use
704+ if (PLAYER_AUDIO_BACKEND)
705+ # already set earlier in the platform config
706+ elseif (${PLAYER_TARGET_PLATFORM} STREQUAL "SDL2" )
707+ set (PLAYER_AUDIO_BACKEND "SDL2" CACHE STRING "Audio system to use. Options: SDL2 OFF" )
708+ set_property (CACHE PLAYER_AUDIO_BACKEND PROPERTY STRINGS SDL2 OFF )
709+
710+ if (${PLAYER_AUDIO_BACKEND} STREQUAL "SDL2_mixer" )
711+ message (FATAL_ERROR "SDL2_mixer is not supported anymore. Use SDL2 instead." )
712+ endif ()
713+ elseif (${PLAYER_TARGET_PLATFORM} STREQUAL "SDL1" )
714+ set (PLAYER_AUDIO_BACKEND "SDL1" CACHE STRING "Audio system to use. Options: SDL1 OFF" )
715+ set_property (CACHE PLAYER_AUDIO_BACKEND PROPERTY STRINGS SDL1 OFF )
716+ else ()
717+ # Assuming that all platforms not targeting SDL have only one audio backend
718+ set (PLAYER_AUDIO_BACKEND ${PLAYER_TARGET_PLATFORM} CACHE STRING "Audio system to use. Options: ${PLAYER_TARGET_PLATFORM} OFF" )
719+ set_property (CACHE PLAYER_AUDIO_BACKEND PROPERTY STRINGS ${PLAYER_TARGET_PLATFORM} OFF )
720+ endif ()
721+
722+ set (PLAYER_HAS_AUDIO ON )
723+ if (${PLAYER_AUDIO_BACKEND} STREQUAL "SDL1" )
724+ target_sources (${PROJECT_NAME} PRIVATE
725+ src/platform/sdl/sdl_audio.cpp
726+ src/platform/sdl/sdl_audio.h)
727+ elseif (${PLAYER_AUDIO_BACKEND} STREQUAL "SDL2" )
728+ target_sources (${PROJECT_NAME} PRIVATE
729+ src/platform/sdl/sdl_audio.cpp
730+ src/platform/sdl/sdl_audio.h)
731+ elseif (${PLAYER_AUDIO_BACKEND} STREQUAL "AESND" )
689732 target_sources (${PROJECT_NAME} PRIVATE
690733 src/platform/wii/audio.cpp
691- src/platform/wii/audio.h
692- src/platform/wii/clock.h
693- src/platform/wii/input_buttons.cpp
694- src/platform/sdl/axis.h
695- src/platform/sdl/sdl_ui.cpp
696- src/platform/sdl/sdl_ui.h )
734+ src/platform/wii/audio.h)
735+ target_compile_definitions ( ${PROJECT_NAME} PUBLIC AUDIO_AESND=1)
736+ elseif ( ${PLAYER_AUDIO_BACKEND} STREQUAL ${PLAYER_TARGET_PLATFORM} )
737+
738+ elseif ( ${PLAYER_AUDIO_BACKED} STREQUAL "OFF" )
739+ set (PLAYER_HAS_AUDIO OFF )
697740else ()
698- message (FATAL_ERROR "Invalid target platform " )
741+ message (FATAL_ERROR "Invalid Audio Backend ${PLAYER_AUDIO_BACKEND} " )
699742endif ()
700743
701744# Shared by homebrew platforms
702- if (${PLAYER_TARGET_PLATFORM} MATCHES "^(3ds|psvita|switch|wii)$" OR NINTENDO_WIIU)
745+ if (NINTENDO_3DS OR NINTENDO_WII OR NINTENDO_WIIU OR NINTENDO_WIIU OR NINTENDO_SWITCH OR VITA )
703746 target_compile_options (${PROJECT_NAME} PUBLIC -fno-exceptions -fno-rtti)
704747 set (CMAKE_DL_LIBS "" ) # hack4icu!
705748 set (PLAYER_ENABLE_TESTS OFF )
706749 option (PLAYER_VERSIONED_PACKAGES "Create zip packages with versioned name (for internal use)" ON )
750+ set (PLAYER_CONSOLE_PORT ON )
751+ else ()
752+ set (PLAYER_CONSOLE_PORT OFF )
707753endif ()
708754# Make content available (romfs/wuhb bundle)
709- if (${PLAYER_TARGET_PLATFORM} MATCHES "^(3ds|switch)$" OR NINTENDO_WIIU )
755+ if (NINTENDO_3DS OR NINTENDO_WIIU OR NINTENDO_SWITCH )
710756 option (PLAYER_BUNDLE "Embed a directory in the executable" OFF )
711757 set (PLAYER_BUNDLE_PATH "content" CACHE PATH "Directory to include in executable" )
712758 set (BUNDLE_ARG "_IGNORE_ME" )
@@ -851,8 +897,7 @@ target_link_libraries(${PROJECT_NAME} PIXMAN::PIXMAN)
851897
852898# Always enable Wine registry support on non-Windows, but not for console ports
853899if (NOT CMAKE_SYSTEM_NAME STREQUAL "Windows"
854- AND NOT ${PLAYER_TARGET_PLATFORM} MATCHES "^(psvita|3ds|switch|wii)$"
855- AND NOT NINTENDO_WIIU)
900+ AND NOT PLAYER_CONSOLE)
856901 target_compile_definitions (${PROJECT_NAME} PUBLIC HAVE_WINE=1)
857902endif ()
858903
@@ -903,26 +948,8 @@ else()
903948 )
904949endif ()
905950
906- # Sound system to use
907- if (${PLAYER_TARGET_PLATFORM} STREQUAL "SDL2" )
908- set (PLAYER_AUDIO_BACKEND "SDL2" CACHE STRING "Audio system to use. Options: SDL2 OFF" )
909- set_property (CACHE PLAYER_AUDIO_BACKEND PROPERTY STRINGS SDL2 OFF )
910-
911- if (${PLAYER_AUDIO_BACKEND} STREQUAL "SDL2_mixer" )
912- message (FATAL_ERROR "SDL2_mixer is not supported anymore. Use SDL2 instead." )
913- endif ()
914- elseif (${PLAYER_TARGET_PLATFORM} STREQUAL "SDL1" )
915- set (PLAYER_AUDIO_BACKEND "SDL1" CACHE STRING "Audio system to use. Options: SDL1 OFF" )
916- set_property (CACHE PLAYER_AUDIO_BACKEND PROPERTY STRINGS SDL1 OFF )
917- else ()
918- # Assuming that all platforms not targeting SDL have only one audio backend
919- set (PLAYER_AUDIO_BACKEND "Default" CACHE STRING "Audio system to use. Options: Default OFF" )
920- set_property (CACHE PLAYER_AUDIO_BACKEND PROPERTY STRINGS Default OFF )
921- endif ()
922-
923951# Configure Audio backends
924- if (${PLAYER_AUDIO_BACKEND} MATCHES "^(SDL[12]|Default)$" )
925- set (PLAYER_HAS_AUDIO ON )
952+ if (PLAYER_HAS_AUDIO)
926953 target_compile_definitions (${PROJECT_NAME} PUBLIC SUPPORT_AUDIO=1)
927954
928955 if (${PLAYER_TARGET_PLATFORM} STREQUAL "libretro" )
@@ -964,10 +991,6 @@ if(${PLAYER_AUDIO_BACKEND} MATCHES "^(SDL[12]|Default)$")
964991 if (PLAYER_ENABLE_FMMIDI)
965992 target_compile_definitions (${PROJECT_NAME} PUBLIC WANT_FMMIDI=1)
966993 endif ()
967- elseif (NOT PLAYER_AUDIO_BACKEND)
968- set (PLAYER_HAS_AUDIO OFF )
969- else ()
970- message (FATAL_ERROR "Invalid Audio Backend ${PLAYER_AUDIO_BACKEND} " )
971994endif ()
972995
973996CMAKE_DEPENDENT_OPTION(PLAYER_WITH_MPG123 "Play MP3 audio with libmpg123" ON "PLAYER_HAS_AUDIO" OFF )
@@ -980,7 +1003,7 @@ CMAKE_DEPENDENT_OPTION(PLAYER_WITH_FLUIDLITE "Play MIDI audio with fluidlite" ON
9801003CMAKE_DEPENDENT_OPTION(PLAYER_WITH_XMP "Play MOD audio with libxmp" ON "PLAYER_HAS_AUDIO" OFF )
9811004CMAKE_DEPENDENT_OPTION(PLAYER_ENABLE_DRWAV "Play WAV audio with dr_wav (built-in). Unsupported files are played by libsndfile." ON "PLAYER_HAS_AUDIO" OFF )
9821005
983- if (${PLAYER_AUDIO_BACKEND} MATCHES "^(SDL[12]|Default)$" )
1006+ if (PLAYER_HAS_AUDIO )
9841007 set (PLAYER_AUDIO_RESAMPLER "Auto" CACHE STRING "Audio resampler to use. Options: Auto speexdsp samplerate OFF" )
9851008 set_property (CACHE PLAYER_AUDIO_RESAMPLER PROPERTY STRINGS Auto speexdsp samplerate OFF )
9861009
@@ -1096,7 +1119,7 @@ if(${PLAYER_AUDIO_BACKEND} MATCHES "^(SDL[12]|Default)$")
10961119endif ()
10971120
10981121# Executable
1099- if (${PLAYER_BUILD_EXECUTABLE} AND ${PLAYER_TARGET_PLATFORM} MATCHES "^SDL[12] $" AND NOT NINTENDO_WIIU )
1122+ if (${PLAYER_BUILD_EXECUTABLE} AND ${PLAYER_TARGET_PLATFORM} MATCHES "^SDL.* $" AND NOT PLAYER_CONSOLE_PORT )
11001123 if (APPLE )
11011124 set (EXE_NAME "EasyRPG-Player.app" )
11021125 set_source_files_properties (${${PROJECT_NAME} _BUNDLE_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources" )
@@ -1198,7 +1221,7 @@ if(${PLAYER_BUILD_EXECUTABLE} AND ${PLAYER_TARGET_PLATFORM} MATCHES "^SDL[12]$"
11981221 endif ()
11991222 install (FILES ${CMAKE_CURRENT_BINARY_DIR} /${PLAYER_JS_OUTPUT_NAME} .wasm DESTINATION ${CMAKE_INSTALL_BINDIR} )
12001223 endif ()
1201- elseif (${PLAYER_TARGET_PLATFORM} MATCHES "^(psvita|3ds|switch|wii)$" OR NINTENDO_WIIU )
1224+ elseif (PLAYER_CONSOLE_PORT )
12021225 set (CPACK_PLATFORM "${PLAYER_TARGET_PLATFORM} " )
12031226 if (NINTENDO_3DS)
12041227 add_executable (easyrpg-player src/platform/3ds/main.cpp)
@@ -1240,6 +1263,10 @@ elseif(${PLAYER_TARGET_PLATFORM} MATCHES "^(psvita|3ds|switch|wii)$" OR NINTENDO
12401263 -laesnd
12411264 -lfat
12421265 -lwiikeyboard)
1266+ if (TARGET SDL2::SDL2main)
1267+ # Missing dependency?
1268+ target_link_libraries (SDL2::SDL2main INTERFACE -lfat)
1269+ endif ()
12431270 ogc_create_dol(easyrpg-player)
12441271 string (TIMESTAMP WII_DATE "%Y%m%d000000" )
12451272 configure_file (resources/wii/meta.xml.in resources/wii/meta.xml @ONLY)
@@ -1299,7 +1326,7 @@ elseif(${PLAYER_TARGET_PLATFORM} MATCHES "^(psvita|3ds|switch|wii)$" OR NINTENDO
12991326 endif ()
13001327 install (TARGETS easyrpg-player RUNTIME DESTINATION . COMPONENT debug)
13011328 # debug information
1302- if (${PLAYER_TARGET_PLATFORM} MATCHES "^(3ds|switch|wii)$" OR NINTENDO_WIIU)
1329+ if (NINTENDO_3DS OR NINTENDO_WII OR NINTENDO_WIIU OR NINTENDO_SWITCH )
13031330 dkp_target_generate_symbol_list(easyrpg-player)
13041331 install (FILES ${CMAKE_CURRENT_BINARY_DIR} /easyrpg-player.map
13051332 ${CMAKE_CURRENT_BINARY_DIR} /easyrpg-player.lst
@@ -1506,7 +1533,7 @@ if(PLAYER_BUILD_LIBLCF)
15061533endif ()
15071534
15081535message (STATUS "Audio backend: ${PLAYER_AUDIO_BACKEND} " )
1509- if (${PLAYER_AUDIO_BACKEND} MATCHES "^(SDL[12]|Default)$" )
1536+ if (PLAYER_HAS_AUDIO )
15101537 message (STATUS "" )
15111538
15121539 set (WAV_LIBS)
0 commit comments