[sanitizer] Improve FreeBSD ASLR detection
[llvm-project.git] / openmp / libomptarget / CMakeLists.txt
blob8d5a7bd8cbfdb10b8ddb7c3bcd183fa8643547f8
1 ##===----------------------------------------------------------------------===##
3 # Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 # See https://llvm.org/LICENSE.txt for license information.
5 # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 ##===----------------------------------------------------------------------===##
9 # Build offloading library and related plugins.
11 ##===----------------------------------------------------------------------===##
13 if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
14   message(FATAL_ERROR "Direct configuration not supported, please use parent directory!")
15 endif()
17 # Add cmake directory to search for custom cmake functions.
18 set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules ${CMAKE_MODULE_PATH})
20 # Set the path of all resulting libraries to a unified location so that it can
21 # be used for testing.
22 set(LIBOMPTARGET_LIBRARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
23 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIBOMPTARGET_LIBRARY_DIR})
24 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIBOMPTARGET_LIBRARY_DIR})
25 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${LIBOMPTARGET_LIBRARY_DIR})
27 # Message utilities.
28 include(LibomptargetUtils)
30 # Get dependencies for the different components of the project.
31 include(LibomptargetGetDependencies)
33 # LLVM source tree is required at build time for libomptarget
34 if (NOT LIBOMPTARGET_LLVM_INCLUDE_DIRS)
35   message(FATAL_ERROR "Missing definition for LIBOMPTARGET_LLVM_INCLUDE_DIRS")
36 endif()
38 # This is a list of all the targets that are supported/tested right now.
39 set (LIBOMPTARGET_ALL_TARGETS "${LIBOMPTARGET_ALL_TARGETS} aarch64-unknown-linux-gnu")
40 set (LIBOMPTARGET_ALL_TARGETS "${LIBOMPTARGET_ALL_TARGETS} amdgcn-amd-amdhsa")
41 set (LIBOMPTARGET_ALL_TARGETS "${LIBOMPTARGET_ALL_TARGETS} amdgcn-amd-amdhsa-newRTL")
42 set (LIBOMPTARGET_ALL_TARGETS "${LIBOMPTARGET_ALL_TARGETS} powerpc64le-ibm-linux-gnu")
43 set (LIBOMPTARGET_ALL_TARGETS "${LIBOMPTARGET_ALL_TARGETS} powerpc64-ibm-linux-gnu")
44 set (LIBOMPTARGET_ALL_TARGETS "${LIBOMPTARGET_ALL_TARGETS} x86_64-pc-linux-gnu")
45 set (LIBOMPTARGET_ALL_TARGETS "${LIBOMPTARGET_ALL_TARGETS} nvptx64-nvidia-cuda")
46 set (LIBOMPTARGET_ALL_TARGETS "${LIBOMPTARGET_ALL_TARGETS} nvptx64-nvidia-cuda-newRTL")
48 # Once the plugins for the different targets are validated, they will be added to
49 # the list of supported targets in the current system.
50 set (LIBOMPTARGET_SYSTEM_TARGETS "")
51 set (LIBOMPTARGET_TESTED_PLUGINS "")
53 # Check whether using debug mode. In debug mode, allow dumping progress
54 # messages at runtime by default. Otherwise, it can be enabled
55 # independently using the LIBOMPTARGET_ENABLE_DEBUG option.
56 string( TOLOWER "${CMAKE_BUILD_TYPE}" LIBOMPTARGET_CMAKE_BUILD_TYPE)
57 if(LIBOMPTARGET_CMAKE_BUILD_TYPE MATCHES debug)
58   option(LIBOMPTARGET_ENABLE_DEBUG "Allow debug output with the environment variable LIBOMPTARGET_DEBUG=1" ON)
59 else()
60   option(LIBOMPTARGET_ENABLE_DEBUG "Allow debug output with the environment variable LIBOMPTARGET_DEBUG=1" OFF)
61 endif()
62 if(LIBOMPTARGET_ENABLE_DEBUG)
63   add_definitions(-DOMPTARGET_DEBUG)
64 endif()
66 set(LIBOMPTARGET_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include)
67 include_directories(${LIBOMPTARGET_INCLUDE_DIR})
69 # Build target agnostic offloading library.
70 set(LIBOMPTARGET_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)
71 add_subdirectory(${LIBOMPTARGET_SRC_DIR})
73 # Definitions for testing, for reuse when testing libomptarget-nvptx.
74 set(LIBOMPTARGET_OPENMP_HEADER_FOLDER "${LIBOMP_INCLUDE_DIR}" CACHE STRING
75   "Path to folder containing omp.h")
76 set(LIBOMPTARGET_OPENMP_HOST_RTL_FOLDER "${LIBOMP_LIBRARY_DIR}" CACHE STRING
77   "Path to folder containing libomp.so, and libLLVMSupport.so with profiling enabled")
80 # Build offloading plugins and device RTLs if they are available.
81 add_subdirectory(plugins)
82 add_subdirectory(deviceRTLs)
83 add_subdirectory(DeviceRTL)
84 add_subdirectory(tools)
86 # Add tests.
87 add_subdirectory(test)