1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
|
include required runtimes as dependencies to openmp targets to make sure
they are built first when included as part of a runtimes build since openmp
can depend on them
<<<<<<< Updated upstream
Index: llvm-toolchain-snapshot_18~++20240109113757+a7262d2d9bee/llvm/runtimes/CMakeLists.txt
===================================================================
--- llvm-toolchain-snapshot_18~++20240109113757+a7262d2d9bee.orig/llvm/runtimes/CMakeLists.txt
+++ llvm-toolchain-snapshot_18~++20240109113757+a7262d2d9bee/llvm/runtimes/CMakeLists.txt
@@ -247,6 +247,7 @@ function(runtime_default_target)
-DLLVM_ENABLE_PROJECTS_USED=${LLVM_ENABLE_PROJECTS_USED}
-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=${LLVM_ENABLE_PER_TARGET_RUNTIME_DIR}
-DLLVM_BUILD_TOOLS=${LLVM_BUILD_TOOLS}
+ -DCMAKE_SYSTEM_PROCESSOR=${CMAKE_SYSTEM_PROCESSOR}
-DCMAKE_C_COMPILER_WORKS=ON
-DCMAKE_CXX_COMPILER_WORKS=ON
-DCMAKE_ASM_COMPILER_WORKS=ON
@@ -513,7 +514,7 @@ if(runtimes)
# build directory cannot find the C++ headers in certain configurations.
# I need to build a mechanism for runtime projects to provide CMake code
# that executes at LLVM configuration time to handle this case.
- add_dependencies(clang-bootstrap-deps runtimes-configure)
+ #add_dependencies(clang-bootstrap-deps runtimes-configure)
# We need to add the runtimes as a dependency because compiler-rt can be
# built as part of runtimes and we need the profile runtime for PGO
add_dependencies(clang-bootstrap-deps runtimes)
Index: llvm-toolchain-snapshot_18~++20240109113757+a7262d2d9bee/openmp/CMakeLists.txt
===================================================================
--- llvm-toolchain-snapshot_18~++20240109113757+a7262d2d9bee.orig/openmp/CMakeLists.txt
+++ llvm-toolchain-snapshot_18~++20240109113757+a7262d2d9bee/openmp/CMakeLists.txt
@@ -111,6 +111,28 @@ else()
get_clang_resource_dir(LIBOMP_HEADERS_INSTALL_PATH SUBDIR include)
endif()
+option(OPENMP_USE_LLVM_UNWINDER "Build and use the LLVM unwinder" OFF)
+
+option(LIBOMP_ENABLE_RTTI "Enabling RTTI forces libomp to be a c++ lib" ${LLVM_ENABLE_RTTI})
+
+macro(add_runtimes_build_depends_if_needed target)
+ if(RUNTIMES_BUILD)
+ # required for rtti and libomp/libomptarget profiling if enabled
+ add_dependencies(${target} cxx-headers cxxabi_static cxx_static cxxabi_shared cxx_shared)
+ if(OPENMP_USE_LLVM_UNWINDER AND (NOT target STREQUAL "omp" AND NOT LIBOMP_ENABLE_RTTI))
+ add_dependencies(${target} unwind_static unwind_shared)
+ get_target_property(target_link_flags ${target} LINK_FLAGS)
+ set(runtimes_link_flags "-lunwind")
+ if(target_link_flags)
+ set(runtimes_link_flags "${target_link_flags} -lunwind")
+ endif()
+ set_target_properties(${target}
+ PROPERTIES
+ LINK_FLAGS "${runtimes_link_flags}")
+ endif()
+ endif()
+endmacro()
+
# Build host runtime library, after LIBOMPTARGET variables are set since they are needed
# to enable time profiling support in the OpenMP runtime.
add_subdirectory(runtime)
Index: llvm-toolchain-snapshot_18~++20240109113757+a7262d2d9bee/openmp/libomptarget/plugins-nextgen/CMakeLists.txt
===================================================================
--- llvm-toolchain-snapshot_18~++20240109113757+a7262d2d9bee.orig/openmp/libomptarget/plugins-nextgen/CMakeLists.txt
+++ llvm-toolchain-snapshot_18~++20240109113757+a7262d2d9bee/openmp/libomptarget/plugins-nextgen/CMakeLists.txt
@@ -71,6 +71,8 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "${tma
"-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../exports")
endif()
+ add_runtimes_build_depends_if_needed("omptarget.rtl.${tmachine_libname}")
+
# Install plugin under the lib destination folder.
install(TARGETS "omptarget.rtl.${tmachine_libname}"
LIBRARY DESTINATION "${OPENMP_INSTALL_LIBDIR}")
Index: llvm-toolchain-snapshot_18~++20240109113757+a7262d2d9bee/openmp/libomptarget/plugins-nextgen/cuda/CMakeLists.txt
===================================================================
--- llvm-toolchain-snapshot_18~++20240109113757+a7262d2d9bee.orig/openmp/libomptarget/plugins-nextgen/cuda/CMakeLists.txt
+++ llvm-toolchain-snapshot_18~++20240109113757+a7262d2d9bee/openmp/libomptarget/plugins-nextgen/cuda/CMakeLists.txt
@@ -80,6 +80,8 @@ else()
" Use 'LIBOMPTARGET_FORCE_NVIDIA_TESTS' to override.")
endif()
+add_runtimes_build_depends_if_needed(omptarget.rtl.cuda)
+
# Install plugin under the lib destination folder.
install(TARGETS omptarget.rtl.cuda LIBRARY DESTINATION "${OPENMP_INSTALL_LIBDIR}")
set_target_properties(omptarget.rtl.cuda PROPERTIES
Index: llvm-toolchain-snapshot_18~++20240109113757+a7262d2d9bee/openmp/libomptarget/src/CMakeLists.txt
===================================================================
--- llvm-toolchain-snapshot_18~++20240109113757+a7262d2d9bee.orig/openmp/libomptarget/src/CMakeLists.txt
+++ llvm-toolchain-snapshot_18~++20240109113757+a7262d2d9bee/openmp/libomptarget/src/CMakeLists.txt
@@ -41,7 +41,9 @@ add_llvm_library(omptarget
omp
NO_INSTALL_RPATH
-)
+ )
+add_runtimes_build_depends_if_needed(omptarget)
+
target_include_directories(omptarget PRIVATE ${LIBOMPTARGET_INCLUDE_DIR})
if (LIBOMP_HAVE_VERSION_SCRIPT_FLAG)
Index: llvm-toolchain-snapshot_18~++20240109113757+a7262d2d9bee/openmp/runtime/CMakeLists.txt
===================================================================
--- llvm-toolchain-snapshot_18~++20240109113757+a7262d2d9bee.orig/openmp/runtime/CMakeLists.txt
+++ llvm-toolchain-snapshot_18~++20240109113757+a7262d2d9bee/openmp/runtime/CMakeLists.txt
@@ -318,6 +318,10 @@ if(LIBOMP_STATS)
set(LIBOMP_USE_STDCPPLIB TRUE)
endif()
+if(LIBOMP_ENABLE_RTTI)
+ set(LIBOMP_USE_STDCPPLIB TRUE)
+endif()
+
# Shared library can be switched to a static library
set(LIBOMP_ENABLE_SHARED TRUE CACHE BOOL
"Shared library instead of static library?")
Index: llvm-toolchain-snapshot_18~++20240109113757+a7262d2d9bee/openmp/runtime/src/CMakeLists.txt
===================================================================
--- llvm-toolchain-snapshot_18~++20240109113757+a7262d2d9bee.orig/openmp/runtime/src/CMakeLists.txt
+++ llvm-toolchain-snapshot_18~++20240109113757+a7262d2d9bee/openmp/runtime/src/CMakeLists.txt
@@ -144,6 +144,7 @@ set_source_files_properties(${LIBOMP_ASM
if(NOT ${LIBOMP_USE_STDCPPLIB})
set(LIBOMP_LINKER_LANGUAGE C)
set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES)
+ set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -nostdlib++")
else()
set(LIBOMP_LINKER_LANGUAGE CXX)
endif()
@@ -205,6 +206,8 @@ else()
)
endif()
+add_runtimes_build_depends_if_needed(omp)
+
# Get the library's location within the build tree for the unit tester
if(NOT WIN32)
get_target_property(LIBOMP_LIBRARY_DIR omp LIBRARY_OUTPUT_DIRECTORY)
Index: llvm-toolchain-snapshot_18~++20240109113757+a7262d2d9bee/openmp/tools/archer/CMakeLists.txt
===================================================================
--- llvm-toolchain-snapshot_18~++20240109113757+a7262d2d9bee.orig/openmp/tools/archer/CMakeLists.txt
+++ llvm-toolchain-snapshot_18~++20240109113757+a7262d2d9bee/openmp/tools/archer/CMakeLists.txt
@@ -15,6 +15,9 @@ if(LIBOMP_OMPT_SUPPORT AND LIBOMP_ARCHER
target_link_libraries(archer ${CMAKE_DL_LIBS})
add_library(archer_static STATIC ompt-tsan.cpp)
+ add_runtimes_build_depends_if_needed(archer)
+ add_runtimes_build_depends_if_needed(archer_static)
+
install(TARGETS archer archer_static
LIBRARY DESTINATION ${OPENMP_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${OPENMP_INSTALL_LIBDIR})
|