Skip to content

Commit a5190d2

Browse files
committed
feat: gh action for clang
1 parent 290b144 commit a5190d2

File tree

4 files changed

+39
-5
lines changed

4 files changed

+39
-5
lines changed

.github/workflows/c-cpp.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
steps:
1515
- name: update
1616
if: ${{ env.ACT }}
17-
run: sudo apt update && sudo apt install python3 && sudo apt install cmake
17+
run: sudo apt -y update && sudo apt -y install python3 && sudo apt -y install cmake
1818
- name: Install pip3
1919
if: ${{ env.ACT }}
2020
run: curl https://bootstrap.pypa.io/get-pip.py >get-pip.py && python3 get-pip.py

.github/workflows/cpp-clang.yml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: C/C++ CI
2+
3+
on:
4+
push:
5+
branches: [ root ]
6+
pull_request:
7+
branches: [ root ]
8+
9+
jobs:
10+
build:
11+
12+
runs-on: ubuntu-22.04
13+
14+
steps:
15+
- name: update
16+
if: ${{ env.ACT }}
17+
run: sudo apt -y update && sudo apt -y install python3 && sudo apt -y install clang && sudo apt -y install cmake
18+
- name: Install pip3
19+
if: ${{ env.ACT }}
20+
run: curl https://bootstrap.pypa.io/get-pip.py >get-pip.py && python3 get-pip.py
21+
- name: Install Conan
22+
id: conan
23+
uses: turtlebrowser/get-conan@main
24+
- name: Conan version
25+
run: echo "${{ steps.conan.outputs.version }}"
26+
- uses: actions/checkout@v2
27+
- name: make test (clang)
28+
run: make test-clang
29+
30+
# Note: the steps with `if: ${{ env.ACT }}` are for local setup only.

Makefile

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ HTMLDIR=$(abspath ./cov/)
1010
BROWSER=firefox
1111

1212
CC=g++
13+
CONAN_CC=gcc
1314
CXXARGS=-I$(abspath ./inc) -g -c -std=c++20 -MMD -fprofile-arcs -ftest-coverage
1415
LDARGS=-fprofile-arcs -ftest-coverage
1516

@@ -25,10 +26,12 @@ all:
2526
@echo ""
2627
@echo "Some targets accept additional arguments in the form of KEY=VALUE pairs:"
2728
@echo " -> CC (for test and coverage): sets the command for the C++ compiler (g++ by default)"
29+
@echo " -> CONAN_CC (for test and coverage): sets the conan compiler name (gcc by default)"
2830
@echo " -> CXXARGS (for test and coverage): current arguments to the compiler - not recommended to change"
2931
@echo " -> EXTRA_CXX (for test and coverage): additional compilation flags/arguments"
3032
@echo " -> LDARGS (for test and coverage): current arguments to the linker - not recommended to change"
3133
@echo " -> EXTRA_LD (for test and coverage): additional linker flags/arguments"
34+
@echo " -> EXTRA_CONAN (for test and coverage): additional arguments for conan"
3235
@echo " -> BUILD_DIR (for test and coverage): build directory"
3336
@echo " -> BIN_DIR (for test and coverage): binary directory"
3437
@echo " -> TEST_DIR (for test and coverage): test sources directory"
@@ -56,17 +59,17 @@ docs:
5659
$(BROWSER) $(DOC_DIR)/html/index.html
5760

5861
test:
59-
make CC="$(CC)" OBJD="$(BUILD_DIR)" BIND="$(BIN_DIR)" SRCD="$(TEST_DIR)" CXXARGS="$(CXXARGS) $(EXTRA_CXX) -I$(INCL_PATH)" LDARGS="$(LDARGS) $(EXTRA_LD)" -C $(TEST_DIR)/..
62+
make CC="$(CC)" CONAN_CC="$(CONAN_CC)" CONARGS="$(EXTRA_CONAN)" OBJD="$(BUILD_DIR)" BIND="$(BIN_DIR)" SRCD="$(TEST_DIR)" CXXARGS="$(CXXARGS) $(EXTRA_CXX) -I$(INCL_PATH)" LDARGS="$(LDARGS) $(EXTRA_LD)" -C $(TEST_DIR)/..
6063

6164
test-clang:
62-
make CC="clang++" OBJD="$(BUILD_DIR)" BIND="$(BIN_DIR)" SRCD="$(TEST_DIR)" CXXARGS="$(CXXARGS) $(EXTRA_CXX) -I$(INCL_PATH) -stdlib=libc++" LDARGS="$(LDARGS) $(EXTRA_LD) -stdlib=libc++" -C $(TEST_DIR)/..
65+
make CC="clang++" CONAN_CC="clang" CONARGS="$(EXTRA_CONAN) -s compiler.libcxx=libc++" OBJD="$(BUILD_DIR)" BIND="$(BIN_DIR)" SRCD="$(TEST_DIR)" CXXARGS="$(CXXARGS) $(EXTRA_CXX) -I$(INCL_PATH) -stdlib=libc++" LDARGS="$(LDARGS) $(EXTRA_LD) -stdlib=libc++" -C $(TEST_DIR)/..
6366

6467
clean:
6568
rm -rf $(DOC_DIR)/*
6669
cd $(TEST_DIR)/.. && make clean OBJD="$(BUILD_DIR)" BIND="$(BIN_DIR)" SRCD="$(TEST_DIR)"
6770

6871
coverage:
69-
make CC="$(CC)" OBJD="$(BUILD_DIR)" BIND="$(BIN_DIR)" SRCD="$(TEST_DIR)" CXXARGS="$(CXXARGS) $(EXTRA_CXX) -I$(INCL_PATH)" LDARGS="$(LDARGS) $(EXTRA_LD)" -C $(TEST_DIR)/..
72+
make CC="$(CC)" CONAN_CC="$(CONAN_CC)" OBJD="$(BUILD_DIR)" BIND="$(BIN_DIR)" SRCD="$(TEST_DIR)" CXXARGS="$(CXXARGS) $(EXTRA_CXX) -I$(INCL_PATH)" LDARGS="$(LDARGS) $(EXTRA_LD)" -C $(TEST_DIR)/..
7073
lcov --directory "$(BUILD_DIR)" --output-file coverage.info -c --exclude '*gmock' --exclude '*doctest*' --exclude '/usr/*'
7174
genhtml coverage.info --output-directory "$(HTMLDIR)"
7275
$(BROWSER) $(HTMLDIR)/index.html

test/Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ DEPS=$(SOURCES:$(SRCD)/%.cpp=$(OBJD)/%.d)
33
TESTS=generator sources manip aggreg chain
44
TESTOBJ=$(TESTS:%=$(OBJD)/test_%.o)
55

6+
CONAN_CC=
67
CONAN_PKG_OVERRIDE=
78
CONAN_MODIFY=$(CONAN_PKG_OVERRIDE:%=-s %:compiler.version=11.2)
89

@@ -26,7 +27,7 @@ $(OBJD)/%.o: $(SRCD)/%.cpp Makefile
2627

2728
conan/conanbuildinfo.mak: conanfile.txt
2829
@([ ! -d conan/ ] && mkdir -p conan/) || true
29-
cd conan && CC=gcc CXX=$(CC) conan install .. $(CONAN_MODIFY)
30+
cd conan && CC=$(CONAN_CC) CXX=$(CC) conan install .. $(CONAN_MODIFY) $(CONARGS)
3031

3132
clean:
3233
find ./bin/ -type f | grep -v '.gitkeep' | xargs rm -rf

0 commit comments

Comments
 (0)