#!/bin/sh
# This script was automatically generated by ACR v2.1.4
# @author: pancake <nopcode.org>
# @url:    http://www.nopcode.org
# @repo:   git clone https://github.com/radare/acr

[ -z "${AWK}" ] && AWK=awk
do_remove() {
if [ "${ACR_RMFILES}" ]; then
  printf "cleaning temporally files... "
  rm -f ${ACR_RMFILES}
  echo "done"
fi
}
control_c() {
  printf "\n\n^C control-c : script execution interrupted.\n"
  do_remove
  exit 1
}
trap control_c 2
DEBUGGER=1
USE_MAGIC=0
WANT_THREADS=1
LOADLIBS=1
R_CRITICAL_ENABLED=0
WANT_DYLINK=1
HAVE_FORK=1
WANT_PTRACE_WRAP=1
WANT_GPERF=1
WANT_CAPSTONE=1
WITH_LIBR=0
WITH_STATIC_THEMES=0
USE_CSNEXT=0
USE_CS5=0
USE_CS4=0
WITH_CAPSTONE=0
WITHOUT_SYSCAPSTONE=1
WITH_SQSH=1
WITH_SYSLZ4=0
USE_ZIP=0
USE_XXHASH=0
WITH_GPL=1
WANT_SSL=0
WANT_SSL_CRYPTO=0
WANT_LIBUV=0
USE_NEW_ABI=0
USE_RPATH=0
[ -z "${USERCC}" ] && USERCC="gcc"
[ -z "${USEROSTYPE}" ] && USEROSTYPE="auto"
[ -z "${LIBVERSION}" ] && LIBVERSION="xxx"
HAVE_JEMALLOC=1
[ -z "${R_CHECKS_LEVEL}" ] && R_CHECKS_LEVEL="2"
WANT_DEBUGSTUFF=1
split_host() {
S="$"
while : ; do
ENVWORDS="${ENVWORDS} $1_CPU $1_OS"
STR=`eval "echo ${S}$1"`
SPLIT_CPU="`echo "$STR" | cut -d - -f 1`"
SPLIT_OS="`echo "$STR" | $AWK -F - '{
	if ($2=="unknown"){
		if (NF<3) { print $2; } else { print $3; }
	} else {
		if ($2=="linux") { print $2; } else
		if (NF<3) { print $2; } else { print $3; }
	}
}'`"
eval "$1_CPU=\"$SPLIT_CPU\""
eval "$1_OS=\"$SPLIT_OS\""
shift
[ -z "$1" ] && break
done
}

QUIET=0
be_quiet() {
	QUIET=1
}

VPATH=`dirname ${0}`
if [ "${VPATH}" = "." ]; then
	WODIS=current
else
	if [ "${VPATH}" = "${PWD}" ]; then
		VPATH=.
		WODIS=current
	else
		WODIS=crosspath
		CURDIR=$PWD
		cd $VPATH
		VPATH="${PWD}/"
		cd $CURDIR
	fi
fi

guess_os() {
if [ -e "${VPATH}/config.guess" ]; then
	sh ${VPATH}/config.guess
	return
fi
CPU="`uname -m|sed -e 's, ,,g'|cut -d - -f 1`"
OS="`uname -s|tr A-Z a-z`"
uname -r | grep -qE "(Microsoft|WSL)" 2>/dev/null && OS="wsl"
GNU="`uname --help 2>&1 | grep gnu`"
[ "${GNU}" ] && OS="${OS}-gnu"
[ "${CPU}" = ppc ] && CPU="powerpc"
echo "${CPU}-unknown-${OS}"
}

SEARCHPATH="/usr /usr/local /usr/pkg /sw"

: ${PREFIX:=/usr/local}
CROSSBUILD=0
BUILD=`guess_os`
HOST="${BUILD}"
TARGET="${HOST}"
ETCDIR="/etc"
SYSCONFDIR=""
DESCRIPTION="The UNIX-like reverse engineering toolkit"

create_environ() {
: ${EPREFIX:="${PREFIX}"}
: ${SPREFIX:="${PREFIX}"}
: ${BINDIR:="${SPREFIX}/bin"}
: ${SBINDIR:="${PREFIX}/sbin"}
: ${ETCDIR:="${SPREFIX}/etc"}
: ${LIBDIR:="${SPREFIX}/lib"}
: ${PKGCFG_LIBDIR:='${exec_prefix}/lib'}
: ${PKGCFG_INCDIR:='${prefix}/include'}
: ${LIBEXECDIR:="${SPREFIX}/libexec"}
: ${INCLUDEDIR:="${SPREFIX}/include"}
: ${DATADIR:="${SPREFIX}/share"}
: ${INFODIR:="${DATADIR}/info"}
: ${MANDIR:="${DATADIR}/man"}
: ${DOCDIR:="${DATADIR}/doc/radare2"}
: ${LOCALSTATEDIR:="${SPREFIX}/var"}
for A in `echo ${PATH} | sed -e 's,:, ,g'` ; do
  [ -e "$A"/ginstall ] && : ${INSTALL:="$A"/ginstall} && break
  [ -e "$A"/install ] && : ${INSTALL:="$A"/install} && break
done
: ${INSTALL_DIR:=${INSTALL} -d}
: ${INSTALL_DATA:=${INSTALL} -m 644}
: ${INSTALL_SCRIPT:=${INSTALL} -m 755}
: ${INSTALL_PROGRAM:=${INSTALL} -m 755}
: ${INSTALL_PROGRAM_STRIP:=${INSTALL} -m 755 -s}
: ${INSTALL_MAN:=${INSTALL} -m 444}
: ${INSTALL_LIB:=${INSTALL} -m 755 -c}
 PKGNAME='radare2' ; VERSION='5.9.4' ; VERSION_MAJOR=5; VERSION_MINOR=9; VERSION_PATCH=4; VERSION_NUMBER=50904; CONTACT_MAIL="pancake@nopcode.org" ; CONTACT_NAME="pancake" ; CONTACT="pancake <pancake@nopcode.org>" ;
}

