| fix static link with readline |
| |
| When readline is static library, we need to link against ncurses |
| because readline needs ncurses. It is because, dependent library's |
| symbols are not resolved when static library is built. Those symbols |
| are resolved program tries to link with static library. |
| |
| We can't pass linker flags for ncurses by setting LIBS environment |
| variable via <PKG>_CONF_ENV because it looks like build system is not |
| taking that into account and even though it would have been, order of |
| linking is important. |
| |
| We can't also pass linker flags for ncurses via --with-readline-libs |
| conf options because it causes lftp_LIB_READLINE macro to take readline |
| headers from host machine if available. To use --with-readline-libs |
| we need to set --with-readline=yes and --with-readline-inc to include |
| dir. But when --with-readline=yes, readline_prefix is computed based |
| on if headers can be found in /usr/local or /usr. If readline is |
| installed on host machine, then configure fails since we are using |
| headers for host machine. If headers are not found in /usr/local or /usr |
| then only path specified --with-readline-inc is taken into account. |
| So specifying linker flags for ncurses via --with-readline-libs will |
| not work in all cases. |
| |
| So it looks like, updating linker flags directly is only option to fix |
| static link issue against readline. |
| |
| Signed-off-by: Rahul Bedarkar <rahul.bedarkar@imgtec.com> |
| |
| --- lftp-4.7.3/m4/lftp_lib_readline.m4.old 2016-08-08 19:49:12.217596470 +0530 |
| +++ lftp-4.7.3/m4/lftp_lib_readline.m4 2016-08-08 19:49:46.265596398 +0530 |
| @@ -108,7 +108,7 @@ AC_DEFUN([lftp_LIB_READLINE], |
| readline_include_dir="$readline_include_dir/readline" |
| fi |
| readline_ld_flags="-L$readline_prefix/lib" |
| - readline_lib_flags="-lreadline" |
| + readline_lib_flags="-lreadline -lncurses" |
| run_readline_test="yes" |
| elif test "$readline_requested" = "yes"; then |
| if test -n "$readline_include_dir" -a -n "$readline_lib_flags"; then |