diff --git a/ProvideCurses.h b/ProvideCurses.h index 7ae99e620..4594e3baf 100644 --- a/ProvideCurses.h +++ b/ProvideCurses.h @@ -8,7 +8,11 @@ in the source distribution for its full text. */ +// This header is also used in tests by configure, thus conditionally +// including "config.h". +#if defined(HAVE_CONFIG_H) #include "config.h" // IWYU pragma: keep +#endif // IWYU pragma: begin_exports diff --git a/configure.ac b/configure.ac index b5c5f40d1..4bf9ecea9 100644 --- a/configure.ac +++ b/configure.ac @@ -662,6 +662,7 @@ esac htop_save_CFLAGS=$CFLAGS CFLAGS="$AM_CFLAGS $CFLAGS" + if test "x$enable_unicode" = xyes; then AC_CHECK_HEADERS([ncursesw/curses.h], [], [AC_CHECK_HEADERS([ncurses/ncurses.h], [], @@ -684,6 +685,31 @@ else [AC_CHECK_HEADERS([term.h], [], [AC_MSG_ERROR([can not find required term header file])])]) fi + +CFLAGS="-I$srcdir $CFLAGS" + +# Check for things that might be macros. +# "stdscr" is a macro in ncursest (reentrant version of ncurses). +AC_MSG_CHECKING([whether the curses header works]) +AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#include "ProvideCurses.h" + ]], [[ +keypad(stdscr, 0); + +refresh(); + +#if defined(HAVE_LIBNCURSESW) +{ + static cchar_t dummy; + mvadd_wchnstr(0, 0, &dummy, 0); +} +#endif + ]])], + [AC_MSG_RESULT(yes)], + [AC_MSG_RESULT(no) + AC_MSG_FAILURE([there are problems with the curses header])] +) + CFLAGS=$htop_save_CFLAGS if test "$enable_static" = yes; then