1#!/bin/sh 2# This script was automatically generated by ACR v1.9.8 3# @author: pancake <nopcode.org> 4# @url: http://www.nopcode.org 5# @repo: git clone https://github.com/radare/acr 6 7[ -z "${AWK}" ] && AWK=awk 8do_remove() { 9if [ "${ACR_RMFILES}" ]; then 10 printf "cleaning temporally files... " 11 rm -f ${ACR_RMFILES} 12 echo "done" 13fi 14} 15control_c() { 16 printf "\n\n^C control-c : script execution interrupted.\n" 17 do_remove 18 exit 1 19} 20trap control_c 2 21WANT_PYTHON=0 22WANT_PYTHON_BINDINGS=0 23WANT_CRASH_REPORTS=0 24split_host() { 25S="$" 26while : ; do 27ENVWORDS="${ENVWORDS} $1_CPU $1_OS" 28STR=`eval "echo ${S}$1"` 29SPLIT_CPU="`echo "$STR" | cut -d - -f 1`" 30SPLIT_OS="`echo "$STR" | $AWK -F - '{ 31 if ($2=="unknown"){ 32 if (NF<3) { print $2; } else { print $3; } 33 } else { 34 if ($2=="linux") { print $2; } else 35 if (NF<3) { print $2; } else { print $3; } 36 } 37}'`" 38eval "$1_CPU=\"$SPLIT_CPU\"" 39eval "$1_OS=\"$SPLIT_OS\"" 40shift 41[ -z "$1" ] && break 42done 43} 44 45QUIET=0 46be_quiet() { 47 QUIET=1 48} 49 50VPATH=`dirname ${0}` 51if [ "${VPATH}" = "." ]; then 52 WODIS=current 53else 54 if [ "${VPATH}" = "${PWD}" ]; then 55 VPATH=. 56 WODIS=current 57 else 58 WODIS=crosspath 59 CURDIR=$PWD 60 cd $VPATH 61 VPATH="${PWD}/" 62 cd $CURDIR 63 fi 64fi 65 66guess_os() { 67if [ -e "${VPATH}/config.guess" ]; then 68 sh ${VPATH}/config.guess 69 return 70fi 71CPU="`uname -m|sed -e 's, ,,g'|cut -d - -f 1`" 72OS="`uname -s|tr A-Z a-z`" 73uname -r | grep -qE "(Microsoft|WSL)" 2>/dev/null && OS="wsl" 74GNU="`uname --help 2>&1 | grep gnu`" 75[ "${GNU}" ] && OS="${OS}-gnu" 76[ "${CPU}" = ppc ] && CPU="powerpc" 77echo "${CPU}-unknown-${OS}" 78} 79 80SEARCHPATH="/usr /usr/local /usr/pkg /sw" 81 82: ${PREFIX:=/usr/local} 83CROSSBUILD=0 84BUILD=`guess_os` 85HOST="${BUILD}" 86TARGET="${HOST}" 87SYSCONFDIR="" 88 89create_environ() { 90: ${EPREFIX:="${PREFIX}"} 91: ${SPREFIX:="${PREFIX}"} 92: ${BINDIR:="${SPREFIX}/bin"} 93: ${SBINDIR:="${PREFIX}/sbin"} 94: ${SYSCONFDIR:="${SPREFIX}/etc"} 95: ${LIBDIR:="${SPREFIX}/lib"} 96: ${LIBEXECDIR:="${SPREFIX}/libexec"} 97: ${INCLUDEDIR:="${SPREFIX}/include"} 98: ${DATADIR:="${SPREFIX}/share"} 99: ${INFODIR:="${DATADIR}/info"} 100: ${MANDIR:="${DATADIR}/man"} 101: ${DOCDIR:="${DATADIR}/doc/r2cutter"} 102: ${LOCALSTATEDIR:="${SPREFIX}/var"} 103for A in `echo ${PATH} | sed -e 's,:, ,g'` ; do 104 [ -e "$A"/ginstall ] && : ${INSTALL:="$A"/ginstall} && break 105 [ -e "$A"/install ] && : ${INSTALL:="$A"/install} && break 106done 107: ${INSTALL_DIR:=${INSTALL} -d} 108: ${INSTALL_DATA:=${INSTALL} -m 644} 109: ${INSTALL_SCRIPT:=${INSTALL} -m 755} 110: ${INSTALL_PROGRAM:=${INSTALL} -m 755} 111: ${INSTALL_PROGRAM_STRIP:=${INSTALL} -m 755 -s} 112: ${INSTALL_MAN:=${INSTALL} -m 444} 113: ${INSTALL_LIB:=${INSTALL} -m 755 -c} 114 PKGNAME='r2cutter' ; VERSION='0.1.1' ; VERSION_MAJOR=0; VERSION_MINOR=1; VERSION_PATCH=1; VERSION_NUMBER=00101; CONTACT_MAIL="pancake@nopcode.org" ; CONTACT_NAME="pancake" ; CONTACT="pancake <pancake@nopcode.org>" ; 115} 116 117show_usage() { 118cat <<EOF2 119'configure' configures r2cutter-0.1.1 to adapt to many kinds of systems. 120 121Usage: ./configure [OPTION]... [VAR=VALUE]... 122 123To assign environment variables (e.g., CC, CFLAGS...), specify them as 124VAR=VALUE. See below for descriptions of some of the useful variables. 125 126Defaults for the options are specified in brackets. 127 128Configuration: 129 -h, --help display this help and exit 130 -r, --report show what libs/programs require to work 131 -q, --quiet be quiet, less verbose (see ./configure -qV) 132 -V, --version display version information and exit 133 134Installation directories: 135 --exec-prefix=EPREFIX install arch-dependent files in EPREFIX [PREFIX] 136 --prefix=PREFIX install arch-independent files in PREFIX [/usr/local] 137 --sandbox=SPREFIX sandbox prefix directory: SPREFIX [PREFIX] 138 139Fine tuning of the installation directories: 140 --bindir=DIR user executables [EPREFIX/bin] 141 --datadir=DIR read-only architecture-independent data [PREFIX/share] 142 --docdir=DIR documentation directory [DATADIR/doc/r2cutter] 143 --includedir=DIR C header files [PREFIX/include] 144 --infodir=DIR info documentation [DATADIR/info] 145 --libexecdir=DIR program executables [EPREFIX/libexec] 146 --libdir=DIR object code libraries [EPREFIX/lib] 147 --libpath=DIR set rpath/libname-path to linker 148 --localstatedir=DIR modifiable single-machine data [PREFIX/var] 149 --mandir=DIR man documentation [DATADIR/man] 150 --sbindir=DIR system admin executables [EPREFIX/sbin] 151 --sysconfdir=DIR read-only single-machine data [PREFIX/etc] 152 --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] 153 154System types: 155 --build=BUILD configure for building on BUILD [guessed] 156 --host=HOST cross-compile to build programs to run on HOST [BUILD] 157 --target=TARGET configure for building compilers for TARGET [HOST] 158EOF2 159 160printf " 161Optional Features: 162 --with-python build with support for Python 163 --with-python-bindings 164 build with Python bindings 165 --with-crash-reports handle crashes nicely 166" 167printf " 168Some influential environment variables: 169 CXX C++ compiler command 170 CXXFLAGS C++ compiler flags 171" 172printf " 173Report bugs to: pancake <pancake@nopcode.org>" 174echo "" 175exit 0 176} 177 178take_environ() { 179: ${SH:=/bin/sh} 180: ${CPP:=cpp} 181: ${CXX:=c++} 182: ${PREFIX:=/usr/local/} 183} 184 185ochof() { 186 [ "$QUIET" = 1 ] && return 187 printf "$*" 188} 189 190ocho() { 191 [ "$QUIET" = 1 ] && return 192 echo "$*" 193} 194 195show_version() { 196if [ "$QUIET" = 1 ]; then 197 echo "0.1.1" 198 exit 0 199fi 200echo "r2cutter-0.1.1 configuration script done with acr v1.9.8. 201The 'Free Software Foundation' message is only for autodetection. 202Originally written by pancake <nopcode.org>." 203exit 0 204} 205 206parse_options() { 207flag=`echo $1| cut -d = -f 1` 208value=`echo $1| $AWK 'BEGIN{FS="=";}{print $2}'` 209flag2=`echo $flag|cut -f2- -d -| sed -e 's,-,_,g' -e 's,^_,,g'|tr '[a-z]' '[A-Z]'` 210 211if [ "${TARGET_OS}" = "darwin" ]; then 212 LIBPATH=-Wl,-install_name, 213else 214 LIBPATH=-Wl,-R 215fi 216 217case $flag in 218-h|--help|--hel|--h|--he|-help) 219 show_usage ; ;; 220-qV|-quiet-version|--quiet-version) 221 be_quiet 222 show_version ; ;; 223-q|-quiet|--quiet) 224 be_quiet ; ;; 225-V|-version|--version) 226 show_version ; ;; 227-r|--r|--report) 228echo "PKGNAME: r2cutter" 229echo "VERSION: 0.1.1" 230echo "LANGS: c++" 231echo "PKG-CONFIG: r_core" 232echo "FLAGS: --with-python --with-python-bindings --with-crash-reports" 233 exit 0 234 ;; 235--cache-file) 236 # ignored: acr have no cache 237 ;; 238--build) 239 BUILD="$value"; split_host BUILD ; ;; 240--host) 241 CROSSBUILD=1 # XXX 242 HOST="$value"; split_host HOST ; ;; 243--target) 244 TARGET="$value"; split_host TARGET ; ;; 245--prefix) 246 PREFIX="$value"; ;; 247--exec-prefix) 248 EPREFIX="$value"; ;; 249--sandbox|--sprefix) 250 SPREFIX="$value"; ;; 251--bindir) 252 BINDIR="$value"; ;; 253--sbindir) 254 SBINDIR="$value"; ;; 255--libexecdir) 256 LIBEXECDIR="$value"; ;; 257--docdir) 258 DOCDIR="$value"; ;; 259--datadir) 260 DATADIR="$value"; ;; 261--sysconfdir) 262 SYSCONFDIR="$value"; ;; 263--sharedstatedir) 264 SHAREDSTATEDIR="$value"; ;; 265--localstatedir) 266 LOCALSTATEDIR="$value"; ;; 267--libdir) 268 LIBDIR="$value"; ;; 269--libpath) 270 LDFLAGS="${LDFLAGS} ${LIBPATH}$value"; ;; 271--includedir) 272 INCLUDEDIR="$value"; CFLAGS="${CFLAGS} -I$value"; ;; 273--infodir) 274 INFODIR="$value"; ;; 275--mandir) 276 MANDIR="$value"; ;; 277 278"--with-python") WANT_PYTHON="1"; ;; 279"--with-python-bindings") WANT_PYTHON_BINDINGS="1"; ;; 280"--with-crash-reports") WANT_CRASH_REPORTS="1"; ;; 281*) if [ "$value" ]; then eval "`echo $flag2=$value`" ; 282else echo ; echo "WARNING: Unknown flag '$flag'." >&2 ; echo ; fi ;; 283esac 284} 285 286# MAIN # 287take_environ 288split_host BUILD HOST TARGET 289[ -z "$ACRHOOK" ] && ACRHOOK=./configure.hook 290[ -e "$ACRHOOK" ] && . ${ACRHOOK} 291 292while : ; do 293[ -z "$1" ] && break 294parse_options "$1" 295shift 296done 297 298ENVWORDS="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 CXX CXXFLAGS LDFLAGS HAVE_LANG_CXX CPP PKGCONFIG HAVE_R2 R2 R2_CFLAGS R2_LDFLAGS HAVE_PKGCFG_R_CORE HAVE_QMAKE QMAKE HAVE_LRELEASE LRELEASE WANT_PYTHON WANT_PYTHON_BINDINGS WANT_CRASH_REPORTS" 299 300create_environ 301 302ocho "checking build system type... ${BUILD}" 303ocho "checking host system type... ${HOST}" 304ocho "checking target system type... ${TARGET}" 305[ "${CROSSBUILD}" = 1 ] && echo "using crosscompilation mode." 306 307#split_host BUILD HOST TARGET 308[ -n "${prefix}" ] && PREFIX="${prefix}" 309ocho "checking for working directories... ${WODIS}" 310ocho "using prefix '${PREFIX}'" 311ACR_RMFILES=" test.c test.cxx a.out a.exe" 312 313 314 315COMPILER=CXX 316HAVE_LANG_CXX=1 317ochof "checking for c++ compiler... " 318if [ "${CROSSBUILD}" = 1 ]; then 319(command -v ${HOST}-${CXX} 2>&1 >/dev/null) 320if [ "$?" = 0 ]; then CXX="${HOST}-${CXX}"; fi 321fi 322echo "#include <iostream>" > test.cxx 323echo "int main(){ std::cout << 1; return 0;}" >> test.cxx 324(exec ${CXX} ${CXXFLAGS} ${LDFLAGS} test.cxx -lstdc++ >/dev/null 2>&1) 325if [ $? = 0 ]; then echo ${CXX}; else 326HAVE_LANG_CXX=0 327echo no 328 329echo "ERROR: ${CXX} cannot create executables" >&2 ; 330do_remove 331exit 1 332 fi 333 ochof "checking for cpp... " 334 if [ "${CROSSBUILD}" = 1 ]; then 335 (exec ${HOST}-${CPP} --help >/dev/null 2>&1) 336 [ $? = 0 ] && CPP="${HOST}-${CPP}" 337 fi 338 (echo "int main(int ac, char **av){return 0;}" | ${CPP} >/dev/null 2>&1) 339 if [ 0 = 0 ]; then echo ${CPP}; else 340 echo "ERROR: ${CPP} cannot parse sources"; fi 341ochof "checking for pkg-config... " 342if [ -n "$PKGCONFIG" ]; then 343 if [ -x "$PKGCONFIG" ]; then 344 _HAVE_PKGCONFIG="${PKGCONFIG}" 345 else 346 ocho "PKGCONFIG env is not executable" 347 PKGCONFIG="" 348 fi 349else 350 IFS=: 351 for A in ${PATH} ; do 352 if [ -x "${A}/pkg-config" ]; then 353 PKGCONFIG="${A}/pkg-config" 354 elif [ -x "${A}/pkgconf" ]; then 355 PKGCONFIG="${A}/pkgconf" 356 else 357 continue 358 fi 359 break 360 done 361 unset IFS 362fi 363if [ -n "${PKGCONFIG}" ]; then 364 ocho ${PKGCONFIG} 365else 366 echo "Cannot find pkg-config or pkgconf in PATH" >&2 367 exit 1 ocho no; fi 368ochof "checking for r2... " 369if [ -x "${R2}" ]; then 370 FIND=${R2} 371else 372 FIND="" 373 IFS=: 374 for A in ${PATH} ; do 375 if [ -x "${A}/r2" ]; then 376 FIND="${A}/r2" 377 break; 378 fi 379 done 380 unset IFS 381fi 382if [ -n "${FIND}" ]; then 383 ocho ${FIND}; 384HAVE_R2=1 385 R2=${FIND} 386else 387 HAVE_R2=0 388 R2=r2 389if [ "" = 1 ]; then 390echo "Cannot find r2" >&2 391else 392echo no 393fi 394 echo "error: This program is required." >&2 395 exit 1 ; fi 396if [ -z "${PKGCONFIG}" ]; then pkg-config --version >/dev/null 2>&1 ; if [ 0 = 0 ]; then PKGCONFIG=pkg-config ; else PKGCONFIG=pkgconf ; fi; fi 397type ${PKGCONFIG} > /dev/null 2>&1 || echo "ERROR: Cannot find valid PKGCONFIG, pkg-config or pkgconf in PATH" 398echo 'Using PKGCONFIG: '${PKGCONFIG} 399printf 'checking pkg-config flags for r_core... ' 400tmp=`${PKGCONFIG} --cflags r_core 2>/dev/null` 401if [ $? != 0 ]; then echo no ; HAVE_PKGCFG_R_CORE=0; 402R2_CFLAGS='';R2_LDFLAGS=''; 403echo 'This package is required' 404exit 1 405else 406R2_CFLAGS=$tmp; 407tmp=`${PKGCONFIG} --libs r_core 2>/dev/null` 408if [ $? = 0 ]; then 409echo yes; HAVE_PKGCFG_R_CORE=1; 410R2_LDFLAGS=$tmp; fi; fi 411ochof "checking for qmake... " 412if [ -x "${QMAKE}" ]; then 413 FIND=${QMAKE} 414else 415 FIND="" 416 IFS=: 417 for A in ${PATH} ; do 418 if [ -x "${A}/qmake" ]; then 419 FIND="${A}/qmake" 420 break; 421 fi 422 done 423 unset IFS 424fi 425if [ -n "${FIND}" ]; then 426 ocho ${FIND}; 427HAVE_QMAKE=1 428 QMAKE=${FIND} 429else 430 HAVE_QMAKE=0 431 QMAKE=qmake 432if [ "" = 1 ]; then 433echo "Cannot find qmake" >&2 434else 435echo no 436fi 437 echo "error: This program is required." >&2 438 exit 1 ; fi 439ochof "checking for lrelease... " 440if [ -x "${LRELEASE}" ]; then 441 FIND=${LRELEASE} 442else 443 FIND="" 444 IFS=: 445 for A in ${PATH} ; do 446 if [ -x "${A}/lrelease" ]; then 447 FIND="${A}/lrelease" 448 break; 449 fi 450 done 451 unset IFS 452fi 453if [ -n "${FIND}" ]; then 454 ocho ${FIND}; 455HAVE_LRELEASE=1 456 LRELEASE=${FIND} 457else 458 HAVE_LRELEASE=0 459 LRELEASE=lrelease 460if [ "" = 1 ]; then 461echo "Cannot find lrelease" >&2 462else 463echo no 464fi 465 echo "error: This program is required." >&2 466 exit 1 ; fi 467SEDFLAGS=" -e '" 468COUNT=0 469for A in ${ENVWORDS} ; do 470 [ "${A}" = VPATH ] && continue 471 [ "${A}" = srcdir ] && continue 472 eval "VAR=\$${A}" 473 VAR="`echo ${VAR} | sed -e 's/\,/\\\,/g'`" 474 [ $COUNT = 10 ] && COUNT=0 && SEDFLAGS="${SEDFLAGS}' -e '" 475 COUNT=$(($COUNT+1)) 476 SEDFLAGS="${SEDFLAGS}s,@${A}@,${VAR},g;" 477done 478SEDFLAGS="${SEDFLAGS}'" 479for A in config.mk ; do # SUBDIRS 480if [ -f "${VPATH}/${A}.acr" ]; then 481 SD_TARGET=${A} 482 else 483 if [ -d "${VPATH}/${A}" ]; then 484 SD_TARGET=${A}/Makefile 485 mkdir -p ${A} 486 else 487 echo "ERROR: Cannot find ${VPATH}/${A}.acr" >&2 488 exit 1 489 fi 490 fi 491 ocho "creating ${SD_TARGET}" 492[ "${VPATH}" != '.' ] && mkdir -p $(echo ${A} | sed -e "s,/`basename ${A}`$,,g") 493 cat ${VPATH}/${SD_TARGET}.acr | \ 494eval sed -e "s,@VPATH@,${VPATH}/${A},g" ${SEDFLAGS} > ${SD_TARGET}.tmp 495 496for A in ${ENVWORDS}; do 497VALUE=`eval echo "$"${A}` 498if [ "$VALUE" = 0 ]; then ## FALSE 499 MARK="##${A}##" 500if [ -n "`grep \"${MARK}\" ${SD_TARGET}.tmp`" ]; then 501 mv ${SD_TARGET}.tmp ${SD_TARGET}.tmp2 502 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 503 fi 504fi 505done 506 mv ${SD_TARGET}.tmp ${SD_TARGET} && rm -f ${SD_TARGET}.tmp2 507 if [ ! $? = 0 ]; then echo Cannot write target file ; control_c ; fi 508done 509 510do_remove 511