diff --git a/src/auto/configure b/src/auto/configure index cea29f709a..fcff4f19c6 100755 --- a/src/auto/configure +++ b/src/auto/configure @@ -6535,16 +6535,16 @@ if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then { echo "$as_me:$LINENO: checking --with-ruby-command argument" >&5 echo $ECHO_N "checking --with-ruby-command argument... $ECHO_C" >&6; } + # Check whether --with-ruby-command was given. if test "${with_ruby_command+set}" = set; then - withval=$with_ruby_command; RUBY_CMD="$withval"; { echo "$as_me:$LINENO: result: $RUBY_CMD" >&5 + withval=$with_ruby_command; RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; { echo "$as_me:$LINENO: result: $RUBY_CMD" >&5 echo "${ECHO_T}$RUBY_CMD" >&6; } else RUBY_CMD="ruby"; { echo "$as_me:$LINENO: result: defaulting to $RUBY_CMD" >&5 echo "${ECHO_T}defaulting to $RUBY_CMD" >&6; } fi - # Extract the first word of "$RUBY_CMD", so it can be a program name with args. set dummy $RUBY_CMD; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 @@ -6609,21 +6609,15 @@ echo "${ECHO_T}$rubyhdrdir" >&6; } RUBY_LIBS="$rubylibs" fi librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["LIBRUBYARG"])'` - if test -f "$rubyhdrdir/$librubyarg"; then - librubyarg="$rubyhdrdir/$librubyarg" - else - rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["libdir"])'` - if test -d "/System/Library/Frameworks/Ruby.framework"; then + librubya=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["LIBRUBY_A"])'` + rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["libdir"])'` + if test -f "$rubylibdir/$librubya"; then + librubyarg="$librubyarg" + RUBY_LIBS="$RUBY_LIBS -L$rubylibdir" + elif test -d "/System/Library/Frameworks/Ruby.framework"; then RUBY_LIBS="-framework Ruby" RUBY_CFLAGS= librubyarg= - elif test -f "$rubylibdir/$librubyarg"; then - librubyarg="$rubylibdir/$librubyarg" - elif test "$librubyarg" = "libruby.a"; then - librubyarg="-lruby" - else - librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"` - fi fi if test "X$librubyarg" != "X"; then diff --git a/src/configure b/src/configure index 2fea6d9317..d0974a1633 100755 --- a/src/configure +++ b/src/configure @@ -757,6 +757,7 @@ MSGFMT MAKEMO XCODEFLAGS DEPEND_CFLAGS_FILTER +LINK_AS_NEEDED LIBOBJS LTLIBOBJS' ac_subst_files='' @@ -1349,10 +1350,10 @@ Optional Features: --enable-luainterp=OPTS Include Lua interpreter. default=no OPTS=no/yes/dynamic --enable-mzschemeinterp Include MzScheme interpreter. --enable-perlinterp=OPTS Include Perl interpreter. default=no OPTS=no/yes/dynamic - --enable-pythoninterp Include Python interpreter. - --enable-python3interp Include Python3 interpreter. + --enable-pythoninterp=OPTS Include Python interpreter. default=no OPTS=no/yes/dynamic + --enable-python3interp=OPTS Include Python3 interpreter. default=no OPTS=no/yes/dynamic --enable-tclinterp Include Tcl interpreter. - --enable-rubyinterp Include Ruby interpreter. + --enable-rubyinterp=OPTS Include Ruby interpreter. default=no OPTS=no/yes/dynamic --enable-cscope Include cscope interface. --enable-workshop Include Sun Visual Workshop support. --disable-netbeans Disable NetBeans integration support. @@ -4970,16 +4971,36 @@ echo "${ECHO_T}yes" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } - { echo "$as_me:$LINENO: checking if scheme.h can be found in /usr/include/plt/" >&5 -echo $ECHO_N "checking if scheme.h can be found in /usr/include/plt/... $ECHO_C" >&6; } - if test -f /usr/include/plt/scheme.h; then + { echo "$as_me:$LINENO: checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket" >&5 +echo $ECHO_N "checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket... $ECHO_C" >&6; } + if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } - SCHEME_INC=/usr/include/plt + SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } - vi_cv_path_mzscheme_pfx= + { echo "$as_me:$LINENO: checking if scheme.h can be found in /usr/include/plt/" >&5 +echo $ECHO_N "checking if scheme.h can be found in /usr/include/plt/... $ECHO_C" >&6; } + if test -f /usr/include/plt/scheme.h; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + SCHEME_INC=/usr/include/plt + else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } + { echo "$as_me:$LINENO: checking if scheme.h can be found in /usr/include/racket/" >&5 +echo $ECHO_N "checking if scheme.h can be found in /usr/include/racket/... $ECHO_C" >&6; } + if test -f /usr/include/racket/scheme.h; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + SCHEME_INC=/usr/include/racket + else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } + vi_cv_path_mzscheme_pfx= + fi + fi fi fi fi @@ -4991,12 +5012,22 @@ echo "${ECHO_T}no" >&6; } elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a" MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" - elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then + elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then + MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a" + MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" + elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then + MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a" + elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a" else if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m" MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" + elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then + MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m" + MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" + elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then + MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc" else MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc" fi @@ -5009,10 +5040,20 @@ echo "${ECHO_T}no" >&6; } fi if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then SCHEME_COLLECTS=lib/plt/ + else + if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then + SCHEME_COLLECTS=lib/racket/ + fi fi if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then - MZSCHEME_EXTRA="mzscheme_base.c" - MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE" + MZSCHEME_EXTRA="mzscheme_base.c" + else + if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then + MZSCHEME_EXTRA="mzscheme_base.c" + fi + fi + if test "X$MZSCHEME_EXTRA" != "X" ; then + MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE" MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc" fi MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \ @@ -5262,7 +5303,7 @@ fi { echo "$as_me:$LINENO: result: $enable_pythoninterp" >&5 echo "${ECHO_T}$enable_pythoninterp" >&6; } -if test "$enable_pythoninterp" = "yes"; then +if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then # Extract the first word of "python", so it can be a program name with args. set dummy python; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 @@ -5429,9 +5470,9 @@ fi PYTHON_LIBS="${vi_cv_path_python_plibs}" if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then - PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}" + PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\"" else - PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version}" + PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\"" fi PYTHON_SRC="if_python.c" if test "x$MACOSX" = "xyes"; then @@ -5442,7 +5483,7 @@ fi if test "${vi_cv_var_python_version}" = "1.4"; then PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o" fi - PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'" + PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'" { echo "$as_me:$LINENO: checking if -pthread should be used" >&5 echo $ECHO_N "checking if -pthread should be used... $ECHO_C" >&6; } @@ -5612,7 +5653,7 @@ fi { echo "$as_me:$LINENO: result: $enable_python3interp" >&5 echo "${ECHO_T}$enable_python3interp" >&6; } -if test "$enable_python3interp" = "yes"; then +if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then # Extract the first word of "python3", so it can be a program name with args. set dummy python3; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 @@ -5763,9 +5804,9 @@ fi PYTHON3_LIBS="${vi_cv_path_python3_plibs}" if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then - PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}" + PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" else - PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}" + PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\"" fi PYTHON3_SRC="if_python3.c" if test "x$MACOSX" = "xyes"; then @@ -5842,8 +5883,8 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ echo "${ECHO_T}no" >&6; } fi - { echo "$as_me:$LINENO: checking if compile and link flags for Python are sane" >&5 -echo $ECHO_N "checking if compile and link flags for Python are sane... $ECHO_C" >&6; } + { echo "$as_me:$LINENO: checking if compile and link flags for Python 3 are sane" >&5 +echo $ECHO_N "checking if compile and link flags for Python 3 are sane... $ECHO_C" >&6; } cflags_save=$CFLAGS libs_save=$LIBS CFLAGS="$CFLAGS $PYTHON3_CFLAGS" @@ -5926,10 +5967,211 @@ _ACEOF #define DYNAMIC_PYTHON3 1 _ACEOF + { echo "$as_me:$LINENO: checking whether we can do without RTLD_GLOBAL for Python" >&5 +echo $ECHO_N "checking whether we can do without RTLD_GLOBAL for Python... $ECHO_C" >&6; } + cflags_save=$CFLAGS + CFLAGS="$CFLAGS $PYTHON_CFLAGS" + ldflags_save=$LDFLAGS + LDFLAGS="$LDFLAGS -ldl" + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF + + #include + /* If this program fails, then RTLD_GLOBAL is needed. + * RTLD_GLOBAL will be used and then it is not possible to + * have both python versions enabled in the same vim instance. + * Only the first pyhton version used will be switched on. + */ + + int no_rtl_global_needed_for(char *python_instsoname, char *prefix) + { + int needed = 0; + void* pylib = dlopen(python_instsoname, RTLD_LAZY); + if (pylib != 0) + { + void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome"); + void (*init)(void) = dlsym(pylib, "Py_Initialize"); + int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString"); + void (*final)(void) = dlsym(pylib, "Py_Finalize"); + (*pfx)(prefix); + (*init)(); + needed = (*simple)("import termios") == -1; + (*final)(); + dlclose(pylib); + } + return !needed; + } + + int main(int argc, char** argv) + { + int not_needed = 0; + if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}")) + not_needed = 1; + return !not_needed; + } +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; };cat >>confdefs.h <<\_ACEOF +#define PY_NO_RTLD_GLOBAL 1 +_ACEOF + +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + + + CFLAGS=$cflags_save + LDFLAGS=$ldflags_save + + { echo "$as_me:$LINENO: checking whether we can do without RTLD_GLOBAL for Python3" >&5 +echo $ECHO_N "checking whether we can do without RTLD_GLOBAL for Python3... $ECHO_C" >&6; } + cflags_save=$CFLAGS + CFLAGS="$CFLAGS $PYTHON3_CFLAGS" + ldflags_save=$LDFLAGS + LDFLAGS="$LDFLAGS -ldl" + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF + + #include + #include + /* If this program fails, then RTLD_GLOBAL is needed. + * RTLD_GLOBAL will be used and then it is not possible to + * have both python versions enabled in the same vim instance. + * Only the first pyhton version used will be switched on. + */ + + int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix) + { + int needed = 0; + void* pylib = dlopen(python_instsoname, RTLD_LAZY); + if (pylib != 0) + { + void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome"); + void (*init)(void) = dlsym(pylib, "Py_Initialize"); + int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString"); + void (*final)(void) = dlsym(pylib, "Py_Finalize"); + (*pfx)(prefix); + (*init)(); + needed = (*simple)("import termios") == -1; + (*final)(); + dlclose(pylib); + } + return !needed; + } + + int main(int argc, char** argv) + { + int not_needed = 0; + if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}")) + not_needed = 1; + return !not_needed; + } +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; };cat >>confdefs.h <<\_ACEOF +#define PY3_NO_RTLD_GLOBAL 1 +_ACEOF + +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + + + CFLAGS=$cflags_save + LDFLAGS=$ldflags_save + PYTHON_SRC="if_python.c" PYTHON_OBJ="objects/if_python.o" PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\"" PYTHON_LIBS= + PYTHON3_SRC="if_python3.c" + PYTHON3_OBJ="objects/if_python3.o" + PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\"" + PYTHON3_LIBS= +elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then + cat >>confdefs.h <<\_ACEOF +#define DYNAMIC_PYTHON 1 +_ACEOF + + PYTHON_SRC="if_python.c" + PYTHON_OBJ="objects/if_python.o" + PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\"" + PYTHON_LIBS= +elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then + cat >>confdefs.h <<\_ACEOF +#define DYNAMIC_PYTHON3 1 +_ACEOF + PYTHON3_SRC="if_python3.c" PYTHON3_OBJ="objects/if_python3.o" PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\"" @@ -6289,20 +6531,20 @@ fi { echo "$as_me:$LINENO: result: $enable_rubyinterp" >&5 echo "${ECHO_T}$enable_rubyinterp" >&6; } -if test "$enable_rubyinterp" = "yes"; then +if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then { echo "$as_me:$LINENO: checking --with-ruby-command argument" >&5 echo $ECHO_N "checking --with-ruby-command argument... $ECHO_C" >&6; } + # Check whether --with-ruby-command was given. if test "${with_ruby_command+set}" = set; then - withval=$with_ruby_command; RUBY_CMD="$withval"; { echo "$as_me:$LINENO: result: $RUBY_CMD" >&5 + withval=$with_ruby_command; RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; { echo "$as_me:$LINENO: result: $RUBY_CMD" >&5 echo "${ECHO_T}$RUBY_CMD" >&6; } else RUBY_CMD="ruby"; { echo "$as_me:$LINENO: result: defaulting to $RUBY_CMD" >&5 echo "${ECHO_T}defaulting to $RUBY_CMD" >&6; } fi - # Extract the first word of "$RUBY_CMD", so it can be a program name with args. set dummy $RUBY_CMD; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 @@ -6367,21 +6609,15 @@ echo "${ECHO_T}$rubyhdrdir" >&6; } RUBY_LIBS="$rubylibs" fi librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["LIBRUBYARG"])'` - if test -f "$rubyhdrdir/$librubyarg"; then - librubyarg="$rubyhdrdir/$librubyarg" - else - rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["libdir"])'` - if test -d "/System/Library/Frameworks/Ruby.framework"; then + librubya=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["LIBRUBY_A"])'` + rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG["libdir"])'` + if test -f "$rubylibdir/$librubya"; then + librubyarg="$librubyarg" + RUBY_LIBS="$RUBY_LIBS -L$rubylibdir" + elif test -d "/System/Library/Frameworks/Ruby.framework"; then RUBY_LIBS="-framework Ruby" RUBY_CFLAGS= librubyarg= - elif test -f "$rubylibdir/$librubyarg"; then - librubyarg="$rubylibdir/$librubyarg" - elif test "$librubyarg" = "libruby.a"; then - librubyarg="-lruby" - else - librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"` - fi fi if test "X$librubyarg" != "X"; then @@ -6405,6 +6641,15 @@ echo "${ECHO_T}$rubyhdrdir" >&6; } #define FEAT_RUBY 1 _ACEOF + if test "$enable_rubyinterp" = "dynamic"; then + libruby=`$vi_cv_path_ruby -r rbconfig -e 'printf "lib%s.%s\n", Config::CONFIG["RUBY_SO_NAME"], Config::CONFIG["DLEXT"]'` + cat >>confdefs.h <<\_ACEOF +#define DYNAMIC_RUBY 1 +_ACEOF + + RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS" + RUBY_LIBS= + fi else { echo "$as_me:$LINENO: result: not found; disabling Ruby" >&5 echo "${ECHO_T}not found; disabling Ruby" >&6; } @@ -12870,9 +13115,9 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ else { echo "$as_me:$LINENO: result: empty: automatic terminal library selection" >&5 echo "${ECHO_T}empty: automatic terminal library selection" >&6; } - case "`uname -s 2>/dev/null`" in - OSF1|SCO_SV) tlibs="ncurses curses termlib termcap";; - *) tlibs="ncurses termlib termcap curses";; + case "`uname -s 2>/dev/null`" in + OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";; + *) tlibs="tinfo ncurses termlib termcap curses";; esac for libname in $tlibs; do @@ -19176,6 +19421,23 @@ echo "${ECHO_T}no" >&6; } fi +{ echo "$as_me:$LINENO: checking linker --as-needed support" >&5 +echo $ECHO_N "checking linker --as-needed support... $ECHO_C" >&6; } +LINK_AS_NEEDED= +# Check if linker supports --as-needed and --no-as-needed options +if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then + LDFLAGS="$LDFLAGS -Wl,--as-needed" + LINK_AS_NEEDED=yes +fi +if test "$LINK_AS_NEEDED" = yes; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + ac_config_files="$ac_config_files auto/config.mk:config.mk.in" cat >confcache <<\_ACEOF @@ -19978,11 +20240,12 @@ MSGFMT!$MSGFMT$ac_delim MAKEMO!$MAKEMO$ac_delim XCODEFLAGS!$XCODEFLAGS$ac_delim DEPEND_CFLAGS_FILTER!$DEPEND_CFLAGS_FILTER$ac_delim +LINK_AS_NEEDED!$LINK_AS_NEEDED$ac_delim LIBOBJS!$LIBOBJS$ac_delim LTLIBOBJS!$LTLIBOBJS$ac_delim _ACEOF - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 49; then + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 50; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 diff --git a/src/configure.in b/src/configure.in index bf45985fd6..0b0c1fe428 100644 --- a/src/configure.in +++ b/src/configure.in @@ -1419,10 +1419,10 @@ AC_ARG_ENABLE(rubyinterp, AC_MSG_RESULT($enable_rubyinterp) if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then AC_MSG_CHECKING(--with-ruby-command argument) - AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)], - RUBY_CMD="$withval"; AC_MSG_RESULT($RUBY_CMD), - RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD)) AC_SUBST(vi_cv_path_ruby) + AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)], + RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD), + RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD)) AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD) if test "X$vi_cv_path_ruby" != "X"; then AC_MSG_CHECKING(Ruby version) @@ -1444,24 +1444,17 @@ if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then RUBY_LIBS="$rubylibs" fi librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'` - if test -f "$rubyhdrdir/$librubyarg"; then - librubyarg="$rubyhdrdir/$librubyarg" - else - rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'` - if test -d "/System/Library/Frameworks/Ruby.framework"; then + librubya=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBY_A"]])'` + rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'` + if test -f "$rubylibdir/$librubya"; then + librubyarg="$librubyarg" + RUBY_LIBS="$RUBY_LIBS -L$rubylibdir" + elif test -d "/System/Library/Frameworks/Ruby.framework"; then dnl On Mac OS X it is safer to just use the -framework flag RUBY_LIBS="-framework Ruby" dnl Don't include the -I flag when -framework is set RUBY_CFLAGS= librubyarg= - elif test -f "$rubylibdir/$librubyarg"; then - librubyarg="$rubylibdir/$librubyarg" - elif test "$librubyarg" = "libruby.a"; then - dnl required on Mac OS 10.3 where libruby.a doesn't exist - librubyarg="-lruby" - else - librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"` - fi fi if test "X$librubyarg" != "X"; then