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
|
CMAKE_PREFIX_PATH CMAKE_INCLUDE_PATH CMAKE_FRAMEWORK_PATH
|
||||||
GOBIN GOPATH GOROOT PERL_MB_OPT PERL_MM_OPT
|
GOBIN GOPATH GOROOT PERL_MB_OPT PERL_MM_OPT
|
||||||
LIBRARY_PATH LD_LIBRARY_PATH LD_PRELOAD LD_RUN_PATH
|
LIBRARY_PATH LD_LIBRARY_PATH LD_PRELOAD LD_RUN_PATH
|
||||||
|
RUSTFLAGS
|
||||||
].freeze
|
].freeze
|
||||||
private_constant :SANITIZED_VARS
|
private_constant :SANITIZED_VARS
|
||||||
|
|
||||||
|
|||||||
@ -36,6 +36,7 @@ module Stdenv
|
|||||||
self["PKG_CONFIG_LIBDIR"] = determine_pkg_config_libdir
|
self["PKG_CONFIG_LIBDIR"] = determine_pkg_config_libdir
|
||||||
|
|
||||||
self["MAKEFLAGS"] = "-j#{make_jobs}"
|
self["MAKEFLAGS"] = "-j#{make_jobs}"
|
||||||
|
self["RUSTFLAGS"] = Hardware.rustflags_target_cpu
|
||||||
|
|
||||||
if HOMEBREW_PREFIX.to_s != "/usr/local"
|
if HOMEBREW_PREFIX.to_s != "/usr/local"
|
||||||
# /usr/local is already an -isystem and -L directory so we skip it
|
# /usr/local is already an -isystem and -L directory so we skip it
|
||||||
|
|||||||
@ -63,6 +63,7 @@ module Superenv
|
|||||||
|
|
||||||
self["HOMEBREW_ENV"] = "super"
|
self["HOMEBREW_ENV"] = "super"
|
||||||
self["MAKEFLAGS"] ||= "-j#{determine_make_jobs}"
|
self["MAKEFLAGS"] ||= "-j#{determine_make_jobs}"
|
||||||
|
self["RUSTFLAGS"] = Hardware.rustflags_target_cpu
|
||||||
self["PATH"] = determine_path
|
self["PATH"] = determine_path
|
||||||
self["PKG_CONFIG_PATH"] = determine_pkg_config_path
|
self["PKG_CONFIG_PATH"] = determine_pkg_config_path
|
||||||
self["PKG_CONFIG_LIBDIR"] = determine_pkg_config_libdir
|
self["PKG_CONFIG_LIBDIR"] = determine_pkg_config_libdir
|
||||||
|
|||||||
@ -214,6 +214,24 @@ module Hardware
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
alias generic_oldest_cpu oldest_cpu
|
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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user