summaryrefslogtreecommitdiff
path: root/Mk/Uses/go.mk
diff options
context:
space:
mode:
authorMathieu Arnold <mat@FreeBSD.org>2016-04-22 12:40:04 +0000
committerMathieu Arnold <mat@FreeBSD.org>2016-04-22 12:40:04 +0000
commit5d7b880ff05897ffe683dc906c98a0fbccfefe95 (patch)
tree368b672d684456fd3d707cabe51d0c42518857db /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.mk93
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