ART / Dalvik multiplatform product tree for GNU/Linux and Win32 on x64.
This repository is the single entrypoint: a recursive clone yields all project-controlled source dependencies needed to build and test ART on those hosts. Host toolchains (Clang/LLVM, Windows SDK headers via xwin/windows_x64-dev-env, optional Wine for PE gates) remain machine-local and are documented separately.
git clone --recursive git@github.com:sulfatelab/dalvikvm-multiplatform.git
cd dalvikvm-multiplatformIf you already cloned without submodules:
git submodule update --init --recursiveLocal development treats
vendor/*as full nested git repositories.
.gitmodules+ gitlinks makegit clone --recursivematerialize them as submodules.
dalvikvm-multiplatform/
vendor/
art/ libcore/ libbase/ libnativehelper/ libprocinfo/
libziparchive/ logging/ unwinding/ icu/
external/{boringssl,cpu_features,dlmalloc,fmtlib,lzma,oj-libjdwp,tinyxml2}/
java-external/{bouncycastle,conscrypt,fdlibm,okhttp}/
r8/r8.jar # prebuilt D8/R8 (not a nested repo)
external/fmtlib # canonical path; legacy alias is not required
compat/
include/ # product POSIX/Win prelude headers (kept on main)
java-stubs/ openjdk_fdlibm/ src/
tools/ # bp2cmake, bootjar, windows_x64, verify gates
overlay/ # port policies
*.md # project documentation; see Documentation map
archived/ # completed migration/design records
| Former product overlay | Nested home (artmp_*) |
|---|---|
compat/windows/art/*_windows.cc |
vendor/art/runtime/multiplatform/windows/ |
openjdkjvm_memory_windows.cc |
vendor/art/openjdkjvm/ |
| Windows x64 build stubs | vendor/art/multiplatform/windows/ |
| WinNT FileSystem / properties | vendor/libcore/ojluni/... + vendor/libcore/multiplatform/windows/ |
compat/include (and product stubs) stay on main.
| Kind | Name |
|---|---|
| Nested product branch | artmp_android-16.0.0_r4 |
| Main default | main |
AOSP-touching changes land on nested artmp_* branches. Main tracks the
nested repositories as gitlinks (mode 160000). Prefer branches over
long-lived patch/overlay trees.
GitHub naming: sulfatelab/dalvikvm-multiplatform_<name> (SSH).
| Path | Nested name | Branch |
|---|---|---|
vendor/art |
art |
artmp_android-16.0.0_r4 |
vendor/external/boringssl |
boringssl |
artmp_android-16.0.0_r4 |
vendor/external/cpu_features |
cpu_features |
artmp_android-16.0.0_r4 |
vendor/external/dlmalloc |
dlmalloc |
artmp_android-16.0.0_r4 |
vendor/external/fmtlib |
fmtlib |
artmp_android-16.0.0_r4 |
vendor/external/lzma |
lzma |
artmp_android-16.0.0_r4 |
vendor/external/oj-libjdwp |
oj-libjdwp |
artmp_android-16.0.0_r4 |
vendor/external/tinyxml2 |
tinyxml2 |
artmp_android-16.0.0_r4 |
vendor/icu |
icu |
artmp_android-16.0.0_r4 |
vendor/java-external/bouncycastle |
bouncycastle |
artmp_android-16.0.0_r4 |
vendor/java-external/conscrypt |
conscrypt |
artmp_android-16.0.0_r4 |
vendor/java-external/fdlibm |
fdlibm |
artmp_android-16.0.0_r4 |
vendor/java-external/okhttp |
okhttp |
artmp_android-16.0.0_r4 |
vendor/libbase |
libbase |
artmp_android-16.0.0_r4 |
vendor/libcore |
libcore |
artmp_android-16.0.0_r4 |
vendor/libnativehelper |
libnativehelper |
artmp_android-16.0.0_r4 |
vendor/libprocinfo |
libprocinfo |
artmp_android-16.0.0_r4 |
vendor/libziparchive |
libziparchive |
artmp_android-16.0.0_r4 |
vendor/logging |
logging |
artmp_android-16.0.0_r4 |
vendor/unwinding |
unwinding |
artmp_android-16.0.0_r4 |
Windows artifacts are built with this selected toolchain:
- Compiler driver: LLVM
clang/clang++. - Linker: LLVM LLD selected by Clang with
-fuse-ld=lld(the build does not invokelld-linkas a separate driver). - Platform headers and import libraries: Windows SDK and MSVC SDK content,
provisioned in a regular-file target bundle bound to the canonical target
ID in
.art-build.local.toml. - C++ standard library/STL: LLVM
libc++; LLVMcompiler-rtsupplies target runtime support. - Target: 64-bit PE/COFF using the Microsoft x64 ABI
(
x86_64-pc-windows-msvc).
Using the Microsoft ABI does not mean using the MSVC compiler. The following compiler/ABI paths are unsupported:
cl.exeand the MSVC C/C++ compiler toolset;clang-cl;clang-mingw, MinGW GCC, or other MinGW compiler distributions;- the MinGW/
windows-gnuABI andx86_64-w64-windows-gnutarget.
Wine64 is optional for Linux-hosted PE development gates, but native Windows evidence is required for product acceptance. See win32_art_port.md for the complete toolchain and platform design.
Current x86_64 ART does not support Windows CET user shadow stacks, exposed by
Windows as Hardware-enforced Stack Protection. All defined shadow-stack,
audit, context-IP-validation, strict, and non-CET-binary policy fields must be
disabled for the entire dalvikvm or embedding process before it starts. The
startup guard classifies the named Windows SDK fields: it permits
CetDynamicApisOutOfProcOnly, which does not enable HSP, and does not assign
meaning to ReservedFlags. CFG is separate and is not equivalent to CET
shadow stacks. The exact contract is documented in
win32_faults_and_stacks.md.
Build harnesses default MDVM_NATIVE_SRC_ROOT_DIR to vendor/ in this
repo (nested multipath sources). Product CMake graphs are pure-vendor (L-006):
they must not require a sibling MinDalvikVM-Archive tree.
python tools/build_art.py init-local-config
python tools/build_art.py configure --target-id linux-x86_64-gnu
python tools/build_art.py build --target-id linux-x86_64-gnu --cmake-target dalvikvm
python tools/build_art.py stage --target-id linux-x86_64-gnu
Use windows-x86_64-msvc with the same commands after binding its target bundle
in the ignored .art-build.local.toml. The Linux test catalog does not yet
contain a runnable gate, so test reports an explicit empty-applicability
failure. Historical shell scripts and phase CMake files remain migration
evidence and focused probes; they are not product build entry points and are
not required on a native Windows host.
These root documents are part of the project context. Automated and LLM-based work should read the relevant design document before changing the corresponding subsystem. unified_art_build.md is the authoritative build-refactor tracker, while win32_open_items.md tracks Windows runtime-port work.
| Document | Purpose |
|---|---|
| unified_art_build.md | Live unified build-system refactor tracker, closed target identity model, test applicability, and acceptance contract |
| bp2cmake_linux_scope.md | Historical Linux scope, Android.bp-to-CMake converter design, and Linux native/runtime bring-up record |
| win32_art_port.md | Overall native Windows x64 architecture, toolchain policy, phased implementation record, and current platform position |
| win32_filesystem.md | Implemented Option H Windows path/filesystem model, mixed-path rules, classpath separator policy, and NIO.2 boundary |
| win32_faults_and_stacks.md | Authoritative W-010/W-014 design for Windows x64 VEH/sigchain adaptation, implicit managed faults, stack bounds/protection, and the required CET-shadow-stack-disabled process contract |
| win32_heap_memory.md | Closed W-013 design for ART-owned virtual memory, embedded dlmalloc, MoreCore, low-address policy, and native acceptance |
| win32_jit_memory.md | Current Windows x64 JIT memory design, unnamed pagefile-section dual view, historical failure analysis, and W-025 residual work |
| win32_libcore_os_natives.md | Current implementation map for Windows x64 libcore.io.Linux/Os natives, including implemented and intentional ENOSYS methods |
| win32_open_items.md | Living authoritative tracker for open workarounds, product gaps, host-validation gaps, non-goals, and closed-item history |
| win32_tls_jit_entrypoints.md | Implemented x86_64 TLS, managed ABI, quick invoke, nterp, and native/managed JIT contracts; interaction with the separate managed-fault/stack design; notes for other ISAs |
See archived/git_repo_migrate.md for the completed nested-repository and de-overlay plan, push order, and checklist.
- Push each nested
artmp_android-16.0.0_r4todalvikvm-multiplatform_<name>. - Push main with matching gitlinks.
Do not push from agent automation unless explicitly asked; prefer SSH agent on the operator machine.