From 6874688e075d56dedc7ebcefc0efc8cfa1bbe60e Mon Sep 17 00:00:00 2001 From: fatedier Date: Mon, 11 Apr 2016 17:27:14 +0800 Subject: [PATCH] build: for cross-compiles --- .gitignore | 1 + Makefile.cross-compiles | 15 +++++++++++++ cross_compiles_package.sh | 45 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 Makefile.cross-compiles create mode 100755 cross_compiles_package.sh diff --git a/.gitignore b/.gitignore index 72c9fd3..947e296 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,7 @@ _testmain.go # Self bin/ +packages/ # Cache *.swp diff --git a/Makefile.cross-compiles b/Makefile.cross-compiles new file mode 100644 index 0000000..fbba88e --- /dev/null +++ b/Makefile.cross-compiles @@ -0,0 +1,15 @@ +export PATH := $(GOPATH)/bin:$(PATH) +export OLDGOPATH := $(GOPATH) +export GOPATH := $(shell pwd)/Godeps/_workspace:$(shell pwd):$(GOPATH) +export OS_TARGETS=linux windows +export ARCH_TARGETS=386 amd64 + +all: build + +build: godep app + +godep: + GOPATH=$(OLDGOPATH) go get github.com/mitchellh/gox + +app: + gox -os "$(OS_TARGETS)" -arch="$(ARCH_TARGETS)" ./... diff --git a/cross_compiles_package.sh b/cross_compiles_package.sh new file mode 100755 index 0000000..774eb32 --- /dev/null +++ b/cross_compiles_package.sh @@ -0,0 +1,45 @@ +# compile for version +make +if [ $? -ne 0 ]; then + echo "make error" + exit 1 +fi + +frp_version=`./bin/frps --version` +echo "build version: $frp_version" + +# cross_compiles +make -f ./Makefile.cross-compiles + +rm -rf ./packages +mkdir ./packages + +os_all='linux windows' +arch_all='386 amd64' + +for os in $os_all; do + for arch in $arch_all; do + frp_dir_name="frp_${frp_version}_${os}_${arch}" + frp_path="./packages/frp_${frp_version}_${os}_${arch}" + mkdir ${frp_path} + if [ "x${os}" = x"windows" ]; then + mv ./frpc_${os}_${arch}.exe ${frp_path}/frpc.exe + mv ./frps_${os}_${arch}.exe ${frp_path}/frps.exe + else + mv ./frpc_${os}_${arch} ${frp_path}/frpc + mv ./frps_${os}_${arch} ${frp_path}/frps + fi + cp ./LICENSE ${frp_path} + cp ./conf/* ${frp_path} + + # packages + cd ./packages + if [ "x${os}" = x"windows" ]; then + zip -rq ${frp_dir_name}.zip ${frp_dir_name} + else + tar -zcf ${frp_dir_name}.tar.gz ${frp_dir_name} + fi + cd .. + rm -rf ${frp_path} + done +done