mirror of
https://github.com/radareorg/radare2.git
synced 2024-12-01 00:51:19 +00:00
3754ed89a0
* The reason for this is because debian, meson and cmake misbehave or don't handle dash suffixes, so let's just keep things simpler
846 lines
25 KiB
Bash
Executable File
846 lines
25 KiB
Bash
Executable File
#!/bin/sh
|
|
# This script was automatically generated by ACR v1.9.8
|
|
# @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
|
|
WANT_DYLINK=1
|
|
HAVE_FORK=1
|
|
WANT_PTRACE_WRAP=1
|
|
WANT_GPERF=1
|
|
WANT_CAPSTONE=1
|
|
WITH_LIBR=0
|
|
USE_CS5=0
|
|
USE_CS4=0
|
|
WITH_CAPSTONE=0
|
|
USE_ZIP=0
|
|
USE_XXHASH=0
|
|
WITH_GPL=1
|
|
WANT_OPENSSL=0
|
|
WANT_LIBUV=1
|
|
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"
|
|
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=""
|
|
|
|
create_environ() {
|
|
: ${EPREFIX:="${PREFIX}"}
|
|
: ${SPREFIX:="${PREFIX}"}
|
|
: ${BINDIR:="${SPREFIX}/bin"}
|
|
: ${SBINDIR:="${PREFIX}/sbin"}
|
|
: ${ETCDIR:="${SPREFIX}/etc"}
|
|
: ${LIBDIR:="${SPREFIX}/lib"}
|
|
: ${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.4.1' ; VERSION_MAJOR=5; VERSION_MINOR=4; VERSION_PATCH=1; VERSION_NUMBER=50401; CONTACT_MAIL="pancake@nopcode.org" ; CONTACT_NAME="pancake" ; CONTACT="pancake <pancake@nopcode.org>" ;
|
|
}
|
|
|
|
show_usage() {
|
|
cat <<EOF2
|
|
'configure' configures radare2-5.4.1 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
|
|
--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-capstone5 build next branch of capstone5 (default)
|
|
--with-capstone4 build v4 branch of capstone
|
|
--with-syscapstone force to use system-wide capstone
|
|
--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-openssl build with openssl if possible
|
|
--without-libuv disable libuv dependency
|
|
--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)
|
|
"
|
|
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.4.1"
|
|
exit 0
|
|
fi
|
|
echo "radare2-5.4.1 configuration script done with acr v1.9.8.
|
|
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.4.1"
|
|
echo "LANGS: c"
|
|
echo "REQUIRED: libdl"
|
|
echo "OPTIONAL: libmagic libz libzip libxxhash libssl liblibuv>=1.0.0"
|
|
echo "PKG-CONFIG: capstone openssl libuv"
|
|
echo "FLAGS: --disable-debugger --with-sysmagic --disable-threads --disable-loadlibs --without-dylink --without-fork --without-ptrace-wrap --without-gperf --without-capstone --with-libr --with-capstone5 --with-capstone4 --with-syscapstone --with-syszip --with-sysxxhash --without-gpl --with-openssl --without-libuv --with-rpath --with-compiler=gcc --with-ostype=auto --with-libversion=xxx --without-jemalloc --with-checks-level=2"
|
|
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"; ;;
|
|
--libpath)
|
|
LDFLAGS="${LDFLAGS} ${LIBPATH}$value"; ;;
|
|
--includedir)
|
|
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"; ;;
|
|
"--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-capstone5") USE_CS5="1"; ;;
|
|
"--with-capstone4") USE_CS4="1"; ;;
|
|
"--with-syscapstone") WITH_CAPSTONE="1"; ;;
|
|
"--with-syszip") USE_ZIP="1"; ;;
|
|
"--with-sysxxhash") USE_XXHASH="1"; ;;
|
|
"--without-gpl") WITH_GPL="0"; ;;
|
|
"--with-openssl") WANT_OPENSSL="1"; ;;
|
|
"--without-libuv") WANT_LIBUV="0"; ;;
|
|
"--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 ;;
|
|
*) 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 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 PKGNAME VPATH CONTACT CONTACT_NAME CONTACT_MAIL CC CFLAGS CPPFLAGS LDFLAGS HAVE_LANG_C DEBUGGER HAVE_LIB_DL DL_LIBS PKGCONFIG HAVE_PATCH PATCH HAVE_GIT GIT HAVE_GPERF GPERF HAVE_LIB_MAGIC USE_MAGIC USE_LIB_MAGIC LIBMAGIC WANT_THREADS LOADLIBS WANT_DYLINK HAVE_FORK WANT_PTRACE_WRAP WANT_GPERF WANT_CAPSTONE WITH_LIBR USE_CS5 USE_CS4 WITH_CAPSTONE CAPSTONE_CFLAGS CAPSTONE_LDFLAGS HAVE_PKGCFG_CAPSTONE USE_CAPSTONE 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 HAVE_LIB_SSL SSL_CFLAGS SSL_LDFLAGS HAVE_PKGCFG_OPENSSL HAVE_OPENSSL WANT_OPENSSL HAVE_LIBUV_VERSION_1_0_0 LIBUV_CFLAGS LIBUV_LDFLAGS HAVE_PKGCFG_LIBUV HAVE_LIBUV WANT_LIBUV USE_RPATH USERCC USEROSTYPE LIBVERSION HAVE_JEMALLOC HAVE_PTRACE USE_PTRACE_WRAP R_CHECKS_LEVEL"
|
|
|
|
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} ${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... "
|
|
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}
|
|
else ocho no; fi
|
|
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 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
|
|
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
|
|
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 = 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 = __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 "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 "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 "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 "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 "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 "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"
|
|
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 [ 11 = "$WANT_OPENSSL$HAVE_OPENSSL" ]; then
|
|
|
|
HAVE_OPENSSL="1"
|
|
else
|
|
HAVE_OPENSSL="0"; fi
|
|
if [ "$SSL_LDFLAGS" = "" ]; then
|
|
if [ "$HAVE_LIB_SSL" = "0" ]; then
|
|
HAVE_OPENSSL="0"
|
|
else
|
|
SSL_LDFLAGS="-lssl"; 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"; 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
|
|
HAVE_PTRACE="1"
|
|
USE_PTRACE_WRAP="0"; 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
|
|
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_io.pc pkgcfg/r_magic.pc pkgcfg/r_asm.pc pkgcfg/r_bin.pc pkgcfg/r_anal.pc pkgcfg/r_hash.pc pkgcfg/r_cons.pc pkgcfg/r_core.pc pkgcfg/r_lang.pc pkgcfg/r_socket.pc pkgcfg/r_debug.pc pkgcfg/r_reg.pc pkgcfg/r_config.pc pkgcfg/r_flag.pc pkgcfg/r_syscall.pc pkgcfg/r_util.pc pkgcfg/r_search.pc pkgcfg/r_bp.pc pkgcfg/r_parse.pc pkgcfg/r_fs.pc pkgcfg/r_egg.pc pkgcfg/r_crypto.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 R_CHECKS_LEVEL PREFIX HAVE_LIB_GMP HAVE_OPENSSL HAVE_LIBUV USE_CAPSTONE HAVE_PTRACE USE_PTRACE_WRAP HAVE_FORK VERSION USE_LIB_ZIP USE_LIB_MAGIC USE_LIB_XXHASH DEBUGGER CC USERCC HAVE_ARC4RANDOM_UNIFORM PKGCONFIG HAVE_GPERF HAVE_EXPLICIT_BZERO HAVE_EXPLICIT_MEMSET WANT_DYLINK USEROSTYPE LIBVERSION BUILD HOST TARGET CFLAGS LDFLAGS ; do
|
|
eval VAL="\$${A}"
|
|
[ -z "${VAL}" ] && VAL="(null)"
|
|
echo " - ${A} = ${VAL}"
|
|
done
|
|
fi
|