1
0
mirror of https://github.com/JvanKatwijk/dab-cmdline synced 2025-10-05 23:52:50 +02:00

major rewrite

This commit is contained in:
JvanKatwijk
2017-05-19 15:20:19 +02:00
parent f8d53c96ff
commit 2cc2f8cc38
288 changed files with 19484 additions and 1899 deletions

15
python/cmdline.py → NOT-WORKING/cmdline.py Executable file → Normal file
View File

@@ -45,16 +45,16 @@ def program_data (a, b, c, d, e):
print ("bitrate = ", e);
#
# callblockHandler is called when the library has decided
# ensembleHandler is called when the library has decided
# that either an ensemble is there or none could be found
#The thing to be done is then to select a program
def callblockHandler (s, b):
def ensembleHandler (s, b):
global run
if (b):
print ("an ensemble was found");
print (s)
print ("selected program is " + args. programName)
dab_Service (theRadio, args. programName, program_data);
dab_Service (theRadio, args. programName);
else:
run = 0;
print ("no ensemble found, giving up");
@@ -91,7 +91,7 @@ def pcmHandler (buffer, size, rate):
#and of course we update the inp pointer
inp = (inp + amount) % bufSize;
# callback is called by the sound software whenever that is ready to
# sound_callback is called by the sound software whenever that is ready to
# handle a new buffer (the client better be prepared to have data available)
def sound_callback (outdata, frames, time, status):
global dataBuffer, outp, bufSize;
@@ -127,16 +127,19 @@ def sound_callback (outdata, frames, time, status):
# function could have more callback functions with it.
theRadio = dab_initialize (args. theMode,
theBand,
args. theDelay,
pcmHandler,
labelHandler,
args. theDelay);
ensembleHandler,
program_data
);
if (theRadio == None):
print ("sorry, no radio available, fatal\n");
exit (4);
dab_Gain (theRadio, args. theGain);
dab_channel (theRadio, args. theChannel);
dab_run (theRadio, callblockHandler);
dab_run (theRadio);
run = 1
with sd. OutputStream (samplerate = 48000,
channels = 2,

View File

@@ -28,13 +28,11 @@
// ensure that the function names are not mangled
//
extern "C" {
PyObject *dab_initialize_p (PyObject *self, PyObject *args);
PyObject *dab_Gain_p (PyObject *self, PyObject *args);
PyObject *dab_channel_p (PyObject *self, PyObject *args);
PyObject *dab_Service_Id_p (PyObject *self, PyObject *args);
PyObject *dab_Service_p (PyObject *self, PyObject *args);
PyObject *dab_run_p (PyObject *self, PyObject *args);
PyObject *dab_exit_p (PyObject *self, PyObject *args);
PyObject *dabInit_p (PyObject *self, PyObject *args);
PyObject *dabExit_p (PyObject *self, PyObject *args);
PyObject *dabReset_p (PyObject *self, PyObject *args);
PyObject *dabService_p (PyObject *self, PyObject *args);
PyObject *dabgetSid_p (PyObject *self, PyObject *args);
PyObject *dab_stop_p (PyObject *self, PyObject *args);
PyObject *PyInit_libdab_lib (void);
}
@@ -46,7 +44,7 @@ PyObject *PyInit_libdab_lib (void);
// and passed as parameter.
// typedef void (*cb_ensemble_t)(std::list<std::string>, bool);
static
PyObject *callbackEnsemble = NULL;
PyObject *callbackEnsembleInfo = NULL;
static
void callback_ensemble (std::list<std::string> s, bool b) {
PyGILState_STATE gstate;
@@ -55,6 +53,7 @@ PyObject *result;
PyObject *stringTuple = PyTuple_New (Py_ssize_t (s. size ()));
int16_t next = 0;
fprintf (stderr, "we zijn in callback_ensemble");
for (std::list<std::string>::iterator list_iter = s. begin ();
list_iter != s. end (); list_iter ++) {
PyObject *temp = Py_BuildValue ("s", (*list_iter).c_str ());
@@ -63,7 +62,7 @@ int16_t next = 0;
gstate = PyGILState_Ensure ();
arglist = Py_BuildValue ("(Oh)", stringTuple, b);
result = PyEval_CallObject (callbackEnsemble, arglist);
result = PyEval_CallObject (callbackEnsembleInfo, arglist);
Py_DECREF (arglist);
PyGILState_Release (gstate);
}
@@ -114,7 +113,7 @@ PyGILState_STATE gstate;
PyGILState_Release (gstate);
}
PyObject * callbackProgramdata = NULL;
PyObject * callbackProgramInfo = NULL;
// typedef void (*cb_programdata_t)(int16_t, // start address
// int16_t, // length
// int16_t, // subchId
@@ -138,7 +137,7 @@ PyObject *result;
protection,
bitRate);
result = PyEval_CallObject (callbackProgramdata, arglist);
result = PyEval_CallObject (callbackProgramInfo, arglist);
Py_DECREF (arglist);
PyGILState_Release (gstate);
}
@@ -148,42 +147,59 @@ PyObject *result;
// waiting time i an undocumented parameter, indicating the
// time we will wait before deciding we have an ensemble
//
// void *dab_initialize (uint8_t, // dab Mode
// void *dab_initialize (void *,
// uint8_t, // dab Mode
// dabBand, // Band
// int16_t, // waitingTime = 10,
// cb_audio_t, // callback for sound output
// cb_data_t, // callback for dynamic labels
// int16_t, // waitingTime = 10,
// cb_systemdata_t,
// cb_fib_quality_t,
// cb_msc_quality_t
// cb_msc_quality_t,
// cb_ensemble_t,
// cb_programdata_t
// );
PyObject *dab_initialize_p (PyObject *self, PyObject *args) {
int theMode = 127;
int theBand = 127;
PyObject *cba;
PyObject *cbd;
PyObject *cba; // callback for audio out
PyObject *cbd; // callback for dynamic label out
PyObject *cbe; // callback for ensemble info
PyObject *cbp; // callback for program data
int16_t delayTime;
void *result;
int r;
fprintf (stderr, "bij het begin\n");
//
r = PyArg_ParseTuple (args,
"hhOOh",
"hhhOOOO",
&theMode,
&theBand,
&delayTime,
&cba,
&cbd,
&delayTime
&cbe,
&cbp
);
//
// The callbacks should be callable
if (!PyCallable_Check (cba)) {
PyErr_SetString(PyExc_TypeError, "parameter must be callable");
PyErr_SetString(PyExc_TypeError, "parameter for audio must be callable");
Py_RETURN_NONE;
}
if (!PyCallable_Check (cbd)) {
PyErr_SetString(PyExc_TypeError, "parameter must be callable");
PyErr_SetString(PyExc_TypeError, "parameter for data must be callable");
Py_RETURN_NONE;
}
if (!PyCallable_Check (cbe)) {
PyErr_SetString(PyExc_TypeError, "parameter for ensemble must be callable");
Py_RETURN_NONE;
}
if (!PyCallable_Check (cbp)) {
PyErr_SetString(PyExc_TypeError, "parameter for program data must be callable");
Py_RETURN_NONE;
}
@@ -191,12 +207,34 @@ int r;
if (callbackAudio != NULL)
Py_XDECREF (callbackAudio);
callbackAudio = cba;
Py_XINCREF (cbd);
if (callbackData != NULL)
Py_XDECREF (callbackData);
callbackData = cbd;
result = dab_initialize (theMode, (dabBand)theBand,
&callback_audio, &callback_data, delayTime, NULL, NULL, NULL);
Py_XINCREF (cbe);
if (callbackEnsembleInfo != NULL)
Py_XDECREF (callbackEnsembleInfo);
callbackEnsembleInfo = cbe;
Py_XINCREF (cbp);
if (callbackProgramInfo != NULL)
Py_XDECREF (callbackProgramInfo);
callbackProgramInfo = cbp;
result = dab_initialize (NULL,
theMode,
(dabBand)theBand,
delayTime,
(cb_audio_t)&callback_audio,
(cb_data_t)&callback_data,
NULL, // systemdata
NULL, // fibQuality
NULL, // mscQuality
(cb_ensemble_t)&callback_ensemble,
(cb_programdata_t)&callback_programdata
);
if (result == NULL) {
fprintf (stderr, "lukte toch niet\n");
Py_RETURN_NONE;
@@ -231,72 +269,44 @@ bool b;
return Py_BuildValue ("b", b);
}
// void dab_run (void *handle, cb_ensemble_t);
// void dab_run (void *handle);
PyObject *dab_run_p (PyObject *self, PyObject *args) {
PyObject *handle_capsule;
void *handle;
PyObject *cbe;
PyArg_ParseTuple (args, "OO", &handle_capsule, &cbe);
if (!PyCallable_Check (cbe)) {
PyErr_SetString(PyExc_TypeError, "parameter must be callable");
Py_RETURN_NONE;
}
Py_XINCREF (cbe);
if (callbackEnsemble != NULL)
Py_XDECREF (callbackEnsemble);
callbackEnsemble = cbe;
PyArg_ParseTuple (args, "O", &handle_capsule);
handle = PyCapsule_GetPointer (handle_capsule, "library_object");
dab_run (handle, &callback_ensemble);
dab_run (handle);
Py_INCREF (Py_None);
Py_RETURN_NONE;
}
// bool dab_Service (void *handle, std::string, cb_programdata_t);
// bool dab_Service (void *handle, std::string);
PyObject *dab_Service_p (PyObject *self, PyObject *args) {
PyObject *handle_capsule;
void *handle;
char *s;
PyObject *cbp;
int16_t localArray [1024];
npy_intp dims [1];
PyObject *theArray;
PyArg_ParseTuple (args, "OsO", &handle_capsule, &s, &cbp);
if (!PyCallable_Check (cbp)) {
PyErr_SetString(PyExc_TypeError, "parameter must be callable");
Py_RETURN_NONE;
}
Py_XINCREF (cbp);
Py_XDECREF (callbackProgramdata);
callbackProgramdata = cbp;
PyArg_ParseTuple (args, "Os", &handle_capsule, &s);
handle = PyCapsule_GetPointer (handle_capsule, "library_object");
fprintf (stderr, "going to call dab_Service for %s\n", s);
dab_Service (handle, s, &callback_programdata);
dab_Service (handle, s);
Py_RETURN_NONE;
}
// bool dab_Service_Id (void *handle, int32_t, cb_programdata_t);
// bool dab_Service_Id (void *handle, int32_t);
PyObject *dab_Service_Id_p (PyObject *self, PyObject *args) {
PyObject *handle_capsule;
void *handle;
int serviceId;
PyObject *cbp;
PyArg_ParseTuple (args, "OiO", &handle_capsule, &serviceId, &cbp);
PyArg_ParseTuple (args, "Oi", &handle_capsule, &serviceId);
fprintf (stdout, "serviceId = %d\n", serviceId);
if (!PyCallable_Check (cbp)) {
PyErr_SetString(PyExc_TypeError, "parameter must be callable");
Py_RETURN_NONE;
}
Py_XINCREF (cbp);
Py_XDECREF (callbackProgramdata);
callbackProgramdata = cbp;
handle = PyCapsule_GetPointer (handle_capsule, "library_object");
dab_Service_Id (handle, serviceId, &callback_programdata);
dab_Service_Id (handle, serviceId);
Py_RETURN_NONE;
}

254
README.md
View File

@@ -1,22 +1,82 @@
DAB-CMDLINE in C++ and Python
========================================================================
DAB library and dab_cmdline
DAB-CMDLINE is a DAB decoding program completely controlled through the command line.
The program is derived from the (obsolete) DAB-rpi and the sdr-j-DAB programs, however, no use is made of any GUI package.
It can be considered the GUI-less equivalent to the Qt-DAB program, that was also derived from its predecessors, the DAB-rpi and sdr-j-DAB programs.
======================================================================
T H I S I S W O R K I N P R O G R E S S
a. rebuilding the Python interface
b. handling charactersets, i.e. utf 8 etc
=======================================================================
DAB library is - as the name suggests - a library for decoding
a digitized DAB stream.
There is an obvious need - at least felt by me - to experiment with other (forms of) GUI(s) for a DAB handling program, using the same mechanism - preferably the same code - to handle the DAB data stream. That is why a choice was made to pack the full DAB handling as a library.
The library provides entries for the functionality through some simple calls, while a few callback functions provide the communication back from the library to the gui.
To show the use of the library, two - functioning - command-line handlers are included in this repository, one written in C++, the second one in Python. The sources can be found in the directory "example" resp. "python".
To show the use of the library, several example programs were developed.
example-1 and example-2 are command line DAB programs. While example-1
uses the functionality implemented as separate library, example-2
binds directly to the functionality.
simpleDab shows the use of the library when handled from with a Qt GUI.
Different from previous versions is that the device is now NOT part of the
library, as the examples show.
========================================================================
Creating the library
------------------------------------------------------------------------------
The library can be created by - if needed - adapting the
`CMakeLists.txt` file in the dab-library/library directory and running
mkdir build
cd build
cmake ..
make
sudo make install
from within the dab-library directory.
IMPORTANT: YOU NEED C++11 SUPPORT FOR THIS
Note that contrary to earlier versions, the "device" is NOT part of the library,
the user program provides some functions to the library for getting samples.
============================================================================
Libraries (together with the "development" or ".h" files) needed for creating the library are
libfaad
libfftw3f
libusb-1.0
zlib
Command-line Parameters for the C++ version
Libraries for the example program are further:
portaudio, version 19.xxx rather than 18.xxx that is installed default on some debian based systems;
libsamplerate
library for the selected devices
============================================================================
Building the command line versions
----------------------------------------------------------------------------
For both example-1 and example-2 program, there is a CMakeLists.txt file
example-1 is - obviously - the simplest one, since it expects a
library to be available to which it links
example-2 has the same look and the same functionality.
=============================================================================
Command-line Parameters for the C++ versions
-----------------------------------------------------------------------
The C++ command line program can be compiled using cmake. Of course, the dab library (see a next section) should have been installed. Libraries that are further needed are libsamplerate and portaudio.
The C++ command line programs can be compiled using cmake. Of course, the dab library (see a next section) should have been installed. Libraries that are further needed are libsamplerate and portaudio.
The sequence to create the executable then is (after changing the working directory to the directory "example")
mkdir build
@@ -67,180 +127,22 @@ An example of a full specification of the command line is
./linux/dab-cmdline -M 1 -B "BAND III" -C 12C -P "Radio 4" -G 80 -A default
The program - when started - will try to identify a DAB datastream in the selected channel (here channel 12C). If a valid DAB datastream is found, the names of the programs in the ensemble will be printed. If - after a given amount of time - no ensemble could be found, execution will halt, if the ensemble was identified, the data for the selected program (here Radio 4) will be decoded.
Command line parameters for the Python3 version
----------------------------------------------------------------------------
The Python version supports the same set of parameters, apart from setting the band. The Python program is located in the directory "Python". Execution assumes the availability of the packages numpy and sounddevice and - obviously - the library.
Note that Python binds to C functions by dynamically loading a shared library - in this case the dab library, built with the Python wrapper functions, and copying a renamed version,
=========================================================================
"dablib.so"
to the Python directory.
simpleDAB
For each of the parameters, there is a default, i.e. if the command
python3 cmdline.py
is given, the assumptions on the parameters are as given above.
An example of a full specfification of the command line is
python3 cmdline.py -M 1 -C 12C -p "Radio 4" -G 80 -A default
The program - when started - will try to identify a DAB datastream in the selected channel. If a valid DAB datastream is found, the names of the programs in the ensemble will be printed. If - after a given amount of time - no ensemble could be found, execution will halt, if the ensemble was identified, the data for the selected program (here Radio 4) will be decoded..
Creating the library
-----------------------------------------------------------------------------------------------
The library can be created by - if needed - adapting the `CMakeLists.txt` file in the dab-library directory and running
mkdir build
cd build
cmake ..
make
sudo make install
from within the dab-library directory.
IMPORTANT: YOU NEED C++11 SUPPORT FOR THIS
Note that - to keep things simple - the supported device, i.e. one of dabstick, airspy or sdrplay, is "compiled in" the library, so do not forget to select the device by adapting the `CMakeLists.txt` file before running the sequence mentioned above, since I am experimenting with all three, it might happen that your choice is not the selected one.
============================================================================
Libraries (together with the "development" or ".h" files) needed for creating the library are
libfaad
libfftw3f
libusb-1.0
zlib
and - obviously, the libraries for the device included.
Libraries for the example program are further:
portaudio, version 19.xxx rather than 18.xxx that is installed default on some debian based systems;
libsamplerate
the simpleDAB directory contains the files for a simplified Qt GUI.
It binds to the dab-library, and can be created by qmake/make. No attempts
is made to create a CmakeLists.txt file, since the program is merely
an example to demonstrate the use of the library in a Qt context.
========================================================================
The API
================================================================
The API is the API of the dab library, it is a simple API with only a few functions. It is advised to look at the example program (especially the "main" program) to see how the API is used.
The API has three elements,
1. typedefinition of the dabBand
2. the type specifications of the callback functions,
3. a specification of the functions callable in the API.
enum dabBand {
BAND_III = 0,
L_BAND = 1
};
The Callback Functions
----------------------------------------
The ensemble - when discovered in the selected channel - is presented as a list of strings. That list is handed over to the user of the library by a user defined callback function. The boolean parameter in this function tells whether or not an ensemble was found. If no ensemble was found, it is (almost) certain that there is no decent signal.
The type of the callback function providing the program names as appearing in the ensemble, should be conformant to
typedef void (*cb_ensemble_t)(std::list<std::string>, bool);
Note that this function is *required* to be provided for,
The resulting audio (PCM) samples - if any - are returned as pairs of 16 bit integers, with the length (in 16 bit integers, not pairs), and the baudrate as other parameters. The PCM samples are passed to the user through a user defined callback function.
The type of the callback function should be conformant to
typedef void (*cb_audio_t)(int16_t *, int, int);
if a NULL is provided as callback function, no data will be transferred.
The dynamic labelvalue - if any - is passed through a user callback function, whose type is to be conformant to
typedef void (*cb_data_t)(std::string);
if a NULL is provided, no data will be transferred.
Some technical data of the selected program is passed through a callback function, whose type is to be conformant to
typedef void (*cb_programdata_t)(int16_t, // start address of the data for the selected program
int16_t, // length in terms of CU's
int16_t, // subchId
int16_t, // protection
int16_t // bitRate
);
if a NULL is provided, no data will be transferred.
API-Functions
---------------------------------------------------------------------
The initialization function takes as parameters the immutable values for
1. the dabMode, is just one of 1, 2 or 4 (Mode 3 is not supported),
2. the dabBand, see the type above,
3. the callback function for the sound handling or NULL if no sound output is required,
4. the callback for handling the dynamic label or NULL if no text output is required.
Note that by creating a dab-library, you already selected a device, so the handler software for the device is part of the library.
The initialization function returns a non-NULL handle when the device could be opened for delivering input, otherwise it returns NULL.
void *dab_initialize (uint8_t, // dab Mode
dabBand, // Band
cb_audio_t, // callback for sound output
cb_data_t // callback for dynamic labels
);
The return value, i.e. the handle, is used to identify the library instance in the other functions defined in the API.
The gain of the device can be set and changed to a value in the range 0 .. 100 using the function dab_Gain. The parameter value is mapped upon an appropriate value for the device
void dab_Gain (void *handle, uint16_t);
The function dab_Channel maps the name of the channel onto a frequency for the device and prepares the device for action. If the software was already running for another channel, then the thread running the software will be halted first.
bool dab_Channel (void *handle, std::string);
The function returns - pretty obvious - true if the string for the channel could be recognized and the device could be set to the associated frequency, if not the function returns false (e.g. "23C" is a non-existent channel in Band III).
The function dab_run will start a separate thread, running the dab decoding software at the selected channel. Behaviour is undefined if no channel was selected. If after some time, DAB data, i.e. an ensemble, is found, then the function passed as callback is called with the boolean parameter set to true, and the std::list of strings, representing the names of the programs in that ensemble. If no data was found, the boolean parameter is set to false, and the list is empty.
Note that the thread executing the dab decoding will continue to run.
void dab_run (void *handle, cb_ensemble_t);
With dab_Service, the user may - finally - select a program to be decoded. This - obviously only makes sense when there are programs and "dab_run" is still active. The name of the program may be a prefix of the real name, however, letter case is important.
bool dab_Service (void *handle, std::string, cb_programdata_t);
To allow selecting a program using the serviceId, a function as the one above is available where the std::string is replaced by the value of the serviceId.
bool dab_Service (void *handle, int32_t, cb_programdata_t);
The function stop will stop the running of the thread that is executing the dab decoding software
void dab_stop (void *handle);
The exit function will close down the library software and will set the handle, the address of which is passed as parameter, to NULL.
void dab_exit (void **handle);
Creating the library for use with Python for the GUI
===============================================================================
A wrapper for the API is to be found in the file `dab-python.cpp`.
By default the Python interface wrapper is not automatically included in the library. In order to include the wrapper in the library, one has to uncomment
set (PYTHON true)
in the `CMakeLists.txt` file (and adapt the path name(s) in the `CMakeLists.txt` file).
-------------------------------------------------------------------------
The API specification, in dab-api.h, contains a specification of the
types for the callback functions and a specification for the real API functions.
===============================================================================
Copyright (C) 2016, 2017

191
dab-api.h Normal file
View File

@@ -0,0 +1,191 @@
#
/*
* Copyright (C) 2016, 2017
* Jan van Katwijk (J.vanKatwijk@gmail.com)
* Lazy Chair Programming
*
* This file is the API description of the DAB-library.
*
* DAB-library 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.
*
* DAB-library 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 DAB-library, if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef __DAB_API__
#define __DAB_API__
#include <stdio.h>
#include <stdint.h>
#include <string>
#include <complex>
#include "ringbuffer.h"
// Experimental API for controlling the dab software library
//
// Version 2.0
// Examples of the use of the DAB-API library are found in the
// directories
// a. C++ Example, which gives a simple command line interface to
// run DAB
// b. python, which gives a python program implementing a simple
// command line interface to run DAB
// c. simpleDab, which implements a Qt interface - similar to that
// of Qt-DAB - to the library
#include <stdint.h>
#include "device-handler.h"
//
//
// This struct (a pointer to) is returned by callbacks of the type
// programdata_t. It contains parameters, describing the service.
typedef struct {
bool defined;
int16_t subchId;
int16_t startAddr;
bool shortForm;
int16_t protLevel;
int16_t DSCTy;
int16_t length;
int16_t bitRate;
int16_t FEC_scheme;
int16_t DGflag;
int16_t packetAddress;
int16_t appType;
} packetdata;
//
// currently not used
typedef struct {
bool defined;
int16_t subchId;
int16_t startAddr;
bool shortForm;
int16_t protLevel;
int16_t length;
int16_t bitRate;
int16_t ASCTy;
int16_t language;
int16_t programType;
} audiodata;
//////////////////////// C A L L B A C K F U N C T I O N S ///////////////
//
//
// A signal is sent as soon as the library knows that time
// synchronization will be ok.
// Especially, if the value sent is false, then it is (almost)
// certain that no ensemble will be detected
typedef void (*syncsignal_t)(bool, void *);
//
// the systemdata is sent once per second with information
// a. whether or not time synchronization is OK
// b. the SNR,
// c. the computed frequency offset (in Hz)
typedef void (*systemdata_t)(bool, int16_t, int32_t, void *);
//
// the fibQuality is sent regularly and indicates the percentage
// of FIB packages that pass the CRC test
typedef void (*fib_quality_t) (int16_t, void *);
//
// the ensemblename is sent whenever the library detects the
// name of the ensemble
typedef void (*ensemblename_t)(std::string, int32_t, void *);
//
// Each programname in the ensemble is sent once
typedef void (*programname_t)(std::string, int32_t, void *);
//
// after selecting an audio program, the audiooutput, packed
// as PCM data (always two channels) is sent back
typedef void (*audioOut_t)(int16_t *, // buffer
int, // size
int, // samplerate
bool, // stereo
void *);
//
// dynamic label data, embedded in the audio stream, is sent as string
typedef void (*dataOut_t)(std::string, void *);
//
// the quality of the DAB data is reflected in 1 number in case
// of DAB, and 3 in case of DAB+,
// the first number indicates the percentage of dab packages that
// passes tests, and for DAB+ the percentage of valid DAB_ frames.
// The second and third number are for DAB+: the second gives the
// percentage of packages passing the Reed Solomon correction,
// and the third number gives the percentage of valid AAC frames
typedef void (*programQuality_t)(int16_t, int16_t, int16_t, void *);
//
// After selecting a service, parameters of the selected program
// ar sent back.
typedef void (*programdata_t)(audiodata *, void *);
/////////////////////////////////////////////////////////////////////////
//
// The API functions
extern "C" {
// dabInit is called first, with a valid deviceHandler and a valid
// Mode. The parameters "spectrumBuffer" and "iqBuffer" will contain
// -- if no NULL parameters are passed -- the data to fill a spectrumbuffer
// and a constellation diagram. There use can be seen in the example
// program "simpleDab".
//
// The other parameters are as described above. For each of them a NULL
// can be passed as parameter, with the expected result.
//
// The "spectrumBuffer" and the "iqBuffer" parameters provide
// - as the name suggests - spectrumdata and data to show the
// constellation diagram.
// Look into the simpleDab example to see how they are/can be used.
void *dabInit (deviceHandler *,
uint8_t Mode,
RingBuffer<std::complex<float>> *spectrumBuffer,
RingBuffer<std::complex<float>> *iqBuffer,
syncsignal_t syncsignalHandler,
systemdata_t systemdataHandler,
ensemblename_t ensemblenameHandler,
programname_t programnamehandler,
fib_quality_t fib_qualityHandler,
audioOut_t audioOut_Handler,
dataOut_t dataOut_Handler,
programdata_t programdataHandler,
programQuality_t program_qualityHandler,
void *userData);
// dabExit cleans up the library on termination
void dabExit (void *);
//
// the actual processing starts with calling startProcessing,
// note that the input device needs to be started separately
void startProcessing (void *);
//
void reset (void *);
void stop (void *);
// reset is as the name suggests for resetting the state of the library
//
// after selecting a name for a program, the service can be started
// by calling dab_service. Note that it is assumed that an ensemble
// was recognized. The function returns with a positive number
// when successfull, otherwise it will
// return -1 is the service cannot be found
// return -2 if the type of service is not recognized
// return -3 if the type of service is not audio
// return -4 if the service is insufficiently defined
int16_t dab_service (std::string, void *);
//
// mapping from a name to a Service identifier is done
int32_t dab_getSId (std::string, void *);
//
// and the other wway around, mapping the service identifier to a name
std::string dab_getserviceName (int32_t, void *);
}
#endif

View File

@@ -1,202 +0,0 @@
#
/*
* Copyright (C) 2013, 2014, 2015, 2016, 2017
* Jan van Katwijk (J.vanKatwijk@gmail.com)
* Lazy Chair Programming
*
* This file is the API description of the DAB-library.
*
* DAB-library 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.
*
* DAB-library 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 DAB-library, if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef __DAB_API
#define __DAB_API
#include <stdio.h>
#include <stdint.h>
#include <string>
#include <list>
// Experimental API for controlling the dab software library
//
// Version 0.7
// An example of the use of the library - using this API -
// is enclosed in the directory "example" in this distribution
extern "C" {
enum dabBand {
BAND_III = 0,
L_BAND = 1
};
//
//
//////////////////////// C A L L B A C K F U N C T I O N S ///////////////
// The ensemble - when discovered in the selected channel -
// is presented as a list of strings,
// the boolean tells whether or not an ensemble was found
// If no ensemble was found, it is (almost) certain that there is
// no decent signal.
// The type of the callback function should be conformant to
typedef void (*cb_ensemble_t)(std::list<std::string>, bool);
// Note that this function is *required* to be provided for,
// The resulting audio samples - if any - are returned as pairs of
// 16 bit integers, with the length (in items), and the baudrate
// as other parameters.
// The type of the callback function should be conformant to
typedef void (*cb_audio_t)(int16_t *, int, int);
// if a NULL is provided, no data will be transferred.
//
// The dynamic labelvalue - if any - is passed through a
// callback function, whose type is to be conformant to
typedef void (*cb_data_t)(std::string);
// if a NULL is provided, no data will be transferred.
//
// The technical data of the selected program is
// passed through a function, whose type is to be conformant to
typedef void (*cb_programdata_t)(int16_t, // start address
int16_t, // length
int16_t, // subchId
int16_t, // protection
int16_t // bitRate
);
//
//
// if a NULL is provided, no data will be transferred.
//
// Values, such as the SNR, the computed frequency offset,
// and the quality of the FIB and MP2/AAC decoding is passed
// through some additional callback functions with profile
typedef void (*cb_system_data_t)(bool, // timesync,
int16_t, // signal noise ratio
int32_t // frequency offset
);
// This function is called approximately once a second
// If NULL is provides, no data will be passed
//
// and for the quality of the FIB decoding (where the parameter
// is a value in the range 0 .. 100)
typedef void (*cb_fib_quality_t) (int16_t);
// This function is called approximately once per second, but only after
// time synchronization. If NULL is provided, no data will be passed
// and for the quality of the audio frames (where the parameters
// are values in the range 0 .. 100);
typedef void (*cb_msc_quality_t)(int16_t, // accepted frames
int16_t, // 2
int16_t // 3
);
// In case DAB is received, the first value indicates the accepted
// frames.
//
// In case DAB+ is received, the accepted frames relate to the
// accepted amount of DAB+ superframes, the value indicated by (2)
// denotes the quality of the Reed Solomon decoding, the value (3)
// the successrate of the AAC decoding.
// if NULL is provided, no data will be passed.
////////////////////// A P I - F U N C T I O N S ///////////////////////
// The initialization function takes as parameters the
// immutable system parameters,
// the dabMode is just 1, 2 or 4
// the dabBand, see the type above
// the callback for the sound handling,
// the callback for the dynamic label
// the time (in seconds) to give the software chance to identify
// an ensemble
//
// Note that by creating a dab-library, you already selected a device
//
// The function returns a non-NULL handle when the device
// could be opened for delivery input.
// Otherwise it return NULL.
void *dab_initialize (uint8_t, // dab Mode
dabBand, // Band
cb_audio_t, // callback for sound output
cb_data_t, // callback for dynamic labels
int16_t, // waitingTime,
cb_system_data_t, // systemData,
cb_fib_quality_t, // fibQuality,
cb_msc_quality_t // mscQuality
);
//
// The gain of the device can be set and changed to a value
// in the range 0 .. 100. The value is mapped upon an appropriate
// value for the device
void dab_Gain (void *handle, uint16_t);
//
// If the device supports an "autogain" mode, then that is set by
void dab_autoGain (void *handle, bool);
//
// The function setupChannel maps the name of the channel
// onto a frequency for the device and prepares the device
// for action
// If the software was already running for another channel,
// then the thread running the software will be halted first
bool dab_Channel (void *handle, std::string);
// the function dab_run will start a separate thread, running the
// dab decoding software at the selected channel.
// If DAB data, i.e. an ensemble, is found, then the function
// passed as callback is called with as parameter the std::list
// of strings, representing the names of the programs in that
// ensemble. If no data was found, the list is empty
// Note that the thread executing the dab decoding will continue
// to run.
void dab_run (void *handle, cb_ensemble_t);
//
// with dab_Service, the user may - finally - select a program
// to be decoded. This - obviously only makes sense when
// there are programs and "dab_run" is still active.
// The name of the program may be a prefix of the real name,
// however, letter case is important.
bool dab_Service (void *handle, std::string, cb_programdata_t);
//
// experimenting with:
bool dab_Service_Id (void *handle, int32_t, cb_programdata_t);
//
// the function stop will stop the running of the thread
// executing the dab decoding software
void dab_stop (void *handle);
//
// the exit function will close down the library software
void dab_exit (void **handle);
//
// a conventience function maps the program name in the
// current ensemble to the ServiceIdentifer
int32_t dab_getSId (void *handle, std::string);
//
//
////////////////// G E N E R A T I N G T H E L I B R A R Y //////////////
//
// The dab-library directory contains a CMakeLists.txt script
// for use with CMake
//
// You will need a few libraries to be installed, and
// you have to make a choice for the device you want
// In general, one would create a "build" directory into the
// dab-directory, then
// cd build
// cmake .. -DXXX=ON,
// where XXX is either SDRPLAY, AIRSPY or DABSTICK,
// make
// sudo make install
}
#endif

View File

@@ -1,184 +0,0 @@
#
/*
* Copyright (C) 2016 2017
* Jan van Katwijk (J.vanKatwijk@gmail.com)
* Lazy Chair Programming
*
* This file is the implementation part of the DAB-API, it
* binds the dab-library to the api.
* Many of the ideas as implemented in the DAB-library are derived from
* other work, made available through the GNU general Public License.
* All copyrights of the original authors are recognized.
*
* DAB-library 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.
*
* DAB-library 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 DAB-library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
#include "dab-api.h"
#include "dab-class.h"
#include "dab-constants.h"
#include <stdio.h>
#include <stdint.h>
#include "virtual-input.h"
#ifdef HAVE_DABSTICK
#include "rtlsdr-handler.h"
#endif
#ifdef HAVE_SDRPLAY
#include "sdrplay-handler.h"
#endif
#ifdef HAVE_AIRSPY
#include "airspy-handler.h"
#endif
//
// a global variable and some forward declarations
virtualInput *setDevice (void);
void *dab_initialize (uint8_t dabMode, // dab Mode
dabBand band, // Band
cb_audio_t soundOut, // callback for sound output
cb_data_t dataOut, // callback for sound output
int16_t waitingTime,
cb_system_data_t sysdata,
cb_fib_quality_t fibQuality,
cb_msc_quality_t mscQuality
) {
virtualInput *inputDevice;
inputDevice = setDevice ();
if (inputDevice == NULL)
return NULL;
return (void *)(new dabClass (inputDevice,
dabMode,
band,
waitingTime,
soundOut,
dataOut,
sysdata,
fibQuality,
mscQuality));
}
void dab_Gain (void *handle, uint16_t g) {
if (((dabClass *)handle) != NULL)
((dabClass *)handle) -> dab_gain (g);
}
void dab_autoGain (void *handle, bool b) {
if (((dabClass *)handle) != NULL)
((dabClass *)handle) -> dab_autogain (b);
}
bool dab_Channel (void *handle, std::string name) {
if (((dabClass *)handle) == NULL)
return false;
((dabClass *)handle) -> dab_stop ();
return ((dabClass *)handle) -> dab_channel (name);
}
void dab_run (void *handle, cb_ensemble_t f) {
if (((dabClass *)handle) != NULL)
((dabClass *)handle) -> dab_run (f);
}
bool dab_Service (void *handle, std::string name, cb_programdata_t t) {
if (((dabClass *)handle) == NULL)
return false;
if (!((dabClass *)handle) -> dab_running ())
return false;
if (!((dabClass *)handle) -> ensembleArrived ())
return false;
return ((dabClass *)handle) -> dab_service (name, t);
}
bool dab_Service_Id (void *handle, int32_t serviceId, cb_programdata_t t) {
if (((dabClass *)handle) == NULL)
return false;
if (!((dabClass *)handle) -> dab_running ())
return false;
if (!((dabClass *)handle) -> ensembleArrived ())
return false;
return ((dabClass *)handle) -> dab_service (serviceId, t);
}
//
void dab_stop (void *handle) {
if (((dabClass *)handle) == NULL)
return;
if (!((dabClass *)handle) -> dab_running ())
return;
((dabClass *)handle) -> dab_stop ();
}
//
void dab_exit (void **handle_p) {
if (((dabClass *)(*handle_p)) == NULL)
return;
dab_stop (*handle_p);
delete ((dabClass *)(*handle_p));
*handle_p = NULL;
}
int32_t dab_getSId (void *handle, std::string name) {
if (((dabClass *)handle) == NULL)
return -1;
return ((dabClass *)handle) -> dab_getSId (name);
}
virtualInput *setDevice (void) {
bool success;
virtualInput *inputDevice;
#ifdef HAVE_AIRSPY
inputDevice = new airspyHandler (&success, 80, Mhz (220));
if (!success) {
delete inputDevice;
return NULL;
}
else
return inputDevice;
#elif defined (HAVE_SDRPLAY)
inputDevice = new sdrplayHandler (&success, 60, Mhz (220));
if (!success) {
delete inputDevice;
return NULL;
}
else
return inputDevice;
#elif defined (HAVE_DABSTICK)
inputDevice = new rtlsdrHandler (&success, 75, KHz (220000));
fprintf (stderr, "input device is rtlsdr handler ? %d\n", success);
if (!success) {
delete inputDevice;
return NULL;
}
else
return inputDevice;
#endif
fprintf (stderr, "it appeared that you did not select a device, \nyou can run, but you will be connected to a virtual device, only providing zeros\n");
// and as default option, we have a "virtualInput"
return new virtualInput ();
}

View File

@@ -1,282 +0,0 @@
#
/*
* Copyright (C) 2015, 2016, 2017
* Jan van Katwijk (J.vanKatwijk@gmail.com)
* Lazy Chair Programming
*
* This file is part of the DAB-cmdline
* Many of the ideas as implemented in DAB-cmdline are derived from
* other work, made available through the GNU general Public License.
* All copyrights of the original authors are acknowledged.
*
* DAB-cmdline 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.
*
* DAB-cmdline 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 DAB-cmdline; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
#include <unistd.h>
#include <termios.h>
#include <stdio.h>
#include <sys/select.h>
#include <atomic>
#include "dab-constants.h"
#include "dab-params.h"
#include "dab-class.h"
dabClass::dabClass (virtualInput *inputDevice,
uint8_t Mode,
dabBand theBand,
int16_t waitingTime,
cb_audio_t soundOut,
cb_data_t dataOut,
cb_system_data_t systemData,
cb_fib_quality_t fibQuality,
cb_msc_quality_t mscQuality):
dabMode (Mode) {
this -> inputDevice = inputDevice;
this -> theBand = theBand;
this -> waitingTime = waitingTime;
this -> soundOut = soundOut;
this -> dataOut = dataOut;
tunedFrequency = 220000000; // just default
deviceGain = 50; // just default
autoGain = false;
theEnsemble. clearEnsemble ();
my_ficHandler = new ficHandler (&theEnsemble, fibQuality);
my_mscHandler = new mscHandler (&dabMode,
soundOut,
dataOut,
mscQuality);
my_ofdmProcessor = new ofdmProcessor (inputDevice,
&dabMode,
systemData,
my_mscHandler,
my_ficHandler,
3, 2);
run. store (false);
}
dabClass::~dabClass (void) {
if (run. load ()) { // should not happen
run. store (false);
threadHandle. join ();
}
delete my_ficHandler;
delete my_mscHandler;
delete my_ofdmProcessor;
}
void dabClass::dab_gain (uint16_t g) {
deviceGain = g;
inputDevice -> setGain (g);
}
void dabClass::dab_autogain (bool b) {
autoGain = b;
inputDevice -> setAgc (b);
}
bool dabClass::dab_running (void) {
return run. load ();
}
struct dabFrequencies {
const char *key;
int fKHz;
};
struct dabFrequencies bandIII_frequencies [] = {
{"5A", 174928},
{"5B", 176640},
{"5C", 178352},
{"5D", 180064},
{"6A", 181936},
{"6B", 183648},
{"6C", 185360},
{"6D", 187072},
{"7A", 188928},
{"7B", 190640},
{"7C", 192352},
{"7D", 194064},
{"8A", 195936},
{"8B", 197648},
{"8C", 199360},
{"8D", 201072},
{"9A", 202928},
{"9B", 204640},
{"9C", 206352},
{"9D", 208064},
{"10A", 209936},
{"10B", 211648},
{"10C", 213360},
{"10D", 215072},
{"11A", 216928},
{"11B", 218640},
{"11C", 220352},
{"11D", 222064},
{"12A", 223936},
{"12B", 225648},
{"12C", 227360},
{"12D", 229072},
{"13A", 230748},
{"13B", 232496},
{"13C", 234208},
{"13D", 235776},
{"13E", 237488},
{"13F", 239200},
{NULL, 0}
};
struct dabFrequencies Lband_frequencies [] = {
{"LA", 1452960},
{"LB", 1454672},
{"LC", 1456384},
{"LD", 1458096},
{"LE", 1459808},
{"LF", 1461520},
{"LG", 1463232},
{"LH", 1464944},
{"LI", 1466656},
{"LJ", 1468368},
{"LK", 1470080},
{"LL", 1471792},
{"LM", 1473504},
{"LN", 1475216},
{"LO", 1476928},
{"LP", 1478640},
{NULL, 0}
};
/**
*/
bool dabClass::dab_channel (std::string s) {
int16_t i;
struct dabFrequencies *finger;
int32_t tunedTo = 0;
if (theBand == BAND_III)
finger = bandIII_frequencies;
else
finger = Lband_frequencies;
for (i = 0; finger [i]. key != NULL; i ++) {
if (std::string (finger [i]. key) == s) {
tunedTo = KHz (finger [i]. fKHz);
break;
}
}
if (tunedTo == 0) {
fprintf (stderr, "could not find a legal frequency for channel %s\n",
s. c_str ());
return false;
}
tunedFrequency = tunedTo;
inputDevice -> setVFOFrequency (tunedFrequency);
return true;
}
static
cb_ensemble_t ff;
void dabClass::dab_run (cb_ensemble_t f) {
if (run. load ())
return;
ff = f;
threadHandle = std::thread (&dabClass::run_dab, this, std::ref(ff));
}
void dabClass::run_dab (cb_ensemble_t h) {
if (run. load ()) // running already
return;
inputDevice -> setVFOFrequency (tunedFrequency);
inputDevice -> restartReader ();
my_ofdmProcessor -> start ();
inputDevice -> setGain (deviceGain);
if (autoGain)
inputDevice -> setAgc (true);
run. store (true);
sleep (waitingTime); // give everyone the opportunity to do domething
fprintf (stderr, "waited for an ensemble, an ensemble is %s\n",
theEnsemble. ensembleExists () ? "found" :
"not found");
h (theEnsemble. data (), theEnsemble. ensembleExists ());
while (run. load ())
usleep (10000);
//
// we started the ofdmprocessor, so we also stop it here
inputDevice -> stopReader ();
my_ofdmProcessor -> stop ();
}
bool dabClass::dab_service (int32_t serviceId, cb_programdata_t t) {
return dab_service (my_ficHandler -> nameFor (serviceId), t);
}
bool dabClass::dab_service (std::string aname, cb_programdata_t t) {
audiodata d;
std::string name = theEnsemble. findService (aname);
switch (my_ficHandler -> kindofService (name)) {
case AUDIO_SERVICE:
my_ficHandler -> dataforAudioService (name, &d);
if (d. defined) {
my_mscHandler -> set_audioChannel (&d);
fprintf (stderr, "selected %s\n", name. c_str ());
if (t != NULL)
t (d. startAddr, d. length, d. subchId, d. bitRate, d. protLevel);
return true;
}
else {
fprintf (stderr, "Insufficient data to execute service %s",
name. c_str ());
return false;
}
break;
//
// For the command line version, we do not have a data service
case PACKET_SERVICE:
fprintf (stderr,
"Data services not supported in this version\n");
return false;
default:
fprintf (stderr,
"kind of service %s unclear, fatal\n", name. c_str ());
return false;
}
return false;
}
void dabClass::dab_stop (void) {
if (run. load ()) {
run. store (false);
threadHandle. join ();
}
}
int32_t dabClass::dab_getSId (std::string name) {
return my_ficHandler -> SIdFor (name);
}
bool dabClass::ensembleArrived (void) {
return theEnsemble. ensembleExists ();
}

View File

@@ -4,52 +4,50 @@
* Jan van Katwijk (J.vanKatwijk@gmail.com)
* Lazy Chair Programming
*
* This file is part of the SDR-J.
* Many of the ideas as implemented in SDR-J are derived from
* other work, made available through the GNU general Public License.
* All copyrights of the original authors are recognized.
* This file is part of the DAB library
*
* SDR-J is free software; you can redistribute it and/or modify
* DAB library 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.
*
* SDR-J is distributed in the hope that it will be useful,
* DAB library 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 SDR-J; if not, write to the Free Software
* along with DAB library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* We have to create a simple virtual class here, since we
* want the interface with different devices (including filehandling)
* to be transparent
*/
#ifndef __VIRTUAL_INPUT__
#define __VIRTUAL_INPUT__
#ifndef __DEVICE_HANDLER__
#define __DEVICE_HANDLER__
#include <stdint.h>
#include "dab-constants.h"
#include <complex>
using namespace std;
class virtualInput {
class deviceHandler {
public:
virtualInput (void);
virtual ~virtualInput (void);
deviceHandler (void);
virtual ~deviceHandler (void);
virtual void setVFOFrequency (int32_t);
virtual int32_t getVFOFrequency (void);
virtual int32_t defaultFrequency (void);
virtual bool restartReader (void);
virtual void stopReader (void);
virtual int32_t getSamples (DSPCOMPLEX *, int32_t);
virtual int32_t getSamples (std::complex<float> *, int32_t);
virtual int32_t Samples (void);
virtual void resetBuffer (void);
virtual int16_t bitDepth (void) { return 10;}
//
// To accomodate gui_3 without a separate control for the device
virtual void setGain (int32_t);
virtual void setAgc (bool);
virtual bool has_autogain (void);
virtual void set_autogain (bool);
//
protected:
int32_t lastFrequency;

View File

@@ -28,15 +28,22 @@ const int EXTIO_NS = 8192;
static
const int EXTIO_BASE_TYPE_SIZE = sizeof (float);
airspyHandler::airspyHandler (bool *success, int gain, int frequency) {
static
std::complex<float> cmul (std::complex<float> x, float y) {
return std::complex<float> (real (x) * y, imag (x) * y);
}
airspyHandler::airspyHandler (int32_t frequency,
int16_t ppmCorrection,
int16_t theGain) {
int result, i;
int distance = 10000000;
uint32_t myBuffer [20];
uint32_t samplerate_count;
*success = false;
this -> gain = gain;
this -> frequency = frequency;
this -> ppmCorrection = ppmCorrection;
this -> gain = gain;
//
device = 0;
serialNumber = 0;
@@ -49,7 +56,7 @@ uint32_t samplerate_count;
Handle = dlopen ("libusb-1.0.so", RTLD_NOW | RTLD_GLOBAL);
if (Handle == NULL) {
fprintf (stderr, "libusb cannot be loaded\n");
goto err;
throw (41);
}
Handle = dlopen ("libairspy.so", RTLD_LAZY);
@@ -60,8 +67,9 @@ uint32_t samplerate_count;
#ifndef __MINGW32__
fprintf (stderr, "Error = %s\n", dlerror ());
#endif
goto err;
throw (41);
}
libraryLoaded = true;
if (!load_airspyFunctions ()) {
@@ -74,7 +82,13 @@ uint32_t samplerate_count;
if (result != AIRSPY_SUCCESS) {
printf("my_airspy_init () failed: %s (%d)\n",
my_airspy_error_name((airspy_error)result), result);
return;
#ifdef __MINGW32__
FreeLibrary (Handle);
#else
dlclose (Handle);
#endif
throw (42);
}
fprintf (stderr, "airspy init is geslaagd\n");
@@ -82,7 +96,12 @@ uint32_t samplerate_count;
if (result != AIRSPY_SUCCESS) {
printf ("my_airpsy_open () failed: %s (%d)\n",
my_airspy_error_name ((airspy_error)result), result);
return;
#ifdef __MINGW32__
FreeLibrary (Handle);
#else
dlclose (Handle);
#endif
throw (43);
}
(void) my_airspy_set_sample_type (device, AIRSPY_SAMPLE_INT16_IQ);
@@ -99,7 +118,12 @@ uint32_t samplerate_count;
if (selectedRate == 0) {
fprintf (stderr, "Sorry. cannot help you\n");
return;
#ifdef __MINGW32__
FreeLibrary (Handle);
#else
dlclose (Handle);
#endif
throw (44);
}
else
fprintf (stderr, "selected samplerate = %d\n", selectedRate);
@@ -108,7 +132,12 @@ uint32_t samplerate_count;
if (result != AIRSPY_SUCCESS) {
printf ("airspy_set_samplerate() failed: %s (%d)\n",
my_airspy_error_name((enum airspy_error)result), result);
return;
#ifdef __MINGW32__
FreeLibrary (Handle);
#else
dlclose (Handle);
#endif
throw (45);
}
// The sizes of the mapTable and the convTable are
@@ -120,24 +149,18 @@ uint32_t samplerate_count;
mapTable_int [i] = int (floor (i * (inVal / 2048.0)));
mapTable_float [i] = i * (inVal / 2048.0) - mapTable_int [i];
}
convIndex = 0;
convBuffer = new DSPCOMPLEX [convBufferSize + 1];
theBuffer = new RingBuffer<DSPCOMPLEX> (512 *1024);
convIndex = 0;
convBuffer = new std::complex<float> [convBufferSize + 1];
theBuffer = new RingBuffer<std::complex<float>> (512 *1024);
running = false;
*success = true;
return;
err:
#ifdef __MINGW32__
FreeLibrary (Handle);
#else
if (Handle != NULL)
dlclose (Handle);
#endif
Handle = NULL;
libraryLoaded = false;
*success = false;
return;
//
// Here we set the gain and frequency
(void)my_airspy_set_freq (device, frequency);
int16_t tmp = theGain * 21 / 100;
(void) my_airspy_set_sensitivity_gain (device, tmp);
}
airspyHandler::~airspyHandler (void) {
@@ -180,7 +203,7 @@ int result = my_airspy_set_freq (device, frequency = nf);
}
int32_t airspyHandler::getVFOFrequency (void) {
return lastFrequency;
return frequency;
}
bool airspyHandler::restartReader (void) {
@@ -278,11 +301,11 @@ airspyHandler *p;
int airspyHandler::data_available (void *buf, int buf_size) {
int16_t *sbuf = (int16_t *)buf;
int nSamples = buf_size / (sizeof (int16_t) * 2);
DSPCOMPLEX temp [2048];
std::complex<float> temp [2048];
int32_t i, j;
for (i = 0; i < nSamples; i ++) {
convBuffer [convIndex ++] = DSPCOMPLEX (sbuf [2 * i] / (float)2048,
convBuffer [convIndex ++] = std::complex<float> (sbuf [2 * i] / (float)2048,
sbuf [2 * i + 1] / (float)2048);
if (convIndex > convBufferSize) {
for (j = 0; j < 2048; j ++) {
@@ -342,21 +365,11 @@ int16_t airspyHandler::bitDepth (void) {
return 13;
}
int32_t airspyHandler::getRate (void) {
return inputRate;
}
int32_t airspyHandler::getSamples (DSPCOMPLEX *v, int32_t size) {
int32_t airspyHandler::getSamples (std::complex<float> *v, int32_t size) {
return theBuffer -> getDataFromBuffer (v, size);
}
int32_t airspyHandler::getSamples (DSPCOMPLEX *V,
int32_t size, uint8_t M) {
(void)M;
return getSamples (V, size);
}
int32_t airspyHandler::Samples (void) {
return theBuffer -> GetRingBufferReadAvailable ();
}

View File

@@ -10,16 +10,27 @@
* @license GPL-3.0+ <http://spdx.org/licenses/GPL-3.0+>
*
* recoding and taking parts for the airspyRadio interface
* for the SDR-J-FM receiver
* for the DAB library
* jan van Katwijk
* Lazy Chair Computing
*/
#ifndef __AIRSPY_RADIO__
#define __AIRSPY_RADIO__
#ifndef __AIRSPY_HANDLER__
#define __AIRSPY_HANDLER__
#include "dab-constants.h"
#include "ringbuffer.h"
#include "virtual-input.h"
#include "device-handler.h"
#include <complex>
#ifdef __MINGW32__
#include "windows.h"
#else
#ifndef __FREEBSD__
#include "alloca.h"
#endif
#include "dlfcn.h"
typedef void *HINSTANCE;
#endif
#ifndef __MINGW32__
#include "libairspy/airspy.h"
#else
@@ -74,22 +85,19 @@ typedef int (*pfn_airspy_set_linearity_gain) (struct airspy_device* device, uint
typedef int (*pfn_airspy_set_sensitivity_gain)(struct airspy_device* device, uint8_t value);
}
class airspyHandler: public virtualInput {
class airspyHandler: public deviceHandler {
public:
airspyHandler (bool *, int, int);
airspyHandler (int32_t, int16_t, int16_t);
~airspyHandler (void);
void setVFOFrequency (int32_t nf);
void setVFOFrequency (int32_t);
int32_t getVFOFrequency (void);
bool restartReader (void);
void stopReader (void);
int32_t getSamples (DSPCOMPLEX *v, int32_t size);
int32_t getSamples (std::complex<float> *v,
int32_t size);
int32_t Samples (void);
void resetBuffer (void);
int16_t bitDepth (void);
//
int32_t getRate (void);
int32_t getSamples (DSPCOMPLEX *V,
int32_t size, uint8_t M);
void setGain (int32_t);
private:
bool load_airspyFunctions (void);
@@ -119,20 +127,21 @@ private:
pfn_airspy_board_partid_serialno_read
my_airspy_board_partid_serialno_read;
//
int32_t frequency;
int16_t ppmCorrection;
int16_t gain;
HINSTANCE Handle;
bool libraryLoaded;
bool success;
bool running;
const char* board_id_name (void);
int gain;
int frequency;
int32_t selectedRate;
DSPCOMPLEX *convBuffer;
std::complex<float> *convBuffer;
int16_t convBufferSize;
int16_t convIndex;
int16_t mapTable_int [4 * 512];
float mapTable_float [4 * 512];
RingBuffer<DSPCOMPLEX> *theBuffer;
RingBuffer<std::complex<float>> *theBuffer;
int32_t inputRate;
struct airspy_device* device;
uint64_t serialNumber;

View File

@@ -0,0 +1,81 @@
#
/*
* Copyright (C) 2010, 2011, 2012
* Jan van Katwijk (J.vanKatwijk@gmail.com)
* Lazy Chair Programming
*
* This file is part of the DAB library
*
* DAB library 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.
*
* DAB library 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 DAB library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Default (void) implementation of
* virtual input class
*/
#include "device-handler.h"
deviceHandler::deviceHandler (void) {
lastFrequency = 100000;
}
deviceHandler::~deviceHandler (void) {
}
void deviceHandler::setVFOFrequency (int32_t f) {
lastFrequency = f;
}
int32_t deviceHandler::getVFOFrequency (void) {
return lastFrequency;
}
bool deviceHandler::restartReader (void) {
return true;
}
void deviceHandler::stopReader (void) {
}
int32_t deviceHandler::getSamples (std::complex<float> *v,
int32_t amount) {
(void)v;
(void)amount;
return 0;
}
int32_t deviceHandler::Samples (void) {
return 0;
}
int32_t deviceHandler::defaultFrequency (void) {
return 220000000;
}
void deviceHandler::resetBuffer (void) {
}
void deviceHandler::setGain (int32_t x) {
(void)x;
}
bool deviceHandler::has_autogain (void) {
return false;
}
void deviceHandler::set_autogain (bool b) {
(void)b;
}

View File

@@ -4,7 +4,7 @@
* Jan van Katwijk (J.vanKatwijk@gmail.com)
* Lazy Chair Programming
*
* This file is part of the DAB kibrary
* This file is part of the DAB library
* DAB library 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
@@ -65,16 +65,21 @@ void controlThread (rtlsdrHandler *theStick) {
}
//
// Our wrapper is a simple classs
rtlsdrHandler::rtlsdrHandler (bool *success,
int gain, int frequency) {
rtlsdrHandler::rtlsdrHandler (int32_t frequency,
int16_t ppmCorrection,
int16_t gain,
bool autogain,
uint16_t deviceIndex) {
int16_t deviceCount;
int32_t r;
int16_t deviceIndex;
int16_t i;
*success = false; // just the default
this -> gain = gain;
this -> frequency = frequency;
this -> ppmCorrection = ppmCorrection;
this -> gain = gain;
this -> autogain = autogain;
this -> deviceIndex = deviceIndex;
inputRate = 2048000;
libraryLoaded = false;
open = false;
@@ -93,37 +98,50 @@ int16_t i;
#endif
if (Handle == NULL) {
fprintf (stderr, "failed to open %s\n", libraryString);
return;
fprintf (stderr, "failed to open %s, fatal\n", libraryString);
throw (41);
}
libraryLoaded = true;
if (!load_rtlFunctions ())
goto err;
throw (42);
//
// Ok, from here we have the library functions accessible
deviceCount = this -> rtlsdr_get_device_count ();
if (deviceCount == 0) {
fprintf (stderr, "No devices found\n");
return;
fprintf (stderr, "No devices found, fatal\n");
#ifdef __MINGW32__
FreeLibrary (Handle);
#else
dlclose (Handle);
#endif
throw (43);
}
deviceIndex = 0; // default
//
// OK, now open the hardware
r = this -> rtlsdr_open (&device, deviceIndex);
if (r < 0) {
fprintf (stderr, "Opening rtlsdr failed\n");
*success = false;
return;
fprintf (stderr, "Opening rtlsdr failed, fatal\n");
#ifdef __MINGW32__
FreeLibrary (Handle);
#else
dlclose (Handle);
#endif
throw (44);
}
open = true;
r = this -> rtlsdr_set_sample_rate (device,
inputRate);
if (r < 0) {
fprintf (stderr, "Setting samplerate failed\n");
*success = false;
return;
fprintf (stderr, "Setting samplerate failed, fatal\n");
this -> rtlsdr_close (device);
#ifdef __MINGW32__
FreeLibrary (Handle);
#else
dlclose (Handle);
#endif
throw (45);
}
r = this -> rtlsdr_get_sample_rate (device);
@@ -134,27 +152,16 @@ int16_t i;
fprintf (stderr, "Supported gain values (%d): ", gainsCount);
gains = new int [gainsCount];
gainsCount = rtlsdr_get_tuner_gains (device, gains);
gain = gain * gainsCount / 100;
rtlsdr_set_tuner_gain (device, gain);
for (i = 0; i < gainsCount; i ++)
fprintf (stderr, "%d.%d ", gains [i] / 10, gains [i] % 10);
fprintf (stderr, "\n");
gain = gain * gainsCount / 100;
if (ppmCorrection != 0)
rtlsdr_set_freq_correction (device, ppmCorrection);
if (autogain)
rtlsdr_set_tuner_gain_mode (device, true);
rtlsdr_set_tuner_gain (device, gains [gain]);
_I_Buffer = new RingBuffer<uint8_t>(1024 * 1024);
*success = true;
return;
err:
if (open)
this -> rtlsdr_close (device);
#ifdef __MINGW32__
FreeLibrary (Handle);
#else
dlclose (Handle);
#endif
libraryLoaded = false;
open = false;
*success = false;
return;
}
rtlsdrHandler::~rtlsdrHandler (void) {
@@ -162,6 +169,7 @@ err:
this -> rtlsdr_cancel_async (device);
workerHandle. join ();
}
running = false;
if (open)
this -> rtlsdr_close (device);
@@ -183,8 +191,8 @@ void rtlsdrHandler::setVFOFrequency (int32_t f) {
(void)(this -> rtlsdr_set_center_freq (device, f + vfoOffset));
}
void rtlsdrHandler::getVFOFrequency (int32_t *f) {
*f = (int32_t)(this -> rtlsdr_get_center_freq (device)) - vfoOffset;
int32_t rtlsdrHandler::getVFOFrequency (void) {
return (int32_t)(this -> rtlsdr_get_center_freq (device)) - vfoOffset;
}
//
//
@@ -218,8 +226,12 @@ void rtlsdrHandler::setGain (int32_t g) {
theGain = gains [g * gainsCount / 100];
rtlsdr_set_tuner_gain (device, theGain);
}
void rtlsdrHandler::setAgc (bool b) {
bool rtlsdrHandler::has_autogain (void) {
return true;
}
void rtlsdrHandler::set_autogain (bool b) {
rtlsdr_set_tuner_gain_mode (device, b);
rtlsdr_set_tuner_gain (device, theGain);
}
@@ -228,14 +240,15 @@ void rtlsdrHandler::setAgc (bool b) {
// The brave old getSamples. For the dab stick, we get
// size samples: still in I/Q pairs, but we have to convert the data from
// uint8_t to DSPCOMPLEX *
int32_t rtlsdrHandler::getSamples (DSPCOMPLEX *V, int32_t size) {
int32_t rtlsdrHandler::getSamples (std::complex<float> *V, int32_t size) {
int32_t amount, i;
uint8_t *tempBuffer = (uint8_t *)alloca (2 * size * sizeof (uint8_t));
//
amount = _I_Buffer -> getDataFromBuffer (tempBuffer, 2 * size);
for (i = 0; i < amount / 2; i ++)
V [i] = DSPCOMPLEX ((float (tempBuffer [2 * i] - 128)) / 128.0,
(float (tempBuffer [2 * i + 1] - 128)) / 128.0);
V [i] = std::complex<float>
((float (tempBuffer [2 * i] - 128)) / 128.0,
(float (tempBuffer [2 * i + 1] - 128)) / 128.0);
return amount / 2;
}

View File

@@ -1,6 +1,6 @@
#
/*
* Copyright (C) 2010, 2011, 2012, 2013
* Copyright (C) 2012 .. 2017
* Jan van Katwijk (J.vanKatwijk@gmail.com)
* Lazy Chair Programming
*
@@ -23,11 +23,12 @@
#ifndef __RTLSDR_HANDLER__
#define __RTLSDR_HANDLER__
#include "dab-constants.h"
#include <dlfcn.h>
#include "ringbuffer.h"
#include "virtual-input.h"
#include "device-handler.h"
#include <thread>
class dll_driver;
typedef void *HINSTANCE;
//
// create typedefs for the library functions
typedef struct rtlsdr_dev rtlsdr_dev_t;
@@ -58,25 +59,28 @@ typedef char *(* pfnrtlsdr_get_device_name)(int);
// This class is a simple wrapper around the
// rtlsdr library that is read is as dll
// It does not do any processing
class rtlsdrHandler: public virtualInput {
class rtlsdrHandler: public deviceHandler {
public:
rtlsdrHandler (bool *, int gain, int frequency);
rtlsdrHandler (int32_t frequency,
int16_t ppmCorrection,
int16_t gain,
bool autogain,
uint16_t deviceIndex = 0);
~rtlsdrHandler (void);
void setVFOFrequency (int32_t);
void getVFOFrequency (int32_t *);
int32_t getVFOFrequency (void);
// interface to the reader
bool restartReader (void);
void stopReader (void);
int32_t getSamples (DSPCOMPLEX *, int32_t);
int32_t getSamples (DSPCOMPLEX *, int32_t, int32_t);
int32_t getSamples (std::complex<float> *, int32_t);
int32_t Samples (void);
int32_t getSamplesMissed (void);
void resetBuffer (void);
int16_t maxGain (void);
int16_t bitDepth (void);
//
void setGain (int32_t);
void setAgc (bool);
bool has_autogain (void);
void set_autogain (bool);
//
// These need to be visible for the separate usb handling thread
RingBuffer<uint8_t> *_I_Buffer;
@@ -86,6 +90,9 @@ public:
private:
int32_t inputRate;
int32_t deviceCount;
uint16_t deviceIndex;
bool autogain;
int16_t ppmCorrection;
HINSTANCE Handle;
std::thread workerHandle;
int32_t lastFrequency;

View File

@@ -25,20 +25,25 @@
#define DEFAULT_GAIN 40
sdrplayHandler::sdrplayHandler (bool *success,
int gain, int frequency) {
sdrplayHandler::sdrplayHandler (int32_t frequency,
int16_t ppm,
int16_t gain,
bool autoGain,
uint16_t deviceIndex,
int16_t antenna) {
int err;
float ver;
mir_sdr_DeviceT devDesc [4];
*success = false;
this -> currentGain = 102 - gain;
this -> vfoFrequency = frequency;
this -> inputRate = Khz (2048);
this -> inputRate = 2048000;
this -> frequency = frequency;
this -> ppmCorrection = ppmCorrection;
this -> theGain = gain;
this -> deviceIndex = deviceIndex;
this -> autogain = autogain;
_I_Buffer = NULL;
libraryLoaded = false;
*success = false;
#ifdef __MINGW32__
HKEY APIkey;
@@ -47,10 +52,10 @@ ULONG APIkeyValue_length = 255;
if (RegOpenKey (HKEY_LOCAL_MACHINE,
TEXT("Software\\MiricsSDR\\API"),
&APIkey) != ERROR_SUCCESS) {
fprintf (stderr,
fprintf (stderr,
"failed to locate API registry entry, error = %d\n",
(int)GetLastError());
return;
throw (41);
}
RegQueryValueEx (APIkey,
(wchar_t *)L"Install_Dir",
@@ -68,7 +73,7 @@ ULONG APIkeyValue_length = 255;
Handle = LoadLibrary (x);
if (Handle == NULL) {
fprintf (stderr, "Failed to open mir_sdr_api.dll\n");
return;
throw (42);
}
#else
// Ǹote that under Ubuntu, the Mirics shared object does not seem to be
@@ -81,38 +86,75 @@ ULONG APIkeyValue_length = 255;
if (Handle == NULL) {
fprintf (stderr, "error report %s\n", dlerror ());
return;
throw (43);
}
#endif
libraryLoaded = true;
*success = loadFunctions ();
if (!(*success)) {
if (!loadFunctions ()) {
fprintf (stderr, " No success in loading sdrplay lib\n");
return;
throw (44);
}
err = my_mir_sdr_ApiVersion (&ver);
if (ver != MIR_SDR_API_VERSION) {
fprintf (stderr, "Foute API: %f, %d\n", ver, err);
err = my_mir_sdr_ApiVersion (&ver);
if (ver < 2.05) {
fprintf (stderr, "sorry, library too old\n");
#ifdef __MINGW32__
FreeLibrary (Handle);
#else
dlclose (Handle);
#endif
throw (24);
}
_I_Buffer = new RingBuffer<DSPCOMPLEX>(2 * 1024 * 1024);
my_mir_sdr_GetDevices (devDesc, &numofDevs, uint32_t (4));
if (numofDevs == 0) {
fprintf (stderr, "Sorry, no device found\n");
#ifdef __MINGW32__
FreeLibrary (Handle);
#else
dlclose (Handle);
#endif
throw (25);
}
if (deviceIndex >= numofDevs)
this -> deviceIndex = 0;
hwVersion = devDesc [deviceIndex]. hwVer;
fprintf (stderr, "sdrdevice found = %s, hw Version = %d\n",
devDesc [deviceIndex]. SerNo, hwVersion);
my_mir_sdr_SetDeviceIdx (deviceIndex);
if (hwVersion >= 2) {
if (antenna == 0)
err = my_mir_sdr_RSPII_AntennaControl (mir_sdr_RSPII_ANTENNA_A);
else
err = my_mir_sdr_RSPII_AntennaControl (mir_sdr_RSPII_ANTENNA_B);
}
_I_Buffer = new RingBuffer<std::complex<float>>(2 * 1024 * 1024);
//
running = false;
agcMode = false;
*success = true;
}
sdrplayHandler::~sdrplayHandler (void) {
stopReader ();
if (numofDevs > 0)
my_mir_sdr_ReleaseDeviceIdx (deviceIndex);
if (_I_Buffer != NULL)
delete _I_Buffer;
#ifdef __MINGW32__
FreeLibrary (Handle);
#else
dlclose (Handle);
#endif
}
//
#define KHz(x) (x * 1000)
#define MHz(x) (KHz (x) * 1000)
static inline
int16_t bankFor_sdr (int32_t freq) {
if (freq < 10 * Khz (1))
if (freq < 10 * KHz (1))
return -1;
if (freq < 12 * MHz (1))
return 1;
@@ -143,13 +185,13 @@ int samplesPerPacket;
return;
if (!running) {
vfoFrequency = newFrequency;
frequency = newFrequency;
return;
}
if (bankFor_sdr (realFreq) == bankFor_sdr (vfoFrequency)) {
if (bankFor_sdr (realFreq) == bankFor_sdr (frequency)) {
my_mir_sdr_SetRf (float (realFreq), 1, 0);
vfoFrequency = realFreq;
frequency = realFreq;
return;
}
stopReader ();
@@ -157,7 +199,7 @@ int samplesPerPacket;
}
int32_t sdrplayHandler::getVFOFrequency (void) {
return vfoFrequency - vfoOffset;
return frequency - vfoOffset;
}
int16_t sdrplayHandler::maxGain (void) {
@@ -167,14 +209,18 @@ int16_t sdrplayHandler::maxGain (void) {
// For the setting of gain, not using a widget, we map the
// gain value upon an attenation value and set setexternal Gain
void sdrplayHandler::setGain (int32_t g) {
currentGain = 101 - g;
my_mir_sdr_SetGr (currentGain, 1, 0);
theGain = g;
my_mir_sdr_SetGr (102 - theGain, 1, 0);
}
void sdrplayHandler::setAgc (bool b) {
my_mir_sdr_AgcControl (b, -currentGain, 0, 0, 0, 0, 0);
bool sdrplayHandler::has_autogain (void) {
return true;
}
void sdrplayHandler::set_autogain (bool b) {
my_mir_sdr_AgcControl (b, - (102 - theGain), 0, 0, 0, 0, 0);
if (!b)
my_mir_sdr_SetGr (currentGain, 1, 0);
my_mir_sdr_SetGr ((102 - theGain), 1, 0);
}
static
@@ -189,11 +235,11 @@ void myStreamCallback (int16_t *xi,
void *cbContext) {
int16_t i;
sdrplayHandler *p = static_cast<sdrplayHandler *> (cbContext);
DSPCOMPLEX *localBuf = (DSPCOMPLEX *)alloca (numSamples * sizeof (DSPCOMPLEX));
std::complex<float> localBuf [numSamples];
for (i = 0; i < (int)numSamples; i ++)
localBuf [i] = DSPCOMPLEX (float (xi [i]) / 2048.0,
float (xq [i]) / 2048.0);
localBuf [i] = std::complex<float> (float (xi [i]) / 2048.0,
float (xq [i]) / 2048.0);
p -> _I_Buffer -> putDataIntoBuffer (localBuf, numSamples);
(void) firstSampleNum;
(void) grChanged;
@@ -210,22 +256,25 @@ void myGainChangeCallback (uint32_t gRdB,
(void)cbContext;
}
#define MHz_1 1000000
bool sdrplayHandler::restartReader (void) {
int gRdBSystem;
int samplesPerPacket;
mir_sdr_ErrT err;
int localGain = 102 - theGain;
if (running)
return true;
err = my_mir_sdr_StreamInit (&currentGain,
double (inputRate) / MHz (1),
double (vfoFrequency) / Mhz (1),
err = my_mir_sdr_StreamInit (&localGain,
double (inputRate) / MHz_1,
double (frequency) / MHz_1,
mir_sdr_BW_1_536,
mir_sdr_IF_Zero,
0, // lnaEnable do not know yet
&gRdBSystem,
agcMode, // useGrAltMode,do not know yet
autogain, // useGrAltMode,do not know yet
&samplesPerPacket,
(mir_sdr_StreamCallback_t)myStreamCallback,
(mir_sdr_GainChangeCallback_t)myGainChangeCallback,
@@ -234,17 +283,21 @@ mir_sdr_ErrT err;
fprintf (stderr, "Error %d on streamInit\n", err);
return false;
}
// my_mir_sdr_DebugEnable (1);
err = my_mir_sdr_SetDcMode (4, 1);
err = my_mir_sdr_SetDcTrackTime (63);
my_mir_sdr_SetPpm ((float)ppmCorrection);
// my_mir_sdr_SetRf ((float)frequency, 1, 0);
// my_mir_sdr_SetGr (102 - theGain, 1, 0);
// if (autogain)
// my_mir_sdr_AgcControl (autogain, -(102 - theGain), 0, 0, 0, 0, 1);
err = my_mir_sdr_SetDcMode (4, 1);
err = my_mir_sdr_SetDcTrackTime (63);
//
my_mir_sdr_SetSyncUpdatePeriod ((int)(inputRate / 2));
my_mir_sdr_SetSyncUpdateSampleNum (samplesPerPacket);
// my_mir_sdr_AgcControl (1, -30, 0, 0, 0, 0, 0);
my_mir_sdr_DCoffsetIQimbalanceControl (0, 1);
running = true;
return true;
my_mir_sdr_SetSyncUpdatePeriod ((int)(inputRate / 2));
my_mir_sdr_SetSyncUpdateSampleNum (samplesPerPacket);
my_mir_sdr_DCoffsetIQimbalanceControl (0, 1);
running = true;
return true;
}
void sdrplayHandler::stopReader (void) {
@@ -258,8 +311,8 @@ void sdrplayHandler::stopReader (void) {
//
// The brave old getSamples. For the mirics stick, we get
// size still in I/Q pairs
// Note that the sdrPlay returns 10 bit values
int32_t sdrplayHandler::getSamples (DSPCOMPLEX *V, int32_t size) {
// Note that the sdrPlay returns 12 bit values
int32_t sdrplayHandler::getSamples (std::complex<float> *V, int32_t size) {
return _I_Buffer -> getDataFromBuffer (V, size);
}
@@ -276,7 +329,6 @@ int16_t sdrplayHandler::bitDepth (void) {
}
bool sdrplayHandler::loadFunctions (void) {
my_mir_sdr_StreamInit = (pfn_mir_sdr_StreamInit)
GETPROCADDRESS (this -> Handle,
"mir_sdr_StreamInit");
@@ -391,6 +443,56 @@ bool sdrplayHandler::loadFunctions (void) {
fprintf (stderr, "Could not find mir_sdr_DCoffsetIQimbalanceControl\n");
return false;
}
my_mir_sdr_ResetUpdateFlags = (pfn_mir_sdr_ResetUpdateFlags)
GETPROCADDRESS (Handle, "mir_sdr_ResetUpdateFlags");
if (my_mir_sdr_ResetUpdateFlags == NULL) {
fprintf (stderr, "Could not find mir_sdr_ResetUpdateFlags\n");
return false;
}
my_mir_sdr_GetDevices = (pfn_mir_sdr_GetDevices)
GETPROCADDRESS (Handle, "mir_sdr_GetDevices");
if (my_mir_sdr_GetDevices == NULL) {
fprintf (stderr, "Could not find mir_sdr_GetDevices");
return false;
}
my_mir_sdr_GetCurrentGain = (pfn_mir_sdr_GetCurrentGain)
GETPROCADDRESS (Handle, "mir_sdr_GetCurrentGain");
if (my_mir_sdr_GetCurrentGain == NULL) {
fprintf (stderr, "Could not find mir_sdr_GetCurrentGain");
return false;
}
my_mir_sdr_GetHwVersion = (pfn_mir_sdr_GetHwVersion)
GETPROCADDRESS (Handle, "mir_sdr_GetHwVersion");
if (my_mir_sdr_GetHwVersion == NULL) {
fprintf (stderr, "Could not find mir_sdr_GetHwVersion");
return false;
}
my_mir_sdr_RSPII_AntennaControl = (pfn_mir_sdr_RSPII_AntennaControl)
GETPROCADDRESS (Handle, "mir_sdr_RSPII_AntennaControl");
if (my_mir_sdr_RSPII_AntennaControl == NULL) {
fprintf (stderr, "Could not find mir_sdr_RSPII_AntennaControl");
return false;
}
my_mir_sdr_SetDeviceIdx = (pfn_mir_sdr_SetDeviceIdx)
GETPROCADDRESS (Handle, "mir_sdr_SetDeviceIdx");
if (my_mir_sdr_SetDeviceIdx == NULL) {
fprintf (stderr, "Could not find mir_sdr_SetDeviceIdx");
return false;
}
my_mir_sdr_ReleaseDeviceIdx = (pfn_mir_sdr_ReleaseDeviceIdx)
GETPROCADDRESS (Handle, "mir_sdr_ReleaseDeviceIdx");
if (my_mir_sdr_ReleaseDeviceIdx == NULL) {
fprintf (stderr, "Could not find mir_sdr_ReleaseDeviceIdx");
return false;
}
return true;
}

View File

@@ -25,11 +25,12 @@
#ifndef __SDRPLAY_HANDLER__
#define __SDRPLAY_HANDLER__
#include "dab-constants.h"
#include <dlfcn.h>
#include "ringbuffer.h"
#include "virtual-input.h"
#include "device-handler.h"
#include "mirsdrapi-rsp.h"
#include "sdrplay-handler.h" // our header
typedef void *HINSTANCE;
typedef void (*mir_sdr_StreamCallback_t)(int16_t *xi,
int16_t *xq,
@@ -74,27 +75,39 @@ typedef mir_sdr_ErrT (*pfn_mir_sdr_AgcControl)(uint32_t, int, int, uint32_t,
typedef mir_sdr_ErrT (*pfn_mir_sdr_DCoffsetIQimbalanceControl) (uint32_t, uint32_t);
typedef mir_sdr_ErrT (*pfn_mir_sdr_SetPpm)(double);
typedef mir_sdr_ErrT (*pfn_mir_sdr_DebugEnable)(uint32_t);
typedef mir_sdr_ErrT (*pfn_mir_sdr_GetDevices) (mir_sdr_DeviceT *, uint32_t *, uint32_t);
typedef mir_sdr_ErrT (*pfn_mir_sdr_GetCurrentGain) (mir_sdr_GainValuesT *);
typedef mir_sdr_ErrT (*pfn_mir_sdr_GetHwVersion) (unsigned char *);
typedef mir_sdr_ErrT (*pfn_mir_sdr_RSPII_AntennaControl) (mir_sdr_RSPII_AntennaSelectT);
typedef mir_sdr_ErrT (*pfn_mir_sdr_SetDeviceIdx) (unsigned int);
typedef mir_sdr_ErrT (*pfn_mir_sdr_ReleaseDeviceIdx) (unsigned int);
///////////////////////////////////////////////////////////////////////////
class sdrplayHandler: public virtualInput {
class sdrplayHandler: public deviceHandler {
public:
sdrplayHandler (bool *, int, int);
sdrplayHandler (int32_t frequency,
int16_t ppmCorrection,
int16_t gain,
bool autogain,
uint16_t deviceIndex,
int16_t antenna);
~sdrplayHandler (void);
void setVFOFrequency (int32_t);
int32_t getVFOFrequency (void);
bool restartReader (void);
void stopReader (void);
int32_t getSamples (DSPCOMPLEX *, int32_t);
int32_t getSamples (std::complex<float> *, int32_t);
int32_t Samples (void);
void resetBuffer (void);
int16_t maxGain (void);
int16_t bitDepth (void);
RingBuffer<DSPCOMPLEX> *_I_Buffer;
void setGain (int32_t);
void setAgc (bool);
bool has_autogain (void);
void set_autogain (bool);
RingBuffer<std::complex<float>> *_I_Buffer;
private:
pfn_mir_sdr_StreamInit my_mir_sdr_StreamInit;
pfn_mir_sdr_Reinit my_mir_sdr_Reinit;
@@ -117,14 +130,25 @@ private:
my_mir_sdr_DCoffsetIQimbalanceControl;
pfn_mir_sdr_SetPpm my_mir_sdr_SetPpm;
pfn_mir_sdr_DebugEnable my_mir_sdr_DebugEnable;
pfn_mir_sdr_GetDevices my_mir_sdr_GetDevices;
pfn_mir_sdr_GetCurrentGain my_mir_sdr_GetCurrentGain;
pfn_mir_sdr_GetHwVersion my_mir_sdr_GetHwVersion;
pfn_mir_sdr_RSPII_AntennaControl my_mir_sdr_RSPII_AntennaControl;
pfn_mir_sdr_SetDeviceIdx my_mir_sdr_SetDeviceIdx;
pfn_mir_sdr_ReleaseDeviceIdx my_mir_sdr_ReleaseDeviceIdx;
int16_t hwVersion;
uint16_t deviceIndex;
uint32_t numofDevs;
bool loadFunctions (void);
int32_t inputRate;
int32_t vfoFrequency;
int currentGain;
int32_t frequency;
int16_t ppmCorrection;
int theGain;
bool libraryLoaded;
bool running;
HINSTANCE Handle;
bool agcMode;
bool autogain;
};
#endif

View File

View File

View File

100
example/CMakeLists.txt → example-1/CMakeLists.txt Executable file → Normal file
View File

@@ -20,6 +20,96 @@ set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "")
### make sure our local CMake Modules path comes first
list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_SOURCE_DIR}/cmake/Modules)
######################################################################
if(DEFINED AIRSPY)
set(AIRSPY true)
endif ()
if(DEFINED SDRPLAY)
set(SDRPLAY true)
endif ()
if(DEFINED RTLSDR)
set(RTLSDR true)
endif ()
#########################################################################
find_package (PkgConfig)
##########################################################################
# The devices
#
if (SDRPLAY)
find_path (SDRPLAYLIB_INCLUDE_DIR
NAMES mirsdrapi-rsp.h
PATHS
/usr/local/include/
)
include_directories (${SDRPLAYLIB_INCLUDE_DIR})
include_directories (
../devices/sdrplay-handler
)
set ($(objectName)_HDRS
${${objectName}_HDRS}
../devices/sdrplay-handler/sdrplay-handler.h
)
set (${objectName}_SRCS
${${objectName}_SRCS}
../devices/sdrplay-handler/sdrplay-handler.cpp
)
add_definitions (-DHAVE_SDRPLAY)
endif (SDRPLAY)
if (AIRSPY)
find_package(LibAIRSPY)
if (NOT LIBAIRSPY_FOUND)
message(FATAL_ERROR "please install airspy library")
endif ()
### include_directories (${AIRSPYLIB_INCLUDE_DIR})
include_directories (
../devices/airspy-handler
)
set ($(objectName)_HDRS
${${objectName}_HDRS}
../devices/airspy-handler/airspy-handler.h
)
set (${objectName}_SRCS
${${objectName}_SRCS}
../devices/airspy-handler/airspy-handler.cpp
)
add_definitions (-DHAVE_AIRSPY)
endif (AIRSPY)
if (RTLSDR)
find_package(LibRTLSDR)
if (NOT LIBRTLSDR_FOUND)
message(FATAL_ERROR "please install librtlsdr")
endif ()
###include_directories (${RTLSDR_INCLUDE_DIR})
include_directories (
../devices/rtlsdr-handler/
)
set (${objectName}_HDRS
${${objectName}_HDRS}
../devices/rtlsdr-handler/rtlsdr-handler.h
)
set (${objectName}_SRCS
${${objectName}_SRCS}
../devices/rtlsdr-handler/rtlsdr-handler.cpp
)
add_definitions (-DHAVE_RTLSDR)
endif()
######################################################################
find_package (PkgConfig)
@@ -36,7 +126,8 @@ list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_SOURCE_DIR}/cmake/Modules)
include_directories (
${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}
../dab-library
../
../devices
)
#
find_package(LibSampleRate)
@@ -54,11 +145,14 @@ list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_SOURCE_DIR}/cmake/Modules)
set (${objectName}_HDRS
${${objectName}_HDRS}
../dab-library/dab-api.h
../dab-api.h
../includes/dab-constants.h
./ringbuffer.h
./audio-base.h
./audiosink.h
./newconverter.h
./band-handler.h
../devices/device-handler.h
)
set (${objectName}_SRCS
@@ -67,6 +161,8 @@ list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_SOURCE_DIR}/cmake/Modules)
./audio-base.cpp
./audiosink.cpp
./newconverter.cpp
./band-handler.cpp
../devices/device-handler.cpp
)
add_executable (${objectName}

6
example-1/README Normal file
View File

@@ -0,0 +1,6 @@
This is a simple example of using the DAB library. As you can see in
the main program, all callbacks are defined, most of them with an empty body.
Feel free to improve the program

0
example/audio-base.cpp → example-1/audio-base.cpp Executable file → Normal file
View File

0
example/audio-base.h → example-1/audio-base.h Executable file → Normal file
View File

0
example/audiosink.cpp → example-1/audiosink.cpp Executable file → Normal file
View File

0
example/audiosink.h → example-1/audiosink.h Executable file → Normal file
View File

120
example-1/band-handler.cpp Normal file
View File

@@ -0,0 +1,120 @@
#
/*
* Copyright (C) 2013, 2014, 2015, 2016, 2017
* Jan van Katwijk (J.vanKatwijk@gmail.com)
* Lazy Chair Programming
*
* This file is part of the DAB library
* DAB library 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.
*
* DAB library 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 DAB library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "band-handler.h"
struct dabFrequencies {
const char *key;
int fKHz;
};
static
struct dabFrequencies bandIII_frequencies [] = {
{"5A", 174928},
{"5B", 176640},
{"5C", 178352},
{"5D", 180064},
{"6A", 181936},
{"6B", 183648},
{"6C", 185360},
{"6D", 187072},
{"7A", 188928},
{"7B", 190640},
{"7C", 192352},
{"7D", 194064},
{"8A", 195936},
{"8B", 197648},
{"8C", 199360},
{"8D", 201072},
{"9A", 202928},
{"9B", 204640},
{"9C", 206352},
{"9D", 208064},
{"10A", 209936},
{"10B", 211648},
{"10C", 213360},
{"10D", 215072},
{"11A", 216928},
{"11B", 218640},
{"11C", 220352},
{"11D", 222064},
{"12A", 223936},
{"12B", 225648},
{"12C", 227360},
{"12D", 229072},
{"13A", 230748},
{"13B", 232496},
{"13C", 234208},
{"13D", 235776},
{"13E", 237488},
{"13F", 239200},
{NULL, 0}
};
static
struct dabFrequencies Lband_frequencies [] = {
{"LA", 1452960},
{"LB", 1454672},
{"LC", 1456384},
{"LD", 1458096},
{"LE", 1459808},
{"LF", 1461520},
{"LG", 1463232},
{"LH", 1464944},
{"LI", 1466656},
{"LJ", 1468368},
{"LK", 1470080},
{"LL", 1471792},
{"LM", 1473504},
{"LN", 1475216},
{"LO", 1476928},
{"LP", 1478640},
{NULL, 0}
};
bandHandler::bandHandler (void) {}
bandHandler::~bandHandler (void) {}
// find the frequency for a given channel in a given band
int32_t bandHandler::Frequency (uint8_t dabBand, std::string Channel) {
int32_t tunedFrequency = 0;
struct dabFrequencies *finger;
int i;
if (dabBand == BAND_III)
finger = bandIII_frequencies;
else
finger = Lband_frequencies;
for (i = 0; finger [i]. key != NULL; i ++) {
if (finger [i]. key == Channel) {
tunedFrequency = finger [i]. fKHz * 1000;
break;
}
}
if (tunedFrequency == 0)
tunedFrequency = finger [0]. fKHz * 1000;
return tunedFrequency;
}

41
example-1/band-handler.h Normal file
View File

@@ -0,0 +1,41 @@
#
/*
* Copyright (C) 2013, 2014, 2015, 2016, 2017
* Jan van Katwijk (J.vanKatwijk@gmail.com)
* Lazy Chair Programming
*
* This file is part of the Qt-DAB program
* Qt-DAB 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.
*
* Qt-DAB 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 Qt-DAB; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef __BANDHANDLER__
#define __BANDHANDLER__
#include <stdint.h>
#include <string>
//
// a simple convenience class
//
#define BAND_III 0100
#define L_BAND 0101
class bandHandler {
public:
bandHandler (void);
~bandHandler (void);
int32_t Frequency (uint8_t band, std::string Channel);
};
#endif

344
example-1/main.cpp Normal file
View File

@@ -0,0 +1,344 @@
#
/*
* Copyright (C) 2015, 2016
* Jan van Katwijk (J.vanKatwijk@gmail.com)
* Lazy Chair Programming
*
* This file is part of the DAB-library
*
* DAB-library 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.
*
* DAB-library 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 DAB-library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* E X A M P L E P R O G R A M
* for the DAB-library
*/
#include <unistd.h>
#include <signal.h>
#include <getopt.h>
#include <cstdio>
#include <iostream>
#include "audiosink.h"
#include "dab-api.h"
#include "band-handler.h"
#ifdef HAVE_SDRPLAY
#include "sdrplay-handler.h"
#elif HAVE_AIRSPY
#include "airspy-handler.h"
#elif HAVE_RTLSDR
#include "rtlsdr-handler.h"
#endif
#include <atomic>
using std::cerr;
using std::endl;
// we deal with some callbacks, so we have some data that needs
// to be accessed from global contexts
static
std::atomic<bool> run;
static
void *theRadio = NULL;
static
std::atomic<bool>timeSynced;
static
std::atomic<bool>timesyncSet;
static
std::atomic<bool>ensembleRecognized;
static
audioSink *soundOut = NULL;
std::string programName = "Classic FM";
int32_t serviceId = -1;
static void sighandler (int signum) {
fprintf (stderr, "Signal caught, terminating!\n");
run. store (false);
}
static
void syncsignalHandler (bool b, void *userData) {
timeSynced. store (b);
timesyncSet. store (true);
(void)userData;
}
//
// This function is called whenever the dab engine has taken
// some time to gather information from the FIC bloks
// the Boolean b tells whether or not an ensemble has been
// recognized, the names of the programs are in the
// ensemble
static
void ensemblenameHandler (std::string name, int Id, void *userData) {
fprintf (stderr, "ensemble %s is (%X) recognized\n",
name. c_str (), (uint32_t)Id);
ensembleRecognized. store (true);
}
static
void programnameHandler (std::string s, int SId, void * userdata) {
fprintf (stderr, "%s (%X) is part of the ensemble\n", s. c_str (), SId);
}
static
void programdataHandler (audiodata *d, void *ctx) {
(void)ctx;
fprintf (stderr, "\tstartaddress\t= %d\n", d -> startAddr);
fprintf (stderr, "\tlength\t\t= %d\n", d -> length);
fprintf (stderr, "\tsubChId\t\t= %d\n", d -> subchId);
fprintf (stderr, "\tprotection\t= %d\n", d -> protLevel);
fprintf (stderr, "\tbitrate\t\t= %d\n", d -> bitRate);
}
//
// The function is called from within the library with
// a string, the so-called dynamic label
static
void dataOut_Handler (std::string dynamicLabel, void *ctx) {
(void)ctx;
// fprintf (stderr, "%s\n", dynamicLabel. c_str ());
}
//
// The function is called from within the library with
// a buffer full of PCM samples. We pass them on to the
// audiohandler, based on portaudio.
static
void pcmHandler (int16_t *buffer, int size, int rate,
bool isStereo, void *ctx) {
static bool isStarted = false;
(void)isStereo;
if (!isStarted) {
soundOut -> restart ();
isStarted = true;
}
soundOut -> audioOut (buffer, size, rate);
}
static
void systemData (bool flag, int16_t snr, int32_t freqOff, void *ctx) {
// fprintf (stderr, "synced = %s, snr = %d, offset = %d\n",
// flag? "on":"off", snr, freqOff);
}
static
void fibQuality (int16_t q, void *ctx) {
// fprintf (stderr, "fic quality = %d\n", q);
}
static
void mscQuality (int16_t fe, int16_t rsE, int16_t aacE, void *ctx) {
// fprintf (stderr, "msc quality = %d %d %d\n", fe, rsE, aacE);
}
int main (int argc, char **argv) {
// Default values
uint8_t theMode = 1;
std::string theChannel = "11C";
uint8_t theBand = BAND_III;
int16_t ppmCorrection = 0;
int theGain = 35; // scale = 0 .. 100
std::string soundChannel = "default";
int16_t latency = 10;
bool autogain = false;
int opt;
struct sigaction sigact;
bandHandler dabBand;
deviceHandler *theDevice;
fprintf (stderr, "dab_cmdline, \
Copyright 2017 J van Katwijk, Lazy Chair Computing");
timeSynced. store (false);
timesyncSet. store (false);
run. store (false);
while ((opt = getopt (argc, argv, "M:B:C:P:G:A:L:S:Q")) != -1) {
switch (opt) {
case 'M':
theMode = atoi (optarg);
if (!(theMode == 1) || (theMode == 2) || (theMode == 4))
theMode = 1;
break;
case 'B':
theBand = std::string (optarg) == std::string ("L_BAND") ?
L_BAND : BAND_III;
break;
case 'C':
theChannel = std::string (optarg);
break;
case 'P':
programName = optarg;
break;
case 'p':
ppmCorrection = atoi (optarg);
break;
case 'G':
theGain = atoi (optarg);
break;
case 'Q':
autogain = true;
break;
case 'A':
soundChannel = optarg;
break;
case 'L':
latency = atoi (optarg);
break;
case 'S': {
std::stringstream ss;
ss << std::hex << optarg;
ss >> serviceId;
break;
}
default:
break;
}
}
//
sigact.sa_handler = sighandler;
sigemptyset(&sigact.sa_mask);
sigact.sa_flags = 0;
// sigaction(SIGINT, &sigact, NULL);
// sigaction(SIGTERM, &sigact, NULL);
// sigaction(SIGQUIT, &sigact, NULL);
bool err;
int32_t frequency = dabBand. Frequency (theBand, theChannel);
try {
#ifdef HAVE_SDRPLAY
theDevice = new sdrplayHandler (frequency,
ppmCorrection,
theGain,
autogain,
0,
0);
#elif HAVE_AIRSPY
theDevice = new airspyHandler (frequency,
ppmCorrection,
theGain);
#elif HAVE_RTLSDR
theDevice = new rtlsdrHandler (frequency,
ppmCorrection,
theGain,
autogain,
0);
#endif
}
catch (int e) {
fprintf (stderr, "allocating device failed, fatal\n");
exit (32);
}
//
// We have a device
soundOut = new audioSink (latency, soundChannel, &err);
if (err) {
fprintf (stderr, "no valid sound channel, fatal\n");
exit (33);
}
//
// and a sound device
theRadio = dabInit (theDevice,
theMode,
NULL, // no spectrum shown
NULL, // no constellations
syncsignalHandler,
systemData,
ensemblenameHandler,
programnameHandler,
fibQuality,
pcmHandler,
dataOut_Handler,
programdataHandler,
mscQuality,
NULL
);
if (theRadio == NULL) {
fprintf (stderr, "sorry, no radio available, fatal\n");
exit (4);
}
theDevice -> setGain (theGain);
if (autogain)
theDevice -> set_autogain (autogain);
theDevice -> setVFOFrequency (frequency);
theDevice -> restartReader ();
//
// The device should be working right now
timesyncSet. store (false);
ensembleRecognized. store (false);
startProcessing (theRadio);
int timeOut = 0;
while (!timesyncSet. load () && (++timeOut < 5))
sleep (1);
if (!timeSynced. load ()) {
cerr << "There does not seem to be a DAB signal here" << endl;
theDevice -> stopReader ();
sleep (1);
dabExit (theRadio);
delete theDevice;
exit (22);
}
else
cerr << "there might be a DAB signal here" << endl;
if (!ensembleRecognized. load ())
while (!ensembleRecognized. load () && (++timeOut < latency)) {
fprintf (stderr, "%d\r", latency - timeOut);
sleep (1);
}
fprintf (stderr, "\n");
if (!ensembleRecognized. load ()) {
fprintf (stderr, "no ensemble data found, fatal\n");
theDevice -> stopReader ();
sleep (1);
dabExit (theRadio);
delete theDevice;
exit (22);
}
fprintf (stderr, "going to start program %s\n", programName. c_str ());
run. store (true);
if (serviceId != -1)
programName = dab_getserviceName (serviceId, theRadio);
if (dab_service (programName, theRadio) < 0) {
fprintf (stderr, "sorry we cannot handle service %s\n",
programName. c_str ());
run. store (false);
}
while (run. load ())
sleep (1);
theDevice -> stopReader ();
dabExit (theRadio);
}

View File

0
example/newconverter.h → example-1/newconverter.h Executable file → Normal file
View File

View File

296
example-2/CMakeLists.txt Normal file
View File

@@ -0,0 +1,296 @@
cmake_minimum_required( VERSION 2.8.11 )
set (objectName dab_cmdline)
add_definitions ( -Wall -g -std=c++11 -O3)
# modify if you want
set (CMAKE_INSTALL_PREFIX /usr/local/)
if(MINGW)
add_definitions ( -municode)
endif()
########################################################################
# 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 "")
### make sure our local CMake Modules path comes first
list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_SOURCE_DIR}/cmake/Modules)
######################################################################
#
#
#########################################################################
find_package (PkgConfig)
find_package(FFTW3f)
if (NOT FFTW3F_FOUND)
message(FATAL_ERROR "please install FFTW3")
endif ()
find_package(Faad)
if (NOT FAAD_FOUND )
message(FATAL_ERROR "please install libfaad")
endif ()
find_package(zlib)
if (NOT ZLIB_FOUND)
message(FATAL_ERROR "please install libz")
endif ()
list(APPEND extraLibs ${ZLIB_LIBRARY})
find_library (PTHREADS pthread)
if (NOT(PTHREADS))
message (FATAL_ERROR "please install libpthread")
else (NOT(PTHREADS))
set (extraLibs ${extraLibs} ${PTHREADS})
endif (NOT(PTHREADS))
find_package(LibSampleRate)
if (NOT LIBSAMPLERATE_FOUND)
message(FATAL_ERROR "please install libsamplerate")
endif ()
list(APPEND extraLibs ${LIBSAMPLERATE_LIBRARY})
find_package(Portaudio)
if (NOT PORTAUDIO_FOUND)
message(FATAL_ERROR "please install portaudio V19")
endif ()
list(APPEND extraLibs ${PORTAUDIO_LIBRARIES})
########################################################################
if(DEFINED AIRSPY)
set(AIRSPY true)
endif ()
if(DEFINED SDRPLAY)
set(SDRPLAY true)
endif ()
if(DEFINED RTLSDR)
set(RTLSDR true)
endif ()
#########################################################################
find_package (PkgConfig)
##########################################################################
# The devices
#
if (SDRPLAY)
find_path (SDRPLAYLIB_INCLUDE_DIR
NAMES mirsdrapi-rsp.h
PATHS
/usr/local/include/
)
include_directories (${SDRPLAYLIB_INCLUDE_DIR})
include_directories (
../devices/sdrplay-handler
)
set ($(objectName)_HDRS
${${objectName}_HDRS}
../devices/sdrplay-handler/sdrplay-handler.h
)
set (${objectName}_SRCS
${${objectName}_SRCS}
../devices/sdrplay-handler/sdrplay-handler.cpp
)
add_definitions (-DHAVE_SDRPLAY)
endif (SDRPLAY)
if (AIRSPY)
find_package(LibAIRSPY)
if (NOT LIBAIRSPY_FOUND)
message(FATAL_ERROR "please install airspy library")
endif ()
### include_directories (${AIRSPYLIB_INCLUDE_DIR})
include_directories (
../devices/airspy-handler
)
set ($(objectName)_HDRS
${${objectName}_HDRS}
../devices/airspy-handler/airspy-handler.h
)
set (${objectName}_SRCS
${${objectName}_SRCS}
../devices/airspy-handler/airspy-handler.cpp
)
add_definitions (-DHAVE_AIRSPY)
endif (AIRSPY)
if (RTLSDR)
find_package(LibRTLSDR)
if (NOT LIBRTLSDR_FOUND)
message(FATAL_ERROR "please install librtlsdr")
endif ()
###include_directories (${RTLSDR_INCLUDE_DIR})
include_directories (
../devices/rtlsdr-handler/
)
set (${objectName}_HDRS
${${objectName}_HDRS}
../devices/rtlsdr-handler/rtlsdr-handler.h
)
set (${objectName}_SRCS
${${objectName}_SRCS}
../devices/rtlsdr-handler/rtlsdr-handler.cpp
)
add_definitions (-DHAVE_RTLSDR)
endif()
#######################################################################
#
# Here we really start
include_directories (
${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}
.
./
../
../library
../library/includes
../library/includes/ofdm
../library/includes/backend
../library/includes/backend/viterbi_768
../library/includes/backend/audio
../library/includes/backend/data
../library/includes/backend/data/journaline
../library/includes/various
/usr/include/
)
set (${objectName}_HDRS
${${objectName}_HDRS}
./ringbuffer.h
./band-handler.h
./audio-base.h
./audiosink.h
./newconverter.h
../devices/device-handler.h
../library/includes/dab-class.h
../library/includes/dab-constants.h
../library/includes/ofdm/ofdm-processor.h
../library/includes/ofdm/phasereference.h
../library/includes/ofdm/phasetable.h
../library/includes/ofdm/freq-interleaver.h
../library/includes/backend/viterbi_768/viterbi-768.h
../library/includes/backend/protection.h
../library/includes/backend/uep-protection.h
../library/includes/backend/eep-protection.h
../library/includes/backend/firecode-checker.h
../library/includes/backend/dab-processor.h
../library/includes/backend/dab-virtual.h
../library/includes/backend/charsets.h
../library/includes/backend/galois.h
../library/includes/backend/msc-handler.h
../library/includes/backend/reed-solomon.h
../library/includes/backend/audio/dab-audio.h
../library/includes/backend/audio/faad-decoder.h
../library/includes/backend/audio/mp4processor.h
../library/includes/backend/audio/mp2processor.h
../library/includes/backend/data/mot-databuilder.h
../library/includes/backend/data/virtual-datahandler.h
../library/includes/backend/data/tdc-datahandler.h
../library/includes/backend/data/pad-handler.h
../library/includes/backend/data/mot-data.h
../library/includes/backend/data/dab-data.h
../library/includes/backend/data/data-processor.h
../library/includes/various/fft.h
../library/includes/various/dab-params.h
../library/includes/various/tii_table.h
)
set (${objectName}_SRCS
${${objectName}_SRCS}
./main.cpp
./audio-base.cpp
./audiosink.cpp
./newconverter.cpp
./band-handler.cpp
../devices/device-handler.cpp
../library/src/dab-class.cpp
../library/src/ofdm/ofdm-processor.cpp
../library/src/ofdm/ofdm-decoder.cpp
../library/src/ofdm/phasereference.cpp
../library/src/ofdm/phasetable.cpp
../library/src/ofdm/freq-interleaver.cpp
../library/src/backend/viterbi_768/viterbi-768.cpp
../library/src/backend/viterbi_768/spiral-no-sse.c
../library/src/backend/fic-handler.cpp
../library/src/backend/msc-handler.cpp
../library/src/backend/protection.cpp
../library/src/backend/eep-protection.cpp
../library/src/backend/uep-protection.cpp
../library/src/backend/fib-processor.cpp
../library/src/backend/firecode-checker.cpp
../library/src/backend/dab-virtual.cpp
../library/src/backend/dab-processor.cpp
../library/src/backend/protTables.cpp
../library/src/backend/charsets.cpp
../library/src/backend/galois.cpp
../library/src/backend/reed-solomon.cpp
../library/src/backend/audio/dab-audio.cpp
../library/src/backend/audio/mp4processor.cpp
../library/src/backend/audio/mp2processor.cpp
../library/src/backend/data/mot-databuilder.cpp
../library/src/backend/data/virtual-datahandler.cpp
../library/src/backend/data/tdc-datahandler.cpp
../library/src/backend/data/pad-handler.cpp
../library/src/backend/data/mot-data.cpp
../library/src/backend/data/dab-data.cpp
../library/src/backend/data/data-processor.cpp
../library/src/various/fft.cpp
../library/src/various/dab-params.cpp
../library/src/various/tii_table.cpp
)
#
include_directories (
${FFTW_INCLUDE_DIRS}
${PORTAUDIO_INCLUDE_DIRS}
${FAAD_INCLUDE_DIRS}
${SNDFILES_INCLUDE_DIRS}
)
#####################################################################
add_executable (${objectName}
${${objectName}_SRCS}
)
target_link_libraries (${objectName}
${FFTW3F_LIBRARIES}
${extraLibs}
${FAAD_LIBRARIES}
${CMAKE_DL_LIBS}
)
INSTALL (TARGETS ${objectName} DESTINATION ./bin)
########################################################################
# Create uninstall target
########################################################################
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
IMMEDIATE @ONLY)
add_custom_target(uninstall
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)

7
example-2/README Normal file
View File

@@ -0,0 +1,7 @@
This is a simple program, not using the library, but binding directly
to the functions implementing the dab decoding.
All callbacks are defined, most of them with an empty body.
Feel free to improve the program

150
example-2/audio-base.cpp Normal file
View File

@@ -0,0 +1,150 @@
#
/*
* Copyright (C) 2011, 2012, 2013
* Jan van Katwijk (J.vanKatwijk@gmail.com)
* Lazy Chair Programming
*
* This file is part of the main program for the DAB library
*
* DAB library 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.
*
* DAB library 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 DAB library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "audio-base.h"
#include <stdio.h>
/*
* The class is the abstract sink for the data generated
* It will handle the "dumping" though
*/
audioBase::audioBase (void):
converter_16 (16000, 48000, 2 * 1600),
converter_24 (24000, 48000, 2 * 2400),
converter_32 (32000, 48000, 4 * 3200) {
}
audioBase::~audioBase (void) {
}
void audioBase::restart (void) {
}
void audioBase::stop (void) {
}
//
// This one is a hack for handling different baudrates coming from
// the aac decoder. call is from the GUI, triggered by the
// aac decoder or the mp2 decoder
void audioBase::audioOut (int16_t *buffer,
int32_t amount, int32_t rate) {
switch (rate) {
case 16000:
audioOut_16000 (buffer, amount / 2);
return;
case 24000:
audioOut_24000 (buffer, amount / 2);
return;
case 32000:
audioOut_32000 (buffer, amount / 2);
return;
default:
case 48000:
audioOut_48000 (buffer, amount / 2);
return;
}
}
//
// scale up from 16 -> 48
// amount gives number of pairs
void audioBase::audioOut_16000 (int16_t *V, int32_t amount) {
DSPCOMPLEX outputBuffer [converter_16. getOutputsize ()];
float buffer [2 * converter_16. getOutputsize ()];
int16_t i;
int32_t result;
for (i = 0; i < amount; i ++)
if (converter_16. convert (DSPCOMPLEX (V [2 * i] / 32767.0,
V [2 * i + 1] / 32767.0),
outputBuffer, &result)) {
for (i = 0; i < result; i ++) {
buffer [2 * i ] = real (outputBuffer [i]);
buffer [2 * i + 1] = imag (outputBuffer [i]);
}
audioOutput (buffer, result);
}
}
// scale up from 24000 -> 48000
// amount gives number of pairs
void audioBase::audioOut_24000 (int16_t *V, int32_t amount) {
DSPCOMPLEX outputBuffer [converter_24. getOutputsize ()];
float buffer [2 * converter_24. getOutputsize ()];
int16_t i;
int32_t result;
for (i = 0; i < amount; i ++)
if (converter_24. convert (DSPCOMPLEX (V [2 * i] / 32767.0,
V [2 * i + 1] / 32767.0),
outputBuffer, &result)) {
for (i = 0; i < result; i ++) {
buffer [2 * i ] = real (outputBuffer [i]);
buffer [2 * i + 1] = imag (outputBuffer [i]);
}
audioOutput (buffer, result);
}
}
//
// scale up from 32000 -> 48000
// amount is number of pairs
void audioBase::audioOut_32000 (int16_t *V, int32_t amount) {
DSPCOMPLEX outputBuffer [converter_32. getOutputsize ()];
float buffer [2 * converter_32. getOutputsize ()];
int32_t i;
int32_t result;
for (i = 0; i < amount; i ++) {
if (converter_32. convert (DSPCOMPLEX (V [2 * i] / 32767.0,
V [2 * i + 1] / 32767.0),
outputBuffer, &result)) {
for (i = 0; i < result; i ++) {
buffer [2 * i ] = real (outputBuffer [i]);
buffer [2 * i + 1] = imag (outputBuffer [i]);
}
audioOutput (buffer, result);
}
}
}
void audioBase::audioOut_48000 (int16_t *V, int32_t amount) {
float *buffer = (float *)alloca (2 * amount * sizeof (float));
int32_t i;
for (i = 0; i < amount; i ++) {
buffer [2 * i] = V [2 * i] / 32767.0;
buffer [2 * i + 1] = V [2 * i + 1] / 32767.0;
}
audioOutput (buffer, amount);
}
//
// The audioOut function is the one that really should be
// reimplemented in the offsprings of this class
void audioBase::audioOutput (float *v, int32_t amount) {
(void)v;
(void)amount;
}

56
example-2/audio-base.h Normal file
View File

@@ -0,0 +1,56 @@
#
/*
* Copyright (C) 2009, 2010, 2011
* Jan van Katwijk (J.vanKatwijk@gmail.com)
* Lazy Chair Programming
*
* This file is part of the main program for the DAB library
*
* DAB library 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.
*
* DAB library 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 DAB library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef __AUDIO_BASE__
#define __AUDIO_BASE__
#include <stdio.h>
#include <samplerate.h>
#include "newconverter.h"
#include "ringbuffer.h"
typedef float DSPFLOAT;
typedef std::complex<DSPFLOAT> DSPCOMPLEX;
using namespace std;
class audioBase {
public:
audioBase (void);
virtual ~audioBase (void);
virtual void stop (void);
virtual void restart (void);
void audioOut (int16_t *, int32_t, int32_t);
private:
void audioOut_16000 (int16_t *, int32_t);
void audioOut_24000 (int16_t *, int32_t);
void audioOut_32000 (int16_t *, int32_t);
void audioOut_48000 (int16_t *, int32_t);
newConverter converter_16;
newConverter converter_24;
newConverter converter_32;
protected:
virtual void audioOutput (float *, int32_t);
};
#endif

253
example-2/audiosink.cpp Normal file
View File

@@ -0,0 +1,253 @@
#
/*
* Copyright (C) 2011, 2012, 2013
* Jan van Katwijk (J.vanKatwijk@gmail.com)
* Lazy Chair Programming
*
* This file is part of the main program of the DAB library
*
* DAB library 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.
*
* DAB library 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 DAB library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "audiosink.h"
#include <stdio.h>
/*
*/
audioSink::audioSink (int16_t latency,
std::string soundChannel,
bool *err):
audioBase () {
int32_t i;
this -> latency = latency;
this -> CardRate = 48000;
_O_Buffer = new RingBuffer<float>(2 * 32768);
portAudio = false;
writerRunning = false;
if (Pa_Initialize () != paNoError) {
fprintf (stderr, "Initializing Pa for output failed\n");
return;
}
portAudio = true;
fprintf (stderr, "Hostapis: %d\n", Pa_GetHostApiCount ());
for (i = 0; i < Pa_GetHostApiCount (); i ++)
fprintf (stderr, "Api %d is %s\n", i, Pa_GetHostApiInfo (i) -> name);
numofDevices = Pa_GetDeviceCount ();
outTable = new int16_t [numofDevices + 1];
for (i = 0; i < numofDevices; i ++)
outTable [i] = -1;
ostream = NULL;
*err = !selectDevice (soundChannel);
}
audioSink::~audioSink (void) {
if ((ostream != NULL) && !Pa_IsStreamStopped (ostream)) {
paCallbackReturn = paAbort;
(void) Pa_AbortStream (ostream);
while (!Pa_IsStreamStopped (ostream))
Pa_Sleep (1);
writerRunning = false;
}
if (ostream != NULL)
Pa_CloseStream (ostream);
if (portAudio)
Pa_Terminate ();
delete _O_Buffer;
delete[] outTable;
}
bool audioSink::selectDevice (const std::string soundChannel) {
PaError err;
int16_t odev = 0, i;
fprintf (stderr, "selecting device %s\n", soundChannel. c_str ());
for (i = 0; i < numofDevices; i ++) {
const std::string so =
outputChannelwithRate (i, CardRate);
if (so == std::string (""))
continue;
fprintf (stderr, "device %s seems available as %d\n",
so. c_str (), i);
if (so. find (soundChannel,0) != std::string::npos)
odev = i;
}
if (!isValidDevice (odev)) {
fprintf (stderr, "invalid device (%d) selected\n", odev);
return false;
}
if ((ostream != NULL) && !Pa_IsStreamStopped (ostream)) {
paCallbackReturn = paAbort;
(void) Pa_AbortStream (ostream);
while (!Pa_IsStreamStopped (ostream))
Pa_Sleep (1);
writerRunning = false;
}
if (ostream != NULL)
Pa_CloseStream (ostream);
outputParameters. device = odev;
outputParameters. channelCount = 2;
outputParameters. sampleFormat = paFloat32;
outputParameters. suggestedLatency =
Pa_GetDeviceInfo (odev) ->
defaultHighOutputLatency * latency;
bufSize = (int)((float)outputParameters. suggestedLatency);
bufSize = latency * 128;
outputParameters. hostApiSpecificStreamInfo = NULL;
//
fprintf (stderr, "Suggested size for outputbuffer = %d\n", bufSize);
err = Pa_OpenStream (&ostream,
NULL,
&outputParameters,
CardRate,
bufSize,
0,
this -> paCallback_o,
this
);
if (err != paNoError) {
fprintf (stderr, "Open ostream error\n");
return false;
}
paCallbackReturn = paContinue;
err = Pa_StartStream (ostream);
if (err != paNoError) {
fprintf (stderr, "Open startstream error\n");
return false;
}
writerRunning = true;
return true;
}
void audioSink::restart (void) {
PaError err;
if (!Pa_IsStreamStopped (ostream))
return;
_O_Buffer -> FlushRingBuffer ();
paCallbackReturn = paContinue;
err = Pa_StartStream (ostream);
if (err == paNoError)
writerRunning = true;
}
void audioSink::stop (void) {
if (Pa_IsStreamStopped (ostream))
return;
paCallbackReturn = paAbort;
(void)Pa_StopStream (ostream);
while (!Pa_IsStreamStopped (ostream))
Pa_Sleep (1);
writerRunning = false;
}
//
// helper
bool audioSink::OutputrateIsSupported (int16_t device, int32_t Rate) {
PaStreamParameters *outputParameters =
(PaStreamParameters *)alloca (sizeof (PaStreamParameters));
outputParameters -> device = device;
outputParameters -> channelCount = 2; /* I and Q */
outputParameters -> sampleFormat = paFloat32;
outputParameters -> suggestedLatency = 0;
outputParameters -> hostApiSpecificStreamInfo = NULL;
return Pa_IsFormatSupported (NULL, outputParameters, Rate) ==
paFormatIsSupported;
}
/*
* ... and the callback
*/
int audioSink::paCallback_o (
const void* inputBuffer,
void* outputBuffer,
unsigned long framesPerBuffer,
const PaStreamCallbackTimeInfo *timeInfo,
PaStreamCallbackFlags statusFlags,
void *userData) {
RingBuffer<float> *outB;
float *outp = (float *)outputBuffer;
audioSink *ud = reinterpret_cast <audioSink *>(userData);
uint32_t actualSize;
uint32_t i;
(void)statusFlags;
(void)inputBuffer;
(void)timeInfo;
if (ud -> paCallbackReturn == paContinue) {
outB = (reinterpret_cast <audioSink *> (userData)) -> _O_Buffer;
actualSize = outB -> getDataFromBuffer (outp, 2 * framesPerBuffer);
for (i = actualSize; i < 2 * framesPerBuffer; i ++)
outp [i] = 0;
}
return ud -> paCallbackReturn;
}
void audioSink::audioOutput (float *b, int32_t amount) {
_O_Buffer -> putDataIntoBuffer (b, 2 * amount);
}
const char *audioSink::outputChannelwithRate (int16_t ch, int32_t rate) {
const PaDeviceInfo *deviceInfo;
if ((ch < 0) || (ch >= numofDevices))
return "";
deviceInfo = Pa_GetDeviceInfo (ch);
if (deviceInfo == NULL)
return "";
if (deviceInfo -> maxOutputChannels <= 0)
return "";
if (OutputrateIsSupported (ch, rate))
return (deviceInfo -> name);
return "";
}
int16_t audioSink::invalidDevice (void) {
return numofDevices + 128;
}
bool audioSink::isValidDevice (int16_t dev) {
return 0 <= dev && dev < numofDevices;
}
bool audioSink::selectDefaultDevice (void) {
return selectDevice ("default");
}
int32_t audioSink::cardRate (void) {
return 48000;
}
int16_t audioSink::numberofDevices (void) {
return numofDevices;
}

73
example-2/audiosink.h Normal file
View File

@@ -0,0 +1,73 @@
#
/*
* Copyright (C) 2009, 2010, 2011
* Jan van Katwijk (J.vanKatwijk@gmail.com)
* Lazy Chair Programming
*
* This file is part of the main program for the DAB library
*
* DAB library 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.
*
* DAB library 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 DAB library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
#ifndef __AUDIO_SINK__
#define __AUDIO_SINK__
#include <portaudio.h>
#include <stdio.h>
#include "audio-base.h"
#include "ringbuffer.h"
#include <string>
class audioSink : public audioBase {
public:
audioSink (int16_t, std::string, bool *);
~audioSink (void);
void stop (void);
void restart (void);
bool selectDevice (const std::string);
bool selectDefaultDevice (void);
private:
int16_t numberofDevices (void);
const char *outputChannelwithRate (int16_t, int32_t);
int16_t invalidDevice (void);
bool isValidDevice (int16_t);
int32_t cardRate (void);
bool OutputrateIsSupported (int16_t, int32_t);
void audioOutput (float *, int32_t);
int32_t CardRate;
int16_t latency;
int32_t size;
bool portAudio;
bool writerRunning;
int16_t numofDevices;
int paCallbackReturn;
int16_t bufSize;
PaStream *ostream;
RingBuffer<float> *_O_Buffer;
PaStreamParameters outputParameters;
int16_t *outTable;
protected:
static int paCallback_o (const void *input,
void *output,
unsigned long framesperBuffer,
const PaStreamCallbackTimeInfo *timeInfo,
PaStreamCallbackFlags statusFlags,
void *userData);
};
#endif

120
example-2/band-handler.cpp Normal file
View File

@@ -0,0 +1,120 @@
#
/*
* Copyright (C) 2013, 2014, 2015, 2016, 2017
* Jan van Katwijk (J.vanKatwijk@gmail.com)
* Lazy Chair Programming
*
* This file is part of the DAB library
* DAB library 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.
*
* DAB library 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 DAB library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "band-handler.h"
struct dabFrequencies {
const char *key;
int fKHz;
};
static
struct dabFrequencies bandIII_frequencies [] = {
{"5A", 174928},
{"5B", 176640},
{"5C", 178352},
{"5D", 180064},
{"6A", 181936},
{"6B", 183648},
{"6C", 185360},
{"6D", 187072},
{"7A", 188928},
{"7B", 190640},
{"7C", 192352},
{"7D", 194064},
{"8A", 195936},
{"8B", 197648},
{"8C", 199360},
{"8D", 201072},
{"9A", 202928},
{"9B", 204640},
{"9C", 206352},
{"9D", 208064},
{"10A", 209936},
{"10B", 211648},
{"10C", 213360},
{"10D", 215072},
{"11A", 216928},
{"11B", 218640},
{"11C", 220352},
{"11D", 222064},
{"12A", 223936},
{"12B", 225648},
{"12C", 227360},
{"12D", 229072},
{"13A", 230748},
{"13B", 232496},
{"13C", 234208},
{"13D", 235776},
{"13E", 237488},
{"13F", 239200},
{NULL, 0}
};
static
struct dabFrequencies Lband_frequencies [] = {
{"LA", 1452960},
{"LB", 1454672},
{"LC", 1456384},
{"LD", 1458096},
{"LE", 1459808},
{"LF", 1461520},
{"LG", 1463232},
{"LH", 1464944},
{"LI", 1466656},
{"LJ", 1468368},
{"LK", 1470080},
{"LL", 1471792},
{"LM", 1473504},
{"LN", 1475216},
{"LO", 1476928},
{"LP", 1478640},
{NULL, 0}
};
bandHandler::bandHandler (void) {}
bandHandler::~bandHandler (void) {}
// find the frequency for a given channel in a given band
int32_t bandHandler::Frequency (uint8_t dabBand, std::string Channel) {
int32_t tunedFrequency = 0;
struct dabFrequencies *finger;
int i;
if (dabBand == BAND_III)
finger = bandIII_frequencies;
else
finger = Lband_frequencies;
for (i = 0; finger [i]. key != NULL; i ++) {
if (finger [i]. key == Channel) {
tunedFrequency = finger [i]. fKHz * 1000;
break;
}
}
if (tunedFrequency == 0)
tunedFrequency = finger [0]. fKHz * 1000;
return tunedFrequency;
}

41
example-2/band-handler.h Normal file
View File

@@ -0,0 +1,41 @@
#
/*
* Copyright (C) 2013, 2014, 2015, 2016, 2017
* Jan van Katwijk (J.vanKatwijk@gmail.com)
* Lazy Chair Programming
*
* This file is part of the Qt-DAB program
* Qt-DAB 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.
*
* Qt-DAB 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 Qt-DAB; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef __BANDHANDLER__
#define __BANDHANDLER__
#include <stdint.h>
#include <string>
//
// a simple convenience class
//
#define BAND_III 0100
#define L_BAND 0101
class bandHandler {
public:
bandHandler (void);
~bandHandler (void);
int32_t Frequency (uint8_t band, std::string Channel);
};
#endif

349
example-2/main.cpp Normal file
View File

@@ -0,0 +1,349 @@
#
/*
* Copyright (C) 2015, 2016
* Jan van Katwijk (J.vanKatwijk@gmail.com)
* Lazy Chair Programming
*
* This file is part of the DAB-library
*
* DAB-library 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.
*
* DAB-library 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 DAB-library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* E X A M P L E P R O G R A M
* for the DAB-library
*/
#include <unistd.h>
#include <signal.h>
#include <getopt.h>
#include <cstdio>
#include <iostream>
#include "audiosink.h"
#include "dab-class.h"
#include "band-handler.h"
#ifdef HAVE_SDRPLAY
#include "sdrplay-handler.h"
#elif HAVE_AIRSPY
#include "airspy-handler.h"
#elif HAVE_RTLSDR
#include "rtlsdr-handler.h"
#endif
#include <atomic>
using std::cerr;
using std::endl;
// we deal with some callbacks, so we have some data that needs
// to be accessed from global contexts
static
std::atomic<bool> run;
static
dabClass *theRadio = NULL;
static
std::atomic<bool>timeSynced;
static
std::atomic<bool>timesyncSet;
static
std::atomic<bool>ensembleRecognized;
static
audioSink *soundOut = NULL;
std::string programName = "Classic FM";
int32_t serviceIdentifier = -1;
static void sighandler (int signum) {
fprintf (stderr, "Signal caught, terminating!\n");
run. store (false);
}
static
void syncsignalHandler (bool b, void *userData) {
timeSynced. store (b);
timesyncSet. store (true);
(void)userData;
}
//
// This function is called whenever the dab engine has taken
// some time to gather information from the FIC bloks
// the Boolean b tells whether or not an ensemble has been
// recognized, the names of the programs are in the
// ensemble
static
void ensemblenameHandler (std::string name, int Id, void *userData) {
fprintf (stderr, "ensemble %s is (%X) recognized\n",
name. c_str (), (uint32_t)Id);
ensembleRecognized. store (true);
}
static
void programnameHandler (std::string s, int SId, void * userdata) {
fprintf (stderr, "%s (%X) is part of the ensemble\n", s. c_str (), SId);
}
static
void programdataHandler (audiodata *d, void *ctx) {
(void)ctx;
fprintf (stderr, "\tstartaddress\t= %d\n", d -> startAddr);
fprintf (stderr, "\tlength\t\t= %d\n", d -> length);
fprintf (stderr, "\tsubChId\t\t= %d\n", d -> subchId);
fprintf (stderr, "\tprotection\t= %d\n", d -> protLevel);
fprintf (stderr, "\tbitrate\t\t= %d\n", d -> bitRate);
}
//
// The function is called from within the library with
// a string, the so-called dynamic label
static
void dataOut_Handler (std::string dynamicLabel, void *ctx) {
(void)ctx;
// fprintf (stderr, "%s\n", dynamicLabel. c_str ());
}
//
// The function is called from within the library with
// a buffer full of PCM samples. We pass them on to the
// audiohandler, based on portaudio.
static
void pcmHandler (int16_t *buffer, int size, int rate,
bool isStereo, void *ctx) {
static bool isStarted = false;
(void)isStereo;
if (!isStarted) {
soundOut -> restart ();
isStarted = true;
}
soundOut -> audioOut (buffer, size, rate);
}
static
void systemData (bool flag, int16_t snr, int32_t freqOff, void *ctx) {
// fprintf (stderr, "synced = %s, snr = %d, offset = %d\n",
// flag? "on":"off", snr, freqOff);
}
static
void fibQuality (int16_t q, void *ctx) {
// fprintf (stderr, "fic quality = %d\n", q);
}
static
void mscQuality (int16_t fe, int16_t rsE, int16_t aacE, void *ctx) {
// fprintf (stderr, "msc quality = %d %d %d\n", fe, rsE, aacE);
}
int main (int argc, char **argv) {
// Default values
uint8_t theMode = 1;
std::string theChannel = "11C";
uint8_t theBand = BAND_III;
int16_t ppmCorrection = 0;
int theGain = 35; // scale = 0 .. 100
std::string soundChannel = "default";
int16_t latency = 10;
bool autogain = false;
int opt;
struct sigaction sigact;
bandHandler dabBand;
deviceHandler *theDevice;
fprintf (stderr, "dab_cmdline, \
Copyright 2017 J van Katwijk, Lazy Chair Computing");
timeSynced. store (false);
timesyncSet. store (false);
run. store (false);
while ((opt = getopt (argc, argv, "M:B:C:P:G:A:L:S:Q")) != -1) {
fprintf (stderr, "opt = %c\n", opt);
switch (opt) {
case 'M':
theMode = atoi (optarg);
if (!(theMode == 1) || (theMode == 2) || (theMode == 4))
theMode = 1;
break;
case 'B':
theBand = std::string (optarg) == std::string ("L_BAND") ?
L_BAND : BAND_III;
break;
case 'C':
theChannel = std::string (optarg);
break;
case 'P':
programName = optarg;
break;
case 'p':
ppmCorrection = atoi (optarg);
break;
case 'G':
theGain = atoi (optarg);
break;
case 'Q':
autogain = true;
break;
case 'A':
soundChannel = optarg;
break;
case 'L':
latency = atoi (optarg);
break;
case 'S': {
std::stringstream ss;
ss << std::hex << optarg;
ss >> serviceIdentifier;
break;
}
default:
break;
}
}
//
sigact.sa_handler = sighandler;
sigemptyset(&sigact.sa_mask);
sigact.sa_flags = 0;
// sigaction(SIGINT, &sigact, NULL);
// sigaction(SIGTERM, &sigact, NULL);
// sigaction(SIGQUIT, &sigact, NULL);
bool err;
int32_t frequency = dabBand. Frequency (theBand, theChannel);
try {
#ifdef HAVE_SDRPLAY
theDevice = new sdrplayHandler (frequency,
ppmCorrection,
theGain,
autogain,
0,
0);
#elif HAVE_AIRSPY
theDevice = new airspyHandler (frequency,
ppmCorrection,
theGain);
#elif HAVE_RTLSDR
theDevice = new rtlsdrHandler (frequency,
ppmCorrection,
theGain,
autogain);
#endif
}
catch (int e) {
fprintf (stderr, "allocating device failed (%d), fatal\n", e);
exit (32);
}
//
// We have a device
soundOut = new audioSink (latency, soundChannel, &err);
if (err) {
fprintf (stderr, "no valid sound channel, fatal\n");
exit (33);
}
//
// and a sound device
theRadio = new dabClass (theDevice,
theMode,
NULL, // no spectrum shown
NULL, // no constellations
syncsignalHandler,
systemData,
ensemblenameHandler,
programnameHandler,
fibQuality,
pcmHandler,
dataOut_Handler,
programdataHandler,
mscQuality,
NULL
);
if (theRadio == NULL) {
fprintf (stderr, "sorry, no radio available, fatal\n");
exit (4);
}
theDevice -> setGain (theGain);
if (autogain)
theDevice -> set_autogain (autogain);
theDevice -> setVFOFrequency (frequency);
theDevice -> restartReader ();
//
// The device should be working right now
timesyncSet. store (false);
ensembleRecognized. store (false);
theRadio -> startProcessing ();
int timeOut = 0;
while (!timesyncSet. load () && (++timeOut < 5))
sleep (1);
if (!timeSynced. load ()) {
cerr << "There does not seem to be a DAB signal here" << endl;
theDevice -> stopReader ();
sleep (1);
theRadio -> stop ();
delete theRadio;
delete theDevice;
exit (22);
}
else
cerr << "there might be a DAB signal here" << endl;
if (!ensembleRecognized. load ())
while (!ensembleRecognized. load () && (++timeOut < latency)) {
fprintf (stderr, "%d\r", latency - timeOut);
sleep (1);
}
fprintf (stderr, "\n");
if (!ensembleRecognized. load ()) {
fprintf (stderr, "no ensemble data found, fatal\n");
theDevice -> stopReader ();
sleep (1);
theRadio -> reset ();
delete theRadio;
delete theDevice;
exit (22);
}
fprintf (stderr, "going to start program %s\n", programName. c_str ());
run. store (true);
if (serviceIdentifier != -1)
programName = theRadio -> dab_getserviceName (serviceIdentifier);
if (theRadio -> dab_service (programName) < 0) {
fprintf (stderr, "sorry we cannot handle service %s\n",
programName. c_str ());
run. store (false);
}
while (run. load ())
sleep (1);
theDevice -> stopReader ();
theRadio -> reset ();
delete theRadio;
delete theDevice;
}

View File

@@ -0,0 +1,85 @@
#
/*
* Copyright (C) 2011, 2012, 2013
* Jan van Katwijk (J.vanKatwijk@gmail.com)
* Lazy Chair Programming
*
* This file is part of the main program of the DAB library
*
* DAB library 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.
*
* DAB library 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 DAB library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "newconverter.h"
newConverter::newConverter (int32_t inRate, int32_t outRate,
int32_t inSize) {
int err;
this -> inRate = inRate;
this -> outRate = outRate;
inputLimit = inSize;
ratio = double(outRate) / inRate;
// fprintf (stderr, "ratio = %f\n", ratio);
outputLimit = inSize * ratio;
converter = src_new (SRC_SINC_BEST_QUALITY, 2, &err);
// converter = src_new (SRC_LINEAR, 2, &err);
// converter = src_new (SRC_SINC_MEDIUM_QUALITY, 2, &err);
src_data = new SRC_DATA;
inBuffer = new float [2 * inputLimit + 20];
outBuffer = new float [2 * outputLimit + 20];
src_data-> data_in = inBuffer;
src_data-> data_out = outBuffer;
src_data-> src_ratio = ratio;
src_data-> end_of_input = 0;
inp = 0;
}
newConverter::~newConverter (void) {
src_delete (converter);
delete [] inBuffer;
delete [] outBuffer;
delete src_data;
}
bool newConverter::convert (DSPCOMPLEX v,
DSPCOMPLEX *out, int32_t *amount) {
int32_t i;
int32_t framesOut;
int res;
inBuffer [2 * inp] = real (v);
inBuffer [2 * inp + 1] = imag (v);
inp ++;
if (inp < inputLimit)
return false;
src_data -> input_frames = inp;
src_data -> output_frames = outputLimit + 10;
res = src_process (converter, src_data);
if (res != 0) {
fprintf (stderr, "error %s\n", src_strerror (res));
return false;
}
inp = 0;
framesOut = src_data -> output_frames_gen;
for (i = 0; i < framesOut; i ++)
out [i] = DSPCOMPLEX (outBuffer [2 * i], outBuffer [2 * i + 1]);
*amount = framesOut;
return true;
}
int32_t newConverter::getOutputsize (void) {
return outputLimit;
}

64
example-2/newconverter.h Normal file
View File

@@ -0,0 +1,64 @@
#
/*
* Copyright (C) 2011, 2012, 2013
* Jan van Katwijk (J.vanKatwijk@gmail.com)
* Lazy Chair Programming
*
* This file is part of the main program of the DAB library
*
* DAB library 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.
*
* DAB library 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 DAB library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
#ifndef __NEW_CONVERTER__
#define __NEW_CONVERTER__
#include <math.h>
#include <complex>
#include <stdint.h>
#include <unistd.h>
#include <limits>
#include <samplerate.h>
typedef float DSPFLOAT;
typedef std::complex<DSPFLOAT> DSPCOMPLEX;
using namespace std;
class newConverter {
private:
int32_t inRate;
int32_t outRate;
double ratio;
int32_t outputLimit;
int32_t inputLimit;
SRC_STATE *converter;
SRC_DATA *src_data;
float *inBuffer;
float *outBuffer;
int32_t inp;
public:
newConverter (int32_t inRate, int32_t outRate,
int32_t inSize);
~newConverter (void);
bool convert (DSPCOMPLEX v,
DSPCOMPLEX *out, int32_t *amount);
int32_t getOutputsize (void);
};
#endif

0
example/ringbuffer.h → example-2/ringbuffer.h Executable file → Normal file
View File

View File

@@ -1,13 +0,0 @@
As an example of how to use the dab-library, we present a program that
-together with the library - is a command line only version of the
dab software.
If/when you have installed the dab-library, and you have installed portaudio and libsamplerate, then
mkdir build; cd build; cmake ..; make
should do the trick
The resulting program is dab-cmdline

View File

@@ -1,227 +0,0 @@
#
/*
* Copyright (C) 2015, 2016
* Jan van Katwijk (J.vanKatwijk@gmail.com)
* Lazy Chair Programming
*
* This file is part of the DAB-cmdline program.
* Many of the ideas as implemented in DAB-cmdline are derived from
* other work, made available through the GNU general Public License.
* All copyrights of the original authors are recognized.
*
* DAB-cmdline 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.
*
* DAB-cmdline 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 DAB-cmdline; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* E X A M P L E P R O G R A M
* for the DAB-library
*/
#include <unistd.h>
#include <signal.h>
#include <getopt.h>
#include "audiosink.h"
#include "dab-api.h"
#include <atomic>
//
// we deal with some callbacks, so we have some data that needs
// to be accessed from global contexts
static
std::atomic<bool> run;
static
void *theRadio = NULL;
static
audioSink *soundOut = NULL;
std::string programName = "Classic FM";
int32_t serviceId = -1;
static void sighandler (int signum) {
fprintf (stderr, "Signal caught, terminating!\n");
run. store (false);
}
//
// This function is called whenever the dab engine has taken
// some time to gather information from the FIC bloks
// the Boolean b tells whether or not an ensemble has been
// recognized, the names of the programs are in the
// ensemble
static
void callblockHandler (std::list<std::string> stationList, bool b) {
if (!b) {
fprintf (stderr, "no ensemble, quitting");
run. store (false);
return;
}
for (std::list<std::string>::iterator list_iter = stationList. begin ();
list_iter != stationList. end (); list_iter ++) {
fprintf (stderr, "%s - with SId %X - in ensemble\n",
(*list_iter). c_str (),
dab_getSId (theRadio, *list_iter));
}
if (serviceId == -1)
dab_Service (theRadio, programName, NULL);
else
dab_Service_Id (theRadio, serviceId, NULL);
}
//
// The function is called from within the library with
// a string, the so-called dynamic label
static
void labelHandler (std::string dynamicLabel) {
// fprintf (stderr, "%s\n", dynamicLabel. c_str ());
}
//
// The function is called from within the library with
// a buffer full of PCM samples. We pass them on to the
// audiohandler, based on portaudio.
static
void pcmHandler (int16_t *buffer, int size, int rate) {
static bool isStarted = false;
if (!isStarted) {
soundOut -> restart ();
isStarted = true;
}
soundOut -> audioOut (buffer, size, rate);
}
static
void systemData (bool flag, int16_t snr, int32_t freqOff) {
//
}
static
void fibQuality (int16_t q) {
// fprintf (stderr, "fic quality = %d\n", q);
}
static
void mscQuality (int16_t fe, int16_t rsE, int16_t aacE) {
// fprintf (stderr, "msc quality = %d %d %d\n", fe, rsE, aacE);
}
int main (int argc, char **argv) {
// Default values
int16_t del = 10;
uint8_t theMode = 1;
std::string theChannel = "11C";
dabBand theBand = BAND_III;
int theGain = 80; // scale = 0 .. 100
std::string soundChannel = "default";
int16_t latency = 4;
bool autogain = false;
int opt;
struct sigaction sigact;
//
while ((opt = getopt (argc, argv, "i:D:M:B:C:P:G:A:L:S:Q")) != -1) {
switch (opt) {
case 'D':
del = atoi (optarg);
break;
case 'M':
theMode = atoi (optarg);
if (!(theMode == 1) || (theMode == 2) || (theMode == 4))
theMode = 1;
break;
case 'B':
theBand = std::string (optarg) == std::string ("L_BAND") ?
L_BAND : BAND_III;
break;
case 'C':
theChannel = std::string (optarg);
break;
case 'P':
programName = optarg;
break;
case 'G':
theGain = atoi (optarg);
break;
case 'A':
soundChannel = optarg;
break;
case 'L':
latency = atoi (optarg);
break;
case 'S': {
std::stringstream ss;
ss << std::hex << optarg;
ss >> serviceId;
break;
}
case 'Q':
autogain = true;
break;
default:
break;
}
}
//
sigact.sa_handler = sighandler;
sigemptyset(&sigact.sa_mask);
sigact.sa_flags = 0;
sigaction(SIGINT, &sigact, NULL);
sigaction(SIGTERM, &sigact, NULL);
sigaction(SIGQUIT, &sigact, NULL);
bool err;
soundOut = new audioSink (latency, soundChannel, &err);
if (err) {
fprintf (stderr, "no valid sound channel, fatal\n");
exit (3);
}
theRadio = dab_initialize (theMode, theBand,
pcmHandler,
labelHandler,
del,
systemData,
fibQuality,
mscQuality);
if (theRadio == NULL) {
fprintf (stderr, "sorry, no radio available, fatal\n");
exit (4);
}
dab_Gain (theRadio, theGain);
if (autogain)
dab_autoGain (theRadio, true);
dab_Channel (theRadio, theChannel);
dab_run (theRadio, callblockHandler);
//
// Note that while "dab_run" returns, another thread will be running
// for controlling the dab decoding process.
run. store (true);
while (run. load ())
sleep (1);
dab_stop (theRadio);
dab_exit (&theRadio);
}

65
dab-library/CMakeLists.txt → library/CMakeLists.txt Executable file → Normal file
View File

@@ -1,6 +1,6 @@
cmake_minimum_required( VERSION 2.8.11 )
set (objectName dab_lib)
add_definitions ( -Wall -g -std=c++11)
add_definitions ( -Wall -g -std=c++11 -O3)
# modify if you want
set (CMAKE_INSTALL_PREFIX /usr/local/)
@@ -21,31 +21,17 @@ set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "")
list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_SOURCE_DIR}/cmake/Modules)
######################################################################
# R E A D T H I S
#####################################################################
#
# be certain that on the command line one of -DXXXX=On is
# where XXXX is AIRSPY, SDRPLAY or DABSTICK
if(DEFINED AIRSPY)
set(AIRSPY true)
endif ()
if(DEFINED SDRPLAY)
set(SDRPLAY true)
endif ()
if(DEFINED DABSTICK)
set(DABSTICK true)
endif ()
if(DEFINED RTLTCP)
set(RTLTCP true)
########################################################################
#
# if you want the library interface for Python, define
if(DEFINED PYTHON)
set(PYTHON true)
endif ()
#
########################################################################
# if you are compiling the wrapper for Python in, uncomment
set(PYTHON true)
########################################################################
#
#########################################################################
find_package (PkgConfig)
find_package(FFTW3f)
@@ -80,31 +66,44 @@ endif ()
${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}
.
./
../
./includes
./includes/ofdm
./includes/backend
./includes/backend/viterbi_768
./includes/backend/audio
./includes/backend/data
./includes/backend/data/journaline
./includes/various
./devices
/usr/include/
# /usr/include/python3.5m
)
if (TII_SUPPORT)
include_directories (/usr/shared/sdr-j-development/systems/janSpul)
set (${objectName}_HDRS
/usr/shared/sdr-j-development/systems/janSpul/tii_detector.h)
set (${objectName}_SRCS
/usr/shared/sdr-j-development/systems/janSpul/tii_detector.cpp)
add_definitions (-DTII_SUPPORT)
endif (TII_SUPPORT)
if (PYTHON)
include_directories (/usr/include/python3.5m)
endif (PYTHON)
set (${objectName}_HDRS
./dab-api.h
${${objectName}_HDRS}
../dab-api.h
../device-handler.h
../ringbuffer.h
./includes/dab-class.h
./includes/dab-constants.h
./includes/ofdm/ofdm-processor.h
./includes/ofdm/phasereference.h
./includes/ofdm/phasetable.h
./includes/ofdm/freq-interleaver.h
./includes/backend/viterbi.h
./includes/backend/viterbi_768/viterbi-768.h
./includes/backend/protection.h
./includes/backend/uep-protection.h
./includes/backend/eep-protection.h
@@ -123,13 +122,12 @@ endif ()
./includes/backend/data/virtual-datahandler.h
./includes/backend/data/pad-handler.h
./includes/backend/data/mot-data.h
./includes/backend/data/tdc-datahandler.h
./includes/backend/data/dab-data.h
./includes/backend/data/data-processor.h
./includes/various/ringbuffer.h
./includes/various/fft.h
./includes/various/dab-params.h
./includes/various/ensemble-handler.h
./devices/virtual-input.h
./includes/various/tii_table.h
)
if (PYTHON)
@@ -141,14 +139,15 @@ endif ()
set (${objectName}_SRCS
${${objectName}_SRCS}
./src/dab-api.cpp
./dab-api.cpp
./src/dab-class.cpp
./src/ofdm/ofdm-processor.cpp
./src/ofdm/ofdm-decoder.cpp
./src/ofdm/phasereference.cpp
./src/ofdm/phasetable.cpp
./src/ofdm/freq-interleaver.cpp
./src/backend/viterbi.cpp
./src/backend/viterbi_768/viterbi-768.cpp
./src/backend/viterbi_768/spiral-no-sse.c
./src/backend/fic-handler.cpp
./src/backend/msc-handler.cpp
./src/backend/protection.cpp
@@ -167,14 +166,14 @@ endif ()
./src/backend/audio/mp2processor.cpp
./src/backend/data/mot-databuilder.cpp
./src/backend/data/virtual-datahandler.cpp
./src/backend/data/tdc-datahandler.cpp
./src/backend/data/pad-handler.cpp
./src/backend/data/mot-data.cpp
./src/backend/data/dab-data.cpp
./src/backend/data/data-processor.cpp
./src/various/fft.cpp
./src/various/dab-params.cpp
./src/various/ensemble-handler.cpp
./devices/virtual-input.cpp
./src/various/tii_table.cpp
)
if (SDRPLAY)

View File

@@ -0,0 +1,391 @@
# This is the CMakeCache file.
# For build in directory: /home/jan/dab-library/library/build
# It was generated by CMake: /usr/bin/cmake
# You can edit this file to change values found and used by cmake.
# If you do not want to change any of the values, simply exit the editor.
# If you do want to change a value, simply edit, save, and exit the editor.
# The syntax for the file is as follows:
# KEY:TYPE=VALUE
# KEY is the name of a variable in the cache.
# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
# VALUE is the current value for the KEY.
########################
# EXTERNAL cache entries
########################
//Path to a program.
CMAKE_AR:FILEPATH=/usr/bin/ar
//Choose the type of build, options are: None(CMAKE_CXX_FLAGS or
// CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel.
CMAKE_BUILD_TYPE:STRING=
//Enable/Disable color output during build.
CMAKE_COLOR_MAKEFILE:BOOL=ON
//CXX compiler
CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++
//Flags used by the compiler during all build types.
CMAKE_CXX_FLAGS:STRING=
//Flags used by the compiler during debug builds.
CMAKE_CXX_FLAGS_DEBUG:STRING=-g
//Flags used by the compiler during release builds for minimum
// size.
CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
//Flags used by the compiler during release builds.
CMAKE_CXX_FLAGS_RELEASE:STRING=-O2 -DNDEBUG
//Flags used by the compiler during release builds with debug info.
CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
//C compiler
CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc
//Flags used by the compiler during all build types.
CMAKE_C_FLAGS:STRING=
//Flags used by the compiler during debug builds.
CMAKE_C_FLAGS_DEBUG:STRING=-g
//Flags used by the compiler during release builds for minimum
// size.
CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
//Flags used by the compiler during release builds.
CMAKE_C_FLAGS_RELEASE:STRING=-O2 -DNDEBUG
//Flags used by the compiler during release builds with debug info.
CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
//Flags used by the linker.
CMAKE_EXE_LINKER_FLAGS:STRING=
//Flags used by the linker during debug builds.
CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
//Flags used by the linker during release minsize builds.
CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
//Flags used by the linker during release builds.
CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
//Flags used by the linker during Release with Debug Info builds.
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
//Enable/Disable output of compile commands during generation.
CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=OFF
//Install path prefix, prepended onto install directories.
CMAKE_INSTALL_PREFIX:PATH=/usr/local
//Path to a program.
CMAKE_LINKER:FILEPATH=/usr/bin/ld
//Path to a program.
CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/gmake
//Flags used by the linker during the creation of modules.
CMAKE_MODULE_LINKER_FLAGS:STRING=
//Flags used by the linker during debug builds.
CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
//Flags used by the linker during release minsize builds.
CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
//Flags used by the linker during release builds.
CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
//Flags used by the linker during Release with Debug Info builds.
CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
//Path to a program.
CMAKE_NM:FILEPATH=/usr/bin/nm
//Path to a program.
CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy
//Path to a program.
CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump
//Value Computed by CMake
CMAKE_PROJECT_NAME:STATIC=Project
//Path to a program.
CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib
//Flags used by the linker during the creation of dll's.
CMAKE_SHARED_LINKER_FLAGS:STRING=
//Flags used by the linker during debug builds.
CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
//Flags used by the linker during release minsize builds.
CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
//Flags used by the linker during release builds.
CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
//Flags used by the linker during Release with Debug Info builds.
CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
//If set, runtime paths are not added when installing shared libraries,
// but are added when building.
CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
//If set, runtime paths are not added when using shared libraries.
CMAKE_SKIP_RPATH:BOOL=NO
//Flags used by the linker during the creation of static libraries.
CMAKE_STATIC_LINKER_FLAGS:STRING=
//Flags used by the linker during debug builds.
CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
//Flags used by the linker during release minsize builds.
CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
//Flags used by the linker during release builds.
CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
//Flags used by the linker during Release with Debug Info builds.
CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
//Path to a program.
CMAKE_STRIP:FILEPATH=/usr/bin/strip
//If this value is on, makefiles will be generated without the
// .SILENT directive, and all commands will be echoed to the console
// during the make. This is useful for debugging only. With Visual
// Studio IDE projects all commands are done without /nologo.
CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
//The directory where faad.h resides
FAAD_INCLUDE_DIR:PATH=/usr/include
//The libfaad library
FAAD_LIBRARY:FILEPATH=/usr/lib64/libfaad.so
//Path to a file.
FFTW3F_INCLUDE_DIRS:PATH=/usr/include
//Path to a library.
FFTW3F_LIBRARIES:FILEPATH=/lib64/libfftw3f.so
//Path to a library.
FFTW3F_THREADS_LIBRARIES:FILEPATH=/lib64/libfftw3f_threads.so
//pkg-config executable
PKG_CONFIG_EXECUTABLE:FILEPATH=/usr/bin/pkg-config
//Path to a library.
PTHREADS:FILEPATH=/usr/lib64/libpthread.so
//Value Computed by CMake
Project_BINARY_DIR:STATIC=/home/jan/dab-library/library/build
//Value Computed by CMake
Project_SOURCE_DIR:STATIC=/home/jan/dab-library/library
//Path to a file.
ZLIB_INCLUDE_DIR:PATH=/usr/include
//Path to a library.
ZLIB_LIBRARY:FILEPATH=/usr/lib64/libz.so
//Dependencies for the target
dab_lib_LIB_DEPENDS:STATIC=general;/lib64/libfftw3f.so;general;/usr/lib64/libz.so;general;/usr/lib64/libpthread.so;general;/usr/lib64/libfaad.so;general;dl;
########################
# INTERNAL cache entries
########################
//ADVANCED property for variable: CMAKE_AR
CMAKE_AR-ADVANCED:INTERNAL=1
//This is the directory where this CMakeCache.txt was created
CMAKE_CACHEFILE_DIR:INTERNAL=/home/jan/dab-library/library/build
//Major version of cmake used to create the current loaded cache
CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
//Minor version of cmake used to create the current loaded cache
CMAKE_CACHE_MINOR_VERSION:INTERNAL=8
//Patch version of cmake used to create the current loaded cache
CMAKE_CACHE_PATCH_VERSION:INTERNAL=0
//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE
CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1
//Path to CMake executable.
CMAKE_COMMAND:INTERNAL=/usr/bin/cmake
//Path to cpack program executable.
CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack
//Path to ctest program executable.
CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest
//ADVANCED property for variable: CMAKE_CXX_COMPILER
CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_FLAGS
CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG
CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL
CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE
CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO
CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_COMPILER
CMAKE_C_COMPILER-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_FLAGS
CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//Path to cache edit program executable.
CMAKE_EDIT_COMMAND:INTERNAL=/usr/bin/ccmake
//Executable file format
CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS
CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1
//Name of external makefile project generator.
CMAKE_EXTRA_GENERATOR:INTERNAL=
//Name of generator.
CMAKE_GENERATOR:INTERNAL=Unix Makefiles
//Name of generator platform.
CMAKE_GENERATOR_PLATFORM:INTERNAL=
//Name of generator toolset.
CMAKE_GENERATOR_TOOLSET:INTERNAL=
//Source directory with the top level CMakeLists.txt file for this
// project
CMAKE_HOME_DIRECTORY:INTERNAL=/home/jan/dab-library/library
//Install .so files without execute permission.
CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0
//ADVANCED property for variable: CMAKE_LINKER
CMAKE_LINKER-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MAKE_PROGRAM
CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_NM
CMAKE_NM-ADVANCED:INTERNAL=1
//number of local generators
CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
//ADVANCED property for variable: CMAKE_OBJCOPY
CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_OBJDUMP
CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
//Platform information initialized
CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
//ADVANCED property for variable: CMAKE_RANLIB
CMAKE_RANLIB-ADVANCED:INTERNAL=1
//Path to CMake installation.
CMAKE_ROOT:INTERNAL=/usr/share/cmake
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SKIP_RPATH
CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_STRIP
CMAKE_STRIP-ADVANCED:INTERNAL=1
//uname command
CMAKE_UNAME:INTERNAL=/usr/bin/uname
//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: FAAD_INCLUDE_DIR
FAAD_INCLUDE_DIR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: FAAD_LIBRARY
FAAD_LIBRARY-ADVANCED:INTERNAL=1
//ADVANCED property for variable: FFTW3F_INCLUDE_DIRS
FFTW3F_INCLUDE_DIRS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: FFTW3F_LIBRARIES
FFTW3F_LIBRARIES-ADVANCED:INTERNAL=1
//ADVANCED property for variable: FFTW3F_THREADS_LIBRARIES
FFTW3F_THREADS_LIBRARIES-ADVANCED:INTERNAL=1
//Details about finding FFTW3F
FIND_PACKAGE_MESSAGE_DETAILS_FFTW3F:INTERNAL=[/lib64/libfftw3f.so][/usr/include][v()]
//Details about finding PkgConfig
FIND_PACKAGE_MESSAGE_DETAILS_PkgConfig:INTERNAL=[/usr/bin/pkg-config][v0.29.1()]
PC_FFTW3F_CFLAGS:INTERNAL=
PC_FFTW3F_CFLAGS_I:INTERNAL=
PC_FFTW3F_CFLAGS_OTHER:INTERNAL=
PC_FFTW3F_FOUND:INTERNAL=1
PC_FFTW3F_INCLUDEDIR:INTERNAL=/usr/include
PC_FFTW3F_INCLUDE_DIRS:INTERNAL=
PC_FFTW3F_LDFLAGS:INTERNAL=-lfftw3f
PC_FFTW3F_LDFLAGS_OTHER:INTERNAL=
PC_FFTW3F_LIBDIR:INTERNAL=/usr/lib64
PC_FFTW3F_LIBRARIES:INTERNAL=fftw3f
PC_FFTW3F_LIBRARY_DIRS:INTERNAL=
PC_FFTW3F_LIBS:INTERNAL=
PC_FFTW3F_LIBS_L:INTERNAL=
PC_FFTW3F_LIBS_OTHER:INTERNAL=
PC_FFTW3F_LIBS_PATHS:INTERNAL=
PC_FFTW3F_PREFIX:INTERNAL=/usr
PC_FFTW3F_STATIC_CFLAGS:INTERNAL=
PC_FFTW3F_STATIC_CFLAGS_I:INTERNAL=
PC_FFTW3F_STATIC_CFLAGS_OTHER:INTERNAL=
PC_FFTW3F_STATIC_INCLUDE_DIRS:INTERNAL=
PC_FFTW3F_STATIC_LDFLAGS:INTERNAL=-lfftw3f;-lm
PC_FFTW3F_STATIC_LDFLAGS_OTHER:INTERNAL=
PC_FFTW3F_STATIC_LIBDIR:INTERNAL=
PC_FFTW3F_STATIC_LIBRARIES:INTERNAL=fftw3f;m
PC_FFTW3F_STATIC_LIBRARY_DIRS:INTERNAL=
PC_FFTW3F_STATIC_LIBS:INTERNAL=
PC_FFTW3F_STATIC_LIBS_L:INTERNAL=
PC_FFTW3F_STATIC_LIBS_OTHER:INTERNAL=
PC_FFTW3F_STATIC_LIBS_PATHS:INTERNAL=
PC_FFTW3F_VERSION:INTERNAL=3.3.5
PC_FFTW3F_fftw3f _INCLUDEDIR:INTERNAL=
PC_FFTW3F_fftw3f _LIBDIR:INTERNAL=
PC_FFTW3F_fftw3f _PREFIX:INTERNAL=
PC_FFTW3F_fftw3f _VERSION:INTERNAL=
//ADVANCED property for variable: PKG_CONFIG_EXECUTABLE
PKG_CONFIG_EXECUTABLE-ADVANCED:INTERNAL=1
__pkg_config_arguments_PC_FFTW3F:INTERNAL=fftw3f >= 3.0
__pkg_config_checked_PC_FFTW3F:INTERNAL=1
prefix_result:INTERNAL=/usr/lib64

View File

@@ -0,0 +1,68 @@
set(CMAKE_C_COMPILER "/usr/bin/cc")
set(CMAKE_C_COMPILER_ARG1 "")
set(CMAKE_C_COMPILER_ID "GNU")
set(CMAKE_C_COMPILER_VERSION "6.3.1")
set(CMAKE_C_COMPILER_WRAPPER "")
set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11")
set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert")
set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
set(CMAKE_C_PLATFORM_ID "Linux")
set(CMAKE_C_SIMULATE_ID "")
set(CMAKE_C_SIMULATE_VERSION "")
set(CMAKE_AR "/usr/bin/ar")
set(CMAKE_RANLIB "/usr/bin/ranlib")
set(CMAKE_LINKER "/usr/bin/ld")
set(CMAKE_COMPILER_IS_GNUCC 1)
set(CMAKE_C_COMPILER_LOADED 1)
set(CMAKE_C_COMPILER_WORKS TRUE)
set(CMAKE_C_ABI_COMPILED TRUE)
set(CMAKE_COMPILER_IS_MINGW )
set(CMAKE_COMPILER_IS_CYGWIN )
if(CMAKE_COMPILER_IS_CYGWIN)
set(CYGWIN 1)
set(UNIX 1)
endif()
set(CMAKE_C_COMPILER_ENV_VAR "CC")
if(CMAKE_COMPILER_IS_MINGW)
set(MINGW 1)
endif()
set(CMAKE_C_COMPILER_ID_RUN 1)
set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
set(CMAKE_C_LINKER_PREFERENCE 10)
# Save compiler ABI information.
set(CMAKE_C_SIZEOF_DATA_PTR "8")
set(CMAKE_C_COMPILER_ABI "ELF")
set(CMAKE_C_LIBRARY_ARCHITECTURE "")
if(CMAKE_C_SIZEOF_DATA_PTR)
set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
endif()
if(CMAKE_C_COMPILER_ABI)
set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
endif()
if(CMAKE_C_LIBRARY_ARCHITECTURE)
set(CMAKE_LIBRARY_ARCHITECTURE "")
endif()
set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
endif()
set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "c")
set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-redhat-linux/6.3.1;/usr/lib64;/lib64;/usr/lib")
set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")

View File

@@ -0,0 +1,70 @@
set(CMAKE_CXX_COMPILER "/usr/bin/c++")
set(CMAKE_CXX_COMPILER_ARG1 "")
set(CMAKE_CXX_COMPILER_ID "GNU")
set(CMAKE_CXX_COMPILER_VERSION "6.3.1")
set(CMAKE_CXX_COMPILER_WRAPPER "")
set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "14")
set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17")
set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters")
set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates")
set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates")
set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17")
set(CMAKE_CXX_PLATFORM_ID "Linux")
set(CMAKE_CXX_SIMULATE_ID "")
set(CMAKE_CXX_SIMULATE_VERSION "")
set(CMAKE_AR "/usr/bin/ar")
set(CMAKE_RANLIB "/usr/bin/ranlib")
set(CMAKE_LINKER "/usr/bin/ld")
set(CMAKE_COMPILER_IS_GNUCXX 1)
set(CMAKE_CXX_COMPILER_LOADED 1)
set(CMAKE_CXX_COMPILER_WORKS TRUE)
set(CMAKE_CXX_ABI_COMPILED TRUE)
set(CMAKE_COMPILER_IS_MINGW )
set(CMAKE_COMPILER_IS_CYGWIN )
if(CMAKE_COMPILER_IS_CYGWIN)
set(CYGWIN 1)
set(UNIX 1)
endif()
set(CMAKE_CXX_COMPILER_ENV_VAR "CXX")
if(CMAKE_COMPILER_IS_MINGW)
set(MINGW 1)
endif()
set(CMAKE_CXX_COMPILER_ID_RUN 1)
set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC)
set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;mm;CPP)
set(CMAKE_CXX_LINKER_PREFERENCE 30)
set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1)
# Save compiler ABI information.
set(CMAKE_CXX_SIZEOF_DATA_PTR "8")
set(CMAKE_CXX_COMPILER_ABI "ELF")
set(CMAKE_CXX_LIBRARY_ARCHITECTURE "")
if(CMAKE_CXX_SIZEOF_DATA_PTR)
set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}")
endif()
if(CMAKE_CXX_COMPILER_ABI)
set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}")
endif()
if(CMAKE_CXX_LIBRARY_ARCHITECTURE)
set(CMAKE_LIBRARY_ARCHITECTURE "")
endif()
set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "")
if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX)
set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}")
endif()
set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;c")
set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-redhat-linux/6.3.1;/usr/lib64;/lib64;/usr/lib")
set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")