show_usage() {
cat <<EOF2
'configure' configures radare2-5.9.4 to adapt to many kinds of systems.

Usage: ./configure [OPTION]... [VAR=VALUE]...

To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE.  See below for descriptions of some of the useful variables.

Defaults for the options are specified in brackets.

Configuration:
  -h, --help              display this help and exit
  -r, --report            show what libs/programs require to work
  -q, --quiet             be quiet, less verbose (see ./configure -qV)
  -V, --version           display version information and exit

Installation directories:
  --exec-prefix=EPREFIX  install arch-dependent files in EPREFIX [PREFIX]
  --prefix=PREFIX        install arch-independent files in PREFIX [/usr/local]
  --sandbox=SPREFIX      sandbox prefix directory: SPREFIX [PREFIX]

Fine tuning of the installation directories:
  --bindir=DIR           user executables [EPREFIX/bin]
  --datadir=DIR          read-only architecture-independent data [PREFIX/share]
  --docdir=DIR           documentation directory [DATADIR/doc/radare2]
  --includedir=DIR       C header files [PREFIX/include]
  --infodir=DIR          info documentation [DATADIR/info]
  --libexecdir=DIR       program executables [EPREFIX/libexec]
  --libdir=DIR           object code libraries [EPREFIX/lib]
  --libpath=DIR          set rpath/libname-path to linker
  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
  --mandir=DIR           man documentation [DATADIR/man]
  --sbindir=DIR          system admin executables [EPREFIX/sbin]
  --etcdir=DIR           same as --sysconfdir (/etc)
  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]

System types:
  --build=BUILD          configure for building on BUILD [guessed]
  --host=HOST            cross-compile to build programs to run on HOST [BUILD]
  --target=TARGET        configure for building compilers for TARGET [HOST]
EOF2

printf "
Optional Features:
  --disable-debugger     disable native debugger features
  --with-sysmagic        force to use system's magic
  --disable-threads      disable use of thread apis
  --disable-loadlibs     disable loading plugins
  --enable-threadsafety  enable mutexes in critical code paths
  --without-dylink       disable support for dynamic loading of plugins
  --without-fork         disable fork
  --without-ptrace-wrap  build ptrace-wrap support needed for the iaito debugger on Linux
  --without-gperf        do not statically link the sdb databases even if gperf is found
  --without-capstone     dont build the capstone dependency
  --with-libr            build libr.a and libr.dylib
  --with-static-themes   default themes are compiled and fallback if not available on disk
  --with-capstone-next   build next branch of the capstone disassembler
  --with-capstone5       build v5 branch of capstone5 (default)
  --with-capstone4       build v4 branch of capstone
  --with-syscapstone     force to use system-wide capstone
  --without-syscapstone  avoid the system-wide capstone
  --without-sqsh         ensure squashfs support is not included, even if library is found
  --with-syslz4          force to use system's liblz4
  --with-syszip          force to use system's libzip and zlib
  --with-sysxxhash       force to use system's xxhash
  --without-gpl          do not build GPL code (grub, cxx, ... )
  --with-ssl             build with (Open|Boring|..)SSL if possible
  --with-ssl-crypto      build crypto code with libssl
  --with-libuv           use libuv if available
  --with-new-abi         use the new ABI breaking changes scheduled for the next major release
  --with-rpath           use rpath to build
  --with-compiler        Define compiler to use (see mk/) (USERCC=gcc)
  --with-ostype          Choose OS ( android windows wsl mingw32 bsd solaris gnulinux darwin haiku ) (USEROSTYPE=auto)
  --with-libversion      specify different libversion (LIBVERSION=xxx)
  --without-jemalloc     build without jemalloc
  --with-checks-level    value between 0 and 3 to enable different level of assert (see R_CHECKS_LEVEL) (R_CHECKS_LEVEL=2)
  --disable-debug-stuff  disable the log messages and disable control-c
"
printf "
Some influential environment variables:
  CC          C compiler command
  CFLAGS      C compiler flags
  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
              nonstandard directory <lib dir>
  CPPFLAGS    C/C++ preprocessor flags, e.g. -I<include dir> if you have
              headers in a nonstandard directory <include dir>
  CPP         C preprocessor
"
printf "
Report bugs to: pancake <pancake@nopcode.org>"
echo ""
exit 0
}

take_environ() {
: ${SH:=/bin/sh}
: ${CPP:=cpp}
: ${CC:=gcc}
: ${PREFIX:=/usr/local/}
}

ochof() {
	[ "$QUIET" = 1 ] && return
	printf "$*"
}

ocho() {
	[ "$QUIET" = 1 ] && return
	echo "$*"
}

show_version() {
if [ "$QUIET" = 1 ]; then
	echo "5.9.4"
	exit 0
fi
echo "radare2-5.9.4 configuration script done with acr v2.1.4.
The 'Free Software Foundation' message is only for autodetection.
Originally written by pancake <nopcode.org>."
exit 0
}

parse_options() {
flag=`echo $1| cut -d = -f 1`
value=`echo $1| $AWK 'BEGIN{FS="=";}{print $2}'`
flag2=`echo $flag|cut -f2- -d -| sed -e 's,-,_,g' -e 's,^_,,g'|tr '[a-z]' '[A-Z]'`

if [ "${TARGET_OS}" = "darwin" ]; then
	LIBPATH=-Wl,-install_name,
else
	LIBPATH=-Wl,-R
fi

case $flag in
-h|--help|--hel|--h|--he|-help)
	show_usage ; ;;
-qV|-quiet-version|--quiet-version)
	be_quiet
	show_version ; ;;
-q|-quiet|--quiet)
	be_quiet ; ;;
-V|-version|--version)
	show_version ; ;;
-r|--r|--report)
echo "PKGNAME:     radare2"
echo "VERSION:     5.9.4"
echo "AUTHOR:      pancake"
echo "EMAIL:       pancake@nopcode.org"
echo "DESCRIPTION: The UNIX-like reverse engineering toolkit"
echo "LANGS:       c"
echo "REQUIRED:    libdl"
echo "OPTIONAL:    libmagic libz libzip libxxhash libssl liblibuv>=1.0.0"
echo "PKGCONFIG:   capstone libsqsh liblz4 openssl libuv"
echo "FLAGS:       --disable-debugger --with-sysmagic --disable-threads --disable-loadlibs --enable-threadsafety --without-dylink --without-fork --without-ptrace-wrap --without-gperf --without-capstone --with-libr --with-static-themes --with-capstone-next --with-capstone5 --with-capstone4 --with-syscapstone --without-syscapstone --without-sqsh --with-syslz4 --with-syszip --with-sysxxhash --without-gpl --with-ssl --with-ssl-crypto --with-libuv --with-new-abi --with-rpath --with-compiler=gcc --with-ostype=auto --with-libversion=xxx --without-jemalloc --with-checks-level=2 --disable-debug-stuff"
	exit 0
	;;
