Newer
Older
dub_jkp / scripts / ci / release.sh
  1. #!/usr/bin/env bash
  2.  
  3. set -eux -o pipefail
  4.  
  5. # Get the directory root, which is two level ahead
  6. ROOT_DIR="$( cd "$(dirname "${BASH_SOURCE[0]}")/../../" && pwd )"
  7. cd ${ROOT_DIR}
  8.  
  9. VERSION=$(git describe --abbrev=0 --tags)
  10. ARCH="${ARCH:-64}"
  11. CUSTOM_FLAGS=()
  12. unameOut="$(uname -s)"
  13. case "$unameOut" in
  14. Linux*)
  15. OS=linux
  16. CUSTOM_FLAGS+=("-L--export-dynamic")
  17. ;;
  18. Darwin*)
  19. OS=osx
  20. CUSTOM_FLAGS+=("-L-dead_strip")
  21. ;;
  22. *) echo "Unknown OS: $unameOut"; exit 1
  23. esac
  24.  
  25. if [[ $(basename "$DMD") =~ ldmd.* ]] ; then
  26. CUSTOM_FLAGS+=("-flto=full")
  27. # ld.gold is required on Linux
  28. if [ ${OS:-} == "linux" ] ; then
  29. CUSTOM_FLAGS+=("-linker=gold")
  30. fi
  31. fi
  32.  
  33. case "$ARCH" in
  34. 64) ARCH_SUFFIX="x86_64";;
  35. 32) ARCH_SUFFIX="x86";;
  36. *) echo "Unknown ARCH: $ARCH"; exit 1
  37. esac
  38.  
  39. archiveName="dub-$VERSION-$OS-$ARCH_SUFFIX.tar.gz"
  40.  
  41. echo "Building $archiveName"
  42. DMD="$(command -v $DMD)" ./build.d -release -m$ARCH ${CUSTOM_FLAGS[@]}
  43. tar cvfz "bin/$archiveName" --owner=0 --group=0 -C bin dub