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 59nxt_go_test="GOPATH=`pwd` CGO_CPPFLAGS=-DNXT_CONFIGURE \ 60 \"${NXT_GO}\" build -o build/nxt_go_gen.a --buildmode=c-archive nginext" 61 62 63if /bin/sh -c "$nxt_go_test" >> $NXT_AUTOCONF_ERR 2>&1; then 64 $echo " found" 65 66 NXT_GO_VERSION="`${NXT_GO} version`" 67 $echo " + ${NXT_GO_VERSION}" 68 69else 70 $echo "----------" >> $NXT_AUTOCONF_ERR 71 $echo $nxt_go_test >> $NXT_AUTOCONF_ERR 72 $echo "----------" >> $NXT_AUTOCONF_ERR 73 $echo 74 $echo 75 $echo $0: error: no Go found. 76 $echo 77 exit 1; 78fi 79 80 81 82NXT_GO_PATH=${NXT_GO_PATH=`${NXT_GO} env GOPATH`} 83NXT_GO_PATH=${NXT_GO_PATH:-`pwd`/${NXT_GO}} 84 85$echo " + Go package path: \"${NXT_GO_PATH}\"" 86 87if grep ^$NXT_GO: $NXT_MAKEFILE 2>&1 > /dev/null; then 88 $echo 89 $echo $0: error: duplicate \"$NXT_GO\" package configured. 90 $echo 91 exit 1; 92fi 93 94cat << END >> $NXT_MAKEFILE 95 96.PHONY: ${NXT_GO} 97 98all: ${NXT_GO} 99 100NXT_ROOT = `pwd` 101 102GOPATH = $NXT_GO_PATH 103GOOS = `${NXT_GO} env GOOS` 104GOARCH = `${NXT_GO} env GOARCH` 105 106${NXT_GO}: 107 install -d \$(GOPATH)/src/nginext 108 install -p ./src/nginext/*.c ./src/nginext/*.h \\ 109 ./src/nginext/*.go \$(GOPATH)/src/nginext/ 110 CGO_CFLAGS="-I\$(NXT_ROOT)/build -I\$(NXT_ROOT)/src" \\ 111 CGO_LDFLAGS="-L\$(NXT_ROOT)/build ${NXT_LIBRT}" \\ 112 GOPATH=$NXT_GO_PATH \\ 113 ${NXT_GO} install -v nginext 114 115${NXT_GO}-uninstall: 116 rm -rf \$(GOPATH)/src/nginext 117 rm -f \$(GOPATH)/pkg/\$(GOOS)_\$(GOARCH)/nginext.a 118 119END 120