#! /bin/sh

# These two variables are required, otherwise looking for
# programs along the PATH will not work.
PATH_SEPARATOR=:
PATH_EXPAND=y

# This is required in for "test -f foo" to find foo.exe
export TEST_FINDS_EXE=y

# The root of the DJGPP tree serves as the default prefix
# for all paths that are hardcoded in the binaries.
# When installing the installation prefix must be supplied.
test "x$prefix" = xNONE && prefix='/dev/env/DJDIR'

# This is required for config.status script to be run, since
# ./configure runs it by invoking ${CONFIG_SHELL-/bin/sh}
# CONFIG_SHELL=${CONFIG_SHELL='sh'}

# These are set here so the generated Makefile's will be good
# for every DJGPP installation, not only the one where the
# package was configured.
# $INSTALL must be an absolute path name, otherwise config.status
# will try to prepend ./ and ../ to it when it goes into subdirs.
INSTALL=${INSTALL='/dev/env/DJDIR/bin/ginstall -c'}
RANLIB=${RANLIB='/dev/env/DJDIR/bin/ranlib'}
GMSGFMT=${GMSGFMT='/dev/env/DJDIR/bin/msgfmt'}
MSGFMT=${MSGFMT='/dev/env/DJDIR/bin/msgfmt'}
XGETTEXT=${XGETTEXT='/dev/env/DJDIR/bin/xgettext'}

# A sane default for emacs.
ac_cv_path_EMACS=${EMACS='/dev/env/DJDIR/gnu/emacs/bin/emacs'}

# A sane default for grep.
ac_cv_path_GREP=${GREP='grep'}
ac_cv_path_EGREP=${EGREP='egrep'}
ac_cv_path_FGREP=${FGREP='fgrep'}

# These are set here so the generated libtool will be good
# for every DJGPP installation, not only the one where the
# package was configured.
NM=${NM='/dev/env/DJDIR/bin/nm'}
LD=${LD='/dev/env/DJDIR/bin/ld'}
STRIP=${STRIP='/dev/env/DJDIR/bin/strip'}
lt_cv_path_SED=${SED='/dev/env/DJDIR/bin/sed'}

# Force the test for 'ln -s' to report no.
ac_cv_prog_LN_S='cp -p'
cl_cv_prog_LN_S='cp -p'
cl_cv_prog_LN='cp -p'

# DJGPP needs ICONV_CONST set to const
am_cv_proto_iconv_arg1="const"
