3 if [ -z "${OUT}" ] || [ -z "${SRC}" ] || [ -z "${WORK}" ]; then
4 echo "OUT, SRC or WORK not set - script expects to be called inside oss-fuzz build env"
8 #shuffle CXXFLAGS -stdlib=libc++ arg into CXX as well because we use
9 #the CXX as the linker and need to pass -stdlib=libc++ to build
10 export CXX
="$CXX -stdlib=libc++ -fsanitize-blacklist=$SRC/libreoffice/bin/sanitize-blacklist.txt"
11 #similarly force the -fsanitize etc args in as well as pthread to get
12 #things to link successfully during the build
13 export LDFLAGS
="$CFLAGS -Wl,--compress-debug-sections,zlib -lpthread"
18 $SRC/libreoffice
/autogen.sh
--with-distro=LibreOfficeOssFuzz
--with-external-tar=$SRC
22 #build-time rsc tool leaks a titch
23 export ASAN_OPTIONS
="detect_leaks=0"
28 head -c -14 services.rdb
> templateservices.rdb
29 tail -c +85 .
/services
/services.rdb
>> templateservices.rdb
31 #some minimal fonts required
33 mkdir
-p $OUT/$a.fonts
34 cp $SRC/49a64f3bcf20a7909ba2751349231d6652ded9cd2840e961b5164d09de3ffa63-opens___.ttf ..
/share
/fonts
/truetype
/Liberation
* $OUT/$a.fonts
35 #minimal runtime requirements
36 cp templateservices.rdb
$OUT/$a.services.rdb
37 cp types.rdb
$OUT/$a.types.rdb
38 cp types
/offapi.rdb
$OUT/$a.moretypes.rdb
39 cat > $OUT/$a.unorc
<< EOF
41 URE_INTERNAL_LIB_DIR=\${ORIGIN}
42 UNO_TYPES=\${ORIGIN}/$a.types.rdb \${ORIGIN}/$a.moretypes.rdb
43 UNO_SERVICES=\${ORIGIN}/$a.services.rdb
51 cp $SRC/*_seed_corpus.
zip $OUT
55 cp $SRC/libreoffice
/vcl
/workben
/*.options
$OUT