# MosisService Build Configuration ## Overview This document outlines the build configuration and toolchain information for the MosisService project, optimized for maximum compiler feedback and debugging capabilities on Windows. ## Gradle Build Configuration ### Build Flags and Options The project uses Gradle with Android build system that includes the following optimization flags: ### Android Build Configuration In `build.gradle.kts`: - Compile SDK: API level 36 (Android 14) - Target SDK: API level 36 - Min SDK: API level 34 (Android 14) - ndkVersion: 29.0.14206865 - ABI: arm64-v8a only ### Optimization and Debug Flags - JVM target: JDK 11 - C++ standard: C++23 - Debug builds include full symbol information - Release builds include optimization flags (-O2) ## CMake Build Configuration ### CMake Flags for Maximum Feedback In `CMakeLists.txt`: ``` set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) ``` ### Compiler Flags for Windows ``` # Debug flags for maximum feedback set(CMAKE_CXX_FLAGS_DEBUG "-g -O0 -Wall -Wextra -Wpedantic -Werror") set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG") # Enable all warnings set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-parameter -Wno-unused-variable") ``` ### C++23 Features and Debugging - Enabled C++23 standard with std::span, std::format - Debug build includes full debug symbols - Address Sanitizer enabled in debug builds - Undefined Behavior Sanitizer enabled in debug builds ## Windows Build Toolchain ### Required Tools 1. **Android Studio with Android NDK** - Android SDK - Android NDK (version 29.0.14206865) - CMake (version 3.22.1 or higher) 2. **Visual Studio 2022** - C++ development tools - Windows SDK - CMake tools for Visual Studio 3. **vcpkg** - Package manager for dependencies - RmlUi with Lua support (if available) ### Environment Variables ``` ANDROID_HOME=C:\Users\%USERNAME%\AppData\Local\Android\Sdk ANDROID_NDK_HOME=C:\Users\%USERNAME%\AppData\Local\Android\Sdk\ndk\29.0.14206865 VCPKG_ROOT=C:\Tools\vcpkg ``` ### Build Commands For maximum feedback: #### Debug Build with All Warnings ``` ./gradlew assembleDebug -Pandroid.jetifier.enable=true -Pandroid.build.legacyBundleTool=false ``` #### Release Build with Optimization ``` ./gradlew assembleRelease -Pandroid.jetifier.enable=true -Pandroid.build.legacyBundleTool=false ``` ## Build Process Steps ### 1. Prerequisites Setup - Install Android Studio with NDK - Install Visual Studio 2022 with C++ tools - Set up vcpkg and install required dependencies - Configure environment variables ### 2. Build Configuration ``` # Clean previous builds ./gradlew clean # Build with verbose output for maximum feedback ./gradlew build --info --stacktrace --configure-on-demand # Build with all warnings enabled ./gradlew compileDebugKotlin --warning-mode all ``` ### 3. CMake Configuration To enable full compiler feedback in CMake: ``` # Debug configuration with all warnings cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS_DEBUG="-g -O0 -Wall -Wextra -Wpedantic -Werror -fsanitize=address,undefined" -DCMAKE_CXX_STANDARD=23 -DCMAKE_CXX_STANDARD_REQUIRED=ON . # Release configuration cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS_RELEASE="-O3 -DNDEBUG -flto=full" . ``` ## Output Locations ### Android APKs ``` build\outputs\apk\debug\app-debug.apk build\outputs\apk\release\app-release-unsigned.apk ``` ### Native Libraries ``` build\intermediates\cmake\debug\obj\arm64-v8a\libmosis-service.so build\intermediates\cmake\debug\obj\arm64-v8a\libmosis-test.so ``` ### Build Artifacts ``` build\intermediates\cxx\Debug\1r2562ic\arm64-v8a\ build\intermediates\cmake\debug\output\lib\arm64-v8a\ ``` ## Troubleshooting Build Issues ### Common Debug Flags ``` # Enable verbose C++ compilation ./gradlew compileDebugCpp --info # Enable all warnings and stop on first error ./gradlew build -PcompileDebugCpp.warningMode=all # Show compiler output ./gradlew build --console=plain ``` ### Debugging Symbols To include debugging symbols: ``` # In CMakeLists.txt set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g3 -ggdb") ``` ### Compiler-Specific Flags ``` # For MSVC (if using Visual Studio) set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /W4 /WX /Od /Zi") # For Clang (if building with clang) set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fstandalone-debug -fexceptions -frtti") ``` ## Toolchain Locations ### Android SDK ``` C:\Users\%USERNAME%\AppData\Local\Android\Sdk ``` ### Android NDK ``` C:\Users\%USERNAME%\AppData\Local\Android\Sdk\ndk\29.0.14206865 ``` ### Visual Studio Tools ``` C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\bin\Hostx64\x64\ ``` ### CMake Location ``` C:\Program Files\CMake\bin\cmake.exe ``` ## Recommended Build Commands ### For Development with Maximum Feedback ``` # Clean and build with maximum warnings ./gradlew clean && ./gradlew build --warning-mode all --info --stacktrace # Debug build with sanitizer ./gradlew assembleDebug -Pandroid.jetifier.enable=true ``` ### For Release Builds ``` # Release build with optimization ./gradlew assembleRelease -Pandroid.jetifier.enable=true ```