[libc][darwin] add syscall numbers from macos sdk (#166354)

This PR adds support to include syscall.h from MacOS sdk by explicitly including the path to the sdk via `xcrun`.
This commit is contained in:
Shreeyash Pandey
2025-11-27 21:26:42 +05:30
committed by GitHub
parent 39f5ff056b
commit fb94261d88
2 changed files with 33 additions and 1 deletions

View File

@@ -215,6 +215,37 @@ else()
"Unsupported libc target operating system ${LIBC_TARGET_OS}")
endif()
# If the compiler target triple is not the same as the triple specified by
# LIBC_TARGET_TRIPLE or LLVM_RUNTIMES_TARGET, we will add a --target option
# if the compiler is clang. If the compiler is GCC we just error out as there
# is no equivalent of an option like --target.
if(explicit_target_triple AND
(NOT (libc_compiler_triple STREQUAL explicit_target_triple)))
set(LIBC_CROSSBUILD TRUE)
if(CMAKE_COMPILER_IS_GNUCXX)
message(FATAL_ERROR
"GCC target triple (${libc_compiler_triple}) and the explicity "
"specified target triple (${explicit_target_triple}) do not match.")
else()
list(APPEND
LIBC_COMPILE_OPTIONS_DEFAULT "--target=${explicit_target_triple}")
endif()
endif()
if(LIBC_TARGET_OS_IS_DARWIN)
execute_process(
COMMAND xcrun --sdk macosx --show-sdk-path
OUTPUT_VARIABLE MACOSX_SDK_PATH
RESULT_VARIABLE MACOSX_SDK_PATH_RESULT
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(MACOSX_SDK_PATH_RESULT EQUAL 0)
list(APPEND LIBC_COMPILE_OPTIONS_DEFAULT "-I" "${MACOSX_SDK_PATH}/usr/include")
else()
message(WARNING "Could not find macOS SDK path. `xcrun --sdk macosx --show-sdk-path` failed.")
endif()
endif()
# Windows does not support full mode build.
if (LIBC_TARGET_OS_IS_WINDOWS AND LLVM_LIBC_FULL_BUILD)
message(FATAL_ERROR "Windows does not support full mode build.")

View File

@@ -9,7 +9,7 @@
#ifndef LLVM_LIBC_SYS_SYSCALL_H
#define LLVM_LIBC_SYS_SYSCALL_H
//TODO: Handle non-linux syscalls
#if defined(__linux__)
#include <asm/unistd.h>
@@ -2361,5 +2361,6 @@
#define SYS_writev __NR_writev
#endif
#endif // __linux__
#endif // LLVM_LIBC_SYS_SYSCALL_H