View File

@@ -0,0 +1,15 @@
set(CMAKE_HOST_SYSTEM "Linux-4.10.15-200.fc25.x86_64")
set(CMAKE_HOST_SYSTEM_NAME "Linux")
set(CMAKE_HOST_SYSTEM_VERSION "4.10.15-200.fc25.x86_64")
set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
set(CMAKE_SYSTEM "Linux-4.10.15-200.fc25.x86_64")
set(CMAKE_SYSTEM_NAME "Linux")
set(CMAKE_SYSTEM_VERSION "4.10.15-200.fc25.x86_64")
set(CMAKE_SYSTEM_PROCESSOR "x86_64")
set(CMAKE_CROSSCOMPILING "FALSE")
set(CMAKE_SYSTEM_LOADED 1)

View File

@@ -0,0 +1,567 @@
#ifdef __cplusplus
# error "A C++ compiler has been selected for C."
#endif
#if defined(__18CXX)
# define ID_VOID_MAIN
#endif
#if defined(__CLASSIC_C__)
/* cv-qualifiers did not exist in K&R C */
# define const
# define volatile
#endif
/* Version number components: V=Version, R=Revision, P=Patch
Version date components: YYYY=Year, MM=Month, DD=Day */
#if defined(__INTEL_COMPILER) || defined(__ICC)
# define COMPILER_ID "Intel"
# if defined(_MSC_VER)
# define SIMULATE_ID "MSVC"
# endif
/* __INTEL_COMPILER = VRP */
# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)
# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)
# if defined(__INTEL_COMPILER_UPDATE)
# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE)
# else
# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10)
# endif
# if defined(__INTEL_COMPILER_BUILD_DATE)
/* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
# endif
# if defined(_MSC_VER)
/* _MSC_VER = VVRR */
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
# endif
#elif defined(__PATHCC__)
# define COMPILER_ID "PathScale"
# define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
# if defined(__PATHCC_PATCHLEVEL__)
# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
# endif
#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__)
# define COMPILER_ID "Embarcadero"
# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF)
# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF)
# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF)
#elif defined(__BORLANDC__)
# define COMPILER_ID "Borland"
/* __BORLANDC__ = 0xVRR */
# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8)
# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF)
#elif defined(__WATCOMC__) && __WATCOMC__ < 1200
# define COMPILER_ID "Watcom"
/* __WATCOMC__ = VVRR */
# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100)
# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
# if (__WATCOMC__ % 10) > 0
# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
# endif
#elif defined(__WATCOMC__)
# define COMPILER_ID "OpenWatcom"
/* __WATCOMC__ = VVRP + 1100 */
# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100)
# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
# if (__WATCOMC__ % 10) > 0
# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
# endif
#elif defined(__SUNPRO_C)
# define COMPILER_ID "SunPro"
# if __SUNPRO_C >= 0x5100
/* __SUNPRO_C = 0xVRRP */
# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12)
# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF)
# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF)
# else
/* __SUNPRO_CC = 0xVRP */
# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8)
# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF)
# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF)
# endif
#elif defined(__HP_cc)
# define COMPILER_ID "HP"
/* __HP_cc = VVRRPP */
# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000)
# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100)
# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100)
#elif defined(__DECC)
# define COMPILER_ID "Compaq"
/* __DECC_VER = VVRRTPPPP */
# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000)
# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100)
# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000)
#elif defined(__IBMC__) && defined(__COMPILER_VER__)
# define COMPILER_ID "zOS"
/* __IBMC__ = VRP */
# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10)
#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800
# define COMPILER_ID "XL"
/* __IBMC__ = VRP */
# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10)
#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800
# define COMPILER_ID "VisualAge"
/* __IBMC__ = VRP */
# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10)
#elif defined(__PGI)
# define COMPILER_ID "PGI"
# define COMPILER_VERSION_MAJOR DEC(__PGIC__)
# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
# if defined(__PGIC_PATCHLEVEL__)
# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
# endif
#elif defined(_CRAYC)
# define COMPILER_ID "Cray"
# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR)
# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
#elif defined(__TI_COMPILER_VERSION__)
# define COMPILER_ID "TI"
/* __TI_COMPILER_VERSION__ = VVVRRRPPP */
# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000)
# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000)
# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000)
#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version)
# define COMPILER_ID "Fujitsu"
#elif defined(__TINYC__)
# define COMPILER_ID "TinyCC"
#elif defined(__BCC__)
# define COMPILER_ID "Bruce"
#elif defined(__SCO_VERSION__)
# define COMPILER_ID "SCO"
#elif defined(__clang__) && defined(__apple_build_version__)
# define COMPILER_ID "AppleClang"
# if defined(_MSC_VER)
# define SIMULATE_ID "MSVC"
# endif
# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
# if defined(_MSC_VER)
/* _MSC_VER = VVRR */
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
# endif
# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__)
#elif defined(__clang__)
# define COMPILER_ID "Clang"
# if defined(_MSC_VER)
# define SIMULATE_ID "MSVC"
# endif
# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
# if defined(_MSC_VER)
/* _MSC_VER = VVRR */
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
# endif
#elif defined(__GNUC__)
# define COMPILER_ID "GNU"
# define COMPILER_VERSION_MAJOR DEC(__GNUC__)
# if defined(__GNUC_MINOR__)
# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
# endif
# if defined(__GNUC_PATCHLEVEL__)
# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
# endif
#elif defined(_MSC_VER)
# define COMPILER_ID "MSVC"
/* _MSC_VER = VVRR */
# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100)
# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100)
# if defined(_MSC_FULL_VER)
# if _MSC_VER >= 1400
/* _MSC_FULL_VER = VVRRPPPPP */
# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000)
# else
/* _MSC_FULL_VER = VVRRPPPP */
# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000)
# endif
# endif
# if defined(_MSC_BUILD)
# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD)
# endif
#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)
# define COMPILER_ID "ADSP"
#if defined(__VISUALDSPVERSION__)
/* __VISUALDSPVERSION__ = 0xVVRRPP00 */
# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24)
# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF)
# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF)
#endif
#elif defined(__IAR_SYSTEMS_ICC__ ) || defined(__IAR_SYSTEMS_ICC)
# define COMPILER_ID "IAR"
#elif defined(__ARMCC_VERSION)
# define COMPILER_ID "ARMCC"
#if __ARMCC_VERSION >= 1000000
/* __ARMCC_VERSION = VRRPPPP */
# define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000)
# define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100)
# define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
#else
/* __ARMCC_VERSION = VRPPPP */
# define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000)
# define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10)
# define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
#endif
#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC)
# define COMPILER_ID "SDCC"
# if defined(__SDCC_VERSION_MAJOR)
# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR)
# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR)
# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH)
# else
/* SDCC = VRP */
# define COMPILER_VERSION_MAJOR DEC(SDCC/100)
# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10)
# define COMPILER_VERSION_PATCH DEC(SDCC % 10)
# endif
#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION)
# define COMPILER_ID "MIPSpro"
# if defined(_SGI_COMPILER_VERSION)
/* _SGI_COMPILER_VERSION = VRP */
# define COMPILER_VERSION_MAJOR DEC(_SGI_COMPILER_VERSION/100)
# define COMPILER_VERSION_MINOR DEC(_SGI_COMPILER_VERSION/10 % 10)
# define COMPILER_VERSION_PATCH DEC(_SGI_COMPILER_VERSION % 10)
# else
/* _COMPILER_VERSION = VRP */
# define COMPILER_VERSION_MAJOR DEC(_COMPILER_VERSION/100)
# define COMPILER_VERSION_MINOR DEC(_COMPILER_VERSION/10 % 10)
# define COMPILER_VERSION_PATCH DEC(_COMPILER_VERSION % 10)
# endif
/* These compilers are either not known or too old to define an
identification macro. Try to identify the platform and guess that
it is the native compiler. */
#elif defined(__sgi)
# define COMPILER_ID "MIPSpro"
#elif defined(__hpux) || defined(__hpua)
# define COMPILER_ID "HP"
#else /* unknown compiler */
# define COMPILER_ID ""
#endif
/* Construct the string literal in pieces to prevent the source from
getting matched. Store it in a pointer rather than an array
because some compilers will just produce instructions to fill the
array rather than assigning a pointer to a static array. */
char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
#ifdef SIMULATE_ID
char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
#endif
#ifdef __QNXNTO__
char const* qnxnto = "INFO" ":" "qnxnto[]";
#endif
#if defined(__CRAYXE) || defined(__CRAYXC)
char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]";
#endif
#define STRINGIFY_HELPER(X) #X
#define STRINGIFY(X) STRINGIFY_HELPER(X)
/* Identify known platforms by name. */
#if defined(__linux) || defined(__linux__) || defined(linux)
# define PLATFORM_ID "Linux"
#elif defined(__CYGWIN__)
# define PLATFORM_ID "Cygwin"
#elif defined(__MINGW32__)
# define PLATFORM_ID "MinGW"
#elif defined(__APPLE__)
# define PLATFORM_ID "Darwin"
#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
# define PLATFORM_ID "Windows"
#elif defined(__FreeBSD__) || defined(__FreeBSD)
# define PLATFORM_ID "FreeBSD"
#elif defined(__NetBSD__) || defined(__NetBSD)
# define PLATFORM_ID "NetBSD"
#elif defined(__OpenBSD__) || defined(__OPENBSD)
# define PLATFORM_ID "OpenBSD"
#elif defined(__sun) || defined(sun)
# define PLATFORM_ID "SunOS"
#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
# define PLATFORM_ID "AIX"
#elif defined(__sgi) || defined(__sgi__) || defined(_SGI)
# define PLATFORM_ID "IRIX"
#elif defined(__hpux) || defined(__hpux__)
# define PLATFORM_ID "HP-UX"
#elif defined(__HAIKU__)
# define PLATFORM_ID "Haiku"
#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
# define PLATFORM_ID "BeOS"
#elif defined(__QNX__) || defined(__QNXNTO__)
# define PLATFORM_ID "QNX"
#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
# define PLATFORM_ID "Tru64"
#elif defined(__riscos) || defined(__riscos__)
# define PLATFORM_ID "RISCos"
#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
# define PLATFORM_ID "SINIX"
#elif defined(__UNIX_SV__)
# define PLATFORM_ID "UNIX_SV"
#elif defined(__bsdos__)
# define PLATFORM_ID "BSDOS"
#elif defined(_MPRAS) || defined(MPRAS)
# define PLATFORM_ID "MP-RAS"
#elif defined(__osf) || defined(__osf__)
# define PLATFORM_ID "OSF1"
#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
# define PLATFORM_ID "SCO_SV"
#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
# define PLATFORM_ID "ULTRIX"
#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
# define PLATFORM_ID "Xenix"
#elif defined(__WATCOMC__)
# if defined(__LINUX__)
# define PLATFORM_ID "Linux"
# elif defined(__DOS__)
# define PLATFORM_ID "DOS"
# elif defined(__OS2__)
# define PLATFORM_ID "OS2"
# elif defined(__WINDOWS__)
# define PLATFORM_ID "Windows3x"
# else /* unknown platform */
# define PLATFORM_ID
# endif
#else /* unknown platform */
# define PLATFORM_ID
#endif
/* For windows compilers MSVC and Intel we can determine
the architecture of the compiler being used. This is because
the compilers do not have flags that can change the architecture,
but rather depend on which compiler is being used
*/
#if defined(_WIN32) && defined(_MSC_VER)
# if defined(_M_IA64)
# define ARCHITECTURE_ID "IA64"
# elif defined(_M_X64) || defined(_M_AMD64)
# define ARCHITECTURE_ID "x64"
# elif defined(_M_IX86)
# define ARCHITECTURE_ID "X86"
# elif defined(_M_ARM)
# if _M_ARM == 4
# define ARCHITECTURE_ID "ARMV4I"
# elif _M_ARM == 5
# define ARCHITECTURE_ID "ARMV5I"
# else
# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM)
# endif
# elif defined(_M_MIPS)
# define ARCHITECTURE_ID "MIPS"
# elif defined(_M_SH)
# define ARCHITECTURE_ID "SHx"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
#elif defined(__WATCOMC__)
# if defined(_M_I86)
# define ARCHITECTURE_ID "I86"
# elif defined(_M_IX86)
# define ARCHITECTURE_ID "X86"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
#else
# define ARCHITECTURE_ID
#endif
/* Convert integer to decimal digit literals. */
#define DEC(n) \
('0' + (((n) / 10000000)%10)), \
('0' + (((n) / 1000000)%10)), \
('0' + (((n) / 100000)%10)), \
('0' + (((n) / 10000)%10)), \
('0' + (((n) / 1000)%10)), \
('0' + (((n) / 100)%10)), \
('0' + (((n) / 10)%10)), \
('0' + ((n) % 10))
/* Convert integer to hex digit literals. */
#define HEX(n) \
('0' + ((n)>>28 & 0xF)), \
('0' + ((n)>>24 & 0xF)), \
('0' + ((n)>>20 & 0xF)), \
('0' + ((n)>>16 & 0xF)), \
('0' + ((n)>>12 & 0xF)), \
('0' + ((n)>>8 & 0xF)), \
('0' + ((n)>>4 & 0xF)), \
('0' + ((n) & 0xF))
/* Construct a string literal encoding the version number components. */
#ifdef COMPILER_VERSION_MAJOR
char const info_version[] = {
'I', 'N', 'F', 'O', ':',
'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
COMPILER_VERSION_MAJOR,
# ifdef COMPILER_VERSION_MINOR
'.', COMPILER_VERSION_MINOR,
# ifdef COMPILER_VERSION_PATCH
'.', COMPILER_VERSION_PATCH,
# ifdef COMPILER_VERSION_TWEAK
'.', COMPILER_VERSION_TWEAK,
# endif
# endif
# endif
']','\0'};
#endif
/* Construct a string literal encoding the version number components. */
#ifdef SIMULATE_VERSION_MAJOR
char const info_simulate_version[] = {
'I', 'N', 'F', 'O', ':',
's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[',
SIMULATE_VERSION_MAJOR,
# ifdef SIMULATE_VERSION_MINOR
'.', SIMULATE_VERSION_MINOR,
# ifdef SIMULATE_VERSION_PATCH
'.', SIMULATE_VERSION_PATCH,
# ifdef SIMULATE_VERSION_TWEAK
'.', SIMULATE_VERSION_TWEAK,
# endif
# endif
# endif
']','\0'};
#endif
/* Construct the string literal in pieces to prevent the source from
getting matched. Store it in a pointer rather than an array
because some compilers will just produce instructions to fill the
array rather than assigning a pointer to a static array. */
char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
#if !defined(__STDC__)
# if defined(_MSC_VER) && !defined(__clang__)
# define C_DIALECT "90"
# else
# define C_DIALECT
# endif
#elif __STDC_VERSION__ >= 201000L
# define C_DIALECT "11"
#elif __STDC_VERSION__ >= 199901L
# define C_DIALECT "99"
#else
# define C_DIALECT "90"
#endif
const char* info_language_dialect_default =
"INFO" ":" "dialect_default[" C_DIALECT "]";
/*--------------------------------------------------------------------------*/
#ifdef ID_VOID_MAIN
void main() {}
#else
# if defined(__CLASSIC_C__)
int main(argc, argv) int argc; char *argv[];
# else
int main(int argc, char* argv[])
# endif
{
int require = 0;
require += info_compiler[argc];
require += info_platform[argc];
require += info_arch[argc];
#ifdef COMPILER_VERSION_MAJOR
require += info_version[argc];
#endif
#ifdef SIMULATE_ID
require += info_simulate[argc];
#endif
#ifdef SIMULATE_VERSION_MAJOR
require += info_simulate_version[argc];
#endif
#if defined(__CRAYXE) || defined(__CRAYXC)
require += info_cray[argc];
#endif
require += info_language_dialect_default[argc];
(void)argv;
return require;
}
#endif

