Updated Windows liquid-dsp binaries to latest version

- Take liquid-dsp master
- Align config.h MingW and Linux one.
- Make 64bit build target SSE4.2 while 32bit stays SSE3.
- Use latest MSYS2 version, i.e. GCC 8.3 for 64bit, GCC 7.4 for 32bit.
- Updated libwinpthread-1.dll from latest MSYS2
- Removed libliquid.a from msvsc libs since Visual Studio can't possibly static link MINGW lib.
==> 1.5x perf boost in CubicSDR :)
==> Maybe the config.h was wrong all this time, for instance HAVE_MMX wasn't defined. Well well.
This commit is contained in:
vsonnier 2019-03-09 10:21:55 +01:00
parent c561292a27
commit f13af7f357
23 changed files with 8648 additions and 11183 deletions

View File

@ -4,7 +4,7 @@
- Add mingw32 and mingw64 compiler to the Msys2 installation.
- Copy config.h, makefile.mingw32, makefile.mingw64 in the liquid-dsp root directory.
- Run a Msys2 Win32 shell (mingw32.exe) and execute 'make -f makefile.mingw32 -j clean' then 'make -f makefile.mingw32 -j' to compile a libliquid.dll 32bit Windows Dll.
- Run a Msys2 Win64 shell (mingw64.exe) and execute 'make -f makefile.mingw64 -j clean' then 'make -f makefile.mingw32 -j' to compile a libliquid.dll 64bit Windows Dll.
- Run a Msys2 Win64 shell (mingw64.exe) and execute 'make -f makefile.mingw64 -j clean' then 'make -f makefile.mingw64 -j' to compile a libliquid.dll 64bit Windows Dll.
This process generates a .dll, .a together with libliquid.def the listing exported functions, and libliquid.lib the import lib matching the dll.

View File

@ -5,6 +5,7 @@
#ifndef __LIQUID_CONFIG_H__
#define __LIQUID_CONFIG_H__
/* Define to 1 if you have the <complex.h> header file. */
#define HAVE_COMPLEX_H 1
@ -45,6 +46,9 @@
/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1
/* Support MMX instructions */
#define HAVE_MMX 1
/* Define to 1 if you have the <mmintrin.h> header file. */ //MMX
#define HAVE_MMINTRIN_H 1
@ -58,7 +62,7 @@
#define HAVE_PMMINTRIN_H 1
/* Define to 1 if you have the <smmintrin.h> header file. */ //SSE4.1
//#define HAVE_SMMINTRIN_H 1
#define HAVE_SMMINTRIN_H 1
/* Define to 1 if you have the <immintrin.h> header file. */ //AVX
//#define HAVE_IMMINTRIN_H 1
@ -73,26 +77,23 @@
and to 0 otherwise. */
#define HAVE_REALLOC 1
/* Support MMX instructions */
#define HAVE_MMX /**/
/* Support SSE (Streaming SIMD Extensions) instructions */
#define HAVE_SSE /**/
#define HAVE_SSE 1
/* Support SSE2 (Streaming SIMD Extensions 2) instructions */
#define HAVE_SSE2 /**/
#define HAVE_SSE2 1
/* Support SSE3 (Streaming SIMD Extensions 3) instructions */
#define HAVE_SSE3 /**/
#define HAVE_SSE3 1
/* Support SSE4.1 (Streaming SIMD Extensions 4.1) instructions */
#define HAVE_SSE41 /**/
#define HAVE_SSE41 1
/* Support SSE4.2 (Streaming SIMD Extensions 4.2) instructions */
#define HAVE_SSE42 1
/* Support SSSE3 (Supplemental Streaming SIMD Extensions 3) instructions */
#define HAVE_SSSE3 /**/
#define HAVE_SSSE3 1
/* Support AVX (Advanced Vector Extensions) instructions */
#define HAVE_AVX /**/
@ -128,7 +129,7 @@
#define HAVE_UNISTD_H 1
/* Force internal FFT even if libfftw is available */
/* #undef LIQUID_FFTOVERRIDE */
#define LIQUID_FFTOVERRIDE 1
/* Force overriding of SIMD (use portable C code) */
/* #undef LIQUID_SIMDOVERRIDE */
@ -140,7 +141,7 @@
#define PACKAGE_NAME "liquid-dsp"
/* Define to the full name and version of this package. */
#define PACKAGE_STRING "liquid-dsp 1.3.0"
#define PACKAGE_STRING "liquid-dsp 1.3.1"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "liquid-dsp"
@ -149,7 +150,7 @@
#define PACKAGE_URL ""
/* Define to the version of this package. */
#define PACKAGE_VERSION "1.3.0"
#define PACKAGE_VERSION "1.3.1"
/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