--cache-file)
	# ignored: acr have no cache
	;;
--build)
	BUILD="$value"; split_host BUILD ; ;;
--host)
	CROSSBUILD=1 # XXX
	HOST="$value"; split_host HOST ; ;;
--target)
	TARGET="$value"; split_host TARGET ; ;;
--prefix)
	PREFIX="$value"; ;;
--exec-prefix)
	EPREFIX="$value"; ;;
--sandbox|--sprefix)
	SPREFIX="$value"; ;;
--bindir)
	BINDIR="$value"; ;;
--sbindir)
	SBINDIR="$value"; ;;
--libexecdir)
	LIBEXECDIR="$value"; ;;
--docdir)
	DOCDIR="$value"; ;;
--datadir)
	DATADIR="$value"; ;;
--sysconfdir)
	SYSCONFDIR="$value"
	ETCDIR="$value"; ;;
--etcdir)
	SYSCONFDIR="$value"
	ETCDIR="$value"; ;;
--sharedstatedir)
	SHAREDSTATEDIR="$value"; ;;
--localstatedir)
	LOCALSTATEDIR="$value"; ;;
--libdir)
	LIBDIR="$value"
	PKGCFG_LIBDIR="$value"; ;;
--libpath)
	LDFLAGS="${LDFLAGS} ${LIBPATH}$value"; ;;
--includedir)
	PKGCFG_INCDIR="$value"
	INCLUDEDIR="$value"; CFLAGS="${CFLAGS} -I$value"; ;;
--infodir)
	INFODIR="$value"; ;;
--mandir)
	MANDIR="$value"; ;;

"--disable-debugger") DEBUGGER="0"; ;;
"--with-sysmagic") USE_MAGIC="1"; ;;
"--disable-threads") WANT_THREADS="0"; ;;
"--disable-loadlibs") LOADLIBS="0"; ;;
"--enable-threadsafety") R_CRITICAL_ENABLED="1"; ;;
"--without-dylink") WANT_DYLINK="0"; ;;
"--without-fork") HAVE_FORK="0"; ;;
"--without-ptrace-wrap") WANT_PTRACE_WRAP="0"; ;;
"--without-gperf") WANT_GPERF="0"; ;;
"--without-capstone") WANT_CAPSTONE="0"; ;;
"--with-libr") WITH_LIBR="1"; ;;
"--with-static-themes") WITH_STATIC_THEMES="1"; ;;
"--with-capstone-next") USE_CSNEXT="1"; ;;
"--with-capstone5") USE_CS5="1"; ;;
"--with-capstone4") USE_CS4="1"; ;;
"--with-syscapstone") WITH_CAPSTONE="1"; ;;
"--without-syscapstone") WITHOUT_SYSCAPSTONE="0"; ;;
"--without-sqsh") WITH_SQSH="0"; ;;
"--with-syslz4") WITH_SYSLZ4="1"; ;;
"--with-syszip") USE_ZIP="1"; ;;
"--with-sysxxhash") USE_XXHASH="1"; ;;
"--without-gpl") WITH_GPL="0"; ;;
"--with-ssl") WANT_SSL="1"; ;;
"--with-ssl-crypto") WANT_SSL_CRYPTO="1"; ;;
"--with-libuv") WANT_LIBUV="1"; ;;
"--with-new-abi") USE_NEW_ABI="1"; ;;
"--with-rpath") USE_RPATH="1"; ;;
--with-compiler) if [ -z "${value}" ]; then USERCC="gcc"; else USERCC="${value}" ; fi ;;
--with-ostype) if [ -z "${value}" ]; then USEROSTYPE="auto"; else USEROSTYPE="${value}" ; fi ;;
--with-libversion) if [ -z "${value}" ]; then LIBVERSION="xxx"; else LIBVERSION="${value}" ; fi ;;
"--without-jemalloc") HAVE_JEMALLOC="0"; ;;
--with-checks-level) if [ -z "${value}" ]; then R_CHECKS_LEVEL="2"; else R_CHECKS_LEVEL="${value}" ; fi ;;
"--disable-debug-stuff") WANT_DEBUGSTUFF="0"; ;;
*) if [ "$value" ]; then eval "`echo $flag2=$value`" ;
else echo ; echo "WARNING: Unknown flag '$flag'." >&2 ; echo ; fi ;;
esac
}

# MAIN #
take_environ
split_host BUILD HOST TARGET
[ -z "$ACRHOOK" ] && ACRHOOK=./configure.hook
[ -e "$ACRHOOK" ] && . ${ACRHOOK}

while : ; do
[ -z "$1" ] && break
parse_options "$1"
shift
done

