1DOLLY 72TOOLCHAIN rust-llvm3REQUIRES HOST runtime@04REQUIRES HOST display@05REQUIRES HOST input@06REQUIRES HOST download@07REQUIRES HOST dso@08REQUIRES HOST http@09REQUIRES HOST sockets@010REQUIRES HOST upload@01112# Build-only: the LLVM 22 libraries rustc links, at the revision Rust pins,13# compiled inside Dolly by its own c++.14FROM /v0.1.2/demos/cmake/Dollyfile-cmake-build 7c1a8aa0eb6e27afe59c40294c79d4c556f031f85f2cbcd01f85e9fd328feed115# LLVM's CMake requires a Python 3 interpreter.16INSTALL /v0.1.2/demos/python/Dollyfile-python 5b036ab5bdd21eab0797e497b06abe8d6adb076f29f7ff9823e7c038d353b8c317REQUIRES TOOL cmake18REQUIRES TOOL make19REQUIRES TOOL python20REQUIRES TOOL cc21REQUIRES TOOL c++22REQUIRES TOOL gzip23REQUIRES TOOL tar24REQUIRES TOOL patch25REQUIRES TOOL time26REQUIRES TOOL cp27REQUIRES TOOL mkdir28REQUIRES TOOL rm2930SOURCE /v0.1.2/dist/static/rust/rust-llvm.tar.gz 29562231e68f3722be93686f9729b76866dfbf0b0c0846e450cbe548687ade5d /tmp/rust-llvm.tar.gz31SLOP time slop -c 'gzip -dc /tmp/rust-llvm.tar.gz | tar -xf - -C /'32SLOP rm /tmp/rust-llvm.tar.gz33# As demos/llvm: config.guess runs and knows no Dolly host.34SOURCE /v0.1.2/dist/static/rust/llvm-host-triple.patch ec739fd5932c1040d07344a8511bae4da4157ff2bcafa348f06a555b71a10981 /tmp/llvm-host-triple.patch35SLOP patch -p1 -d /tmp/rust-llvm -i /tmp/llvm-host-triple.patch36# llvm-config reports paths beside its own. Dolly has no /proc/self/exe, so it37# finds itself as OpenBSD's does: from argv[0].38SOURCE /v0.1.2/dist/static/rust/llvm-main-executable.patch a9fb350ef60401eeea39f75895ffc2bc89747ac4338a6daa0c3350491d0d025a /tmp/llvm-main-executable.patch39SLOP patch -p1 -d /tmp/rust-llvm -i /tmp/llvm-main-executable.patch4041# As demos/llvm configures LLVM 24, and position-independent: rustc is linked42# as a host of procedural-macro libraries.43FILE /tmp/rust-llvm/Dolly.cmake44    set(CMAKE_BUILD_TYPE Release CACHE STRING "")45    set(CMAKE_C_FLAGS "-std=gnu17 -fPIC" CACHE STRING "")46    set(CMAKE_CXX_FLAGS "-include endian.h -fPIC" CACHE STRING "")47    set(CMAKE_POSITION_INDEPENDENT_CODE ON CACHE BOOL "")48    set(CMAKE_DISABLE_PRECOMPILE_HEADERS ON CACHE BOOL "")49    set(CMAKE_RULE_MESSAGES OFF CACHE BOOL "")50    set(LLVM_ENABLE_WARNINGS OFF CACHE BOOL "")51    set(LLVM_TARGETS_TO_BUILD WebAssembly CACHE STRING "")52    set(LLVM_HOST_TRIPLE wasm64-unknown-emscripten CACHE STRING "")53    set(LLVM_DEFAULT_TARGET_TRIPLE wasm64-unknown-emscripten CACHE STRING "")54    foreach(option THREADS TERMINFO LIBEDIT LIBPFM ZLIB ZSTD LIBXML2 CURL BINDINGS)55      set(LLVM_ENABLE_${option} OFF CACHE STRING "")56    endforeach()57    foreach(option TESTS EXAMPLES BENCHMARKS DOCS)58      set(LLVM_INCLUDE_${option} OFF CACHE BOOL "")59    endforeach()60    set(LLVM_BUILD_LLVM_DYLIB OFF CACHE BOOL "")61    set(LLVM_LINK_LLVM_DYLIB OFF CACHE BOOL "")62SLOP time cmake -C /tmp/rust-llvm/Dolly.cmake -S /tmp/rust-llvm/llvm -B /tmp/rust-llvm/build6364# The components rustc_llvm asks llvm-config for.65SLOP CWD /tmp/rust-llvm/build time make -k -j4 LLVMipo LLVMBitReader LLVMBitWriter LLVMLinker LLVMAsmParser LLVMLTO LLVMCoverage LLVMInstrumentation LLVMWebAssemblyCodeGen LLVMWebAssemblyAsmParser LLVMWebAssemblyDisassembler llvm-config66# Installed as llvm-config expects: the prefix is its directory's parent.67SLOP mkdir -p /opt/rust-llvm/bin /opt/rust-llvm/lib /opt/rust-llvm/include68SLOP cp /tmp/rust-llvm/build/bin/llvm-config /opt/rust-llvm/bin/llvm-config69SLOP CWD /tmp/rust-llvm/build slop -c 'cp lib/*.a /opt/rust-llvm/lib'70SLOP cp -R /tmp/rust-llvm/llvm/include/llvm /tmp/rust-llvm/llvm/include/llvm-c /opt/rust-llvm/include71SLOP cp -R /tmp/rust-llvm/build/include/llvm /opt/rust-llvm/include72SLOP cp /tmp/rust-llvm/llvm/LICENSE.TXT /opt/rust-llvm/LICENSE.TXT73SLOP rm -rf /tmp/rust-llvm /tmp/llvm-host-triple.patch /tmp/llvm-main-executable.patch7475FOLDER /opt/rust-llvm76SLOP /opt/rust-llvm/bin/llvm-config --version7778ENTRY /bin/foreground -i /bin/slop79