1#!/bin/sh 2# This script was automatically generated by ACR v1.7.2 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 21printf "checking for cpp... " 22if [ "${CROSSBUILD}" = 1 ]; then 23(exec ${HOST}-${CPP} --help >/dev/null 2>&1) 24[ $? = 0 ] && CPP="${HOST}-${CPP}" 25fi 26(echo "int main(int ac, char **av){return 0;}" | ${CPP} >/dev/null 2>&1) 27if [ $? = 0 ]; then echo ${CPP}; else 28echo "ERROR: ${CPP} cannot parse sources"; fi 29 30split_host() { 31S="$" 32while : ; do 33ENVWORDS="${ENVWORDS} $1_CPU $1_OS" 34STR=`eval "echo ${S}$1"` 35SPLIT_CPU="`echo "$STR" | cut -d - -f 1`" 36SPLIT_OS="`echo "$STR" | $AWK -F - '{ 37 if ($2=="unknown"){ 38 if (NF<3) { print $2; } else { print $3; } 39 } else { 40 if ($2=="linux") { print $2; } else 41 if (NF<3) { print $2; } else { print $3; } 42 } 43}'`" 44eval "$1_CPU=\"$SPLIT_CPU\"" 45eval "$1_OS=\"$SPLIT_OS\"" 46shift 47[ -z "$1" ] && break 48done 49} 50 51VPATH=`dirname ${0}` 52if [ "${VPATH}" = "." ]; then 53 WODIS=current 54else 55 if [ "${VPATH}" = "${PWD}" ]; then 56 VPATH=. 57 WODIS=current 58 else 59 WODIS=crosspath 60 CURDIR=$PWD 61 cd $VPATH 62 VPATH="${PWD}/" 63 cd $CURDIR 64 fi 65fi 66 67guess_os() { 68if [ -e "${VPATH}/config.guess" ]; then 69 sh ${VPATH}/config.guess 70 return 71fi 72CPU="`uname -m|sed -e 's, ,,g'|cut -d - -f 1`" 73OS="`uname -s|tr A-Z a-z`" 74uname -r | grep -qE "(Microsoft|WSL)" 2>/dev/null && OS="wsl" 75GNU="`uname --help 2>&1 | grep gnu`" 76[ "${GNU}" ] && OS="${OS}-gnu" 77[ "${CPU}" = ppc ] && CPU="powerpc" 78echo "${CPU}-unknown-${OS}" 79} 80 81SEARCHPATH="/usr /usr/local /usr/pkg /sw" 82 83: ${PREFIX:=/usr/local} 84CROSSBUILD=0 85BUILD=`guess_os` 86HOST="${BUILD}" 87TARGET="${HOST}" 88SYSCONFDIR="" 89 90create_environ() { 91: ${EPREFIX:="${PREFIX}"} 92: ${SPREFIX:="${PREFIX}"} 93: ${BINDIR:="${SPREFIX}/bin"} 94: ${SBINDIR:="${PREFIX}/sbin"} 95: ${SYSCONFDIR:="${SPREFIX}/etc"} 96: ${LIBDIR:="${SPREFIX}/lib"} 97: ${LIBEXECDIR:="${SPREFIX}/libexec"} 98: ${INCLUDEDIR:="${SPREFIX}/include"} 99: ${DATADIR:="${SPREFIX}/share"} 100: ${INFODIR:="${DATADIR}/info"} 101: ${MANDIR:="${DATADIR}/man"} 102: ${DOCDIR:="${DATADIR}/doc/tudu"} 103: ${LOCALSTATEDIR:="${SPREFIX}/var"} 104for A in `echo ${PATH} | sed -e 's,:, ,g'` ; do 105 [ -e "$A"/ginstall ] && : ${INSTALL:="$A"/ginstall} && break 106 [ -e "$A"/install ] && : ${INSTALL:="$A"/install} && break 107done 108: ${INSTALL_DIR:=${INSTALL} -d} 109: ${INSTALL_DATA:=${INSTALL} -m 644} 110: ${INSTALL_SCRIPT:=${INSTALL} -m 755} 111: ${INSTALL_PROGRAM:=${INSTALL} -m 755} 112: ${INSTALL_PROGRAM_STRIP:=${INSTALL} -m 755 -s} 113: ${INSTALL_MAN:=${INSTALL} -m 444} 114: ${INSTALL_LIB:=${INSTALL} -m 755 -c} 115 PKGNAME='tudu' ; VERSION='0.10.3' ; CONTACT_MAIL="meskio@sindominio.net" ; CONTACT_NAME="Ruben Pollan" ; CONTACT="Ruben Pollan <meskio@sindominio.net>" ; 116} 117 118show_usage() { 119cat <<EOF2 120'configure' configures tudu-0.10.3 to adapt to many kinds of systems. 121 122Usage: ./configure [OPTION]... [VAR=VALUE]... 123 124To assign environment variables (e.g., CC, CFLAGS...), specify them as 125VAR=VALUE. See below for descriptions of some of the useful variables. 126 127Defaults for the options are specified in brackets. 128 129Configuration: 130 -h, --help display this help and exit 131 -r, --report show what libs/programs require to work 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/tudu] 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 " 161Some influential environment variables: 162 CXX C++ compiler command 163 CXXFLAGS C++ compiler flags 164" 165printf " 166Report bugs to: Ruben Pollan <meskio@sindominio.net>" 167echo "" 168exit 0 169} 170 171take_environ() { 172: ${SH:=/bin/sh} 173: ${CPP:=cpp} 174: ${CXX:=g++} 175: ${PREFIX:=/usr/local/} 176} 177 178show_version() { 179echo "tudu-0.10.3 configuration script done with acr v1.7.2. 180The 'Free Software Foundation' message is only for autodetection. 181Originally written by pancake <nopcode.org>." 182exit 0 183} 184 185parse_options() { 186flag=`echo $1| cut -d = -f 1` 187value=`echo $1| $AWK 'BEGIN{FS="=";}{print $2}'` 188flag2=`echo $flag|cut -f2- -d -| sed -e 's,-,_,g' -e 's,^_,,g'|tr '[a-z]' '[A-Z]'` 189 190if [ "${TARGET_OS}" = "darwin" ]; then 191 LIBPATH=-Wl,-install_name, 192else 193 LIBPATH=-Wl,-R 194fi 195 196case $flag in 197-h|--help|--hel|--h|--he|-help) 198 show_usage ; ;; 199-V|-version|--version) 200 show_version ; ;; 201-r|--r|--report) 202echo "PKGNAME: tudu" 203echo "VERSION: 0.10.3" 204echo "LANGS: c++" 205echo "OPTIONAL: libncursesw libncurses libcurses" 206 exit 0 207 ;; 208--cache-file) 209 # ignored: acr have no cache 210 ;; 211--build) 212 BUILD="$value"; split_host BUILD ; ;; 213--host) 214 CROSSBUILD=1 # XXX 215 HOST="$value"; split_host HOST ; ;; 216--target) 217 TARGET="$value"; split_host TARGET ; ;; 218--prefix) 219 PREFIX="$value"; ;; 220--exec-prefix) 221 EPREFIX="$value"; ;; 222--sandbox|--sprefix) 223 SPREFIX="$value"; ;; 224--bindir) 225 BINDIR="$value"; ;; 226--sbindir) 227 SBINDIR="$value"; ;; 228--libexecdir) 229 LIBEXECDIR="$value"; ;; 230--docdir) 231 DOCDIR="$value"; ;; 232--datadir) 233 DATADIR="$value"; ;; 234--sysconfdir) 235 SYSCONFDIR="$value"; ;; 236--sharedstatedir) 237 SHAREDSTATEDIR="$value"; ;; 238--localstatedir) 239 LOCALSTATEDIR="$value"; ;; 240--libdir) 241 LIBDIR="$value"; ;; 242--libpath) 243 LDFLAGS="${LDFLAGS} ${LIBPATH}$value"; ;; 244--includedir) 245 INCLUDEDIR="$value"; CFLAGS="${CFLAGS} -I$value"; ;; 246--infodir) 247 INFODIR="$value"; ;; 248--mandir) 249 MANDIR="$value"; ;; 250 251*) if [ "$value" ]; then eval "`echo $flag2=$value`" ; 252else echo ; echo "WARNING: Unknown flag '$flag'." >&2 ; echo ; fi ;; 253esac 254} 255 256# MAIN # 257take_environ 258split_host BUILD HOST TARGET 259[ -z "$ACRHOOK" ] && ACRHOOK=./configure.hook 260[ -e "$ACRHOOK" ] && . ${ACRHOOK} 261 262while : ; do 263[ -z "$1" ] && break 264parse_options "$1" 265shift 266done 267 268ENVWORDS="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 YEAR CXX CXXFLAGS LDFLAGS HAVE_LANG_CXX CPP CPPFLAGS SRCS HAVE_XCURSES_H HAVE_NCURSESW_CURSES_H HAVE_NCURSES_CURSES_H HAVE_NCURSES_H HAVE_CURSES_H CURSES_INCLUDE HAVE_LIB_NCURSESW HAVE_LIB_NCURSES HAVE_LIB_CURSES LD_CURSES WIDEC_CURSES HAVE_STRING HAVE_VECTOR HAVE_MAP HAVE_FSTREAM HAVE_LIST HAVE_STACK HAVE_ALGORITHM HAVE_SET HAVE_CTIME HAVE_CSTRING HAVE_CSIGNAL HAVE_CSTDIO HAVE_CSTDLIB HAVE_SYS_TYPES_H HAVE_SYS_WAIT_H HAVE_SYS_STAT_H HAVE_UNISTD_H HAVE_FCNTL_H HAVE_LOCALE HAVE_CWCHAR HAVE_CLOCALE HAVE_CLIMITS HAVE_IOSTREAM HAVE_IOMANIP HAVE_SSTREAM HAVE_CERRNO" 269 270create_environ 271 272echo "checking build system type... ${BUILD}" 273echo "checking host system type... ${HOST}" 274echo "checking target system type... ${TARGET}" 275[ "${CROSSBUILD}" = 1 ] && echo "using crosscompilation mode." 276 277#split_host BUILD HOST TARGET 278[ -n "${prefix}" ] && PREFIX="${prefix}" 279echo "checking for working directories... ${WODIS}" 280echo "using prefix '${PREFIX}'" 281ACR_RMFILES=" test.c test.cxx a.out a.exe" 282 283 284 285 286 287 288 289 290 291YEAR="2019" 292COMPILER=CXX 293HAVE_LANG_CXX=1 294printf "checking for c++ compiler... " 295if [ "${CROSSBUILD}" = 1 ]; then 296(command -v ${HOST}-${CXX} 2>&1 >/dev/null) 297if [ "$?" = 0 ]; then CXX="${HOST}-${CXX}"; fi 298fi 299echo "#include <iostream>" > test.cxx 300echo "int main(){ std::cout << 1; return 0;}" >> test.cxx 301(exec ${CXX} ${CXXFLAGS} ${LDFLAGS} test.cxx -lstdc++ >/dev/null 2>&1) 302if [ $? = 0 ]; then echo ${CXX}; else 303HAVE_LANG_CXX=0 304echo no 305 306echo "ERROR: ${CXX} cannot create executables" >&2 ; 307do_remove 308exit 1 309 fi 310CXXFLAGS="${CXXFLAGS} -Wall -O2" 311CPPFLAGS="${CPPFLAGS} " 312SRCS="${SRCS} tudu.cc data.cc editor.cc interface.cc window.cc text.cc parser.cc config.cc date.cc screen.cc scheduler.cc cmd.cc" 313check_include() { 314VAR=$1 315INC=$2 316_REQUIRED=$3 317printf "checking for $2... " 318echo > test.c 319 320echo "#include <${INC}>" >>test.c 321echo 'int main(int ac, char **av){return 0;}' >>test.c 322eval \$${COMPILER} ${CFLAGS} ${CPPFLAGS} ${CXXFLAGS} test.c >/dev/null 2>&1 323if [ $? = 0 ]; then 324 eval ${VAR}=1 325 echo yes 326else 327 eval ${VAR}=0 328 echo no 329 if [ 1 = "0" ]; then 330 echo 'ERROR: required include not found.' >&2 331 do_remove 332 exit 1 333 fi 334fi 335} 336 337check_include HAVE_XCURSES_H xcurses.h 0 338 339check_include HAVE_NCURSESW_CURSES_H ncursesw/curses.h 0 340 341check_include HAVE_NCURSES_CURSES_H ncurses/curses.h 0 342 343check_include HAVE_NCURSES_H ncurses.h 0 344 345check_include HAVE_CURSES_H curses.h 0 346 347if [ "$HAVE_XCURSES_H" = "1" ]; then 348CURSES_INCLUDE="xcurses.h"; fi 349if [ "$HAVE_NCURSESW_CURSES_H" = "1" ]; then 350[ -z "${CURSES_INCLUDE}" ] && CURSES_INCLUDE="ncursesw/curses.h"; fi 351if [ "$HAVE_NCURSES_CURSES_H" = "1" ]; then 352[ -z "${CURSES_INCLUDE}" ] && CURSES_INCLUDE="ncurses/curses.h"; fi 353if [ "$HAVE_NCURSES_H" = "1" ]; then 354[ -z "${CURSES_INCLUDE}" ] && CURSES_INCLUDE="ncurses.h"; fi 355if [ "$HAVE_CURSES_H" = "1" ]; then 356[ -z "${CURSES_INCLUDE}" ] && CURSES_INCLUDE="curses.h"; fi 357if [ "$CURSES_INCLUDE" = "" ]; then 358case "$undefined_variable" in 0|"") echo ; echo "ERROR: There is no curses installed!" >&2 ; echo ; exit 1 ;; esac; fi 359check_library() { 360VAR=$1 361S="$" 362_REQUIRED=$3 363_CHKLIB_NAME=$2 364_CHKLIB_LIBS=$(echo "-l${_CHKLIB_NAME}" | sed 's,+, -l,g') 365printf "checking for lib${_CHKLIB_NAME} ... " 366echo "int main(int ac, char **av){return 0;}" > test.c 367eval ${S}${COMPILER} ${CFLAGS} ${CPPFLAGS} ${CXXFLAGS} ${LDFLAGS} ${_CHKLIB_LIBS} test.c >/dev/null 2>&1 368if [ $? = 0 ]; then 369 eval ${VAR}=1 370 echo yes 371else 372 eval ${VAR}=0 373 echo no 374 if [ "${_REQUIRED}" = 1 ]; then 375 echo "this library is required." 376 do_remove 377 exit 1 378 fi 379fi 380} 381 382check_library HAVE_LIB_NCURSESW ncursesw 0 383check_library HAVE_LIB_NCURSES ncurses 0 384check_library HAVE_LIB_CURSES curses 0 385if [ "$HAVE_LIB_NCURSESW" = "1" ]; then 386LD_CURSES="-lncursesw"; fi 387if [ "$HAVE_LIB_NCURSES" = "1" ]; then 388[ -z "${LD_CURSES}" ] && LD_CURSES="-lncurses"; fi 389if [ "$HAVE_LIB_CURSES" = "1" ]; then 390[ -z "${LD_CURSES}" ] && LD_CURSES="-lcurses"; fi 391if [ "$LD_CURSES" = "" ]; then 392case "$undefined_variable" in 0|"") echo ; echo "ERROR: There is no curses installed!" >&2 ; echo ; exit 1 ;; esac; fi 393LDFLAGS="${LDFLAGS} $LD_CURSES" 394printf "checking for WIDEC_CURSES... " 395 echo "#define _XOPEN_SOURCE_EXTENDED" > test.c ; echo "#include<$CURSES_INCLUDE>" >> test.c ; echo "int main(){ addwstr(L\"\"); }" >> test.c ; eval \$${COMPILER} ${CXXFLAGS} test.c ${LDFLAGS} >/dev/null 2>&1 ; WIDEC_CURSES=$? ; rm test.c 396if [ "$WIDEC_CURSES" = 0 ]; then 397 WIDEC_CURSES=1 398 echo yes 399else 400 WIDEC_CURSES=0 401 echo no 402fi 403if [ "$WIDEC_CURSES" = "0" ]; then 404case "$undefined_variable" in 0|"") echo ; echo "ERROR: There is no wide character support on curses!" >&2 ; echo ; exit 1 ;; esac; fi 405check_include HAVE_STRING string 1 406 407check_include HAVE_VECTOR vector 1 408 409check_include HAVE_MAP map 1 410 411check_include HAVE_FSTREAM fstream 1 412 413check_include HAVE_LIST list 1 414 415check_include HAVE_STACK stack 1 416 417check_include HAVE_ALGORITHM algorithm 1 418 419check_include HAVE_SET set 1 420 421check_include HAVE_CTIME ctime 1 422 423check_include HAVE_CSTRING cstring 1 424 425check_include HAVE_CSIGNAL csignal 1 426 427check_include HAVE_CSTDIO cstdio 1 428 429check_include HAVE_CSTDLIB cstdlib 1 430 431check_include HAVE_SYS_TYPES_H sys/types.h 1 432 433check_include HAVE_SYS_WAIT_H sys/wait.h 1 434 435check_include HAVE_SYS_STAT_H sys/stat.h 1 436 437check_include HAVE_UNISTD_H unistd.h 1 438 439check_include HAVE_FCNTL_H fcntl.h 1 440 441check_include HAVE_LOCALE locale 1 442 443check_include HAVE_CWCHAR cwchar 1 444 445check_include HAVE_CLOCALE clocale 1 446 447check_include HAVE_CLIMITS climits 1 448 449check_include HAVE_IOSTREAM iostream 1 450 451check_include HAVE_IOMANIP iomanip 1 452 453check_include HAVE_SSTREAM sstream 1 454 455check_include HAVE_CERRNO cerrno 1 456 457SEDFLAGS=" -e '" 458COUNT=0 459for A in ${ENVWORDS} ; do 460 [ "${A}" = VPATH ] && continue 461 [ "${A}" = srcdir ] && continue 462 eval "VAR=\$${A}" 463 VAR="`echo ${VAR} | sed -e 's/\,/\\\,/g'`" 464 [ $COUNT = 10 ] && COUNT=0 && SEDFLAGS="${SEDFLAGS}' -e '" 465 COUNT=$(($COUNT+1)) 466 SEDFLAGS="${SEDFLAGS}s,@${A}@,${VAR},g;" 467done 468SEDFLAGS="${SEDFLAGS}'" 469for A in . src data src/defs.h ; do # SUBDIRS 470if [ -f "${VPATH}/${A}.acr" ]; then 471 SD_TARGET=${A} 472 else 473 if [ -d "${VPATH}/${A}" ]; then 474 SD_TARGET=${A}/Makefile 475 mkdir -p ${A} 476 else 477 echo "ERROR: Cannot find ${VPATH}/${A}.acr" >&2 478 exit 1 479 fi 480 fi 481 echo "creating ${SD_TARGET}" 482mkdir -p $(echo ${A} | sed -e "s,/`basename ${A}`$,,g") 483 cat ${VPATH}/${SD_TARGET}.acr | \ 484eval sed -e "s,@VPATH@,${VPATH}/${A},g" ${SEDFLAGS} > ${SD_TARGET}.tmp 485 486for A in ${ENVWORDS}; do 487VALUE=`eval echo "$"${A}` 488if [ "$VALUE" = 0 ]; then ## FALSE 489 MARK="##${A}##" 490if [ -n "`grep \"${MARK}\" ${SD_TARGET}.tmp`" ]; then 491 mv ${SD_TARGET}.tmp ${SD_TARGET}.tmp2 492 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 493 fi 494fi 495done 496 mv ${SD_TARGET}.tmp ${SD_TARGET} && rm -f ${SD_TARGET}.tmp2 497 if [ ! $? = 0 ]; then echo Cannot write target file ; control_c ; fi 498done 499 500do_remove 501