Binary file not shown.

View File

@@ -0,0 +1,539 @@
/* This source file must have a .cpp extension so that all C++ compilers
recognize the extension without flags. Borland does not know .cxx for
example. */
#ifndef __cplusplus
# error "A C compiler has been selected for C++."
#endif
/* Version number components: V=Version, R=Revision, P=Patch
Version date components: YYYY=Year, MM=Month, DD=Day */
#if defined(__COMO__)
# define COMPILER_ID "Comeau"
/* __COMO_VERSION__ = VRR */
# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100)
# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100)
#elif defined(__INTEL_COMPILER) || defined(__ICC)
# define COMPILER_ID "Intel"
# if defined(_MSC_VER)
# define SIMULATE_ID "MSVC"
# endif
/* __INTEL_COMPILER = VRP */
# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)
# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)
# if defined(__INTEL_COMPILER_UPDATE)
# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE)
# else
# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10)
# endif
# if defined(__INTEL_COMPILER_BUILD_DATE)
/* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
# endif
# if defined(_MSC_VER)
/* _MSC_VER = VVRR */
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
# endif
#elif defined(__PATHCC__)
# define COMPILER_ID "PathScale"
# define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
# if defined(__PATHCC_PATCHLEVEL__)
# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
# endif
#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__)
# define COMPILER_ID "Embarcadero"
# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF)
# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF)
# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF)
#elif defined(__BORLANDC__)
# define COMPILER_ID "Borland"
/* __BORLANDC__ = 0xVRR */
# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8)
# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF)
#elif defined(__WATCOMC__) && __WATCOMC__ < 1200
# define COMPILER_ID "Watcom"
/* __WATCOMC__ = VVRR */
# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100)
# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
# if (__WATCOMC__ % 10) > 0
# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
# endif
#elif defined(__WATCOMC__)
# define COMPILER_ID "OpenWatcom"
/* __WATCOMC__ = VVRP + 1100 */
# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100)
# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
# if (__WATCOMC__ % 10) > 0
# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
# endif
#elif defined(__SUNPRO_CC)
# define COMPILER_ID "SunPro"
# if __SUNPRO_CC >= 0x5100
/* __SUNPRO_CC = 0xVRRP */
# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12)
# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF)
# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF)
# else
/* __SUNPRO_CC = 0xVRP */
# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8)
# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF)
# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF)
# endif
#elif defined(__HP_aCC)
# define COMPILER_ID "HP"
/* __HP_aCC = VVRRPP */
# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000)
# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100)
# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100)
#elif defined(__DECCXX)
# define COMPILER_ID "Compaq"
/* __DECCXX_VER = VVRRTPPPP */
# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000)
# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100)
# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000)
#elif defined(__IBMCPP__) && defined(__COMPILER_VER__)
# define COMPILER_ID "zOS"
/* __IBMCPP__ = VRP */
# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10)
#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800
# define COMPILER_ID "XL"
/* __IBMCPP__ = VRP */
# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10)
#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800
# define COMPILER_ID "VisualAge"
/* __IBMCPP__ = VRP */
# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10)
#elif defined(__PGI)
# define COMPILER_ID "PGI"
# define COMPILER_VERSION_MAJOR DEC(__PGIC__)
# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
# if defined(__PGIC_PATCHLEVEL__)
# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
# endif
#elif defined(_CRAYC)
# define COMPILER_ID "Cray"
# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR)
# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
#elif defined(__TI_COMPILER_VERSION__)
# define COMPILER_ID "TI"
/* __TI_COMPILER_VERSION__ = VVVRRRPPP */
# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000)
# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000)
# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000)
#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version)
# define COMPILER_ID "Fujitsu"
#elif defined(__SCO_VERSION__)
# define COMPILER_ID "SCO"
#elif defined(__clang__) && defined(__apple_build_version__)
# define COMPILER_ID "AppleClang"
# if defined(_MSC_VER)
# define SIMULATE_ID "MSVC"
# endif
# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
# if defined(_MSC_VER)
/* _MSC_VER = VVRR */
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
# endif
# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__)
#elif defined(__clang__)
# define COMPILER_ID "Clang"
# if defined(_MSC_VER)
# define SIMULATE_ID "MSVC"
# endif
# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
# if defined(_MSC_VER)
/* _MSC_VER = VVRR */
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
# endif
#elif defined(__GNUC__) || defined(__GNUG__)
# define COMPILER_ID "GNU"
# if defined(__GNUC__)
# define COMPILER_VERSION_MAJOR DEC(__GNUC__)
# else
# define COMPILER_VERSION_MAJOR DEC(__GNUG__)
# endif
# if defined(__GNUC_MINOR__)
# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
# endif
# if defined(__GNUC_PATCHLEVEL__)
# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
# endif
#elif defined(_MSC_VER)
# define COMPILER_ID "MSVC"
/* _MSC_VER = VVRR */
# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100)
# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100)
# if defined(_MSC_FULL_VER)
# if _MSC_VER >= 1400
/* _MSC_FULL_VER = VVRRPPPPP */
# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000)
# else
/* _MSC_FULL_VER = VVRRPPPP */
# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000)
# endif
# endif
# if defined(_MSC_BUILD)
# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD)
# endif
#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)
# define COMPILER_ID "ADSP"
#if defined(__VISUALDSPVERSION__)
/* __VISUALDSPVERSION__ = 0xVVRRPP00 */
# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24)
# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF)
# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF)
#endif
#elif defined(__IAR_SYSTEMS_ICC__ ) || defined(__IAR_SYSTEMS_ICC)
# define COMPILER_ID "IAR"
#elif defined(__ARMCC_VERSION)
# define COMPILER_ID "ARMCC"
#if __ARMCC_VERSION >= 1000000
/* __ARMCC_VERSION = VRRPPPP */
# define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000)
# define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100)
# define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
#else
/* __ARMCC_VERSION = VRPPPP */
# define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000)
# define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10)
# define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
#endif
#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION)
# define COMPILER_ID "MIPSpro"
# if defined(_SGI_COMPILER_VERSION)
/* _SGI_COMPILER_VERSION = VRP */
# define COMPILER_VERSION_MAJOR DEC(_SGI_COMPILER_VERSION/100)
# define COMPILER_VERSION_MINOR DEC(_SGI_COMPILER_VERSION/10 % 10)
# define COMPILER_VERSION_PATCH DEC(_SGI_COMPILER_VERSION % 10)
# else
/* _COMPILER_VERSION = VRP */
# define COMPILER_VERSION_MAJOR DEC(_COMPILER_VERSION/100)
# define COMPILER_VERSION_MINOR DEC(_COMPILER_VERSION/10 % 10)
# define COMPILER_VERSION_PATCH DEC(_COMPILER_VERSION % 10)
# endif
/* These compilers are either not known or too old to define an
identification macro. Try to identify the platform and guess that
it is the native compiler. */
#elif defined(__sgi)
# define COMPILER_ID "MIPSpro"
#elif defined(__hpux) || defined(__hpua)
# define COMPILER_ID "HP"
#else /* unknown compiler */
# define COMPILER_ID ""
#endif
/* Construct the string literal in pieces to prevent the source from
getting matched. Store it in a pointer rather than an array
because some compilers will just produce instructions to fill the
array rather than assigning a pointer to a static array. */
char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
#ifdef SIMULATE_ID
char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
#endif
#ifdef __QNXNTO__
char const* qnxnto = "INFO" ":" "qnxnto[]";
#endif
#if defined(__CRAYXE) || defined(__CRAYXC)
char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]";
#endif
#define STRINGIFY_HELPER(X) #X
#define STRINGIFY(X) STRINGIFY_HELPER(X)
/* Identify known platforms by name. */
#if defined(__linux) || defined(__linux__) || defined(linux)
# define PLATFORM_ID "Linux"
#elif defined(__CYGWIN__)
# define PLATFORM_ID "Cygwin"
#elif defined(__MINGW32__)
# define PLATFORM_ID "MinGW"
#elif defined(__APPLE__)
# define PLATFORM_ID "Darwin"
#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
# define PLATFORM_ID "Windows"
#elif defined(__FreeBSD__) || defined(__FreeBSD)
# define PLATFORM_ID "FreeBSD"
#elif defined(__NetBSD__) || defined(__NetBSD)
# define PLATFORM_ID "NetBSD"
#elif defined(__OpenBSD__) || defined(__OPENBSD)
# define PLATFORM_ID "OpenBSD"
#elif defined(__sun) || defined(sun)
# define PLATFORM_ID "SunOS"
#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
# define PLATFORM_ID "AIX"
#elif defined(__sgi) || defined(__sgi__) || defined(_SGI)
# define PLATFORM_ID "IRIX"
#elif defined(__hpux) || defined(__hpux__)
# define PLATFORM_ID "HP-UX"
#elif defined(__HAIKU__)
# define PLATFORM_ID "Haiku"
#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
# define PLATFORM_ID "BeOS"
#elif defined(__QNX__) || defined(__QNXNTO__)
# define PLATFORM_ID "QNX"
#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
# define PLATFORM_ID "Tru64"
#elif defined(__riscos) || defined(__riscos__)
# define PLATFORM_ID "RISCos"
#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
# define PLATFORM_ID "SINIX"
#elif defined(__UNIX_SV__)
# define PLATFORM_ID "UNIX_SV"
#elif defined(__bsdos__)
# define PLATFORM_ID "BSDOS"
#elif defined(_MPRAS) || defined(MPRAS)
# define PLATFORM_ID "MP-RAS"
#elif defined(__osf) || defined(__osf__)
# define PLATFORM_ID "OSF1"
#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
# define PLATFORM_ID "SCO_SV"
#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
# define PLATFORM_ID "ULTRIX"
#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
# define PLATFORM_ID "Xenix"
#elif defined(__WATCOMC__)
# if defined(__LINUX__)
# define PLATFORM_ID "Linux"
# elif defined(__DOS__)
# define PLATFORM_ID "DOS"
# elif defined(__OS2__)
# define PLATFORM_ID "OS2"
# elif defined(__WINDOWS__)
# define PLATFORM_ID "Windows3x"
# else /* unknown platform */
# define PLATFORM_ID
# endif
#else /* unknown platform */
# define PLATFORM_ID
#endif
/* For windows compilers MSVC and Intel we can determine
the architecture of the compiler being used. This is because
the compilers do not have flags that can change the architecture,
but rather depend on which compiler is being used
*/
#if defined(_WIN32) && defined(_MSC_VER)
# if defined(_M_IA64)
# define ARCHITECTURE_ID "IA64"
# elif defined(_M_X64) || defined(_M_AMD64)
# define ARCHITECTURE_ID "x64"
# elif defined(_M_IX86)
# define ARCHITECTURE_ID "X86"
# elif defined(_M_ARM)
# if _M_ARM == 4
# define ARCHITECTURE_ID "ARMV4I"
# elif _M_ARM == 5
# define ARCHITECTURE_ID "ARMV5I"
# else
# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM)
# endif
# elif defined(_M_MIPS)
# define ARCHITECTURE_ID "MIPS"
# elif defined(_M_SH)
# define ARCHITECTURE_ID "SHx"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
#elif defined(__WATCOMC__)
# if defined(_M_I86)
# define ARCHITECTURE_ID "I86"
# elif defined(_M_IX86)
# define ARCHITECTURE_ID "X86"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
#else
# define ARCHITECTURE_ID
#endif
/* Convert integer to decimal digit literals. */
#define DEC(n) \
('0' + (((n) / 10000000)%10)), \
('0' + (((n) / 1000000)%10)), \
('0' + (((n) / 100000)%10)), \
('0' + (((n) / 10000)%10)), \
('0' + (((n) / 1000)%10)), \
('0' + (((n) / 100)%10)), \
('0' + (((n) / 10)%10)), \
('0' + ((n) % 10))
/* Convert integer to hex digit literals. */
#define HEX(n) \
('0' + ((n)>>28 & 0xF)), \
('0' + ((n)>>24 & 0xF)), \
('0' + ((n)>>20 & 0xF)), \
('0' + ((n)>>16 & 0xF)), \
('0' + ((n)>>12 & 0xF)), \
('0' + ((n)>>8 & 0xF)), \
('0' + ((n)>>4 & 0xF)), \
('0' + ((n) & 0xF))
/* Construct a string literal encoding the version number components. */
#ifdef COMPILER_VERSION_MAJOR
char const info_version[] = {
'I', 'N', 'F', 'O', ':',
'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
COMPILER_VERSION_MAJOR,
# ifdef COMPILER_VERSION_MINOR
'.', COMPILER_VERSION_MINOR,
# ifdef COMPILER_VERSION_PATCH
'.', COMPILER_VERSION_PATCH,
# ifdef COMPILER_VERSION_TWEAK
'.', COMPILER_VERSION_TWEAK,
# endif
# endif
# endif
']','\0'};
#endif
/* Construct a string literal encoding the version number components. */
#ifdef SIMULATE_VERSION_MAJOR
char const info_simulate_version[] = {
'I', 'N', 'F', 'O', ':',
's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[',
SIMULATE_VERSION_MAJOR,
# ifdef SIMULATE_VERSION_MINOR
'.', SIMULATE_VERSION_MINOR,
# ifdef SIMULATE_VERSION_PATCH
'.', SIMULATE_VERSION_PATCH,
# ifdef SIMULATE_VERSION_TWEAK
'.', SIMULATE_VERSION_TWEAK,
# endif
# endif
# endif
']','\0'};
#endif
/* Construct the string literal in pieces to prevent the source from
getting matched. Store it in a pointer rather than an array
because some compilers will just produce instructions to fill the
array rather than assigning a pointer to a static array. */
char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
const char* info_language_dialect_default = "INFO" ":" "dialect_default["
#if __cplusplus > 201402L
"17"
#elif __cplusplus >= 201402L
"14"
#elif __cplusplus >= 201103L
"11"
#else
"98"
#endif
"]";
/*--------------------------------------------------------------------------*/
int main(int argc, char* argv[])
{
int require = 0;
require += info_compiler[argc];
require += info_platform[argc];
#ifdef COMPILER_VERSION_MAJOR
require += info_version[argc];
#endif
#ifdef SIMULATE_ID
require += info_simulate[argc];
#endif
#ifdef SIMULATE_VERSION_MAJOR
require += info_simulate_version[argc];
#endif
#if defined(__CRAYXE) || defined(__CRAYXC)
require += info_cray[argc];
#endif
require += info_language_dialect_default[argc];
(void)argv;
return require;
}

