|
From d49e5ea2988b2086c7deaa40d3e077531e449844 Mon Sep 17 00:00:00 2001
|
|
From: Xue Liu <liuxuenetmail@gmail.com>
|
|
Date: Thu, 21 Feb 2019 00:27:42 +0100
|
|
Subject: [PATCH 1/3] - add cmake support
|
|
|
|
Signed-off-by: Xue Liu <liuxuenetmail@gmail.com>
|
|
---
|
|
CMakeLists.txt | 77 +++++++++++++++
|
|
cmake/loragw-config.cmake | 1 +
|
|
libloragw/CMakeLists.txt | 150 ++++++++++++++++++++++++++++++
|
|
libloragw/loragw.pc.in | 10 ++
|
|
libloragw/loragw_config.h.in | 14 +++
|
|
util_lbt_test/CMakeLists.txt | 23 +++++
|
|
util_pkt_logger/CMakeLists.txt | 29 ++++++
|
|
util_spectral_scan/CMakeLists.txt | 23 +++++
|
|
util_spi_stress/CMakeLists.txt | 23 +++++
|
|
util_tx_continuous/CMakeLists.txt | 23 +++++
|
|
util_tx_test/CMakeLists.txt | 23 +++++
|
|
11 files changed, 396 insertions(+)
|
|
create mode 100644 CMakeLists.txt
|
|
create mode 100644 cmake/loragw-config.cmake
|
|
create mode 100644 libloragw/CMakeLists.txt
|
|
create mode 100644 libloragw/loragw.pc.in
|
|
create mode 100644 libloragw/loragw_config.h.in
|
|
create mode 100644 util_lbt_test/CMakeLists.txt
|
|
create mode 100644 util_pkt_logger/CMakeLists.txt
|
|
create mode 100644 util_spectral_scan/CMakeLists.txt
|
|
create mode 100644 util_spi_stress/CMakeLists.txt
|
|
create mode 100644 util_tx_continuous/CMakeLists.txt
|
|
create mode 100644 util_tx_test/CMakeLists.txt
|
|
|
|
--- /dev/null
|
|
+++ b/CMakeLists.txt
|
|
@@ -0,0 +1,77 @@
|
|
+# -- Minimum required version
|
|
+cmake_minimum_required (VERSION 3.2)
|
|
+
|
|
+# -- Project name
|
|
+project (lora_gateway)
|
|
+
|
|
+# -- Various includes
|
|
+include (CMakePackageConfigHelpers)
|
|
+include (GNUInstallDirs)
|
|
+include (CheckFunctionExists)
|
|
+
|
|
+# -- set c99 standard default
|
|
+set(CMAKE_C_STANDARD 99)
|
|
+
|
|
+# -- options for shared lib (defaults off)
|
|
+option(lora_gateway_build_shared_libs "build as a shared library" OFF)
|
|
+set(BUILD_SHARED_LIBS ${lora_gateway_build_shared_libs})
|
|
+
|
|
+# -- Required to build
|
|
+set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
|
|
+set(THREADS_PREFER_PTHREAD_FLAG TRUE)
|
|
+find_package(Threads REQUIRED)
|
|
+
|
|
+# -- Versioning with git tag
|
|
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git)
|
|
+ execute_process(
|
|
+ COMMAND git describe --tags --always
|
|
+ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
|
+ OUTPUT_VARIABLE "lora_gateway_VERSION"
|
|
+ ERROR_QUIET
|
|
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
+ if(lora_gateway_VERSION STREQUAL "")
|
|
+ set(lora_gateway_VERSION 0)
|
|
+ endif(lora_gateway_VERSION STREQUAL "")
|
|
+ message( STATUS "Git full version: ${lora_gateway_VERSION}" )
|
|
+ execute_process(
|
|
+ COMMAND /bin/bash -c "git describe --tags --abbrev=0 | cut --delimiter='v' --fields=2"
|
|
+ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
|
+ OUTPUT_VARIABLE "lora_gateway_VERSION_SHORT"
|
|
+ ERROR_QUIET
|
|
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
+ if(lora_gateway_VERSION_SHORT STREQUAL "")
|
|
+ set(lora_gateway_VERSION_SHORT 0)
|
|
+ endif(lora_gateway_VERSION_SHORT STREQUAL "")
|
|
+ message( STATUS "Git version: ${lora_gateway_VERSION_SHORT}" )
|
|
+else(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git)
|
|
+ set(lora_gateway_VERSION_SHORT 0)
|
|
+ set(lora_gateway_VERSION 0)
|
|
+endif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git)
|
|
+
|
|
+# when building, don't use the install RPATH already
|
|
+# (but later on when installing)
|
|
+SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
|
|
+if (NOT (${CMAKE_INSTALL_PREFIX} STREQUAL "/usr" ) )
|
|
+ SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
|
|
+endif()
|
|
+
|
|
+# -- add the core library
|
|
+add_subdirectory(libloragw)
|
|
+
|
|
+# -- add util_lbt_test
|
|
+add_subdirectory(util_lbt_test)
|
|
+
|
|
+# -- add util_pkt_logger
|
|
+add_subdirectory(util_pkt_logger)
|
|
+
|
|
+# -- add util_pkt_logger
|
|
+add_subdirectory(util_spectral_scan)
|
|
+
|
|
+# -- add util_spi_stress
|
|
+add_subdirectory(util_spi_stress)
|
|
+
|
|
+# -- add util_tx_continuous
|
|
+add_subdirectory(util_tx_continuous)
|
|
+
|
|
+# -- add util_tx_test
|
|
+add_subdirectory(util_tx_test)
|
|
--- /dev/null
|
|
+++ b/cmake/loragw-config.cmake
|
|
@@ -0,0 +1 @@
|
|
+include("${CMAKE_CURRENT_LIST_DIR}/loragw-targets.cmake")
|
|
--- /dev/null
|
|
+++ b/libloragw/CMakeLists.txt
|
|
@@ -0,0 +1,150 @@
|
|
+set(TARGET loragw)
|
|
+
|
|
+add_library(${TARGET} "")
|
|
+
|
|
+# -- add additional debug options
|
|
+# Set the DEBUG_* to 1 to activate debug mode in individual modules.
|
|
+# Warning: that makes the module *very verbose*, do not use for production
|
|
+option(DEBUG_AUX "Active debug mode in AUX module" OFF)
|
|
+option(DEBUG_SPI "Active debug mode in SPI module" OFF)
|
|
+option(DEBUG_REG "Active debug mode in REG module" OFF)
|
|
+option(DEBUG_HAL "Active debug mode in HAL module" OFF)
|
|
+option(DEBUG_GPIO "Active debug mode in GPIO module" OFF)
|
|
+option(DEBUG_LBT "Active debug mode in LBT module" OFF)
|
|
+option(DEBUG_GPS "Active debug mode in GPS module" OFF)
|
|
+
|
|
+message("-- Build with debug AUX: ${DEBUG_AUX}")
|
|
+message("-- Build with debug SPI: ${DEBUG_SPI}")
|
|
+message("-- Build with debug REG: ${DEBUG_REG}")
|
|
+message("-- Build with debug HAL: ${DEBUG_HAL}")
|
|
+message("-- Build with debug GPIO: ${DEBUG_GPIO}")
|
|
+message("-- Build with debug LBT: ${DEBUG_LBT}")
|
|
+message("-- Build with debug GPS: ${DEBUG_GPS}")
|
|
+
|
|
+# -- add the compile options
|
|
+target_compile_options(
|
|
+ ${TARGET}
|
|
+ PRIVATE
|
|
+ -Werror
|
|
+ -Wall
|
|
+ -Wextra
|
|
+)
|
|
+
|
|
+target_sources(${TARGET}
|
|
+ PRIVATE
|
|
+ ${CMAKE_CURRENT_LIST_DIR}/src/loragw_aux.c
|
|
+ ${CMAKE_CURRENT_LIST_DIR}/src/loragw_fpga.c
|
|
+ ${CMAKE_CURRENT_LIST_DIR}/src/loragw_gps.c
|
|
+ ${CMAKE_CURRENT_LIST_DIR}/src/loragw_hal.c
|
|
+ ${CMAKE_CURRENT_LIST_DIR}/src/loragw_lbt.c
|
|
+ ${CMAKE_CURRENT_LIST_DIR}/src/loragw_radio.c
|
|
+ ${CMAKE_CURRENT_LIST_DIR}/src/loragw_reg.c
|
|
+ ${CMAKE_CURRENT_LIST_DIR}/src/loragw_spi.native.c
|
|
+)
|
|
+
|
|
+# -- add the public headers
|
|
+set (${TARGET}_PUBLIC_HEADERS
|
|
+ ${CMAKE_CURRENT_LIST_DIR}/inc/loragw_aux.h
|
|
+ ${CMAKE_CURRENT_LIST_DIR}/inc/loragw_fpga.h
|
|
+ ${CMAKE_CURRENT_LIST_DIR}/inc/loragw_gps.h
|
|
+ ${CMAKE_CURRENT_LIST_DIR}/inc/loragw_hal.h
|
|
+ ${CMAKE_CURRENT_LIST_DIR}/inc/loragw_lbt.h
|
|
+ ${CMAKE_CURRENT_LIST_DIR}/inc/loragw_radio.h
|
|
+ ${CMAKE_CURRENT_LIST_DIR}/inc/loragw_reg.h
|
|
+)
|
|
+
|
|
+target_include_directories(${TARGET}
|
|
+ PRIVATE
|
|
+ ${CMAKE_CURRENT_LIST_DIR}
|
|
+ ${CMAKE_CURRENT_LIST_DIR}/inc
|
|
+ PUBLIC
|
|
+ $<INSTALL_INTERFACE:include>
|
|
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
|
|
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/inc>
|
|
+)
|
|
+
|
|
+configure_file(${CMAKE_CURRENT_LIST_DIR}/${TARGET}_config.h.in "${CMAKE_CURRENT_BINARY_DIR}/config.h" @ONLY)
|
|
+
|
|
+target_link_libraries(${TARGET}
|
|
+ PUBLIC
|
|
+ Threads::Threads
|
|
+ m
|
|
+)
|
|
+
|
|
+set_target_properties(${TARGET} PROPERTIES VERSION ${lora_gateway_VERSION_SHORT})
|
|
+set_target_properties(${TARGET} PROPERTIES SOVERSION ${lora_gateway_VERSION_SHORT})
|
|
+set_target_properties(${TARGET} PROPERTIES PUBLIC_HEADER "${CMAKE_CURRENT_BINARY_DIR}/config.h;${${TARGET}_PUBLIC_HEADERS}")
|
|
+
|
|
+# -- add the install targets
|
|
+install (TARGETS ${TARGET}
|
|
+ EXPORT ${TARGET}_targets
|
|
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT shlib
|
|
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
+ PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${TARGET}
|
|
+ INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${TARGET}
|
|
+)
|
|
+
|
|
+# -- add pkg config file
|
|
+configure_file ("${CMAKE_CURRENT_LIST_DIR}/${TARGET}.pc.in" "${PROJECT_BINARY_DIR}/${TARGET}.pc" @ONLY)
|
|
+install (FILES ${PROJECT_BINARY_DIR}/${TARGET}.pc DESTINATION lib/pkgconfig)
|
|
+
|
|
+# -- write cmake package config file
|
|
+write_basic_package_version_file(
|
|
+ "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}/${TARGET}-config-version.cmake"
|
|
+ VERSION ${lora_gateway_VERSION}
|
|
+ COMPATIBILITY AnyNewerVersion
|
|
+)
|
|
+
|
|
+export(EXPORT ${TARGET}_targets
|
|
+ FILE "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}/${TARGET}-targets.cmake"
|
|
+ NAMESPACE Semtech::
|
|
+)
|
|
+
|
|
+configure_file(${PROJECT_SOURCE_DIR}/cmake/${TARGET}-config.cmake
|
|
+ "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}/${TARGET}-config.cmake"
|
|
+ COPYONLY
|
|
+)
|
|
+
|
|
+set(ConfigPackageLocation lib/cmake/${TARGET})
|
|
+
|
|
+install(EXPORT ${TARGET}_targets
|
|
+ FILE ${TARGET}-targets.cmake
|
|
+ NAMESPACE Semtech::
|
|
+ DESTINATION ${ConfigPackageLocation}
|
|
+)
|
|
+
|
|
+install(
|
|
+ FILES ${PROJECT_SOURCE_DIR}/cmake/${TARGET}-config.cmake "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}/${TARGET}-config-version.cmake"
|
|
+ DESTINATION ${ConfigPackageLocation}
|
|
+ COMPONENT Devel
|
|
+)
|
|
+
|
|
+# -- add test programs
|
|
+foreach(TEST test_loragw_spi test_loragw_gps test_loragw_reg test_loragw_hal test_loragw_cal)
|
|
+ add_executable(${TEST} "")
|
|
+
|
|
+ target_sources(${TEST}
|
|
+ PRIVATE
|
|
+ ${CMAKE_CURRENT_LIST_DIR}/tst/${TEST}.c
|
|
+ )
|
|
+
|
|
+ target_include_directories(${TEST}
|
|
+ PRIVATE
|
|
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
|
+ $<INSTALL_INTERFACE:include>
|
|
+ ${CMAKE_CURRENT_LIST_DIR}/inc
|
|
+ ${CMAKE_CURRENT_BINARY_DIR}
|
|
+ )
|
|
+
|
|
+ target_link_libraries(${TEST}
|
|
+ PRIVATE
|
|
+ loragw
|
|
+ )
|
|
+
|
|
+ install (
|
|
+ TARGETS ${TEST}
|
|
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
+ )
|
|
+
|
|
+endforeach()
|
|
+
|
|
--- /dev/null
|
|
+++ b/libloragw/loragw.pc.in
|
|
@@ -0,0 +1,10 @@
|
|
+prefix=@CMAKE_INSTALL_PREFIX@
|
|
+exec_prefix=${prefix}/bin
|
|
+includedir=${prefix}/include/libloragw
|
|
+libdir=${prefix}/lib
|
|
+
|
|
+Name: LIBLORAGW
|
|
+Description: BLANK_TEXT
|
|
+Version: @lora_gateway_VERSION@
|
|
+Cflags: -I${includedir}
|
|
+Libs: -L${libdir} -lloragw
|
|
--- /dev/null
|
|
+++ b/libloragw/loragw_config.h.in
|
|
@@ -0,0 +1,14 @@
|
|
+#ifndef _LORAGW_CONFIGURATION_H
|
|
+#define _LORAGW_CONFIGURATION_H
|
|
+
|
|
+#define LIBLORAGW_VERSION "@lora_gateway_VERSION_SHORT@"
|
|
+
|
|
+#cmakedefine01 DEBUG_AUX
|
|
+#cmakedefine01 DEBUG_SPI
|
|
+#cmakedefine01 DEBUG_REG
|
|
+#cmakedefine01 DEBUG_HAL
|
|
+#cmakedefine01 DEBUG_GPS
|
|
+#cmakedefine01 DEBUG_GPIO
|
|
+#cmakedefine01 DEBUG_LBT
|
|
+
|
|
+#endif
|
|
--- /dev/null
|
|
+++ b/util_lbt_test/CMakeLists.txt
|
|
@@ -0,0 +1,23 @@
|
|
+
|
|
+add_executable(util_lbt_test "")
|
|
+target_sources(util_lbt_test
|
|
+ PRIVATE
|
|
+ ${CMAKE_CURRENT_LIST_DIR}/src/util_lbt_test.c
|
|
+)
|
|
+
|
|
+target_link_libraries(util_lbt_test
|
|
+ PUBLIC
|
|
+ loragw
|
|
+)
|
|
+
|
|
+set_target_properties(util_lbt_test PROPERTIES
|
|
+ RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
|
|
+)
|
|
+
|
|
+# add the install targets
|
|
+install (
|
|
+ TARGETS util_lbt_test
|
|
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT shlib
|
|
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
+)
|
|
--- /dev/null
|
|
+++ b/util_pkt_logger/CMakeLists.txt
|
|
@@ -0,0 +1,29 @@
|
|
+
|
|
+add_executable(util_pkt_logger "")
|
|
+target_sources(util_pkt_logger
|
|
+ PRIVATE
|
|
+ ${CMAKE_CURRENT_LIST_DIR}/src/util_pkt_logger.c
|
|
+ ${CMAKE_CURRENT_LIST_DIR}/src/parson.c
|
|
+)
|
|
+
|
|
+target_include_directories(util_pkt_logger
|
|
+ PRIVATE
|
|
+ ${CMAKE_CURRENT_LIST_DIR}/inc
|
|
+)
|
|
+
|
|
+target_link_libraries(util_pkt_logger
|
|
+ PUBLIC
|
|
+ loragw
|
|
+)
|
|
+
|
|
+set_target_properties(util_pkt_logger PROPERTIES
|
|
+ RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
|
|
+)
|
|
+
|
|
+# add the install targets
|
|
+install (
|
|
+ TARGETS util_pkt_logger
|
|
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT shlib
|
|
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
+)
|
|
--- /dev/null
|
|
+++ b/util_spectral_scan/CMakeLists.txt
|
|
@@ -0,0 +1,23 @@
|
|
+
|
|
+add_executable(util_spectral_scan "")
|
|
+target_sources(util_spectral_scan
|
|
+ PRIVATE
|
|
+ ${CMAKE_CURRENT_LIST_DIR}/src/util_spectral_scan.c
|
|
+)
|
|
+
|
|
+target_link_libraries(util_spectral_scan
|
|
+ PUBLIC
|
|
+ loragw
|
|
+)
|
|
+
|
|
+set_target_properties(util_spectral_scan PROPERTIES
|
|
+ RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
|
|
+)
|
|
+
|
|
+# add the install targets
|
|
+install (
|
|
+ TARGETS util_spectral_scan
|
|
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT shlib
|
|
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
+)
|
|
--- /dev/null
|
|
+++ b/util_spi_stress/CMakeLists.txt
|
|
@@ -0,0 +1,23 @@
|
|
+
|
|
+add_executable(util_spi_stress "")
|
|
+target_sources(util_spi_stress
|
|
+ PRIVATE
|
|
+ ${CMAKE_CURRENT_LIST_DIR}/src/util_spi_stress.c
|
|
+)
|
|
+
|
|
+target_link_libraries(util_spi_stress
|
|
+ PUBLIC
|
|
+ loragw
|
|
+)
|
|
+
|
|
+set_target_properties(util_spi_stress PROPERTIES
|
|
+ RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
|
|
+)
|
|
+
|
|
+# add the install targets
|
|
+install (
|
|
+ TARGETS util_spi_stress
|
|
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT shlib
|
|
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
+)
|
|
--- /dev/null
|
|
+++ b/util_tx_continuous/CMakeLists.txt
|
|
@@ -0,0 +1,23 @@
|
|
+
|
|
+add_executable(util_tx_continuous "")
|
|
+target_sources(util_tx_continuous
|
|
+ PRIVATE
|
|
+ ${CMAKE_CURRENT_LIST_DIR}/src/util_tx_continuous.c
|
|
+)
|
|
+
|
|
+target_link_libraries(util_tx_continuous
|
|
+ PUBLIC
|
|
+ loragw
|
|
+)
|
|
+
|
|
+set_target_properties(util_tx_continuous PROPERTIES
|
|
+ RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
|
|
+)
|
|
+
|
|
+# add the install targets
|
|
+install (
|
|
+ TARGETS util_tx_continuous
|
|
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT shlib
|
|
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
+)
|
|
--- /dev/null
|
|
+++ b/util_tx_test/CMakeLists.txt
|
|
@@ -0,0 +1,23 @@
|
|
+
|
|
+add_executable(util_tx_test "")
|
|
+target_sources(util_tx_test
|
|
+ PRIVATE
|
|
+ ${CMAKE_CURRENT_LIST_DIR}/src/util_tx_test.c
|
|
+)
|
|
+
|
|
+target_link_libraries(util_tx_test
|
|
+ PUBLIC
|
|
+ loragw
|
|
+)
|
|
+
|
|
+set_target_properties(util_tx_test PROPERTIES
|
|
+ RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
|
|
+)
|
|
+
|
|
+# add the install targets
|
|
+install (
|
|
+ TARGETS util_tx_test
|
|
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT shlib
|
|
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
+)
|