diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index c0bcc0f..04adf7c 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -8,6 +8,8 @@ jobs: steps: - uses: actions/checkout@v3 - name: Install dependencies - run: sudo apt-get install -y clang-tools check + 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 )" diff --git a/.gitignore b/.gitignore index dd53256..a419ab1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +build/ +cmake-build-*/ *.o *~ *.diff diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..de45c10 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 3.3) + +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) + +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) +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})