Skip to content
Snippets Groups Projects
none_d79ae25607624aabab38435e74f1c8e4dba7abb4.hash-material.yml 55 KiB
Newer Older
rev.ng CI's avatar
rev.ng CI committed
- "add_to_path": []
  "builds":
    "default":
      "build_dependencies":
      - |-
rev.ng CI's avatar
rev.ng CI committed
        host-c-toolchain
rev.ng CI's avatar
rev.ng CI committed
      - |-
        glibc
      "configure": |
        mkdir -p "$BUILD_DIR"
rev.ng CI's avatar
rev.ng CI committed
        extract.sh --into "$BUILD_DIR" https://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz
rev.ng CI's avatar
rev.ng CI committed
        sed 's/-Winline//g' -i "$BUILD_DIR"/Makefile*
      "dependencies": []
rev.ng CI's avatar
rev.ng CI committed
      "install": |+
        cd "$BUILD_DIR"

rev.ng CI's avatar
rev.ng CI committed
        # Build
        make ${JOBS:+-j$JOBS} -f Makefile-libbz2_so PREFIX=/
        make ${JOBS:+-j$JOBS} bzip2 bzip2recover PREFIX=/

        # Install
        INSTALLDIR="${DESTDIR}${ORCHESTRA_ROOT}"
        install -dm755 "$INSTALLDIR"/{bin,lib64,include,lib64/pkgconfig}

        install -m755 bzip2-shared "$INSTALLDIR"/bin/bzip2
        install -m755 bzip2recover bzdiff bzgrep bzmore "$INSTALLDIR"/bin
        ln -sf bzip2 "$INSTALLDIR"/bin/bunzip2
        ln -sf bzip2 "$INSTALLDIR"/bin/bzcat

        cp -a libbz2.so* "$INSTALLDIR"/lib64
        ln -s libbz2.so.1.0.8 "$INSTALLDIR"/lib64/libbz2.so
        install -m644 bzlib.h "$INSTALLDIR"/include/

        cat > "$INSTALLDIR"/lib64/pkgconfig/bzip2.pc <<'EOF'
        prefix=${pcfiledir}/../..
        exec_prefix=${prefix}
        bindir=${exec_prefix}/bin
        libdir=${exec_prefix}/lib64
        includedir=${prefix}/include

        Name: bzip2
        Description: A file compression library
        Version: 1.0.8
        Libs: -L${libdir} -lbz2
        Cflags: -I${includedir}
        EOF
rev.ng CI's avatar
rev.ng CI committed

      "ndebug": !!bool |-
        true
  "commit": !!null |-
    null
  "default_build": |-
    default
  "license": |-
rev.ng CI's avatar
rev.ng CI committed
    LICENSE
rev.ng CI's avatar
rev.ng CI committed
  "repository": !!null |-
    null
  "skip_post_install": !!bool |-
    false
