# config.aap.in: recipe transformed into auto/config.aap by configure.

VIMNAME		= @VIMNAME@
EXNAME		= @EXNAME@
VIEWNAME	= @VIEWNAME@

CC		= @CC@
DEFS		= @DEFS@
CONF_CFLAGS	= @CFLAGS@
CPPFLAGS	= @CPPFLAGS@
srcdir		= @srcdir@
VPATH		= @srcdir@
CONF_LDFLAGS	= @LDFLAGS@
CONF_LIBS	= @LIBS@
TAGPRG		= @TAGPRG@

CPP		= @CPP@
CPP_MM		= @CPP_MM@
X_CFLAGS	= @X_CFLAGS@
X_LIBS_DIR	= @X_LIBS@
X_PRE_LIBS	= @X_PRE_LIBS@
X_EXTRA_LIBS	= @X_EXTRA_LIBS@
X_LIBS		= @X_LIB@

LUA_LIBS	= @LUA_LIBS@
LUA_SRC		= @LUA_SRC@
LUA_OBJ		= @LUA_OBJ@
LUA_CFLAGS	= @LUA_CFLAGS@
LUA_PRO		= @LUA_PRO@

MZSCHEME_LIBS	= @MZSCHEME_LIBS@
MZSCHEME_SRC	= @MZSCHEME_SRC@
MZSCHEME_OBJ	= @MZSCHEME_OBJ@
MZSCHEME_CFLAGS	= @MZSCHEME_CFLAGS@
MZSCHEME_PRO	= @MZSCHEME_PRO@

PERL		= @vi_cv_path_perl@
PERLLIB		= @vi_cv_perllib@
PERL_LIBS	= @PERL_LIBS@
SHRPENV		= @shrpenv@
PERL_SRC	= @PERL_SRC@
PERL_OBJ	= @PERL_OBJ@
PERL_PRO	= @PERL_PRO@
PERL_CFLAGS	= @PERL_CFLAGS@

PYTHON_SRC	= @PYTHON_SRC@
PYTHON_OBJ	= @PYTHON_OBJ@
PYTHON_CFLAGS	= @PYTHON_CFLAGS@
PYTHON_LIBS	= @PYTHON_LIBS@
PYTHON_CONFDIR	= @PYTHON_CONFDIR@
PYTHON_GETPATH_CFLAGS = @PYTHON_GETPATH_CFLAGS@

TCL		= @vi_cv_path_tcl@
TCL_SRC		= @TCL_SRC@
TCL_OBJ		= @TCL_OBJ@
TCL_PRO		= @TCL_PRO@
TCL_CFLAGS	= @TCL_CFLAGS@
TCL_LIBS	= @TCL_LIBS@

HANGULIN_SRC	= @HANGULIN_SRC@
HANGULIN_OBJ	= @HANGULIN_OBJ@

WORKSHOP_SRC	= @WORKSHOP_SRC@
WORKSHOP_OBJ	= @WORKSHOP_OBJ@

NETBEANS_SRC	= @NETBEANS_SRC@
NETBEANS_OBJ	= @NETBEANS_OBJ@
CHANNEL_SRC	= @CHANNEL_SRC@
CHANNEL_OBJ	= @CHANNEL_OBJ@

RUBY		= @vi_cv_path_ruby@
RUBY_SRC	= @RUBY_SRC@
RUBY_OBJ	= @RUBY_OBJ@
RUBY_PRO	= @RUBY_PRO@
RUBY_CFLAGS	= @RUBY_CFLAGS@
RUBY_LIBS	= @RUBY_LIBS@

SNIFF_SRC	= @SNIFF_SRC@
SNIFF_OBJ	= @SNIFF_OBJ@

AWK		= @AWK@

STRIP		= @STRIP@

EXEEXT		= @EXEEXT@

COMPILEDBY	= @compiledby@

INSTALLVIMDIFF	= @dovimdiff@
INSTALLGVIMDIFF	= @dogvimdiff@
INSTALL_LANGS	= @INSTALL_LANGS@
INSTALL_TOOL_LANGS	= @INSTALL_TOOL_LANGS@

### Line break character as octal number for "tr"
NL		= @line_break@

### Top directory for everything
#   Can be overruled with "PREFIX=dir", thus delay using it.
prefix		= @prefix@

### Top directory for the binary
exec_prefix	$= @exec_prefix@

### Prefix for location of data files
BINDIR		$= @bindir@

### For autoconf 2.60 and later (avoid a warning)
datarootdir	$= @datarootdir@

### Prefix for location of data files
DATADIR		$= @datadir@

### Prefix for location of man pages
MANDIR		$= @mandir@

### Do we have a GUI
GUI		= @GUITYPE@
NARROW_PROTO	= @NARROW_PROTO@
GTK_LIBNAME	= @GTK_LIBNAME@
MOTIF_LIBNAME	= @MOTIF_LIBNAME@
GUI_INC_LOC	= @GUI_INC_LOC@
GUI_LIB_LOC	= @GUI_LIB_LOC@
GUI_X_LIBS	= @GUI_X_LIBS@

### Any OS dependent extra source and object file
OS_EXTRA_SRC	= @OS_EXTRA_SRC@
OS_EXTRA_OBJ	= @OS_EXTRA_OBJ@

### If the *.po files are to be translated to *.mo files.
MAKEMO		= @MAKEMO@

# 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
