[build] make Xcode use the correct compiler when it is installed in a non-standard location

This commit is contained in:
Konstantin Käfer
2017-07-17 15:22:09 +02:00
parent b5c0bf1b8d
commit 698542cf45
6 changed files with 19 additions and 21 deletions

View File

@@ -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.

View File

@@ -0,0 +1,4 @@
#!/bin/sh
export CCACHE_CPP2=true
exec "@C_LAUNCHER@" "${DEVELOPER_DIR}/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" "$@"

View File

@@ -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@" "$@"

View File

@@ -0,0 +1,4 @@
#!/bin/sh
export CCACHE_CPP2=true
exec "@CXX_LAUNCHER@" "${DEVELOPER_DIR}/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++" "$@"

View File

@@ -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@" "$@"

View File

@@ -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) {