44cmake_minimum_required (VERSION 3.20.0)
55set (LLVM_SUBPROJECT_TITLE "liboffload" )
66
7- # Permit redefining OPENMP_STANDALONE_BUILD when doing a runtimes build.
8- if (OPENMP_STANDALONE_BUILD OR "${CMAKE_SOURCE_DIR} " STREQUAL "${CMAKE_CURRENT_SOURCE_DIR} " )
9- set (OPENMP_STANDALONE_BUILD TRUE )
10- project (offload C CXX ASM)
11- else ()
12- set (OPENMP_STANDALONE_BUILD FALSE )
7+ # Default to C++17.
8+ set (CMAKE_CXX_STANDARD 17)
9+
10+ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR )
11+ message (FATAL_ERROR "Builds rooted in the offload directory are not supported. "
12+ "Builds should be rooted in the runtimes directory instead. "
13+ "Please see the documentation at https://openmp.llvm.org/SupportAndFAQ.html for more info." )
1314endif ()
1415
1516# Check that the library can actually be built.
@@ -26,20 +27,13 @@ endif()
2627
2728set (OFFLOAD_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} )
2829
29- if (OPENMP_STANDALONE_BUILD)
30- set (OFFLOAD_LIBDIR_SUFFIX "" CACHE STRING
31- "Suffix of lib installation directory, e.g. 64 => lib64" )
32- set (OFFLOAD_INSTALL_LIBDIR "lib${OFFLOAD_LIBDIR_SUFFIX} " CACHE STRING
33- "Path where built offload libraries should be installed." )
30+ # When building in tree we install the runtime according to the LLVM settings.
31+ if (LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE )
32+ set (OFFLOAD_INSTALL_LIBDIR lib${LLVM_LIBDIR_SUFFIX} /${LLVM_DEFAULT_TARGET_TRIPLE} CACHE STRING
33+ "Path where built offload libraries should be installed." )
3434else ()
35- # When building in tree we install the runtime according to the LLVM settings.
36- if (LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE )
37- set (OFFLOAD_INSTALL_LIBDIR lib${LLVM_LIBDIR_SUFFIX} /${LLVM_DEFAULT_TARGET_TRIPLE} CACHE STRING
38- "Path where built offload libraries should be installed." )
39- else ()
40- set (OFFLOAD_INSTALL_LIBDIR "lib${LLVM_LIBDIR_SUFFIX} " CACHE STRING
41- "Path where built offload libraries should be installed." )
42- endif ()
35+ set (OFFLOAD_INSTALL_LIBDIR "lib${LLVM_LIBDIR_SUFFIX} " CACHE STRING
36+ "Path where built offload libraries should be installed." )
4337endif ()
4438
4539set (LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR} /../cmake)
@@ -55,67 +49,30 @@ list(INSERT CMAKE_MODULE_PATH 0
5549 "${LLVM_COMMON_CMAKE_UTILS} /Modules"
5650 )
5751
58- if (OPENMP_STANDALONE_BUILD)
59- # CMAKE_BUILD_TYPE was not set, default to Release.
60- if (NOT CMAKE_BUILD_TYPE )
61- set (CMAKE_BUILD_TYPE Release)
62- endif ()
52+ set (OPENMP_ENABLE_WERROR ${LLVM_ENABLE_WERROR} )
53+ # If building in tree, we honor the same install suffix LLVM uses.
54+ set (OPENMP_INSTALL_LIBDIR "lib${LLVM_LIBDIR_SUFFIX} " )
6355
64- # Group common settings.
65- set (OPENMP_ENABLE_WERROR FALSE CACHE BOOL
66- "Enable -Werror flags to turn warnings into errors for supporting compilers." )
67- set (OPENMP_LIBDIR_SUFFIX "" CACHE STRING
68- "Suffix of lib installation directory, e.g. 64 => lib64" )
69- # Do not use OPENMP_LIBDIR_SUFFIX directly, use OPENMP_INSTALL_LIBDIR.
70- set (OPENMP_INSTALL_LIBDIR "lib${OPENMP_LIBDIR_SUFFIX} " )
71-
72- # Used by llvm_add_tool() and tests.
73- set (LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_CURRENT_BINARY_DIR} )
74-
75- # Group test settings.
76- set (OPENMP_TEST_C_COMPILER ${CMAKE_C_COMPILER} CACHE STRING
77- "C compiler to use for testing OpenMP runtime libraries." )
78- set (OPENMP_TEST_CXX_COMPILER ${CMAKE_CXX_COMPILER} CACHE STRING
79- "C++ compiler to use for testing OpenMP runtime libraries." )
80- set (OPENMP_TEST_Fortran_COMPILER ${CMAKE_Fortran_COMPILER} CACHE STRING
81- "FORTRAN compiler to use for testing OpenMP runtime libraries." )
82- set (OPENMP_LLVM_TOOLS_DIR "" CACHE PATH "Path to LLVM tools for testing." )
83-
84- set (CMAKE_CXX_STANDARD 17 CACHE STRING "C++ standard to conform to" )
85- set (CMAKE_CXX_STANDARD_REQUIRED NO )
86- set (CMAKE_CXX_EXTENSIONS NO )
56+ if (NOT MSVC )
57+ set (OPENMP_TEST_C_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR} /clang)
58+ set (OPENMP_TEST_CXX_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR} /clang++)
8759else ()
88- set (OPENMP_ENABLE_WERROR ${LLVM_ENABLE_WERROR} )
89- # If building in tree, we honor the same install suffix LLVM uses.
90- set (OPENMP_INSTALL_LIBDIR "lib${LLVM_LIBDIR_SUFFIX} " )
91-
92- if (NOT MSVC )
93- set (OPENMP_TEST_C_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR} /clang)
94- set (OPENMP_TEST_CXX_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR} /clang++)
95- else ()
96- set (OPENMP_TEST_C_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR} /clang.exe)
97- set (OPENMP_TEST_CXX_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR} /clang++.exe)
98- endif ()
99-
100- # Check for flang
101- if (NOT MSVC )
102- set (OPENMP_TEST_Fortran_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR} /flang)
103- else ()
104- set (OPENMP_TEST_Fortran_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR} /flang.exe)
105- endif ()
60+ set (OPENMP_TEST_C_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR} /clang.exe)
61+ set (OPENMP_TEST_CXX_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR} /clang++.exe)
62+ endif ()
10663
107- # Set fortran test compiler if flang is found
108- if (EXISTS " ${OPENMP_TEST_Fortran_COMPILER} " )
109- message ( "Using local flang build at ${OPENMP_TEST_Fortran_COMPILER} " )
110- else ()
111- unset (OPENMP_TEST_Fortran_COMPILER)
112- endif ()
64+ # Check for flang
65+ if (NOT MSVC )
66+ set (OPENMP_TEST_Fortran_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR} /flang )
67+ else ()
68+ set (OPENMP_TEST_Fortran_COMPILER ${LLVM_RUNTIME_OUTPUT_INTDIR} /flang.exe )
69+ endif ()
11370
114- # If not standalone, set CMAKE_CXX_STANDARD but don't set the global cache value,
115- # only set it locally for OpenMP.
116- set (CMAKE_CXX_STANDARD 17 )
117- set (CMAKE_CXX_STANDARD_REQUIRED NO )
118- set (CMAKE_CXX_EXTENSIONS NO )
71+ # Set fortran test compiler if flang is found
72+ if ( EXISTS " ${OPENMP_TEST_Fortran_COMPILER} " )
73+ message ( "Using local flang build at ${OPENMP_TEST_Fortran_COMPILER} " )
74+ else ( )
75+ unset (OPENMP_TEST_Fortran_COMPILER )
11976endif ()
12077
12178# Set the path of all resulting libraries to a unified location so that it can
@@ -260,65 +217,6 @@ if (LIBOMPTARGET_USE_LTO)
260217 list (APPEND offload_link_flags ${CMAKE_CXX_COMPILE_OPTIONS_IPO} )
261218endif ()
262219
263- if (OPENMP_STANDALONE_BUILD)
264- if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
265- execute_process (
266- OUTPUT_STRIP_TRAILING_WHITESPACE
267- COMMAND ${CMAKE_CXX_COMPILER} --print-resource -dir
268- RESULT_VARIABLE COMMAND_RETURN_CODE
269- OUTPUT_VARIABLE COMPILER_RESOURCE_DIR
270- )
271- endif ()
272-
273- set (LIBOMP_HAVE_OMPT_SUPPORT FALSE )
274- set (LIBOMP_OMPT_SUPPORT FALSE )
275-
276- find_path (
277- LIBOMP_OMP_TOOLS_INCLUDE_DIR
278- NAMES
279- omp-tools.h
280- HINTS
281- ${COMPILER_RESOURCE_DIR} /include
282- ${CMAKE_INSTALL_PREFIX} /include
283- )
284-
285- if (LIBOMP_OMP_TOOLS_INCLUDE_DIR)
286- set (LIBOMP_HAVE_OMPT_SUPPORT TRUE )
287- set (LIBOMP_OMPT_SUPPORT TRUE )
288- endif ()
289-
290- # LLVM_LIBRARY_DIRS set by find_package(LLVM) in LibomptargetGetDependencies
291- find_library (
292- LIBOMP_STANDALONE
293- NAMES
294- omp
295- HINTS
296- ${CMAKE_INSTALL_PREFIX} /lib
297- ${LLVM_LIBRARY_DIRS}
298- REQUIRED
299- )
300-
301- find_path (
302- LIBOMP_INCLUDE_DIR
303- NAMES
304- omp.h
305- HINTS
306- ${COMPILER_RESOURCE_DIR} /include
307- ${CMAKE_INSTALL_PREFIX} /include
308- )
309-
310- get_filename_component (LIBOMP_LIBRARY_DIR ${LIBOMP_STANDALONE} DIRECTORY )
311-
312- set (OPENMP_TEST_FLAGS "" CACHE STRING
313- "Extra compiler flags to send to the test compiler." )
314- set (OPENMP_TEST_OPENMP_FLAGS ${OPENMP_TEST_COMPILER_OPENMP_FLAGS} CACHE STRING
315- "OpenMP compiler flag to use for testing OpenMP runtime libraries." )
316- set (LIBOMPTARGET_OPENMP_HEADER_FOLDER "${LIBOMP_INCLUDE_DIR} " CACHE STRING
317- "Path to folder containing omp.h" )
318- set (LIBOMPTARGET_OPENMP_HOST_RTL_FOLDER "${LIBOMP_LIBRARY_DIR} " CACHE STRING
319- "Path to folder containing libomp.so, and libLLVMSupport.so with profiling enabled" )
320- endif ()
321-
322220macro (pythonize_bool var)
323221if (${var} )
324222 set (${var} True )
0 commit comments