.binary 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #!/bin/bash
  2. set -e
  3. BINARY_NAME="$BINARY_SHORT_NAME-$VERSION"
  4. BINARY_EXTENSION="$(binary_extension)"
  5. BINARY_FULLNAME="$BINARY_NAME$BINARY_EXTENSION"
  6. source "${MAKEDIR}/.go-autogen"
  7. (
  8. export GOGC=${DOCKER_BUILD_GOGC:-1000}
  9. if [ "$(go env GOOS)/$(go env GOARCH)" != "$(go env GOHOSTOS)/$(go env GOHOSTARCH)" ]; then
  10. # must be cross-compiling!
  11. case "$(go env GOOS)/$(go env GOARCH)" in
  12. windows/amd64)
  13. export CC=x86_64-w64-mingw32-gcc
  14. export CGO_ENABLED=1
  15. ;;
  16. esac
  17. fi
  18. if [ "$IAMSTATIC" == "true" ] && [ "$(go env GOHOSTOS)" == "linux" ]; then
  19. if [ "${GOOS}/${GOARCH}" == "darwin/amd64" ]; then
  20. export CGO_ENABLED=1
  21. export CC=o64-clang
  22. export LDFLAGS='-linkmode external -s'
  23. export LDFLAGS_STATIC_DOCKER='-extld='${CC}
  24. else
  25. export BUILDFLAGS=( "${BUILDFLAGS[@]/pkcs11 /}" ) # we cannot dlopen in pkcs11 in a static binary
  26. fi
  27. fi
  28. echo "Building: $DEST/$BINARY_FULLNAME"
  29. go build \
  30. -o "$DEST/$BINARY_FULLNAME" \
  31. "${BUILDFLAGS[@]}" \
  32. -ldflags "
  33. $LDFLAGS
  34. $LDFLAGS_STATIC_DOCKER
  35. " \
  36. $SOURCE_PATH
  37. )
  38. echo "Created binary: $DEST/$BINARY_FULLNAME"
  39. ln -sf "$BINARY_FULLNAME" "$DEST/$BINARY_SHORT_NAME$BINARY_EXTENSION"
  40. hash_files "$DEST/$BINARY_FULLNAME"