mirror of
https://github.com/intel/llvm.git
synced 2026-01-13 19:08:21 +08:00
When doing a LLVM_ENABLE_RUNTIMES-based build of clang+compiler_rt, the `check-builtins` target is missing and builtins tests are not run (#112105, #144090). This provides one possible path forward for enabling these tests. The approach taken here is to test the builtins with the `compiler-rt` runtime build (i.e. only if you pass `LLVM_ENABLE_RUNTIMES='compiler-rt'`). The builtins tests currently rely on shared test infrastructure in `compiler-rt/`, so this is probably the easiest solution without relocating the builtins and their tests outside of `compiler-rt/`. The main challenge is that the built-ins test configuration expects to be able to inspect the builtin target and see the sources used to build it: ``` get_target_property(BUILTIN_LIB_SOURCES "${BUILTIN_LIB_TARGET_NAME}" SOURCES) ``` Since the builtins build and runtimes build are separate under LLVM_ENABLE_RUNTIMES, this target inspection is not possible. To get around this, we write a temporary file alongside each builtins library containing the list of sources (e.g. `"${CMAKE_BINARY_DIR}/clang_rt.builtins-${arch}.sources.txt"`). Then, we introduce an undocumented compiler-rt option `COMPILER_RT_FORCE_TEST_BUILTINS_DIR` (which is only intended to be used by the LLVM_ENABLE_RUNTIMES build, and could be removed after builtins re relocated) that passes the path to the directory containing this file, and configures builtins tests (even though the runtimes build has `COMPILER_RT_BUILD_BUILTINS=OFF`) rdar://163518748
Compiler-RT ================================ This directory and its subdirectories contain source code for the compiler support routines. Compiler-RT is open source software. You may freely distribute it under the terms of the license agreement found in LICENSE.txt. ================================