Skip to content

Commit 940fe12

Browse files
committed
adding github automation
1 parent 1a5824d commit 940fe12

6 files changed

Lines changed: 81 additions & 26 deletions

File tree

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
name: Linux build
2+
3+
on: [pull_request, push]
4+
5+
jobs:
6+
build-cpp-linux:
7+
name: build-cpp-linux
8+
runs-on: ubuntu-22.04
9+
container:
10+
image: ghcr.io/bignacio/docker-images/ubuntu-cpp-22.10:1
11+
credentials:
12+
username: bignacio
13+
password: ${{ secrets.GHCR_PACKAGES_TOKEN }}
14+
strategy:
15+
matrix:
16+
compiler: [g++-15, clang++-21]
17+
18+
steps:
19+
- uses: actions/checkout@v3
20+
21+
- name: Build and test
22+
env:
23+
CXX: ${{matrix.compiler}}
24+
run: ci-scripts/build-and-test.sh

CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,17 @@ set(CXX_PROJECT_RELEASE_FLAGS
3737
-DNDEBUG
3838
)
3939

40+
41+
4042
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
4143
list(APPEND CXX_PROJECT_FLAGS ${CXX_PROJECT_DEBUG_FLAGS})
4244
else()
4345
list(APPEND CXX_PROJECT_FLAGS ${CXX_PROJECT_RELEASE_FLAGS})
4446
endif()
4547

48+
message(STATUS "Using compiler: ${CMAKE_CXX_COMPILER}")
49+
message(STATUS "Compiling with flags '${CXX_PROJECT_FLAGS}'")
50+
message(STATUS "Using CXX standard: ${CMAKE_CXX_STANDARD}")
4651

4752
#'clang-diagnostic-*,clang-analyzer-*,clang-diagnostic-*,clang-analyzer-*,clang-diagnostic-*,clang-analyzer-*,-*,readability-*,clang-analyzer-core.*,clang-analyzer-cplusplus.*,modernize-*,performance-*,concurrency-*,cppcoreguidelines-*,bugprone*,-modernize-use-nodiscard,-performance-avoid-endl'
4853
# Set global clang-tidy parameters

ci-scripts/build-and-test-linux.sh

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
for build_type in Release Debug ; do
6+
echo "Building type '${build_type}' compiler ${CXX}"
7+
rm -rf build
8+
cmake -B build -DCMAKE_BUILD_TYPE=${build_type}
9+
make -j2 -C build
10+
11+
#just check the binary actually runs
12+
build/src/replmk --help
13+
build/tests/replmk-tests
14+
build/tests/replmk-tests-msan
15+
build/tests/replmk-tests-asan
16+
17+
done

src/CMakeLists.txt

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,24 +20,14 @@ set(replmk_LIBS
2020
ftxui::screen
2121
)
2222

23-
foreach (target replmk replmk-msan replmk-asan)
23+
foreach (target replmk)
2424
add_executable(${target} ${replmk_SRCS})
2525
target_include_directories(${target} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
2626

2727
target_link_libraries(${target} PRIVATE ${replmk_LIBS})
2828
target_compile_options(${target} PRIVATE ${CXX_PROJECT_FLAGS})
2929
endforeach()
3030

31-
32-
# handle special targets
33-
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
34-
target_compile_options(replmk-msan PRIVATE -fsanitize=memory -fno-omit-frame-pointer -fno-optimize-sibling-calls -fsanitize-memory-track-origins=2)
35-
target_link_options(replmk-msan PRIVATE -fsanitize=memory -fsanitize-memory-track-origins=2)
36-
endif()
37-
38-
target_compile_options(replmk-asan PRIVATE -fsanitize=address)
39-
target_link_options(replmk-asan PRIVATE -fsanitize=address)
40-
4131
if(CLANG_TIDY)
4232
set_target_properties(replmk PROPERTIES CXX_CLANG_TIDY "${CLANG_TIDY};${CLANG_TIDY_PARAMS}")
4333
endif()

src/REPLMaker.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,11 @@ auto runMain(int argc, char* argv[]) -> int { //NOLINT(cppcoreguidelines-avoid-c
6565
("o,output-history-file", "Optional path to a file where to save the output history", cxxopts::value<std::string>())
6666
("h,help", "Print usage");
6767

68+
options.allow_unrecognised_options();
69+
6870
auto cmdOptionsParseResult = options.parse(argc, argv);
6971

70-
if (cmdOptionsParseResult.contains("help")) {
72+
if (cmdOptionsParseResult.contains("help") or not cmdOptionsParseResult.unmatched().empty()) {
7173
std::cout << options.help() << std::endl;
7274
return 0;
7375
}

tests/CMakeLists.txt

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
add_executable(replmk-tests
1+
set(replmk_tests_SRCS
22
replmk_test.cpp
33

44
Command_test.cpp
@@ -24,23 +24,40 @@ add_executable(replmk-tests
2424
${CMAKE_CURRENT_SOURCE_DIR}/../src/REPLMaker.cpp
2525
)
2626

27-
if(CLANG_TIDY)
28-
set_target_properties(replmk-tests PROPERTIES CXX_CLANG_TIDY "${CLANG_TIDY};${CLANG_TIDY_PARAMS},-cppcoreguidelines-avoid-do-while")
29-
endif()
3027

31-
target_include_directories(replmk-tests PRIVATE
28+
29+
foreach (target replmk-tests replmk-tests-msan replmk-tests-asan)
30+
add_executable(${target} ${replmk_tests_SRCS})
31+
target_include_directories(${target} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
32+
33+
target_include_directories(${target} PRIVATE
3234
${CMAKE_CURRENT_SOURCE_DIR}/../src
3335
)
3436

35-
target_link_libraries(replmk-tests PRIVATE
36-
doctest_with_main
37+
target_link_libraries(${target} PRIVATE
38+
doctest_with_main
3739

38-
yaml-cpp
39-
cxxopts
40+
yaml-cpp
41+
cxxopts
4042

41-
ftxui::dom
42-
ftxui::component
43-
ftxui::screen
44-
)
43+
ftxui::dom
44+
ftxui::component
45+
ftxui::screen
46+
)
47+
48+
target_compile_options(${target} PRIVATE ${CXX_PROJECT_FLAGS})
49+
endforeach()
4550

46-
target_compile_options(replmk-tests PRIVATE ${CXX_PROJECT_FLAGS})
51+
# handle special targets
52+
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
53+
target_compile_options(replmk-tests-msan PRIVATE -fsanitize=memory -fno-omit-frame-pointer -fno-optimize-sibling-calls -fsanitize-memory-track-origins=2)
54+
target_link_options(replmk-tests-msan PRIVATE -fsanitize=memory -fsanitize-memory-track-origins=2)
55+
endif()
56+
57+
target_compile_options(replmk-tests-asan PRIVATE -fsanitize=address)
58+
target_link_options(replmk-tests-asan PRIVATE -fsanitize=address)
59+
60+
61+
if(CLANG_TIDY)
62+
set_target_properties(replmk-tests PROPERTIES CXX_CLANG_TIDY "${CLANG_TIDY};${CLANG_TIDY_PARAMS},-cppcoreguidelines-avoid-do-while")
63+
endif()

0 commit comments

Comments
 (0)