mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-08 10:31:50 -05:00
build: add support for std::filesystem
Add a macro to check if linking with -lstdc++fs or -lc++fs is required.
This commit is contained in:
parent
c194293883
commit
ffc89d1f21
2 changed files with 50 additions and 0 deletions
47
build-aux/m4/l_filesystem.m4
Normal file
47
build-aux/m4/l_filesystem.m4
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
dnl Copyright (c) 2022 The Bitcoin Core developers
|
||||||
|
dnl Distributed under the MIT software license, see the accompanying
|
||||||
|
dnl file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
|
# GCC 8.1 and earlier requires -lstdc++fs
|
||||||
|
# Clang 8.0.0 (libc++) and earlier requires -lc++fs
|
||||||
|
|
||||||
|
m4_define([_CHECK_FILESYSTEM_testbody], [[
|
||||||
|
#include <filesystem>
|
||||||
|
|
||||||
|
namespace fs = std::filesystem;
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
(void)fs::current_path().root_name();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
]])
|
||||||
|
|
||||||
|
AC_DEFUN([CHECK_FILESYSTEM], [
|
||||||
|
|
||||||
|
AC_LANG_PUSH(C++)
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([whether std::filesystem can be used without link library])
|
||||||
|
|
||||||
|
AC_LINK_IFELSE([AC_LANG_SOURCE([_CHECK_FILESYSTEM_testbody])],[
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
],[
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
SAVED_LIBS="$LIBS"
|
||||||
|
LIBS="$SAVED_LIBS -lstdc++fs"
|
||||||
|
AC_MSG_CHECKING([whether std::filesystem needs -lstdc++fs])
|
||||||
|
AC_LINK_IFELSE([AC_LANG_SOURCE([_CHECK_FILESYSTEM_testbody])],[
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
],[
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
AC_MSG_CHECKING([whether std::filesystem needs -lc++fs])
|
||||||
|
LIBS="$SAVED_LIBS -lc++fs"
|
||||||
|
AC_LINK_IFELSE([AC_LANG_SOURCE([_CHECK_FILESYSTEM_testbody])],[
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
],[
|
||||||
|
AC_MSG_FAILURE([cannot figure out how to use std::filesystem])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_LANG_POP
|
||||||
|
])
|
|
@ -83,6 +83,9 @@ AX_CXX_COMPILE_STDCXX([17], [noext], [mandatory])
|
||||||
dnl Check if -latomic is required for <std::atomic>
|
dnl Check if -latomic is required for <std::atomic>
|
||||||
CHECK_ATOMIC
|
CHECK_ATOMIC
|
||||||
|
|
||||||
|
dnl check if additional link flags are required for std::filesystem
|
||||||
|
CHECK_FILESYSTEM
|
||||||
|
|
||||||
dnl Unless the user specified OBJCXX, force it to be the same as CXX. This ensures
|
dnl Unless the user specified OBJCXX, force it to be the same as CXX. This ensures
|
||||||
dnl that we get the same -std flags for both.
|
dnl that we get the same -std flags for both.
|
||||||
m4_ifdef([AC_PROG_OBJCXX],[
|
m4_ifdef([AC_PROG_OBJCXX],[
|
||||||
|
|
Loading…
Add table
Reference in a new issue