From 91ccd8248c85385a5654c63c302a37d97f811bab Mon Sep 17 00:00:00 2001 From: Ye Luo Date: Fri, 22 Apr 2022 17:33:41 -0500 Subject: [PATCH] [Clang][OpenMP] libompd: get libomp hwloc includedir by target_link_libraries When hwloc is used and is installed outside of the default paths, the omp CMake target needs to provide the needed include path thru the CMake target by adding it with target_include_directories to it, so libompd gets it as well when it defines it's cmake target using target_link_libraries. As suggested in D122667 Reviewed By: ye-luo Differential Revision: https://reviews.llvm.org/D123888 --- openmp/libompd/src/CMakeLists.txt | 2 +- openmp/runtime/cmake/config-ix.cmake | 3 ++- openmp/runtime/src/CMakeLists.txt | 10 +++++++--- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/openmp/libompd/src/CMakeLists.txt b/openmp/libompd/src/CMakeLists.txt index 25a850ed457d..f361fcf35a27 100644 --- a/openmp/libompd/src/CMakeLists.txt +++ b/openmp/libompd/src/CMakeLists.txt @@ -13,7 +13,7 @@ cmake_minimum_required(VERSION 3.13.4) add_library (ompd SHARED TargetValue.cpp omp-debug.cpp omp-state.cpp omp-icv.cpp) -add_dependencies(ompd omp) # ensure generated import library is created first +target_link_libraries(ompd omp) # ensure generated import library is created first set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") diff --git a/openmp/runtime/cmake/config-ix.cmake b/openmp/runtime/cmake/config-ix.cmake index d91e85221f0c..775c58f98484 100644 --- a/openmp/runtime/cmake/config-ix.cmake +++ b/openmp/runtime/cmake/config-ix.cmake @@ -332,7 +332,8 @@ endif() # Check if HWLOC support is available if(${LIBOMP_USE_HWLOC}) - set(CMAKE_REQUIRED_INCLUDES ${LIBOMP_HWLOC_INSTALL_DIR}/include) + find_path(LIBOMP_HWLOC_INCLUDE_DIR NAMES hwloc.h HINTS ${LIBOMP_HWLOC_INSTALL_DIR} PATH_SUFFIXES include) + set(CMAKE_REQUIRED_INCLUDES ${LIBOMP_HWLOC_INCLUDE_DIR}) check_include_file(hwloc.h LIBOMP_HAVE_HWLOC_H) set(CMAKE_REQUIRED_INCLUDES) find_library(LIBOMP_HWLOC_LIBRARY diff --git a/openmp/runtime/src/CMakeLists.txt b/openmp/runtime/src/CMakeLists.txt index e795032fe5f3..4068a5862b4a 100644 --- a/openmp/runtime/src/CMakeLists.txt +++ b/openmp/runtime/src/CMakeLists.txt @@ -46,9 +46,6 @@ include_directories( ${LIBOMP_INC_DIR} ${LIBOMP_SRC_DIR}/thirdparty/ittnotify ) -if(${LIBOMP_USE_HWLOC}) - include_directories(${LIBOMP_HWLOC_INSTALL_DIR}/include) -endif() # Building with time profiling support requires LLVM directory includes. if(LIBOMP_PROFILING_SUPPORT) @@ -157,6 +154,13 @@ else() # libomp must be a C++ library such that it can link libLLVMSupport set(LIBOMP_LINKER_LANGUAGE CXX) endif() +if(${LIBOMP_USE_HWLOC}) + target_include_directories(omp + PUBLIC + "$" + "$" + ) +endif() if(OPENMP_MSVC_NAME_SCHEME) if(uppercase_CMAKE_BUILD_TYPE STREQUAL "DEBUG")