Skip to content

Commit

Permalink
the very first
Browse files Browse the repository at this point in the history
  • Loading branch information
spectrum6000 committed Dec 7, 2024
1 parent 3551b57 commit 913d233
Show file tree
Hide file tree
Showing 16 changed files with 3,231 additions and 2 deletions.
42 changes: 42 additions & 0 deletions .gitignore
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
278 changes: 278 additions & 0 deletions CMakeLists.txt
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)
########################################################################
Loading

0 comments on commit 913d233

Please sign in to comment.