From 7a9f8027ac1aa93c5e073d4fe138414059125fa8 Mon Sep 17 00:00:00 2001 From: Juha Alanen Date: Tue, 4 Feb 2020 13:58:19 +0200 Subject: [build] Enable ccache for Xcode iOS builds --- CMakeLists.txt | 20 ++++++++++++++++++++ scripts/ci/ccache-c.in | 9 +++++++++ scripts/ci/ccache-cxx.in | 9 +++++++++ 3 files changed, 38 insertions(+) create mode 100644 scripts/ci/ccache-c.in create mode 100644 scripts/ci/ccache-cxx.in diff --git a/CMakeLists.txt b/CMakeLists.txt index e008db2117..4509f08e73 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,26 @@ cmake_minimum_required(VERSION 3.10 FATAL_ERROR) project("Mapbox GL Native" LANGUAGES CXX C) +find_program(CCACHE_PROGRAM ccache) +if(CCACHE_PROGRAM AND CMAKE_SYSTEM_NAME STREQUAL "iOS") + # Set up wrapper scripts + set(C_LAUNCHER "${CCACHE_PROGRAM}") + set(CXX_LAUNCHER "${CCACHE_PROGRAM}") + configure_file(${PROJECT_SOURCE_DIR}/scripts/ci/ccache-c.in ccache-c) + configure_file(${PROJECT_SOURCE_DIR}/scripts/ci/ccache-cxx.in ccache-cxx) + execute_process( + COMMAND + chmod + a+rx + "${CMAKE_BINARY_DIR}/ccache-c" + "${CMAKE_BINARY_DIR}/ccache-cxx" + ) + + # Set Xcode project attributes to route compilation and linking through our scripts + set(CMAKE_XCODE_ATTRIBUTE_CC "${CMAKE_BINARY_DIR}/ccache-c") + set(CMAKE_XCODE_ATTRIBUTE_CXX "${CMAKE_BINARY_DIR}/ccache-cxx") +endif() + set_property(GLOBAL PROPERTY USE_FOLDERS ON) set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER Core) diff --git a/scripts/ci/ccache-c.in b/scripts/ci/ccache-c.in new file mode 100644 index 0000000000..f75d456e5d --- /dev/null +++ b/scripts/ci/ccache-c.in @@ -0,0 +1,9 @@ +#!/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 + +exec "${C_LAUNCHER}" "${CMAKE_C_COMPILER}" "$@" diff --git a/scripts/ci/ccache-cxx.in b/scripts/ci/ccache-cxx.in new file mode 100644 index 0000000000..81831ad4dc --- /dev/null +++ b/scripts/ci/ccache-cxx.in @@ -0,0 +1,9 @@ +#!/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 + +exec "${CXX_LAUNCHER}" "${CMAKE_CXX_COMPILER}" "$@" -- cgit v1.2.1