mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
cmake-utils.eclass: Split multi-arg CC/CXX/FC correctly, #542530
Split multi-argument CC/CXX/FC into a CMake array consisting of one element containing the compiler path (name) and the other containing all command-line options, space-separated. This is how CMake splits the environment variables CC/CXX/FC internally. The alternative would be to set CC/CXX/FC directly, and let CMake handle the splitting. However, changing that had unforeseen consequences like assembler not being set correctly (#601292) which in turn was impossible to set via environment variables due to bugs in CMake. Therefore, splitting the values into CMAKE_*_COMPILER correctly seems the simplest and safest way forward, at least until we can rely on fixed CMake versions being sufficiently deployed.
This commit is contained in:
@@ -523,11 +523,18 @@ enable_cmake-utils_src_configure() {
|
||||
SET (CMAKE_Fortran_COMPILE_OBJECT "<CMAKE_Fortran_COMPILER> <DEFINES> ${includes} ${FCFLAGS} <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "Fortran compile command" FORCE)
|
||||
_EOF_
|
||||
|
||||
local myCC=$(tc-getCC) myCXX=$(tc-getCXX) myFC=$(tc-getFC)
|
||||
|
||||
# !!! IMPORTANT NOTE !!!
|
||||
# Single slash below is intentional. CMake is weird and wants the
|
||||
# CMAKE_*_VARIABLES split into two elements: the first one with
|
||||
# compiler path, and the second one with all command-line options,
|
||||
# space separated.
|
||||
local toolchain_file=${BUILD_DIR}/gentoo_toolchain.cmake
|
||||
cat > ${toolchain_file} <<- _EOF_ || die
|
||||
SET (CMAKE_C_COMPILER $(tc-getCC))
|
||||
SET (CMAKE_CXX_COMPILER $(tc-getCXX))
|
||||
SET (CMAKE_Fortran_COMPILER $(tc-getFC))
|
||||
SET (CMAKE_C_COMPILER "${myCC/ /;}")
|
||||
SET (CMAKE_CXX_COMPILER "${myCXX/ /;}")
|
||||
SET (CMAKE_Fortran_COMPILER "${myFC/ /;}")
|
||||
SET (CMAKE_AR $(type -P $(tc-getAR)) CACHE FILEPATH "Archive manager" FORCE)
|
||||
SET (CMAKE_RANLIB $(type -P $(tc-getRANLIB)) CACHE FILEPATH "Archive index generator" FORCE)
|
||||
_EOF_
|
||||
|
||||
Reference in New Issue
Block a user