# Returns the architecture name in a variable # # Usage: # get_swift_host_arch(result_var_name) # # Sets ${result_var_name} with the converted architecture name derived from # CMAKE_SYSTEM_PROCESSOR. function(get_swift_host_arch result_var_name) if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64") set("${result_var_name}" "x86_64" PARENT_SCOPE) elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|ARM64|arm64") if(NOT DEFINED CMAKE_OSX_DEPLOYMENT_TARGET OR "${CMAKE_OSX_DEPLOYMENT_TARGET}" STREQUAL "") set("${result_var_name}" "aarch64" PARENT_SCOPE) else() set("${result_var_name}" "arm64" PARENT_SCOPE) endif() elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ppc64") set("${result_var_name}" "powerpc64" PARENT_SCOPE) elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ppc64le") set("${result_var_name}" "powerpc64le" PARENT_SCOPE) elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "s390x") set("${result_var_name}" "s390x" PARENT_SCOPE) elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv6l") set("${result_var_name}" "armv6" PARENT_SCOPE) elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv7-a") set("${result_var_name}" "armv7" PARENT_SCOPE) elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "armv7l") set("${result_var_name}" "armv7" PARENT_SCOPE) elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "amd64") set("${result_var_name}" "amd64" PARENT_SCOPE) elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "AMD64") set("${result_var_name}" "x86_64" PARENT_SCOPE) elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "IA64") set("${result_var_name}" "itanium" PARENT_SCOPE) elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86") set("${result_var_name}" "i686" PARENT_SCOPE) elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i686") set("${result_var_name}" "i686" PARENT_SCOPE) else() message(FATAL_ERROR "Unrecognized architecture on host system: ${CMAKE_SYSTEM_PROCESSOR}") endif() endfunction() # Returns the os name in a variable # # Usage: # get_swift_host_os(result_var_name) # # # Sets ${result_var_name} with the converted OS name derived from # CMAKE_SYSTEM_NAME. function(get_swift_host_os result_var_name) if(CMAKE_SYSTEM_NAME STREQUAL Darwin) set(${result_var_name} macosx PARENT_SCOPE) else() string(TOLOWER ${CMAKE_SYSTEM_NAME} cmake_system_name_lc) set(${result_var_name} ${cmake_system_name_lc} PARENT_SCOPE) endif() endfunction() function(_install_target module) get_swift_host_os(swift_os) get_target_property(type ${module} TYPE) if(type STREQUAL STATIC_LIBRARY) set(swift swift_static) else() set(swift swift) endif() install(TARGETS ${module} ARCHIVE DESTINATION lib/${swift}/${swift_os} LIBRARY DESTINATION lib/${swift}/${swift_os} RUNTIME DESTINATION bin) if(type STREQUAL EXECUTABLE) return() endif() get_swift_host_arch(swift_arch) get_target_property(module_name ${module} Swift_MODULE_NAME) if(NOT module_name) set(module_name ${module}) endif() if(CMAKE_SYSTEM_NAME STREQUAL Darwin) install(FILES $/${module_name}.swiftdoc DESTINATION lib/${swift}/${swift_os}/${module_name}.swiftmodule RENAME ${swift_arch}.swiftdoc) install(FILES $/${module_name}.swiftmodule DESTINATION lib/${swift}/${swift_os}/${module_name}.swiftmodule RENAME ${swift_arch}.swiftmodule) else() install(FILES $/${module_name}.swiftdoc $/${module_name}.swiftmodule DESTINATION lib/${swift}/${swift_os}/${swift_arch}) endif() endfunction()