2018-03-17 18:28:23 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
case "$(uname -s)" in
|
|
|
|
Linux*) platform=linux;;
|
|
|
|
Darwin*) platform=unsupported;;
|
|
|
|
CYGWIN*) platform=unsupported;;
|
|
|
|
MINGW*) platform=mingw;;
|
|
|
|
*) platform=unsupported
|
|
|
|
esac
|
|
|
|
|
|
|
|
if [ "$platform" == "unsupported" ]; then
|
|
|
|
echo "Error: Unsupported platform $(uname -s)"
|
|
|
|
exit
|
|
|
|
fi
|
|
|
|
|
|
|
|
# check for dependencies
|
|
|
|
if [ ! "$(which pacman)" == "" ]; then
|
|
|
|
pacman -S --needed --noconfirm msys/autoconf msys/automake-wrapper msys/libtool msys/pkg-config msys/git
|
|
|
|
fi
|
|
|
|
|
|
|
|
git=`which git`
|
|
|
|
if [ "$git" == "" ]; then
|
|
|
|
echo "Error: Git not found in PATH"
|
|
|
|
exit -1
|
|
|
|
fi
|
|
|
|
|
|
|
|
go=`which go`
|
|
|
|
if [ "$go" == "" ]; then
|
|
|
|
echo "Error: Go not found in PATH"
|
|
|
|
exit -1
|
|
|
|
fi
|
|
|
|
|
2018-03-17 16:55:21 +00:00
|
|
|
# clean
|
|
|
|
rm -rf bin
|
|
|
|
|
|
|
|
# create folders
|
2018-03-17 18:28:23 +00:00
|
|
|
if [ ! -e .deps ]; then
|
|
|
|
mkdir .deps
|
|
|
|
fi
|
2018-03-17 16:55:21 +00:00
|
|
|
|
|
|
|
# get and build libzmq
|
|
|
|
cd .deps
|
2018-03-17 18:28:23 +00:00
|
|
|
if [ ! -e libzmq ]; then
|
|
|
|
git clone https://github.com/zeromq/libzmq
|
|
|
|
fi
|
2018-03-17 16:55:21 +00:00
|
|
|
cd libzmq
|
|
|
|
git checkout v4.2.3
|
2018-03-17 18:28:23 +00:00
|
|
|
if [ ! -e Makefile ]; then
|
|
|
|
./autogen.sh && ./configure --enable-static
|
|
|
|
fi
|
|
|
|
if [ "$platform" == "mingw" ]; then
|
|
|
|
sed -i 's/MAKE=make/MAKE=mingw32-make/' Makefile
|
|
|
|
mingw32-make
|
|
|
|
else
|
|
|
|
make
|
|
|
|
fi
|
2018-03-17 16:55:21 +00:00
|
|
|
cd ../..
|
|
|
|
|
|
|
|
# get and build go zmq4
|
2018-03-17 18:28:23 +00:00
|
|
|
GOPATH=`pwd`/.deps go get
|
2018-03-17 16:55:21 +00:00
|
|
|
# use built libzmq
|
2018-03-17 18:28:23 +00:00
|
|
|
if [ "$platform" == "linux" ]; then
|
|
|
|
ESC_PWD=`pwd | sed 's/\//\\\\\//g'`
|
|
|
|
cflags="\#cgo \!windows CFLAGS\: \-I${ESC_PWD}\/\.deps\/libzmq\/include"
|
|
|
|
ldflags="\#cgo \!windows LDFLAGS\: ${ESC_PWD}\/\.deps\/libzmq\/src\/\.libs\/libzmq\.a \-lstdc\+\+ \-lm"
|
|
|
|
sed -i "4s/.*/${cflags}/" .deps/src/github.com/pebbe/zmq4/zmq4.go
|
|
|
|
sed -i "5s/.*/${ldflags}/" .deps/src/github.com/pebbe/zmq4/zmq4.go
|
|
|
|
fi
|
|
|
|
if [ "$platform" == "mingw" ]; then
|
|
|
|
ESC_PWD=`pwd | sed 's/\/\(.\)/\1:/' | sed 's/\//\\\\\//g'`
|
|
|
|
cflags="\#cgo windows CFLAGS\: \-I${ESC_PWD}\/\.deps\/libzmq\/include \-DZMQ_STATIC"
|
|
|
|
ldflags="\#cgo windows LDFLAGS\: ${ESC_PWD}\/\.deps\/libzmq\/src\/\.libs\/libzmq\.a -lstdc++ -lwsock32 -lws2_32 -lIphlpapi"
|
|
|
|
sed -i "5s/.*/${cflags}/" .deps/src/github.com/pebbe/zmq4/zmq4.go
|
|
|
|
sed -i "6s/.*/${ldflags}/" .deps/src/github.com/pebbe/zmq4/zmq4.go
|
|
|
|
fi
|
2018-03-17 16:55:21 +00:00
|
|
|
|
|
|
|
# build goes
|
2018-03-17 18:28:23 +00:00
|
|
|
OUTPUT=bin/goes
|
|
|
|
if [ "$platform" == "mingw" ]; then
|
|
|
|
OUTPUT=bin/goes.exe
|
|
|
|
fi
|
|
|
|
GOPATH=`pwd`/.deps go build -a -ldflags '-s' -o ${OUTPUT} goes.go
|
|
|
|
|
|
|
|
# copy libstdc++ deps mingw
|
|
|
|
if [ "$platform" == "mingw" ]; then
|
|
|
|
cp /mingw64/bin/libstd*.dll bin
|
|
|
|
cp /mingw64/bin/libgcc*.dll bin
|
|
|
|
cp /mingw64/bin/libwin*.dll bin
|
|
|
|
fi
|
2018-03-17 16:55:21 +00:00
|
|
|
|
|
|
|
# copy licenses
|
|
|
|
cp .deps/libzmq/COPYING bin/libzmq.COPYING
|
|
|
|
cp .deps/libzmq/COPYING.LESSER bin/libzmq.COPYING.LESSER
|
|
|
|
cp LICENSE bin/LICENSE
|
|
|
|
|
|
|
|
tar -czvf goes.tar.gz bin/
|