Binary file not shown.

View File

@@ -0,0 +1,16 @@
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.8
# Relative path conversion top directories.
set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/jan/dab-library/library")
set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/jan/dab-library/library/build")
# Force unix paths in dependencies.
set(CMAKE_FORCE_UNIX_PATHS 1)
# The C and CXX include file regular expressions for this directory.
set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$")
set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$")
set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN})
set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN})

View File

@@ -0,0 +1,613 @@
The system is: Linux - 4.10.15-200.fc25.x86_64 - x86_64
Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded.
Compiler: /usr/bin/cc
Build flags:
Id flags:
The output was:
0
Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.out"
The C compiler identification is GNU, found in "/home/jan/dab-library/library/build/CMakeFiles/3.8.0/CompilerIdC/a.out"
Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded.
Compiler: /usr/bin/c++
Build flags:
Id flags:
The output was:
0
Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out"
The CXX compiler identification is GNU, found in "/home/jan/dab-library/library/build/CMakeFiles/3.8.0/CompilerIdCXX/a.out"
Determining if the C compiler works passed with the following output:
Change Dir: /home/jan/dab-library/library/build/CMakeFiles/CMakeTmp
Run Build Command:"/usr/bin/gmake" "cmTC_417a7/fast"
/usr/bin/gmake -f CMakeFiles/cmTC_417a7.dir/build.make CMakeFiles/cmTC_417a7.dir/build
gmake[1]: Entering directory '/home/jan/dab-library/library/build/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_417a7.dir/testCCompiler.c.o
/usr/bin/cc -o CMakeFiles/cmTC_417a7.dir/testCCompiler.c.o -c /home/jan/dab-library/library/build/CMakeFiles/CMakeTmp/testCCompiler.c
Linking C executable cmTC_417a7
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_417a7.dir/link.txt --verbose=1
/usr/bin/cc -rdynamic CMakeFiles/cmTC_417a7.dir/testCCompiler.c.o -o cmTC_417a7
gmake[1]: Leaving directory '/home/jan/dab-library/library/build/CMakeFiles/CMakeTmp'
Detecting C compiler ABI info compiled with the following output:
Change Dir: /home/jan/dab-library/library/build/CMakeFiles/CMakeTmp
Run Build Command:"/usr/bin/gmake" "cmTC_3507d/fast"
/usr/bin/gmake -f CMakeFiles/cmTC_3507d.dir/build.make CMakeFiles/cmTC_3507d.dir/build
gmake[1]: Entering directory '/home/jan/dab-library/library/build/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_3507d.dir/CMakeCCompilerABI.c.o
/usr/bin/cc -o CMakeFiles/cmTC_3507d.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake/Modules/CMakeCCompilerABI.c
Linking C executable cmTC_3507d
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_3507d.dir/link.txt --verbose=1
/usr/bin/cc -v -rdynamic CMakeFiles/cmTC_3507d.dir/CMakeCCompilerABI.c.o -o cmTC_3507d
Using built-in specs.
COLLECT_GCC=/usr/bin/cc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/6.3.1/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,objc,obj-c++,fortran,ada,go,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --disable-libgcj --with-isl --enable-libmpx --enable-gnu-indirect-function --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 6.3.1 20161221 (Red Hat 6.3.1-1) (GCC)
COMPILER_PATH=/usr/libexec/gcc/x86_64-redhat-linux/6.3.1/:/usr/libexec/gcc/x86_64-redhat-linux/6.3.1/:/usr/libexec/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/6.3.1/:/usr/lib/gcc/x86_64-redhat-linux/
LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/6.3.1/:/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_3507d' '-mtune=generic' '-march=x86-64'
/usr/libexec/gcc/x86_64-redhat-linux/6.3.1/collect2 -plugin /usr/libexec/gcc/x86_64-redhat-linux/6.3.1/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-redhat-linux/6.3.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccu4NK5f.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --no-add-needed --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o cmTC_3507d /usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64/crt1.o /usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64/crti.o /usr/lib/gcc/x86_64-redhat-linux/6.3.1/crtbegin.o -L/usr/lib/gcc/x86_64-redhat-linux/6.3.1 -L/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../.. CMakeFiles/cmTC_3507d.dir/CMakeCCompilerABI.c.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-redhat-linux/6.3.1/crtend.o /usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64/crtn.o
COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_3507d' '-mtune=generic' '-march=x86-64'
gmake[1]: Leaving directory '/home/jan/dab-library/library/build/CMakeFiles/CMakeTmp'
Parsed C implicit link information from above output:
link line regex: [^( *|.*[/\])(ld|([^/\]+-)?ld|collect2)[^/\]*( |$)]
ignore line: [Change Dir: /home/jan/dab-library/library/build/CMakeFiles/CMakeTmp]
ignore line: []
ignore line: [Run Build Command:"/usr/bin/gmake" "cmTC_3507d/fast"]
ignore line: [/usr/bin/gmake -f CMakeFiles/cmTC_3507d.dir/build.make CMakeFiles/cmTC_3507d.dir/build]
ignore line: [gmake[1]: Entering directory '/home/jan/dab-library/library/build/CMakeFiles/CMakeTmp']
ignore line: [Building C object CMakeFiles/cmTC_3507d.dir/CMakeCCompilerABI.c.o]
ignore line: [/usr/bin/cc -o CMakeFiles/cmTC_3507d.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake/Modules/CMakeCCompilerABI.c]
ignore line: [Linking C executable cmTC_3507d]
ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_3507d.dir/link.txt --verbose=1]
ignore line: [/usr/bin/cc -v -rdynamic CMakeFiles/cmTC_3507d.dir/CMakeCCompilerABI.c.o -o cmTC_3507d ]
ignore line: [Using built-in specs.]
ignore line: [COLLECT_GCC=/usr/bin/cc]
ignore line: [COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/6.3.1/lto-wrapper]
ignore line: [Target: x86_64-redhat-linux]
ignore line: [Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,objc,obj-c++,fortran,ada,go,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --disable-libgcj --with-isl --enable-libmpx --enable-gnu-indirect-function --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux]
ignore line: [Thread model: posix]
ignore line: [gcc version 6.3.1 20161221 (Red Hat 6.3.1-1) (GCC) ]
ignore line: [COMPILER_PATH=/usr/libexec/gcc/x86_64-redhat-linux/6.3.1/:/usr/libexec/gcc/x86_64-redhat-linux/6.3.1/:/usr/libexec/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/6.3.1/:/usr/lib/gcc/x86_64-redhat-linux/]
ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/6.3.1/:/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../:/lib/:/usr/lib/]
ignore line: [COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_3507d' '-mtune=generic' '-march=x86-64']
link line: [ /usr/libexec/gcc/x86_64-redhat-linux/6.3.1/collect2 -plugin /usr/libexec/gcc/x86_64-redhat-linux/6.3.1/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-redhat-linux/6.3.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccu4NK5f.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --no-add-needed --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o cmTC_3507d /usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64/crt1.o /usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64/crti.o /usr/lib/gcc/x86_64-redhat-linux/6.3.1/crtbegin.o -L/usr/lib/gcc/x86_64-redhat-linux/6.3.1 -L/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../.. CMakeFiles/cmTC_3507d.dir/CMakeCCompilerABI.c.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-redhat-linux/6.3.1/crtend.o /usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64/crtn.o]
arg [/usr/libexec/gcc/x86_64-redhat-linux/6.3.1/collect2] ==> ignore
arg [-plugin] ==> ignore
arg [/usr/libexec/gcc/x86_64-redhat-linux/6.3.1/liblto_plugin.so] ==> ignore
arg [-plugin-opt=/usr/libexec/gcc/x86_64-redhat-linux/6.3.1/lto-wrapper] ==> ignore
arg [-plugin-opt=-fresolution=/tmp/ccu4NK5f.res] ==> ignore
arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
arg [-plugin-opt=-pass-through=-lc] ==> ignore
arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
arg [--build-id] ==> ignore
arg [--no-add-needed] ==> ignore
arg [--eh-frame-hdr] ==> ignore
arg [--hash-style=gnu] ==> ignore
arg [-m] ==> ignore
arg [elf_x86_64] ==> ignore
arg [-export-dynamic] ==> ignore
arg [-dynamic-linker] ==> ignore
arg [/lib64/ld-linux-x86-64.so.2] ==> ignore
arg [-o] ==> ignore
arg [cmTC_3507d] ==> ignore
arg [/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64/crt1.o] ==> ignore
arg [/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64/crti.o] ==> ignore
arg [/usr/lib/gcc/x86_64-redhat-linux/6.3.1/crtbegin.o] ==> ignore
arg [-L/usr/lib/gcc/x86_64-redhat-linux/6.3.1] ==> dir [/usr/lib/gcc/x86_64-redhat-linux/6.3.1]
arg [-L/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64] ==> dir [/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64]
arg [-L/lib/../lib64] ==> dir [/lib/../lib64]
arg [-L/usr/lib/../lib64] ==> dir [/usr/lib/../lib64]
arg [-L/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../..] ==> dir [/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../..]
arg [CMakeFiles/cmTC_3507d.dir/CMakeCCompilerABI.c.o] ==> ignore
arg [-lgcc] ==> lib [gcc]
arg [--as-needed] ==> ignore
arg [-lgcc_s] ==> lib [gcc_s]
arg [--no-as-needed] ==> ignore
arg [-lc] ==> lib [c]
arg [-lgcc] ==> lib [gcc]
arg [--as-needed] ==> ignore
arg [-lgcc_s] ==> lib [gcc_s]
arg [--no-as-needed] ==> ignore
arg [/usr/lib/gcc/x86_64-redhat-linux/6.3.1/crtend.o] ==> ignore
arg [/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64/crtn.o] ==> ignore
remove lib [gcc]
remove lib [gcc_s]
remove lib [gcc]
remove lib [gcc_s]
collapse library dir [/usr/lib/gcc/x86_64-redhat-linux/6.3.1] ==> [/usr/lib/gcc/x86_64-redhat-linux/6.3.1]
collapse library dir [/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64] ==> [/usr/lib64]
collapse library dir [/lib/../lib64] ==> [/lib64]
collapse library dir [/usr/lib/../lib64] ==> [/usr/lib64]
collapse library dir [/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../..] ==> [/usr/lib]
implicit libs: [c]
implicit dirs: [/usr/lib/gcc/x86_64-redhat-linux/6.3.1;/usr/lib64;/lib64;/usr/lib]
implicit fwks: []
Detecting C [-std=c11] compiler features compiled with the following output:
Change Dir: /home/jan/dab-library/library/build/CMakeFiles/CMakeTmp
Run Build Command:"/usr/bin/gmake" "cmTC_feb83/fast"
/usr/bin/gmake -f CMakeFiles/cmTC_feb83.dir/build.make CMakeFiles/cmTC_feb83.dir/build
gmake[1]: Entering directory '/home/jan/dab-library/library/build/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_feb83.dir/feature_tests.c.o
/usr/bin/cc -std=c11 -o CMakeFiles/cmTC_feb83.dir/feature_tests.c.o -c /home/jan/dab-library/library/build/CMakeFiles/feature_tests.c
Linking C executable cmTC_feb83
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_feb83.dir/link.txt --verbose=1
/usr/bin/cc -rdynamic CMakeFiles/cmTC_feb83.dir/feature_tests.c.o -o cmTC_feb83
gmake[1]: Leaving directory '/home/jan/dab-library/library/build/CMakeFiles/CMakeTmp'
Feature record: C_FEATURE:1c_function_prototypes
Feature record: C_FEATURE:1c_restrict
Feature record: C_FEATURE:1c_static_assert
Feature record: C_FEATURE:1c_variadic_macros
Detecting C [-std=c99] compiler features compiled with the following output:
Change Dir: /home/jan/dab-library/library/build/CMakeFiles/CMakeTmp
Run Build Command:"/usr/bin/gmake" "cmTC_e181e/fast"
/usr/bin/gmake -f CMakeFiles/cmTC_e181e.dir/build.make CMakeFiles/cmTC_e181e.dir/build
gmake[1]: Entering directory '/home/jan/dab-library/library/build/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_e181e.dir/feature_tests.c.o
/usr/bin/cc -std=c99 -o CMakeFiles/cmTC_e181e.dir/feature_tests.c.o -c /home/jan/dab-library/library/build/CMakeFiles/feature_tests.c
Linking C executable cmTC_e181e
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_e181e.dir/link.txt --verbose=1
/usr/bin/cc -rdynamic CMakeFiles/cmTC_e181e.dir/feature_tests.c.o -o cmTC_e181e
gmake[1]: Leaving directory '/home/jan/dab-library/library/build/CMakeFiles/CMakeTmp'
Feature record: C_FEATURE:1c_function_prototypes
Feature record: C_FEATURE:1c_restrict
Feature record: C_FEATURE:0c_static_assert
Feature record: C_FEATURE:1c_variadic_macros
Detecting C [-std=c90] compiler features compiled with the following output:
Change Dir: /home/jan/dab-library/library/build/CMakeFiles/CMakeTmp
Run Build Command:"/usr/bin/gmake" "cmTC_2b0ec/fast"
/usr/bin/gmake -f CMakeFiles/cmTC_2b0ec.dir/build.make CMakeFiles/cmTC_2b0ec.dir/build
gmake[1]: Entering directory '/home/jan/dab-library/library/build/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_2b0ec.dir/feature_tests.c.o
/usr/bin/cc -std=c90 -o CMakeFiles/cmTC_2b0ec.dir/feature_tests.c.o -c /home/jan/dab-library/library/build/CMakeFiles/feature_tests.c
Linking C executable cmTC_2b0ec
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_2b0ec.dir/link.txt --verbose=1
/usr/bin/cc -rdynamic CMakeFiles/cmTC_2b0ec.dir/feature_tests.c.o -o cmTC_2b0ec
gmake[1]: Leaving directory '/home/jan/dab-library/library/build/CMakeFiles/CMakeTmp'
Feature record: C_FEATURE:1c_function_prototypes
Feature record: C_FEATURE:0c_restrict
Feature record: C_FEATURE:0c_static_assert
Feature record: C_FEATURE:0c_variadic_macros
Determining if the CXX compiler works passed with the following output:
Change Dir: /home/jan/dab-library/library/build/CMakeFiles/CMakeTmp
Run Build Command:"/usr/bin/gmake" "cmTC_5d39b/fast"
/usr/bin/gmake -f CMakeFiles/cmTC_5d39b.dir/build.make CMakeFiles/cmTC_5d39b.dir/build
gmake[1]: Entering directory '/home/jan/dab-library/library/build/CMakeFiles/CMakeTmp'
Building CXX object CMakeFiles/cmTC_5d39b.dir/testCXXCompiler.cxx.o
/usr/bin/c++ -o CMakeFiles/cmTC_5d39b.dir/testCXXCompiler.cxx.o -c /home/jan/dab-library/library/build/CMakeFiles/CMakeTmp/testCXXCompiler.cxx
Linking CXX executable cmTC_5d39b
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_5d39b.dir/link.txt --verbose=1
/usr/bin/c++ -rdynamic CMakeFiles/cmTC_5d39b.dir/testCXXCompiler.cxx.o -o cmTC_5d39b
gmake[1]: Leaving directory '/home/jan/dab-library/library/build/CMakeFiles/CMakeTmp'
Detecting CXX compiler ABI info compiled with the following output:
Change Dir: /home/jan/dab-library/library/build/CMakeFiles/CMakeTmp
Run Build Command:"/usr/bin/gmake" "cmTC_03f87/fast"
/usr/bin/gmake -f CMakeFiles/cmTC_03f87.dir/build.make CMakeFiles/cmTC_03f87.dir/build
gmake[1]: Entering directory '/home/jan/dab-library/library/build/CMakeFiles/CMakeTmp'
Building CXX object CMakeFiles/cmTC_03f87.dir/CMakeCXXCompilerABI.cpp.o
/usr/bin/c++ -o CMakeFiles/cmTC_03f87.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp
Linking CXX executable cmTC_03f87
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_03f87.dir/link.txt --verbose=1
/usr/bin/c++ -v -rdynamic CMakeFiles/cmTC_03f87.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_03f87
Using built-in specs.
COLLECT_GCC=/usr/bin/c++
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/6.3.1/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,objc,obj-c++,fortran,ada,go,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --disable-libgcj --with-isl --enable-libmpx --enable-gnu-indirect-function --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 6.3.1 20161221 (Red Hat 6.3.1-1) (GCC)
COMPILER_PATH=/usr/libexec/gcc/x86_64-redhat-linux/6.3.1/:/usr/libexec/gcc/x86_64-redhat-linux/6.3.1/:/usr/libexec/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/6.3.1/:/usr/lib/gcc/x86_64-redhat-linux/
LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/6.3.1/:/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_03f87' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
/usr/libexec/gcc/x86_64-redhat-linux/6.3.1/collect2 -plugin /usr/libexec/gcc/x86_64-redhat-linux/6.3.1/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-redhat-linux/6.3.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccjrwrvZ.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --no-add-needed --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o cmTC_03f87 /usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64/crt1.o /usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64/crti.o /usr/lib/gcc/x86_64-redhat-linux/6.3.1/crtbegin.o -L/usr/lib/gcc/x86_64-redhat-linux/6.3.1 -L/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../.. CMakeFiles/cmTC_03f87.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-redhat-linux/6.3.1/crtend.o /usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64/crtn.o
COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_03f87' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
gmake[1]: Leaving directory '/home/jan/dab-library/library/build/CMakeFiles/CMakeTmp'
Parsed CXX implicit link information from above output:
link line regex: [^( *|.*[/\])(ld|([^/\]+-)?ld|collect2)[^/\]*( |$)]
ignore line: [Change Dir: /home/jan/dab-library/library/build/CMakeFiles/CMakeTmp]
ignore line: []
ignore line: [Run Build Command:"/usr/bin/gmake" "cmTC_03f87/fast"]
ignore line: [/usr/bin/gmake -f CMakeFiles/cmTC_03f87.dir/build.make CMakeFiles/cmTC_03f87.dir/build]
ignore line: [gmake[1]: Entering directory '/home/jan/dab-library/library/build/CMakeFiles/CMakeTmp']
ignore line: [Building CXX object CMakeFiles/cmTC_03f87.dir/CMakeCXXCompilerABI.cpp.o]
ignore line: [/usr/bin/c++ -o CMakeFiles/cmTC_03f87.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp]
ignore line: [Linking CXX executable cmTC_03f87]
ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_03f87.dir/link.txt --verbose=1]
ignore line: [/usr/bin/c++ -v -rdynamic CMakeFiles/cmTC_03f87.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_03f87 ]
ignore line: [Using built-in specs.]
ignore line: [COLLECT_GCC=/usr/bin/c++]
ignore line: [COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/6.3.1/lto-wrapper]
ignore line: [Target: x86_64-redhat-linux]
ignore line: [Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,objc,obj-c++,fortran,ada,go,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --disable-libgcj --with-isl --enable-libmpx --enable-gnu-indirect-function --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux]
ignore line: [Thread model: posix]
ignore line: [gcc version 6.3.1 20161221 (Red Hat 6.3.1-1) (GCC) ]
ignore line: [COMPILER_PATH=/usr/libexec/gcc/x86_64-redhat-linux/6.3.1/:/usr/libexec/gcc/x86_64-redhat-linux/6.3.1/:/usr/libexec/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/6.3.1/:/usr/lib/gcc/x86_64-redhat-linux/]
ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/6.3.1/:/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../:/lib/:/usr/lib/]
ignore line: [COLLECT_GCC_OPTIONS='-v' '-rdynamic' '-o' 'cmTC_03f87' '-shared-libgcc' '-mtune=generic' '-march=x86-64']
link line: [ /usr/libexec/gcc/x86_64-redhat-linux/6.3.1/collect2 -plugin /usr/libexec/gcc/x86_64-redhat-linux/6.3.1/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-redhat-linux/6.3.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccjrwrvZ.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --no-add-needed --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o cmTC_03f87 /usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64/crt1.o /usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64/crti.o /usr/lib/gcc/x86_64-redhat-linux/6.3.1/crtbegin.o -L/usr/lib/gcc/x86_64-redhat-linux/6.3.1 -L/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../.. CMakeFiles/cmTC_03f87.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-redhat-linux/6.3.1/crtend.o /usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64/crtn.o]
arg [/usr/libexec/gcc/x86_64-redhat-linux/6.3.1/collect2] ==> ignore
arg [-plugin] ==> ignore
arg [/usr/libexec/gcc/x86_64-redhat-linux/6.3.1/liblto_plugin.so] ==> ignore
arg [-plugin-opt=/usr/libexec/gcc/x86_64-redhat-linux/6.3.1/lto-wrapper] ==> ignore
arg [-plugin-opt=-fresolution=/tmp/ccjrwrvZ.res] ==> ignore
arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
arg [-plugin-opt=-pass-through=-lc] ==> ignore
arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
arg [--build-id] ==> ignore
arg [--no-add-needed] ==> ignore
arg [--eh-frame-hdr] ==> ignore
arg [--hash-style=gnu] ==> ignore
arg [-m] ==> ignore
arg [elf_x86_64] ==> ignore
arg [-export-dynamic] ==> ignore
arg [-dynamic-linker] ==> ignore
arg [/lib64/ld-linux-x86-64.so.2] ==> ignore
arg [-o] ==> ignore
arg [cmTC_03f87] ==> ignore
arg [/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64/crt1.o] ==> ignore
arg [/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64/crti.o] ==> ignore
arg [/usr/lib/gcc/x86_64-redhat-linux/6.3.1/crtbegin.o] ==> ignore
arg [-L/usr/lib/gcc/x86_64-redhat-linux/6.3.1] ==> dir [/usr/lib/gcc/x86_64-redhat-linux/6.3.1]
arg [-L/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64] ==> dir [/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64]
arg [-L/lib/../lib64] ==> dir [/lib/../lib64]
arg [-L/usr/lib/../lib64] ==> dir [/usr/lib/../lib64]
arg [-L/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../..] ==> dir [/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../..]
arg [CMakeFiles/cmTC_03f87.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore
arg [-lstdc++] ==> lib [stdc++]
arg [-lm] ==> lib [m]
arg [-lgcc_s] ==> lib [gcc_s]
arg [-lgcc] ==> lib [gcc]
arg [-lc] ==> lib [c]
arg [-lgcc_s] ==> lib [gcc_s]
arg [-lgcc] ==> lib [gcc]
arg [/usr/lib/gcc/x86_64-redhat-linux/6.3.1/crtend.o] ==> ignore
arg [/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64/crtn.o] ==> ignore
remove lib [gcc_s]
remove lib [gcc]
remove lib [gcc_s]
remove lib [gcc]
collapse library dir [/usr/lib/gcc/x86_64-redhat-linux/6.3.1] ==> [/usr/lib/gcc/x86_64-redhat-linux/6.3.1]
collapse library dir [/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../lib64] ==> [/usr/lib64]
collapse library dir [/lib/../lib64] ==> [/lib64]
collapse library dir [/usr/lib/../lib64] ==> [/usr/lib64]
collapse library dir [/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../..] ==> [/usr/lib]
implicit libs: [stdc++;m;c]
implicit dirs: [/usr/lib/gcc/x86_64-redhat-linux/6.3.1;/usr/lib64;/lib64;/usr/lib]
implicit fwks: []
Detecting CXX [-std=c++1z] compiler features compiled with the following output:
Change Dir: /home/jan/dab-library/library/build/CMakeFiles/CMakeTmp
Run Build Command:"/usr/bin/gmake" "cmTC_b990e/fast"
/usr/bin/gmake -f CMakeFiles/cmTC_b990e.dir/build.make CMakeFiles/cmTC_b990e.dir/build
gmake[1]: Entering directory '/home/jan/dab-library/library/build/CMakeFiles/CMakeTmp'
Building CXX object CMakeFiles/cmTC_b990e.dir/feature_tests.cxx.o
/usr/bin/c++ -std=c++1z -o CMakeFiles/cmTC_b990e.dir/feature_tests.cxx.o -c /home/jan/dab-library/library/build/CMakeFiles/feature_tests.cxx
Linking CXX executable cmTC_b990e
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_b990e.dir/link.txt --verbose=1
/usr/bin/c++ -rdynamic CMakeFiles/cmTC_b990e.dir/feature_tests.cxx.o -o cmTC_b990e
gmake[1]: Leaving directory '/home/jan/dab-library/library/build/CMakeFiles/CMakeTmp'
Feature record: CXX_FEATURE:1cxx_aggregate_default_initializers
Feature record: CXX_FEATURE:1cxx_alias_templates
Feature record: CXX_FEATURE:1cxx_alignas
Feature record: CXX_FEATURE:1cxx_alignof
Feature record: CXX_FEATURE:1cxx_attributes
Feature record: CXX_FEATURE:1cxx_attribute_deprecated
Feature record: CXX_FEATURE:1cxx_auto_type
Feature record: CXX_FEATURE:1cxx_binary_literals
Feature record: CXX_FEATURE:1cxx_constexpr
Feature record: CXX_FEATURE:1cxx_contextual_conversions
Feature record: CXX_FEATURE:1cxx_decltype
Feature record: CXX_FEATURE:1cxx_decltype_auto
Feature record: CXX_FEATURE:1cxx_decltype_incomplete_return_types
Feature record: CXX_FEATURE:1cxx_default_function_template_args
Feature record: CXX_FEATURE:1cxx_defaulted_functions
Feature record: CXX_FEATURE:1cxx_defaulted_move_initializers
Feature record: CXX_FEATURE:1cxx_delegating_constructors
Feature record: CXX_FEATURE:1cxx_deleted_functions
Feature record: CXX_FEATURE:1cxx_digit_separators
Feature record: CXX_FEATURE:1cxx_enum_forward_declarations
Feature record: CXX_FEATURE:1cxx_explicit_conversions
Feature record: CXX_FEATURE:1cxx_extended_friend_declarations
Feature record: CXX_FEATURE:1cxx_extern_templates
Feature record: CXX_FEATURE:1cxx_final
Feature record: CXX_FEATURE:1cxx_func_identifier
Feature record: CXX_FEATURE:1cxx_generalized_initializers
Feature record: CXX_FEATURE:1cxx_generic_lambdas
Feature record: CXX_FEATURE:1cxx_inheriting_constructors
Feature record: CXX_FEATURE:1cxx_inline_namespaces
Feature record: CXX_FEATURE:1cxx_lambdas
Feature record: CXX_FEATURE:1cxx_lambda_init_captures
Feature record: CXX_FEATURE:1cxx_local_type_template_args
Feature record: CXX_FEATURE:1cxx_long_long_type
Feature record: CXX_FEATURE:1cxx_noexcept
Feature record: CXX_FEATURE:1cxx_nonstatic_member_init
Feature record: CXX_FEATURE:1cxx_nullptr
Feature record: CXX_FEATURE:1cxx_override
Feature record: CXX_FEATURE:1cxx_range_for
Feature record: CXX_FEATURE:1cxx_raw_string_literals
Feature record: CXX_FEATURE:1cxx_reference_qualified_functions
Feature record: CXX_FEATURE:1cxx_relaxed_constexpr
Feature record: CXX_FEATURE:1cxx_return_type_deduction
Feature record: CXX_FEATURE:1cxx_right_angle_brackets
Feature record: CXX_FEATURE:1cxx_rvalue_references
Feature record: CXX_FEATURE:1cxx_sizeof_member
Feature record: CXX_FEATURE:1cxx_static_assert
Feature record: CXX_FEATURE:1cxx_strong_enums
Feature record: CXX_FEATURE:1cxx_template_template_parameters
Feature record: CXX_FEATURE:1cxx_thread_local
Feature record: CXX_FEATURE:1cxx_trailing_return_types
Feature record: CXX_FEATURE:1cxx_unicode_literals
Feature record: CXX_FEATURE:1cxx_uniform_initialization
Feature record: CXX_FEATURE:1cxx_unrestricted_unions
Feature record: CXX_FEATURE:1cxx_user_literals
Feature record: CXX_FEATURE:1cxx_variable_templates
Feature record: CXX_FEATURE:1cxx_variadic_macros
Feature record: CXX_FEATURE:1cxx_variadic_templates
Detecting CXX [-std=c++14] compiler features compiled with the following output:
Change Dir: /home/jan/dab-library/library/build/CMakeFiles/CMakeTmp
Run Build Command:"/usr/bin/gmake" "cmTC_281e0/fast"
/usr/bin/gmake -f CMakeFiles/cmTC_281e0.dir/build.make CMakeFiles/cmTC_281e0.dir/build
gmake[1]: Entering directory '/home/jan/dab-library/library/build/CMakeFiles/CMakeTmp'
Building CXX object CMakeFiles/cmTC_281e0.dir/feature_tests.cxx.o
/usr/bin/c++ -std=c++14 -o CMakeFiles/cmTC_281e0.dir/feature_tests.cxx.o -c /home/jan/dab-library/library/build/CMakeFiles/feature_tests.cxx
Linking CXX executable cmTC_281e0
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_281e0.dir/link.txt --verbose=1
/usr/bin/c++ -rdynamic CMakeFiles/cmTC_281e0.dir/feature_tests.cxx.o -o cmTC_281e0
gmake[1]: Leaving directory '/home/jan/dab-library/library/build/CMakeFiles/CMakeTmp'
Feature record: CXX_FEATURE:1cxx_aggregate_default_initializers
Feature record: CXX_FEATURE:1cxx_alias_templates
Feature record: CXX_FEATURE:1cxx_alignas
Feature record: CXX_FEATURE:1cxx_alignof
Feature record: CXX_FEATURE:1cxx_attributes
Feature record: CXX_FEATURE:1cxx_attribute_deprecated
Feature record: CXX_FEATURE:1cxx_auto_type
Feature record: CXX_FEATURE:1cxx_binary_literals
Feature record: CXX_FEATURE:1cxx_constexpr
Feature record: CXX_FEATURE:1cxx_contextual_conversions
Feature record: CXX_FEATURE:1cxx_decltype
Feature record: CXX_FEATURE:1cxx_decltype_auto
Feature record: CXX_FEATURE:1cxx_decltype_incomplete_return_types
Feature record: CXX_FEATURE:1cxx_default_function_template_args
Feature record: CXX_FEATURE:1cxx_defaulted_functions
Feature record: CXX_FEATURE:1cxx_defaulted_move_initializers
Feature record: CXX_FEATURE:1cxx_delegating_constructors
Feature record: CXX_FEATURE:1cxx_deleted_functions
Feature record: CXX_FEATURE:1cxx_digit_separators
Feature record: CXX_FEATURE:1cxx_enum_forward_declarations
Feature record: CXX_FEATURE:1cxx_explicit_conversions
Feature record: CXX_FEATURE:1cxx_extended_friend_declarations
Feature record: CXX_FEATURE:1cxx_extern_templates
Feature record: CXX_FEATURE:1cxx_final
Feature record: CXX_FEATURE:1cxx_func_identifier
Feature record: CXX_FEATURE:1cxx_generalized_initializers
Feature record: CXX_FEATURE:1cxx_generic_lambdas
Feature record: CXX_FEATURE:1cxx_inheriting_constructors
Feature record: CXX_FEATURE:1cxx_inline_namespaces
Feature record: CXX_FEATURE:1cxx_lambdas
Feature record: CXX_FEATURE:1cxx_lambda_init_captures
Feature record: CXX_FEATURE:1cxx_local_type_template_args
Feature record: CXX_FEATURE:1cxx_long_long_type
Feature record: CXX_FEATURE:1cxx_noexcept
Feature record: CXX_FEATURE:1cxx_nonstatic_member_init
Feature record: CXX_FEATURE:1cxx_nullptr
Feature record: CXX_FEATURE:1cxx_override
Feature record: CXX_FEATURE:1cxx_range_for
Feature record: CXX_FEATURE:1cxx_raw_string_literals
Feature record: CXX_FEATURE:1cxx_reference_qualified_functions
Feature record: CXX_FEATURE:1cxx_relaxed_constexpr
Feature record: CXX_FEATURE:1cxx_return_type_deduction
Feature record: CXX_FEATURE:1cxx_right_angle_brackets
Feature record: CXX_FEATURE:1cxx_rvalue_references
Feature record: CXX_FEATURE:1cxx_sizeof_member
Feature record: CXX_FEATURE:1cxx_static_assert
Feature record: CXX_FEATURE:1cxx_strong_enums
Feature record: CXX_FEATURE:1cxx_template_template_parameters
Feature record: CXX_FEATURE:1cxx_thread_local
Feature record: CXX_FEATURE:1cxx_trailing_return_types
Feature record: CXX_FEATURE:1cxx_unicode_literals
Feature record: CXX_FEATURE:1cxx_uniform_initialization
Feature record: CXX_FEATURE:1cxx_unrestricted_unions
Feature record: CXX_FEATURE:1cxx_user_literals
Feature record: CXX_FEATURE:1cxx_variable_templates
Feature record: CXX_FEATURE:1cxx_variadic_macros
Feature record: CXX_FEATURE:1cxx_variadic_templates
Detecting CXX [-std=c++11] compiler features compiled with the following output:
Change Dir: /home/jan/dab-library/library/build/CMakeFiles/CMakeTmp
Run Build Command:"/usr/bin/gmake" "cmTC_0894a/fast"
/usr/bin/gmake -f CMakeFiles/cmTC_0894a.dir/build.make CMakeFiles/cmTC_0894a.dir/build
gmake[1]: Entering directory '/home/jan/dab-library/library/build/CMakeFiles/CMakeTmp'
Building CXX object CMakeFiles/cmTC_0894a.dir/feature_tests.cxx.o
/usr/bin/c++ -std=c++11 -o CMakeFiles/cmTC_0894a.dir/feature_tests.cxx.o -c /home/jan/dab-library/library/build/CMakeFiles/feature_tests.cxx
Linking CXX executable cmTC_0894a
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_0894a.dir/link.txt --verbose=1
/usr/bin/c++ -rdynamic CMakeFiles/cmTC_0894a.dir/feature_tests.cxx.o -o cmTC_0894a
gmake[1]: Leaving directory '/home/jan/dab-library/library/build/CMakeFiles/CMakeTmp'
Feature record: CXX_FEATURE:0cxx_aggregate_default_initializers
Feature record: CXX_FEATURE:1cxx_alias_templates
Feature record: CXX_FEATURE:1cxx_alignas
Feature record: CXX_FEATURE:1cxx_alignof
Feature record: CXX_FEATURE:1cxx_attributes
Feature record: CXX_FEATURE:0cxx_attribute_deprecated
Feature record: CXX_FEATURE:1cxx_auto_type
Feature record: CXX_FEATURE:0cxx_binary_literals
Feature record: CXX_FEATURE:1cxx_constexpr
Feature record: CXX_FEATURE:0cxx_contextual_conversions
Feature record: CXX_FEATURE:1cxx_decltype
Feature record: CXX_FEATURE:0cxx_decltype_auto
Feature record: CXX_FEATURE:1cxx_decltype_incomplete_return_types
Feature record: CXX_FEATURE:1cxx_default_function_template_args
Feature record: CXX_FEATURE:1cxx_defaulted_functions
Feature record: CXX_FEATURE:1cxx_defaulted_move_initializers
Feature record: CXX_FEATURE:1cxx_delegating_constructors
Feature record: CXX_FEATURE:1cxx_deleted_functions
Feature record: CXX_FEATURE:0cxx_digit_separators
Feature record: CXX_FEATURE:1cxx_enum_forward_declarations
Feature record: CXX_FEATURE:1cxx_explicit_conversions
Feature record: CXX_FEATURE:1cxx_extended_friend_declarations
Feature record: CXX_FEATURE:1cxx_extern_templates
Feature record: CXX_FEATURE:1cxx_final
Feature record: CXX_FEATURE:1cxx_func_identifier
Feature record: CXX_FEATURE:1cxx_generalized_initializers
Feature record: CXX_FEATURE:0cxx_generic_lambdas
Feature record: CXX_FEATURE:1cxx_inheriting_constructors
Feature record: CXX_FEATURE:1cxx_inline_namespaces
Feature record: CXX_FEATURE:1cxx_lambdas
Feature record: CXX_FEATURE:0cxx_lambda_init_captures
Feature record: CXX_FEATURE:1cxx_local_type_template_args
Feature record: CXX_FEATURE:1cxx_long_long_type
Feature record: CXX_FEATURE:1cxx_noexcept
Feature record: CXX_FEATURE:1cxx_nonstatic_member_init
Feature record: CXX_FEATURE:1cxx_nullptr
Feature record: CXX_FEATURE:1cxx_override
Feature record: CXX_FEATURE:1cxx_range_for
Feature record: CXX_FEATURE:1cxx_raw_string_literals
Feature record: CXX_FEATURE:1cxx_reference_qualified_functions
Feature record: CXX_FEATURE:0cxx_relaxed_constexpr
Feature record: CXX_FEATURE:0cxx_return_type_deduction
Feature record: CXX_FEATURE:1cxx_right_angle_brackets
Feature record: CXX_FEATURE:1cxx_rvalue_references
Feature record: CXX_FEATURE:1cxx_sizeof_member
Feature record: CXX_FEATURE:1cxx_static_assert
Feature record: CXX_FEATURE:1cxx_strong_enums
Feature record: CXX_FEATURE:1cxx_template_template_parameters
Feature record: CXX_FEATURE:1cxx_thread_local
Feature record: CXX_FEATURE:1cxx_trailing_return_types
Feature record: CXX_FEATURE:1cxx_unicode_literals
Feature record: CXX_FEATURE:1cxx_uniform_initialization
Feature record: CXX_FEATURE:1cxx_unrestricted_unions
Feature record: CXX_FEATURE:1cxx_user_literals
Feature record: CXX_FEATURE:0cxx_variable_templates
Feature record: CXX_FEATURE:1cxx_variadic_macros
Feature record: CXX_FEATURE:1cxx_variadic_templates
Detecting CXX [-std=c++98] compiler features compiled with the following output:
Change Dir: /home/jan/dab-library/library/build/CMakeFiles/CMakeTmp
Run Build Command:"/usr/bin/gmake" "cmTC_ea2b9/fast"
/usr/bin/gmake -f CMakeFiles/cmTC_ea2b9.dir/build.make CMakeFiles/cmTC_ea2b9.dir/build
gmake[1]: Entering directory '/home/jan/dab-library/library/build/CMakeFiles/CMakeTmp'
Building CXX object CMakeFiles/cmTC_ea2b9.dir/feature_tests.cxx.o
/usr/bin/c++ -std=c++98 -o CMakeFiles/cmTC_ea2b9.dir/feature_tests.cxx.o -c /home/jan/dab-library/library/build/CMakeFiles/feature_tests.cxx
Linking CXX executable cmTC_ea2b9
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_ea2b9.dir/link.txt --verbose=1
/usr/bin/c++ -rdynamic CMakeFiles/cmTC_ea2b9.dir/feature_tests.cxx.o -o cmTC_ea2b9
gmake[1]: Leaving directory '/home/jan/dab-library/library/build/CMakeFiles/CMakeTmp'
Feature record: CXX_FEATURE:0cxx_aggregate_default_initializers
Feature record: CXX_FEATURE:0cxx_alias_templates
Feature record: CXX_FEATURE:0cxx_alignas
Feature record: CXX_FEATURE:0cxx_alignof
Feature record: CXX_FEATURE:0cxx_attributes
Feature record: CXX_FEATURE:0cxx_attribute_deprecated
Feature record: CXX_FEATURE:0cxx_auto_type
Feature record: CXX_FEATURE:0cxx_binary_literals
Feature record: CXX_FEATURE:0cxx_constexpr
Feature record: CXX_FEATURE:0cxx_contextual_conversions
Feature record: CXX_FEATURE:0cxx_decltype
Feature record: CXX_FEATURE:0cxx_decltype_auto
Feature record: CXX_FEATURE:0cxx_decltype_incomplete_return_types
Feature record: CXX_FEATURE:0cxx_default_function_template_args
Feature record: CXX_FEATURE:0cxx_defaulted_functions
Feature record: CXX_FEATURE:0cxx_defaulted_move_initializers
Feature record: CXX_FEATURE:0cxx_delegating_constructors
Feature record: CXX_FEATURE:0cxx_deleted_functions
Feature record: CXX_FEATURE:0cxx_digit_separators
Feature record: CXX_FEATURE:0cxx_enum_forward_declarations
Feature record: CXX_FEATURE:0cxx_explicit_conversions
Feature record: CXX_FEATURE:0cxx_extended_friend_declarations
Feature record: CXX_FEATURE:0cxx_extern_templates
Feature record: CXX_FEATURE:0cxx_final
Feature record: CXX_FEATURE:0cxx_func_identifier
Feature record: CXX_FEATURE:0cxx_generalized_initializers
Feature record: CXX_FEATURE:0cxx_generic_lambdas
Feature record: CXX_FEATURE:0cxx_inheriting_constructors
Feature record: CXX_FEATURE:0cxx_inline_namespaces
Feature record: CXX_FEATURE:0cxx_lambdas
Feature record: CXX_FEATURE:0cxx_lambda_init_captures
Feature record: CXX_FEATURE:0cxx_local_type_template_args
Feature record: CXX_FEATURE:0cxx_long_long_type
Feature record: CXX_FEATURE:0cxx_noexcept
Feature record: CXX_FEATURE:0cxx_nonstatic_member_init
Feature record: CXX_FEATURE:0cxx_nullptr
Feature record: CXX_FEATURE:0cxx_override
Feature record: CXX_FEATURE:0cxx_range_for
Feature record: CXX_FEATURE:0cxx_raw_string_literals
Feature record: CXX_FEATURE:0cxx_reference_qualified_functions
Feature record: CXX_FEATURE:0cxx_relaxed_constexpr
Feature record: CXX_FEATURE:0cxx_return_type_deduction
Feature record: CXX_FEATURE:0cxx_right_angle_brackets
Feature record: CXX_FEATURE:0cxx_rvalue_references
Feature record: CXX_FEATURE:0cxx_sizeof_member
Feature record: CXX_FEATURE:0cxx_static_assert
Feature record: CXX_FEATURE:0cxx_strong_enums
Feature record: CXX_FEATURE:1cxx_template_template_parameters
Feature record: CXX_FEATURE:0cxx_thread_local
Feature record: CXX_FEATURE:0cxx_trailing_return_types
Feature record: CXX_FEATURE:0cxx_unicode_literals
Feature record: CXX_FEATURE:0cxx_uniform_initialization
Feature record: CXX_FEATURE:0cxx_unrestricted_unions
Feature record: CXX_FEATURE:0cxx_user_literals
Feature record: CXX_FEATURE:0cxx_variable_templates
Feature record: CXX_FEATURE:0cxx_variadic_macros
Feature record: CXX_FEATURE:0cxx_variadic_templates

View File

@@ -0,0 +1,2 @@
# Hashes of file build rules.
cf66b7947596ea4ae4a70db807e000b8 CMakeFiles/uninstall

View File

@@ -0,0 +1,54 @@
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.8
# The generator used is:
set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles")
# The top level Makefile was generated from the following files:
set(CMAKE_MAKEFILE_DEPENDS
"CMakeCache.txt"
"../CMakeLists.txt"
"CMakeFiles/3.8.0/CMakeCCompiler.cmake"
"CMakeFiles/3.8.0/CMakeCXXCompiler.cmake"
"CMakeFiles/3.8.0/CMakeSystem.cmake"
"../cmake/Modules/FindFFTW3f.cmake"
"../cmake/Modules/FindFaad.cmake"
"../cmake/Modules/Findzlib.cmake"
"../cmake/cmake_uninstall.cmake.in"
"/usr/share/cmake/Modules/CMakeCInformation.cmake"
"/usr/share/cmake/Modules/CMakeCXXInformation.cmake"
"/usr/share/cmake/Modules/CMakeCommonLanguageInclude.cmake"
"/usr/share/cmake/Modules/CMakeGenericSystem.cmake"
"/usr/share/cmake/Modules/CMakeLanguageInformation.cmake"
"/usr/share/cmake/Modules/CMakeSystemSpecificInformation.cmake"
"/usr/share/cmake/Modules/CMakeSystemSpecificInitialize.cmake"
"/usr/share/cmake/Modules/Compiler/GNU-C.cmake"
"/usr/share/cmake/Modules/Compiler/GNU-CXX.cmake"
"/usr/share/cmake/Modules/Compiler/GNU.cmake"
"/usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake"
"/usr/share/cmake/Modules/FindPackageMessage.cmake"
"/usr/share/cmake/Modules/FindPkgConfig.cmake"
"/usr/share/cmake/Modules/Platform/Linux-GNU-C.cmake"
"/usr/share/cmake/Modules/Platform/Linux-GNU-CXX.cmake"
"/usr/share/cmake/Modules/Platform/Linux-GNU.cmake"
"/usr/share/cmake/Modules/Platform/Linux.cmake"
"/usr/share/cmake/Modules/Platform/UnixPaths.cmake"
)
# The corresponding makefile is:
set(CMAKE_MAKEFILE_OUTPUTS
"Makefile"
"CMakeFiles/cmake.check_cache"
)
# Byproducts of CMake generate step:
set(CMAKE_MAKEFILE_PRODUCTS
"cmake_uninstall.cmake"
"CMakeFiles/CMakeDirectoryInformation.cmake"
)
# Dependency information for all targets:
set(CMAKE_DEPEND_INFO_FILES
"CMakeFiles/uninstall.dir/DependInfo.cmake"
"CMakeFiles/dab_lib.dir/DependInfo.cmake"
)

View File

@@ -0,0 +1,140 @@
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.8
# Default target executed when no arguments are given to make.
default_target: all
.PHONY : default_target
# The main recursive all target
all:
.PHONY : all
# The main recursive preinstall target
preinstall:
.PHONY : preinstall
#=============================================================================
# Special targets provided by cmake.
# Disable implicit rules so canonical targets will work.
.SUFFIXES:
# Remove some rules from gmake that .SUFFIXES does not remove.
SUFFIXES =
.SUFFIXES: .hpux_make_needs_suffix_list
# Suppress display of executed commands.
$(VERBOSE).SILENT:
# A target that is always out of date.
cmake_force:
.PHONY : cmake_force
#=============================================================================
# Set environment variables for the build.
# The shell in which to execute make rules.
SHELL = /bin/sh
# The CMake executable.
CMAKE_COMMAND = /usr/bin/cmake
# The command to remove a file.
RM = /usr/bin/cmake -E remove -f
# Escaping for special characters.
EQUALS = =
# The top-level source directory on which CMake was run.
CMAKE_SOURCE_DIR = /home/jan/dab-library/library
# The top-level build directory on which CMake was run.
CMAKE_BINARY_DIR = /home/jan/dab-library/library/build
#=============================================================================
# Target rules for target CMakeFiles/uninstall.dir
# All Build rule for target.
CMakeFiles/uninstall.dir/all:
$(MAKE) -f CMakeFiles/uninstall.dir/build.make CMakeFiles/uninstall.dir/depend
$(MAKE) -f CMakeFiles/uninstall.dir/build.make CMakeFiles/uninstall.dir/build
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/jan/dab-library/library/build/CMakeFiles --progress-num= "Built target uninstall"
.PHONY : CMakeFiles/uninstall.dir/all
# Build rule for subdir invocation for target.
CMakeFiles/uninstall.dir/rule: cmake_check_build_system
$(CMAKE_COMMAND) -E cmake_progress_start /home/jan/dab-library/library/build/CMakeFiles 0
$(MAKE) -f CMakeFiles/Makefile2 CMakeFiles/uninstall.dir/all
$(CMAKE_COMMAND) -E cmake_progress_start /home/jan/dab-library/library/build/CMakeFiles 0
.PHONY : CMakeFiles/uninstall.dir/rule
# Convenience name for target.
uninstall: CMakeFiles/uninstall.dir/rule
.PHONY : uninstall
# clean rule for target.
CMakeFiles/uninstall.dir/clean:
$(MAKE) -f CMakeFiles/uninstall.dir/build.make CMakeFiles/uninstall.dir/clean
.PHONY : CMakeFiles/uninstall.dir/clean
# clean rule for target.
clean: CMakeFiles/uninstall.dir/clean
.PHONY : clean
#=============================================================================
# Target rules for target CMakeFiles/dab_lib.dir
# All Build rule for target.
CMakeFiles/dab_lib.dir/all:
$(MAKE) -f CMakeFiles/dab_lib.dir/build.make CMakeFiles/dab_lib.dir/depend
$(MAKE) -f CMakeFiles/dab_lib.dir/build.make CMakeFiles/dab_lib.dir/build
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/jan/dab-library/library/build/CMakeFiles --progress-num=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36 "Built target dab_lib"
.PHONY : CMakeFiles/dab_lib.dir/all
# Include target in all.
all: CMakeFiles/dab_lib.dir/all
.PHONY : all
# Build rule for subdir invocation for target.
CMakeFiles/dab_lib.dir/rule: cmake_check_build_system
$(CMAKE_COMMAND) -E cmake_progress_start /home/jan/dab-library/library/build/CMakeFiles 36
$(MAKE) -f CMakeFiles/Makefile2 CMakeFiles/dab_lib.dir/all
$(CMAKE_COMMAND) -E cmake_progress_start /home/jan/dab-library/library/build/CMakeFiles 0
.PHONY : CMakeFiles/dab_lib.dir/rule
# Convenience name for target.
dab_lib: CMakeFiles/dab_lib.dir/rule
.PHONY : dab_lib
# clean rule for target.
CMakeFiles/dab_lib.dir/clean:
$(MAKE) -f CMakeFiles/dab_lib.dir/build.make CMakeFiles/dab_lib.dir/clean
.PHONY : CMakeFiles/dab_lib.dir/clean
# clean rule for target.
clean: CMakeFiles/dab_lib.dir/clean
.PHONY : clean
#=============================================================================
# Special targets to cleanup operation of make.
# Special rule to run CMake to check the build system integrity.
# No rule that depends on this can have commands that come from listfiles
# because they might be regenerated.
cmake_check_build_system:
$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
.PHONY : cmake_check_build_system

View File

@@ -0,0 +1,8 @@
/home/jan/dab-library/library/build/CMakeFiles/install/strip.dir
/home/jan/dab-library/library/build/CMakeFiles/install/local.dir
/home/jan/dab-library/library/build/CMakeFiles/install.dir
/home/jan/dab-library/library/build/CMakeFiles/list_install_components.dir
/home/jan/dab-library/library/build/CMakeFiles/edit_cache.dir
/home/jan/dab-library/library/build/CMakeFiles/uninstall.dir
/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir
/home/jan/dab-library/library/build/CMakeFiles/rebuild_cache.dir

View File

@@ -0,0 +1 @@
# This file is generated by cmake for dependency checking of the CMakeCache.txt file

View File

@@ -0,0 +1,14 @@
#IncludeRegexLine: ^[ ]*[#%][ ]*(include|import)[ ]*[<"]([^">]+)([">])
#IncludeRegexScan: ^.*$
#IncludeRegexComplain: ^$
#IncludeRegexTransform:
/home/jan/dab-library/library/src/backend/viterbi_768/spiral-no-sse.c
spiral-no-sse.h
/home/jan/dab-library/library/src/backend/viterbi_768/spiral-no-sse.h
/home/jan/dab-library/library/src/backend/viterbi_768/spiral-no-sse.h

View File

@@ -0,0 +1,736 @@
#IncludeRegexLine: ^[ ]*[#%][ ]*(include|import)[ ]*[<"]([^">]+)([">])
#IncludeRegexScan: ^.*$
#IncludeRegexComplain: ^$
#IncludeRegexTransform:
../../dab-api.h
stdio.h
-
stdint.h
-
string
-
complex
-
ringbuffer.h
../../ringbuffer.h
stdint.h
-
device-handler.h
../../device-handler.h
../../device-handler.h
stdint.h
-
complex
-
../../ringbuffer.h
stdlib.h
-
stdio.h
-
string.h
-
stdint.h
-
libkern/OSAtomic.h
-
.././includes/backend/audio/dab-audio.h
dab-virtual.h
.././includes/backend/audio/dab-virtual.h
ringbuffer.h
.././includes/backend/audio/ringbuffer.h
stdio.h
-
thread
-
mutex
-
condition_variable
-
atomic
-
dab-api.h
.././includes/backend/audio/dab-api.h
.././includes/backend/audio/faad-decoder.h
neaacdec.h
.././includes/backend/audio/neaacdec.h
ringbuffer.h
.././includes/backend/audio/ringbuffer.h
dab-api.h
.././includes/backend/audio/dab-api.h
.././includes/backend/audio/mp2processor.h
stdio.h
-
stdint.h
-
math.h
-
dab-processor.h
.././includes/backend/audio/dab-processor.h
pad-handler.h
.././includes/backend/audio/pad-handler.h
stdio.h
-
ringbuffer.h
.././includes/backend/audio/ringbuffer.h
dab-api.h
.././includes/backend/audio/dab-api.h
.././includes/backend/audio/mp4processor.h
dab-constants.h
.././includes/backend/audio/dab-constants.h
stdio.h
-
stdint.h
-
dab-processor.h
.././includes/backend/audio/dab-processor.h
dab-api.h
.././includes/backend/audio/dab-api.h
firecode-checker.h
.././includes/backend/audio/firecode-checker.h
reed-solomon.h
.././includes/backend/audio/reed-solomon.h
faad-decoder.h
.././includes/backend/audio/faad-decoder.h
pad-handler.h
.././includes/backend/audio/pad-handler.h
.././includes/backend/audio/neaacdec.h
.././includes/backend/charsets.h
cstring
-
string
-
.././includes/backend/dab-processor.h
stdint.h
-
stdio.h
-
.././includes/backend/dab-virtual.h
stdint.h
-
stdio.h
-
.././includes/backend/data/dab-data.h
dab-virtual.h
.././includes/backend/data/dab-virtual.h
ringbuffer.h
.././includes/backend/data/ringbuffer.h
stdio.h
-
thread
-
mutex
-
atomic
-
condition_variable
-
.././includes/backend/data/data-processor.h
dab-processor.h
.././includes/backend/data/dab-processor.h
dab-virtual.h
.././includes/backend/data/dab-virtual.h
stdio.h
-
string.h
-
vector
-
.././includes/backend/data/mot-data.h
dab-constants.h
.././includes/backend/data/dab-constants.h
vector
-
.././includes/backend/data/mot-databuilder.h
dab-constants.h
.././includes/backend/data/dab-constants.h
virtual-datahandler.h
.././includes/backend/data/virtual-datahandler.h
.././includes/backend/data/pad-handler.h
stdint.h
-
string
-
dab-api.h
.././includes/backend/data/dab-api.h
.././includes/backend/data/tdc-datahandler.h
dab-constants.h
.././includes/backend/data/dab-constants.h
virtual-datahandler.h
.././includes/backend/data/virtual-datahandler.h
.././includes/backend/data/virtual-datahandler.h
dab-constants.h
.././includes/backend/data/dab-constants.h
vector
-
.././includes/backend/eep-protection.h
stdio.h
-
stdint.h
-
protection.h
.././includes/backend/protection.h
viterbi-768.h
.././includes/backend/viterbi-768.h
.././includes/backend/fib-processor.h
stdint.h
-
stdio.h
-
string
-
dab-api.h
.././includes/backend/dab-api.h
dab-constants.h
.././includes/backend/dab-constants.h
tii_table.h
.././includes/backend/tii_table.h
.././includes/backend/fic-handler.h
stdio.h
-
stdint.h
-
viterbi-768.h
.././includes/backend/viterbi-768.h
fib-processor.h
.././includes/backend/fib-processor.h
mutex
-
string
-
dab-api.h
.././includes/backend/dab-api.h
.././includes/backend/firecode-checker.h
stdint.h
-
.././includes/backend/galois.h
stdint.h
-
.././includes/backend/mm_malloc.h
stdlib.h
-
malloc.h
-
.././includes/backend/msc-handler.h
stdio.h
-
stdint.h
-
stdio.h
-
mutex
-
condition_variable
-
dab-constants.h
.././includes/backend/dab-constants.h
dab-api.h
.././includes/backend/dab-api.h
dab-params.h
.././includes/backend/dab-params.h
.././includes/backend/protTables.h
stdint.h
-
.././includes/backend/protection.h
stdint.h
-
.././includes/backend/reed-solomon.h
stdint.h
-
galois.h
.././includes/backend/galois.h
.././includes/backend/uep-protection.h
stdio.h
-
stdint.h
-
protection.h
.././includes/backend/protection.h
viterbi-768.h
.././includes/backend/viterbi-768.h
.././includes/backend/viterbi_768/viterbi-768.h
dab-constants.h
.././includes/backend/viterbi_768/dab-constants.h
.././includes/dab-class.h
dab-constants.h
.././includes/dab-constants.h
dab-api.h
.././includes/dab-api.h
vector
-
string
-
list
-
atomic
-
thread
-
ofdm-processor.h
.././includes/ofdm-processor.h
fic-handler.h
.././includes/fic-handler.h
msc-handler.h
.././includes/msc-handler.h
ringbuffer.h
.././includes/ringbuffer.h
ensemble-handler.h
.././includes/ensemble-handler.h
dab-params.h
.././includes/dab-params.h
.././includes/dab-constants.h
math.h
-
stdint.h
-
stdlib.h
-
stdio.h
-
complex
-
limits
-
cstring
-
unistd.h
-
malloc.h
-
windows.h
.././includes/windows.h
alloca.h
.././includes/alloca.h
dlfcn.h
.././includes/dlfcn.h
.././includes/ofdm/freq-interleaver.h
stdint.h
-
dab-constants.h
.././includes/ofdm/dab-constants.h
.././includes/ofdm/ofdm-decoder.h
stdint.h
-
thread
-
mutex
-
condition_variable
-
atomic
-
dab-constants.h
.././includes/ofdm/dab-constants.h
fft.h
.././includes/ofdm/fft.h
ringbuffer.h
.././includes/ofdm/ringbuffer.h
phasetable.h
.././includes/ofdm/phasetable.h
freq-interleaver.h
.././includes/ofdm/freq-interleaver.h
semaphore.h
.././includes/ofdm/semaphore.h
.././includes/ofdm/ofdm-processor.h
dab-constants.h
.././includes/ofdm/dab-constants.h
thread
-
atomic
-
stdint.h
-
phasereference.h
.././includes/ofdm/phasereference.h
ofdm-decoder.h
.././includes/ofdm/ofdm-decoder.h
dab-params.h
.././includes/ofdm/dab-params.h
ringbuffer.h
.././includes/ofdm/ringbuffer.h
dab-api.h
.././includes/ofdm/dab-api.h
.././includes/ofdm/phasereference.h
fft.h
.././includes/ofdm/fft.h
stdio.h
-
stdint.h
-
phasetable.h
.././includes/ofdm/phasetable.h
dab-constants.h
.././includes/ofdm/dab-constants.h
.././includes/ofdm/phasetable.h
stdio.h
-
stdint.h
-
dab-constants.h
.././includes/ofdm/dab-constants.h
.././includes/various/dab-params.h
stdint.h
-
.././includes/various/ensemble-handler.h
stdio.h
-
stdint.h
-
mutex
-
string
-
list
-
.././includes/various/fft.h
stdint.h
-
fftw3.h
-
complex
-
.././includes/various/semaphore.h
thread
-
mutex
-
condition_variable
-
.././includes/various/tii_table.h
dab-constants.h
.././includes/various/dab-constants.h
vector
-
/home/jan/dab-library/library/dab-api.cpp
dab-api.h
/home/jan/dab-library/library/dab-api.h
ringbuffer.h
/home/jan/dab-library/library/ringbuffer.h
dab-class.h
/home/jan/dab-library/library/dab-class.h
/home/jan/dab-library/library/src/backend/audio/dab-audio.cpp
dab-constants.h
/home/jan/dab-library/library/src/backend/audio/dab-constants.h
dab-audio.h
/home/jan/dab-library/library/src/backend/audio/dab-audio.h
mp2processor.h
/home/jan/dab-library/library/src/backend/audio/mp2processor.h
mp4processor.h
/home/jan/dab-library/library/src/backend/audio/mp4processor.h
eep-protection.h
/home/jan/dab-library/library/src/backend/audio/eep-protection.h
uep-protection.h
/home/jan/dab-library/library/src/backend/audio/uep-protection.h
chrono
-
/home/jan/dab-library/library/src/backend/audio/mp2processor.cpp
mp2processor.h
/home/jan/dab-library/library/src/backend/audio/mp2processor.h
/home/jan/dab-library/library/src/backend/audio/mp4processor.cpp
mp4processor.h
/home/jan/dab-library/library/src/backend/audio/mp4processor.h
cstring
-
charsets.h
/home/jan/dab-library/library/src/backend/audio/charsets.h
pad-handler.h
/home/jan/dab-library/library/src/backend/audio/pad-handler.h
/home/jan/dab-library/library/src/backend/charsets.cpp
charsets.h
/home/jan/dab-library/library/src/backend/charsets.h
stdint.h
-
/home/jan/dab-library/library/src/backend/dab-processor.cpp
dab-processor.h
/home/jan/dab-library/library/src/backend/dab-processor.h
/home/jan/dab-library/library/src/backend/dab-virtual.cpp
dab-constants.h
/home/jan/dab-library/library/src/backend/dab-constants.h
dab-virtual.h
/home/jan/dab-library/library/src/backend/dab-virtual.h
/home/jan/dab-library/library/src/backend/data/dab-data.cpp
dab-constants.h
/home/jan/dab-library/library/src/backend/data/dab-constants.h
dab-data.h
/home/jan/dab-library/library/src/backend/data/dab-data.h
dab-processor.h
/home/jan/dab-library/library/src/backend/data/dab-processor.h
eep-protection.h
/home/jan/dab-library/library/src/backend/data/eep-protection.h
uep-protection.h
/home/jan/dab-library/library/src/backend/data/uep-protection.h
data-processor.h
/home/jan/dab-library/library/src/backend/data/data-processor.h
chrono
-
/home/jan/dab-library/library/src/backend/data/data-processor.cpp
dab-constants.h
/home/jan/dab-library/library/src/backend/data/dab-constants.h
data-processor.h
/home/jan/dab-library/library/src/backend/data/data-processor.h
virtual-datahandler.h
/home/jan/dab-library/library/src/backend/data/virtual-datahandler.h
mot-databuilder.h
/home/jan/dab-library/library/src/backend/data/mot-databuilder.h
tdc-datahandler.h
/home/jan/dab-library/library/src/backend/data/tdc-datahandler.h
/home/jan/dab-library/library/src/backend/data/mot-data.cpp
mot-data.h
/home/jan/dab-library/library/src/backend/data/mot-data.h
/home/jan/dab-library/library/src/backend/data/mot-databuilder.cpp
mot-databuilder.h
/home/jan/dab-library/library/src/backend/data/mot-databuilder.h
mot-data.h
/home/jan/dab-library/library/src/backend/data/mot-data.h
/home/jan/dab-library/library/src/backend/data/pad-handler.cpp
pad-handler.h
/home/jan/dab-library/library/src/backend/data/pad-handler.h
cstring
-
charsets.h
/home/jan/dab-library/library/src/backend/data/charsets.h
mot-data.h
/home/jan/dab-library/library/src/backend/data/mot-data.h
/home/jan/dab-library/library/src/backend/data/tdc-datahandler.cpp
tdc-datahandler.h
/home/jan/dab-library/library/src/backend/data/tdc-datahandler.h
/home/jan/dab-library/library/src/backend/data/virtual-datahandler.cpp
virtual-datahandler.h
/home/jan/dab-library/library/src/backend/data/virtual-datahandler.h
/home/jan/dab-library/library/src/backend/eep-protection.cpp
dab-constants.h
/home/jan/dab-library/library/src/backend/dab-constants.h
eep-protection.h
/home/jan/dab-library/library/src/backend/eep-protection.h
protTables.h
/home/jan/dab-library/library/src/backend/protTables.h
/home/jan/dab-library/library/src/backend/fib-processor.cpp
fib-processor.h
/home/jan/dab-library/library/src/backend/fib-processor.h
cstring
-
charsets.h
/home/jan/dab-library/library/src/backend/charsets.h
ensemble-handler.h
/home/jan/dab-library/library/src/backend/ensemble-handler.h
/home/jan/dab-library/library/src/backend/fic-handler.cpp
fic-handler.h
/home/jan/dab-library/library/src/backend/fic-handler.h
msc-handler.h
/home/jan/dab-library/library/src/backend/msc-handler.h
protTables.h
/home/jan/dab-library/library/src/backend/protTables.h
/home/jan/dab-library/library/src/backend/firecode-checker.cpp
firecode-checker.h
/home/jan/dab-library/library/src/backend/firecode-checker.h
cstring
-
/home/jan/dab-library/library/src/backend/galois.cpp
galois.h
/home/jan/dab-library/library/src/backend/galois.h
stdio.h
-
/home/jan/dab-library/library/src/backend/msc-handler.cpp
dab-constants.h
/home/jan/dab-library/library/src/backend/dab-constants.h
msc-handler.h
/home/jan/dab-library/library/src/backend/msc-handler.h
dab-virtual.h
/home/jan/dab-library/library/src/backend/dab-virtual.h
dab-audio.h
/home/jan/dab-library/library/src/backend/dab-audio.h
dab-data.h
/home/jan/dab-library/library/src/backend/dab-data.h
dab-params.h
/home/jan/dab-library/library/src/backend/dab-params.h
/home/jan/dab-library/library/src/backend/protTables.cpp
protTables.h
/home/jan/dab-library/library/src/backend/protTables.h
/home/jan/dab-library/library/src/backend/protection.cpp
protection.h
/home/jan/dab-library/library/src/backend/protection.h
/home/jan/dab-library/library/src/backend/reed-solomon.cpp
stdio.h
-
reed-solomon.h
/home/jan/dab-library/library/src/backend/reed-solomon.h
string.h
-
/home/jan/dab-library/library/src/backend/uep-protection.cpp
dab-constants.h
/home/jan/dab-library/library/src/backend/dab-constants.h
uep-protection.h
/home/jan/dab-library/library/src/backend/uep-protection.h
protTables.h
/home/jan/dab-library/library/src/backend/protTables.h
/home/jan/dab-library/library/src/backend/viterbi_768/viterbi-768.cpp
stdio.h
-
stdlib.h
-
mm_malloc.h
/home/jan/dab-library/library/src/backend/viterbi_768/mm_malloc.h
viterbi-768.h
/home/jan/dab-library/library/src/backend/viterbi_768/viterbi-768.h
cstring
-
intrin.h
-
malloc.h
-
windows.h
-
/home/jan/dab-library/library/src/dab-class.cpp
unistd.h
-
termios.h
-
stdio.h
-
sys/select.h
-
atomic
-
dab-constants.h
/home/jan/dab-library/library/src/dab-constants.h
dab-class.h
/home/jan/dab-library/library/src/dab-class.h
device-handler.h
/home/jan/dab-library/library/src/device-handler.h
/home/jan/dab-library/library/src/ofdm/freq-interleaver.cpp
stdint.h
-
stdio.h
-
freq-interleaver.h
/home/jan/dab-library/library/src/ofdm/freq-interleaver.h
dab-params.h
/home/jan/dab-library/library/src/ofdm/dab-params.h
/home/jan/dab-library/library/src/ofdm/ofdm-decoder.cpp
ofdm-decoder.h
/home/jan/dab-library/library/src/ofdm/ofdm-decoder.h
phasetable.h
/home/jan/dab-library/library/src/ofdm/phasetable.h
fic-handler.h
/home/jan/dab-library/library/src/ofdm/fic-handler.h
msc-handler.h
/home/jan/dab-library/library/src/ofdm/msc-handler.h
freq-interleaver.h
/home/jan/dab-library/library/src/ofdm/freq-interleaver.h
dab-params.h
/home/jan/dab-library/library/src/ofdm/dab-params.h
/home/jan/dab-library/library/src/ofdm/ofdm-processor.cpp
ofdm-processor.h
/home/jan/dab-library/library/src/ofdm/ofdm-processor.h
ofdm-decoder.h
/home/jan/dab-library/library/src/ofdm/ofdm-decoder.h
msc-handler.h
/home/jan/dab-library/library/src/ofdm/msc-handler.h
fic-handler.h
/home/jan/dab-library/library/src/ofdm/fic-handler.h
fft.h
/home/jan/dab-library/library/src/ofdm/fft.h
dab-api.h
/home/jan/dab-library/library/src/ofdm/dab-api.h
device-handler.h
/home/jan/dab-library/library/src/ofdm/device-handler.h
/home/jan/dab-library/library/src/ofdm/phasereference.cpp
phasereference.h
/home/jan/dab-library/library/src/ofdm/phasereference.h
string.h
/home/jan/dab-library/library/src/ofdm/string.h
dab-params.h
/home/jan/dab-library/library/src/ofdm/dab-params.h
/home/jan/dab-library/library/src/ofdm/phasetable.cpp
phasetable.h
/home/jan/dab-library/library/src/ofdm/phasetable.h
/home/jan/dab-library/library/src/various/dab-params.cpp
dab-params.h
/home/jan/dab-library/library/src/various/dab-params.h
/home/jan/dab-library/library/src/various/fft.cpp
fft.h
/home/jan/dab-library/library/src/various/fft.h
cstring
-
/home/jan/dab-library/library/src/various/tii_table.cpp
tii_table.h
/home/jan/dab-library/library/src/various/tii_table.h

View File

@@ -0,0 +1,86 @@
# The set of languages for which implicit dependencies are needed:
set(CMAKE_DEPENDS_LANGUAGES
"C"
"CXX"
)
# The set of files for implicit dependencies of each language:
set(CMAKE_DEPENDS_CHECK_C
"/home/jan/dab-library/library/src/backend/viterbi_768/spiral-no-sse.c" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/backend/viterbi_768/spiral-no-sse.c.o"
)
set(CMAKE_C_COMPILER_ID "GNU")
# The include file search paths:
set(CMAKE_C_TARGET_INCLUDE_PATH
"../"
"."
"../."
"../.."
".././includes"
".././includes/ofdm"
".././includes/backend"
".././includes/backend/viterbi_768"
".././includes/backend/audio"
".././includes/backend/data"
".././includes/backend/data/journaline"
".././includes/various"
)
set(CMAKE_DEPENDS_CHECK_CXX
"/home/jan/dab-library/library/dab-api.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/dab-api.cpp.o"
"/home/jan/dab-library/library/src/backend/audio/dab-audio.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/backend/audio/dab-audio.cpp.o"
"/home/jan/dab-library/library/src/backend/audio/mp2processor.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/backend/audio/mp2processor.cpp.o"
"/home/jan/dab-library/library/src/backend/audio/mp4processor.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/backend/audio/mp4processor.cpp.o"
"/home/jan/dab-library/library/src/backend/charsets.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/backend/charsets.cpp.o"
"/home/jan/dab-library/library/src/backend/dab-processor.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/backend/dab-processor.cpp.o"
"/home/jan/dab-library/library/src/backend/dab-virtual.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/backend/dab-virtual.cpp.o"
"/home/jan/dab-library/library/src/backend/data/dab-data.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/backend/data/dab-data.cpp.o"
"/home/jan/dab-library/library/src/backend/data/data-processor.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/backend/data/data-processor.cpp.o"
"/home/jan/dab-library/library/src/backend/data/mot-data.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/backend/data/mot-data.cpp.o"
"/home/jan/dab-library/library/src/backend/data/mot-databuilder.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/backend/data/mot-databuilder.cpp.o"
"/home/jan/dab-library/library/src/backend/data/pad-handler.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/backend/data/pad-handler.cpp.o"
"/home/jan/dab-library/library/src/backend/data/tdc-datahandler.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/backend/data/tdc-datahandler.cpp.o"
"/home/jan/dab-library/library/src/backend/data/virtual-datahandler.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/backend/data/virtual-datahandler.cpp.o"
"/home/jan/dab-library/library/src/backend/eep-protection.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/backend/eep-protection.cpp.o"
"/home/jan/dab-library/library/src/backend/fib-processor.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/backend/fib-processor.cpp.o"
"/home/jan/dab-library/library/src/backend/fic-handler.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/backend/fic-handler.cpp.o"
"/home/jan/dab-library/library/src/backend/firecode-checker.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/backend/firecode-checker.cpp.o"
"/home/jan/dab-library/library/src/backend/galois.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/backend/galois.cpp.o"
"/home/jan/dab-library/library/src/backend/msc-handler.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/backend/msc-handler.cpp.o"
"/home/jan/dab-library/library/src/backend/protTables.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/backend/protTables.cpp.o"
"/home/jan/dab-library/library/src/backend/protection.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/backend/protection.cpp.o"
"/home/jan/dab-library/library/src/backend/reed-solomon.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/backend/reed-solomon.cpp.o"
"/home/jan/dab-library/library/src/backend/uep-protection.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/backend/uep-protection.cpp.o"
"/home/jan/dab-library/library/src/backend/viterbi_768/viterbi-768.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/backend/viterbi_768/viterbi-768.cpp.o"
"/home/jan/dab-library/library/src/dab-class.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/dab-class.cpp.o"
"/home/jan/dab-library/library/src/ofdm/freq-interleaver.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/ofdm/freq-interleaver.cpp.o"
"/home/jan/dab-library/library/src/ofdm/ofdm-decoder.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/ofdm/ofdm-decoder.cpp.o"
"/home/jan/dab-library/library/src/ofdm/ofdm-processor.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/ofdm/ofdm-processor.cpp.o"
"/home/jan/dab-library/library/src/ofdm/phasereference.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/ofdm/phasereference.cpp.o"
"/home/jan/dab-library/library/src/ofdm/phasetable.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/ofdm/phasetable.cpp.o"
"/home/jan/dab-library/library/src/various/dab-params.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/various/dab-params.cpp.o"
"/home/jan/dab-library/library/src/various/fft.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/various/fft.cpp.o"
"/home/jan/dab-library/library/src/various/tii_table.cpp" "/home/jan/dab-library/library/build/CMakeFiles/dab_lib.dir/src/various/tii_table.cpp.o"
)
set(CMAKE_CXX_COMPILER_ID "GNU")
# The include file search paths:
set(CMAKE_CXX_TARGET_INCLUDE_PATH
"../"
"."
"../."
"../.."
".././includes"
".././includes/ofdm"
".././includes/backend"
".././includes/backend/viterbi_768"
".././includes/backend/audio"
".././includes/backend/data"
".././includes/backend/data/journaline"
".././includes/various"
)
# Targets to which this target links.
set(CMAKE_TARGET_LINKED_INFO_FILES
)
# Fortran module output directory.
set(CMAKE_Fortran_TARGET_MODULE_DIR "")

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,44 @@
file(REMOVE_RECURSE
"CMakeFiles/dab_lib.dir/dab-api.cpp.o"
"CMakeFiles/dab_lib.dir/src/dab-class.cpp.o"
"CMakeFiles/dab_lib.dir/src/ofdm/ofdm-processor.cpp.o"
"CMakeFiles/dab_lib.dir/src/ofdm/ofdm-decoder.cpp.o"
"CMakeFiles/dab_lib.dir/src/ofdm/phasereference.cpp.o"
"CMakeFiles/dab_lib.dir/src/ofdm/phasetable.cpp.o"
"CMakeFiles/dab_lib.dir/src/ofdm/freq-interleaver.cpp.o"
"CMakeFiles/dab_lib.dir/src/backend/viterbi_768/viterbi-768.cpp.o"
"CMakeFiles/dab_lib.dir/src/backend/viterbi_768/spiral-no-sse.c.o"
"CMakeFiles/dab_lib.dir/src/backend/fic-handler.cpp.o"
"CMakeFiles/dab_lib.dir/src/backend/msc-handler.cpp.o"
"CMakeFiles/dab_lib.dir/src/backend/protection.cpp.o"
"CMakeFiles/dab_lib.dir/src/backend/eep-protection.cpp.o"
"CMakeFiles/dab_lib.dir/src/backend/uep-protection.cpp.o"
"CMakeFiles/dab_lib.dir/src/backend/fib-processor.cpp.o"
"CMakeFiles/dab_lib.dir/src/backend/firecode-checker.cpp.o"
"CMakeFiles/dab_lib.dir/src/backend/dab-virtual.cpp.o"
"CMakeFiles/dab_lib.dir/src/backend/dab-processor.cpp.o"
"CMakeFiles/dab_lib.dir/src/backend/protTables.cpp.o"
"CMakeFiles/dab_lib.dir/src/backend/charsets.cpp.o"
"CMakeFiles/dab_lib.dir/src/backend/galois.cpp.o"
"CMakeFiles/dab_lib.dir/src/backend/reed-solomon.cpp.o"
"CMakeFiles/dab_lib.dir/src/backend/audio/dab-audio.cpp.o"
"CMakeFiles/dab_lib.dir/src/backend/audio/mp4processor.cpp.o"
"CMakeFiles/dab_lib.dir/src/backend/audio/mp2processor.cpp.o"
"CMakeFiles/dab_lib.dir/src/backend/data/mot-databuilder.cpp.o"
"CMakeFiles/dab_lib.dir/src/backend/data/virtual-datahandler.cpp.o"
"CMakeFiles/dab_lib.dir/src/backend/data/tdc-datahandler.cpp.o"
"CMakeFiles/dab_lib.dir/src/backend/data/pad-handler.cpp.o"
"CMakeFiles/dab_lib.dir/src/backend/data/mot-data.cpp.o"
"CMakeFiles/dab_lib.dir/src/backend/data/dab-data.cpp.o"
"CMakeFiles/dab_lib.dir/src/backend/data/data-processor.cpp.o"
"CMakeFiles/dab_lib.dir/src/various/fft.cpp.o"
"CMakeFiles/dab_lib.dir/src/various/dab-params.cpp.o"
"CMakeFiles/dab_lib.dir/src/various/tii_table.cpp.o"
"libdab_lib.pdb"
"libdab_lib.so"
)
# Per-language clean rules from dependency scanning.
foreach(lang C CXX)
include(CMakeFiles/dab_lib.dir/cmake_clean_${lang}.cmake OPTIONAL)
endforeach()

Some files were not shown because too many files have changed in this diff Show More