ee28064389
MacVim compiles the Vim part using `/usr/bin/clang` and the GUI part using Xcode. The Xcode portion always uses Xcode's own SDK and we have no workable alternative. The Vim portion so far has been compiling using a hybrid compilation environment, where it uses the SDK for most stuff but picks up a bunch of library linker paths (including libSystem) by virtue of Ruby's LDFLAGS. This hybrid compilation environment meant that if the SDK headers referenced a symbol that the library itself didn't have, this could produce link errors. Previously we attempted to fix this by synthesizing an include path that contained just the one header from Nix's Libsystem that referenced the missing symbol, to get rid of the reference and allow linking to work again, but this was very hacky and runs the risk of future Xcode SDK changes producing the same errors with different headers, or of future SDK versions expecting the intercepted header to contain a definition that Nix's doesn't. This new approach is to just clean up the compilation environment such that the Vim portion is compiling against the Xcode SDK as well, by sanitizing the LDFLAGS produced by the configure script so it stops referencing Nix's versions of OS libraries. This means the resulting Vim binary no longer depends at runtime on Nix for anything except the scripting language support, but that's how it's been for the MacVim binary all along anyway, and this approach should keep us insulated against future Xcode SDK changes.
203 lines
8.5 KiB
Diff
203 lines
8.5 KiB
Diff
diff --git a/src/MacVim/vimrc b/src/MacVim/vimrc
|
|
index 23a06bf..dfb10fe 100644
|
|
--- a/src/MacVim/vimrc
|
|
+++ b/src/MacVim/vimrc
|
|
@@ -14,35 +14,5 @@ set backspace+=indent,eol,start
|
|
" translated to English).
|
|
set langmenu=none
|
|
|
|
-" Python2
|
|
-" MacVim is configured by default to use the pre-installed System python2
|
|
-" version. However, following code tries to find a Homebrew, MacPorts or
|
|
-" an installation from python.org:
|
|
-if exists("&pythondll") && exists("&pythonhome")
|
|
- if filereadable("/usr/local/Frameworks/Python.framework/Versions/2.7/Python")
|
|
- " Homebrew python 2.7
|
|
- set pythondll=/usr/local/Frameworks/Python.framework/Versions/2.7/Python
|
|
- elseif filereadable("/opt/local/Library/Frameworks/Python.framework/Versions/2.7/Python")
|
|
- " MacPorts python 2.7
|
|
- set pythondll=/opt/local/Library/Frameworks/Python.framework/Versions/2.7/Python
|
|
- elseif filereadable("/Library/Frameworks/Python.framework/Versions/2.7/Python")
|
|
- " https://www.python.org/downloads/mac-osx/
|
|
- set pythondll=/Library/Frameworks/Python.framework/Versions/2.7/Python
|
|
- endif
|
|
-endif
|
|
-
|
|
-" Python3
|
|
-" MacVim is configured by default to use Homebrew python3 version
|
|
-" If this cannot be found, following code tries to find a MacPorts
|
|
-" or an installation from python.org:
|
|
-if exists("&pythonthreedll") && exists("&pythonthreehome") &&
|
|
- \ !filereadable(&pythonthreedll)
|
|
- if filereadable("/opt/local/Library/Frameworks/Python.framework/Versions/3.7/Python")
|
|
- " MacPorts python 3.7
|
|
- set pythonthreedll=/opt/local/Library/Frameworks/Python.framework/Versions/3.7/Python
|
|
- elseif filereadable("/Library/Frameworks/Python.framework/Versions/3.7/Python")
|
|
- " https://www.python.org/downloads/mac-osx/
|
|
- set pythonthreedll=/Library/Frameworks/Python.framework/Versions/3.7/Python
|
|
- endif
|
|
-endif
|
|
-
|
|
+" Default cscopeprg to the Nix-installed path
|
|
+set cscopeprg=@CSCOPE@
|
|
diff --git a/src/Makefile b/src/Makefile
|
|
index 24c6934..d0f094e 100644
|
|
--- a/src/Makefile
|
|
+++ b/src/Makefile
|
|
@@ -1407,7 +1407,7 @@ MACVIMGUI_SRC = gui.c gui_beval.c MacVim/gui_macvim.m MacVim/MMBackend.m \
|
|
MacVim/MacVim.m
|
|
MACVIMGUI_OBJ = objects/gui.o objects/gui_beval.o \
|
|
objects/gui_macvim.o objects/MMBackend.o objects/MacVim.o
|
|
-MACVIMGUI_DEFS = -DFEAT_GUI_MACVIM -Wall -Wno-unknown-pragmas -pipe
|
|
+MACVIMGUI_DEFS = -DMACOS_X_DARWIN -DFEAT_GUI_MACVIM -Wall -Wno-unknown-pragmas -pipe
|
|
MACVIMGUI_IPATH =
|
|
MACVIMGUI_LIBS_DIR =
|
|
MACVIMGUI_LIBS1 = -framework Cocoa -framework Carbon
|
|
diff --git a/src/auto/configure b/src/auto/configure
|
|
index 730d6d5..0259112 100755
|
|
--- a/src/auto/configure
|
|
+++ b/src/auto/configure
|
|
@@ -5859,10 +5859,7 @@ $as_echo "not found" >&6; }
|
|
|
|
for path in "${vi_cv_path_mzscheme_pfx}/lib" "${SCHEME_LIB}"; do
|
|
if test "X$path" != "X"; then
|
|
- if test "x$MACOS_X" = "xyes"; then
|
|
- MZSCHEME_LIBS="-framework Racket"
|
|
- MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
|
|
- elif test -f "${path}/libmzscheme3m.a"; then
|
|
+ if test -f "${path}/libmzscheme3m.a"; then
|
|
MZSCHEME_LIBS="${path}/libmzscheme3m.a"
|
|
MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
|
|
elif test -f "${path}/libracket3m.a"; then
|
|
@@ -6247,23 +6244,6 @@ $as_echo ">>> too old; need Perl version 5.003_01 or later <<<" >&6; }
|
|
fi
|
|
|
|
if test "x$MACOS_X" = "xyes"; then
|
|
- dir=/System/Library/Perl
|
|
- darwindir=$dir/darwin
|
|
- if test -d $darwindir; then
|
|
- PERL=/usr/bin/perl
|
|
- else
|
|
- dir=/System/Library/Perl/5.8.1
|
|
- darwindir=$dir/darwin-thread-multi-2level
|
|
- if test -d $darwindir; then
|
|
- PERL=/usr/bin/perl
|
|
- fi
|
|
- fi
|
|
- if test -n "$PERL"; then
|
|
- PERL_DIR="$dir"
|
|
- PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
|
|
- PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
|
|
- PERL_LIBS="-L$darwindir/CORE -lperl"
|
|
- fi
|
|
PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
|
|
PERL_CFLAGS=`echo "$PERL_CFLAGS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
|
|
fi
|
|
@@ -6486,13 +6466,7 @@ __:
|
|
eof
|
|
eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
|
|
rm -f -- "${tmp_mkf}"
|
|
- if test "x$MACOS_X" = "xyes" && test -n "${python_PYTHONFRAMEWORK}" && ${vi_cv_path_python} -c \
|
|
- "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
|
|
- vi_cv_path_python_plibs="-framework Python"
|
|
- if test "x${vi_cv_path_python}" != "x/usr/bin/python" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then
|
|
- vi_cv_path_python_plibs="-F${python_PYTHONFRAMEWORKPREFIX} -framework Python"
|
|
- fi
|
|
- else
|
|
+
|
|
vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
|
|
if test -n "${python_LINKFORSHARED}" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then
|
|
python_link_symbol=`echo ${python_LINKFORSHARED} | sed 's/\([^ \t][^ \t]*[ \t][ \t]*[^ \t][^ \t]*\)[ \t].*/\1/'`
|
|
@@ -6507,7 +6481,6 @@ eof
|
|
fi
|
|
vi_cv_path_python_plibs="${vi_cv_path_python_plibs} ${python_BASEMODLIBS} ${python_LIBS} ${python_SYSLIBS} ${python_LINKFORSHARED}"
|
|
vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
|
|
- fi
|
|
|
|
fi
|
|
|
|
@@ -6586,13 +6559,6 @@ rm -f core conftest.err conftest.$ac_objext \
|
|
$as_echo "no" >&6; }
|
|
fi
|
|
|
|
- if test -n "$MACSDK"; then
|
|
- PYTHON_CFLAGS=
|
|
- PYTHON_LIBS=-framework Python
|
|
- PYTHON_CONFDIR=
|
|
- PYTHON_GETPATH_CFLAGS=
|
|
- fi
|
|
-
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compile and link flags for Python are sane" >&5
|
|
$as_echo_n "checking if compile and link flags for Python are sane... " >&6; }
|
|
cflags_save=$CFLAGS
|
|
@@ -7486,11 +7452,7 @@ $as_echo "$tclver - OK" >&6; };
|
|
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for location of Tcl include" >&5
|
|
$as_echo_n "checking for location of Tcl include... " >&6; }
|
|
- if test "x$MACOS_X" != "xyes"; then
|
|
tclinc="$tclloc/include $tclloc/include/tcl $tclloc/include/tcl$tclver /usr/local/include /usr/local/include/tcl$tclver /usr/include /usr/include/tcl$tclver"
|
|
- else
|
|
- tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
|
|
- fi
|
|
TCL_INC=
|
|
for try in $tclinc; do
|
|
if test -f "$try/tcl.h"; then
|
|
@@ -7508,12 +7470,8 @@ $as_echo "<not found>" >&6; }
|
|
if test -z "$SKIP_TCL"; then
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for location of tclConfig.sh script" >&5
|
|
$as_echo_n "checking for location of tclConfig.sh script... " >&6; }
|
|
- if test "x$MACOS_X" != "xyes"; then
|
|
tclcnf=`echo $tclinc | sed s/include/lib/g`
|
|
tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
|
|
- else
|
|
- tclcnf="/System/Library/Frameworks/Tcl.framework"
|
|
- fi
|
|
for try in $tclcnf; do
|
|
if test -f "$try/tclConfig.sh"; then
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $try/tclConfig.sh" >&5
|
|
@@ -7703,10 +7661,6 @@ $as_echo "$rubyhdrdir" >&6; }
|
|
if test -f "$rubylibdir/$librubya"; then
|
|
librubyarg="$librubyarg"
|
|
RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
|
|
- elif test "$vi_cv_path_ruby" = "/usr/bin/ruby" -a -d "/System/Library/Frameworks/Ruby.framework"; then
|
|
- RUBY_LIBS="-framework Ruby"
|
|
- RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
|
|
- librubyarg=
|
|
fi
|
|
|
|
if test "X$librubyarg" != "X"; then
|
|
diff --git a/src/vim.h b/src/vim.h
|
|
index 87d1c92..8a7d5a5 100644
|
|
--- a/src/vim.h
|
|
+++ b/src/vim.h
|
|
@@ -250,17 +250,6 @@
|
|
# define SUN_SYSTEM
|
|
#endif
|
|
|
|
-// If we're compiling in C++ (currently only KVim), the system
|
|
-// headers must have the correct prototypes or nothing will build.
|
|
-// Conversely, our prototypes might clash due to throw() specifiers and
|
|
-// cause compilation failures even though the headers are correct. For
|
|
-// a concrete example, gcc-3.2 enforces exception specifications, and
|
|
-// glibc-2.2.5 has them in their system headers.
|
|
-#if !defined(__cplusplus) && defined(UNIX) \
|
|
- && !defined(MACOS_X) // MACOS_X doesn't yet support osdef.h
|
|
-# include "auto/osdef.h" // bring missing declarations in
|
|
-#endif
|
|
-
|
|
#ifdef AMIGA
|
|
# include "os_amiga.h"
|
|
#endif
|
|
diff --git a/src/vimtutor b/src/vimtutor
|
|
index 1e8769b..47078b0 100755
|
|
--- a/src/vimtutor
|
|
+++ b/src/vimtutor
|
|
@@ -16,7 +16,7 @@ seq="vim vim81 vim80 vim8 vim74 vim73 vim72 vim71 vim70 vim7 vim6 vi"
|
|
if test "$1" = "-g"; then
|
|
# Try to use the GUI version of Vim if possible, it will fall back
|
|
# on Vim if Gvim is not installed.
|
|
- seq="gvim gvim81 gvim80 gvim8 gvim74 gvim73 gvim72 gvim71 gvim70 gvim7 gvim6 $seq"
|
|
+ seq="mvim gvim gvim81 gvim80 gvim8 gvim74 gvim73 gvim72 gvim71 gvim70 gvim7 gvim6 $seq"
|
|
shift
|
|
fi
|
|
|