diff options
Diffstat (limited to 'tools/dissectors/CMakeLists.txt')
-rw-r--r-- | tools/dissectors/CMakeLists.txt | 191 |
1 files changed, 109 insertions, 82 deletions
diff --git a/tools/dissectors/CMakeLists.txt b/tools/dissectors/CMakeLists.txt index 9f63a356a..6d835aa48 100644 --- a/tools/dissectors/CMakeLists.txt +++ b/tools/dissectors/CMakeLists.txt @@ -1,106 +1,133 @@ # Copyright 2010-2013 Ettus Research LLC -# -# GNU Radio is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3, or (at your option) -# any later version. -# -# GNU Radio 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 General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Radio; see the file COPYING. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, -# Boston, MA 02110-1301, USA. +# Copyright 2019 Ettus Research, a National Instruments brand +# +# SPDX-License-Identifier: GPL-3.0-or-later +# +cmake_minimum_required(VERSION 3.1) +cmake_policy(SET CMP0048 NEW) +project(EttusDissectors VERSION 4.0.0 DESCRIPTION "Dissector Plugins" LANGUAGES C CXX) + +list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Modules) +set(UHD_HOST_ROOT ${CMAKE_SOURCE_DIR}/../../host) ######################################################################## -# Project setup +# useful macros ######################################################################## -cmake_minimum_required(VERSION 2.8) -project(ettus-dissector C) -enable_testing() +include(WSComponent) -#select the release build type by default to get optimization flags -if(NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE "Release") - message(STATUS "Build type not specified: defaulting to release.") -endif(NOT CMAKE_BUILD_TYPE) -set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "") +set(PLUGIN_C_GENERATOR ${CMAKE_SOURCE_DIR}/make-plugin-reg.py) +macro(register_plugin_files _outputfile _registertype) -list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Modules) + add_custom_command( + OUTPUT ${_outputfile} + DEPENDS ${ARGN} ${PLUGIN_C_GENERATOR} + COMMAND ${PYTHON_EXECUTABLE} + ${PLUGIN_C_GENERATOR} + ${CMAKE_CURRENT_SOURCE_DIR} + ${_registertype} + ${ARGN} + COMMENT "Generating ${_outputfile}" + ) + +endmacro(register_plugin_files) + +# Plugin name and version info (major minor micro extra) +macro(SET_MODULE_INFO _plugin _ver_major _ver_minor _ver_micro _ver_extra) + if(WIN32) + # Create the Windows .rc file for the plugin. + set(MODULE_NAME ${_plugin}) + set(MODULE_VERSION_MAJOR ${_ver_major}) + set(MODULE_VERSION_MINOR ${_ver_minor}) + set(MODULE_VERSION_MICRO ${_ver_micro}) + set(MODULE_VERSION_EXTRA ${_ver_extra}) + set(MODULE_VERSION "${MODULE_VERSION_MAJOR}.${MODULE_VERSION_MINOR}.${MODULE_VERSION_MICRO}.${MODULE_VERSION_EXTRA}") + set(RC_MODULE_VERSION "${MODULE_VERSION_MAJOR},${MODULE_VERSION_MINOR},${MODULE_VERSION_MICRO},${MODULE_VERSION_EXTRA}") + + set(MSVC_VARIANT "${CMAKE_GENERATOR}") + + # Create the plugin.rc file from the template + set(_plugin_rc_in ${CMAKE_CURRENT_SOURCE_DIR}/plugin.rc.in) + configure_file(${_plugin_rc_in} plugin.rc @ONLY) + set(PLUGIN_RC_FILE ${CMAKE_CURRENT_BINARY_DIR}/plugin.rc) + endif() + + set(PLUGIN_VERSION "${_ver_major}.${_ver_minor}.${_ver_micro}") + add_definitions(-DPLUGIN_VERSION=\"${PLUGIN_VERSION}\") + add_definitions(-DVERSION_MAJOR=${Wireshark_VERSION_MAJOR}) + add_definitions(-DVERSION_MINOR=${Wireshark_VERSION_MINOR}) +endmacro() + +macro(ADD_PLUGIN_LIBRARY _plugin _subfolder) + add_library(${_plugin} MODULE + ${PLUGIN_FILES} + ${PLUGIN_RC_FILE} + ) + + set_target_properties(${_plugin} PROPERTIES + PREFIX "" + LINK_FLAGS "${WS_LINK_FLAGS}" + FOLDER "Plugins" + ) + + set_target_properties(${_plugin} PROPERTIES + LIBRARY_OUTPUT_DIRECTORY ${_subfolder} + INSTALL_RPATH "" + ) +endmacro() + +macro(INSTALL_PLUGIN _plugin _subfolder) + install(TARGETS ${_plugin} + LIBRARY DESTINATION ${_subfolder} NAMELINK_SKIP + ) + #LIBRARY DESTINATION ${Wireshark_PLUGIN_INSTALL_DIR}/${_subfolder} NAMELINK_SKIP + #RUNTIME DESTINATION ${Wireshark_PLUGIN_INSTALL_DIR} + #ARCHIVE DESTINATION ${Wireshark_PLUGIN_INSTALL_DIR} +endmacro() -######################################################################## -# Compiler specific setup -######################################################################## -#if(CMAKE_COMPILER_IS_GNUC AND NOT WIN32) -# #http://gcc.gnu.org/wiki/Visibility -# add_definitions(-fvisibility=visible) -#endif() +find_package(Wireshark CONFIG REQUIRED) find_package(GLIB2) -if(NOT GLIB2_FOUND) - message(FATAL_ERROR "Glib not found") -endif() -find_package(Wireshark) -if(NOT WIRESHARK_FOUND) - message(FATAL_ERROR "Wireshark dev package not found") +if(NOT Wireshark_PLUGINS_ENABLED) + message(FATAL_ERROR "Wireshark was compiled without support for plugins") endif() +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX ${Wireshark_PLUGIN_INSTALL_DIR} + CACHE + PATH + "Default installation path for plugins" + FORCE + ) +endif(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + +set(UHD_INCLUDE_DIR "${UHD_HOST_ROOT}/include") +set(UHDLIB_INCLUDE_DIR "${UHD_HOST_ROOT}/lib/include") -######################################################################## -# Setup the include and linker paths -######################################################################## include_directories( - ${CMAKE_BINARY_DIR} - ${CMAKE_SOURCE_DIR} + ${UHD_INCLUDE_DIR} + ${UHDLIB_INCLUDE_DIR} ${GLIB2_INCLUDE_DIRS} - ${WIRESHARK_INCLUDE_DIRS} + ${Wireshark_INCLUDE_DIR} ) -set(CMAKE_INSTALL_LIBDIR ~/.wireshark) - -# Set component parameters -set(ETTUS_DISSECTOR_INCLUDE_DIRS ${CMAKE_SOURCE_DIR} CACHE INTERNAL "" FORCE) -set(ETTUS_DISSECTOR_NAME "chdr" CACHE STRING "Select a dissector to build") +WS_REGISTER_COMPONENT("RFNoC" ENABLE_RFNOC ON "" OFF ON) +WS_REGISTER_COMPONENT("Octoclock" ENABLE_OCTOCLOCK ON "" OFF OFF) +WS_REGISTER_COMPONENT("ZPU" ENABLE_ZPU ON "" OFF OFF) -function(generate_ettus_dissector DISSECTOR_NAME) - - set(ETTUS_PLUGIN_SRC ${CMAKE_SOURCE_DIR}/packet-${DISSECTOR_NAME}.c) - - configure_file( - ${CMAKE_CURRENT_SOURCE_DIR}/moduleinfo.h.in - ${CMAKE_BINARY_DIR}/moduleinfo.h - ) +if(ENABLE_RFNOC) + add_subdirectory(epan/rfnoc) +endif(ENABLE_RFNOC) - set(PLUGIN_C_GENERATOR ${CMAKE_SOURCE_DIR}/make-dissector-reg.py) - set(PLUGIN_C plugin.c) - - add_custom_command( - OUTPUT ${PLUGIN_C} - DEPENDS ${ETTUS_PLUGIN_SRC} - COMMAND ${PLUGIN_C_GENERATOR} ${CMAKE_SOURCE_DIR} plugin ${ETTUS_PLUGIN_SRC} - COMMENT "Generating ${PLUGIN_C}" - ) - - set(ETTUS_TARGET_NAME "${DISSECTOR_NAME}-plugin") - add_library(${ETTUS_TARGET_NAME} MODULE - ${PLUGIN_C} - moduleinfo.h - ${ETTUS_PLUGIN_SRC} - ) - set_target_properties(${ETTUS_TARGET_NAME} PROPERTIES PREFIX "") - set_target_properties(${ETTUS_TARGET_NAME} PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}") - target_link_libraries(${ETTUS_TARGET_NAME} wireshark) +if(ENABLE_OCTOCLOCK) + add_subdirectory(epan/octoclock) +endif(ENABLE_OCTOCLOCK) - install(TARGETS ${ETTUS_TARGET_NAME} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/plugins NAMELINK_SKIP - ) +if(ENABLE_ZPU) + add_subdirectory(epan/zpu) +endif(ENABLE_ZPU) -endfunction(generate_ettus_dissector) +WS_PRINT_COMPONENT_SUMMARY() -generate_ettus_dissector("${ETTUS_DISSECTOR_NAME}") |