mirror of https://github.com/pvnis/srsRAN_4G.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
4.0 KiB
CMake
127 lines
4.0 KiB
CMake
#
|
|
# Copyright 2013-2015 Software Radio Systems Limited
|
|
#
|
|
# This file is part of the srsLTE library.
|
|
#
|
|
# srsLTE is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU Affero General Public License as
|
|
# published by the Free Software Foundation, either version 3 of
|
|
# the License, or (at your option) any later version.
|
|
#
|
|
# srsLTE is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU Affero General Public License for more details.
|
|
#
|
|
# A copy of the GNU Affero General Public License can be found in
|
|
# the LICENSE file in the top-level directory of this distribution
|
|
# and at http://www.gnu.org/licenses/.
|
|
#
|
|
|
|
|
|
########################################################################
|
|
# Find Dependencies
|
|
########################################################################
|
|
include(CheckFunctionExistsMath)
|
|
|
|
FIND_PACKAGE(SRSGUI)
|
|
FIND_PACKAGE(FFTW3F REQUIRED) # TODO: distribute kissfft instead
|
|
|
|
IF(${DISABLE_VOLK})
|
|
IF(${DISABLE_VOLK} EQUAL 0)
|
|
FIND_PACKAGE(Volk)
|
|
ELSE(${DISABLE_VOLK} EQUAL 0)
|
|
MESSAGE(STATUS "VOLK library disabled (DISABLE_VOLK=1)")
|
|
ENDIF(${DISABLE_VOLK} EQUAL 0)
|
|
ELSE(${DISABLE_VOLK})
|
|
FIND_PACKAGE(Volk)
|
|
ENDIF(${DISABLE_VOLK})
|
|
|
|
IF(VOLK_FOUND)
|
|
INCLUDE_DIRECTORIES(${VOLK_INCLUDE_DIRS})
|
|
LINK_DIRECTORIES(${VOLK_LIBRARY_DIRS})
|
|
ENDIF(VOLK_FOUND)
|
|
|
|
IF(FFTW3F_FOUND)
|
|
INCLUDE_DIRECTORIES(${FFTW3F_INCLUDE_DIRS})
|
|
LINK_DIRECTORIES(${FFTW3F_LIBRARY_DIRS})
|
|
ENDIF(FFTW3F_FOUND)
|
|
|
|
IF(SRSGUI_FOUND)
|
|
INCLUDE_DIRECTORIES(${SRSGUI_INCLUDE_DIRS})
|
|
LINK_DIRECTORIES(${SRSGUI_LIBRARY_DIRS})
|
|
ENDIF(SRSGUI_FOUND)
|
|
|
|
########################################################################
|
|
# Recurse subdirectories and compile all source files into the same lib
|
|
########################################################################
|
|
FILE(GLOB modules *)
|
|
SET(SOURCES_ALL "")
|
|
FOREACH (_module ${modules})
|
|
IF(IS_DIRECTORY ${_module})
|
|
IF (NOT ${_module} MATCHES "rf")
|
|
FILE(GLOB_RECURSE tmp "${_module}/src/*.c")
|
|
LIST(APPEND SOURCES_ALL ${tmp})
|
|
ENDIF (NOT ${_module} MATCHES "rf")
|
|
ENDIF(IS_DIRECTORY ${_module})
|
|
ENDFOREACH()
|
|
|
|
ADD_LIBRARY(srslte SHARED ${SOURCES_ALL})
|
|
TARGET_LINK_LIBRARIES(srslte m ${FFTW3F_LIBRARIES})
|
|
|
|
IF(RF_FOUND)
|
|
# Include common RF files
|
|
SET(SOURCES_RF "")
|
|
LIST(APPEND SOURCES_RF "rf/src/rf_imp.c" "rf/src/rf_utils.c")
|
|
|
|
IF (UHD_FOUND)
|
|
INCLUDE_DIRECTORIES(${UHD_INCLUDE_DIRS})
|
|
LINK_DIRECTORIES(${UHD_LIBRARY_DIRS})
|
|
add_definitions(-DENABLE_UHD)
|
|
LIST(APPEND SOURCES_RF "rf/src/rf_uhd_imp.c" "rf/src/uhd_c_api.cpp")
|
|
ENDIF (UHD_FOUND)
|
|
|
|
IF (BLADERF_FOUND)
|
|
INCLUDE_DIRECTORIES(${BLADERF_INCLUDE_DIRS})
|
|
add_definitions(-DENABLE_BLADERF)
|
|
LIST(APPEND SOURCES_RF "rf/src/rf_blade_imp.c")
|
|
ENDIF (BLADERF_FOUND)
|
|
|
|
ADD_LIBRARY(srslte_rf SHARED ${SOURCES_RF})
|
|
|
|
IF (UHD_FOUND)
|
|
TARGET_LINK_LIBRARIES(srslte_rf ${UHD_LIBRARIES})
|
|
ENDIF (UHD_FOUND)
|
|
|
|
IF (BLADERF_FOUND)
|
|
TARGET_LINK_LIBRARIES(srslte_rf ${BLADERF_LIBRARIES})
|
|
ENDIF (BLADERF_FOUND)
|
|
|
|
INSTALL(TARGETS srslte_rf DESTINATION ${LIBRARY_DIR})
|
|
SRSLTE_SET_PIC(srslte_rf)
|
|
ENDIF(RF_FOUND)
|
|
|
|
INSTALL(TARGETS srslte DESTINATION ${LIBRARY_DIR})
|
|
SRSLTE_SET_PIC(srslte)
|
|
|
|
IF(VOLK_FOUND)
|
|
INCLUDE_DIRECTORIES(${VOLK_INCLUDE_DIRS})
|
|
SET_TARGET_PROPERTIES(srslte PROPERTIES COMPILE_DEFINITIONS "${VOLK_DEFINITIONS}")
|
|
TARGET_LINK_LIBRARIES(srslte ${VOLK_LIBRARIES})
|
|
MESSAGE(STATUS " Compiling with VOLK SIMD library.")
|
|
ELSE(VOLK_FOUND)
|
|
MESSAGE(STATUS " VOLK SIMD library NOT found. Using generic implementation.")
|
|
ENDIF(VOLK_FOUND)
|
|
|
|
########################################################################
|
|
# Recurse subdirectories and find all directories with a CMakeLists.txt file in it
|
|
########################################################################
|
|
FILE(GLOB_RECURSE cmakefiles CMakeLists.txt)
|
|
FOREACH (_file ${cmakefiles})
|
|
GET_FILENAME_COMPONENT(dir ${_file} PATH)
|
|
IF (NOT ${dir} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
|
|
ADD_SUBDIRECTORY(${dir})
|
|
ENDIF ()
|
|
ENDFOREACH()
|
|
|