Skip to content
  • Peter Maydell's avatar
    b01a4fd3
    configure: Define NCURSES_WIDECHAR if we're using curses · b01a4fd3
    Peter Maydell authored
    
    
    We want the wide character functions from the ncurses header.
    Unfortunately it doesn't provide them by default, but only
    if either:
     * NCURSES_WIDECHAR is defined (for ncurses 20111030 and up)
     * _XOPEN_SOURCE/_XOPEN_SOURCE_EXTENDED are suitably defined
    
    So far we have been implicitly relying on the latter, because
    for GNU libc when we define _GNU_SOURCE this causes libc
    to define the _XOPEN_SOURCE macros for us. Unfortunately
    this doesn't work on all libcs, because some (like OSX and
    musl libc) do not define _XOPEN_SOURCE when _GNU_SOURCE
    is defined.
    
    We can't fix this by defining _XOPEN_SOURCE ourselves, because
    that also means "and don't provide any functions that aren't in
    that standard", and not all libcs provide any way to override
    that to also get the non-standard functions. In particular
    FreeBSD has no such mechanism, and OSX's _DARWIN_C_SOURCE
    doesn't reenable everything (for instance getpagesize()
    is still not prototyped if _DARWIN_C_SOURCE and _XOPEN_SOURCE
    are both defined).
    
    So we have to define NCURSES_WIDECHAR. (This will only work
    if your ncurses is at least 20111030, as older versions
    don't honour this macro.)
    
    Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
    Acked-by: default avatarLaszlo Ersek <lersek@redhat.com>
    Message-id: 1496414138-7622-1-git-send-email-peter.maydell@linaro.org
    b01a4fd3
    configure: Define NCURSES_WIDECHAR if we're using curses
    Peter Maydell authored
    
    
    We want the wide character functions from the ncurses header.
    Unfortunately it doesn't provide them by default, but only
    if either:
     * NCURSES_WIDECHAR is defined (for ncurses 20111030 and up)
     * _XOPEN_SOURCE/_XOPEN_SOURCE_EXTENDED are suitably defined
    
    So far we have been implicitly relying on the latter, because
    for GNU libc when we define _GNU_SOURCE this causes libc
    to define the _XOPEN_SOURCE macros for us. Unfortunately
    this doesn't work on all libcs, because some (like OSX and
    musl libc) do not define _XOPEN_SOURCE when _GNU_SOURCE
    is defined.
    
    We can't fix this by defining _XOPEN_SOURCE ourselves, because
    that also means "and don't provide any functions that aren't in
    that standard", and not all libcs provide any way to override
    that to also get the non-standard functions. In particular
    FreeBSD has no such mechanism, and OSX's _DARWIN_C_SOURCE
    doesn't reenable everything (for instance getpagesize()
    is still not prototyped if _DARWIN_C_SOURCE and _XOPEN_SOURCE
    are both defined).
    
    So we have to define NCURSES_WIDECHAR. (This will only work
    if your ncurses is at least 20111030, as older versions
    don't honour this macro.)
    
    Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
    Acked-by: default avatarLaszlo Ersek <lersek@redhat.com>
    Message-id: 1496414138-7622-1-git-send-email-peter.maydell@linaro.org
Loading