mirror of
https://github.com/apple/swift-argument-parser.git
synced 2026-06-06 20:18:23 +00:00
On this platform, the TIOCGWINSZ ioctl identifier is a complex macro. Since we don't have a C bridging header obviously available to get the flattened value, supply is the flattened value obtained elsewhere. This is of course brittle but this is the simplest way around this for now. Additionally, ensure we support the platform architecture name, where the x86_64 architecture is called amd64 instead.
100 lines
3.6 KiB
CMake
100 lines
3.6 KiB
CMake
# 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 $<TARGET_PROPERTY:${module},Swift_MODULE_DIRECTORY>/${module_name}.swiftdoc
|
|
DESTINATION lib/${swift}/${swift_os}/${module_name}.swiftmodule
|
|
RENAME ${swift_arch}.swiftdoc)
|
|
install(FILES $<TARGET_PROPERTY:${module},Swift_MODULE_DIRECTORY>/${module_name}.swiftmodule
|
|
DESTINATION lib/${swift}/${swift_os}/${module_name}.swiftmodule
|
|
RENAME ${swift_arch}.swiftmodule)
|
|
else()
|
|
install(FILES
|
|
$<TARGET_PROPERTY:${module},Swift_MODULE_DIRECTORY>/${module_name}.swiftdoc
|
|
$<TARGET_PROPERTY:${module},Swift_MODULE_DIRECTORY>/${module_name}.swiftmodule
|
|
DESTINATION lib/${swift}/${swift_os}/${swift_arch})
|
|
endif()
|
|
endfunction()
|