diff --git a/src/auto/config.h b/src/auto/config.h
new file mode 100644
index 0000000..b94890c
--- /dev/null
+++ b/src/auto/config.h
@@ -0,0 +1,492 @@
+/* auto/config.h.  Generated from config.h.in by configure.  */
+/*
+ * config.h.in.  Originally generated automatically from configure.ac by
+ * autoheader and manually changed after that.
+ */
+
+/* Define if we have EBCDIC code */
+/* #undef EBCDIC */
+
+/* Define unless no X support found */
+/* #undef HAVE_X11 */
+
+/* Define when terminfo support found */
+#define TERMINFO 1
+
+/* Define when termcap.h contains ospeed */
+#define HAVE_OSPEED 1
+
+/* Define when ospeed can be extern */
+/* #undef OSPEED_EXTERN */
+
+/* Define when termcap.h contains UP, BC and PC */
+#define HAVE_UP_BC_PC 1
+
+/* Define when UP, BC and PC can be extern */
+/* #undef UP_BC_PC_EXTERN */
+
+/* Define when termcap.h defines outfuntype */
+/* #undef HAVE_OUTFUNTYPE */
+
+/* Define when __DATE__ " " __TIME__ can be used */
+/* #undef HAVE_DATE_TIME */
+
+/* Define when __attribute__((unused)) can be used */
+#define HAVE_ATTRIBUTE_UNUSED 1
+
+/* defined always when using configure */
+#define UNIX 1
+
+/* Defined to the size of an int */
+#define VIM_SIZEOF_INT 4
+
+/* Defined to the size of a long */
+#define VIM_SIZEOF_LONG 8
+
+/* Defined to the size of off_t */
+#define SIZEOF_OFF_T 8
+
+/* Defined to the size of time_t */
+#define SIZEOF_TIME_T 8
+
+/* Define when wchar_t is only 2 bytes. */
+/* #undef SMALL_WCHAR_T */
+
+/*
+ * If we cannot trust one of the following from the libraries, we use our
+ * own safe but probably slower vim_memmove().
+ */
+/* #undef USEBCOPY */
+#define USEMEMMOVE 1
+/* #undef USEMEMCPY */
+
+/* Define when "man -s 2" is to be used */
+#define USEMAN_S 1
+
+/* Define to empty if the keyword does not work.  */
+/* #undef const */
+
+/* Define to empty if the keyword does not work.  */
+/* #undef volatile */
+
+/* Define to `int' if <sys/types.h> doesn't define.  */
+/* #undef mode_t */
+
+/* Define to `long' if <sys/types.h> doesn't define.  */
+/* #undef off_t */
+
+/* Define to `long' if <sys/types.h> doesn't define.  */
+/* #undef pid_t */
+
+/* Define to `unsigned' if <sys/types.h> doesn't define.  */
+/* #undef size_t */
+
+/* Define to `int' if <sys/types.h> doesn't define.  */
+/* #undef uid_t */
+
+/* Define to `unsigned int' or other type that is 32 bit.  */
+/* #undef uint32_t */
+
+/* Define to `int' if <sys/types.h> doesn't define.  */
+/* #undef gid_t */
+
+/* Define to `long' if <sys/types.h> doesn't define.  */
+/* #undef ino_t */
+
+/* Define to `unsigned' if <sys/types.h> doesn't define.  */
+/* #undef dev_t */
+
+/* Define on big-endian machines */
+/* #undef WORDS_BIGENDIAN */
+
+/* Define to `unsigned long' if <sys/types.h> doesn't define.  */
+/* #undef rlim_t */
+
+/* Define to `struct sigaltstack' if <signal.h> doesn't define.  */
+/* #undef stack_t */
+
+/* Define if stack_t has the ss_base field. */
+/* #undef HAVE_SS_BASE */
+
+/* Define if you can safely include both <sys/time.h> and <time.h>.  */
+#define TIME_WITH_SYS_TIME 1
+
+/* Define if you can safely include both <sys/time.h> and <sys/select.h>.  */
+#define SYS_SELECT_WITH_SYS_TIME 1
+
+/* Define to a typecast for select() arguments 2, 3 and 4. */
+#define SELECT_TYPE_ARG234 (fd_set *)
+
+/* Define if you have /dev/ptc */
+/* #undef HAVE_DEV_PTC */
+
+/* Define if you have Sys4 ptys */
+#define HAVE_SVR4_PTYS 1
+
+/* Define to range of pty names to try */
+/* #undef PTYRANGE0 */
+/* #undef PTYRANGE1 */
+
+/* Define mode for pty */
+/* #undef PTYMODE */
+
+/* Define group for pty */
+/* #undef PTYGROUP */
+
+/* Define as the return type of signal handlers (int or void).  */
+#define RETSIGTYPE void
+
+/* Define as the command at the end of signal handlers ("" or "return 0;").  */
+#define SIGRETURN return
+
+/* Define if struct sigcontext is present */
+#define HAVE_SIGCONTEXT 1
+
+/* Define if touuper/tolower only work on lower/upercase characters */
+/* #undef BROKEN_TOUPPER */
+
+/* Define if stat() ignores a trailing slash */
+/* #undef STAT_IGNORES_SLASH */
+
+/* Define if tgetstr() has a second argument that is (char *) */
+/* #undef TGETSTR_CHAR_P */
+
+/* Define if tgetent() returns zero for an error */
+#define TGETENT_ZERO_ERR 0
+
+/* Define if the getcwd() function should not be used.  */
+/* #undef BAD_GETCWD */
+
+/* Define if you the function: */
+#define HAVE_FCHDIR 1
+#define HAVE_FCHOWN 1
+#define HAVE_FCHMOD 1
+#define HAVE_FLOAT_FUNCS 1
+#define HAVE_FSEEKO 1
+#define HAVE_FSYNC 1
+#define HAVE_FTRUNCATE 1
+#define HAVE_GETCWD 1
+#define HAVE_GETPGID 1
+/* #undef HAVE_GETPSEUDOTTY */
+#define HAVE_GETPWENT 1
+#define HAVE_GETPWNAM 1
+#define HAVE_GETPWUID 1
+#define HAVE_GETRLIMIT 1
+#define HAVE_GETTIMEOFDAY 1
+/* #undef HAVE_GETWD */
+#define HAVE_ICONV 1
+#define HAVE_LOCALTIME_R 1
+#define HAVE_LSTAT 1
+#define HAVE_MEMSET 1
+#define HAVE_MKDTEMP 1
+#define HAVE_NANOSLEEP 1
+#define HAVE_NL_LANGINFO_CODESET 1
+#define HAVE_OPENDIR 1
+#define HAVE_POSIX_OPENPT 1
+#define HAVE_PUTENV 1
+#define HAVE_QSORT 1
+#define HAVE_READLINK 1
+#define HAVE_RENAME 1
+#define HAVE_SELECT 1
+#define HAVE_SELINUX 1
+#define HAVE_SETENV 1
+#define HAVE_SETPGID 1
+#define HAVE_SETSID 1
+#define HAVE_SIGACTION 1
+#define HAVE_SIGALTSTACK 1
+/* #undef HAVE_SIGSET */
+/* #undef HAVE_SIGSETJMP */
+#define HAVE_SIGSTACK 1
+#define HAVE_SIGPROCMASK 1
+/* #undef HAVE_SIGVEC */
+/* #undef HAVE_SMACK */
+#define HAVE_STRCASECMP 1
+#define HAVE_STRERROR 1
+#define HAVE_STRFTIME 1
+/* #undef HAVE_STRICMP */
+#define HAVE_STRNCASECMP 1
+/* #undef HAVE_STRNICMP */
+#define HAVE_STRPBRK 1
+#define HAVE_STRTOL 1
+#define HAVE_CANBERRA 1
+#define HAVE_ST_BLKSIZE 1
+#define HAVE_SYSCONF 1
+/* #undef HAVE_SYSCTL */
+#define HAVE_SYSINFO 1
+#define HAVE_SYSINFO_MEM_UNIT 1
+#define HAVE_TGETENT 1
+#define HAVE_TOWLOWER 1
+#define HAVE_TOWUPPER 1
+#define HAVE_ISWUPPER 1
+#define HAVE_UNSETENV 1
+#define HAVE_USLEEP 1
+#define HAVE_UTIME 1
+#define HAVE_BIND_TEXTDOMAIN_CODESET 1
+#define HAVE_MBLEN 1
+
+/* Define, if needed, for accessing large files. */
+/* #undef _LARGE_FILES */
+/* #undef _FILE_OFFSET_BITS */
+/* #undef _LARGEFILE_SOURCE */
+
+/* Define if you do not have utime(), but do have the utimes() function. */
+#define HAVE_UTIMES 1
+
+/* Define if you have the header file: */
+#define HAVE_DIRENT_H 1
+#define HAVE_ERRNO_H 1
+#define HAVE_FCNTL_H 1
+/* #undef HAVE_FRAME_H */
+#define HAVE_ICONV_H 1
+#define HAVE_INTTYPES_H 1
+#define HAVE_LANGINFO_H 1
+/* #undef HAVE_LIBC_H */
+#define HAVE_LIBGEN_H 1
+#define HAVE_LIBINTL_H 1
+#define HAVE_LOCALE_H 1
+#define HAVE_MATH_H 1
+/* #undef HAVE_NDIR_H */
+#define HAVE_POLL_H 1
+/* #undef HAVE_PTHREAD_NP_H */
+#define HAVE_PWD_H 1
+#define HAVE_SETJMP_H 1
+#define HAVE_SGTTY_H 1
+#define HAVE_STDINT_H 1
+#define HAVE_STRINGS_H 1
+/* #undef HAVE_STROPTS_H */
+/* #undef HAVE_SYS_ACCESS_H */
+/* #undef HAVE_SYS_ACL_H */
+/* #undef HAVE_SYS_DIR_H */
+#define HAVE_SYS_IOCTL_H 1
+/* #undef HAVE_SYS_NDIR_H */
+#define HAVE_SYS_PARAM_H 1
+#define HAVE_SYS_POLL_H 1
+/* #undef HAVE_SYS_PTEM_H */
+/* #undef HAVE_SYS_PTMS_H */
+#define HAVE_SYS_RESOURCE_H 1
+#define HAVE_SYS_SELECT_H 1
+#define HAVE_SYS_STATFS_H 1
+/* #undef HAVE_SYS_STREAM_H */
+#define HAVE_SYS_SYSCTL_H 1
+#define HAVE_SYS_SYSINFO_H 1
+/* #undef HAVE_SYS_SYSTEMINFO_H */
+#define HAVE_SYS_TIME_H 1
+#define HAVE_SYS_TYPES_H 1
+#define HAVE_SYS_UTSNAME_H 1
+#define HAVE_TERMCAP_H 1
+#define HAVE_TERMIOS_H 1
+#define HAVE_TERMIO_H 1
+#define HAVE_WCHAR_H 1
+#define HAVE_WCTYPE_H 1
+#define HAVE_UNISTD_H 1
+/* #undef HAVE_UTIL_DEBUG_H */
+/* #undef HAVE_UTIL_MSGI18N_H */
+#define HAVE_UTIME_H 1
+/* #undef HAVE_X11_SUNKEYSYM_H */
+/* #undef HAVE_XM_XM_H */
+/* #undef HAVE_XM_XPMP_H */
+/* #undef HAVE_XM_TRAITP_H */
+/* #undef HAVE_XM_MANAGER_H */
+/* #undef HAVE_XM_UNHIGHLIGHTT_H */
+/* #undef HAVE_XM_JOINSIDET_H */
+/* #undef HAVE_XM_NOTEBOOK_H */
+/* #undef HAVE_X11_XPM_H */
+/* #undef HAVE_X11_XMU_EDITRES_H */
+/* #undef HAVE_X11_SM_SMLIB_H */
+
+/* Define to the type of the XpmAttributes type. */
+/* #undef XPMATTRIBUTES_TYPE */
+
+/* Define if you have <sys/wait.h> that is POSIX.1 compatible.  */
+#define HAVE_SYS_WAIT_H 1
+
+/* Define if you have a <sys/wait.h> that is not POSIX.1 compatible. */
+/* #undef HAVE_UNION_WAIT */
+
+/* This is currently unused in vim: */
+/* Define if you have the ANSI C header files. */
+/* #undef STDC_HEADERS */
+
+/* instead, we check a few STDC things ourselves */
+#define HAVE_STDLIB_H 1
+#define HAVE_STRING_H 1
+
+/* Define if strings.h cannot be included when strings.h already is */
+/* #undef NO_STRINGS_WITH_STRING_H */
+
+/* Define if you want tiny features. */
+/* #undef FEAT_TINY */
+
+/* Define if you want small features. */
+/* #undef FEAT_SMALL */
+
+/* Define if you want normal features. */
+/* #undef FEAT_NORMAL */
+
+/* Define if you want big features. */
+/* #undef FEAT_BIG */
+
+/* Define if you want huge features. */
+/* #undef FEAT_HUGE */
+
+/* Define if you want to include the Lua interpreter. */
+/* #undef FEAT_LUA */
+
+/* Define for linking via dlopen() or LoadLibrary() */
+/* #undef DYNAMIC_LUA */
+
+/* Define if you want to include the MzScheme interpreter. */
+/* #undef FEAT_MZSCHEME */
+
+/* Define if you want to include the Perl interpreter. */
+/* #undef FEAT_PERL */
+
+/* Define for linking via dlopen() or LoadLibrary() */
+/* #undef DYNAMIC_PERL */
+
+/* Define if you want to include the Python interpreter. */
+/* #undef FEAT_PYTHON */
+
+/* Define if you want to include the Python3 interpreter. */
+/* #undef FEAT_PYTHON3 */
+
+/* Define for linking via dlopen() or LoadLibrary() */
+/* #undef DYNAMIC_PYTHON */
+
+/* Define for linking via dlopen() or LoadLibrary() */
+/* #undef DYNAMIC_PYTHON3 */
+
+/* Define if dynamic python does not require RTLD_GLOBAL */
+/* #undef PY_NO_RTLD_GLOBAL */
+
+/* Define if dynamic python3 does not require RTLD_GLOBAL */
+/* #undef PY3_NO_RTLD_GLOBAL */
+
+/* Define if you want to include the Ruby interpreter. */
+/* #undef FEAT_RUBY */
+
+/* Define for linking via dlopen() or LoadLibrary() */
+/* #undef DYNAMIC_RUBY */
+
+/* Define if you want to include the Tcl interpreter. */
+/* #undef FEAT_TCL */
+
+/* Define for linking via dlopen() or LoadLibrary() */
+/* #undef DYNAMIC_TCL */
+
+/* Define if you want to add support for ACL */
+/* #undef HAVE_POSIX_ACL */
+/* #undef HAVE_SOLARIS_ZFS_ACL */
+/* #undef HAVE_SOLARIS_ACL */
+/* #undef HAVE_AIX_ACL */
+
+/* Define if pango_shape_full() is available. */
+#define HAVE_PANGO_SHAPE_FULL 1
+
+/* Define if you want to add support of GPM (Linux console mouse daemon) */
+/* #undef HAVE_GPM */
+
+/* Define if you want to add support of sysmouse (*BSD console mouse) */
+/* #undef HAVE_SYSMOUSE */
+
+/* Define if you want to include the Cscope interface. */
+/* #undef FEAT_CSCOPE */
+
+/* Define if you don't want to include right-left support. */
+/* #undef DISABLE_RIGHTLEFT */
+
+/* Define if you don't want to include Arabic support. */
+/* #undef DISABLE_ARABIC */
+
+/* Define if you want to always define a server name at vim startup. */
+/* #undef FEAT_AUTOSERVERNAME */
+
+/* Define if you want to include fontset support. */
+/* #undef FEAT_XFONTSET */
+
+/* Define if you want to include XIM support. */
+/* #undef FEAT_XIM */
+
+/* Define if you want to include Hangul input support. */
+/* #undef FEAT_HANGULIN */
+
+/* Define if you use GTK and want GNOME support. */
+/* #undef FEAT_GUI_GNOME */
+
+/* Define if you use KDE and want KDE Toolbar support. */
+/* #undef FEAT_KDETOOLBAR */
+
+/* Define if your X has own locale library */
+/* #undef X_LOCALE */
+
+/* Define if we have dlfcn.h. */
+#define HAVE_DLFCN_H 1
+
+/* Define if there is a working gettext(). */
+#define HAVE_GETTEXT 1
+
+/* Define if _nl_msg_cat_cntr is present. */
+/* #undef HAVE_NL_MSG_CAT_CNTR */
+
+/* Define if we have dlopen() */
+#define HAVE_DLOPEN 1
+
+/* Define if we have dlsym() */
+#define HAVE_DLSYM 1
+
+/* Define if we have dl.h. */
+/* #undef HAVE_DL_H */
+
+/* Define if we have shl_load() */
+/* #undef HAVE_SHL_LOAD */
+
+/* Define if you want to include NetBeans integration. */
+/* #undef FEAT_NETBEANS_INTG */
+
+/* Define if you want to include process communication. */
+#define FEAT_JOB_CHANNEL 1
+
+/* Define if you want to include terminal emulator support. */
+/* #undef FEAT_TERMINAL */
+
+// Define default global runtime path.
+/* #undef RUNTIME_GLOBAL */
+
+// Define default global runtime after path.
+/* #undef RUNTIME_GLOBAL_AFTER */
+
+/* Define name of who modified a released Vim */
+/* #undef MODIFIED_BY */
+
+/* Define if you want XSMP interaction as well as vanilla swapfile safety */
+#define USE_XSMP_INTERACT 1
+
+/* Define if fcntl()'s F_SETFD command knows about FD_CLOEXEC */
+#define HAVE_FD_CLOEXEC 1
+
+/* Define if /proc/self/exe or similar can be read */
+#define PROC_EXE_LINK "/proc/self/exe"
+
+/* Define if you want Cygwin to use the WIN32 clipboard, not compatible with X11*/
+/* #undef FEAT_CYGWIN_WIN32_CLIPBOARD */
+
+/* Define if we have AvailabilityMacros.h on Mac OS X */
+/* #undef HAVE_AVAILABILITYMACROS_H */
+
+/* Define if Xutf8SetWMProperties() is in an X library. */
+/* #undef HAVE_XUTF8SETWMPROPERTIES */
+
+/* Define if GResource is used to load icons */
+/* #undef USE_GRESOURCE */
+
+/* Define if GTK+ GUI is to be linked against GTK+ 3 */
+/* #undef USE_GTK3 */
+
+/* Define if we have isinf() */
+#define HAVE_ISINF 1
+
+/* Define if we have isnan() */
+#define HAVE_ISNAN 1
+
+/* Define to inline symbol or empty */
+/* #undef inline */
diff --git a/src/auto/config.mk b/src/auto/config.mk
new file mode 100644
index 0000000..32652fd
--- /dev/null
+++ b/src/auto/config.mk
@@ -0,0 +1,179 @@
+#
+# config.mk.in -- autoconf template for Vim on Unix		vim:ts=8:sw=8:
+#
+# DO NOT EDIT config.mk!!  It will be overwritten by configure.
+# Edit Makefile and run "make" or run ./configure with other arguments.
+#
+# Configure does not edit the makefile directly. This method is not the
+# standard use of GNU autoconf, but it has two advantages:
+#   a) The user can override every choice made by configure.
+#   b) Modifications to the makefile are not lost when configure is run.
+#
+# I hope this is worth being nonstandard. jw.
+
+
+
+VIMNAME		= vim
+EXNAME		= ex
+VIEWNAME	= view
+
+CC		= gcc
+DEFS		= -DHAVE_CONFIG_H
+CFLAGS		= -g -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
+CPPFLAGS	= 
+srcdir		= .
+
+LDFLAGS		=  -L/usr/local/lib -Wl,--as-needed
+LIBS		= -lm -lncurses -lelf -lnsl  -lacl -lattr -lgpm -ldl
+TAGPRG		= ctags -I INIT+ --fields=+S
+
+CPP		= gcc -E
+CPP_MM		= M
+DEPEND_CFLAGS_FILTER = | sed 's+-I */+-isystem /+g'
+LINK_AS_NEEDED	= yes
+X_CFLAGS	= 
+X_LIBS_DIR	= 
+X_PRE_LIBS	= 
+X_EXTRA_LIBS	= 
+X_LIBS		= 
+
+LUA_LIBS	= 
+LUA_SRC		= 
+LUA_OBJ		= 
+LUA_CFLAGS	= 
+LUA_PRO		= 
+
+MZSCHEME_LIBS	= 
+MZSCHEME_SRC	= 
+MZSCHEME_OBJ	= 
+MZSCHEME_CFLAGS	= 
+MZSCHEME_PRO	= 
+MZSCHEME_EXTRA	= 
+MZSCHEME_MZC	= 
+
+PERL		= 
+PERLLIB		= 
+PERL_XSUBPP	= 
+PERL_LIBS	= 
+SHRPENV		= 
+PERL_SRC	= 
+PERL_OBJ	= 
+PERL_PRO	= 
+PERL_CFLAGS	= 
+
+PYTHON_SRC	= 
+PYTHON_OBJ	= 
+PYTHON_CFLAGS	= 
+PYTHON_LIBS	= 
+PYTHON_CONFDIR	= 
+PYTHON_GETPATH_CFLAGS = 
+
+PYTHON3_SRC	= 
+PYTHON3_OBJ	= 
+PYTHON3_CFLAGS	= 
+PYTHON3_LIBS	= 
+PYTHON3_CONFDIR	= 
+
+TCL		= 
+TCL_SRC		= 
+TCL_OBJ		= 
+TCL_PRO		= 
+TCL_CFLAGS	= 
+TCL_LIBS	= 
+
+HANGULIN_SRC	= 
+HANGULIN_OBJ	= 
+
+WORKSHOP_SRC	= 
+WORKSHOP_OBJ	= 
+
+NETBEANS_SRC	= netbeans.c
+NETBEANS_OBJ	= objects/netbeans.o
+CHANNEL_SRC	= channel.c
+CHANNEL_OBJ	= objects/channel.o
+
+RUBY		= 
+RUBY_SRC	= 
+RUBY_OBJ	= 
+RUBY_PRO	= 
+RUBY_CFLAGS	= 
+RUBY_LIBS	= 
+
+AWK		= gawk
+
+STRIP		= strip
+
+EXEEXT		= 
+CROSS_COMPILING = 
+
+COMPILEDBY	= 
+
+INSTALLVIMDIFF	= installvimdiff
+INSTALLGVIMDIFF	= installgvimdiff
+INSTALL_LANGS	= install-languages
+INSTALL_TOOL_LANGS	= install-tool-languages
+
+### sed command to fix quotes while creating pathdef.c
+QUOTESED        = sed -e 's/[\\"]/\\&/g' -e 's/\\"/"/' -e 's/\\";$$/";/'
+
+### Line break character as octal number for "tr"
+NL		= "\\012"
+
+### Top directory for everything
+prefix		= /usr/local
+
+### Top directory for the binary
+exec_prefix	= ${prefix}
+
+### Prefix for location of data files
+BINDIR		= ${exec_prefix}/bin
+
+### For autoconf 2.60 and later (avoid a warning)
+datarootdir	= ${prefix}/share
+
+### Prefix for location of data files
+DATADIR		= ${datarootdir}
+
+### Prefix for location of man pages
+MANDIR		= ${datarootdir}/man
+
+### Do we have a GUI
+GUI_INC_LOC	= 
+GUI_LIB_LOC	= 
+GUI_SRC		= $(NONE_SRC)
+GUI_OBJ		= $(NONE_OBJ)
+GUI_DEFS	= $(NONE_DEFS)
+GUI_IPATH	= $(NONE_IPATH)
+GUI_LIBS_DIR	= $(NONE_LIBS_DIR)
+GUI_LIBS1	= $(NONE_LIBS1)
+GUI_LIBS2	= $(NONE_LIBS2)
+GUI_INSTALL	= $(NONE_INSTALL)
+GUI_TARGETS	= $(NONE_TARGETS)
+GUI_MAN_TARGETS	= $(NONE_MAN_TARGETS)
+GUI_TESTTARGET	= $(NONE_TESTTARGET)
+GUI_TESTARG	= $(NONE_TESTARG)
+GUI_BUNDLE	= $(NONE_BUNDLE)
+NARROW_PROTO	= 
+GUI_X_LIBS	= 
+MOTIF_LIBNAME	= 
+GTK_LIBNAME	= 
+
+GLIB_COMPILE_RESOURCES = 
+GRESOURCE_SRC = 
+GRESOURCE_OBJ = 
+
+GTK_UPDATE_ICON_CACHE = 
+UPDATE_DESKTOP_DATABASE = 
+
+### Any OS dependent extra source and object file
+OS_EXTRA_SRC	= 
+OS_EXTRA_OBJ	= 
+
+### If the *.po files are to be translated to *.mo files.
+MAKEMO		= yes
+
+MSGFMT		= msgfmt
+
+# Make sure that "make first" will run "make all" once configure has done its
+# work.  This is needed when using the Makefile in the top directory.
+first: all
diff --git a/src/auto/osdef.h b/src/auto/osdef.h
new file mode 100644
index 0000000..0d21011
--- /dev/null
+++ b/src/auto/osdef.h
@@ -0,0 +1,136 @@
+/*
+ * osdef.h is automagically created from osdef?.h.in by osdef.sh -- DO NOT EDIT
+ */
+/* autoconf cannot fiddle out declarations. Use our homebrewn tools. (jw) */
+/*
+ * Declarations that may cause conflicts belong here so that osdef.sh
+ * can clean out the forest. Everything else belongs in os_unix.h
+ *
+ * How this works:
+ * - This file contains all unix prototypes that Vim might need.
+ * - The shell script osdef.sh is executed at compile time to remove all the
+ *   prototypes that are in an include file. This results in osdef.h.
+ * - osdef.h is included in vim.h.
+ *
+ * sed cannot always handle so many commands, this is file 1 of 2
+ */
+
+#ifndef fopen	/* could be redefined to fopen64() */
+#endif
+#ifdef HAVE_FSEEKO
+#endif
+#ifdef HAVE_FSEEKO
+#endif
+#ifndef ferror	/* let me say it again: "macros should never have prototypes" */
+#endif
+#if defined(sun) || defined(_SEQUENT_)
+/* used inside of stdio macros getc(), puts(), putchar()... */
+extern int	_flsbuf(int, FILE *);
+extern int	_filbuf(FILE *);
+#endif
+
+#if !defined(HAVE_SELECT)
+struct pollfd;			/* for poll() */
+extern int	poll(struct pollfd *, long, int);
+#endif
+
+#ifdef HAVE_MEMSET
+#endif
+#ifdef HAVE_BCMP
+#endif
+#ifdef HAVE_MEMCMP
+#endif
+#ifdef HAVE_STRPBRK
+#endif
+#ifdef USEBCOPY
+#else
+# ifdef USEMEMCPY
+# else
+#  ifdef USEMEMMOVE
+#  endif
+# endif
+#endif
+/* used inside of FD_ZERO macro: */
+#ifdef HAVE_SETSID
+#endif
+#ifdef HAVE_SETPGID
+#endif
+#ifdef HAVE_STRTOL
+#endif
+#ifdef HAVE_STRFTIME
+#endif
+#ifdef HAVE_STRCASECMP
+#endif
+#ifdef HAVE_STRNCASECMP
+#endif
+#ifndef strdup
+#endif
+
+#ifndef USE_SYSTEM
+# ifndef __TANDEM
+# endif
+#endif
+
+
+#ifdef HAVE_SIGSET
+extern RETSIGTYPE (*sigset(int, RETSIGTYPE (*func) SIGPROTOARG)) SIGPROTOARG;
+#endif
+
+#if defined(HAVE_SETJMP_H)
+# ifdef HAVE_SIGSETJMP
+extern int	sigsetjmp(sigjmp_buf, int);
+# else
+# endif
+#endif
+
+
+#ifndef __TANDEM
+#endif
+#if defined(HAVE_GETCWD) && !defined(sun) && !defined(__TANDEM)
+#else
+#endif
+#ifndef __alpha	/* suggested by Campbell */
+#endif
+/*
+ * osdef2.h.in - See osdef1.h.in for a description.
+ */
+
+
+#ifndef __TANDEM
+#endif
+
+#ifndef __TANDEM
+#endif
+#ifndef __TANDEM
+#endif
+#ifndef stat	/* could be redefined to stat64() */
+#endif
+#ifndef lstat	/* could be redefined to lstat64() */
+#endif
+#ifndef __TANDEM
+#endif
+
+
+
+#ifdef HAVE_TERMIOS_H
+#endif
+
+#ifdef HAVE_SYS_STATFS_H
+#endif
+
+#ifdef HAVE_GETTIMEOFDAY
+#endif
+
+#ifdef HAVE_GETPWNAM
+#endif
+
+#ifdef USE_TMPNAM
+#else
+#endif
+
+#ifdef ISC
+extern int	_Xmblen(char const *, size_t);
+#else
+		/* This is different from the header but matches mblen() */
+extern int	_Xmblen(char *, size_t);
+#endif
diff --git a/src/auto/pathdef.c b/src/auto/pathdef.c
new file mode 100644
index 0000000..3994a47
--- /dev/null
+++ b/src/auto/pathdef.c
@@ -0,0 +1,10 @@
+/* pathdef.c */
+/* This file is automatically created by Makefile
+ * DO NOT EDIT!  Change Makefile only. */
+#include "vim.h"
+char_u *default_vim_dir = (char_u *)"/system/usr/share/vim";
+char_u *default_vimruntime_dir = (char_u *)"/system/usr/share/vim";
+char_u *all_cflags = (char_u *)"gcc -c -I. -Iproto -DHAVE_CONFIG_H -g -O2        ";
+char_u *all_lflags = (char_u *)"gcc -L/system/lib -o vim -lm -lselinux           ";
+char_u *compiled_user = (char_u *)"android";
+char_u *compiled_sys = (char_u *)"android";
diff --git a/src/memline.c b/src/memline.c
index e7ae6df..6449b3c 100644
--- a/src/memline.c
+++ b/src/memline.c
@@ -2738,7 +2738,7 @@
     return ml_append_int(curbuf, lnum, line, len, newfile, FALSE);
 }
 
-#if defined(FEAT_SPELL) || defined(FEAT_QUICKFIX) || defined(PROTO)
+#if defined(FEAT_SPELL) || defined(FEAT_QUICKFIX) || defined(PROTO) || defined(FEAT_TEXT_PROP)
 /*
  * Like ml_append() but for an arbitrary buffer.  The buffer must already have
  * a memline.
