]> git.proxmox.com Git - ceph.git/blobdiff - ceph/cmake/modules/FindStdFilesystem.cmake
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / cmake / modules / FindStdFilesystem.cmake
index 8a1ec4264aeff084f7c29a9273572ddcb0835358..5d3336571ce980eb85f485cfeaf15d5c2e01a30f 100644 (file)
@@ -1,43 +1,57 @@
 set(_std_filesystem_test_src
   ${CMAKE_CURRENT_LIST_DIR}/FindStdFilesystem_test.cc)
 
-macro(try_std_filesystem_library _library _result)
+macro(try_std_filesystem_library _library _result _already_included)
   set(_std_filesystem_try_compile_arg
     CXX_STANDARD 17)
+  if(NOT _library STREQUAL "")
+    list(APPEND _std_filesystem_try_compile_arg
+      LINK_LIBRARIES ${_library})
+  endif()
   try_compile(_std_filesystem_compiles
     ${CMAKE_CURRENT_BINARY_DIR}
     SOURCES ${_std_filesystem_test_src}
-    LINK_LIBRARIES ${_library}
     ${_std_filesystem_try_compile_arg})
   unset(_std_filesystem_try_compile_arg)
   if(_std_filesystem_compiles)
-    set(${_result} ${_library})
+    if(NOT _library STREQUAL "")
+      set(${_result} ${_library})
+    else()
+      set(${_already_included} "included by standard library")
+    endif()
   endif()
   unset(_std_filesystem_compiles)
 endmacro()
 
-
-if(NOT StdFilesystem_LIBRARY)
-  try_std_filesystem_library("stdc++fs" StdFilesystem_LIBRARY)
-endif()
-if(NOT StdFilesystem_LIBRARY)
-  try_std_filesystem_library("c++experimental" StdFilesystem_LIBRARY)
-endif()
-if(NOT StdFilesystem_LIBRARY)
-  try_std_filesystem_library("c++fs" StdFilesystem_LIBRARY)
-endif()
+set(_std_filesystem_required_var "StdFilesystem_LIBRARY")
+set(_std_filesystem_already_included FALSE)
+foreach(library
+    ""
+    "stdc++fs"
+    "c++experimental"
+    "c++fs")
+  try_std_filesystem_library("${library}" StdFilesystem_LIBRARY _std_filesystem_already_included)
+  if(_std_filesystem_already_included)
+    set(_std_filesystem_required_var "_std_filesystem_already_included")
+    break()
+  elseif(StdFilesystem_LIBRARY)
+    break()
+  endif()
+endforeach()
 
 unset(_std_filesystem_test_src)
 
 include(FindPackageHandleStandardArgs)
 find_package_handle_standard_args(StdFilesystem
   FOUND_VAR StdFilesystem_FOUND
-  REQUIRED_VARS StdFilesystem_LIBRARY)
+  REQUIRED_VARS ${_std_filesystem_required_var})
 
 mark_as_advanced(StdFilesystem_LIBRARY)
 
 if(StdFilesystem_FOUND AND NOT (TARGET StdFilesystem::filesystem))
   add_library(StdFilesystem::filesystem INTERFACE IMPORTED)
-  set_target_properties(StdFilesystem::filesystem PROPERTIES
+  if(StdFilesystem_LIBRARY)
+    set_target_properties(StdFilesystem::filesystem PROPERTIES
       INTERFACE_LINK_LIBRARIES ${StdFilesystem_LIBRARY})
+  endif()
 endif()