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