1*4882a593Smuzhiyuninherit cross-canadian 2*4882a593Smuzhiyun 3*4882a593SmuzhiyunDEPENDS = "go-native virtual/${HOST_PREFIX}go-crosssdk virtual/nativesdk-${HOST_PREFIX}go-runtime \ 4*4882a593Smuzhiyun virtual/${HOST_PREFIX}gcc-crosssdk virtual/nativesdk-libc \ 5*4882a593Smuzhiyun virtual/nativesdk-${HOST_PREFIX}compilerlibs" 6*4882a593SmuzhiyunPN = "go-cross-canadian-${TRANSLATED_TARGET_ARCH}" 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun# it uses gcc on build machine during go-cross-canadian bootstrap, but 9*4882a593Smuzhiyun# the gcc version may be old and not support option '-fmacro-prefix-map' 10*4882a593Smuzhiyun# which is one of default values of DEBUG_PREFIX_MAP 11*4882a593SmuzhiyunDEBUG_PREFIX_MAP = "-fdebug-prefix-map=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \ 12*4882a593Smuzhiyun -fdebug-prefix-map=${STAGING_DIR_HOST}= \ 13*4882a593Smuzhiyun -fdebug-prefix-map=${STAGING_DIR_NATIVE}= \ 14*4882a593Smuzhiyun " 15*4882a593Smuzhiyun 16*4882a593Smuzhiyunexport GOTOOLDIR_BOOTSTRAP = "${STAGING_LIBDIR_NATIVE}/${HOST_SYS}/go/pkg/tool/${BUILD_GOTUPLE}" 17*4882a593Smuzhiyunexport CGO_CFLAGS = "${CFLAGS}" 18*4882a593Smuzhiyunexport CGO_LDFLAGS = "${LDFLAGS}" 19*4882a593Smuzhiyunexport GO_LDFLAGS = '-linkmode external -extld ${HOST_PREFIX}gcc -extldflags "--sysroot=${STAGING_DIR_HOST} ${SECURITY_NOPIE_CFLAGS} ${HOST_CC_ARCH} ${LDFLAGS}"' 20*4882a593Smuzhiyun 21*4882a593Smuzhiyundo_configure[noexec] = "1" 22*4882a593Smuzhiyun 23*4882a593Smuzhiyundo_compile() { 24*4882a593Smuzhiyun export CC_FOR_${HOST_GOTUPLE}="${HOST_PREFIX}gcc --sysroot=${STAGING_DIR_HOST}${SDKPATHNATIVE} ${SECURITY_NOPIE_CFLAGS}" 25*4882a593Smuzhiyun export CXX_FOR_${HOST_GOTUPLE}="${HOST_PREFIX}gxx --sysroot=${STAGING_DIR_HOST}${SDKPATHNATIVE} ${SECURITY_NOPIE_CFLAGS}" 26*4882a593Smuzhiyun cd src 27*4882a593Smuzhiyun ./make.bash --host-only --no-banner 28*4882a593Smuzhiyun cd ${B} 29*4882a593Smuzhiyun} 30*4882a593Smuzhiyundo_compile[cleandirs] += "${GOTMPDIR} ${B}/bin ${B}/pkg" 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun 33*4882a593Smuzhiyunmake_wrapper() { 34*4882a593Smuzhiyun rm -f ${D}${bindir}/$2 35*4882a593Smuzhiyun cat <<END >${D}${bindir}/$2 36*4882a593Smuzhiyun#!/bin/sh 37*4882a593Smuzhiyunhere=\`dirname \$0\` 38*4882a593Smuzhiyunnative_goroot=\`readlink -f \$here/../../lib/${TARGET_SYS}/go\` 39*4882a593Smuzhiyunexport GOARCH="${TARGET_GOARCH}" 40*4882a593Smuzhiyunexport GOOS="${TARGET_GOOS}" 41*4882a593Smuzhiyuntest -n "\$GOARM" || export GOARM="${TARGET_GOARM}" 42*4882a593Smuzhiyuntest -n "\$GO386" || export GO386="${TARGET_GO386}" 43*4882a593Smuzhiyuntest -n "\$GOMIPS" || export GOMIPS="${TARGET_GOMIPS}" 44*4882a593Smuzhiyunexport GOTOOLDIR="\$native_goroot/pkg/tool/${HOST_GOTUPLE}" 45*4882a593Smuzhiyuntest -n "\$GOROOT" || export GOROOT="\$OECORE_TARGET_SYSROOT/${target_libdir}/go" 46*4882a593Smuzhiyun\$here/../../lib/${TARGET_SYS}/go/bin/$1 "\$@" 47*4882a593SmuzhiyunEND 48*4882a593Smuzhiyun chmod +x ${D}${bindir}/$2 49*4882a593Smuzhiyun} 50*4882a593Smuzhiyun 51*4882a593Smuzhiyundo_install() { 52*4882a593Smuzhiyun install -d ${D}${libdir}/go/pkg/tool 53*4882a593Smuzhiyun cp --preserve=mode,timestamps -R ${B}/pkg/tool/${HOST_GOTUPLE} ${D}${libdir}/go/pkg/tool/ 54*4882a593Smuzhiyun install -d ${D}${bindir} ${D}${libdir}/go/bin 55*4882a593Smuzhiyun for f in ${B}/${GO_BUILD_BINDIR}/* 56*4882a593Smuzhiyun do 57*4882a593Smuzhiyun base=`basename $f` 58*4882a593Smuzhiyun install -m755 $f ${D}${libdir}/go/bin 59*4882a593Smuzhiyun make_wrapper $base ${TARGET_PREFIX}$base 60*4882a593Smuzhiyun done 61*4882a593Smuzhiyun} 62