Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cherry-pick the fix for ARM mac #8

Merged
merged 1 commit into from
Feb 12, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 43 additions & 1 deletion absl/copts/AbseilConfigureCopts.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,49 @@ else()
set(ABSL_BUILD_DLL FALSE)
endif()

if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|amd64|AMD64")
if(APPLE AND CMAKE_CXX_COMPILER_ID MATCHES [[Clang]])
# Some CMake targets (not known at the moment of processing) could be set to
# compile for multiple architectures as specified by the OSX_ARCHITECTURES
# property, which is target-specific. We should neither inspect nor rely on
# any CMake property or variable to detect an architecture, in particular:
#
# - CMAKE_OSX_ARCHITECTURES
# is just an initial value for OSX_ARCHITECTURES; set too early.
#
# - OSX_ARCHITECTURES
# is a per-target property; targets could be defined later, and their
# properties could be modified any time later.
#
# - CMAKE_SYSTEM_PROCESSOR
# does not reflect multiple architectures at all.
#
# When compiling for multiple architectures, a build system can invoke a
# compiler either
#
# - once: a single command line for multiple architectures (Ninja build)
# - twice: two command lines per each architecture (Xcode build system)
#
# If case of Xcode, it would be possible to set an Xcode-specific attributes
# like XCODE_ATTRIBUTE_OTHER_CPLUSPLUSFLAGS[arch=arm64] or similar.
#
# In both cases, the viable strategy is to pass all arguments at once, allowing
# the compiler to dispatch arch-specific arguments to a designated backend.
set(ABSL_RANDOM_RANDEN_COPTS "")
foreach(_arch IN ITEMS "x86_64" "arm64")
string(TOUPPER "${_arch}" _arch_uppercase)
string(REPLACE "X86_64" "X64" _arch_uppercase ${_arch_uppercase})
foreach(_flag IN LISTS ABSL_RANDOM_HWAES_${_arch_uppercase}_FLAGS)
list(APPEND ABSL_RANDOM_RANDEN_COPTS "-Xarch_${_arch}" "${_flag}")
endforeach()
endforeach()
# If a compiler happens to deal with an argument for a currently unused
# architecture, it will warn about an unused command line argument.
option(ABSL_RANDOM_RANDEN_COPTS_WARNING OFF
"Warn if one of ABSL_RANDOM_RANDEN_COPTS is unused")
if(ABSL_RANDOM_RANDEN_COPTS AND NOT ABSL_RANDOM_RANDEN_COPTS_WARNING)
list(APPEND ABSL_RANDOM_RANDEN_COPTS "-Wno-unused-command-line-argument")
endif()
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|amd64|AMD64")
if (MSVC)
set(ABSL_RANDOM_RANDEN_COPTS "${ABSL_RANDOM_HWAES_MSVC_X64_FLAGS}")
else()
Expand Down
Loading