1 2# Copyright (C) Max Romanov 3# Copyright (C) NGINX, Inc. 4 5 6shift 7 8NXT_GO=go 9 10for nxt_option; do 11 12 case "$nxt_option" in 13 -*=*) value=`echo "$nxt_option" | sed -e 's/[-_a-zA-Z0-9]*=//'` ;; 14 *) value="" ;; 15 esac 16 17 case "$nxt_option" in 18 --go=*) NXT_GO="$value" ;; 19 --go-path=*) NXT_GO_PATH="$value" ;; 20 21 --help) 22 cat << END 23 24 --go=NAME set go executable 25 --go-path=PATH set GOPATH variable to install package 26 27END 28 exit 0 29 ;; 30 31 *) 32 echo 33 echo $0: error: invalid Go option \"$nxt_option\" 34 echo 35 exit 1 36 ;; 37 38 esac 39 40done 41 42 43if [ ! -f $NXT_AUTOCONF_DATA ]; then 44 echo 45 echo Please run common $0 before configuring module \"$nxt_module\". 46 echo 47 exit 1 48fi 49 50. $NXT_AUTOCONF_DATA 51 52 53$echo "configuring Go package" 54$echo "configuring Go package ..." >> $NXT_AUTOCONF_ERR 55 56$echo -n "checking for Go ..." 57$echo "checking for Go ..." >> $NXT_AUTOCONF_ERR 58 59 60if /bin/sh -c "${NXT_GO} version" >> $NXT_AUTOCONF_ERR 2>&1; then 61 $echo " found" 62 63 NXT_GO_VERSION="`${NXT_GO} version`" 64 $echo " + ${NXT_GO_VERSION}" 65 66else 67 $echo 68 $echo $0: error: no Go found. 69 $echo 70 exit 1; 71fi 72 73 74NXT_GO_PATH=${NXT_GO_PATH=`${NXT_GO} env GOPATH`} 75NXT_GO_PATH=${NXT_GO_PATH:-`pwd`/${NXT_GO}} 76 77NXT_GO_PKG=nginx/unit 78 79$echo " + Go package path: \"${NXT_GO_PATH}\"" 80 81if grep ^$NXT_GO: $NXT_MAKEFILE 2>&1 > /dev/null; then 82 $echo 83 $echo $0: error: duplicate \"$NXT_GO\" package configured. 84 $echo 85 exit 1; 86fi 87 88cat << END >> $NXT_MAKEFILE 89 90.PHONY: ${NXT_GO} 91.PHONY: ${NXT_GO}-install 92.PHONY: ${NXT_GO}-install-src 93.PHONY: ${NXT_GO}-uninstall 94 95GOPATH = $NXT_GO_PATH 96GOOS = `${NXT_GO} env GOOS` 97GOARCH = `${NXT_GO} env GOARCH` 98 99NXT_GO_DST = ${NXT_GO_PATH%%:*} 100 101install: ${NXT_GO}-install 102 103${NXT_GO}: 104 105${NXT_GO}-install: ${NXT_GO}-install-src ${NXT_GO}-install-env 106 GOPATH=\$(DESTDIR)\$(GOPATH) ${NXT_GO} build ${NXT_GO_PKG} 107 108${NXT_GO}-install-src: 109 install -d \$(DESTDIR)\$(NXT_GO_DST)/src/${NXT_GO_PKG} 110 install -p -m644 ./src/go/unit/* \$(DESTDIR)\$(NXT_GO_DST)/src/${NXT_GO_PKG}/ 111 112${NXT_GO}-install-env: \$(DESTDIR)\$(NXT_GO_DST)/src/${NXT_GO_PKG}/env.go \ 113 ${NXT_VERSION_H} ${NXT_BUILD_DIR}/${NXT_LIB_UNIT_STATIC} 114 115\$(DESTDIR)\$(NXT_GO_DST)/src/${NXT_GO_PKG}/env.go: 116 install -d \$(DESTDIR)\$(NXT_GO_DST)/src/${NXT_GO_PKG} 117 $echo "package unit" > \$@ 118 $echo "/*" >> \$@ 119 $echo "#cgo CPPFLAGS: -I${PWD}/src -I${PWD}/${NXT_BUILD_DIR}" >> \$@ 120 $echo "#cgo LDFLAGS: -L${PWD}/${NXT_BUILD_DIR}" >> \$@ 121 $echo "*/" >> \$@ 122 $echo 'import "C"' >> \$@ 123 124 125uninstall: ${NXT_GO}-uninstall 126 127${NXT_GO}-uninstall: 128 rm -rf \$(DESTDIR)\$(NXT_GO_DST)/src/${NXT_GO_PKG} 129 rm -rf \$(DESTDIR)\$(NXT_GO_DST)/pkg/\$(GOOS)_\$(GOARCH)/${NXT_GO_PKG} 130 131END 132