Use double quotes to quote a string with the backslash/newline pair. Newer gmake versions, such as GNU Make 4.1, do not remove the backslash from a string quoted with single quotes, which results in an extraneous backslash passed to the shell and, eventually, to the Go compiler.
120 lines
2.4 KiB
Plaintext
120 lines
2.4 KiB
Plaintext
|
|
# Copyright (C) Max Romanov
|
|
# Copyright (C) NGINX, Inc.
|
|
|
|
|
|
shift
|
|
|
|
NXT_GO=go
|
|
|
|
for nxt_option; do
|
|
|
|
case "$nxt_option" in
|
|
-*=*) value=`echo "$nxt_option" | sed -e 's/[-_a-zA-Z0-9]*=//'` ;;
|
|
*) value="" ;;
|
|
esac
|
|
|
|
case "$nxt_option" in
|
|
--go=*) NXT_GO="$value" ;;
|
|
--go-path=*) NXT_GO_PATH="$value" ;;
|
|
|
|
--help)
|
|
cat << END
|
|
|
|
--go=NAME set go executable
|
|
--go-path=PATH set GOPATH variable to install package
|
|
|
|
END
|
|
exit 0
|
|
;;
|
|
|
|
*)
|
|
echo
|
|
echo $0: error: invalid Go option \"$nxt_option\"
|
|
echo
|
|
exit 1
|
|
;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
|
|
if [ ! -f $NXT_AUTOCONF_DATA ]; then
|
|
echo
|
|
echo Please run common $0 before configuring module \"$nxt_module\".
|
|
echo
|
|
exit 1
|
|
fi
|
|
|
|
. $NXT_AUTOCONF_DATA
|
|
|
|
|
|
$echo "configuring Go package"
|
|
$echo "configuring Go package ..." >> $NXT_AUTOCONF_ERR
|
|
|
|
$echo -n "checking for Go ..."
|
|
$echo "checking for Go ..." >> $NXT_AUTOCONF_ERR
|
|
|
|
|
|
if /bin/sh -c "${NXT_GO} version" >> $NXT_AUTOCONF_ERR 2>&1; then
|
|
$echo " found"
|
|
|
|
NXT_GO_VERSION="`${NXT_GO} version`"
|
|
$echo " + ${NXT_GO_VERSION}"
|
|
|
|
else
|
|
$echo
|
|
$echo $0: error: no Go found.
|
|
$echo
|
|
exit 1;
|
|
fi
|
|
|
|
|
|
NXT_GO_PATH=${NXT_GO_PATH=`${NXT_GO} env GOPATH`}
|
|
NXT_GO_PATH=${NXT_GO_PATH:-`pwd`/${NXT_GO}}
|
|
|
|
$echo " + Go package path: \"${NXT_GO_PATH}\""
|
|
|
|
if grep ^$NXT_GO: $NXT_MAKEFILE 2>&1 > /dev/null; then
|
|
$echo
|
|
$echo $0: error: duplicate \"$NXT_GO\" package configured.
|
|
$echo
|
|
exit 1;
|
|
fi
|
|
|
|
cat << END >> $NXT_MAKEFILE
|
|
|
|
.PHONY: ${NXT_GO}
|
|
|
|
all: ${NXT_GO}
|
|
|
|
NXT_ROOT = `pwd`
|
|
|
|
GOPATH = $NXT_GO_PATH
|
|
GOOS = `${NXT_GO} env GOOS`
|
|
GOARCH = `${NXT_GO} env GOARCH`
|
|
|
|
${NXT_GO}: $NXT_BUILD_DIR/nxt_go_gen.h
|
|
|
|
$NXT_BUILD_DIR/nxt_go_gen.h: src/go/unit/*.go
|
|
GOPATH=`pwd` \\
|
|
CGO_CPPFLAGS="-DNXT_CONFIGURE \\
|
|
-I`pwd`/src" \\
|
|
${NXT_GO} build -o $NXT_BUILD_DIR/nxt_go_gen.a \\
|
|
--buildmode=c-archive go/unit
|
|
|
|
${NXT_GO}-install: ${NXT_GO}
|
|
install -d \$(GOPATH)/src/unit
|
|
install -p ./src/go/unit/* \$(GOPATH)/src/unit/
|
|
CGO_CFLAGS="-I\$(NXT_ROOT)/$NXT_BUILD_DIR -I\$(NXT_ROOT)/src" \\
|
|
CGO_LDFLAGS="-L\$(NXT_ROOT)/$NXT_BUILD_DIR ${NXT_LIBRT}" \\
|
|
GOPATH=$NXT_GO_PATH \\
|
|
${NXT_GO} install -v unit
|
|
|
|
${NXT_GO}-uninstall:
|
|
rm -rf \$(GOPATH)/src/unit
|
|
rm -f \$(GOPATH)/pkg/\$(GOOS)_\$(GOARCH)/unit.a
|
|
|
|
END
|