xref: /unit/auto/modules/go (revision 2062:ede07f84045b)
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