| # |
| #//===----------------------------------------------------------------------===// |
| #// |
| #// The LLVM Compiler Infrastructure |
| #// |
| #// This file is dual licensed under the MIT and the University of Illinois Open |
| #// Source Licenses. See LICENSE.txt for details. |
| #// |
| #//===----------------------------------------------------------------------===// |
| # |
| |
| # Try to detect in the system several dependencies required by the different |
| # components of libomptarget. These are the dependencies we have: |
| # |
| # libelf : required by some targets to handle the ELF files at runtime. |
| # libffi : required to launch target kernels given function and argument |
| # pointers. |
| # CUDA : required to control offloading to NVIDIA GPUs. |
| |
| include (FindPackageHandleStandardArgs) |
| |
| ################################################################################ |
| # Looking for libelf... |
| ################################################################################ |
| |
| find_path ( |
| LIBOMPTARGET_DEP_LIBELF_INCLUDE_DIR |
| NAMES |
| libelf.h |
| PATHS |
| /usr/include |
| /usr/local/include |
| /opt/local/include |
| /sw/include |
| ENV CPATH |
| PATH_SUFFIXES |
| libelf) |
| |
| find_library ( |
| LIBOMPTARGET_DEP_LIBELF_LIBRARIES |
| NAMES |
| elf |
| PATHS |
| /usr/lib |
| /usr/local/lib |
| /opt/local/lib |
| /sw/lib |
| ENV LIBRARY_PATH |
| ENV LD_LIBRARY_PATH) |
| |
| set(LIBOMPTARGET_DEP_LIBELF_INCLUDE_DIRS ${LIBOMPTARGET_DEP_LIBELF_INCLUDE_DIR}) |
| find_package_handle_standard_args( |
| LIBOMPTARGET_DEP_LIBELF |
| DEFAULT_MSG |
| LIBOMPTARGET_DEP_LIBELF_LIBRARIES |
| LIBOMPTARGET_DEP_LIBELF_INCLUDE_DIRS) |
| |
| mark_as_advanced( |
| LIBOMPTARGET_DEP_LIBELF_INCLUDE_DIRS |
| LIBOMPTARGET_DEP_LIBELF_LIBRARIES) |
| |
| ################################################################################ |
| # Looking for libffi... |
| ################################################################################ |
| find_package(PkgConfig) |
| |
| pkg_check_modules(LIBOMPTARGET_SEARCH_LIBFFI QUIET libffi) |
| |
| find_path ( |
| LIBOMPTARGET_DEP_LIBFFI_INCLUDE_DIR |
| NAMES |
| ffi.h |
| HINTS |
| ${LIBOMPTARGET_SEARCH_LIBFFI_INCLUDEDIR} |
| ${LIBOMPTARGET_SEARCH_LIBFFI_INCLUDE_DIRS} |
| PATHS |
| /usr/include |
| /usr/local/include |
| /opt/local/include |
| /sw/include |
| ENV CPATH) |
| |
| # Don't bother look for the library if the header files were not found. |
| if (LIBOMPTARGET_DEP_LIBFFI_INCLUDE_DIR) |
| find_library ( |
| LIBOMPTARGET_DEP_LIBFFI_LIBRARIES |
| NAMES |
| ffi |
| HINTS |
| ${LIBOMPTARGET_SEARCH_LIBFFI_LIBDIR} |
| ${LIBOMPTARGET_SEARCH_LIBFFI_LIBRARY_DIRS} |
| PATHS |
| /usr/lib |
| /usr/local/lib |
| /opt/local/lib |
| /sw/lib |
| ENV LIBRARY_PATH |
| ENV LD_LIBRARY_PATH) |
| endif() |
| |
| set(LIBOMPTARGET_DEP_LIBFFI_INCLUDE_DIRS ${LIBOMPTARGET_DEP_LIBFFI_INCLUDE_DIR}) |
| find_package_handle_standard_args( |
| LIBOMPTARGET_DEP_LIBFFI |
| DEFAULT_MSG |
| LIBOMPTARGET_DEP_LIBFFI_LIBRARIES |
| LIBOMPTARGET_DEP_LIBFFI_INCLUDE_DIRS) |
| |
| mark_as_advanced( |
| LIBOMPTARGET_DEP_LIBFFI_INCLUDE_DIRS |
| LIBOMPTARGET_DEP_LIBFFI_LIBRARIES) |
| |
| ################################################################################ |
| # Looking for CUDA... |
| ################################################################################ |
| find_package(CUDA QUIET) |
| |
| set(LIBOMPTARGET_DEP_CUDA_FOUND ${CUDA_FOUND}) |
| set(LIBOMPTARGET_DEP_CUDA_LIBRARIES ${CUDA_LIBRARIES}) |
| set(LIBOMPTARGET_DEP_CUDA_INCLUDE_DIRS ${CUDA_INCLUDE_DIRS}) |
| |
| mark_as_advanced( |
| LIBOMPTARGET_DEP_CUDA_FOUND |
| LIBOMPTARGET_DEP_CUDA_INCLUDE_DIRS |
| LIBOMPTARGET_DEP_CUDA_LIBRARIES) |