diff --git a/cmake/FindFFTW.cmake b/cmake/FindFFTW.cmake index 1073249..fd06cae 100644 --- a/cmake/FindFFTW.cmake +++ b/cmake/FindFFTW.cmake @@ -1,22 +1,76 @@ -# - Find FFTW -# Find the native FFTW includes and library +# - Find the FFTW library # -# FFTW_INCLUDES - where to find fftw3.h -# FFTW_LIBRARIES - List of libraries when using FFTW. -# FFTW_FOUND - True if FFTW found. +# Usage: +# find_package(FFTW [REQUIRED] [QUIET] ) +# +# It sets the following variables: +# FFTW_FOUND ... true if fftw is found on the system +# FFTW_LIBRARIES ... full path to fftw library +# FFTW_INCLUDES ... fftw include directory +# +# The following variables will be checked by the function +# FFTW_USE_STATIC_LIBS ... if true, only static libraries are found +# FFTW_LIBRARIES ... fftw library to use +# FFTW_INCLUDE_DIRS ... fftw include directory +# + + +if (FFTW_LIBRARIES AND FFTW_INCLUDE_DIRS) + # in cache already + set(FFTW_FOUND TRUE) +else (FFTW_LIBRARIES AND FFTW_INCLUDE_DIRS) + +if (FFTW_USE_STATIC_LIBS AND NOT MSVC) + set (LIBFFTW_LIB_SUFFIX ".a" CACHE INTERNAL "libfftw3 library name suffix passed to find_library") +else (FFTW_USE_STATIC_LIBS AND NOT MSVC) + set (LIBFFTW_LIB_SUFFIX ".dylib" CACHE INTERNAL "libfftw3 library name suffix passed to find_library") +endif (FFTW_USE_STATIC_LIBS AND NOT MSVC) + + find_path(FFTW_INCLUDE_DIR + NAMES + fftw3.h + PATHS + /usr/include + /usr/local/include + /opt/local/include + /sw/include + ) + + find_library(FFTW_LIBRARY + NAMES + fftw3 + libfftw3${LIBFFTW_LIB_SUFFIX} + PATHS + /usr/lib + /usr/local/lib + /opt/local/lib + /sw/lib + ) -if (FFTW_INCLUDES) - # Already in cache, be silent - set (FFTW_FIND_QUIETLY TRUE) -endif (FFTW_INCLUDES) + set(FFTW_INCLUDE_DIRS + ${FFTW_INCLUDE_DIR} + ) + set(FFTW_LIBRARIES + ${FFTW_LIBRARY} +) -find_path (FFTW_INCLUDES fftw3.h) + if (FFTW_INCLUDE_DIRS AND FFTW_LIBRARIES) + set(FFTW_FOUND TRUE) + endif (FFTW_INCLUDE_DIRS AND FFTW_LIBRARIES) -find_library (FFTW_LIBRARIES NAMES fftw3) + if (FFTW_FOUND) + if (NOT FFTW_FIND_QUIETLY) + message(STATUS "Found libfftw3:") + message(STATUS " - Includes: ${FFTW_INCLUDE_DIRS}") + message(STATUS " - Libraries: ${FFTW_LIBRARIES}") + endif (NOT FFTW_FIND_QUIETLY) + else (FFTW_FOUND) + if (FFTW_FIND_REQUIRED) + message(FATAL_ERROR "Could not find libfftw3") + endif (FFTW_FIND_REQUIRED) + endif (FFTW_FOUND) -# handle the QUIETLY and REQUIRED arguments and set FFTW_FOUND to TRUE if -# all listed variables are TRUE -include (FindPackageHandleStandardArgs) -find_package_handle_standard_args (FFTW DEFAULT_MSG FFTW_LIBRARIES FFTW_INCLUDES) + # show the FFTW_INCLUDE_DIRS and FFTW_LIBRARIES variables only in the advanced view + mark_as_advanced(FFTW_INCLUDE_DIRS FFTW_LIBRARIES) -mark_as_advanced (FFTW_LIBRARIES FFTW_INCLUDES) \ No newline at end of file +endif (FFTW_LIBRARIES AND FFTW_INCLUDE_DIRS) diff --git a/cmake/Findlibusb.cmake b/cmake/Findlibusb.cmake index b5d1895..201a7d4 100644 --- a/cmake/Findlibusb.cmake +++ b/cmake/Findlibusb.cmake @@ -5,6 +5,7 @@ find_path(LIBUSB_INCLUDE_DIR /usr/local/include /opt/local/include /usr/include + /sw/include PATH_SUFFIXES libusb-1.0 ) @@ -25,6 +26,7 @@ find_library(LIBUSB_LIBRARY /opt/local/lib /usr/lib /lib64/ + /sw/lib /usr/lib/i386-linux-gnu/ /usr/lib/x86_64-linux-gnu/ ) @@ -36,4 +38,4 @@ if (LIBUSB_FOUND) set(LIBUSB_INCLUDE_DIRS ${LIBUSB_INCLUDE_DIR}) set(LIBUSB_LIBRARIES ${LIBUSB_LIBRARY}) mark_as_advanced(LIBUSB_INCLUDE_DIR LIBUSB_LIBRARY) -endif (LIBUSB_FOUND) \ No newline at end of file +endif (LIBUSB_FOUND) diff --git a/openhantek/CMakeLists.txt b/openhantek/CMakeLists.txt index 6abfc22..bbca3ca 100644 --- a/openhantek/CMakeLists.txt +++ b/openhantek/CMakeLists.txt @@ -35,20 +35,21 @@ else() target_compile_options(${PROJECT_NAME} PRIVATE "$<$:-O0>") target_compile_options(${PROJECT_NAME} PRIVATE "$<$:-fno-rtti>") endif() - -if (UNIX) +if(WIN32) + include(../cmake/fftw_on_windows.cmake) + include(../cmake/libusb_on_windows.cmake) +else() find_package(libusb REQUIRED) + target_include_directories(${PROJECT_NAME} PRIVATE ${LIBUSB_INCLUDE_DIRS}) target_link_libraries(${PROJECT_NAME} ${LIBUSB_LIBRARIES}) find_package(Threads REQUIRED) target_link_libraries(${PROJECT_NAME} ${CMAKE_THREAD_LIBS_INIT}) find_package(FFTW REQUIRED) + target_include_directories(${PROJECT_NAME} PRIVATE ${FFTW_INCLUDE_DIRS}) target_link_libraries(${PROJECT_NAME} ${FFTW_LIBRARIES}) -elseif(WIN32) - include(../cmake/fftw_on_windows.cmake) - include(../cmake/libusb_on_windows.cmake) endif() # install commands