Skip to content

Commit 275bcbb

Browse files
committed
Merge branch 'master' into feature/bug_html_timestamp
2 parents 40037fd + c90748f commit 275bcbb

File tree

134 files changed

+3009
-4628
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

134 files changed

+3009
-4628
lines changed

.github/workflows/build_cmake.yml

Lines changed: 80 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -14,29 +14,58 @@ jobs:
1414
matrix:
1515
config:
1616
- {
17-
name: "Ubuntu Latest GCC Release",
18-
os: ubuntu-20.04,
17+
name: "Ubuntu Latest GCC Release (Intel)",
18+
os: ubuntu-22.04,
1919
build_type: "Release", cc: "gcc", cxx: "g++",
2020
build_gen: "Unix Makefiles",
2121
cmake_extra_opts: "-Dbuild_search=YES -Dbuild_app=YES -Dbuild_parse=YES"
2222
}
2323
- {
24-
name: "Ubuntu Latest GCC Debug",
25-
os: ubuntu-20.04,
24+
name: "Ubuntu Latest GCC Debug (Intel)",
25+
os: ubuntu-22.04,
2626
build_type: "Debug", cc: "gcc", cxx: "g++",
2727
build_gen: "Unix Makefiles",
2828
cmake_extra_opts: "-Dbuild_search=YES -Dbuild_app=YES -Dbuild_parse=YES"
2929
}
3030
- {
31-
name: "Ubuntu Latest Clang Release",
32-
os: ubuntu-20.04,
31+
name: "Ubuntu Latest Clang Release (Intel)",
32+
os: ubuntu-22.04,
3333
build_type: "Release", cc: "clang", cxx: "clang++",
3434
build_gen: "Unix Makefiles",
3535
cmake_extra_opts: "-Duse_libclang=YES -Dstatic_libclang=YES -Duse_libc++=NO"
3636
}
3737
- {
38-
name: "Ubuntu Latest Clang Debug",
39-
os: ubuntu-20.04,
38+
name: "Ubuntu Latest Clang Debug (Intel)",
39+
os: ubuntu-22.04,
40+
build_type: "Debug", cc: "clang", cxx: "clang++",
41+
build_gen: "Unix Makefiles",
42+
cmake_extra_opts: "-Duse_libclang=YES -Dstatic_libclang=YES -Duse_libc++=NO"
43+
}
44+
45+
- {
46+
name: "Ubuntu Latest GCC Release (Arm)",
47+
os: ubuntu-24.04-arm,
48+
build_type: "Release", cc: "gcc", cxx: "g++",
49+
build_gen: "Unix Makefiles",
50+
cmake_extra_opts: "-Dbuild_search=YES -Dbuild_app=YES -Dbuild_parse=YES"
51+
}
52+
- {
53+
name: "Ubuntu Latest GCC Debug (Arm)",
54+
os: ubuntu-24.04-arm,
55+
build_type: "Debug", cc: "gcc", cxx: "g++",
56+
build_gen: "Unix Makefiles",
57+
cmake_extra_opts: "-Dbuild_search=YES -Dbuild_app=YES -Dbuild_parse=YES"
58+
}
59+
- {
60+
name: "Ubuntu Latest Clang Release (Arm)",
61+
os: ubuntu-24.04-arm,
62+
build_type: "Release", cc: "clang", cxx: "clang++",
63+
build_gen: "Unix Makefiles",
64+
cmake_extra_opts: "-Duse_libclang=YES -Dstatic_libclang=YES -Duse_libc++=NO"
65+
}
66+
- {
67+
name: "Ubuntu Latest Clang Debug (Arm)",
68+
os: ubuntu-24.04-arm,
4069
build_type: "Debug", cc: "clang", cxx: "clang++",
4170
build_gen: "Unix Makefiles",
4271
cmake_extra_opts: "-Duse_libclang=YES -Dstatic_libclang=YES -Duse_libc++=NO"
@@ -105,32 +134,48 @@ jobs:
105134
echo "/Library/TeX/texbin/" >> $GITHUB_PATH
106135
if: startsWith(matrix.config.os,'macos-')
107136

108-
- name: Install libclang (Ubuntu 20.04)
137+
- name: Install libclang (Ubuntu 22.04)
138+
run: |
139+
sudo apt update
140+
sudo apt remove llvm-13 llvm-13-dev llvm-13-tools llvm-13-runtime clang-13 clang-format-13 libclang-common-13-dev libclang-cpp13 libclang1-13 libllvm13
141+
sudo apt remove llvm-15 llvm-15-dev llvm-15-tools llvm-15-runtime clang-15 clang-format-15 libclang-common-15-dev libclang-cpp15 libclang1-15 libllvm15
142+
sudo apt-get autoremove
143+
sudo apt-get clean
144+
sudo apt install libclang-common-14-dev libclang-14-dev
145+
apt list --installed | egrep '(clang|llvm)'
146+
ls -d /usr/lib/llvm-*/include/
147+
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-14 100
148+
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-14 100
149+
ls -al /usr/bin/clang++
150+
ls -al /etc/alternatives/clang++
151+
which clang++
152+
clang++ -v
153+
if: matrix.config.cc == 'clang' && matrix.config.os == 'ubuntu-22.04'
154+
155+
- name: Install libclang (Ubuntu 24.04 ARM)
109156
run: |
110157
sudo apt update
111-
sudo apt remove llvm-8 clang-8 libclang-common-8-dev clang-format-8 libllvm8
112-
sudo apt remove llvm-9 llvm-9-dev llvm-9-tools llvm-9-runtime clang-9 libclang-common-9-dev clang-format-9 libllvm9
113-
#sudo apt remove llvm-10 llvm-10-dev llvm-10-tools llvm-10-runtime clang-10 clang-format-10 libclang-common-10-dev libclang-cpp10 libclang1-10 libllvm10
114-
sudo apt remove llvm-11 llvm-11-dev llvm-11-tools llvm-11-runtime clang-11 clang-format-11 libclang-common-11-dev libclang-cpp11 libclang1-11 libllvm11
115-
sudo apt remove llvm-12 llvm-12-dev llvm-12-tools llvm-12-runtime clang-12 clang-format-12 libclang-common-12-dev libclang-cpp12 libclang1-12 libllvm12
158+
sudo apt remove llvm-14 llvm-14-dev llvm-14-tools llvm-14-runtime clang-14 clang-format-14 libclang-common-14-dev libclang-cpp14 libclang1-14 libllvm14
159+
sudo apt remove llvm-15 llvm-15-dev llvm-15-tools llvm-15-runtime clang-15 clang-format-15 libclang-common-15-dev libclang-cpp15 libclang1-15 libllvm15
160+
sudo apt remove llvm-16 llvm-16-dev llvm-16-tools llvm-16-runtime clang-16 clang-format-16 libclang-common-16-dev libclang-cpp16 libclang1-16 libllvm16
116161
sudo apt-get autoremove
117162
sudo apt-get clean
118-
sudo apt install libclang-common-10-dev libclang-10-dev
163+
sudo apt install -y libclang-common-18-dev libclang-18-dev clang-18 llvm-18 llvm-18-dev
119164
apt list --installed | egrep '(clang|llvm)'
120165
ls -d /usr/lib/llvm-*/include/
121-
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-10 100
122-
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-10 100
166+
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-18 100
167+
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-18 100
123168
ls -al /usr/bin/clang++
124169
ls -al /etc/alternatives/clang++
125170
which clang++
126171
clang++ -v
127-
if: matrix.config.os == 'ubuntu-20.04'
172+
if: matrix.config.os == 'ubuntu-24.04-arm'
128173

129-
- name: Install libxapian (Ubuntu 20.04)
174+
- name: Install libxapian (Ubuntu 22.04)
130175
run: |
131176
sudo apt update
132177
sudo apt install libxapian-dev
133-
if: matrix.config.os == 'ubuntu-20.04'
178+
if: matrix.config.os == 'ubuntu-22.04' || matrix.config.os == 'ubuntu-24.04-arm'
134179

135180
- name: Install LaTeX (Windows)
136181
uses: teatimeguest/setup-texlive-action@v3
@@ -224,17 +269,23 @@ jobs:
224269
refreshenv
225270
if: matrix.config.os == 'windows-latest'
226271

227-
- name: Install Qt 6
228-
uses: jurplel/install-qt-action@v4
272+
- name: Install Qt 6.8
273+
uses: jdpurcell/install-qt-action@v5
274+
with:
275+
version: 6.8.*
276+
if: matrix.config.os == 'ubuntu-24.04-arm'
277+
278+
- name: Install Qt 6.2
279+
uses: jdpurcell/install-qt-action@v5
229280
with:
230281
version: 6.2.*
231282
if: startsWith(matrix.config.os,'macos-')
232283

233284
- name: Install Qt 5
234-
uses: jurplel/install-qt-action@v4
285+
uses: jdpurcell/install-qt-action@v5
235286
with:
236287
version: 5.*
237-
if: startsWith(matrix.config.os,'macos-')!=true
288+
if: startsWith(matrix.config.os,'macos-')!=true && matrix.config.os != 'ubuntu-24.04-arm'
238289

239290
- name: Check tool versions (Linux / MacOS)
240291
shell: bash
@@ -380,15 +431,14 @@ jobs:
380431
with:
381432
name: "Html documentation artifacts"
382433
path: build/html/
383-
if: matrix.config.name == 'Ubuntu Latest GCC Release'
384-
434+
if: matrix.config.name == 'Ubuntu Latest GCC Release (Intel)'
385435

386436
- name: Archive Latex documentation artifacts
387437
uses: actions/upload-artifact@v4
388438
with:
389439
name: "Latex documentation artifacts"
390440
path: build/latex/doxygen_manual.pdf
391-
if: matrix.config.name == 'Ubuntu Latest GCC Release'
441+
if: matrix.config.name == 'Ubuntu Latest GCC Release (Intel)'
392442

393443
- name: Generate Internal documentation
394444
shell: cmake -P {0}
@@ -400,7 +450,7 @@ jobs:
400450
if (NOT result EQUAL 0)
401451
message(FATAL_ERROR "Building internal documentation failed")
402452
endif()
403-
if: matrix.config.name == 'Ubuntu Latest GCC Release'
453+
if: matrix.config.name == 'Ubuntu Latest GCC Release (Intel)'
404454

405455
- name: Publish Internal documentation to Github pages
406456
uses: peaceiris/actions-gh-pages@v4
@@ -409,5 +459,6 @@ jobs:
409459
external_repository: doxygen/doxygen-docs
410460
publish_dir: build/doxygen_docs/html
411461
force_orphan: true
412-
if: ${{ github.event_name == 'push' && matrix.config.name == 'Ubuntu Latest GCC Release' }}
462+
if: ${{ github.event_name == 'push' && matrix.config.name == 'Ubuntu Latest GCC Release (Intel)' }}
463+
413464

.github/workflows/coverity.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ permissions:
1414

1515
jobs:
1616
check_date:
17-
runs-on: ubuntu-20.04
17+
runs-on: ubuntu-22.04
1818
name: Check latest commit
1919
outputs:
2020
should_run: ${{ steps.should_run.outputs.should_run }}
@@ -32,7 +32,7 @@ jobs:
3232
scan:
3333
needs: check_date
3434
if: ${{ needs.check_date.outputs.should_run != 'false' }}
35-
runs-on: ubuntu-20.04
35+
runs-on: ubuntu-22.04
3636

3737
env:
3838
CC: gcc

.github/workflows/docker_publish.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,20 @@ jobs:
2020
uses: actions/checkout@v4
2121

2222
- name: Log in to the Container registry
23-
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567
23+
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772
2424
with:
2525
registry: ${{ env.REGISTRY }}
2626
username: ${{ github.actor }}
2727
password: ${{ secrets.GITHUB_TOKEN }}
2828

2929
- name: Extract metadata (tags, labels) for Docker
3030
id: meta
31-
uses: docker/metadata-action@369eb591f429131d6889c46b94e711f089e6ca96
31+
uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804
3232
with:
3333
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
3434

3535
- name: Build and push Docker image
36-
uses: docker/build-push-action@ca877d9245402d1537745e0e356eab47c3520991
36+
uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4
3737
with:
3838
context: .
3939
push: true

CMakeLists.txt

Lines changed: 46 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ option(build_parse "Parses source code and dumps the dependencies between th
2222
option(build_search "Build external search tools (doxysearch and doxyindexer)" OFF)
2323
option(build_doc "Build user manual (HTML and PDF)" OFF)
2424
option(build_doc_chm "Build user manual (CHM)" OFF)
25-
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
25+
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
2626
option(use_libc++ "Use libc++ as C++ standard library." ON)
2727
endif()
2828
option(use_libclang "Add support for libclang parsing." OFF)
@@ -36,6 +36,7 @@ option(enable_coverage "Enable coverage reporting for gcc/clang [development]" O
3636
option(enable_tracing "Enable tracing option in release builds [development]" OFF)
3737
option(enable_lex_debug "Enable debugging info for lexical scanners in release builds [development]" OFF)
3838

39+
include(CheckCXXCompilerFlag)
3940

4041
set(force_qt CACHE INTERNAL "Forces doxywizard to build using the specified major version, this can be Qt5 or Qt6")
4142
set_property(CACHE force_qt PROPERTY STRINGS OFF Qt6 Qt5)
@@ -82,8 +83,17 @@ if (build_wizard)
8283
endif()
8384
endif()
8485

85-
# use C++17 standard for compiling
86-
set(CMAKE_CXX_STANDARD 17)
86+
# use C++17 standard for compiling (unless very new Clang is present)
87+
if (
88+
(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" AND
89+
CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 17) OR
90+
(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND
91+
CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19)
92+
)
93+
set(CMAKE_CXX_STANDARD 20)
94+
else()
95+
set(CMAKE_CXX_STANDARD 17)
96+
endif()
8797
set(CMAKE_CXX_STANDARD_REQUIRED ON)
8898
set(CMAKE_CXX_EXTENSIONS ON)
8999

@@ -116,14 +126,37 @@ if (CMAKE_SYSTEM MATCHES "Darwin")
116126
set(EXTRA_LIBS ${CORESERVICES_LIB})
117127
endif()
118128

119-
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
120-
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_LIBCPP_ENABLE_ASSERTIONS=1")
121-
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
122-
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_GLIBCXX_ASSERTIONS")
123-
endif()
129+
check_cxx_source_compiles(
130+
"
131+
#include <algorithm>
132+
133+
#if !defined(__clang__) || !defined(_LIBCPP_VERSION)
134+
# error \"This is not clang with libcxx by llvm\"
135+
#endif
136+
137+
int main() {
138+
return 0;
139+
}
140+
"
141+
IS_CLANG_LIBCPP
142+
FAIL_REGEX "This is not clang with libcxx by llvm"
143+
)
144+
145+
add_compile_definitions(
146+
# LLVM's clang in combination with libc++
147+
$<$<AND:$<CONFIG:Debug>,$<BOOL:${IS_CLANG_LIBCPP}>>:_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_DEBUG>
148+
# LLVM's clang or gcc in combination with libstdc++ (GNU)
149+
$<$<AND:$<CONFIG:Debug>,$<NOT:$<BOOL:${IS_CLANG_LIBCPP}>>>:_GLIBCXX_ASSERTIONS>
150+
)
124151

125152
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DSQLITE_OMIT_LOAD_EXTENSION=1")
126153

154+
# Use 64-bit off_t on 32-bit Linux
155+
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SIZEOF_VOID_P EQUAL 4)
156+
# ensure 64bit offsets are used for filesystem accesses for 32bit compilation
157+
add_compile_definitions(_FILE_OFFSET_BITS=64)
158+
endif()
159+
127160
if (WIN32)
128161
if (MSVC)
129162
if (NOT ICONV_DIR)
@@ -171,7 +204,11 @@ if (CMAKE_SYSTEM_NAME MATCHES "Windows")
171204
endif()
172205

173206
# needed for JavaCC
174-
set(JAVA_CC_EXTRA_FLAGS "-DJAVACC_CHAR_TYPE=\"unsigned char\"")
207+
if (CMAKE_CXX_STANDARD EQUAL 20)
208+
set(JAVA_CC_EXTRA_FLAGS "-DJAVACC_CHAR_TYPE=\"char8_t\"")
209+
else()
210+
set(JAVA_CC_EXTRA_FLAGS "-DJAVACC_CHAR_TYPE=\"unsigned char\"")
211+
endif()
175212
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${JAVA_CC_EXTRA_FLAGS}")
176213
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${JAVA_CC_EXTRA_FLAGS}")
177214

Dockerfile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
FROM ubuntu:focal AS builder
1+
FROM ubuntu:jammy AS builder
22

33
RUN apt-get update && apt-get install -y \
44
g++ \
5-
python \
5+
python3 \
66
cmake \
77
flex \
88
bison \
@@ -18,7 +18,7 @@ RUN mkdir build \
1818
&& make install
1919

2020

21-
FROM ubuntu:focal
21+
FROM ubuntu:jammy
2222
RUN apt-get update && apt-get install --no-install-recommends -y \
2323
graphviz \
2424
&& rm -rf /var/lib/apt/lists/*

deps/fmt/include/fmt/core.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2773,7 +2773,7 @@ template <typename Char, typename... Args> class basic_format_string {
27732773
template <typename S,
27742774
FMT_ENABLE_IF(
27752775
std::is_convertible<const S&, basic_string_view<Char>>::value)>
2776-
FMT_CONSTEVAL FMT_INLINE basic_format_string(const S& s) : str_(s) {
2776+
FMT_CONSTEXPR FMT_INLINE basic_format_string(const S& s) : str_(s) {
27772777
static_assert(
27782778
detail::count<
27792779
(std::is_base_of<detail::view, remove_reference_t<Args>>::value &&

0 commit comments

Comments
 (0)