[build] make Xcode use the correct compiler when it is installed in a non-standard location
This commit is contained in:
@@ -92,22 +92,28 @@ find_program(CCACHE_PROGRAM ccache)
|
||||
if(CCACHE_PROGRAM)
|
||||
set(C_LAUNCHER "${CCACHE_PROGRAM}")
|
||||
set(CXX_LAUNCHER "${CCACHE_PROGRAM}")
|
||||
configure_file(scripts/launch-c.in launch-c)
|
||||
configure_file(scripts/launch-cxx.in launch-cxx)
|
||||
execute_process(COMMAND chmod a+rx "${CMAKE_BINARY_DIR}/launch-c" "${CMAKE_BINARY_DIR}/launch-cxx")
|
||||
|
||||
if(CMAKE_GENERATOR STREQUAL "Xcode")
|
||||
# Set Xcode project attributes to route compilation and linking through our scripts
|
||||
# Xcode doesn't include the path to the compiler/linker by default, so we'll have to add it.
|
||||
configure_file(scripts/launch-c-xcode.in launch-c @ONLY)
|
||||
configure_file(scripts/launch-cxx-xcode.in launch-cxx @ONLY)
|
||||
|
||||
set(CMAKE_XCODE_ATTRIBUTE_CC "${CMAKE_BINARY_DIR}/launch-c")
|
||||
set(CMAKE_XCODE_ATTRIBUTE_CXX "${CMAKE_BINARY_DIR}/launch-cxx")
|
||||
set(CMAKE_XCODE_ATTRIBUTE_LD "${CMAKE_BINARY_DIR}/launch-c")
|
||||
set(CMAKE_XCODE_ATTRIBUTE_LDPLUSPLUS "${CMAKE_BINARY_DIR}/launch-cxx")
|
||||
else()
|
||||
# Support Unix Makefiles and Ninja
|
||||
configure_file(scripts/launch-c.in launch-c @ONLY)
|
||||
configure_file(scripts/launch-cxx.in launch-cxx @ONLY)
|
||||
|
||||
set(CMAKE_C_COMPILER_LAUNCHER "${CMAKE_BINARY_DIR}/launch-c")
|
||||
set(CMAKE_CXX_COMPILER_LAUNCHER "${CMAKE_BINARY_DIR}/launch-cxx")
|
||||
endif()
|
||||
|
||||
execute_process(COMMAND chmod a+rx "${CMAKE_BINARY_DIR}/launch-c" "${CMAKE_BINARY_DIR}/launch-cxx")
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES ".*Clang")
|
||||
# ccache splits up the compile steps, so we end up with unused arguments in some steps.
|
||||
# Clang also thinks that ccache isn't interactive, so we explicitly need to enable color.
|
||||
|
||||
4
scripts/launch-c-xcode.in
Normal file
4
scripts/launch-c-xcode.in
Normal file
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
|
||||
export CCACHE_CPP2=true
|
||||
exec "@C_LAUNCHER@" "${DEVELOPER_DIR}/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" "$@"
|
||||
@@ -1,10 +1,4 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Xcode generator doesn't include the compiler as the
|
||||
# first argument, Ninja and Makefiles do. Handle both cases.
|
||||
if [ "$1" = "${CMAKE_C_COMPILER}" ] ; then
|
||||
shift
|
||||
fi
|
||||
|
||||
export CCACHE_CPP2=true
|
||||
exec "${C_LAUNCHER}" "${CMAKE_C_COMPILER}" "$@"
|
||||
exec "@C_LAUNCHER@" "$@"
|
||||
|
||||
4
scripts/launch-cxx-xcode.in
Normal file
4
scripts/launch-cxx-xcode.in
Normal file
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
|
||||
export CCACHE_CPP2=true
|
||||
exec "@CXX_LAUNCHER@" "${DEVELOPER_DIR}/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++" "$@"
|
||||
@@ -1,10 +1,4 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Xcode generator doesn't include the compiler as the
|
||||
# first argument, Ninja and Makefiles do. Handle both cases.
|
||||
if [ "$1" = "${CMAKE_CXX_COMPILER}" ] ; then
|
||||
shift
|
||||
fi
|
||||
|
||||
export CCACHE_CPP2=true
|
||||
exec "${CXX_LAUNCHER}" "${CMAKE_CXX_COMPILER}" "$@"
|
||||
exec "@CXX_LAUNCHER@" "$@"
|
||||
|
||||
@@ -100,8 +100,6 @@ auto createTileDataFn(ActionLog& log, T& dataTiles) {
|
||||
};
|
||||
}
|
||||
|
||||
// Unused template argument to fix Clang crash
|
||||
// See https://github.com/mapbox/mapbox-gl-native/pull/9501
|
||||
template <typename = int>
|
||||
auto retainTileDataFn(ActionLog& log) {
|
||||
return [&](auto& tileData, Resource::Necessity necessity) {
|
||||
@@ -109,8 +107,6 @@ auto retainTileDataFn(ActionLog& log) {
|
||||
};
|
||||
}
|
||||
|
||||
// Unused template argument to fix Clang crash
|
||||
// See https://github.com/mapbox/mapbox-gl-native/pull/9501
|
||||
template <typename = int>
|
||||
auto renderTileFn(ActionLog& log) {
|
||||
return [&](const auto& id, auto& tileData) {
|
||||
|
||||
Reference in New Issue
Block a user