summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--openmp/runtime/cmake/LibompCheckLinkerFlag.cmake72
-rw-r--r--openmp/runtime/cmake/config-ix.cmake18
2 files changed, 9 insertions, 81 deletions
diff --git a/openmp/runtime/cmake/LibompCheckLinkerFlag.cmake b/openmp/runtime/cmake/LibompCheckLinkerFlag.cmake
deleted file mode 100644
index bcc0ca80c866..000000000000
--- a/openmp/runtime/cmake/LibompCheckLinkerFlag.cmake
+++ /dev/null
@@ -1,72 +0,0 @@
-#
-#//===----------------------------------------------------------------------===//
-#//
-#// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-#// See https://llvm.org/LICENSE.txt for license information.
-#// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-#//
-#//===----------------------------------------------------------------------===//
-#
-
-include(GNUInstallDirs)
-
-# Checking a linker flag to build a shared library
-# There is no real trivial way to do this in CMake, so we implement it here
-# this will have ${boolean} = TRUE if the flag succeeds, otherwise FALSE.
-function(libomp_check_linker_flag flag boolean)
- if(NOT DEFINED "${boolean}")
- set(retval TRUE)
- set(library_source
- "int foo(int a) { return a*a; }")
- set(cmake_source
- "cmake_minimum_required(VERSION 3.13.4)
- project(foo C)
- set(CMAKE_SHARED_LINKER_FLAGS \"${flag}\")
- add_library(foo SHARED src_to_link.c)")
- # Compiling as a part of runtimes introduces ARCH-unknown-linux-gnu as a part
- # of a working directory. So adding a guard for unknown.
- set(failed_regexes "[Ee]rror;[Uu]nknown[^-];[Ss]kipping;LINK : warning;Unsupported command line")
- set(base_dir ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/link_flag_check_${boolean})
- file(MAKE_DIRECTORY ${base_dir})
- file(MAKE_DIRECTORY ${base_dir}/build)
- file(WRITE ${base_dir}/src_to_link.c "${library_source}")
- file(WRITE ${base_dir}/CMakeLists.txt "${cmake_source}")
-
- message(STATUS "Performing Test ${boolean}")
- try_compile(
- try_compile_result
- ${base_dir}/build
- ${base_dir}
- foo
- OUTPUT_VARIABLE OUTPUT)
-
- if(try_compile_result)
- foreach(regex IN LISTS failed_regexes)
- # Ignore the warning about the newer or unknown CUDA version.
- if(("${OUTPUT}" MATCHES ${regex}) AND NOT ("${OUTPUT}" MATCHES "Unknown CUDA version"))
- set(retval FALSE)
- endif()
- endforeach()
- else()
- set(retval FALSE)
- endif()
-
- if(${retval})
- set(${boolean} 1 CACHE INTERNAL "Test ${boolean}")
- message(STATUS "Performing Test ${boolean} - Success")
- file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
- "Performing C Linker Flag test ${boolean} succeeded with the following output:\n"
- "${OUTPUT}\n"
- "Source file was:\n${library_source}\n")
- else()
- set(${boolean} "" CACHE INTERNAL "Test ${boolean}")
- message(STATUS "Performing Test ${boolean} - Failed")
- file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
- "Performing C Linker Flag test ${boolean} failed with the following output:\n"
- "${OUTPUT}\n"
- "Source file was:\n${library_source}\n")
- endif()
-
- set(${boolean} ${retval} PARENT_SCOPE)
- endif()
-endfunction()
diff --git a/openmp/runtime/cmake/config-ix.cmake b/openmp/runtime/cmake/config-ix.cmake
index d0eda6d8ca39..ca3cb43c285d 100644
--- a/openmp/runtime/cmake/config-ix.cmake
+++ b/openmp/runtime/cmake/config-ix.cmake
@@ -16,8 +16,8 @@ include(CheckIncludeFile)
include(CheckLibraryExists)
include(CheckIncludeFiles)
include(CheckSymbolExists)
-include(LibompCheckLinkerFlag)
include(LibompCheckFortranFlag)
+include(LLVMCheckCompilerLinkerFlag)
# Check for versioned symbols
function(libomp_check_version_symbols retval)
@@ -133,13 +133,13 @@ check_symbol_exists(_aligned_malloc "malloc.h" LIBOMP_HAVE__ALIGNED_MALLOC)
# Check linker flags
if(WIN32)
- libomp_check_linker_flag(/SAFESEH LIBOMP_HAVE_SAFESEH_FLAG)
+ llvm_check_compiler_linker_flag(C /SAFESEH LIBOMP_HAVE_SAFESEH_FLAG)
elseif(NOT APPLE)
- libomp_check_linker_flag(-Wl,-x LIBOMP_HAVE_X_FLAG)
- libomp_check_linker_flag(-Wl,--as-needed LIBOMP_HAVE_AS_NEEDED_FLAG)
- libomp_check_linker_flag("-Wl,--version-script=${LIBOMP_SRC_DIR}/exports_test_so.txt" LIBOMP_HAVE_VERSION_SCRIPT_FLAG)
- libomp_check_linker_flag(-static-libgcc LIBOMP_HAVE_STATIC_LIBGCC_FLAG)
- libomp_check_linker_flag(-Wl,-z,noexecstack LIBOMP_HAVE_Z_NOEXECSTACK_FLAG)
+ llvm_check_compiler_linker_flag(C -Wl,-x LIBOMP_HAVE_X_FLAG)
+ llvm_check_compiler_linker_flag(C -Wl,--as-needed LIBOMP_HAVE_AS_NEEDED_FLAG)
+ llvm_check_compiler_linker_flag(C "-Wl,--version-script=${LIBOMP_SRC_DIR}/exports_test_so.txt" LIBOMP_HAVE_VERSION_SCRIPT_FLAG)
+ llvm_check_compiler_linker_flag(C -static-libgcc LIBOMP_HAVE_STATIC_LIBGCC_FLAG)
+ llvm_check_compiler_linker_flag(C -Wl,-z,noexecstack LIBOMP_HAVE_Z_NOEXECSTACK_FLAG)
endif()
# Check Intel(R) C Compiler specific flags
@@ -150,8 +150,8 @@ if(CMAKE_C_COMPILER_ID STREQUAL "Intel" OR CMAKE_C_COMPILER_ID STREQUAL "IntelLL
check_cxx_compiler_flag(-Qoption,cpp,--extended_float_types LIBOMP_HAVE_EXTENDED_FLOAT_TYPES_FLAG)
check_cxx_compiler_flag(-falign-stack=maintain-16-byte LIBOMP_HAVE_FALIGN_STACK_FLAG)
check_cxx_compiler_flag("-opt-streaming-stores never" LIBOMP_HAVE_OPT_STREAMING_STORES_FLAG)
- libomp_check_linker_flag(-static-intel LIBOMP_HAVE_STATIC_INTEL_FLAG)
- libomp_check_linker_flag(-no-intel-extensions LIBOMP_HAVE_NO_INTEL_EXTENSIONS_FLAG)
+ llvm_check_compiler_linker_flag(C -static-intel LIBOMP_HAVE_STATIC_INTEL_FLAG)
+ llvm_check_compiler_linker_flag(C -no-intel-extensions LIBOMP_HAVE_NO_INTEL_EXTENSIONS_FLAG)
check_library_exists(irc_pic _intel_fast_memcpy "" LIBOMP_HAVE_IRC_PIC_LIBRARY)
endif()