diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..5e33526
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,146 @@
+#                                               -*- Autoconf -*-
+# Process this file with autoconf to produce a configure script.
+#
+# Compile with debug symbols:
+#    CFLAGS="-ggdb -pedandic -O0" ./configure
+#    CFLAGS="-ggdb -Wall -Wextra -pedantic -O0" ./configure
+#
+# Use libtool (glibtool on OSX) to debug:
+#
+#    libtool --mode=execute gdb examples/tc1
+# 
+# Run valgrind like this, but note
+# http://invisible-island.net/ncurses/ncurses.faq.html#config_leaks.
+#
+#    libtool --mode=execute valgrind --leak-check=full examples/tc1
+#
+# A valgrind suppressions file for ncurses is available at 
+# http://www.opensource.apple.com/source/ncurses/ncurses-27/ncurses/misc/ncurses.supp
+#
+#    libtool --mode=execute valgrind --suppressions=ncurses.supp.txt --leak-check=full examples/tc1
+#
+# Verbose output can be enabled with
+#    "./configure --disable-silent-rules" or "make V=1"
+#
+
+AC_INIT(libedit, [EL_RELEASE],, libedit-[EL_TIMESTAMP])
+AC_CONFIG_MACRO_DIR([m4])
+AC_CONFIG_SRCDIR([src/strlcat.c])
+AC_CONFIG_HEADER([config.h])
+
+# features of Posix that are extensions to C (define _GNU_SOURCE)
+AC_USE_SYSTEM_EXTENSIONS
+
+AM_INIT_AUTOMAKE
+AC_PROG_LIBTOOL
+
+# libtool -version-info
+AC_SUBST(LT_VERSION, [0:47:0])
+
+m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+
+# Checks for programs.
+AC_PROG_CC_C99
+#AC_PROG_CC
+AC_PROG_LN_S
+AC_PROG_AWK
+EL_MANTYPE
+
+
+AC_CHECK_LIB(tinfo, tgetent,,
+  [AC_CHECK_LIB(terminfo, tgetent,,
+    [AC_CHECK_LIB(termcap, tgetent,,
+       [AC_CHECK_LIB(termlib, tgetent,,
+           [AC_CHECK_LIB(curses, tgetent,,
+               [AC_CHECK_LIB(ncurses, tgetent,,
+                   [AC_MSG_ERROR([libcurses or libncurses are required!])]
+               )]
+           )]
+       )]
+    )]
+  )]
+)
+
+
+### use option --enable-widec to turn on use of wide-character support
+EL_ENABLE_WIDEC
+
+# Checks for header files.
+AC_HEADER_DIRENT
+AC_HEADER_STDC
+AC_HEADER_SYS_WAIT
+AC_CHECK_HEADERS([fcntl.h limits.h malloc.h stdlib.h string.h sys/ioctl.h sys/param.h unistd.h curses.h ncurses.h sys/cdefs.h termcap.h])
+
+AC_CHECK_HEADER([termios.h], [], [AC_MSG_ERROR([termios.h is required!])],[])
+
+## include curses.h to prevent "Present But Cannot Be Compiled"
+AC_CHECK_HEADERS([term.h],,,
+[[#if HAVE_CURSES_H
+# include <curses.h>
+#elif HAVE_NCURSES_H
+# include <ncurses.h>
+#endif
+]])
+
+# Check for dirent.d_namlen field explicitly
+# (This is a bit more straightforward than, if not quite as portable as,
+# the recipe given by the autoconf maintainers.)
+AC_CHECK_MEMBER(struct dirent.d_namlen,
+AC_DEFINE([HAVE_STRUCT_DIRENT_D_NAMLEN],[1],
+[Define to 1 if struct dirent has member d_namlen]),,
+[#if HAVE_DIRENT_H
+#include <dirent.h>
+#endif
+])
+
+# Checks for typedefs, structures, and compiler characteristics.
+AC_C_CONST
+AC_TYPE_PID_T
+AC_TYPE_SIZE_T
+AC_CHECK_TYPES([u_int32_t])
+
+# Checks for library functions.
+AC_FUNC_CLOSEDIR_VOID
+AC_FUNC_FORK
+AC_PROG_GCC_TRADITIONAL
+## _AIX is offended by rpl_malloc and rpl_realloc
+#AC_FUNC_MALLOC
+#AC_FUNC_REALLOC
+AC_TYPE_SIGNAL
+AC_FUNC_STAT
+AC_CHECK_FUNCS([endpwent isascii memchr memset re_comp regcomp strcasecmp strchr strcspn strdup strerror strrchr strstr strtol issetugid wcsdup strlcpy strlcat fgetln vis strvis strunvis __secure_getenv secure_getenv])
+
+# strlcpy
+AC_CHECK_FUNC(strlcpy, found_strlcpy=yes, found_strlcpy=no)
+AM_CONDITIONAL(HAVE_STRLCPY, [test "x$found_strlcpy" = xyes])
+
+# strlcat
+AC_CHECK_FUNC(strlcat, found_strlcat=yes, found_strlcat=no)
+AM_CONDITIONAL(HAVE_STRLCAT, [test "x$found_strlcat" = xyes])
+
+# vis
+AC_CHECK_FUNC(vis, found_vis=yes, found_vis=no)
+AM_CONDITIONAL(HAVE_VIS, [test "x$found_vis" = xyes])
+
+# unvis
+AC_CHECK_FUNC(unvis, found_unvis=yes, found_unvis=no)
+AM_CONDITIONAL(HAVE_UNVIS, [test "x$found_unvis" = xyes])
+
+
+EL_GETPW_R_POSIX
+EL_GETPW_R_DRAFT
+
+
+AH_BOTTOM([
+#include "sys.h"
+#define SCCSID
+#undef LIBC_SCCS
+#define lint
+])
+
+AC_CONFIG_FILES([Makefile
+                 libedit.pc
+                 src/Makefile
+                 doc/Makefile
+                 examples/Makefile])
+AC_OUTPUT
