Skip to content

Commit

Permalink
[OpenMP] Not set OPENMP_STANDALONE_BUILD=ON when building OpenMP alon…
Browse files Browse the repository at this point in the history
…g with LLVM

For now, `*_STANDALONE_BUILD` is set to ON even if they're built along
with LLVM because of issues mentioned in the comments. This can cause some issues.
For example, if we build OpenMP along with LLVM, we'd like to copy those OpenMP
headers to `<prefix>/lib/clang/<version>/include` such that `clang` can find
those headers without using `-I <prefix>/include` because those headers will be
copied to `<prefix>/include` if it is built standalone.

In this patch, we fixed the dependence issue in OpenMP such that it can be built
correctly even with `OPENMP_STANDALONE_BUILD=OFF`. The issue is in the call to
`add_lit_testsuite`, where `clang` and `clang-resource-headers` are passed as
`DEPENDS`. Since we're building OpenMP along with LLVM, `clang` is set by CMake
to be the C/C++ compiler, therefore these two dependences are no longer needed,
where caused the dependence issue.

Reviewed By: jdoerfert

Differential Revision: https://reviews.llvm.org/D93738
  • Loading branch information
shiltian committed Jan 10, 2021
1 parent 894d2db commit 7be3285
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 4 deletions.
8 changes: 6 additions & 2 deletions llvm/runtimes/CMakeLists.txt
Expand Up @@ -60,6 +60,7 @@ if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
project(Runtimes C CXX ASM)

find_package(LLVM PATHS "${LLVM_BINARY_DIR}" NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
find_package(Clang PATHS "${LLVM_BINARY_DIR}" NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)

# Add the root project's CMake modules, and the LLVM build's modules to the
# CMake module path.
Expand Down Expand Up @@ -136,8 +137,11 @@ if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
# The subdirectories need to treat this as standalone builds. D57992 tried
# to get rid of this, but the runtimes treat *_STANDALONE_BUILD=OFF as if
# llvm & clang are configured in the same CMake, and setup dependencies
# against their targets.
set(${canon_name}_STANDALONE_BUILD ON)
# against their targets. OpenMP has fixed the issue so we don't set the
# variable.
if (NOT ${canon_name} STREQUAL "OPENMP")
set(${canon_name}_STANDALONE_BUILD ON)
endif()

if(LLVM_RUNTIMES_LIBDIR_SUBDIR)
set(${canon_name}_LIBDIR_SUBDIR "${LLVM_RUNTIMES_LIBDIR_SUBDIR}" CACHE STRING "" FORCE)
Expand Down
4 changes: 2 additions & 2 deletions openmp/cmake/OpenMPTesting.cmake
Expand Up @@ -190,14 +190,14 @@ function(add_openmp_testsuite target comment)
${comment}
${ARG_UNPARSED_ARGUMENTS}
EXCLUDE_FROM_CHECK_ALL
DEPENDS clang clang-resource-headers FileCheck ${ARG_DEPENDS}
DEPENDS clang FileCheck ${ARG_DEPENDS}
ARGS ${ARG_ARGS}
)
else()
add_lit_testsuite(${target}
${comment}
${ARG_UNPARSED_ARGUMENTS}
DEPENDS clang clang-resource-headers FileCheck ${ARG_DEPENDS}
DEPENDS clang FileCheck ${ARG_DEPENDS}
ARGS ${ARG_ARGS}
)
endif()
Expand Down

0 comments on commit 7be3285

Please sign in to comment.