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