]> code.ossystems Code Review - openembedded-core.git/commitdiff
go.bbclass: add support linking against shared runtime
authorMatt Madison <matt@madison.systems>
Wed, 13 Sep 2017 17:54:06 +0000 (14:54 -0300)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Wed, 13 Sep 2017 21:12:19 +0000 (22:12 +0100)
For architectures that support it, use the -linkshared
build option to build packages against the shared Go
runtime.

Signed-off-by: Matt Madison <matt@madison.systems>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/classes/go.bbclass

index 8d363e86a2e4352abadfd6c879e7460133ac404b..d805dc2713736087cdd64b66044fa8d5eb561e9e 100644 (file)
@@ -31,7 +31,14 @@ DEPENDS_GOLANG_class-nativesdk = "virtual/${TARGET_PREFIX}go-crosssdk virtual/${
 
 DEPENDS_append = " ${DEPENDS_GOLANG}"
 
-export GOBUILDFLAGS ?= "-v"
+GO_LINKSHARED ?= "${@'-linkshared' if d.getVar('GO_DYNLINK') else ''}"
+GO_RPATH_LINK = "${@'-Wl,-rpath-link=${STAGING_DIR_TARGET}${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink' if d.getVar('GO_DYNLINK') else ''}"
+GO_RPATH = "${@'-r ${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink' if d.getVar('GO_DYNLINK') else ''}"
+GO_RPATH_class-native = "${@'-r ${STAGING_LIBDIR_NATIVE}/go/pkg/${TARGET_GOTUPLE}_dynlink' if d.getVar('GO_DYNLINK') else ''}"
+GO_RPATH_LINK_class-native = "${@'-Wl,-rpath-link=${STAGING_LIBDIR_NATIVE}/go/pkg/${TARGET_GOTUPLE}_dynlink' if d.getVar('GO_DYNLINK') else ''}"
+GO_EXTLDFLAGS ?= "${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS} ${GO_RPATH_LINK} ${LDFLAGS}"
+GO_LDFLAGS ?= '-ldflags="${GO_RPATH} -extldflags '${GO_EXTLDFLAGS}'"'
+export GOBUILDFLAGS ?= "-v ${GO_LDFLAGS}"
 GOBUILDFLAGS_prepend_task-compile = "${GO_PARALLEL_BUILD} "
 
 export GO = "${HOST_PREFIX}go"
@@ -81,7 +88,7 @@ go_do_configure() {
 go_do_compile() {
        ${GO} env
        if [ -n "${GO_INSTALL}" ]; then
-               ${GO} install ${GOBUILDFLAGS} `go_list_packages`
+               ${GO} install ${GO_LINKSHARED} ${GOBUILDFLAGS} `go_list_packages`
        fi
 }
 do_compile[cleandirs] = "${B}/bin ${B}/pkg"