ENVWORDS="MANDIR DESCRIPTION INFODIR LIBDIR INCLUDEDIR LOCALSTATEDIR ETCDIR SYSCONFDIR DATADIR DOCDIR LIBEXECDIR SBINDIR BINDIR EPREFIX PREFIX SPREFIX TARGET HOST BUILD INSTALL INSTALL_LIB INSTALL_MAN INSTALL_PROGRAM INSTALL_PROGRAM_STRIP INSTALL_DIR INSTALL_SCRIPT INSTALL_DATA HOST_OS HOST_CPU BUILD_OS BUILD_CPU TARGET_OS TARGET_CPU VERSION VERSION_MAJOR VERSION_MINOR VERSION_PATCH VERSION_NUMBER PKGCFG_LIBDIR PKGCFG_INCDIR PKGNAME VPATH CONTACT CONTACT_NAME CONTACT_MAIL CC CFLAGS CPPFLAGS LDFLAGS HAVE_LANG_C DEBUGGER HAVE_LIB_DL DL_LIBS PKGCONFIG R2_BUILDSYSTEM HAVE_PATCH PATCH HAVE_AR AR HAVE_GIT GIT HAVE_GPERF GPERF HAVE_LIB_MAGIC HAVE_LINUX_CAN_H USE_MAGIC USE_LIB_MAGIC LIBMAGIC WANT_THREADS LOADLIBS R_CRITICAL_ENABLED WANT_DYLINK HAVE_FORK WANT_PTRACE_WRAP WANT_GPERF WANT_CAPSTONE WITH_LIBR WITH_STATIC_THEMES USE_CSNEXT USE_CS5 USE_CS4 WITH_CAPSTONE WITHOUT_SYSCAPSTONE CAPSTONE_CFLAGS CAPSTONE_LDFLAGS HAVE_PKGCFG_CAPSTONE USE_CAPSTONE SQSH_CFLAGS SQSH_LDFLAGS HAVE_PKGCFG_LIBSQSH WITH_SQSH USE_SQSH LZ4_CFLAGS LZ4_LDFLAGS HAVE_PKGCFG_LIBLZ4 WITH_SYSLZ4 USE_SYSLZ4 HAVE_LIB_Z HAVE_LIB_ZIP USE_ZIP USE_LIB_ZIP LIBZIP HAVE_LIB_XXHASH USE_XXHASH USE_LIB_XXHASH LIBXXHASH WITH_GPL HAVE_DECL_ADDR_NO_RANDOMIZE HAVE_DECL___GLIBC__ HAVE_ARC4RANDOM_UNIFORM HAVE_EXPLICIT_BZERO HAVE_EXPLICIT_MEMSET HAVE_CLOCK_NANOSLEEP HAVE_SIGACTION HAVE_CLOCK_GETTIME CLOCK_LDFLAGS SUPPORT_GNU99 HAVE_LIB_GMP WANT_SSL WANT_SSL_CRYPTO HAVE_OPENSSL SSL_CFLAGS SSL_LDFLAGS HAVE_LIB_SSL HAVE_PKGCFG_OPENSSL WANT_LIBUV HAVE_LIBUV_VERSION_1_0_0 LIBUV_CFLAGS LIBUV_LDFLAGS HAVE_PKGCFG_LIBUV HAVE_LIBUV USE_NEW_ABI USE_RPATH USERCC USEROSTYPE LIBVERSION HAVE_JEMALLOC HAVE_PTRACE USE_PTRACE_WRAP R_CHECKS_LEVEL WANT_DEBUGSTUFF"

create_environ

ocho "checking build system type... ${BUILD}"
ocho "checking host system type... ${HOST}"
ocho "checking target system type... ${TARGET}"
[ "${CROSSBUILD}" = 1 ] && echo "using crosscompilation mode."

#split_host BUILD HOST TARGET
[ -n "${prefix}" ] && PREFIX="${prefix}"
ocho "checking for working directories... ${WODIS}"
ocho "using prefix '${PREFIX}'"
ACR_RMFILES=" test.c a.out a.exe"

COMPILER=CC
ochof "checking for c compiler... "
HAVE_LANG_C=1
if [ "${CROSSBUILD}" = 1 ]; then
 (command -v ${HOST}-${CC} >/dev/null 2>&1)
 if [ $? = 0 ]; then CC="${HOST}-${CC}"; fi
fi
echo "int main(int argc, char **argv){return 0;}" > test.c
 (exec ${CC} -o a.out ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} test.c >/dev/null 2>&1)
if [ $? = 0 ]; then echo ${CC}; else
 echo no ; HAVE_LANG_C=0
do_remove
echo "ERROR: ${CC} cannot create executables" >&2 ;
exit 1 ; fi
ochof "checking for dynamic library... "
HAVE_LIB_DL=0
for OS in gnulinux linux gnu/kfreebsd syllable serenityos vinix sunos darwin beos solaris wsl ; do
if [ "${HOST_OS}" = "${OS}" ]; then
	HAVE_LIB_DL=1
	break;
fi
done
if [ "${HAVE_LIB_DL}" = 1 ]; then
	DL_LIBS="-ldl"
	echo "required"
else
	DL_LIBS=""
	echo "libc"
fi
ochof "checking for pkg-config... "
ENVWORDS="${ENVWORDS} HAVE_PKGCONFIG"
if [ -n "$PKGCONFIG" ]; then
	if [ -x "$PKGCONFIG" ]; then
		_HAVE_PKGCONFIG="${PKGCONFIG}"
	else
		ocho "PKGCONFIG env is not executable"
		PKGCONFIG=""
	fi
else
	IFS=:
	for A in ${PATH} ; do
		if [ -x "${A}/pkg-config" ]; then
			PKGCONFIG="${A}/pkg-config"
		elif [ -x "${A}/pkgconf" ]; then
			PKGCONFIG="${A}/pkgconf"
		else
			continue
		fi
		break
	done
	unset IFS
fi
if [ -n "${PKGCONFIG}" ]; then
	ocho ${PKGCONFIG}
	HAVE_PKGCONFIG=1
else
	HAVE_PKGCONFIG=0
ocho no; fi
R2_BUILDSYSTEM=""make""
ochof "checking for patch... "
if [ -x "${PATCH}" ]; then
	FIND=${PATCH}
else
	FIND=""
	IFS=:
	for A in ${PATH} ; do
		if [ -x "${A}/patch" ]; then
			FIND="${A}/patch"
			break;
		fi
	done
	unset IFS
fi
if [ -n "${FIND}" ]; then
	ocho ${FIND};
HAVE_PATCH=1
	PATCH=${FIND}
else
	HAVE_PATCH=0
	PATCH=patch
if [ "" = 1 ]; then
echo "Cannot find patch" >&2
else
echo no
fi
	echo "error: This program is required." >&2
	exit 1 ; fi
ochof "checking for ar... "
if [ -x "${AR}" ]; then
	FIND=${AR}
else
	FIND=""
	IFS=:
	for A in ${PATH} ; do
		if [ -x "${A}/ar" ]; then
			FIND="${A}/ar"
			break;
		fi
	done
	unset IFS
fi
if [ -n "${FIND}" ]; then
	ocho ${FIND};
