1*01826a49SYabin Cui#!/bin/sh -e 2*01826a49SYabin Cui 3*01826a49SYabin CuiDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 4*01826a49SYabin Cui 5*01826a49SYabin CuiECHO=echo 6*01826a49SYabin CuiRM="rm -f" 7*01826a49SYabin CuiGREP="grep" 8*01826a49SYabin CuiINTOVOID="/dev/null" 9*01826a49SYabin Cui 10*01826a49SYabin Cuidie() { 11*01826a49SYabin Cui $ECHO "$@" 1>&2 12*01826a49SYabin Cui exit 1 13*01826a49SYabin Cui} 14*01826a49SYabin Cui 15*01826a49SYabin CuiisPresent() { 16*01826a49SYabin Cui $GREP $@ tmplog || die "$@" "should be present" 17*01826a49SYabin Cui} 18*01826a49SYabin Cui 19*01826a49SYabin CuimustBeAbsent() { 20*01826a49SYabin Cui $GREP $@ tmplog && die "$@ should not be there !!" 21*01826a49SYabin Cui $ECHO "$@ correctly not present" # for some reason, this $ECHO must exist, otherwise mustBeAbsent() always fails (??) 22*01826a49SYabin Cui} 23*01826a49SYabin Cui 24*01826a49SYabin Cui# default compilation : all features enabled - no zbuff 25*01826a49SYabin Cui$ECHO "testing default library compilation" 26*01826a49SYabin CuiCFLAGS= make -C $DIR/../lib libzstd libzstd.a > $INTOVOID 27*01826a49SYabin Cuinm $DIR/../lib/libzstd.a | $GREP "\.o" > tmplog 28*01826a49SYabin CuiisPresent "zstd_compress.o" 29*01826a49SYabin CuiisPresent "zstd_decompress.o" 30*01826a49SYabin CuiisPresent "zdict.o" 31*01826a49SYabin CuiisPresent "zstd_v07.o" 32*01826a49SYabin CuimustBeAbsent "zbuff_compress.o" 33*01826a49SYabin Cui$RM tmplog 34*01826a49SYabin Cui 35*01826a49SYabin Cui# Check that the exec-stack bit isn't set 36*01826a49SYabin Cuireadelf -lW $DIR/../lib/libzstd.so | $GREP "GNU_STACK" > tmplog 37*01826a49SYabin CuimustBeAbsent "RWE" 38*01826a49SYabin Cui$RM $DIR/../lib/libzstd.a $DIR/../lib/libzstd.so* tmplog 39*01826a49SYabin Cui 40*01826a49SYabin Cui# compression disabled => also disable zdict 41*01826a49SYabin Cui$ECHO "testing with compression disabled" 42*01826a49SYabin CuiZSTD_LIB_COMPRESSION=0 CFLAGS= make -C $DIR/../lib libzstd.a > $INTOVOID 43*01826a49SYabin Cuinm $DIR/../lib/libzstd.a | $GREP "\.o" > tmplog 44*01826a49SYabin CuimustBeAbsent "zstd_compress.o" 45*01826a49SYabin CuiisPresent "zstd_decompress.o" 46*01826a49SYabin CuimustBeAbsent "zdict.o" 47*01826a49SYabin CuiisPresent "zstd_v07.o" 48*01826a49SYabin CuimustBeAbsent "zbuff_compress.o" 49*01826a49SYabin Cui$RM $DIR/../lib/libzstd.a tmplog 50*01826a49SYabin Cui 51*01826a49SYabin Cui# decompression disabled => also disable legacy 52*01826a49SYabin Cui$ECHO "testing with decompression disabled" 53*01826a49SYabin CuiZSTD_LIB_DECOMPRESSION=0 CFLAGS= make -C $DIR/../lib libzstd.a > $INTOVOID 54*01826a49SYabin Cuinm $DIR/../lib/libzstd.a | $GREP "\.o" > tmplog 55*01826a49SYabin CuiisPresent "zstd_compress.o" 56*01826a49SYabin CuimustBeAbsent "zstd_decompress.o" 57*01826a49SYabin CuiisPresent "zdict.o" 58*01826a49SYabin CuimustBeAbsent "zstd_v07.o" 59*01826a49SYabin CuimustBeAbsent "zbuff_compress.o" 60*01826a49SYabin Cui$RM $DIR/../lib/libzstd.a tmplog 61*01826a49SYabin Cui 62*01826a49SYabin Cui# deprecated function disabled => only remove zbuff 63*01826a49SYabin Cui$ECHO "testing with deprecated functions disabled" 64*01826a49SYabin CuiZSTD_LIB_DEPRECATED=0 CFLAGS= make -C $DIR/../lib libzstd.a > $INTOVOID 65*01826a49SYabin Cuinm $DIR/../lib/libzstd.a | $GREP "\.o" > tmplog 66*01826a49SYabin CuiisPresent "zstd_compress.o" 67*01826a49SYabin CuiisPresent "zstd_decompress.o" 68*01826a49SYabin CuiisPresent "zdict.o" 69*01826a49SYabin CuiisPresent "zstd_v07.o" 70*01826a49SYabin CuimustBeAbsent "zbuff_compress.o" 71*01826a49SYabin Cui$RM $DIR/../lib/libzstd.a tmplog 72*01826a49SYabin Cui 73*01826a49SYabin Cui# deprecated function enabled => zbuff present 74*01826a49SYabin Cui$ECHO "testing with deprecated functions enabled" 75*01826a49SYabin CuiZSTD_LIB_DEPRECATED=1 CFLAGS= make -C $DIR/../lib libzstd.a > $INTOVOID 76*01826a49SYabin Cuinm $DIR/../lib/libzstd.a | $GREP "\.o" > tmplog 77*01826a49SYabin CuiisPresent "zstd_compress.o" 78*01826a49SYabin CuiisPresent "zstd_decompress.o" 79*01826a49SYabin CuiisPresent "zdict.o" 80*01826a49SYabin CuiisPresent "zstd_v07.o" 81*01826a49SYabin CuiisPresent "zbuff_compress.o" 82*01826a49SYabin Cui$RM $DIR/../lib/libzstd.a tmplog 83*01826a49SYabin Cui 84*01826a49SYabin Cui# dictionary builder disabled => only remove zdict 85*01826a49SYabin Cui$ECHO "testing with dictionary builder disabled" 86*01826a49SYabin CuiZSTD_LIB_DICTBUILDER=0 CFLAGS= make -C $DIR/../lib libzstd.a > $INTOVOID 87*01826a49SYabin Cuinm $DIR/../lib/libzstd.a | $GREP "\.o" > tmplog 88*01826a49SYabin CuiisPresent "zstd_compress.o" 89*01826a49SYabin CuiisPresent "zstd_decompress.o" 90*01826a49SYabin CuimustBeAbsent "zdict.o" 91*01826a49SYabin CuiisPresent "zstd_v07.o" 92*01826a49SYabin CuimustBeAbsent "zbuff_compress.o" 93*01826a49SYabin Cui$RM $DIR/../lib/libzstd.a tmplog 94*01826a49SYabin Cui 95*01826a49SYabin Cui# both decompression and dictionary builder disabled => only compression remains 96*01826a49SYabin Cui$ECHO "testing with both decompression and dictionary builder disabled (only compression remains)" 97*01826a49SYabin CuiZSTD_LIB_DECOMPRESSION=0 ZSTD_LIB_DICTBUILDER=0 CFLAGS= make -C $DIR/../lib libzstd.a > $INTOVOID 98*01826a49SYabin Cuinm $DIR/../lib/libzstd.a | $GREP "\.o" > tmplog 99*01826a49SYabin CuiisPresent "zstd_compress.o" 100*01826a49SYabin CuimustBeAbsent "zstd_decompress.o" 101*01826a49SYabin CuimustBeAbsent "zdict.o" 102*01826a49SYabin CuimustBeAbsent "zstd_v07.o" 103*01826a49SYabin CuimustBeAbsent "zbuff_compress.o" 104*01826a49SYabin Cui$RM $DIR/../lib/libzstd.a tmplog 105