# 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@

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@

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
