mirror of
https://git.yoctoproject.org/poky
synced 2026-03-06 15:29:40 +01:00
Go has its own system for creating temporary build sub-directories with randomized names, and setting up debug-prefix-map on the fly to prevent those directories leaking into target binaries. OE's own settings were clashing with it, so this change carefully avoids the two stepping on each other. Additionally, the top level build directory cannot be named 'go-something'. (From OE-Core rev: 9985b17a30bb9b9f1bc82a44662687db5cead66e) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
93 lines
3.6 KiB
PHP
93 lines
3.6 KiB
PHP
DEPENDS = "virtual/${TUNE_PKGARCH}-go go-native"
|
|
DEPENDS:class-nativesdk = "virtual/${TARGET_PREFIX}go-crosssdk"
|
|
PROVIDES = "virtual/${TARGET_PREFIX}go-runtime"
|
|
|
|
DEBUG_PREFIX_MAP = "\
|
|
-fdebug-prefix-map=${STAGING_DIR_HOST}= \
|
|
-fdebug-prefix-map=${STAGING_DIR_NATIVE}= \
|
|
"
|
|
|
|
export CGO_CFLAGS = "${CFLAGS}"
|
|
export CGO_CPPFLAGS = "${CPPFLAGS}"
|
|
export CGO_CXXFLAGS = "${CXXFLAGS}"
|
|
export CGO_LDFLAGS = "-Wl,-O1 ${TARGET_LINK_HASH_STYLE} ${ASNEEDED} ${SECURITY_LDFLAGS}"
|
|
export GOCACHE = "${B}/.cache"
|
|
|
|
GO_EXTLDFLAGS ?= "${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS} ${LDFLAGS}"
|
|
GO_SHLIB_LDFLAGS ?= '-ldflags="--linkmode=external -extldflags '${GO_EXTLDFLAGS}'"'
|
|
|
|
do_configure() {
|
|
:
|
|
}
|
|
|
|
do_configure:libc-musl() {
|
|
rm -f ${S}/src/runtime/race/*.syso
|
|
}
|
|
|
|
do_compile() {
|
|
export CC_FOR_${TARGET_GOTUPLE}="${CC}"
|
|
export CXX_FOR_${TARGET_GOTUPLE}="${CXX}"
|
|
|
|
cd src
|
|
./make.bash --target-only --no-banner std
|
|
if [ -n "${GO_DYNLINK}" ]; then
|
|
export GOTOOLDIR="${B}/pkg/tool/native_native"
|
|
CC="$CC_FOR_${TARGET_GOTUPLE}" GOARCH="${TARGET_GOARCH}" GOOS="${TARGET_GOOS}" GOROOT=${B} \
|
|
$GOTOOLDIR/go_bootstrap install -linkshared -buildmode=shared ${GO_SHLIB_LDFLAGS} std
|
|
fi
|
|
cd ${B}
|
|
}
|
|
do_compile[dirs] =+ "${GOTMPDIR} ${B}/bin ${B}/pkg"
|
|
do_compile[cleandirs] += "${GOTMPDIR} ${B}/bin ${B}/pkg"
|
|
|
|
do_install() {
|
|
install -d ${D}${libdir}/go/src
|
|
cp --preserve=mode,timestamps -R ${B}/pkg ${D}${libdir}/go/
|
|
if [ "${BUILD_GOTUPLE}" != "${TARGET_GOTUPLE}" ]; then
|
|
rm -rf ${D}${libdir}/go/pkg/${BUILD_GOTUPLE}
|
|
rm -rf ${D}${libdir}/go/pkg/obj/${BUILD_GOTUPLE}
|
|
fi
|
|
rm -rf ${D}${libdir}/go/pkg/tool
|
|
rm -rf ${D}${libdir}/go/pkg/obj
|
|
rm -rf ${D}${libdir}/go/pkg/bootstrap
|
|
find src -mindepth 1 -maxdepth 1 -type d | while read srcdir; do
|
|
cp --preserve=mode,timestamps -R $srcdir ${D}${libdir}/go/src/
|
|
done
|
|
find ${D}${libdir}/go/src -depth -type d -name testdata -exec rm -rf {} \;
|
|
rm -f ${D}${libdir}/go/src/cmd/dist/dist
|
|
rm -f ${D}${libdir}/go/src/cmd/cgo/zdefaultcc.go
|
|
rm -f ${D}${libdir}/go/src/cmd/go/internal/cfg/zdefaultcc.go
|
|
|
|
}
|
|
|
|
ALLOW_EMPTY:${PN} = "1"
|
|
FILES:${PN} = "${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*${SOLIBSDEV}"
|
|
FILES:${PN}-dev = "${libdir}/go/src ${libdir}/go/pkg/include \
|
|
${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*.shlibname \
|
|
${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*/*.shlibname \
|
|
${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*/*/*.shlibname \
|
|
${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*/*/*/*.shlibname \
|
|
${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*/*/*/*/*.shlibname \
|
|
${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*/*/*/*/*/*.shlibname \
|
|
${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*/*/*/*/*/*/*.shlibname \
|
|
${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*.a \
|
|
${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*/*.a \
|
|
${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*/*/*.a \
|
|
${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*/*/*/*.a \
|
|
${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*/*/*/*/*.a \
|
|
${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*/*/*/*/*/*.a \
|
|
${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*/*/*/*/*/*/*.a \
|
|
"
|
|
FILES:${PN}-staticdev = "${libdir}/go/pkg/${TARGET_GOTUPLE}"
|
|
|
|
# Go sources include some scripts and pre-built binaries for
|
|
# multiple architectures. The static .a files for dynamically-linked
|
|
# runtime are also required in -dev.
|
|
INSANE_SKIP:${PN}-dev = "staticdev file-rdeps arch"
|
|
|
|
INHIBIT_PACKAGE_STRIP = "1"
|
|
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
|
|
INHIBIT_SYSROOT_STRIP = "1"
|
|
|
|
BBCLASSEXTEND = "nativesdk"
|