blob: ba5cb84db9cd22a5a2c1cdb91fb62269bfdb975d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
# Copyright (C) 2021 Sebastian Pipping <sebastian@pipping.org>
# Licensed under the MIT license
name: Build and test
on:
pull_request:
push:
schedule:
- cron: '0 4 * * 5' # Every Friday at 4am
jobs:
build_and_test:
name: Build and test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2.3.4
- name: Add Clang/LLVM repositories
run: |-
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
sudo add-apt-repository 'deb http://apt.llvm.org/focal/ llvm-toolchain-focal-11 main'
- name: Install build dependencies
run: |-
sudo apt-get install --yes --no-install-recommends -V \
clang-11 \
cmake \
doxygen \
graphviz \
llvm-11 \
lzip \
qhelpgenerator-qt5 \
qtchooser
- name: Build, test and install
run: |-
sed 's,:,\n,g' <<<"${PATH}"
clang --version
GTEST_VERSION=1.8.1
GTEST_PREFIX=~/.local/
wget https://github.com/google/googletest/archive/release-${GTEST_VERSION}.tar.gz
tar xf release-${GTEST_VERSION}.tar.gz
(
cd googletest-release-${GTEST_VERSION}/
cmake \
-DBUILD_SHARED_LIBS=ON \
-DCVF_VERSION=${GTEST_VERSION} \
-DCMAKE_INSTALL_PREFIX:PATH=${GTEST_PREFIX} \
.
make
make install
)
mkdir build
pushd build
compile_flags=(
-pipe
-O1
-g
-fsanitize=address,undefined,leak
-fno-sanitize-recover=all
-fno-omit-frame-pointer
-Wall
-Wextra
-pedantic
)
CFLAGS="${compile_flags[*]} -std=c89"
CXXFLAGS="${compile_flags[*]} -std=c++98"
LDFLAGS='-g -fsanitize=address'
cmake_args=(
-DCMAKE_INSTALL_PREFIX:PATH=${GTEST_PREFIX}
-Wdev
-Werror=dev
-Wdeprecated
-Werror=deprecated
-DCMAKE_C_COMPILER=clang-11
-DCMAKE_CXX_COMPILER=clang++-11
-DCMAKE_C_FLAGS="${CFLAGS}"
-DCMAKE_CXX_FLAGS="${CXXFLAGS}"
-DCMAKE_EXE_LINKER_FLAGS="${LDFLAGS}"
-DCMAKE_MODULE_LINKER_FLAGS="${LDFLAGS}"
-DCMAKE_SHARED_LINKER_FLAGS="${LDFLAGS}"
-DURIPARSER_WARNINGS_AS_ERRORS=ON
)
cmake "${cmake_args[@]}" -DCMAKE_INSTALL_INCLUDEDIR=include123 ..
make VERBOSE=1 all
make VERBOSE=1 test ARGS=--verbose
cat Testing/Temporary/LastTest.log
make install
make DESTDIR="${PWD}"/ROOT/ install
find ROOT | sort
./doc/release.sh
popd
pushd cmake/test_find_package
cmake "${cmake_args[@]}" .
make VERBOSE=1
./hello
popd
git fetch --tags --unshallow origin # for "git describe" in make-distcheck.sh
./make-distcheck.sh -DCMAKE_INSTALL_PREFIX:PATH=${GTEST_PREFIX} # without AddressSanitizer
! git status | fgrep -A100 'Untracked files:' # works best at the very end
|