CMakeParseLibraryArchitecture.cmake 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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_LIBRARY_ARCHITECTURE_REGEX_VERSIONED AND NOT library_arch)
  22. foreach(dir ${implicit_dirs})
  23. if("${dir}" MATCHES "/${CMAKE_LIBRARY_ARCHITECTURE_REGEX_VERSIONED}$")
  24. get_filename_component(arch "${dir}" DIRECTORY)
  25. get_filename_component(arch "${arch}" NAME)
  26. set(library_arch "${arch}")
  27. break()
  28. endif()
  29. endforeach()
  30. endif()
  31. if(CMAKE_CXX_COMPILER_ID STREQUAL QCC)
  32. foreach(dir ${implicit_dirs})
  33. if (dir MATCHES "/lib$")
  34. get_filename_component(assumedArchDir "${dir}" DIRECTORY)
  35. get_filename_component(archParentDir "${assumedArchDir}" DIRECTORY)
  36. if (archParentDir STREQUAL CMAKE_SYSROOT)
  37. get_filename_component(archDirName "${assumedArchDir}" NAME)
  38. set(library_arch "${archDirName}")
  39. break()
  40. endif()
  41. endif()
  42. endforeach()
  43. endif()
  44. # Return results.
  45. if(library_arch)
  46. set(${output_var} "${library_arch}" PARENT_SCOPE)
  47. endif()
  48. endfunction()
  49. cmake_policy(POP)