FindFFTW3.cmake 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  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. if(NOT FFTW3_INCLUDE_DIR OR NOT FFTW3_LIBRARY_DIR)
  17. # Check if we can use PkgConfig
  18. find_package(PkgConfig QUIET)
  19. #Determine from PKG
  20. if(PKG_CONFIG_FOUND AND NOT FFTW3_ROOT)
  21. pkg_check_modules(PKG_FFTW QUIET "fftw3")
  22. endif()
  23. if(FFTW3_ROOT)
  24. # Try to find headers under root
  25. find_path(FFTW3_INCLUDE_DIR
  26. NAMES "fftw3.h"
  27. PATHS ${FFTW3_ROOT}
  28. PATH_SUFFIXES "include"
  29. NO_DEFAULT_PATH
  30. )
  31. # Try to find library under root
  32. find_library(FFTW3_LIBRARY
  33. NAMES "fftw3"
  34. PATHS ${FFTW3_ROOT}
  35. PATH_SUFFIXES "lib" "lib64"
  36. NO_DEFAULT_PATH
  37. )
  38. find_library(FFTW3_FFTWF_LIBRARY
  39. NAMES "fftw3f"
  40. PATHS ${FFTW3_ROOT}
  41. PATH_SUFFIXES "lib" "lib64"
  42. NO_DEFAULT_PATH
  43. )
  44. find_library(FFTW3_FFTWL_LIBRARY
  45. NAMES "fftw3l"
  46. PATHS ${FFTW3_ROOT}
  47. PATH_SUFFIXES "lib" "lib64"
  48. NO_DEFAULT_PATH
  49. )
  50. else()
  51. # Find headers the normal way
  52. find_path(FFTW3_INCLUDE_DIR
  53. NAMES "fftw3.h"
  54. PATHS ${PKG_FFTW3_INCLUDE_DIRS}
  55. ${INCLUDE_INSTALL_DIR}
  56. "/usr/include"
  57. "/usr/local/include"
  58. PATH_SUFFIXES "" "fftw"
  59. )
  60. # Find library the normal way
  61. find_library(FFTW3_LIBRARY
  62. NAMES "fftw3"
  63. PATHS ${PKG_FFTW3_LIBRARY_DIRS}
  64. ${LIB_INSTALL_DIR}
  65. "/usr"
  66. "/usr/local"
  67. PATH_SUFFIXES "" "lib" "lib32" "lib64"
  68. )
  69. find_library(FFTW3_FFTWF_LIBRARY
  70. NAMES "fftw3f"
  71. PATHS ${PKG_FFTW3_LIBRARY_DIRS}
  72. ${LIB_INSTALL_DIR}
  73. "/usr"
  74. "/usr/local"
  75. PATH_SUFFIXES "" "lib" "lib32" "lib64"
  76. )
  77. find_library(FFTW3_FFTWL_LIBRARY
  78. NAMES "fftw3l"
  79. PATHS ${PKG_FFTW3_LIBRARY_DIRS}
  80. ${LIB_INSTALL_DIR}
  81. "/usr"
  82. "/usr/local"
  83. PATH_SUFFIXES "" "lib" "lib32" "lib64"
  84. )
  85. endif()
  86. # Get the directory conaining FFTW3_LIBRARY
  87. get_filename_component(FFTW3_LIBRARY_DIR "${FFTW3_LIBRARY}" PATH)
  88. set(FFTW3_LIBRARY_DIR "${FFTW3_LIBRARY_DIR}" CACHE PATH "The path to fftw's library directory.") # Library path
  89. mark_as_advanced(FFTW3_INCLUDE_DIR)
  90. mark_as_advanced(FFTW3_LIBRARY_DIR)
  91. mark_as_advanced(FFTW3_LIBRARY)
  92. mark_as_advanced(FFTW3_FFTWF_LIBRARY)
  93. mark_as_advanced(FFTW3_FFTWL_LIBRARY)
  94. endif()
  95. include(FindPackageHandleStandardArgs)
  96. find_package_handle_standard_args(FFTW DEFAULT_MSG FFTW3_LIBRARY FFTW3_INCLUDE_DIR FFTW3_LIBRARY_DIR)