Skip to content

Commit b0318c3

Browse files
authored
Upgrade C++ standard to c++17 (#2052)
* Enable C++17 and use new inline specifier for const variable members * Silence deprecation warning on MSVC * Disable samples by default * improvements after review
1 parent 629442d commit b0318c3

12 files changed

+140
-38
lines changed

.github/workflows/on_PR_linux_fuzz.yml

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,24 @@ jobs:
1616
steps:
1717
- uses: actions/checkout@v2
1818
- name: install dependencies
19-
run: sudo ./ci/install_dependencies.sh
19+
run: |
20+
sudo ./ci/install_dependencies.sh
21+
sudo apt-get install ninja-build
22+
2023
- name: build and compile
2124
run: |
22-
mkdir build && cd build
23-
cmake -DEXIV2_ENABLE_PNG=ON -DEXIV2_ENABLE_WEBREADY=ON -DEXIV2_ENABLE_CURL=ON -DEXIV2_ENABLE_BMFF=ON -DEXIV2_TEAM_WARNINGS_AS_ERRORS=ON -DCMAKE_CXX_COMPILER=$(which clang++) -DEXIV2_BUILD_FUZZ_TESTS=ON -DEXIV2_TEAM_USE_SANITIZERS=ON ..
24-
make -j $(nproc)
25+
mkdir build && cd build && \
26+
cmake -GNinja -DEXIV2_ENABLE_PNG=ON \
27+
-DEXIV2_BUILD_SAMPLES=ON \
28+
-DEXIV2_ENABLE_WEBREADY=ON \
29+
-DEXIV2_ENABLE_CURL=ON \
30+
-DEXIV2_ENABLE_BMFF=ON \
31+
-DEXIV2_TEAM_WARNINGS_AS_ERRORS=ON \
32+
-DCMAKE_CXX_COMPILER=$(which clang++) \
33+
-DEXIV2_BUILD_FUZZ_TESTS=ON \
34+
-DEXIV2_TEAM_USE_SANITIZERS=ON \
35+
.. && \
36+
cmake --build .
2537
2638
- name: Fuzz
2739
run: |

.github/workflows/on_PR_linux_matrix.yml

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,19 @@ jobs:
3636
3737
- name: Build
3838
run: |
39-
cd build
40-
cmake -GNinja -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DBUILD_SHARED_LIBS=${{matrix.shared_libraries}} -DEXIV2_ENABLE_PNG=ON -DEXIV2_ENABLE_WEBREADY=ON -DEXIV2_ENABLE_CURL=ON -DEXIV2_BUILD_UNIT_TESTS=ON -DEXIV2_ENABLE_BMFF=ON -DEXIV2_TEAM_WARNINGS_AS_ERRORS=ON -DCMAKE_INSTALL_PREFIX=install ..
39+
cd build && \
40+
cmake -GNinja \
41+
-DCMAKE_BUILD_TYPE=${{matrix.build_type}} \
42+
-DBUILD_SHARED_LIBS=${{matrix.shared_libraries}} \
43+
-DEXIV2_BUILD_SAMPLES=ON \
44+
-DEXIV2_ENABLE_PNG=ON \
45+
-DEXIV2_ENABLE_WEBREADY=ON \
46+
-DEXIV2_ENABLE_CURL=ON \
47+
-DEXIV2_BUILD_UNIT_TESTS=ON \
48+
-DEXIV2_ENABLE_BMFF=ON \
49+
-DEXIV2_TEAM_WARNINGS_AS_ERRORS=ON \
50+
-DCMAKE_INSTALL_PREFIX=install \
51+
.. && \
4152
cmake --build .
4253
4354
- name: Install

.github/workflows/on_PR_linux_special_buils.yml

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,21 @@ jobs:
114114
115115
- name: Build
116116
run: |
117-
cd build
118-
cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DEXIV2_ENABLE_PNG=ON -DEXIV2_ENABLE_WEBREADY=ON -DEXIV2_ENABLE_CURL=ON -DEXIV2_BUILD_UNIT_TESTS=ON -DEXIV2_ENABLE_BMFF=ON -DEXIV2_TEAM_WARNINGS_AS_ERRORS=ON -DBUILD_WITH_COVERAGE=OFF -DEXIV2_TEAM_USE_SANITIZERS=ON -DCMAKE_INSTALL_PREFIX=install ..
117+
cd build && \
118+
cmake -GNinja \
119+
-DCMAKE_BUILD_TYPE=Release \
120+
-DBUILD_SHARED_LIBS=ON \
121+
-DEXIV2_BUILD_SAMPLES=ON \
122+
-DEXIV2_ENABLE_PNG=ON \
123+
-DEXIV2_ENABLE_WEBREADY=ON \
124+
-DEXIV2_ENABLE_CURL=ON \
125+
-DEXIV2_BUILD_UNIT_TESTS=ON \
126+
-DEXIV2_ENABLE_BMFF=ON \
127+
-DEXIV2_TEAM_WARNINGS_AS_ERRORS=ON \
128+
-DBUILD_WITH_COVERAGE=OFF \
129+
-DEXIV2_TEAM_USE_SANITIZERS=ON \
130+
-DCMAKE_INSTALL_PREFIX=install \
131+
.. && \
119132
cmake --build .
120133
121134
- name: Tests
@@ -150,8 +163,21 @@ jobs:
150163
151164
- name: Build
152165
run: |
153-
cd build
154-
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DEXIV2_ENABLE_PNG=ON -DEXIV2_ENABLE_WEBREADY=ON -DEXIV2_ENABLE_CURL=ON -DEXIV2_BUILD_UNIT_TESTS=ON -DEXIV2_ENABLE_BMFF=ON -DEXIV2_TEAM_WARNINGS_AS_ERRORS=ON -DBUILD_WITH_COVERAGE=ON -DEXIV2_BUILD_DOC=ON -DEXIV2_ENABLE_NLS=ON -DCMAKE_CXX_FLAGS="-DEXIV2_DEBUG_MESSAGES" ..
166+
cd build && \
167+
cmake -DCMAKE_BUILD_TYPE=Release \
168+
-DBUILD_SHARED_LIBS=ON \
169+
-DEXIV2_BUILD_SAMPLES=ON \
170+
-DEXIV2_ENABLE_PNG=ON \
171+
-DEXIV2_ENABLE_WEBREADY=ON \
172+
-DEXIV2_ENABLE_CURL=ON \
173+
-DEXIV2_BUILD_UNIT_TESTS=ON \
174+
-DEXIV2_ENABLE_BMFF=ON \
175+
-DEXIV2_TEAM_WARNINGS_AS_ERRORS=ON \
176+
-DBUILD_WITH_COVERAGE=ON \
177+
-DEXIV2_BUILD_DOC=ON \
178+
-DEXIV2_ENABLE_NLS=ON \
179+
-DCMAKE_CXX_FLAGS="-DEXIV2_DEBUG_MESSAGES" \
180+
.. && \
155181
make -j
156182
157183
- name: Generate documentation

.github/workflows/on_PR_mac_matrix.yml

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,20 @@ jobs:
3030
3131
- name: Build
3232
run: |
33-
mkdir build && cd build
34-
cmake -GNinja -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DBUILD_SHARED_LIBS=${{matrix.shared_libraries}} -DEXIV2_ENABLE_PNG=ON -DEXIV2_ENABLE_WEBREADY=ON -DEXIV2_ENABLE_CURL=ON -DEXIV2_BUILD_UNIT_TESTS=ON -DEXIV2_ENABLE_BMFF=ON -DEXIV2_TEAM_WARNINGS_AS_ERRORS=ON -DCMAKE_INSTALL_PREFIX=install -DCMAKE_CXX_FLAGS="-Wno-deprecated-declarations" ..
33+
mkdir build && cd build && \
34+
cmake -GNinja \
35+
-DCMAKE_BUILD_TYPE=${{matrix.build_type}} \
36+
-DBUILD_SHARED_LIBS=${{matrix.shared_libraries}} \
37+
-DEXIV2_BUILD_SAMPLES=ON \
38+
-DEXIV2_ENABLE_PNG=ON \
39+
-DEXIV2_ENABLE_WEBREADY=ON \
40+
-DEXIV2_ENABLE_CURL=ON \
41+
-DEXIV2_BUILD_UNIT_TESTS=ON \
42+
-DEXIV2_ENABLE_BMFF=ON \
43+
-DEXIV2_TEAM_WARNINGS_AS_ERRORS=ON \
44+
-DCMAKE_INSTALL_PREFIX=install \
45+
-DCMAKE_CXX_FLAGS="-Wno-deprecated-declarations" \
46+
.. && \
3547
cmake --build .
3648
3749
- name: Install

.github/workflows/on_PR_windows_matrix.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ jobs:
134134
-DCMAKE_CXX_FLAGS=-Wno-deprecated \
135135
-DCMAKE_BUILD_TYPE=${{matrix.build_type}} \
136136
-DBUILD_SHARED_LIBS=${{matrix.shared_libraries}} \
137+
-DEXIV2_BUILD_SAMPLES=ON \
137138
-DEXIV2_ENABLE_NLS=ON \
138139
-DEXIV2_ENABLE_WIN_UNICODE=ON \
139140
-DEXIV2_ENABLE_WEBREADY=ON \

.github/workflows/on_push_BasicWinLinMac.yml

Lines changed: 41 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,20 @@ jobs:
4444
4545
- name: Build
4646
run: |
47-
cd build
48-
cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DEXIV2_ENABLE_NLS=OFF -DEXIV2_ENABLE_PNG=ON -DEXIV2_ENABLE_WEBREADY=ON -DEXIV2_ENABLE_BMFF=ON -DEXIV2_BUILD_UNIT_TESTS=ON -DEXIV2_ENABLE_WIN_UNICODE=OFF -DEXIV2_TEAM_WARNINGS_AS_ERRORS=ON -DCMAKE_INSTALL_PREFIX=install ..
49-
cmake --build .
47+
cmake -GNinja `
48+
-DCMAKE_BUILD_TYPE=Release `
49+
-DBUILD_SHARED_LIBS=ON `
50+
-DEXIV2_BUILD_SAMPLES=ON `
51+
-DEXIV2_ENABLE_NLS=OFF `
52+
-DEXIV2_ENABLE_PNG=ON `
53+
-DEXIV2_ENABLE_WEBREADY=ON `
54+
-DEXIV2_ENABLE_BMFF=ON `
55+
-DEXIV2_BUILD_UNIT_TESTS=ON `
56+
-DEXIV2_ENABLE_WIN_UNICODE=OFF `
57+
-DEXIV2_TEAM_WARNINGS_AS_ERRORS=ON `
58+
-DCMAKE_INSTALL_PREFIX=install .. `
59+
-S . -B build && `
60+
cmake --build build
5061
5162
5263
- name: Test
@@ -76,8 +87,19 @@ jobs:
7687
7788
- name: build and compile
7889
run: |
79-
cd build
80-
cmake -GNinja -DEXIV2_ENABLE_WEBREADY=ON -DEXIV2_ENABLE_CURL=ON -DEXIV2_BUILD_UNIT_TESTS=ON -DEXIV2_ENABLE_BMFF=ON -DEXIV2_TEAM_WARNINGS_AS_ERRORS=ON -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON ..
90+
cd build && \
91+
cmake -GNinja \
92+
-DCMAKE_BUILD_TYPE=Release \
93+
-DBUILD_SHARED_LIBS=ON \
94+
-DEXIV2_BUILD_SAMPLES=ON \
95+
-DEXIV2_ENABLE_PNG=ON \
96+
-DEXIV2_ENABLE_WEBREADY=ON \
97+
-DEXIV2_ENABLE_CURL=ON \
98+
-DEXIV2_BUILD_UNIT_TESTS=ON \
99+
-DEXIV2_ENABLE_BMFF=ON \
100+
-DEXIV2_TEAM_WARNINGS_AS_ERRORS=ON \
101+
-DCMAKE_INSTALL_PREFIX=install \
102+
.. && \
81103
cmake --build .
82104
83105
- name: Test
@@ -106,8 +128,20 @@ jobs:
106128
107129
- name: build and compile
108130
run: |
109-
mkdir build && cd build
110-
cmake -GNinja -DEXIV2_ENABLE_WEBREADY=ON -DEXIV2_ENABLE_CURL=ON -DEXIV2_BUILD_UNIT_TESTS=ON -DEXIV2_ENABLE_BMFF=ON -DEXIV2_TEAM_WARNINGS_AS_ERRORS=ON -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DCMAKE_CXX_FLAGS="-Wno-deprecated-declarations" ..
131+
mkdir build && cd build && \
132+
cmake -GNinja \
133+
-DCMAKE_BUILD_TYPE=Release \
134+
-DBUILD_SHARED_LIBS=ON \
135+
-DEXIV2_BUILD_SAMPLES=ON \
136+
-DEXIV2_ENABLE_PNG=ON \
137+
-DEXIV2_ENABLE_WEBREADY=ON \
138+
-DEXIV2_ENABLE_CURL=ON \
139+
-DEXIV2_BUILD_UNIT_TESTS=ON \
140+
-DEXIV2_ENABLE_BMFF=ON \
141+
-DEXIV2_TEAM_WARNINGS_AS_ERRORS=ON \
142+
-DCMAKE_INSTALL_PREFIX=install \
143+
-DCMAKE_CXX_FLAGS="-Wno-deprecated-declarations" \
144+
.. && \
111145
cmake --build .
112146
113147
- name: Test

.github/workflows/on_push_ExtraJobsForMain.yml

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,19 @@ jobs:
3333
3434
- name: Build
3535
run: |
36-
cd build
37-
cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=ON -DEXIV2_ENABLE_PNG=ON -DEXIV2_ENABLE_WEBREADY=ON -DEXIV2_ENABLE_CURL=ON -DEXIV2_BUILD_UNIT_TESTS=ON -DEXIV2_ENABLE_BMFF=ON -DEXIV2_TEAM_WARNINGS_AS_ERRORS=ON -DBUILD_WITH_COVERAGE=ON -DCMAKE_INSTALL_PREFIX=install ..
36+
cd build && \
37+
cmake -DCMAKE_BUILD_TYPE=Debug \
38+
-DBUILD_SHARED_LIBS=ON \
39+
-DEXIV2_BUILD_SAMPLES=ON \
40+
-DEXIV2_ENABLE_PNG=ON \
41+
-DEXIV2_ENABLE_WEBREADY=ON \
42+
-DEXIV2_ENABLE_CURL=ON \
43+
-DEXIV2_BUILD_UNIT_TESTS=ON \
44+
-DEXIV2_ENABLE_BMFF=ON \
45+
-DEXIV2_TEAM_WARNINGS_AS_ERRORS=ON \
46+
-DBUILD_WITH_COVERAGE=ON \
47+
-DCMAKE_INSTALL_PREFIX=install \
48+
.. && \
3849
make -j
3950
4051
- name: Tests + Upload coverage

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ option( EXIV2_ENABLE_WEBREADY "Build webready support into library"
3232
option( EXIV2_ENABLE_CURL "USE Libcurl for HttpIo (WEBREADY)" OFF )
3333
option( EXIV2_ENABLE_BMFF "Build with BMFF support" ON )
3434

35-
option( EXIV2_BUILD_SAMPLES "Build sample applications" ON )
35+
option( EXIV2_BUILD_SAMPLES "Build sample applications" OFF )
3636
option( EXIV2_BUILD_EXIV2_COMMAND "Build exiv2 command-line executable" ON )
3737
option( EXIV2_BUILD_UNIT_TESTS "Build unit tests" OFF )
3838
option( EXIV2_BUILD_FUZZ_TESTS "Build fuzz tests (libFuzzer)" OFF )

cmake/compilerFlags.cmake

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
# These flags applies to exiv2lib, the applications, and to the xmp code
22
include(CheckCXXCompilerFlag)
33

4-
set(CMAKE_CXX_STANDARD 14)
4+
set(CMAKE_CXX_STANDARD 17)
55
set(CMAKE_CXX_STANDARD_REQUIRED ON)
6-
if (CYGWIN)
7-
set(CMAKE_CXX_EXTENSIONS ON)
8-
else()
9-
set(CMAKE_CXX_EXTENSIONS OFF)
10-
endif()
6+
set(CMAKE_CXX_EXTENSIONS ON)
117

128
if ( MINGW OR UNIX OR MSYS ) # MINGW, Linux, APPLE, CYGWIN
139
if (${CMAKE_CXX_COMPILER_ID} STREQUAL GNU)

include/exiv2/jpgimage.hpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,11 @@ namespace Exiv2 {
4949
*/
5050
struct EXIV2API Photoshop {
5151
// Todo: Public for now
52-
static const char* const ps3Id_; //!< %Photoshop marker
53-
static const std::array<const char*, 4> irbId_; //!< %Photoshop IRB markers
54-
static const char* const bimId_; //!< %Photoshop IRB marker (deprecated)
55-
static const uint16_t iptc_; //!< %Photoshop IPTC marker
56-
static const uint16_t preview_; //!< %Photoshop preview marker
52+
static constexpr std::array<const char*, 4> irbId_{"8BIM", "AgHg", "DCSR", "PHUT"}; //!< %Photoshop IRB markers
53+
inline static const char* ps3Id_ = "Photoshop 3.0\0"; //!< %Photoshop marker
54+
inline static const char* bimId_ = "8BIM"; //!< %Photoshop IRB marker (deprecated)
55+
inline static const uint16_t iptc_ = 0x0404; //!< %Photoshop IPTC marker
56+
inline static const uint16_t preview_ = 0x040c; //!< %Photoshop preview marker
5757

5858
/*!
5959
@brief Checks an IRB

samples/Jzon.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ THE SOFTWARE.
2525
#define JzonAPI __declspec(dllexport)
2626
#endif
2727

28+
#ifdef _MSC_VER
29+
#define _SILENCE_ALL_CXX17_DEPRECATION_WARNINGS
30+
#endif
31+
2832
#include "Jzon.h"
2933

3034
#include <algorithm>

src/jpgimage.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,11 +88,6 @@ namespace Exiv2 {
8888
constexpr const char* JpegBase::xmpId_ = "http://ns.adobe.com/xap/1.0/\0";
8989
constexpr const char* JpegBase::iccId_ = "ICC_PROFILE\0";
9090

91-
constexpr const char* Photoshop::ps3Id_ = "Photoshop 3.0\0";
92-
constexpr std::array<const char*, 4> Photoshop::irbId_{"8BIM", "AgHg", "DCSR", "PHUT"};
93-
constexpr const char* Photoshop::bimId_ = "8BIM"; // deprecated
94-
constexpr uint16_t Photoshop::iptc_ = 0x0404;
95-
constexpr uint16_t Photoshop::preview_ = 0x040c;
9691

9792
static inline bool inRange(int lo,int value, int hi)
9893
{

0 commit comments

Comments
 (0)