125 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			CMake
		
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			CMake
		
	
	
	
| #
 | |
| #//===----------------------------------------------------------------------===//
 | |
| #//
 | |
| #//                     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)
 |