210 lines
5.1 KiB
Markdown
210 lines
5.1 KiB
Markdown
# 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
|
|
``` |