BIN
external/liquid-dsp/gcc/32/libliquid.lib vendored Normal file

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

BIN
external/liquid-dsp/gcc/64/libliquid.lib vendored Normal file

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
# Copyright (c) 2007 - 2016 Joseph Gaeddert
# Copyright (c) 2007 - 2018 Joseph Gaeddert
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -23,8 +23,7 @@
#
# Targets:
# all : dynamic shared-library object (e.g. libliquid.so)
# install : install the dynamic shared library object and
# header file(s)
# install : install the dynamic shared library object and headers
# uninstall : uninstall the library and header file(s)
# clean : clean all targets (bench, check, examples, etc)
# distclean : removes everything except the originally distributed files
@ -57,9 +56,10 @@ include_dirs := . include
CC := gcc
MV := mv -f
RM := rm -f
SED := /usr/bin/sed
GREP := /usr/bin/grep
SED := /bin/sed
GREP := /bin/grep
AR := ar
LIBTOOL :=
RANLIB := ranlib
# flags
@ -71,7 +71,6 @@ CFLAGS = $(CONFIG_CFLAGS) -Wall -fPIC
LDFLAGS =
#MINGW:
LIBS += -lmsvcrt
ARFLAGS = r
PATHSEP = /
#
@ -446,10 +445,13 @@ filter_includes := \
src/filter/src/iirdecim.c \
src/filter/src/iirfilt.c \
src/filter/src/iirfiltsos.c \
src/filter/src/iirhilb.c \
src/filter/src/iirinterp.c \
src/filter/src/msresamp.c \
src/filter/src/msresamp2.c \
src/filter/src/resamp.c \
src/filter/src/ordfilt.c \
src/filter/src/rresamp.c \
src/filter/src/resamp.fixed.c \
src/filter/src/resamp2.c \
src/filter/src/symsync.c \
@ -489,6 +491,7 @@ filter_autotests := \
src/filter/tests/iirfilt_xxxf_autotest.c \
src/filter/tests/iirfiltsos_rrrf_autotest.c \
src/filter/tests/msresamp_crcf_autotest.c \
src/filter/tests/rresamp_crcf_autotest.c \
src/filter/tests/resamp_crcf_autotest.c \
src/filter/tests/resamp2_crcf_autotest.c \
src/filter/tests/symsync_crcf_autotest.c \
@ -573,6 +576,7 @@ filter_benchmarks := \
src/filter/bench/iirdecim_crcf_benchmark.c \
src/filter/bench/iirfilt_crcf_benchmark.c \
src/filter/bench/iirinterp_crcf_benchmark.c \
src/filter/bench/rresamp_crcf_benchmark.c \
src/filter/bench/resamp_crcf_benchmark.c \
src/filter/bench/resamp2_crcf_benchmark.c \
src/filter/bench/symsync_crcf_benchmark.c \
@ -589,6 +593,8 @@ framing_objects := \
src/framing/src/bsync_crcf.o \
src/framing/src/bsync_cccf.o \
src/framing/src/detector_cccf.o \
src/framing/src/dsssframegen.o \
src/framing/src/dsssframesync.o \
src/framing/src/framedatastats.o \
src/framing/src/framesyncstats.o \
src/framing/src/framegen64.o \
@ -618,6 +624,8 @@ src/framing/src/bsync_rrrf.o : %.o : %.c $(include_headers) src/framing/s
src/framing/src/bsync_crcf.o : %.o : %.c $(include_headers) src/framing/src/bsync.c
src/framing/src/bsync_cccf.o : %.o : %.c $(include_headers) src/framing/src/bsync.c
src/framing/src/detector_cccf.o : %.o : %.c $(include_headers)
src/framing/src/dsssframegen.o : %.o : %.c $(include_headers)
src/framing/src/dsssframesync.o : %.o : %.c $(include_headers)
src/framing/src/framedatastats.o : %.o : %.c $(include_headers)
src/framing/src/framesyncstats.o : %.o : %.c $(include_headers)
src/framing/src/framegen64.o : %.o : %.c $(include_headers)
@ -694,12 +702,14 @@ src/math/src/windows.o : %.o : %.c $(include_headers)
math_autotests := \
src/math/tests/gcd_autotest.c \
src/math/tests/kbd_autotest.c \
src/math/tests/math_autotest.c \
src/math/tests/math_bessel_autotest.c \
src/math/tests/math_gamma_autotest.c \
src/math/tests/math_complex_autotest.c \
src/math/tests/polynomial_autotest.c \
src/math/tests/prime_autotest.c \
math_benchmarks := \
@ -887,15 +897,18 @@ multichannel_benchmarks := \
nco_objects := \
src/nco/src/nco_crcf.o \
src/nco/src/nco.utilities.o \
src/nco/src/synth_crcf.o \
src/nco/src/nco_crcf.o : %.o : %.c $(include_headers) src/nco/src/nco.c
src/nco/src/nco.utilities.o : %.o : %.c $(include_headers)
src/nco/src/synth_crcf.o : %.o : %.c $(include_headers) src/nco/src/synth.c
# autotests
nco_autotests := \
src/nco/tests/nco_crcf_frequency_autotest.c \
src/nco/tests/nco_crcf_mix_autotest.c \
src/nco/tests/nco_crcf_phase_autotest.c \
src/nco/tests/nco_crcf_pll_autotest.c \
src/nco/tests/unwrap_phase_autotest.c \
@ -1023,6 +1036,7 @@ utility_objects := \
src/utility/src/msb_index.o \
src/utility/src/pack_bytes.o \
src/utility/src/shift_array.o \
src/utility/src/utility.o \
$(utility_objects) : %.o : %.c $(include_headers)
@ -1033,9 +1047,9 @@ utility_autotests := \
src/utility/tests/pack_bytes_autotest.c \
src/utility/tests/shift_array_autotest.c \
# benchmarks
utility_benchmarks :=
utility_benchmarks := \
src/utility/bench/byte_utilities_benchmark.c \
#
@ -1155,28 +1169,35 @@ benchmark_sources := \
.PHONY: all
# Shared library
ARCHIVE_LIB = libliquid.a
#MINGW:
SHARED_LIB = libliquid.dll
# liquid library definition
libliquid.a: $(objects)
$(AR) $(ARFLAGS) $@ $^
$(RANLIB) $@
#
# darwin
#
libliquid.ar: $(objects)
${LIBTOOL} -static -o $@ $^
# gcc -dynamiclib -install_name libliquid.dylib -o libliquid.dylib libmodem.a libutility.a
libliquid.dylib: $(objects)
$(CC) -dynamiclib -install_name $@ -o $@ $^ $(LDFLAGS) $(LIBS)
#
# linux, et al
#
libliquid.a: $(objects)
${AR} r $@ $^
${RANLIB} $@
libliquid.so: libliquid.a
$(CC) $(CFLAGS) $(LDFLAGS) -shared -Xlinker -soname=$@ -o $@ -Wl,-whole-archive $^ -Wl,-no-whole-archive $(LIBS)
#MINGW:
libliquid.dll: libliquid.a
$(CC) -shared -Xlinker -soname=$@ -o $@ -Wl,-whole-archive $^ -Wl,-no-whole-archive -Wl,--output-def,libliquid.def -Wl,--out-implib,libliquid.lib $(LIBS)
all: libliquid.a $(SHARED_LIB)
# static archive and library objects
all: ${ARCHIVE_LIB} ${SHARED_LIB}
##
## TARGET : help - print list of targets
@ -1196,7 +1217,7 @@ install: all
@echo ""
mkdir -p $(DESTDIR)$(exec_prefix)$(libdir)
mkdir -p $(DESTDIR)$(prefix)/include/liquid
install -m 644 -p $(SHARED_LIB) libliquid.a $(DESTDIR)$(exec_prefix)$(libdir)
install -m 644 -p ${ARCHIVE_LIB} ${SHARED_LIB} $(DESTDIR)$(exec_prefix)$(libdir)
install -m 644 -p $(addprefix include/,$(headers_install)) $(DESTDIR)$(prefix)/include/liquid
@echo ""
@echo "---------------------------------------------------------"
@ -1219,8 +1240,8 @@ install: all
uninstall:
@echo "uninstalling..."
$(RM) $(addprefix $(DESTDIR)$(prefix)/include/liquid/, $(headers_install))
$(RM) $(DESTDIR)$(exec_prefix)$(libdir)/libliquid.a
$(RM) $(DESTDIR)$(exec_prefix)$(libdir)/$(SHARED_LIB)
$(RM) $(DESTDIR)$(exec_prefix)$(libdir)/${ARCHIVE_LIB}
$(RM) $(DESTDIR)$(exec_prefix)$(libdir)/${SHARED_LIB}
@echo "done."
##
@ -1274,12 +1295,12 @@ $(autotest_prog).o : autotest/autotest.c autotest/autotest.h autotest_include.h
# link the autotest program with the objects
# NOTE: linked libraries must come _after_ the target program
$(autotest_prog): $(autotest_prog).o $(autotest_obj) $(autotest_extra_obj) autotest/autotestlib.o libliquid.a
$(autotest_prog): $(autotest_prog).o $(autotest_obj) $(autotest_extra_obj) autotest/autotestlib.o ${ARCHIVE_LIB}
$(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@ $(LIBS)
# run the autotest program
check: $(autotest_prog)
./$(autotest_prog) -v
./$(autotest_prog) -v -o autotest.json
# let 'make test' be an alias for 'make check'
test: check
@ -1290,6 +1311,7 @@ clean-check:
$(RM) autotest/autotestlib.o
$(RM) $(autotest_obj)
$(RM) $(autotest_extra_obj)
$(RM) autotest.json
##
@ -1326,7 +1348,7 @@ $(bench_prog).o: bench/bench.c benchmark_include.h bench/bench.c
# link the benchmark program with the library objects
# NOTE: linked libraries must come _after_ the target program
$(bench_prog): $(bench_prog).o $(benchmark_obj) $(benchmark_extra_obj) libliquid.a
$(bench_prog): $(bench_prog).o $(benchmark_obj) $(benchmark_extra_obj) ${ARCHIVE_LIB}
$(CC) $(BENCH_CFLAGS) $(BENCH_LDFLAGS) $^ -o $(bench_prog) $(BENCH_LIBS)
# run the benchmark program
@ -1341,7 +1363,7 @@ scripts/benchmark_compare : % : %.c
bench/fftbench.o : %.o : %.c
$(CC) $(BENCH_CPPFLAGS) $(BENCH_CFLAGS) $< -c -o $@
bench/fftbench : % : %.o libliquid.a
bench/fftbench : % : %.o ${ARCHIVE_LIB}
$(CC) $(BENCH_CFLAGS) $(BENCH_LDFLAGS) $^ -o $@ $(BENCH_LIBS)
# clean up the generated files
@ -1383,6 +1405,7 @@ example_programs := \
examples/cpfskmodem_psd_example \
examples/cvsd_example \
examples/detector_cccf_example \
examples/dsssframesync_example \
examples/dotprod_rrrf_example \
examples/dotprod_cccf_example \
examples/eqlms_cccf_block_example \
@ -1405,9 +1428,11 @@ example_programs := \
examples/firdespm_lowpass_example \
examples/firhilb_example \
examples/firhilb_decim_example \
examples/firhilb_filter_example \
examples/firhilb_interp_example \
examples/firpfbch2_crcf_example \
examples/firinterp_crcf_example \
examples/firinterp_firdecim_crcf_example \
examples/firpfbch_crcf_example \
examples/firpfbch_crcf_analysis_example \
examples/firpfbch_crcf_synthesis_example \
@ -1416,6 +1441,7 @@ example_programs := \
examples/framesync64_example \
examples/freqmodem_example \
examples/fskmodem_example \
examples/fskmodem_waterfall_example \
examples/gasearch_example \
examples/gasearch_knapsack_example \
examples/gmskframesync_example \
@ -1432,6 +1458,8 @@ example_programs := \
examples/iirfilt_cccf_example \
examples/iirfilt_crcf_example \
examples/iirfilt_crcf_dcblocker_example \
examples/iirhilb_example \
examples/iirhilb_filter_example \
examples/iirinterp_crcf_example \
examples/kbd_window_example \
examples/lpc_example \
@ -1446,13 +1474,16 @@ example_programs := \
examples/msequence_example \
examples/msourcecf_example \
examples/msresamp_crcf_example \
examples/msresamp_crcf_noise_example \
examples/msresamp2_crcf_example \
examples/nco_crcf_mix_example \
examples/nco_example \
examples/nco_pll_example \
examples/nco_pll_modem_example \
examples/nyquist_filter_example \
examples/ofdmflexframesync_example \
examples/ofdmframesync_example \
examples/ordfilt_rrrf_example \
examples/packetizer_example \
examples/packetizer_soft_example \
examples/pll_example \
@ -1467,7 +1498,9 @@ example_programs := \
examples/quantize_example \
examples/random_histogram_example \
examples/repack_bytes_example \
examples/rresamp_crcf_example \
examples/resamp_crcf_example \
examples/resamp_crcf_noise_example \
examples/resamp2_cccf_example \
examples/resamp2_crcf_example \
examples/resamp2_crcf_decim_example \
@ -1477,7 +1510,6 @@ example_programs := \
examples/scramble_example \
examples/smatrix_example \
examples/spgramcf_example \
examples/spgramcf_waterfall_example \
examples/spgramf_example \
examples/spwaterfallcf_example \
examples/symsync_crcf_example \
@ -1499,7 +1531,7 @@ examples: $(example_programs)
# NOTE: linked libraries must come _after_ the target program
$(example_objects): %.o : %.c
$(example_programs): % : %.o libliquid.a
$(example_programs): % : %.o ${ARCHIVE_LIB}
$(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@ $(LIBS)
# clean examples
@ -1605,6 +1637,7 @@ sandbox_programs = \
sandbox/symsync_eqlms_test \
sandbox/svd_test \
sandbox/thiran_allpass_iir_test \
sandbox/throttle_test \
sandbox/vectorcf_test \
# sandbox/packetizer_persistent_ber_test
@ -1621,7 +1654,7 @@ SANDBOX_LDFLAGS = $(LDFLAGS) -lfftw3f
# NOTE: linked libraries must come _after_ the target program
$(sandbox_objects): %.o : %.c
$(sandbox_programs): % : %.o libliquid.a
$(sandbox_programs): % : %.o ${ARCHIVE_LIB}
$(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS) $(LIBS)
# clean sandbox
@ -1630,6 +1663,22 @@ clean-sandbox:
$(RM) $(sandbox_programs)
.PHONY: tools
tools_programs = \
tools/msequence_generator \
tools_objects = $(patsubst %,%.o,$(tools_programs))
tools: $(tools_programs)
$(tools_objects): %.o: %.c
$(tools_programs): % : %.o ${ARCHIVE_LIB}
$(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS)
clean-tools:
$(RM) tools/*.o
$(RM) $(tools_programs)
##
## TARGET : world - build absolutely everything
##
@ -1666,10 +1715,8 @@ clean-modules:
$(RM) src/vector/src/*.o src/vector/bench/*.o src/vector/tests/*.o
$(RM) src/libliquid.o
clean: clean-modules clean-autoscript clean-check clean-bench clean-examples clean-sandbox
$(RM) $(extra_clean)
$(RM) libliquid.a
$(RM) $(SHARED_LIB)
clean: clean-modules clean-autoscript clean-check clean-bench clean-examples clean-sandbox clean-tools
$(RM) ${ARCHIVE_LIB} ${SHARED_LIB} $(extra_clean)
##
## TARGET : distclean - removes everything except the originally distributed files

View File

@ -1,4 +1,4 @@
# Copyright (c) 2007 - 2016 Joseph Gaeddert
# Copyright (c) 2007 - 2018 Joseph Gaeddert
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -23,8 +23,7 @@
#
# Targets:
# all : dynamic shared-library object (e.g. libliquid.so)
# install : install the dynamic shared library object and
# header file(s)
# install : install the dynamic shared library object and headers
# uninstall : uninstall the library and header file(s)
# clean : clean all targets (bench, check, examples, etc)
# distclean : removes everything except the originally distributed files
@ -57,21 +56,21 @@ include_dirs := . include
CC := gcc
MV := mv -f
RM := rm -f
SED := /usr/bin/sed
GREP := /usr/bin/grep
SED := /bin/sed
GREP := /bin/grep
AR := ar
LIBTOOL :=
RANLIB := ranlib
# flags
INCLUDE_CFLAGS = $(addprefix -I ,$(include_dirs))
#MINGW: optimizations goes here
CONFIG_CFLAGS = -O3 -msse3 -ffast-math -static-libgcc -static-libstdc++
#MINGW: optimizations goes here, use SSSE42 for 64bit
CONFIG_CFLAGS = -O3 -msse4.2 -ffast-math -static-libgcc -static-libstdc++
CPPFLAGS = $(INCLUDE_CFLAGS)
CFLAGS = $(CONFIG_CFLAGS) -Wall -fPIC
LDFLAGS =
#MINGW:
LIBS += -static-libgcc -static-libstdc++
ARFLAGS = r
PATHSEP = /
#
@ -446,10 +445,13 @@ filter_includes := \
src/filter/src/iirdecim.c \
src/filter/src/iirfilt.c \
src/filter/src/iirfiltsos.c \
src/filter/src/iirhilb.c \
src/filter/src/iirinterp.c \
src/filter/src/msresamp.c \
src/filter/src/msresamp2.c \
src/filter/src/resamp.c \
src/filter/src/ordfilt.c \
src/filter/src/rresamp.c \
src/filter/src/resamp.fixed.c \
src/filter/src/resamp2.c \
src/filter/src/symsync.c \
@ -489,6 +491,7 @@ filter_autotests := \
src/filter/tests/iirfilt_xxxf_autotest.c \
src/filter/tests/iirfiltsos_rrrf_autotest.c \
src/filter/tests/msresamp_crcf_autotest.c \
src/filter/tests/rresamp_crcf_autotest.c \
src/filter/tests/resamp_crcf_autotest.c \
src/filter/tests/resamp2_crcf_autotest.c \
src/filter/tests/symsync_crcf_autotest.c \
@ -573,6 +576,7 @@ filter_benchmarks := \
src/filter/bench/iirdecim_crcf_benchmark.c \
src/filter/bench/iirfilt_crcf_benchmark.c \
src/filter/bench/iirinterp_crcf_benchmark.c \
src/filter/bench/rresamp_crcf_benchmark.c \
src/filter/bench/resamp_crcf_benchmark.c \
src/filter/bench/resamp2_crcf_benchmark.c \
src/filter/bench/symsync_crcf_benchmark.c \
@ -589,6 +593,8 @@ framing_objects := \
src/framing/src/bsync_crcf.o \
src/framing/src/bsync_cccf.o \
src/framing/src/detector_cccf.o \
src/framing/src/dsssframegen.o \
src/framing/src/dsssframesync.o \
src/framing/src/framedatastats.o \
src/framing/src/framesyncstats.o \
src/framing/src/framegen64.o \
@ -618,6 +624,8 @@ src/framing/src/bsync_rrrf.o : %.o : %.c $(include_headers) src/framing/s
src/framing/src/bsync_crcf.o : %.o : %.c $(include_headers) src/framing/src/bsync.c
src/framing/src/bsync_cccf.o : %.o : %.c $(include_headers) src/framing/src/bsync.c
src/framing/src/detector_cccf.o : %.o : %.c $(include_headers)
src/framing/src/dsssframegen.o : %.o : %.c $(include_headers)
src/framing/src/dsssframesync.o : %.o : %.c $(include_headers)
src/framing/src/framedatastats.o : %.o : %.c $(include_headers)
src/framing/src/framesyncstats.o : %.o : %.c $(include_headers)
src/framing/src/framegen64.o : %.o : %.c $(include_headers)
@ -694,12 +702,14 @@ src/math/src/windows.o : %.o : %.c $(include_headers)
math_autotests := \
src/math/tests/gcd_autotest.c \
src/math/tests/kbd_autotest.c \
src/math/tests/math_autotest.c \
src/math/tests/math_bessel_autotest.c \
src/math/tests/math_gamma_autotest.c \
src/math/tests/math_complex_autotest.c \
src/math/tests/polynomial_autotest.c \
src/math/tests/prime_autotest.c \
math_benchmarks := \
@ -887,15 +897,18 @@ multichannel_benchmarks := \
nco_objects := \
src/nco/src/nco_crcf.o \
src/nco/src/nco.utilities.o \
src/nco/src/synth_crcf.o \
src/nco/src/nco_crcf.o : %.o : %.c $(include_headers) src/nco/src/nco.c
src/nco/src/nco.utilities.o : %.o : %.c $(include_headers)
src/nco/src/synth_crcf.o : %.o : %.c $(include_headers) src/nco/src/synth.c
# autotests
nco_autotests := \
src/nco/tests/nco_crcf_frequency_autotest.c \
src/nco/tests/nco_crcf_mix_autotest.c \
src/nco/tests/nco_crcf_phase_autotest.c \
src/nco/tests/nco_crcf_pll_autotest.c \
src/nco/tests/unwrap_phase_autotest.c \
@ -1023,6 +1036,7 @@ utility_objects := \
src/utility/src/msb_index.o \
src/utility/src/pack_bytes.o \
src/utility/src/shift_array.o \
src/utility/src/utility.o \
$(utility_objects) : %.o : %.c $(include_headers)
@ -1033,9 +1047,9 @@ utility_autotests := \
src/utility/tests/pack_bytes_autotest.c \
src/utility/tests/shift_array_autotest.c \
# benchmarks
utility_benchmarks :=
utility_benchmarks := \
src/utility/bench/byte_utilities_benchmark.c \
#
@ -1155,28 +1169,35 @@ benchmark_sources := \
.PHONY: all
# Shared library
ARCHIVE_LIB = libliquid.a
#MINGW:
SHARED_LIB = libliquid.dll
# liquid library definition
libliquid.a: $(objects)
$(AR) $(ARFLAGS) $@ $^
$(RANLIB) $@
#
# darwin
#
libliquid.ar: $(objects)
${LIBTOOL} -static -o $@ $^
# gcc -dynamiclib -install_name libliquid.dylib -o libliquid.dylib libmodem.a libutility.a
libliquid.dylib: $(objects)
$(CC) -dynamiclib -install_name $@ -o $@ $^ $(LDFLAGS) $(LIBS)
#
# linux, et al
#
libliquid.a: $(objects)
${AR} r $@ $^
${RANLIB} $@
libliquid.so: libliquid.a
$(CC) $(CFLAGS) $(LDFLAGS) -shared -Xlinker -soname=$@ -o $@ -Wl,-whole-archive $^ -Wl,-no-whole-archive $(LIBS)
#MINGW:
libliquid.dll: libliquid.a
$(CC) -shared -Xlinker -soname=$@ -o $@ -Wl,-whole-archive $^ -Wl,-no-whole-archive -Wl,--output-def,libliquid.def -Wl,--out-implib,libliquid.lib $(LIBS)
all: libliquid.a $(SHARED_LIB)
# static archive and library objects
all: ${ARCHIVE_LIB} ${SHARED_LIB}
##
## TARGET : help - print list of targets
@ -1196,7 +1217,7 @@ install: all
@echo ""
mkdir -p $(DESTDIR)$(exec_prefix)$(libdir)
mkdir -p $(DESTDIR)$(prefix)/include/liquid
install -m 644 -p $(SHARED_LIB) libliquid.a $(DESTDIR)$(exec_prefix)$(libdir)
install -m 644 -p ${ARCHIVE_LIB} ${SHARED_LIB} $(DESTDIR)$(exec_prefix)$(libdir)
install -m 644 -p $(addprefix include/,$(headers_install)) $(DESTDIR)$(prefix)/include/liquid
@echo ""
@echo "---------------------------------------------------------"
@ -1219,8 +1240,8 @@ install: all
uninstall:
@echo "uninstalling..."
$(RM) $(addprefix $(DESTDIR)$(prefix)/include/liquid/, $(headers_install))
$(RM) $(DESTDIR)$(exec_prefix)$(libdir)/libliquid.a
$(RM) $(DESTDIR)$(exec_prefix)$(libdir)/$(SHARED_LIB)
$(RM) $(DESTDIR)$(exec_prefix)$(libdir)/${ARCHIVE_LIB}
$(RM) $(DESTDIR)$(exec_prefix)$(libdir)/${SHARED_LIB}
@echo "done."
##
@ -1274,12 +1295,12 @@ $(autotest_prog).o : autotest/autotest.c autotest/autotest.h autotest_include.h
# link the autotest program with the objects
# NOTE: linked libraries must come _after_ the target program
$(autotest_prog): $(autotest_prog).o $(autotest_obj) $(autotest_extra_obj) autotest/autotestlib.o libliquid.a
$(autotest_prog): $(autotest_prog).o $(autotest_obj) $(autotest_extra_obj) autotest/autotestlib.o ${ARCHIVE_LIB}
$(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@ $(LIBS)
# run the autotest program
check: $(autotest_prog)
./$(autotest_prog) -v
./$(autotest_prog) -v -o autotest.json
# let 'make test' be an alias for 'make check'
test: check
@ -1290,6 +1311,7 @@ clean-check:
$(RM) autotest/autotestlib.o
$(RM) $(autotest_obj)
$(RM) $(autotest_extra_obj)
$(RM) autotest.json
##
@ -1326,7 +1348,7 @@ $(bench_prog).o: bench/bench.c benchmark_include.h bench/bench.c
# link the benchmark program with the library objects
# NOTE: linked libraries must come _after_ the target program
$(bench_prog): $(bench_prog).o $(benchmark_obj) $(benchmark_extra_obj) libliquid.a
$(bench_prog): $(bench_prog).o $(benchmark_obj) $(benchmark_extra_obj) ${ARCHIVE_LIB}
$(CC) $(BENCH_CFLAGS) $(BENCH_LDFLAGS) $^ -o $(bench_prog) $(BENCH_LIBS)
# run the benchmark program
@ -1341,7 +1363,7 @@ scripts/benchmark_compare : % : %.c
bench/fftbench.o : %.o : %.c
$(CC) $(BENCH_CPPFLAGS) $(BENCH_CFLAGS) $< -c -o $@
bench/fftbench : % : %.o libliquid.a
bench/fftbench : % : %.o ${ARCHIVE_LIB}
$(CC) $(BENCH_CFLAGS) $(BENCH_LDFLAGS) $^ -o $@ $(BENCH_LIBS)
# clean up the generated files
@ -1383,6 +1405,7 @@ example_programs := \
examples/cpfskmodem_psd_example \
examples/cvsd_example \
examples/detector_cccf_example \
examples/dsssframesync_example \
examples/dotprod_rrrf_example \
examples/dotprod_cccf_example \
examples/eqlms_cccf_block_example \
@ -1405,9 +1428,11 @@ example_programs := \
examples/firdespm_lowpass_example \
examples/firhilb_example \
examples/firhilb_decim_example \
examples/firhilb_filter_example \
examples/firhilb_interp_example \
examples/firpfbch2_crcf_example \
examples/firinterp_crcf_example \
examples/firinterp_firdecim_crcf_example \
examples/firpfbch_crcf_example \
examples/firpfbch_crcf_analysis_example \
examples/firpfbch_crcf_synthesis_example \
@ -1416,6 +1441,7 @@ example_programs := \
examples/framesync64_example \
examples/freqmodem_example \
examples/fskmodem_example \
examples/fskmodem_waterfall_example \
examples/gasearch_example \
examples/gasearch_knapsack_example \
examples/gmskframesync_example \
@ -1432,6 +1458,8 @@ example_programs := \
examples/iirfilt_cccf_example \
examples/iirfilt_crcf_example \
examples/iirfilt_crcf_dcblocker_example \
examples/iirhilb_example \
examples/iirhilb_filter_example \
examples/iirinterp_crcf_example \
examples/kbd_window_example \
examples/lpc_example \
@ -1446,13 +1474,16 @@ example_programs := \
examples/msequence_example \
examples/msourcecf_example \
examples/msresamp_crcf_example \
examples/msresamp_crcf_noise_example \
examples/msresamp2_crcf_example \
examples/nco_crcf_mix_example \
examples/nco_example \
examples/nco_pll_example \
examples/nco_pll_modem_example \
examples/nyquist_filter_example \
examples/ofdmflexframesync_example \
examples/ofdmframesync_example \
examples/ordfilt_rrrf_example \
examples/packetizer_example \
examples/packetizer_soft_example \
examples/pll_example \
@ -1467,7 +1498,9 @@ example_programs := \
examples/quantize_example \
examples/random_histogram_example \
examples/repack_bytes_example \
examples/rresamp_crcf_example \
examples/resamp_crcf_example \
examples/resamp_crcf_noise_example \
examples/resamp2_cccf_example \
examples/resamp2_crcf_example \
examples/resamp2_crcf_decim_example \
@ -1477,7 +1510,6 @@ example_programs := \
examples/scramble_example \
examples/smatrix_example \
examples/spgramcf_example \
examples/spgramcf_waterfall_example \
examples/spgramf_example \
examples/spwaterfallcf_example \
examples/symsync_crcf_example \
@ -1499,7 +1531,7 @@ examples: $(example_programs)
# NOTE: linked libraries must come _after_ the target program
$(example_objects): %.o : %.c
$(example_programs): % : %.o libliquid.a
$(example_programs): % : %.o ${ARCHIVE_LIB}
$(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@ $(LIBS)
# clean examples
@ -1605,6 +1637,7 @@ sandbox_programs = \
sandbox/symsync_eqlms_test \
sandbox/svd_test \
sandbox/thiran_allpass_iir_test \
sandbox/throttle_test \
sandbox/vectorcf_test \
# sandbox/packetizer_persistent_ber_test
@ -1621,7 +1654,7 @@ SANDBOX_LDFLAGS = $(LDFLAGS) -lfftw3f
# NOTE: linked libraries must come _after_ the target program
$(sandbox_objects): %.o : %.c
$(sandbox_programs): % : %.o libliquid.a
$(sandbox_programs): % : %.o ${ARCHIVE_LIB}
$(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS) $(LIBS)
# clean sandbox
@ -1630,6 +1663,22 @@ clean-sandbox:
$(RM) $(sandbox_programs)
.PHONY: tools
tools_programs = \
tools/msequence_generator \
tools_objects = $(patsubst %,%.o,$(tools_programs))
tools: $(tools_programs)
$(tools_objects): %.o: %.c
$(tools_programs): % : %.o ${ARCHIVE_LIB}
$(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS)
clean-tools:
$(RM) tools/*.o
$(RM) $(tools_programs)
##
## TARGET : world - build absolutely everything
##
@ -1666,10 +1715,8 @@ clean-modules:
$(RM) src/vector/src/*.o src/vector/bench/*.o src/vector/tests/*.o
$(RM) src/libliquid.o
clean: clean-modules clean-autoscript clean-check clean-bench clean-examples clean-sandbox
$(RM) $(extra_clean)
$(RM) libliquid.a
$(RM) $(SHARED_LIB)
clean: clean-modules clean-autoscript clean-check clean-bench clean-examples clean-sandbox clean-tools
$(RM) ${ARCHIVE_LIB} ${SHARED_LIB} $(extra_clean)
##
## TARGET : distclean - removes everything except the originally distributed files

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.