Vasil Velichkov | 1789ae2 | 2019-08-13 20:32:05 +0000 | [diff] [blame] | 1 | # Copyright 2011,2012,2014,2016,2018 Free Software Foundation, Inc. |
piotr | 437f546 | 2014-02-04 17:57:25 +0100 | [diff] [blame] | 2 | # |
Vasil Velichkov | 1789ae2 | 2019-08-13 20:32:05 +0000 | [diff] [blame] | 3 | # This file was generated by gr_modtool, a tool from the GNU Radio framework |
| 4 | # This file is a part of gr-gsm |
piotr | 437f546 | 2014-02-04 17:57:25 +0100 | [diff] [blame] | 5 | # |
| 6 | # GNU Radio is free software; you can redistribute it and/or modify |
| 7 | # it under the terms of the GNU General Public License as published by |
| 8 | # the Free Software Foundation; either version 3, or (at your option) |
| 9 | # any later version. |
| 10 | # |
| 11 | # GNU Radio is distributed in the hope that it will be useful, |
| 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 14 | # GNU General Public License for more details. |
| 15 | # |
| 16 | # You should have received a copy of the GNU General Public License |
| 17 | # along with GNU Radio; see the file COPYING. If not, write to |
| 18 | # the Free Software Foundation, Inc., 51 Franklin Street, |
| 19 | # Boston, MA 02110-1301, USA. |
| 20 | |
piotr | 437f546 | 2014-02-04 17:57:25 +0100 | [diff] [blame] | 21 | ######################################################################## |
| 22 | # Project setup |
| 23 | ######################################################################## |
Vasil Velichkov | 1789ae2 | 2019-08-13 20:32:05 +0000 | [diff] [blame] | 24 | cmake_minimum_required(VERSION 3.8) |
Piotr Krysik | 0f510c0 | 2017-08-25 21:49:27 +0200 | [diff] [blame] | 25 | project(gr-gsm CXX C) |
piotr | 437f546 | 2014-02-04 17:57:25 +0100 | [diff] [blame] | 26 | enable_testing() |
| 27 | |
Vasil Velichkov | 1789ae2 | 2019-08-13 20:32:05 +0000 | [diff] [blame] | 28 | # Install to PyBOMBS target prefix if defined |
| 29 | if(DEFINED ENV{PYBOMBS_PREFIX}) |
| 30 | set(CMAKE_INSTALL_PREFIX $ENV{PYBOMBS_PREFIX}) |
| 31 | message(STATUS "PyBOMBS installed GNU Radio. Setting CMAKE_INSTALL_PREFIX to $ENV{PYBOMBS_PREFIX}") |
| 32 | endif() |
| 33 | |
| 34 | # Select the release build type by default to get optimization flags |
piotr | 437f546 | 2014-02-04 17:57:25 +0100 | [diff] [blame] | 35 | if(NOT CMAKE_BUILD_TYPE) |
| 36 | set(CMAKE_BUILD_TYPE "Release") |
| 37 | message(STATUS "Build type not specified: defaulting to release.") |
| 38 | endif(NOT CMAKE_BUILD_TYPE) |
| 39 | set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "") |
| 40 | |
Vasil Velichkov | 1789ae2 | 2019-08-13 20:32:05 +0000 | [diff] [blame] | 41 | # Make sure our local CMake Modules path comes first |
| 42 | list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_SOURCE_DIR}/cmake/Modules) |
Piotr Krysik | bb961c1 | 2017-08-24 15:35:42 +0200 | [diff] [blame] | 43 | |
| 44 | # Set the version information here |
Vasil Velichkov | 1789ae2 | 2019-08-13 20:32:05 +0000 | [diff] [blame] | 45 | set(VERSION_MAJOR 1) |
| 46 | set(VERSION_API 0) |
| 47 | set(VERSION_ABI 0) |
| 48 | set(VERSION_PATCH git) |
| 49 | |
| 50 | cmake_policy(SET CMP0011 NEW) |
| 51 | |
| 52 | # Enable generation of compile_commands.json for code completion engines |
| 53 | set(CMAKE_EXPORT_COMPILE_COMMANDS ON) |
Piotr Krysik | bb961c1 | 2017-08-24 15:35:42 +0200 | [diff] [blame] | 54 | |
| 55 | ######################################################################## |
piotr | 437f546 | 2014-02-04 17:57:25 +0100 | [diff] [blame] | 56 | # Compiler specific setup |
| 57 | ######################################################################## |
Vasil Velichkov | 1789ae2 | 2019-08-13 20:32:05 +0000 | [diff] [blame] | 58 | if((CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR |
| 59 | CMAKE_CXX_COMPILER_ID STREQUAL "GNU") |
| 60 | AND NOT WIN32) |
piotr | 437f546 | 2014-02-04 17:57:25 +0100 | [diff] [blame] | 61 | #http://gcc.gnu.org/wiki/Visibility |
| 62 | add_definitions(-fvisibility=hidden) |
| 63 | endif() |
| 64 | |
Vasil Velichkov | 1789ae2 | 2019-08-13 20:32:05 +0000 | [diff] [blame] | 65 | IF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") |
| 66 | SET(CMAKE_CXX_STANDARD 11) |
| 67 | ELSEIF(CMAKE_CXX_COMPILER_ID MATCHES "Clang") |
| 68 | SET(CMAKE_CXX_STANDARD 11) |
| 69 | ELSEIF(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") |
| 70 | SET(CMAKE_CXX_STANDARD 11) |
| 71 | ELSE() |
| 72 | message(WARNING "C++ standard could not be set because compiler is not GNU, Clang or MSVC.") |
| 73 | ENDIF() |
piotr | 437f546 | 2014-02-04 17:57:25 +0100 | [diff] [blame] | 74 | |
Vasil Velichkov | 1789ae2 | 2019-08-13 20:32:05 +0000 | [diff] [blame] | 75 | IF(CMAKE_C_COMPILER_ID STREQUAL "GNU") |
| 76 | SET(CMAKE_C_STANDARD 11) |
| 77 | ELSEIF(CMAKE_C_COMPILER_ID MATCHES "Clang") |
| 78 | SET(CMAKE_C_STANDARD 11) |
| 79 | ELSEIF(CMAKE_C_COMPILER_ID STREQUAL "MSVC") |
| 80 | SET(CMAKE_C_STANDARD 11) |
| 81 | ELSE() |
| 82 | message(WARNING "C standard could not be set because compiler is not GNU, Clang or MSVC.") |
| 83 | ENDIF() |
Piotr Krysik | 7765bbd | 2016-04-14 13:20:38 +0200 | [diff] [blame] | 84 | |
piotr | 437f546 | 2014-02-04 17:57:25 +0100 | [diff] [blame] | 85 | ######################################################################## |
| 86 | # Install directories |
| 87 | ######################################################################## |
Vasil Velichkov | 1789ae2 | 2019-08-13 20:32:05 +0000 | [diff] [blame] | 88 | find_package(Gnuradio "3.8" REQUIRED COMPONENTS blocks filter fft CONFIG) |
| 89 | include(GrVersion) |
| 90 | |
piotr | 437f546 | 2014-02-04 17:57:25 +0100 | [diff] [blame] | 91 | include(GrPlatform) #define LIB_SUFFIX |
Vasil Velichkov | 1789ae2 | 2019-08-13 20:32:05 +0000 | [diff] [blame] | 92 | |
| 93 | if(NOT CMAKE_MODULES_DIR) |
| 94 | set(CMAKE_MODULES_DIR lib${LIB_SUFFIX}/cmake) |
| 95 | endif(NOT CMAKE_MODULES_DIR) |
| 96 | |
ptrkrysik | 3be74a7 | 2014-12-13 10:11:00 +0100 | [diff] [blame] | 97 | set(GR_INCLUDE_DIR include/grgsm) |
Vasil Velichkov | 1789ae2 | 2019-08-13 20:32:05 +0000 | [diff] [blame] | 98 | set(GR_CMAKE_DIR ${CMAKE_MODULES_DIR}/gsm) |
piotr | 437f546 | 2014-02-04 17:57:25 +0100 | [diff] [blame] | 99 | set(GR_PKG_DATA_DIR ${GR_DATA_DIR}/${CMAKE_PROJECT_NAME}) |
piotr | 437f546 | 2014-02-04 17:57:25 +0100 | [diff] [blame] | 100 | set(GR_PKG_DOC_DIR ${GR_DOC_DIR}/${CMAKE_PROJECT_NAME}) |
piotr | 437f546 | 2014-02-04 17:57:25 +0100 | [diff] [blame] | 101 | set(GR_PKG_CONF_DIR ${GR_CONF_DIR}/${CMAKE_PROJECT_NAME}/conf.d) |
piotr | 437f546 | 2014-02-04 17:57:25 +0100 | [diff] [blame] | 102 | set(GR_PKG_LIBEXEC_DIR ${GR_LIBEXEC_DIR}/${CMAKE_PROJECT_NAME}) |
piotr | 437f546 | 2014-02-04 17:57:25 +0100 | [diff] [blame] | 103 | |
| 104 | ######################################################################## |
Steve Glass | 3f4b949 | 2016-01-24 10:46:24 +1000 | [diff] [blame] | 105 | # On Apple only, set install name and use rpath correctly, if not already set |
| 106 | ######################################################################## |
| 107 | if(APPLE) |
| 108 | if(NOT CMAKE_INSTALL_NAME_DIR) |
Vasil Velichkov | 1789ae2 | 2019-08-13 20:32:05 +0000 | [diff] [blame] | 109 | set(CMAKE_INSTALL_NAME_DIR |
| 110 | ${CMAKE_INSTALL_PREFIX}/${GR_LIBRARY_DIR} CACHE |
| 111 | PATH "Library Install Name Destination Directory" FORCE) |
Steve Glass | 3f4b949 | 2016-01-24 10:46:24 +1000 | [diff] [blame] | 112 | endif(NOT CMAKE_INSTALL_NAME_DIR) |
| 113 | if(NOT CMAKE_INSTALL_RPATH) |
Vasil Velichkov | 1789ae2 | 2019-08-13 20:32:05 +0000 | [diff] [blame] | 114 | set(CMAKE_INSTALL_RPATH |
| 115 | ${CMAKE_INSTALL_PREFIX}/${GR_LIBRARY_DIR} CACHE |
| 116 | PATH "Library Install RPath" FORCE) |
Steve Glass | 3f4b949 | 2016-01-24 10:46:24 +1000 | [diff] [blame] | 117 | endif(NOT CMAKE_INSTALL_RPATH) |
| 118 | if(NOT CMAKE_BUILD_WITH_INSTALL_RPATH) |
Vasil Velichkov | 1789ae2 | 2019-08-13 20:32:05 +0000 | [diff] [blame] | 119 | set(CMAKE_BUILD_WITH_INSTALL_RPATH ON CACHE |
| 120 | BOOL "Do Build Using Library Install RPath" FORCE) |
Steve Glass | 3f4b949 | 2016-01-24 10:46:24 +1000 | [diff] [blame] | 121 | endif(NOT CMAKE_BUILD_WITH_INSTALL_RPATH) |
| 122 | endif(APPLE) |
| 123 | |
| 124 | ######################################################################## |
Vasil Velichkov | 1789ae2 | 2019-08-13 20:32:05 +0000 | [diff] [blame] | 125 | # Find gnuradio build dependencies |
| 126 | ######################################################################## |
| 127 | find_package(Doxygen) |
| 128 | |
| 129 | ######################################################################## |
| 130 | # Find osmocom build dependencies |
| 131 | ######################################################################## |
| 132 | option(LOCAL_OSMOCOM "Build with local osmocom libraries" OFF) |
| 133 | find_package(Libosmocore) |
| 134 | find_package(Libosmocodec) |
| 135 | find_package(Libosmocoding) |
| 136 | find_package(Libosmogsm) |
| 137 | if(NOT LIBOSMOCORE_FOUND OR NOT LIBOSMOCODEC_FOUND OR NOT LIBOSMOGSM_FOUND) |
| 138 | set(LOCAL_OSMOCOM ON) |
| 139 | endif() |
| 140 | |
| 141 | ######################################################################## |
| 142 | # Setup doxygen option |
| 143 | ######################################################################## |
| 144 | if(DOXYGEN_FOUND) |
| 145 | option(ENABLE_DOXYGEN "Build docs using Doxygen" ON) |
| 146 | else(DOXYGEN_FOUND) |
| 147 | option(ENABLE_DOXYGEN "Build docs using Doxygen" OFF) |
| 148 | endif(DOXYGEN_FOUND) |
| 149 | |
| 150 | ######################################################################## |
piotr | 437f546 | 2014-02-04 17:57:25 +0100 | [diff] [blame] | 151 | # Create uninstall target |
| 152 | ######################################################################## |
| 153 | configure_file( |
| 154 | ${CMAKE_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in |
| 155 | ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake |
| 156 | @ONLY) |
| 157 | |
| 158 | add_custom_target(uninstall |
| 159 | ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake |
Vasil Velichkov | 1789ae2 | 2019-08-13 20:32:05 +0000 | [diff] [blame] | 160 | ) |
| 161 | |
piotr | 437f546 | 2014-02-04 17:57:25 +0100 | [diff] [blame] | 162 | |
| 163 | ######################################################################## |
| 164 | # Add subdirectories |
| 165 | ######################################################################## |
ptrkrysik | 3c73810 | 2015-04-04 12:20:50 +0200 | [diff] [blame] | 166 | add_subdirectory(include/grgsm) |
piotr | 437f546 | 2014-02-04 17:57:25 +0100 | [diff] [blame] | 167 | add_subdirectory(lib) |
Vasil Velichkov | 1789ae2 | 2019-08-13 20:32:05 +0000 | [diff] [blame] | 168 | add_subdirectory(apps) |
| 169 | add_subdirectory(docs) |
piotr | 437f546 | 2014-02-04 17:57:25 +0100 | [diff] [blame] | 170 | add_subdirectory(swig) |
| 171 | add_subdirectory(python) |
| 172 | add_subdirectory(grc) |
piotr | 437f546 | 2014-02-04 17:57:25 +0100 | [diff] [blame] | 173 | |
| 174 | ######################################################################## |
| 175 | # Install cmake search helper for this library |
| 176 | ######################################################################## |
Piotr Krysik | 7765bbd | 2016-04-14 13:20:38 +0200 | [diff] [blame] | 177 | |
Vasil Velichkov | 1789ae2 | 2019-08-13 20:32:05 +0000 | [diff] [blame] | 178 | install(FILES cmake/Modules/gr-gsmConfig.cmake |
| 179 | DESTINATION ${CMAKE_MODULES_DIR}/gsm |
| 180 | ) |