-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
spectrum6000
committed
Dec 7, 2024
1 parent
3551b57
commit 913d233
Showing
16 changed files
with
3,231 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
build/ | ||
Makefile | ||
Makefile.in | ||
.deps | ||
.libs | ||
*.o | ||
*.lo | ||
*.la | ||
*.pc | ||
aclocal.m4 | ||
acinclude.m4 | ||
aminclude.am | ||
m4/*.m4 | ||
autom4te.cache | ||
config.h* | ||
config.sub | ||
config.log | ||
config.status | ||
config.guess | ||
configure | ||
configure~ | ||
compile | ||
depcomp | ||
missing | ||
ltmain.sh | ||
install-sh | ||
stamp-h1 | ||
libtool | ||
Doxyfile | ||
|
||
.tarball-version | ||
.version | ||
|
||
.*.swp | ||
|
||
doc/ | ||
|
||
|
||
CMakeCache.txt | ||
*/CMakeFiles | ||
CMakeFiles | ||
*.cmake |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,278 @@ | ||
######################################################################## | ||
# | ||
# Fobos SDR (agile) project | ||
# V.T. | ||
# LGPL | ||
# | ||
######################################################################## | ||
# | ||
# This program 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 2 of the License, or | ||
# (at your option) any later version. | ||
# | ||
# This program 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 this program. If not, see <http://www.gnu.org/licenses/>. | ||
|
||
######################################################################## | ||
# Project setup | ||
######################################################################## | ||
cmake_minimum_required(VERSION 3.7.2) | ||
|
||
if(${CMAKE_VERSION} VERSION_LESS "3.12.0") | ||
project(fobos_sdr) | ||
else() | ||
project(fobos_sdr C) | ||
endif() | ||
|
||
include(GNUInstallDirs) | ||
message(>>> "CMAKE_INSTALL_LIBDIR: " ${CMAKE_INSTALL_LIBDIR}) | ||
set(CMAKE_C_FLAGS, "${CMAKE_C_FLAGS} -std=c99") | ||
######################################################################## | ||
|
||
######################################################################## | ||
# 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) | ||
######################################################################## | ||
|
||
######################################################################## | ||
# Compiler specific setup | ||
######################################################################## | ||
if(CMAKE_COMPILER_IS_GNUCC AND NOT WIN32) | ||
ADD_DEFINITIONS(-Wall) | ||
ADD_DEFINITIONS(-Wextra) | ||
ADD_DEFINITIONS(-Wno-unused-parameter) | ||
ADD_DEFINITIONS(-Wno-unused) | ||
ADD_DEFINITIONS(-Wsign-compare) | ||
ADD_DEFINITIONS(-ansi) | ||
elseif(MSVC14 OR MSVC14) | ||
ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS) | ||
ADD_DEFINITIONS(-D_TIMESPEC_DEFINED) | ||
endif() | ||
######################################################################## | ||
|
||
######################################################################## | ||
# Find build dependencies | ||
######################################################################## | ||
find_package(PkgConfig) | ||
if(PKG_CONFIG_FOUND) | ||
pkg_check_modules(LIBUSB libusb-1.0 IMPORTED_TARGET) | ||
if(LIBUSB_LINK_LIBRARIES) | ||
set(LIBUSB_LIBRARIES "${LIBUSB_LINK_LIBRARIES}") | ||
endif() | ||
else() | ||
if (CMAKE_VS_PLATFORM_NAME STREQUAL Win32) | ||
set(LIBUSB_LIBRARIES ${CMAKE_SOURCE_DIR}/libusb/MS32/dll) | ||
endif() | ||
if (CMAKE_VS_PLATFORM_NAME STREQUAL x64) | ||
set(LIBUSB_LIBRARIES ${CMAKE_SOURCE_DIR}/libusb/MS64/dll) | ||
endif() | ||
set(LIBUSB_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/libusb/include) | ||
endif() | ||
if(PKG_CONFIG_FOUND AND NOT LIBUSB_FOUND) | ||
message(FATAL_ERROR "LibUSB 1.0 required") | ||
endif() | ||
######################################################################## | ||
|
||
######################################################################## | ||
# Install udev rules | ||
######################################################################## | ||
install( | ||
FILES fobos-sdr.rules | ||
DESTINATION "/etc/udev/rules.d" | ||
COMPONENT "udev" | ||
) | ||
######################################################################## | ||
|
||
######################################################################## | ||
# Print Summary | ||
######################################################################## | ||
message(>>> "Build: " ${CMAKE_BUILD_TYPE}) | ||
message(>>> "OS: " ${CMAKE_SYSTEM_NAME}) | ||
message(>>> "VS Platform: " ${CMAKE_VS_PLATFORM_NAME}) | ||
message(>>> "LIBUSB_LIBRARIES: " ${LIBUSB_LIBRARIES}) | ||
message(>>> "LIBUSB_INCLUDE_DIRS: " ${LIBUSB_INCLUDE_DIRS}) | ||
message(>>> "PROJECT_BINARY_DIR: " ${PROJECT_BINARY_DIR}) | ||
|
||
######################################################################## | ||
# Fobos SDR (agile) library | ||
######################################################################## | ||
add_library(libfobos_sdr SHARED fobos/fobos_sdr.c) | ||
|
||
target_compile_options(libfobos_sdr PUBLIC -std=c99) | ||
|
||
if(MSVC) | ||
target_compile_options(libfobos_sdr PUBLIC "/MT") | ||
ADD_CUSTOM_COMMAND(TARGET libfobos_sdr | ||
POST_BUILD | ||
COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_BINARY_DIR}/Debug | ||
COMMAND ${CMAKE_COMMAND} -E copy ${LIBUSB_LIBRARIES}/libusb-1.0.dll ${PROJECT_BINARY_DIR}/Debug | ||
) | ||
ADD_CUSTOM_COMMAND(TARGET libfobos_sdr | ||
POST_BUILD | ||
COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_BINARY_DIR}/Release | ||
COMMAND ${CMAKE_COMMAND} -E copy ${LIBUSB_LIBRARIES}/libusb-1.0.dll ${PROJECT_BINARY_DIR}/Release | ||
) | ||
else() | ||
endif() | ||
|
||
if(CMAKE_COMPILER_IS_GNUCC AND NOT WIN32) | ||
target_link_libraries(libfobos_sdr PRIVATE ${LIBUSB_LIBRARIES}) | ||
else() | ||
target_link_directories(libfobos_sdr PRIVATE ${LIBUSB_LIBRARIES}) | ||
endif() | ||
|
||
target_include_directories(libfobos_sdr PUBLIC | ||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}> | ||
$<INSTALL_INTERFACE:${CMAKE_SOURCE_DIR}> | ||
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}>/fobos | ||
${LIBUSB_INCLUDE_DIRS} | ||
) | ||
|
||
set_target_properties(libfobos_sdr PROPERTIES DEFINE_SYMBOL "FOBOS_SDR_EXPORTS") | ||
set_target_properties(libfobos_sdr PROPERTIES OUTPUT_NAME fobos_sdr) | ||
######################################################################## | ||
|
||
######################################################################## | ||
# Install public header files | ||
######################################################################## | ||
INSTALL( | ||
FILES fobos/fobos_sdr.h | ||
DESTINATION include | ||
) | ||
######################################################################## | ||
|
||
######################################################################## | ||
# Install built library files & utilities | ||
######################################################################## | ||
INSTALL( | ||
TARGETS libfobos_sdr | ||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} | ||
) | ||
######################################################################## | ||
|
||
######################################################################## | ||
# Create Pkg Config File | ||
######################################################################## | ||
FOREACH(inc ${LIBUSB_INCLUDEDIR}) | ||
LIST(APPEND LIBFOBOS_SDR_PC_CFLAGS "-I${inc}") | ||
ENDFOREACH(inc) | ||
|
||
FOREACH(lib ${LIBUSB_LIBRARY_DIRS}) | ||
LIST(APPEND LIBFOBOS_SDR_PC_LIBS "-L${lib}") | ||
ENDFOREACH(lib) | ||
|
||
# use space-separation format for the pc file | ||
STRING(REPLACE ";" " " LIBFOBOS_SDR_PC_CFLAGS "${LIBFOBOS_SDR_PC_CFLAGS}") | ||
STRING(REPLACE ";" " " LIBFOBOS_SDR_PC_LIBS "${LIBFOBOS_SDR_PC_LIBS}") | ||
|
||
set(prefix "${CMAKE_INSTALL_PREFIX}") | ||
set(exec_prefix \${prefix}) | ||
set(includedir \${prefix}/include) | ||
set(libdir \${exec_prefix}/lib) | ||
|
||
CONFIGURE_FILE( | ||
${CMAKE_CURRENT_SOURCE_DIR}/libfobos_sdr.pc.in | ||
${CMAKE_CURRENT_BINARY_DIR}/libfobos_sdr.pc | ||
@ONLY) | ||
|
||
INSTALL( | ||
FILES ${CMAKE_CURRENT_BINARY_DIR}/libfobos_sdr.pc | ||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig | ||
) | ||
######################################################################## | ||
|
||
######################################################################## | ||
# Create uninstall target | ||
######################################################################## | ||
configure_file( | ||
${CMAKE_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in | ||
${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake | ||
@ONLY) | ||
|
||
add_custom_target(uninstall | ||
${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake | ||
) | ||
######################################################################## | ||
|
||
######################################################################## | ||
# Create executable fobos_sdr_devinfo | ||
######################################################################## | ||
add_executable(fobos_sdr_devinfo | ||
eval/fobos_sdr_devinfo_main.c) | ||
|
||
target_compile_options(fobos_sdr_devinfo PUBLIC -std=c99) | ||
|
||
target_link_libraries(fobos_sdr_devinfo PRIVATE libfobos_sdr) | ||
|
||
if(CMAKE_COMPILER_IS_GNUCC AND NOT WIN32) | ||
target_link_libraries(fobos_sdr_devinfo PRIVATE ${LIBUSB_LIBRARIES}) | ||
else() | ||
target_link_directories(fobos_sdr_devinfo PRIVATE ${LIBUSB_LIBRARIES}) | ||
endif() | ||
|
||
target_include_directories(fobos_sdr_devinfo PRIVATE ${CMAKE_SOURCE_DIR}) | ||
|
||
target_include_directories(fobos_sdr_devinfo PRIVATE ${CMAKE_SOURCE_DIR}/fobos) | ||
######################################################################## | ||
|
||
######################################################################## | ||
# Create executable fobos_sdr_recorder | ||
######################################################################## | ||
add_executable(fobos_sdr_recorder | ||
eval/fobos_sdr_recorder_main.c | ||
wav/wav_file.c) | ||
|
||
target_compile_options(fobos_sdr_recorder PUBLIC -std=c99) | ||
|
||
target_link_libraries(fobos_sdr_recorder PRIVATE libfobos_sdr) | ||
|
||
if(CMAKE_COMPILER_IS_GNUCC AND NOT WIN32) | ||
target_link_libraries(fobos_sdr_recorder PRIVATE ${LIBUSB_LIBRARIES}) | ||
else() | ||
target_link_directories(fobos_sdr_recorder PRIVATE ${LIBUSB_LIBRARIES}) | ||
endif() | ||
|
||
target_include_directories(fobos_sdr_recorder PRIVATE ${CMAKE_SOURCE_DIR}) | ||
|
||
target_include_directories(fobos_sdr_recorder PRIVATE ${CMAKE_SOURCE_DIR}/fobos) | ||
######################################################################## | ||
|
||
######################################################################## | ||
# Create executable fobos_sdr_scanner | ||
######################################################################## | ||
add_executable(fobos_sdr_scanner | ||
eval/fobos_sdr_scanner_main.c | ||
wav/wav_file.c) | ||
|
||
target_compile_options(fobos_sdr_scanner PUBLIC -std=c99) | ||
|
||
target_link_libraries(fobos_sdr_scanner PRIVATE libfobos_sdr) | ||
|
||
if(CMAKE_COMPILER_IS_GNUCC AND NOT WIN32) | ||
target_link_libraries(fobos_sdr_scanner PRIVATE ${LIBUSB_LIBRARIES}) | ||
else() | ||
target_link_directories(fobos_sdr_scanner PRIVATE ${LIBUSB_LIBRARIES}) | ||
endif() | ||
|
||
target_include_directories(fobos_sdr_scanner PRIVATE ${CMAKE_SOURCE_DIR}) | ||
|
||
target_include_directories(fobos_sdr_scanner PRIVATE ${CMAKE_SOURCE_DIR}/fobos) | ||
######################################################################## | ||
|
||
######################################################################## | ||
# Directories | ||
######################################################################## | ||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) | ||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) | ||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) | ||
######################################################################## |
Oops, something went wrong.