|
| 1 | +CMAKE_MINIMUM_REQUIRED( VERSION 2.8.4 ) |
| 2 | +# allow more human readable "if then else" constructs |
| 3 | +#SET( CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS TRUE ) |
| 4 | + |
| 5 | +# Add the local Find*.cmake scripts |
| 6 | +LIST (APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Modules) |
| 7 | + |
| 8 | +PROJECT( CellSearch ) |
| 9 | +ENABLE_TESTING() |
| 10 | + |
| 11 | +SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ggdb -Wall") |
| 12 | +SET (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall -Werror -ggdb -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC") |
| 13 | + |
| 14 | +# Set default build type |
| 15 | +IF( NOT CMAKE_BUILD_TYPE ) |
| 16 | + SET( CMAKE_BUILD_TYPE "release" ) |
| 17 | +ENDIF() |
| 18 | + |
| 19 | +# Find needed packages. |
| 20 | +IF (USE_OPENCL MATCHES NOTFOUND) |
| 21 | + set(USE_OPENCL 1) |
| 22 | +ENDIF (USE_OPENCL MATCHES NOTFOUND) |
| 23 | + |
| 24 | +IF (USE_RTLSDR MATCHES NOTFOUND) |
| 25 | + set(USE_RTLSDR 0) |
| 26 | +ENDIF (USE_RTLSDR MATCHES NOTFOUND) |
| 27 | + |
| 28 | +IF (USE_HACKRF MATCHES NOTFOUND) |
| 29 | + set(USE_HACKRF 0) |
| 30 | +ENDIF (USE_HACKRF MATCHES NOTFOUND) |
| 31 | + |
| 32 | +IF (USE_BLADERF MATCHES NOTFOUND) |
| 33 | + set(USE_BLADERF 0) |
| 34 | +ENDIF (USE_BLADERF MATCHES NOTFOUND) |
| 35 | + |
| 36 | +IF (USE_OPENCL MATCHES 0) |
| 37 | + MESSAGE(STATUS "Avoid OPENCL") |
| 38 | + SET(OPENCL_FOUND "NO") |
| 39 | + SET( USE_OPENCL "NO_OPENCL") |
| 40 | +ELSE (USE_OPENCL MATCHES 0) |
| 41 | + MESSAGE(STATUS "Try to find OPENCL LIB") |
| 42 | + FIND_PACKAGE( OPENCL ) |
| 43 | + IF ( OPENCL_FOUND ) |
| 44 | + MESSAGE(STATUS "Found OpenCL LIB: ${OPENCL_LIBRARIES}") |
| 45 | + INCLUDE_DIRECTORIES("${OPENCL_INCLUDE_DIR}") |
| 46 | + SET( USE_OPENCL "USE_OPENCL") |
| 47 | + ELSE ( OPENCL_FOUND ) |
| 48 | + MESSAGE(STATUS "OpenCL LIB not found") |
| 49 | + SET( USE_OPENCL "NO_OPENCL") |
| 50 | + ENDIF ( OPENCL_FOUND ) |
| 51 | +ENDIF (USE_OPENCL MATCHES 0) |
| 52 | + |
| 53 | +FIND_PACKAGE( OpenMP ) |
| 54 | +if (OPENMP_FOUND) |
| 55 | + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") |
| 56 | + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") |
| 57 | +endif() |
| 58 | +FIND_PACKAGE( Boost COMPONENTS thread system REQUIRED ) |
| 59 | +INCLUDE_DIRECTORIES("${Boost_INCLUDE_DIRS}") |
| 60 | +FIND_PACKAGE( ITPP REQUIRED ) |
| 61 | +INCLUDE_DIRECTORIES("${ITPP_INCLUDE_DIR}") |
| 62 | +FIND_PACKAGE( BLAS REQUIRED ) |
| 63 | +FIND_PACKAGE( LAPACK REQUIRED ) |
| 64 | +FIND_PACKAGE( FFTW REQUIRED ) |
| 65 | +INCLUDE_DIRECTORIES("${FFTW_INCLUDE_DIR}") |
| 66 | + |
| 67 | +SET( HAVE_BLADERF "NO_BLADERF") |
| 68 | +SET( HAVE_HACKRF "NO_HACKRF") |
| 69 | +SET( HAVE_RTLSDR "NO_RTLSDR") |
| 70 | + |
| 71 | +IF (USE_BLADERF MATCHES 1) |
| 72 | + |
| 73 | + MESSAGE(STATUS "Try to find BLADERF LIB") |
| 74 | + find_package(BLADERF REQUIRED) |
| 75 | + IF ( BLADERF_FOUND ) |
| 76 | + MESSAGE(STATUS "Found BLADERF LIB: ${BLADERF_LIBRARIES}") |
| 77 | + include_directories(${BLADERF_INCLUDE_DIR}) |
| 78 | + SET( HAVE_BLADERF "HAVE_BLADERF") |
| 79 | + ELSE ( BLADERF_FOUND ) |
| 80 | + MESSAGE(STATUS "BLADERF LIB not found") |
| 81 | + ENDIF ( BLADERF_FOUND ) |
| 82 | + |
| 83 | +ELSE (USE_BLADERF MATCHES 1) |
| 84 | + |
| 85 | + IF (USE_HACKRF MATCHES 1) |
| 86 | + |
| 87 | + MESSAGE(STATUS "Try to find HACKRF LIB") |
| 88 | + FIND_PACKAGE( HACKRF REQUIRED) |
| 89 | + IF ( HACKRF_FOUND ) |
| 90 | + MESSAGE(STATUS "Found HACKRF LIB: ${HACKRF_LIBRARIES}") |
| 91 | + INCLUDE_DIRECTORIES("${HACKRF_INCLUDE_DIR}") |
| 92 | + SET( HAVE_HACKRF "HAVE_HACKRF") |
| 93 | + ELSE ( HACKRF_FOUND ) |
| 94 | + MESSAGE(STATUS "HACKRF LIB not found") |
| 95 | + ENDIF ( HACKRF_FOUND ) |
| 96 | + |
| 97 | + ELSE (USE_HACKRF MATCHES 1) |
| 98 | + |
| 99 | + MESSAGE(STATUS "Try to find RTLSDR LIB") |
| 100 | + FIND_PACKAGE( RTLSDR REQUIRED) |
| 101 | + IF ( RTLSDR_FOUND ) |
| 102 | + MESSAGE(STATUS "Found RTLSDR LIB: ${RTLSDR_LIBRARIES}") |
| 103 | + INCLUDE_DIRECTORIES("${RTLSDR_INCLUDE_DIR}") |
| 104 | + SET( HAVE_RTLSDR "HAVE_RTLSDR") |
| 105 | + ELSE ( RTLSDR_FOUND ) |
| 106 | + MESSAGE(STATUS "RTLSDR LIB not found") |
| 107 | + ENDIF ( RTLSDR_FOUND ) |
| 108 | + |
| 109 | + ENDIF (USE_HACKRF MATCHES 1) |
| 110 | + |
| 111 | +ENDIF (USE_BLADERF MATCHES 1) |
| 112 | + |
| 113 | +FIND_PACKAGE( Curses REQUIRED ) |
| 114 | +INCLUDE_DIRECTORIES("${CURSES_INCLUDE_DIR}") |
| 115 | + |
| 116 | +# Add version information to build |
| 117 | +SET( ${PROJECT_NAME}_MAJOR_VERSION 1 ) |
| 118 | +SET( ${PROJECT_NAME}_MINOR_VERSION 1 ) |
| 119 | +SET( ${PROJECT_NAME}_PATCH_LEVEL 0 ) |
| 120 | +CONFIGURE_FILE ( |
| 121 | + "${PROJECT_SOURCE_DIR}/include/common.h.in" |
| 122 | + "${PROJECT_BINARY_DIR}/include/common.h" |
| 123 | +) |
| 124 | + |
| 125 | +# Where .h files are located |
| 126 | +INCLUDE_DIRECTORIES("${PROJECT_SOURCE_DIR}/include") |
| 127 | +INCLUDE_DIRECTORIES("${PROJECT_BINARY_DIR}/include") |
| 128 | + |
| 129 | +# Descend into subdirectories |
| 130 | +ADD_SUBDIRECTORY(src) |
| 131 | +ADD_SUBDIRECTORY(test) |
| 132 | + |
| 133 | +# Uninstall target |
| 134 | +configure_file( |
| 135 | + "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in" |
| 136 | + "${CMAKE_CURRENT_BINARY_DIR}/cmake/cmake_uninstall.cmake" |
| 137 | + IMMEDIATE @ONLY) |
| 138 | + |
| 139 | +add_custom_target(uninstall |
| 140 | + COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake/cmake_uninstall.cmake) |
| 141 | + |
0 commit comments