xref: /netbsd-src/external/bsd/libfido2/dist/fuzz/build-coverage (revision 2d40c4512a84c0d064ec30a492c5e2a14d230bc3)
11fc1e710Schristos#!/bin/sh -eux
21fc1e710Schristos
3ba9bdd8bSchristos# Copyright (c) 2019 Yubico AB. All rights reserved.
4ba9bdd8bSchristos# Use of this source code is governed by a BSD-style
5ba9bdd8bSchristos# license that can be found in the LICENSE file.
6*2d40c451Schristos# SPDX-License-Identifier: BSD-2-Clause
7ba9bdd8bSchristos
81fc1e710SchristosLIBCBOR="$1"
91fc1e710SchristosLIBFIDO2="$2"
10ba9bdd8bSchristos
111fc1e710SchristosCC="${CC:-clang}"
121fc1e710SchristosCXX="${CXX:-clang++}"
131fc1e710SchristosPKG_CONFIG_PATH="${PKG_CONFIG_PATH:-${LIBCBOR}/install/lib/pkgconfig}"
14ba9bdd8bSchristosexport CC PKG_CONFIG_PATH
15ba9bdd8bSchristos
16ba9bdd8bSchristos# Clean up.
171fc1e710Schristosrm -rf "${LIBCBOR}/build" "${LIBCBOR}/install" "${LIBFIDO2}/build"
18ba9bdd8bSchristos
19ba9bdd8bSchristos# Patch, build, and install libcbor.
201fc1e710Schristos(cd "${LIBCBOR}" && patch -N -l -s -p0 < "${LIBFIDO2}/fuzz/README") || true
211fc1e710Schristosmkdir "${LIBCBOR}/build" "${LIBCBOR}/install"
2295dbdf32Schristos(cd "${LIBCBOR}/build" && cmake -DBUILD_SHARED_LIBS=ON \
2395dbdf32Schristos	-DCMAKE_INSTALL_PREFIX="${LIBCBOR}/install" ..)
2495dbdf32Schristosmake -C "${LIBCBOR}/build" VERBOSE=1 all install
25ba9bdd8bSchristos
26ba9bdd8bSchristos# Build libfido2.
271fc1e710Schristosmkdir -p "${LIBFIDO2}/build"
281fc1e710Schristosexport CFLAGS="-fprofile-instr-generate -fcoverage-mapping"
29*2d40c451Schristosexport CFLAGS="${CFLAGS} -fsanitize=fuzzer-no-link"
301fc1e710Schristosexport LDFLAGS="${CFLAGS}"
31*2d40c451Schristosexport FUZZ_LDFLAGS="${LDFLAGS} -fsanitize=fuzzer"
32*2d40c451Schristos(cd "${LIBFIDO2}/build" && cmake -DFUZZ=ON -DFUZZ_LDFLAGS="${FUZZ_LDFLAGS}" \
33ba9bdd8bSchristos	-DCMAKE_BUILD_TYPE=Debug ..)
341fc1e710Schristosmake -C "${LIBFIDO2}/build"
35