blob: 37227c09648666ff453e06c048cba8100d902cd1 [file] [log] [blame]
George Rokos2467df62017-01-25 21:27:24 +00001#
2#//===----------------------------------------------------------------------===//
3#//
4#// The LLVM Compiler Infrastructure
5#//
6#// This file is dual licensed under the MIT and the University of Illinois Open
7#// Source Licenses. See LICENSE.txt for details.
8#//
9#//===----------------------------------------------------------------------===//
10#
11
12# Try to detect in the system several dependencies required by the different
13# components of libomptarget. These are the dependencies we have:
14#
15# libelf : required by some targets to handle the ELF files at runtime.
16# libffi : required to launch target kernels given function and argument
17# pointers.
18# CUDA : required to control offloading to NVIDIA GPUs.
19
20include (FindPackageHandleStandardArgs)
21
22################################################################################
23# Looking for libelf...
24################################################################################
25
26find_path (
27 LIBOMPTARGET_DEP_LIBELF_INCLUDE_DIR
28 NAMES
29 libelf.h
30 PATHS
31 /usr/include
32 /usr/local/include
33 /opt/local/include
34 /sw/include
35 ENV CPATH
36 PATH_SUFFIXES
37 libelf)
38
39find_library (
40 LIBOMPTARGET_DEP_LIBELF_LIBRARIES
41 NAMES
42 elf
43 PATHS
44 /usr/lib
45 /usr/local/lib
46 /opt/local/lib
47 /sw/lib
48 ENV LIBRARY_PATH
49 ENV LD_LIBRARY_PATH)
50
51set(LIBOMPTARGET_DEP_LIBELF_INCLUDE_DIRS ${LIBOMPTARGET_DEP_LIBELF_INCLUDE_DIR})
52find_package_handle_standard_args(
53 LIBOMPTARGET_DEP_LIBELF
54 DEFAULT_MSG
55 LIBOMPTARGET_DEP_LIBELF_LIBRARIES
56 LIBOMPTARGET_DEP_LIBELF_INCLUDE_DIRS)
57
58mark_as_advanced(
59 LIBOMPTARGET_DEP_LIBELF_INCLUDE_DIRS
60 LIBOMPTARGET_DEP_LIBELF_LIBRARIES)
61
62################################################################################
63# Looking for libffi...
64################################################################################
65find_package(PkgConfig)
66
67pkg_check_modules(LIBOMPTARGET_SEARCH_LIBFFI QUIET libffi)
68
69find_path (
70 LIBOMPTARGET_DEP_LIBFFI_INCLUDE_DIR
71 NAMES
72 ffi.h
73 HINTS
74 ${LIBOMPTARGET_SEARCH_LIBFFI_INCLUDEDIR}
75 ${LIBOMPTARGET_SEARCH_LIBFFI_INCLUDE_DIRS}
76 PATHS
77 /usr/include
78 /usr/local/include
79 /opt/local/include
80 /sw/include
81 ENV CPATH)
82
83# Don't bother look for the library if the header files were not found.
84if (LIBOMPTARGET_DEP_LIBFFI_INCLUDE_DIR)
85 find_library (
86 LIBOMPTARGET_DEP_LIBFFI_LIBRARIES
87 NAMES
88 ffi
89 HINTS
90 ${LIBOMPTARGET_SEARCH_LIBFFI_LIBDIR}
91 ${LIBOMPTARGET_SEARCH_LIBFFI_LIBRARY_DIRS}
92 PATHS
93 /usr/lib
94 /usr/local/lib
95 /opt/local/lib
96 /sw/lib
97 ENV LIBRARY_PATH
98 ENV LD_LIBRARY_PATH)
99endif()
100
101set(LIBOMPTARGET_DEP_LIBFFI_INCLUDE_DIRS ${LIBOMPTARGET_DEP_LIBFFI_INCLUDE_DIR})
102find_package_handle_standard_args(
103 LIBOMPTARGET_DEP_LIBFFI
104 DEFAULT_MSG
105 LIBOMPTARGET_DEP_LIBFFI_LIBRARIES
106 LIBOMPTARGET_DEP_LIBFFI_INCLUDE_DIRS)
107
108mark_as_advanced(
109 LIBOMPTARGET_DEP_LIBFFI_INCLUDE_DIRS
110 LIBOMPTARGET_DEP_LIBFFI_LIBRARIES)
111
112################################################################################
113# Looking for CUDA...
114################################################################################
115find_package(CUDA QUIET)
116
117set(LIBOMPTARGET_DEP_CUDA_FOUND ${CUDA_FOUND})
118set(LIBOMPTARGET_DEP_CUDA_LIBRARIES ${CUDA_LIBRARIES})
119set(LIBOMPTARGET_DEP_CUDA_INCLUDE_DIRS ${CUDA_INCLUDE_DIRS})
120
121mark_as_advanced(
122 LIBOMPTARGET_DEP_CUDA_FOUND
123 LIBOMPTARGET_DEP_CUDA_INCLUDE_DIRS
124 LIBOMPTARGET_DEP_CUDA_LIBRARIES)