HAVE_AR=1
	AR=${FIND}
else
	HAVE_AR=0
	AR=ar
if [ "" = 1 ]; then
echo "Cannot find ar" >&2
else
echo no
fi
	echo "error: This program is required." >&2
	exit 1 ; fi
ochof "checking for git... "
if [ -x "${GIT}" ]; then
	FIND=${GIT}
else
	FIND=""
	IFS=:
	for A in ${PATH} ; do
		if [ -x "${A}/git" ]; then
			FIND="${A}/git"
			break;
		fi
	done
	unset IFS
fi
if [ -n "${FIND}" ]; then
	ocho ${FIND};
HAVE_GIT=1
	GIT=${FIND}
else
	HAVE_GIT=0
	GIT=git
if [ "" = 1 ]; then
echo "Cannot find git" >&2
else
echo no
fi ; fi
ochof "checking for gperf... "
if [ -x "${GPERF}" ]; then
	FIND=${GPERF}
else
	FIND=""
	IFS=:
	for A in ${PATH} ; do
		if [ -x "${A}/gperf" ]; then
			FIND="${A}/gperf"
			break;
		fi
	done
	unset IFS
fi
if [ -n "${FIND}" ]; then
	ocho ${FIND};
HAVE_GPERF=1
	GPERF=${FIND}
else
	HAVE_GPERF=0
	GPERF=gperf
if [ "" = 1 ]; then
echo "Cannot find gperf" >&2
else
echo no
fi ; fi
check_library() {
VAR=$1
S="$"
_REQUIRED=$3
_CHKLIB_NAME=$2
_CHKLIB_LIBS=$(echo "-l${_CHKLIB_NAME}" | sed 's,+, -l,g')
ochof "checking for lib${_CHKLIB_NAME} ... "
echo "int main(int ac, char **av){return 0;}" > test.c
eval ${S}${COMPILER} ${CFLAGS} ${CPPFLAGS} ${CXXFLAGS} ${LDFLAGS} ${_CHKLIB_LIBS} test.c >/dev/null 2>&1
if [ $? = 0 ]; then
	eval ${VAR}=1
	echo yes
else
	eval ${VAR}=0
	echo no
	if [ "${_REQUIRED}" = 1 ]; then
	  echo "this library is required."
	  do_remove
	  exit 1
	fi
fi
}

check_library HAVE_LIB_MAGIC magic 0
check_include() {
VAR=$1
INC=$2
_REQUIRED=$3
ochof "checking for $2... "
echo > test.c

echo "#include <${INC}>" >>test.c
echo 'int main(int ac, char **av){return 0;}' >>test.c
eval \$${COMPILER} ${CFLAGS} ${CPPFLAGS} ${CXXFLAGS} test.c >/dev/null 2>&1
if [ $? = 0 ]; then
	eval ${VAR}=1
	echo yes
else
	eval ${VAR}=0
	echo no
	if [ 1 = "0" ]; then
		echo 'ERROR: required include not found.' >&2
		do_remove
		exit 1
	fi
fi
}

check_include HAVE_LINUX_CAN_H linux/can.h 0

if [ 11 = "$HAVE_LIB_MAGIC$USE_MAGIC" ]; then

USE_LIB_MAGIC="1"
LIBMAGIC="-lmagic"
else
USE_LIB_MAGIC="0"
LIBMAGIC=""; fi
if [ "$WANT_GPERF" = "0" ]; then
HAVE_GPERF="0"; fi
if [ "$WITH_CAPSTONE" = "1" ]; then
if [ -z "${PKGCONFIG}" ]; then pkg-config --version >/dev/null 2>&1 ; if [ 0 = 0 ]; then PKGCONFIG=pkg-config ; else PKGCONFIG=pkgconf ; fi; fi
type ${PKGCONFIG} > /dev/null 2>&1 || echo "ERROR: Cannot find valid PKGCONFIG, pkg-config or pkgconf in PATH"
echo 'Using PKGCONFIG: '${PKGCONFIG}
printf 'checking pkg-config flags for capstone... '
tmp=`${PKGCONFIG} --cflags capstone 2>/dev/null`
if [ $? != 0 ]; then echo no ; HAVE_PKGCFG_CAPSTONE=0;
CAPSTONE_CFLAGS='';CAPSTONE_LDFLAGS='';
else
CAPSTONE_CFLAGS=$tmp;
tmp=`${PKGCONFIG} --libs capstone 2>/dev/null`
if [ $? = 0 ]; then
echo yes; HAVE_PKGCFG_CAPSTONE=1;
CAPSTONE_LDFLAGS=$tmp; fi; fi; fi
if [ 11 = "$WITH_CAPSTONE$HAVE_PKGCFG_CAPSTONE" ]; then

USE_CAPSTONE="1"
else
USE_CAPSTONE="0"; fi
if [ "$WITHOUT_SYSCAPSTONE" = "0" ]; then
USE_CAPSTONE="0"
HAVE_PKGCFG_CAPSTONE="0"
CAPSTONE_CFLAGS=""
CAPSTONE_LDFLAGS=""; fi
if [ -z "${PKGCONFIG}" ]; then pkg-config --version >/dev/null 2>&1 ; if [ 0 = 0 ]; then PKGCONFIG=pkg-config ; else PKGCONFIG=pkgconf ; fi; fi
printf 'checking pkg-config flags for libsqsh... '
tmp=`${PKGCONFIG} --cflags libsqsh 2>/dev/null`
if [ $? != 0 ]; then echo no ; HAVE_PKGCFG_LIBSQSH=0;
SQSH_CFLAGS='';SQSH_LDFLAGS='';
else
SQSH_CFLAGS=$tmp;
tmp=`${PKGCONFIG} --libs libsqsh 2>/dev/null`
if [ $? = 0 ]; then
echo yes; HAVE_PKGCFG_LIBSQSH=1;
SQSH_LDFLAGS=$tmp; fi; fi
if [ 11 = "$WITH_SQSH$HAVE_PKGCFG_LIBSQSH" ]; then

