1PORTNAME= go 2DISTVERSION?= g20240208 3PORTREVISION?= 0 4CATEGORIES= lang 5MASTER_SITES?= https://github.com/dmgk/go-bootstrap/releases/download/${BOOTSTRAP_TAG}/:bootstrap \ 6 FREEBSD_LOCAL/dmgk:bootstrap 7PKGNAMESUFFIX= ${DISTVERSION:C/^g[0-9]+/-devel/:C/^([0-9]+)\.([0-9]+).*/\1\2/} 8DISTFILES?= go-freebsd-${GOARCH_${ARCH}}${GOARM_${ARCH}}-${BOOTSTRAP_TAG}.tar.xz:bootstrap 9 10MAINTAINER= ports@MidnightBSD.org 11COMMENT?= Go programming language (development version) 12WWW= https://golang.org 13 14LICENSE= bsd3 15LICENSE_FILE= ${WRKSRC}/LICENSE 16 17.ifdef QEMU_EMULATING 18IGNORE= fails to build with qemu-user-static 19.endif 20 21ONLY_FOR_ARCHS= aarch64 amd64 armv6 armv7 i386 riscv64 22 23BUILD_DEPENDS?= bash:shells/bash 24RUN_DEPENDS= ${RUN_DEPENDS_${ARCH}} 25# ld.bfd from devel/binutils is needed for working cgo on aarch64 26RUN_DEPENDS_aarch64= binutils>0:devel/binutils 27 28NO_TEST= yes 29 30USES= cpe shebangfix 31 32CPE_VENDOR= golang 33NO_SHLIB_REQUIRES_GLOB= * 34 35.ifndef MASTERDIR 36USE_GITHUB= yes 37GH_ACCOUNT= golang 38# go1.22 39GH_TAGNAME= 20107e05a609b8f2e61a6b5e8dc258237ad046e7 40.endif 41 42SHEBANG_FILES?= misc/wasm/go_js_wasm_exec misc/wasm/go_wasip1_wasm_exec 43SHEBANG_GLOB= *.bash *.pl *.sh 44REINPLACE_ARGS= -i'' 45# Upstream archive contains files with UTF-8 names 46EXTRACT_CMD= ${SETENV} LC_ALL=en_US.UTF-8 ${TAR} 47BASH?= ${LOCALBASE}/bin/bash 48 49OPTIONS_DEFINE_i386= SOFTFLOAT 50OPTIONS_DEFAULT_amd64= V1 51OPTIONS_SINGLE= ${OPTIONS_SINGLE_${ARCH}} 52OPTIONS_SINGLE_amd64= GOAMD64 53OPTIONS_SINGLE_GOAMD64= V1 V2 V3 V4 54 55SOFTFLOAT_DESC= Use soft float on non-SSE2 processors (Pentium 4 and older) 56SOFTFLOAT_VARS= GO386=softfloat 57V1_DESC= Use baseline x86-64 instruction set 58V1_VARS= GOAMD64=v1 59V2_DESC= V1 instructions plus CMPXCHG16B, LAHF, SAHF, POPCNT, SSE* 60V2_VARS= GOAMD64=v2 61V3_DESC= V2 instructions plus AVX*, BMI*, F16C, FMA, LZCNT, MOVBE, OSXSAVE 62V3_VARS= GOAMD64=v3 63V4_DESC= V3 instructions plus AVX512* 64V4_VARS= GOAMD64=v4 65 66BOOTSTRAP_TAG= go1.20 67GO_SUFFIX= ${PKGNAMESUFFIX} 68 69GOARCH_aarch64= arm64 70GOARCH_amd64= amd64 71GOARCH_armv6= arm 72GOARCH_armv7= arm 73GOARCH_i386= 386 74GOARCH_riscv64= riscv64 75GOARM_armv6= 6 76GOARM_armv7= 7 77 78.include <bsd.port.pre.mk> 79 80post-extract: 81 @[ -z "${GH_TAGNAME}" ] || \ 82 ${ECHO_CMD} "devel ${DISTVERSION}-${GH_TAGNAME} freebsd/${GOARCH_${ARCH}}" > ${WRKSRC}/VERSION 83 84post-patch: 85 @${REINPLACE_CMD} -e 's|type -ap |type |' ${WRKSRC}/src/make.bash 86 @${REINPLACE_CMD} -e 's|^if ulimit -T|false \&\& &|' ${WRKSRC}/src/run.bash 87 88pre-build: 89 # Check that the running kernel has COMPAT_FREEBSD11 required by lang/go{,-devel} post-ino64 90 @${SETENV} CC="${CC}" OPSYS="freebsd" OSVERSION="${OSVERSION}" WRKDIR="${WRKDIR}" \ 91 ${SH} ${SCRIPTSDIR}/rust-compat11-canary.sh 92 93do-build: 94 cd ${WRKSRC}/src ; ${SETENV} \ 95 XDG_CACHE_HOME=${WRKDIR} \ 96 GOROOT_BOOTSTRAP=${WRKDIR}/go-freebsd-${GOARCH_${ARCH}}${GOARM_${ARCH}}-bootstrap \ 97 GOROOT=${WRKSRC} \ 98 GOROOT_FINAL=${PREFIX}/go${GO_SUFFIX} \ 99 GOBIN= \ 100 GOOS=freebsd \ 101 GOARCH=${GOARCH_${ARCH}} \ 102 GO386=${GO386} \ 103 GOARM=${GOARM_${ARCH}} \ 104 CC=${CC} \ 105 ${BASH} make.bash -v 106 107do-install: 108 -cd ${WRKSRC} ; \ 109 ${RM} -r .gitattributes .gitignore .github favicon.ico robots.txt \ 110 pkg/obj pkg/bootstrap pkg/freebsd_${GOARCH_${ARCH}}/cmd 111 @${MKDIR} ${PREFIX}/go${GO_SUFFIX} 112 @${CP} -a ${WRKSRC}/* ${PREFIX}/go${GO_SUFFIX} 113 @${STRIP_CMD} ${PREFIX}/go${GO_SUFFIX}/bin/* 114 @${STRIP_CMD} ${PREFIX}/go${GO_SUFFIX}/pkg/tool/freebsd_${GOARCH_${ARCH}}/* 115.for f in go gofmt 116 ${LN} -sf ../go${GO_SUFFIX}/bin/${f} ${PREFIX}/bin/${f}${GO_SUFFIX} 117 @${ECHO_CMD} bin/${f}${GO_SUFFIX} >> ${TMPPLIST} 118.endfor 119 -${RM} -rf ${PREFIX}/go${GO_SUFFIX}/test/fixedbugs 120 @cd ${PREFIX} && ${FIND} go${GO_SUFFIX} -type f >> ${TMPPLIST} 121 122.if !defined(_GO_MAKESUM_GUARD) 123makesum: 124 ${MAKE} -D_GO_MAKESUM_GUARD makesum ARCH=${ONLY_FOR_ARCHS:O:[1]} DISTINFO_FILE=${DISTINFO_FILE}.tmp 125.for arch in ${ONLY_FOR_ARCHS:O:[2..-1]} 126 ${MAKE} -D_GO_MAKESUM_GUARD makesum ARCH=${arch} DISTINFO_FILE=${DISTINFO_FILE}.${arch} 127 ${SED} 1d ${DISTINFO_FILE}.${arch} >> ${DISTINFO_FILE}.tmp 128 ${RM} ${DISTINFO_FILE}.${arch} 129.endfor 130 ${AWK} '!seen[$$0]++' ${DISTINFO_FILE}.tmp > ${DISTINFO_FILE} 131 ${RM} ${DISTINFO_FILE}.tmp 132.endif 133 134.include <bsd.port.post.mk> 135