1216Sigor@sysoev.ru 2216Sigor@sysoev.ru# Copyright (C) Max Romanov 3216Sigor@sysoev.ru# Copyright (C) NGINX, Inc. 4216Sigor@sysoev.ru 5216Sigor@sysoev.ru 6216Sigor@sysoev.rushift 7216Sigor@sysoev.ru 8216Sigor@sysoev.ruNXT_GO=go 9216Sigor@sysoev.ru 10216Sigor@sysoev.rufor nxt_option; do 11216Sigor@sysoev.ru 12216Sigor@sysoev.ru case "$nxt_option" in 13235Sigor@sysoev.ru -*=*) value=`echo "$nxt_option" | sed -e 's/[-_a-zA-Z0-9]*=//'` ;; 14216Sigor@sysoev.ru *) value="" ;; 15216Sigor@sysoev.ru esac 16216Sigor@sysoev.ru 17216Sigor@sysoev.ru case "$nxt_option" in 18216Sigor@sysoev.ru --go=*) NXT_GO="$value" ;; 19216Sigor@sysoev.ru --go-path=*) NXT_GO_PATH="$value" ;; 20216Sigor@sysoev.ru 21216Sigor@sysoev.ru --help) 22216Sigor@sysoev.ru cat << END 23216Sigor@sysoev.ru 24216Sigor@sysoev.ru --go=NAME set go executable 25216Sigor@sysoev.ru --go-path=PATH set GOPATH variable to install package 26216Sigor@sysoev.ru 27216Sigor@sysoev.ruEND 28216Sigor@sysoev.ru exit 0 29216Sigor@sysoev.ru ;; 30216Sigor@sysoev.ru 31216Sigor@sysoev.ru *) 32235Sigor@sysoev.ru echo 33235Sigor@sysoev.ru echo $0: error: invalid Go option \"$nxt_option\" 34235Sigor@sysoev.ru echo 35216Sigor@sysoev.ru exit 1 36216Sigor@sysoev.ru ;; 37216Sigor@sysoev.ru 38216Sigor@sysoev.ru esac 39216Sigor@sysoev.ru 40216Sigor@sysoev.rudone 41216Sigor@sysoev.ru 42216Sigor@sysoev.ru 43235Sigor@sysoev.ruif [ ! -f $NXT_AUTOCONF_DATA ]; then 44235Sigor@sysoev.ru echo 45235Sigor@sysoev.ru echo Please run common $0 before configuring module \"$nxt_module\". 46235Sigor@sysoev.ru echo 47235Sigor@sysoev.ru exit 1 48235Sigor@sysoev.rufi 49235Sigor@sysoev.ru 50235Sigor@sysoev.ru. $NXT_AUTOCONF_DATA 51235Sigor@sysoev.ru 52235Sigor@sysoev.ru 53216Sigor@sysoev.ru$echo "configuring Go package" 54216Sigor@sysoev.ru$echo "configuring Go package ..." >> $NXT_AUTOCONF_ERR 55216Sigor@sysoev.ru 56216Sigor@sysoev.ru$echo -n "checking for Go ..." 57216Sigor@sysoev.ru$echo "checking for Go ..." >> $NXT_AUTOCONF_ERR 58216Sigor@sysoev.ru 59216Sigor@sysoev.ru 60257Sigor@sysoev.ruif /bin/sh -c "${NXT_GO} version" >> $NXT_AUTOCONF_ERR 2>&1; then 61216Sigor@sysoev.ru $echo " found" 62216Sigor@sysoev.ru 63216Sigor@sysoev.ru NXT_GO_VERSION="`${NXT_GO} version`" 64216Sigor@sysoev.ru $echo " + ${NXT_GO_VERSION}" 65216Sigor@sysoev.ru 66216Sigor@sysoev.ruelse 67216Sigor@sysoev.ru $echo 68216Sigor@sysoev.ru $echo $0: error: no Go found. 69216Sigor@sysoev.ru $echo 70216Sigor@sysoev.ru exit 1; 71216Sigor@sysoev.rufi 72216Sigor@sysoev.ru 73216Sigor@sysoev.ru 74243Smax.romanov@nginx.comNXT_GO_PATH=${NXT_GO_PATH=`${NXT_GO} env GOPATH`} 751315Smax.romanov@nginx.comNXT_GO_PATH=${NXT_GO_PATH:-${PWD}/${NXT_BUILD_DIR}/${NXT_GO}} 76216Sigor@sysoev.ru 771329Smax.romanov@nginx.comNXT_GO_PKG=unit.nginx.org/go 781313Smax.romanov@nginx.com 79216Sigor@sysoev.ru$echo " + Go package path: \"${NXT_GO_PATH}\"" 80216Sigor@sysoev.ru 81216Sigor@sysoev.ruif grep ^$NXT_GO: $NXT_MAKEFILE 2>&1 > /dev/null; then 82216Sigor@sysoev.ru $echo 83216Sigor@sysoev.ru $echo $0: error: duplicate \"$NXT_GO\" package configured. 84216Sigor@sysoev.ru $echo 85216Sigor@sysoev.ru exit 1; 86216Sigor@sysoev.rufi 87216Sigor@sysoev.ru 881344Smax.romanov@nginx.comNXT_GO_LDFLAGS= 891344Smax.romanov@nginx.com 901344Smax.romanov@nginx.comfor o in ${CFLAGS} ${NXT_CC_OPT}; do 911344Smax.romanov@nginx.com case "$o" in 921344Smax.romanov@nginx.com -fsanitize* | -L* | -l*) NXT_GO_LDFLAGS="${NXT_GO_LDFLAGS} $o" ;; 931344Smax.romanov@nginx.com esac 941344Smax.romanov@nginx.comdone 951344Smax.romanov@nginx.com 96216Sigor@sysoev.rucat << END >> $NXT_MAKEFILE 97216Sigor@sysoev.ru 98398Smax.romanov@nginx.com.PHONY: ${NXT_GO} 99398Smax.romanov@nginx.com.PHONY: ${NXT_GO}-install 100398Smax.romanov@nginx.com.PHONY: ${NXT_GO}-install-src 101398Smax.romanov@nginx.com.PHONY: ${NXT_GO}-uninstall 102216Sigor@sysoev.ru 103216Sigor@sysoev.ruGOPATH = $NXT_GO_PATH 104243Smax.romanov@nginx.comGOOS = `${NXT_GO} env GOOS` 105243Smax.romanov@nginx.comGOARCH = `${NXT_GO} env GOARCH` 106216Sigor@sysoev.ru 107398Smax.romanov@nginx.comNXT_GO_DST = ${NXT_GO_PATH%%:*} 108265Smax.romanov@nginx.com 109265Smax.romanov@nginx.cominstall: ${NXT_GO}-install 110265Smax.romanov@nginx.com 111398Smax.romanov@nginx.com${NXT_GO}: 112398Smax.romanov@nginx.com 1131313Smax.romanov@nginx.com${NXT_GO}-install: ${NXT_GO}-install-src ${NXT_GO}-install-env 114*2062Smax.romanov@nginx.com cd \$(DESTDIR)\$(NXT_GO_DST)/src/${NXT_GO_PKG} && \ 115*2062Smax.romanov@nginx.com GOPATH=\$(DESTDIR)\$(GOPATH) ${NXT_GO} build ${NXT_GO_PKG} 1161313Smax.romanov@nginx.com 1171313Smax.romanov@nginx.com${NXT_GO}-install-src: 1181313Smax.romanov@nginx.com install -d \$(DESTDIR)\$(NXT_GO_DST)/src/${NXT_GO_PKG} 1191316Smax.romanov@nginx.com install -p -m644 ./go/* \$(DESTDIR)\$(NXT_GO_DST)/src/${NXT_GO_PKG}/ 120398Smax.romanov@nginx.com 1211313Smax.romanov@nginx.com${NXT_GO}-install-env: \$(DESTDIR)\$(NXT_GO_DST)/src/${NXT_GO_PKG}/env.go \ 1221313Smax.romanov@nginx.com ${NXT_VERSION_H} ${NXT_BUILD_DIR}/${NXT_LIB_UNIT_STATIC} 123398Smax.romanov@nginx.com 1241313Smax.romanov@nginx.com\$(DESTDIR)\$(NXT_GO_DST)/src/${NXT_GO_PKG}/env.go: 1251313Smax.romanov@nginx.com install -d \$(DESTDIR)\$(NXT_GO_DST)/src/${NXT_GO_PKG} 1261313Smax.romanov@nginx.com $echo "package unit" > \$@ 1271313Smax.romanov@nginx.com $echo "/*" >> \$@ 1281344Smax.romanov@nginx.com $echo "#cgo CFLAGS: ${CFLAGS} ${NXT_CC_OPT}" >> \$@ 1291313Smax.romanov@nginx.com $echo "#cgo CPPFLAGS: -I${PWD}/src -I${PWD}/${NXT_BUILD_DIR}" >> \$@ 1301344Smax.romanov@nginx.com $echo "#cgo LDFLAGS: -L${PWD}/${NXT_BUILD_DIR} ${NXT_GO_LDFLAGS} ${NXT_LD_OPT}" >> \$@ 1311313Smax.romanov@nginx.com $echo "*/" >> \$@ 1321313Smax.romanov@nginx.com $echo 'import "C"' >> \$@ 133216Sigor@sysoev.ru 134265Smax.romanov@nginx.com 135265Smax.romanov@nginx.comuninstall: ${NXT_GO}-uninstall 136265Smax.romanov@nginx.com 137216Sigor@sysoev.ru${NXT_GO}-uninstall: 1381313Smax.romanov@nginx.com rm -rf \$(DESTDIR)\$(NXT_GO_DST)/src/${NXT_GO_PKG} 1391313Smax.romanov@nginx.com rm -rf \$(DESTDIR)\$(NXT_GO_DST)/pkg/\$(GOOS)_\$(GOARCH)/${NXT_GO_PKG} 140216Sigor@sysoev.ru 141216Sigor@sysoev.ruEND 142