blob: 941eeaa8f9b1eda6db15313060e59f75da0cf8d7 [file] [log] [blame]
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