diff options
author | Mathieu Arnold <mat@FreeBSD.org> | 2016-04-22 12:40:04 +0000 |
---|---|---|
committer | Mathieu Arnold <mat@FreeBSD.org> | 2016-04-22 12:40:04 +0000 |
commit | 5d7b880ff05897ffe683dc906c98a0fbccfefe95 (patch) | |
tree | 368b672d684456fd3d707cabe51d0c42518857db /Mk/Uses/go.mk | |
parent | Update to latest commit. (diff) |
Move lang/go/files/bsd.go.mk to USES=go.
Reviewed by: bapt
Sponsored by: Absolight
Differential Revision: https://reviews.freebsd.org/D6057
Notes
Notes:
svn path=/head/; revision=413776
Diffstat (limited to 'Mk/Uses/go.mk')
-rw-r--r-- | Mk/Uses/go.mk | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/Mk/Uses/go.mk b/Mk/Uses/go.mk new file mode 100644 index 000000000000..eb63d03e2bee --- /dev/null +++ b/Mk/Uses/go.mk @@ -0,0 +1,93 @@ +# $FreeBSD$ +# +# This file contains logic to ease porting of Go packages or binaries using +# the `go` command. +# +# Feature: go +# Usage: USES=go +# Valid ARGS: none +# +# You can set the following variables to control the process. +# +# GO_PKGNAME +# The name of the package. This is the directory that will be +# created in GOPATH/src and seen by the `go` command +# +# GO_TARGET +# The names of the package(s) to build +# +# CGO_CFLAGS +# Addional CFLAGS variables to be passed to the C compiler by the `go` +# command +# +# CGO_LDFLAGS +# Addional LDFLAGS variables to be passed to the C compiler by the `go` +# command +# +# MAINTAINER: jlaffaye@FreeBSD.org + +.if !defined(_INCLUDE_USES_GO_MK) +_INCLUDE_USES_GO_MK= yes + +.if ${ARCH} == "i386" +GOARCH= 386 +GOOBJ= 8 +.else +GOARCH= amd64 +GOOBJ= 6 +.endif + +# Settable variables +GO_PKGNAME?= ${PORTNAME} +GO_TARGET?= ${GO_PKGNAME} +CGO_CFLAGS+= -I${LOCALBASE}/include +CGO_LDFLAGS+= -L${LOCALBASE}/lib + +# Read-only variables +GO_CMD= ${LOCALBASE}/bin/go +LOCAL_GOPATH= ${LOCALBASE}/share/go +GO_LIBDIR= share/go/pkg/${OPSYS:tl}_${GOARCH} +GO_SRCDIR= share/go/src +GO_WRKSRC= ${GO_WRKDIR_SRC}/${GO_PKGNAME} +GO_WRKDIR_BIN= ${WRKDIR}/bin +GO_WRKDIR_SRC= ${WRKDIR}/src +GO_WRKDIR_PKG= ${WRKDIR}/pkg/${OPSYS:tl}_${GOARCH} + +BUILD_DEPENDS+= ${GO_CMD}:lang/go +GO_ENV+= GOPATH="${WRKDIR}:${LOCAL_GOPATH}" \ + CGO_CFLAGS="${CGO_CFLAGS}" \ + CGO_LDFLAGS="${CGO_LDFLAGS}" \ + GOBIN="" +PLIST_SUB+= GO_LIBDIR=${GO_LIBDIR} \ + GO_SRCDIR=${GO_SRCDIR} \ + GO_PKGNAME=${GO_PKGNAME} + +.if !target(post-extract) +post-extract: + @${MKDIR} ${GO_WRKSRC:H} + @${LN} -sf ${WRKSRC} ${GO_WRKSRC} +.endif + +.if !target(do-build) +do-build: + @(cd ${GO_WRKSRC}; ${SETENV} ${MAKE_ENV} ${GO_ENV} ${GO_CMD} install -v ${GO_TARGET}) +.endif + +.if !target(do-install) +do-install: +.for _TARGET in ${GO_TARGET} + @if [ -e "${GO_WRKDIR_PKG}/${_TARGET}.a" ]; then \ + _TARGET_LIBDIR="${STAGEDIR}/${PREFIX}/${GO_LIBDIR}/${_TARGET:H}"; \ + ${MKDIR} $${_TARGET_LIBDIR}; \ + ${INSTALL_DATA} ${GO_WRKDIR_PKG}/${_TARGET}.a $${_TARGET_LIBDIR}; \ + _TARGET_SRCDIR="${STAGEDIR}/${PREFIX}/${GO_SRCDIR}/${_TARGET}"; \ + ${MKDIR} $${_TARGET_SRCDIR}; \ + (cd ${GO_WRKDIR_SRC}/${_TARGET}/ && ${COPYTREE_SHARE} \* $${_TARGET_SRCDIR}); \ + fi; \ + if [ -e "${GO_WRKDIR_BIN}/${_TARGET:T}" ]; then \ + ${INSTALL_PROGRAM} ${GO_WRKDIR_BIN}/${_TARGET:T} ${STAGEDIR}/${LOCALBASE}/bin; \ + fi; +.endfor +.endif + +.endif |