aboutsummaryrefslogtreecommitdiffhomepage
path: root/projects/libpsl/build.sh
diff options
context:
space:
mode:
authorGravatar Tim Rühsen <tim.ruehsen@gmx.de>2017-07-17 22:09:00 +0200
committerGravatar Max Moroz <dor3s1@gmail.com>2017-07-17 13:09:00 -0700
commit1cb700034ceb46391e975b7c8742b38b6aab2146 (patch)
treeb91c9a256170710ebcab25e3d9815738b9ec628f /projects/libpsl/build.sh
parent270f4d7f9f93ca3265eb100e7f3ff6bbc043e183 (diff)
[libpsl] Fix libicu+undefined build (#717)
Diffstat (limited to 'projects/libpsl/build.sh')
-rwxr-xr-xprojects/libpsl/build.sh47
1 files changed, 31 insertions, 16 deletions
diff --git a/projects/libpsl/build.sh b/projects/libpsl/build.sh
index d1b2420d..640194ca 100755
--- a/projects/libpsl/build.sh
+++ b/projects/libpsl/build.sh
@@ -21,8 +21,13 @@ export CPPFLAGS="-I$DEPS_PATH/include"
export LDFLAGS="-L$DEPS_PATH/lib"
cd $SRC/icu/source
-./configure --disable-shared --enable-static --disable-extras --disable-icuio --disable-layoutex \
- --disable-tests --disable-samples --with-data-packaging=static --prefix=$DEPS_PATH
+UBSAN_OPTIONS=detect_leaks=0 \
+CFLAGS="$CFLAGS -fno-sanitize=function,vptr" \
+CXXFLAGS="$CXXFLAGS -fno-sanitize=function,vptr" \
+CPPFLAGS="$CPPFLAGS -fno-sanitize=function,vptr" \
+LDFLAGS="$LDFLAGS -fno-sanitize=undefined" \
+ ./configure --disable-shared --enable-static --disable-extras --disable-icuio --disable-layoutex \
+ --disable-tests --disable-samples --with-data-packaging=static --prefix=$DEPS_PATH
# ugly hack to avoid build error
echo '#include <locale.h>' >>i18n/digitlst.h
make -j$(nproc)
@@ -30,12 +35,14 @@ make install
cd $SRC/libunistring
./autogen.sh
-./configure --enable-static --disable-shared --prefix=$DEPS_PATH
+ASAN_OPTIONS=detect_leaks=0 UBSAN_OPTIONS=detect_leaks=0 \
+ ./configure --enable-static --disable-shared --prefix=$DEPS_PATH
make -j$(nproc)
make install
cd $SRC/libidn
-make CFGFLAGS="--enable-static --disable-shared --disable-doc --prefix=$DEPS_PATH"
+ASAN_OPTIONS=detect_leaks=0 UBSAN_OPTIONS=detect_leaks=0 \
+ make CFGFLAGS="--enable-static --disable-shared --disable-doc --prefix=$DEPS_PATH"
make clean
make -j1
make -j$(nproc) check
@@ -43,38 +50,46 @@ make install
cd $SRC/libidn2
./bootstrap
-./configure --enable-static --disable-shared --disable-doc --disable-gcc-warnings --prefix=$DEPS_PATH
+ASAN_OPTIONS=detect_leaks=0 UBSAN_OPTIONS=detect_leaks=0 \
+ ./configure --enable-static --disable-shared --disable-doc --disable-gcc-warnings --prefix=$DEPS_PATH
make -j$(nproc)
make install
-# avoid iconv() memleak on Ubuntu 16.04 image (breaks test suite)
-export ASAN_OPTIONS=detect_leaks=0
-
cd $SRC/libpsl
./autogen.sh
export CXXFLAGS="$CXXFLAGS -L$DEPS_PATH/lib/"
-for build in libicu libidn2 libidn none; do
+if test $SANITIZER = "undefined"; then
+ # libicu doesn't work with -fsanitizer=undefined, see projects/icu/project.yaml
+ builds="libidn2 libidn none"
+else
+ builds="libicu libidn2 libidn none"
+fi
+for build in $builds; do
+ XLIBS=""
if test $build = "none"; then
BUILD_FLAGS="--disable-runtime --disable-builtin"
else
BUILD_FLAGS="--enable-runtime=$build --enable-builtin=$build"
+ if test $build = "libicu"; then
+ XLIBS="-lstdc++"
+ fi
fi
- LIBS="-lstdc++" ./configure --enable-static --disable-shared --disable-gtk-doc $BUILD_FLAGS --prefix=$DEPS_PATH
+ # older m4 iconv detection has memleaks, so switch leak detection off
+ LIBS=$XLIBS ASAN_OPTIONS=detect_leaks=0 UBSAN_OPTIONS=detect_leaks=0 \
+ ./configure --enable-static --disable-shared --disable-gtk-doc $BUILD_FLAGS --prefix=$DEPS_PATH
make clean
make -j$(nproc)
make -j$(nproc) check
make -C fuzz oss-fuzz
+ find fuzz -name '*_fuzzer' -exec cp -v '{}' $OUT ';'
done
cd fuzz
find . -name '*_fuzzer.dict' -exec cp -v '{}' $OUT ';'
find . -name '*_fuzzer.options' -exec cp -v '{}' $OUT ';'
-for fuzzer in *_fuzzer; do
- cp -p "${fuzzer}" "$OUT"
-
- if [ -d "${fuzzer}.in/" ]; then
- zip -rj "$OUT/${fuzzer}_seed_corpus.zip" "${fuzzer}.in/"
- fi
+for dir in *_fuzzer.in; do
+ fuzzer=$(basename $dir .in)
+ zip -rj "$OUT/${fuzzer}_seed_corpus.zip" "${dir}/"
done