diff options
author | Oscar Fuentes <ofv@wanadoo.es> | 2011-01-21 15:42:54 +0000 |
---|---|---|
committer | Oscar Fuentes <ofv@wanadoo.es> | 2011-01-21 15:42:54 +0000 |
commit | 6495595382bd2776303a2ce8eabfc22082be8530 (patch) | |
tree | 9320a33349fd62a5e0050bcec2eb05b777dc7b9a /llvm/cmake | |
parent | 4bd612384a34f766169f4457a3f8f72b7480b6a7 (diff) | |
download | bcm5719-llvm-6495595382bd2776303a2ce8eabfc22082be8530.tar.gz bcm5719-llvm-6495595382bd2776303a2ce8eabfc22082be8530.zip |
Handles libffi on the CMake build.
Patch by arrowdodger!
llvm-svn: 123976
Diffstat (limited to 'llvm/cmake')
-rwxr-xr-x | llvm/cmake/config-ix.cmake | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/llvm/cmake/config-ix.cmake b/llvm/cmake/config-ix.cmake index e19cb349d5b..4a87a23aed1 100755 --- a/llvm/cmake/config-ix.cmake +++ b/llvm/cmake/config-ix.cmake @@ -190,6 +190,35 @@ llvm_find_program(fdp) llvm_find_program(dot) llvm_find_program(dotty) +if( LLVM_ENABLE_FFI ) + find_path(FFI_INCLUDE_PATH ffi.h PATHS ${FFI_INCLUDE_DIR}) + if( FFI_INCLUDE_PATH ) + set(FFI_HEADER ffi.h CACHE INTERNAL "") + set(HAVE_FFI_H 1 CACHE INTERNAL "") + else() + find_path(FFI_INCLUDE_PATH ffi/ffi.h PATHS ${FFI_INCLUDE_DIR}) + if( FFI_INCLUDE_PATH ) + set(FFI_HEADER ffi/ffi.h CACHE INTERNAL "") + set(HAVE_FFI_FFI_H 1 CACHE INTERNAL "") + endif() + endif() + + if( NOT FFI_HEADER ) + message(FATAL_ERROR "libffi includes are not found.") + endif() + + find_library(FFI_LIBRARY_PATH ffi PATHS ${FFI_LIBRARY_DIR}) + if( NOT FFI_LIBRARY_PATH ) + message(FATAL_ERROR "libffi is not found.") + endif() + + list(APPEND CMAKE_REQUIRED_LIBRARIES ${FFI_LIBRARY_PATH}) + list(APPEND CMAKE_REQUIRED_INCLUDES ${FFI_INCLUDE_PATH}) + check_symbol_exists(ffi_call ${FFI_HEADER} HAVE_FFI_CALL) + list(REMOVE_ITEM CMAKE_REQUIRED_INCLUDES ${FFI_INCLUDE_PATH}) + list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES ${FFI_LIBRARY_PATH}) +endif( LLVM_ENABLE_FFI ) + # Define LLVM_MULTITHREADED if gcc atomic builtins exists. include(CheckAtomic) |