mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-25 02:56:05 +00:00

so that docgen can find our definitions. Also eliminate the enums. POSIX is careful to call these "symbolic constants" rather than specifically whether they are preprocessor macro defines or not. Enums are useful to expressing mutual exclusion when the enum values are in distinct enums which can improve type safety. Our enum values weren't using that pattern though; they were all in one big anonymous enum. Link: https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/pthread.h.html Fixes: #88997
830 lines
18 KiB
CMake
830 lines
18 KiB
CMake
set(LIBC_INCLUDE_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
|
set(LIBC_INCLUDE_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
|
|
|
|
include(LLVMLibCHeaderRules)
|
|
|
|
# The GPU build wants to install files in the compiler's resource directory.
|
|
if(LIBC_TARGET_OS_IS_GPU)
|
|
include(GetClangResourceDir)
|
|
endif()
|
|
|
|
add_subdirectory(llvm-libc-macros)
|
|
add_subdirectory(llvm-libc-types)
|
|
|
|
add_header(
|
|
llvm_libc_common_h
|
|
HDR
|
|
__llvm-libc-common.h
|
|
)
|
|
|
|
# TODO: Can we simplify this macro expansion?
|
|
# https://github.com/llvm/llvm-project/issues/117254
|
|
macro(add_header_macro TARGET_NAME YAML_FILE DEF_FILE GEN_HDR DEPENDS)
|
|
add_gen_header(
|
|
${TARGET_NAME}
|
|
YAML_FILE ${YAML_FILE}
|
|
DEF_FILE ${DEF_FILE}
|
|
GEN_HDR ${GEN_HDR}
|
|
${DEPENDS}
|
|
${ARGN}
|
|
)
|
|
endmacro()
|
|
|
|
add_header_macro(
|
|
ctype
|
|
../libc/hdrgen/yaml/ctype.yaml
|
|
ctype.h.def
|
|
ctype.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-types.locale_t
|
|
)
|
|
|
|
add_header_macro(
|
|
dirent
|
|
../libc/hdrgen/yaml/dirent.yaml
|
|
dirent.h.def
|
|
dirent.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-types.ino_t
|
|
.llvm-libc-types.DIR
|
|
.llvm-libc-types.struct_dirent
|
|
)
|
|
|
|
add_header_macro(
|
|
fcntl
|
|
../libc/hdrgen/yaml/fcntl.yaml
|
|
fcntl.h.def
|
|
fcntl.h
|
|
DEPENDS
|
|
.llvm-libc-macros.fcntl_macros
|
|
.llvm-libc-types.mode_t
|
|
.llvm-libc-types.struct_flock
|
|
.llvm-libc-types.struct_flock64
|
|
.llvm-libc-types.off64_t
|
|
.llvm-libc-types.pid_t
|
|
.llvm-libc-types.off_t
|
|
.llvm_libc_common_h
|
|
)
|
|
|
|
add_header_macro(
|
|
dlfcn
|
|
../libc/hdrgen/yaml/dlfcn.yaml
|
|
dlfcn.h.def
|
|
dlfcn.h
|
|
DEPENDS
|
|
.llvm-libc-macros.dlfcn_macros
|
|
.llvm_libc_common_h
|
|
)
|
|
|
|
add_header_macro(
|
|
features
|
|
../libc/hdrgen/yaml/features.yaml
|
|
features.h.def
|
|
features.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-macros.features_macros
|
|
)
|
|
|
|
add_header_macro(
|
|
fenv
|
|
../libc/hdrgen/yaml/fenv.yaml
|
|
fenv.h.def
|
|
fenv.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-macros.fenv_macros
|
|
.llvm-libc-types.fenv_t
|
|
.llvm-libc-types.fexcept_t
|
|
)
|
|
|
|
add_header_macro(
|
|
inttypes
|
|
../libc/hdrgen/yaml/inttypes.yaml
|
|
inttypes.h.def
|
|
inttypes.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-types.imaxdiv_t
|
|
.llvm-libc-macros.inttypes_macros
|
|
)
|
|
|
|
add_header_macro(
|
|
float
|
|
../libc/hdrgen/yaml/float.yaml
|
|
float.h.def
|
|
float.h
|
|
DEPENDS
|
|
.llvm-libc-macros.float_macros
|
|
)
|
|
|
|
add_header_macro(
|
|
stdint
|
|
../libc/hdrgen/yaml/stdint.yaml
|
|
stdint.h.def
|
|
stdint.h
|
|
DEPENDS
|
|
.llvm-libc-macros.stdint_macros
|
|
)
|
|
|
|
add_header_macro(
|
|
limits
|
|
../libc/hdrgen/yaml/limits.yaml
|
|
limits.h.def
|
|
limits.h
|
|
DEPENDS
|
|
.llvm-libc-macros.limits_macros
|
|
)
|
|
|
|
add_header_macro(
|
|
malloc
|
|
../libc/hdrgen/yaml/malloc.yaml
|
|
malloc.h.def
|
|
malloc.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-macros.malloc_macros
|
|
)
|
|
|
|
add_header_macro(
|
|
math
|
|
../libc/hdrgen/yaml/math.yaml
|
|
math.h.def
|
|
math.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-macros.float16_macros
|
|
.llvm-libc-macros.math_macros
|
|
.llvm-libc-macros.math_function_macros
|
|
.llvm-libc-types.double_t
|
|
.llvm-libc-types.float_t
|
|
.llvm-libc-types.float128
|
|
)
|
|
|
|
add_header_macro(
|
|
stdfix
|
|
../libc/hdrgen/yaml/stdfix.yaml
|
|
stdfix.h.def
|
|
stdfix.h
|
|
DEPENDS
|
|
.llvm-libc-macros.stdfix_macros
|
|
.llvm-libc-types.stdfix-types
|
|
)
|
|
|
|
# TODO: This should be conditional on POSIX networking being included.
|
|
file(MAKE_DIRECTORY ${LIBC_INCLUDE_DIR}/arpa)
|
|
|
|
add_header_macro(
|
|
arpa_inet
|
|
../libc/hdrgen/yaml/arpa/inet.yaml
|
|
arpa/inet.h.def
|
|
arpa/inet.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
)
|
|
|
|
add_header_macro(
|
|
assert
|
|
../libc/hdrgen/yaml/assert.yaml
|
|
assert.h.def
|
|
assert.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-macros.assert_macros
|
|
)
|
|
|
|
add_header_macro(
|
|
complex
|
|
../libc/hdrgen/yaml/complex.yaml
|
|
complex.h.def
|
|
complex.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-macros.complex_macros
|
|
)
|
|
|
|
add_header_macro(
|
|
setjmp
|
|
../libc/hdrgen/yaml/setjmp.yaml
|
|
setjmp.h.def
|
|
setjmp.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-types.jmp_buf
|
|
)
|
|
|
|
add_header_macro(
|
|
string
|
|
../libc/hdrgen/yaml/string.yaml
|
|
string.h.def
|
|
string.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-macros.null_macro
|
|
.llvm-libc-types.size_t
|
|
)
|
|
|
|
add_header_macro(
|
|
strings
|
|
../libc/hdrgen/yaml/strings.yaml
|
|
strings.h.def
|
|
strings.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-types.size_t
|
|
)
|
|
|
|
add_header_macro(
|
|
search
|
|
../libc/hdrgen/yaml/search.yaml
|
|
search.h.def
|
|
search.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-types.ACTION
|
|
.llvm-libc-types.ENTRY
|
|
.llvm-libc-types.struct_hsearch_data
|
|
.llvm-libc-types.size_t
|
|
.llvm-libc-types.__lsearchcompare_t
|
|
)
|
|
|
|
add_header_macro(
|
|
time
|
|
../libc/hdrgen/yaml/time.yaml
|
|
time.h.def
|
|
time.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-macros.time_macros
|
|
.llvm-libc-types.clock_t
|
|
.llvm-libc-types.time_t
|
|
.llvm-libc-types.struct_tm
|
|
.llvm-libc-types.struct_timespec
|
|
.llvm-libc-types.struct_timeval
|
|
.llvm-libc-types.clockid_t
|
|
)
|
|
|
|
add_header_macro(
|
|
threads
|
|
../libc/hdrgen/yaml/threads.yaml
|
|
threads.h.def
|
|
threads.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-types.__call_once_func_t
|
|
.llvm-libc-types.once_flag
|
|
.llvm-libc-types.cnd_t
|
|
.llvm-libc-types.mtx_t
|
|
.llvm-libc-types.thrd_t
|
|
.llvm-libc-types.thrd_start_t
|
|
.llvm-libc-types.tss_t
|
|
.llvm-libc-types.tss_dtor_t
|
|
)
|
|
|
|
add_header_macro(
|
|
errno
|
|
../libc/hdrgen/yaml/errno.yaml
|
|
errno.h.def
|
|
errno.h
|
|
DEPENDS
|
|
.llvm-libc-macros.generic_error_number_macros
|
|
.llvm-libc-macros.error_number_macros
|
|
)
|
|
|
|
add_header_macro(
|
|
signal
|
|
../libc/hdrgen/yaml/signal.yaml
|
|
signal.h.def
|
|
signal.h
|
|
DEPENDS
|
|
.llvm-libc-macros.signal_macros
|
|
.llvm-libc-types.sig_atomic_t
|
|
.llvm-libc-types.sigset_t
|
|
.llvm-libc-types.struct_sigaction
|
|
.llvm-libc-types.union_sigval
|
|
.llvm-libc-types.siginfo_t
|
|
.llvm-libc-types.stack_t
|
|
.llvm-libc-types.pid_t
|
|
)
|
|
|
|
add_header_macro(
|
|
stdbit
|
|
../libc/hdrgen/yaml/stdbit.yaml
|
|
stdbit.h.def
|
|
stdbit.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-macros.stdbit_macros
|
|
)
|
|
|
|
add_header_macro(
|
|
stdckdint
|
|
../libc/hdrgen/yaml/stdckdint.yaml
|
|
stdckdint.h.def
|
|
stdckdint.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-macros.stdckdint_macros
|
|
)
|
|
|
|
add_header_macro(
|
|
stdio
|
|
../libc/hdrgen/yaml/stdio.yaml
|
|
stdio.h.def
|
|
stdio.h
|
|
DEPENDS
|
|
.llvm-libc-macros.file_seek_macros
|
|
.llvm-libc-macros.stdio_macros
|
|
.llvm-libc-types.FILE
|
|
.llvm-libc-types.cookie_io_functions_t
|
|
.llvm-libc-types.off_t
|
|
.llvm-libc-types.size_t
|
|
.llvm-libc-types.ssize_t
|
|
.llvm_libc_common_h
|
|
)
|
|
|
|
add_header_macro(
|
|
stdlib
|
|
../libc/hdrgen/yaml/stdlib.yaml
|
|
stdlib.h.def
|
|
stdlib.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-macros.stdlib_macros
|
|
.llvm-libc-types.div_t
|
|
.llvm-libc-types.ldiv_t
|
|
.llvm-libc-types.lldiv_t
|
|
.llvm-libc-types.size_t
|
|
.llvm-libc-types.__bsearchcompare_t
|
|
.llvm-libc-types.__qsortcompare_t
|
|
.llvm-libc-types.__qsortrcompare_t
|
|
.llvm-libc-types.__atexithandler_t
|
|
.llvm-libc-types.locale_t
|
|
)
|
|
|
|
add_header_macro(
|
|
unistd
|
|
../libc/hdrgen/yaml/unistd.yaml
|
|
unistd.h.def
|
|
unistd.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-macros.file_seek_macros
|
|
.llvm-libc-macros.unistd_macros
|
|
.llvm-libc-types.__exec_argv_t
|
|
.llvm-libc-types.__exec_envp_t
|
|
.llvm-libc-types.off_t
|
|
.llvm-libc-types.pid_t
|
|
.llvm-libc-types.size_t
|
|
.llvm-libc-types.ssize_t
|
|
.llvm-libc-types.uid_t
|
|
.llvm-libc-types.__getoptargv_t
|
|
)
|
|
|
|
add_header_macro(
|
|
pthread
|
|
../libc/hdrgen/yaml/pthread.yaml
|
|
pthread.h.def
|
|
pthread.h
|
|
DEPENDS
|
|
.llvm-libc-macros.pthread_macros
|
|
.llvm-libc-types.__atfork_callback_t
|
|
.llvm-libc-types.__pthread_once_func_t
|
|
.llvm-libc-types.__pthread_start_t
|
|
.llvm-libc-types.__pthread_tss_dtor_t
|
|
.llvm-libc-types.pthread_attr_t
|
|
.llvm-libc-types.pthread_condattr_t
|
|
.llvm-libc-types.pthread_key_t
|
|
.llvm-libc-types.pthread_mutex_t
|
|
.llvm-libc-types.pthread_mutexattr_t
|
|
.llvm-libc-types.pthread_once_t
|
|
.llvm-libc-types.pthread_rwlock_t
|
|
.llvm-libc-types.pthread_rwlockattr_t
|
|
.llvm-libc-types.pthread_spinlock_t
|
|
.llvm-libc-types.pthread_t
|
|
.llvm_libc_common_h
|
|
)
|
|
|
|
add_header_macro(
|
|
sched
|
|
../libc/hdrgen/yaml/sched.yaml
|
|
sched.h.def
|
|
sched.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-macros.sched_macros
|
|
.llvm-libc-types.cpu_set_t
|
|
.llvm-libc-types.pid_t
|
|
.llvm-libc-types.size_t
|
|
.llvm-libc-types.struct_sched_param
|
|
# Needed according to posix standard
|
|
.llvm-libc-types.time_t
|
|
.llvm-libc-types.struct_timespec
|
|
)
|
|
|
|
add_header_macro(
|
|
spawn
|
|
../libc/hdrgen/yaml/spawn.yaml
|
|
spawn.h.def
|
|
spawn.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-types.mode_t
|
|
.llvm-libc-types.pid_t
|
|
.llvm-libc-types.posix_spawnattr_t
|
|
.llvm-libc-types.posix_spawn_file_actions_t
|
|
)
|
|
|
|
add_header_macro(
|
|
link
|
|
../libc/hdrgen/yaml/link.yaml
|
|
link.h.def
|
|
link.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-macros.link_macros
|
|
)
|
|
|
|
add_header_macro(
|
|
elf
|
|
../libc/hdrgen/yaml/elf.yaml
|
|
elf.h.def
|
|
elf.h
|
|
DEPENDS
|
|
.llvm-libc-macros.elf_macros
|
|
)
|
|
|
|
# TODO: Not all platforms will have a include/sys directory. Add the sys
|
|
# directory and the targets for sys/*.h files conditional to the OS requiring
|
|
# them.
|
|
file(MAKE_DIRECTORY ${LIBC_INCLUDE_DIR}/sys)
|
|
|
|
add_header_macro(
|
|
sys_auxv
|
|
../libc/hdrgen/yaml/sys/auxv.yaml
|
|
sys/auxv.h.def
|
|
sys/auxv.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-macros.sys_auxv_macros
|
|
)
|
|
|
|
add_header_macro(
|
|
sys_epoll
|
|
../libc/hdrgen/yaml/sys/epoll.yaml
|
|
sys/epoll.h.def
|
|
sys/epoll.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-types.struct_epoll_event
|
|
.llvm-libc-types.struct_epoll_data
|
|
.llvm-libc-types.sigset_t
|
|
.llvm-libc-macros.sys_epoll_macros
|
|
)
|
|
|
|
add_header_macro(
|
|
sys_ioctl
|
|
../libc/hdrgen/yaml/sys/ioctl.yaml
|
|
sys/ioctl.h.def
|
|
sys/ioctl.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-macros.sys_ioctl_macros
|
|
)
|
|
|
|
add_header_macro(
|
|
sys_mman
|
|
../libc/hdrgen/yaml/sys/mman.yaml
|
|
sys/mman.h.def
|
|
sys/mman.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-macros.sys_mman_macros
|
|
.llvm-libc-types.off_t
|
|
.llvm-libc-types.size_t
|
|
.llvm-libc-types.ssize_t
|
|
)
|
|
|
|
add_header_macro(
|
|
sys_prctl
|
|
../libc/hdrgen/yaml/sys/prctl.yaml
|
|
sys/prctl.h.def
|
|
sys/prctl.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
)
|
|
|
|
add_header(
|
|
sys_queue
|
|
HDR
|
|
sys/queue.h
|
|
DEPENDS
|
|
.llvm-libc-macros.sys_queue_macros
|
|
)
|
|
|
|
add_header_macro(
|
|
sys_random
|
|
../libc/hdrgen/yaml/sys/random.yaml
|
|
sys/random.h.def
|
|
sys/random.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-macros.sys_random_macros
|
|
.llvm-libc-types.size_t
|
|
.llvm-libc-types.ssize_t
|
|
)
|
|
|
|
add_header_macro(
|
|
sys_resource
|
|
../libc/hdrgen/yaml/sys/resource.yaml
|
|
sys/resource.h.def
|
|
sys/resource.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-macros.sys_resource_macros
|
|
.llvm-libc-types.rlim_t
|
|
.llvm-libc-types.struct_rlimit
|
|
)
|
|
|
|
add_header_macro(
|
|
sys_stat
|
|
../libc/hdrgen/yaml/sys/stat.yaml
|
|
sys/stat.h.def
|
|
sys/stat.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-macros.sys_stat_macros
|
|
.llvm-libc-types.mode_t
|
|
.llvm-libc-types.dev_t
|
|
.llvm-libc-types.ino_t
|
|
.llvm-libc-types.nlink_t
|
|
.llvm-libc-types.uid_t
|
|
.llvm-libc-types.gid_t
|
|
.llvm-libc-types.off_t
|
|
.llvm-libc-types.struct_timespec
|
|
.llvm-libc-types.struct_timeval
|
|
.llvm-libc-types.blksize_t
|
|
.llvm-libc-types.blkcnt_t
|
|
.llvm-libc-types.struct_stat
|
|
)
|
|
|
|
add_header_macro(
|
|
sys_select
|
|
../libc/hdrgen/yaml/sys/select.yaml
|
|
sys/select.h.def
|
|
sys/select.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-macros.sys_select_macros
|
|
.llvm-libc-types.fd_set
|
|
.llvm-libc-types.sigset_t
|
|
.llvm-libc-types.suseconds_t
|
|
.llvm-libc-types.time_t
|
|
.llvm-libc-types.struct_timespec
|
|
.llvm-libc-types.struct_timeval
|
|
)
|
|
|
|
add_header_macro(
|
|
sys_sendfile
|
|
../libc/hdrgen/yaml/sys/sendfile.yaml
|
|
sys/sendfile.h.def
|
|
sys/sendfile.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-types.off_t
|
|
.llvm-libc-types.size_t
|
|
.llvm-libc-types.ssize_t
|
|
)
|
|
|
|
add_header_macro(
|
|
sys_socket
|
|
../libc/hdrgen/yaml/sys/socket.yaml
|
|
sys/socket.h.def
|
|
sys/socket.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-macros.sys_socket_macros
|
|
.llvm-libc-types.sa_family_t
|
|
.llvm-libc-types.socklen_t
|
|
.llvm-libc-types.struct_iovec
|
|
.llvm-libc-types.struct_msghdr
|
|
.llvm-libc-types.struct_sockaddr
|
|
.llvm-libc-types.struct_sockaddr_un
|
|
)
|
|
|
|
add_header_macro(
|
|
sys_statvfs
|
|
../libc/hdrgen/yaml/sys/statvfs.yaml
|
|
sys/statvfs.h.def
|
|
sys/statvfs.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-types.struct_statvfs
|
|
)
|
|
|
|
add_header_macro(
|
|
sys_syscall
|
|
../libc/hdrgen/yaml/sys/syscall.yaml
|
|
sys/syscall.h.def
|
|
sys/syscall.h
|
|
DEPENDS
|
|
)
|
|
|
|
add_header_macro(
|
|
sys_time
|
|
../libc/hdrgen/yaml/sys/time.yaml
|
|
sys/time.h.def
|
|
sys/time.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-types.struct_timeval
|
|
.llvm-libc-macros.sys_time_macros
|
|
)
|
|
|
|
add_header_macro(
|
|
sys_types
|
|
../libc/hdrgen/yaml/sys/types.yaml
|
|
sys/types.h.def
|
|
sys/types.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-types.blkcnt_t
|
|
.llvm-libc-types.blksize_t
|
|
.llvm-libc-types.clockid_t
|
|
.llvm-libc-types.dev_t
|
|
.llvm-libc-types.gid_t
|
|
.llvm-libc-types.ino_t
|
|
.llvm-libc-types.mode_t
|
|
.llvm-libc-types.nlink_t
|
|
.llvm-libc-types.off_t
|
|
.llvm-libc-types.pid_t
|
|
.llvm-libc-types.pthread_attr_t
|
|
.llvm-libc-types.pthread_key_t
|
|
.llvm-libc-types.pthread_mutex_t
|
|
.llvm-libc-types.pthread_mutexattr_t
|
|
.llvm-libc-types.pthread_once_t
|
|
.llvm-libc-types.pthread_t
|
|
.llvm-libc-types.size_t
|
|
.llvm-libc-types.ssize_t
|
|
.llvm-libc-types.suseconds_t
|
|
.llvm-libc-types.time_t
|
|
.llvm-libc-types.uid_t
|
|
)
|
|
|
|
add_header_macro(
|
|
sys_utsname
|
|
../libc/hdrgen/yaml/sys/utsname.yaml
|
|
sys/utsname.h.def
|
|
sys/utsname.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-types.struct_utsname
|
|
)
|
|
|
|
add_header_macro(
|
|
sys_wait
|
|
../libc/hdrgen/yaml/sys/wait.yaml
|
|
sys/wait.h.def
|
|
sys/wait.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-macros.sys_wait_macros
|
|
.llvm-libc-types.pid_t
|
|
.llvm-libc-types.struct_rusage
|
|
.llvm-libc-types.siginfo_t
|
|
)
|
|
|
|
add_header_macro(
|
|
termios
|
|
../libc/hdrgen/yaml/termios.yaml
|
|
termios.h.def
|
|
termios.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-macros.termios_macros
|
|
.llvm-libc-types.cc_t
|
|
.llvm-libc-types.pid_t
|
|
.llvm-libc-types.speed_t
|
|
.llvm-libc-types.struct_termios
|
|
.llvm-libc-types.tcflag_t
|
|
)
|
|
|
|
add_header_macro(
|
|
uchar
|
|
../libc/hdrgen/yaml/uchar.yaml
|
|
uchar.h.def
|
|
uchar.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-types.mbstate_t
|
|
.llvm-libc-types.char8_t
|
|
.llvm-libc-types.char16_t
|
|
.llvm-libc-types.char32_t
|
|
)
|
|
|
|
add_header_macro(
|
|
wchar
|
|
../libc/hdrgen/yaml/wchar.yaml
|
|
wchar.h.def
|
|
wchar.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-macros.wchar_macros
|
|
.llvm-libc-types.mbstate_t
|
|
.llvm-libc-types.size_t
|
|
.llvm-libc-types.wint_t
|
|
.llvm-libc-types.wchar_t
|
|
)
|
|
|
|
add_header_macro(
|
|
locale
|
|
../libc/hdrgen/yaml/locale.yaml
|
|
locale.h.def
|
|
locale.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
.llvm-libc-macros.locale_macros
|
|
.llvm-libc-types.locale_t
|
|
.llvm-libc-types.struct_lconv
|
|
)
|
|
|
|
if(LIBC_TARGET_OS_IS_GPU)
|
|
file(MAKE_DIRECTORY ${LIBC_INCLUDE_DIR}/gpu)
|
|
|
|
add_header_macro(
|
|
gpu_rpc
|
|
../libc/hdrgen/yaml/gpu/rpc.yaml
|
|
gpu/rpc.h.def
|
|
gpu/rpc.h
|
|
DEPENDS
|
|
.llvm_libc_common_h
|
|
)
|
|
endif()
|
|
|
|
if(NOT LLVM_LIBC_FULL_BUILD)
|
|
# We don't install headers in non-fullbuild mode.
|
|
return()
|
|
endif()
|
|
|
|
function(get_all_install_header_targets out_var)
|
|
set(all_deps ${ARGN})
|
|
foreach(target IN LISTS ARGN)
|
|
get_target_property(deps ${target} DEPS)
|
|
if(NOT deps)
|
|
continue()
|
|
endif()
|
|
list(APPEND all_deps ${deps})
|
|
get_all_install_header_targets(nested_deps ${deps})
|
|
list(APPEND all_deps ${nested_deps})
|
|
endforeach()
|
|
list(REMOVE_DUPLICATES all_deps)
|
|
set(${out_var} ${all_deps} PARENT_SCOPE)
|
|
endfunction(get_all_install_header_targets)
|
|
|
|
get_all_install_header_targets(all_install_header_targets ${TARGET_PUBLIC_HEADERS})
|
|
add_library(libc-headers INTERFACE)
|
|
add_dependencies(libc-headers ${all_install_header_targets})
|
|
target_include_directories(libc-headers SYSTEM INTERFACE ${LIBC_INCLUDE_DIR})
|
|
|
|
foreach(target IN LISTS all_install_header_targets)
|
|
get_target_property(header_file ${target} HEADER_FILE_PATH)
|
|
if(NOT header_file)
|
|
message(FATAL_ERROR "Installable header file '${target}' does not have the "
|
|
"HEADER_FILE_PATH property set.")
|
|
endif()
|
|
file(RELATIVE_PATH relative_path ${LIBC_INCLUDE_DIR} ${header_file})
|
|
get_filename_component(nested_dir ${relative_path} DIRECTORY)
|
|
install(FILES ${header_file}
|
|
DESTINATION ${LIBC_INSTALL_INCLUDE_DIR}/${nested_dir}
|
|
COMPONENT libc-headers)
|
|
# The GPU optionally provides the supported declarations externally so
|
|
# offloading languages like CUDA and OpenMP know what is supported by libc. We
|
|
# install these in the compiler's resource directory at a preset location.
|
|
if(LIBC_TARGET_OS_IS_GPU AND PACKAGE_VERSION)
|
|
get_target_property(decls_file ${target} DECLS_FILE_PATH)
|
|
if(NOT decls_file)
|
|
continue()
|
|
endif()
|
|
get_clang_resource_dir(resource_dir SUBDIR include)
|
|
file(RELATIVE_PATH relative_path ${LIBC_INCLUDE_DIR} ${decls_file})
|
|
get_filename_component(nested_dir ${relative_path} DIRECTORY)
|
|
set(install_dir
|
|
${CMAKE_INSTALL_PREFIX}/${resource_dir}/llvm_libc_wrappers/${nested_dir})
|
|
install(FILES ${decls_file}
|
|
DESTINATION ${install_dir}
|
|
COMPONENT libc-headers)
|
|
endif()
|
|
endforeach()
|
|
|
|
if(LLVM_LIBC_FULL_BUILD)
|
|
add_custom_target(install-libc-headers
|
|
DEPENDS libc-headers
|
|
COMMAND "${CMAKE_COMMAND}"
|
|
-DCMAKE_INSTALL_COMPONENT=libc-headers
|
|
-P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
|
|
# Stripping is a no-op for headers
|
|
add_custom_target(install-libc-headers-stripped DEPENDS install-libc-headers)
|
|
endif()
|