Merge pull request #15544 from Tokarak/cargo_cpu
Apply cpu-optimisation to Rust projects
This commit is contained in:
commit
fd4f488072
@ -28,6 +28,7 @@ module SharedEnvExtension
|
||||
CMAKE_PREFIX_PATH CMAKE_INCLUDE_PATH CMAKE_FRAMEWORK_PATH
|
||||
GOBIN GOPATH GOROOT PERL_MB_OPT PERL_MM_OPT
|
||||
LIBRARY_PATH LD_LIBRARY_PATH LD_PRELOAD LD_RUN_PATH
|
||||
RUSTFLAGS
|
||||
].freeze
|
||||
private_constant :SANITIZED_VARS
|
||||
|
||||
|
||||
@ -36,6 +36,7 @@ module Stdenv
|
||||
self["PKG_CONFIG_LIBDIR"] = determine_pkg_config_libdir
|
||||
|
||||
self["MAKEFLAGS"] = "-j#{make_jobs}"
|
||||
self["RUSTFLAGS"] = Hardware.rustflags_target_cpu
|
||||
|
||||
if HOMEBREW_PREFIX.to_s != "/usr/local"
|
||||
# /usr/local is already an -isystem and -L directory so we skip it
|
||||
|
||||
@ -63,6 +63,7 @@ module Superenv
|
||||
|
||||
self["HOMEBREW_ENV"] = "super"
|
||||
self["MAKEFLAGS"] ||= "-j#{determine_make_jobs}"
|
||||
self["RUSTFLAGS"] = Hardware.rustflags_target_cpu
|
||||
self["PATH"] = determine_path
|
||||
self["PKG_CONFIG_PATH"] = determine_pkg_config_path
|
||||
self["PKG_CONFIG_LIBDIR"] = determine_pkg_config_libdir
|
||||
|
||||
@ -214,6 +214,24 @@ module Hardware
|
||||
end
|
||||
end
|
||||
alias generic_oldest_cpu oldest_cpu
|
||||
|
||||
# Returns a Rust flag to set the target CPU if necessary.
|
||||
# Defaults to nil.
|
||||
sig { returns(T.nilable(String)) }
|
||||
def rustflags_target_cpu
|
||||
# Rust already defaults to the oldest supported cpu for each target-triplet
|
||||
# so it's safe to ignore generic archs such as :armv6 here.
|
||||
# Rust defaults to apple-m1 since Rust 1.71 for aarch64-apple-darwin.
|
||||
@target_cpu ||= case (cpu = oldest_cpu)
|
||||
when :core
|
||||
:prescott
|
||||
when :native, :ivybridge, :sandybridge, :nehalem, :core2
|
||||
cpu
|
||||
end
|
||||
return if @target_cpu.blank?
|
||||
|
||||
"--codegen target-cpu=#{@target_cpu}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user