diff options
author | Uri Simchoni <uri@samba.org> | 2017-11-23 22:20:52 +0200 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2017-11-24 01:13:15 +0100 |
commit | 16cedcb173da89a9d6f8894e6ff4a42158c5c3b2 (patch) | |
tree | df484e5621123ea52a0f24e9b732ba2380ef9e58 /libcli | |
parent | 4fc4e41760af91fb1fa28f6a9a8b1ee7e4d47dbc (diff) | |
download | samba-16cedcb173da89a9d6f8894e6ff4a42158c5c3b2.tar.gz |
lib/smbreadline: detect picky compile issue with readline.h
readline.h has build issues with clang if -Wstrict-prototypes
is enabled. Detect this and also detect whether the known
workaround works.
Fix suggested by Timur I. Bakeyev <timur@freebsd.org>
cf. https://lists.gnu.org/archive/html/bug-readline/2014-04/msg00018.html
cf. https://lists.samba.org/archive/samba-technical/2017-November/123923.html
Signed-off-by: Uri Simchoni <uri@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'libcli')
-rw-r--r-- | libcli/smbreadline/wscript_configure | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/libcli/smbreadline/wscript_configure b/libcli/smbreadline/wscript_configure index b4d1be2b434..912ff53a150 100644 --- a/libcli/smbreadline/wscript_configure +++ b/libcli/smbreadline/wscript_configure @@ -7,8 +7,38 @@ for termlib in ['ncurses', 'curses', 'termcap', 'terminfo', 'termlib', 'tinfo']: conf.env['READLINE_TERMLIB'] = termlib break +# +# Check if we need to work around readline/readline.h +# deprecated declarations +# +if conf.CONFIG_SET('HAVE_READLINE_READLINE_H'): + if not conf.CHECK_CODE(''' + #include <readline/readline.h> + int main() {return 0;} + ''', + define='HAVE_WORKING_READLINE_READLINE_WITH_STRICT_PROTO', + cflags=conf.env['WERROR_CFLAGS'] + + ['-Wstrict-prototypes', + '-Werror=strict-prototypes'], + msg='for compiling <readline/readline.h> with strict prototypes', + addmain=False): + conf.CHECK_CODE(''' + #define _FUNCTION_DEF + #include <readline/readline.h> + int main() {return 0;} + ''', + cflags=conf.env['WERROR_CFLAGS'] + + ['-Wstrict-prototypes', + '-Werror=strict-prototypes'], + msg='for workaround to <readline/readline.h> strict prototypes issue', + define='HAVE_READLINE_READLINE_WORKAROUND', + addmain=False) + conf.CHECK_CODE(''' #ifdef HAVE_READLINE_READLINE_H +# ifdef HAVE_READLINE_READLINE_WORKAROUND +# define _FUNCTION_DEF +# endif # include <readline/readline.h> # ifdef HAVE_READLINE_HISTORY_H # include <readline/history.h> @@ -28,6 +58,9 @@ msg='Checking for rl_completion_t') conf.CHECK_CODE(''' #ifdef HAVE_READLINE_READLINE_H +# ifdef HAVE_READLINE_READLINE_WORKAROUND +# define _FUNCTION_DEF +# endif # include <readline/readline.h> # ifdef HAVE_READLINE_HISTORY_H # include <readline/history.h> |