mirror of
https://github.com/radareorg/radare2.git
synced 2024-11-23 13:19:54 +00:00
46e0a8d169
Last release (4.1.0) did compile it by default, but the build requires internet access to download the repositories. For now, since the feature is anyway very experimental, we disable it at compile time so that distributions can just compile their packages without internet access. In the future we may want to use submodules or augment the release tarball to include the tree-sitter and radare2-shell-parser archives.
699 lines
21 KiB
Bash
Executable File
699 lines
21 KiB
Bash
Executable File
#!/bin/sh
|
|
# This script was automatically generated by ACR v1.7.2
|
|
# @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
|
|
CSNEXT=0
|
|
LOADLIBS=1
|
|
USE_TREESITTER=0
|
|
HAVE_FORK=1
|
|
WANT_PTRACE_WRAP=1
|
|
WITH_LIBR=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
|
|
}
|
|
|
|
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}"
|
|
SYSCONFDIR=""
|
|
|
|
create_environ() {
|
|
: ${EPREFIX:="${PREFIX}"}
|
|
: ${SPREFIX:="${PREFIX}"}
|
|
: ${BINDIR:="${SPREFIX}/bin"}
|
|
: ${SBINDIR:="${PREFIX}/sbin"}
|
|
: ${SYSCONFDIR:="${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='4.2.0-git' ; CONTACT_MAIL="pancake@nopcode.org" ; CONTACT_NAME="pancake" ; CONTACT="pancake <pancake@nopcode.org>" ;
|
|
}
|
|
|
|
show_usage() {
|
|
cat <<EOF2
|
|
'configure' configures radare2-4.2.0-git 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
|
|
-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]
|
|
--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 "\nOptional Features:
|
|
--disable-debugger disable native debugger features
|
|
--with-sysmagic force to use system's magic
|
|
--with-capstone5 build next branch of the capstone repository
|
|
--disable-loadlibs disable loading plugins
|
|
--with-shell-parser Compile with radare2-shell-parser experimental support
|
|
--without-fork disable fork
|
|
--without-ptrace-wrap disable ptrace-wrap build
|
|
--with-libr build libr.a and libr.dylib
|
|
--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 type ( gnulinux windows 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)\n"
|
|
printf "\nSome influential environment variables:
|
|
CC C compiler command
|
|
CFLAGS C compiler flags
|
|
CPPFLAGS C preprocessor 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\n"
|
|
printf "\nReport bugs to: pancake <pancake@nopcode.org>"
|
|
echo ""
|
|
exit 0
|
|
}
|
|
|
|
take_environ() {
|
|
: ${SH:=/bin/sh}
|
|
: ${CPP:=cpp}
|
|
: ${CC:=gcc}
|
|
: ${PREFIX:=/usr/local/}
|
|
}
|
|
|
|
show_version() {
|
|
echo "radare2-4.2.0-git configuration script done with acr v1.7.2.
|
|
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 ; ;;
|
|
-V|-version|--version)
|
|
show_version ; ;;
|
|
-r|--r|--report)
|
|
echo "PKGNAME: radare2"
|
|
echo "VERSION: 4.2.0-git"
|
|
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 --with-capstone5 --disable-loadlibs --with-shell-parser --without-fork --without-ptrace-wrap --with-libr --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"; ;;
|
|
--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"; ;;
|
|
"--with-capstone5") CSNEXT="1"; ;;
|
|
"--disable-loadlibs") LOADLIBS="0"; ;;
|
|
"--with-shell-parser") USE_TREESITTER="1"; ;;
|
|
"--without-fork") HAVE_FORK="0"; ;;
|
|
"--without-ptrace-wrap") WANT_PTRACE_WRAP="0"; ;;
|
|
"--with-libr") WITH_LIBR="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 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 PKGNAME VPATH VERSION CONTACT CONTACT_NAME CONTACT_MAIL CC CFLAGS CPPFLAGS LDFLAGS HAVE_LANG_C DEBUGGER HAVE_LIB_DL DL_LIBS HAVE_PATCH PATCH HAVE_GIT GIT HAVE_LIB_MAGIC USE_MAGIC USE_LIB_MAGIC LIBMAGIC CSNEXT LOADLIBS USE_TREESITTER HAVE_FORK WANT_PTRACE_WRAP WITH_LIBR 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_ARC4RANDOM_UNIFORM HAVE_EXPLICIT_BZERO HAVE_EXPLICIT_MEMSET HAVE_CLOCK_NANOSLEEP HAVE_SIGACTION 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
|
|
|
|
echo "checking build system type... ${BUILD}"
|
|
echo "checking host system type... ${HOST}"
|
|
echo "checking target system type... ${TARGET}"
|
|
[ "${CROSSBUILD}" = 1 ] && echo "using crosscompilation mode."
|
|
|
|
#split_host BUILD HOST TARGET
|
|
[ -n "${prefix}" ] && PREFIX="${prefix}"
|
|
echo "checking for working directories... ${WODIS}"
|
|
echo "using prefix '${PREFIX}'"
|
|
ACR_RMFILES=" test.c a.out a.exe"
|
|
|
|
|
|
COMPILER=CC
|
|
printf "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
|
|
printf "checking for dynamic library... "
|
|
HAVE_LIB_DL=0
|
|
for OS in gnulinux linux gnu/kfreebsd syllable 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
|
|
printf "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
|
|
echo ${FIND};
|
|
HAVE_PATCH=1
|
|
PATCH=${FIND}
|
|
else
|
|
HAVE_PATCH=0
|
|
PATCH=patch
|
|
echo no
|
|
echo "error: This program is required." >&2
|
|
exit 1 ; fi
|
|
printf "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
|
|
echo ${FIND};
|
|
HAVE_GIT=1
|
|
GIT=${FIND}
|
|
else
|
|
HAVE_GIT=0
|
|
GIT=git
|
|
echo no ; fi
|
|
check_library() {
|
|
VAR=$1
|
|
S="$"
|
|
_REQUIRED=$3
|
|
_CHKLIB_NAME=$2
|
|
_CHKLIB_LIBS=$(echo "-l${_CHKLIB_NAME}" | sed 's,+, -l,g')
|
|
printf "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 [ "$WITH_CAPSTONE" = "1" ]; then
|
|
[ -z "${PKGCONFIG}" ] && PKGCONFIG=pkg-config
|
|
type ${PKGCONFIG} > /dev/null 2>&1 || echo "ERROR: Cannot find PKGCONFIG ${PKGCONFIG}"
|
|
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 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
|
|
HAVE_LIB_GMP="0"
|
|
check_library HAVE_LIB_SSL ssl 0
|
|
[ -z "${PKGCONFIG}" ] && PKGCONFIG=pkg-config
|
|
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
|
|
[ -z "${PKGCONFIG}" ] && PKGCONFIG=pkg-config
|
|
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" = "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"; 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
|
|
HAVE_PTRACE="1"
|
|
USE_PTRACE_WRAP="0"; 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
|
|
echo "creating ${SD_TARGET}"
|
|
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
|
|
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 USE_TREESITTER VERSION USE_LIB_ZIP USE_LIB_MAGIC USE_LIB_XXHASH DEBUGGER CC USERCC HAVE_ARC4RANDOM_UNIFORM HAVE_EXPLICIT_BZERO HAVE_EXPLICIT_MEMSET USEROSTYPE LIBVERSION BUILD HOST TARGET ; do # REPORT
|
|
eval VAL="\$${A}"
|
|
[ -z "${VAL}" ] && VAL="(null)"
|
|
echo " - ${A} = ${VAL}"
|
|
done
|