From d3be0ed6f7223ea211c1a3bf9f8ae5464ce86a37 Mon Sep 17 00:00:00 2001 From: Gleb Mazovetskiy Date: Thu, 31 Oct 2019 16:34:19 +0000 Subject: [PATCH] Define RetroFW controls via the build script --- CMakeLists.txt | 59 +++++++++++++++++------ Packaging/OpenDingux/build-retrofw.sh | 4 +- Packaging/OpenDingux/build-rg350.sh | 4 +- Packaging/OpenDingux/build-rs90.sh | 4 +- Packaging/OpenDingux/build.sh | 33 ++++++++++--- SourceX/controls/devices/kbcontroller.cpp | 2 +- 6 files changed, 80 insertions(+), 26 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3aa0258aa..64a8afbcc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -294,6 +294,48 @@ target_compile_definitions(devilution PUBLIC target_compile_definitions(devilutionx PRIVATE ASIO_STANDALONE) +foreach( + def_name + SPAWN + NONET + DINGUX + RETROFW + 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_START + KBCTRL_BUTTON_BACK + KBCTRL_MODIFIER_KEY + 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_START + JOY_BUTTON_BACK +) + if(${def_name}) + list(APPEND def_list ${def_name}=${${def_name}}) + endif() +endforeach(def_name) + foreach(target devilution devilutionx) if(USE_SDL1) target_link_libraries(${target} PRIVATE @@ -306,14 +348,6 @@ foreach(target devilution devilutionx) SDL2::SDL2_mixer) endif() - if(NONET) - target_compile_definitions(${target} PRIVATE NONET) - endif() - - if(SPAWN) - target_compile_definitions(${target} PRIVATE SPAWN) - endif() - if(ASAN) target_compile_options(${target} PUBLIC -fsanitize=address -fsanitize-recover=address) target_link_libraries(${target} PUBLIC -fsanitize=address -fsanitize-recover=address) @@ -324,13 +358,8 @@ foreach(target devilution devilutionx) target_link_libraries(${target} PUBLIC -fsanitize=undefined) endif() - if(DINGUX) - target_compile_definitions(${target} PRIVATE DINGUX) - endif() - if(RETROFW) - target_compile_definitions(${target} PRIVATE RETROFW) - endif() -endforeach(target devilution devilutionx) + target_compile_definitions(${target} PRIVATE ${def_list}) +endforeach(target) if(DIST AND CMAKE_CXX_COMPILER_ID MATCHES "GNU") target_link_libraries(devilutionx PUBLIC -static-libgcc -static-libstdc++) diff --git a/Packaging/OpenDingux/build-retrofw.sh b/Packaging/OpenDingux/build-retrofw.sh index cc8d9f948..7036e8a47 100755 --- a/Packaging/OpenDingux/build-retrofw.sh +++ b/Packaging/OpenDingux/build-retrofw.sh @@ -1,2 +1,4 @@ #!/usr/bin/env bash -./build.sh retrofw + +declare -r DIR="$(dirname "${BASH_SOURCE[0]}")" +"${DIR}/build.sh" retrofw diff --git a/Packaging/OpenDingux/build-rg350.sh b/Packaging/OpenDingux/build-rg350.sh index bd5cc8eac..fa6c99751 100755 --- a/Packaging/OpenDingux/build-rg350.sh +++ b/Packaging/OpenDingux/build-rg350.sh @@ -1,2 +1,4 @@ #!/usr/bin/env bash -./build.sh rg350 + +declare -r DIR="$(dirname "${BASH_SOURCE[0]}")" +"${DIR}/build.sh" rg350 diff --git a/Packaging/OpenDingux/build-rs90.sh b/Packaging/OpenDingux/build-rs90.sh index b288649bd..89e27b3b5 100755 --- a/Packaging/OpenDingux/build-rs90.sh +++ b/Packaging/OpenDingux/build-rs90.sh @@ -1,2 +1,4 @@ #!/usr/bin/env bash -./build.sh rs90 + +declare -r DIR="$(dirname "${BASH_SOURCE[0]}")" +"${DIR}/build.sh" rs90 diff --git a/Packaging/OpenDingux/build.sh b/Packaging/OpenDingux/build.sh index 0f682b606..0021bfc00 100755 --- a/Packaging/OpenDingux/build.sh +++ b/Packaging/OpenDingux/build.sh @@ -33,8 +33,6 @@ fi BUILDROOT="${BUILDROOT:-$HOME/buildroot-${TARGET}-devilutionx}" -set -x - main() { set -x prepare_buildroot @@ -64,7 +62,9 @@ prepare_buildroot() { make_buildroot() { cd "$BUILDROOT" if [[ "$TARGET" != "rg350" ]]; then - echo 'LIBSODIUM_CONF_OPTS += --enable-static' >> package/libsodium/libsodium.mk + if ! grep '--enable-static' package/libsodium/libsodium.mk; then + echo 'LIBSODIUM_CONF_OPTS += --enable-static' >> package/libsodium/libsodium.mk + fi fi make ${TARGET}_devilutionx_defconfig if [[ "$TARGET" == "rg350" ]]; then @@ -79,14 +79,33 @@ build() { mkdir -p ../../build cd ../../build rm -f CMakeCache.txt + + local -a defs=(-DDINGUX=ON -DBINARY_RELEASE=ON) if [[ "$TARGET" == "rg350" ]]; then - TARGET_DEFINES="-DNONET=ON" + defs+=(-DNONET=ON) elif [[ "$TARGET" == "rs90" ]]; then - TARGET_DEFINES="-DUSE_SDL1=ON" + defs+=(-DUSE_SDL1=ON) else - TARGET_DEFINES="-DRETROFW=ON -DUSE_SDL1=ON" + defs+=( + -DUSE_SDL1=ON + -DRETROFW=ON + -DHAS_KBCTRL=1 + -DKBCTRL_BUTTON_DPAD_LEFT=SDLK_LEFT + -DKBCTRL_BUTTON_DPAD_RIGHT=SDLK_RIGHT + -DKBCTRL_BUTTON_DPAD_UP=SDLK_UP + -DKBCTRL_BUTTON_DPAD_DOWN=SDLK_DOWN + -DKBCTRL_BUTTON_B=SDLK_LCTRL + -DKBCTRL_BUTTON_A=SDLK_LALT + -DKBCTRL_BUTTON_Y=SDLK_SPACE + -DKBCTRL_BUTTON_X=SDLK_LSHIFT + -DKBCTRL_BUTTON_RIGHTSHOULDER=SDLK_BACKSPACE + -DKBCTRL_BUTTON_LEFTSHOULDER=SDLK_TAB + -DKBCTRL_BUTTON_START=SDLK_RETURN + -DKBCTRL_BUTTON_BACK=SDLK_ESCAPE + -DKBCTRL_MODIFIER_KEY=SDLK_END + ) fi - cmake .. -DDINGUX=ON -DBINARY_RELEASE=ON ${TARGET_DEFINES} \ + cmake .. ${defs[@]} \ -DCMAKE_TOOLCHAIN_FILE="$BUILDROOT/output/host/usr/share/buildroot/toolchainfile.cmake" make -j $(nproc) cd - diff --git a/SourceX/controls/devices/kbcontroller.cpp b/SourceX/controls/devices/kbcontroller.cpp index af27eec28..4a7562173 100644 --- a/SourceX/controls/devices/kbcontroller.cpp +++ b/SourceX/controls/devices/kbcontroller.cpp @@ -32,7 +32,7 @@ namespace { bool IsModifierKey() { #ifdef KBCTRL_MODIFIER_KEY - return SDLC_GetKeyState(nullptr)[KBCTRL_MODIFIER_KEY]; + return SDLC_GetKeyState()[KBCTRL_MODIFIER_KEY]; #else return false; #endif