libzstd_builds.sh 3.3 KB

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