From 3b2ba69a4fc38f48c2e9dfa5077feec77a5eec35 Mon Sep 17 00:00:00 2001 From: mittorn Date: Tue, 31 Oct 2023 05:12:27 +0300 Subject: [PATCH 01/27] wscript: get node path from waf instead of using relative path --- wscript | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wscript b/wscript index 02efd884..0ea0c636 100644 --- a/wscript +++ b/wscript @@ -211,7 +211,7 @@ def configure(conf): conf.msg(msg='-> processing mod options', result='...', color='BLUE') regex = re.compile('^([A-Za-z0-9_]+)=([A-Za-z0-9_]+)\ \#\ (.*)$') - with open('mod_options.txt') as fd: + with open(str(conf.path.make_node('mod_options.txt'))) as fd: lines = fd.readlines() for line in lines: m = regex.match(line.strip()) From 4be2334ac92a8377def0e54c2b1c804295146a4f Mon Sep 17 00:00:00 2001 From: Andrey Akhmichin <15944199+nekonomicon@users.noreply.github.com> Date: Thu, 7 Dec 2023 05:32:10 +0500 Subject: [PATCH 02/27] Update README.md. --- README.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 706fa58a..68c838cd 100644 --- a/README.md +++ b/README.md @@ -186,7 +186,14 @@ cmake --build build Note that the libraries built this way might be not compatible with Steam Half-Life. If you have such issue you can configure it to build statically with c++ and gcc libraries: ``` -cmake .. -DCMAKE_C_FLAGS="-static-libstdc++ -static-libgcc" +cd build +cmake .. -DCMAKE_CXX_FLAGS="-static-libstdc++ -static-libgcc" +``` + +Alternatively, you can avoid libstdc++/libgcc_s linking using small libsupc++ library and optimization build flags instead: +``` +cd build +cmake .. -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=gcc -DCMAKE_C_FLAGS="-O3" -DCMAKE_CXX_FLAGS="-O3 -lsupc++" ``` To ensure portability it's still better to build using Steam Runtime or another chroot of some older distro. From 050092763e1691b4a222f510c9641100b3f24ab1 Mon Sep 17 00:00:00 2001 From: Andrey Akhmichin <15944199+nekonomicon@users.noreply.github.com> Date: Fri, 8 Dec 2023 12:58:52 +0500 Subject: [PATCH 03/27] cmake: update minimum required version. --- cl_dll/CMakeLists.txt | 2 +- dlls/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cl_dll/CMakeLists.txt b/cl_dll/CMakeLists.txt index 45c24b91..b88821a2 100644 --- a/cl_dll/CMakeLists.txt +++ b/cl_dll/CMakeLists.txt @@ -20,7 +20,7 @@ # SOFTWARE. # -cmake_minimum_required(VERSION 2.8.12) +cmake_minimum_required(VERSION 3.9) project (CLDLL) set (CLDLL_LIBRARY client) diff --git a/dlls/CMakeLists.txt b/dlls/CMakeLists.txt index 7e5378e1..638f1a73 100644 --- a/dlls/CMakeLists.txt +++ b/dlls/CMakeLists.txt @@ -20,7 +20,7 @@ # SOFTWARE. # -cmake_minimum_required(VERSION 2.8.12) +cmake_minimum_required(VERSION 3.9) project (SVDLL) set (SVDLL_LIBRARY server) From 881f013742bcdfbf6522829b210e976006ce6c01 Mon Sep 17 00:00:00 2001 From: Andrey Akhmichin <15944199+nekonomicon@users.noreply.github.com> Date: Fri, 8 Dec 2023 13:34:28 +0500 Subject: [PATCH 04/27] cmake: fix wrong condition. --- CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e2ea26c0..bb335861 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -53,9 +53,13 @@ if (CMAKE_SIZEOF_VOID_P EQUAL 4 OR OR CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "amd64"))) option(64BIT "Disable auto -m32 appending to compiler flags" OFF) - option(GOLDSOURCE_SUPPORT "Build goldsource compatible client library" ON) else() option(64BIT "Disable auto -m32 appending to compiler flags" ON) +endif() + +if ((WIN32 OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR APPLE) AND NOT 64BIT) + option(GOLDSOURCE_SUPPORT "Build goldsource compatible client library" ON) +else() option(GOLDSOURCE_SUPPORT "Build goldsource compatible client library" OFF) endif() From 61a16bc8aab92c2ebb6fe85ba1a6b9a8777aca45 Mon Sep 17 00:00:00 2001 From: Andrey Akhmichin <15944199+nekonomicon@users.noreply.github.com> Date: Fri, 8 Dec 2023 13:46:32 +0500 Subject: [PATCH 05/27] Update README.md. --- README.md | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 68c838cd..8f1f7032 100644 --- a/README.md +++ b/README.md @@ -318,20 +318,33 @@ cmake -B build -S . cmake --build build ``` +Force 64-bit build: +``` +cmake -D64BIT=1 -B build -S . +cmake --build build +``` + ### Building with waf To use waf, you need to install python (2.7 minimum) ``` -(./waf configure -T release) -(./waf) +./waf configure -T release +./waf +``` + +Force 64-bit build: +``` +./waf configure -T release -8 +./waf ``` ## Build options Some useful build options that can be set during the cmake step. -* **GOLDSOURCE_SUPPORT** - allows to turn off/on the support for GoldSource input. Set to **ON** by default on Windows and Linux, **OFF** on other platforms. +* **GOLDSOURCE_SUPPORT** - allows to turn off/on the support for GoldSource input. Set to **ON** by default on Windows, Linux and MacOS, **OFF** on other platforms. +* **64BIT** - allows to turn off/on 64-bit build. Set to **OFF** by default on x86_64 Windows, x86_64 Linux and 32-bit platforms, **ON** on other 64-bit platforms. * **USE_VGUI** - whether to use VGUI library. **OFF** by default. You need to init `vgui_support` submodule in order to build with VGUI. This list is incomplete. Look at `CMakeLists.txt` to see all available options. From b89ce4c52703fc5b9e13683ecd1919b98694a9a2 Mon Sep 17 00:00:00 2001 From: Andrey Akhmichin <15944199+nekonomicon@users.noreply.github.com> Date: Mon, 11 Dec 2023 17:42:26 +0500 Subject: [PATCH 06/27] cmake: force to use library naming scheme. --- CMakeLists.txt | 18 +++++++----------- cl_dll/CMakeLists.txt | 8 ++++---- dlls/CMakeLists.txt | 2 +- 3 files changed, 12 insertions(+), 16 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index bb335861..0d89a04a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,6 +36,10 @@ include(VSForceXPToolchain) # Force XP toolchain for Visual Studio project (HLSDK-PORTABLE) +# Xash3D FWGS Library Naming Scheme compliance +# see documentation: https://github.com/FWGS/xash3d-fwgs/blob/master/Documentation/extensions/library-naming.md +include(LibraryNaming) + #-------------- # USER DEFINES \ ################\ @@ -47,17 +51,13 @@ option(USE_VOICEMGR "Enable VOICE MANAGER." OFF) option(BUILD_CLIENT "Build client dll" ON) option(BUILD_SERVER "Build server dll" ON) -if (CMAKE_SIZEOF_VOID_P EQUAL 4 OR - ((WIN32 OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux") - AND (CMAKE_SYSTEM_PROCESSOR STREQUAL "x64" - OR CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" - OR CMAKE_SYSTEM_PROCESSOR STREQUAL "amd64"))) +if (CMAKE_SIZEOF_VOID_P EQUAL 4 OR ((XASH_WIN32 OR XASH_LINUX) AND XASH_AMD64)) option(64BIT "Disable auto -m32 appending to compiler flags" OFF) else() option(64BIT "Disable auto -m32 appending to compiler flags" ON) endif() -if ((WIN32 OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR APPLE) AND NOT 64BIT) +if ((XASH_WIN32 OR XASH_LINUX OR XASH_APPLE) AND ((XASH_AMD64 AND NOT 64BIT) OR XASH_X86)) option(GOLDSOURCE_SUPPORT "Build goldsource compatible client library" ON) else() option(GOLDSOURCE_SUPPORT "Build goldsource compatible client library" OFF) @@ -109,10 +109,6 @@ if(64BIT AND CMAKE_SIZEOF_VOID_P EQUAL 4) message(FATAL_ERROR "You enabled XASH_64BIT, but compiler can't create 64 bit code!") endif() -# Xash3D FWGS Library Naming Scheme compliance -# see documentation: https://github.com/FWGS/xash3d-fwgs/blob/master/Documentation/extensions/library-naming.md -include(LibraryNaming) - if(CMAKE_SIZEOF_VOID_P EQUAL 8) message(STATUS "Building for 64 Bit") else() @@ -131,7 +127,7 @@ else() add_definitions(-D_CRT_SILENCE_NONCONFORMING_TGMATH_H) endif() -if(VITA) +if(XASH_PSVITA) add_compile_options(-fno-use-cxa-atexit) endif() diff --git a/cl_dll/CMakeLists.txt b/cl_dll/CMakeLists.txt index b88821a2..98e8e37b 100644 --- a/cl_dll/CMakeLists.txt +++ b/cl_dll/CMakeLists.txt @@ -175,19 +175,19 @@ if (GOLDSOURCE_SUPPORT) endif() if (USE_VGUI) - if (WIN32) + if (XASH_WIN32) add_library(vgui SHARED IMPORTED) set_property(TARGET vgui PROPERTY IMPORTED_LOCATION "${CMAKE_SOURCE_DIR}/vgui_support/vgui-dev/lib/win32_vc6/vgui.dll") set_property(TARGET vgui PROPERTY IMPORTED_IMPLIB "${CMAKE_SOURCE_DIR}/vgui_support/vgui-dev/lib/win32_vc6/vgui.lib") target_link_libraries(${CLDLL_LIBRARY} vgui) - elseif(APPLE) + elseif(XASH_APPLE) target_link_libraries(${CLDLL_LIBRARY} "-Wl,--no-undefined -L${CMAKE_SOURCE_DIR}/vgui_support/vgui-dev/lib vgui.dylib") else() target_link_libraries(${CLDLL_LIBRARY} :vgui.so) endif() endif() -if(WIN32) +if(XASH_WIN32) target_link_libraries( ${CLDLL_LIBRARY} user32.lib ) if (GOLDSOURCE_SUPPORT) target_link_libraries( ${CLDLL_LIBRARY} winmm.lib ) @@ -197,7 +197,7 @@ endif() set_target_properties (${CLDLL_LIBRARY} PROPERTIES POSITION_INDEPENDENT_CODE 1) -if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Android") +if(NOT XASH_ANDROID) set(CLDLL_NAME "client") set_target_properties(${CLDLL_LIBRARY} PROPERTIES OUTPUT_NAME ${CLDLL_NAME} diff --git a/dlls/CMakeLists.txt b/dlls/CMakeLists.txt index 638f1a73..4dc95ffc 100644 --- a/dlls/CMakeLists.txt +++ b/dlls/CMakeLists.txt @@ -161,7 +161,7 @@ add_library (${SVDLL_LIBRARY} SHARED ${SVDLL_SOURCES}) set_target_properties (${SVDLL_LIBRARY} PROPERTIES POSITION_INDEPENDENT_CODE 1) -if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Android") +if(NOT XASH_ANDROID) set(SVDLL_NAME "${SERVER_LIBRARY_NAME}") set_target_properties(${SVDLL_LIBRARY} PROPERTIES From 2f13985e23b36dae32414be48beb7d73246430e4 Mon Sep 17 00:00:00 2001 From: Andrey Akhmichin <15944199+nekonomicon@users.noreply.github.com> Date: Thu, 21 Dec 2023 21:47:02 +0500 Subject: [PATCH 07/27] Revert "cmake: force to use library naming scheme." This reverts commit b89ce4c52703fc5b9e13683ecd1919b98694a9a2. --- CMakeLists.txt | 18 +++++++++++------- cl_dll/CMakeLists.txt | 8 ++++---- dlls/CMakeLists.txt | 2 +- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0d89a04a..bb335861 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,10 +36,6 @@ include(VSForceXPToolchain) # Force XP toolchain for Visual Studio project (HLSDK-PORTABLE) -# Xash3D FWGS Library Naming Scheme compliance -# see documentation: https://github.com/FWGS/xash3d-fwgs/blob/master/Documentation/extensions/library-naming.md -include(LibraryNaming) - #-------------- # USER DEFINES \ ################\ @@ -51,13 +47,17 @@ option(USE_VOICEMGR "Enable VOICE MANAGER." OFF) option(BUILD_CLIENT "Build client dll" ON) option(BUILD_SERVER "Build server dll" ON) -if (CMAKE_SIZEOF_VOID_P EQUAL 4 OR ((XASH_WIN32 OR XASH_LINUX) AND XASH_AMD64)) +if (CMAKE_SIZEOF_VOID_P EQUAL 4 OR + ((WIN32 OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + AND (CMAKE_SYSTEM_PROCESSOR STREQUAL "x64" + OR CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" + OR CMAKE_SYSTEM_PROCESSOR STREQUAL "amd64"))) option(64BIT "Disable auto -m32 appending to compiler flags" OFF) else() option(64BIT "Disable auto -m32 appending to compiler flags" ON) endif() -if ((XASH_WIN32 OR XASH_LINUX OR XASH_APPLE) AND ((XASH_AMD64 AND NOT 64BIT) OR XASH_X86)) +if ((WIN32 OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR APPLE) AND NOT 64BIT) option(GOLDSOURCE_SUPPORT "Build goldsource compatible client library" ON) else() option(GOLDSOURCE_SUPPORT "Build goldsource compatible client library" OFF) @@ -109,6 +109,10 @@ if(64BIT AND CMAKE_SIZEOF_VOID_P EQUAL 4) message(FATAL_ERROR "You enabled XASH_64BIT, but compiler can't create 64 bit code!") endif() +# Xash3D FWGS Library Naming Scheme compliance +# see documentation: https://github.com/FWGS/xash3d-fwgs/blob/master/Documentation/extensions/library-naming.md +include(LibraryNaming) + if(CMAKE_SIZEOF_VOID_P EQUAL 8) message(STATUS "Building for 64 Bit") else() @@ -127,7 +131,7 @@ else() add_definitions(-D_CRT_SILENCE_NONCONFORMING_TGMATH_H) endif() -if(XASH_PSVITA) +if(VITA) add_compile_options(-fno-use-cxa-atexit) endif() diff --git a/cl_dll/CMakeLists.txt b/cl_dll/CMakeLists.txt index 98e8e37b..b88821a2 100644 --- a/cl_dll/CMakeLists.txt +++ b/cl_dll/CMakeLists.txt @@ -175,19 +175,19 @@ if (GOLDSOURCE_SUPPORT) endif() if (USE_VGUI) - if (XASH_WIN32) + if (WIN32) add_library(vgui SHARED IMPORTED) set_property(TARGET vgui PROPERTY IMPORTED_LOCATION "${CMAKE_SOURCE_DIR}/vgui_support/vgui-dev/lib/win32_vc6/vgui.dll") set_property(TARGET vgui PROPERTY IMPORTED_IMPLIB "${CMAKE_SOURCE_DIR}/vgui_support/vgui-dev/lib/win32_vc6/vgui.lib") target_link_libraries(${CLDLL_LIBRARY} vgui) - elseif(XASH_APPLE) + elseif(APPLE) target_link_libraries(${CLDLL_LIBRARY} "-Wl,--no-undefined -L${CMAKE_SOURCE_DIR}/vgui_support/vgui-dev/lib vgui.dylib") else() target_link_libraries(${CLDLL_LIBRARY} :vgui.so) endif() endif() -if(XASH_WIN32) +if(WIN32) target_link_libraries( ${CLDLL_LIBRARY} user32.lib ) if (GOLDSOURCE_SUPPORT) target_link_libraries( ${CLDLL_LIBRARY} winmm.lib ) @@ -197,7 +197,7 @@ endif() set_target_properties (${CLDLL_LIBRARY} PROPERTIES POSITION_INDEPENDENT_CODE 1) -if(NOT XASH_ANDROID) +if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Android") set(CLDLL_NAME "client") set_target_properties(${CLDLL_LIBRARY} PROPERTIES OUTPUT_NAME ${CLDLL_NAME} diff --git a/dlls/CMakeLists.txt b/dlls/CMakeLists.txt index 4dc95ffc..638f1a73 100644 --- a/dlls/CMakeLists.txt +++ b/dlls/CMakeLists.txt @@ -161,7 +161,7 @@ add_library (${SVDLL_LIBRARY} SHARED ${SVDLL_SOURCES}) set_target_properties (${SVDLL_LIBRARY} PROPERTIES POSITION_INDEPENDENT_CODE 1) -if(NOT XASH_ANDROID) +if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Android") set(SVDLL_NAME "${SERVER_LIBRARY_NAME}") set_target_properties(${SVDLL_LIBRARY} PROPERTIES From 61e28760af091092dd70267092b1be5115b7115a Mon Sep 17 00:00:00 2001 From: Andrey Akhmichin <15944199+nekonomicon@users.noreply.github.com> Date: Thu, 21 Dec 2023 22:50:24 +0500 Subject: [PATCH 08/27] cmake: fix wrong condition again. --- CMakeLists.txt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index bb335861..4b226167 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,7 +47,7 @@ option(USE_VOICEMGR "Enable VOICE MANAGER." OFF) option(BUILD_CLIENT "Build client dll" ON) option(BUILD_SERVER "Build server dll" ON) -if (CMAKE_SIZEOF_VOID_P EQUAL 4 OR +if(CMAKE_SIZEOF_VOID_P EQUAL 4 OR ((WIN32 OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux") AND (CMAKE_SYSTEM_PROCESSOR STREQUAL "x64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" @@ -57,7 +57,14 @@ else() option(64BIT "Disable auto -m32 appending to compiler flags" ON) endif() -if ((WIN32 OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR APPLE) AND NOT 64BIT) +# It seems CMAKE_SYSTEM_PROCESSOR parameter completely useless for APPLE platform, +# so may need to set options here manually. +if((WIN32 OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + AND (((CMAKE_SYSTEM_PROCESSOR STREQUAL "x64" + OR CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" + OR CMAKE_SYSTEM_PROCESSOR STREQUAL "amd64") AND NOT 64BIT) + OR CMAKE_SYSTEM_PROCESSOR STREQUAL "x86" + OR CMAKE_SYSTEM_PROCESSOR STREQUAL "i386")) option(GOLDSOURCE_SUPPORT "Build goldsource compatible client library" ON) else() option(GOLDSOURCE_SUPPORT "Build goldsource compatible client library" OFF) From e18919fa110193b2c937132ec1ea6b39f48bb198 Mon Sep 17 00:00:00 2001 From: Andrey Akhmichin <15944199+nekonomicon@users.noreply.github.com> Date: Thu, 21 Dec 2023 22:55:52 +0500 Subject: [PATCH 09/27] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8f1f7032..d7912d20 100644 --- a/README.md +++ b/README.md @@ -343,7 +343,7 @@ Force 64-bit build: Some useful build options that can be set during the cmake step. -* **GOLDSOURCE_SUPPORT** - allows to turn off/on the support for GoldSource input. Set to **ON** by default on Windows, Linux and MacOS, **OFF** on other platforms. +* **GOLDSOURCE_SUPPORT** - allows to turn off/on the support for GoldSource input. Set to **ON** by default on x86 Windows and x86 Linux, **OFF** on other platforms. * **64BIT** - allows to turn off/on 64-bit build. Set to **OFF** by default on x86_64 Windows, x86_64 Linux and 32-bit platforms, **ON** on other 64-bit platforms. * **USE_VGUI** - whether to use VGUI library. **OFF** by default. You need to init `vgui_support` submodule in order to build with VGUI. From 81d8b90acaf2aab1e2157df62259c98dbcb77abe Mon Sep 17 00:00:00 2001 From: Andrey Akhmichin <15944199+nekonomicon@users.noreply.github.com> Date: Thu, 21 Dec 2023 23:07:11 +0500 Subject: [PATCH 10/27] cmake: fix windows build. --- CMakeLists.txt | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4b226167..c44c8cae 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -50,8 +50,12 @@ option(BUILD_SERVER "Build server dll" ON) if(CMAKE_SIZEOF_VOID_P EQUAL 4 OR ((WIN32 OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux") AND (CMAKE_SYSTEM_PROCESSOR STREQUAL "x64" + OR CMAKE_SYSTEM_PROCESSOR STREQUAL "X64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" - OR CMAKE_SYSTEM_PROCESSOR STREQUAL "amd64"))) + OR CMAKE_SYSTEM_PROCESSOR STREQUAL "X86_64" + OR CMAKE_SYSTEM_PROCESSOR STREQUAL "amd64" + OR CMAKE_SYSTEM_PROCESSOR STREQUAL "AMD64" + OR CMAKE_SYSTEM_PROCESSOR STREQUAL "EM64T"))) option(64BIT "Disable auto -m32 appending to compiler flags" OFF) else() option(64BIT "Disable auto -m32 appending to compiler flags" ON) @@ -61,9 +65,14 @@ endif() # so may need to set options here manually. if((WIN32 OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux") AND (((CMAKE_SYSTEM_PROCESSOR STREQUAL "x64" + OR CMAKE_SYSTEM_PROCESSOR STREQUAL "X64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" - OR CMAKE_SYSTEM_PROCESSOR STREQUAL "amd64") AND NOT 64BIT) + OR CMAKE_SYSTEM_PROCESSOR STREQUAL "X86_64" + OR CMAKE_SYSTEM_PROCESSOR STREQUAL "amd64" + OR CMAKE_SYSTEM_PROCESSOR STREQUAL "AMD64" + OR CMAKE_SYSTEM_PROCESSOR STREQUAL "EM64T") AND NOT 64BIT) OR CMAKE_SYSTEM_PROCESSOR STREQUAL "x86" + OR CMAKE_SYSTEM_PROCESSOR STREQUAL "X86" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "i386")) option(GOLDSOURCE_SUPPORT "Build goldsource compatible client library" ON) else() From afc7b8b619d0ed8e6c8468008d0a41de9d137d3e Mon Sep 17 00:00:00 2001 From: Velaron Date: Thu, 28 Dec 2023 16:25:04 +0200 Subject: [PATCH 11/27] Add basic android project --- android/.gitignore | 10 ++ android/app/build.gradle | 76 +++++++++ android/app/src/main/AndroidManifest.xml | 36 ++++ .../app/src/main/ic_launcher-playstore.png | Bin 0 -> 40387 bytes .../java/com/example/hlsdk/MainActivity.java | 54 ++++++ .../drawable-v24/ic_launcher_foreground.xml | 31 ++++ .../res/drawable/ic_launcher_background.xml | 74 ++++++++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 2638 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 4382 bytes .../src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 2086 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 2984 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 3824 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 6368 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 5096 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 9222 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 7344 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 12220 bytes .../res/values/ic_launcher_background.xml | 4 + android/app/src/main/res/values/strings.xml | 4 + android/build.gradle | 17 ++ android/gradle.properties | 21 +++ android/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54213 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + android/gradlew | 160 ++++++++++++++++++ android/gradlew.bat | 90 ++++++++++ android/settings.gradle | 3 + 28 files changed, 596 insertions(+) create mode 100644 android/.gitignore create mode 100644 android/app/build.gradle create mode 100644 android/app/src/main/AndroidManifest.xml create mode 100644 android/app/src/main/ic_launcher-playstore.png create mode 100644 android/app/src/main/java/com/example/hlsdk/MainActivity.java create mode 100644 android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 android/app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 android/app/src/main/res/values/ic_launcher_background.xml create mode 100644 android/app/src/main/res/values/strings.xml create mode 100644 android/build.gradle create mode 100644 android/gradle.properties create mode 100644 android/gradle/wrapper/gradle-wrapper.jar create mode 100644 android/gradle/wrapper/gradle-wrapper.properties create mode 100755 android/gradlew create mode 100644 android/gradlew.bat create mode 100644 android/settings.gradle diff --git a/android/.gitignore b/android/.gitignore new file mode 100644 index 00000000..1b88d186 --- /dev/null +++ b/android/.gitignore @@ -0,0 +1,10 @@ +.gradle/ +build/ +.externalNativeBuild +.cxx/ +.idea/ +local.properties +.project +.classpath +.gradle +.settings \ No newline at end of file diff --git a/android/app/build.gradle b/android/app/build.gradle new file mode 100644 index 00000000..5336532a --- /dev/null +++ b/android/app/build.gradle @@ -0,0 +1,76 @@ +import java.time.LocalDateTime +import java.time.Month +import java.time.temporal.ChronoUnit + +apply plugin: 'com.android.application' + +android { + ndkVersion '26.1.10909125' + namespace 'com.example.hlsdk' + + packagingOptions { + jniLibs { + useLegacyPackaging = true + } + } + + defaultConfig { + applicationId 'com.example.hlsdk' + versionName '1.35' + versionCode getBuildNum() + minSdkVersion 19 + targetSdk 34 + compileSdk 34 + } + + externalNativeBuild { + cmake { + version '3.22.1' + } + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + buildTypes { + debug { + minifyEnabled false + shrinkResources false + debuggable true + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' + } + release { + minifyEnabled false + shrinkResources false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' + } + } + + externalNativeBuild { + cmake { + path file('../../CMakeLists.txt') + } + } + + lint { + abortOnError false + } + + androidResources { + noCompress += '' + } +} + +dependencies { + implementation 'androidx.appcompat:appcompat:1.6.1' +} + +static def getBuildNum() { + LocalDateTime now = LocalDateTime.now() + LocalDateTime releaseDate = LocalDateTime.of(2023, Month.DECEMBER, 28, 0, 0, 0) + int qBuildNum = releaseDate.until(now, ChronoUnit.DAYS) + int minuteOfDay = now.getHour() * 60 + now.getMinute() + return qBuildNum * 10000 + minuteOfDay +} \ No newline at end of file diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..23f98ffe --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/android/app/src/main/ic_launcher-playstore.png b/android/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000000000000000000000000000000000000..ef31446871ce9b941f175d6700541094eb9ebf29 GIT binary patch literal 40387 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

