Skip to content

Commit

Permalink
[Libomp] Place generated OpenMP headers into build resource directory (
Browse files Browse the repository at this point in the history
…#88007)

Summary:
These headers are a part of the compiler's resource directory once
installed. However, they are currently placed in the binary directory
temporarily. This makes it more difficult to use the compiler out of the
build directory and will cause issues when moving to `liboffload`. This
patch changes the logic to write these instead to the copmiler's
resource directory inside of the build tree.

NOTE: This doesn't change the Fortran headers, I don't know enough about
those and it won't use the same directory.
  • Loading branch information
jhuber6 committed Apr 9, 2024
1 parent 0c92f86 commit d022f6b
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 9 deletions.
8 changes: 8 additions & 0 deletions clang/test/Headers/Inputs/include/stdint.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,12 @@ typedef unsigned __INTPTR_TYPE__ uintptr_t;
#error Every target should have __INTPTR_TYPE__
#endif

#ifdef __INTPTR_MAX__
#define INTPTR_MAX __INTPTR_MAX__
#endif

#ifdef __UINTPTR_MAX__
#define UINTPTR_MAX __UINTPTR_MAX__
#endif

#endif /* STDINT_H */
26 changes: 17 additions & 9 deletions openmp/runtime/src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,19 @@

include(ExtendPath)

# The generated headers will be placed in clang's resource directory if present.
if(OPENMP_STANDALONE_BUILD OR NOT LLVM_RUNTIMES_BUILD)
set(LIBOMP_HEADERS_INTDIR ${CMAKE_CURRENT_BINARY_DIR})
else()
set(LIBOMP_HEADERS_INTDIR ${LLVM_BINARY_DIR}/${LIBOMP_HEADERS_INSTALL_PATH})
endif()

# Configure omp.h, kmp_config.h and omp-tools.h if necessary
configure_file(${LIBOMP_INC_DIR}/omp.h.var omp.h @ONLY)
configure_file(${LIBOMP_INC_DIR}/ompx.h.var ompx.h @ONLY)
configure_file(kmp_config.h.cmake kmp_config.h @ONLY)
configure_file(${LIBOMP_INC_DIR}/omp.h.var ${LIBOMP_HEADERS_INTDIR}/omp.h @ONLY)
configure_file(${LIBOMP_INC_DIR}/ompx.h.var ${LIBOMP_HEADERS_INTDIR}/ompx.h @ONLY)
configure_file(kmp_config.h.cmake ${LIBOMP_HEADERS_INTDIR}/kmp_config.h @ONLY)
if(${LIBOMP_OMPT_SUPPORT})
configure_file(${LIBOMP_INC_DIR}/omp-tools.h.var omp-tools.h @ONLY)
configure_file(${LIBOMP_INC_DIR}/omp-tools.h.var ${LIBOMP_HEADERS_INTDIR}/omp-tools.h @ONLY)
endif()

# Generate message catalog files: kmp_i18n_id.inc and kmp_i18n_default.inc
Expand Down Expand Up @@ -48,6 +55,7 @@ include_directories(
${LIBOMP_SRC_DIR}/i18n
${LIBOMP_INC_DIR}
${LIBOMP_SRC_DIR}/thirdparty/ittnotify
${LIBOMP_HEADERS_INTDIR}
)

# Building with time profiling support requires LLVM directory includes.
Expand Down Expand Up @@ -419,15 +427,15 @@ else()
endif()
install(
FILES
${CMAKE_CURRENT_BINARY_DIR}/omp.h
${CMAKE_CURRENT_BINARY_DIR}/ompx.h
${LIBOMP_HEADERS_INTDIR}/omp.h
${LIBOMP_HEADERS_INTDIR}/ompx.h
DESTINATION ${LIBOMP_HEADERS_INSTALL_PATH}
)
if(${LIBOMP_OMPT_SUPPORT})
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/omp-tools.h DESTINATION ${LIBOMP_HEADERS_INSTALL_PATH})
install(FILES ${LIBOMP_HEADERS_INTDIR}/omp-tools.h DESTINATION ${LIBOMP_HEADERS_INSTALL_PATH})
# install under legacy name ompt.h
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/omp-tools.h DESTINATION ${LIBOMP_HEADERS_INSTALL_PATH} RENAME ompt.h)
set(LIBOMP_OMP_TOOLS_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR} PARENT_SCOPE)
install(FILES ${LIBOMP_HEADERS_INTDIR}/omp-tools.h DESTINATION ${LIBOMP_HEADERS_INSTALL_PATH} RENAME ompt.h)
set(LIBOMP_OMP_TOOLS_INCLUDE_DIR ${LIBOMP_HEADERS_INTDIR} PARENT_SCOPE)
endif()
if(${BUILD_FORTRAN_MODULES})
set (destination ${LIBOMP_HEADERS_INSTALL_PATH})
Expand Down

0 comments on commit d022f6b

Please sign in to comment.