| From 4071543a9b783e9711aab268e8024a112ae7dcd2 Mon Sep 17 00:00:00 2001 |
| From: Philippe Normand <philn@igalia.com> |
| Date: Wed, 6 May 2020 09:10:15 +0100 |
| Subject: [PATCH] cmake: Check for C++-17 and conditionally enable it |
| |
| In GCC __cplusplus will be 201703 only if the -std=c++17 option is passed to the |
| compiler. Without this option the filesystem_utils.cpp won't compile under GCC |
| 9.3.0, giving the following error: |
| |
| src/common/filesystem_utils.cpp:74:10: fatal error: experimental/filesystem: No |
| such file or directory |
| --- |
| src/CMakeLists.txt | 7 +++++++ |
| src/loader/CMakeLists.txt | 18 +++++++++++++----- |
| 2 files changed, 20 insertions(+), 5 deletions(-) |
| |
| diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt |
| index b7c18cb..0ed5839 100644 |
| --- a/src/CMakeLists.txt |
| +++ b/src/CMakeLists.txt |
| @@ -22,6 +22,13 @@ set(CMAKE_CXX_STANDARD 14) |
| set(CMAKE_POSITION_INDEPENDENT_CODE ON) |
| set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") |
| |
| +include(CheckCXXCompilerFlag) |
| + |
| +check_cxx_compiler_flag(-std=c++17 HAVE_FLAG_STD_CXX17) |
| +if(HAVE_FLAG_STD_CXX17) |
| + set(CMAKE_CXX_STANDARD 17) |
| +endif() |
| + |
| include(GNUInstallDirs) |
| |
| ### Dependencies |
| diff --git a/src/loader/CMakeLists.txt b/src/loader/CMakeLists.txt |
| index ca395af..38f7ab1 100644 |
| --- a/src/loader/CMakeLists.txt |
| +++ b/src/loader/CMakeLists.txt |
| @@ -143,11 +143,19 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux") |
| endif() |
| |
| set_target_properties(openxr_loader PROPERTIES SOVERSION "${MAJOR}" VERSION "${MAJOR}.${MINOR}.${PATCH}") |
| - target_link_libraries( |
| - openxr_loader |
| - PRIVATE stdc++fs |
| - PUBLIC m |
| - ) |
| + |
| + if(HAVE_FLAG_STD_CXX17) |
| + target_link_libraries( |
| + openxr_loader |
| + PUBLIC m |
| + ) |
| + else() |
| + target_link_libraries( |
| + openxr_loader |
| + PRIVATE stdc++fs |
| + PUBLIC m |
| + ) |
| + endif() |
| |
| add_custom_target( |
| libopenxr_loader.so.${MAJOR}.${MINOR} ALL |
| -- |
| 2.26.2 |
| |