Ua(K9y3ut|~rO_+KHuOW8{R#_% zt(AcoZ?c&1uWOU-l2z7MZQ{t1nrHO-c;=p6n|ZkE0~2#56Iviq@ii=VJdIdi>b@y;iIoZt%@Aq^TjlTJ-pvl!*RN{lM6A%HMi7XDRlJ=bD~rlrQs{(3`BOu;{PHOi-W-T6^ABRWMF` z?3*+Ze`79n<}B5xeMg7dO`^kl?L^DLF`mJR-J6vQ5A>vh-c0JeNK6f3qC~(u!=A_K zENi=qWqS^Kj227xy5>Hj68SiwiP?+6-4z$PlhI$y8=Ja3SvlOa_HGWVe0x66)tG1l zavQHk+r9wwBtNLP`}vT`p7U5$k(0 z^hJfbUBa)7@r|pE0q(v{fro`KS!Fz%K?60Q)f>;EmTF9HW3eT2`1k$EotyRo6y!5J zK0wJNjv4#-ZJ3DbpT2<+YkT2f5HqL9wJlxQpMh{;q`r?a6^x??=I25x%<8bYhIU)$ z*b&{HJ2_C>3B57Sp#$S*J#vYjh~A^syu=TZ8XONgD@t9i$2ODpDVG!e*wKcn*U8SB zE$Ec-^g~iN5DCD6p_f*O@})^0%7w$?>{r&BR-L>TTe>GAvuf$7*gW(<5v);i>wShJ5>e$y{v-}Zdw5LmT}!?&+G9PUE^_xJG( z&|rhSc}1rdW(8pp30_w&O*vs1j~ffAFsU4-1#-{x?6~^@WUQg?=7vx|NaN9%F=fc7 zVr&XKUDhch+CH^(qluW9Og`SkZgv+^bo^%Q@`Hq*i5y!4!`P!_De5!y+Chn`RPe6f z($EBv3icLib0HHvX|tMrW4PY3p#Lt&h|k@2)9hQTxJeP|9Vb4d^QxhvzKUE`F8B=>IP9e0VJ?axv1f6uZNIndqkou)voA!s+Hfg3pz^cPmKob-5>bMPtOTQAA>#mz zO;hnV-+cMFrHUO-Dm{MapB-lzymOTtgmWile9x|8aTN#X-k(-r7bPDXHE^_v27oWn zV{SiyusKD9nEu@7d+fQu!`{5MxYu~rZMgb`MO=H|-xn!5pl-R~8L53L%-q1Z6-`W+vB{V@M``!r<-+n zl5uPK2BTi4aS|OyRJXH}&T;-SL#JVpnw~e>SNO1a6nE*nwVt3E$LWn59~pn0Mh-R^ z7qJr-gez1slcVLFqUV0kM5Y-mK6J~E$M+wmCCADAlYk=);}&CRL=V+jO9}hMSv)$@ zg@{DTYiJ1Rw0#W2udF5{cR2K#{VsGp8q^~b7je)g)rYMnZPuPGhRLae{mMs&GcPv_ z($6^lHkGp$RydbUC)4)jyhGY%>`5sTlC#t@PQHhiupD;iauvo7HBo;mQ%;p6*G+gI z2ya=ke|rrLRXqYb9l2mfGJ+$VI-@f+EC)S|-`8=}E*Ry0w2|>!1_sq^0QOe7e@zBeEBKixN z(8KMrM!n$R8!>UFD3$ssyoF9JaskA>cuRN}3= z?xXTbMTHjCf}RFM2F3gpO3t;azIU>R#-kmgt0seMx7uSUw!JlvDF3eXUP??+Dz2$~;Mk|vk1 zwFsWZf|fN>DFf2(XEy7=029E>NPQ=;~|ZOa@Ta#_zqr4qG4KhTGQ9syPaQ# zltTrT&G&D1u6-h|G*6x>E}MUzuerrtA$X3twCaV-R4blusNRd4kLXF99d~ea9!o&0 zuW$z9?z-CF)8izyU&D`PKfrzTv#W_{J7471;-fKdNVN?^jb|X=NRj0FnQjjO_r+)X z+$_6OgO=*b&Jr1B#Z(Sb(KON2b`Eo`(<_Q=GMA+i*t)IyV%C*QiaZ>D#kt#WT-&os zyhGie_ql;b;Q$cMLAprQKrZ+(Sx{%hXPSk0vlramT(mdGs^h!~QN*Is#Ntuz~81Tฬ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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/java/com/example/hlsdk/MainActivity.java b/android/app/src/main/java/com/example/hlsdk/MainActivity.java new file mode 100644 index 00000000..c6beb064 --- /dev/null +++ b/android/app/src/main/java/com/example/hlsdk/MainActivity.java @@ -0,0 +1,54 @@ +package com.example.hlsdk; + +import android.app.Activity; +import android.content.ComponentName; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.net.Uri; +import android.os.Bundle; +import android.util.Log; + +import androidx.activity.result.ActivityResult; +import androidx.activity.result.ActivityResultCallback; +import androidx.activity.result.ActivityResultLauncher; +import androidx.activity.result.contract.ActivityResultContracts; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; + + +public class MainActivity extends AppCompatActivity { + ActivityResultLauncher mActivityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { + if (result.getResultCode() != Activity.RESULT_OK) { + Log.e(TAG, result.toString()); + } + }); + + private static final String TAG = "MainActivity"; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + String pkg = "su.xash.engine.test"; + + try { + getPackageManager().getPackageInfo(pkg, 0); + } catch (PackageManager.NameNotFoundException e) { + try { + pkg = "su.xash.engine"; + getPackageManager().getPackageInfo(pkg, 0); + } catch (PackageManager.NameNotFoundException ex) { + startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=su.xash.engine")).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK)); + finish(); + return; + } + } + + mActivityResultLauncher.launch(new Intent().setComponent(new ComponentName(pkg, "su.xash.engine.XashActivity")) + .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK) + .putExtra("gamedir", "valve") + .putExtra("gamelibdir", getApplicationInfo().nativeLibraryDir) + .putExtra("package", getPackageName())); + finish(); + } +} \ No newline at end of file diff --git a/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 00000000..da1dcd94 --- /dev/null +++ b/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/drawable/ic_launcher_background.xml b/android/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 00000000..ca3826a4 --- /dev/null +++ b/android/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 00000000..bbd3e021 --- /dev/null +++ b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 00000000..bbd3e021 --- /dev/null +++ b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..cb27667f28bb31edec2534dc4301103c9eabb071 GIT binary patch literal 2638 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 YU4Y)ifjzVS^w=u2+^dV`HuRDL0GmgL1ONa4 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..ce6983985a091606f912592f3ed86002d9928725 GIT binary patch literal 2086 zcmV+>2-){iNk&E<2mk0 z#QohDWTB*yB&l-f6|nx54LrE$v?y-dHd5L?FGI-wQ+5Ehk!+{=p~_IKNd4D>^b86L3P4}bpk@$Z<}Gk9%1pwav&nY+tFs3E(1A&p+8l1=E7f92 z*0#m1r04rnrebDh7~ukH5w(e03ODScSAjF`9x*e6+2PD@U`bs(er{%1u1gAEMMhZF zs+Q^6wsvfL*1qmXpMS+ps=td}v9jIfAX5E0gxI#-+fHX2pC8_vZe-i4ZKub&539Z> zu;o(>&lTnLe;QH<7xV%)Oi>LL|l^R&$QtRk>WGOiTP`}@kGt)Mox#~Lll+>>${cF z`=0u!$F7HTdL*y>B!mC&-2L6ki!<-;!AdnO7)gkF#eACoh8jUSY9uhd5+ImRNzBz{ z8>Sfy8P^WJf5_<=RK9wMBVVnB|7cr8$Ebmk1|l+dsm=)yI(Mmam)eq9s&g}OY{=*~ zEdpO%J>rP|qb|Zz{b25JgriASW>+S{TnL5VUoVifhDIH_hR zv*g5v>PG)E7WZG+J;iOP$a7m9l0nKaAU{sN6AnCzoxC%J*}XqcD|mWl>G=#3Y>qi|r&qsZ-Xw)y_a?pFYYSujCRrVC~eZVVeUs&U7ShlY3< z`9T^#i9E#`^{aO|*!aN{P|Bd(xz6A29Xa58e#^z{a%0@j{JQ5x;>c#=Pxp@O)}1@E zS^%sZobuY(eU761H`GLbgOUKI0c0dtWj-6nujb96*9Y6Af>EW&3oR>)G|DBw+s@)w zUyd7BS5d+tL8j551vniBH%Mo}KqxGn!2v7HakjwFM$3}A5$`mfG|Od3318L!Z}$^ zP6GOq2_F4)9;_=@Hbi7bQC}&=DzhPAijpC+!gwI_SF>$0=rGG9E)dBI(x&JpwhI`k z6~=(nAg#mUV!ypu9gzOfFuIFo9L>fehXjB_47{uu4{Q9T$c`~cr_%tOE(CcMXkc2D zCKFmXNkU0;Oil-@nY|??!^W=2Ln(isvMJEQ0}-S>?ZdPvjcLy@i*#H}g&dzZtk(Cm zQtpOLtu2NDDIkc8sgAHP5=sPj-v*gIDp&4c4QY)>l|Z30Lrn>U^z)fcu6LMh-@s~R(IQrVS_9k zP>l>ZB*cNBrFPTMa-iHowu3zf1B*zXT9^*jd77@pEM_R}#j{K|2^2US$t#~{(0qCK zFFVhteXi6(GZ+>bnW8P9k`+KnkZE<0xTPQ4$}SWUURlC846Tz)EAqfx%7AoW8o-63 z)J*%^G#!WYRQ1)zO*}X3bg`&=U} znGR~R`j4`72M?uR2+9<33mi@>CzwroG)nrA|Bu*yfv=>}#Fbb%Fjtgx)IaOg`zG@W z-gEcM3d$&7oBzE9pCCJ&?o5^GOqCvw)&RhTa8?6w2%vrK*Z#k9*Y^!5j(Pg}zps~{ QSd4h@pNcAIK=I=d0FJE*C;$Ke literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..d72d3abeffd43bee0bf9564e671e9f92bc2a5af3 GIT binary patch literal 2984 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..08dff72be3b3123ec4df48815833bf5fcbbaf7c1 GIT binary patch literal 6368 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..b579e14ef98e1bfe1732e24faca9ec828bc7648b GIT binary patch literal 5096 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 K<$&;_Nd*A$aHszO literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..ed75f01dd1556d23342cc023ec364eb2e9423bc4 GIT binary patch literal 9222 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 KDw!0}WB>p{?fdQk literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/values/ic_launcher_background.xml b/android/app/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 00000000..a256bc80 --- /dev/null +++ b/android/app/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #EEEEEE + \ No newline at end of file diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml new file mode 100644 index 00000000..c35f762c --- /dev/null +++ b/android/app/src/main/res/values/strings.xml @@ -0,0 +1,4 @@ + + + hlsdk-portable + \ No newline at end of file diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 00000000..61060cd6 --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,17 @@ +buildscript { + repositories { + mavenCentral() + google() + } + + dependencies { + classpath 'com.android.tools.build:gradle:8.2.0' + } +} + +allprojects { + repositories { + mavenCentral() + google() + } +} diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 00000000..87cc72da --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,21 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx10248m -XX:MaxPermSize=256m +org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=384m + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# android.useDeprecatedNdk=true +android.enableJetifier=true +android.useAndroidX=true \ No newline at end of file diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..2b338a935b508eb6286ed4b84a91176ee5fb93c5 GIT binary patch literal 54213 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 W0pC&I?SueJAtDe^1>pYz0sTMJrJ5N4 literal 0 HcmV?d00001 diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..61656665 --- /dev/null +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Thu Dec 28 14:36:02 EET 2023 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/android/gradlew b/android/gradlew new file mode 100755 index 00000000..9d82f789 --- /dev/null +++ b/android/gradlew @@ -0,0 +1,160 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/android/gradlew.bat b/android/gradlew.bat new file mode 100644 index 00000000..8a0b282a --- /dev/null +++ b/android/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/android/settings.gradle b/android/settings.gradle new file mode 100644 index 00000000..8b31d676 --- /dev/null +++ b/android/settings.gradle @@ -0,0 +1,3 @@ +include ':app' + +rootProject.name = 'hlsdk-portable' \ No newline at end of file From 5f4c3a70e22bffed91ea9bfa13e5386d2b30306d Mon Sep 17 00:00:00 2001 From: Andrey Akhmichin <15944199+nekonomicon@users.noreply.github.com> Date: Fri, 29 Dec 2023 02:24:51 +0500 Subject: [PATCH 12/27] mod_options: enable rapid crowbar fix by default, since it's only used on the server-side. --- mod_options.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod_options.txt b/mod_options.txt index d68090c4..ec7d0844 100644 --- a/mod_options.txt +++ b/mod_options.txt @@ -2,7 +2,7 @@ BARNACLE_FIX_VISIBILITY=OFF # Barnacle tongue length fix CLIENT_WEAPONS=ON # Client local weapons prediction CROWBAR_IDLE_ANIM=OFF # Crowbar idle animation CROWBAR_DELAY_FIX=OFF # Crowbar attack delay fix -CROWBAR_FIX_RAPID_CROWBAR=OFF # Rapid crowbar fix +CROWBAR_FIX_RAPID_CROWBAR=ON # Rapid crowbar fix GAUSS_OVERCHARGE_FIX=OFF # Gauss overcharge fix TRIPMINE_BEAM_DUPLICATION_FIX=OFF # Fix of tripmine beam duplication on level transition HANDGRENADE_DEPLOY_FIX=OFF # Handgrenade deploy animation fix after finishing a throw From de5485b256c1010d6fe74917cafc0c57f5f85b19 Mon Sep 17 00:00:00 2001 From: Velaron Date: Fri, 29 Dec 2023 12:02:50 +0200 Subject: [PATCH 13/27] android: remove some optional bloat --- android/app/build.gradle | 16 ++-- android/app/src/main/AndroidManifest.xml | 8 +- .../app/src/main/ic_launcher-playstore.png | Bin 40387 -> 0 bytes .../java/com/example/hlsdk/MainActivity.java | 23 +----- .../drawable-v24/ic_launcher_foreground.xml | 31 -------- .../res/drawable/ic_launcher_background.xml | 74 ------------------ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 -- .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 -- .../src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 2638 -> 0 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 4382 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 2086 -> 0 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 2984 -> 0 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 3824 -> 0 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 6368 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 5096 -> 0 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 9222 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 7344 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 12220 -> 0 bytes .../res/values/ic_launcher_background.xml | 4 - android/app/src/main/res/values/strings.xml | 4 - 20 files changed, 12 insertions(+), 158 deletions(-) delete mode 100644 android/app/src/main/ic_launcher-playstore.png delete mode 100644 android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml delete mode 100644 android/app/src/main/res/drawable/ic_launcher_background.xml delete mode 100644 android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml delete mode 100644 android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml delete mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.webp delete mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp delete mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.webp delete mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp delete mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp delete mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp delete mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp delete mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp delete mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp delete mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp delete mode 100644 android/app/src/main/res/values/ic_launcher_background.xml delete mode 100644 android/app/src/main/res/values/strings.xml diff --git a/android/app/build.gradle b/android/app/build.gradle index 5336532a..084b5100 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -8,15 +8,9 @@ android { ndkVersion '26.1.10909125' namespace 'com.example.hlsdk' - packagingOptions { - jniLibs { - useLegacyPackaging = true - } - } - defaultConfig { applicationId 'com.example.hlsdk' - versionName '1.35' + versionName '1.0' versionCode getBuildNum() minSdkVersion 19 targetSdk 34 @@ -61,10 +55,12 @@ android { androidResources { noCompress += '' } -} -dependencies { - implementation 'androidx.appcompat:appcompat:1.6.1' + packagingOptions { + jniLibs { + useLegacyPackaging = true + } + } } static def getBuildNum() { diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 23f98ffe..ee5e0d62 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -4,9 +4,8 @@ + android:exported="true"> diff --git a/android/app/src/main/ic_launcher-playstore.png b/android/app/src/main/ic_launcher-playstore.png deleted file mode 100644 index ef31446871ce9b941f175d6700541094eb9ebf29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40387 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

Ua(K9y3ut|~rO_+KHuOW8{R#_% zt(AcoZ?c&1uWOU-l2z7MZQ{t1nrHO-c;=p6n|ZkE0~2#56Iviq@ii=VJdIdi>b@y;iIoZt%@Aq^TjlTJ-pvl!*RN{lM6A%HMi7XDRlJ=bD~rlrQs{(3`BOu;{PHOi-W-T6^ABRWMF` z?3*+Ze`79n<}B5xeMg7dO`^kl?L^DLF`mJR-J6vQ5A>vh-c0JeNK6f3qC~(u!=A_K zENi=qWqS^Kj227xy5>Hj68SiwiP?+6-4z$PlhI$y8=Ja3SvlOa_HGWVe0x66)tG1l zavQHk+r9wwBtNLP`}vT`p7U5$k(0 z^hJfbUBa)7@r|pE0q(v{fro`KS!Fz%K?60Q)f>;EmTF9HW3eT2`1k$EotyRo6y!5J zK0wJNjv4#-ZJ3DbpT2<+YkT2f5HqL9wJlxQpMh{;q`r?a6^x??=I25x%<8bYhIU)$ z*b&{HJ2_C>3B57Sp#$S*J#vYjh~A^syu=TZ8XONgD@t9i$2ODpDVG!e*wKcn*U8SB zE$Ec-^g~iN5DCD6p_f*O@})^0%7w$?>{r&BR-L>TTe>GAvuf$7*gW(<5v);i>wShJ5>e$y{v-}Zdw5LmT}!?&+G9PUE^_xJG( z&|rhSc}1rdW(8pp30_w&O*vs1j~ffAFsU4-1#-{x?6~^@WUQg?=7vx|NaN9%F=fc7 zVr&XKUDhch+CH^(qluW9Og`SkZgv+^bo^%Q@`Hq*i5y!4!`P!_De5!y+Chn`RPe6f z($EBv3icLib0HHvX|tMrW4PY3p#Lt&h|k@2)9hQTxJeP|9Vb4d^QxhvzKUE`F8B=>IP9e0VJ?axv1f6uZNIndqkou)voA!s+Hfg3pz^cPmKob-5>bMPtOTQAA>#mz zO;hnV-+cMFrHUO-Dm{MapB-lzymOTtgmWile9x|8aTN#X-k(-r7bPDXHE^_v27oWn zV{SiyusKD9nEu@7d+fQu!`{5MxYu~rZMgb`MO=H|-xn!5pl-R~8L53L%-q1Z6-`W+vB{V@M``!r<-+n zl5uPK2BTi4aS|OyRJXH}&T;-SL#JVpnw~e>SNO1a6nE*nwVt3E$LWn59~pn0Mh-R^ z7qJr-gez1slcVLFqUV0kM5Y-mK6J~E$M+wmCCADAlYk=);}&CRL=V+jO9}hMSv)$@ zg@{DTYiJ1Rw0#W2udF5{cR2K#{VsGp8q^~b7je)g)rYMnZPuPGhRLae{mMs&GcPv_ z($6^lHkGp$RydbUC)4)jyhGY%>`5sTlC#t@PQHhiupD;iauvo7HBo;mQ%;p6*G+gI z2ya=ke|rrLRXqYb9l2mfGJ+$VI-@f+EC)S|-`8=}E*Ry0w2|>!1_sq^0QOe7e@zBeEBKixN z(8KMrM!n$R8!>UFD3$ssyoF9JaskA>cuRN}3= z?xXTbMTHjCf}RFM2F3gpO3t;azIU>R#-kmgt0seMx7uSUw!JlvDF3eXUP??+Dz2$~;Mk|vk1 zwFsWZf|fN>DFf2(XEy7=029E>NPQ=;~|ZOa@Ta#_zqr4qG4KhTGQ9syPaQ# zltTrT&G&D1u6-h|G*6x>E}MUzuerrtA$X3twCaV-R4blusNRd4kLXF99d~ea9!o&0 zuW$z9?z-CF)8izyU&D`PKfrzTv#W_{J7471;-fKdNVN?^jb|X=NRj0FnQjjO_r+)X z+$_6OgO=*b&Jr1B#Z(Sb(KON2b`Eo`(<_Q=GMA+i*t)IyV%C*QiaZ>D#kt#WT-&os zyhGie_ql;b;Q$cMLAprQKrZ+(Sx{%hXPSk0vlramT(mdGs^h!~QN*Is#Ntuz~81Tฬ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 diff --git a/android/app/src/main/java/com/example/hlsdk/MainActivity.java b/android/app/src/main/java/com/example/hlsdk/MainActivity.java index c6beb064..ebfc1c36 100644 --- a/android/app/src/main/java/com/example/hlsdk/MainActivity.java +++ b/android/app/src/main/java/com/example/hlsdk/MainActivity.java @@ -6,27 +6,10 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; import android.os.Bundle; -import android.util.Log; - -import androidx.activity.result.ActivityResult; -import androidx.activity.result.ActivityResultCallback; -import androidx.activity.result.ActivityResultLauncher; -import androidx.activity.result.contract.ActivityResultContracts; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; - - -public class MainActivity extends AppCompatActivity { - ActivityResultLauncher mActivityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { - if (result.getResultCode() != Activity.RESULT_OK) { - Log.e(TAG, result.toString()); - } - }); - - private static final String TAG = "MainActivity"; +public class MainActivity extends Activity { @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { + protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String pkg = "su.xash.engine.test"; @@ -44,7 +27,7 @@ public class MainActivity extends AppCompatActivity { } } - mActivityResultLauncher.launch(new Intent().setComponent(new ComponentName(pkg, "su.xash.engine.XashActivity")) + startActivity(new Intent().setComponent(new ComponentName(pkg, "su.xash.engine.XashActivity")) .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK) .putExtra("gamedir", "valve") .putExtra("gamelibdir", getApplicationInfo().nativeLibraryDir) diff --git a/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml deleted file mode 100644 index da1dcd94..00000000 --- a/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/android/app/src/main/res/drawable/ic_launcher_background.xml b/android/app/src/main/res/drawable/ic_launcher_background.xml deleted file mode 100644 index ca3826a4..00000000 --- a/android/app/src/main/res/drawable/ic_launcher_background.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml deleted file mode 100644 index bbd3e021..00000000 --- a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml deleted file mode 100644 index bbd3e021..00000000 --- a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp deleted file mode 100644 index cb27667f28bb31edec2534dc4301103c9eabb071..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2638 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 YU4Y)ifjzVS^w=u2+^dV`HuRDL0GmgL1ONa4 diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp deleted file mode 100644 index ce6983985a091606f912592f3ed86002d9928725..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2086 zcmV+>2-){iNk&E<2mk0 z#QohDWTB*yB&l-f6|nx54LrE$v?y-dHd5L?FGI-wQ+5Ehk!+{=p~_IKNd4D>^b86L3P4}bpk@$Z<}Gk9%1pwav&nY+tFs3E(1A&p+8l1=E7f92 z*0#m1r04rnrebDh7~ukH5w(e03ODScSAjF`9x*e6+2PD@U`bs(er{%1u1gAEMMhZF zs+Q^6wsvfL*1qmXpMS+ps=td}v9jIfAX5E0gxI#-+fHX2pC8_vZe-i4ZKub&539Z> zu;o(>&lTnLe;QH<7xV%)Oi>LL|l^R&$QtRk>WGOiTP`}@kGt)Mox#~Lll+>>${cF z`=0u!$F7HTdL*y>B!mC&-2L6ki!<-;!AdnO7)gkF#eACoh8jUSY9uhd5+ImRNzBz{ z8>Sfy8P^WJf5_<=RK9wMBVVnB|7cr8$Ebmk1|l+dsm=)yI(Mmam)eq9s&g}OY{=*~ zEdpO%J>rP|qb|Zz{b25JgriASW>+S{TnL5VUoVifhDIH_hR zv*g5v>PG)E7WZG+J;iOP$a7m9l0nKaAU{sN6AnCzoxC%J*}XqcD|mWl>G=#3Y>qi|r&qsZ-Xw)y_a?pFYYSujCRrVC~eZVVeUs&U7ShlY3< z`9T^#i9E#`^{aO|*!aN{P|Bd(xz6A29Xa58e#^z{a%0@j{JQ5x;>c#=Pxp@O)}1@E zS^%sZobuY(eU761H`GLbgOUKI0c0dtWj-6nujb96*9Y6Af>EW&3oR>)G|DBw+s@)w zUyd7BS5d+tL8j551vniBH%Mo}KqxGn!2v7HakjwFM$3}A5$`mfG|Od3318L!Z}$^ zP6GOq2_F4)9;_=@Hbi7bQC}&=DzhPAijpC+!gwI_SF>$0=rGG9E)dBI(x&JpwhI`k z6~=(nAg#mUV!ypu9gzOfFuIFo9L>fehXjB_47{uu4{Q9T$c`~cr_%tOE(CcMXkc2D zCKFmXNkU0;Oil-@nY|??!^W=2Ln(isvMJEQ0}-S>?ZdPvjcLy@i*#H}g&dzZtk(Cm zQtpOLtu2NDDIkc8sgAHP5=sPj-v*gIDp&4c4QY)>l|Z30Lrn>U^z)fcu6LMh-@s~R(IQrVS_9k zP>l>ZB*cNBrFPTMa-iHowu3zf1B*zXT9^*jd77@pEM_R}#j{K|2^2US$t#~{(0qCK zFFVhteXi6(GZ+>bnW8P9k`+KnkZE<0xTPQ4$}SWUURlC846Tz)EAqfx%7AoW8o-63 z)J*%^G#!WYRQ1)zO*}X3bg`&=U} znGR~R`j4`72M?uR2+9<33mi@>CzwroG)nrA|Bu*yfv=>}#Fbb%Fjtgx)IaOg`zG@W z-gEcM3d$&7oBzE9pCCJ&?o5^GOqCvw)&RhTa8?6w2%vrK*Z#k9*Y^!5j(Pg}zps~{ QSd4h@pNcAIK=I=d0FJE*C;$Ke diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp deleted file mode 100644 index d72d3abeffd43bee0bf9564e671e9f92bc2a5af3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2984 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 diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp deleted file mode 100644 index 08dff72be3b3123ec4df48815833bf5fcbbaf7c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6368 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 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp deleted file mode 100644 index b579e14ef98e1bfe1732e24faca9ec828bc7648b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5096 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 K<$&;_Nd*A$aHszO diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp deleted file mode 100644 index ed75f01dd1556d23342cc023ec364eb2e9423bc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9222 zcmV+hB>CG?Nk&HgBLDzbMM6+kP&iETBLDy|kH8}k35RXlND^%4Uitbjcph8{5&fS4 z{W%DPm_u%6mOxchwJZs66A4P&s)Y)(dO*as-b+DSt74Zdo~i0JQY6Xa6&jsUy$S&c zG4|W^Q~{s&yeo%+*a)TS2e1{r#2&BuA1INxn>_lB?7Z%c=eU z1M$}I2FQ&ZIg;Y^ipC((80EiN_tN)16JWQtty&q+S2lJ+0WZ4%+^zp_3b0!OpHBKe z0kA7(`7nKa8cc9cE&wc@q=%POXC@t`UOEH-i%s>x04GS>mtF`VBz0=I zKO5T0N@@X~l9ti)W+X|SO9Qx)`Ujk*j>u@&5Hd0~$Y|TvKp|F-HQ19Ohxh68%2D^{ z=u9gP?9}|28rU|BiO8~r;w*XjK5%^yR zY#mka0H9BO1`;pnB>^XR3%CqNeFFgCtsJEfaoM#30Pqrr0(QM{?mOecOL>WFyru2& zM&Pi}ytlMn$GS~U7TJhHLEAP=!XI|K10f>c$2 z5t*}qPdW(|3%~{Zm)RYNwrvH8&hr|H*?sB&vYH>TG;P}=*UkHNPmhjfq@%-(W>~qH zEr)5v+2apLWyic^#+5P5oXCs^%s$L)A4wx=q?w-XuSy!|?$PX@FwM>w<{d{-jaQ+s zD!W(t2?ReL=?Rac!+qV5YlQT)#)ot6h z?R5UtzrOS-=)KKEHzuH`58JlUZ8eoEDdfVr)3I$^wd1UH?)@MzGZ$k=+yQp#jP0;U zdS-^y5l7VtRRbzA#Kp|;W&Qu&J+!xdG9+2Qh|Fq?XKmZIZQD4!vhUB;`3G!kZQJ(l zXl)L=sxl)SxNYM|a&{+^+2XlgKOi8uggZD8(GjS-MhQ@_QxI!PpqYI<>OvJuQaPtU z^V^hqNUE7j>UK;^r>TN%D4$2Er@laB;8?{q@F4^~-U9WYQJ0^}@wdsMomq;dX_{AC zNkbC@m4#=`X~>JM8tN=(qB~SC_^+Ln3CE*uXDXJYa*#|KdKPt$Gvda^?w{9H8Cn`K z+WC*7jX9vXv3#y6mvtBx5abc02`mA-AP|qh5!4Wrb9l+%sXE6UWsF0LP1k8-vBi2tL%K$@wFhk^JvIi)zJ>sn+1Qo!H z%}rZ=4dON9?di?qOg-Rb3j<*obIjsm0zqrwaE9IlWk6(!Bell{*w`kvS^m99bH*n2 zQ?XT;tR723IqH81%$@*23A5XH-Yc|!$CZ#5-<>#A8e1XrOG5b$G(lJzA^OwnD;?m6) zEVs8m2k}PJfLlv~kOtZd9AG-#H$G10uwcJWVD3j9vK9E1UNetiI*>o&ed)7a;3S=y zga66b0P*N+I)Ho3VXI?*Jp%X$IN`}0OnZ9We~yeQ^ndtW1Nd%r>@NrA?vZweeF6i5 z?=5go%)R8EXN4up;i zj{JLOp{O-1PMM2ghhC&KQ1iiD5xBVKaVUUjM+ZjxZ^3Or=}F^!)a;w9^JK?TItPx- zolJHhh)oP&msD_&b`v=1wQ80`U=p#PY~LetaAtp)KyblnN)LrF;OJSWl4IxleY4cj zjx*-j04eCk9RfW(R( zX+Y=2CQBTgws!wHw?-GO#NrdEgV5V5YTv$JUiWr;Nzh3dFWd~UNxF!f!0yIkkQOx zzd}T!hTOs=*^4iVMc2MN$>BHwnDEFTeL4n+kY`rWIzig138Rd^(29)Go)N%3mJWZ; zB|=2+2KJSf6x9BIl=$G&sA%UXfx&*n}Vb8ASZo!E5uO|f`{~0pPbNnDh*9( zkYa-IPp4-^Dp?Tn2!!HULPUjFIbg}9gdS+@Ju@rkJv368u9DbbR!DGQP$pmFo};Z; zuamW&d6j7@e*ZGdUa){cVSazuRCm=Ev*>t2o6$2<+nm}?+WMKngCos@sGPlCpU_LI z-b}%&^d*o#U)e8_m0ulXdbX>Tz-V$I9%X-8wJ9c7A9QE-P|MOzW;W6+2AKSl*3TQ0 zP=xw`O;P(+xgNc9fyh))7nU2{abbXu?ENSXY#$}F`uoJ~0Av4*;IxlJ$G#sRZe{hm zQ4y`%;{+*!Io4k}3`JfAok_*8PfoH7+8H?0l*WOX{d(2sJP|Xy)6CPx*T!t{%2jU? zm1)P5JCg#PT6IU)(o!x`%KjA}BfE%UA~;EKfZpUvMh;@V;*9?{Q9E`H2s8p6sUlSP z00_yUDntZ4FmBVe(#TWY`UI&ka&#ttrPr2hjyIHfJe9*s=ocqb_0LD&SCO3_#X~Th zP}E9g{*(uTs6=%ymWRBD3?4-2Jw375bqYNM@e>$)>seS(LE<`bmBu8^?73yV@bE~J z2aW&s5LJWnD3#^>8feFhBFP|X_Z(eZmnpgxOA-MW6Jwp}0|>MXE#rXh)Ydec0dPPm zk>V(o1D}SE%}0e2sT|UmiXtM`Py9(OGxeD?3K0xY+eK|>aKP{Z1V+%FcXT>ekB7jT zL&ty4gYeKof6yiv>hZCb+_8$*y-fN6rM%M}Pc&DZT^sjyN{bFhDnUJ)kps@rZhKSc zOH0nALTQlUgL9;tULED(H{~St$>4^IPkchVc(o!q+K#-d{q$IS0=iYN<7C|A{52!{ zxBK2qCgcEm;c|mDpv+Jv`p3^RF^6Wv?HYjF4xy_}RWGpbQ zx}6&K0||vg^aG0}cQJYefgiLhem?OBt3H~zoi-sUw;2!##_a2^972*^EEfiLHPIb# zhyzA0Vae?j69?^#W;UxoOP@rpD%u`SmYku`lf`G9 zkxLWUpuO?(mStg|d1zuHUA4vk>KE zj&SR{8%v@cJKjbUwoJ5!#9B`8!KyI2p$c7MUOd=vMt06)fnZ(ib^e}Sjg2JScg3uIo za}Q!j@m!G&K5;&riHk)flBn_!kBZqdvmD!Ltuj0kNPw% zcUf9A)g>*mB@!ti5)6`1ytKxWYbh@dIw9(NX%=V+ZV1egC{ZMnxhM*wfPuAnuN*xq zBPR!TRG8{s-r64GAhiN_B~YEz_DqW{gA$r8QccJND$jqGr4pNYi_Hhp#aHlqJ3GIT z3!FZu!<%y~e7F58ryXqn(YfHG=X`g+y6{u1S_R>xS!Cj`^jd;k3^ia$r!P3sgJB4^ zP$AQs4`5}-e>n4VZ*p*`=QP((uT_4sQ!2$UgGQzf0~*@AYdHf@SN=W7j_yo z_FS26E0_vjU!`FB+gCNwgI=fO#(@d7PIc#**$M1S%;Zc@yqlPT0Uzj@nWI&zvpL<( z9{`3QP0Xq8dO^5ZwS%#}CpiMwFrCiKy#o@NnIq;90@fM(391FIRXN*>Z+71RJTTOk zT9H<%J{u*nH3t=wcFAz4u|aLmnfMRt z4()C8(>c#;#8EufAOHLZ711gSo4xX?^{`h2= zaQ4s)Mzc*5J=|gM-D<;Df&(nG=G&vfLp#~*vuyhQsg@b=a;#J5gqNiCPwuznN3;F6 zQ?D@C%Q4P9M?EE^n`WEseqaKOfrQJ$507T5*I(W&M^9EXo?G#s4&h-Erg;TeX7x7* zGzzJex$2e5Zq~PB5~E(te(x+f2ny|H+i%GynKd9LlG!vY^h^bT+xq|j0K^b(K}77M zJsD_91d+l4_}0u;&|$IH7S=1u6c`6ck&*}zqKVQ4SeTRC_f3l!X4Fs= zf}`XSA%Tt(0}PCC%T6O|vV763$we{(87&d^Ca$G4_&~u0s1ke%L`Qk-l^zC*1m@eh zt0Fw&U1by~y%jeaY^lQ+p>!|t+xw?YX6E~g!EIInC&SR-H)m;GCtC~t?2DU(E$(mB_mw`F^ zvQ*4q1&Q<#BF4mW%fyU?2(FVo*aSv`IGx9!PaqO=;BPU}#dvQ<7*9-OaKR0Agj0v5 zRCG@viEO#F&3m^A(|bBTER^peSPNk!VsODkp!1L#OGaj|Ogy{WjDSo76esPdN`n(qI*))d(iaavAUz(Y3?Xboks1LC z72X=vr@S8z=`hZTNQ{L$Ga~RI$0f;0I7{%DSkQU&i^jRBaadf!TP<~zLKH$w4=n&pU3GNfsP+=Q1nz~5ozNuEvahl%^PVAa zj5krhTvK$1PxIEpYS`wJt%iXtJam)kP$?&Jc-$EV z!$ZrRk#cc7szEas%}1txl)+)|gf{g(kvPWLV%>2Nqm(}NZKHxPSTmLZzCIUtX25&E zJ0Cw12F$8COAyXK(_KR;~>gK4% zfRP*L#Un#yDN!lSNpu7I!0=#{#uECeu4jX;Tt8(TSX2&R=D(A&Hj9GR0tHw7=Pe7m%Yq))-Tq;W$b6ADS%@||Jn|$VN8MHNqI1-6d(l$ z&|*#S;OEr?b_e#00cM-x8w~mr*{Mr47D?wj7W@j6r->k*>DUcxDuEiZ4VdI0v1|sM z)fGtP04N!bz4y#{1E7Hf-g?@;Gl;_k)yq!Y%dEe7Z^=cdq#h=mTi$8>q+md;b9^~7(yIto+%-)B&3 zp>3lT8%)G$u&4&I4Va)Y5_QQ0Lb)evdBH!N6rA-W?a2w88j?JL*hY})-|9jCdW2fD zsO`GBZLK37l3->9NLaZoGlpo1dRiW^9L@Ze1ablg$T!*rz$Pf9n1ZJ|o~%h(+s50Q z5h&!=+spBMvFN7R7t=@BLSsUmP?fR3n=EvNL?||~{hhqy+R2f5*5KQ&6D2F9CDm%rP1+6wa^5o33j;-NA84LgtZauhkX11W3(e^iMGYl-@hRvz;;LWW*1&SjRcBQrfy;gJK z@o>B#^ofgXL{GbXsbjz~2KSq&Kz$$CzCPg5!UDe5VTRYaYt64b*DFo@_}ytF68xwp z8;~(Ubk`w2hKD+Hh~Y!^o+eI+^B}vgBXnj*%7j34qN0d^%aP6RqeXDurzM?RKJn;B zi#FCj5(glC)`+tg#c}+iyjDTZh$Ln7iLI@e&|M#_Vc9$^o9WTAKhSwGnv_HtDWXLw(7bp_yrF z?niw4_M)v(locXDo>CG7)G29##Ca;`c7iNLNINX6MCV9gNDadrESc>c$Oru9B+da0 zdkgA~?SSoD9mjj%lDP0alj&t97V{3K&co>r0+xW4Ah7*+Nlm4hMO6#?!+3`LDOgv5 zIF@-vDYmhj(LMJW1kK6A87YQ$w3uBSpJ6$u3^Ab1@C7^b`qOrj`*Al-U?i;J64<|V zT&!X&VXhifl4R#Sz!8X1KxO2a0cvIIoNV_f1Cp={rY|$Vs+8_n|2zv!>R_FRQU!Na zAXtr#xpkoqO(wXYKf;De#F3amV0kre)dZx30FS;^&|I0mxD+usF!tcNJ2PskSw$9x zC{p#Y4@|eK3RzD&U)Bvfi@nunr`!OPTce|Y^fMbIp1i-v5Aax)&!)YS+OhMmXnh!2n zu~G`D#l+AKUnWUlT?y;RTtTgryJjxxM93w*4|a4^oa6BsWb`aOcpouM#Qp!39tEkKgiRHEZIgv_EJlYwpy5H>l09opunU+5@W8%uX7g+74I}|_ z6l!&4s`c^s3|V?;8P;Ep>{3wMCJU}@as|WM+|YLIqy|_~C`W3yOzW6xZJvO6=4qi2=U zVt|x~cb*dPnHDaj2vH)MyO9dynsWQN0me22B>hlV1$2?#rn@GxE1wylKP@E?a{_^B zVOIsbhUi4r%7vOxaqa`x5g>DZ`oPWkL*&h;=%s*r6zmP|hP*_}-ld+9OC2d7qt*H- z#k%T-M#H>?_4sdjkc-#y70RbLaqR|lSO>|5=4D+qX3*{E0(JnR3OFdY*IL8A7;ByFKe(qRCC7@(IFxLqysM+s_&*? zy+$X9t0A}_4ni_3cD5=AR!{~gh6zJXmvJ=n+-Uotg@G`nT0nL7;grIwC`pZ@^gG*D8ZWU)Lp*5Ie=29f=qK2m zAW{R>2_e$bmw;%}45*x;I9)5NY7q<#WyD5t1vnz}7OOlm2!g3y(%dupEs7NerbeJz zRL!zyX1Tl)Iz^i@q^To>@bY@4>ncfX95_5voU0OO5Tpe4L(fS(a$W(B$SEUMd4QC* zhm&mai0YCm5wn#SHX{#-U<1-C;=I?0K>7;#TokxCmPB0%CRbD}G#Wu!!!~}A7ci_y zk<^AtFBNtF2$%z4$y`7z=FET@icJEss5QU5(0MB)ET8+`r7%?z*i~Ea?QM;3}rRqo)11p{MC6|KQe+Kb^uvi>H zs-Pyapv$PWcInsGO(O6K(gcZbwJ4OE#y}0RPUQ3?X=a6lDwdw42e_KRTv0s- zF3$YiS~Uow##}TTWc+>~)zmoXFyA$zZe!Q$dagxkq})&j zI^^pLs|fN54uRm-ZDJ|;21SBiZVr3iUnk(v6F8ENkfD(A!Ds7I&zi|1 zvsIonq=+M}NRDdG!05GTCVRPH^k^3? z@bLdBeyGkoo=X6_W(bYbk%q!eJEU+bK|Sct{^-E zfH^LV1j2hkU1fQw@JXofPGylrlLlPgXlZn9QlF}sn}>aP&5@tDGy$vZG(lAO?%JOCS9R{zfYY2Su22fKFIQ6pkYEq z^CX7&kU@AIqo|FlZB4BxueZ;mBR&n82eVi5-ngB1XZQw>m<)vw{u1~Tsu$sEA#7`F zYkF*H)_#i$hQLgN29vBh=x~h1QFo+PI=jHSH#=6%i0RbR03R23Zu_oe_@H!-pxVjL@Dj72b cDG^_h$zD1N0U?llEWzrZgLO*m}ZMv`EA@0I&+c;>PLTmupP zp8)+~q^eb=s#T?HF$cWy2}^1Z^q;)rfRVty1xOOyXp$_s?2!!%T-OX+KQCq=Bmnuk z2ATl!KrmrqhlD`LW6}yJ`_7y=B;?`6pC8x4;L@&D1ysuNtZsL6dI2|*B*{$%;_lG= zFK7Y$w~8{Q5%H`x_~8KDNRlioCGsa@V%`IB{I?1-5G6^Hq)3t;hnAU{sZJ~X{}(LN z$%a!(2A28I{|S&6ER^DnXpJQqhKM;Y9Ot)iT>kzxHZ&sTK8y07RHXAl9ASfl=3__h zs80=rtOyIgWM>lDxi41zUY8XSPPhB7LkR?CPaF|PCOZ>?3u9Sg&&!^;9^$%)y&qy) zeHJ^3pq&r#G*17H_pj@V`*C}*1i8#4^0^CnCxjp(GFe(27te)=)p~4ko$KbIh{)Kx z$2B<~#i!4Z%g4QJ2D8}HO+?I|nd5W(R;a34 zY_VmwCWA2<8WrigRK!kZFk)1Fs*2txdY>W{5qo2gw||t_Nz5>#>fLvj>s_=?pH&sP zT&8xOVP;b9bCpXe<#IVy4UiQn*Z05I_b)r>U-^poP9b8CjrQyw+}HN2lH=yL_o=F` zRts7hW^$N0xtsZCf`5VUa>a0!E4pOnYi4E`W)@6$tGl}D?7gfyXYb#fK2^?D{Dl*> zmUmFGev&h(m8I@EX3#(@X%Cn*MtL1Gl$`R+Sf(;ldF1%IwrzRaY}>Z|fRioB)=)JR z2bIbNm0h@)nVETtXFGktpWr!WW@apNz|fc!gB0uJ^Ei&(du`jQ_1LzROB+*)h{eoI z9;~$f%B#hUMl27O6HAUPW`@A;)9j7Twrz*?>U`dr`BrQ@omr)_jVgV*9Qgxw{)5@F zbGGZfJKMJRS~Kq}3$m@Ml@{#rrNtq^owV(Sr9 zKQk@P|NVBo1&Ih+0B7Sj(^}2biCUiIptk!76lcEoXH?%Yptbj^MVTM{3Z*chwNI*D zcQZfuGfE#Ypya9A`X|h%i-y0&fD&pKK5ssShQGpqyi0B4V<=;O^al=%+g#E6Gr@NN zE)$=r&;R{)nM0p_9`soVGA@46mo^Z$pI{YXXAzoAQ1{Xpxiq41SiUfb@D?MY>X#S| zg9yuDDS^RL477V>F|-@8cVVC#tp64bVtyF|g*z*UQRsT4=|4!=9|(O#@D`DW1TW*f zKmR;EBV*`^XYpKI`Qb0GA?GZ?x`YJ_(%2@%OL-xJ0olVKN=6Y3tb+`sqeK{3gc?Y3 zKgZ0wwSZ(85Xag@G?ZEn6AAzT!K)b9+QsjUX4EcjKcTgiVwYY z#+p51jY5zORDcH}!~!r7OXJRx0UqJ4PP^vT?{*BK(T>QH` z`dRTaFR4=aUb*l+-&m{2Y3xvUDgR#sH8}dypM2c*z|VZ3Dyt-u18x-}aH}j4TqQD%y_+ z|D*fRSE#$Q?i^VCL|e(`_62{IR~1=>L+D1Oj#SW6g5CvRm%sWs&r&A0`#*H&t1}es zOziANSW1P6$dpIV9_RH>x#^cx7X0k~rqw#0Ojel5KsRD%gjIJtVX~a5tAC(NS+FU8 zPxKo?qaeWu(Ty-vD1vCJd1(5_;T9RJ+}{kb8l%{^3*D($5OZmDTYZac_ApJ9(6vg7 zpQb*tU>l46d%70}_vp`l3`%XvJE;yNf=mzF=!p7U|?-bvyLha zgS~euHJ-wNEOCyK;}Hf#%M^(V2uF(!nqH{?8k)RACIP9T)j^K8lL!%3N*{5$ zo}e5Ibe#Qh4jDL81mwr2u_g?(TFU3&IA)Yy+Q-%yGdNQmDhXAXYA_(h(vwXF11qBg zqBz8tDh_0`1ewFS5b|U)%L*7ML22y(1BEOfBrFC*8CpP0R%XI(a$(II?B4Tn2CpEM z-3p831&@QGd~9NMt$j(hKQN~Ln1y37`L0WSbZq${jScqX4jTLq?Y>(jf&4`l9ik!> zU|wfQ*^vOH3jOD1!Qy5qgYgX}gaHdF16{2O#4OMrUM6~-J zXrZ~9X0PPsFL(30XV?Pc!axgD$Om5RyKlpo zN(?Z&J>GtZbAlf%;C$?1po0~~gWRb2FJv`uK;@mmg%H~eYOn$Z`-cyLff8f;TAI@U z8&)wzUi(^4XV&09$-!V*BZlHL6Gd4+4$wT#)`v4TT-L#9j3)M3hBI$KdMJ&er7&{& z#Cx~>KfqtDy)_GBSRuzf4;=*9_IOO4M>>DynM>Ke8DQh{sYEOU^%JZe1=zlw8~>Vm zFX((;v-wZsPE^`#eBoNYGjp_;jrTCbomc%hPevDDPh*#W1pq&a6$OyKaVHibsL|<^KF-82 zjQyNesE{aL+J}f8Sd3?y9McSI@n&f7!rCAp$JXByAA@dDw*4XVlR!x(?;r|?D=9i4 z>g3Ji!&U8~G&)#^4@U7ZNKC`G^6@5HVR$qqXHJBe>XXY5`SXjbBN;LHJg8)e?#{u zGY_uWX9kF};Z|y$07Vp!4R?$+BgW73QntD00C?xjvuwXSwy$BD?8KV$tQi8#US#G` z&_y7}mY>9A!9Pykvz8}@ISY$Q1$eTO0j3_Hv9Zuy%G6&jaT(kn`N_`YM}auc z)IUL2VR_=VobVCu%G#-pIN|+c&8?T^E<&}Njc-|NSEKwafLYUI=7D4LuhTkQU4p^d zd)f3>s=WXUz*EpXVDrz{^n-K-qJ-n##^h^Qupam!a%;;UnED@GfJ%p@`j7?mOd^j0lS?TBE!W!ob$CH2!v(!7C?Uv!ZquwvqK=;%jXA6SHe!KrY5cfrl6n zmaSsSSc)+R4_%KwtueX zei$(H4qkO+$4rC>A zJhj1Aw9<4S|Jc|*^3{sj4L;I&BgMvKC1wNW(u6<^748_L#miFT}lN5Gl zw2w|mxnX4(S7tVEXZkRmLVcO~sldwyqz0OtwlFy)o73DY|D3i~P;=?|nJ;tsqdC+e ztiPS$=XmCmY5bAHGy@o%aBI$ZX|l0>+6%^scjU%LvU3HI<7}OEVlW)tu*UQOiaF2; zR9hK870$MdDW9uy;SWb#Mu~CKJ$&j1IhqYen`tinRj&O{$e@Fq4NlVo4CYcU{r}jn zKugjAOx#42gySVbu+z9GkvC^%yt)vOi)EC|famCnheuo>H@0cXDDF1)ZRouJs-%SmmbrM$R$ z0?xdFZDPz=Gz?WE6KL>Xw^iar8ZyzrP+k;ZU<_nX;TQs#xbIH+$@Mk7YmN@vK?p%D z%4sX;lKPF|d~U(kF(p4q7&G&r*_nW5FN&J2(FqK+!@AYylgI3XAR=Bv9pZVZZmQClLp#30Qa?aZ)pHC`hTVmMct%UA5QJODr(j1MRPq_vboHh*ti9Ijae0|Ag|o(!r3svR2J zm@Gx2*`u%oAnXTFU82&zY3|&a*-AVnB?2G`3%Z-Jb7^iTo&W_966q?CupkG=R%jj2 zyn>_}5k_sVSA7p)L==pWj3s}3@XYD>Q^6boNV26EqLF56ur6AC1?w3NqSmU0QN?TAZ`_f?U4o}!hoz|n9B zAm!I(1~PI8a0DX&X=@Q!&r5^+)k~OJ;Ap-;1VeYOP(XwupztV_tJ0;VWIHf|I0aO| zI*`9Q2QFp?&aLNBvLCa=iG7bQ!J!dR+!9ofwOBc<7xS7$(#@@ z?Tnqp76S#^sUakBG%pJvTBOpWb}n{K+e}DoGih5Wpj*@iyvIyOGKpn@AjxE^IJIS3 zGvcdhTTQxLLL#v$NbS^!v((2F$+#?%jS4X1qq6V%R9Fkg zj#4PZnq@`YJ{pdTOXfHOsq`^v;%Q74r2317q^$n1=6A2hX0!oA^@ZLMLhMt=24!3vsPcBGI0I zX>4X{FU><}K0uRq%G--w&K#?rq7d)VeuPi}452`9n+a%B0t`WdFa*GWh6Mm}SIsHF zhyzd*Zh4M39u1`sj)1_B2nqulcI2^MdumDW#KUApSVCYOZ$g>=t8NKH00j9gbe^j^ zkyPxG2!s>2{fRGz2vcF?kAYFb0^u+6$J5S>^T&@ah5(}Q9vuN*0Vr5Q#R0(3FeC@V zIixCbw&dcYG=N*4x0lmFA_?9Y5S9Sp2*~ezT@^VSs}3M(8|ju740}cU5k&z2ct*M- zmjEPnq;R*ROn2@gueC~?Nvn?KX;Xm`7&81NC2l8z5JF0x%)9;VPiQ|RAh)GPoI$+W zBN3EHv*Jic89Z7_#3f5oh{KAja|cL{>*=)WwA=y;P8So%5Q5-M$I=o*ML>xXzCdx% zR*vhblse&VW++*W3?U^?fRsaVCLY4jkpo4p1&k4=5@W#C%ptFd$A*AIE3QS!QYjpN zKp;xK>$#kC#V|42W=;8f-}wUP^w^TePw;jL!G6II`7Y;h&PDzwEdavUk-67!sVsRa zAl@5-@)!gld_=B;Cb-73T%-q&jB-j8KSh4wr)gMrkwdG%g(i zfSlKPkUX>$1Gglp0K!VSaR~^*Q2K9pG$3XXh(K(~du@TMU0#}OK1T?P2{)Dzc!a=_ zl>S^|&|b<4GJ@1lVl65OsVD~n>q4B}99GEX{@@Oq4nV>q+9!&L;v_~JK>(DA1TO9& zyOazGu+uTUP)ZO49TWLPG0_4+FpxB5fE<2H6f$Z%5Tw@&C1A}Wa~KT5BdW>jcmH&- zY;%c{=#Y0aFd5b+ib4v`_wK1e#kjNiH`f$L15vaBqD87*YUg9pNPGN}ct(&Tkbt+E zJSs%{0f>@#PbvzKw4|eq_4&tmvO;QhV;~4p0)+}Pww$=k_!yTD2@n(|xfK_8=J-tt zccxmc>4S`ZH-OAx%pid^+|Rihvj2#+gLR3-YN#1I-9F}->yT$*U@~mAY=)ULLP&SL zIzq`2=a7Z-yZuTHQ|99yBTd2ent1}%0kuN&1SQprx=LG>hYyq>W&5fZQF*}woi zxb`EAxU&RQkQ1>+{?{o`awKJK1>zA}Jk-BF2~-iEk#fKi@UP%JQIcA5`^ZpR!v7b>o?eny?AWbv!tzn*?D<7?vE_f5=q$O{FALrZa)C^?d{Ovxh7LsLPBUxHm4 zX&|#=e*UiD$(Oy~F5a8_88r3}7ypvK$W4VQv2X8^`~>3ary?AoD3TJ-U}gyM3cxh7 z4f_#6|JfI{{?TR9))p1`1Fz>TpfQP{@EBV=hr_(en14DxWzz`4$hAf04?H10p?456nJ?dTE zysbqqi+X+dYCexk1l`Z_b!iK*;xx+1x#2`m!2kgE26pXDhTd261wiDMp=~Y$e+ZW! zIESaYF?g-(A(QYX^YUO*Js$nF^V%OfcdnHf5pr@~!V|!=Q$v^##3{}c0U#-fFch&u zDE?ICBJS?DSdWixHZS+HQJOaUc3Mio zVV81{fOs$&Jh6^gPkQ69k)R zL?i>d4mq&JAR84yBAjpBT7&insW7k&R2~%NfYXMdwT;svAh0HfRlrjc=dA-s@*Fz| z^unmLzDnk`TVYQtk%t#Rwq?q}at*V-@lDqjc$)S_63nsw^K^;UG8aQZW7i*}*Q3?hoOWceo9$Le|6p1UM zaA<$IeYB8m;KM@1OX6(lFgh3r77$SYk~*Iis8TZflF64gB@6^e#6t+M2i9RyNRKFD z4-~Bgu!I2(a0`u_kgMVS-*wlG@5J?V?=gaUl+6<86QmurfqOE|t(gxd5e$84_PFU> zWBqz({y2K~ zUFkJ|LiwZ8i^(waBWXb(K!9LhxP8}wMN30bl0Df%7%Fe4{+JPd-6nl@iMn3>&gAx- z;Qv}xzJG^S`^bj=>gsBL%-x2Miygj|sH#%mLhnneGvjn;Jdp}%D8tx`S{Oslypydi zs>L0gZ;03;@6mGkoESVuW(MrX!n0ONU7>)+6#R zBv#6W#e`z*HNvmI99-Wh@;^aoT6vN)%h$h&Wb}cof<6d_{d>(_y)|N+sw%dU;&vKW z7qUbM7*I*SDlY<#a?NDuhVRh1e2^d$w9CuOJpe$K z;d7tc>-B&x@gE)a`~B5k=3bxMd+u}5>$T~3Ful}9TwU$=7NYic)Xrb@`q-gOVh}~90AhK2@-EjL(($;q;v{c)} zW;Ty=9`DGOmPj+wlBBVDQ|+=Qc?ZpC&k_g(;!RT6l@v;z(&OQR?AWqp%g<$InfGi- z*HS1cDRifqnKH6t%iBdWBT2L5EzNmCp+Mh~&Xcw6%|dQ#+pet)yg!<{y1F{wpOF5G zq5?v)`wS((PHkHbvYa(M9-Ht8ex?ZfufY=XX$iByjU>sDlg~Cf<_S2F5F>#}C&Pak zHc$gj0vGx}0k~eu(V>s;q8Hp3a~F*<3cI8yXVvk0OtRJ8UmDvRRc#iNAUL*@b#GRnAs9|UK4t*0z?FWBeUbj z%zCCA`FH%!K91mAJFH9XE<9#-J0l`;)JMQ~q}lwo07uyN}OXaie)rhv0h zUY-%VfiqAnH*+>8xri~Cru|bSNshZmBoz!TGc)6NUfYks%)4T4#_H;>%F4`$a8s9u z$3G)8Z-SqgS!F47F|$g4F?Na<23*X{m}2R)%-g9GOSiHRGfO3!$&*gZA!cR@8#7we zwjGb1=lvCHY;JoGYum<|ZTHZ&-JaRD+p%qXl1wvk{_p=@Uy*FPwr$&%M`}}RNn~Q0 zpA*8+FcyV{WieR*bj@&U+g7d2d++}^bfy`D)H?E%K}-$guDQFrT#;zoR?tT0c`HiM z3n4jGWm&g9XtKzHjRaQIgfF(m)JC zL~`F7-5(GT@M05!fy73dL5xoBWK~Aq|0)BmX~fwGtYzjKU6(x{fal*i#kvzOw{{M7!NMhT*26`ddDwrEL1*{j@k^vVB|AO-*o_Lpq;-erP$uuto{bTqn) zHrala$-+(~s*bRhL^YW#L5je2w1!dyJ|ZZQ$def+YLIY%WoP^{TFjN+QhIH=;_l8D z7Z2RhMUV#o%nm&mIenMW+FvYeCGcab(610W{Vt0D9IYo(VsV*DwdQiL$iO)snI~X^ zanSnMX@y7NyaoUO45(I_KmdSsX+d=pLlV`1MV`_-b=gADfyxtJgcAY#hM3IjtkdVeM3Moqt0ecAk<&N#Y1Q&rb ze*evmp7@J}t28&QtvuqA&)h-ID+CV`j0Yli85v=ahEy($l2C!{00i9xD@pac)4%@3 zO$s!-;Z_~YDx>!yZJha|PiM?4mM0hg!JFlm>JC7$%P;pd$U*3YAP{@ky_>pkc-1f6 zmmm7)4`6itFQipuHNk8`GuXx{_D|JD&r69LeJ^$*iwW*P1P|o%8$1OvCQ0@0b-6%m zQTW+k@3>WEw~jW=-bG@QRrCG+lMx2{${KyW#P~76JhF>bo54KFHNh;t7lLbo<)8d( zNfrd0(DL%))Jsog5&a~seVD5Pnr$-jtFy<*ug>h=y?%^oZ@nH=`;MLom|}BGM39g` zM>DTFdFj_<@>Y89`qBH~|7mtZR)KePT`C-Q&*yG2gV%^!4n?5RP0r|jn``5cH=b)SsplAP2cn<8W0TG2bDsW@1PQbm9V41@R%{$oF>cG|!G8nrUCo=bjic`P++>sSFu@c= zY~_QSbzUU+Z4rLRq#i!%j;~KfyIE6?u1mm4+(7acK#>qMv9ORo1^(Pg;|AacO*w4j zG=@`k&)1lE8^I*Bzjun^j_+lNaTn9veyZ-F8jPHN$cQtWZ&(C-FY^d)1V9uq^g)6E zSX^J&&3r^O+obu1nK2d;Oanno;MOq;@oirNqNW>hECk-X$tE-ME5wwu338RgR*A3_ z;2#W}J@qRbnu`N(zpnLgIny^hr+WEjDaO_m&s z+c(XZrMWU{1T_X~)vb@;NZo?W7-M>=0dzA!k89|;d9I~w4yuM6BXC61Hs?U@ygev;m{1q zPrfZLX#d;f4fVfI#X#z^R`d%VlC+56Bh?568iJz*PU;ZRX2wz*LC_EqZ6Ro+25l2I zj@g>-)PFkpkK6y##gG1S+s2~kN{GGp|2ca2>wiv1(Fl^2yFQ^r5~zhZiZG*GNLy$m znbC2+H1I(rjzmbLE6RX|PLsqDdIHbT{CKSe-rP8m%yk_;e)1akfB8T77u8sUE29S= zH6MW=7pzayC;$@0belmmgzcRDXry4Gp>?7HmT|Hpmx$vhPGPj6o>2s{Pt?%De<~j_ z%8;eIK26b)XdW70BaI}nlO%_RvOko2ggjArh=f@PCGU}>hK6#W+%GzF;s`WE0OJ@S z2zX8$CpEdhk50FAg=R8pX)t7`%Ml$7BHbri)9Abi6y@lEFoeK8#EcYY1PC zbN%RtgDhI1;TWSH0_Y;jqU}+B`K^9@c>^HM29US_0ug8!ec`TwD`AVvAwFJyjve=H z0mz<0pwJRz7YlI_t~rAppZsyqfQP_t<2b<(6k3D`X&%DC;RSINkj(AWvDGt-7ogVA zDuji30wsC*u;3&{W|&lHZPgEch(CX4gsHt~E#e>?IQUeLertdYeop3~J#PGM0H?VL z8v?bJAgpfKfWo}CU=My9D0!U!J@+eeBRd(|5Vn>L34M>^KHpEgR$Gzd0h8xb7y0vd zzGvJD2tbS3y@kCH#a(wk!Oh=mQ6rqav~#I)^MBYNG_)AVm?we~Vv$-I?)c~yC`lQS z9kZG7EChJ891+61hy`-tSZ-SnNFjO&R=LQZztQ8hS^>R=)*}L0w6M+kr~K7=^_tM{DA)EQ1Attm}^uC?DikI7&5$}Oz-in3s}m$>rh zSxbJ5$O9*fGl7FdOp;_6C<4!ffg_aUX3+q@DBYMi@jA{emwDXiCD~kkJjabVebys+ z)_|p86i7navsBOWVUuJy`hI%r3<1rZx$=Dp^Uhk+tp1qXcHc8Cag6*zXKqyLf>*CZ ztlqTC+_xqNZhQ4RhP=M*nP3I9l{kT*1nx*2;y(ghFCQM-j>deu%{J zd7^ZWQlKm*T=ACFO2Fb_EYzpn4h>BcCuZx(QYFKQA>u_796ua~9_E8)pY-or{F1Ye zx_TJp4Wb|W&he0S{Pyd?Xe(V$o(T)Vks6?pq@z;^1wmOnkSI*F9s)u}TM=}mHbk^U z@I2{4f?BnF4ltAU1pW|>YHJFiMj}~LDm`8X9{3E~`%)?l* zM=2d3NkBwo(3s}7;KGFibMzIGc(VB|X`k)Oh$#CMI)j#zO;|vyb^vq+(-}%<93sjA zbZRt$tXry zb7^iR@C1#@IrJ!}{vex2NjpM9Tu*~Cj!>dAb7^*&E8Tg%4Tv{$NwiLPJ~UYAxWwYp z%)#Fil6bprd7djjcZaSc$-v)Lol1G(wh>E#JV_E+A9yU*zdTCn=}fTi=J%3h23n?d zfU7+C9-w7T{c-+0Pop26>J0mHUesrMTwgOg?%RUhf3@nX-~7qOnCcO^lOCV=^QBov zV@rUQkIvCIA|wMu>T|Wn-)YqXbcQ+c^-FULxsr@RPpZ4G^r6pBe-u`GjvKeI=A!iW zygXpYt3bx2PFtH<`S9p;fXh~YoB^UuRzHqlfS+FZke5fEe6l5w!iLif<1u|EYc;~F zn~2pFop|I4v?Wix-Nkw<0MBb~tkaHidvoV^N+QwBY54-zDH|M9A{dL^|n z`l~mHzS^xnS!BYEU?Y-wwmDIwe@B6Sa-G4B{Z&xkq=7I7A%b<&${2)5$Ee`pL`71GS22 z)}^Uc|Dzt9PuH@+dvoGn6llH`5vAo8vI6-=s5w&S0U_!$#`?isf@r-XMQi(nL#&+!nZ9 zpMUdy)Utnpzps8Hk+>aULvF%sRMOl95JzUMWxmuvs?$11eH%-)G%7;1cVXaXp>cq# zKl_OmtT%J+g^&6cQiJaLzXPDzkj8EX@`ZGmq|m3ji6FedPk!TT*uC_JuY`cF^tCTF znYaW%BM_9UTyd7_0<=fi_wpxS3gt|_BCUFsj^W#sYl>`}gxmDOS^bmFEWITzN06Uu zHhmNp2RQW!2QNo31F2~jpj*tn+~>bMqn6!60}^mIk7b5v#*G@Ijq+Uex(~tt_>+V0 z&U$N>Psrj?r*$xAa&sETraf?0|DBDIbHPJ7@3zblEpXuC_r3vx;6^4QNln@X-Q3rT-k+!GhG>L`(hwfi+?Fd|c%C7ZU{Ik&dSe{9n~nc65W9czn<>?VEnep8u?1WK z4c&(egT`bH{5k(rmK&nn!5||J&8d%0;L9Lj!7z@}-^N0{eMNhd>Rbl+qJPH%E1cVy z$U*~Gf99QfNigWR`m=8=)H4XL>SGgP7J@4?zg%$Fo_=7AfjK%rHcz{%fZh~k5L6A9cAI21G|PG(CvMrjWkUJZFK zu$GnW-(&3V3GX*aLdYm+)--Sx-iUF5-T-Pt5<%X^lntVD!lqYn&g2x7g1C+0YGT8;D| z&*#wf9_3A{8vXs05|EPk7f*L8Ivosc=oG!BXe;?;3z^m!dV0O_bmf@6Gdnk&O@nv~qZ%AI?_3w3qWd?{K$=-n+-+@7(jL z4<7i|dwW|U4WHiL4q1hhbe499fyJGyHX0}skjo??6fU?jAaK7&^N6>2QDGy}yJ5#*pL)&YpO-^J8aaIEH{ImHi!|m^#+M$gFhG!(SV-p`2AxICK`G(}sNwu|9sCyu}I@-jEJ`~Y^rV#Kfyr`(q zUssSot6s@WNy%%JAcI!zGY%a^5J=$ z;JE$|TvN`PB2bNqmoOZ*SV}AkQaJBozMaJR+jF}+r{>P4e(u^?b5(!x{FSR7I@dXK z_Wpb}RdeR1m(D`&&|DqwVgTHC?M#5uc8=nHTPBy^TB zeLczE!%_OxSAUhNR!9FSs5;m+eBadaQY&P1IA;g-0FdClPf~ahQ}%IC0&viyKCJqF z?=h)1in^(lB`mBZLP+8e7pLPm2)%RRCg-0CMu#U||LXs0)l9Qy7$=B#T#6n9-uZUo zzn5^&7mGW<9nzt?k0`2YCF#k-s!pJ5sUfw3G-}E=G&JUk^9y-%%nv+ZgrZeM=t3F1 zH{+yCY~>sssSNR?Vk=I?3Zhdb^P`HY%x}EZ)bp;~MQ6RYM$Sfho7Ff{q@lFOv$o=7 zb^t6M;A=*SM&LB{|LabG*M}fZ>Z2$N8MGK0M#jWJSzK{6mmN^qt(RE!2Qv4zs_vKE zO)t8~pNxVh-grgg8q*mV-_8VX9yLmQPQ#lh1OO-_C(I<)IhR6%qTuDg%?=;i&jTvA zuBvJcQ@mK!T@$@^s8dK@>$5J4HG`3g^J^a1q@1l$G_k0DiSjsGHx*k%+Cj%2rIKof zdlXdzhl8Dt#~Bvk0)#}J)TvjX)Lwnc%$o@kz$8pGaN9W2iGsDx{(StBb|M zXd&t_8|3?QJBJ%!n&3r;lYeku&0#g>fLnNR<+-vu3u{xD$k4>`@aNW zhIarXGjkmdBCF~;I34H0P`QSTgTvQf>cbb9+E>JL5TVtBvJrS0H4goZ)RJl}W+-Bw zl@!tz1#*qnS8nY}_yWP-$|Qs1LC-!a;Y@HCgi=pHc?k0}Y8-D)XaM-r2cA)uQ|64E z0$>hK+~e$Rl6_Dnc0n1^!Xxo0V@wq52?T*ht&CA)V}Y7K@PME=oEDg;_8b<>OMgP+ zNQeotc1h#IS1~6`L2F$Bp=6qvq5L;`kU>?P-4Brx)2%dYufTjuaI(>Y&=n5=DP<*W ziFwg+UGIm(1o0DOXmZ@*uDEAh^d!QM z1sub1n!rVn7a>k>At`_CQf=e_My>2fZK5@FJhnV!81GNY453vj_utMO)|F=r%&sd;u#Y7Kru5vxeS=cfx||3hUIRF!^}O@3Cr8# z=*l&hv*BTg!0HPA|MM|tEfp%wOp;QK>}z)3UrXq|3phJ7@o;u21o+DASk)0fFfJzN;n7G zgQir3dDVG?6V1+hoFN5M{c~PTkbT$%KH8yqr!Be#@RNbMf-k^1Ykh7NU}_qGrwPO~ z=;;y}O95pGoKAeQBbkx?d)v)X3^lBwDK$3S78AtJmeVpz_ILuQQ@Y@JnX?(S%T}r_ z3ZfWrgfyx=#f<4wHnWH+dGuu)r`i+CB~~?UX8Y&k(@I8%bgcUrBM<>vr@rg+b3V~h zJ1)s3O1dh}Os7n^iX=AfG4D0{mkc8(ngSK4(EyTWO)rJS2GL&RzvAZ5QVj$ zw4wGCFmVdX{houICuo55BZ|wo{hDG$35HT(jj;MD_38%kLNsq;)`q#DiXBBTzMS7EbA~-N**=0y66ycmQD*fhS=Owfv;o2fknj21*A6K7v4Wnpy#7^$T-EbX*t> zBvJ@Ggb}60Yz?3?Q-T6^V`-6?NE&Gi&uuD2NOZ@z$d%L45tAxBc^xt{A^cXPgI0C@V12sey8k<*>)|JW1Ah7~n83 zfs^X#gZUB^(?Qg_ zQPJ%AR%t)|w?4Gz8ejSRPfs!BHWNHaw*p?MDYP}24%>2GD8pGe{C<*-PCnu|=BsVA zf=h{&CpsCOA&FuF27Cbr@El;NP9dy3Wo+rn4k+PxHilH9l_<_jkGV+AJ`1DVd_04b z8jyknI8GZC2(Um5{LH93ak~y&Z>QSk0p56GZ8iXeQ8r(qQ)sgGwf>PmKk#(?C?&zD zD}<#=;6N~OVl+*r!w%(zC~XSR*p|>oXEt##_R&7=;m;de&}rI3!^nQe12g4C(CEZN zn4yg~(ui_KixbC^RRS>H3*S<`jS$$MGY0Bs9)UREh58$YQ-yYP12jN9jONEyzRA=4 z;TxM@>w(Yy^8UjcEa@RZy2wATSXGPDR-V8G0_VrK6G0HX`T6P#86 zJ9v-`Ib{Exe@jzYo&5fN6DWq5a2kwoMaR$G&jtMe0JP9@ps(#}>k%1&G=#FC480E0 z0uIin>pKIcX~8j7j;_Mf3^7pIrG-#!Cad0BEu&>=fwS{eW|m?kijH3xH*_LBzSh9t(Hf*M4+C-_|S8(dH3vFo?^I>Ql%G{Km-SdiM=wsI|)V>bZ1{jdu=ItKEPvWA(O zE}B8T5m121=+IKQfs>XRNtA$@n^E7AsD9eh5f7>impctGQ_>}M2DFwHOHAVIXuvM| z6L9Bb;P&?z?u8Ntm zCb#IO_4dF-sl)<X&O{n_-eDlFEOb6s=RP0sh=bBU28jD54*D&>xf5?!Z8jUb`~A zS8!|rwQH10O@O|4i%IRxaYfK!+sd;3TLdT|<$&*M;*g%VV5;C8)zG{E`Yt9wVjzxE zyT#SvkhnMNKD+)N&;+tU5Ed6OIP2lMJrRcQ@tJZo1~>&kA?&?JX?;mcpd!D(B~hEH zlBNP+zmEmusJ+SX)CZQ^g2hFbU)~5b&_A8d04C;9w&a!`?78}NjldwuWI@McQ#lkv z>RLoYM0rNa4@K) zy=_jFa}G?|d4TwovicDY(}*5&)q|eAb$Q2{Oo@$-)*8qm(dl#;Bsi;F9v3MSlq4ZZ z62K*#>%SNSC8$ZqfG3JE_xZYvrXhJMd38{vv(xEl0J-dfPCq23mttcO7F!4*?XP61 zA~I9~0CgN;lDu(16tlTI*$XTM=%W_?a&8Ik-U%f2z!DqQ#4s31j8Cej{2FArF!f-o zJXt7+J+y?Q7n?Hx+~NaMr18RB8Ut@au;Cjd2^|C-7B0Am#*8je9|N!@WXXHmJ7hr@ zlU0=ch=G$50!i1Hv)9ZG;%=@J1X>;yGho7CIBIGP)24*94!>iqFH_${U~oloQvwX` zD-8?KB~$%ka!`t5P_Z>+N+-b_48mW(A_c7 zAoyfKAWgfJ14IX)BCf+QP#KzUQ5R_3V`c`d7~t`YrzkT-OMBSXm)K27TKfpR6REUqLCvYUJx4%Z z=`N@sd82d?1nf|sW=hV?sY;7EgWwq)gn}BGp>!FU2UXs6Q`7D7tSmLhqSV{R@mRM(D>n5@sg5wOK{Lcxw`@9L;U`39KH` zLuaPk1D+k9rp4sm<%kU#7{>w;pf=(d+C0kjqU>ZC=`#Dx(~&_jhBl+)DV6_R3N{yO zB*nT*HW5~&8>I&ZrMYaAx{XdJNg%WY9?W$mFy;nx-uc!a@s{PeFsXQQYBFOx29J{^ zAWs_o-iD~w7G1Q>{DX@f>fiJQ&3#j1Lj)gD8{1rD`iYo*=A*;GY(ADuq4{Mj=>Q%u z8>8@GOi}KjbWbrGYo2aSj~$ddem+KJvyvL`HceN2Vo7Qmx{fv9X{!yVebR{LGi(~J z{DxJlm#~Uy_#@KnQ zCnbqV#9;v5vN#D8aQr#S5p9vg;!5lLu>km;uttHOoSK}0?h~hcTk58TR3>O&wnl6K zpD`da&$!!882|Sd7d~`+m6DT(!IPDm&LcJcQcDPbu_vN@L|1-hs}dSxA((9&SIZhM zmCo$Fq|DTQBLD!;go;x0CtAcJPIZd6HXP$n#}kQJ(Q#ZG-76{VUXr#kp z5K~(C1IKc%Q5&S;qCMmY904ne79bn1empj=#j)L?gT)C@<~ zQ{Hh6*$7uqNRvg4b2X7VhrB!nPwWm%>k%ASSAjB5yMZ@VZ^!ctzgg>ZyH0RV;q@&sG@zKkU}&;R(Nzd@Dz+C#_mn+W z5QV&jiGv3*u_%>qhNjL?Kt8Kr6jfc1{4@9Ajr40j(E zW(%1yn3P>(cE>B(gDOr(xe$j@rKzTC@DVLJqfsC0CmK65ke@-6(A`UhF`l8S?4{{? z{jtI-Jam6NqvWSx&vj$0BZ!pc33rTqKq)k%8AVZ4Xo*t|QP(2vdugngz$9x{69-Po87rzvyh=>sQ804V2qC+aHXdF-o3D1_mUm*>b$~Yxj;#~g4p^dwsO{FN8Ib%gp zyY07|RRM&d@gXt>i4>ZuP0AH8+wK`ZlrU-q5H52!Fj3ku~r%F`+u(7}_RjG+#t z05jpaF(upw>iy?-+WX^DPbBh!+%__E0AxTSDIm}@^5nll&7lZcVItsw5-To`?OYRJ z-$B9zy8oNE$OL}ETo_Yry{2mA^-YTkQwGLvOhPe%4%HT6XW$8g_09u3|Vh#Sp8#{?cZ%4~kwZfq|$iv*TRfQnjZ#&(QKd)az#fFTC}EGJwQiZzyK5zB}Z zs@CUCG+fMHe=2jskeqw>v_-E$l0po@s2^834K{1g2w0ZK*aB<2zJmfgiG-{d1@eF_ zVh%f|U8hcvd#=may+3JJD%p^-hF@r@v~SWTsA#SIi+iIYKmiIx&{*nXwdS0d%#Kct z^Y=7eB)e?4lxqf6vxcaKw3A5#(kgT#Oau%44i@wbco3wJ`r@+hl+^Z9JsiUUmzbbT z^aUdX6B85#iiapk6c7smaC1tAhSpACD(+^MJDr4IsFtIfv~O~g z_EOWnHcAO71rP*rx4`O-&~lTCV_T}~ODE=>Hr0Y*F{d9V_XHDqL{+yyQm|X%z0E~I zBoR9tQ_uu}*H2$;)k+UQ5J0;-2v_M%8k_`5b#M{zdkbPD>*~rXEz=%nj;;Opwbf5g z7KWhWZuVD#i#qib|8slEyCl(aYqSzdDG&r38wBpht?mfAn@;4}=7edjhp4KHc}zKl zoVFEa#9B29IWb-wOS@!}QR&2C7zcI%LL{UpBA|S61rNNwrf8%Kj>~kAvJ2$~N>!9D zfMTKOu2^sqeI9mZgDW%U{PF6S_Kb09MvjI`rP53uJIm_csi(+}?xS|4MNt%nervTE z3JL_Sq8ptcH5ytSF4oC;sTvydDIHy<4Q&~A-M-`49#Yel9UBYA8?M?G3 zr-qUw9R*3DP{q(RRW!;yTIs=GSMjqdeU)(7RU0g~>M1Sg&n+38j?q6O#3t1t6jU-0 zQDRQjFC?NcYFAp+4kNYfn{rheYGTgmC!L@Z=M-2VR-T0@TKR-E^K;*UUGo{1PDgU6 zzs~fg=MxDX2?HdCf-+q_N{gnFty5)Yu#m5m{Xb+CEI>RjVwW8PKm~Q!ZLaJU2Gs-- z!uLUqKnKuRy`o_9WCGV&GJ+teL;S{?{-5;rp|10)5tObeIL!9FE7WH(!2*hmbu+u~ zT`WgT>~PA(hxxK=$Y5`+0w`!eYhAHczf2~lw~FOAj0f26J+;Lyu(AMA0)SBA6aa^& z%4XMPuMj{1fcASdv}y$alZg%j-O+xGO=}J4fTVh!ZzRx+0mLcisOrVXuxxuFj zP*8qbg~}I0i}4^mm4U{xyykgm0R9H$_bZ>ZghERaUF|G@MirI~hXSC{>SWhGHPHTs KDw!0}WB>p{?fdQk diff --git a/android/app/src/main/res/values/ic_launcher_background.xml b/android/app/src/main/res/values/ic_launcher_background.xml deleted file mode 100644 index a256bc80..00000000 --- a/android/app/src/main/res/values/ic_launcher_background.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - #EEEEEE - \ No newline at end of file diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml deleted file mode 100644 index c35f762c..00000000 --- a/android/app/src/main/res/values/strings.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - hlsdk-portable - \ No newline at end of file From 088e69a577261781f0b279519c56b32eb6e12676 Mon Sep 17 00:00:00 2001 From: Velaron Date: Fri, 29 Dec 2023 12:30:40 +0200 Subject: [PATCH 14/27] android: add some documentation --- README.md | 25 ++++++++++++++++++- android/app/build.gradle | 9 ++----- android/app/src/main/AndroidManifest.xml | 2 +- .../xash}/hlsdk/MainActivity.java | 2 +- 4 files changed, 28 insertions(+), 10 deletions(-) rename android/app/src/main/java/{com/example => su/xash}/hlsdk/MainActivity.java (97%) diff --git a/README.md b/README.md index d7912d20..2f8d7bb7 100644 --- a/README.md +++ b/README.md @@ -241,8 +241,31 @@ schroot --chroot jessie -- cmake --build build-in-chroot ``` ## Android +1. Set up [Android Studio/Android SDK](https://developer.android.com/studio). -TODO +### Android Studio +Open the project located in the `android` folder and build. + +### Command-line +``` +cd android +./gradlew assembleRelease +``` + +### Customizing the build +settings.gradle: +* **rootProject.name** - project name displayed in Android Studio (optional). + +app/build.gradle: +* **android->namespace** and **android->defaultConfig->applicationId** - set both to desired package name. +* **getBuildNum** function - set **releaseDate** variable as desired. + +app/java/su/xash/hlsdk/MainActivity.java: +* **.putExtra("gamedir", ...)** - set desired gamedir. + +src/main/AndroidManifest.xml: +* **application->android:label** - set desired application name. +* **su.xash.engine.gamedir** value - set to same as above. ## Nintendo Switch diff --git a/android/app/build.gradle b/android/app/build.gradle index 084b5100..ee029686 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -12,7 +12,7 @@ android { applicationId 'com.example.hlsdk' versionName '1.0' versionCode getBuildNum() - minSdkVersion 19 + minSdkVersion 3 targetSdk 34 compileSdk 34 } @@ -20,6 +20,7 @@ android { externalNativeBuild { cmake { version '3.22.1' + path file('../../CMakeLists.txt') } } @@ -42,12 +43,6 @@ android { } } - externalNativeBuild { - cmake { - path file('../../CMakeLists.txt') - } - } - lint { abortOnError false } diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index ee5e0d62..d928f396 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -13,7 +13,7 @@ android:value="valve" /> diff --git a/android/app/src/main/java/com/example/hlsdk/MainActivity.java b/android/app/src/main/java/su/xash/hlsdk/MainActivity.java similarity index 97% rename from android/app/src/main/java/com/example/hlsdk/MainActivity.java rename to android/app/src/main/java/su/xash/hlsdk/MainActivity.java index ebfc1c36..5d1dd353 100644 --- a/android/app/src/main/java/com/example/hlsdk/MainActivity.java +++ b/android/app/src/main/java/su/xash/hlsdk/MainActivity.java @@ -1,4 +1,4 @@ -package com.example.hlsdk; +package su.xash.hlsdk; import android.app.Activity; import android.content.ComponentName; From a21b3456527e688eebdfbe0f70113b6a99f1b2a2 Mon Sep 17 00:00:00 2001 From: Velaron Date: Tue, 2 Jan 2024 10:45:33 +0200 Subject: [PATCH 15/27] android: merge .gitignore --- .gitignore | 10 ++++++++++ android/.gitignore | 10 ---------- 2 files changed, 10 insertions(+), 10 deletions(-) delete mode 100644 android/.gitignore diff --git a/.gitignore b/.gitignore index 42594b50..2c5017bf 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,13 @@ CMakeSettings.json CMakeFiles CMakeCache.txt Makefile + +# Android Studio/Gradle +.gradle/ +.externalNativeBuild +.cxx/ +.idea/ +local.properties +.project +.classpath +.settings \ No newline at end of file diff --git a/android/.gitignore b/android/.gitignore deleted file mode 100644 index 1b88d186..00000000 --- a/android/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -.gradle/ -build/ -.externalNativeBuild -.cxx/ -.idea/ -local.properties -.project -.classpath -.gradle -.settings \ No newline at end of file From 30c1a9fb57c2e68afaecf0a923e90a0187780299 Mon Sep 17 00:00:00 2001 From: Andrey Akhmichin <15944199+nekonomicon@users.noreply.github.com> Date: Fri, 12 Jan 2024 14:02:25 +0500 Subject: [PATCH 16/27] cmake: add option for pollyhedral optimization. --- CMakeLists.txt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index c44c8cae..9412d493 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -46,6 +46,7 @@ option(USE_NOVGUI_SCOREBOARD "Prefer non-VGUI Scoreboard when USE_VGUI is enable option(USE_VOICEMGR "Enable VOICE MANAGER." OFF) option(BUILD_CLIENT "Build client dll" ON) option(BUILD_SERVER "Build server dll" ON) +option(POLLY "Enable pollyhedral optimization" OFF) if(CMAKE_SIZEOF_VOID_P EQUAL 4 OR ((WIN32 OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux") @@ -177,3 +178,11 @@ endif() if(NOT BUILD_SERVER AND NOT BUILD_CLIENT) message(FATAL_ERROR "Nothing to build") endif() + +if(POLLY) + if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + add_compile_options(-mllvm -polly) + elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + add_compile_options(-fgraphite-identity -floop-interchange -floop-block) + endif() +endif() From b07153f800c967e8255d76bdb948e57d057a56e7 Mon Sep 17 00:00:00 2001 From: Andrey Akhmichin <15944199+nekonomicon@users.noreply.github.com> Date: Fri, 12 Jan 2024 14:08:27 +0500 Subject: [PATCH 17/27] android: enable pollyhedral optimization by default. --- android/app/build.gradle | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index ee029686..9952c3d1 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -15,6 +15,12 @@ android { minSdkVersion 3 targetSdk 34 compileSdk 34 + + externalNativeBuild { + cmake { + arguments '-DPOLLY=ON' + } + } } externalNativeBuild { @@ -64,4 +70,4 @@ static def getBuildNum() { int qBuildNum = releaseDate.until(now, ChronoUnit.DAYS) int minuteOfDay = now.getHour() * 60 + now.getMinute() return qBuildNum * 10000 + minuteOfDay -} \ No newline at end of file +} From 443124ca6fcb488303d2cc1660bd8349b739c66b Mon Sep 17 00:00:00 2001 From: Andrey Akhmichin <15944199+nekonomicon@users.noreply.github.com> Date: Fri, 12 Jan 2024 22:04:28 +0500 Subject: [PATCH 18/27] wscript: force to use server library name for android. --- wscript | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/wscript b/wscript index 02efd884..86418434 100644 --- a/wscript +++ b/wscript @@ -230,6 +230,10 @@ def configure(conf): if conf.env.HLDEMO_BUILD and conf.env.OEM_BUILD: conf.fatal('Don\'t mix Demo and OEM builds!') + # force to use server library name + if conf.env.DEST_OS == 'android': + conf.env.SERVER_LIBRARY_NAME = 'server' # can't be any other name, until specified + # strip lib from pattern if conf.env.DEST_OS not in ['android']: if conf.env.cxxshlib_PATTERN.startswith('lib'): From 63807139c3ee9fc6a370c77e884115a18c2b0e17 Mon Sep 17 00:00:00 2001 From: Andrey Akhmichin <15944199+nekonomicon@users.noreply.github.com> Date: Mon, 15 Jan 2024 07:16:49 +0500 Subject: [PATCH 19/27] cmake: always use LTO if possible. --- CMakeLists.txt | 8 ++++++++ cl_dll/CMakeLists.txt | 4 ++++ cl_dll/cl_util.h | 3 ++- cl_dll/util.cpp | 2 +- dlls/CMakeLists.txt | 4 ++++ 5 files changed, 19 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9412d493..04cf5bce 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,6 +33,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/") include(CheckIncludeFile) include(CheckCSourceCompiles) include(VSForceXPToolchain) # Force XP toolchain for Visual Studio +include(CheckIPOSupported) project (HLSDK-PORTABLE) @@ -152,6 +153,13 @@ if(VITA) add_compile_options(-fno-use-cxa-atexit) endif() +check_ipo_supported(RESULT HAVE_LTO OUTPUT LTO_ERROR) +if(HAVE_LTO) + message(STATUS "IPO / LTO enabled") +else() + message(STATUS "IPO / LTO not supported: <${LTO_ERROR}>") +endif() + check_include_file("tgmath.h" HAVE_TGMATH_H) if(HAVE_TGMATH_H) if(NOT MSVC) diff --git a/cl_dll/CMakeLists.txt b/cl_dll/CMakeLists.txt index b88821a2..be856edf 100644 --- a/cl_dll/CMakeLists.txt +++ b/cl_dll/CMakeLists.txt @@ -208,6 +208,10 @@ if(MSVC) set_property(TARGET ${CLDLL_LIBRARY} PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") endif() +if(HAVE_LTO) + set_property(TARGET ${CLDLL_LIBRARY} PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE) +endif() + install( TARGETS ${CLDLL_LIBRARY} DESTINATION "${GAMEDIR}/${CLIENT_INSTALL_DIR}/" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE diff --git a/cl_dll/cl_util.h b/cl_dll/cl_util.h index 91615660..65275c69 100644 --- a/cl_dll/cl_util.h +++ b/cl_dll/cl_util.h @@ -166,7 +166,8 @@ void VectorScale( const float *in, float scale, float *out ); float VectorNormalize( float *v ); void VectorInverse( float *v ); -extern vec3_t vec3_origin; +// extern vec3_t vec3_origin; +extern float vec3_origin[3]; // disable 'possible loss of data converting float to int' warning message #pragma warning( disable: 4244 ) diff --git a/cl_dll/util.cpp b/cl_dll/util.cpp index 7d6b6669..8b5792b4 100644 --- a/cl_dll/util.cpp +++ b/cl_dll/util.cpp @@ -33,7 +33,7 @@ #if !defined(M_PI_F) #define M_PI_F (float)M_PI #endif -extern vec3_t vec3_origin; +// extern vec3_t vec3_origin; // if C++ mangling differs from C symbol name #if _MSC_VER || __WATCOMC__ diff --git a/dlls/CMakeLists.txt b/dlls/CMakeLists.txt index 638f1a73..981a2ca1 100644 --- a/dlls/CMakeLists.txt +++ b/dlls/CMakeLists.txt @@ -173,6 +173,10 @@ if(MSVC) set_property(TARGET ${SVDLL_LIBRARY} PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") endif() +if(HAVE_LTO) + set_property(TARGET ${SVDLL_LIBRARY} PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE) +endif() + install( TARGETS ${SVDLL_LIBRARY} DESTINATION "${GAMEDIR}/${SERVER_INSTALL_DIR}/" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE From b2d171869dcfeb761babeb8e5c219107d50dc758 Mon Sep 17 00:00:00 2001 From: Andrey Akhmichin <15944199+nekonomicon@users.noreply.github.com> Date: Mon, 15 Jan 2024 07:31:16 +0500 Subject: [PATCH 20/27] Fix windows build. --- cl_dll/util.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cl_dll/util.cpp b/cl_dll/util.cpp index 8b5792b4..ec5c796f 100644 --- a/cl_dll/util.cpp +++ b/cl_dll/util.cpp @@ -37,7 +37,7 @@ // if C++ mangling differs from C symbol name #if _MSC_VER || __WATCOMC__ -vec3_t vec3_origin; +float vec3_origin[3]; #endif float Length( const float *v ) From 86c00428f52815cdd1cb2db9f3f141d91c259986 Mon Sep 17 00:00:00 2001 From: Andrey Akhmichin <15944199+nekonomicon@users.noreply.github.com> Date: Mon, 15 Jan 2024 07:40:06 +0500 Subject: [PATCH 21/27] cmake: disable RTTI for *nix. --- cl_dll/CMakeLists.txt | 2 +- dlls/CMakeLists.txt | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/cl_dll/CMakeLists.txt b/cl_dll/CMakeLists.txt index be856edf..acf5aafa 100644 --- a/cl_dll/CMakeLists.txt +++ b/cl_dll/CMakeLists.txt @@ -29,7 +29,7 @@ add_definitions(-DCLIENT_DLL) if(NOT MSVC) add_compile_options(-fno-exceptions) # GCC/Clang flag - add_compile_options(-Wno-write-strings) # GCC/Clang flag + add_compile_options(-fno-rtti) # GCC/Clang flag add_compile_options(-fvisibility=hidden) # GCC/Clang flag add_definitions(-D_LINUX -DLINUX) # It seems enough for all non-Win32 systems add_definitions(-Dstricmp=strcasecmp -Dstrnicmp=strncasecmp) diff --git a/dlls/CMakeLists.txt b/dlls/CMakeLists.txt index 981a2ca1..2530e508 100644 --- a/dlls/CMakeLists.txt +++ b/dlls/CMakeLists.txt @@ -27,6 +27,7 @@ set (SVDLL_LIBRARY server) if(NOT MSVC) add_compile_options(-fno-exceptions) # GCC/Clang flag + add_compile_options(-fno-rtti) # GCC/Clang flag add_compile_options(-Wno-invalid-offsetof) # GCC/Clang flag add_compile_options(-fvisibility=hidden) # GCC/Clang flag add_definitions(-D_LINUX) # It seems enough for all non-Win32 systems From 554dc51472e69686409cc83b616a21a42216d817 Mon Sep 17 00:00:00 2001 From: Andrey Akhmichin <15944199+nekonomicon@users.noreply.github.com> Date: Mon, 15 Jan 2024 08:55:36 +0500 Subject: [PATCH 22/27] cmake: add more release optimization flags. --- cl_dll/CMakeLists.txt | 11 +++++++++++ dlls/CMakeLists.txt | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/cl_dll/CMakeLists.txt b/cl_dll/CMakeLists.txt index acf5aafa..cc40c27e 100644 --- a/cl_dll/CMakeLists.txt +++ b/cl_dll/CMakeLists.txt @@ -36,6 +36,17 @@ if(NOT MSVC) if(NOT MINGW) add_definitions(-D_snprintf=snprintf -D_vsnprintf=vsnprintf) endif() + if(CMAKE_BUILD_TYPE MATCHES "Release" + OR (CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo" + AND CMAKE_SYSTEM_NAME STREQUAL "Android")) + add_compile_options(-fno-unwind-tables -fno-asynchronous-unwind-tables) # GCC/Clang flag + add_compile_options(-fomit-frame-pointer) # GCC/Clang flag + add_compile_options(-ftree-vectorize) # GCC/Clang flag + add_compile_options(-funsafe-math-optimizations) # GCC/Clang flag + if(CMAKE_SYSTEM_NAME STREQUAL "Android") + add_compile_options(-O3 -DNDEBUG) # gradle compiles release builds with RelWithDebInfo(-O2 -g) and strips debug symbols. + endif() + endif() else() add_definitions(-D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE) endif() diff --git a/dlls/CMakeLists.txt b/dlls/CMakeLists.txt index 2530e508..82460492 100644 --- a/dlls/CMakeLists.txt +++ b/dlls/CMakeLists.txt @@ -32,6 +32,17 @@ if(NOT MSVC) add_compile_options(-fvisibility=hidden) # GCC/Clang flag add_definitions(-D_LINUX) # It seems enough for all non-Win32 systems add_definitions(-Dstricmp=strcasecmp -Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf ) + if(CMAKE_BUILD_TYPE MATCHES "Release" + OR (CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo" + AND CMAKE_SYSTEM_NAME STREQUAL "Android")) + add_compile_options(-fno-unwind-tables -fno-asynchronous-unwind-tables) # GCC/Clang flag + add_compile_options(-fomit-frame-pointer) # GCC/Clang flag + add_compile_options(-ftree-vectorize) # GCC/Clang flag + add_compile_options(-funsafe-math-optimizations) # GCC/Clang flag + if(CMAKE_SYSTEM_NAME STREQUAL "Android") + add_compile_options(-O3 -DNDEBUG) # gradle compiles release builds with RelWithDebInfo(-O2 -g) and strips debug symbols. + endif() + endif() else() add_definitions(-D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE) endif() From 38950e4e41c6b17eeb89f8ad73b7e121b4db2d83 Mon Sep 17 00:00:00 2001 From: Andrey Akhmichin <15944199+nekonomicon@users.noreply.github.com> Date: Mon, 15 Jan 2024 10:00:46 +0500 Subject: [PATCH 23/27] cmake: strip release builds. --- cl_dll/CMakeLists.txt | 4 ++++ dlls/CMakeLists.txt | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/cl_dll/CMakeLists.txt b/cl_dll/CMakeLists.txt index cc40c27e..f1dce6bf 100644 --- a/cl_dll/CMakeLists.txt +++ b/cl_dll/CMakeLists.txt @@ -228,3 +228,7 @@ install( TARGETS ${CLDLL_LIBRARY} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE ) + +add_custom_command(TARGET ${CLDLL_LIBRARY} + POST_BUILD DEPENDS ${CLDLL_LIBRARY} + COMMAND $<$:${CMAKE_STRIP}> -s $) diff --git a/dlls/CMakeLists.txt b/dlls/CMakeLists.txt index 82460492..460f7a19 100644 --- a/dlls/CMakeLists.txt +++ b/dlls/CMakeLists.txt @@ -194,3 +194,7 @@ install( TARGETS ${SVDLL_LIBRARY} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + +add_custom_command(TARGET ${SVDLL_LIBRARY} + POST_BUILD DEPENDS ${SVDLL_LIBRARY} + COMMAND $<$:${CMAKE_STRIP}> -s $) From 90193a938312d79ed5de611476c322c9101e9326 Mon Sep 17 00:00:00 2001 From: Andrey Akhmichin <15944199+nekonomicon@users.noreply.github.com> Date: Mon, 15 Jan 2024 10:10:02 +0500 Subject: [PATCH 24/27] Check if we have sv_language cvar to detect Xash3D. --- dlls/game.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dlls/game.cpp b/dlls/game.cpp index c648c796..e64f0417 100644 --- a/dlls/game.cpp +++ b/dlls/game.cpp @@ -462,7 +462,7 @@ cvar_t sk_player_leg3 = { "sk_player_leg3","1" }; void GameDLLInit( void ) { // Register cvars here: - if( CVAR_GET_POINTER( "build" ) ) + if( !CVAR_GET_POINTER( "sv_language" ) ) g_fIsXash3D = TRUE; g_psv_gravity = CVAR_GET_POINTER( "sv_gravity" ); From 7c7a12b4bc1ee8f51be3d8e1b6579aaace601e2d Mon Sep 17 00:00:00 2001 From: Andrey Akhmichin <15944199+nekonomicon@users.noreply.github.com> Date: Mon, 15 Jan 2024 11:22:18 +0500 Subject: [PATCH 25/27] Update README.md. --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 2f8d7bb7..3bff2f52 100644 --- a/README.md +++ b/README.md @@ -164,7 +164,7 @@ sudo ./setup_chroot.sh --i386 --tarball ./com.valvesoftware.SteamRuntime.Sdk-i38 Now you can use cmake and make prepending the commands with `schroot --chroot steamrt_scout_i386 --`: ``` -schroot --chroot steamrt_scout_i386 -- cmake -B build-in-steamrt -S . +schroot --chroot steamrt_scout_i386 -- cmake -DCMAKE_BUILD_TYPE=Release -B build-in-steamrt -S . schroot --chroot steamrt_scout_i386 -- cmake --build build-in-steamrt ``` @@ -180,20 +180,20 @@ sudo apt install cmake build-essential gcc-multilib g++-multilib libsdl2-dev:i38 ### Building ``` -cmake -B build -S . +cmake -DCMAKE_BUILD_TYPE=Release -B build -S . cmake --build build ``` Note that the libraries built this way might be not compatible with Steam Half-Life. If you have such issue you can configure it to build statically with c++ and gcc libraries: ``` -cd build -cmake .. -DCMAKE_CXX_FLAGS="-static-libstdc++ -static-libgcc" +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -static-libstdc++ -static-libgcc" -B build -S . +cmake --build build ``` -Alternatively, you can avoid libstdc++/libgcc_s linking using small libsupc++ library and optimization build flags instead: +Alternatively, you can avoid libstdc++/libgcc_s linking using small libsupc++ library and optimization build flags instead(Really just set Release build type and set C compiler as C++ compiler): ``` -cd build -cmake .. -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=gcc -DCMAKE_C_FLAGS="-O3" -DCMAKE_CXX_FLAGS="-O3 -lsupc++" +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=cc -B build -S . +cmake --build build ``` To ensure portability it's still better to build using Steam Runtime or another chroot of some older distro. @@ -236,7 +236,7 @@ Insert your actual user name in place of `yourusername`. Prepend any make or cmake call with `schroot -c jessie --`: ``` -schroot --chroot jessie -- cmake -B build-in-chroot -S . +schroot --chroot jessie -- cmake -DCMAKE_BUILD_TYPE=Release -B build-in-chroot -S . schroot --chroot jessie -- cmake --build build-in-chroot ``` @@ -337,13 +337,13 @@ Install C and C++ compilers (like gcc or clang), cmake and make. ### Building ``` -cmake -B build -S . +cmake -DCMAKE_BUILD_TYPE=Release -B build -S . cmake --build build ``` Force 64-bit build: ``` -cmake -D64BIT=1 -B build -S . +cmake -DCMAKE_BUILD_TYPE=Release -D64BIT=1 -B build -S . cmake --build build ``` From 2af6840ff415557818662a387ad4569026412b11 Mon Sep 17 00:00:00 2001 From: Andrey Akhmichin <15944199+nekonomicon@users.noreply.github.com> Date: Mon, 15 Jan 2024 11:35:13 +0500 Subject: [PATCH 26/27] gha: use release configuration for linux builds. --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3b5ae35c..2cb22358 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -52,13 +52,13 @@ jobs: - name: Build on Linux if: startsWith(matrix.os, 'ubuntu') run: | - schroot --chroot steamrt_scout_i386 -- cmake -B build -S . -DCMAKE_EXE_LINKER_FLAGS="-Wl,--no-undefined" -DCMAKE_INSTALL_PREFIX="$PWD/dist" + schroot --chroot steamrt_scout_i386 -- cmake -DCMAKE_BUILD_TYPE=Release -DPOLLY=ON -B build -S . -DCMAKE_EXE_LINKER_FLAGS="-Wl,--no-undefined" -DCMAKE_INSTALL_PREFIX="$PWD/dist" schroot --chroot steamrt_scout_i386 -- cmake --build build --target all schroot --chroot steamrt_scout_i386 -- cmake --build build --target install - name: Build on Linux with vgui if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.cc, 'gcc') run: | - schroot --chroot steamrt_scout_i386 -- cmake -B build-vgui -S . -DCMAKE_EXE_LINKER_FLAGS="-Wl,--no-undefined" -DUSE_VGUI=ON -DCMAKE_INSTALL_PREFIX="$PWD/dist-vgui" + schroot --chroot steamrt_scout_i386 -- cmake -DCMAKE_BUILD_TYPE=Release -DPOLLY=ON -B build-vgui -S . -DCMAKE_EXE_LINKER_FLAGS="-Wl,--no-undefined" -DUSE_VGUI=ON -DCMAKE_INSTALL_PREFIX="$PWD/dist-vgui" cp vgui_support/vgui-dev/lib/vgui.so build-vgui/cl_dll schroot --chroot steamrt_scout_i386 -- cmake --build build-vgui --target all schroot --chroot steamrt_scout_i386 -- cmake --build build-vgui --target install From b8e143f5acd5cce9e752b4a620779f8c8aedc398 Mon Sep 17 00:00:00 2001 From: Andrey Akhmichin <15944199+nekonomicon@users.noreply.github.com> Date: Mon, 15 Jan 2024 14:10:37 +0500 Subject: [PATCH 27/27] cmake: set -O3 option to android linker. --- cl_dll/CMakeLists.txt | 1 + dlls/CMakeLists.txt | 1 + 2 files changed, 2 insertions(+) diff --git a/cl_dll/CMakeLists.txt b/cl_dll/CMakeLists.txt index f1dce6bf..9375de27 100644 --- a/cl_dll/CMakeLists.txt +++ b/cl_dll/CMakeLists.txt @@ -45,6 +45,7 @@ if(NOT MSVC) add_compile_options(-funsafe-math-optimizations) # GCC/Clang flag if(CMAKE_SYSTEM_NAME STREQUAL "Android") add_compile_options(-O3 -DNDEBUG) # gradle compiles release builds with RelWithDebInfo(-O2 -g) and strips debug symbols. + target_link_options(${CLDLL_LIBRARY} PUBLIC "LINKER:-O3") endif() endif() else() diff --git a/dlls/CMakeLists.txt b/dlls/CMakeLists.txt index 460f7a19..7da665d9 100644 --- a/dlls/CMakeLists.txt +++ b/dlls/CMakeLists.txt @@ -41,6 +41,7 @@ if(NOT MSVC) add_compile_options(-funsafe-math-optimizations) # GCC/Clang flag if(CMAKE_SYSTEM_NAME STREQUAL "Android") add_compile_options(-O3 -DNDEBUG) # gradle compiles release builds with RelWithDebInfo(-O2 -g) and strips debug symbols. + target_link_options(${SVDLL_LIBRARY} PUBLIC "LINKER:-O3") endif() endif() else()