USE_SQSH="1"
else
USE_SQSH="0"; fi
if [ -z "${PKGCONFIG}" ]; then pkg-config --version >/dev/null 2>&1 ; if [ 0 = 0 ]; then PKGCONFIG=pkg-config ; else PKGCONFIG=pkgconf ; fi; fi
printf 'checking pkg-config flags for liblz4... '
tmp=`${PKGCONFIG} --cflags liblz4 2>/dev/null`
if [ $? != 0 ]; then echo no ; HAVE_PKGCFG_LIBLZ4=0;
LZ4_CFLAGS='';LZ4_LDFLAGS='';
else
LZ4_CFLAGS=$tmp;
tmp=`${PKGCONFIG} --libs liblz4 2>/dev/null`
if [ $? = 0 ]; then
echo yes; HAVE_PKGCFG_LIBLZ4=1;
LZ4_LDFLAGS=$tmp; fi; fi
if [ 11 = "$WITH_SYSLZ4$HAVE_PKGCFG_LIBLZ4" ]; then

USE_SYSLZ4="1"
else
USE_SYSLZ4="0"; fi
check_library HAVE_LIB_Z z 0
check_library HAVE_LIB_ZIP zip 0
if [ 11 = "$HAVE_LIB_Z$USE_ZIP" ]; then

if [ "$HAVE_LIB_ZIP" = "1" ]; then
USE_LIB_ZIP="1"
LIBZIP="-lz -lzip"
else
USE_LIB_ZIP="0"
LIBZIP=""; fi
else
USE_LIB_ZIP="0"
LIBZIP=""; fi
check_library HAVE_LIB_XXHASH xxhash 0
if [ 11 = "$HAVE_LIB_XXHASH$USE_XXHASH" ]; then

USE_LIB_XXHASH="1"
LIBXXHASH="-lxxhash"
else
USE_LIB_XXHASH="0"
LIBXXHASH=""; fi
printf "checking declaration of ADDR_NO_RANDOMIZE in sys/personality.h... "
echo "#include <sys/personality.h>" > test.c
echo "int main(int ac, char **av){ void *a = (void *)ADDR_NO_RANDOMIZE; return 0; }" >> test.c
${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} test.c >/dev/null 2>&1
if [ $? = 0 ]; then
	echo yes ; HAVE_DECL_ADDR_NO_RANDOMIZE=1
else
	HAVE_DECL_ADDR_NO_RANDOMIZE=0 ; echo no ; fi
printf "checking declaration of __GLIBC__ in features.h... "
echo "#include <features.h>" > test.c
echo "int main(int ac, char **av){ void *a = (void *)__GLIBC__; return 0; }" >> test.c
${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} test.c >/dev/null 2>&1
if [ $? = 0 ]; then
	echo yes ; HAVE_DECL___GLIBC__=1
else
	HAVE_DECL___GLIBC__=0 ; echo no ; fi
printf "checking function arc4random_uniform() in c... "
echo "extern int arc4random_uniform(); int main(int ac, char **av){ arc4random_uniform(0); return 0; }" > test.c
${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} -lc test.c >/dev/null 2>&1
if [ $? = 0 ]; then
	echo yes ; HAVE_ARC4RANDOM_UNIFORM=1
else
	HAVE_ARC4RANDOM_UNIFORM=0 ; echo no ; fi
printf "checking function explicit_bzero() in c... "
echo "extern int explicit_bzero(); int main(int ac, char **av){ explicit_bzero(0); return 0; }" > test.c
${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} -lc test.c >/dev/null 2>&1
if [ $? = 0 ]; then
	echo yes ; HAVE_EXPLICIT_BZERO=1
else
	HAVE_EXPLICIT_BZERO=0 ; echo no ; fi
printf "checking function explicit_memset() in c... "
echo "extern int explicit_memset(); int main(int ac, char **av){ explicit_memset(0); return 0; }" > test.c
${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} -lc test.c >/dev/null 2>&1
if [ $? = 0 ]; then
	echo yes ; HAVE_EXPLICIT_MEMSET=1
else
	HAVE_EXPLICIT_MEMSET=0 ; echo no ; fi
printf "checking function clock_nanosleep() in c... "
echo "extern int clock_nanosleep(); int main(int ac, char **av){ clock_nanosleep(0); return 0; }" > test.c
${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} -lc test.c >/dev/null 2>&1
if [ $? = 0 ]; then
	echo yes ; HAVE_CLOCK_NANOSLEEP=1
else
	HAVE_CLOCK_NANOSLEEP=0 ; echo no ; fi
printf "checking function sigaction() in c... "
echo "extern int sigaction(); int main(int ac, char **av){ sigaction(0); return 0; }" > test.c
${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} -lc test.c >/dev/null 2>&1
if [ $? = 0 ]; then
	echo yes ; HAVE_SIGACTION=1
else
	HAVE_SIGACTION=0 ; echo no ; fi
printf "checking function clock_gettime() in c... "
echo "extern int clock_gettime(); int main(int ac, char **av){ clock_gettime(0); return 0; }" > test.c
${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} -lc test.c >/dev/null 2>&1
if [ $? = 0 ]; then
	echo yes ; HAVE_CLOCK_GETTIME=1
else
	HAVE_CLOCK_GETTIME=0 ; echo no ; fi
if [ "$HAVE_CLOCK_GETTIME" = "0" ]; then
if [ "$HAVE_DECL___GLIBC__" = "1" ]; then
CLOCK_LDFLAGS="${CLOCK_LDFLAGS} '-lrt'"; fi; fi
printf "checking cflags  -std=gnu99... "
echo "int main(int ac, char **av){ return 0; }" > .test.c
${CC}  -std=gnu99 ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}  -std=gnu99 .test.c >/dev/null 2>&1
if [ $? = 0 ]; then
	echo yes ; SUPPORT_GNU99=1
else
	SUPPORT_GNU99=0 ; echo no ; fi
