From ea0379f375fee5f9574a51a797025aa5e9390db8 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Mon, 11 Dec 2023 09:15:47 +1030 Subject: [PATCH] ctest, README.md, first pass at github action --- .github/workflows/cmake.yml | 1 + CMakeLists.txt | 4 ++++ README.md | 7 ++++++- doc/Makefile | 12 +++++++----- doc/codec2.pdf | Bin 322270 -> 322353 bytes 5 files changed, 18 insertions(+), 6 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 61c9c5c..b5425d0 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -22,6 +22,7 @@ jobs: run: | sudo apt-get update sudo apt-get install octave octave-common octave-signal liboctave-dev gnuplot sox p7zip-full python3-numpy valgrind clang-format + sudo apt-get install texmaker texlive-bibtex-extra texlive-science - name: Create Build Directory shell: bash diff --git a/CMakeLists.txt b/CMakeLists.txt index d96667f..3f3a1dc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -312,6 +312,10 @@ if(UNITTEST) COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}; clang-format --dry-run --Werror src/*.c src/*.h unittest/*.c demo/*.c") + add_test(NAME test_codec2_doc + COMMAND sh -c "cd ${CMAKE_CURRENT_SOURCE_DIR}/doc; + CODEC2_SRC=${CMAKE_CURRENT_SOURCE_DIR} CODEC2_BINARY=${CMAKE_CURRENT_BINARY_DIR} make") + add_test(NAME test_freedv_get_hash COMMAND sh -c "${CMAKE_CURRENT_BINARY_DIR}/unittest/thash") diff --git a/README.md b/README.md index 46ef6b2..726152c 100644 --- a/README.md +++ b/README.md @@ -110,6 +110,10 @@ We have standardized on C99 and develop and test using gcc on a Linux platform. make ``` +## Documentation + +An algorithm description can be found in `doc/codec2.pdf`. + ## Programs + See `demo` directory for simple examples of using Codec and the FreeDV API. @@ -138,7 +142,7 @@ CTest is used as a test framework, with support from [GNU Octave](https://www.gn 1. Install GNU Octave and libraries on Ubuntu with: ``` - sudo apt install octave octave-common octave-signal liboctave-dev gnuplot python3-numpy sox valgrind clang-format + sudo apt install octave octave-common octave-signal liboctave-dev gnuplot python3-numpy sox valgrind clang-format texmaker texlive-bibtex-extra texlive-science ``` 1. To build and run the tests: ``` @@ -180,6 +184,7 @@ CTest is used as a test framework, with support from [GNU Octave](https://www.gn ``` cmake - cmake support files demo - Simple Codec 2 and FreeDv API demo applications +doc - documentation octave - Octave scripts used to support ctests src - C source code for Codec 2, FDMDV modem, COHPSK modem, FreeDV API raw - speech files in raw format (16 bits signed linear 8 kHz) diff --git a/doc/Makefile b/doc/Makefile index 1eaab1b..606d05f 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -1,7 +1,7 @@ # Makefile for codec2.pdf # # usage: -# Build codec2 with -DDUMP (see README) +# Build codec2 with -DUNITEST=1 (see README) # cd ~/codec2/doc # make @@ -9,14 +9,16 @@ # defaults below. Need to run cmake with -DDUMP CODEC2_SRC ?= $(HOME)/codec2 -CODEC2_BINARY ?= $(HOME)/codec2/build_linux/src +CODEC2_BINARY ?= $(HOME)/codec2/build_linux -PATH := $(PATH):$(CODEC2_BINARY) +PATH := $(PATH):$(CODEC2_BINARY)/src DOCNAME := codec2 PLOT_FILES := hts2a_37_sn.tex hts2a_37_sw.tex hts2a_37_lpc_lsp.tex hts2a_37_lpc_pf.tex -$(DOCNAME).pdf: $(PLOT_FILES) $(DOCNAME).tex $(DOCNAME)_refs.bib +# For automated tests we always want to build the PDF, despite codec2.pdf existing in the repo +.PHONY: pdf +pdf: $(PLOT_FILES) $(DOCNAME).tex $(DOCNAME)_refs.bib pdflatex $(DOCNAME).tex bibtex $(DOCNAME).aux pdflatex $(DOCNAME).tex @@ -29,4 +31,4 @@ $(PLOT_FILES): .PHONY: clean clean: - rm *.blg *.bbl *.aux *.log $(DOCNAME).pdf \ No newline at end of file + rm -f *.blg *.bbl *.aux *.log *.out $(DOCNAME).pdf hts2a* \ No newline at end of file diff --git a/doc/codec2.pdf b/doc/codec2.pdf index ae71c92a073f65f4300dd1baae6ba1ebb2a9a12b..ac2e63c694e646241796fa1ad8d06a19eb675946 100644 GIT binary patch delta 23679 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