af97b345497d244509410afb390bde37b3715729
[alioth/magicpoint.git] / Build.sh
1 #!/bin/sh
2 srcversion='1.2 (Alpha)'
3 #-
4 # Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
5 #               2011, 2012, 2013, 2014, 2015, 2016, 2017, 2019
6 #       mirabilos <m@mirbsd.org>
7 # Copyright (c) 2018, 2019
8 #       mirabilos <t.glaser@tarent.de>
9 #
10 # Redistribution and use in source and binary forms, with or without
11 # modification, are permitted provided that the following conditions
12 # are met:
13 # 1. Redistributions of source code must retain the above copyright
14 #    notice, this list of conditions and the following disclaimer.
15 # 2. Redistributions in binary form must reproduce the above copyright
16 #    notice, this list of conditions and the following disclaimer in the
17 #    documentation and/or other materials provided with the distribution.
18 # 3. Neither the name of the project nor the names of its contributors
19 #    may be used to endorse or promote products derived from this software
20 #    without specific prior written permission.
21 #
22 # THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS “AS IS” AND
23 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25 # ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
26 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28 # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 # SUCH DAMAGE.
33 #
34 # This script is also available under The MirOS Licence.
35 #-
36 # People analysing the output must whitelist conftest.c for any kind
37 # of compiler warning checks (mirtoconf is by design not quiet).
38 #
39 # Used environment documentation is at the end of this file.
40
41 LC_ALL=C; LANGUAGE=C
42 export LC_ALL; unset LANGUAGE
43
44 case $ZSH_VERSION:$VERSION in
45 :zsh*) ZSH_VERSION=2 ;;
46 esac
47
48 if test -n "${ZSH_VERSION+x}" && (emulate sh) >/dev/null 2>&1; then
49         emulate sh
50         NULLCMD=:
51 fi
52
53 if test -d /usr/xpg4/bin/. >/dev/null 2>&1; then
54         # Solaris: some of the tools have weird behaviour, use portable ones
55         PATH=/usr/xpg4/bin:$PATH
56         export PATH
57 fi
58
59 nl='
60 '
61 safeIFS='       '
62 safeIFS=" $safeIFS$nl"
63 IFS=$safeIFS
64 allu=QWERTYUIOPASDFGHJKLZXCVBNM
65 alll=qwertyuiopasdfghjklzxcvbnm
66 alln=0123456789
67 alls=______________________________________________________________
68
69 case `echo a | tr '\201' X` in
70 X)
71         # EBCDIC build system
72         lfcr='\n\r'
73         ;;
74 *)
75         lfcr='\012\015'
76         ;;
77 esac
78
79 echo "For the build logs, demonstrate that /dev/null and /dev/tty exist:"
80 ls -l /dev/null /dev/tty
81
82 v() {
83         $e "$*"
84         eval "$@"
85 }
86
87 vv() {
88         _c=$1
89         shift
90         $e "\$ $*" 2>&1
91         eval "$@" >vv.out 2>&1
92         sed "s\a^\a${_c} \a" <vv.out
93 }
94
95 vq() {
96         eval "$@"
97 }
98
99 rmf() {
100         for _f in "$@"; do
101                 case $_f in
102                 mgp.1|mgp.c|mgp.h) ;;
103                 *) rm -f "$_f" ;;
104                 esac
105         done
106 }
107
108 tcfn=no
109 bi=
110 ui=
111 ao=
112 fx=
113 me=`basename "$0"`
114 orig_CFLAGS=$CFLAGS
115 phase=x
116
117 if test -t 1; then
118         bi='\e[1m'
119         ui='\e[4m'
120         ao='\e[0m'
121 fi
122
123 upper() {
124         echo :"$@" | sed 's/^://' | tr $alll $allu
125 }
126
127 # clean up after ac_testrun()
128 ac_testdone() {
129         eval HAVE_$fu=$fv
130         fr=no
131         test 0 = $fv || fr=yes
132         $e "$bi==> $fd...$ao $ui$fr$ao$fx"
133         fx=
134 }
135
136 # ac_cache label: sets f, fu, fv?=0
137 ac_cache() {
138         f=$1
139         fu=`upper $f`
140         eval fv=\$HAVE_$fu
141         case $fv in
142         0|1)
143                 fx=' (cached)'
144                 return 0
145                 ;;
146         esac
147         fv=0
148         return 1
149 }
150
151 # ac_testinit label [!] checkif[!]0 [setlabelifcheckis[!]0] useroutput
152 # returns 1 if value was cached/implied, 0 otherwise: call ac_testdone
153 ac_testinit() {
154         if ac_cache $1; then
155                 test x"$2" = x"!" && shift
156                 test x"$2" = x"" || shift
157                 fd=${3-$f}
158                 ac_testdone
159                 return 1
160         fi
161         fc=0
162         if test x"$2" = x""; then
163                 ft=1
164         else
165                 if test x"$2" = x"!"; then
166                         fc=1
167                         shift
168                 fi
169                 eval ft=\$HAVE_`upper $2`
170                 shift
171         fi
172         fd=${3-$f}
173         if test $fc = "$ft"; then
174                 fv=$2
175                 fx=' (implied)'
176                 ac_testdone
177                 return 1
178         fi
179         $e ... $fd
180         return 0
181 }
182
183 # pipe .c | ac_test[n] [!] label [!] checkif[!]0 [setlabelifcheckis[!]0] useroutput
184 ac_testnnd() {
185         if test x"$1" = x"!"; then
186                 fr=1
187                 shift
188         else
189                 fr=0
190         fi
191         ac_testinit "$@" || return 1
192         cat >conftest.c
193         vv ']' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN conftest.c $LIBS $ccpr"
194         test $tcfn = no && test -f a.out && tcfn=a.out
195         test $tcfn = no && test -f a.exe && tcfn=a.exe
196         test $tcfn = no && test -f conftest.exe && tcfn=conftest.exe
197         test $tcfn = no && test -f conftest && tcfn=conftest
198         if test -f $tcfn; then
199                 test 1 = $fr || fv=1
200         else
201                 test 0 = $fr || fv=1
202         fi
203         vscan=
204         if test $phase = u; then
205                 test $ct = gcc && vscan='unrecogni[sz]ed'
206                 test $ct = hpcc && vscan='unsupported'
207                 test $ct = pcc && vscan='unsupported'
208                 test $ct = sunpro && vscan='-e ignored -e turned.off'
209         fi
210         test -n "$vscan" && grep $vscan vv.out >/dev/null 2>&1 && fv=$fr
211         return 0
212 }
213 ac_testn() {
214         ac_testnnd "$@" || return
215         rmf conftest.c conftest.o ${tcfn}* vv.out
216         ac_testdone
217 }
218
219 # ac_ifcpp cppexpr [!] label [!] checkif[!]0 [setlabelifcheckis[!]0] useroutput
220 ac_ifcpp() {
221         expr=$1; shift
222         ac_testn "$@" <<-EOF
223                 #include <unistd.h>
224                 extern int thiswillneverbedefinedIhope(void);
225                 int main(void) { return (dup(0) +
226                 #$expr
227                     0
228                 #else
229                 /* force a failure: expr is false */
230                     thiswillneverbedefinedIhope()
231                 #endif
232                     ); }
233 EOF
234         test x"$1" = x"!" && shift
235         f=$1
236         fu=`upper $f`
237         eval fv=\$HAVE_$fu
238         test x"$fv" = x"1"
239 }
240
241 add_cppflags() {
242         CPPFLAGS="$CPPFLAGS $*"
243 }
244
245 ac_cppflags() {
246         test x"$1" = x"" || fu=$1
247         fv=$2
248         test x"$2" = x"" && eval fv=\$HAVE_$fu
249         add_cppflags -DHAVE_$fu=$fv
250 }
251
252 ac_test() {
253         ac_testn "$@"
254         ac_cppflags
255 }
256
257 # ac_flags [-] add varname cflags [text] [ldflags]
258 ac_flags() {
259         if test x"$1" = x"-"; then
260                 shift
261                 hf=1
262         else
263                 hf=0
264         fi
265         fa=$1
266         vn=$2
267         f=$3
268         ft=$4
269         fl=$5
270         test x"$ft" = x"" && ft="if $f can be used"
271         save_CFLAGS=$CFLAGS
272         CFLAGS="$CFLAGS $f"
273         if test -n "$fl"; then
274                 save_LDFLAGS=$LDFLAGS
275                 LDFLAGS="$LDFLAGS $fl"
276         fi
277         if test 1 = $hf; then
278                 ac_testn can_$vn '' "$ft"
279         else
280                 ac_testn can_$vn '' "$ft" <<-'EOF'
281                         /* evil apo'stroph in comment test */
282                         #include <unistd.h>
283                         int main(void) { return (dup(0)); }
284                 EOF
285                 #'
286         fi
287         eval fv=\$HAVE_CAN_`upper $vn`
288         if test -n "$fl"; then
289                 test 11 = $fa$fv || LDFLAGS=$save_LDFLAGS
290         fi
291         test 11 = $fa$fv || CFLAGS=$save_CFLAGS
292 }
293
294 # ac_header [!] header [prereq ...]
295 ac_header() {
296         if test x"$1" = x"!"; then
297                 na=1
298                 shift
299         else
300                 na=0
301         fi
302         hf=$1; shift
303         hv=`echo "$hf" | tr -d "$lfcr" | tr -c $alll$allu$alln $alls`
304         echo "/* NeXTstep bug workaround */" >x
305         for i
306         do
307                 case $i in
308                 _time)
309                         echo '#if HAVE_BOTH_TIME_H' >>x
310                         echo '#include <sys/time.h>' >>x
311                         echo '#include <time.h>' >>x
312                         echo '#elif HAVE_SYS_TIME_H' >>x
313                         echo '#include <sys/time.h>' >>x
314                         echo '#elif HAVE_TIME_H' >>x
315                         echo '#include <time.h>' >>x
316                         echo '#endif' >>x
317                         ;;
318                 *)
319                         echo "#include <$i>" >>x
320                         ;;
321                 esac
322         done
323         echo "#include <$hf>" >>x
324         echo '#include <unistd.h>' >>x
325         echo 'int main(void) { return (dup(0)); }' >>x
326         ac_testn "$hv" "" "<$hf>" <x
327         rmf x
328         test 1 = $na || ac_cppflags
329 }
330
331
332 curdir=`pwd` srcdir=`dirname "$0" 2>/dev/null`
333 case x$srcdir in
334 x)
335         srcdir=.
336         ;;
337 *\ *|*" "*|*"$nl"*)
338         echo >&2 Source directory should not contain space or tab or newline.
339         echo >&2 Errors may occur.
340         ;;
341 *"'"*)
342         echo Source directory must not contain single quotes.
343         exit 1
344         ;;
345 esac
346 CFLAGS="-DMCCF $CFLAGS"
347 add_cppflags '-Dmgp_version='\''"$(mgpversion)"'\'' -DMCPPF'
348
349 e=echo
350 eq=0
351 last=
352 pkgs='imlib2 libbsd-overlay xft'
353
354 for i
355 do
356         case $last:$i in
357         P:*)
358                 pkgs=$i
359                 last=
360                 ;;
361         :-g)
362                 # checker, debug, valgrind build
363                 add_cppflags -DDEBUG
364                 CFLAGS="$CFLAGS -g3 -fno-builtin"
365                 ;;
366         :-P)
367                 last=P
368                 ;;
369         :-Q)
370                 eq=1
371                 ;;
372         :-v)
373                 echo "Build.sh for MagicPoint $srcversion"
374                 exit 0
375                 ;;
376         :*)
377                 echo "$me: Unknown option '$i'!" >&2
378                 exit 1
379                 ;;
380         *)
381                 echo "$me: Unknown option -'$last' '$i'!" >&2
382                 exit 1
383                 ;;
384         esac
385 done
386
387 tfn=mgp
388 if test -d $tfn || test -d $tfn.exe; then
389         echo "$me: Error: ./$tfn is a directory!" >&2
390         exit 1
391 fi
392 rmf a.exe* a.out* conftest.c conftest.exe* *core core.* ${tfn}* *.bc *.dbg \
393     *.ll *.o lft no x vv.out *~
394
395 if test -n "$CPPFLAGS"; then
396         CPPFLAGS="-I. $CPPFLAGS"
397 else
398         CPPFLAGS="-I."
399 fi
400 test -n "$LDSTATIC" && if test -n "$LDFLAGS"; then
401         LDFLAGS="$LDFLAGS $LDSTATIC"
402 else
403         LDFLAGS=$LDSTATIC
404 fi
405
406 if test -z "$TARGET_OS"; then
407         x=`uname -s 2>/dev/null || uname`
408         test x"$x" = x"`uname -n 2>/dev/null`" || TARGET_OS=$x
409 fi
410 if test -z "$TARGET_OS"; then
411         echo "$me: Set TARGET_OS, your uname is broken!" >&2
412         exit 1
413 fi
414 oswarn=
415 ccpc=-Wc,
416 ccpl=-Wl,
417 tsts=
418 ccpr='|| for _f in ${tcfn}*; do case $_f in mgp.1|mgp.c|mgp.h) ;; *) rm -f "$_f" ;; esac; done'
419
420 # Evil hack
421 if test x"$TARGET_OS" = x"Android"; then
422         TARGET_OS=Linux
423 fi
424
425 # Evil OS
426 if test x"$TARGET_OS" = x"Minix"; then
427         echo >&2 "
428 WARNING: additional checks before running Build.sh required!
429 You can avoid these by calling Build.sh correctly, see below.
430 "
431         cat >conftest.c <<'EOF'
432 #include <sys/types.h>
433 const char *
434 #ifdef _NETBSD_SOURCE
435 ct="Ninix3"
436 #else
437 ct="Minix3"
438 #endif
439 ;
440 EOF
441         ct=unknown
442         vv ']' "${CC-cc} -E $CFLAGS $CPPFLAGS $NOWARN conftest.c | grep ct= | tr -d \\\\015 >x"
443         sed 's/^/[ /' x
444         eval `cat x`
445         rmf x vv.out
446         case $ct in
447         Minix3|Ninix3)
448                 echo >&2 "
449 Warning: you set TARGET_OS to $TARGET_OS but that is ambiguous.
450 Please set it to either Minix3 or Ninix3, whereas the latter is
451 all versions of Minix with even partial NetBSD(R) userland. The
452 value determined from your compiler for the current compilation
453 (which may be wrong) is: $ct
454 "
455                 TARGET_OS=$ct
456                 ;;
457         *)
458                 echo >&2 "
459 Warning: you set TARGET_OS to $TARGET_OS but that is ambiguous.
460 Please set it to either Minix3 or Ninix3, whereas the latter is
461 all versions of Minix with even partial NetBSD(R) userland. The
462 proper value couldn't be determined, continue at your own risk.
463 "
464                 ;;
465         esac
466 fi
467
468 # Configuration depending on OS revision, on OSes that need them
469 case $TARGET_OS in
470 SCO_SV)
471         test x"$TARGET_OSREV" = x"" && TARGET_OSREV=`uname -r`
472         ;;
473 esac
474
475 # Configuration depending on OS name
476 case $TARGET_OS in
477 AIX)
478         oswarn="; it is untested"
479         add_cppflags -D_ALL_SOURCE
480         ;;
481 Darwin)
482         oswarn="; it is untested"
483         add_cppflags -D_DARWIN_C_SOURCE
484         ;;
485 FreeMiNT)
486         oswarn="; it is untested"
487         add_cppflags -D_GNU_SOURCE
488         ;;
489 GNU)
490         oswarn="; it is untested"
491         case $CC in
492         *tendracc*) ;;
493         *) add_cppflags -D_GNU_SOURCE ;;
494         esac
495         ;;
496 GNU/kFreeBSD)
497         oswarn="; it is untested"
498         case $CC in
499         *tendracc*) ;;
500         *) add_cppflags -D_GNU_SOURCE ;;
501         esac
502         ;;
503 Interix)
504         oswarn="; it is untested"
505         ccpc='-X '
506         ccpl='-Y '
507         add_cppflags -D_ALL_SOURCE
508         ;;
509 Linux)
510         case $CC in
511         *tendracc*) ;;
512         *) add_cppflags -D_GNU_SOURCE ;;
513         esac
514         ;;
515 midipix)
516         oswarn="; it is untested"
517         add_cppflags -D_GNU_SOURCE
518         ;;
519 MidnightBSD)
520         oswarn="; it is untested"
521         add_cppflags -D_WITH_DPRINTF
522         add_cppflags -DUT_NAMESIZE=32
523         ;;
524 MirBSD)
525         add_cppflags -D_ALL_SOURCE
526         ;;
527 MSYS_*)
528         oswarn="; it is untested"
529         # broken on this OE (from ir0nh34d)
530         : "${HAVE_STDINT_H=0}"
531         ;;
532 NetBSD)
533         oswarn="; it is untested"
534         add_cppflags -D_NETBSD_SOURCE
535         add_cppflags -D_OPENBSD_SOURCE
536         ;;
537 NEXTSTEP)
538         oswarn="; it is untested"
539         add_cppflags -D_NEXT_SOURCE
540         add_cppflags -D_POSIX_SOURCE
541         : "${CC=cc -posix}"
542         ;;
543 OS/390)
544         oswarn="; it is untested"
545         : "${CC=xlc}"
546         add_cppflags -D_ALL_SOURCE
547         ;;
548 OSF1)
549         oswarn="; it is untested"
550         add_cppflags -D_OSF_SOURCE
551         add_cppflags -D_POSIX_C_SOURCE=200112L
552         add_cppflags -D_XOPEN_SOURCE=600
553         add_cppflags -D_XOPEN_SOURCE_EXTENDED
554         ;;
555 QNX)
556         oswarn="; it is untested"
557         add_cppflags -D__NO_EXT_QNX
558         add_cppflags -D__EXT_UNIX_MISC
559         ;;
560 SunOS)
561         oswarn="; it is untested"
562         add_cppflags -D_BSD_SOURCE
563         add_cppflags -D__EXTENSIONS__
564         ;;
565 syllable)
566         oswarn="; it is untested"
567         add_cppflags -D_GNU_SOURCE
568         ;;
569 ULTRIX)
570         oswarn="; it is untested"
571         : "${CC=cc -YPOSIX}"
572         add_cppflags -DMKSH_TYPEDEF_SSIZE_T=int
573         ;;
574 UWIN*)
575         oswarn="; it is untested"
576         ccpc='-Yc,'
577         ccpl='-Yl,'
578         tsts=" 3<>/dev/tty"
579         ;;
580 *)
581         oswarn='; it may or may not work'
582         test x"$TARGET_OSREV" = x"" && TARGET_OSREV=`uname -r`
583         ;;
584 esac
585
586 : "${CC=cc}"
587
588 # this aids me in tracing FTBFSen without access to the buildd
589 $e "Hi from$ao ${bi}mgp Build.sh $srcversion$ao on:"
590 case $TARGET_OS in
591 AIX)
592         vv '|' "oslevel >&2"
593         vv '|' "uname -a >&2"
594         ;;
595 Darwin)
596         vv '|' "hwprefs machine_type os_type os_class >&2"
597         vv '|' "sw_vers >&2"
598         vv '|' "system_profiler -detailLevel mini SPSoftwareDataType SPHardwareDataType >&2"
599         vv '|' "/bin/sh --version >&2"
600         vv '|' "xcodebuild -version >&2"
601         vv '|' "uname -a >&2"
602         vv '|' "sysctl kern.version hw.machine hw.model hw.memsize hw.availcpu hw.ncpu hw.cpufrequency hw.byteorder hw.cpu64bit_capable >&2"
603         vv '|' "sysctl hw.cpufrequency hw.byteorder hw.cpu64bit_capable hw.ncpu >&2"
604         ;;
605 IRIX*)
606         vv '|' "uname -a >&2"
607         vv '|' "hinv -v >&2"
608         ;;
609 OSF1)
610         vv '|' "uname -a >&2"
611         vv '|' "/usr/sbin/sizer -v >&2"
612         ;;
613 SCO_SV|UnixWare|UNIX_SV)
614         vv '|' "uname -a >&2"
615         vv '|' "uname -X >&2"
616         ;;
617 *)
618         vv '|' "uname -a >&2"
619         ;;
620 esac
621 test -z "$oswarn" || echo >&2 "
622 Warning: MagicPoint has not yet been ported to or tested on your
623 operating system '$TARGET_OS'$oswarn. If you can provide
624 a shell account to the developer, this may improve; please
625 drop us a success or failure notice or even send in diffs,
626 at the very least, complete logs (Build.sh + make) will help.
627 "
628 $e "$bi$me: Building MagicPoint$ao ${ui}mgp $srcversion$ao on $TARGET_OS ${TARGET_OSREV}..."
629
630 #
631 # Start of mirtoconf checks
632 #
633 $e $bi$me: Scanning for functions... please ignore any errors.$ao
634
635 #
636 # Compiler: which one?
637 #
638 # notes:
639 # - ICC defines __GNUC__ too
640 # - GCC defines __hpux too
641 # - LLVM+clang defines __GNUC__ too
642 # - nwcc defines __GNUC__ too
643 CPP="$CC -E"
644 $e ... which compiler type seems to be used
645 cat >conftest.c <<'EOF'
646 const char *
647 #if defined(__ICC) || defined(__INTEL_COMPILER)
648 ct="icc"
649 #elif defined(__xlC__) || defined(__IBMC__)
650 ct="xlc"
651 #elif defined(__SUNPRO_C)
652 ct="sunpro"
653 #elif defined(__ACK__)
654 ct="ack"
655 #elif defined(__BORLANDC__)
656 ct="bcc"
657 #elif defined(__WATCOMC__)
658 ct="watcom"
659 #elif defined(__MWERKS__)
660 ct="metrowerks"
661 #elif defined(__HP_cc)
662 ct="hpcc"
663 #elif defined(__DECC) || (defined(__osf__) && !defined(__GNUC__))
664 ct="dec"
665 #elif defined(__PGI)
666 ct="pgi"
667 #elif defined(__DMC__)
668 ct="dmc"
669 #elif defined(_MSC_VER)
670 ct="msc"
671 #elif defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)
672 ct="adsp"
673 #elif defined(__IAR_SYSTEMS_ICC__)
674 ct="iar"
675 #elif defined(SDCC)
676 ct="sdcc"
677 #elif defined(__PCC__)
678 ct="pcc"
679 #elif defined(__TenDRA__)
680 ct="tendra"
681 #elif defined(__TINYC__)
682 ct="tcc"
683 #elif defined(__llvm__) && defined(__clang__)
684 ct="clang"
685 #elif defined(__NWCC__)
686 ct="nwcc"
687 #elif defined(__GNUC__)
688 ct="gcc"
689 #elif defined(_COMPILER_VERSION)
690 ct="mipspro"
691 #elif defined(__sgi)
692 ct="mipspro"
693 #elif defined(__hpux) || defined(__hpua)
694 ct="hpcc"
695 #elif defined(__ultrix)
696 ct="ucode"
697 #elif defined(__USLC__)
698 ct="uslc"
699 #elif defined(__LCC__)
700 ct="lcc"
701 #elif defined(MKSH_MAYBE_KENCC)
702 /* and none of the above matches */
703 ct="kencc"
704 #else
705 ct="unknown"
706 #endif
707 ;
708 const char *
709 #if defined(__KLIBC__) && !defined(__OS2__)
710 et="klibc"
711 #else
712 et="unknown"
713 #endif
714 ;
715 EOF
716 ct=untested
717 et=untested
718 vv ']' "$CPP $CFLAGS $CPPFLAGS $NOWARN conftest.c | \
719     sed -n '/^ *[ce]t *= */s/^ *\([ce]t\) *= */\1=/p' | tr -d \\\\015 >x"
720 sed 's/^/[ /' x
721 eval `cat x`
722 rmf x vv.out
723 cat >conftest.c <<'EOF'
724 #include <unistd.h>
725 int main(void) { return (dup(0)); }
726 EOF
727 case $ct in
728 ack)
729         # work around "the famous ACK const bug"
730         CPPFLAGS="-Dconst= $CPPFLAGS"
731         ;;
732 adsp)
733         echo >&2 'Warning: Analog Devices C++ compiler for Blackfin, TigerSHARC
734     and SHARC (21000) DSPs detected. This compiler has not yet
735     been tested for compatibility with mgp. Continue at your
736     own risk, please report success/failure to the developers.'
737         ;;
738 bcc)
739         echo >&2 "Warning: Borland C++ Builder detected. This compiler might
740     produce broken executables. Continue at your own risk,
741     please report success/failure to the developers."
742         ;;
743 clang)
744         # does not work with current "ccc" compiler driver
745         vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -version"
746         # one of these two works, for now
747         vv '|' "${CLANG-clang} -version"
748         vv '|' "${CLANG-clang} --version"
749         # ensure compiler and linker are in sync unless overridden
750         case $CCC_CC:$CCC_LD in
751         :*)     ;;
752         *:)     CCC_LD=$CCC_CC; export CCC_LD ;;
753         esac
754         ;;
755 dec)
756         vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -V"
757         vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -Wl,-V conftest.c $LIBS"
758         ;;
759 dmc)
760         echo >&2 "Warning: Digital Mars Compiler detected. When running under"
761         echo >&2 "    UWIN, mksh tends to be unstable due to the limitations"
762         echo >&2 "    of this platform. Continue at your own risk,"
763         echo >&2 "    please report success/failure to the developers."
764         ;;
765 gcc)
766         vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -v conftest.c $LIBS"
767         vv '|' 'eval echo "\`$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -dumpmachine\`" \
768                  "gcc\`$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -dumpversion\`"'
769         ;;
770 hpcc)
771         vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -V conftest.c $LIBS"
772         ;;
773 iar)
774         echo >&2 'Warning: IAR Systems (http://www.iar.com) compiler for embedded
775     systems detected. This unsupported compiler has not yet
776     been tested for compatibility with mgp. Continue at your
777     own risk, please report success/failure to the developers.'
778         ;;
779 icc)
780         vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -V"
781         ;;
782 kencc)
783         vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -v conftest.c $LIBS"
784         ;;
785 lcc)
786         vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -v conftest.c $LIBS"
787         add_cppflags -D__inline__=__inline
788         ;;
789 metrowerks)
790         echo >&2 'Warning: Metrowerks C compiler detected. This has not yet
791     been tested for compatibility with mgp. Continue at your
792     own risk, please report success/failure to the developers.'
793         ;;
794 mipspro)
795         vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -version"
796         ;;
797 msc)
798         ccpr=           # errorlevels are not reliable
799         case $TARGET_OS in
800         Interix)
801                 if [[ -n $C89_COMPILER ]]; then
802                         C89_COMPILER=`ntpath2posix -c "$C89_COMPILER"`
803                 else
804                         C89_COMPILER=CL.EXE
805                 fi
806                 if [[ -n $C89_LINKER ]]; then
807                         C89_LINKER=`ntpath2posix -c "$C89_LINKER"`
808                 else
809                         C89_LINKER=LINK.EXE
810                 fi
811                 vv '|' "$C89_COMPILER /HELP >&2"
812                 vv '|' "$C89_LINKER /LINK >&2"
813                 ;;
814         esac
815         ;;
816 nwcc)
817         vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -version"
818         ;;
819 pcc)
820         vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -v"
821         ;;
822 pgi)
823         echo >&2 'Warning: PGI detected. This unknown compiler has not yet
824     been tested for compatibility with mgp. Continue at your
825     own risk, please report success/failure to the developers.'
826         ;;
827 sdcc)
828         echo >&2 'Warning: sdcc (http://sdcc.sourceforge.net), the small devices
829     C compiler for embedded systems detected. This has not yet
830     been tested for compatibility with mgp. Continue at your
831     own risk, please report success/failure to the developers.'
832         ;;
833 sunpro)
834         vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -V conftest.c $LIBS"
835         ;;
836 tcc)
837         vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -v"
838         ;;
839 tendra)
840         vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -V 2>&1 | \
841             grep -F -i -e version -e release"
842         ;;
843 ucode)
844         vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -V"
845         vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -Wl,-V conftest.c $LIBS"
846         ;;
847 uslc)
848         case $TARGET_OS:$TARGET_OSREV in
849         SCO_SV:3.2*)
850                 # SCO OpenServer 5
851                 CFLAGS="$CFLAGS -g"
852                 : "${HAVE_CAN_OTWO=0}${HAVE_CAN_OPTIMISE=0}"
853                 ;;
854         esac
855         vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -V conftest.c $LIBS"
856         ;;
857 watcom)
858         vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -v conftest.c $LIBS"
859         ;;
860 xlc)
861         vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -qversion"
862         vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN $LIBS -qversion=verbose"
863         vv '|' "ld -V"
864         ;;
865 *)
866         test x"$ct" = x"untested" && $e "!!! detecting preprocessor failed"
867         ct=unknown
868         vv "$CC --version"
869         vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -v conftest.c $LIBS"
870         vv '|' "$CC $CFLAGS $CPPFLAGS $LDFLAGS $NOWARN -V conftest.c $LIBS"
871         ;;
872 esac
873 etd=" on $et"
874 case $et in
875 klibc)
876         ;;
877 unknown)
878         # nothing special detected, don’t worry
879         etd=
880         ;;
881 *)
882         # huh?
883         ;;
884 esac
885 $e "$bi==> which compiler type seems to be used...$ao $ui$ct$etd$ao"
886 rmf conftest.c conftest.o conftest a.out* a.exe* conftest.exe* vv.out
887
888 #
889 # Compiler: works as-is, with -Wno-error and -Werror
890 #
891 save_NOWARN=$NOWARN
892 NOWARN=
893 DOWARN=
894 ac_flags 0 compiler_works '' 'if the compiler works'
895 test 1 = $HAVE_CAN_COMPILER_WORKS || exit 1
896 HAVE_COMPILER_KNOWN=0
897 test $ct = unknown || HAVE_COMPILER_KNOWN=1
898 if ac_ifcpp 'if 0' compiler_fails '' \
899     'if the compiler does not fail correctly'; then
900         save_CFLAGS=$CFLAGS
901         : "${HAVE_CAN_DELEXE=x}"
902         case $ct in
903         dec)
904                 CFLAGS="$CFLAGS ${ccpl}-non_shared"
905                 ac_testn can_delexe compiler_fails 0 'for the -non_shared linker option' <<-'EOF'
906                         #include <unistd.h>
907                         int main(void) { return (dup(0)); }
908                 EOF
909                 ;;
910         dmc)
911                 CFLAGS="$CFLAGS ${ccpl}/DELEXECUTABLE"
912                 ac_testn can_delexe compiler_fails 0 'for the /DELEXECUTABLE linker option' <<-'EOF'
913                         #include <unistd.h>
914                         int main(void) { return (dup(0)); }
915                 EOF
916                 ;;
917         *)
918                 exit 1
919                 ;;
920         esac
921         test 1 = $HAVE_CAN_DELEXE || CFLAGS=$save_CFLAGS
922         ac_ifcpp 'if 0' compiler_still_fails \
923             'if the compiler still does not fail correctly' && exit 1
924 fi
925 if ac_ifcpp 'ifdef __TINYC__' couldbe_tcc '!' compiler_known 0 \
926     'if this could be tcc'; then
927         ct=tcc
928         CPP='cpp -D__TINYC__'
929         HAVE_COMPILER_KNOWN=1
930 fi
931
932 case $ct in
933 bcc)
934         save_NOWARN="${ccpc}-w"
935         DOWARN="${ccpc}-w!"
936         ;;
937 dec)
938         # -msg_* flags not used yet, or is -w2 correct?
939         ;;
940 dmc)
941         save_NOWARN="${ccpc}-w"
942         DOWARN="${ccpc}-wx"
943         ;;
944 hpcc)
945         save_NOWARN=
946         DOWARN=+We
947         ;;
948 kencc)
949         save_NOWARN=
950         DOWARN=
951         ;;
952 mipspro)
953         save_NOWARN=
954         DOWARN="-diag_error 1-10000"
955         ;;
956 msc)
957         save_NOWARN="${ccpc}/w"
958         DOWARN="${ccpc}/WX"
959         ;;
960 sunpro)
961         test x"$save_NOWARN" = x"" && save_NOWARN='-errwarn=%none'
962         ac_flags 0 errwarnnone "$save_NOWARN"
963         test 1 = $HAVE_CAN_ERRWARNNONE || save_NOWARN=
964         ac_flags 0 errwarnall "-errwarn=%all"
965         test 1 = $HAVE_CAN_ERRWARNALL && DOWARN="-errwarn=%all"
966         ;;
967 tendra)
968         save_NOWARN=-w
969         ;;
970 ucode)
971         save_NOWARN=
972         DOWARN=-w2
973         ;;
974 watcom)
975         save_NOWARN=
976         DOWARN=-Wc,-we
977         ;;
978 xlc)
979         case $TARGET_OS in
980         OS/390)
981                 save_NOWARN=-qflag=e
982                 DOWARN=-qflag=i
983                 ;;
984         *)
985                 save_NOWARN=-qflag=i:e
986                 DOWARN=-qflag=i:i
987                 ;;
988         esac
989         ;;
990 *)
991         test x"$save_NOWARN" = x"" && save_NOWARN=-Wno-error
992         ac_flags 0 wnoerror "$save_NOWARN"
993         test 1 = $HAVE_CAN_WNOERROR || save_NOWARN=
994         ac_flags 0 werror -Werror
995         test 1 = $HAVE_CAN_WERROR && DOWARN=-Werror
996         test $ct = icc && DOWARN="$DOWARN -wd1419"
997         ;;
998 esac
999 NOWARN=$save_NOWARN
1000
1001 #
1002 # Compiler: extra flags (-O2 -f* -W* etc.)
1003 #
1004 i=`echo :"$orig_CFLAGS" | sed 's/^://' | tr -c -d $alll$allu$alln`
1005 # optimisation: only if orig_CFLAGS is empty
1006 test x"$i" = x"" && case $ct in
1007 hpcc)
1008         phase=u
1009         ac_flags 1 otwo +O2
1010         phase=x
1011         ;;
1012 kencc|tcc|tendra)
1013         # no special optimisation
1014         ;;
1015 sunpro)
1016         cat >x <<-'EOF'
1017                 #include <unistd.h>
1018                 int main(void) { return (dup(0)); }
1019                 #define __IDSTRING_CONCAT(l,p)  __LINTED__ ## l ## _ ## p
1020                 #define __IDSTRING_EXPAND(l,p)  __IDSTRING_CONCAT(l,p)
1021                 #define pad                     void __IDSTRING_EXPAND(__LINE__,x)(void) { }
1022         EOF
1023         yes pad | head -n 256 >>x
1024         ac_flags - 1 otwo -xO2 <x
1025         rmf x
1026         ;;
1027 xlc)
1028         ac_flags 1 othree "-O3 -qstrict"
1029         test 1 = $HAVE_CAN_OTHREE || ac_flags 1 otwo -O2
1030         ;;
1031 *)
1032         ac_flags 1 otwo -O2
1033         test 1 = $HAVE_CAN_OTWO || ac_flags 1 optimise -O
1034         ;;
1035 esac
1036 # other flags: just add them if they are supported
1037 i=0
1038 case $ct in
1039 bcc)
1040         ac_flags 1 strpool "${ccpc}-d" 'if string pooling can be enabled'
1041         ;;
1042 clang)
1043         i=1
1044         ;;
1045 dec)
1046         ac_flags 0 verb -verbose
1047         ac_flags 1 rodata -readonly_strings
1048         ;;
1049 dmc)
1050         ac_flags 1 decl "${ccpc}-r" 'for strict prototype checks'
1051         ac_flags 1 schk "${ccpc}-s" 'for stack overflow checking'
1052         ;;
1053 gcc)
1054         # The following tests run with -Werror (gcc only) if possible
1055         NOWARN=$DOWARN; phase=u
1056         # MagicPoint is not written in CFrustFrust!
1057         ac_flags 1 no_eh_frame -fno-asynchronous-unwind-tables
1058         ac_flags 1 fnostrictaliasing -fno-strict-aliasing
1059         ac_flags 1 fstackprotectorstrong -fstack-protector-strong
1060         test 1 = $HAVE_CAN_FSTACKPROTECTORSTRONG || \
1061             ac_flags 1 fstackprotectorall -fstack-protector-all
1062         ac_flags 1 data_abi_align -malign-data=abi
1063         i=1
1064         ;;
1065 hpcc)
1066         phase=u
1067         # probably not needed
1068         #ac_flags 1 agcc -Agcc 'for support of GCC extensions'
1069         phase=x
1070         ;;
1071 icc)
1072         ac_flags 1 fnobuiltinsetmode -fno-builtin-setmode
1073         ac_flags 1 fnostrictaliasing -fno-strict-aliasing
1074         ac_flags 1 fstacksecuritycheck -fstack-security-check
1075         i=1
1076         ;;
1077 mipspro)
1078         ac_flags 1 fullwarn -fullwarn 'for remark output support'
1079         ;;
1080 msc)
1081         ac_flags 1 strpool "${ccpc}/GF" 'if string pooling can be enabled'
1082         echo 'int main(void) { char test[64] = ""; return (*test); }' >x
1083         ac_flags - 1 stackon "${ccpc}/GZ" 'if stack checks can be enabled' <x
1084         ac_flags - 1 stckall "${ccpc}/Ge" 'stack checks for all functions' <x
1085         ac_flags - 1 secuchk "${ccpc}/GS" 'for compiler security checks' <x
1086         rmf x
1087         ac_flags 1 wall "${ccpc}/Wall" 'to enable all warnings'
1088         ac_flags 1 wp64 "${ccpc}/Wp64" 'to enable 64-bit warnings'
1089         ;;
1090 nwcc)
1091         #broken# ac_flags 1 ssp -stackprotect
1092         i=1
1093         ;;
1094 pcc)
1095         ac_flags 1 fstackprotectorall -fstack-protector-all
1096         i=1
1097         ;;
1098 sunpro)
1099         phase=u
1100         ac_flags 1 v -v
1101         ac_flags 1 ipo -xipo 'for cross-module optimisation'
1102         phase=x
1103         ;;
1104 tcc)
1105         : #broken# ac_flags 1 boundschk -b
1106         ;;
1107 tendra)
1108         ac_flags 0 ysystem -Ysystem
1109         test 1 = $HAVE_CAN_YSYSTEM && CPPFLAGS="-Ysystem $CPPFLAGS"
1110         ac_flags 1 extansi -Xa
1111         ;;
1112 xlc)
1113         case $TARGET_OS in
1114         OS/390)
1115                 # On IBM z/OS, the following are warnings by default:
1116                 # CCN3296: #include file <foo.h> not found.
1117                 # CCN3944: Attribute "__foo__" is not supported and is ignored.
1118                 # CCN3963: The attribute "foo" is not a valid variable attribute and is ignored.
1119                 ac_flags 1 halton '-qhaltonmsg=CCN3296 -qhaltonmsg=CCN3944 -qhaltonmsg=CCN3963'
1120                 # CCN3290: Unknown macro name FOO on #undef directive.
1121                 # CCN4108: The use of keyword '__attribute__' is non-portable.
1122                 ac_flags 1 supprss '-qsuppress=CCN3290 -qsuppress=CCN4108'
1123                 ;;
1124         *)
1125                 ac_flags 1 rodata '-qro -qroconst -qroptr'
1126                 ac_flags 1 rtcheck -qcheck=all
1127                 #ac_flags 1 rtchkc -qextchk     # reported broken
1128                 ac_flags 1 wformat '-qformat=all -qformat=nozln'
1129                 ;;
1130         esac
1131         #ac_flags 1 wp64 -qwarn64       # too verbose for now
1132         ;;
1133 esac
1134 # flags common to a subset of compilers (run with -Werror on gcc)
1135 if test 1 = $i; then
1136         ac_flags 1 wall -Wall
1137         ac_flags 1 fwrapv -fwrapv
1138         # keep this sane
1139         ac_flags 1 wformat -Wformat
1140         ac_flags 1 wextra -Wextra # temporarily
1141         ac_flags 1 woldstyledecl -Wold-style-declaration
1142         ac_flags 1 woldstyledefn -Wold-style-definition
1143         ac_flags 1 wmissingdecl -Wmissing-declarations
1144         ac_flags 1 wmissingproto -Wmissing-prototypes
1145         # see comment in draw.c:epstoimage()
1146         ac_flags 1 wnoclobbered -Wno-clobbered
1147 fi
1148
1149 phase=x
1150 # The following tests run with -Werror or similar (all compilers) if possible
1151 NOWARN=$DOWARN
1152 test $ct = pcc && phase=u
1153
1154 #
1155 # Compiler: check for stuff that only generates warnings
1156 #
1157 ac_test attribute_bounded '' 'for __attribute__((__bounded__))' <<-'EOF'
1158         #if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2))
1159         extern int thiswillneverbedefinedIhope(void);
1160         /* force a failure: TenDRA and gcc 1.42 have false positive here */
1161         int main(void) { return (thiswillneverbedefinedIhope()); }
1162         #else
1163         #include <string.h>
1164         #undef __attribute__
1165         int xcopy(const void *, void *, size_t)
1166             __attribute__((__bounded__(__buffer__, 1, 3)))
1167             __attribute__((__bounded__(__buffer__, 2, 3)));
1168         int main(int ac, char *av[]) { return (xcopy(av[0], av[--ac], 1)); }
1169         int xcopy(const void *s, void *d, size_t n) {
1170                 /*
1171                  * if memmove does not exist, we are not on a system
1172                  * with GCC with __bounded__ attribute either so poo
1173                  */
1174                 memmove(d, s, n); return ((int)n);
1175         }
1176         #endif
1177 EOF
1178 ac_test attribute_format '' 'for __attribute__((__format__))' <<-'EOF'
1179         #if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2))
1180         extern int thiswillneverbedefinedIhope(void);
1181         /* force a failure: TenDRA and gcc 1.42 have false positive here */
1182         int main(void) { return (thiswillneverbedefinedIhope()); }
1183         #else
1184         #define fprintf printfoo
1185         #include <stdio.h>
1186         #undef __attribute__
1187         #undef fprintf
1188         extern int fprintf(FILE *, const char *format, ...)
1189             __attribute__((__format__(__printf__, 2, 3)));
1190         int main(int ac, char *av[]) { return (fprintf(stderr, "%s%d", *av, ac)); }
1191         #endif
1192 EOF
1193 ac_test attribute_nonnull '' 'for __attribute__((__nonnull__))' <<-'EOF'
1194         #if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2))
1195         extern int thiswillneverbedefinedIhope(void);
1196         /* force a failure: TenDRA and gcc 1.42 have false positive here */
1197         int main(void) { return (thiswillneverbedefinedIhope()); }
1198         #else
1199         #include <stdio.h>
1200         #undef __attribute__
1201         int fnord(const char *) __attribute__((__nonnull__(1)));
1202         int main(void) { return (fnord("x")); }
1203         int fnord(const char *x) { return (fputc(*x, stderr)); }
1204         #endif
1205 EOF
1206 ac_test attribute_noreturn '' 'for __attribute__((__noreturn__))' <<-'EOF'
1207         #if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2))
1208         extern int thiswillneverbedefinedIhope(void);
1209         /* force a failure: TenDRA and gcc 1.42 have false positive here */
1210         int main(void) { return (thiswillneverbedefinedIhope()); }
1211         #else
1212         #include <stdlib.h>
1213         #undef __attribute__
1214         void fnord(void) __attribute__((__noreturn__));
1215         int main(void) { fnord(); }
1216         void fnord(void) { exit(0); }
1217         #endif
1218 EOF
1219 ac_test attribute_pure '' 'for __attribute__((__pure__))' <<-'EOF'
1220         #if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2))
1221         extern int thiswillneverbedefinedIhope(void);
1222         /* force a failure: TenDRA and gcc 1.42 have false positive here */
1223         int main(void) { return (thiswillneverbedefinedIhope()); }
1224         #else
1225         #include <unistd.h>
1226         #undef __attribute__
1227         int foo(const char *) __attribute__((__pure__));
1228         int main(int ac, char *av[]) { return (foo(av[ac - 1]) + dup(0)); }
1229         int foo(const char *s) { return ((int)s[0]); }
1230         #endif
1231 EOF
1232 ac_test attribute_unused '' 'for __attribute__((__unused__))' <<-'EOF'
1233         #if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2))
1234         extern int thiswillneverbedefinedIhope(void);
1235         /* force a failure: TenDRA and gcc 1.42 have false positive here */
1236         int main(void) { return (thiswillneverbedefinedIhope()); }
1237         #else
1238         #include <unistd.h>
1239         #undef __attribute__
1240         int main(int ac __attribute__((__unused__)), char *av[]
1241             __attribute__((__unused__))) { return (dup(0)); }
1242         #endif
1243 EOF
1244 ac_test attribute_used '' 'for __attribute__((__used__))' <<-'EOF'
1245         #if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2))
1246         extern int thiswillneverbedefinedIhope(void);
1247         /* force a failure: TenDRA and gcc 1.42 have false positive here */
1248         int main(void) { return (thiswillneverbedefinedIhope()); }
1249         #else
1250         #include <unistd.h>
1251         #undef __attribute__
1252         static const char fnord[] __attribute__((__used__)) = "42";
1253         int main(void) { return (dup(0)); }
1254         #endif
1255 EOF
1256
1257 # End of tests run with -Werror
1258 NOWARN=$save_NOWARN
1259 phase=x
1260
1261 add_cppflags -DNeedFunctionPrototypes
1262
1263 #
1264 # Environment: headers
1265 #
1266 ac_header sys/time.h sys/types.h
1267 ac_header time.h sys/types.h
1268 test "11" = "$HAVE_SYS_TIME_H$HAVE_TIME_H" || HAVE_BOTH_TIME_H=0
1269 ac_test both_time_h '' 'whether <sys/time.h> and <time.h> can both be included' <<-'EOF'
1270         #include <sys/types.h>
1271         #include <sys/time.h>
1272         #include <time.h>
1273         #include <unistd.h>
1274         int main(void) { struct tm tm; return ((int)sizeof(tm) + dup(0)); }
1275 EOF
1276 ac_header sys/wait.h sys/types.h
1277 ac_header fcntl.h
1278 ac_header iconv.h
1279 ac_header locale.h
1280 ac_header termios.h
1281 ac_header util.h
1282
1283 #
1284 # Environment: definitions
1285 #
1286 echo '#include <sys/types.h>
1287 #include <fts.h>
1288 #include <unistd.h>
1289 /* check that off_t can represent 2^63-1 correctly, thx FSF */
1290 #define LARGE_OFF_T ((((off_t)1 << 31) << 31) - 1 + (((off_t)1 << 31) << 31))
1291 int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 &&
1292     LARGE_OFF_T % 2147483647 == 1) ? 1 : -1];
1293 int main(void) { return (dup(0)); }' >lft.c
1294 ac_testn can_lfs '' "for large file support" <lft.c
1295 save_CPPFLAGS=$CPPFLAGS
1296 add_cppflags -D_FILE_OFFSET_BITS=64
1297 ac_testn can_lfs_sus '!' can_lfs 0 "... with -D_FILE_OFFSET_BITS=64" <lft.c
1298 if test 0 = $HAVE_CAN_LFS_SUS; then
1299         CPPFLAGS=$save_CPPFLAGS
1300         add_cppflags -D_LARGE_FILES=1
1301         ac_testn can_lfs_aix '!' can_lfs 0 "... with -D_LARGE_FILES=1" <lft.c
1302         test 1 = $HAVE_CAN_LFS_AIX || CPPFLAGS=$save_CPPFLAGS
1303 fi
1304 rm -f lft.c
1305 rmf lft*        # end of large file support test
1306
1307 PK_DEFS=
1308 PK_LIBS=
1309 for pkg in $pkgs; do
1310         $e Running pkg-config for $pkg...
1311         PK_DEFS="$PK_DEFS `pkg-config --cflags $pkg`"
1312         PK_LIBS="$PK_LIBS `pkg-config --libs $pkg`"
1313 done
1314
1315 #
1316 # Environment: types
1317 #
1318 ac_test can_uchar '' "for u_char" <<-'EOF'
1319         #include <sys/types.h>
1320         #include <stddef.h>
1321         int main(int ac, char *av[]) { return ((u_char)(unsigned char)av[ac - 1][0]); }
1322 EOF
1323 ac_test can_ushort '' "for u_short" <<-'EOF'
1324         #include <sys/types.h>
1325         #include <stddef.h>
1326         int main(int ac, char *av[]) { return ((u_short)(unsigned char)av[ac - 1][0]); }
1327 EOF
1328 ac_test can_uint '' "for u_int" <<-'EOF'
1329         #include <sys/types.h>
1330         #include <stddef.h>
1331         int main(int ac, char *av[]) { return ((u_int)(unsigned char)av[ac - 1][0]); }
1332 EOF
1333 ac_test can_ulong '' "for u_long" <<-'EOF'
1334         #include <sys/types.h>
1335         #include <stddef.h>
1336         int main(int ac, char *av[]) { return ((u_long)(size_t)av[ac]); }
1337 EOF
1338
1339 #
1340 # check whether the final link ought to succeed
1341 #
1342 HAVE_LINK_WORKS=x
1343 save_CPPFLAGS=$CPPFLAGS
1344 save_LIBS=$LIBS
1345 CPPFLAGS="-I$srcdir $CPPFLAGS $PK_DEFS -DBUILDSH_LINKTEST"
1346 LIBS="$LIBS $PK_LIBS"
1347 ac_testinit link_works '' 'checking if the final link command may succeed'
1348 fv=1
1349 cat >conftest.c <<-EOF
1350         #include "mgp.h"
1351         #if HAVE_LOCALE_H
1352         #include <locale.h>
1353         #endif
1354         #include <fcntl.h>
1355         #ifdef TTY_KEYINPUT
1356         #include <termios.h>
1357         #endif
1358
1359         int main(void) { printf("Hello, World!\\n"); return (dup(0)); }
1360 EOF
1361 v "$CC $CFLAGS $CPPFLAGS $NOWARN -c conftest.c" || fv=0
1362 test $fv = 0 || v "$CC $CFLAGS $LDFLAGS -o $tcfn conftest.o $LIBS $ccpr"
1363 test -f $tcfn || fv=0
1364 ac_testdone
1365 test $fv = 1 || exit 1
1366 LIBS=$save_LIBS
1367 CPPFLAGS=$save_CPPFLAGS
1368
1369 #
1370 # Environment: library functions
1371 #
1372 cat >lft.c <<-'EOF'
1373         #if HAVE_ICONV_H
1374         #include <iconv.h>
1375         #endif
1376         #include <stdio.h>
1377         #include <string.h>
1378         int main(int ac, char *av[]) {
1379                 iconv_t cd;
1380                 char *srcp = av[1], *dstp = av[2];
1381                 size_t ilen = strlen(srcp), olen = ac;
1382
1383                 if ((cd = iconv_open("dst", "src")) == (iconv_t)-1)
1384                         return (2);
1385                 if (iconv(cd, &srcp, &ilen, &dstp, &olen) == (size_t)-1)
1386                         return (3);
1387                 return (iconv_close(cd) != 0);
1388         }
1389 EOF
1390 ac_testn iconv '' 'iconv (no extra libraries)' <lft.c
1391 iconv_L=
1392 if test 0 = $HAVE_ICONV; then
1393         save_LIBS=$LIBS
1394         LIBS="$LIBS -liconv"
1395         HAVE_ICONV=x
1396         ac_testn iconv '' 'iconv (with libiconv)' <lft.c
1397         if test 1 = $HAVE_ICONV; then
1398                 iconv_L=-liconv
1399         fi
1400         LIBS=$save_LIBS
1401 fi
1402 ac_cppflags
1403 rm -f lft.c
1404 rmf lft*
1405
1406 ac_test setlocale_ctype locale_h 0 'setlocale(LC_CTYPE, "")' <<-'EOF'
1407         #include <locale.h>
1408         #include <stddef.h>
1409         int main(void) { return ((int)(size_t)(void *)setlocale(LC_CTYPE, "")); }
1410 EOF
1411
1412 ac_test setreuid '' 'for setreuid and setregid' <<-'EOF'
1413         #include <sys/types.h>
1414         #include <unistd.h>
1415         int main(void) { return (setreuid(0,0) + setregid(0,0)); }
1416 EOF
1417
1418 save_LIBS=$LIBS
1419 LIBS="$LIBS -lutil"
1420 ac_test uu_lock <<-'EOF'
1421         #include <sys/types.h>
1422         #if HAVE_UTIL_H
1423         #include <util.h>
1424         #endif
1425         int main(int ac, char *av[]) { return (uu_lock(av[ac - 1])); }
1426 EOF
1427 LIBS=$save_LIBS
1428 if test 0 = $HAVE_UU_LOCK; then
1429         uulock_L=
1430         uulock_O=uucplock.o
1431 else
1432         uulock_L=-lutil
1433         uulock_O=
1434 fi
1435
1436 #
1437 # check headers for declarations
1438 #
1439
1440 #
1441 # other checks
1442 #
1443
1444 #
1445 # End of mirtoconf checks
1446 #
1447 $e ... done.
1448 rmf vv.out
1449
1450 test 1 = "$HAVE_CAN_VERB" && CFLAGS="$CFLAGS -verbose"
1451
1452 $e $bi$me: Finished configuration testing, now producing output.$ao
1453
1454 case $tcfn in
1455 a.exe|conftest.exe)
1456         suf=.exe
1457         ;;
1458 *)
1459         suf=
1460         ;;
1461 esac
1462 rm -f Makefile
1463 cat >Makefile~ <<\EOF
1464 # Makefile for building MagicPoint
1465 # generated, do not edit; re-run Build.sh if necessary!
1466
1467 # feel free to override those
1468
1469 # used for building
1470 AR=             ar
1471 AR_CREATE=      $(AR) cq
1472 LEX=            flex
1473 RANLIB=         ranlib
1474 SH=             sh
1475 YACC=           yacc
1476
1477 # used for installing
1478 LINKMANPAGE=    ln -s
1479 PERL=           /usr/bin/env perl
1480 DESTDIR=
1481 PREFIX=         /usr
1482 SYSCONFDIR=     /etc
1483 BINDIR=         $(PREFIX)/bin
1484 MANDIR=         $(PREFIX)/share/man
1485 DOCDIR=         $(PREFIX)/share/doc/mgp
1486 EMACSDIR=       $(PREFIX)/share/emacs/site-lisp/mgp
1487 MGPELDIR=       $(DOCDIR)/contrib/mgp-el
1488 #SAMPLEDIR=     $(DOCDIR)/examples
1489 SAMPLEDIR=      $(PREFIX)/share/examples/mgp
1490 RCDIR=          $(SYSCONFDIR)/mgp
1491
1492 # set to empty to not install (Debian)
1493 INST_LICENCE=   LICENCE
1494 INST_RELNOTES=  RELNOTES
1495
1496 # or /usr/ucb/install
1497 INSTALL=        install
1498 INSTALL_COPY=   -c
1499 INSTALL_STRIP=  -s
1500 BINMODE=        555
1501 CONFMODE=       644
1502 NONBINMODE=     444
1503 DIRMODE=        755
1504 INSTALL_DIR=    $(INSTALL) -d -m $(DIRMODE)
1505 INSTALL_PROGRAM=$(INSTALL) $(INSTALL_COPY) $(INSTALL_STRIP) -m $(BINMODE)
1506 INSTALL_SCRIPT= $(INSTALL) $(INSTALL_COPY) -m $(BINMODE)
1507 INSTALL_DATA=   $(INSTALL) $(INSTALL_COPY) -m $(NONBINMODE)
1508 INSTALL_CONF=   $(INSTALL) $(INSTALL_COPY) -m $(CONFMODE)
1509
1510 # do NOT override these, re-run Build.sh if necessary!
1511 EOF
1512 sed 's/#/\\&/g' >>Makefile~ <<EOF
1513 CC=             $CC
1514 CPPFLAGS=       $CPPFLAGS
1515 CFLAGS=         $CFLAGS
1516 LDFLAGS=        $LDFLAGS
1517 LIBS=           $LIBS
1518 SRCDIR=         $srcdir
1519 PK_DEFS=        $PK_DEFS
1520 PK_LIBS=        $PK_LIBS
1521 iconv_L=        $iconv_L
1522 uulock_L=       $uulock_L
1523 uulock_O=       $uulock_O
1524
1525 E=              $suf
1526 mgpversion=     $srcversion
1527 EOF
1528 cat >>Makefile~ <<\EOF
1529
1530 # internals
1531 MAN1=           $(SRCDIR)/contrib/xmindpath/xmindpath.1 \
1532                 $(SRCDIR)/contrib/xwintoppm/xwintoppm.1 \
1533                 $(SRCDIR)/contrib/eqn2eps.1 \
1534                 $(SRCDIR)/contrib/mgp2html.1 \
1535                 $(SRCDIR)/contrib/mgpnet.1 \
1536                 $(SRCDIR)/mgp.1 $(SRCDIR)/mgp2ps.1
1537 MAN1LINKS=      'eqn2eps.1 latex2eps.1' \
1538                 'eqn2eps.1 tex2eps.1' \
1539                 'mgp2html.1 mgp2latex.1'
1540
1541 xmp_DEFS=       -I$(SRCDIR)/contrib/xmindpath
1542 xmp_OBJS=       main.o $(uulock_O)
1543 xmp_LIBS=       -lXtst -lX11 $(uulock_L)
1544
1545 xwp_DEFS=       -I$(SRCDIR)/contrib/xwintoppm
1546 xwp_OBJS=       dsimple.o list.o multiVis.o xwintoppm.o
1547 xwp_LIBS=       -lXmu -lXt -lX11
1548
1549 mgp_DEFS=       -I$(SRCDIR) -DMGPLIBDIR=\"$(RCDIR)\" $(PK_DEFS)
1550 mgp_LIBS=       -L. -lmgpcommon $(PK_LIBS) $(iconv_L) -lX11 -lm
1551
1552 lib_DEFS=       $(mgp_DEFS) -I$(SRCDIR)/image
1553 lib_OBJS=       ctlwords.o \
1554                 dither.o halftone.o imagetypes.o imlib_loader.o \
1555                 misc.o new.o path.o reduce.o send.o value.o zoom.o \
1556                 background.o draw.o globals.o y.tab.o parse.o \
1557                 plist.o postscript.o lex.yy.o unimap.o
1558
1559 mgp_OBJS=       mgp.o x11.o
1560 mps_OBJS=       print.o x11dummy.o
1561
1562 all: mgp$E mgp2ps$E xmindpath$E xwintoppm$E mgp2html mgp2latex mgpnet
1563
1564 # also builds ctlwords.h and ctlwords.pl
1565 ctlwords.c: $(SRCDIR)/ctlwords.sh
1566         $(SH) $(SRCDIR)/ctlwords.sh
1567
1568 mgp2html: ctlwords.c $(SRCDIR)/contrib/mgp2html.pl.in
1569         echo '#!$(PERL)' | cat >$@ - ctlwords.pl \
1570             $(SRCDIR)/contrib/mgp2html.pl.in
1571
1572 mgp2latex: ctlwords.c $(SRCDIR)/contrib/mgp2latex.pl.in
1573         echo '#!$(PERL)' | cat >$@ - ctlwords.pl \
1574             $(SRCDIR)/contrib/mgp2latex.pl.in
1575
1576 mgpnet: ctlwords.c $(SRCDIR)/contrib/mgpnet.in
1577         echo '#!$(PERL)' | cat >$@ - ctlwords.pl \
1578             $(SRCDIR)/contrib/mgpnet.in
1579
1580 xmindpath$E: $(xmp_OBJS)
1581         $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(xmp_OBJS) $(LIBS) $(xmp_LIBS)
1582
1583 xwintoppm$E: $(xwp_OBJS)
1584         $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(xwp_OBJS) $(LIBS) $(xwp_LIBS)
1585
1586 mgp$E: $(mgp_OBJS) libmgpcommon.a
1587         $(CC) $(CFLAGS) $(mgp_DEFS) $(LDFLAGS) -o $@ \
1588             $(mgp_OBJS) $(LIBS) $(mgp_LIBS)
1589
1590 mgp2ps$E: $(mps_OBJS) libmgpcommon.a
1591         $(CC) $(CFLAGS) $(mgp_DEFS) $(LDFLAGS) -o $@ \
1592             $(mps_OBJS) $(LIBS) $(mgp_LIBS)
1593
1594 libmgpcommon.a: $(lib_OBJS)
1595         @rm -f $@
1596         $(AR_CREATE) $@ $(lib_OBJS)
1597         $(RANLIB) $@
1598
1599 # also builds y.tab.h
1600 y.tab.c: $(SRCDIR)/grammar.y
1601         $(YACC) -d $(SRCDIR)/grammar.y
1602
1603 lex.yy.c: $(SRCDIR)/scanner.l
1604         $(LEX) $(SRCDIR)/scanner.l
1605
1606 EOF
1607 dofile() {
1608         dstbn=`basename "$1" | sed 's/\.[^.]*$//'`
1609         srcf=
1610         srca=
1611         while test -n "$1"; do
1612                 if test -f "$srcdir/$1"; then
1613                         f='$(SRCDIR)/'"$1"
1614                 else
1615                         f=$1
1616                 fi
1617                 shift
1618                 if test -n "$srcf"; then
1619                         srca="$srca $f"
1620                 else
1621                         srca=$f
1622                         srcf=$f
1623                 fi
1624         done
1625         cat >>Makefile~ <<EOF
1626 $dstbn.o: $srca
1627         \$(CC) \$(CPPFLAGS) \$(CFLAGS) $defs -c $srcf
1628
1629 EOF
1630 }
1631 xlih="image/xloadimage.h image/image.h"
1632 mgph="mgp.h $xlih ctlwords.c" # ctlwords.h but that breaks parallel gmake
1633 defs='$(xmp_DEFS)'
1634 dofile contrib/xmindpath/main.c
1635 dofile contrib/xmindpath/uucplock.c contrib/xmindpath/pathnames.h
1636 defs='$(xwp_DEFS)'
1637 dofile contrib/xwintoppm/dsimple.c contrib/xwintoppm/dsimple.h
1638 dofile contrib/xwintoppm/list.c contrib/xwintoppm/list.h
1639 dofile contrib/xwintoppm/multiVis.c contrib/xwintoppm/list.h \
1640     contrib/xwintoppm/wsutils.h contrib/xwintoppm/multiVis.h
1641 dofile contrib/xwintoppm/xwintoppm.c contrib/xwintoppm/dsimple.h \
1642     contrib/xwintoppm/list.h \
1643     contrib/xwintoppm/wsutils.h contrib/xwintoppm/multiVis.h
1644 defs='$(mgp_DEFS)'
1645 dofile ctlwords.c
1646 defs='$(lib_DEFS)'
1647 dofile image/dither.c image/image.h
1648 dofile image/halftone.c image/image.h
1649 dofile image/imagetypes.c $xlih
1650 dofile image/imlib_loader.c $xlih
1651 dofile image/misc.c image/image.h
1652 dofile image/new.c image/image.h
1653 dofile image/path.c $xlih
1654 dofile image/reduce.c image/image.h
1655 dofile image/send.c $mgph
1656 dofile image/value.c image/image.h
1657 dofile image/zoom.c image/image.h
1658 defs='$(mgp_DEFS)'
1659 dofile background.c $mgph
1660 dofile draw.c $mgph
1661 dofile globals.c $mgph
1662 dofile y.tab.c $mgph
1663 dofile parse.c $mgph
1664 dofile plist.c $mgph
1665 dofile postscript.c $mgph
1666 dofile lex.yy.c $mgph y.tab.c # y.tab.h but that breaks parallel gmake
1667 dofile unimap.c $mgph
1668 dofile mgp.c $mgph
1669 dofile x11.c $mgph
1670 dofile print.c $mgph
1671 dofile x11dummy.c $mgph
1672 cat >>Makefile~ <<\EOF
1673 INSTALL_SYSCONFIG=install-sysconfig
1674 install: install-program $(INSTALL_SYSCONFIG)
1675 install-program:
1676         $(INSTALL_DIR) $(DESTDIR)$(BINDIR)
1677         $(INSTALL_PROGRAM) mgp $(DESTDIR)$(BINDIR)/
1678         $(INSTALL_PROGRAM) mgp2ps $(DESTDIR)$(BINDIR)/
1679         $(INSTALL_PROGRAM) xmindpath $(DESTDIR)$(BINDIR)/
1680         $(INSTALL_PROGRAM) xwintoppm $(DESTDIR)$(BINDIR)/
1681         $(INSTALL_SCRIPT) $(SRCDIR)/contrib/eqn2eps.sh \
1682             $(DESTDIR)$(BINDIR)/eqn2eps
1683         $(INSTALL_SCRIPT) $(SRCDIR)/contrib/latex2eps.sh \
1684             $(DESTDIR)$(BINDIR)/latex2eps
1685         $(INSTALL_SCRIPT) mgp2html $(DESTDIR)$(BINDIR)/
1686         $(INSTALL_SCRIPT) mgp2latex $(DESTDIR)$(BINDIR)/
1687         $(INSTALL_SCRIPT) mgpnet $(DESTDIR)$(BINDIR)/
1688         $(INSTALL_SCRIPT) $(SRCDIR)/contrib/tex2eps.sh \
1689             $(DESTDIR)$(BINDIR)/tex2eps
1690         $(INSTALL_DIR) $(DESTDIR)$(MANDIR)/man1
1691         $(INSTALL_DATA) $(MAN1) $(DESTDIR)$(MANDIR)/man1/
1692         cd $(DESTDIR)$(MANDIR)/man1/ && for link in $(MAN1LINKS); do \
1693                 $(LINKMANPAGE) $$link || exit 1; \
1694         done
1695         $(INSTALL_DIR) $(DESTDIR)$(EMACSDIR)
1696         cd $(SRCDIR)/contrib && $(INSTALL_DATA) \
1697             mgp-el/mgp.el mgp-mode-cd.el mgp-mode.el mgp-mode20.el \
1698             $(DESTDIR)$(EMACSDIR)/
1699         $(INSTALL_DIR) $(DESTDIR)$(MGPELDIR)
1700         cd $(SRCDIR)/contrib/mgp-el && $(INSTALL_DATA) \
1701             README mgp.sty $(DESTDIR)$(MGPELDIR)/
1702         $(INSTALL_DIR) $(DESTDIR)$(DOCDIR)
1703         cd $(SRCDIR) && $(INSTALL_DATA) FAQ README README.fonts README.lang \
1704             README.xft SYNTAX TODO.jp USAGE USAGE.jp $(INST_LICENCE) \
1705             $(INST_RELNOTES) $(DESTDIR)$(DOCDIR)/
1706         $(INSTALL_DIR) $(DESTDIR)$(SAMPLEDIR)
1707         cd $(SRCDIR)/sample && $(INSTALL_DATA) \
1708             README README.jp cloud.jpg dad.eps dad.jpg default.mgp \
1709             gradation-jp.mgp gradation.mgp mgp-old1.jpg mgp-old2.jpg \
1710             mgp-old3.jpg mgp-print6 mgp1.jpg mgp2.jpg mgp3.jpg mgp3.xbm \
1711             multilingual.mgp sample-fr.mgp sample-jp-xft.mgp sample-jp.mgp \
1712             sample.mgp sendmail6-jp.mgp sendmail6.mgp tutorial-jp.mgp \
1713             tutorial.mgp utf8test.mgp v6-jp.mgp v6.mgp v6header.* \
1714             $(DESTDIR)$(SAMPLEDIR)/
1715
1716 install-sysconfig:
1717         $(INSTALL_DIR) $(DESTDIR)$(RCDIR)
1718         $(INSTALL_CONF) $(SRCDIR)/sample/default.mgp $(DESTDIR)$(RCDIR)/
1719
1720 clean:
1721         rm -f *~ *.a *.o ctlwords.c ctlwords.h ctlwords.pl lex.yy.c y.tab.* \
1722             mgp$E mgp2ps$E xmindpath$E xwintoppm$E mgp2html mgp2latex mgpnet \
1723             conftest.c
1724 EOF
1725 mv Makefile~ Makefile || exit 1
1726 $e
1727 $e Generated Makefile successfully.
1728 echo >&2 '
1729 You can now use make(1) to compile MagicPoint.
1730 '
1731 exit 0
1732
1733 : <<'EOD'
1734
1735 === Flags ===
1736
1737 -P list: set list of pkg-config query targets,
1738         default: imlib2 libbsd-overlay xft
1739
1740 === Environment used ===
1741
1742 ==== Makefile variables ====
1743 AR_CREATE                       default: $(AR) cq; AR=ar
1744 RANLIB                          default: ranlib; could be :
1745 LEX                             default: flex
1746 YACC                            default: yacc
1747 SH                              POSIX shell to use during build
1748 DESTDIR                         prefix to use while installing
1749 PERL                            written to shebang
1750 PREFIX                          default: /usr
1751 SYSCONFDIR                      default: /etc
1752 INSTALL_STRIP                   default: -s
1753 mgpversion                      may be overridden with package version
1754
1755 ==== build environment ====
1756 CC                              default: cc
1757 CFLAGS                          if empty, defaults to -xO2 or +O2
1758                                 or -O3 -qstrict or -O2, per compiler
1759 CPPFLAGS                        default empty
1760 LDFLAGS                         default empty; added before sources
1761 LDSTATIC                        set this to '-static'; default unset
1762 LIBS                            default empty; added after sources
1763 NOWARN                          -Wno-error or similar
1764 TARGET_OS                       default: $(uname -s || uname)
1765 TARGET_OSREV                    [SCO] default: $(uname -r)
1766
1767 ===== general format =====
1768 HAVE_STRLEN                     ac_test
1769 HAVE_STRING_H                   ac_header
1770 HAVE_CAN_FSTACKPROTECTORALL     ac_flags
1771
1772 ==== cpp definitions ====
1773 MKSH_TYPEDEF_SSIZE_T            define to e.g. 'long' if your OS has no ssize_t
1774
1775 === generic installation instructions ===
1776
1777 Set CC and possibly CFLAGS, CPPFLAGS, LDFLAGS, LIBS. If cross-compiling,
1778 also set TARGET_OS. To disable tests, set e.g. HAVE_STRLCPY=0; to enable
1779 them, set to a value other than 0 or 1 (e.g. to x).
1780
1781 Normally, the following command is what you want to run, then:
1782 $ (sh Build.sh && make && sudo make install) 2>&1 | tee log
1783
1784 EOD