diff --git a/menuselect/Makefile b/menuselect/Makefile index d949efd5597d9a5a1bfaa369580d207f12f0c800..da4a6c080e27c31bea801b70c45e6a598551dd97 100644 --- a/menuselect/Makefile +++ b/menuselect/Makefile @@ -41,6 +41,10 @@ ifdef NCURSES_LIB C_LIBS +=$(NCURSES_LIB) C_INCLUDE += $(NCURSES_INCLUDE) ALL_TGTS += cmenuselect + CFLAGS += -DHAVE_NCURSES + ifeq ($(HAVE_NCURSES_SUBDIR),yes) + CFLAGS += -DHAVE_NCURSES_SUBDIR + endif else ifdef CURSES_LIB C_OBJS += menuselect_curses.o diff --git a/menuselect/configure b/menuselect/configure index 7cbe477569fb060aae4caa7067fac399f0008173..8efb6372e82920e98f39891d12b5d635668c224a 100755 --- a/menuselect/configure +++ b/menuselect/configure @@ -634,6 +634,7 @@ PKG_CONFIG_PATH PKG_CONFIG CONFIG_LIBXML2 SED +HAVE_NCURSES_SUBDIR PBX_LIBXML2 LIBXML2_DIR LIBXML2_INCLUDE @@ -4012,26 +4013,26 @@ fi -if test "x${PBX_CURSES}" != "x1" -a "${USE_CURSES}" != "no"; then +if test "x${PBX_NCURSES}" != "x1" -a "${USE_NCURSES}" != "no"; then pbxlibdir="" - # if --with-CURSES=DIR has been specified, use it. - if test "x${CURSES_DIR}" != "x"; then - if test -d ${CURSES_DIR}/lib; then - pbxlibdir="-L${CURSES_DIR}/lib" + # if --with-NCURSES=DIR has been specified, use it. + if test "x${NCURSES_DIR}" != "x"; then + if test -d ${NCURSES_DIR}/lib; then + pbxlibdir="-L${NCURSES_DIR}/lib" else - pbxlibdir="-L${CURSES_DIR}" + pbxlibdir="-L${NCURSES_DIR}" fi fi ast_ext_lib_check_save_CFLAGS="${CFLAGS}" CFLAGS="${CFLAGS} " - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for initscr in -lcurses" >&5 -$as_echo_n "checking for initscr in -lcurses... " >&6; } -if ${ac_cv_lib_curses_initscr+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for initscr in -lncurses" >&5 +$as_echo_n "checking for initscr in -lncurses... " >&6; } +if ${ac_cv_lib_ncurses_initscr+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS -LIBS="-lcurses ${pbxlibdir} $LIBS" +LIBS="-lncurses ${pbxlibdir} $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -4051,55 +4052,55 @@ return initscr (); } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_curses_initscr=yes + ac_cv_lib_ncurses_initscr=yes else - ac_cv_lib_curses_initscr=no + ac_cv_lib_ncurses_initscr=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_initscr" >&5 -$as_echo "$ac_cv_lib_curses_initscr" >&6; } -if test "x$ac_cv_lib_curses_initscr" = xyes; then : - AST_CURSES_FOUND=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_initscr" >&5 +$as_echo "$ac_cv_lib_ncurses_initscr" >&6; } +if test "x$ac_cv_lib_ncurses_initscr" = xyes; then : + AST_NCURSES_FOUND=yes else - AST_CURSES_FOUND=no + AST_NCURSES_FOUND=no fi CFLAGS="${ast_ext_lib_check_save_CFLAGS}" # now check for the header. - if test "${AST_CURSES_FOUND}" = "yes"; then - CURSES_LIB="${pbxlibdir} -lcurses " - # if --with-CURSES=DIR has been specified, use it. - if test "x${CURSES_DIR}" != "x"; then - CURSES_INCLUDE="-I${CURSES_DIR}/include" + if test "${AST_NCURSES_FOUND}" = "yes"; then + NCURSES_LIB="${pbxlibdir} -lncurses " + # if --with-NCURSES=DIR has been specified, use it. + if test "x${NCURSES_DIR}" != "x"; then + NCURSES_INCLUDE="-I${NCURSES_DIR}/include" fi - CURSES_INCLUDE="${CURSES_INCLUDE} " + NCURSES_INCLUDE="${NCURSES_INCLUDE} " # check for the header ast_ext_lib_check_saved_CPPFLAGS="${CPPFLAGS}" - CPPFLAGS="${CPPFLAGS} ${CURSES_INCLUDE}" - ac_fn_c_check_header_mongrel "$LINENO" "curses.h" "ac_cv_header_curses_h" "$ac_includes_default" -if test "x$ac_cv_header_curses_h" = xyes; then : - CURSES_HEADER_FOUND=1 + CPPFLAGS="${CPPFLAGS} ${NCURSES_INCLUDE}" + ac_fn_c_check_header_mongrel "$LINENO" "ncurses.h" "ac_cv_header_ncurses_h" "$ac_includes_default" +if test "x$ac_cv_header_ncurses_h" = xyes; then : + NCURSES_HEADER_FOUND=1 else - CURSES_HEADER_FOUND=0 + NCURSES_HEADER_FOUND=0 fi CPPFLAGS="${ast_ext_lib_check_saved_CPPFLAGS}" - if test "x${CURSES_HEADER_FOUND}" = "x0" ; then - CURSES_LIB="" - CURSES_INCLUDE="" + if test "x${NCURSES_HEADER_FOUND}" = "x0" ; then + NCURSES_LIB="" + NCURSES_INCLUDE="" else - PBX_CURSES=1 + PBX_NCURSES=1 cat >>confdefs.h <<_ACEOF -#define HAVE_CURSES 1 +#define HAVE_NCURSES 1 _ACEOF fi @@ -4107,6 +4108,8 @@ _ACEOF fi +if test "${PBX_NCURSES}" != 1; then + # some platforms have the header in a sub-directory, for example Solaris if test "x${PBX_NCURSES}" != "x1" -a "${USE_NCURSES}" != "no"; then pbxlibdir="" @@ -4178,8 +4181,8 @@ fi # check for the header ast_ext_lib_check_saved_CPPFLAGS="${CPPFLAGS}" CPPFLAGS="${CPPFLAGS} ${NCURSES_INCLUDE}" - ac_fn_c_check_header_mongrel "$LINENO" "curses.h" "ac_cv_header_curses_h" "$ac_includes_default" -if test "x$ac_cv_header_curses_h" = xyes; then : + ac_fn_c_check_header_mongrel "$LINENO" "ncurses/ncurses.h" "ac_cv_header_ncurses_ncurses_h" "$ac_includes_default" +if test "x$ac_cv_header_ncurses_ncurses_h" = xyes; then : NCURSES_HEADER_FOUND=1 else NCURSES_HEADER_FOUND=0 @@ -4203,6 +4206,108 @@ _ACEOF fi + if test "${PBX_NCURSES}" != 1; then + +if test "x${PBX_CURSES}" != "x1" -a "${USE_CURSES}" != "no"; then + pbxlibdir="" + # if --with-CURSES=DIR has been specified, use it. + if test "x${CURSES_DIR}" != "x"; then + if test -d ${CURSES_DIR}/lib; then + pbxlibdir="-L${CURSES_DIR}/lib" + else + pbxlibdir="-L${CURSES_DIR}" + fi + fi + + ast_ext_lib_check_save_CFLAGS="${CFLAGS}" + CFLAGS="${CFLAGS} " + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for initscr in -lcurses" >&5 +$as_echo_n "checking for initscr in -lcurses... " >&6; } +if ${ac_cv_lib_curses_initscr+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcurses ${pbxlibdir} $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char initscr (); +int +main () +{ +return initscr (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_curses_initscr=yes +else + ac_cv_lib_curses_initscr=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_initscr" >&5 +$as_echo "$ac_cv_lib_curses_initscr" >&6; } +if test "x$ac_cv_lib_curses_initscr" = xyes; then : + AST_CURSES_FOUND=yes +else + AST_CURSES_FOUND=no +fi + + CFLAGS="${ast_ext_lib_check_save_CFLAGS}" + + + # now check for the header. + if test "${AST_CURSES_FOUND}" = "yes"; then + CURSES_LIB="${pbxlibdir} -lcurses " + # if --with-CURSES=DIR has been specified, use it. + if test "x${CURSES_DIR}" != "x"; then + CURSES_INCLUDE="-I${CURSES_DIR}/include" + fi + CURSES_INCLUDE="${CURSES_INCLUDE} " + + # check for the header + ast_ext_lib_check_saved_CPPFLAGS="${CPPFLAGS}" + CPPFLAGS="${CPPFLAGS} ${CURSES_INCLUDE}" + ac_fn_c_check_header_mongrel "$LINENO" "curses.h" "ac_cv_header_curses_h" "$ac_includes_default" +if test "x$ac_cv_header_curses_h" = xyes; then : + CURSES_HEADER_FOUND=1 +else + CURSES_HEADER_FOUND=0 +fi + + + CPPFLAGS="${ast_ext_lib_check_saved_CPPFLAGS}" + + if test "x${CURSES_HEADER_FOUND}" = "x0" ; then + CURSES_LIB="" + CURSES_INCLUDE="" + else + + PBX_CURSES=1 + cat >>confdefs.h <<_ACEOF +#define HAVE_CURSES 1 +_ACEOF + + fi + fi +fi + + + else + HAVE_NCURSES_SUBDIR=yes + fi +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : diff --git a/menuselect/configure.ac b/menuselect/configure.ac index 4a2d0acc29f498bcccdac0d2a6d2a400d325d8f9..e2ae2cb47e5d31ac032f7350636e00148013ecea 100644 --- a/menuselect/configure.ac +++ b/menuselect/configure.ac @@ -67,8 +67,17 @@ AST_EXT_LIB_SETUP([NCURSES], [ncurses], [ncurses]) AST_EXT_LIB_SETUP([LIBXML2], [LibXML2], [libxml2]) AST_EXT_LIB_CHECK([NEWT], [newt], [newtBell], [newt.h]) -AST_EXT_LIB_CHECK([CURSES], [curses], [initscr], [curses.h]) -AST_EXT_LIB_CHECK([NCURSES], [ncurses], [initscr], [curses.h]) +AST_EXT_LIB_CHECK([NCURSES], [ncurses], [initscr], [ncurses.h]) +if test "${PBX_NCURSES}" != 1; then + # some platforms have the header in a sub-directory, for example Solaris + AST_EXT_LIB_CHECK([NCURSES], [ncurses], [initscr], [ncurses/ncurses.h]) + if test "${PBX_NCURSES}" != 1; then + AST_EXT_LIB_CHECK([CURSES], [curses], [initscr], [curses.h]) + else + HAVE_NCURSES_SUBDIR=yes + fi +fi +AC_SUBST(HAVE_NCURSES_SUBDIR) AST_EXT_TOOL_CHECK([LIBXML2], [xml2-config], , , [#include <libxml/tree.h> #include <libxml/parser.h>], diff --git a/menuselect/makeopts.in b/menuselect/makeopts.in index 495555d6b61f3128620091c2e0341096e26a2e87..efafbabfd3364e854c77bbc94bdb1c1bc98f3e9f 100644 --- a/menuselect/makeopts.in +++ b/menuselect/makeopts.in @@ -17,6 +17,7 @@ GTK2_LIB=@GTK2_LIB@ NCURSES_INCLUDE=@NCURSES_INCLUDE@ NCURSES_LIB=@NCURSES_LIB@ +HAVE_NCURSES_SUBDIR=@HAVE_NCURSES_SUBDIR@ NEWT_INCLUDE=@NEWT_INCLUDE@ NEWT_LIB=@NEWT_LIB@ diff --git a/menuselect/menuselect_curses.c b/menuselect/menuselect_curses.c index 0917eba62b1b46c411758ea4cf88e5b1b3142e05..fe42119db6354b85ba759ac342f1f0280fdd702d 100644 --- a/menuselect/menuselect_curses.c +++ b/menuselect/menuselect_curses.c @@ -31,7 +31,15 @@ #include <string.h> #include <signal.h> #include <time.h> +#ifdef HAVE_NCURSES +#ifdef HAVE_NCURSES_SUBDIR +#include <ncurses/ncurses.h> +#else +#include <ncurses.h> +#endif +#else #include <curses.h> +#endif #include "menuselect.h"