github.com/vincentwoo/docker@v0.7.3-0.20160116130405-82401a4b13c0/hack/make/binary (about)

     1  #!/bin/bash
     2  set -e
     3  
     4  BINARY_NAME="docker-$VERSION"
     5  BINARY_EXTENSION="$(binary_extension)"
     6  BINARY_FULLNAME="$BINARY_NAME$BINARY_EXTENSION"
     7  
     8  source "${MAKEDIR}/.go-autogen"
     9  
    10  (
    11  if [ "$(go env GOOS)/$(go env GOARCH)" != "$(go env GOHOSTOS)/$(go env GOHOSTARCH)" ]; then
    12  	# must be cross-compiling!
    13  	case "$(go env GOOS)/$(go env GOARCH)" in
    14  		windows/amd64)
    15  			export CC=x86_64-w64-mingw32-gcc
    16  			export CGO_ENABLED=1
    17  			;;
    18  	esac
    19  fi
    20  
    21  if [ "$(go env GOOS)" == "linux" ] ; then
    22  	case "$(go env GOARCH)" in
    23  		arm*|386)
    24  			# linking for Linux on arm or x86 needs external linking to avoid
    25  			# https://github.com/golang/go/issues/9510 until we move to Go 1.6
    26  			if [ "$IAMSTATIC" == "true" ] ; then
    27  				export EXTLDFLAGS_STATIC="$EXTLDFLAGS_STATIC -zmuldefs"
    28  				export LDFLAGS_STATIC_DOCKER="$LDFLAGS_STATIC -extldflags \"$EXTLDFLAGS_STATIC\""
    29  
    30  			else
    31  				export LDFLAGS="$LDFLAGS -extldflags -zmuldefs"
    32  			fi
    33  			;;
    34  	esac
    35  fi
    36  
    37  if [ "$IAMSTATIC" == "true" ] && [ "$(go env GOHOSTOS)" == "linux" ] && [ "$DOCKER_EXPERIMENTAL" ]; then
    38  	if  [ "${GOOS}/${GOARCH}" == "darwin/amd64" ]; then
    39  		export CGO_ENABLED=1
    40  		export CC=o64-clang
    41  		export LDFLAGS='-linkmode external -s'
    42  		export LDFLAGS_STATIC_DOCKER='-extld='${CC}
    43  	else
    44  		export BUILDFLAGS=( "${BUILDFLAGS[@]/pkcs11 /}" ) # we cannot dlopen in pkcs11 in a static binary
    45  	fi
    46  fi
    47  
    48  echo "Building: $DEST/$BINARY_FULLNAME"
    49  go build \
    50  	-o "$DEST/$BINARY_FULLNAME" \
    51  	"${BUILDFLAGS[@]}" \
    52  	-ldflags "
    53  		$LDFLAGS
    54  		$LDFLAGS_STATIC_DOCKER
    55  	" \
    56  	./docker
    57  )
    58  
    59  echo "Created binary: $DEST/$BINARY_FULLNAME"
    60  ln -sf "$BINARY_FULLNAME" "$DEST/docker$BINARY_EXTENSION"
    61  
    62  hash_files "$DEST/$BINARY_FULLNAME"