summaryrefslogtreecommitdiff
path: root/lang/rust
diff options
context:
space:
mode:
authorAlan Somers <asomers@FreeBSD.org>2024-10-21 13:25:23 -0600
committerAlan Somers <asomers@FreeBSD.org>2024-11-09 15:45:49 -0700
commitb039f2e46b15c1ff5cbaf41e642993d982294da3 (patch)
treeb80e6212aa517e7a9f99789d76ae94af846fd2e3 /lang/rust
parentx11-toolkits/linux-rl9-gtk2: provide a REAL aarch64 plist (diff)
lang/rust: enable SSE2 by default on i386
Upstream Rust always requires SSE2 for x86. But back in 2017[^1][^2] we patched lang/rust to disable SSE2 for i386. At the time, it was reported that some people were still using non-SSE2 capable hardware. More recently, LLVM bugs have been discovered[^3][^4] that can result in rounding bugs and reduced accuracy when using f64 on non-SSE hardware. In weird cases, they can even cause wilder unpredictable behavior, like segfaults. Revert our change for the sake of Pentium 4 (and later) users. But add an SSE2 option. Disabling it will allow the port to be used on Pentium 3 and older CPUs. [^1]: https://github.com/freebsd/freebsd-ports/commit/d65b2886b1b3b2135f0b8982de4d9754517acf61 [^2]: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=223415 [^3]: https://github.com/rust-lang/rust/issues/114479 [^4]: https://github.com/llvm/llvm-project/issues/44218 Reviewed by: emaste Differential Revision: https://reviews.freebsd.org/D47227
Diffstat (limited to 'lang/rust')
-rw-r--r--lang/rust/Makefile7
-rw-r--r--lang/rust/files/extra-patch-compiler_rustc__target_src_spec_targets_i686__unknown__freebsd.rs (renamed from lang/rust/files/patch-compiler_rustc__target_src_spec_targets_i686__unknown__freebsd.rs)0
2 files changed, 6 insertions, 1 deletions
diff --git a/lang/rust/Makefile b/lang/rust/Makefile
index 8c2b971e132a..9406b62a91ad 100644
--- a/lang/rust/Makefile
+++ b/lang/rust/Makefile
@@ -1,6 +1,6 @@
PORTNAME= rust
PORTVERSION?= 1.82.0
-PORTREVISION?= 0
+PORTREVISION?= 1
CATEGORIES= lang
MASTER_SITES= https://static.rust-lang.org/dist/:src \
https://dev-static.rust-lang.org/dist/:src \
@@ -48,12 +48,17 @@ TMPDIR?= ${WRKDIR}
OPTIONS_DEFINE= DOCS GDB LTO PORT_LLVM SOURCES WASM
OPTIONS_DEFAULT= SOURCES WASM
+OPTIONS_DEFINE_i386= SSE2
+OPTIONS_DEFAULT_i386= SSE2
GDB_DESC= Install ports gdb (necessary for debugging rust programs)
PORT_LLVM_DESC= Build against devel/llvm instead of bundled copy (experimental)
+SSE2_DESC= Enable SSE2 instructions
SOURCES_DESC= Install source files
WASM_DESC= Build the WebAssembly target (wasm32-unknown-unknown)
+SSE2_EXTRA_PATCHES_OFF+= ${FILESDIR}/extra-patch-compiler_rustc__target_src_spec_targets_i686__unknown__freebsd.rs
+
DOCS_VARS= _RUST_BUILD_DOCS=true \
_COMPONENTS+="rust-docs-${_PACKAGE_VERS}-${_RUST_TARGET} rust-docs-json-${_PACKAGE_VERS}-${_RUST_TARGET}" \
_RUST_TOOLS+=rustdoc
diff --git a/lang/rust/files/patch-compiler_rustc__target_src_spec_targets_i686__unknown__freebsd.rs b/lang/rust/files/extra-patch-compiler_rustc__target_src_spec_targets_i686__unknown__freebsd.rs
index 45d479133343..45d479133343 100644
--- a/lang/rust/files/patch-compiler_rustc__target_src_spec_targets_i686__unknown__freebsd.rs
+++ b/lang/rust/files/extra-patch-compiler_rustc__target_src_spec_targets_i686__unknown__freebsd.rs