HAVE_LIB_GMP="0"
if [ "$WANT_SSL" = "0" ]; then
HAVE_OPENSSL="0"
SSL_CFLAGS=""
SSL_LDFLAGS=""
else
check_library HAVE_LIB_SSL ssl 0
if [ -z "${PKGCONFIG}" ]; then pkg-config --version >/dev/null 2>&1 ; if [ 0 = 0 ]; then PKGCONFIG=pkg-config ; else PKGCONFIG=pkgconf ; fi; fi
printf 'checking pkg-config flags for openssl... '
tmp=`${PKGCONFIG} --cflags openssl 2>/dev/null`
if [ $? != 0 ]; then echo no ; HAVE_PKGCFG_OPENSSL=0;
SSL_CFLAGS='';SSL_LDFLAGS='';
else
SSL_CFLAGS=$tmp;
tmp=`${PKGCONFIG} --libs openssl 2>/dev/null`
if [ $? = 0 ]; then
echo yes; HAVE_PKGCFG_OPENSSL=1;
SSL_LDFLAGS=$tmp; fi; fi
if [ ! "$SSL_LDFLAGS" = "" ]; then
HAVE_OPENSSL="1"; fi
if [ "$SSL_LDFLAGS" = "" ]; then
if [ "$HAVE_LIB_SSL" = "0" ]; then
HAVE_OPENSSL="0"
else
SSL_LDFLAGS="-lssl"; fi; fi
if [ 11 = "$WANT_SSL_CRYPTO$HAVE_OPENSSL" ]; then

WANT_SSL_CRYPTO="1"
else
WANT_SSL_CRYPTO="0"; fi; fi
HAVE_LIBUV_VERSION_1_0_0=0
printf "checking version of library libuv >= 1.0.0... "
${PKGCONFIG} --atleast-version=1.0.0 libuv >/dev/null 2>&1
if [ $? = 0 ]; then HAVE_LIBUV_VERSION_1_0_0=1 ; echo ok; else
echo "no" ; fi
if [ "$HAVE_LIBUV_VERSION_1_0_0" = "1" ]; then
if [ -z "${PKGCONFIG}" ]; then pkg-config --version >/dev/null 2>&1 ; if [ 0 = 0 ]; then PKGCONFIG=pkg-config ; else PKGCONFIG=pkgconf ; fi; fi
printf 'checking pkg-config flags for libuv... '
tmp=`${PKGCONFIG} --cflags libuv 2>/dev/null`
if [ $? != 0 ]; then echo no ; HAVE_PKGCFG_LIBUV=0;
LIBUV_CFLAGS='';LIBUV_LDFLAGS='';
else
LIBUV_CFLAGS=$tmp;
tmp=`${PKGCONFIG} --libs libuv 2>/dev/null`
if [ $? = 0 ]; then
echo yes; HAVE_PKGCFG_LIBUV=1;
LIBUV_LDFLAGS=$tmp; fi; fi
if [ ! "$LIBUV_LDFLAGS" = "" ]; then
HAVE_LIBUV="1"
else
HAVE_LIBUV="0"; fi
if [ "$WANT_LIBUV" = "0" ]; then
HAVE_LIBUV="0"; fi
else
HAVE_LIBUV="0"; fi
if [ "$USEROSTYPE" = "auto" ]; then
if [ "$HOST_OS" = "mingw32_nt-6.2" ]; then
USEROSTYPE="mingw32"
else
if [ "$HOST_OS" = "mingw32_nt" ]; then
USEROSTYPE="mingw32"
else
if [ "$HOST_OS" = "wsl" ]; then
USEROSTYPE="wsl"
else
if [ "$HOST_OS" = "linux" ]; then
USEROSTYPE="gnulinux"
else
if [ "$HOST_OS" = "serenityos" ]; then
USEROSTYPE="serenityos"
HAVE_LIB_DL="1"
DL_LIBS="-ldl"
else
if [ "$HOST_OS" = "gnu" ]; then
USEROSTYPE="gnulinux"
HAVE_LIB_DL="1"
DL_LIBS="-ldl"
else
if [ "$HOST_OS" = "sunos" ]; then
USEROSTYPE="solaris"
else
if [ "$HOST_OS" = "gnu/kfreebsd" ]; then
USEROSTYPE="bsd"
else
if [ "$HOST_OS" = "netbsd" ]; then
USEROSTYPE="bsd"
else
if [ "$HOST_OS" = "freebsd" ]; then
USEROSTYPE="bsd"
else
if [ "$HOST_OS" = "openbsd" ]; then
USEROSTYPE="bsd"
else
if [ "$HOST_OS" = "darwin" ]; then
USEROSTYPE="darwin"
else
if [ "$HOST_OS" = "haiku" ]; then
USEROSTYPE="haiku"
else
if [ "$HOST_OS" = "aix" ]; then
USEROSTYPE="aix"; fi; fi; fi; fi; fi; fi; fi; fi; fi; fi; fi; fi; fi; fi; fi
if [ "$LIBVERSION" = "xxx" ]; then
LIBVERSION="$VERSION"; fi
if [ "$USEROSTYPE" = "gnulinux" ]; then
HAVE_PTRACE="1"
USE_PTRACE_WRAP="1"
else
if [ "$USEROSTYPE" = "wsl" ]; then
BUILD="${SPLIT_CPU}-unknown-linux-gnu"
HOST="$BUILD"
TARGET="$HOST"
USEROSTYPE="gnulinux"
HAVE_PTRACE="1"
USE_PTRACE_WRAP="0"
else
if [ "$USEROSTYPE" = "android" ]; then
HAVE_PTRACE="1"
USE_PTRACE_WRAP="1"
else
if [ "$USEROSTYPE" = "mingw32" ]; then
HAVE_PTRACE="0"
USE_PTRACE_WRAP="0"
else
if [ "$USEROSTYPE" = "solaris" ]; then
HAVE_PTRACE="0"
USE_PTRACE_WRAP="0"
else
if [ "$USEROSTYPE" = "haiku" ]; then
HAVE_PTRACE="0"
USE_PTRACE_WRAP="0"
else
if [ "$USEROSTYPE" = "aix" ]; then
HAVE_PTRACE="0"
USE_PTRACE_WRAP="0"
else
HAVE_PTRACE="1"
USE_PTRACE_WRAP="0"; fi; fi; fi; fi; fi; fi; fi
if [ "$DEBUGGER" = "0" ]; then
HAVE_PTRACE="0"; fi
if [ "$WANT_PTRACE_WRAP" = "0" ]; then
USE_PTRACE_WRAP="0"; fi
pcgen() {
	PCFILE="${1}" ; shift
	PCNAME="${1}" ; shift
	REQUIRES="$@"

	echo "generating ${PCFILE}" >&2
	echo "prefix=${PREFIX}" > ${PCFILE}
	echo "exec_prefix=\${prefix}" >> ${PCFILE}
	echo "libdir=${PKGCFG_LIBDIR}" >> ${PCFILE}
	echo "includedir=${PKGCFG_INCDIR}" >> ${PCFILE}
	echo "" >> ${PCFILE}
	echo "Name: ${PCNAME}" >> ${PCFILE}
	if [ -n "${DESCRIPTION}" ]; then
		echo "Description: ${DESCRIPTION}" >> ${PCFILE}
	fi
	echo "Version: ${VERSION}" >> ${PCFILE}
	echo "Requires: ${REQUIRES}" >> ${PCFILE}
	echo "Cflags: -I\${includedir}/libr" >> ${PCFILE}
	echo "Libs: -L\${libdir} -l${PCNAME} ${DL_LIBS}" >> ${PCFILE}
}

