commit
db46128e73
5
.github/workflows/c-cpp.yml
vendored
5
.github/workflows/c-cpp.yml
vendored
@ -9,7 +9,6 @@ jobs:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Install dependencies
|
||||
run: sudo apt-get install -y clang-tools check cmake
|
||||
- name: make
|
||||
run: make
|
||||
- name: cmake
|
||||
run: "( rm -rf build && mkdir build && cd build && cmake .. && make && ./tests && echo OK )"
|
||||
run: "( rm -rf build && mkdir build && cd build && cmake .. && make && CTEST_OUTPUT_ON_FAILURE=1 make
|
||||
test && echo OK )"
|
||||
|
@ -1,19 +1,39 @@
|
||||
cmake_minimum_required(VERSION 3.3)
|
||||
|
||||
enable_testing()
|
||||
|
||||
project(minmea)
|
||||
|
||||
find_package(Threads REQUIRED) # Workaround for https://github.com/libcheck/check/issues/48#issuecomment-322965461
|
||||
find_package(PkgConfig)
|
||||
pkg_check_modules(CHECK REQUIRED check)
|
||||
link_directories(${CHECK_LIBRARY_DIRS})
|
||||
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -Wall -Wextra -Werror -std=c99")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_DARWIN_C_SOURCE")
|
||||
|
||||
set(minmea_SRCS minmea.c minmea.h)
|
||||
add_library(minmea ${minmea_SRCS})
|
||||
|
||||
add_executable(example example.c)
|
||||
add_executable(tests tests.c)
|
||||
target_link_libraries(example minmea)
|
||||
|
||||
add_executable(tests tests.c)
|
||||
target_link_libraries(tests minmea ${CHECK_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
|
||||
target_include_directories(tests PUBLIC ${CHECK_INCLUDE_DIRS})
|
||||
target_compile_options(tests PUBLIC ${CHECK_CFLAGS_OTHER})
|
||||
|
||||
add_test(NAME tests COMMAND $<TARGET_FILE:tests>)
|
||||
|
||||
|
||||
find_program(SCAN_FOUND scan-build)
|
||||
|
||||
if (SCAN_FOUND)
|
||||
add_test(
|
||||
NAME clang_static_analysis
|
||||
COMMAND scan-build make
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
)
|
||||
else()
|
||||
MESSAGE(STATUS "scan-build not found, not scanning code")
|
||||
endif()
|
||||
|
31
Makefile
31
Makefile
@ -1,31 +0,0 @@
|
||||
# Copyright © 2014 Kosma Moczek <kosma@cloudyourcar.com>
|
||||
# This program is free software. It comes without any warranty, to the extent
|
||||
# permitted by applicable law. You can redistribute it and/or modify it under
|
||||
# the terms of the Do What The Fuck You Want To Public License, Version 2, as
|
||||
# published by Sam Hocevar. See the COPYING file for more details.
|
||||
|
||||
CFLAGS = -g -Wall -Wextra -Werror -std=c99
|
||||
CFLAGS += -D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_DARWIN_C_SOURCE
|
||||
CFLAGS += $(shell pkg-config --cflags check)
|
||||
LDLIBS += $(shell pkg-config --libs check)
|
||||
|
||||
all: scan-build test example
|
||||
@echo "+++ All good."""
|
||||
|
||||
test: tests
|
||||
@echo "+++ Running Check test suite..."
|
||||
./tests
|
||||
|
||||
scan-build: clean
|
||||
@echo "+++ Running Clang Static Analyzer..."
|
||||
scan-build --status-bugs --keep-going $(MAKE) tests
|
||||
|
||||
clean:
|
||||
$(RM) tests example *.o
|
||||
|
||||
tests: tests.o minmea.o
|
||||
example: example.o minmea.o
|
||||
tests.o: tests.c minmea.h
|
||||
minmea.o: minmea.c minmea.h
|
||||
|
||||
.PHONY: all test scan-build clean
|
12
README.md
12
README.md
@ -132,11 +132,19 @@ good to go.
|
||||
|
||||
Building and running the tests requires the following:
|
||||
|
||||
* CMake
|
||||
* Check Framework (https://libcheck.github.io/check/).
|
||||
* Clang Static Analyzer (https://clang-analyzer.llvm.org/).
|
||||
|
||||
If you have both in your ``$PATH``, running the tests should be as simple as
|
||||
typing ``make``.
|
||||
If you have both in your ``$PATH``, running the tests should be as simple as:
|
||||
|
||||
```
|
||||
mkdir build
|
||||
cd build
|
||||
cmake ../
|
||||
make
|
||||
make test
|
||||
```
|
||||
|
||||
## Limitations
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user