# This file is licensed under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
"""LLVM libc configuration options.
The canonical list of user options is in 'libc/config/config.json'.
These options are then processed by CMake and turned into preprocessor
definitions. We don't have this logic in Bazel yet but the list of definitions
is discoverable with the following command:
> git grep -hoE '\bLIBC_COPT_\\w*' -- '*.h' '*.cpp' | sort -u
"""
# This list of definitions is used to customize LLVM libc.
LIBC_CONFIGURE_OPTIONS = [
# Documentation in libc/docs/dev/printf_behavior.rst
# "LIBC_COPT_FLOAT_TO_STR_NO_SPECIALIZE_LD",
# "LIBC_COPT_FLOAT_TO_STR_NO_TABLE",
# "LIBC_COPT_FLOAT_TO_STR_USE_DYADIC_FLOAT",
# "LIBC_COPT_FLOAT_TO_STR_USE_DYADIC_FLOAT_LD",
# "LIBC_COPT_FLOAT_TO_STR_USE_INT_CALC",
# "LIBC_COPT_FLOAT_TO_STR_USE_MEGA_LONG_DOUBLE_TABLE",
# Documentation in libc/src/string/memory_utils/...
# "LIBC_COPT_MEMCPY_USE_EMBEDDED_TINY",
# "LIBC_COPT_MEMCPY_X86_USE_REPMOVSB_FROM_SIZE",
"LIBC_COPT_MEMCPY_X86_USE_SOFTWARE_PREFETCHING",
"LIBC_COPT_MEMSET_X86_USE_SOFTWARE_PREFETCHING",
# Documentation in libc/docs/dev/printf_behavior.rst
# "LIBC_COPT_PRINTF_CONV_ATLAS",
# "LIBC_COPT_PRINTF_DISABLE_FIXED_POINT",
# "LIBC_COPT_PRINTF_DISABLE_FLOAT",
# "LIBC_COPT_PRINTF_DISABLE_INDEX_MODE",
"LIBC_COPT_PRINTF_DISABLE_WRITE_INT",
# "LIBC_COPT_PRINTF_HEX_LONG_DOUBLE",
# "LIBC_COPT_PRINTF_INDEX_ARR_LEN",
# "LIBC_COPT_PRINTF_NO_NULLPTR_CHECKS",
# "LIBC_COPT_SCANF_DISABLE_FLOAT",
# "LIBC_COPT_SCANF_DISABLE_INDEX_MODE",
"LIBC_COPT_STDIO_USE_SYSTEM_FILE",
# "LIBC_COPT_STRING_UNSAFE_WIDE_READ",
# "LIBC_COPT_STRTOFLOAT_DISABLE_CLINGER_FAST_PATH",
# "LIBC_COPT_STRTOFLOAT_DISABLE_EISEL_LEMIRE",
# "LIBC_COPT_STRTOFLOAT_DISABLE_SIMPLE_DECIMAL_CONVERSION",
# Documentation in libc/src/__support/libc_assert.h
# "LIBC_COPT_USE_C_ASSERT",
]