Skip to content

Commit

Permalink
Revert "[CMake] Remove custom ccache CMake logic"
Browse files Browse the repository at this point in the history
This reverts commit 0fad18c.

We need bots to be updated first.
  • Loading branch information
tru committed Feb 13, 2023
1 parent 240c6f2 commit fff762d
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 11 deletions.
38 changes: 34 additions & 4 deletions llvm/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -233,8 +233,38 @@ if (LLVM_ENABLE_PROJECTS_USED OR NOT LLVM_ENABLE_PROJECTS STREQUAL "")
endif()
unset(SHOULD_ENABLE_PROJECT)

if(DEFINED LLVM_CCACHE_BUILD)
message(FATAL_ERROR "-DLLVM_CACHE_BUILD=ON is deprecated! Use to the following options instead:\n-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache")
# Build llvm with ccache if the package is present
set(LLVM_CCACHE_BUILD OFF CACHE BOOL "Set to ON for a ccache enabled build")
if(LLVM_CCACHE_BUILD)
find_program(CCACHE_PROGRAM ccache)
if(CCACHE_PROGRAM)
set(LLVM_CCACHE_MAXSIZE "" CACHE STRING "Size of ccache")
set(LLVM_CCACHE_DIR "" CACHE STRING "Directory to keep ccached data")
set(LLVM_CCACHE_PARAMS "CCACHE_CPP2=yes CCACHE_HASHDIR=yes"
CACHE STRING "Parameters to pass through to ccache")

if(NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
set(CCACHE_PROGRAM "${LLVM_CCACHE_PARAMS} ${CCACHE_PROGRAM}")
if (LLVM_CCACHE_MAXSIZE)
set(CCACHE_PROGRAM "CCACHE_MAXSIZE=${LLVM_CCACHE_MAXSIZE} ${CCACHE_PROGRAM}")
endif()
if (LLVM_CCACHE_DIR)
set(CCACHE_PROGRAM "CCACHE_DIR=${LLVM_CCACHE_DIR} ${CCACHE_PROGRAM}")
endif()
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${CCACHE_PROGRAM})
else()
if(LLVM_CCACHE_MAXSIZE OR LLVM_CCACHE_DIR OR
NOT LLVM_CCACHE_PARAMS MATCHES "CCACHE_CPP2=yes CCACHE_HASHDIR=yes")
message(FATAL_ERROR "Ccache configuration through CMake is not supported on Windows. Please use environment variables.")
endif()
# RULE_LAUNCH_COMPILE should work with Ninja but currently has issues
# with cmd.exe and some MSVC tools other than cl.exe
set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_PROGRAM})
set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_PROGRAM})
endif()
else()
message(FATAL_ERROR "Unable to find the program ccache. Set LLVM_CCACHE_BUILD to OFF")
endif()
endif()

set(LLVM_EXTERNAL_PROJECT_BUILD_TOOL_ARGS "" CACHE STRING
Expand All @@ -250,8 +280,8 @@ if(LLVM_DEPENDENCY_DEBUGGING)
if(NOT CMAKE_HOST_APPLE)
message(FATAL_ERROR "Dependency debugging is only currently supported on Darwin hosts.")
endif()
if(DEFINED CMAKE_CXX_COMPILER_LAUNCHER)
message(FATAL_ERROR "Cannot enable dependency debugging while using a compiler launcher like ccache.")
if(LLVM_CCACHE_BUILD)
message(FATAL_ERROR "Cannot enable dependency debugging while using ccache.")
endif()
endif()

Expand Down
8 changes: 8 additions & 0 deletions llvm/docs/CMake.rst
Original file line number Diff line number Diff line change
Expand Up @@ -402,6 +402,14 @@ enabled sub-projects. Nearly all of these variable names begin with
example, you can build *llvm-as* with a Makefile-based system by executing *make
llvm-as* at the root of your build directory.

**LLVM_CCACHE_BUILD**:BOOL
If enabled and the ``ccache`` program is available, then LLVM will be
built using ``ccache`` to speed up rebuilds of LLVM and its components.
Defaults to OFF. The size and location of the cache maintained
by ``ccache`` can be adjusted via the LLVM_CCACHE_MAXSIZE and LLVM_CCACHE_DIR
options, which are passed to the CCACHE_MAXSIZE and CCACHE_DIR environment
variables, respectively.

**LLVM_CREATE_XCODE_TOOLCHAIN**:BOOL
macOS Only: If enabled CMake will generate a target named
'install-xcode-toolchain'. This target will create a directory at
Expand Down
5 changes: 0 additions & 5 deletions llvm/docs/ReleaseNotes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,6 @@ Changes to the LLVM IR
Changes to building LLVM
------------------------

* Removed ``LLVM_CCACHE_BUILD``, ``LLVM_CCACHE_MAXSIZE``, ``LLVM_CCACHE_DIR``
and ``LLVM_CCACHE_PARAMS`` CMake options. Upstream CMake supports setting
``CMAKE_CXX_COMPILER_LAUNCHER=ccache`` since CMake 3.4 and should be used
instead.

Changes to TableGen
-------------------

Expand Down
3 changes: 1 addition & 2 deletions mlir/utils/clang-tidy/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,7 @@ $ cmake ../llvm \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_ASSERTIONS=ON \
-DLLVM_TARGETS_TO_BUILD="Native;NVPTX;AMDGPU" \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DLLVM_CCACHE_BUILD=ON \
-DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++ \
-DLLVM_ENABLE_LLD=ON \
Expand Down

0 comments on commit fff762d

Please sign in to comment.