- "add_to_path": []
  "builds":
    "default":
      "build_dependencies":
      - |-
        cmake
      - |-
        clang-vanilla
      "configure": |+
        extract.sh --into "$BUILD_DIR/source" "https://github.com/revng/llvm-project/archive/de75a69.tar.gz"

        SUPPORT_UNITTESTS="$BUILD_DIR/source/llvm/unittests/Support"
        rm "$SUPPORT_UNITTESTS/JSONTest.cpp"
        rm "$SUPPORT_UNITTESTS/DJBTest.cpp"
        grep -vE 'JSONTest.cpp|DJBTest.cpp' "$SUPPORT_UNITTESTS/CMakeLists.txt" > "$SUPPORT_UNITTESTS/CMakeLists.txt.tmp"
        mv "$SUPPORT_UNITTESTS/CMakeLists.txt.tmp" "$SUPPORT_UNITTESTS/CMakeLists.txt"

        sed -i 's|GIT_FOUND|FALSE|g' "$BUILD_DIR/source/llvm/cmake/modules/VersionFromVCS.cmake"
        export PATH="$ORCHESTRA_ROOT/clang-vanilla/wrapped-bin:$ORCHESTRA_ROOT/clang-vanilla/bin:$PATH"
        export HARD_FLAGS_CXX_CLANG=""
        mkdir -p "$BUILD_DIR"
        cd "$BUILD_DIR";
        cmake \
          -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
          -DCMAKE_INSTALL_SO_NO_EXE=0 \
          -DCMAKE_INSTALL_PREFIX="$ORCHESTRA_ROOT" \
          -DCMAKE_PREFIX_PATH="$ORCHESTRA_ROOT" \
          "$BUILD_DIR/source/llvm" \
          -GNinja \
          -DCMAKE_BUILD_RPATH="\$ORIGIN/../lib:$ORCHESTRA_ROOT/lib" \
          -DCMAKE_INSTALL_RPATH="$RPATH_PLACEHOLDER/lib" \
          -DCMAKE_BUILD_TYPE="Release" \
          -DCMAKE_EXE_LINKER_FLAGS="-w" \
          -DCMAKE_SHARED_LINKER_FLAGS="-w" \
          -DCMAKE_MODULE_LINKER_FLAGS="-w" \
          -DCMAKE_C_FLAGS="-w" \
          -DCMAKE_CXX_FLAGS="-w" \
          -DLLVM_TARGETS_TO_BUILD="AArch64;AMDGPU;ARM;Mips;SystemZ;X86" \
          -DLLVM_INSTALL_UTILS=ON \
          -DLLVM_ENABLE_DUMP=ON \
          -DLLVM_ENABLE_TERMINFO=OFF \
          -DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF \
          -DCMAKE_CXX_STANDARD=20 \
          -DLLVM_ENABLE_Z3_SOLVER=OFF \
          -DLLVM_INCLUDE_GO_TESTS=OFF \
          -DLLVM_ENABLE_ZLIB=ON \
          -DLLVM_ENABLE_PROJECTS="clang;compiler-rt;libcxxabi;libcxx;clang-tools-extra;lld" \
          -DBUILD_SHARED_LIBS=OFF \
          -DLLVM_ENABLE_LTO=Thin \
          -DLLVM_USE_LINKER=lld \
          -DLLVM_BUILD_INSTRUMENTED=IR \
          -DLLVM_BUILD_RUNTIME=No \
          -DCMAKE_AR=$ORCHESTRA_ROOT/clang-vanilla/bin/llvm-ar \
          -DCMAKE_RANLIB=$ORCHESTRA_ROOT/clang-vanilla/bin/llvm-ranlib \
          -DCMAKE_C_COMPILER=$ORCHESTRA_ROOT/clang-vanilla/wrapped-bin/clang \
          -DCMAKE_CXX_COMPILER=$ORCHESTRA_ROOT/clang-vanilla/wrapped-bin/clang++ \
          -DLIBCXXABI_HAS_CXA_THREAD_ATEXIT_IMPL=0 \
          -DLLVM_TARGETS_TO_BUILD=X86 \
          -Wno-dev

      "dependencies":
      - |-
        gcc-host-toolchain
      - |-
        libunwind
      - |-
        zlib
      - |-
        ncurses
      "install": |+
        export PATH="$ORCHESTRA_ROOT/clang-vanilla/wrapped-bin:$ORCHESTRA_ROOT/clang-vanilla/bin:$PATH"
        export HARD_FLAGS_CXX_CLANG=""
        cd "$BUILD_DIR"

        ninja ${JOBS:+-j$JOBS} clang
        ninja ${JOBS:+-j$JOBS} check-llvm || true
        ninja ${JOBS:+-j$JOBS} check-clang || true

        rm -rf build-for-profiling
        mkdir build-for-profiling
        cd build-for-profiling
        cmake \
          "$BUILD_DIR/source/llvm" \
          -GNinja \
          -DCMAKE_C_COMPILER="$BUILD_DIR/bin/clang" \
          -DCMAKE_CXX_COMPILER="$BUILD_DIR/bin/clang++" \
          -DLLVM_ENABLE_TERMINFO=OFF \
          -DCMAKE_CXX_STANDARD=20 \
          -DLLVM_ENABLE_Z3_SOLVER=OFF \
          -DLLVM_INCLUDE_GO_TESTS=OFF \
          -DLLVM_TARGETS_TO_BUILD=X86 \
          -DCMAKE_BUILD_TYPE=RelWithDebInfo
        ninja ${JOBS:+-j$JOBS}

        PROFDATA_DIR="${DESTDIR}${ORCHESTRA_ROOT}/share/profdata"
        mkdir -p "$PROFDATA_DIR"
        llvm-profdata merge -output="$PROFDATA_DIR/clang-release.prof" $BUILD_DIR/profiles/*.profraw

      "ndebug": !!bool |-
        true
  "commit": !!null |-
    null
  "default_build": |-
    default
  "license": |-
    source/llvm/LICENSE.TXT
  "repository": !!null |-
    null
  "skip_post_install": !!bool |-
    false
- "add_to_path": []
  "builds":
    "default":
      "build_dependencies":
      - |-
        cmake
      - |-
        clang-vanilla
      - |-
        clang-profiling-data
      "configure": |+
        extract.sh --into "$BUILD_DIR/source" "https://github.com/revng/llvm-project/archive/de75a69.tar.gz"

        # compiler-rt tests fail abundantly (in the CI only)
        find "$BUILD_DIR/source/compiler-rt/test" -name "lit.*" -type f | while read FILE; do
          echo > "$FILE"
        done

        sed -i 's|GIT_FOUND|FALSE|g' "$BUILD_DIR/source/llvm/cmake/modules/VersionFromVCS.cmake"

        export PATH="$ORCHESTRA_ROOT/clang-vanilla/wrapped-bin:$ORCHESTRA_ROOT/clang-vanilla/bin:$PATH"

        export HARD_FLAGS_CXX_CLANG=""
        mkdir -p "$BUILD_DIR"
        cd "$BUILD_DIR";
        cmake \
          -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
          -DCMAKE_INSTALL_SO_NO_EXE=0 \
          -DCMAKE_INSTALL_PREFIX="$ORCHESTRA_ROOT" \
          -DCMAKE_PREFIX_PATH="$ORCHESTRA_ROOT" \
          "$BUILD_DIR/source/llvm" \
          -GNinja \
          -DCMAKE_BUILD_RPATH="\$ORIGIN/../lib:$ORCHESTRA_ROOT/lib" \
          -DCMAKE_INSTALL_RPATH="$RPATH_PLACEHOLDER/lib" \
          -DCMAKE_BUILD_TYPE="Release" \
          -DCMAKE_EXE_LINKER_FLAGS="-w" \
          -DCMAKE_SHARED_LINKER_FLAGS="-w" \
          -DCMAKE_MODULE_LINKER_FLAGS="-w" \
          -DCMAKE_C_FLAGS="-w" \
          -DCMAKE_CXX_FLAGS="-w" \
          -DLLVM_TARGETS_TO_BUILD="AArch64;AMDGPU;ARM;Mips;SystemZ;X86" \
          -DLLVM_INSTALL_UTILS=ON \
          -DLLVM_ENABLE_DUMP=ON \
          -DLLVM_ENABLE_TERMINFO=OFF \
          -DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF \
          -DCMAKE_CXX_STANDARD=20 \
          -DLLVM_ENABLE_Z3_SOLVER=OFF \
          -DLLVM_INCLUDE_GO_TESTS=OFF \
          -DLLVM_ENABLE_ZLIB=ON \
          -DLLVM_ENABLE_PROJECTS="clang;compiler-rt;libcxxabi;libcxx;clang-tools-extra;lld" \
          -DBUILD_SHARED_LIBS=ON \
          -DLIBCXXABI_HAS_CXA_THREAD_ATEXIT_IMPL=0 \
          -DCMAKE_INSTALL_PREFIX="$ORCHESTRA_ROOT/lib/llvm/clang-release" \
          -DCMAKE_INSTALL_RPATH="$RPATH_PLACEHOLDER/lib/llvm/clang-release/lib:$RPATH_PLACEHOLDER/lib" \
          -DLLVM_ENABLE_LTO=Thin \
          -DLLVM_USE_LINKER=lld \
          -DCMAKE_AR=$ORCHESTRA_ROOT/clang-vanilla/bin/llvm-ar \
          -DCMAKE_RANLIB=$ORCHESTRA_ROOT/clang-vanilla/bin/llvm-ranlib \
          -DCMAKE_C_COMPILER=$ORCHESTRA_ROOT/clang-vanilla/wrapped-bin/clang \
          -DCMAKE_CXX_COMPILER=$ORCHESTRA_ROOT/clang-vanilla/wrapped-bin/clang++ \
          -DLLVM_PROFDATA_FILE="$ORCHESTRA_ROOT/share/profdata/clang-release.prof" \
          -Wno-dev

      "dependencies":
      - |-
        gcc-host-toolchain
      - |-
        libunwind
      - |-
        zlib
      - |-
        ncurses
      "install": |2+

        export PATH="$ORCHESTRA_ROOT/clang-vanilla/wrapped-bin:$ORCHESTRA_ROOT/clang-vanilla/bin:$PATH"

        export HARD_FLAGS_CXX_CLANG=""

        cd "$BUILD_DIR"

        # Build
        ninja ${JOBS:+-j$JOBS} install

        # Run tests
        export HARD_FLAGS_C_CLANG="-w"
        export HARD_FLAGS_CXX_CLANG="-w"
        if test "$RUN_TESTS" -eq 1; then
          ninja ${JOBS:+-j$JOBS} check-all
        fi

        # Fix libc++
        rm "${DESTDIR}${ORCHESTRA_ROOT}/lib/llvm/clang-release/lib/libc++.so" || true
        echo 'INPUT(libc++.so.1 -lc++abi -lpthread)' > "${DESTDIR}${ORCHESTRA_ROOT}/lib/llvm/clang-release/lib/libc++.so"

        # Symlink to /lib/llvm/clang-release/bin/* to /bin
        for EXECUTABLE in "${DESTDIR}${ORCHESTRA_ROOT}/lib/llvm/clang-release/bin/"*; do
          ln \
            -s $(
              realpath \
                --no-symlinks \
                --relative-to="${DESTDIR}${ORCHESTRA_ROOT}/bin" \
                "${EXECUTABLE}"
            ) \
            "${DESTDIR}${ORCHESTRA_ROOT}/bin"
        done

        # Symlink to /lib/llvm/clang-release/lib/libc++*.so* to /lib
        for LIBRARY in "${DESTDIR}${ORCHESTRA_ROOT}/lib/llvm/clang-release/lib/"libc++*.so*; do
          ln \
            -s $(
              realpath \
                --no-symlinks \
                --relative-to="${DESTDIR}${ORCHESTRA_ROOT}/lib" \
                "${LIBRARY}"
            ) \
            "${DESTDIR}${ORCHESTRA_ROOT}/lib"
        done

        # Leave `opt` and `llvm-config` to the `llvm` component
        rm -f "${DESTDIR}${ORCHESTRA_ROOT}/bin/opt"*
        rm -f "${DESTDIR}${ORCHESTRA_ROOT}/bin/llvm-config"*

        # Create wrappers
        mkdir -p "${DESTDIR}${ORCHESTRA_ROOT}/link-only/bin"
        COMPILER_WRAPPER="${ORCHESTRA_DOTDIR}/support/hard-flags-compiler-wrapper.py"
        cd "${DESTDIR}${ORCHESTRA_ROOT}/link-only/bin"
        cp -a "$COMPILER_WRAPPER" clang
        cp -a "$COMPILER_WRAPPER" clang++
        cp -a "$COMPILER_WRAPPER" clang-tidy

      "ndebug": !!bool |-
        true
  "commit": !!null |-
    null
  "default_build": |-
    default
  "license": |-
    source/llvm/LICENSE.TXT
  "repository": !!null |-
    null
  "skip_post_install": !!bool |-
    false
- "add_to_path": []
  "builds":
    "default":
      "build_dependencies":
      - |-
        cmake
      "configure": |+
        extract.sh --into "$BUILD_DIR/source" "https://github.com/revng/llvm-project/archive/de75a69.tar.gz"
        sed -i 's|GIT_FOUND|FALSE|g' "$BUILD_DIR/source/llvm/cmake/modules/VersionFromVCS.cmake"
        mkdir -p "$BUILD_DIR"
        cd "$BUILD_DIR";
        cmake \
          -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
          -DCMAKE_INSTALL_SO_NO_EXE=0 \
          -DCMAKE_INSTALL_PREFIX="$ORCHESTRA_ROOT" \
          -DCMAKE_PREFIX_PATH="$ORCHESTRA_ROOT" \
          "$BUILD_DIR/source/llvm" \
          -GNinja \
          -DCMAKE_BUILD_RPATH="\$ORIGIN/../lib:$ORCHESTRA_ROOT/lib" \
          -DCMAKE_INSTALL_RPATH="$RPATH_PLACEHOLDER/lib" \
          -DCMAKE_BUILD_TYPE="Release" \
          -DCMAKE_EXE_LINKER_FLAGS="-w" \
          -DCMAKE_SHARED_LINKER_FLAGS="-w" \
          -DCMAKE_MODULE_LINKER_FLAGS="-w" \
          -DCMAKE_C_FLAGS="-w" \
          -DCMAKE_CXX_FLAGS="-w" \
          -DLLVM_TARGETS_TO_BUILD="AArch64;AMDGPU;ARM;Mips;SystemZ;X86" \
          -DLLVM_INSTALL_UTILS=ON \
          -DLLVM_ENABLE_DUMP=ON \
          -DLLVM_ENABLE_TERMINFO=OFF \
          -DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF \
          -DCMAKE_CXX_STANDARD=20 \
          -DLLVM_ENABLE_Z3_SOLVER=OFF \
          -DLLVM_INCLUDE_GO_TESTS=OFF \
          -DLLVM_ENABLE_ZLIB=ON \
          -DLLVM_ENABLE_PROJECTS="clang;lld;compiler-rt" \
          -DBUILD_SHARED_LIBS=OFF \
          -DCMAKE_INSTALL_PREFIX="$ORCHESTRA_ROOT/clang-vanilla" \
          -DLLVM_TARGETS_TO_BUILD="X86" \
          -Wno-dev

      "dependencies":
      - |-
        gcc-host-toolchain
      - |-
        libunwind
      - |-
        zlib
      - |-
        ncurses
      "install": |+
        cd "$BUILD_DIR"

        ninja ${JOBS:+-j$JOBS} install

        COMPILER_WRAPPER="${ORCHESTRA_DOTDIR}/support/hard-flags-compiler-wrapper.py"
        mkdir -p "${DESTDIR}${ORCHESTRA_ROOT}/clang-vanilla/wrapped-bin"
        cd "${DESTDIR}${ORCHESTRA_ROOT}/clang-vanilla/wrapped-bin"
        cp -a "$COMPILER_WRAPPER" clang
        cp -a "$COMPILER_WRAPPER" clang++
        cp -a "$COMPILER_WRAPPER" clang-tidy

      "ndebug": !!bool |-
        true
  "commit": !!null |-
    null
  "default_build": |-
    default
  "license": |-
    source/llvm/LICENSE.TXT
  "repository": !!null |-
    null
  "skip_post_install": !!bool |-
    false
- "add_to_path": []
  "builds":
    "default":
      "build_dependencies":
      - |-
        gcc-host-toolchain
      "configure": |
        mkdir -p "$BUILD_DIR"
        extract.sh --into "$BUILD_DIR" https://github.com/Kitware/CMake/releases/download/v3.22.2/cmake-3.22.2.tar.gz
        cd "$BUILD_DIR" && ./bootstrap \
          --prefix="$ORCHESTRA_ROOT" \
          --parallel=16 \
          LDFLAGS="-static-libstdc++ -static-libgcc" \
          -- -DCMAKE_BUILD_TYPE=Release \
          -DCMAKE_INSTALL_PREFIX="$ORCHESTRA_ROOT" \
          -DCMAKE_SHARED_LINKER_FLAGS="-static-libstdc++ -static-libgcc" \
          -DCMAKE_MODULE_LINKER_FLAGS="-static-libstdc++ -static-libgcc" \
          -DCMAKE_EXE_LINKER_FLAGS="-static-libstdc++ -static-libgcc" \
          -DCMAKE_USE_OPENSSL=OFF
      "dependencies": []
      "install": |
        cd "$BUILD_DIR"
        make ${JOBS:+-j$JOBS}
        make ${JOBS:+-j$JOBS} install DESTDIR="$DESTDIR"
      "ndebug": !!bool |-
        true
  "commit": !!null |-
    null
  "default_build": |-
    default
  "license": |-
    Licenses/README.rst
  "repository": !!null |-
    null
  "skip_post_install": !!bool |-
    false
- "add_to_path": []
  "builds":
rev.ng CI's avatar
rev.ng CI committed
    "debug":
      "build_dependencies":
      - |-
        cmake
      - |-
        host-c-toolchain
      "configure": |2

        extract.sh "https://github.com/libexpat/libexpat/releases/download/R_2_4_8/expat-2.4.8.tar.gz"
rev.ng CI's avatar
rev.ng CI committed
        mkdir -p "$BUILD_DIR"
rev.ng CI's avatar
rev.ng CI committed

        cd "$BUILD_DIR";
        cmake \
          -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
          -DCMAKE_INSTALL_SO_NO_EXE=0 \
          -DCMAKE_INSTALL_PREFIX="$ORCHESTRA_ROOT" \
          -DCMAKE_PREFIX_PATH="$ORCHESTRA_ROOT" \
          "$SOURCE_DIR" \
          -G"Ninja" \
          -DCMAKE_C_COMPILER="$ORCHESTRA_ROOT/link-only/bin/clang" \
          -DCMAKE_CXX_COMPILER="$ORCHESTRA_ROOT/link-only/bin/clang++" \
          -DCMAKE_C_FLAGS="-ggdb3 -O0   " \
          -DCMAKE_CXX_FLAGS="-ggdb3 -O0   " \
          -DCMAKE_BUILD_RPATH="$RPATH_PLACEHOLDER/lib:$RPATH_PLACEHOLDER/lib64/clang/12.0.0/lib/linux:$RPATH_PLACEHOLDER/lib/revng/analyses" \
          -DCMAKE_INSTALL_RPATH="$RPATH_PLACEHOLDER/lib:$RPATH_PLACEHOLDER/lib64/clang/12.0.0/lib/linux:$RPATH_PLACEHOLDER/lib/revng/analyses" \
          -DCMAKE_BUILD_TYPE="Debug"
      "dependencies": []
      "install": |
        cmake --build "$BUILD_DIR" ${JOBS:+-j$JOBS}



        cmake --install "$BUILD_DIR"
      "ndebug": !!bool |-
        false
    "optimized":
      "build_dependencies":
rev.ng CI's avatar
rev.ng CI committed
      - |-
rev.ng CI's avatar
rev.ng CI committed
        cmake
rev.ng CI's avatar
rev.ng CI committed
      - |-
rev.ng CI's avatar
rev.ng CI committed
        host-c-toolchain
      "configure": |2

        extract.sh "https://github.com/libexpat/libexpat/releases/download/R_2_4_8/expat-2.4.8.tar.gz"
        mkdir -p "$BUILD_DIR"

        cd "$BUILD_DIR";
        cmake \
          -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
          -DCMAKE_INSTALL_SO_NO_EXE=0 \
          -DCMAKE_INSTALL_PREFIX="$ORCHESTRA_ROOT" \
          -DCMAKE_PREFIX_PATH="$ORCHESTRA_ROOT" \
          "$SOURCE_DIR" \
          -G"Ninja" \
          -DCMAKE_C_COMPILER="$ORCHESTRA_ROOT/link-only/bin/clang" \
          -DCMAKE_CXX_COMPILER="$ORCHESTRA_ROOT/link-only/bin/clang++" \
          -DCMAKE_C_FLAGS="-ggdb3 -O2 -fno-omit-frame-pointer   " \
          -DCMAKE_CXX_FLAGS="-ggdb3 -O2 -fno-omit-frame-pointer   " \
          -DCMAKE_BUILD_RPATH="$RPATH_PLACEHOLDER/lib:$RPATH_PLACEHOLDER/lib64/clang/12.0.0/lib/linux:$RPATH_PLACEHOLDER/lib/revng/analyses" \
          -DCMAKE_INSTALL_RPATH="$RPATH_PLACEHOLDER/lib:$RPATH_PLACEHOLDER/lib64/clang/12.0.0/lib/linux:$RPATH_PLACEHOLDER/lib/revng/analyses" \
          -DCMAKE_BUILD_TYPE="Debug"
      "dependencies": []
      "install": |
        cmake --build "$BUILD_DIR" ${JOBS:+-j$JOBS}



        cmake --install "$BUILD_DIR"
      "ndebug": !!bool |-
        false
    "release":
      "build_dependencies":
      - |-
        cmake
      - |-
        host-c-toolchain
      "configure": |2

        extract.sh "https://github.com/libexpat/libexpat/releases/download/R_2_4_8/expat-2.4.8.tar.gz"
        mkdir -p "$BUILD_DIR"

        cd "$BUILD_DIR";
        cmake \
          -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
          -DCMAKE_INSTALL_SO_NO_EXE=0 \
          -DCMAKE_INSTALL_PREFIX="$ORCHESTRA_ROOT" \
          -DCMAKE_PREFIX_PATH="$ORCHESTRA_ROOT" \
          "$SOURCE_DIR" \
          -G"Ninja" \
          -DCMAKE_C_COMPILER="$ORCHESTRA_ROOT/link-only/bin/clang" \
          -DCMAKE_CXX_COMPILER="$ORCHESTRA_ROOT/link-only/bin/clang++" \
          -DCMAKE_C_FLAGS="-ggdb3 -O2   " \
          -DCMAKE_CXX_FLAGS="-ggdb3 -O2   " \
          -DCMAKE_BUILD_RPATH="$RPATH_PLACEHOLDER/lib:$RPATH_PLACEHOLDER/lib64/clang/12.0.0/lib/linux:$RPATH_PLACEHOLDER/lib/revng/analyses" \
          -DCMAKE_INSTALL_RPATH="$RPATH_PLACEHOLDER/lib:$RPATH_PLACEHOLDER/lib64/clang/12.0.0/lib/linux:$RPATH_PLACEHOLDER/lib/revng/analyses" \
          -DCMAKE_BUILD_TYPE="Release"
      "dependencies": []
      "install": |
        cmake --build "$BUILD_DIR" ${JOBS:+-j$JOBS}



        cmake --install "$BUILD_DIR"
rev.ng CI's avatar
rev.ng CI committed
      "ndebug": !!bool |-
        true
  "commit": !!null |-
    null
  "default_build": |-
rev.ng CI's avatar
rev.ng CI committed
    optimized
  "license": |-
    COPYING
rev.ng CI's avatar
rev.ng CI committed
  "repository": !!null |-
    null
  "skip_post_install": !!bool |-
    false
- "add_to_path": []
  "builds":
    "default":
rev.ng CI's avatar
rev.ng CI committed
      "build_dependencies": []
      "configure": |-
        mkdir -p "$BUILD_DIR"
rev.ng CI's avatar
rev.ng CI committed
      "dependencies":
      - |-
rev.ng CI's avatar
rev.ng CI committed
        toolchain/host/gcc
rev.ng CI's avatar
rev.ng CI committed
      - |-
rev.ng CI's avatar
rev.ng CI committed
        toolchain/host/binutils
      "install": |-
        exit 0
rev.ng CI's avatar
rev.ng CI committed
      "ndebug": !!bool |-
        true
  "commit": !!null |-
    null
  "default_build": |-
    default
rev.ng CI's avatar
rev.ng CI committed
  "license": !!null |-
    null
rev.ng CI's avatar
rev.ng CI committed
  "repository": !!null |-
    null
  "skip_post_install": !!bool |-
    false
- "add_to_path": []
  "builds":
    "default":
      "build_dependencies": []
      "configure": |
        mkdir -p "$BUILD_DIR/source"
        extract.sh --into "$BUILD_DIR/source" https://ftp.gnu.org/gnu/glibc/glibc-2.13.tar.xz

        sed -i 's|test -n ".critic_missing"|false|g' "$BUILD_DIR/source/configure"
        sed -i 's|struct obstack ._obstack_compat|\0 = 0|g' "$BUILD_DIR/source/malloc/obstack.c"
        patch-if-exists "${ORCHESTRA_DOTDIR}/patches/glibc-2.13-fix-isinf.patch" "$BUILD_DIR/source"

        cd $BUILD_DIR
        export CC="cc -no-pie -fuse-ld=bfd -Wl,-z,origin -Wl,--enable-new-dtags -Wl,-rpath,$RPATH_PLACEHOLDER/link-only/lib"
        ./source/configure \
          --disable-profile \
          --without-gd \
          --enable-crypt \
          --disable-static-pie \
          --disable-systemtap \
          --disable-nscd \
          --disable-timezone-tools \
          --enable-stack-protector=strong \
          --enable-stackguard-randomization \
          --disable-cet \
          --without-selinux \
          --without-cvs \
          --disable-werror \
          --enable-bind-now \
          --disable-sanity-checks \
          --prefix="$INSTALL_LINK_ONLY_PATH" \
          CFLAGS="-w -O2 -fno-stack-protector -DNDEBUG -march=core2 -U_FORTIFY_SOURCE"
      "dependencies": []
      "install": |+
        cd "$BUILD_DIR"
        make ${JOBS:+-j$JOBS}
        make ${JOBS:+-j$JOBS} install_root="$DESTDIR" install
        sed -i "s|$INSTALL_LINK_ONLY_PATH/lib/||g" \
          "$DESTDIR$INSTALL_LINK_ONLY_PATH/lib/libpthread.so" \
          "$DESTDIR$INSTALL_LINK_ONLY_PATH/lib/libc.so"
        ln -s . "$DESTDIR$INSTALL_LINK_ONLY_PATH/usr"
        rm -f "$DESTDIR$INSTALL_LINK_ONLY_PATH"/libexec/getconf/POSIX_V7_LP64_OFF64*
        rm -rf "$DESTDIR$INSTALL_LINK_ONLY_PATH"/bin
        cp -a "$DESTDIR$INSTALL_LINK_ONLY_PATH"/lib/*.o "$DESTDIR$ORCHESTRA_ROOT"/lib/

        # This file is needed because gcc fixinclude detects it when bootstrapping toolchains
        touch "$DESTDIR$INSTALL_LINK_ONLY_PATH/include/stdc-predef.h"

      "ndebug": !!bool |-
        true
  "commit": !!null |-
    null
  "default_build": |-
    default
  "license": |-
    source/COPYING
  "repository": !!null |-
    null
  "skip_post_install": !!bool |-
    false
- "add_to_path": []
  "builds":
    "default":
      "build_dependencies":
      - |-
        glibc
      "configure": |
        mkdir -p "$BUILD_DIR"
        extract.sh --into "$BUILD_DIR" "https://gmplib.org/download/gmp/gmp-6.1.2.tar.xz"
        cd "$BUILD_DIR" && ./configure \
          --prefix="$ORCHESTRA_ROOT" \
          --enable-shared=no \
          --enable-fat \
          CFLAGS="-fPIC" \
          CXXFLAGS="-fPIC" \
          LDFLAGS="-static-libgcc"
      "dependencies": []
      "install": |
        cd "$BUILD_DIR"
        make ${JOBS:+-j$JOBS}
        make ${JOBS:+-j$JOBS} install DESTDIR="$DESTDIR"
      "ndebug": !!bool |-
        true
  "commit": !!null |-
    null
  "default_build": |-
    default
  "license": |-
    COPYING
  "repository": !!null |-
    null
  "skip_post_install": !!bool |-
    false
- "add_to_path": []
  "builds":
    "default":
      "build_dependencies": []
      "configure": |-
        mkdir -p "$BUILD_DIR"
      "dependencies":
      - |-
        glibc
      - |-
        toolchain/host/binutils
      - |-
        clang-release
      "install": |-
        exit 0
      "ndebug": !!bool |-
        true
  "commit": !!null |-
    null
  "default_build": |-
    default
  "license": !!null |-
    null
  "repository": !!null |-
    null
  "skip_post_install": !!bool |-
    false
- "add_to_path": []
  "builds":
    "default":
      "build_dependencies":
      - |-
        host-c-toolchain
      - |-
        glibc
      "configure": |
        mkdir -p "$BUILD_DIR"
rev.ng CI's avatar
rev.ng CI committed
        extract.sh --into "$BUILD_DIR" https://github.com/libffi/libffi/releases/download/v3.4.2/libffi-3.4.2.tar.gz
rev.ng CI's avatar
rev.ng CI committed

        cd "$BUILD_DIR"
        ./configure \
          --disable-multi-os-directory \
          --disable-static \
          --disable-pax_emutramp \
          --disable-debug \
          --prefix="$ORCHESTRA_ROOT"
      "dependencies": []
      "install": |
        cd "$BUILD_DIR"
        make ${JOBS:+-j$JOBS}
        make ${JOBS:+-j$JOBS} install DESTDIR="$DESTDIR"
      "ndebug": !!bool |-
        true
  "commit": !!null |-
    null
  "default_build": |-
    default
  "license": |-
    LICENSE
  "repository": !!null |-
    null
  "skip_post_install": !!bool |-
    false
- "add_to_path": []
  "builds":
    "default":
      "build_dependencies":
      - |-
        gcc-host-toolchain
      - |-
        glibc
      "configure": |
        mkdir -p "$BUILD_DIR"
rev.ng CI's avatar
rev.ng CI committed
        extract.sh --into "$BUILD_DIR" https://download.savannah.nongnu.org/releases/libunwind/libunwind-1.6.2.tar.gz
rev.ng CI's avatar
rev.ng CI committed
        cd "$BUILD_DIR"
        export CC="cc -fcommon"
        ./configure \
          --enable-cxx-exceptions \
          --disable-coredump \
          --disable-ptrace \
          --enable-setjmp \
          --disable-debug-frame \
          --disable-documentation \
          --disable-minidebuginfo \
          --disable-static \
          --disable-conservative_checks \
          --disable-debug \
          --prefix="$ORCHESTRA_ROOT"
      "dependencies": []
      "install": |
        cd "$BUILD_DIR"
        make ${JOBS:+-j$JOBS}
        make ${JOBS:+-j$JOBS} install DESTDIR="$DESTDIR"
      "ndebug": !!bool |-
        true
  "commit": !!null |-
    null
  "default_build": |-
    default
  "license": |-
    COPYING
  "repository": !!null |-
    null
  "skip_post_install": !!bool |-
    false
- "add_to_path": []
  "builds":
rev.ng CI's avatar
rev.ng CI committed
    "default":
rev.ng CI's avatar
rev.ng CI committed
      "build_dependencies":
      - |-
rev.ng CI's avatar
rev.ng CI committed
        host-c-toolchain
rev.ng CI's avatar
rev.ng CI committed
      - |-
rev.ng CI's avatar
rev.ng CI committed
        glibc
rev.ng CI's avatar
rev.ng CI committed
      "configure": |
        mkdir -p "$BUILD_DIR"
rev.ng CI's avatar
rev.ng CI committed
        extract.sh --into "$BUILD_DIR" https://github.com/besser82/libxcrypt/releases/download/v4.4.28/libxcrypt-4.4.28.tar.xz

        cd "$BUILD_DIR"
        # By specifying --enable-obsolete-api=glibc we're providing libcrypt.so.1
        # and not libcrypt.so.2. Python seems to link only to the former.
        # The latter should be preferred but we'd rather not ship both.
        ./configure \
          --prefix="$ORCHESTRA_ROOT" \
          --disable-static \
          --enable-hashes=strong,glibc \
          --enable-obsolete-api=glibc \
          --disable-failure-tokens
      "dependencies": []
rev.ng CI's avatar
rev.ng CI committed
      "install": |
        cd "$BUILD_DIR"
rev.ng CI's avatar
rev.ng CI committed
        make ${JOBS:+-j$JOBS}
        make ${JOBS:+-j$JOBS} install DESTDIR="$DESTDIR"
      "ndebug": !!bool |-
        true
  "commit": !!null |-
    null
  "default_build": |-
    default
  "license": |-
    COPYING.LIB
  "repository": !!null |-
    null
  "skip_post_install": !!bool |-
    false
- "add_to_path": []
  "builds":
    "default":
      "build_dependencies": []
      "configure": |-
        mkdir -p "$BUILD_DIR"
        cd "$BUILD_DIR"
        cat > requirements.txt <<'EOF'
        # lit version should always match clang-release and llvm version
        lit==12.0.0
        EOF
rev.ng CI's avatar
rev.ng CI committed
        pip-package-list.py \
          lit \
          -r requirements.txt \
          > packages.csv
rev.ng CI's avatar
rev.ng CI committed
        mkdir -p packages
        cd packages
        while IFS=, read -r NAME URL; do
          fetch.sh "$URL"
          echo "$NAME" >> "../package-list.txt"
        done < ../packages.csv
rev.ng CI's avatar
rev.ng CI committed
      "dependencies":
      - |-
rev.ng CI's avatar
rev.ng CI committed
        python-base-packages
      "install": |-
rev.ng CI's avatar
rev.ng CI committed
        cd "$BUILD_DIR"
rev.ng CI's avatar
rev.ng CI committed
        export HARD_FLAGS_COMPILE="-I$ORCHESTRA_ROOT/include/python3.10 $HARD_FLAGS_COMPILE"
        python \
          -m pip \
          --disable-pip-version-check \
          --no-python-version-warning \
          install \
          --compile \
          --no-index \
          --no-build-isolation \
          --no-warn-script-location \
          --ignore-installed \
          --root "$DESTDIR" \
          --verbose \
          packages/*

        PYTHON_PACKAGES_DIR="$DESTDIR$ORCHESTRA_ROOT/share/orchestra/python-packages/"
        mkdir -p "$PYTHON_PACKAGES_DIR"
        cp \
          -a \
          package-list.txt \
          "$PYTHON_PACKAGES_DIR/lit.txt"
rev.ng CI's avatar
rev.ng CI committed
      "ndebug": !!bool |-
        true
rev.ng CI's avatar
rev.ng CI committed
  "commit": !!null |-
    null
rev.ng CI's avatar
rev.ng CI committed
  "default_build": |-
rev.ng CI's avatar
rev.ng CI committed
    default
  "license": !!null |-
    null
  "repository": !!null |-
    null
rev.ng CI's avatar
rev.ng CI committed
  "skip_post_install": !!bool |-
    false
- "add_to_path": []
  "builds":
    "default":
      "build_dependencies":
      - |-
        glibc
      "configure": |
        mkdir -p "$BUILD_DIR"
rev.ng CI's avatar
rev.ng CI committed
        extract.sh --into "$BUILD_DIR" https://ftp.gnu.org/gnu/mpc/mpc-1.2.1.tar.gz
rev.ng CI's avatar
rev.ng CI committed
        cd "$BUILD_DIR" && ./configure \
          --prefix="$ORCHESTRA_ROOT" \
          --with-gmp="$ORCHESTRA_ROOT" \
          --with-mpfr="$ORCHESTRA_ROOT" \
          --enable-shared=no \
          CFLAGS="-fPIC" \
          CXXFLAGS="-fPIC" \
          LDFLAGS="-static-libgcc"
      "dependencies":
      - |-
        gmp
      - |-
        mpfr
      "install": |
        cd "$BUILD_DIR"
        make ${JOBS:+-j$JOBS}
        make ${JOBS:+-j$JOBS} install DESTDIR="$DESTDIR"
      "ndebug": !!bool |-
        true
  "commit": !!null |-
    null
  "default_build": |-
    default
  "license": |-
    COPYING.LESSER
  "repository": !!null |-
    null
  "skip_post_install": !!bool |-
    false
- "add_to_path": []
  "builds":
    "default":
      "build_dependencies":
      - |-
        glibc
      "configure": |
        mkdir -p "$BUILD_DIR"
        extract.sh --into "$BUILD_DIR" https://www.mpfr.org/mpfr-4.1.0/mpfr-4.1.0.tar.xz
        cd "$BUILD_DIR" && ./configure \
          --prefix="$ORCHESTRA_ROOT" \
          --with-gmp="$ORCHESTRA_ROOT" \
          --enable-shared=no \
          CFLAGS="-fPIC" \
          CXXFLAGS="-fPIC" \
          LDFLAGS="-static-libgcc"
      "dependencies":
      - |-
        gmp
      "install": |
        cd "$BUILD_DIR"
        make ${JOBS:+-j$JOBS}
        make ${JOBS:+-j$JOBS} install DESTDIR="$DESTDIR"
      "ndebug": !!bool |-
        true
  "commit": !!null |-
    null
  "default_build": |-
    default
  "license": |-
    COPYING
  "repository": !!null |-
    null
  "skip_post_install": !!bool |-
    false
- "add_to_path": []
  "builds":
    "default":
      "build_dependencies":
      - |-
        gcc-host-toolchain
      - |-
        glibc
      "configure": |
        mkdir -p "$BUILD_DIR"
rev.ng CI's avatar
rev.ng CI committed
        extract.sh --into "$BUILD_DIR" https://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.3.tar.gz
rev.ng CI's avatar
rev.ng CI committed
        cd "$BUILD_DIR"
        ./configure \
rev.ng CI's avatar
rev.ng CI committed
          --enable-pc-files \
          --enable-widec \
rev.ng CI's avatar
rev.ng CI committed
          --with-cxx \
          --with-cxx-binding \
          --with-cxx-shared \
          --with-shared \
rev.ng CI's avatar
rev.ng CI committed
          --with-versioned-syms \
          --with-xterm-kbs=del \
          --with-manpage-format=normal \
rev.ng CI's avatar
rev.ng CI committed
          --without-ada \
          --without-assertions \
          --without-debug \
          --without-dlsym \
          --without-expanded \
          --without-gpm \
          --without-hashed-db \
          --without-profile \
          --without-tack \
          --without-tests \
          --without-trace \
rev.ng CI's avatar
rev.ng CI committed
          --prefix="$ORCHESTRA_ROOT" \
          --with-pkg-config-libdir="$ORCHESTRA_ROOT/lib/pkgconfig"
rev.ng CI's avatar
rev.ng CI committed
      "dependencies": []
rev.ng CI's avatar
rev.ng CI committed
      "install": |+
rev.ng CI's avatar
rev.ng CI committed
        cd "$BUILD_DIR"
        make ${JOBS:+-j$JOBS}
        make ${JOBS:+-j$JOBS} install DESTDIR="$DESTDIR"
rev.ng CI's avatar
rev.ng CI committed

        INSTALLDIR="${DESTDIR}${ORCHESTRA_ROOT}"

        # Adapted from ArchLinux PKGBUILD
        # fool packages looking to link to non-wide-character ncurses libraries
        for lib in ncurses ncurses++ form panel menu; do
          printf "INPUT(-l%sw)\n" "${lib}" > "$INSTALLDIR/lib/lib${lib}.so"
          ln -sv lib${lib}w.so.6.3 "$INSTALLDIR/lib/lib${lib}.so.6.3"
          ln -sv lib${lib}w.so.6.3 "$INSTALLDIR/lib/lib${lib}.so.6"
          ln -sv ${lib}w.pc "$INSTALLDIR/lib/pkgconfig/${lib}.pc"
        done

        # some packages look for -lcurses during build
        printf 'INPUT(-lncursesw)\n' > "$INSTALLDIR/lib/libcursesw.so"
        ln -sv libncurses.so "$INSTALLDIR/lib/libcurses.so"

        # tic and ticinfo functionality is built in by default
        # make sure that anything linking against it links against libncursesw.so instead
        for lib in tic tinfo; do
          printf "INPUT(libncursesw.so.6)\n" > "$INSTALLDIR/lib/lib${lib}.so"
          ln -sv libncursesw.so.6.3 "$INSTALLDIR/lib/lib${lib}.so.6.3"
          ln -sv libncursesw.so.6.3 "$INSTALLDIR/lib/lib${lib}.so.6"
          ln -sv ncursesw.pc "$INSTALLDIR/lib/pkgconfig/${lib}.pc"
        done