CMakeParseLibraryArchitecture.cmake 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. # Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. # file Copyright.txt or https://cmake.org/licensing for details.
  3. cmake_policy(PUSH)
  4. cmake_policy(SET CMP0053 NEW)
  5. cmake_policy(SET CMP0054 NEW)
  6. # Function parse implicit linker options.
  7. # This is used internally by CMake and should not be included by user
  8. # code.
  9. function(cmake_parse_library_architecture implicit_dirs output_var)
  10. unset(library_arch)
  11. # Detect library architecture directory name.
  12. if(CMAKE_LIBRARY_ARCHITECTURE_REGEX)
  13. foreach(dir ${implicit_dirs})
  14. if("${dir}" MATCHES "/lib/${CMAKE_LIBRARY_ARCHITECTURE_REGEX}$")
  15. get_filename_component(arch "${dir}" NAME)
  16. set(library_arch "${arch}")
  17. break()
  18. endif()
  19. endforeach()
  20. endif()
  21. if(CMAKE_CXX_COMPILER_ID STREQUAL QCC)
  22. foreach(dir ${implicit_dirs})
  23. if (dir MATCHES "/lib$")
  24. get_filename_component(assumedArchDir "${dir}" DIRECTORY)
  25. get_filename_component(archParentDir "${assumedArchDir}" DIRECTORY)
  26. if (archParentDir STREQUAL CMAKE_SYSROOT)
  27. get_filename_component(archDirName "${assumedArchDir}" NAME)
  28. set(library_arch "${archDirName}")
  29. break()
  30. endif()
  31. endif()
  32. endforeach()
  33. endif()
  34. # Return results.
  35. if(library_arch)
  36. set(${output_var} "${library_arch}" PARENT_SCOPE)
  37. endif()
  38. endfunction()
  39. cmake_policy(POP)