mirror of
https://github.com/EttusResearch/uhd.git
synced 2026-10-25 17:36:10 +00:00
The SOVERSION will now match the ABI string, and the VERSION matches the full UHD version. This will allow easier parallel installation of multiple versions of UHD.
209 lines
8.2 KiB
CMake
209 lines
8.2 KiB
CMake
#
|
|
# Copyright 2010-2015 Ettus Research LLC
|
|
# Copyright 2018 Ettus Research, a National Instruments Company
|
|
#
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
#
|
|
|
|
########################################################################
|
|
# Helpful Macros
|
|
########################################################################
|
|
MACRO(LIBUHD_APPEND_SOURCES)
|
|
LIST(APPEND libuhd_sources ${ARGV})
|
|
ENDMACRO(LIBUHD_APPEND_SOURCES)
|
|
|
|
MACRO(LIBUHD_APPEND_LIBS)
|
|
LIST(APPEND libuhd_libs ${ARGV})
|
|
ENDMACRO(LIBUHD_APPEND_LIBS)
|
|
|
|
MACRO(LIBUHD_PYTHON_GEN_SOURCE pyfile outfile)
|
|
#ensure that the directory exists for outfile
|
|
GET_FILENAME_COMPONENT(outfile_dir ${outfile} PATH)
|
|
FILE(MAKE_DIRECTORY ${outfile_dir})
|
|
|
|
#make the outfile depend on the python script
|
|
ADD_CUSTOM_COMMAND(
|
|
OUTPUT ${outfile} DEPENDS ${pyfile} ${LIBUHD_PYTHON_GEN_SOURCE_DEPS}
|
|
COMMAND ${PYTHON_EXECUTABLE} -B ${pyfile} ${outfile}
|
|
COMMENT "Generating ${outfile}"
|
|
)
|
|
|
|
#make libuhd depend on the outfile
|
|
LIBUHD_APPEND_SOURCES(${outfile})
|
|
ENDMACRO(LIBUHD_PYTHON_GEN_SOURCE)
|
|
|
|
MACRO(INCLUDE_SUBDIRECTORY subdir)
|
|
#insert the current directories on the front of the list
|
|
LIST(INSERT _cmake_source_dirs 0 ${CMAKE_CURRENT_SOURCE_DIR})
|
|
LIST(INSERT _cmake_binary_dirs 0 ${CMAKE_CURRENT_BINARY_DIR})
|
|
|
|
#set the current directories to the names of the subdirs
|
|
SET(CMAKE_CURRENT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/${subdir})
|
|
SET(CMAKE_CURRENT_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${subdir})
|
|
|
|
#include the subdirectory CMakeLists to run it
|
|
FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
|
INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt)
|
|
|
|
#reset the value of the current directories
|
|
LIST(GET _cmake_source_dirs 0 CMAKE_CURRENT_SOURCE_DIR)
|
|
LIST(GET _cmake_binary_dirs 0 CMAKE_CURRENT_BINARY_DIR)
|
|
|
|
#pop the subdir names of the front of the list
|
|
LIST(REMOVE_AT _cmake_source_dirs 0)
|
|
LIST(REMOVE_AT _cmake_binary_dirs 0)
|
|
ENDMACRO(INCLUDE_SUBDIRECTORY)
|
|
|
|
########################################################################
|
|
# Register lower level components
|
|
########################################################################
|
|
MESSAGE(STATUS "")
|
|
# Dependencies
|
|
FIND_PACKAGE(USB1)
|
|
FIND_PACKAGE(GPSD)
|
|
FIND_PACKAGE(LIBERIO)
|
|
FIND_PACKAGE(DPDK)
|
|
LIBUHD_REGISTER_COMPONENT("LIBERIO" ENABLE_LIBERIO ON "ENABLE_LIBUHD;LIBERIO_FOUND" OFF OFF)
|
|
LIBUHD_REGISTER_COMPONENT("USB" ENABLE_USB ON "ENABLE_LIBUHD;LIBUSB_FOUND" OFF OFF)
|
|
LIBUHD_REGISTER_COMPONENT("GPSD" ENABLE_GPSD OFF "ENABLE_LIBUHD;ENABLE_GPSD;LIBGPS_FOUND" OFF OFF)
|
|
# Devices
|
|
LIBUHD_REGISTER_COMPONENT("B100" ENABLE_B100 ON "ENABLE_LIBUHD;ENABLE_USB" OFF OFF)
|
|
LIBUHD_REGISTER_COMPONENT("B200" ENABLE_B200 ON "ENABLE_LIBUHD;ENABLE_USB" OFF OFF)
|
|
LIBUHD_REGISTER_COMPONENT("E300" ENABLE_E300 OFF "ENABLE_LIBUHD" OFF OFF)
|
|
LIBUHD_REGISTER_COMPONENT("USRP1" ENABLE_USRP1 ON "ENABLE_LIBUHD;ENABLE_USB" OFF OFF)
|
|
LIBUHD_REGISTER_COMPONENT("USRP2" ENABLE_USRP2 ON "ENABLE_LIBUHD" OFF OFF)
|
|
LIBUHD_REGISTER_COMPONENT("X300" ENABLE_X300 ON "ENABLE_LIBUHD" OFF OFF)
|
|
LIBUHD_REGISTER_COMPONENT("N230" ENABLE_N230 ON "ENABLE_LIBUHD" OFF OFF)
|
|
LIBUHD_REGISTER_COMPONENT("MPMD" ENABLE_MPMD ON "ENABLE_LIBUHD" OFF OFF)
|
|
LIBUHD_REGISTER_COMPONENT("N300" ENABLE_N300 ON "ENABLE_LIBUHD;ENABLE_MPMD" OFF OFF)
|
|
# LIBUHD_REGISTER_COMPONENT("N320" ENABLE_N320 ON "ENABLE_LIBUHD;ENABLE_MPMD" OFF OFF)
|
|
LIBUHD_REGISTER_COMPONENT("E320" ENABLE_E320 ON "ENABLE_LIBUHD;ENABLE_MPMD" OFF OFF)
|
|
LIBUHD_REGISTER_COMPONENT("OctoClock" ENABLE_OCTOCLOCK ON "ENABLE_LIBUHD" OFF OFF)
|
|
LIBUHD_REGISTER_COMPONENT("DPDK" ENABLE_DPDK ON "ENABLE_MPMD;DPDK_FOUND" OFF OFF)
|
|
|
|
########################################################################
|
|
# Include subdirectories (different than add)
|
|
########################################################################
|
|
INCLUDE_SUBDIRECTORY(include)
|
|
INCLUDE_SUBDIRECTORY(ic_reg_maps)
|
|
INCLUDE_SUBDIRECTORY(types)
|
|
INCLUDE_SUBDIRECTORY(convert)
|
|
INCLUDE_SUBDIRECTORY(rfnoc)
|
|
INCLUDE_SUBDIRECTORY(cal)
|
|
INCLUDE_SUBDIRECTORY(usrp)
|
|
INCLUDE_SUBDIRECTORY(usrp_clock)
|
|
INCLUDE_SUBDIRECTORY(utils)
|
|
INCLUDE_SUBDIRECTORY(experts)
|
|
INCLUDE_SUBDIRECTORY(transport)
|
|
|
|
########################################################################
|
|
# Build info
|
|
########################################################################
|
|
INCLUDE(UHDBuildInfo)
|
|
UHD_LOAD_BUILD_INFO()
|
|
CONFIGURE_FILE(
|
|
${CMAKE_CURRENT_SOURCE_DIR}/build_info.cpp
|
|
${CMAKE_CURRENT_BINARY_DIR}/build_info.cpp
|
|
@ONLY)
|
|
|
|
########################################################################
|
|
# Setup UHD_VERSION_STRING for version.cpp
|
|
########################################################################
|
|
CONFIGURE_FILE(
|
|
${CMAKE_CURRENT_SOURCE_DIR}/version.cpp
|
|
${CMAKE_CURRENT_BINARY_DIR}/version.cpp
|
|
@ONLY)
|
|
|
|
########################################################################
|
|
# Append to the list of sources for lib uhd
|
|
########################################################################
|
|
LIBUHD_APPEND_SOURCES(
|
|
${CMAKE_CURRENT_BINARY_DIR}/build_info.cpp
|
|
${CMAKE_CURRENT_SOURCE_DIR}/deprecated.cpp
|
|
${CMAKE_CURRENT_SOURCE_DIR}/device.cpp
|
|
${CMAKE_CURRENT_SOURCE_DIR}/device3.cpp
|
|
${CMAKE_CURRENT_SOURCE_DIR}/image_loader.cpp
|
|
${CMAKE_CURRENT_SOURCE_DIR}/stream.cpp
|
|
${CMAKE_CURRENT_SOURCE_DIR}/exception.cpp
|
|
${CMAKE_CURRENT_SOURCE_DIR}/property_tree.cpp
|
|
${CMAKE_CURRENT_BINARY_DIR}/version.cpp
|
|
)
|
|
|
|
IF(ENABLE_C_API)
|
|
LIBUHD_APPEND_SOURCES(
|
|
${CMAKE_CURRENT_SOURCE_DIR}/error_c.cpp
|
|
)
|
|
ENDIF(ENABLE_C_API)
|
|
|
|
########################################################################
|
|
# Add DLL resource file to Windows build
|
|
########################################################################
|
|
IF(MSVC)
|
|
MATH(EXPR RC_VERSION_MAJOR_API "${UHD_VERSION_MAJOR} * 1000 + ${UHD_VERSION_API}")
|
|
SET(RC_VERSION_PATCH ${UHD_VERSION_PATCH})
|
|
IF(UHD_VERSION_DEVEL)
|
|
SET(RC_VERSION_PATCH "999")
|
|
ENDIF(UHD_VERSION_DEVEL)
|
|
|
|
# Allow a custom .rc template file to be used
|
|
IF(CUSTOM_RC_FILE)
|
|
IF(IS_ABSOLUTE "${CUSTOM_RC_FILE}")
|
|
SET(UHD_RC_IN "${CUSTOM_RC_FILE}")
|
|
ELSE()
|
|
SET(UHD_RC_IN "${CMAKE_BINARY_DIR}/${CUSTOM_RC_FILE}")
|
|
ENDIF(IS_ABSOLUTE "${CUSTOM_RC_FILE}")
|
|
MESSAGE(STATUS "")
|
|
MESSAGE(STATUS "Using custom RC template: ${UHD_RC_IN}")
|
|
MESSAGE(STATUS "")
|
|
ELSE()
|
|
SET(UHD_RC_IN "${CMAKE_CURRENT_SOURCE_DIR}/uhd.rc.in")
|
|
ENDIF(CUSTOM_RC_FILE)
|
|
SET(UHD_RC_IN ${UHD_RC_IN} CACHE STRING "uhd.rc template filepath")
|
|
|
|
CONFIGURE_FILE(
|
|
${UHD_RC_IN}
|
|
${CMAKE_CURRENT_BINARY_DIR}/uhd.rc
|
|
@ONLY)
|
|
|
|
LIST(APPEND libuhd_sources ${CMAKE_CURRENT_BINARY_DIR}/uhd.rc)
|
|
ENDIF(MSVC)
|
|
|
|
########################################################################
|
|
# Setup libuhd library
|
|
########################################################################
|
|
IF(ENABLE_MPMD)
|
|
INCLUDE_DIRECTORIES(deps/rpclib/include)
|
|
ADD_SUBDIRECTORY(deps)
|
|
LIST(APPEND libuhd_sources $<TARGET_OBJECTS:uhd_rpclib>)
|
|
ENDIF()
|
|
ADD_LIBRARY(uhd SHARED ${libuhd_sources})
|
|
TARGET_LINK_LIBRARIES(uhd ${Boost_LIBRARIES} ${libuhd_libs})
|
|
SET_TARGET_PROPERTIES(uhd PROPERTIES DEFINE_SYMBOL "UHD_DLL_EXPORTS")
|
|
IF(NOT LIBUHDDEV_PKG)
|
|
SET_TARGET_PROPERTIES(uhd PROPERTIES SOVERSION "${UHD_ABI_VERSION}")
|
|
SET_TARGET_PROPERTIES(uhd PROPERTIES VERSION "${UHD_ABI_VERSION}")
|
|
ENDIF(NOT LIBUHDDEV_PKG)
|
|
IF(DEFINED LIBUHD_OUTPUT_NAME)
|
|
SET_TARGET_PROPERTIES(uhd PROPERTIES OUTPUT_NAME ${LIBUHD_OUTPUT_NAME})
|
|
ENDIF(DEFINED LIBUHD_OUTPUT_NAME)
|
|
|
|
IF(NOT UHDHOST_PKG) #Syntax makes it unusable by UHD_INSTALL
|
|
INSTALL(TARGETS uhd
|
|
LIBRARY DESTINATION ${LIBRARY_DIR} COMPONENT libraries # .so file
|
|
ARCHIVE DESTINATION ${LIBRARY_DIR} COMPONENT libraries # .lib file
|
|
RUNTIME DESTINATION ${RUNTIME_DIR} COMPONENT libraries # .dll file
|
|
)
|
|
ENDIF(NOT UHDHOST_PKG)
|
|
|
|
#######################################################
|
|
# Setup libuhd library (static)
|
|
#######################################################
|
|
IF(ENABLE_STATIC_LIBS)
|
|
ADD_LIBRARY(uhd_static STATIC ${libuhd_sources})
|
|
SET_TARGET_PROPERTIES(uhd_static PROPERTIES OUTPUT_NAME uhd)
|
|
SET_TARGET_PROPERTIES(uhd_static PROPERTIES COMPILE_DEFINITIONS UHD_STATIC_LIB)
|
|
INSTALL(TARGETS uhd_static
|
|
ARCHIVE DESTINATION lib${LIB_SUFFIX} # .lib or .a file
|
|
)
|
|
ENDIF(ENABLE_STATIC_LIBS)
|