xref: /unit/auto/modules/go (revision 243)
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.runxt_go_test="GOPATH=`pwd` CGO_CPPFLAGS=-DNXT_CONFIGURE \
60216Sigor@sysoev.ru    \"${NXT_GO}\" build -o build/nxt_go_gen.a --buildmode=c-archive nginext"
61216Sigor@sysoev.ru
62216Sigor@sysoev.ru
63216Sigor@sysoev.ruif /bin/sh -c "$nxt_go_test" >> $NXT_AUTOCONF_ERR 2>&1; then
64216Sigor@sysoev.ru    $echo " found"
65216Sigor@sysoev.ru
66216Sigor@sysoev.ru    NXT_GO_VERSION="`${NXT_GO} version`"
67216Sigor@sysoev.ru    $echo " + ${NXT_GO_VERSION}"
68216Sigor@sysoev.ru
69216Sigor@sysoev.ruelse
70216Sigor@sysoev.ru    $echo "----------"    >> $NXT_AUTOCONF_ERR
71216Sigor@sysoev.ru    $echo $nxt_go_test    >> $NXT_AUTOCONF_ERR
72216Sigor@sysoev.ru    $echo "----------"    >> $NXT_AUTOCONF_ERR
73216Sigor@sysoev.ru    $echo
74216Sigor@sysoev.ru    $echo
75216Sigor@sysoev.ru    $echo $0: error: no Go found.
76216Sigor@sysoev.ru    $echo
77216Sigor@sysoev.ru    exit 1;
78216Sigor@sysoev.rufi
79216Sigor@sysoev.ru
80216Sigor@sysoev.ru
81216Sigor@sysoev.ru
82*243Smax.romanov@nginx.comNXT_GO_PATH=${NXT_GO_PATH=`${NXT_GO} env GOPATH`}
83216Sigor@sysoev.ruNXT_GO_PATH=${NXT_GO_PATH:-`pwd`/${NXT_GO}}
84216Sigor@sysoev.ru
85216Sigor@sysoev.ru$echo " + Go package path: \"${NXT_GO_PATH}\""
86216Sigor@sysoev.ru
87216Sigor@sysoev.ruif grep ^$NXT_GO: $NXT_MAKEFILE 2>&1 > /dev/null; then
88216Sigor@sysoev.ru    $echo
89216Sigor@sysoev.ru    $echo $0: error: duplicate \"$NXT_GO\" package configured.
90216Sigor@sysoev.ru    $echo
91216Sigor@sysoev.ru    exit 1;
92216Sigor@sysoev.rufi
93216Sigor@sysoev.ru
94216Sigor@sysoev.rucat << END >> $NXT_MAKEFILE
95216Sigor@sysoev.ru
96216Sigor@sysoev.ru.PHONY:		${NXT_GO}
97216Sigor@sysoev.ru
98241Smax.romanov@nginx.comall: ${NXT_GO}
99241Smax.romanov@nginx.com
100216Sigor@sysoev.ruNXT_ROOT =	`pwd`
101216Sigor@sysoev.ru
102216Sigor@sysoev.ruGOPATH =	$NXT_GO_PATH
103*243Smax.romanov@nginx.comGOOS =		`${NXT_GO} env GOOS`
104*243Smax.romanov@nginx.comGOARCH =	`${NXT_GO} env GOARCH`
105216Sigor@sysoev.ru
106216Sigor@sysoev.ru${NXT_GO}:
107216Sigor@sysoev.ru	install -d \$(GOPATH)/src/nginext
108216Sigor@sysoev.ru	install -p ./src/nginext/*.c ./src/nginext/*.h \\
109216Sigor@sysoev.ru		./src/nginext/*.go \$(GOPATH)/src/nginext/
110216Sigor@sysoev.ru	CGO_CFLAGS="-I\$(NXT_ROOT)/build -I\$(NXT_ROOT)/src" \\
111242Smax.romanov@nginx.com		CGO_LDFLAGS="-L\$(NXT_ROOT)/build ${NXT_LIBRT}" \\
112216Sigor@sysoev.ru		GOPATH=$NXT_GO_PATH \\
113*243Smax.romanov@nginx.com		${NXT_GO} install -v nginext
114216Sigor@sysoev.ru
115216Sigor@sysoev.ru${NXT_GO}-uninstall:
116216Sigor@sysoev.ru	rm -rf \$(GOPATH)/src/nginext
117216Sigor@sysoev.ru	rm -f \$(GOPATH)/pkg/\$(GOOS)_\$(GOARCH)/nginext.a
118216Sigor@sysoev.ru
119216Sigor@sysoev.ruEND
120