blob: 4d1374e4e47f040c73215a434d6354f80d6b079e [file] [log] [blame]
# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# The ncurses C library and unit test.
load("@bazel_skylib//rules:common_settings.bzl", "bool_flag")
load("@bazel_skylib//rules:write_file.bzl", "write_file")
load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("//bazel:automake_substitution.bzl", "automake_substitution")
load("//bazel:pseudo_configure.bzl", "pseudo_configure")
package(default_visibility = ["//visibility:public"])
licenses(["notice"])
exports_files([
"LICENSE",
"include/Caps",
])
NCURSES_COPTS = [
"-w",
"-DTRACE",
"-DHAVE_CONFIG_H",
"-D_GNU_SOURCE",
"-DNDEBUG",
]
CAPLIST = [
"include/Caps",
"include/Caps-ncurses",
]
CAPLIST_LOCATIONS = " ".join(["$(execpath :" + cap + ")" for cap in CAPLIST])
AUTOMAKE_SUBSTITUTIONS_COMMON = {
"BROKEN_LINKER": "0",
"EXP_WIN32_DRIVER": "0",
"GENERATED_EXT_FUNCS": "generated",
"HAVE_BTOWC": "1",
"HAVE_MBLEN": "1",
"HAVE_MBRLEN": "1",
"HAVE_MBRTOWC": "1",
"HAVE_MBSRTOWCS": "1",
"HAVE_MBSTOWCS": "1",
"HAVE_MBTOWC": "1",
"HAVE_PUTWC": "1",
"HAVE_STDINT_H": "1",
"HAVE_STDNORETURN_H": "1",
"HAVE_TCGETATTR": "1",
"HAVE_TERMIOS_H": "1",
"HAVE_TERMIO_H": "1",
"HAVE_VSSCANF": "1",
"HAVE_WCHAR_H": "1",
"HAVE_WCSRTOMBS": "1",
"HAVE_WCSTOMBS": "1",
"HAVE_WCTOB": "1",
"HAVE_WCTOMB": "1",
"HAVE_WCTYPE_H": "1",
"HAVE_WMEMCHR": "1",
"NCURSES_CCHARW_MAX": "5",
"NCURSES_CH_T": "cchar_t",
"NCURSES_CONST": "const",
"NCURSES_EXT_COLORS": "0",
"NCURSES_EXT_FUNCS": "1",
"NCURSES_INLINE": "inline",
"NCURSES_INTEROP_FUNCS": "1",
"NCURSES_LIBUTF8": "0",
"NCURSES_MAJOR": "6",
"NCURSES_MBSTATE_T": "1",
"NCURSES_MINOR": "4",
"NCURSES_MOUSE_VERSION": "2",
"NCURSES_OK_WCHAR_T": "",
"NCURSES_OPAQUE": "0",
"NCURSES_OPAQUE_FORM": "0",
"NCURSES_OPAQUE_MENU": "0",
"NCURSES_OPAQUE_PANEL": "0",
"NCURSES_OSPEED": "short",
"NCURSES_PATCH": "20221231",
"NCURSES_SBOOL": "char",
"NCURSES_SIZE_T": "short",
"NCURSES_SP_FUNCS": "1",
"NCURSES_TPARM_ARG": "intptr_t",
"NCURSES_TPARM_VARARGS": "1",
"NCURSES_USE_DATABASE": "1",
"NCURSES_USE_TERMCAP": "0",
"NCURSES_WATTR_MACROS": "1",
"NCURSES_WCHAR_T": "0",
"NCURSES_WCWIDTH_GRAPHICS": "1",
"NCURSES_WIDECHAR": "1",
"NCURSES_WINT_T": "0",
"NCURSES_WRAP_PREFIX": "_nc_",
"NCURSES_XNAMES": "1",
"NEED_WCHAR_H": "1",
"USE_CXX_BOOL": "defined(__cplusplus)",
"USE_WIDEC_SUPPORT": "1",
"cf_cv_1UL": "1U",
"cf_cv_enable_lp64": "1",
"cf_cv_enable_reentrant": "0",
"cf_cv_header_stdbool_h": "1",
"cf_cv_type_of_bool": "unsigned char",
"cf_cv_typeof_chtype": "cchar_t",
"cf_cv_typeof_mmask_t": "unsigned",
}
AUTOMAKE_SUBSTITUTIONS = select({
"@platforms//cpu:armv7": AUTOMAKE_SUBSTITUTIONS_COMMON | {
"HAVE_STDNORETURN_H": "0",
"HAVE_WCHAR_H": "0",
"NCURSES_CH_T": "chtype",
"NCURSES_WATTR_MACROS": "0",
"NCURSES_WIDECHAR": "0",
"NEED_WCHAR_H": "0",
"USE_WIDEC_SUPPORT": "0",
"cf_cv_typeof_chtype": "uint32_t",
"cf_cv_typeof_mmask_t": "uint32_t",
},
"//conditions:default": AUTOMAKE_SUBSTITUTIONS_COMMON,
})
cc_library(
name = "ncurses_headers",
hdrs = glob(["include/*"]) + [
# Generated files are not found by glob.
"include/hashsize.h",
"include/ncurses_cfg.h",
"include/ncurses_def.h",
"include/parametrized.h",
"include/curses.h",
"include/term.h",
"include/ncurses_dll.h",
"include/unctrl.h",
"include/termcap.h",
],
includes = [
"include",
"ncurses",
],
)
NCURSES_TEXTUAL_HDRS = [
"ncurses/tinfo/doalloc.c",
"ncurses/names.c",
]
cc_library(
name = "ncurses_textual_headers",
hdrs = NCURSES_TEXTUAL_HDRS,
includes = [
"ncurses",
],
)
NCURSES_SRCS = glob(
[
"ncurses/base/*.c",
"ncurses/*.c",
"ncurses/*.h",
"ncurses/tinfo/*.c",
"ncurses/trace/*.c",
"ncurses/tty/*.c",
],
exclude = [
"ncurses/base/lib_driver.c",
"ncurses/base/sigaction.c",
"ncurses/tinfo/make_keys.c",
"ncurses/tinfo/tinfo_driver.c",
"ncurses/tinfo/make_hash.c",
"ncurses/report_offsets.c",
"ncurses/report_hashing.c",
],
) + [
# Generated files are not found by glob.
"ncurses/codes.c",
"ncurses/comp_captab.c",
"ncurses/comp_userdefs.c",
"ncurses/fallback.c",
"ncurses/init_keytry.h",
"ncurses/lib_gen.c",
"ncurses/lib_keyname.c",
"ncurses/names.c",
"ncurses/unctrl.c",
]
cc_library(
name = "ncurses",
srcs = select({
"@platforms//cpu:armv7": NCURSES_SRCS,
"//conditions:default": NCURSES_SRCS + glob([
"ncurses/widechar/*.c",
]),
}),
copts = NCURSES_COPTS,
textual_hdrs = NCURSES_TEXTUAL_HDRS,
deps = [":ncurses_headers"],
)
# Common headers between form and menu.
cc_library(
name = "mf_common",
hdrs = [
"menu/eti.h",
"menu/mf_common.h",
],
includes = ["menu"],
)
cc_library(
name = "form",
srcs = glob(["form/*.c"]) + [
"form/form.priv.h",
"ncurses/curses.priv.h",
],
hdrs = ["form/form.h"],
copts = NCURSES_COPTS,
deps = [
":mf_common",
":ncurses",
],
)
cc_library(
name = "menu",
srcs = glob(["menu/*.c"]) + [
"menu/menu.priv.h",
"ncurses/curses.priv.h",
],
hdrs = ["menu/menu.h"],
copts = NCURSES_COPTS,
deps = [
":mf_common",
":ncurses",
],
)
cc_library(
name = "panel",
srcs = glob(["panel/*.c"]) + [
"ncurses/curses.priv.h",
"panel/panel.priv.h",
],
hdrs = [
"panel/panel.h",
],
copts = NCURSES_COPTS,
deps = [":ncurses"],
)
write_file(
name = "progs/transform_h",
out = "progs/transform.h",
content = """\
#ifndef __TRANSFORM_H
#define __TRANSFORM_H 1
#include <progs.priv.h>
extern bool same_program(const char *, const char *);
#define PROG_CAPTOINFO \"captoinfo\"
#define PROG_INFOTOCAP \"infotocap\"
#define PROG_CLEAR \"clear\"
#define PROG_RESET \"reset\"
#define PROG_INIT \"init\"
#endif /* __TRANSFORM_H */
""".splitlines(),
newline = "unix",
)
genrule(
name = "progs_termsort_h",
srcs = [
"include/Caps",
],
outs = ["progs/termsort.h"],
cmd = "$(execpath :progs/MKtermsort.sh) $(execpath @gawk) $(execpath include/Caps) > $@",
tools = [
"progs/MKtermsort.sh",
"@gawk",
],
)
cc_library(
name = "progs",
srcs = [
"ncurses/base/keybound.c",
"ncurses/base/tries.c",
"ncurses/base/version.c",
"ncurses/codes.c",
"ncurses/comp_captab.c",
"ncurses/comp_userdefs.c",
"ncurses/lib_gen.c",
"ncurses/lib_keyname.c",
"ncurses/names.c",
"ncurses/trace/lib_trace.c",
"ncurses/trace/lib_tracechr.c",
"ncurses/trace/trace_buf.c",
"ncurses/trace/visbuf.c",
"ncurses/tty/hashmap.c",
"ncurses/unctrl.c",
] + glob(
include = [
"progs/*.c",
"ncurses/tinfo/*.c",
],
exclude = [
"progs/clear.c",
"progs/tabs.c",
"progs/tic.c",
"progs/toe.c",
"progs/tput.c",
"progs/tset.c",
"ncurses/tinfo/make_keys.c",
"ncurses/tinfo/tinfo_driver.c",
"ncurses/tinfo/make_hash.c",
],
),
hdrs = [
"ncurses/curses.priv.h",
"ncurses/init_keytry.h",
"ncurses/new_pair.h",
"ncurses/term.priv.h",
"progs/termsort.h",
"progs/transform.h",
] + glob(["progs/*.h"]),
copts = NCURSES_COPTS,
includes = [
"include",
"progs",
],
deps = [":ncurses_headers"],
)
cc_binary(
name = "tic",
srcs = [
"progs/tic.c",
],
visibility = ["//visibility:public"],
deps = [":progs"],
)
cc_binary(
name = "infocmp",
srcs = [
"progs/infocmp.c",
],
visibility = ["//visibility:public"],
deps = [":progs"],
)
bool_flag(
name = "use_terminfo_data_target",
build_setting_default = True,
visibility = ["//visibility:public"],
)
config_setting(
name = "use_terminfo_data_target_setting",
flag_values = {":use_terminfo_data_target": "true"},
visibility = ["//visibility:public"],
)
label_flag(
name = "terminfo_data",
build_setting_default = "@local_terminfo",
visibility = ["//visibility:public"],
)
genrule(
name = "fallback_c",
srcs = ["misc/terminfo.src"] + select({
":use_terminfo_data_target_setting": ["terminfo_data"],
"//conditions:default": [],
}),
outs = ["ncurses/fallback.c"],
cmd = select({
":use_terminfo_data_target_setting": "$(execpath :ncurses/tinfo/MKfallback.sh) $(execpath :terminfo_data) $(execpath :misc/terminfo.src) $(execpath :tic) $(execpath :infocmp) > $@",
"//conditions:default": "$(execpath :ncurses/tinfo/MKfallback.sh) /usr/share/terminfo $(execpath :misc/terminfo.src) $(execpath :tic) $(execpath :infocmp) > $@",
}),
tools = [
"ncurses/tinfo/MKfallback.sh",
":infocmp",
":tic",
],
)
cc_binary(
name = "make_hash",
srcs = [
"ncurses/build.priv.h",
"ncurses/curses.priv.h",
"ncurses/tinfo/make_hash.c",
],
copts = NCURSES_COPTS,
deps = [
":ncurses_headers",
":ncurses_textual_headers",
],
)
genrule(
name = "comp_captab_c",
srcs = [
"ncurses/tinfo/MKcaptab.awk",
"include/Caps",
],
outs = ["ncurses/comp_captab.c"],
cmd = "cp -f $(execpath :make_hash) . && $(execpath :ncurses/tinfo/MKcaptab.sh) $(execpath @gawk) 1 $(execpath :ncurses/tinfo/MKcaptab.awk) $(execpath :include/Caps) > $@",
tools = [
"ncurses/tinfo/MKcaptab.sh",
":make_hash",
"@gawk",
],
)
genrule(
name = "comp_userdefs_c",
srcs = ["include/hashsize.h"] + CAPLIST,
outs = ["ncurses/comp_userdefs.c"],
cmd = "cp -f $(execpath :make_hash) . && $(execpath ncurses/tinfo/MKuserdefs.sh) $(execpath @gawk) 1 " + CAPLIST_LOCATIONS + " > $@",
tools = [
"ncurses/tinfo/MKuserdefs.sh",
":make_hash",
"@gawk",
],
)
genrule(
name = "codes_c",
srcs = [
"ncurses/tinfo/MKcodes.awk",
"include/Caps",
],
outs = ["ncurses/codes.c"],
cmd = "$(execpath @gawk) -f $(execpath ncurses/tinfo/MKcodes.awk) bigstrings=1 $(execpath :include/Caps) > $@",
tools = ["@gawk"],
)
genrule(
name = "names_c",
srcs = [
"ncurses/tinfo/MKnames.awk",
"include/Caps",
],
outs = ["ncurses/names.c"],
cmd = "$(execpath @gawk) -f $(execpath :ncurses/tinfo/MKnames.awk) bigstrings=1 $(execpath :include/Caps) > $@",
tools = ["@gawk"],
)
genrule(
name = "unctrl_c",
srcs = [
"ncurses/base/MKunctrl.awk",
],
outs = ["ncurses/unctrl.c"],
cmd = "$(execpath @gawk) -f $(execpath :ncurses/base/MKunctrl.awk) bigstrings=1 > $@",
tools = ["@gawk"],
)
cc_binary(
name = "make_keys",
srcs = [
"ncurses/build.priv.h",
"ncurses/curses.priv.h",
"ncurses/tinfo/make_keys.c",
],
copts = NCURSES_COPTS,
deps = [
":ncurses_headers",
":ncurses_textual_headers",
],
)
genrule(
name = "keys_list",
srcs = ["include/Caps"],
outs = ["keys.list"],
cmd = "$(execpath :ncurses/tinfo/MKkeys_list.sh) $(execpath :include/Caps) | LC_ALL=C sort > $@",
tools = ["ncurses/tinfo/MKkeys_list.sh"],
)
genrule(
name = "lib_keyname_c",
srcs = [
"ncurses/base/MKkeyname.awk",
"keys.list",
],
outs = ["ncurses/lib_keyname.c"],
cmd = "$(execpath @gawk) -f $(execpath :ncurses/base/MKkeyname.awk) bigstrings=1 $(execpath :keys.list) > $@",
tools = ["@gawk"],
)
automake_substitution(
name = "curses_head",
src = "include/curses.h.in",
out = "include/curses.head",
substitutions = AUTOMAKE_SUBSTITUTIONS,
)
automake_substitution(
name = "curses_dll",
src = "include/ncurses_dll.h.in",
out = "include/ncurses_dll.h",
substitutions = AUTOMAKE_SUBSTITUTIONS,
)
automake_substitution(
name = "unctrl_h",
src = "include/unctrl.h.in",
out = "include/unctrl.h",
substitutions = AUTOMAKE_SUBSTITUTIONS,
)
automake_substitution(
name = "termcap_h",
src = "include/termcap.h.in",
out = "include/termcap.h",
substitutions = AUTOMAKE_SUBSTITUTIONS,
)
genrule(
name = "curses_h",
srcs = [
"include/curses.head",
"include/curses.tail",
"include/curses.wide",
] + CAPLIST,
outs = ["include/curses.h"],
cmd = select({
"@platforms//cpu:armv7": "cat $(execpath :include/curses.head) > $@ && AWK=$(execpath @gawk) $(execpath :include/MKkey_defs.sh) " + CAPLIST_LOCATIONS + " >> $@ && cat $(execpath :include/curses.tail) >> $@",
"//conditions:default": "cat $(execpath :include/curses.head) > $@ && AWK=$(execpath @gawk) $(execpath :include/MKkey_defs.sh) " + CAPLIST_LOCATIONS + " >> $@ && cat $(execpath :include/curses.wide) $(execpath :include/curses.tail) >> $@",
}),
tools = [
"include/MKkey_defs.sh",
"@gawk",
],
)
genrule(
name = "lib_gen_c",
srcs = [
"include/curses.h",
"include/ncurses_cfg.h",
"include/ncurses_def.h",
],
outs = ["ncurses/lib_gen.c"],
cmd = "$(execpath :ncurses/base/MKlib_gen.sh) \"$(CC) -E -isystem $$(dirname $(execpath :include/ncurses_cfg.h))\" $(execpath @gawk) generated < $(execpath :include/curses.h) > $@",
toolchains = ["@rules_cc//cc:current_cc_toolchain"],
tools = [
"ncurses/base/MKlib_gen.sh",
"@gawk",
],
)
genrule(
name = "hashsize_h",
srcs = ["include/Caps"],
outs = ["include/hashsize.h"],
cmd = "$(execpath :include/MKhashsize.sh) $(execpath :include/Caps) > $@",
tools = ["include/MKhashsize.sh"],
)
genrule(
name = "init_keytry_h",
srcs = ["keys.list"],
outs = ["ncurses/init_keytry.h"],
cmd = "$(execpath :make_keys) $(execpath :keys.list) > $@",
tools = [":make_keys"],
)
automake_substitution(
name = "mkterm_h_awk",
src = "include/MKterm.h.awk.in",
out = "include/MKterm.h.awk",
substitutions = AUTOMAKE_SUBSTITUTIONS,
)
genrule(
name = "term_h",
srcs = [
"include/MKterm.h.awk",
"include/Caps",
],
outs = ["include/term.h"],
cmd = "$(execpath @gawk) -f $(execpath :include/MKterm.h.awk) $(execpath :include/Caps) > $@",
tools = ["@gawk"],
)
genrule(
name = "parametrized_h",
srcs = ["include/Caps"],
outs = ["include/parametrized.h"],
cmd = "(cd $$(dirname $(execpath :include/MKparametrized.sh)) && ./MKparametrized.sh) > $@",
tools = ["include/MKparametrized.sh"],
)
genrule(
name = "ncurses_def_h",
srcs = ["include/ncurses_defs"],
outs = ["include/ncurses_def.h"],
cmd = "(cd $$(dirname $(execpath :include/MKncurses_def.sh)) && ./MKncurses_def.sh) > $@",
tools = ["include/MKncurses_def.sh"],
)
DEFS_COMMON = [
"HAVE_LONG_FILE_NAMES",
"MIXEDCASE_FILENAMES",
"HAVE_BIG_CORE",
"PURE_TERMINFO",
"USE_HOME_TERMINFO",
"USE_ROOT_ENVIRON",
"HAVE_UNISTD_H",
"HAVE_REMOVE",
"HAVE_UNLINK",
"HAVE_LINK",
"HAVE_SYMLINK",
"USE_LINKS",
"HAVE_LANGINFO_CODESET",
"HAVE_FSEEKO",
"STDC_HEADERS",
"HAVE_SYS_TYPES_H",
"HAVE_SYS_STAT_H",
"HAVE_STDLIB_H",
"HAVE_STRING_H",
"HAVE_MEMORY_H",
"HAVE_STRINGS_H",
"HAVE_INTTYPES_H",
"HAVE_STDINT_H",
"HAVE_UNISTD_H",
"SIZEOF_SIGNED_CHAR",
"NCURSES_EXT_FUNCS",
"HAVE_ASSUME_DEFAULT_COLORS",
"HAVE_CURSES_VERSION",
"HAVE_HAS_KEY",
"HAVE_RESIZETERM",
"HAVE_RESIZE_TERM",
"HAVE_TERM_ENTRY_H",
"HAVE_USE_DEFAULT_COLORS",
"HAVE_USE_EXTENDED_NAMES",
"HAVE_USE_SCREEN",
"HAVE_USE_WINDOW",
"HAVE_WRESIZE",
"NCURSES_SP_FUNCS",
"HAVE_TPUTS_SP",
"NCURSES_EXT_PUTWIN",
"NCURSES_NO_PADDING",
"USE_SIGWINCH",
"USE_ASSUMED_COLOR",
"USE_HASHMAP",
"GCC_SCANF",
"GCC_PRINTF",
"HAVE_NC_ALLOC_H",
"HAVE_GETTIMEOFDAY",
"STDC_HEADERS",
"HAVE_DIRENT_H",
"TIME_WITH_SYS_TIME",
"HAVE_REGEX_H_FUNCS",
"HAVE_FCNTL_H",
"HAVE_GETOPT_H",
"HAVE_LIMITS_H",
"HAVE_LOCALE_H",
"HAVE_MATH_H",
"HAVE_POLL_H",
"HAVE_SYS_IOCTL_H",
"HAVE_SYS_PARAM_H",
"HAVE_SYS_POLL_H",
"HAVE_SYS_SELECT_H",
"HAVE_SYS_TIME_H",
"HAVE_SYS_TIMES_H",
"HAVE_TTYENT_H",
"HAVE_UNISTD_H",
"HAVE_WCTYPE_H",
"HAVE_UNISTD_H",
"HAVE_GETOPT_H",
"HAVE_GETOPT_HEADER",
"DECL_ENVIRON",
"HAVE_ENVIRON",
"HAVE_PUTENV",
"HAVE_SETENV",
"HAVE_STRDUP",
"HAVE_SYS_TIME_SELECT",
"HAVE_GETCWD",
"HAVE_GETEGID",
"HAVE_GETEUID",
"HAVE_GETOPT",
"HAVE_GETTTYNAM",
"HAVE_LOCALECONV",
"HAVE_POLL",
"HAVE_PUTENV",
"HAVE_REMOVE",
"HAVE_SELECT",
"HAVE_SETBUF",
"HAVE_SETBUFFER",
"HAVE_SETENV",
"HAVE_SETVBUF",
"HAVE_SIGACTION",
"HAVE_STRDUP",
"HAVE_STRSTR",
"HAVE_SYSCONF",
"HAVE_TCGETPGRP",
"HAVE_TIMES",
"HAVE_TSEARCH",
"HAVE_VSNPRINTF",
"HAVE_ISASCII",
"HAVE_NANOSLEEP",
"HAVE_TERMIO_H",
"HAVE_TERMIOS_H",
"HAVE_UNISTD_H",
"HAVE_SYS_IOCTL_H",
"HAVE_TCGETATTR",
"HAVE_VSSCANF",
"HAVE_UNISTD_H",
"HAVE_MKSTEMP",
"HAVE_SIZECHANGE",
"HAVE_WORKING_POLL",
"HAVE_VA_COPY",
"HAVE_UNISTD_H",
"HAVE_FORK",
"HAVE_VFORK",
"HAVE_WORKING_VFORK",
"HAVE_WORKING_FORK",
"USE_FOPEN_BIN_R",
"USE_XTERM_PTY",
"HAVE_TYPEINFO",
"HAVE_IOSTREAM",
"IOSTREAM_NAMESPACE",
"CPP_HAS_STATIC_CAST",
"HAVE_SLK_COLOR",
"HAVE_PANEL_H",
"HAVE_LIBPANEL",
"HAVE_MENU_H",
"HAVE_LIBMENU",
"HAVE_FORM_H",
"HAVE_LIBFORM",
"NCURSES_OSPEED_COMPAT",
"HAVE_CURSES_DATA_BOOLNAMES",
"HAVE_PUTWC",
"HAVE_BTOWC",
"HAVE_WCTOB",
"HAVE_WMEMCHR",
"HAVE_MBTOWC",
"HAVE_WCTOMB",
"HAVE_MBLEN",
"HAVE_MBRLEN",
"HAVE_MBRTOWC",
"HAVE_WCSRTOMBS",
"HAVE_MBSRTOWCS",
"HAVE_WCSTOMBS",
"HAVE_MBSTOWCS",
]
pseudo_configure(
name = "ncurses_cfg_h",
src = "include/ncurses_cfg.hin",
out = "include/ncurses_cfg.h",
defs = select({
"@platforms//cpu:armv7": DEFS_COMMON,
"//conditions:default": DEFS_COMMON + [
"HAVE_WCHAR_H",
"NEED_WCHAR_H",
"USE_WIDEC_SUPPORT",
"NCURSES_WIDECHAR",
"HAVE_WCTYPE_H",
],
}),
mappings = {
"GCC_NORETURN": "__attribute__((noreturn))",
"GCC_PRINTFLIKE(fmt,var)": "__attribute__((format(printf,fmt,var)))",
"GCC_SCANFLIKE(fmt,var)": "__attribute__((format(scanf,fmt,var)))",
"GCC_UNUSED": "__attribute__((unused))",
"NCURSES_PATCHDATE": "20200212",
"NCURSES_PATHSEP": "0x3a",
"NCURSES_VERSION": '"6.4"',
"NCURSES_VERSION_STRING": '"6.4.20221231"',
"NCURSES_WRAP_PREFIX": '"_nc_"',
"NC_CONFIG_H": "",
"PACKAGE": '"ncurses"',
"RGB_PATH": r'"\/usr\/share\/X11\/rgb.txt"',
"SIG_ATOMIC_T": "volatile sig_atomic_t",
"SYSTEM_NAME": '"linux-gnu"',
"TERMINFO": r'"\/usr\/share\/terminfo"',
"TERMINFO_DIRS": r'"\/usr\/share\/terminfo"',
"USE_OPENPTY_HEADER": "<pty.h>",
},
)