FindFFTW3.cmake 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. # Filename: FindFFTW.cmake
  2. # Author: Unknown (???), kestred (29 Nov, 2013)
  3. #
  4. # Usage:
  5. # find_package(FFTW [REQUIRED] [QUIET])
  6. #
  7. # Once done this will define:
  8. # FFTW3_FOUND - true if fftw is found on the system
  9. # FFTW3_INCLUDE_DIR - the fftw include directory
  10. # FFTW3_LIBRARY_DIR - the fftw library directory
  11. # FFTW3_LIBRARY - the path to the library binary
  12. #
  13. # The following variables will be checked by the function
  14. # FFTW3_ROOT - if set, the libraries are exclusively searched under this path
  15. #
  16. # Check if we can use PkgConfig
  17. find_package(PkgConfig QUIET)
  18. #Determine from PKG
  19. if(PKG_CONFIG_FOUND AND NOT FFTW3_ROOT)
  20. pkg_check_modules(PKG_FFTW QUIET "fftw3")
  21. endif()
  22. if(FFTW3_ROOT)
  23. # Try to find headers under root
  24. find_path(FFTW3_INCLUDE_DIR
  25. NAMES "fftw3.h"
  26. PATHS ${FFTW3_ROOT}
  27. PATH_SUFFIXES "include"
  28. NO_DEFAULT_PATH
  29. )
  30. # Try to find library under root
  31. find_library(FFTW3_LIBRARY
  32. NAMES "fftw3"
  33. PATHS ${FFTW3_ROOT}
  34. PATH_SUFFIXES "lib" "lib64"
  35. NO_DEFAULT_PATH
  36. )
  37. find_library(FFTW3_FFTWF_LIBRARY
  38. NAMES "fftw3f"
  39. PATHS ${FFTW3_ROOT}
  40. PATH_SUFFIXES "lib" "lib64"
  41. NO_DEFAULT_PATH
  42. )
  43. find_library(FFTW3_FFTWL_LIBRARY
  44. NAMES "fftw3l"
  45. PATHS ${FFTW3_ROOT}
  46. PATH_SUFFIXES "lib" "lib64"
  47. NO_DEFAULT_PATH
  48. )
  49. else()
  50. # Find headers the normal way
  51. find_path(FFTW3_INCLUDE_DIR
  52. NAMES "fftw3.h"
  53. PATHS ${PKG_FFTW3_INCLUDE_DIRS}
  54. ${INCLUDE_INSTALL_DIR}
  55. "/usr/include"
  56. "/usr/local/include"
  57. PATH_SUFFIXES "" "fftw"
  58. )
  59. # Find library the normal way
  60. find_library(FFTW3_LIBRARY
  61. NAMES "fftw3"
  62. PATHS ${PKG_FFTW3_LIBRARY_DIRS}
  63. ${LIB_INSTALL_DIR}
  64. "/usr"
  65. "/usr/local"
  66. PATH_SUFFIXES "" "lib" "lib32" "lib64"
  67. )
  68. find_library(FFTW3_FFTWF_LIBRARY
  69. NAMES "fftw3f"
  70. PATHS ${PKG_FFTW3_LIBRARY_DIRS}
  71. ${LIB_INSTALL_DIR}
  72. "/usr"
  73. "/usr/local"
  74. PATH_SUFFIXES "" "lib" "lib32" "lib64"
  75. )
  76. find_library(FFTW3_FFTWL_LIBRARY
  77. NAMES "fftw3l"
  78. PATHS ${PKG_FFTW3_LIBRARY_DIRS}
  79. ${LIB_INSTALL_DIR}
  80. "/usr"
  81. "/usr/local"
  82. PATH_SUFFIXES "" "lib" "lib32" "lib64"
  83. )
  84. endif()
  85. # Get the directory conaining FFTW3_LIBRARY
  86. get_filename_component(FFTW3_LIBRARY_DIR "${FFTW3_LIBRARY}" PATH)
  87. set(FFTW3_LIBRARY_DIR "${FFTW3_LIBRARY_DIR}" CACHE PATH "The path to fftw's library directory.") # Library path
  88. mark_as_advanced(FFTW3_INCLUDE_DIR)
  89. mark_as_advanced(FFTW3_LIBRARY_DIR)
  90. mark_as_advanced(FFTW3_LIBRARY)
  91. mark_as_advanced(FFTW3_FFTWF_LIBRARY)
  92. mark_as_advanced(FFTW3_FFTWL_LIBRARY)
  93. include(FindPackageHandleStandardArgs)
  94. find_package_handle_standard_args(FFTW3 DEFAULT_MSG FFTW3_LIBRARY FFTW3_INCLUDE_DIR FFTW3_LIBRARY_DIR)