pcgen pkgcfg/r_egg.pc r_egg r_asm r_syscall r_util r_reg r_flag r_cons
pcgen pkgcfg/r_io.pc r_io r_util r_socket r_cons r_crypto
pcgen pkgcfg/r_esil.pc r_esil r_util r_reg
pcgen pkgcfg/r_cons.pc r_cons r_util
pcgen pkgcfg/r_socket.pc r_socket r_util
pcgen pkgcfg/r_reg.pc r_reg r_util
pcgen pkgcfg/r_bp.pc r_bp r_util
pcgen pkgcfg/r_flag.pc r_flag r_util
pcgen pkgcfg/r_bin.pc r_bin r_util r_io r_socket r_magic
pcgen pkgcfg/r_lang.pc r_lang r_util
pcgen pkgcfg/r_syscall.pc r_syscall r_util
pcgen pkgcfg/r_config.pc r_config r_util
pcgen pkgcfg/r_fs.pc r_fs r_util r_io
pcgen pkgcfg/r_util.pc r_util
pcgen pkgcfg/r_magic.pc r_magic r_util
pcgen pkgcfg/r_search.pc r_search r_util
pcgen pkgcfg/r_arch.pc r_arch r_util r_reg r_esil
pcgen pkgcfg/r_crypto.pc r_crypto r_util
pcgen pkgcfg/r_anal.pc r_anal r_util r_reg r_syscall r_search r_cons r_flag r_crypto r_arch r_esil
pcgen pkgcfg/r_asm.pc r_asm r_util r_reg r_syscall r_search r_cons r_flag r_crypto r_arch r_esil
pcgen pkgcfg/r_debug.pc r_debug r_util
SEDFLAGS=" -e '"
COUNT=0
for A in ${ENVWORDS} ; do
	[ "${A}" = VPATH ] && continue
	[ "${A}" = srcdir ] && continue
	eval "VAR=\$${A}"
	VAR="`echo ${VAR} | sed -e 's/\,/\\\,/g'`"
	[ $COUNT = 10 ] && COUNT=0 && SEDFLAGS="${SEDFLAGS}' -e '"
	COUNT=$(($COUNT+1))
	SEDFLAGS="${SEDFLAGS}s,@${A}@,${VAR},g;"
done
SEDFLAGS="${SEDFLAGS}'"
for A in ./config-user.mk libr/include/r_userconf.h pkgcfg/r_core.pc  ; do # SUBDIRS
if [ -f "${VPATH}/${A}.acr" ]; then
  SD_TARGET=${A}
 else
  if [ -d "${VPATH}/${A}" ]; then
   SD_TARGET=${A}/Makefile
   mkdir -p ${A}
  else
   echo "ERROR: Cannot find ${VPATH}/${A}.acr" >&2
   exit 1
  fi
 fi
 ocho "creating ${SD_TARGET}"
[ "${VPATH}" != '.' ] &&  mkdir -p $(echo ${A} | sed -e "s,/`basename ${A}`$,,g")
 cat ${VPATH}/${SD_TARGET}.acr | \
eval sed -e "s,@VPATH@,${VPATH}/${A},g" ${SEDFLAGS} > ${SD_TARGET}.tmp

for A in ${ENVWORDS}; do
VALUE=`eval echo "$"${A}`
if [ "$VALUE" = 0 ]; then ## FALSE
 MARK="##${A}##"
if [ -n "`grep \"${MARK}\" ${SD_TARGET}.tmp`" ]; then
 mv ${SD_TARGET}.tmp ${SD_TARGET}.tmp2
 cat ${SD_TARGET}.tmp2 | MARK=$MARK $AWK 'BEGIN{a=0;}{if($1==ENVIRON["MARK"]){if(a)a=0;else a=1}else{if(!a)print;}}' > ${SD_TARGET}.tmp
 fi
fi
done
 mv ${SD_TARGET}.tmp ${SD_TARGET} && rm -f ${SD_TARGET}.tmp2
 if [ ! $? = 0 ]; then echo Cannot write target file ; control_c ; fi
done

do_remove
if [ "$QUIET" = 0 ]; then
echo
echo "Final report:"
for A in  BUILD CC CFLAGS DEBUGGER HAVE_ARC4RANDOM_UNIFORM HAVE_EXPLICIT_BZERO USE_NEW_ABI HAVE_EXPLICIT_MEMSET HAVE_FORK HAVE_GPERF HAVE_LIBUV HAVE_LIB_GMP WANT_DEBUGSTUFF HAVE_OPENSSL WANT_SSL_CRYPTO HAVE_PTRACE HOST LDFLAGS LIBVERSION PKGCONFIG PREFIX R_CHECKS_LEVEL TARGET USERCC USEROSTYPE USE_CAPSTONE USE_LIB_MAGIC NEW_IO_CACHE USE_SQSH USE_LIB_XXHASH USE_LIB_ZIP USE_PTRACE_WRAP USE_SYSLZ4 VERSION WANT_DYLINK USE_SMALLZ4 ; do
eval VAL="\$${A}"
[ -z "${VAL}" ] && VAL="\"\""
echo " - ${A} = ${VAL}"
done
fi
