From: Jens Vollinga Date: Mon, 5 Feb 2007 20:11:40 +0000 (+0000) Subject: Synced to ginac_1-3: X-Git-Tag: release_1-4-0~34 X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=commitdiff_plain;h=2ceece87ee96c370cfcd2408d069d1fd913792ab;ds=sidebyside Synced to ginac_1-3: Fixed libreadline version detection [A.Sheplyakov] --- diff --git a/INSTALL b/INSTALL index 8d0b703c..2c60d2d3 100644 --- a/INSTALL +++ b/INSTALL @@ -104,12 +104,13 @@ install CLN properly on your system before continuing with GiNaC. Problems building ginsh ----------------------- -The most common reason why this doesn't succeed is the absence of +The most common reason why this doesn't succeed is the absence of GNU libreadline and/or the corresponding header files. Depending on what your system/distribution is, you will have to install a package called libreadline and maybe libreadline-dev. If your system's vendor doesn't supply such packages, go to and compile -it yourself. +it yourself. Note that non-GNU versions of libreadline (in particular +one shipped with Mac OS X) are not supported at the moment. Problems with missing standard header files ------------------------------------------- diff --git a/acinclude.m4 b/acinclude.m4 index 45ea8dae..11c80399 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -24,8 +24,15 @@ int main() fprintf(fd, "%s\n", rl_library_version); fclose(fd); return 0; -}], ginac_cv_rlversion=`cat 'conftest.out'`, ginac_cv_rlversion='unknown', ginac_cv_rlversion='4.2')]) +}], [ +dnl Some non-GNU readline implementations have non-numeric rl_library_version +ginac_cv_rlversion=`sed -e 's/[^0-9.]//g' 'conftest.out'`], [ ginac_cv_rlversion='unknown'], [ ginac_cv_rlversion='4.2'])]) +if test -z "$ginac_cv_rlversion"; then + GINAC_WARNING([Unsupported version of libreadline.]) + ginac_cv_rlversion='unknown' +fi if test "x${ginac_cv_rlversion}" != "xunknown"; then + AC_DEFINE(REALLY_HAVE_LIBREADLINE, ,[Define if GNU libreadline is installed]) RL_VERSION_MAJOR=`echo ${ginac_cv_rlversion} | sed -e 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'` AC_DEFINE_UNQUOTED(GINAC_RL_VERSION_MAJOR, $RL_VERSION_MAJOR, [Major version of installed readline library.]) RL_VERSION_MINOR=`echo ${ginac_cv_rlversion} | sed -e 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'` diff --git a/ginsh/ginsh_parser.yy b/ginsh/ginsh_parser.yy index f2aba693..ae55f4c8 100644 --- a/ginsh/ginsh_parser.yy +++ b/ginsh/ginsh_parser.yy @@ -45,6 +45,7 @@ #define YYERROR_VERBOSE 1 +#ifdef REALLY_HAVE_LIBREADLINE // Original readline settings static int orig_completion_append_character; #if (GINAC_RL_VERSION_MAJOR < 4) || (GINAC_RL_VERSION_MAJOR == 4 && GINAC_RL_VERSION_MINOR < 2) @@ -58,6 +59,7 @@ static const char *orig_basic_word_break_characters; #else #define GINAC_RL_COMPLETER_CAST(a) (a) #endif +#endif // REALLY_HAVE_LIBREADLINE // Expression stack for %, %% and %%% static void push(const ex &e); @@ -850,6 +852,7 @@ static char *fcn_generator(const char *text, int state) return NULL; } +#ifdef REALLY_HAVE_LIBREADLINE static char **fcn_completion(const char *text, int start, int end) { if (rl_line_buffer[0] == '!') { @@ -874,6 +877,7 @@ static char **fcn_completion(const char *text, int start, int end) #endif } } +#endif // REALLY_HAVE_LIBREADLINE void greeting(void) { @@ -917,6 +921,7 @@ int main(int argc, char **argv) insert_help("print_latex", "print_latex(expression) - prints a LaTeX representation of the given expression"); insert_help("print_csrc", "print_csrc(expression) - prints a C source code representation of the given expression"); +#ifdef REALLY_HAVE_LIBREADLINE // Init readline completer rl_readline_name = argv[0]; #if (GINAC_RL_VERSION_MAJOR < 4) || (GINAC_RL_VERSION_MAJOR == 4 && GINAC_RL_VERSION_MINOR < 2) @@ -926,6 +931,7 @@ int main(int argc, char **argv) #endif orig_completion_append_character = rl_completion_append_character; orig_basic_word_break_characters = rl_basic_word_break_characters; +#endif // Init input file list, open first file num_files = argc - 1;