Switch to cmake for building.
This commit is contained in:
parent
47525ef796
commit
0091737339
|
@ -0,0 +1,57 @@
|
||||||
|
# CMake definitions for SoftFM
|
||||||
|
|
||||||
|
cmake_minimum_required(VERSION 2.4)
|
||||||
|
project(SoftFM)
|
||||||
|
|
||||||
|
find_package(PkgConfig)
|
||||||
|
find_package(ALSA REQUIRED)
|
||||||
|
|
||||||
|
# Find RTL-SDR library (for linking).
|
||||||
|
pkg_check_modules(PKG_RTLSDR librtlsdr)
|
||||||
|
find_path(RTLSDR_INCLUDE_DIR rtl-sdr.h
|
||||||
|
HINT ${PKG_RTLSDR_INCLUDE_DIRS})
|
||||||
|
find_library(RTLSDR_LIBRARY librtlsdr.a
|
||||||
|
HINT ${PKG_RTLSDR_LIBRARY_DIRS})
|
||||||
|
|
||||||
|
# Find libusb
|
||||||
|
pkg_check_modules(PKG_LIBUSB libusb-1.0)
|
||||||
|
find_path(LIBUSB_INCLUDE_DIR libusb.h
|
||||||
|
HINT ${PKG_LIBUSB_INCLUDE_DIRS}
|
||||||
|
PATH_SUFFIXES libusb-1.0)
|
||||||
|
find_library(LIBUSB_LIBRARY usb-1.0
|
||||||
|
HINT ${PKG_LIBUSB_LIBRARY_DIRS})
|
||||||
|
|
||||||
|
if(RTLSDR_INCLUDE_DIR AND RTLSDR_LIBRARY)
|
||||||
|
message(STATUS "Found librtlsdr: ${RTLSDR_INCLUDE_DIR}, ${RTLSDR_LIBRARY}")
|
||||||
|
else()
|
||||||
|
message(WARNING "Can not find Osmocom RTL-SDR library")
|
||||||
|
message("Try again with environment variable PKG_CONFIG_PATH")
|
||||||
|
message("or with -DRTLSDR_INCLUDE_DIR=/path/rtlsdr/include")
|
||||||
|
message(" -DRTLSDR_LIBRARY=/path/rtlsdr/lib/librtlsdr.a")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(RTLSDR_INCLUDE_DIRS ${RTLSDR_INCLUDE_DIR} ${LIBUSB_INCLUDE_DIR})
|
||||||
|
set(RTLSDR_LIBRARIES ${RTLSDR_LIBRARY} ${LIBUSB_LIBRARY})
|
||||||
|
|
||||||
|
# Compiler flags.
|
||||||
|
set(CMAKE_CXX_FLAGS "-Wall -std=c++11 -O2 -ffast-math -ftree-vectorize ${EXTRA_FLAGS}")
|
||||||
|
|
||||||
|
add_executable(softfm
|
||||||
|
main.cc
|
||||||
|
RtlSdrSource.cc
|
||||||
|
Filter.cc
|
||||||
|
FmDecode.cc
|
||||||
|
AudioOutput.cc )
|
||||||
|
|
||||||
|
include_directories(
|
||||||
|
${RTLSDR_INCLUDE_DIRS}
|
||||||
|
${ALSA_INCLUDE_DIRS}
|
||||||
|
${EXTRA_INCLUDES} )
|
||||||
|
|
||||||
|
target_link_libraries(softfm
|
||||||
|
${RTLSDR_LIBRARIES}
|
||||||
|
${ALSA_LIBRARIES}
|
||||||
|
${EXTRA_LIBS} )
|
||||||
|
|
||||||
|
install(TARGETS softfm DESTINATION bin)
|
||||||
|
|
41
Makefile
41
Makefile
|
@ -1,41 +0,0 @@
|
||||||
# Makefile for SoftFM
|
|
||||||
|
|
||||||
# ----- Tweak these settings to configure for your system
|
|
||||||
|
|
||||||
CROSS =
|
|
||||||
CFLAGS_OPT = -O2 -ffast-math -ftree-vectorize
|
|
||||||
CFLAGS_DEBUG = -g
|
|
||||||
CFLAGS_ARCH =
|
|
||||||
CFLAGS_PATH = -I/home/joris/test/rtl-sdr/inst/include
|
|
||||||
CFLAGS_EXTRA =
|
|
||||||
LDFLAGS_PATH = -L/home/joris/test/rtl-sdr/inst/lib
|
|
||||||
LDFLAGS_EXTRA =
|
|
||||||
LIBS_ALSA = -lasound
|
|
||||||
LIBS_RTLSDR = /home/joris/test/rtl-sdr/inst/lib/librtlsdr.a -lusb-1.0
|
|
||||||
LIBS_EXTRA =
|
|
||||||
|
|
||||||
# ----- end tweakable settings
|
|
||||||
|
|
||||||
|
|
||||||
CXX = $(CROSS)g++
|
|
||||||
CXXFLAGS = -std=c++11 -Wall -D_FILE_OFFSET_BITS=64 \
|
|
||||||
$(CFLAGS_OPT) $(CFLAGS_DEBUG) \
|
|
||||||
$(CFLAGS_ARCH) $(CFLAGS_PATH) $(CFLAGS_EXTRA)
|
|
||||||
LDFLAGS = $(LDFLAGS_PATH) $(LDFLAGS_EXTRA)
|
|
||||||
LDLIBS = $(LIBS_ALSA) $(LIBS_RTLSDR) $(LIBS_EXTRA)
|
|
||||||
|
|
||||||
OBJS = RtlSdrSource.o Filter.o FmDecode.o AudioOutput.o main.o
|
|
||||||
|
|
||||||
softfm : $(OBJS)
|
|
||||||
$(CXX) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)
|
|
||||||
|
|
||||||
RtlSdrSource.o : RtlSdrSource.cc RtlSdrSource.h SoftFM.h
|
|
||||||
Filter.o : Filter.cc Filter.h SoftFM.h
|
|
||||||
FmDecode.o : FmDecode.cc FmDecode.h SoftFM.h Filter.h
|
|
||||||
AudioOutput.o : AudioOutput.cc AudioOutput.h SoftFM.h
|
|
||||||
main.o : main.cc SoftFM.h RtlSdrSource.h Filter.h FmDecode.h AudioOutput.h
|
|
||||||
|
|
||||||
.PHONY: clean
|
|
||||||
clean:
|
|
||||||
$(RM) softfm *.o
|
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
* write README.txt
|
||||||
|
* push to github
|
||||||
|
* implement WAV file writing
|
||||||
|
* implement stereo pilot PPS
|
||||||
|
* implement RDS decoding
|
||||||
|
* figure out why we sometimes lose stereo lock
|
||||||
|
* investigate problem at low IF sample rates; apparently librtlsdr is not telling the truth about the actual sample rate.
|
||||||
|
* look at I/Q balance to improve weak stations
|
||||||
|
* look at hardware gain settings to improve weak stations
|
||||||
|
* consider FM demodulation with PLL instead of phase discriminator
|
Loading…
Reference in New Issue