summaryrefslogtreecommitdiff
path: root/archived/projt-launcher/.clusterfuzzlite/build.sh
blob: 1ef4371a2331d42910108e5fe0112fc23ef699d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/env bash
set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# In the OSS-Fuzz builder, the repo lives at /src/projtlauncher; locally this script sits in .clusterfuzzlite/
if [ -d "${SCRIPT_DIR}/projtlauncher" ]; then
  REPO_ROOT="$(cd "${SCRIPT_DIR}/projtlauncher" && pwd)"
elif [ -f "${SCRIPT_DIR}/CMakeLists.txt" ]; then
  REPO_ROOT="${SCRIPT_DIR}"
else
  REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
fi
cd "${REPO_ROOT}"

if command -v apt-get >/dev/null 2>&1; then
  apt-get update
  apt-get install -y --no-install-recommends \
    ninja-build \
    python3-pip
fi

# Qt6 not available in OSS-Fuzz environment
# Only fuzz_nbt_reader is built (uses libnbt++ and zlib, no Qt dependency)
# fuzz_gzip requires Qt6::Core (for QByteArray/QFile in GZip.cpp) - skipped

export PATH="${PATH}"

# Configure with fuzzing flags
cmake -S . -B build -G Ninja \
  -DCMAKE_BUILD_TYPE=Release \
  -DBUILD_TESTING=OFF \
  -DBUILD_FUZZERS=ON \
  -DLAUNCHER_FUZZ_ONLY=ON \
  -DCMAKE_C_COMPILER="${CC:-clang}" \
  -DCMAKE_CXX_COMPILER="${CXX:-clang++}" \
  -DCMAKE_BUILD_RPATH="\$ORIGIN" \
  -DCMAKE_INSTALL_RPATH="\$ORIGIN" \
  -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON

# Build only fuzz_nbt_reader (no Qt dependency)
# fuzz_gzip is conditionally built only when Qt6::Core is available
cmake --build build --parallel --target fuzz_nbt_reader

# Copy fuzzers to output directory
cp build/fuzz_nbt_reader "$OUT/"