make-release 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #!/bin/bash
  2. set -e
  3. set -x
  4. tag="$1"; shift
  5. [ -n "$tag" ] || exit 1
  6. sw="$1"; shift || true
  7. [ -n "$sw" ] || sw="$tag"
  8. builds=(win32 win64)
  9. win32_machine='i686-pc-mingw32'
  10. win32_CFLAGS='-march=i686'
  11. win64_machine='x86_64-w64-mingw32'
  12. win64_CFLAGS=''
  13. IDIR="$PWD"
  14. OUTDIR="$PWD"
  15. TMPROOT="$PWD/make-release-tmp"
  16. TMPDIR="${TMPROOT}/${sw}-tmp"
  17. mkdir -vp "$TMPDIR"
  18. # Source release
  19. git branch TMP "$tag"
  20. git clone . "$TMPDIR" -b TMP --depth 1
  21. git branch -D TMP
  22. cd "$TMPDIR"
  23. git submodule update --init
  24. git archive --prefix "$sw"/ --format tar "$tag" | tar xvp
  25. (
  26. cd libblkmaker
  27. git archive --prefix "libblkmaker/" --format tar HEAD | tar -C "../$sw" -xvp
  28. )
  29. cd "$sw"
  30. NOSUBMODULES=1 \
  31. NOCONFIGURE=1 \
  32. ./autogen.sh
  33. cd ..
  34. zip -r "$OUTDIR/${sw}.zip" "$sw"
  35. tar cjvpf "$OUTDIR/${sw}.tbz2" "$sw"
  36. SRCDIR="$TMPDIR/$sw"
  37. dlls='
  38. pdcurses.dll
  39. libcurl-4.dll
  40. pthreadGC2.dll
  41. libjansson-4.dll
  42. libusb-1.0.dll
  43. zlib1.dll
  44. '
  45. docs='
  46. AUTHORS
  47. COPYING
  48. NEWS
  49. README
  50. API-README
  51. FPGA-README
  52. SCRYPT-README
  53. '
  54. for build in "${builds[@]}"; do
  55. PKGNAME="${sw}-${build}"
  56. PKGDIR="$TMPDIR/$PKGNAME"
  57. cd "$TMPDIR"
  58. mkdir -vp "$PKGDIR"
  59. for v in machine CFLAGS; do
  60. eval "${v}"="$(eval echo "\${${build}_${v}}")"
  61. done
  62. libdir="/usr/$machine/usr/bin/$dll"
  63. for dll in $dlls; do
  64. libdir="/usr/$machine/usr/lib"
  65. [ -e "$libdir/$dll" ] ||
  66. libdir="/usr/$machine/usr/bin"
  67. cp -v -L "$libdir/$dll" "$PKGDIR"
  68. "$machine"-strip "$PKGDIR/$dll"
  69. done
  70. for doc in $docs; do
  71. sed 's/$/\r/' <"$doc" >"$PKGDIR/${doc}.txt"
  72. done
  73. cp -av "bitstreams" "$PKGDIR/"
  74. NOCONFIGURE=1 \
  75. ./autogen.sh
  76. ./configure \
  77. --prefix='C:\\Program Files\\BFGMiner\\' \
  78. CFLAGS="${CFLAGS} -Wall" \
  79. --disable-cpumining \
  80. --enable-opencl \
  81. --enable-adl \
  82. --enable-bitforce \
  83. --enable-icarus \
  84. --enable-modminer \
  85. --enable-ztex \
  86. --enable-scrypt \
  87. --host="$machine"
  88. make $MAKEOPTS
  89. "$machine"-strip \
  90. libblkmaker/.libs/*.dll \
  91. *.exe
  92. cp -v \
  93. *.exe \
  94. libblkmaker/.libs/*.dll \
  95. *.cl \
  96. example.conf \
  97. windows-build.txt \
  98. API.class \
  99. miner.php \
  100. "$PKGDIR/"
  101. make clean
  102. cd "$PKGDIR/.."
  103. zip -r "$OUTDIR/$PKGNAME.zip" "$PKGNAME"
  104. done
  105. cd "$IDIR"