Skip to content

Commit 0b23dc7

Browse files
committed
bitcoin-core: Migrate to CMake
1 parent b487d00 commit 0b23dc7

File tree

2 files changed

+15
-14
lines changed

2 files changed

+15
-14
lines changed

projects/bitcoin-core/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ RUN apt-get update && apt-get install -y \
2323
automake autotools-dev bsdmainutils build-essential cmake curl g++-multilib libtool make \
2424
patch pkg-config python3 wget zip
2525

26-
RUN git clone --depth=1 https://github.com/bitcoin/bitcoin.git bitcoin-core
26+
RUN git clone --depth=1 --branch 231104-cmake-T https://github.com/hebasto/bitcoin.git bitcoin-core
2727
RUN git clone --depth=1 https://github.com/bitcoin-core/qa-assets bitcoin-core/assets && \
2828
rm -rf bitcoin-core/assets/.git # Remove git history to save storage
2929
RUN git clone --depth 1 https://github.com/guidovranken/cryptofuzz

projects/bitcoin-core/build.sh

+14-13
Original file line numberDiff line numberDiff line change
@@ -37,34 +37,35 @@ export LDFLAGS="-flto=thin"
3737

3838
if [ "$ARCHITECTURE" = "i386" ]; then
3939
# Temporary workaround for building sqlite for 32-bit. Due to https://github.com/google/oss-fuzz/pull/10466#issuecomment-1576658462
40-
export FIX_32BIT=" -m32"
40+
export FIX_32BIT="-m32"
4141
fi
4242

43-
export CPPFLAGS="-DBOOST_MULTI_INDEX_ENABLE_SAFE_MODE ${FIX_32BIT:-}"
43+
export CPPFLAGS="-DBOOST_MULTI_INDEX_ENABLE_SAFE_MODE"
4444

4545
(
4646
cd depends
4747
sed -i --regexp-extended '/.*rm -rf .*extract_dir.*/d' ./funcs.mk # Keep extracted source
4848
make HOST=$BUILD_TRIPLET DEBUG=1 NO_QT=1 NO_BDB=1 NO_ZMQ=1 NO_UPNP=1 NO_NATPMP=1 NO_USDT=1 \
4949
AR=llvm-ar NM=llvm-nm RANLIB=llvm-ranlib STRIP=llvm-strip \
50-
CPPFLAGS="$CPPFLAGS" CXXFLAGS="$CXXFLAGS" LDFLAGS="$LDFLAGS" -j$(nproc)
50+
CC="$CC ${FIX_32BIT:-}" CXX="$CXX ${FIX_32BIT:-}" CPPFLAGS="$CPPFLAGS" CXXFLAGS="$CXXFLAGS" LDFLAGS="$LDFLAGS" -j$(nproc)
5151
)
5252

5353
# Build the fuzz targets
5454

55-
sed -i "s|PROVIDE_FUZZ_MAIN_FUNCTION|NEVER_PROVIDE_MAIN_FOR_OSS_FUZZ|g" "./configure.ac"
56-
./autogen.sh
55+
sed -i "s|PROVIDE_FUZZ_MAIN_FUNCTION|NEVER_PROVIDE_MAIN_FOR_OSS_FUZZ|g" "./src/test/fuzz/util/CMakeLists.txt"
56+
mkdir build
57+
cd build
5758

5859
# OSS-Fuzz will provide CC, CXX, etc. So only set:
59-
# * --enable-fuzz, see https://github.com/bitcoin/bitcoin/blob/master/doc/fuzzing.md
60-
# * CONFIG_SITE, see https://github.com/bitcoin/bitcoin/blob/master/depends/README.md
60+
# * -DFUZZ=ON, see https://github.com/bitcoin/bitcoin/blob/master/doc/fuzzing.md
61+
# * --toolchain, see https://github.com/bitcoin/bitcoin/blob/master/depends/README.md
6162
if [ "$SANITIZER" = "memory" ]; then
62-
CONFIG_SITE="$PWD/depends/$BUILD_TRIPLET/share/config.site" ./configure --enable-fuzz SANITIZER_LDFLAGS="$LIB_FUZZING_ENGINE" --disable-hardening --with-asm=no
63+
cmake -S .. --toolchain depends/${BUILD_TRIPLET}/share/toolchain.cmake -DCMAKE_BUILD_TYPE=None -DFUZZ=ON -DSANITIZER_LDFLAGS="$LIB_FUZZING_ENGINE" -DHARDENING=OFF -DASM=OFF
6364
else
64-
CONFIG_SITE="$PWD/depends/$BUILD_TRIPLET/share/config.site" ./configure --enable-fuzz SANITIZER_LDFLAGS="$LIB_FUZZING_ENGINE"
65+
cmake -S .. --toolchain depends/${BUILD_TRIPLET}/share/toolchain.cmake -DCMAKE_BUILD_TYPE=None -DFUZZ=ON -DSANITIZER_LDFLAGS="$LIB_FUZZING_ENGINE"
6566
fi
6667

67-
make -j$(nproc)
68+
cmake --build . -j$(nproc)
6869

6970
WRITE_ALL_FUZZ_TARGETS_AND_ABORT="/tmp/a" "./src/test/fuzz/fuzz" || true
7071
readarray FUZZ_TARGETS < "/tmp/a"
@@ -81,7 +82,7 @@ fi
8182
# replace the string in the source code and re-invoke 'make'. This is slower,
8283
# so use the hack.
8384
export MAGIC_STR="b5813eee2abc9d3358151f298b75a72264ffa119d2f71ae7fefa15c4b70b4bc5b38e87e3107a730f25891ea428b2b4fabe7a84f5bfa73c79e0479e085e4ff157"
84-
sed -i "s|std::getenv(\"FUZZ\")|\"$MAGIC_STR\"|g" "./src/test/fuzz/fuzz.cpp"
85+
sed -i "s|std::getenv(\"FUZZ\")|\"$MAGIC_STR\"|g" "../src/test/fuzz/fuzz.cpp"
8586
make -j$(nproc)
8687

8788
# Replace the magic string with the actual name of each fuzz target
@@ -90,11 +91,11 @@ for fuzz_target in ${FUZZ_TARGETS[@]}; do
9091

9192
chmod +x "$OUT/$fuzz_target"
9293
(
93-
cd assets/fuzz_seed_corpus
94+
cd ../assets/fuzz_seed_corpus
9495
if [ -d "$fuzz_target" ]; then
9596
zip --recurse-paths --quiet --junk-paths "$OUT/${fuzz_target}_seed_corpus.zip" "${fuzz_target}"
9697
fi
9798
)
9899
done
99100

100-
cp assets/fuzz_dicts/*.dict $OUT/
101+
cp ../assets/fuzz_dicts/*.dict $OUT/

0 commit comments

Comments
 (0)