#!/bin/sh # This script was automatically generated by ACR v2.1.4 # @author: pancake # @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_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.3' ; VERSION_MAJOR=5; VERSION_MINOR=9; VERSION_PATCH=3; VERSION_NUMBER=50903; CONTACT_MAIL="pancake@nopcode.org" ; CONTACT_NAME="pancake" ; CONTACT="pancake " ; } show_usage() { cat < if you have libraries in a nonstandard directory CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor " printf " Report bugs to: pancake " 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.3" exit 0 fi echo "radare2-5.9.3 configuration script done with acr v2.1.4. The 'Free Software Foundation' message is only for autodetection. Originally written by pancake ." 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.3" 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 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 --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"; ;; "--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 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 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 " > 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 " > 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_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