Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
d1e407d
Add delete action for imported apps
itcontrol-ca Oct 1, 2026
bae0599
Add Android storage usage bars
itcontrol-ca Oct 1, 2026
b8fc140
Merge pull request #2 from pr-io/pr-io-contributing-updates
TheReal-Flo Oct 1, 2026
1edf61f
Merge branch 'windows-android16' into pr-io-android-storage-settings
TheReal-Flo Oct 1, 2026
4e60f5a
Merge pull request #3 from pr-io/pr-io-android-storage-settings
TheReal-Flo Oct 1, 2026
165dc3a
Decouple controller input from grip activity and clarify tracking dia…
TheReal-Flo Oct 1, 2026
389f1df
Preserve color encoding across OpenXR GPU frame transfers
TheReal-Flo Oct 1, 2026
c952c8f
Bump launcher version to 1.0.3
TheReal-Flo Oct 1, 2026
6b8635c
Document Iron Man legacy loader compatibility requirements
Oct 4, 2026
ff22eee
Add portable legacy Oculus driver and Iron Man setup helpers
Oct 4, 2026
bf2c040
Prepare AXRB 1.0.4 with performance improvements and game ZIP export
TheReal-Flo Oct 6, 2026
6454401
Merge AXRB 1.0.4 from Android-XR-Bridge/windows-android16
TheReal-Flo Oct 9, 2026
5b3dba1
Add direct mode sources, multi-layer pixel frames and controller late…
TheReal-Flo Oct 15, 2026
59626ac
License AXRB under MIT again, except the GPL launcher
TheReal-Flo Oct 15, 2026
65f8a14
Document explicit Direct companion package support
Oct 16, 2026
b82c376
Mount explicit companion APKs in isolated Direct sessions
Oct 16, 2026
6cb2442
Validate companion loading in CI and handle expected patch probes
Oct 16, 2026
5b44206
Pin CI to the installed NDK and respect backend UI capabilities
Oct 16, 2026
a580649
Record passing native and local companion validation
Oct 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
101 changes: 101 additions & 0 deletions .github/workflows/direct.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
name: Direct mode
# Builds AXRB Direct (the emulator-free runner) whenever it or what it embeds
# changes; releases build it as part of the launcher setup (release.yml).
on:
push:
paths: ['direct/**', 'runtime/**', 'protocol/**', 'scripts/build/build_direct.ps1', 'scripts/build/direct_deps.ps1',
'scripts/run/run_direct_game.ps1', '.github/workflows/direct.yml']
pull_request:
paths: ['direct/**', 'runtime/**', 'protocol/**', 'scripts/build/build_direct.ps1', 'scripts/build/direct_deps.ps1',
'scripts/run/run_direct_game.ps1', '.github/workflows/direct.yml']
workflow_dispatch:
permissions:
contents: read
concurrency:
group: direct-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
build:
runs-on: windows-2022
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'
- uses: android-actions/setup-android@v3
with:
packages: 'platform-tools'
- name: Install Android build dependencies
shell: pwsh
run: |
sdkmanager 'platforms;android-29' 'platforms;android-36' 'build-tools;36.1.0' 'build-tools;35.0.0' 'ndk;29.0.14206865' 'cmake;3.22.1'
if ($LASTEXITCODE -ne 0) { throw 'Android SDK installation failed' }
"ANDROID_NDK_HOME=$env:ANDROID_HOME/ndk/29.0.14206865" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
$target = Join-Path $env:LOCALAPPDATA 'Android/Sdk'
if (!(Test-Path -LiteralPath $target)) {
New-Item -ItemType Directory -Force (Split-Path $target) | Out-Null
New-Item -ItemType Junction -Path $target -Target $env:ANDROID_HOME | Out-Null
}
- uses: actions/cache@v4
with:
path: out/deps
key: direct-deps-${{ hashFiles('scripts/build/direct_deps.ps1', 'scripts/build/build_direct.ps1', 'direct/tools/make_sysroot.py') }}
- name: Build the arm64 OpenXR runtime
shell: powershell
run: ./runtime/apk/build_apk.ps1 -Abi arm64-v8a -Sdk "$env:ANDROID_HOME" -NdkVersion 29.0.14206865
- name: Build direct mode
shell: powershell
run: ./scripts/build/build_direct.ps1 -Sdk "$env:ANDROID_HOME"
- name: Check native time conversions and translators
shell: powershell
run: |
cmake --build out/distribution/build-direct --config Release --target axrb-time-math-test
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
ctest --test-dir out/distribution/build-direct -C Release --output-on-failure
exit $LASTEXITCODE
- name: Check the system root builder
run: python -m unittest discover -s direct/tests -p test_art_session.py
- name: Check explicit companion APK staging and patch probes
shell: powershell
run: |
python -m unittest discover -s direct/tests -p test_companion_apks.py
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
./direct/tests/patch_probe.ps1
exit $LASTEXITCODE
- name: Build and test the experimental native x64 boundary
shell: powershell
run: |
cmake -S direct/x64 -B out/native-x64 -G "Visual Studio 17 2022" -A x64 "-DAXRB_NDK=$env:ANDROID_NDK_HOME"
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
cmake --build out/native-x64 --config Release --parallel
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
ctest --test-dir out/native-x64 -C Release --output-on-failure
exit $LASTEXITCODE
- name: Exercise real ART, JNI, Binder and AOSP framework
shell: powershell
run: |
python direct/tools/test_art.py --runner out/direct/axrb-direct.exe --sysroot out/deps/aosp-36-r02-art --work out/art-tests --ndk "$env:ANDROID_HOME/ndk/29.0.14206865" --build-tools "$env:ANDROID_HOME/build-tools/35.0.0" --framework
exit $LASTEXITCODE
- name: Exercise explicit companion package contexts and code loading
shell: powershell
run: |
python direct/tools/test_companion_apks.py --direct out/direct --sysroot out/deps/aosp-36-r02-art --work out/companion-apk-probe --android-jar "$env:ANDROID_HOME/platforms/android-36/android.jar" --build-tools "$env:ANDROID_HOME/build-tools/35.0.0"
exit $LASTEXITCODE
- name: Exercise Digitalis with real Android probes
shell: powershell
run: |
$env:AXRB_DIRECT_TRANSLATOR = 'digitalis'
python direct/tools/test_art.py --runner out/direct/axrb-direct.exe --sysroot out/deps/aosp-36-r02-art --work out/art-tests-digitalis --ndk "$env:ANDROID_HOME/ndk/29.0.14206865" --build-tools "$env:ANDROID_HOME/build-tools/35.0.0" --framework
exit $LASTEXITCODE
- uses: actions/upload-artifact@v4
with:
name: axrb-direct-${{ github.sha }}
if-no-files-found: error
path: out/direct/
13 changes: 9 additions & 4 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ jobs:
needs: version
if: needs.version.outputs.changed == 'true'
runs-on: windows-2022
timeout-minutes: 90
timeout-minutes: 120
env:
RELEASE_BUILD: ${{ github.event_name != 'pull_request' && github.ref_name == github.event.repository.default_branch && github.repository == 'Android-XR-Bridge/AXRB' }}
steps:
Expand All @@ -58,7 +58,7 @@ jobs:
- name: Install Android build dependencies
shell: pwsh
run: |
sdkmanager 'platforms;android-29' 'build-tools;36.1.0' 'ndk;27.3.13750724' 'cmake;3.22.1'
sdkmanager 'platforms;android-29' 'platforms;android-36' 'build-tools;36.1.0' 'build-tools;35.0.0' 'ndk;29.0.14206865' 'cmake;3.22.1'
if ($LASTEXITCODE -ne 0) { throw 'Android SDK installation failed' }
$target = Join-Path $env:LOCALAPPDATA 'Android/Sdk'
if (!(Test-Path -LiteralPath $target)) {
Expand Down Expand Up @@ -95,6 +95,11 @@ jobs:
"CSC_LINK=$file" >> $env:GITHUB_ENV
"CSC_KEY_PASSWORD=$env:CERT_PASSWORD" >> $env:GITHUB_ENV
}
# Direct mode builds Dynarmic and fetches pinned Boost headers (scripts/build/direct_deps.ps1).
- uses: actions/cache@v4
with:
path: out/deps
key: direct-deps-${{ hashFiles('scripts/build/direct_deps.ps1') }}
- name: Build complete setup
shell: powershell
run: ./scripts/build/build-launcher.ps1 -Setup -KeepUnpacked
Expand All @@ -104,8 +109,8 @@ jobs:
overwrite: true
if-no-files-found: error
path: |
out/releases/AXRB-Setup-*.exe
out/releases/AXRB-Setup-*.exe.blockmap
out/releases/AXRB-Emulatorless-Setup-*.exe
out/releases/AXRB-Emulatorless-Setup-*.exe.blockmap
out/releases/*-source.zip
out/releases/*-setup.txt
out/releases/*.yml
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ axrb-windows-bridge.*.log
*.pdb
*.ilk
*.obj
# Prebuilt ISPC objects (scripts/build/build_bc7e.py)
!runtime/vulkan/texture/bc7e/win64/*.obj
*.VC.db
*.VC.VC.opendb

Expand Down
21 changes: 5 additions & 16 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,10 @@
# Contributing to AXRB

Read [LICENSE](LICENSE) and the [coverage list](licenses/source-available-files.txt)
before copying code between components.

For source-available components, public contribution forks and pull requests
are welcome under section 3 of the
[AXRB Source-Available License](licenses/AXRB-Source-Available-1.0.txt).
That permission covers contributions and review, not separately distributed
modified products. You retain ownership of your contributions.

Launcher contributions remain GPL-3.0-or-later. Do not copy restricted native
code into the GPL launcher or GPL-derived code into restricted components.
Third-party and previously MIT-licensed material retains its existing terms.
AXRB is MIT-licensed, except for the launcher in `launcher/`, which is
GPL-3.0-or-later. Contributions are accepted under the license of the
component they change. Do not copy GPL-covered launcher code into the
MIT-licensed components.

Only submit material you have the right to contribute. Identify third-party
code and preserve upstream notices. Do not include credentials, game assets,
private logs or personal runtime data. Changes to the coverage list require
an ownership and license check; new files are not automatically covered.

Request separate distribution permissions through this repository's maintainers.
private logs or personal runtime data.
58 changes: 21 additions & 37 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,37 +1,21 @@
AXRB licensing map
==================

This repository contains separately licensed components. It is not licensed
in its entirety under MIT or under the AXRB Source-Available License.

1. New AXRB-owned contributions in licenses/source-available-files.txt,
introduced after baseline commit
19653e2c29e9cd93c25f8d0c906fa54e4c05b3c3, are offered under the AXRB
Source-Available License 1.0 in licenses/AXRB-Source-Available-1.0.txt.
Only contributions whose relevant rights the Licensor controls are covered.
Listing a file does not assert ownership of its pre-existing contents.

2. The launcher is distributed under GPL-3.0-or-later; see launcher/LICENSE
and launcher/THIRD_PARTY_NOTICES.md. The source-available restrictions do
not apply to the launcher, its modifications, or other GPL-covered work.
Previously MIT-licensed launcher portions retain their separate grant.

3. Previously released MIT code retains the permissions granted with those
copies. The original MIT notice is preserved in licenses/MIT-legacy.txt.
This change does not revoke or narrow any earlier license grant.

4. Third-party code, imported experiments, generated third-party material and
dependencies retain their respective licenses and notices. Those notices
take precedence over the coverage list. See launcher/THIRD_PARTY_NOTICES.md
and the individual source files. This license grants no third-party rights.

5. Unlisted AXRB-owned files retain the previous MIT terms unless they carry
another explicit license. New files are not automatically source-available:
they must be deliberately added to the coverage list after a rights check.

Restrictions apply to covered code, not merely to the AXRB name: renaming a
derivative does not remove them. Independent programs, including the GPL
launcher, retain their own rights even when distributed alongside AXRB.

Read CONTRIBUTING.md before submitting changes. Request separate permissions
from the maintainers at https://github.com/Android-XR-Bridge/AXRB.
MIT License

Copyright (c) 2026 Feline Reintgen

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
9 changes: 4 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,11 +101,10 @@ copyrighted game files.

## License and attribution

AXRB uses multiple licenses; see [LICENSE](LICENSE) for the exact scope.
Designated new AXRB-owned contributions are source-available: use, unchanged
forks and contributions to AXRB are allowed, while distributing modified
standalone projects requires separate permission. These restrictions do not
apply to the GPL launcher, third-party code, or earlier MIT releases.
AXRB is released under the [MIT License](LICENSE). The launcher in
`launcher/` is the exception: it contains GPL-licensed code and is
distributed under GPL-3.0-or-later ([launcher/LICENSE](launcher/LICENSE)).
Third-party code keeps its own license and notices.
See [CONTRIBUTING.md](CONTRIBUTING.md) before submitting changes.
Third-party components and RiftLift attribution are listed in
[launcher/THIRD_PARTY_NOTICES.md](launcher/THIRD_PARTY_NOTICES.md).
140 changes: 140 additions & 0 deletions direct/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
cmake_minimum_required(VERSION 3.24)
project(axrb_direct LANGUAGES C CXX)

# AXRB Direct: runs an Android ARM64 application in an ordinary Windows
# process. Guest code executes through Dynarmic; the Android userspace is the
# unmodified AOSP arm64 bionic/linker from the SDK system image, with Linux
# system calls answered here.

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")

get_filename_component(AXRB_ROOT "${CMAKE_CURRENT_LIST_DIR}/.." ABSOLUTE)
set(DYNARMIC_SOURCE "${AXRB_ROOT}/third_party/dynarmic" CACHE PATH "Pinned Dynarmic checkout")
set(BOOST_ROOT "${AXRB_ROOT}/third_party/boost_1_84_0" CACHE PATH "Boost headers for Dynarmic")
set(Boost_INCLUDE_DIR "${BOOST_ROOT}" CACHE PATH "")
set(Boost_NO_BOOST_CMAKE ON CACHE BOOL "")

set(DYNARMIC_FRONTENDS A64 CACHE STRING "" FORCE)
set(DYNARMIC_TESTS OFF CACHE BOOL "" FORCE)
set(DYNARMIC_USE_BUNDLED_EXTERNALS ON CACHE BOOL "" FORCE)
set(DYNARMIC_WARNINGS_AS_ERRORS OFF CACHE BOOL "" FORCE)
set(CMAKE_POLICY_VERSION_MINIMUM 3.5)
set(CMAKE_POLICY_DEFAULT_CMP0167 OLD)
add_subdirectory("${DYNARMIC_SOURCE}" dynarmic EXCLUDE_FROM_ALL)

set(AXRB_NDK "$ENV{ANDROID_NDK_HOME}" CACHE PATH "Android NDK used to build the guest-side helpers")
if(NOT AXRB_NDK)
file(GLOB _ndks "$ENV{LOCALAPPDATA}/Android/Sdk/ndk/*")
list(SORT _ndks COMPARE NATURAL ORDER DESCENDING)
list(GET _ndks 0 AXRB_NDK)
endif()
set(NDK_BIN "${AXRB_NDK}/toolchains/llvm/prebuilt/windows-x86_64/bin")
if(NOT EXISTS "${NDK_BIN}/clang.exe")
message(FATAL_ERROR "AXRB_NDK must name an installed Android NDK (found '${AXRB_NDK}')")
endif()

# Vulkan headers only (never the Android C library headers on the host).
set(_ndk_include "${AXRB_NDK}/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/include")
file(COPY "${_ndk_include}/vulkan" "${_ndk_include}/vk_video" DESTINATION "${CMAKE_BINARY_DIR}/vulkan-headers")

add_subdirectory(guest)
enable_testing()
add_executable(axrb-time-math-test tests/time_math.cpp)
target_include_directories(axrb-time-math-test PRIVATE src)
add_test(NAME time-math COMMAND axrb-time-math-test)
add_subdirectory(digitalis)
option(AXRB_BUILD_LEGACY_BOOT "Build the former experimental managed interpreter boot DEX" OFF)
add_subdirectory(vm)

add_executable(axrb-direct
src/main.cpp
src/log.cpp
src/memory.cpp
src/cpu.cpp
src/cpu_engine.cpp
src/fallback.cpp
src/kernel.cpp
src/vfs.cpp
src/files.cpp
src/binder.cpp
src/threads.cpp
src/signals.cpp
src/net.cpp
src/exec.cpp
src/sysroot.cpp
src/props.cpp
src/app.cpp
src/jni.cpp
src/java_vfs.cpp
src/natives.cpp
src/ndk_android.cpp
src/audio.cpp
src/vk_host.cpp
src/vk_texture.cpp
src/media.cpp
src/media_codec.cpp
src/profiler.cpp
src/window.cpp
)
target_include_directories(axrb-direct PRIVATE src "${CMAKE_BINARY_DIR}/vulkan-headers" "${AXRB_ROOT}/protocol")
# The emulator layer's texture transcoding (runtime/vulkan/texture), built for the
# host with Android header shims. bc7e links the prebuilt Windows objects ISPC
# makes from bc7e.ispc (scripts/build/build_bc7e.py), so no ISPC is needed here.
set_source_files_properties(src/vk_texture.cpp PROPERTIES INCLUDE_DIRECTORIES
"${CMAKE_CURRENT_LIST_DIR}/src/compat;${AXRB_ROOT}/runtime/vulkan")
set(_bc7e_dir "${AXRB_ROOT}/runtime/vulkan/texture/bc7e/win64")
target_sources(axrb-direct PRIVATE "${_bc7e_dir}/bc7e.obj" "${_bc7e_dir}/bc7e_sse4.obj" "${_bc7e_dir}/bc7e_avx2.obj")
target_compile_definitions(axrb-direct PRIVATE WIN32_LEAN_AND_MEAN NOMINMAX _CRT_SECURE_NO_WARNINGS UNICODE _UNICODE)
target_compile_options(axrb-direct PRIVATE /W3 /utf-8 /EHa /Zi /MP)
target_link_options(axrb-direct PRIVATE /DEBUG /OPT:REF /OPT:ICF /STACK:16777216)
target_link_libraries(axrb-direct PRIVATE arun_framework_host arun_managed arun_resources arun_manifest arun_package arun_vfs arun_diagnostics dynarmic axrb-digitalis ws2_32 bcrypt ntdll synchronization winmm dbghelp onecore psapi shell32 ole32 mfplat mfreadwrite mfuuid shlwapi)
add_dependencies(axrb-direct axrb_guest)
if(AXRB_BUILD_LEGACY_BOOT)
add_dependencies(axrb-direct arun_boot_dex)
endif()

# AXRB's OpenXR runtime (arm64, built with the NDK) and the host GPU-share layer,
# installed beside the runner when they have been built.
set(AXRB_OPENXR_RUNTIME_SO "${AXRB_ROOT}/build/runtime-arm64/runtime/src/libopenxr_runtime.so" CACHE FILEPATH
"arm64 libopenxr_runtime.so for the guest")
set(AXRB_GPU_LAYER_DLL "${AXRB_ROOT}/build/gpu/Release/axrb_gpu_layer.dll" CACHE FILEPATH
"Host GPU-share Vulkan layer")
if(EXISTS "${AXRB_OPENXR_RUNTIME_SO}")
add_custom_command(TARGET axrb-direct POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${AXRB_OPENXR_RUNTIME_SO}" "${CMAKE_BINARY_DIR}/guest/lib64/libopenxr_runtime.so")
endif()
if(EXISTS "${AXRB_GPU_LAYER_DLL}")
file(WRITE "${CMAKE_BINARY_DIR}/axrb_gpu_layer.json"
"{\"file_format_version\":\"1.2.0\",\"layer\":{\"name\":\"VK_LAYER_AXRB_gpu_share\",\"type\":\"GLOBAL\",\"library_path\":\".\\\\axrb_gpu_layer.dll\",\"api_version\":\"1.3.0\",\"implementation_version\":\"1\",\"description\":\"AXRB Windows shared eye textures\"}}
")
add_custom_command(TARGET axrb-direct POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory "$<TARGET_FILE_DIR:axrb-direct>/gpu"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${AXRB_GPU_LAYER_DLL}" "$<TARGET_FILE_DIR:axrb-direct>/gpu/axrb_gpu_layer.dll"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_BINARY_DIR}/axrb_gpu_layer.json" "$<TARGET_FILE_DIR:axrb-direct>/gpu/axrb_gpu_layer.json")
endif()

# Developer-only embedding of the proven ARM userspace for native x86 ART.
# Kept out of normal launcher/runtime builds until mixed-ISA game tests pass.
option(AXRB_BUILD_ARM_SERVICE "Build experimental embedded ARM service" OFF)
if(AXRB_BUILD_ARM_SERVICE)
get_target_property(_arm_sources axrb-direct SOURCES)
list(REMOVE_ITEM _arm_sources src/main.cpp)
add_library(axrb-arm-service SHARED ${_arm_sources} x64/arm_service.cpp)
get_target_property(_arm_includes axrb-direct INCLUDE_DIRECTORIES)
get_target_property(_arm_libraries axrb-direct LINK_LIBRARIES)
target_include_directories(axrb-arm-service PRIVATE ${_arm_includes})
target_compile_definitions(axrb-arm-service PRIVATE AXRB_ARM_SERVICE_EMBEDDED WIN32_LEAN_AND_MEAN NOMINMAX _CRT_SECURE_NO_WARNINGS UNICODE _UNICODE)
target_compile_options(axrb-arm-service PRIVATE /W3 /utf-8 /EHa /Zi /MP)
target_link_options(axrb-arm-service PRIVATE /DEBUG /OPT:REF /OPT:ICF)
target_link_libraries(axrb-arm-service PRIVATE ${_arm_libraries})
add_executable(arm-service-test x64/tests/arm_service_test.cpp)
target_link_libraries(arm-service-test PRIVATE axrb-arm-service)
target_link_options(arm-service-test PRIVATE /STACK:16777216)
add_custom_command(OUTPUT "${CMAKE_BINARY_DIR}/native-arm-helper"
COMMAND "${NDK_BIN}/clang.exe" --target=aarch64-linux-android29 -O2 -Wall -Werror
"${CMAKE_CURRENT_SOURCE_DIR}/x64/arm_service_guest.c" -ldl -o "${CMAKE_BINARY_DIR}/native-arm-helper"
DEPENDS x64/arm_service_guest.c VERBATIM)
add_custom_target(native-arm-helper ALL DEPENDS "${CMAKE_BINARY_DIR}/native-arm-helper")
endif()
Loading
Loading