]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/boost/libs/filesystem/CMakeLists.txt
import quincy beta 17.1.0
[ceph.git] / ceph / src / boost / libs / filesystem / CMakeLists.txt
index 94f03b3568764a655f5b53e5de2fe23f074b5124..141f9c74b1c808cf1c1af1016392513e21bd208d 100644 (file)
@@ -1,14 +1,30 @@
 # Copyright 2019 Mike Dev
+# Copyright 2020 Andrey Semashev
+#
 # Distributed under the Boost Software License, Version 1.0.
 # See accompanying file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt
 #
 # NOTE: CMake support for Boost.Filesystem is currently experimental at best
 #       and the interface is likely to change in the future
 
-cmake_minimum_required( VERSION 3.5 )
-project( BoostFilesystem )
+cmake_minimum_required(VERSION 3.5)
+project(BoostFilesystem VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES CXX)
+
+include(CheckCXXSourceCompiles)
 
-add_library( boost_filesystem
+check_cxx_source_compiles("#include <${CMAKE_CURRENT_SOURCE_DIR}/config/has_stat_st_mtim.cpp>" BOOST_FILESYSTEM_HAS_STAT_ST_MTIM)
+check_cxx_source_compiles("#include <${CMAKE_CURRENT_SOURCE_DIR}/config/has_stat_st_mtimensec.cpp>" BOOST_FILESYSTEM_HAS_STAT_ST_MTIMENSEC)
+check_cxx_source_compiles("#include <${CMAKE_CURRENT_SOURCE_DIR}/config/has_stat_st_mtimespec.cpp>" BOOST_FILESYSTEM_HAS_STAT_ST_MTIMESPEC)
+if(WIN32)
+    # Note: We can't use the Boost::library targets here as they may not yet be included by the superproject when this CMakeLists.txt is included.
+    set(CMAKE_REQUIRED_INCLUDES "${CMAKE_CURRENT_SOURCE_DIR}/../..")
+    set(CMAKE_REQUIRED_LIBRARIES bcrypt)
+    check_cxx_source_compiles("#include <${CMAKE_CURRENT_SOURCE_DIR}/config/has_bcrypt.cpp>" BOOST_FILESYSTEM_HAS_BCRYPT)
+    unset(CMAKE_REQUIRED_LIBRARIES)
+    unset(CMAKE_REQUIRED_INCLUDES)
+endif()
+
+add_library(boost_filesystem
     src/codecvt_error_category.cpp
     src/exception.cpp
     src/operations.cpp
@@ -21,11 +37,12 @@ add_library( boost_filesystem
     src/windows_file_codecvt.cpp
 )
 
-add_library( Boost::filesystem ALIAS boost_filesystem )
+add_library(Boost::filesystem ALIAS boost_filesystem)
 
-target_include_directories( boost_filesystem PUBLIC include )
+target_include_directories(boost_filesystem PUBLIC include)
+target_include_directories(boost_filesystem PRIVATE src)
 
-target_compile_definitions( boost_filesystem
+target_compile_definitions(boost_filesystem
     PUBLIC
         # NOTE:
         # We deactivate autolinking, because cmake based builds don't need it
@@ -39,7 +56,17 @@ target_compile_definitions( boost_filesystem
         BOOST_FILESYSTEM_SOURCE
 )
 
-target_link_libraries( boost_filesystem
+if(BOOST_FILESYSTEM_HAS_STAT_ST_MTIM)
+    target_compile_definitions(boost_filesystem PRIVATE BOOST_FILESYSTEM_HAS_STAT_ST_MTIM)
+endif()
+if(BOOST_FILESYSTEM_HAS_STAT_ST_MTIMENSEC)
+    target_compile_definitions(boost_filesystem PRIVATE BOOST_FILESYSTEM_HAS_STAT_ST_MTIMENSEC)
+endif()
+if(BOOST_FILESYSTEM_HAS_STAT_ST_MTIMESPEC)
+    target_compile_definitions(boost_filesystem PRIVATE BOOST_FILESYSTEM_HAS_STAT_ST_MTIMESPEC)
+endif()
+
+target_link_libraries(boost_filesystem
     PUBLIC
         Boost::assert
         Boost::config
@@ -51,9 +78,26 @@ target_link_libraries( boost_filesystem
         Boost::smart_ptr
         Boost::system
         Boost::type_traits
-)
 
-target_link_libraries( boost_filesystem
     PRIVATE
-        Boost::winapi
+        Boost::predef
 )
+
+if(WIN32)
+    if(BOOST_FILESYSTEM_HAS_BCRYPT)
+        target_compile_definitions(boost_filesystem PRIVATE BOOST_FILESYSTEM_HAS_BCRYPT)
+        target_link_libraries(boost_filesystem PRIVATE bcrypt)
+    else()
+        target_compile_definitions(boost_filesystem PRIVATE BOOST_FILESYSTEM_HAS_WINCRYPT)
+        if(NOT WINCE)
+            target_link_libraries(boost_filesystem PRIVATE advapi32)
+        else()
+            target_link_libraries(boost_filesystem PRIVATE coredll)
+        endif()
+    endif()
+
+    target_link_libraries(boost_filesystem
+        PRIVATE
+            Boost::winapi
+    )
+endif()