llvm-toolchain/debian/patches/openmp-fix-runtimes-build.diff
2021-10-06 13:09:54 -07:00

163 lines
7.9 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-12_12.0.1/llvm/runtimes/CMakeLists.txt
===================================================================
--- llvm-toolchain-12_12.0.1.orig/llvm/runtimes/CMakeLists.txt
+++ llvm-toolchain-12_12.0.1/llvm/runtimes/CMakeLists.txt
@@ -236,6 +236,7 @@ function(runtime_default_target)
-DLLVM_DEFAULT_TARGET_TRIPLE=${TARGET_TRIPLE}
-DLLVM_ENABLE_PROJECTS_USED=${LLVM_ENABLE_PROJECTS_USED}
-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=${LLVM_ENABLE_PER_TARGET_RUNTIME_DIR_default}
+ -DCMAKE_SYSTEM_PROCESSOR=${CMAKE_SYSTEM_PROCESSOR}
-DCMAKE_C_COMPILER_TARGET=${TARGET_TRIPLE}
-DCMAKE_CXX_COMPILER_TARGET=${TARGET_TRIPLE}
-DCMAKE_ASM_COMPILER_TARGET=${TARGET_TRIPLE}
@@ -440,7 +441,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-12_12.0.1/openmp/CMakeLists.txt
===================================================================
--- llvm-toolchain-12_12.0.1.orig/openmp/CMakeLists.txt
+++ llvm-toolchain-12_12.0.1/openmp/CMakeLists.txt
@@ -83,6 +83,28 @@ option(OPENMP_ENABLE_LIBOMPTARGET_PROFIL
${ENABLE_LIBOMPTARGET})
option(OPENMP_ENABLE_LIBOMP_PROFILING "Enable time profiling for libomp." OFF)
+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-12_12.0.1/openmp/cmake/HandleOpenMPOptions.cmake
===================================================================
--- llvm-toolchain-12_12.0.1.orig/openmp/cmake/HandleOpenMPOptions.cmake
+++ llvm-toolchain-12_12.0.1/openmp/cmake/HandleOpenMPOptions.cmake
@@ -29,7 +29,8 @@ append_if(OPENMP_HAVE_WNO_EXTRA_FLAG "-W
append_if(OPENMP_HAVE_WNO_PEDANTIC_FLAG "-Wno-pedantic" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
append_if(OPENMP_HAVE_WNO_MAYBE_UNINITIALIZED_FLAG "-Wno-maybe-uninitialized" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
-append_if(OPENMP_HAVE_STD_GNUPP14_FLAG "-std=gnu++14" CMAKE_CXX_FLAGS)
-if (NOT OPENMP_HAVE_STD_GNUPP14_FLAG)
- append_if(OPENMP_HAVE_STD_CPP14_FLAG "-std=c++14" CMAKE_CXX_FLAGS)
+# prefer c++14 over gnu++14?
+append_if(OPENMP_HAVE_STD_CPP14_FLAG "-std=c++14" CMAKE_CXX_FLAGS)
+if (NOT OPENMP_HAVE_STD_CPP14_FLAG)
+ append_if(OPENMP_HAVE_STD_GNUPP14_FLAG "-std=gnu++14" CMAKE_CXX_FLAGS)
endif()
Index: llvm-toolchain-12_12.0.1/openmp/libomptarget/plugins/CMakeLists.txt
===================================================================
--- llvm-toolchain-12_12.0.1.orig/openmp/libomptarget/plugins/CMakeLists.txt
+++ llvm-toolchain-12_12.0.1/openmp/libomptarget/plugins/CMakeLists.txt
@@ -36,6 +36,8 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "${tma
add_library("omptarget.rtl.${tmachine_libname}" SHARED
${CMAKE_CURRENT_SOURCE_DIR}/../generic-elf-64bit/src/rtl.cpp)
+ 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-12_12.0.1/openmp/libomptarget/plugins/cuda/CMakeLists.txt
===================================================================
--- llvm-toolchain-12_12.0.1.orig/openmp/libomptarget/plugins/cuda/CMakeLists.txt
+++ llvm-toolchain-12_12.0.1/openmp/libomptarget/plugins/cuda/CMakeLists.txt
@@ -44,6 +44,8 @@ else()
set (LIBOMPTARGET_DEP_LIBRARIES ${CMAKE_DL_LIBS})
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}")
Index: llvm-toolchain-12_12.0.1/openmp/libomptarget/src/CMakeLists.txt
===================================================================
--- llvm-toolchain-12_12.0.1.orig/openmp/libomptarget/src/CMakeLists.txt
+++ llvm-toolchain-12_12.0.1/openmp/libomptarget/src/CMakeLists.txt
@@ -48,6 +48,8 @@ set_target_properties(omptarget
PROPERTIES
LIBRARY_OUTPUT_DIRECTORY ${LIBOMPTARGET_LIBRARY_DIR})
+add_runtimes_build_depends_if_needed(omptarget)
+
# Install libomptarget under the lib destination folder.
install(TARGETS omptarget LIBRARY COMPONENT omptarget
DESTINATION "${OPENMP_INSTALL_LIBDIR}")
Index: llvm-toolchain-12_12.0.1/openmp/runtime/CMakeLists.txt
===================================================================
--- llvm-toolchain-12_12.0.1.orig/openmp/runtime/CMakeLists.txt
+++ llvm-toolchain-12_12.0.1/openmp/runtime/CMakeLists.txt
@@ -287,6 +287,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-12_12.0.1/openmp/runtime/src/CMakeLists.txt
===================================================================
--- llvm-toolchain-12_12.0.1.orig/openmp/runtime/src/CMakeLists.txt
+++ llvm-toolchain-12_12.0.1/openmp/runtime/src/CMakeLists.txt
@@ -134,6 +134,7 @@ endif()
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()
@@ -162,6 +163,8 @@ set_target_properties(omp PROPERTIES
LINKER_LANGUAGE ${LIBOMP_LINKER_LANGUAGE}
)
+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-12_12.0.1/openmp/tools/archer/CMakeLists.txt
===================================================================
--- llvm-toolchain-12_12.0.1.orig/openmp/tools/archer/CMakeLists.txt
+++ llvm-toolchain-12_12.0.1/openmp/tools/archer/CMakeLists.txt
@@ -14,6 +14,9 @@ if(LIBOMP_OMPT_SUPPORT)
add_library(archer SHARED ompt-tsan.cpp)
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})