mirror of
https://git.proxmox.com/git/llvm-toolchain
synced 2025-08-24 09:04:42 +00:00
145 lines
7.3 KiB
Diff
145 lines
7.3 KiB
Diff
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
|
|
Index: llvm-toolchain-19_19.1.2~++20241011093632+6c1fd539e43e/llvm/runtimes/CMakeLists.txt
|
|
===================================================================
|
|
--- llvm-toolchain-19_19.1.2~++20241011093632+6c1fd539e43e.orig/llvm/runtimes/CMakeLists.txt
|
|
+++ llvm-toolchain-19_19.1.2~++20241011093632+6c1fd539e43e/llvm/runtimes/CMakeLists.txt
|
|
@@ -261,6 +261,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
|
|
@@ -637,7 +638,7 @@ if(build_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-19_19.1.2~++20241011093632+6c1fd539e43e/openmp/CMakeLists.txt
|
|
===================================================================
|
|
--- llvm-toolchain-19_19.1.2~++20241011093632+6c1fd539e43e.orig/openmp/CMakeLists.txt
|
|
+++ llvm-toolchain-19_19.1.2~++20241011093632+6c1fd539e43e/openmp/CMakeLists.txt
|
|
@@ -122,6 +122,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-19_19.1.2~++20241011093632+6c1fd539e43e/offload/plugins-nextgen/cuda/CMakeLists.txt
|
|
===================================================================
|
|
--- llvm-toolchain-19_19.1.2~++20241011093632+6c1fd539e43e.orig/offload/plugins-nextgen/cuda/CMakeLists.txt
|
|
+++ llvm-toolchain-19_19.1.2~++20241011093632+6c1fd539e43e/offload/plugins-nextgen/cuda/CMakeLists.txt
|
|
@@ -26,3 +26,5 @@ else()
|
|
message(STATUS "Not generating NVIDIA tests, no supported devices detected."
|
|
" Use 'LIBOMPTARGET_FORCE_NVIDIA_TESTS' to override.")
|
|
endif()
|
|
+
|
|
+add_runtimes_build_depends_if_needed(omptarget.rtl.cuda)
|
|
Index: llvm-toolchain-19_19.1.2~++20241011093632+6c1fd539e43e/offload/src/CMakeLists.txt
|
|
===================================================================
|
|
--- llvm-toolchain-19_19.1.2~++20241011093632+6c1fd539e43e.orig/offload/src/CMakeLists.txt
|
|
+++ llvm-toolchain-19_19.1.2~++20241011093632+6c1fd539e43e/offload/src/CMakeLists.txt
|
|
@@ -38,6 +38,9 @@ add_llvm_library(omptarget
|
|
NO_INSTALL_RPATH
|
|
BUILDTREE_ONLY
|
|
)
|
|
+
|
|
+add_runtimes_build_depends_if_needed(omptarget)
|
|
+
|
|
target_include_directories(omptarget PRIVATE
|
|
${LIBOMPTARGET_INCLUDE_DIR} ${LIBOMPTARGET_BINARY_INCLUDE_DIR}
|
|
)
|
|
Index: llvm-toolchain-19_19.1.2~++20241011093632+6c1fd539e43e/openmp/runtime/CMakeLists.txt
|
|
===================================================================
|
|
--- llvm-toolchain-19_19.1.2~++20241011093632+6c1fd539e43e.orig/openmp/runtime/CMakeLists.txt
|
|
+++ llvm-toolchain-19_19.1.2~++20241011093632+6c1fd539e43e/openmp/runtime/CMakeLists.txt
|
|
@@ -326,6 +326,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-19_19.1.2~++20241011093632+6c1fd539e43e/openmp/runtime/src/CMakeLists.txt
|
|
===================================================================
|
|
--- llvm-toolchain-19_19.1.2~++20241011093632+6c1fd539e43e.orig/openmp/runtime/src/CMakeLists.txt
|
|
+++ llvm-toolchain-19_19.1.2~++20241011093632+6c1fd539e43e/openmp/runtime/src/CMakeLists.txt
|
|
@@ -151,6 +151,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()
|
|
@@ -220,6 +221,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-19_19.1.2~++20241011093632+6c1fd539e43e/openmp/tools/archer/CMakeLists.txt
|
|
===================================================================
|
|
--- llvm-toolchain-19_19.1.2~++20241011093632+6c1fd539e43e.orig/openmp/tools/archer/CMakeLists.txt
|
|
+++ llvm-toolchain-19_19.1.2~++20241011093632+6c1fd539e43e/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})
|
|
Index: llvm-toolchain-19_19.1.2~++20241011093632+6c1fd539e43e/offload/plugins-nextgen/host/CMakeLists.txt
|
|
===================================================================
|
|
--- llvm-toolchain-19_19.1.2~++20241011093632+6c1fd539e43e.orig/offload/plugins-nextgen/host/CMakeLists.txt
|
|
+++ llvm-toolchain-19_19.1.2~++20241011093632+6c1fd539e43e/offload/plugins-nextgen/host/CMakeLists.txt
|
|
@@ -27,6 +27,8 @@ else()
|
|
target_include_directories(omptarget.rtl.host PRIVATE dynamic_ffi)
|
|
endif()
|
|
|
|
+add_runtimes_build_depends_if_needed("omptarget.rtl.${machine}")
|
|
+
|
|
target_include_directories(omptarget.rtl.host PRIVATE
|
|
${LIBOMPTARGET_INCLUDE_DIR})
|
|
|