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