mirror of
https://github.com/radareorg/radare2.git
synced 2024-11-23 21:29:49 +00:00
f8cafe4f2f
* Update spp to 1.2.0 * Make sure to use USE_R2=1 when compiling spp
368 lines
10 KiB
Bash
Executable File
368 lines
10 KiB
Bash
Executable File
#!/bin/sh
|
|
# This script was automatically generated by ACR v1.9.0
|
|
# @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
|
|
HAVE_FORK=1
|
|
WANT_R2=0
|
|
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/spp"}
|
|
: ${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='spp' ; VERSION='1.2.0' ; VERSION_MAJOR=1; VERSION_MINOR=2; VERSION_PATCH=0; VERSION_NUMBER=10200; CONTACT_MAIL="pancake@nopcode.org" ; CONTACT_NAME="pancake" ; CONTACT="pancake <pancake@nopcode.org>" ;
|
|
}
|
|
|
|
show_usage() {
|
|
cat <<EOF2
|
|
'configure' configures spp-1.2.0 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/spp]
|
|
--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 "
|
|
Optional Features:
|
|
--without-fork build without depending on fork syscall
|
|
--enable-r2 compile against r2 r_util
|
|
"
|
|
printf "
|
|
Report bugs to: pancake <pancake@nopcode.org>"
|
|
echo ""
|
|
exit 0
|
|
}
|
|
|
|
take_environ() {
|
|
: ${SH:=/bin/sh}
|
|
: ${PREFIX:=/usr/local/}
|
|
}
|
|
|
|
show_version() {
|
|
echo "spp-1.2.0 configuration script done with acr v1.9.0.
|
|
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: spp"
|
|
echo "VERSION: 1.2.0"
|
|
echo "PKG-CONFIG: r_util"
|
|
echo "FLAGS: --without-fork --enable-r2"
|
|
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"; ;;
|
|
|
|
"--without-fork") HAVE_FORK="0"; ;;
|
|
"--enable-r2") WANT_R2="1"; ;;
|
|
*) 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 VERSION VERSION_MAJOR VERSION_MINOR VERSION_PATCH VERSION_NUMBER PKGNAME VPATH CONTACT CONTACT_NAME CONTACT_MAIL HAVE_FORK WANT_R2 HAVE_PKGCONFIG PKGCONFIG R2_CFLAGS R2_LDFLAGS HAVE_PKGCFG_R_UTIL USE_R2"
|
|
|
|
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=""
|
|
|
|
|
|
printf "checking for pkg-config... "
|
|
if [ -x "${PKGCONFIG}" ]; then
|
|
FIND=${PKGCONFIG}
|
|
else
|
|
FIND=""
|
|
IFS=:
|
|
for A in ${PATH} ; do
|
|
if [ -x "${A}/pkg-config" ]; then
|
|
FIND="${A}/pkg-config"
|
|
break;
|
|
fi
|
|
done
|
|
unset IFS
|
|
fi
|
|
if [ -n "${FIND}" ]; then
|
|
echo ${FIND};
|
|
HAVE_PKGCONFIG=1
|
|
PKGCONFIG=${FIND}
|
|
else
|
|
HAVE_PKGCONFIG=0
|
|
PKGCONFIG=pkg-config
|
|
echo no ; fi
|
|
[ -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 r_util... '
|
|
tmp=`${PKGCONFIG} --cflags r_util 2>/dev/null`
|
|
if [ $? != 0 ]; then echo no ; HAVE_PKGCFG_R_UTIL=0;
|
|
R2_CFLAGS='';R2_LDFLAGS='';
|
|
else
|
|
R2_CFLAGS=$tmp;
|
|
tmp=`${PKGCONFIG} --libs r_util 2>/dev/null`
|
|
if [ $? = 0 ]; then
|
|
echo yes; HAVE_PKGCFG_R_UTIL=1;
|
|
R2_LDFLAGS=$tmp; fi; fi
|
|
USE_R2="0"
|
|
if [ "$WANT_R2" = "1" ]; then
|
|
if [ ! "$R2_CFLAGS" = "" ]; then
|
|
USE_R2="1"
|
|
else
|
|
case "$undefined_variable" in 0|"") echo ; echo "ERROR: Cannot find -lr_util using pkg-config" >&2 ; echo ; exit 1 ;; esac; fi; 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.mk ; 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
|
|
|
|
echo
|
|
echo "Final report:"
|
|
for A in HAVE_FORK USE_R2 PREFIX ; do # REPORT
|
|
eval VAL="\$${A}"
|
|
[ -z "${VAL}" ] && VAL="(null)"
|
|
echo " - ${A} = ${VAL}"
|
|
done
|