[libclc] 0aeeff3 - [libclc] Allow building with pre-built tools
Fraser Cormack via cfe-commits
cfe-commits at lists.llvm.org
Wed Apr 17 23:01:37 PDT 2024
Author: Fraser Cormack
Date: 2024-04-18T07:01:13+01:00
New Revision: 0aeeff3059e79b86f55ed92a4488bdee8fa66e12
URL: https://github.com/llvm/llvm-project/commit/0aeeff3059e79b86f55ed92a4488bdee8fa66e12
DIFF: https://github.com/llvm/llvm-project/commit/0aeeff3059e79b86f55ed92a4488bdee8fa66e12.diff
LOG: [libclc] Allow building with pre-built tools
Building the libclc project in-tree with debug tools can be very slow.
This commit adds an option for a user to specify a dierctory from which
to import (e.g., release-built) tools. All tools required by the project
must be imported from the same location, for simplicity.
Original patch downstream authored by @jchlanda.
Added:
Modified:
libclc/CMakeLists.txt
Removed:
################################################################################
diff --git a/libclc/CMakeLists.txt b/libclc/CMakeLists.txt
index 4442ff6daa61b8..b0c29ed77270cf 100644
--- a/libclc/CMakeLists.txt
+++ b/libclc/CMakeLists.txt
@@ -50,11 +50,13 @@ if( LIBCLC_STANDALONE_BUILD OR CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DI
endif()
# Import required tools as targets
- foreach( tool IN ITEMS clang llvm-as llvm-link opt )
- find_program( LLVM_TOOL_${tool} ${tool} PATHS ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH )
- add_executable( libclc::${tool} IMPORTED GLOBAL )
- set_target_properties( libclc::${tool} PROPERTIES IMPORTED_LOCATION ${LLVM_TOOL_${tool}} )
- endforeach()
+ if( NOT EXISTS ${LIBCLC_CUSTOM_LLVM_TOOLS_BINARY_DIR} )
+ foreach( tool IN ITEMS clang llvm-as llvm-link opt )
+ find_program( LLVM_TOOL_${tool} ${tool} PATHS ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH )
+ add_executable( libclc::${tool} IMPORTED GLOBAL )
+ set_target_properties( libclc::${tool} PROPERTIES IMPORTED_LOCATION ${LLVM_TOOL_${tool}} )
+ endforeach()
+ endif()
else()
# In-tree configuration
set( LIBCLC_STANDALONE_BUILD FALSE )
@@ -68,8 +70,27 @@ else()
message(FATAL_ERROR "Clang is not enabled, but is required to build libclc in-tree")
endif()
+ if( NOT EXISTS ${LIBCLC_CUSTOM_LLVM_TOOLS_BINARY_DIR} )
+ foreach( tool IN ITEMS clang llvm-as llvm-link opt )
+ add_executable(libclc::${tool} ALIAS ${tool})
+ endforeach()
+ endif()
+endif()
+
+if( EXISTS ${LIBCLC_CUSTOM_LLVM_TOOLS_BINARY_DIR} )
+ message( WARNING "Using custom LLVM tools to build libclc: "
+ "${LIBCLC_CUSTOM_LLVM_TOOLS_BINARY_DIR}, "
+ " ensure the tools are up to date." )
+ # Note - use a
diff erently named variable than LLVM_TOOL_${tool} as above, as
+ # the variable name is used to cache the result of find_program. If we used
+ # the same name, a user wouldn't be able to switch a build between default
+ # and custom tools.
foreach( tool IN ITEMS clang llvm-as llvm-link opt )
- add_executable(libclc::${tool} ALIAS ${tool})
+ find_program( LLVM_CUSTOM_TOOL_${tool} ${tool}
+ PATHS ${LIBCLC_CUSTOM_LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH )
+ add_executable( libclc::${tool} IMPORTED GLOBAL )
+ set_target_properties( libclc::${tool} PROPERTIES
+ IMPORTED_LOCATION ${LLVM_CUSTOM_TOOL_${tool}} )
endforeach()
endif()
More information about the cfe-commits
mailing list