| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- #!/usr/bin/env bash
- set -e
- if [ ! -f make.bash ]; then
- echo "make.bash must be run from $GOPATH/src/github.com/Psiphon-Labs/psiphon-tunnel-core/ConsoleClient"
- exit 1
- fi
- EXE_BASENAME="psiphon-tunnel-core"
- BUILDINFOFILE="${EXE_BASENAME}_buildinfo.txt"
- BUILDDATE=$(date --iso-8601=seconds)
- BUILDREPO=$(git config --get remote.origin.url)
- BUILDREV=$(git rev-parse --short HEAD)
- LDFLAGS="\
- -X github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon.buildDate $BUILDDATE \
- -X github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon.buildRepo $BUILDREPO \
- -X github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon.buildRev $BUILDREV \
- "
- echo -e "${BUILDDATE}\n${BUILDREPO}\n${BUILDREV}\n" > $BUILDINFOFILE
- echo "Variables for ldflags:"
- echo " Build date: ${BUILDDATE}"
- echo " Build repo: ${BUILDREPO}"
- echo " Build revision: ${BUILDREV}"
- echo ""
- if [ ! -d bin ]; then
- mkdir bin
- fi
- build_for_windows () {
- echo "...Getting project dependencies (via go get) for Windows"
- GOOS=windows go get -d -v ./...
- echo "...Building windows-i686"
- CC=/usr/bin/i686-w64-mingw32-gcc gox -verbose -ldflags "$LDFLAGS" -osarch windows/386 -output bin/windows/${EXE_BASENAME}-i686
- # We are finding that UPXing the full Windows Psiphon client produces better results if psiphon-tunnel-core.exe is not already UPX'd.
- echo "....No UPX for this build"
- echo "...Building windows-x86_64"
- CC=/usr/bin/x86_64-w64-mingw32-gcc gox -verbose -ldflags "$LDFLAGS" -osarch windows/amd64 -output bin/windows/${EXE_BASENAME}-x86_64
- # We are finding that UPXing the full Windows Psiphon client produces better results if psiphon-tunnel-core.exe is not already UPX'd.
- echo "....No UPX for this build"
- }
- build_for_linux () {
- echo "Getting project dependencies (via go get) for Linux"
- GOOS=linux go get -d -v ./...
- echo "...Building linux-i686"
- CFLAGS=-m32 gox -verbose -ldflags "$LDFLAGS" -osarch linux/386 -output bin/linux/${EXE_BASENAME}-i686
- echo "....UPX packaging output"
- goupx --best bin/linux/${EXE_BASENAME}-i686
- echo "...Building linux-x86_64"
- gox -verbose -ldflags "$LDFLAGS" -osarch linux/amd64 -output bin/linux/${EXE_BASENAME}-x86_64
- echo "....UPX packaging output"
- goupx --best bin/linux/${EXE_BASENAME}-x86_64
- }
- build_for_osx () {
- echo "Getting project dependencies (via go get) for OSX"
- GOOS=darwin go get -d -v ./...
- echo "Building darwin-x86_64..."
- CGO_ENABLED=0 gox -verbose -ldflags "$LDFLAGS" -osarch darwin/amd64 -output bin/darwin/${EXE_BASENAME}-x86_64
- # Darwin binaries don't seem to be UPXable when built this way
- echo "..No UPX for this build"
- }
- TARGET=$1
- case $TARGET in
- windows)
- echo "..Building for Windows"
- build_for_windows
- ;;
- linux)
- echo "..Building for Linux"
- build_for_linux
- ;;
- osx)
- echo "..Building for OSX"
- build_for_osx
- ;;
- all)
- echo "..Building all"
- build_for_windows
- build_for_linux
- build_for_osx
- ;;
- *)
- echo "..No selection made, building all"
- build_for_windows
- build_for_linux
- build_for_osx
- ;;
- esac
- echo "Done"
|