1DOLLY 72TOOLCHAIN rust-llvm3REQUIRES HOST runtime@04REQUIRES HOST display@05REQUIRES HOST input@06REQUIRES HOST dso@07REQUIRES HOST http@08REQUIRES HOST sockets@09REQUIRES HOST threads@01011# Build-only: the LLVM 22 libraries rustc links, at the revision Rust pins,12# compiled inside Dolly by its own c++.13FROM /v0.1.4/demos/cmake/Dollyfile-cmake-build e9a42d1ad1b8c35d3a6543a28306dc2d88e90e114bd3e6df892ffec05fbcfd5f14# LLVM's CMake requires a Python 3 interpreter.15INSTALL /v0.1.4/demos/python/Dollyfile-python 3e3b6f083bff4d9be1a817d8fa142378e2c0b492c42998e71977e2c309bdddb316REQUIRES TOOL cmake17REQUIRES TOOL make18REQUIRES TOOL python19REQUIRES TOOL cc20REQUIRES TOOL c++21REQUIRES TOOL gzip22REQUIRES TOOL tar23REQUIRES TOOL patch24REQUIRES TOOL time25REQUIRES TOOL cp26REQUIRES TOOL mkdir27REQUIRES TOOL rm2829SOURCE /v0.1.4/dist/static/rust/rust-llvm.tar.gz 29562231e68f3722be93686f9729b76866dfbf0b0c0846e450cbe548687ade5d /tmp/rust-llvm.tar.gz30SLOP time slop -c 'gzip -dc /tmp/rust-llvm.tar.gz | tar -xf - -C /'31SLOP rm /tmp/rust-llvm.tar.gz32# As demos/llvm: config.guess runs and knows no Dolly host.33SOURCE /v0.1.4/dist/static/rust/llvm-host-triple.patch ec739fd5932c1040d07344a8511bae4da4157ff2bcafa348f06a555b71a10981 /tmp/llvm-host-triple.patch34SLOP patch -p1 -d /tmp/rust-llvm -i /tmp/llvm-host-triple.patch35# llvm-config reports paths beside its own. Dolly has no /proc/self/exe, so it36# finds itself as OpenBSD's does: from argv[0].37SOURCE /v0.1.4/dist/static/rust/llvm-main-executable.patch a9fb350ef60401eeea39f75895ffc2bc89747ac4338a6daa0c3350491d0d025a /tmp/llvm-main-executable.patch38SLOP patch -p1 -d /tmp/rust-llvm -i /tmp/llvm-main-executable.patch3940# As demos/llvm configures LLVM 24, and position-independent: rustc is linked41# as a host of procedural-macro libraries.42FILE /tmp/rust-llvm/Dolly.cmake43    set(CMAKE_BUILD_TYPE Release CACHE STRING "")44    set(CMAKE_C_FLAGS "-std=gnu17 -fPIC" CACHE STRING "")45    set(CMAKE_CXX_FLAGS "-include endian.h -fPIC" CACHE STRING "")46    set(CMAKE_POSITION_INDEPENDENT_CODE ON CACHE BOOL "")47    set(CMAKE_DISABLE_PRECOMPILE_HEADERS ON CACHE BOOL "")48    set(CMAKE_RULE_MESSAGES OFF CACHE BOOL "")49    set(LLVM_ENABLE_WARNINGS OFF CACHE BOOL "")50    set(LLVM_TARGETS_TO_BUILD WebAssembly CACHE STRING "")51    set(LLVM_HOST_TRIPLE wasm64-unknown-emscripten CACHE STRING "")52    set(LLVM_DEFAULT_TARGET_TRIPLE wasm64-unknown-emscripten CACHE STRING "")53    foreach(option THREADS TERMINFO LIBEDIT LIBPFM ZLIB ZSTD LIBXML2 CURL BINDINGS)54      set(LLVM_ENABLE_${option} OFF CACHE STRING "")55    endforeach()56    foreach(option TESTS EXAMPLES BENCHMARKS DOCS)57      set(LLVM_INCLUDE_${option} OFF CACHE BOOL "")58    endforeach()59    set(LLVM_BUILD_LLVM_DYLIB OFF CACHE BOOL "")60    set(LLVM_LINK_LLVM_DYLIB OFF CACHE BOOL "")61SLOP time cmake -C /tmp/rust-llvm/Dolly.cmake -S /tmp/rust-llvm/llvm -B /tmp/rust-llvm/build6263# The components rustc_llvm asks llvm-config for.64SLOP CWD /tmp/rust-llvm/build time make -k -j4 LLVMipo LLVMBitReader LLVMBitWriter LLVMLinker LLVMAsmParser LLVMLTO LLVMCoverage LLVMInstrumentation LLVMWebAssemblyCodeGen LLVMWebAssemblyAsmParser LLVMWebAssemblyDisassembler llvm-config65# Installed as llvm-config expects: the prefix is its directory's parent.66SLOP mkdir -p /opt/rust-llvm/bin /opt/rust-llvm/lib /opt/rust-llvm/include67SLOP cp /tmp/rust-llvm/build/bin/llvm-config /opt/rust-llvm/bin/llvm-config68SLOP CWD /tmp/rust-llvm/build slop -c 'cp lib/*.a /opt/rust-llvm/lib'69SLOP cp -R /tmp/rust-llvm/llvm/include/llvm /tmp/rust-llvm/llvm/include/llvm-c /opt/rust-llvm/include70SLOP cp -R /tmp/rust-llvm/build/include/llvm /opt/rust-llvm/include71SLOP cp /tmp/rust-llvm/llvm/LICENSE.TXT /opt/rust-llvm/LICENSE.TXT72SLOP rm -rf /tmp/rust-llvm /tmp/llvm-host-triple.patch /tmp/llvm-main-executable.patch7374FOLDER /opt/rust-llvm75SLOP /opt/rust-llvm/bin/llvm-config --version7677ENTRY /bin/foreground -i /bin/slop78