Codebase list texlive-bin / upstream/2013.20130521.30601
Imported Upstream version 2013.20130521.30601 Norbert Preining 10 years ago
295 changed file(s) with 104870 addition(s) and 3859 deletion(s). Raw diff Collapse all Expand all
11 # Attempt to guess a canonical system name.
22 # Copyright 1992-2013 Free Software Foundation, Inc.
33
4 timestamp='2013-04-24'
4 timestamp='2013-05-16'
55
66 # This file is free software; you can redistribute it and/or modify it
77 # under the terms of the GNU General Public License as published by
130130 UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
131131 UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
132132 UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
133
134 case "${UNAME_SYSTEM}" in
135 Linux|GNU|GNU/*)
136 # If the system lacks a compiler, then just pick glibc.
137 # We could probably try harder.
138 LIBC=gnu
139
140 eval $set_cc_for_build
141 cat <<-EOF > $dummy.c
142 #include <features.h>
143 #if defined(__UCLIBC__)
144 LIBC=uclibc
145 #elif defined(__dietlibc__)
146 LIBC=dietlibc
147 #else
148 LIBC=gnu
149 #endif
150 EOF
151 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
152 ;;
153 esac
133154
134155 # Note: order is significant - the case branches are not exclusive.
135156
852873 exit ;;
853874 *:GNU:*:*)
854875 # the GNU system
855 echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
876 echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
856877 exit ;;
857878 *:GNU/*:*:*)
858879 # other systems with GNU libc and userland
859 echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
880 echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
860881 exit ;;
861882 i*86:Minix:*:*)
862883 echo ${UNAME_MACHINE}-pc-minix
863884 exit ;;
864885 aarch64:Linux:*:*)
865 echo ${UNAME_MACHINE}-unknown-linux-gnu
886 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
866887 exit ;;
867888 aarch64_be:Linux:*:*)
868889 UNAME_MACHINE=aarch64_be
869 echo ${UNAME_MACHINE}-unknown-linux-gnu
890 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
870891 exit ;;
871892 alpha:Linux:*:*)
872893 case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
879900 EV68*) UNAME_MACHINE=alphaev68 ;;
880901 esac
881902 objdump --private-headers /bin/sh | grep -q ld.so.1
882 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
883 echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
903 if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
904 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
884905 exit ;;
885906 arc:Linux:*:* | arceb:Linux:*:*)
886 echo ${UNAME_MACHINE}-unknown-linux-gnu
907 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
887908 exit ;;
888909 arm*:Linux:*:*)
889910 eval $set_cc_for_build
890911 if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
891912 | grep -q __ARM_EABI__
892913 then
893 echo ${UNAME_MACHINE}-unknown-linux-gnu
914 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
894915 else
895916 if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
896917 | grep -q __ARM_PCS_VFP
897918 then
898 echo ${UNAME_MACHINE}-unknown-linux-gnueabi
919 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
899920 else
900 echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
921 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
901922 fi
902923 fi
903924 exit ;;
904925 avr32*:Linux:*:*)
905 echo ${UNAME_MACHINE}-unknown-linux-gnu
926 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
906927 exit ;;
907928 cris:Linux:*:*)
908 echo ${UNAME_MACHINE}-axis-linux-gnu
929 echo ${UNAME_MACHINE}-axis-linux-${LIBC}
909930 exit ;;
910931 crisv32:Linux:*:*)
911 echo ${UNAME_MACHINE}-axis-linux-gnu
932 echo ${UNAME_MACHINE}-axis-linux-${LIBC}
912933 exit ;;
913934 frv:Linux:*:*)
914 echo ${UNAME_MACHINE}-unknown-linux-gnu
935 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
915936 exit ;;
916937 hexagon:Linux:*:*)
917 echo ${UNAME_MACHINE}-unknown-linux-gnu
938 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
918939 exit ;;
919940 i*86:Linux:*:*)
920 LIBC=gnu
921 eval $set_cc_for_build
922 sed 's/^ //' << EOF >$dummy.c
923 #ifdef __dietlibc__
924 LIBC=dietlibc
925 #endif
926 #else
927 #include <features.h>
928 #ifdef __UCLIBC__
929 LIBC=uclibc
930 #endif
931 EOF
932 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
933 echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
941 echo ${UNAME_MACHINE}-pc-linux-${LIBC}
934942 exit ;;
935943 ia64:Linux:*:*)
936 echo ${UNAME_MACHINE}-unknown-linux-gnu
944 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
937945 exit ;;
938946 m32r*:Linux:*:*)
939 echo ${UNAME_MACHINE}-unknown-linux-gnu
947 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
940948 exit ;;
941949 m68*:Linux:*:*)
942 echo ${UNAME_MACHINE}-unknown-linux-gnu
950 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
943951 exit ;;
944952 mips:Linux:*:* | mips64:Linux:*:*)
945953 eval $set_cc_for_build
958966 #endif
959967 EOF
960968 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
961 test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
969 test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
962970 ;;
963971 or1k:Linux:*:*)
964 echo ${UNAME_MACHINE}-unknown-linux-gnu
972 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
965973 exit ;;
966974 or32:Linux:*:*)
967 echo ${UNAME_MACHINE}-unknown-linux-gnu
975 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
968976 exit ;;
969977 padre:Linux:*:*)
970 echo sparc-unknown-linux-gnu
978 echo sparc-unknown-linux-${LIBC}
971979 exit ;;
972980 parisc64:Linux:*:* | hppa64:Linux:*:*)
973 echo hppa64-unknown-linux-gnu
981 echo hppa64-unknown-linux-${LIBC}
974982 exit ;;
975983 parisc:Linux:*:* | hppa:Linux:*:*)
976984 # Look for CPU level
977985 case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
978 PA7*) echo hppa1.1-unknown-linux-gnu ;;
979 PA8*) echo hppa2.0-unknown-linux-gnu ;;
980 *) echo hppa-unknown-linux-gnu ;;
986 PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
987 PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
988 *) echo hppa-unknown-linux-${LIBC} ;;
981989 esac
982990 exit ;;
983991 ppc64:Linux:*:*)
984 echo powerpc64-unknown-linux-gnu
992 echo powerpc64-unknown-linux-${LIBC}
985993 exit ;;
986994 ppc:Linux:*:*)
987 echo powerpc-unknown-linux-gnu
995 echo powerpc-unknown-linux-${LIBC}
988996 exit ;;
989997 s390:Linux:*:* | s390x:Linux:*:*)
990 echo ${UNAME_MACHINE}-ibm-linux
998 echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
991999 exit ;;
9921000 sh64*:Linux:*:*)
993 echo ${UNAME_MACHINE}-unknown-linux-gnu
1001 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
9941002 exit ;;
9951003 sh*:Linux:*:*)
996 echo ${UNAME_MACHINE}-unknown-linux-gnu
1004 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
9971005 exit ;;
9981006 sparc:Linux:*:* | sparc64:Linux:*:*)
999 echo ${UNAME_MACHINE}-unknown-linux-gnu
1007 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
10001008 exit ;;
10011009 tile*:Linux:*:*)
1002 echo ${UNAME_MACHINE}-unknown-linux-gnu
1010 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
10031011 exit ;;
10041012 vax:Linux:*:*)
1005 echo ${UNAME_MACHINE}-dec-linux-gnu
1013 echo ${UNAME_MACHINE}-dec-linux-${LIBC}
10061014 exit ;;
10071015 x86_64:Linux:*:*)
1008 LIBC=gnu
1009 test -r /lib/libc.so && od -An -S13 /lib/libc.so | grep -q __uClibc_main && LIBC=uclibc
10101016 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
10111017 exit ;;
10121018 xtensa*:Linux:*:*)
1013 echo ${UNAME_MACHINE}-unknown-linux-gnu
1019 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
10141020 exit ;;
10151021 i*86:DYNIX/ptx:4*:*)
10161022 # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
12431249 exit ;;
12441250 *:Darwin:*:*)
12451251 UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
1246 case $UNAME_PROCESSOR in
1247 i386)
1248 eval $set_cc_for_build
1249 if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
1250 if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
1251 (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
1252 grep IS_64BIT_ARCH >/dev/null
1253 then
1254 UNAME_PROCESSOR="x86_64"
1255 fi
1256 fi ;;
1257 unknown) UNAME_PROCESSOR=powerpc ;;
1258 esac
1252 eval $set_cc_for_build
1253 if test "$UNAME_PROCESSOR" = unknown ; then
1254 UNAME_PROCESSOR=powerpc
1255 fi
1256 if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
1257 if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
1258 (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
1259 grep IS_64BIT_ARCH >/dev/null
1260 then
1261 case $UNAME_PROCESSOR in
1262 i386) UNAME_PROCESSOR=x86_64 ;;
1263 powerpc) UNAME_PROCESSOR=powerpc64 ;;
1264 esac
1265 fi
1266 fi
12591267 echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
12601268 exit ;;
12611269 *:procnto*:*:* | *:QNX:[0123456789]*:*)
11 # Attempt to guess a canonical system name.
22 # Copyright 1992-2013 Free Software Foundation, Inc.
33
4 timestamp='2013-04-24'
4 timestamp='2013-05-16'
55
66 # This file is free software; you can redistribute it and/or modify it
77 # under the terms of the GNU General Public License as published by
130130 UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
131131 UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
132132 UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
133
134 case "${UNAME_SYSTEM}" in
135 Linux|GNU|GNU/*)
136 # If the system lacks a compiler, then just pick glibc.
137 # We could probably try harder.
138 LIBC=gnu
139
140 eval $set_cc_for_build
141 cat <<-EOF > $dummy.c
142 #include <features.h>
143 #if defined(__UCLIBC__)
144 LIBC=uclibc
145 #elif defined(__dietlibc__)
146 LIBC=dietlibc
147 #else
148 LIBC=gnu
149 #endif
150 EOF
151 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
152 ;;
153 esac
133154
134155 # Note: order is significant - the case branches are not exclusive.
135156
852873 exit ;;
853874 *:GNU:*:*)
854875 # the GNU system
855 echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
876 echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
856877 exit ;;
857878 *:GNU/*:*:*)
858879 # other systems with GNU libc and userland
859 echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
880 echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
860881 exit ;;
861882 i*86:Minix:*:*)
862883 echo ${UNAME_MACHINE}-pc-minix
863884 exit ;;
864885 aarch64:Linux:*:*)
865 echo ${UNAME_MACHINE}-unknown-linux-gnu
886 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
866887 exit ;;
867888 aarch64_be:Linux:*:*)
868889 UNAME_MACHINE=aarch64_be
869 echo ${UNAME_MACHINE}-unknown-linux-gnu
890 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
870891 exit ;;
871892 alpha:Linux:*:*)
872893 case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
879900 EV68*) UNAME_MACHINE=alphaev68 ;;
880901 esac
881902 objdump --private-headers /bin/sh | grep -q ld.so.1
882 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
883 echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
903 if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
904 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
884905 exit ;;
885906 arc:Linux:*:* | arceb:Linux:*:*)
886 echo ${UNAME_MACHINE}-unknown-linux-gnu
907 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
887908 exit ;;
888909 arm*:Linux:*:*)
889910 eval $set_cc_for_build
890911 if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
891912 | grep -q __ARM_EABI__
892913 then
893 echo ${UNAME_MACHINE}-unknown-linux-gnu
914 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
894915 else
895916 if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
896917 | grep -q __ARM_PCS_VFP
897918 then
898 echo ${UNAME_MACHINE}-unknown-linux-gnueabi
919 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
899920 else
900 echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
921 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
901922 fi
902923 fi
903924 exit ;;
904925 avr32*:Linux:*:*)
905 echo ${UNAME_MACHINE}-unknown-linux-gnu
926 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
906927 exit ;;
907928 cris:Linux:*:*)
908 echo ${UNAME_MACHINE}-axis-linux-gnu
929 echo ${UNAME_MACHINE}-axis-linux-${LIBC}
909930 exit ;;
910931 crisv32:Linux:*:*)
911 echo ${UNAME_MACHINE}-axis-linux-gnu
932 echo ${UNAME_MACHINE}-axis-linux-${LIBC}
912933 exit ;;
913934 frv:Linux:*:*)
914 echo ${UNAME_MACHINE}-unknown-linux-gnu
935 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
915936 exit ;;
916937 hexagon:Linux:*:*)
917 echo ${UNAME_MACHINE}-unknown-linux-gnu
938 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
918939 exit ;;
919940 i*86:Linux:*:*)
920 LIBC=gnu
921 eval $set_cc_for_build
922 sed 's/^ //' << EOF >$dummy.c
923 #ifdef __dietlibc__
924 LIBC=dietlibc
925 #endif
926 #else
927 #include <features.h>
928 #ifdef __UCLIBC__
929 LIBC=uclibc
930 #endif
931 EOF
932 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
933 echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
941 echo ${UNAME_MACHINE}-pc-linux-${LIBC}
934942 exit ;;
935943 ia64:Linux:*:*)
936 echo ${UNAME_MACHINE}-unknown-linux-gnu
944 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
937945 exit ;;
938946 m32r*:Linux:*:*)
939 echo ${UNAME_MACHINE}-unknown-linux-gnu
947 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
940948 exit ;;
941949 m68*:Linux:*:*)
942 echo ${UNAME_MACHINE}-unknown-linux-gnu
950 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
943951 exit ;;
944952 mips:Linux:*:* | mips64:Linux:*:*)
945953 eval $set_cc_for_build
958966 #endif
959967 EOF
960968 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
961 test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
969 test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
962970 ;;
963971 or1k:Linux:*:*)
964 echo ${UNAME_MACHINE}-unknown-linux-gnu
972 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
965973 exit ;;
966974 or32:Linux:*:*)
967 echo ${UNAME_MACHINE}-unknown-linux-gnu
975 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
968976 exit ;;
969977 padre:Linux:*:*)
970 echo sparc-unknown-linux-gnu
978 echo sparc-unknown-linux-${LIBC}
971979 exit ;;
972980 parisc64:Linux:*:* | hppa64:Linux:*:*)
973 echo hppa64-unknown-linux-gnu
981 echo hppa64-unknown-linux-${LIBC}
974982 exit ;;
975983 parisc:Linux:*:* | hppa:Linux:*:*)
976984 # Look for CPU level
977985 case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
978 PA7*) echo hppa1.1-unknown-linux-gnu ;;
979 PA8*) echo hppa2.0-unknown-linux-gnu ;;
980 *) echo hppa-unknown-linux-gnu ;;
986 PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
987 PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
988 *) echo hppa-unknown-linux-${LIBC} ;;
981989 esac
982990 exit ;;
983991 ppc64:Linux:*:*)
984 echo powerpc64-unknown-linux-gnu
992 echo powerpc64-unknown-linux-${LIBC}
985993 exit ;;
986994 ppc:Linux:*:*)
987 echo powerpc-unknown-linux-gnu
995 echo powerpc-unknown-linux-${LIBC}
988996 exit ;;
989997 s390:Linux:*:* | s390x:Linux:*:*)
990 echo ${UNAME_MACHINE}-ibm-linux
998 echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
991999 exit ;;
9921000 sh64*:Linux:*:*)
993 echo ${UNAME_MACHINE}-unknown-linux-gnu
1001 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
9941002 exit ;;
9951003 sh*:Linux:*:*)
996 echo ${UNAME_MACHINE}-unknown-linux-gnu
1004 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
9971005 exit ;;
9981006 sparc:Linux:*:* | sparc64:Linux:*:*)
999 echo ${UNAME_MACHINE}-unknown-linux-gnu
1007 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
10001008 exit ;;
10011009 tile*:Linux:*:*)
1002 echo ${UNAME_MACHINE}-unknown-linux-gnu
1010 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
10031011 exit ;;
10041012 vax:Linux:*:*)
1005 echo ${UNAME_MACHINE}-dec-linux-gnu
1013 echo ${UNAME_MACHINE}-dec-linux-${LIBC}
10061014 exit ;;
10071015 x86_64:Linux:*:*)
1008 LIBC=gnu
1009 test -r /lib/libc.so && od -An -S13 /lib/libc.so | grep -q __uClibc_main && LIBC=uclibc
10101016 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
10111017 exit ;;
10121018 xtensa*:Linux:*:*)
1013 echo ${UNAME_MACHINE}-unknown-linux-gnu
1019 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
10141020 exit ;;
10151021 i*86:DYNIX/ptx:4*:*)
10161022 # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
12431249 exit ;;
12441250 *:Darwin:*:*)
12451251 UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
1246 case $UNAME_PROCESSOR in
1247 i386)
1248 eval $set_cc_for_build
1249 if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
1250 if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
1251 (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
1252 grep IS_64BIT_ARCH >/dev/null
1253 then
1254 UNAME_PROCESSOR="x86_64"
1255 fi
1256 fi ;;
1257 unknown) UNAME_PROCESSOR=powerpc ;;
1258 esac
1252 eval $set_cc_for_build
1253 if test "$UNAME_PROCESSOR" = unknown ; then
1254 UNAME_PROCESSOR=powerpc
1255 fi
1256 if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
1257 if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
1258 (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
1259 grep IS_64BIT_ARCH >/dev/null
1260 then
1261 case $UNAME_PROCESSOR in
1262 i386) UNAME_PROCESSOR=x86_64 ;;
1263 powerpc) UNAME_PROCESSOR=powerpc64 ;;
1264 esac
1265 fi
1266 fi
12591267 echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
12601268 exit ;;
12611269 *:procnto*:*:* | *:QNX:[0123456789]*:*)
11 # Attempt to guess a canonical system name.
22 # Copyright 1992-2013 Free Software Foundation, Inc.
33
4 timestamp='2013-04-24'
4 timestamp='2013-05-16'
55
66 # This file is free software; you can redistribute it and/or modify it
77 # under the terms of the GNU General Public License as published by
130130 UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
131131 UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
132132 UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
133
134 case "${UNAME_SYSTEM}" in
135 Linux|GNU|GNU/*)
136 # If the system lacks a compiler, then just pick glibc.
137 # We could probably try harder.
138 LIBC=gnu
139
140 eval $set_cc_for_build
141 cat <<-EOF > $dummy.c
142 #include <features.h>
143 #if defined(__UCLIBC__)
144 LIBC=uclibc
145 #elif defined(__dietlibc__)
146 LIBC=dietlibc
147 #else
148 LIBC=gnu
149 #endif
150 EOF
151 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
152 ;;
153 esac
133154
134155 # Note: order is significant - the case branches are not exclusive.
135156
852873 exit ;;
853874 *:GNU:*:*)
854875 # the GNU system
855 echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
876 echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
856877 exit ;;
857878 *:GNU/*:*:*)
858879 # other systems with GNU libc and userland
859 echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
880 echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
860881 exit ;;
861882 i*86:Minix:*:*)
862883 echo ${UNAME_MACHINE}-pc-minix
863884 exit ;;
864885 aarch64:Linux:*:*)
865 echo ${UNAME_MACHINE}-unknown-linux-gnu
886 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
866887 exit ;;
867888 aarch64_be:Linux:*:*)
868889 UNAME_MACHINE=aarch64_be
869 echo ${UNAME_MACHINE}-unknown-linux-gnu
890 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
870891 exit ;;
871892 alpha:Linux:*:*)
872893 case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
879900 EV68*) UNAME_MACHINE=alphaev68 ;;
880901 esac
881902 objdump --private-headers /bin/sh | grep -q ld.so.1
882 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
883 echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
903 if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
904 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
884905 exit ;;
885906 arc:Linux:*:* | arceb:Linux:*:*)
886 echo ${UNAME_MACHINE}-unknown-linux-gnu
907 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
887908 exit ;;
888909 arm*:Linux:*:*)
889910 eval $set_cc_for_build
890911 if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
891912 | grep -q __ARM_EABI__
892913 then
893 echo ${UNAME_MACHINE}-unknown-linux-gnu
914 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
894915 else
895916 if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
896917 | grep -q __ARM_PCS_VFP
897918 then
898 echo ${UNAME_MACHINE}-unknown-linux-gnueabi
919 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
899920 else
900 echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
921 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
901922 fi
902923 fi
903924 exit ;;
904925 avr32*:Linux:*:*)
905 echo ${UNAME_MACHINE}-unknown-linux-gnu
926 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
906927 exit ;;
907928 cris:Linux:*:*)
908 echo ${UNAME_MACHINE}-axis-linux-gnu
929 echo ${UNAME_MACHINE}-axis-linux-${LIBC}
909930 exit ;;
910931 crisv32:Linux:*:*)
911 echo ${UNAME_MACHINE}-axis-linux-gnu
932 echo ${UNAME_MACHINE}-axis-linux-${LIBC}
912933 exit ;;
913934 frv:Linux:*:*)
914 echo ${UNAME_MACHINE}-unknown-linux-gnu
935 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
915936 exit ;;
916937 hexagon:Linux:*:*)
917 echo ${UNAME_MACHINE}-unknown-linux-gnu
938 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
918939 exit ;;
919940 i*86:Linux:*:*)
920 LIBC=gnu
921 eval $set_cc_for_build
922 sed 's/^ //' << EOF >$dummy.c
923 #ifdef __dietlibc__
924 LIBC=dietlibc
925 #endif
926 #else
927 #include <features.h>
928 #ifdef __UCLIBC__
929 LIBC=uclibc
930 #endif
931 EOF
932 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
933 echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
941 echo ${UNAME_MACHINE}-pc-linux-${LIBC}
934942 exit ;;
935943 ia64:Linux:*:*)
936 echo ${UNAME_MACHINE}-unknown-linux-gnu
944 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
937945 exit ;;
938946 m32r*:Linux:*:*)
939 echo ${UNAME_MACHINE}-unknown-linux-gnu
947 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
940948 exit ;;
941949 m68*:Linux:*:*)
942 echo ${UNAME_MACHINE}-unknown-linux-gnu
950 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
943951 exit ;;
944952 mips:Linux:*:* | mips64:Linux:*:*)
945953 eval $set_cc_for_build
958966 #endif
959967 EOF
960968 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
961 test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
969 test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
962970 ;;
963971 or1k:Linux:*:*)
964 echo ${UNAME_MACHINE}-unknown-linux-gnu
972 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
965973 exit ;;
966974 or32:Linux:*:*)
967 echo ${UNAME_MACHINE}-unknown-linux-gnu
975 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
968976 exit ;;
969977 padre:Linux:*:*)
970 echo sparc-unknown-linux-gnu
978 echo sparc-unknown-linux-${LIBC}
971979 exit ;;
972980 parisc64:Linux:*:* | hppa64:Linux:*:*)
973 echo hppa64-unknown-linux-gnu
981 echo hppa64-unknown-linux-${LIBC}
974982 exit ;;
975983 parisc:Linux:*:* | hppa:Linux:*:*)
976984 # Look for CPU level
977985 case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
978 PA7*) echo hppa1.1-unknown-linux-gnu ;;
979 PA8*) echo hppa2.0-unknown-linux-gnu ;;
980 *) echo hppa-unknown-linux-gnu ;;
986 PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
987 PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
988 *) echo hppa-unknown-linux-${LIBC} ;;
981989 esac
982990 exit ;;
983991 ppc64:Linux:*:*)
984 echo powerpc64-unknown-linux-gnu
992 echo powerpc64-unknown-linux-${LIBC}
985993 exit ;;
986994 ppc:Linux:*:*)
987 echo powerpc-unknown-linux-gnu
995 echo powerpc-unknown-linux-${LIBC}
988996 exit ;;
989997 s390:Linux:*:* | s390x:Linux:*:*)
990 echo ${UNAME_MACHINE}-ibm-linux
998 echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
991999 exit ;;
9921000 sh64*:Linux:*:*)
993 echo ${UNAME_MACHINE}-unknown-linux-gnu
1001 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
9941002 exit ;;
9951003 sh*:Linux:*:*)
996 echo ${UNAME_MACHINE}-unknown-linux-gnu
1004 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
9971005 exit ;;
9981006 sparc:Linux:*:* | sparc64:Linux:*:*)
999 echo ${UNAME_MACHINE}-unknown-linux-gnu
1007 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
10001008 exit ;;
10011009 tile*:Linux:*:*)
1002 echo ${UNAME_MACHINE}-unknown-linux-gnu
1010 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
10031011 exit ;;
10041012 vax:Linux:*:*)
1005 echo ${UNAME_MACHINE}-dec-linux-gnu
1013 echo ${UNAME_MACHINE}-dec-linux-${LIBC}
10061014 exit ;;
10071015 x86_64:Linux:*:*)
1008 LIBC=gnu
1009 test -r /lib/libc.so && od -An -S13 /lib/libc.so | grep -q __uClibc_main && LIBC=uclibc
10101016 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
10111017 exit ;;
10121018 xtensa*:Linux:*:*)
1013 echo ${UNAME_MACHINE}-unknown-linux-gnu
1019 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
10141020 exit ;;
10151021 i*86:DYNIX/ptx:4*:*)
10161022 # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
12431249 exit ;;
12441250 *:Darwin:*:*)
12451251 UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
1246 case $UNAME_PROCESSOR in
1247 i386)
1248 eval $set_cc_for_build
1249 if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
1250 if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
1251 (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
1252 grep IS_64BIT_ARCH >/dev/null
1253 then
1254 UNAME_PROCESSOR="x86_64"
1255 fi
1256 fi ;;
1257 unknown) UNAME_PROCESSOR=powerpc ;;
1258 esac
1252 eval $set_cc_for_build
1253 if test "$UNAME_PROCESSOR" = unknown ; then
1254 UNAME_PROCESSOR=powerpc
1255 fi
1256 if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
1257 if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
1258 (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
1259 grep IS_64BIT_ARCH >/dev/null
1260 then
1261 case $UNAME_PROCESSOR in
1262 i386) UNAME_PROCESSOR=x86_64 ;;
1263 powerpc) UNAME_PROCESSOR=powerpc64 ;;
1264 esac
1265 fi
1266 fi
12591267 echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
12601268 exit ;;
12611269 *:procnto*:*:* | *:QNX:[0123456789]*:*)
11 # Attempt to guess a canonical system name.
22 # Copyright 1992-2013 Free Software Foundation, Inc.
33
4 timestamp='2013-04-24'
4 timestamp='2013-05-16'
55
66 # This file is free software; you can redistribute it and/or modify it
77 # under the terms of the GNU General Public License as published by
130130 UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
131131 UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
132132 UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
133
134 case "${UNAME_SYSTEM}" in
135 Linux|GNU|GNU/*)
136 # If the system lacks a compiler, then just pick glibc.
137 # We could probably try harder.
138 LIBC=gnu
139
140 eval $set_cc_for_build
141 cat <<-EOF > $dummy.c
142 #include <features.h>
143 #if defined(__UCLIBC__)
144 LIBC=uclibc
145 #elif defined(__dietlibc__)
146 LIBC=dietlibc
147 #else
148 LIBC=gnu
149 #endif
150 EOF
151 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
152 ;;
153 esac
133154
134155 # Note: order is significant - the case branches are not exclusive.
135156
852873 exit ;;
853874 *:GNU:*:*)
854875 # the GNU system
855 echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
876 echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
856877 exit ;;
857878 *:GNU/*:*:*)
858879 # other systems with GNU libc and userland
859 echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
880 echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
860881 exit ;;
861882 i*86:Minix:*:*)
862883 echo ${UNAME_MACHINE}-pc-minix
863884 exit ;;
864885 aarch64:Linux:*:*)
865 echo ${UNAME_MACHINE}-unknown-linux-gnu
886 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
866887 exit ;;
867888 aarch64_be:Linux:*:*)
868889 UNAME_MACHINE=aarch64_be
869 echo ${UNAME_MACHINE}-unknown-linux-gnu
890 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
870891 exit ;;
871892 alpha:Linux:*:*)
872893 case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
879900 EV68*) UNAME_MACHINE=alphaev68 ;;
880901 esac
881902 objdump --private-headers /bin/sh | grep -q ld.so.1
882 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
883 echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
903 if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
904 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
884905 exit ;;
885906 arc:Linux:*:* | arceb:Linux:*:*)
886 echo ${UNAME_MACHINE}-unknown-linux-gnu
907 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
887908 exit ;;
888909 arm*:Linux:*:*)
889910 eval $set_cc_for_build
890911 if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
891912 | grep -q __ARM_EABI__
892913 then
893 echo ${UNAME_MACHINE}-unknown-linux-gnu
914 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
894915 else
895916 if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
896917 | grep -q __ARM_PCS_VFP
897918 then
898 echo ${UNAME_MACHINE}-unknown-linux-gnueabi
919 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
899920 else
900 echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
921 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
901922 fi
902923 fi
903924 exit ;;
904925 avr32*:Linux:*:*)
905 echo ${UNAME_MACHINE}-unknown-linux-gnu
926 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
906927 exit ;;
907928 cris:Linux:*:*)
908 echo ${UNAME_MACHINE}-axis-linux-gnu
929 echo ${UNAME_MACHINE}-axis-linux-${LIBC}
909930 exit ;;
910931 crisv32:Linux:*:*)
911 echo ${UNAME_MACHINE}-axis-linux-gnu
932 echo ${UNAME_MACHINE}-axis-linux-${LIBC}
912933 exit ;;
913934 frv:Linux:*:*)
914 echo ${UNAME_MACHINE}-unknown-linux-gnu
935 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
915936 exit ;;
916937 hexagon:Linux:*:*)
917 echo ${UNAME_MACHINE}-unknown-linux-gnu
938 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
918939 exit ;;
919940 i*86:Linux:*:*)
920 LIBC=gnu
921 eval $set_cc_for_build
922 sed 's/^ //' << EOF >$dummy.c
923 #ifdef __dietlibc__
924 LIBC=dietlibc
925 #endif
926 #else
927 #include <features.h>
928 #ifdef __UCLIBC__
929 LIBC=uclibc
930 #endif
931 EOF
932 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
933 echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
941 echo ${UNAME_MACHINE}-pc-linux-${LIBC}
934942 exit ;;
935943 ia64:Linux:*:*)
936 echo ${UNAME_MACHINE}-unknown-linux-gnu
944 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
937945 exit ;;
938946 m32r*:Linux:*:*)
939 echo ${UNAME_MACHINE}-unknown-linux-gnu
947 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
940948 exit ;;
941949 m68*:Linux:*:*)
942 echo ${UNAME_MACHINE}-unknown-linux-gnu
950 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
943951 exit ;;
944952 mips:Linux:*:* | mips64:Linux:*:*)
945953 eval $set_cc_for_build
958966 #endif
959967 EOF
960968 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
961 test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
969 test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
962970 ;;
963971 or1k:Linux:*:*)
964 echo ${UNAME_MACHINE}-unknown-linux-gnu
972 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
965973 exit ;;
966974 or32:Linux:*:*)
967 echo ${UNAME_MACHINE}-unknown-linux-gnu
975 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
968976 exit ;;
969977 padre:Linux:*:*)
970 echo sparc-unknown-linux-gnu
978 echo sparc-unknown-linux-${LIBC}
971979 exit ;;
972980 parisc64:Linux:*:* | hppa64:Linux:*:*)
973 echo hppa64-unknown-linux-gnu
981 echo hppa64-unknown-linux-${LIBC}
974982 exit ;;
975983 parisc:Linux:*:* | hppa:Linux:*:*)
976984 # Look for CPU level
977985 case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
978 PA7*) echo hppa1.1-unknown-linux-gnu ;;
979 PA8*) echo hppa2.0-unknown-linux-gnu ;;
980 *) echo hppa-unknown-linux-gnu ;;
986 PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
987 PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
988 *) echo hppa-unknown-linux-${LIBC} ;;
981989 esac
982990 exit ;;
983991 ppc64:Linux:*:*)
984 echo powerpc64-unknown-linux-gnu
992 echo powerpc64-unknown-linux-${LIBC}
985993 exit ;;
986994 ppc:Linux:*:*)
987 echo powerpc-unknown-linux-gnu
995 echo powerpc-unknown-linux-${LIBC}
988996 exit ;;
989997 s390:Linux:*:* | s390x:Linux:*:*)
990 echo ${UNAME_MACHINE}-ibm-linux
998 echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
991999 exit ;;
9921000 sh64*:Linux:*:*)
993 echo ${UNAME_MACHINE}-unknown-linux-gnu
1001 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
9941002 exit ;;
9951003 sh*:Linux:*:*)
996 echo ${UNAME_MACHINE}-unknown-linux-gnu
1004 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
9971005 exit ;;
9981006 sparc:Linux:*:* | sparc64:Linux:*:*)
999 echo ${UNAME_MACHINE}-unknown-linux-gnu
1007 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
10001008 exit ;;
10011009 tile*:Linux:*:*)
1002 echo ${UNAME_MACHINE}-unknown-linux-gnu
1010 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
10031011 exit ;;
10041012 vax:Linux:*:*)
1005 echo ${UNAME_MACHINE}-dec-linux-gnu
1013 echo ${UNAME_MACHINE}-dec-linux-${LIBC}
10061014 exit ;;
10071015 x86_64:Linux:*:*)
1008 LIBC=gnu
1009 test -r /lib/libc.so && od -An -S13 /lib/libc.so | grep -q __uClibc_main && LIBC=uclibc
10101016 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
10111017 exit ;;
10121018 xtensa*:Linux:*:*)
1013 echo ${UNAME_MACHINE}-unknown-linux-gnu
1019 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
10141020 exit ;;
10151021 i*86:DYNIX/ptx:4*:*)
10161022 # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
12431249 exit ;;
12441250 *:Darwin:*:*)
12451251 UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
1246 case $UNAME_PROCESSOR in
1247 i386)
1248 eval $set_cc_for_build
1249 if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
1250 if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
1251 (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
1252 grep IS_64BIT_ARCH >/dev/null
1253 then
1254 UNAME_PROCESSOR="x86_64"
1255 fi
1256 fi ;;
1257 unknown) UNAME_PROCESSOR=powerpc ;;
1258 esac
1252 eval $set_cc_for_build
1253 if test "$UNAME_PROCESSOR" = unknown ; then
1254 UNAME_PROCESSOR=powerpc
1255 fi
1256 if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
1257 if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
1258 (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
1259 grep IS_64BIT_ARCH >/dev/null
1260 then
1261 case $UNAME_PROCESSOR in
1262 i386) UNAME_PROCESSOR=x86_64 ;;
1263 powerpc) UNAME_PROCESSOR=powerpc64 ;;
1264 esac
1265 fi
1266 fi
12591267 echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
12601268 exit ;;
12611269 *:procnto*:*:* | *:QNX:[0123456789]*:*)
0 2013-01-29 Peter Breitenlohner <peb@mppmu.mpg.de>
1
2 * Makefile.am: Allow subdir-objects.
3
4 2012-12-15 Peter Breitenlohner <peb@mppmu.mpg.de>
5
6 * configure.ac: Use KPSE_BASIC to enable silent rules.
7
8 2012-11-24 Peter Breitenlohner <peb@mppmu.mpg.de>
9
10 * Makefile.am: Better dependencies for parallel build.
11 * configure.ac: Make sure 'config.status --recheck' leaves the
12 generated config.h unchanged.
13
14 2012-11-16 Peter Breitenlohner <peb@mppmu.mpg.de>
15
16 * Makefile.am: Avoid use of deprecated INCLUDES.
17
18 2012-02-24 Peter Breitenlohner <peb@mppmu.mpg.de>
19
20 * include/Makefile.am: Use ../am/hdr_links.am.
21
22 2010-09-23 Peter Breitenlohner <peb@mppmu.mpg.de>
23
24 * configure.ac: Remove unused PNGLIB_* variables.
25
26 2010-02-20 Peter Breitenlohner <peb@mppmu.mpg.de>
27
28 * Makefile.am (AM_CPPFLAGS): Add -DNONDLL.
29
30 2010-01-11 Peter Breitenlohner <peb@mppmu.mpg.de>
31
32 * configure.ac, Makefile.am: Use libfreetype.
33
34 2009-05-07 Peter Breitenlohner <peb@mppmu.mpg.de>
35
36 Adapt to TL2009 build system.
37
38 2008-01-31 Peter Breitenlohner <peb@mppmu.mpg.de>
39
40 Convert from autoconf-2.13 to autoconf-2.59+:
41 * Makefile.in: Add @configure_input@ line.
42 * aclocal.m4 (new): Generated (aclocal -I ../../texk/m4).
43 * configure: Regenerated (autoconf).
44
0 ## Proxy Makefile.am to build libpng for TeX Live.
1 ##
2 ## Copyright (C) 2009-2013 Peter Breitenlohner <tex-live@tug.org>
3 ##
4 ## This file is free software; the copyright holder
5 ## gives unlimited permission to copy and/or distribute it,
6 ## with or without modifications, as long as this notice is preserved.
7 ##
8 ACLOCAL_AMFLAGS = -I ../../m4
9
10 # Rebuild
11 .PHONY: rebuild
12 rebuild: all
13
14 ## We want to re-distribute the whole original libpng source tree.
15 ##
16 EXTRA_DIST = $(GD_TREE)
17
18 ## Changes applied to the original source tree
19 ##
20 EXTRA_DIST += $(GD_TREE)-PATCHES
21
22 # in case of an SVN repository
23 dist-hook:
24 rm -rf `find $(distdir) -name .svn -o -name .deps -o -name .dirstamp -o -name '*.$(OBJEXT)'`
25 rm -f $(distdir)/$(GD_TREE)/config/config.guess \
26 $(distdir)/$(GD_TREE)/config/config.rpath \
27 $(distdir)/$(GD_TREE)/config/config.sub \
28 $(distdir)/$(GD_TREE)/config/depcomp \
29 $(distdir)/$(GD_TREE)/config/install-sh \
30 $(distdir)/$(GD_TREE)/config/ltmain.sh \
31 $(distdir)/$(GD_TREE)/config/missing \
32 $(distdir)/$(GD_TREE)/config/mkinstalldirs \
33 $(distdir)/$(GD_TREE)/depcomp \
34 $(distdir)/$(GD_TREE)/install-sh \
35 $(distdir)/$(GD_TREE)/missing \
36 $(distdir)/$(GD_TREE)/mkinstalldirs
37
38 SUBDIRS = include
39
40 AM_CPPFLAGS = -I$(top_srcdir)/$(GD_TREE) $(ZLIB_INCLUDES) $(LIBPNG_INCLUDES) $(FREETYPE2_INCLUDES)
41 AM_CPPFLAGS += -DNONDLL
42
43 noinst_LIBRARIES=libgd.a
44
45 libgd_a_SOURCES = \
46 @GD_TREE@/gd.c \
47 @GD_TREE@/gd_gd.c \
48 @GD_TREE@/gd_gd2.c \
49 @GD_TREE@/gd_gif_in.c \
50 @GD_TREE@/gd_gif_out.c \
51 @GD_TREE@/gd_io.c \
52 @GD_TREE@/gd_io_dp.c \
53 @GD_TREE@/gd_io_file.c \
54 @GD_TREE@/gd_io_ss.c \
55 @GD_TREE@/gd_jpeg.c \
56 @GD_TREE@/gd_png.c \
57 @GD_TREE@/gd_security.c \
58 @GD_TREE@/gd_ss.c \
59 @GD_TREE@/gd_topal.c \
60 @GD_TREE@/gd_wbmp.c \
61 @GD_TREE@/gdcache.c \
62 @GD_TREE@/gdfontg.c \
63 @GD_TREE@/gdfontl.c \
64 @GD_TREE@/gdfontmb.c \
65 @GD_TREE@/gdfonts.c \
66 @GD_TREE@/gdfontt.c \
67 @GD_TREE@/gdft.c \
68 @GD_TREE@/gdfx.c \
69 @GD_TREE@/gdhelpers.c \
70 @GD_TREE@/gdkanji.c \
71 @GD_TREE@/gdtables.c \
72 @GD_TREE@/gdxpm.c \
73 @GD_TREE@/wbmp.c
74
75 $(libgd_a_OBJECTS): config.force
76
77 config.force: $(LIBPNG_DEPEND) $(FREETYPE2_DEPEND)
78 echo timestamp >config.force
79 $(SHELL) ./config.status --recheck
80
81 DISTCLEANFILES = config.force
82
83 ## Rebuild libpng
84 @LIBPNG_RULE@
85 ## Rebuild libfreetype
86 @FREETYPE2_RULE@
87
0 # Makefile.in generated by automake 1.13.1 from Makefile.am.
1 # @configure_input@
2
3 # Copyright (C) 1994-2012 Free Software Foundation, Inc.
4
5 # This Makefile.in is free software; the Free Software Foundation
6 # gives unlimited permission to copy and/or distribute it,
7 # with or without modifications, as long as this notice is preserved.
8
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
11 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
12 # PARTICULAR PURPOSE.
13
14 @SET_MAKE@
15
16 VPATH = @srcdir@
17 am__make_dryrun = \
18 { \
19 am__dry=no; \
20 case $$MAKEFLAGS in \
21 *\\[\ \ ]*) \
22 echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
23 | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
24 *) \
25 for am__flg in $$MAKEFLAGS; do \
26 case $$am__flg in \
27 *=*|--*) ;; \
28 *n*) am__dry=yes; break;; \
29 esac; \
30 done;; \
31 esac; \
32 test $$am__dry = yes; \
33 }
34 pkgdatadir = $(datadir)/@PACKAGE@
35 pkgincludedir = $(includedir)/@PACKAGE@
36 pkglibdir = $(libdir)/@PACKAGE@
37 pkglibexecdir = $(libexecdir)/@PACKAGE@
38 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
39 install_sh_DATA = $(install_sh) -c -m 644
40 install_sh_PROGRAM = $(install_sh) -c
41 install_sh_SCRIPT = $(install_sh) -c
42 INSTALL_HEADER = $(INSTALL_DATA)
43 transform = $(program_transform_name)
44 NORMAL_INSTALL = :
45 PRE_INSTALL = :
46 POST_INSTALL = :
47 NORMAL_UNINSTALL = :
48 PRE_UNINSTALL = :
49 POST_UNINSTALL = :
50 build_triplet = @build@
51 host_triplet = @host@
52 subdir = .
53 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
54 $(top_srcdir)/configure $(am__configure_deps) \
55 $(srcdir)/config.hin $(top_srcdir)/../../build-aux/depcomp \
56 ChangeLog README ../../build-aux/config.guess \
57 ../../build-aux/config.sub ../../build-aux/depcomp \
58 ../../build-aux/install-sh ../../build-aux/missing \
59 ../../build-aux/texinfo.tex ../../build-aux/ylwrap \
60 ../../build-aux/ltmain.sh \
61 $(top_srcdir)/../../build-aux/config.guess \
62 $(top_srcdir)/../../build-aux/config.sub \
63 $(top_srcdir)/../../build-aux/install-sh \
64 $(top_srcdir)/../../build-aux/ltmain.sh \
65 $(top_srcdir)/../../build-aux/missing
66 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
67 am__aclocal_m4_deps = $(top_srcdir)/../../m4/kpse-common.m4 \
68 $(top_srcdir)/../../m4/kpse-freetype2-flags.m4 \
69 $(top_srcdir)/../../m4/kpse-libpng-flags.m4 \
70 $(top_srcdir)/../../m4/kpse-warnings.m4 \
71 $(top_srcdir)/../../m4/kpse-zlib-flags.m4 \
72 $(top_srcdir)/../../m4/libtool.m4 \
73 $(top_srcdir)/../../m4/ltoptions.m4 \
74 $(top_srcdir)/../../m4/ltsugar.m4 \
75 $(top_srcdir)/../../m4/ltversion.m4 \
76 $(top_srcdir)/../../m4/lt~obsolete.m4 \
77 $(top_srcdir)/configure.ac
78 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
79 $(ACLOCAL_M4)
80 am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
81 configure.lineno config.status.lineno
82 mkinstalldirs = $(install_sh) -d
83 CONFIG_HEADER = config.h
84 CONFIG_CLEAN_FILES =
85 CONFIG_CLEAN_VPATH_FILES =
86 LIBRARIES = $(noinst_LIBRARIES)
87 ARFLAGS = cru
88 AM_V_AR = $(am__v_AR_@AM_V@)
89 am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
90 am__v_AR_0 = @echo " AR " $@;
91 am__v_AR_1 =
92 libgd_a_AR = $(AR) $(ARFLAGS)
93 libgd_a_LIBADD =
94 am__dirstamp = $(am__leading_dot)dirstamp
95 am_libgd_a_OBJECTS = @GD_TREE@/gd.$(OBJEXT) @GD_TREE@/gd_gd.$(OBJEXT) \
96 @GD_TREE@/gd_gd2.$(OBJEXT) @GD_TREE@/gd_gif_in.$(OBJEXT) \
97 @GD_TREE@/gd_gif_out.$(OBJEXT) @GD_TREE@/gd_io.$(OBJEXT) \
98 @GD_TREE@/gd_io_dp.$(OBJEXT) @GD_TREE@/gd_io_file.$(OBJEXT) \
99 @GD_TREE@/gd_io_ss.$(OBJEXT) @GD_TREE@/gd_jpeg.$(OBJEXT) \
100 @GD_TREE@/gd_png.$(OBJEXT) @GD_TREE@/gd_security.$(OBJEXT) \
101 @GD_TREE@/gd_ss.$(OBJEXT) @GD_TREE@/gd_topal.$(OBJEXT) \
102 @GD_TREE@/gd_wbmp.$(OBJEXT) @GD_TREE@/gdcache.$(OBJEXT) \
103 @GD_TREE@/gdfontg.$(OBJEXT) @GD_TREE@/gdfontl.$(OBJEXT) \
104 @GD_TREE@/gdfontmb.$(OBJEXT) @GD_TREE@/gdfonts.$(OBJEXT) \
105 @GD_TREE@/gdfontt.$(OBJEXT) @GD_TREE@/gdft.$(OBJEXT) \
106 @GD_TREE@/gdfx.$(OBJEXT) @GD_TREE@/gdhelpers.$(OBJEXT) \
107 @GD_TREE@/gdkanji.$(OBJEXT) @GD_TREE@/gdtables.$(OBJEXT) \
108 @GD_TREE@/gdxpm.$(OBJEXT) @GD_TREE@/wbmp.$(OBJEXT)
109 libgd_a_OBJECTS = $(am_libgd_a_OBJECTS)
110 AM_V_P = $(am__v_P_@AM_V@)
111 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
112 am__v_P_0 = false
113 am__v_P_1 = :
114 AM_V_GEN = $(am__v_GEN_@AM_V@)
115 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
116 am__v_GEN_0 = @echo " GEN " $@;
117 am__v_GEN_1 =
118 AM_V_at = $(am__v_at_@AM_V@)
119 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
120 am__v_at_0 = @
121 am__v_at_1 =
122 DEFAULT_INCLUDES = -I.@am__isrc@
123 depcomp = $(SHELL) $(top_srcdir)/../../build-aux/depcomp
124 am__depfiles_maybe = depfiles
125 am__mv = mv -f
126 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
127 $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
128 AM_V_lt = $(am__v_lt_@AM_V@)
129 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
130 am__v_lt_0 = --silent
131 am__v_lt_1 =
132 LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
133 $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
134 $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
135 $(AM_CFLAGS) $(CFLAGS)
136 AM_V_CC = $(am__v_CC_@AM_V@)
137 am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
138 am__v_CC_0 = @echo " CC " $@;
139 am__v_CC_1 =
140 CCLD = $(CC)
141 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
142 $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
143 $(AM_LDFLAGS) $(LDFLAGS) -o $@
144 AM_V_CCLD = $(am__v_CCLD_@AM_V@)
145 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
146 am__v_CCLD_0 = @echo " CCLD " $@;
147 am__v_CCLD_1 =
148 SOURCES = $(libgd_a_SOURCES)
149 DIST_SOURCES = $(libgd_a_SOURCES)
150 RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
151 ctags-recursive dvi-recursive html-recursive info-recursive \
152 install-data-recursive install-dvi-recursive \
153 install-exec-recursive install-html-recursive \
154 install-info-recursive install-pdf-recursive \
155 install-ps-recursive install-recursive installcheck-recursive \
156 installdirs-recursive pdf-recursive ps-recursive \
157 tags-recursive uninstall-recursive
158 am__can_run_installinfo = \
159 case $$AM_UPDATE_INFO_DIR in \
160 n|no|NO) false;; \
161 *) (install-info --version) >/dev/null 2>&1;; \
162 esac
163 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
164 distclean-recursive maintainer-clean-recursive
165 am__recursive_targets = \
166 $(RECURSIVE_TARGETS) \
167 $(RECURSIVE_CLEAN_TARGETS) \
168 $(am__extra_recursive_targets)
169 AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
170 cscope distdir dist dist-all distcheck
171 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
172 $(LISP)config.hin
173 # Read a list of newline-separated strings from the standard input,
174 # and print each of them once, without duplicates. Input order is
175 # *not* preserved.
176 am__uniquify_input = $(AWK) '\
177 BEGIN { nonempty = 0; } \
178 { items[$$0] = 1; nonempty = 1; } \
179 END { if (nonempty) { for (i in items) print i; }; } \
180 '
181 # Make sure the list of sources is unique. This is necessary because,
182 # e.g., the same source file might be shared among _SOURCES variables
183 # for different programs/libraries.
184 am__define_uniq_tagged_files = \
185 list='$(am__tagged_files)'; \
186 unique=`for i in $$list; do \
187 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
188 done | $(am__uniquify_input)`
189 ETAGS = etags
190 CTAGS = ctags
191 CSCOPE = cscope
192 DIST_SUBDIRS = $(SUBDIRS)
193 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
194 distdir = $(PACKAGE)-$(VERSION)
195 top_distdir = $(distdir)
196 am__remove_distdir = \
197 if test -d "$(distdir)"; then \
198 find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
199 && rm -rf "$(distdir)" \
200 || { sleep 5 && rm -rf "$(distdir)"; }; \
201 else :; fi
202 am__post_remove_distdir = $(am__remove_distdir)
203 am__relativize = \
204 dir0=`pwd`; \
205 sed_first='s,^\([^/]*\)/.*$$,\1,'; \
206 sed_rest='s,^[^/]*/*,,'; \
207 sed_last='s,^.*/\([^/]*\)$$,\1,'; \
208 sed_butlast='s,/*[^/]*$$,,'; \
209 while test -n "$$dir1"; do \
210 first=`echo "$$dir1" | sed -e "$$sed_first"`; \
211 if test "$$first" != "."; then \
212 if test "$$first" = ".."; then \
213 dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
214 dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
215 else \
216 first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
217 if test "$$first2" = "$$first"; then \
218 dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
219 else \
220 dir2="../$$dir2"; \
221 fi; \
222 dir0="$$dir0"/"$$first"; \
223 fi; \
224 fi; \
225 dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
226 done; \
227 reldir="$$dir2"
228 DIST_ARCHIVES = $(distdir).tar.gz
229 GZIP_ENV = --best
230 DIST_TARGETS = dist-gzip
231 distuninstallcheck_listfiles = find . -type f -print
232 am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
233 | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
234 distcleancheck_listfiles = find . -type f -print
235 ACLOCAL = @ACLOCAL@
236 AMTAR = @AMTAR@
237 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
238 AR = @AR@
239 AUTOCONF = @AUTOCONF@
240 AUTOHEADER = @AUTOHEADER@
241 AUTOMAKE = @AUTOMAKE@
242 AWK = @AWK@
243 CC = @CC@
244 CCDEPMODE = @CCDEPMODE@
245 CFLAGS = @CFLAGS@
246 CPP = @CPP@
247 CPPFLAGS = @CPPFLAGS@
248 CYGPATH_W = @CYGPATH_W@
249 DEFS = @DEFS@
250 DEPDIR = @DEPDIR@
251 DLLTOOL = @DLLTOOL@
252 DSYMUTIL = @DSYMUTIL@
253 DUMPBIN = @DUMPBIN@
254 ECHO_C = @ECHO_C@
255 ECHO_N = @ECHO_N@
256 ECHO_T = @ECHO_T@
257 EGREP = @EGREP@
258 EXEEXT = @EXEEXT@
259 FGREP = @FGREP@
260 FREETYPE2_DEPEND = @FREETYPE2_DEPEND@
261 FREETYPE2_INCLUDES = @FREETYPE2_INCLUDES@
262 FREETYPE2_LIBS = @FREETYPE2_LIBS@
263 FT2_CONFIG = @FT2_CONFIG@
264 GD_TREE = @GD_TREE@
265 GREP = @GREP@
266 INSTALL = @INSTALL@
267 INSTALL_DATA = @INSTALL_DATA@
268 INSTALL_PROGRAM = @INSTALL_PROGRAM@
269 INSTALL_SCRIPT = @INSTALL_SCRIPT@
270 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
271 LD = @LD@
272 LDFLAGS = @LDFLAGS@
273 LIBOBJS = @LIBOBJS@
274 LIBPNG_DEPEND = @LIBPNG_DEPEND@
275 LIBPNG_INCLUDES = @LIBPNG_INCLUDES@
276 LIBPNG_LIBS = @LIBPNG_LIBS@
277 LIBS = @LIBS@
278 LIBTOOL = @LIBTOOL@
279 LIPO = @LIPO@
280 LN_S = @LN_S@
281 LTLIBOBJS = @LTLIBOBJS@
282 MAINT = @MAINT@
283 MAKEINFO = @MAKEINFO@
284 MANIFEST_TOOL = @MANIFEST_TOOL@
285 MKDIR_P = @MKDIR_P@
286 NM = @NM@
287 NMEDIT = @NMEDIT@
288 OBJDUMP = @OBJDUMP@
289 OBJEXT = @OBJEXT@
290 OTOOL = @OTOOL@
291 OTOOL64 = @OTOOL64@
292 PACKAGE = @PACKAGE@
293 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
294 PACKAGE_NAME = @PACKAGE_NAME@
295 PACKAGE_STRING = @PACKAGE_STRING@
296 PACKAGE_TARNAME = @PACKAGE_TARNAME@
297 PACKAGE_URL = @PACKAGE_URL@
298 PACKAGE_VERSION = @PACKAGE_VERSION@
299 PATH_SEPARATOR = @PATH_SEPARATOR@
300 PKG_CONFIG = @PKG_CONFIG@
301 RANLIB = @RANLIB@
302 SED = @SED@
303 SET_MAKE = @SET_MAKE@
304 SHELL = @SHELL@
305 STRIP = @STRIP@
306 VERSION = @VERSION@
307 WARNING_CFLAGS = @WARNING_CFLAGS@
308 ZLIB_DEPEND = @ZLIB_DEPEND@
309 ZLIB_INCLUDES = @ZLIB_INCLUDES@
310 ZLIB_LIBS = @ZLIB_LIBS@
311 abs_builddir = @abs_builddir@
312 abs_srcdir = @abs_srcdir@
313 abs_top_builddir = @abs_top_builddir@
314 abs_top_srcdir = @abs_top_srcdir@
315 ac_ct_AR = @ac_ct_AR@
316 ac_ct_CC = @ac_ct_CC@
317 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
318 am__include = @am__include@
319 am__leading_dot = @am__leading_dot@
320 am__quote = @am__quote@
321 am__tar = @am__tar@
322 am__untar = @am__untar@
323 bindir = @bindir@
324 build = @build@
325 build_alias = @build_alias@
326 build_cpu = @build_cpu@
327 build_os = @build_os@
328 build_vendor = @build_vendor@
329 builddir = @builddir@
330 datadir = @datadir@
331 datarootdir = @datarootdir@
332 docdir = @docdir@
333 dvidir = @dvidir@
334 exec_prefix = @exec_prefix@
335 host = @host@
336 host_alias = @host_alias@
337 host_cpu = @host_cpu@
338 host_os = @host_os@
339 host_vendor = @host_vendor@
340 htmldir = @htmldir@
341 includedir = @includedir@
342 infodir = @infodir@
343 install_sh = @install_sh@
344 libdir = @libdir@
345 libexecdir = @libexecdir@
346 localedir = @localedir@
347 localstatedir = @localstatedir@
348 mandir = @mandir@
349 mkdir_p = @mkdir_p@
350 oldincludedir = @oldincludedir@
351 pdfdir = @pdfdir@
352 prefix = @prefix@
353 program_transform_name = @program_transform_name@
354 psdir = @psdir@
355 sbindir = @sbindir@
356 sharedstatedir = @sharedstatedir@
357 srcdir = @srcdir@
358 sysconfdir = @sysconfdir@
359 target_alias = @target_alias@
360 top_build_prefix = @top_build_prefix@
361 top_builddir = @top_builddir@
362 top_srcdir = @top_srcdir@
363 ACLOCAL_AMFLAGS = -I ../../m4
364 EXTRA_DIST = $(GD_TREE) $(GD_TREE)-PATCHES
365 SUBDIRS = include
366 AM_CPPFLAGS = -I$(top_srcdir)/$(GD_TREE) $(ZLIB_INCLUDES) \
367 $(LIBPNG_INCLUDES) $(FREETYPE2_INCLUDES) -DNONDLL
368 noinst_LIBRARIES = libgd.a
369 libgd_a_SOURCES = \
370 @GD_TREE@/gd.c \
371 @GD_TREE@/gd_gd.c \
372 @GD_TREE@/gd_gd2.c \
373 @GD_TREE@/gd_gif_in.c \
374 @GD_TREE@/gd_gif_out.c \
375 @GD_TREE@/gd_io.c \
376 @GD_TREE@/gd_io_dp.c \
377 @GD_TREE@/gd_io_file.c \
378 @GD_TREE@/gd_io_ss.c \
379 @GD_TREE@/gd_jpeg.c \
380 @GD_TREE@/gd_png.c \
381 @GD_TREE@/gd_security.c \
382 @GD_TREE@/gd_ss.c \
383 @GD_TREE@/gd_topal.c \
384 @GD_TREE@/gd_wbmp.c \
385 @GD_TREE@/gdcache.c \
386 @GD_TREE@/gdfontg.c \
387 @GD_TREE@/gdfontl.c \
388 @GD_TREE@/gdfontmb.c \
389 @GD_TREE@/gdfonts.c \
390 @GD_TREE@/gdfontt.c \
391 @GD_TREE@/gdft.c \
392 @GD_TREE@/gdfx.c \
393 @GD_TREE@/gdhelpers.c \
394 @GD_TREE@/gdkanji.c \
395 @GD_TREE@/gdtables.c \
396 @GD_TREE@/gdxpm.c \
397 @GD_TREE@/wbmp.c
398
399 DISTCLEANFILES = config.force
400 all: config.h
401 $(MAKE) $(AM_MAKEFLAGS) all-recursive
402
403 .SUFFIXES:
404 .SUFFIXES: .c .lo .o .obj
405 am--refresh: Makefile
406 @:
407 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
408 @for dep in $?; do \
409 case '$(am__configure_deps)' in \
410 *$$dep*) \
411 echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
412 $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
413 && exit 0; \
414 exit 1;; \
415 esac; \
416 done; \
417 echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
418 $(am__cd) $(top_srcdir) && \
419 $(AUTOMAKE) --foreign Makefile
420 .PRECIOUS: Makefile
421 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
422 @case '$?' in \
423 *config.status*) \
424 echo ' $(SHELL) ./config.status'; \
425 $(SHELL) ./config.status;; \
426 *) \
427 echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
428 cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
429 esac;
430
431 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
432 $(SHELL) ./config.status --recheck
433
434 $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
435 $(am__cd) $(srcdir) && $(AUTOCONF)
436 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
437 $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
438 $(am__aclocal_m4_deps):
439
440 config.h: stamp-h1
441 @if test ! -f $@; then rm -f stamp-h1; else :; fi
442 @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
443
444 stamp-h1: $(srcdir)/config.hin $(top_builddir)/config.status
445 @rm -f stamp-h1
446 cd $(top_builddir) && $(SHELL) ./config.status config.h
447 $(srcdir)/config.hin: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
448 ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
449 rm -f stamp-h1
450 touch $@
451
452 distclean-hdr:
453 -rm -f config.h stamp-h1
454
455 clean-noinstLIBRARIES:
456 -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
457 @GD_TREE@/$(am__dirstamp):
458 @$(MKDIR_P) @GD_TREE@
459 @: > @GD_TREE@/$(am__dirstamp)
460 @GD_TREE@/$(DEPDIR)/$(am__dirstamp):
461 @$(MKDIR_P) @GD_TREE@/$(DEPDIR)
462 @: > @GD_TREE@/$(DEPDIR)/$(am__dirstamp)
463 @GD_TREE@/gd.$(OBJEXT): @GD_TREE@/$(am__dirstamp) \
464 @GD_TREE@/$(DEPDIR)/$(am__dirstamp)
465 @GD_TREE@/gd_gd.$(OBJEXT): @GD_TREE@/$(am__dirstamp) \
466 @GD_TREE@/$(DEPDIR)/$(am__dirstamp)
467 @GD_TREE@/gd_gd2.$(OBJEXT): @GD_TREE@/$(am__dirstamp) \
468 @GD_TREE@/$(DEPDIR)/$(am__dirstamp)
469 @GD_TREE@/gd_gif_in.$(OBJEXT): @GD_TREE@/$(am__dirstamp) \
470 @GD_TREE@/$(DEPDIR)/$(am__dirstamp)
471 @GD_TREE@/gd_gif_out.$(OBJEXT): @GD_TREE@/$(am__dirstamp) \
472 @GD_TREE@/$(DEPDIR)/$(am__dirstamp)
473 @GD_TREE@/gd_io.$(OBJEXT): @GD_TREE@/$(am__dirstamp) \
474 @GD_TREE@/$(DEPDIR)/$(am__dirstamp)
475 @GD_TREE@/gd_io_dp.$(OBJEXT): @GD_TREE@/$(am__dirstamp) \
476 @GD_TREE@/$(DEPDIR)/$(am__dirstamp)
477 @GD_TREE@/gd_io_file.$(OBJEXT): @GD_TREE@/$(am__dirstamp) \
478 @GD_TREE@/$(DEPDIR)/$(am__dirstamp)
479 @GD_TREE@/gd_io_ss.$(OBJEXT): @GD_TREE@/$(am__dirstamp) \
480 @GD_TREE@/$(DEPDIR)/$(am__dirstamp)
481 @GD_TREE@/gd_jpeg.$(OBJEXT): @GD_TREE@/$(am__dirstamp) \
482 @GD_TREE@/$(DEPDIR)/$(am__dirstamp)
483 @GD_TREE@/gd_png.$(OBJEXT): @GD_TREE@/$(am__dirstamp) \
484 @GD_TREE@/$(DEPDIR)/$(am__dirstamp)
485 @GD_TREE@/gd_security.$(OBJEXT): @GD_TREE@/$(am__dirstamp) \
486 @GD_TREE@/$(DEPDIR)/$(am__dirstamp)
487 @GD_TREE@/gd_ss.$(OBJEXT): @GD_TREE@/$(am__dirstamp) \
488 @GD_TREE@/$(DEPDIR)/$(am__dirstamp)
489 @GD_TREE@/gd_topal.$(OBJEXT): @GD_TREE@/$(am__dirstamp) \
490 @GD_TREE@/$(DEPDIR)/$(am__dirstamp)
491 @GD_TREE@/gd_wbmp.$(OBJEXT): @GD_TREE@/$(am__dirstamp) \
492 @GD_TREE@/$(DEPDIR)/$(am__dirstamp)
493 @GD_TREE@/gdcache.$(OBJEXT): @GD_TREE@/$(am__dirstamp) \
494 @GD_TREE@/$(DEPDIR)/$(am__dirstamp)
495 @GD_TREE@/gdfontg.$(OBJEXT): @GD_TREE@/$(am__dirstamp) \
496 @GD_TREE@/$(DEPDIR)/$(am__dirstamp)
497 @GD_TREE@/gdfontl.$(OBJEXT): @GD_TREE@/$(am__dirstamp) \
498 @GD_TREE@/$(DEPDIR)/$(am__dirstamp)
499 @GD_TREE@/gdfontmb.$(OBJEXT): @GD_TREE@/$(am__dirstamp) \
500 @GD_TREE@/$(DEPDIR)/$(am__dirstamp)
501 @GD_TREE@/gdfonts.$(OBJEXT): @GD_TREE@/$(am__dirstamp) \
502 @GD_TREE@/$(DEPDIR)/$(am__dirstamp)
503 @GD_TREE@/gdfontt.$(OBJEXT): @GD_TREE@/$(am__dirstamp) \
504 @GD_TREE@/$(DEPDIR)/$(am__dirstamp)
505 @GD_TREE@/gdft.$(OBJEXT): @GD_TREE@/$(am__dirstamp) \
506 @GD_TREE@/$(DEPDIR)/$(am__dirstamp)
507 @GD_TREE@/gdfx.$(OBJEXT): @GD_TREE@/$(am__dirstamp) \
508 @GD_TREE@/$(DEPDIR)/$(am__dirstamp)
509 @GD_TREE@/gdhelpers.$(OBJEXT): @GD_TREE@/$(am__dirstamp) \
510 @GD_TREE@/$(DEPDIR)/$(am__dirstamp)
511 @GD_TREE@/gdkanji.$(OBJEXT): @GD_TREE@/$(am__dirstamp) \
512 @GD_TREE@/$(DEPDIR)/$(am__dirstamp)
513 @GD_TREE@/gdtables.$(OBJEXT): @GD_TREE@/$(am__dirstamp) \
514 @GD_TREE@/$(DEPDIR)/$(am__dirstamp)
515 @GD_TREE@/gdxpm.$(OBJEXT): @GD_TREE@/$(am__dirstamp) \
516 @GD_TREE@/$(DEPDIR)/$(am__dirstamp)
517 @GD_TREE@/wbmp.$(OBJEXT): @GD_TREE@/$(am__dirstamp) \
518 @GD_TREE@/$(DEPDIR)/$(am__dirstamp)
519 libgd.a: $(libgd_a_OBJECTS) $(libgd_a_DEPENDENCIES) $(EXTRA_libgd_a_DEPENDENCIES)
520 $(AM_V_at)-rm -f libgd.a
521 $(AM_V_AR)$(libgd_a_AR) libgd.a $(libgd_a_OBJECTS) $(libgd_a_LIBADD)
522 $(AM_V_at)$(RANLIB) libgd.a
523
524 mostlyclean-compile:
525 -rm -f *.$(OBJEXT)
526 -rm -f @GD_TREE@/*.$(OBJEXT)
527
528 distclean-compile:
529 -rm -f *.tab.c
530
531 @AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/$(DEPDIR)/gd.Po@am__quote@
532 @AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/$(DEPDIR)/gd_gd.Po@am__quote@
533 @AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/$(DEPDIR)/gd_gd2.Po@am__quote@
534 @AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/$(DEPDIR)/gd_gif_in.Po@am__quote@
535 @AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/$(DEPDIR)/gd_gif_out.Po@am__quote@
536 @AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/$(DEPDIR)/gd_io.Po@am__quote@
537 @AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/$(DEPDIR)/gd_io_dp.Po@am__quote@
538 @AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/$(DEPDIR)/gd_io_file.Po@am__quote@
539 @AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/$(DEPDIR)/gd_io_ss.Po@am__quote@
540 @AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/$(DEPDIR)/gd_jpeg.Po@am__quote@
541 @AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/$(DEPDIR)/gd_png.Po@am__quote@
542 @AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/$(DEPDIR)/gd_security.Po@am__quote@
543 @AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/$(DEPDIR)/gd_ss.Po@am__quote@
544 @AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/$(DEPDIR)/gd_topal.Po@am__quote@
545 @AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/$(DEPDIR)/gd_wbmp.Po@am__quote@
546 @AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/$(DEPDIR)/gdcache.Po@am__quote@
547 @AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/$(DEPDIR)/gdfontg.Po@am__quote@
548 @AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/$(DEPDIR)/gdfontl.Po@am__quote@
549 @AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/$(DEPDIR)/gdfontmb.Po@am__quote@
550 @AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/$(DEPDIR)/gdfonts.Po@am__quote@
551 @AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/$(DEPDIR)/gdfontt.Po@am__quote@
552 @AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/$(DEPDIR)/gdft.Po@am__quote@
553 @AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/$(DEPDIR)/gdfx.Po@am__quote@
554 @AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/$(DEPDIR)/gdhelpers.Po@am__quote@
555 @AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/$(DEPDIR)/gdkanji.Po@am__quote@
556 @AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/$(DEPDIR)/gdtables.Po@am__quote@
557 @AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/$(DEPDIR)/gdxpm.Po@am__quote@
558 @AMDEP_TRUE@@am__include@ @am__quote@@GD_TREE@/$(DEPDIR)/wbmp.Po@am__quote@
559
560 .c.o:
561 @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
562 @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
563 @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
564 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
565 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
566 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
567
568 .c.obj:
569 @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
570 @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
571 @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
572 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
573 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
574 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
575
576 .c.lo:
577 @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
578 @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
579 @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
580 @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
581 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
582 @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
583
584 mostlyclean-libtool:
585 -rm -f *.lo
586
587 clean-libtool:
588 -rm -rf .libs _libs
589
590 distclean-libtool:
591 -rm -f libtool config.lt
592
593 # This directory's subdirectories are mostly independent; you can cd
594 # into them and run 'make' without going through this Makefile.
595 # To change the values of 'make' variables: instead of editing Makefiles,
596 # (1) if the variable is set in 'config.status', edit 'config.status'
597 # (which will cause the Makefiles to be regenerated when you run 'make');
598 # (2) otherwise, pass the desired values on the 'make' command line.
599 $(am__recursive_targets):
600 @fail= failcom='exit 1'; \
601 for f in x $$MAKEFLAGS; do \
602 case $$f in \
603 *=* | --[!k]*);; \
604 *k*) failcom='fail=yes';; \
605 esac; \
606 done; \
607 dot_seen=no; \
608 target=`echo $@ | sed s/-recursive//`; \
609 case "$@" in \
610 distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
611 *) list='$(SUBDIRS)' ;; \
612 esac; \
613 for subdir in $$list; do \
614 echo "Making $$target in $$subdir"; \
615 if test "$$subdir" = "."; then \
616 dot_seen=yes; \
617 local_target="$$target-am"; \
618 else \
619 local_target="$$target"; \
620 fi; \
621 ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
622 || eval $$failcom; \
623 done; \
624 if test "$$dot_seen" = "no"; then \
625 $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
626 fi; test -z "$$fail"
627
628 ID: $(am__tagged_files)
629 $(am__define_uniq_tagged_files); mkid -fID $$unique
630 tags: tags-recursive
631 TAGS: tags
632
633 tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
634 set x; \
635 here=`pwd`; \
636 if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
637 include_option=--etags-include; \
638 empty_fix=.; \
639 else \
640 include_option=--include; \
641 empty_fix=; \
642 fi; \
643 list='$(SUBDIRS)'; for subdir in $$list; do \
644 if test "$$subdir" = .; then :; else \
645 test ! -f $$subdir/TAGS || \
646 set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
647 fi; \
648 done; \
649 $(am__define_uniq_tagged_files); \
650 shift; \
651 if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
652 test -n "$$unique" || unique=$$empty_fix; \
653 if test $$# -gt 0; then \
654 $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
655 "$$@" $$unique; \
656 else \
657 $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
658 $$unique; \
659 fi; \
660 fi
661 ctags: ctags-recursive
662
663 CTAGS: ctags
664 ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
665 $(am__define_uniq_tagged_files); \
666 test -z "$(CTAGS_ARGS)$$unique" \
667 || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
668 $$unique
669
670 GTAGS:
671 here=`$(am__cd) $(top_builddir) && pwd` \
672 && $(am__cd) $(top_srcdir) \
673 && gtags -i $(GTAGS_ARGS) "$$here"
674 cscope: cscope.files
675 test ! -s cscope.files \
676 || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
677 clean-cscope:
678 -rm -f cscope.files
679 cscope.files: clean-cscope cscopelist
680 cscopelist: cscopelist-recursive
681
682 cscopelist-am: $(am__tagged_files)
683 list='$(am__tagged_files)'; \
684 case "$(srcdir)" in \
685 [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
686 *) sdir=$(subdir)/$(srcdir) ;; \
687 esac; \
688 for i in $$list; do \
689 if test -f "$$i"; then \
690 echo "$(subdir)/$$i"; \
691 else \
692 echo "$$sdir/$$i"; \
693 fi; \
694 done >> $(top_builddir)/cscope.files
695
696 distclean-tags:
697 -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
698 -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
699
700 distdir: $(DISTFILES)
701 $(am__remove_distdir)
702 test -d "$(distdir)" || mkdir "$(distdir)"
703 @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
704 topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
705 list='$(DISTFILES)'; \
706 dist_files=`for file in $$list; do echo $$file; done | \
707 sed -e "s|^$$srcdirstrip/||;t" \
708 -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
709 case $$dist_files in \
710 */*) $(MKDIR_P) `echo "$$dist_files" | \
711 sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
712 sort -u` ;; \
713 esac; \
714 for file in $$dist_files; do \
715 if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
716 if test -d $$d/$$file; then \
717 dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
718 if test -d "$(distdir)/$$file"; then \
719 find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
720 fi; \
721 if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
722 cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
723 find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
724 fi; \
725 cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
726 else \
727 test -f "$(distdir)/$$file" \
728 || cp -p $$d/$$file "$(distdir)/$$file" \
729 || exit 1; \
730 fi; \
731 done
732 @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
733 if test "$$subdir" = .; then :; else \
734 $(am__make_dryrun) \
735 || test -d "$(distdir)/$$subdir" \
736 || $(MKDIR_P) "$(distdir)/$$subdir" \
737 || exit 1; \
738 dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
739 $(am__relativize); \
740 new_distdir=$$reldir; \
741 dir1=$$subdir; dir2="$(top_distdir)"; \
742 $(am__relativize); \
743 new_top_distdir=$$reldir; \
744 echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
745 echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
746 ($(am__cd) $$subdir && \
747 $(MAKE) $(AM_MAKEFLAGS) \
748 top_distdir="$$new_top_distdir" \
749 distdir="$$new_distdir" \
750 am__remove_distdir=: \
751 am__skip_length_check=: \
752 am__skip_mode_fix=: \
753 distdir) \
754 || exit 1; \
755 fi; \
756 done
757 $(MAKE) $(AM_MAKEFLAGS) \
758 top_distdir="$(top_distdir)" distdir="$(distdir)" \
759 dist-hook
760 -test -n "$(am__skip_mode_fix)" \
761 || find "$(distdir)" -type d ! -perm -755 \
762 -exec chmod u+rwx,go+rx {} \; -o \
763 ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
764 ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
765 ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
766 || chmod -R a+r "$(distdir)"
767 dist-gzip: distdir
768 tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
769 $(am__post_remove_distdir)
770
771 dist-bzip2: distdir
772 tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
773 $(am__post_remove_distdir)
774
775 dist-lzip: distdir
776 tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
777 $(am__post_remove_distdir)
778
779 dist-xz: distdir
780 tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
781 $(am__post_remove_distdir)
782
783 dist-tarZ: distdir
784 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
785 $(am__post_remove_distdir)
786
787 dist-shar: distdir
788 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
789 $(am__post_remove_distdir)
790
791 dist-zip: distdir
792 -rm -f $(distdir).zip
793 zip -rq $(distdir).zip $(distdir)
794 $(am__post_remove_distdir)
795
796 dist dist-all:
797 $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
798 $(am__post_remove_distdir)
799
800 # This target untars the dist file and tries a VPATH configuration. Then
801 # it guarantees that the distribution is self-contained by making another
802 # tarfile.
803 distcheck: dist
804 case '$(DIST_ARCHIVES)' in \
805 *.tar.gz*) \
806 GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
807 *.tar.bz2*) \
808 bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
809 *.tar.lz*) \
810 lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
811 *.tar.xz*) \
812 xz -dc $(distdir).tar.xz | $(am__untar) ;;\
813 *.tar.Z*) \
814 uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
815 *.shar.gz*) \
816 GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
817 *.zip*) \
818 unzip $(distdir).zip ;;\
819 esac
820 chmod -R a-w $(distdir)
821 chmod u+w $(distdir)
822 mkdir $(distdir)/_build $(distdir)/_inst
823 chmod a-w $(distdir)
824 test -d $(distdir)/_build || exit 0; \
825 dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
826 && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
827 && am__cwd=`pwd` \
828 && $(am__cd) $(distdir)/_build \
829 && ../configure --srcdir=.. --prefix="$$dc_install_base" \
830 $(AM_DISTCHECK_CONFIGURE_FLAGS) \
831 $(DISTCHECK_CONFIGURE_FLAGS) \
832 && $(MAKE) $(AM_MAKEFLAGS) \
833 && $(MAKE) $(AM_MAKEFLAGS) dvi \
834 && $(MAKE) $(AM_MAKEFLAGS) check \
835 && $(MAKE) $(AM_MAKEFLAGS) install \
836 && $(MAKE) $(AM_MAKEFLAGS) installcheck \
837 && $(MAKE) $(AM_MAKEFLAGS) uninstall \
838 && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
839 distuninstallcheck \
840 && chmod -R a-w "$$dc_install_base" \
841 && ({ \
842 (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
843 && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
844 && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
845 && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
846 distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
847 } || { rm -rf "$$dc_destdir"; exit 1; }) \
848 && rm -rf "$$dc_destdir" \
849 && $(MAKE) $(AM_MAKEFLAGS) dist \
850 && rm -rf $(DIST_ARCHIVES) \
851 && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
852 && cd "$$am__cwd" \
853 || exit 1
854 $(am__post_remove_distdir)
855 @(echo "$(distdir) archives ready for distribution: "; \
856 list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
857 sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
858 distuninstallcheck:
859 @test -n '$(distuninstallcheck_dir)' || { \
860 echo 'ERROR: trying to run $@ with an empty' \
861 '$$(distuninstallcheck_dir)' >&2; \
862 exit 1; \
863 }; \
864 $(am__cd) '$(distuninstallcheck_dir)' || { \
865 echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
866 exit 1; \
867 }; \
868 test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
869 || { echo "ERROR: files left after uninstall:" ; \
870 if test -n "$(DESTDIR)"; then \
871 echo " (check DESTDIR support)"; \
872 fi ; \
873 $(distuninstallcheck_listfiles) ; \
874 exit 1; } >&2
875 distcleancheck: distclean
876 @if test '$(srcdir)' = . ; then \
877 echo "ERROR: distcleancheck can only run from a VPATH build" ; \
878 exit 1 ; \
879 fi
880 @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
881 || { echo "ERROR: files left in build directory after distclean:" ; \
882 $(distcleancheck_listfiles) ; \
883 exit 1; } >&2
884 check-am: all-am
885 check: check-recursive
886 all-am: Makefile $(LIBRARIES) config.h
887 installdirs: installdirs-recursive
888 installdirs-am:
889 install: install-recursive
890 install-exec: install-exec-recursive
891 install-data: install-data-recursive
892 uninstall: uninstall-recursive
893
894 install-am: all-am
895 @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
896
897 installcheck: installcheck-recursive
898 install-strip:
899 if test -z '$(STRIP)'; then \
900 $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
901 install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
902 install; \
903 else \
904 $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
905 install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
906 "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
907 fi
908 mostlyclean-generic:
909
910 clean-generic:
911
912 distclean-generic:
913 -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
914 -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
915 -rm -f @GD_TREE@/$(DEPDIR)/$(am__dirstamp)
916 -rm -f @GD_TREE@/$(am__dirstamp)
917 -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
918
919 maintainer-clean-generic:
920 @echo "This command is intended for maintainers to use"
921 @echo "it deletes files that may require special tools to rebuild."
922 clean: clean-recursive
923
924 clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \
925 mostlyclean-am
926
927 distclean: distclean-recursive
928 -rm -f $(am__CONFIG_DISTCLEAN_FILES)
929 -rm -rf @GD_TREE@/$(DEPDIR)
930 -rm -f Makefile
931 distclean-am: clean-am distclean-compile distclean-generic \
932 distclean-hdr distclean-libtool distclean-tags
933
934 dvi: dvi-recursive
935
936 dvi-am:
937
938 html: html-recursive
939
940 html-am:
941
942 info: info-recursive
943
944 info-am:
945
946 install-data-am:
947
948 install-dvi: install-dvi-recursive
949
950 install-dvi-am:
951
952 install-exec-am:
953
954 install-html: install-html-recursive
955
956 install-html-am:
957
958 install-info: install-info-recursive
959
960 install-info-am:
961
962 install-man:
963
964 install-pdf: install-pdf-recursive
965
966 install-pdf-am:
967
968 install-ps: install-ps-recursive
969
970 install-ps-am:
971
972 installcheck-am:
973
974 maintainer-clean: maintainer-clean-recursive
975 -rm -f $(am__CONFIG_DISTCLEAN_FILES)
976 -rm -rf $(top_srcdir)/autom4te.cache
977 -rm -rf @GD_TREE@/$(DEPDIR)
978 -rm -f Makefile
979 maintainer-clean-am: distclean-am maintainer-clean-generic
980
981 mostlyclean: mostlyclean-recursive
982
983 mostlyclean-am: mostlyclean-compile mostlyclean-generic \
984 mostlyclean-libtool
985
986 pdf: pdf-recursive
987
988 pdf-am:
989
990 ps: ps-recursive
991
992 ps-am:
993
994 uninstall-am:
995
996 .MAKE: $(am__recursive_targets) all install-am install-strip
997
998 .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
999 am--refresh check check-am clean clean-cscope clean-generic \
1000 clean-libtool clean-noinstLIBRARIES cscope cscopelist-am ctags \
1001 ctags-am dist dist-all dist-bzip2 dist-gzip dist-hook \
1002 dist-lzip dist-shar dist-tarZ dist-xz dist-zip distcheck \
1003 distclean distclean-compile distclean-generic distclean-hdr \
1004 distclean-libtool distclean-tags distcleancheck distdir \
1005 distuninstallcheck dvi dvi-am html html-am info info-am \
1006 install install-am install-data install-data-am install-dvi \
1007 install-dvi-am install-exec install-exec-am install-html \
1008 install-html-am install-info install-info-am install-man \
1009 install-pdf install-pdf-am install-ps install-ps-am \
1010 install-strip installcheck installcheck-am installdirs \
1011 installdirs-am maintainer-clean maintainer-clean-generic \
1012 mostlyclean mostlyclean-compile mostlyclean-generic \
1013 mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
1014 uninstall-am
1015
1016
1017 # Rebuild
1018 .PHONY: rebuild
1019 rebuild: all
1020
1021 # in case of an SVN repository
1022 dist-hook:
1023 rm -rf `find $(distdir) -name .svn -o -name .deps -o -name .dirstamp -o -name '*.$(OBJEXT)'`
1024 rm -f $(distdir)/$(GD_TREE)/config/config.guess \
1025 $(distdir)/$(GD_TREE)/config/config.rpath \
1026 $(distdir)/$(GD_TREE)/config/config.sub \
1027 $(distdir)/$(GD_TREE)/config/depcomp \
1028 $(distdir)/$(GD_TREE)/config/install-sh \
1029 $(distdir)/$(GD_TREE)/config/ltmain.sh \
1030 $(distdir)/$(GD_TREE)/config/missing \
1031 $(distdir)/$(GD_TREE)/config/mkinstalldirs \
1032 $(distdir)/$(GD_TREE)/depcomp \
1033 $(distdir)/$(GD_TREE)/install-sh \
1034 $(distdir)/$(GD_TREE)/missing \
1035 $(distdir)/$(GD_TREE)/mkinstalldirs
1036
1037 $(libgd_a_OBJECTS): config.force
1038
1039 config.force: $(LIBPNG_DEPEND) $(FREETYPE2_DEPEND)
1040 echo timestamp >config.force
1041 $(SHELL) ./config.status --recheck
1042
1043 @LIBPNG_RULE@
1044 @FREETYPE2_RULE@
1045
1046 # Tell versions [3.59,3.63) of GNU make to not export all variables.
1047 # Otherwise a system limit (for SysV at least) may be exceeded.
1048 .NOEXPORT:
0 Building gd-2.0.35 as part of the TL tree
1 =========================================
2
3 This directory libs/gd/ uses a proxy Makefile.am to build the gd library
4 from the unmodified source tree in libs/gd/gd-x.y.z/, bypassing the original
5 build system.
6
7 As far as applicable, the tests in libs/gd/gd-x.y.z/configure.ac have been
8 copied to libs/gd/configure.ac.
9
10 =============================
11
12 2009-02-24 Peter Breitenlohner <peb@mppmu.mpg.de>
0 ## libs/gd/ac/gd.ac: configure.ac fragment for the TeX Live subdirectory libs/gd/
1 dnl
2 dnl Copyright (C) 2009 Peter Breitenlohner <tex-live@tug.org>
3 dnl You may freely use, modify and/or distribute this file.
4 dnl
5 ## basic check of system gd
6 KPSE_TRY_LIB([gd],
7 [#include <gd.h>],
8 [gdImageCreate(1, 2);])
0 ## libs/gd/ac/withenable.ac: configure.ac fragment for the TeX Live subdirectory libs/gd/
1 dnl
2 dnl Copyright (C) 2009, 2010 Peter Breitenlohner <tex-live@tug.org>
3 dnl You may freely use, modify and/or distribute this file.
4 dnl
5 ## configure options and TL libraries required for gd
6 KPSE_WITH_LIB([gd], [libpng freetype2])
0 # generated automatically by aclocal 1.13.1 -*- Autoconf -*-
1
2 # Copyright (C) 1996-2012 Free Software Foundation, Inc.
3
4 # This file is free software; the Free Software Foundation
5 # gives unlimited permission to copy and/or distribute it,
6 # with or without modifications, as long as this notice is preserved.
7
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
10 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11 # PARTICULAR PURPOSE.
12
13 m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
14 m4_ifndef([AC_AUTOCONF_VERSION],
15 [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
16 m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
17 [m4_warning([this file was generated for autoconf 2.69.
18 You have another version of autoconf. It may work, but is not guaranteed to.
19 If you have problems, you may need to regenerate the build system entirely.
20 To do so, use the procedure documented by the package, typically 'autoreconf'.])])
21
22 # Copyright (C) 2002-2013 Free Software Foundation, Inc.
23 #
24 # This file is free software; the Free Software Foundation
25 # gives unlimited permission to copy and/or distribute it,
26 # with or without modifications, as long as this notice is preserved.
27
28 # AM_AUTOMAKE_VERSION(VERSION)
29 # ----------------------------
30 # Automake X.Y traces this macro to ensure aclocal.m4 has been
31 # generated from the m4 files accompanying Automake X.Y.
32 # (This private macro should not be called outside this file.)
33 AC_DEFUN([AM_AUTOMAKE_VERSION],
34 [am__api_version='1.13'
35 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
36 dnl require some minimum version. Point them to the right macro.
37 m4_if([$1], [1.13.1], [],
38 [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
39 ])
40
41 # _AM_AUTOCONF_VERSION(VERSION)
42 # -----------------------------
43 # aclocal traces this macro to find the Autoconf version.
44 # This is a private macro too. Using m4_define simplifies
45 # the logic in aclocal, which can simply ignore this definition.
46 m4_define([_AM_AUTOCONF_VERSION], [])
47
48 # AM_SET_CURRENT_AUTOMAKE_VERSION
49 # -------------------------------
50 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
51 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
52 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
53 [AM_AUTOMAKE_VERSION([1.13.1])dnl
54 m4_ifndef([AC_AUTOCONF_VERSION],
55 [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
56 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
57
58 # AM_AUX_DIR_EXPAND -*- Autoconf -*-
59
60 # Copyright (C) 2001-2013 Free Software Foundation, Inc.
61 #
62 # This file is free software; the Free Software Foundation
63 # gives unlimited permission to copy and/or distribute it,
64 # with or without modifications, as long as this notice is preserved.
65
66 # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
67 # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to
68 # '$srcdir', '$srcdir/..', or '$srcdir/../..'.
69 #
70 # Of course, Automake must honor this variable whenever it calls a
71 # tool from the auxiliary directory. The problem is that $srcdir (and
72 # therefore $ac_aux_dir as well) can be either absolute or relative,
73 # depending on how configure is run. This is pretty annoying, since
74 # it makes $ac_aux_dir quite unusable in subdirectories: in the top
75 # source directory, any form will work fine, but in subdirectories a
76 # relative path needs to be adjusted first.
77 #
78 # $ac_aux_dir/missing
79 # fails when called from a subdirectory if $ac_aux_dir is relative
80 # $top_srcdir/$ac_aux_dir/missing
81 # fails if $ac_aux_dir is absolute,
82 # fails when called from a subdirectory in a VPATH build with
83 # a relative $ac_aux_dir
84 #
85 # The reason of the latter failure is that $top_srcdir and $ac_aux_dir
86 # are both prefixed by $srcdir. In an in-source build this is usually
87 # harmless because $srcdir is '.', but things will broke when you
88 # start a VPATH build or use an absolute $srcdir.
89 #
90 # So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
91 # iff we strip the leading $srcdir from $ac_aux_dir. That would be:
92 # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
93 # and then we would define $MISSING as
94 # MISSING="\${SHELL} $am_aux_dir/missing"
95 # This will work as long as MISSING is not called from configure, because
96 # unfortunately $(top_srcdir) has no meaning in configure.
97 # However there are other variables, like CC, which are often used in
98 # configure, and could therefore not use this "fixed" $ac_aux_dir.
99 #
100 # Another solution, used here, is to always expand $ac_aux_dir to an
101 # absolute PATH. The drawback is that using absolute paths prevent a
102 # configured tree to be moved without reconfiguration.
103
104 AC_DEFUN([AM_AUX_DIR_EXPAND],
105 [dnl Rely on autoconf to set up CDPATH properly.
106 AC_PREREQ([2.50])dnl
107 # expand $ac_aux_dir to an absolute path
108 am_aux_dir=`cd $ac_aux_dir && pwd`
109 ])
110
111 # AM_CONDITIONAL -*- Autoconf -*-
112
113 # Copyright (C) 1997-2013 Free Software Foundation, Inc.
114 #
115 # This file is free software; the Free Software Foundation
116 # gives unlimited permission to copy and/or distribute it,
117 # with or without modifications, as long as this notice is preserved.
118
119 # AM_CONDITIONAL(NAME, SHELL-CONDITION)
120 # -------------------------------------
121 # Define a conditional.
122 AC_DEFUN([AM_CONDITIONAL],
123 [AC_PREREQ([2.52])dnl
124 m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
125 [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
126 AC_SUBST([$1_TRUE])dnl
127 AC_SUBST([$1_FALSE])dnl
128 _AM_SUBST_NOTMAKE([$1_TRUE])dnl
129 _AM_SUBST_NOTMAKE([$1_FALSE])dnl
130 m4_define([_AM_COND_VALUE_$1], [$2])dnl
131 if $2; then
132 $1_TRUE=
133 $1_FALSE='#'
134 else
135 $1_TRUE='#'
136 $1_FALSE=
137 fi
138 AC_CONFIG_COMMANDS_PRE(
139 [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
140 AC_MSG_ERROR([[conditional "$1" was never defined.
141 Usually this means the macro was only invoked conditionally.]])
142 fi])])
143
144 # Copyright (C) 1999-2013 Free Software Foundation, Inc.
145 #
146 # This file is free software; the Free Software Foundation
147 # gives unlimited permission to copy and/or distribute it,
148 # with or without modifications, as long as this notice is preserved.
149
150
151 # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
152 # written in clear, in which case automake, when reading aclocal.m4,
153 # will think it sees a *use*, and therefore will trigger all it's
154 # C support machinery. Also note that it means that autoscan, seeing
155 # CC etc. in the Makefile, will ask for an AC_PROG_CC use...
156
157
158 # _AM_DEPENDENCIES(NAME)
159 # ----------------------
160 # See how the compiler implements dependency checking.
161 # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
162 # We try a few techniques and use that to set a single cache variable.
163 #
164 # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
165 # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
166 # dependency, and given that the user is not expected to run this macro,
167 # just rely on AC_PROG_CC.
168 AC_DEFUN([_AM_DEPENDENCIES],
169 [AC_REQUIRE([AM_SET_DEPDIR])dnl
170 AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
171 AC_REQUIRE([AM_MAKE_INCLUDE])dnl
172 AC_REQUIRE([AM_DEP_TRACK])dnl
173
174 m4_if([$1], [CC], [depcc="$CC" am_compiler_list=],
175 [$1], [CXX], [depcc="$CXX" am_compiler_list=],
176 [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
177 [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
178 [$1], [UPC], [depcc="$UPC" am_compiler_list=],
179 [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
180 [depcc="$$1" am_compiler_list=])
181
182 AC_CACHE_CHECK([dependency style of $depcc],
183 [am_cv_$1_dependencies_compiler_type],
184 [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
185 # We make a subdir and do the tests there. Otherwise we can end up
186 # making bogus files that we don't know about and never remove. For
187 # instance it was reported that on HP-UX the gcc test will end up
188 # making a dummy file named 'D' -- because '-MD' means "put the output
189 # in D".
190 rm -rf conftest.dir
191 mkdir conftest.dir
192 # Copy depcomp to subdir because otherwise we won't find it if we're
193 # using a relative directory.
194 cp "$am_depcomp" conftest.dir
195 cd conftest.dir
196 # We will build objects and dependencies in a subdirectory because
197 # it helps to detect inapplicable dependency modes. For instance
198 # both Tru64's cc and ICC support -MD to output dependencies as a
199 # side effect of compilation, but ICC will put the dependencies in
200 # the current directory while Tru64 will put them in the object
201 # directory.
202 mkdir sub
203
204 am_cv_$1_dependencies_compiler_type=none
205 if test "$am_compiler_list" = ""; then
206 am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
207 fi
208 am__universal=false
209 m4_case([$1], [CC],
210 [case " $depcc " in #(
211 *\ -arch\ *\ -arch\ *) am__universal=true ;;
212 esac],
213 [CXX],
214 [case " $depcc " in #(
215 *\ -arch\ *\ -arch\ *) am__universal=true ;;
216 esac])
217
218 for depmode in $am_compiler_list; do
219 # Setup a source with many dependencies, because some compilers
220 # like to wrap large dependency lists on column 80 (with \), and
221 # we should not choose a depcomp mode which is confused by this.
222 #
223 # We need to recreate these files for each test, as the compiler may
224 # overwrite some of them when testing with obscure command lines.
225 # This happens at least with the AIX C compiler.
226 : > sub/conftest.c
227 for i in 1 2 3 4 5 6; do
228 echo '#include "conftst'$i'.h"' >> sub/conftest.c
229 # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
230 # Solaris 10 /bin/sh.
231 echo '/* dummy */' > sub/conftst$i.h
232 done
233 echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
234
235 # We check with '-c' and '-o' for the sake of the "dashmstdout"
236 # mode. It turns out that the SunPro C++ compiler does not properly
237 # handle '-M -o', and we need to detect this. Also, some Intel
238 # versions had trouble with output in subdirs.
239 am__obj=sub/conftest.${OBJEXT-o}
240 am__minus_obj="-o $am__obj"
241 case $depmode in
242 gcc)
243 # This depmode causes a compiler race in universal mode.
244 test "$am__universal" = false || continue
245 ;;
246 nosideeffect)
247 # After this tag, mechanisms are not by side-effect, so they'll
248 # only be used when explicitly requested.
249 if test "x$enable_dependency_tracking" = xyes; then
250 continue
251 else
252 break
253 fi
254 ;;
255 msvc7 | msvc7msys | msvisualcpp | msvcmsys)
256 # This compiler won't grok '-c -o', but also, the minuso test has
257 # not run yet. These depmodes are late enough in the game, and
258 # so weak that their functioning should not be impacted.
259 am__obj=conftest.${OBJEXT-o}
260 am__minus_obj=
261 ;;
262 none) break ;;
263 esac
264 if depmode=$depmode \
265 source=sub/conftest.c object=$am__obj \
266 depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
267 $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
268 >/dev/null 2>conftest.err &&
269 grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
270 grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
271 grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
272 ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
273 # icc doesn't choke on unknown options, it will just issue warnings
274 # or remarks (even with -Werror). So we grep stderr for any message
275 # that says an option was ignored or not supported.
276 # When given -MP, icc 7.0 and 7.1 complain thusly:
277 # icc: Command line warning: ignoring option '-M'; no argument required
278 # The diagnosis changed in icc 8.0:
279 # icc: Command line remark: option '-MP' not supported
280 if (grep 'ignoring option' conftest.err ||
281 grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
282 am_cv_$1_dependencies_compiler_type=$depmode
283 break
284 fi
285 fi
286 done
287
288 cd ..
289 rm -rf conftest.dir
290 else
291 am_cv_$1_dependencies_compiler_type=none
292 fi
293 ])
294 AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
295 AM_CONDITIONAL([am__fastdep$1], [
296 test "x$enable_dependency_tracking" != xno \
297 && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
298 ])
299
300
301 # AM_SET_DEPDIR
302 # -------------
303 # Choose a directory name for dependency files.
304 # This macro is AC_REQUIREd in _AM_DEPENDENCIES.
305 AC_DEFUN([AM_SET_DEPDIR],
306 [AC_REQUIRE([AM_SET_LEADING_DOT])dnl
307 AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
308 ])
309
310
311 # AM_DEP_TRACK
312 # ------------
313 AC_DEFUN([AM_DEP_TRACK],
314 [AC_ARG_ENABLE([dependency-tracking], [dnl
315 AS_HELP_STRING(
316 [--enable-dependency-tracking],
317 [do not reject slow dependency extractors])
318 AS_HELP_STRING(
319 [--disable-dependency-tracking],
320 [speeds up one-time build])])
321 if test "x$enable_dependency_tracking" != xno; then
322 am_depcomp="$ac_aux_dir/depcomp"
323 AMDEPBACKSLASH='\'
324 am__nodep='_no'
325 fi
326 AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
327 AC_SUBST([AMDEPBACKSLASH])dnl
328 _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
329 AC_SUBST([am__nodep])dnl
330 _AM_SUBST_NOTMAKE([am__nodep])dnl
331 ])
332
333 # Generate code to set up dependency tracking. -*- Autoconf -*-
334
335 # Copyright (C) 1999-2013 Free Software Foundation, Inc.
336 #
337 # This file is free software; the Free Software Foundation
338 # gives unlimited permission to copy and/or distribute it,
339 # with or without modifications, as long as this notice is preserved.
340
341
342 # _AM_OUTPUT_DEPENDENCY_COMMANDS
343 # ------------------------------
344 AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
345 [{
346 # Older Autoconf quotes --file arguments for eval, but not when files
347 # are listed without --file. Let's play safe and only enable the eval
348 # if we detect the quoting.
349 case $CONFIG_FILES in
350 *\'*) eval set x "$CONFIG_FILES" ;;
351 *) set x $CONFIG_FILES ;;
352 esac
353 shift
354 for mf
355 do
356 # Strip MF so we end up with the name of the file.
357 mf=`echo "$mf" | sed -e 's/:.*$//'`
358 # Check whether this is an Automake generated Makefile or not.
359 # We used to match only the files named 'Makefile.in', but
360 # some people rename them; so instead we look at the file content.
361 # Grep'ing the first line is not enough: some people post-process
362 # each Makefile.in and add a new line on top of each file to say so.
363 # Grep'ing the whole file is not good either: AIX grep has a line
364 # limit of 2048, but all sed's we know have understand at least 4000.
365 if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
366 dirpart=`AS_DIRNAME("$mf")`
367 else
368 continue
369 fi
370 # Extract the definition of DEPDIR, am__include, and am__quote
371 # from the Makefile without running 'make'.
372 DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
373 test -z "$DEPDIR" && continue
374 am__include=`sed -n 's/^am__include = //p' < "$mf"`
375 test -z "am__include" && continue
376 am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
377 # Find all dependency output files, they are included files with
378 # $(DEPDIR) in their names. We invoke sed twice because it is the
379 # simplest approach to changing $(DEPDIR) to its actual value in the
380 # expansion.
381 for file in `sed -n "
382 s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
383 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
384 # Make sure the directory exists.
385 test -f "$dirpart/$file" && continue
386 fdir=`AS_DIRNAME(["$file"])`
387 AS_MKDIR_P([$dirpart/$fdir])
388 # echo "creating $dirpart/$file"
389 echo '# dummy' > "$dirpart/$file"
390 done
391 done
392 }
393 ])# _AM_OUTPUT_DEPENDENCY_COMMANDS
394
395
396 # AM_OUTPUT_DEPENDENCY_COMMANDS
397 # -----------------------------
398 # This macro should only be invoked once -- use via AC_REQUIRE.
399 #
400 # This code is only required when automatic dependency tracking
401 # is enabled. FIXME. This creates each '.P' file that we will
402 # need in order to bootstrap the dependency handling code.
403 AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
404 [AC_CONFIG_COMMANDS([depfiles],
405 [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
406 [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
407 ])
408
409 # Do all the work for Automake. -*- Autoconf -*-
410
411 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
412 #
413 # This file is free software; the Free Software Foundation
414 # gives unlimited permission to copy and/or distribute it,
415 # with or without modifications, as long as this notice is preserved.
416
417 # This macro actually does too much. Some checks are only needed if
418 # your package does certain things. But this isn't really a big deal.
419
420 # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
421 # AM_INIT_AUTOMAKE([OPTIONS])
422 # -----------------------------------------------
423 # The call with PACKAGE and VERSION arguments is the old style
424 # call (pre autoconf-2.50), which is being phased out. PACKAGE
425 # and VERSION should now be passed to AC_INIT and removed from
426 # the call to AM_INIT_AUTOMAKE.
427 # We support both call styles for the transition. After
428 # the next Automake release, Autoconf can make the AC_INIT
429 # arguments mandatory, and then we can depend on a new Autoconf
430 # release and drop the old call support.
431 AC_DEFUN([AM_INIT_AUTOMAKE],
432 [AC_PREREQ([2.65])dnl
433 dnl Autoconf wants to disallow AM_ names. We explicitly allow
434 dnl the ones we care about.
435 m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
436 AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
437 AC_REQUIRE([AC_PROG_INSTALL])dnl
438 if test "`cd $srcdir && pwd`" != "`pwd`"; then
439 # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
440 # is not polluted with repeated "-I."
441 AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
442 # test to see if srcdir already configured
443 if test -f $srcdir/config.status; then
444 AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
445 fi
446 fi
447
448 # test whether we have cygpath
449 if test -z "$CYGPATH_W"; then
450 if (cygpath --version) >/dev/null 2>/dev/null; then
451 CYGPATH_W='cygpath -w'
452 else
453 CYGPATH_W=echo
454 fi
455 fi
456 AC_SUBST([CYGPATH_W])
457
458 # Define the identity of the package.
459 dnl Distinguish between old-style and new-style calls.
460 m4_ifval([$2],
461 [AC_DIAGNOSE([obsolete],
462 [$0: two- and three-arguments forms are deprecated.])
463 m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
464 AC_SUBST([PACKAGE], [$1])dnl
465 AC_SUBST([VERSION], [$2])],
466 [_AM_SET_OPTIONS([$1])dnl
467 dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
468 m4_if(
469 m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
470 [ok:ok],,
471 [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
472 AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
473 AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
474
475 _AM_IF_OPTION([no-define],,
476 [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
477 AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
478
479 # Some tools Automake needs.
480 AC_REQUIRE([AM_SANITY_CHECK])dnl
481 AC_REQUIRE([AC_ARG_PROGRAM])dnl
482 AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
483 AM_MISSING_PROG([AUTOCONF], [autoconf])
484 AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
485 AM_MISSING_PROG([AUTOHEADER], [autoheader])
486 AM_MISSING_PROG([MAKEINFO], [makeinfo])
487 AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
488 AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
489 AC_REQUIRE([AC_PROG_MKDIR_P])dnl
490 # For better backward compatibility. To be removed once Automake 1.9.x
491 # dies out for good. For more background, see:
492 # <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
493 # <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
494 AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
495 # We need awk for the "check" target. The system "awk" is bad on
496 # some platforms.
497 AC_REQUIRE([AC_PROG_AWK])dnl
498 AC_REQUIRE([AC_PROG_MAKE_SET])dnl
499 AC_REQUIRE([AM_SET_LEADING_DOT])dnl
500 _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
501 [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
502 [_AM_PROG_TAR([v7])])])
503 _AM_IF_OPTION([no-dependencies],,
504 [AC_PROVIDE_IFELSE([AC_PROG_CC],
505 [_AM_DEPENDENCIES([CC])],
506 [m4_define([AC_PROG_CC],
507 m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
508 AC_PROVIDE_IFELSE([AC_PROG_CXX],
509 [_AM_DEPENDENCIES([CXX])],
510 [m4_define([AC_PROG_CXX],
511 m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
512 AC_PROVIDE_IFELSE([AC_PROG_OBJC],
513 [_AM_DEPENDENCIES([OBJC])],
514 [m4_define([AC_PROG_OBJC],
515 m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
516 AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
517 [_AM_DEPENDENCIES([OBJCXX])],
518 [m4_define([AC_PROG_OBJCXX],
519 m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
520 ])
521 AC_REQUIRE([AM_SILENT_RULES])dnl
522 dnl The testsuite driver may need to know about EXEEXT, so add the
523 dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This
524 dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
525 AC_CONFIG_COMMANDS_PRE(dnl
526 [m4_provide_if([_AM_COMPILER_EXEEXT],
527 [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
528 ])
529
530 dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
531 dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
532 dnl mangled by Autoconf and run in a shell conditional statement.
533 m4_define([_AC_COMPILER_EXEEXT],
534 m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
535
536
537 # When config.status generates a header, we must update the stamp-h file.
538 # This file resides in the same directory as the config header
539 # that is generated. The stamp files are numbered to have different names.
540
541 # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
542 # loop where config.status creates the headers, so we can generate
543 # our stamp files there.
544 AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
545 [# Compute $1's index in $config_headers.
546 _am_arg=$1
547 _am_stamp_count=1
548 for _am_header in $config_headers :; do
549 case $_am_header in
550 $_am_arg | $_am_arg:* )
551 break ;;
552 * )
553 _am_stamp_count=`expr $_am_stamp_count + 1` ;;
554 esac
555 done
556 echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
557
558 # Copyright (C) 2001-2013 Free Software Foundation, Inc.
559 #
560 # This file is free software; the Free Software Foundation
561 # gives unlimited permission to copy and/or distribute it,
562 # with or without modifications, as long as this notice is preserved.
563
564 # AM_PROG_INSTALL_SH
565 # ------------------
566 # Define $install_sh.
567 AC_DEFUN([AM_PROG_INSTALL_SH],
568 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
569 if test x"${install_sh}" != xset; then
570 case $am_aux_dir in
571 *\ * | *\ *)
572 install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
573 *)
574 install_sh="\${SHELL} $am_aux_dir/install-sh"
575 esac
576 fi
577 AC_SUBST([install_sh])])
578
579 # Copyright (C) 2003-2013 Free Software Foundation, Inc.
580 #
581 # This file is free software; the Free Software Foundation
582 # gives unlimited permission to copy and/or distribute it,
583 # with or without modifications, as long as this notice is preserved.
584
585 # Check whether the underlying file-system supports filenames
586 # with a leading dot. For instance MS-DOS doesn't.
587 AC_DEFUN([AM_SET_LEADING_DOT],
588 [rm -rf .tst 2>/dev/null
589 mkdir .tst 2>/dev/null
590 if test -d .tst; then
591 am__leading_dot=.
592 else
593 am__leading_dot=_
594 fi
595 rmdir .tst 2>/dev/null
596 AC_SUBST([am__leading_dot])])
597
598 # Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
599 # From Jim Meyering
600
601 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
602 #
603 # This file is free software; the Free Software Foundation
604 # gives unlimited permission to copy and/or distribute it,
605 # with or without modifications, as long as this notice is preserved.
606
607 # AM_MAINTAINER_MODE([DEFAULT-MODE])
608 # ----------------------------------
609 # Control maintainer-specific portions of Makefiles.
610 # Default is to disable them, unless 'enable' is passed literally.
611 # For symmetry, 'disable' may be passed as well. Anyway, the user
612 # can override the default with the --enable/--disable switch.
613 AC_DEFUN([AM_MAINTAINER_MODE],
614 [m4_case(m4_default([$1], [disable]),
615 [enable], [m4_define([am_maintainer_other], [disable])],
616 [disable], [m4_define([am_maintainer_other], [enable])],
617 [m4_define([am_maintainer_other], [enable])
618 m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
619 AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
620 dnl maintainer-mode's default is 'disable' unless 'enable' is passed
621 AC_ARG_ENABLE([maintainer-mode],
622 [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
623 am_maintainer_other[ make rules and dependencies not useful
624 (and sometimes confusing) to the casual installer])],
625 [USE_MAINTAINER_MODE=$enableval],
626 [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
627 AC_MSG_RESULT([$USE_MAINTAINER_MODE])
628 AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
629 MAINT=$MAINTAINER_MODE_TRUE
630 AC_SUBST([MAINT])dnl
631 ]
632 )
633
634 # Check to see how 'make' treats includes. -*- Autoconf -*-
635
636 # Copyright (C) 2001-2013 Free Software Foundation, Inc.
637 #
638 # This file is free software; the Free Software Foundation
639 # gives unlimited permission to copy and/or distribute it,
640 # with or without modifications, as long as this notice is preserved.
641
642 # AM_MAKE_INCLUDE()
643 # -----------------
644 # Check to see how make treats includes.
645 AC_DEFUN([AM_MAKE_INCLUDE],
646 [am_make=${MAKE-make}
647 cat > confinc << 'END'
648 am__doit:
649 @echo this is the am__doit target
650 .PHONY: am__doit
651 END
652 # If we don't find an include directive, just comment out the code.
653 AC_MSG_CHECKING([for style of include used by $am_make])
654 am__include="#"
655 am__quote=
656 _am_result=none
657 # First try GNU make style include.
658 echo "include confinc" > confmf
659 # Ignore all kinds of additional output from 'make'.
660 case `$am_make -s -f confmf 2> /dev/null` in #(
661 *the\ am__doit\ target*)
662 am__include=include
663 am__quote=
664 _am_result=GNU
665 ;;
666 esac
667 # Now try BSD make style include.
668 if test "$am__include" = "#"; then
669 echo '.include "confinc"' > confmf
670 case `$am_make -s -f confmf 2> /dev/null` in #(
671 *the\ am__doit\ target*)
672 am__include=.include
673 am__quote="\""
674 _am_result=BSD
675 ;;
676 esac
677 fi
678 AC_SUBST([am__include])
679 AC_SUBST([am__quote])
680 AC_MSG_RESULT([$_am_result])
681 rm -f confinc confmf
682 ])
683
684 # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
685
686 # Copyright (C) 1997-2013 Free Software Foundation, Inc.
687 #
688 # This file is free software; the Free Software Foundation
689 # gives unlimited permission to copy and/or distribute it,
690 # with or without modifications, as long as this notice is preserved.
691
692 # AM_MISSING_PROG(NAME, PROGRAM)
693 # ------------------------------
694 AC_DEFUN([AM_MISSING_PROG],
695 [AC_REQUIRE([AM_MISSING_HAS_RUN])
696 $1=${$1-"${am_missing_run}$2"}
697 AC_SUBST($1)])
698
699 # AM_MISSING_HAS_RUN
700 # ------------------
701 # Define MISSING if not defined so far and test if it is modern enough.
702 # If it is, set am_missing_run to use it, otherwise, to nothing.
703 AC_DEFUN([AM_MISSING_HAS_RUN],
704 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
705 AC_REQUIRE_AUX_FILE([missing])dnl
706 if test x"${MISSING+set}" != xset; then
707 case $am_aux_dir in
708 *\ * | *\ *)
709 MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
710 *)
711 MISSING="\${SHELL} $am_aux_dir/missing" ;;
712 esac
713 fi
714 # Use eval to expand $SHELL
715 if eval "$MISSING --is-lightweight"; then
716 am_missing_run="$MISSING "
717 else
718 am_missing_run=
719 AC_MSG_WARN(['missing' script is too old or missing])
720 fi
721 ])
722
723 # Helper functions for option handling. -*- Autoconf -*-
724
725 # Copyright (C) 2001-2013 Free Software Foundation, Inc.
726 #
727 # This file is free software; the Free Software Foundation
728 # gives unlimited permission to copy and/or distribute it,
729 # with or without modifications, as long as this notice is preserved.
730
731 # _AM_MANGLE_OPTION(NAME)
732 # -----------------------
733 AC_DEFUN([_AM_MANGLE_OPTION],
734 [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
735
736 # _AM_SET_OPTION(NAME)
737 # --------------------
738 # Set option NAME. Presently that only means defining a flag for this option.
739 AC_DEFUN([_AM_SET_OPTION],
740 [m4_define(_AM_MANGLE_OPTION([$1]), [1])])
741
742 # _AM_SET_OPTIONS(OPTIONS)
743 # ------------------------
744 # OPTIONS is a space-separated list of Automake options.
745 AC_DEFUN([_AM_SET_OPTIONS],
746 [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
747
748 # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
749 # -------------------------------------------
750 # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
751 AC_DEFUN([_AM_IF_OPTION],
752 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
753
754 # Check to make sure that the build environment is sane. -*- Autoconf -*-
755
756 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
757 #
758 # This file is free software; the Free Software Foundation
759 # gives unlimited permission to copy and/or distribute it,
760 # with or without modifications, as long as this notice is preserved.
761
762 # AM_SANITY_CHECK
763 # ---------------
764 AC_DEFUN([AM_SANITY_CHECK],
765 [AC_MSG_CHECKING([whether build environment is sane])
766 # Reject unsafe characters in $srcdir or the absolute working directory
767 # name. Accept space and tab only in the latter.
768 am_lf='
769 '
770 case `pwd` in
771 *[[\\\"\#\$\&\'\`$am_lf]]*)
772 AC_MSG_ERROR([unsafe absolute working directory name]);;
773 esac
774 case $srcdir in
775 *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
776 AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
777 esac
778
779 # Do 'set' in a subshell so we don't clobber the current shell's
780 # arguments. Must try -L first in case configure is actually a
781 # symlink; some systems play weird games with the mod time of symlinks
782 # (eg FreeBSD returns the mod time of the symlink's containing
783 # directory).
784 if (
785 am_has_slept=no
786 for am_try in 1 2; do
787 echo "timestamp, slept: $am_has_slept" > conftest.file
788 set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
789 if test "$[*]" = "X"; then
790 # -L didn't work.
791 set X `ls -t "$srcdir/configure" conftest.file`
792 fi
793 if test "$[*]" != "X $srcdir/configure conftest.file" \
794 && test "$[*]" != "X conftest.file $srcdir/configure"; then
795
796 # If neither matched, then we have a broken ls. This can happen
797 # if, for instance, CONFIG_SHELL is bash and it inherits a
798 # broken ls alias from the environment. This has actually
799 # happened. Such a system could not be considered "sane".
800 AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
801 alias in your environment])
802 fi
803 if test "$[2]" = conftest.file || test $am_try -eq 2; then
804 break
805 fi
806 # Just in case.
807 sleep 1
808 am_has_slept=yes
809 done
810 test "$[2]" = conftest.file
811 )
812 then
813 # Ok.
814 :
815 else
816 AC_MSG_ERROR([newly created file is older than distributed files!
817 Check your system clock])
818 fi
819 AC_MSG_RESULT([yes])
820 # If we didn't sleep, we still need to ensure time stamps of config.status and
821 # generated files are strictly newer.
822 am_sleep_pid=
823 if grep 'slept: no' conftest.file >/dev/null 2>&1; then
824 ( sleep 1 ) &
825 am_sleep_pid=$!
826 fi
827 AC_CONFIG_COMMANDS_PRE(
828 [AC_MSG_CHECKING([that generated files are newer than configure])
829 if test -n "$am_sleep_pid"; then
830 # Hide warnings about reused PIDs.
831 wait $am_sleep_pid 2>/dev/null
832 fi
833 AC_MSG_RESULT([done])])
834 rm -f conftest.file
835 ])
836
837 # Copyright (C) 2009-2013 Free Software Foundation, Inc.
838 #
839 # This file is free software; the Free Software Foundation
840 # gives unlimited permission to copy and/or distribute it,
841 # with or without modifications, as long as this notice is preserved.
842
843 # AM_SILENT_RULES([DEFAULT])
844 # --------------------------
845 # Enable less verbose build rules; with the default set to DEFAULT
846 # ("yes" being less verbose, "no" or empty being verbose).
847 AC_DEFUN([AM_SILENT_RULES],
848 [AC_ARG_ENABLE([silent-rules], [dnl
849 AS_HELP_STRING(
850 [--enable-silent-rules],
851 [less verbose build output (undo: "make V=1")])
852 AS_HELP_STRING(
853 [--disable-silent-rules],
854 [verbose build output (undo: "make V=0")])dnl
855 ])
856 case $enable_silent_rules in @%:@ (((
857 yes) AM_DEFAULT_VERBOSITY=0;;
858 no) AM_DEFAULT_VERBOSITY=1;;
859 *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
860 esac
861 dnl
862 dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
863 dnl do not support nested variable expansions.
864 dnl See automake bug#9928 and bug#10237.
865 am_make=${MAKE-make}
866 AC_CACHE_CHECK([whether $am_make supports nested variables],
867 [am_cv_make_support_nested_variables],
868 [if AS_ECHO([['TRUE=$(BAR$(V))
869 BAR0=false
870 BAR1=true
871 V=1
872 am__doit:
873 @$(TRUE)
874 .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
875 am_cv_make_support_nested_variables=yes
876 else
877 am_cv_make_support_nested_variables=no
878 fi])
879 if test $am_cv_make_support_nested_variables = yes; then
880 dnl Using '$V' instead of '$(V)' breaks IRIX make.
881 AM_V='$(V)'
882 AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
883 else
884 AM_V=$AM_DEFAULT_VERBOSITY
885 AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
886 fi
887 AC_SUBST([AM_V])dnl
888 AM_SUBST_NOTMAKE([AM_V])dnl
889 AC_SUBST([AM_DEFAULT_V])dnl
890 AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
891 AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
892 AM_BACKSLASH='\'
893 AC_SUBST([AM_BACKSLASH])dnl
894 _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
895 ])
896
897 # Copyright (C) 2001-2013 Free Software Foundation, Inc.
898 #
899 # This file is free software; the Free Software Foundation
900 # gives unlimited permission to copy and/or distribute it,
901 # with or without modifications, as long as this notice is preserved.
902
903 # AM_PROG_INSTALL_STRIP
904 # ---------------------
905 # One issue with vendor 'install' (even GNU) is that you can't
906 # specify the program used to strip binaries. This is especially
907 # annoying in cross-compiling environments, where the build's strip
908 # is unlikely to handle the host's binaries.
909 # Fortunately install-sh will honor a STRIPPROG variable, so we
910 # always use install-sh in "make install-strip", and initialize
911 # STRIPPROG with the value of the STRIP variable (set by the user).
912 AC_DEFUN([AM_PROG_INSTALL_STRIP],
913 [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
914 # Installed binaries are usually stripped using 'strip' when the user
915 # run "make install-strip". However 'strip' might not be the right
916 # tool to use in cross-compilation environments, therefore Automake
917 # will honor the 'STRIP' environment variable to overrule this program.
918 dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
919 if test "$cross_compiling" != no; then
920 AC_CHECK_TOOL([STRIP], [strip], :)
921 fi
922 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
923 AC_SUBST([INSTALL_STRIP_PROGRAM])])
924
925 # Copyright (C) 2006-2013 Free Software Foundation, Inc.
926 #
927 # This file is free software; the Free Software Foundation
928 # gives unlimited permission to copy and/or distribute it,
929 # with or without modifications, as long as this notice is preserved.
930
931 # _AM_SUBST_NOTMAKE(VARIABLE)
932 # ---------------------------
933 # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
934 # This macro is traced by Automake.
935 AC_DEFUN([_AM_SUBST_NOTMAKE])
936
937 # AM_SUBST_NOTMAKE(VARIABLE)
938 # --------------------------
939 # Public sister of _AM_SUBST_NOTMAKE.
940 AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
941
942 # Check how to create a tarball. -*- Autoconf -*-
943
944 # Copyright (C) 2004-2013 Free Software Foundation, Inc.
945 #
946 # This file is free software; the Free Software Foundation
947 # gives unlimited permission to copy and/or distribute it,
948 # with or without modifications, as long as this notice is preserved.
949
950 # _AM_PROG_TAR(FORMAT)
951 # --------------------
952 # Check how to create a tarball in format FORMAT.
953 # FORMAT should be one of 'v7', 'ustar', or 'pax'.
954 #
955 # Substitute a variable $(am__tar) that is a command
956 # writing to stdout a FORMAT-tarball containing the directory
957 # $tardir.
958 # tardir=directory && $(am__tar) > result.tar
959 #
960 # Substitute a variable $(am__untar) that extract such
961 # a tarball read from stdin.
962 # $(am__untar) < result.tar
963 AC_DEFUN([_AM_PROG_TAR],
964 [# Always define AMTAR for backward compatibility. Yes, it's still used
965 # in the wild :-( We should find a proper way to deprecate it ...
966 AC_SUBST([AMTAR], ['$${TAR-tar}'])
967 m4_if([$1], [v7],
968 [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
969 [m4_case([$1], [ustar],, [pax],,
970 [m4_fatal([Unknown tar format])])
971 AC_MSG_CHECKING([how to create a $1 tar archive])
972 # Loop over all known methods to create a tar archive until one works.
973 _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
974 _am_tools=${am_cv_prog_tar_$1-$_am_tools}
975 # Do not fold the above two line into one, because Tru64 sh and
976 # Solaris sh will not grok spaces in the rhs of '-'.
977 for _am_tool in $_am_tools
978 do
979 case $_am_tool in
980 gnutar)
981 for _am_tar in tar gnutar gtar;
982 do
983 AM_RUN_LOG([$_am_tar --version]) && break
984 done
985 am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
986 am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
987 am__untar="$_am_tar -xf -"
988 ;;
989 plaintar)
990 # Must skip GNU tar: if it does not support --format= it doesn't create
991 # ustar tarball either.
992 (tar --version) >/dev/null 2>&1 && continue
993 am__tar='tar chf - "$$tardir"'
994 am__tar_='tar chf - "$tardir"'
995 am__untar='tar xf -'
996 ;;
997 pax)
998 am__tar='pax -L -x $1 -w "$$tardir"'
999 am__tar_='pax -L -x $1 -w "$tardir"'
1000 am__untar='pax -r'
1001 ;;
1002 cpio)
1003 am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
1004 am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
1005 am__untar='cpio -i -H $1 -d'
1006 ;;
1007 none)
1008 am__tar=false
1009 am__tar_=false
1010 am__untar=false
1011 ;;
1012 esac
1013
1014 # If the value was cached, stop now. We just wanted to have am__tar
1015 # and am__untar set.
1016 test -n "${am_cv_prog_tar_$1}" && break
1017
1018 # tar/untar a dummy directory, and stop if the command works
1019 rm -rf conftest.dir
1020 mkdir conftest.dir
1021 echo GrepMe > conftest.dir/file
1022 AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
1023 rm -rf conftest.dir
1024 if test -s conftest.tar; then
1025 AM_RUN_LOG([$am__untar <conftest.tar])
1026 grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
1027 fi
1028 done
1029 rm -rf conftest.dir
1030
1031 AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
1032 AC_MSG_RESULT([$am_cv_prog_tar_$1])])
1033 AC_SUBST([am__tar])
1034 AC_SUBST([am__untar])
1035 ]) # _AM_PROG_TAR
1036
1037 m4_include([../../m4/kpse-common.m4])
1038 m4_include([../../m4/kpse-freetype2-flags.m4])
1039 m4_include([../../m4/kpse-libpng-flags.m4])
1040 m4_include([../../m4/kpse-warnings.m4])
1041 m4_include([../../m4/kpse-zlib-flags.m4])
1042 m4_include([../../m4/libtool.m4])
1043 m4_include([../../m4/ltoptions.m4])
1044 m4_include([../../m4/ltsugar.m4])
1045 m4_include([../../m4/ltversion.m4])
1046 m4_include([../../m4/lt~obsolete.m4])
0 /* config.hin. Generated from configure.ac by autoheader. */
1
2 /* Define to 1 if you have the <dlfcn.h> header file. */
3 #undef HAVE_DLFCN_H
4
5 /* Define to 1 if you have the <errno.h> header file. */
6 #undef HAVE_ERRNO_H
7
8 /* Define to 1 if you have the <ft2build.h> header file. */
9 #undef HAVE_FT2BUILD_H
10
11 /* Define to 1 if you have the <inttypes.h> header file. */
12 #undef HAVE_INTTYPES_H
13
14 /* Define if you have the freetype library. */
15 #undef HAVE_LIBFREETYPE
16
17 /* Define if you have the png library. */
18 #undef HAVE_LIBPNG
19
20 /* Define if you have zlib. */
21 #undef HAVE_LIBZ
22
23 /* Define to 1 if you have the <limits.h> header file. */
24 #undef HAVE_LIMITS_H
25
26 /* Define to 1 if you have the <memory.h> header file. */
27 #undef HAVE_MEMORY_H
28
29 /* Define to 1 if you have the <png.h> header file. */
30 #undef HAVE_PNG_H
31
32 /* Define to 1 if you have the <stddef.h> header file. */
33 #undef HAVE_STDDEF_H
34
35 /* Define to 1 if you have the <stdint.h> header file. */
36 #undef HAVE_STDINT_H
37
38 /* Define to 1 if you have the <stdlib.h> header file. */
39 #undef HAVE_STDLIB_H
40
41 /* Define to 1 if you have the <strings.h> header file. */
42 #undef HAVE_STRINGS_H
43
44 /* Define to 1 if you have the <string.h> header file. */
45 #undef HAVE_STRING_H
46
47 /* Define to 1 if you have the <sys/stat.h> header file. */
48 #undef HAVE_SYS_STAT_H
49
50 /* Define to 1 if you have the <sys/types.h> header file. */
51 #undef HAVE_SYS_TYPES_H
52
53 /* Define to 1 if you have the <unistd.h> header file. */
54 #undef HAVE_UNISTD_H
55
56 /* Define to 1 if you have the <zlib.h> header file. */
57 #undef HAVE_ZLIB_H
58
59 /* Define to the sub-directory in which libtool stores uninstalled libraries.
60 */
61 #undef LT_OBJDIR
62
63 /* Name of package */
64 #undef PACKAGE
65
66 /* Define to the address where bug reports for this package should be sent. */
67 #undef PACKAGE_BUGREPORT
68
69 /* Define to the full name of this package. */
70 #undef PACKAGE_NAME
71
72 /* Define to the full name and version of this package. */
73 #undef PACKAGE_STRING
74
75 /* Define to the one symbol short name of this package. */
76 #undef PACKAGE_TARNAME
77
78 /* Define to the home page for this package. */
79 #undef PACKAGE_URL
80
81 /* Define to the version of this package. */
82 #undef PACKAGE_VERSION
83
84 /* Define to 1 if you have the ANSI C header files. */
85 #undef STDC_HEADERS
86
87 /* Define to 1 if your <sys/time.h> declares `struct tm'. */
88 #undef TM_IN_SYS_TIME
89
90 /* Version number of package */
91 #undef VERSION
92
93 /* Define to empty if `const' does not conform to ANSI C. */
94 #undef const
95
96 /* Define to `unsigned int' if <sys/types.h> does not define. */
97 #undef size_t
0 #! /bin/sh
1 # Guess values for system-dependent variables and create Makefiles.
2 # Generated by GNU Autoconf 2.69 for gd for TeX Live 2.0.35.
3 #
4 # Report bugs to <tex-k@tug.org>.
5 #
6 #
7 # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
8 #
9 #
10 # This configure script is free software; the Free Software Foundation
11 # gives unlimited permission to copy, distribute and modify it.
12 ## -------------------- ##
13 ## M4sh Initialization. ##
14 ## -------------------- ##
15
16 # Be more Bourne compatible
17 DUALCASE=1; export DUALCASE # for MKS sh
18 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
19 emulate sh
20 NULLCMD=:
21 # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
22 # is contrary to our usage. Disable this feature.
23 alias -g '${1+"$@"}'='"$@"'
24 setopt NO_GLOB_SUBST
25 else
26 case `(set -o) 2>/dev/null` in #(
27 *posix*) :
28 set -o posix ;; #(
29 *) :
30 ;;
31 esac
32 fi
33
34
35 as_nl='
36 '
37 export as_nl
38 # Printing a long string crashes Solaris 7 /usr/bin/printf.
39 as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
40 as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
41 as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
42 # Prefer a ksh shell builtin over an external printf program on Solaris,
43 # but without wasting forks for bash or zsh.
44 if test -z "$BASH_VERSION$ZSH_VERSION" \
45 && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
46 as_echo='print -r --'
47 as_echo_n='print -rn --'
48 elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
49 as_echo='printf %s\n'
50 as_echo_n='printf %s'
51 else
52 if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
53 as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
54 as_echo_n='/usr/ucb/echo -n'
55 else
56 as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
57 as_echo_n_body='eval
58 arg=$1;
59 case $arg in #(
60 *"$as_nl"*)
61 expr "X$arg" : "X\\(.*\\)$as_nl";
62 arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
63 esac;
64 expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
65 '
66 export as_echo_n_body
67 as_echo_n='sh -c $as_echo_n_body as_echo'
68 fi
69 export as_echo_body
70 as_echo='sh -c $as_echo_body as_echo'
71 fi
72
73 # The user is always right.
74 if test "${PATH_SEPARATOR+set}" != set; then
75 PATH_SEPARATOR=:
76 (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
77 (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
78 PATH_SEPARATOR=';'
79 }
80 fi
81
82
83 # IFS
84 # We need space, tab and new line, in precisely that order. Quoting is
85 # there to prevent editors from complaining about space-tab.
86 # (If _AS_PATH_WALK were called with IFS unset, it would disable word
87 # splitting by setting IFS to empty value.)
88 IFS=" "" $as_nl"
89
90 # Find who we are. Look in the path if we contain no directory separator.
91 as_myself=
92 case $0 in #((
93 *[\\/]* ) as_myself=$0 ;;
94 *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
95 for as_dir in $PATH
96 do
97 IFS=$as_save_IFS
98 test -z "$as_dir" && as_dir=.
99 test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
100 done
101 IFS=$as_save_IFS
102
103 ;;
104 esac
105 # We did not find ourselves, most probably we were run as `sh COMMAND'
106 # in which case we are not to be found in the path.
107 if test "x$as_myself" = x; then
108 as_myself=$0
109 fi
110 if test ! -f "$as_myself"; then
111 $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
112 exit 1
113 fi
114
115 # Unset variables that we do not need and which cause bugs (e.g. in
116 # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
117 # suppresses any "Segmentation fault" message there. '((' could
118 # trigger a bug in pdksh 5.2.14.
119 for as_var in BASH_ENV ENV MAIL MAILPATH
120 do eval test x\${$as_var+set} = xset \
121 && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
122 done
123 PS1='$ '
124 PS2='> '
125 PS4='+ '
126
127 # NLS nuisances.
128 LC_ALL=C
129 export LC_ALL
130 LANGUAGE=C
131 export LANGUAGE
132
133 # CDPATH.
134 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
135
136 # Use a proper internal environment variable to ensure we don't fall
137 # into an infinite loop, continuously re-executing ourselves.
138 if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
139 _as_can_reexec=no; export _as_can_reexec;
140 # We cannot yet assume a decent shell, so we have to provide a
141 # neutralization value for shells without unset; and this also
142 # works around shells that cannot unset nonexistent variables.
143 # Preserve -v and -x to the replacement shell.
144 BASH_ENV=/dev/null
145 ENV=/dev/null
146 (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
147 case $- in # ((((
148 *v*x* | *x*v* ) as_opts=-vx ;;
149 *v* ) as_opts=-v ;;
150 *x* ) as_opts=-x ;;
151 * ) as_opts= ;;
152 esac
153 exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
154 # Admittedly, this is quite paranoid, since all the known shells bail
155 # out after a failed `exec'.
156 $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
157 as_fn_exit 255
158 fi
159 # We don't want this to propagate to other subprocesses.
160 { _as_can_reexec=; unset _as_can_reexec;}
161 if test "x$CONFIG_SHELL" = x; then
162 as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
163 emulate sh
164 NULLCMD=:
165 # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
166 # is contrary to our usage. Disable this feature.
167 alias -g '\${1+\"\$@\"}'='\"\$@\"'
168 setopt NO_GLOB_SUBST
169 else
170 case \`(set -o) 2>/dev/null\` in #(
171 *posix*) :
172 set -o posix ;; #(
173 *) :
174 ;;
175 esac
176 fi
177 "
178 as_required="as_fn_return () { (exit \$1); }
179 as_fn_success () { as_fn_return 0; }
180 as_fn_failure () { as_fn_return 1; }
181 as_fn_ret_success () { return 0; }
182 as_fn_ret_failure () { return 1; }
183
184 exitcode=0
185 as_fn_success || { exitcode=1; echo as_fn_success failed.; }
186 as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
187 as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
188 as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
189 if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
190
191 else
192 exitcode=1; echo positional parameters were not saved.
193 fi
194 test x\$exitcode = x0 || exit 1
195 test -x / || exit 1"
196 as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
197 as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
198 eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
199 test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
200
201 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
202 ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
203 ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
204 ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
205 PATH=/empty FPATH=/empty; export PATH FPATH
206 test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
207 || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1
208 test \$(( 1 + 1 )) = 2 || exit 1"
209 if (eval "$as_required") 2>/dev/null; then :
210 as_have_required=yes
211 else
212 as_have_required=no
213 fi
214 if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
215
216 else
217 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
218 as_found=false
219 for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
220 do
221 IFS=$as_save_IFS
222 test -z "$as_dir" && as_dir=.
223 as_found=:
224 case $as_dir in #(
225 /*)
226 for as_base in sh bash ksh sh5; do
227 # Try only shells that exist, to save several forks.
228 as_shell=$as_dir/$as_base
229 if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
230 { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
231 CONFIG_SHELL=$as_shell as_have_required=yes
232 if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
233 break 2
234 fi
235 fi
236 done;;
237 esac
238 as_found=false
239 done
240 $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
241 { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
242 CONFIG_SHELL=$SHELL as_have_required=yes
243 fi; }
244 IFS=$as_save_IFS
245
246
247 if test "x$CONFIG_SHELL" != x; then :
248 export CONFIG_SHELL
249 # We cannot yet assume a decent shell, so we have to provide a
250 # neutralization value for shells without unset; and this also
251 # works around shells that cannot unset nonexistent variables.
252 # Preserve -v and -x to the replacement shell.
253 BASH_ENV=/dev/null
254 ENV=/dev/null
255 (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
256 case $- in # ((((
257 *v*x* | *x*v* ) as_opts=-vx ;;
258 *v* ) as_opts=-v ;;
259 *x* ) as_opts=-x ;;
260 * ) as_opts= ;;
261 esac
262 exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
263 # Admittedly, this is quite paranoid, since all the known shells bail
264 # out after a failed `exec'.
265 $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
266 exit 255
267 fi
268
269 if test x$as_have_required = xno; then :
270 $as_echo "$0: This script requires a shell more modern than all"
271 $as_echo "$0: the shells that I found on your system."
272 if test x${ZSH_VERSION+set} = xset ; then
273 $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
274 $as_echo "$0: be upgraded to zsh 4.3.4 or later."
275 else
276 $as_echo "$0: Please tell bug-autoconf@gnu.org and tex-k@tug.org
277 $0: about your system, including any error possibly output
278 $0: before this message. Then install a modern shell, or
279 $0: manually run the script under such a shell if you do
280 $0: have one."
281 fi
282 exit 1
283 fi
284 fi
285 fi
286 SHELL=${CONFIG_SHELL-/bin/sh}
287 export SHELL
288 # Unset more variables known to interfere with behavior of common tools.
289 CLICOLOR_FORCE= GREP_OPTIONS=
290 unset CLICOLOR_FORCE GREP_OPTIONS
291
292 ## --------------------- ##
293 ## M4sh Shell Functions. ##
294 ## --------------------- ##
295 # as_fn_unset VAR
296 # ---------------
297 # Portably unset VAR.
298 as_fn_unset ()
299 {
300 { eval $1=; unset $1;}
301 }
302 as_unset=as_fn_unset
303
304 # as_fn_set_status STATUS
305 # -----------------------
306 # Set $? to STATUS, without forking.
307 as_fn_set_status ()
308 {
309 return $1
310 } # as_fn_set_status
311
312 # as_fn_exit STATUS
313 # -----------------
314 # Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
315 as_fn_exit ()
316 {
317 set +e
318 as_fn_set_status $1
319 exit $1
320 } # as_fn_exit
321
322 # as_fn_mkdir_p
323 # -------------
324 # Create "$as_dir" as a directory, including parents if necessary.
325 as_fn_mkdir_p ()
326 {
327
328 case $as_dir in #(
329 -*) as_dir=./$as_dir;;
330 esac
331 test -d "$as_dir" || eval $as_mkdir_p || {
332 as_dirs=
333 while :; do
334 case $as_dir in #(
335 *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
336 *) as_qdir=$as_dir;;
337 esac
338 as_dirs="'$as_qdir' $as_dirs"
339 as_dir=`$as_dirname -- "$as_dir" ||
340 $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
341 X"$as_dir" : 'X\(//\)[^/]' \| \
342 X"$as_dir" : 'X\(//\)$' \| \
343 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
344 $as_echo X"$as_dir" |
345 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
346 s//\1/
347 q
348 }
349 /^X\(\/\/\)[^/].*/{
350 s//\1/
351 q
352 }
353 /^X\(\/\/\)$/{
354 s//\1/
355 q
356 }
357 /^X\(\/\).*/{
358 s//\1/
359 q
360 }
361 s/.*/./; q'`
362 test -d "$as_dir" && break
363 done
364 test -z "$as_dirs" || eval "mkdir $as_dirs"
365 } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
366
367
368 } # as_fn_mkdir_p
369
370 # as_fn_executable_p FILE
371 # -----------------------
372 # Test if FILE is an executable regular file.
373 as_fn_executable_p ()
374 {
375 test -f "$1" && test -x "$1"
376 } # as_fn_executable_p
377 # as_fn_append VAR VALUE
378 # ----------------------
379 # Append the text in VALUE to the end of the definition contained in VAR. Take
380 # advantage of any shell optimizations that allow amortized linear growth over
381 # repeated appends, instead of the typical quadratic growth present in naive
382 # implementations.
383 if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
384 eval 'as_fn_append ()
385 {
386 eval $1+=\$2
387 }'
388 else
389 as_fn_append ()
390 {
391 eval $1=\$$1\$2
392 }
393 fi # as_fn_append
394
395 # as_fn_arith ARG...
396 # ------------------
397 # Perform arithmetic evaluation on the ARGs, and store the result in the
398 # global $as_val. Take advantage of shells that can avoid forks. The arguments
399 # must be portable across $(()) and expr.
400 if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
401 eval 'as_fn_arith ()
402 {
403 as_val=$(( $* ))
404 }'
405 else
406 as_fn_arith ()
407 {
408 as_val=`expr "$@" || test $? -eq 1`
409 }
410 fi # as_fn_arith
411
412
413 # as_fn_error STATUS ERROR [LINENO LOG_FD]
414 # ----------------------------------------
415 # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
416 # provided, also output the error to LOG_FD, referencing LINENO. Then exit the
417 # script with STATUS, using 1 if that was 0.
418 as_fn_error ()
419 {
420 as_status=$1; test $as_status -eq 0 && as_status=1
421 if test "$4"; then
422 as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
423 $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
424 fi
425 $as_echo "$as_me: error: $2" >&2
426 as_fn_exit $as_status
427 } # as_fn_error
428
429 if expr a : '\(a\)' >/dev/null 2>&1 &&
430 test "X`expr 00001 : '.*\(...\)'`" = X001; then
431 as_expr=expr
432 else
433 as_expr=false
434 fi
435
436 if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
437 as_basename=basename
438 else
439 as_basename=false
440 fi
441
442 if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
443 as_dirname=dirname
444 else
445 as_dirname=false
446 fi
447
448 as_me=`$as_basename -- "$0" ||
449 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
450 X"$0" : 'X\(//\)$' \| \
451 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
452 $as_echo X/"$0" |
453 sed '/^.*\/\([^/][^/]*\)\/*$/{
454 s//\1/
455 q
456 }
457 /^X\/\(\/\/\)$/{
458 s//\1/
459 q
460 }
461 /^X\/\(\/\).*/{
462 s//\1/
463 q
464 }
465 s/.*/./; q'`
466
467 # Avoid depending upon Character Ranges.
468 as_cr_letters='abcdefghijklmnopqrstuvwxyz'
469 as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
470 as_cr_Letters=$as_cr_letters$as_cr_LETTERS
471 as_cr_digits='0123456789'
472 as_cr_alnum=$as_cr_Letters$as_cr_digits
473
474
475 as_lineno_1=$LINENO as_lineno_1a=$LINENO
476 as_lineno_2=$LINENO as_lineno_2a=$LINENO
477 eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
478 test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
479 # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
480 sed -n '
481 p
482 /[$]LINENO/=
483 ' <$as_myself |
484 sed '
485 s/[$]LINENO.*/&-/
486 t lineno
487 b
488 :lineno
489 N
490 :loop
491 s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
492 t loop
493 s/-\n.*//
494 ' >$as_me.lineno &&
495 chmod +x "$as_me.lineno" ||
496 { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
497
498 # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
499 # already done that, so ensure we don't try to do so again and fall
500 # in an infinite loop. This has already happened in practice.
501 _as_can_reexec=no; export _as_can_reexec
502 # Don't try to exec as it changes $[0], causing all sort of problems
503 # (the dirname of $[0] is not the place where we might find the
504 # original and so on. Autoconf is especially sensitive to this).
505 . "./$as_me.lineno"
506 # Exit status is that of the last command.
507 exit
508 }
509
510 ECHO_C= ECHO_N= ECHO_T=
511 case `echo -n x` in #(((((
512 -n*)
513 case `echo 'xy\c'` in
514 *c*) ECHO_T=' ';; # ECHO_T is single tab character.
515 xy) ECHO_C='\c';;
516 *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
517 ECHO_T=' ';;
518 esac;;
519 *)
520 ECHO_N='-n';;
521 esac
522
523 rm -f conf$$ conf$$.exe conf$$.file
524 if test -d conf$$.dir; then
525 rm -f conf$$.dir/conf$$.file
526 else
527 rm -f conf$$.dir
528 mkdir conf$$.dir 2>/dev/null
529 fi
530 if (echo >conf$$.file) 2>/dev/null; then
531 if ln -s conf$$.file conf$$ 2>/dev/null; then
532 as_ln_s='ln -s'
533 # ... but there are two gotchas:
534 # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
535 # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
536 # In both cases, we have to default to `cp -pR'.
537 ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
538 as_ln_s='cp -pR'
539 elif ln conf$$.file conf$$ 2>/dev/null; then
540 as_ln_s=ln
541 else
542 as_ln_s='cp -pR'
543 fi
544 else
545 as_ln_s='cp -pR'
546 fi
547 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
548 rmdir conf$$.dir 2>/dev/null
549
550 if mkdir -p . 2>/dev/null; then
551 as_mkdir_p='mkdir -p "$as_dir"'
552 else
553 test -d ./-p && rmdir ./-p
554 as_mkdir_p=false
555 fi
556
557 as_test_x='test -x'
558 as_executable_p=as_fn_executable_p
559
560 # Sed expression to map a string onto a valid CPP name.
561 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
562
563 # Sed expression to map a string onto a valid variable name.
564 as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
565
566 SHELL=${CONFIG_SHELL-/bin/sh}
567
568
569 test -n "$DJDIR" || exec 7<&0 </dev/null
570 exec 6>&1
571
572 # Name of the host.
573 # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
574 # so uname gets run too.
575 ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
576
577 #
578 # Initializations.
579 #
580 ac_default_prefix=/usr/local
581 ac_clean_files=
582 ac_config_libobj_dir=.
583 LIBOBJS=
584 cross_compiling=no
585 subdirs=
586 MFLAGS=
587 MAKEFLAGS=
588
589 # Identity of this package.
590 PACKAGE_NAME='gd for TeX Live'
591 PACKAGE_TARNAME='gd-for-tex-live'
592 PACKAGE_VERSION='2.0.35'
593 PACKAGE_STRING='gd for TeX Live 2.0.35'
594 PACKAGE_BUGREPORT='tex-k@tug.org'
595 PACKAGE_URL=''
596
597 ac_unique_file="gd-2.0.35/gd.c"
598 # Factoring default headers for most tests.
599 ac_includes_default="\
600 #include <stdio.h>
601 #ifdef HAVE_SYS_TYPES_H
602 # include <sys/types.h>
603 #endif
604 #ifdef HAVE_SYS_STAT_H
605 # include <sys/stat.h>
606 #endif
607 #ifdef STDC_HEADERS
608 # include <stdlib.h>
609 # include <stddef.h>
610 #else
611 # ifdef HAVE_STDLIB_H
612 # include <stdlib.h>
613 # endif
614 #endif
615 #ifdef HAVE_STRING_H
616 # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
617 # include <memory.h>
618 # endif
619 # include <string.h>
620 #endif
621 #ifdef HAVE_STRINGS_H
622 # include <strings.h>
623 #endif
624 #ifdef HAVE_INTTYPES_H
625 # include <inttypes.h>
626 #endif
627 #ifdef HAVE_STDINT_H
628 # include <stdint.h>
629 #endif
630 #ifdef HAVE_UNISTD_H
631 # include <unistd.h>
632 #endif"
633
634 ac_subst_vars='am__EXEEXT_FALSE
635 am__EXEEXT_TRUE
636 LTLIBOBJS
637 LIBOBJS
638 GD_TREE
639 build_FALSE
640 build_TRUE
641 FREETYPE2_RULE
642 FREETYPE2_DEPEND
643 FREETYPE2_LIBS
644 FREETYPE2_INCLUDES
645 FT2_CONFIG
646 LIBPNG_RULE
647 LIBPNG_DEPEND
648 LIBPNG_LIBS
649 LIBPNG_INCLUDES
650 PKG_CONFIG
651 ZLIB_RULE
652 ZLIB_DEPEND
653 ZLIB_LIBS
654 ZLIB_INCLUDES
655 CPP
656 OTOOL64
657 OTOOL
658 LIPO
659 NMEDIT
660 DSYMUTIL
661 MANIFEST_TOOL
662 ac_ct_AR
663 AR
664 DLLTOOL
665 OBJDUMP
666 NM
667 ac_ct_DUMPBIN
668 DUMPBIN
669 LD
670 FGREP
671 EGREP
672 GREP
673 SED
674 host_os
675 host_vendor
676 host_cpu
677 host
678 build_os
679 build_vendor
680 build_cpu
681 build
682 LIBTOOL
683 LN_S
684 RANLIB
685 WARNING_CFLAGS
686 am__fastdepCC_FALSE
687 am__fastdepCC_TRUE
688 CCDEPMODE
689 am__nodep
690 AMDEPBACKSLASH
691 AMDEP_FALSE
692 AMDEP_TRUE
693 am__quote
694 am__include
695 DEPDIR
696 OBJEXT
697 EXEEXT
698 ac_ct_CC
699 CPPFLAGS
700 LDFLAGS
701 CFLAGS
702 CC
703 MAINT
704 MAINTAINER_MODE_FALSE
705 MAINTAINER_MODE_TRUE
706 AM_BACKSLASH
707 AM_DEFAULT_VERBOSITY
708 AM_DEFAULT_V
709 AM_V
710 am__untar
711 am__tar
712 AMTAR
713 am__leading_dot
714 SET_MAKE
715 AWK
716 mkdir_p
717 MKDIR_P
718 INSTALL_STRIP_PROGRAM
719 STRIP
720 install_sh
721 MAKEINFO
722 AUTOHEADER
723 AUTOMAKE
724 AUTOCONF
725 ACLOCAL
726 VERSION
727 PACKAGE
728 CYGPATH_W
729 am__isrc
730 INSTALL_DATA
731 INSTALL_SCRIPT
732 INSTALL_PROGRAM
733 target_alias
734 host_alias
735 build_alias
736 LIBS
737 ECHO_T
738 ECHO_N
739 ECHO_C
740 DEFS
741 mandir
742 localedir
743 libdir
744 psdir
745 pdfdir
746 dvidir
747 htmldir
748 infodir
749 docdir
750 oldincludedir
751 includedir
752 localstatedir
753 sharedstatedir
754 sysconfdir
755 datadir
756 datarootdir
757 libexecdir
758 sbindir
759 bindir
760 program_transform_name
761 prefix
762 exec_prefix
763 PACKAGE_URL
764 PACKAGE_BUGREPORT
765 PACKAGE_STRING
766 PACKAGE_VERSION
767 PACKAGE_TARNAME
768 PACKAGE_NAME
769 PATH_SEPARATOR
770 SHELL'
771 ac_subst_files=''
772 ac_user_opts='
773 enable_option_checking
774 enable_silent_rules
775 enable_maintainer_mode
776 enable_dependency_tracking
777 enable_compiler_warnings
778 enable_shared
779 enable_static
780 with_pic
781 enable_fast_install
782 with_gnu_ld
783 with_sysroot
784 enable_libtool_lock
785 with_system_zlib
786 with_zlib_includes
787 with_zlib_libdir
788 with_system_libpng
789 with_system_freetype2
790 '
791 ac_precious_vars='build_alias
792 host_alias
793 target_alias
794 CC
795 CFLAGS
796 LDFLAGS
797 LIBS
798 CPPFLAGS
799 CPP'
800
801
802 # Initialize some variables set by options.
803 ac_init_help=
804 ac_init_version=false
805 ac_unrecognized_opts=
806 ac_unrecognized_sep=
807 # The variables have the same names as the options, with
808 # dashes changed to underlines.
809 cache_file=/dev/null
810 exec_prefix=NONE
811 no_create=
812 no_recursion=
813 prefix=NONE
814 program_prefix=NONE
815 program_suffix=NONE
816 program_transform_name=s,x,x,
817 silent=
818 site=
819 srcdir=
820 verbose=
821 x_includes=NONE
822 x_libraries=NONE
823
824 # Installation directory options.
825 # These are left unexpanded so users can "make install exec_prefix=/foo"
826 # and all the variables that are supposed to be based on exec_prefix
827 # by default will actually change.
828 # Use braces instead of parens because sh, perl, etc. also accept them.
829 # (The list follows the same order as the GNU Coding Standards.)
830 bindir='${exec_prefix}/bin'
831 sbindir='${exec_prefix}/sbin'
832 libexecdir='${exec_prefix}/libexec'
833 datarootdir='${prefix}/share'
834 datadir='${datarootdir}'
835 sysconfdir='${prefix}/etc'
836 sharedstatedir='${prefix}/com'
837 localstatedir='${prefix}/var'
838 includedir='${prefix}/include'
839 oldincludedir='/usr/include'
840 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
841 infodir='${datarootdir}/info'
842 htmldir='${docdir}'
843 dvidir='${docdir}'
844 pdfdir='${docdir}'
845 psdir='${docdir}'
846 libdir='${exec_prefix}/lib'
847 localedir='${datarootdir}/locale'
848 mandir='${datarootdir}/man'
849
850 ac_prev=
851 ac_dashdash=
852 for ac_option
853 do
854 # If the previous option needs an argument, assign it.
855 if test -n "$ac_prev"; then
856 eval $ac_prev=\$ac_option
857 ac_prev=
858 continue
859 fi
860
861 case $ac_option in
862 *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
863 *=) ac_optarg= ;;
864 *) ac_optarg=yes ;;
865 esac
866
867 # Accept the important Cygnus configure options, so we can diagnose typos.
868
869 case $ac_dashdash$ac_option in
870 --)
871 ac_dashdash=yes ;;
872
873 -bindir | --bindir | --bindi | --bind | --bin | --bi)
874 ac_prev=bindir ;;
875 -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
876 bindir=$ac_optarg ;;
877
878 -build | --build | --buil | --bui | --bu)
879 ac_prev=build_alias ;;
880 -build=* | --build=* | --buil=* | --bui=* | --bu=*)
881 build_alias=$ac_optarg ;;
882
883 -cache-file | --cache-file | --cache-fil | --cache-fi \
884 | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
885 ac_prev=cache_file ;;
886 -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
887 | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
888 cache_file=$ac_optarg ;;
889
890 --config-cache | -C)
891 cache_file=config.cache ;;
892
893 -datadir | --datadir | --datadi | --datad)
894 ac_prev=datadir ;;
895 -datadir=* | --datadir=* | --datadi=* | --datad=*)
896 datadir=$ac_optarg ;;
897
898 -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
899 | --dataroo | --dataro | --datar)
900 ac_prev=datarootdir ;;
901 -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
902 | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
903 datarootdir=$ac_optarg ;;
904
905 -disable-* | --disable-*)
906 ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
907 # Reject names that are not valid shell variable names.
908 expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
909 as_fn_error $? "invalid feature name: $ac_useropt"
910 ac_useropt_orig=$ac_useropt
911 ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
912 case $ac_user_opts in
913 *"
914 "enable_$ac_useropt"
915 "*) ;;
916 *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
917 ac_unrecognized_sep=', ';;
918 esac
919 eval enable_$ac_useropt=no ;;
920
921 -docdir | --docdir | --docdi | --doc | --do)
922 ac_prev=docdir ;;
923 -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
924 docdir=$ac_optarg ;;
925
926 -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
927 ac_prev=dvidir ;;
928 -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
929 dvidir=$ac_optarg ;;
930
931 -enable-* | --enable-*)
932 ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
933 # Reject names that are not valid shell variable names.
934 expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
935 as_fn_error $? "invalid feature name: $ac_useropt"
936 ac_useropt_orig=$ac_useropt
937 ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
938 case $ac_user_opts in
939 *"
940 "enable_$ac_useropt"
941 "*) ;;
942 *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
943 ac_unrecognized_sep=', ';;
944 esac
945 eval enable_$ac_useropt=\$ac_optarg ;;
946
947 -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
948 | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
949 | --exec | --exe | --ex)
950 ac_prev=exec_prefix ;;
951 -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
952 | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
953 | --exec=* | --exe=* | --ex=*)
954 exec_prefix=$ac_optarg ;;
955
956 -gas | --gas | --ga | --g)
957 # Obsolete; use --with-gas.
958 with_gas=yes ;;
959
960 -help | --help | --hel | --he | -h)
961 ac_init_help=long ;;
962 -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
963 ac_init_help=recursive ;;
964 -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
965 ac_init_help=short ;;
966
967 -host | --host | --hos | --ho)
968 ac_prev=host_alias ;;
969 -host=* | --host=* | --hos=* | --ho=*)
970 host_alias=$ac_optarg ;;
971
972 -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
973 ac_prev=htmldir ;;
974 -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
975 | --ht=*)
976 htmldir=$ac_optarg ;;
977
978 -includedir | --includedir | --includedi | --included | --include \
979 | --includ | --inclu | --incl | --inc)
980 ac_prev=includedir ;;
981 -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
982 | --includ=* | --inclu=* | --incl=* | --inc=*)
983 includedir=$ac_optarg ;;
984
985 -infodir | --infodir | --infodi | --infod | --info | --inf)
986 ac_prev=infodir ;;
987 -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
988 infodir=$ac_optarg ;;
989
990 -libdir | --libdir | --libdi | --libd)
991 ac_prev=libdir ;;
992 -libdir=* | --libdir=* | --libdi=* | --libd=*)
993 libdir=$ac_optarg ;;
994
995 -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
996 | --libexe | --libex | --libe)
997 ac_prev=libexecdir ;;
998 -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
999 | --libexe=* | --libex=* | --libe=*)
1000 libexecdir=$ac_optarg ;;
1001
1002 -localedir | --localedir | --localedi | --localed | --locale)
1003 ac_prev=localedir ;;
1004 -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
1005 localedir=$ac_optarg ;;
1006
1007 -localstatedir | --localstatedir | --localstatedi | --localstated \
1008 | --localstate | --localstat | --localsta | --localst | --locals)
1009 ac_prev=localstatedir ;;
1010 -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
1011 | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
1012 localstatedir=$ac_optarg ;;
1013
1014 -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
1015 ac_prev=mandir ;;
1016 -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
1017 mandir=$ac_optarg ;;
1018
1019 -nfp | --nfp | --nf)
1020 # Obsolete; use --without-fp.
1021 with_fp=no ;;
1022
1023 -no-create | --no-create | --no-creat | --no-crea | --no-cre \
1024 | --no-cr | --no-c | -n)
1025 no_create=yes ;;
1026
1027 -no-recursion | --no-recursion | --no-recursio | --no-recursi \
1028 | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
1029 no_recursion=yes ;;
1030
1031 -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
1032 | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
1033 | --oldin | --oldi | --old | --ol | --o)
1034 ac_prev=oldincludedir ;;
1035 -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
1036 | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
1037 | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
1038 oldincludedir=$ac_optarg ;;
1039
1040 -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
1041 ac_prev=prefix ;;
1042 -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
1043 prefix=$ac_optarg ;;
1044
1045 -program-prefix | --program-prefix | --program-prefi | --program-pref \
1046 | --program-pre | --program-pr | --program-p)
1047 ac_prev=program_prefix ;;
1048 -program-prefix=* | --program-prefix=* | --program-prefi=* \
1049 | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
1050 program_prefix=$ac_optarg ;;
1051
1052 -program-suffix | --program-suffix | --program-suffi | --program-suff \
1053 | --program-suf | --program-su | --program-s)
1054 ac_prev=program_suffix ;;
1055 -program-suffix=* | --program-suffix=* | --program-suffi=* \
1056 | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
1057 program_suffix=$ac_optarg ;;
1058
1059 -program-transform-name | --program-transform-name \
1060 | --program-transform-nam | --program-transform-na \
1061 | --program-transform-n | --program-transform- \
1062 | --program-transform | --program-transfor \
1063 | --program-transfo | --program-transf \
1064 | --program-trans | --program-tran \
1065 | --progr-tra | --program-tr | --program-t)
1066 ac_prev=program_transform_name ;;
1067 -program-transform-name=* | --program-transform-name=* \
1068 | --program-transform-nam=* | --program-transform-na=* \
1069 | --program-transform-n=* | --program-transform-=* \
1070 | --program-transform=* | --program-transfor=* \
1071 | --program-transfo=* | --program-transf=* \
1072 | --program-trans=* | --program-tran=* \
1073 | --progr-tra=* | --program-tr=* | --program-t=*)
1074 program_transform_name=$ac_optarg ;;
1075
1076 -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
1077 ac_prev=pdfdir ;;
1078 -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
1079 pdfdir=$ac_optarg ;;
1080
1081 -psdir | --psdir | --psdi | --psd | --ps)
1082 ac_prev=psdir ;;
1083 -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
1084 psdir=$ac_optarg ;;
1085
1086 -q | -quiet | --quiet | --quie | --qui | --qu | --q \
1087 | -silent | --silent | --silen | --sile | --sil)
1088 silent=yes ;;
1089
1090 -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
1091 ac_prev=sbindir ;;
1092 -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
1093 | --sbi=* | --sb=*)
1094 sbindir=$ac_optarg ;;
1095
1096 -sharedstatedir | --sharedstatedir | --sharedstatedi \
1097 | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
1098 | --sharedst | --shareds | --shared | --share | --shar \
1099 | --sha | --sh)
1100 ac_prev=sharedstatedir ;;
1101 -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
1102 | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
1103 | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
1104 | --sha=* | --sh=*)
1105 sharedstatedir=$ac_optarg ;;
1106
1107 -site | --site | --sit)
1108 ac_prev=site ;;
1109 -site=* | --site=* | --sit=*)
1110 site=$ac_optarg ;;
1111
1112 -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
1113 ac_prev=srcdir ;;
1114 -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
1115 srcdir=$ac_optarg ;;
1116
1117 -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
1118 | --syscon | --sysco | --sysc | --sys | --sy)
1119 ac_prev=sysconfdir ;;
1120 -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
1121 | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
1122 sysconfdir=$ac_optarg ;;
1123
1124 -target | --target | --targe | --targ | --tar | --ta | --t)
1125 ac_prev=target_alias ;;
1126 -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
1127 target_alias=$ac_optarg ;;
1128
1129 -v | -verbose | --verbose | --verbos | --verbo | --verb)
1130 verbose=yes ;;
1131
1132 -version | --version | --versio | --versi | --vers | -V)
1133 ac_init_version=: ;;
1134
1135 -with-* | --with-*)
1136 ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
1137 # Reject names that are not valid shell variable names.
1138 expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
1139 as_fn_error $? "invalid package name: $ac_useropt"
1140 ac_useropt_orig=$ac_useropt
1141 ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
1142 case $ac_user_opts in
1143 *"
1144 "with_$ac_useropt"
1145 "*) ;;
1146 *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
1147 ac_unrecognized_sep=', ';;
1148 esac
1149 eval with_$ac_useropt=\$ac_optarg ;;
1150
1151 -without-* | --without-*)
1152 ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
1153 # Reject names that are not valid shell variable names.
1154 expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
1155 as_fn_error $? "invalid package name: $ac_useropt"
1156 ac_useropt_orig=$ac_useropt
1157 ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
1158 case $ac_user_opts in
1159 *"
1160 "with_$ac_useropt"
1161 "*) ;;
1162 *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
1163 ac_unrecognized_sep=', ';;
1164 esac
1165 eval with_$ac_useropt=no ;;
1166
1167 --x)
1168 # Obsolete; use --with-x.
1169 with_x=yes ;;
1170
1171 -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
1172 | --x-incl | --x-inc | --x-in | --x-i)
1173 ac_prev=x_includes ;;
1174 -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
1175 | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
1176 x_includes=$ac_optarg ;;
1177
1178 -x-libraries | --x-libraries | --x-librarie | --x-librari \
1179 | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
1180 ac_prev=x_libraries ;;
1181 -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
1182 | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
1183 x_libraries=$ac_optarg ;;
1184
1185 -*) as_fn_error $? "unrecognized option: \`$ac_option'
1186 Try \`$0 --help' for more information"
1187 ;;
1188
1189 *=*)
1190 ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
1191 # Reject names that are not valid shell variable names.
1192 case $ac_envvar in #(
1193 '' | [0-9]* | *[!_$as_cr_alnum]* )
1194 as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
1195 esac
1196 eval $ac_envvar=\$ac_optarg
1197 export $ac_envvar ;;
1198
1199 *)
1200 # FIXME: should be removed in autoconf 3.0.
1201 $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
1202 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
1203 $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
1204 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
1205 ;;
1206
1207 esac
1208 done
1209
1210 if test -n "$ac_prev"; then
1211 ac_option=--`echo $ac_prev | sed 's/_/-/g'`
1212 as_fn_error $? "missing argument to $ac_option"
1213 fi
1214
1215 if test -n "$ac_unrecognized_opts"; then
1216 case $enable_option_checking in
1217 no) ;;
1218 fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
1219 *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
1220 esac
1221 fi
1222
1223 # Check all directory arguments for consistency.
1224 for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
1225 datadir sysconfdir sharedstatedir localstatedir includedir \
1226 oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
1227 libdir localedir mandir
1228 do
1229 eval ac_val=\$$ac_var
1230 # Remove trailing slashes.
1231 case $ac_val in
1232 */ )
1233 ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
1234 eval $ac_var=\$ac_val;;
1235 esac
1236 # Be sure to have absolute directory names.
1237 case $ac_val in
1238 [\\/$]* | ?:[\\/]* ) continue;;
1239 NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
1240 esac
1241 as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
1242 done
1243
1244 # There might be people who depend on the old broken behavior: `$host'
1245 # used to hold the argument of --host etc.
1246 # FIXME: To remove some day.
1247 build=$build_alias
1248 host=$host_alias
1249 target=$target_alias
1250
1251 # FIXME: To remove some day.
1252 if test "x$host_alias" != x; then
1253 if test "x$build_alias" = x; then
1254 cross_compiling=maybe
1255 elif test "x$build_alias" != "x$host_alias"; then
1256 cross_compiling=yes
1257 fi
1258 fi
1259
1260 ac_tool_prefix=
1261 test -n "$host_alias" && ac_tool_prefix=$host_alias-
1262
1263 test "$silent" = yes && exec 6>/dev/null
1264
1265
1266 ac_pwd=`pwd` && test -n "$ac_pwd" &&
1267 ac_ls_di=`ls -di .` &&
1268 ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
1269 as_fn_error $? "working directory cannot be determined"
1270 test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
1271 as_fn_error $? "pwd does not report name of working directory"
1272
1273
1274 # Find the source files, if location was not specified.
1275 if test -z "$srcdir"; then
1276 ac_srcdir_defaulted=yes
1277 # Try the directory containing this script, then the parent directory.
1278 ac_confdir=`$as_dirname -- "$as_myself" ||
1279 $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
1280 X"$as_myself" : 'X\(//\)[^/]' \| \
1281 X"$as_myself" : 'X\(//\)$' \| \
1282 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
1283 $as_echo X"$as_myself" |
1284 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
1285 s//\1/
1286 q
1287 }
1288 /^X\(\/\/\)[^/].*/{
1289 s//\1/
1290 q
1291 }
1292 /^X\(\/\/\)$/{
1293 s//\1/
1294 q
1295 }
1296 /^X\(\/\).*/{
1297 s//\1/
1298 q
1299 }
1300 s/.*/./; q'`
1301 srcdir=$ac_confdir
1302 if test ! -r "$srcdir/$ac_unique_file"; then
1303 srcdir=..
1304 fi
1305 else
1306 ac_srcdir_defaulted=no
1307 fi
1308 if test ! -r "$srcdir/$ac_unique_file"; then
1309 test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
1310 as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
1311 fi
1312 ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
1313 ac_abs_confdir=`(
1314 cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
1315 pwd)`
1316 # When building in place, set srcdir=.
1317 if test "$ac_abs_confdir" = "$ac_pwd"; then
1318 srcdir=.
1319 fi
1320 # Remove unnecessary trailing slashes from srcdir.
1321 # Double slashes in file names in object file debugging info
1322 # mess up M-x gdb in Emacs.
1323 case $srcdir in
1324 */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
1325 esac
1326 for ac_var in $ac_precious_vars; do
1327 eval ac_env_${ac_var}_set=\${${ac_var}+set}
1328 eval ac_env_${ac_var}_value=\$${ac_var}
1329 eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
1330 eval ac_cv_env_${ac_var}_value=\$${ac_var}
1331 done
1332
1333 #
1334 # Report the --help message.
1335 #
1336 if test "$ac_init_help" = "long"; then
1337 # Omit some internal or obsolete options to make the list less imposing.
1338 # This message is too long to be a string in the A/UX 3.1 sh.
1339 cat <<_ACEOF
1340 \`configure' configures gd for TeX Live 2.0.35 to adapt to many kinds of systems.
1341
1342 Usage: $0 [OPTION]... [VAR=VALUE]...
1343
1344 To assign environment variables (e.g., CC, CFLAGS...), specify them as
1345 VAR=VALUE. See below for descriptions of some of the useful variables.
1346
1347 Defaults for the options are specified in brackets.
1348
1349 Configuration:
1350 -h, --help display this help and exit
1351 --help=short display options specific to this package
1352 --help=recursive display the short help of all the included packages
1353 -V, --version display version information and exit
1354 -q, --quiet, --silent do not print \`checking ...' messages
1355 --cache-file=FILE cache test results in FILE [disabled]
1356 -C, --config-cache alias for \`--cache-file=config.cache'
1357 -n, --no-create do not create output files
1358 --srcdir=DIR find the sources in DIR [configure dir or \`..']
1359
1360 Installation directories:
1361 --prefix=PREFIX install architecture-independent files in PREFIX
1362 [$ac_default_prefix]
1363 --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
1364 [PREFIX]
1365
1366 By default, \`make install' will install all the files in
1367 \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
1368 an installation prefix other than \`$ac_default_prefix' using \`--prefix',
1369 for instance \`--prefix=\$HOME'.
1370
1371 For better control, use the options below.
1372
1373 Fine tuning of the installation directories:
1374 --bindir=DIR user executables [EPREFIX/bin]
1375 --sbindir=DIR system admin executables [EPREFIX/sbin]
1376 --libexecdir=DIR program executables [EPREFIX/libexec]
1377 --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
1378 --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
1379 --localstatedir=DIR modifiable single-machine data [PREFIX/var]
1380 --libdir=DIR object code libraries [EPREFIX/lib]
1381 --includedir=DIR C header files [PREFIX/include]
1382 --oldincludedir=DIR C header files for non-gcc [/usr/include]
1383 --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
1384 --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
1385 --infodir=DIR info documentation [DATAROOTDIR/info]
1386 --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
1387 --mandir=DIR man documentation [DATAROOTDIR/man]
1388 --docdir=DIR documentation root [DATAROOTDIR/doc/gd-for-tex-live]
1389 --htmldir=DIR html documentation [DOCDIR]
1390 --dvidir=DIR dvi documentation [DOCDIR]
1391 --pdfdir=DIR pdf documentation [DOCDIR]
1392 --psdir=DIR ps documentation [DOCDIR]
1393 _ACEOF
1394
1395 cat <<\_ACEOF
1396
1397 Program names:
1398 --program-prefix=PREFIX prepend PREFIX to installed program names
1399 --program-suffix=SUFFIX append SUFFIX to installed program names
1400 --program-transform-name=PROGRAM run sed PROGRAM on installed program names
1401
1402 System types:
1403 --build=BUILD configure for building on BUILD [guessed]
1404 --host=HOST cross-compile to build programs to run on HOST [BUILD]
1405 _ACEOF
1406 fi
1407
1408 if test -n "$ac_init_help"; then
1409 case $ac_init_help in
1410 short | recursive ) echo "Configuration of gd for TeX Live 2.0.35:";;
1411 esac
1412 cat <<\_ACEOF
1413
1414 Optional Features:
1415 --disable-option-checking ignore unrecognized --enable/--with options
1416 --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
1417 --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
1418 --enable-silent-rules less verbose build output (undo: "make V=1")
1419 --disable-silent-rules verbose build output (undo: "make V=0")
1420 --enable-maintainer-mode
1421 enable make rules and dependencies not useful (and
1422 sometimes confusing) to the casual installer
1423 --enable-dependency-tracking
1424 do not reject slow dependency extractors
1425 --disable-dependency-tracking
1426 speeds up one-time build
1427 --enable-compiler-warnings=[no|min|yes|max|all]
1428 Turn on compiler warnings [default: yes if
1429 maintainer-mode, min otherwise]
1430 --enable-shared[=PKGS] build shared libraries [default=yes]
1431 --enable-static[=PKGS] build static libraries [default=yes]
1432 --enable-fast-install[=PKGS]
1433 optimize for fast installation [default=yes]
1434 --disable-libtool-lock avoid locking (might break parallel builds)
1435
1436 Optional Packages:
1437 --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
1438 --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
1439 --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use
1440 both]
1441 --with-gnu-ld assume the C compiler uses GNU ld [default=no]
1442 --with-sysroot=DIR Search for dependent libraries within DIR
1443 (or the compiler's sysroot if not specified).
1444 --with-system-zlib use installed zlib headers and library
1445 --with-zlib-includes=DIR
1446 zlib headers installed in DIR
1447 --with-zlib-libdir=DIR zlib library installed in DIR
1448 --with-system-libpng use installed libpng headers and library (requires
1449 pkg-config)
1450 --with-system-freetype2 use installed freetype2 headers and library
1451 (requires freetype-config)
1452
1453 Some influential environment variables:
1454 CC C compiler command
1455 CFLAGS C compiler flags
1456 LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
1457 nonstandard directory <lib dir>
1458 LIBS libraries to pass to the linker, e.g. -l<library>
1459 CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
1460 you have headers in a nonstandard directory <include dir>
1461 CPP C preprocessor
1462
1463 Use these variables to override the choices made by `configure' or to help
1464 it to find libraries and programs with nonstandard names/locations.
1465
1466 Report bugs to <tex-k@tug.org>.
1467 _ACEOF
1468 ac_status=$?
1469 fi
1470
1471 if test "$ac_init_help" = "recursive"; then
1472 # If there are subdirs, report their specific --help.
1473 for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
1474 test -d "$ac_dir" ||
1475 { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
1476 continue
1477 ac_builddir=.
1478
1479 case "$ac_dir" in
1480 .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
1481 *)
1482 ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
1483 # A ".." for each directory in $ac_dir_suffix.
1484 ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
1485 case $ac_top_builddir_sub in
1486 "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
1487 *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
1488 esac ;;
1489 esac
1490 ac_abs_top_builddir=$ac_pwd
1491 ac_abs_builddir=$ac_pwd$ac_dir_suffix
1492 # for backward compatibility:
1493 ac_top_builddir=$ac_top_build_prefix
1494
1495 case $srcdir in
1496 .) # We are building in place.
1497 ac_srcdir=.
1498 ac_top_srcdir=$ac_top_builddir_sub
1499 ac_abs_top_srcdir=$ac_pwd ;;
1500 [\\/]* | ?:[\\/]* ) # Absolute name.
1501 ac_srcdir=$srcdir$ac_dir_suffix;
1502 ac_top_srcdir=$srcdir
1503 ac_abs_top_srcdir=$srcdir ;;
1504 *) # Relative name.
1505 ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
1506 ac_top_srcdir=$ac_top_build_prefix$srcdir
1507 ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
1508 esac
1509 ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
1510
1511 cd "$ac_dir" || { ac_status=$?; continue; }
1512 # Check for guested configure.
1513 if test -f "$ac_srcdir/configure.gnu"; then
1514 echo &&
1515 $SHELL "$ac_srcdir/configure.gnu" --help=recursive
1516 elif test -f "$ac_srcdir/configure"; then
1517 echo &&
1518 $SHELL "$ac_srcdir/configure" --help=recursive
1519 else
1520 $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
1521 fi || ac_status=$?
1522 cd "$ac_pwd" || { ac_status=$?; break; }
1523 done
1524 fi
1525
1526 test -n "$ac_init_help" && exit $ac_status
1527 if $ac_init_version; then
1528 cat <<\_ACEOF
1529 gd for TeX Live configure 2.0.35
1530 generated by GNU Autoconf 2.69
1531
1532 Copyright (C) 2012 Free Software Foundation, Inc.
1533 This configure script is free software; the Free Software Foundation
1534 gives unlimited permission to copy, distribute and modify it.
1535 _ACEOF
1536 exit
1537 fi
1538
1539 ## ------------------------ ##
1540 ## Autoconf initialization. ##
1541 ## ------------------------ ##
1542
1543 # ac_fn_c_try_compile LINENO
1544 # --------------------------
1545 # Try to compile conftest.$ac_ext, and return whether this succeeded.
1546 ac_fn_c_try_compile ()
1547 {
1548 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
1549 rm -f conftest.$ac_objext
1550 if { { ac_try="$ac_compile"
1551 case "(($ac_try" in
1552 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
1553 *) ac_try_echo=$ac_try;;
1554 esac
1555 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
1556 $as_echo "$ac_try_echo"; } >&5
1557 (eval "$ac_compile") 2>conftest.err
1558 ac_status=$?
1559 if test -s conftest.err; then
1560 grep -v '^ *+' conftest.err >conftest.er1
1561 cat conftest.er1 >&5
1562 mv -f conftest.er1 conftest.err
1563 fi
1564 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
1565 test $ac_status = 0; } && {
1566 test -z "$ac_c_werror_flag" ||
1567 test ! -s conftest.err
1568 } && test -s conftest.$ac_objext; then :
1569 ac_retval=0
1570 else
1571 $as_echo "$as_me: failed program was:" >&5
1572 sed 's/^/| /' conftest.$ac_ext >&5
1573
1574 ac_retval=1
1575 fi
1576 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
1577 as_fn_set_status $ac_retval
1578
1579 } # ac_fn_c_try_compile
1580
1581 # ac_fn_c_try_link LINENO
1582 # -----------------------
1583 # Try to link conftest.$ac_ext, and return whether this succeeded.
1584 ac_fn_c_try_link ()
1585 {
1586 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
1587 rm -f conftest.$ac_objext conftest$ac_exeext
1588 if { { ac_try="$ac_link"
1589 case "(($ac_try" in
1590 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
1591 *) ac_try_echo=$ac_try;;
1592 esac
1593 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
1594 $as_echo "$ac_try_echo"; } >&5
1595 (eval "$ac_link") 2>conftest.err
1596 ac_status=$?
1597 if test -s conftest.err; then
1598 grep -v '^ *+' conftest.err >conftest.er1
1599 cat conftest.er1 >&5
1600 mv -f conftest.er1 conftest.err
1601 fi
1602 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
1603 test $ac_status = 0; } && {
1604 test -z "$ac_c_werror_flag" ||
1605 test ! -s conftest.err
1606 } && test -s conftest$ac_exeext && {
1607 test "$cross_compiling" = yes ||
1608 test -x conftest$ac_exeext
1609 }; then :
1610 ac_retval=0
1611 else
1612 $as_echo "$as_me: failed program was:" >&5
1613 sed 's/^/| /' conftest.$ac_ext >&5
1614
1615 ac_retval=1
1616 fi
1617 # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
1618 # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
1619 # interfere with the next link command; also delete a directory that is
1620 # left behind by Apple's compiler. We do this before executing the actions.
1621 rm -rf conftest.dSYM conftest_ipa8_conftest.oo
1622 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
1623 as_fn_set_status $ac_retval
1624
1625 } # ac_fn_c_try_link
1626
1627 # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
1628 # -------------------------------------------------------
1629 # Tests whether HEADER exists and can be compiled using the include files in
1630 # INCLUDES, setting the cache variable VAR accordingly.
1631 ac_fn_c_check_header_compile ()
1632 {
1633 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
1634 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
1635 $as_echo_n "checking for $2... " >&6; }
1636 if eval \${$3+:} false; then :
1637 $as_echo_n "(cached) " >&6
1638 else
1639 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1640 /* end confdefs.h. */
1641 $4
1642 #include <$2>
1643 _ACEOF
1644 if ac_fn_c_try_compile "$LINENO"; then :
1645 eval "$3=yes"
1646 else
1647 eval "$3=no"
1648 fi
1649 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
1650 fi
1651 eval ac_res=\$$3
1652 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
1653 $as_echo "$ac_res" >&6; }
1654 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
1655
1656 } # ac_fn_c_check_header_compile
1657
1658 # ac_fn_c_try_cpp LINENO
1659 # ----------------------
1660 # Try to preprocess conftest.$ac_ext, and return whether this succeeded.
1661 ac_fn_c_try_cpp ()
1662 {
1663 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
1664 if { { ac_try="$ac_cpp conftest.$ac_ext"
1665 case "(($ac_try" in
1666 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
1667 *) ac_try_echo=$ac_try;;
1668 esac
1669 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
1670 $as_echo "$ac_try_echo"; } >&5
1671 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
1672 ac_status=$?
1673 if test -s conftest.err; then
1674 grep -v '^ *+' conftest.err >conftest.er1
1675 cat conftest.er1 >&5
1676 mv -f conftest.er1 conftest.err
1677 fi
1678 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
1679 test $ac_status = 0; } > conftest.i && {
1680 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
1681 test ! -s conftest.err
1682 }; then :
1683 ac_retval=0
1684 else
1685 $as_echo "$as_me: failed program was:" >&5
1686 sed 's/^/| /' conftest.$ac_ext >&5
1687
1688 ac_retval=1
1689 fi
1690 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
1691 as_fn_set_status $ac_retval
1692
1693 } # ac_fn_c_try_cpp
1694
1695 # ac_fn_c_try_run LINENO
1696 # ----------------------
1697 # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
1698 # that executables *can* be run.
1699 ac_fn_c_try_run ()
1700 {
1701 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
1702 if { { ac_try="$ac_link"
1703 case "(($ac_try" in
1704 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
1705 *) ac_try_echo=$ac_try;;
1706 esac
1707 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
1708 $as_echo "$ac_try_echo"; } >&5
1709 (eval "$ac_link") 2>&5
1710 ac_status=$?
1711 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
1712 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
1713 { { case "(($ac_try" in
1714 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
1715 *) ac_try_echo=$ac_try;;
1716 esac
1717 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
1718 $as_echo "$ac_try_echo"; } >&5
1719 (eval "$ac_try") 2>&5
1720 ac_status=$?
1721 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
1722 test $ac_status = 0; }; }; then :
1723 ac_retval=0
1724 else
1725 $as_echo "$as_me: program exited with status $ac_status" >&5
1726 $as_echo "$as_me: failed program was:" >&5
1727 sed 's/^/| /' conftest.$ac_ext >&5
1728
1729 ac_retval=$ac_status
1730 fi
1731 rm -rf conftest.dSYM conftest_ipa8_conftest.oo
1732 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
1733 as_fn_set_status $ac_retval
1734
1735 } # ac_fn_c_try_run
1736
1737 # ac_fn_c_check_func LINENO FUNC VAR
1738 # ----------------------------------
1739 # Tests whether FUNC exists, setting the cache variable VAR accordingly
1740 ac_fn_c_check_func ()
1741 {
1742 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
1743 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
1744 $as_echo_n "checking for $2... " >&6; }
1745 if eval \${$3+:} false; then :
1746 $as_echo_n "(cached) " >&6
1747 else
1748 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1749 /* end confdefs.h. */
1750 /* Define $2 to an innocuous variant, in case <limits.h> declares $2.
1751 For example, HP-UX 11i <limits.h> declares gettimeofday. */
1752 #define $2 innocuous_$2
1753
1754 /* System header to define __stub macros and hopefully few prototypes,
1755 which can conflict with char $2 (); below.
1756 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
1757 <limits.h> exists even on freestanding compilers. */
1758
1759 #ifdef __STDC__
1760 # include <limits.h>
1761 #else
1762 # include <assert.h>
1763 #endif
1764
1765 #undef $2
1766
1767 /* Override any GCC internal prototype to avoid an error.
1768 Use char because int might match the return type of a GCC
1769 builtin and then its argument prototype would still apply. */
1770 #ifdef __cplusplus
1771 extern "C"
1772 #endif
1773 char $2 ();
1774 /* The GNU C library defines this for functions which it implements
1775 to always fail with ENOSYS. Some functions are actually named
1776 something starting with __ and the normal name is an alias. */
1777 #if defined __stub_$2 || defined __stub___$2
1778 choke me
1779 #endif
1780
1781 int
1782 main ()
1783 {
1784 return $2 ();
1785 ;
1786 return 0;
1787 }
1788 _ACEOF
1789 if ac_fn_c_try_link "$LINENO"; then :
1790 eval "$3=yes"
1791 else
1792 eval "$3=no"
1793 fi
1794 rm -f core conftest.err conftest.$ac_objext \
1795 conftest$ac_exeext conftest.$ac_ext
1796 fi
1797 eval ac_res=\$$3
1798 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
1799 $as_echo "$ac_res" >&6; }
1800 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
1801
1802 } # ac_fn_c_check_func
1803
1804 # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
1805 # -------------------------------------------------------
1806 # Tests whether HEADER exists, giving a warning if it cannot be compiled using
1807 # the include files in INCLUDES and setting the cache variable VAR
1808 # accordingly.
1809 ac_fn_c_check_header_mongrel ()
1810 {
1811 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
1812 if eval \${$3+:} false; then :
1813 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
1814 $as_echo_n "checking for $2... " >&6; }
1815 if eval \${$3+:} false; then :
1816 $as_echo_n "(cached) " >&6
1817 fi
1818 eval ac_res=\$$3
1819 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
1820 $as_echo "$ac_res" >&6; }
1821 else
1822 # Is the header compilable?
1823 { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
1824 $as_echo_n "checking $2 usability... " >&6; }
1825 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1826 /* end confdefs.h. */
1827 $4
1828 #include <$2>
1829 _ACEOF
1830 if ac_fn_c_try_compile "$LINENO"; then :
1831 ac_header_compiler=yes
1832 else
1833 ac_header_compiler=no
1834 fi
1835 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
1836 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
1837 $as_echo "$ac_header_compiler" >&6; }
1838
1839 # Is the header present?
1840 { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
1841 $as_echo_n "checking $2 presence... " >&6; }
1842 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1843 /* end confdefs.h. */
1844 #include <$2>
1845 _ACEOF
1846 if ac_fn_c_try_cpp "$LINENO"; then :
1847 ac_header_preproc=yes
1848 else
1849 ac_header_preproc=no
1850 fi
1851 rm -f conftest.err conftest.i conftest.$ac_ext
1852 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
1853 $as_echo "$ac_header_preproc" >&6; }
1854
1855 # So? What about this header?
1856 case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
1857 yes:no: )
1858 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
1859 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
1860 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
1861 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
1862 ;;
1863 no:yes:* )
1864 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
1865 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
1866 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
1867 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
1868 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
1869 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
1870 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
1871 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
1872 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
1873 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
1874 ( $as_echo "## ---------------------------- ##
1875 ## Report this to tex-k@tug.org ##
1876 ## ---------------------------- ##"
1877 ) | sed "s/^/$as_me: WARNING: /" >&2
1878 ;;
1879 esac
1880 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
1881 $as_echo_n "checking for $2... " >&6; }
1882 if eval \${$3+:} false; then :
1883 $as_echo_n "(cached) " >&6
1884 else
1885 eval "$3=\$ac_header_compiler"
1886 fi
1887 eval ac_res=\$$3
1888 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
1889 $as_echo "$ac_res" >&6; }
1890 fi
1891 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
1892
1893 } # ac_fn_c_check_header_mongrel
1894
1895 # ac_fn_c_check_type LINENO TYPE VAR INCLUDES
1896 # -------------------------------------------
1897 # Tests whether TYPE exists after having included INCLUDES, setting cache
1898 # variable VAR accordingly.
1899 ac_fn_c_check_type ()
1900 {
1901 as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
1902 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
1903 $as_echo_n "checking for $2... " >&6; }
1904 if eval \${$3+:} false; then :
1905 $as_echo_n "(cached) " >&6
1906 else
1907 eval "$3=no"
1908 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1909 /* end confdefs.h. */
1910 $4
1911 int
1912 main ()
1913 {
1914 if (sizeof ($2))
1915 return 0;
1916 ;
1917 return 0;
1918 }
1919 _ACEOF
1920 if ac_fn_c_try_compile "$LINENO"; then :
1921 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
1922 /* end confdefs.h. */
1923 $4
1924 int
1925 main ()
1926 {
1927 if (sizeof (($2)))
1928 return 0;
1929 ;
1930 return 0;
1931 }
1932 _ACEOF
1933 if ac_fn_c_try_compile "$LINENO"; then :
1934
1935 else
1936 eval "$3=yes"
1937 fi
1938 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
1939 fi
1940 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
1941 fi
1942 eval ac_res=\$$3
1943 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
1944 $as_echo "$ac_res" >&6; }
1945 eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
1946
1947 } # ac_fn_c_check_type
1948 cat >config.log <<_ACEOF
1949 This file contains any messages produced by compilers while
1950 running configure, to aid debugging if configure makes a mistake.
1951
1952 It was created by gd for TeX Live $as_me 2.0.35, which was
1953 generated by GNU Autoconf 2.69. Invocation command line was
1954
1955 $ $0 $@
1956
1957 _ACEOF
1958 exec 5>>config.log
1959 {
1960 cat <<_ASUNAME
1961 ## --------- ##
1962 ## Platform. ##
1963 ## --------- ##
1964
1965 hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
1966 uname -m = `(uname -m) 2>/dev/null || echo unknown`
1967 uname -r = `(uname -r) 2>/dev/null || echo unknown`
1968 uname -s = `(uname -s) 2>/dev/null || echo unknown`
1969 uname -v = `(uname -v) 2>/dev/null || echo unknown`
1970
1971 /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
1972 /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
1973
1974 /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
1975 /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
1976 /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
1977 /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
1978 /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
1979 /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
1980 /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
1981
1982 _ASUNAME
1983
1984 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
1985 for as_dir in $PATH
1986 do
1987 IFS=$as_save_IFS
1988 test -z "$as_dir" && as_dir=.
1989 $as_echo "PATH: $as_dir"
1990 done
1991 IFS=$as_save_IFS
1992
1993 } >&5
1994
1995 cat >&5 <<_ACEOF
1996
1997
1998 ## ----------- ##
1999 ## Core tests. ##
2000 ## ----------- ##
2001
2002 _ACEOF
2003
2004
2005 # Keep a trace of the command line.
2006 # Strip out --no-create and --no-recursion so they do not pile up.
2007 # Strip out --silent because we don't want to record it for future runs.
2008 # Also quote any args containing shell meta-characters.
2009 # Make two passes to allow for proper duplicate-argument suppression.
2010 ac_configure_args=
2011 ac_configure_args0=
2012 ac_configure_args1=
2013 ac_must_keep_next=false
2014 for ac_pass in 1 2
2015 do
2016 for ac_arg
2017 do
2018 case $ac_arg in
2019 -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
2020 -q | -quiet | --quiet | --quie | --qui | --qu | --q \
2021 | -silent | --silent | --silen | --sile | --sil)
2022 continue ;;
2023 *\'*)
2024 ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
2025 esac
2026 case $ac_pass in
2027 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
2028 2)
2029 as_fn_append ac_configure_args1 " '$ac_arg'"
2030 if test $ac_must_keep_next = true; then
2031 ac_must_keep_next=false # Got value, back to normal.
2032 else
2033 case $ac_arg in
2034 *=* | --config-cache | -C | -disable-* | --disable-* \
2035 | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
2036 | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
2037 | -with-* | --with-* | -without-* | --without-* | --x)
2038 case "$ac_configure_args0 " in
2039 "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
2040 esac
2041 ;;
2042 -* ) ac_must_keep_next=true ;;
2043 esac
2044 fi
2045 as_fn_append ac_configure_args " '$ac_arg'"
2046 ;;
2047 esac
2048 done
2049 done
2050 { ac_configure_args0=; unset ac_configure_args0;}
2051 { ac_configure_args1=; unset ac_configure_args1;}
2052
2053 # When interrupted or exit'd, cleanup temporary files, and complete
2054 # config.log. We remove comments because anyway the quotes in there
2055 # would cause problems or look ugly.
2056 # WARNING: Use '\'' to represent an apostrophe within the trap.
2057 # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
2058 trap 'exit_status=$?
2059 # Save into config.log some information that might help in debugging.
2060 {
2061 echo
2062
2063 $as_echo "## ---------------- ##
2064 ## Cache variables. ##
2065 ## ---------------- ##"
2066 echo
2067 # The following way of writing the cache mishandles newlines in values,
2068 (
2069 for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
2070 eval ac_val=\$$ac_var
2071 case $ac_val in #(
2072 *${as_nl}*)
2073 case $ac_var in #(
2074 *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
2075 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
2076 esac
2077 case $ac_var in #(
2078 _ | IFS | as_nl) ;; #(
2079 BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
2080 *) { eval $ac_var=; unset $ac_var;} ;;
2081 esac ;;
2082 esac
2083 done
2084 (set) 2>&1 |
2085 case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
2086 *${as_nl}ac_space=\ *)
2087 sed -n \
2088 "s/'\''/'\''\\\\'\'''\''/g;
2089 s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
2090 ;; #(
2091 *)
2092 sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
2093 ;;
2094 esac |
2095 sort
2096 )
2097 echo
2098
2099 $as_echo "## ----------------- ##
2100 ## Output variables. ##
2101 ## ----------------- ##"
2102 echo
2103 for ac_var in $ac_subst_vars
2104 do
2105 eval ac_val=\$$ac_var
2106 case $ac_val in
2107 *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
2108 esac
2109 $as_echo "$ac_var='\''$ac_val'\''"
2110 done | sort
2111 echo
2112
2113 if test -n "$ac_subst_files"; then
2114 $as_echo "## ------------------- ##
2115 ## File substitutions. ##
2116 ## ------------------- ##"
2117 echo
2118 for ac_var in $ac_subst_files
2119 do
2120 eval ac_val=\$$ac_var
2121 case $ac_val in
2122 *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
2123 esac
2124 $as_echo "$ac_var='\''$ac_val'\''"
2125 done | sort
2126 echo
2127 fi
2128
2129 if test -s confdefs.h; then
2130 $as_echo "## ----------- ##
2131 ## confdefs.h. ##
2132 ## ----------- ##"
2133 echo
2134 cat confdefs.h
2135 echo
2136 fi
2137 test "$ac_signal" != 0 &&
2138 $as_echo "$as_me: caught signal $ac_signal"
2139 $as_echo "$as_me: exit $exit_status"
2140 } >&5
2141 rm -f core *.core core.conftest.* &&
2142 rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
2143 exit $exit_status
2144 ' 0
2145 for ac_signal in 1 2 13 15; do
2146 trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
2147 done
2148 ac_signal=0
2149
2150 # confdefs.h avoids OS command line length limits that DEFS can exceed.
2151 rm -f -r conftest* confdefs.h
2152
2153 $as_echo "/* confdefs.h */" > confdefs.h
2154
2155 # Predefined preprocessor variables.
2156
2157 cat >>confdefs.h <<_ACEOF
2158 #define PACKAGE_NAME "$PACKAGE_NAME"
2159 _ACEOF
2160
2161 cat >>confdefs.h <<_ACEOF
2162 #define PACKAGE_TARNAME "$PACKAGE_TARNAME"
2163 _ACEOF
2164
2165 cat >>confdefs.h <<_ACEOF
2166 #define PACKAGE_VERSION "$PACKAGE_VERSION"
2167 _ACEOF
2168
2169 cat >>confdefs.h <<_ACEOF
2170 #define PACKAGE_STRING "$PACKAGE_STRING"
2171 _ACEOF
2172
2173 cat >>confdefs.h <<_ACEOF
2174 #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
2175 _ACEOF
2176
2177 cat >>confdefs.h <<_ACEOF
2178 #define PACKAGE_URL "$PACKAGE_URL"
2179 _ACEOF
2180
2181
2182 # Let the site file select an alternate cache file if it wants to.
2183 # Prefer an explicitly selected file to automatically selected ones.
2184 ac_site_file1=NONE
2185 ac_site_file2=NONE
2186 if test -n "$CONFIG_SITE"; then
2187 # We do not want a PATH search for config.site.
2188 case $CONFIG_SITE in #((
2189 -*) ac_site_file1=./$CONFIG_SITE;;
2190 */*) ac_site_file1=$CONFIG_SITE;;
2191 *) ac_site_file1=./$CONFIG_SITE;;
2192 esac
2193 elif test "x$prefix" != xNONE; then
2194 ac_site_file1=$prefix/share/config.site
2195 ac_site_file2=$prefix/etc/config.site
2196 else
2197 ac_site_file1=$ac_default_prefix/share/config.site
2198 ac_site_file2=$ac_default_prefix/etc/config.site
2199 fi
2200 for ac_site_file in "$ac_site_file1" "$ac_site_file2"
2201 do
2202 test "x$ac_site_file" = xNONE && continue
2203 if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
2204 { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
2205 $as_echo "$as_me: loading site script $ac_site_file" >&6;}
2206 sed 's/^/| /' "$ac_site_file" >&5
2207 . "$ac_site_file" \
2208 || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
2209 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
2210 as_fn_error $? "failed to load site script $ac_site_file
2211 See \`config.log' for more details" "$LINENO" 5; }
2212 fi
2213 done
2214
2215 if test -r "$cache_file"; then
2216 # Some versions of bash will fail to source /dev/null (special files
2217 # actually), so we avoid doing that. DJGPP emulates it as a regular file.
2218 if test /dev/null != "$cache_file" && test -f "$cache_file"; then
2219 { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
2220 $as_echo "$as_me: loading cache $cache_file" >&6;}
2221 case $cache_file in
2222 [\\/]* | ?:[\\/]* ) . "$cache_file";;
2223 *) . "./$cache_file";;
2224 esac
2225 fi
2226 else
2227 { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
2228 $as_echo "$as_me: creating cache $cache_file" >&6;}
2229 >$cache_file
2230 fi
2231
2232 # Check that the precious variables saved in the cache have kept the same
2233 # value.
2234 ac_cache_corrupted=false
2235 for ac_var in $ac_precious_vars; do
2236 eval ac_old_set=\$ac_cv_env_${ac_var}_set
2237 eval ac_new_set=\$ac_env_${ac_var}_set
2238 eval ac_old_val=\$ac_cv_env_${ac_var}_value
2239 eval ac_new_val=\$ac_env_${ac_var}_value
2240 case $ac_old_set,$ac_new_set in
2241 set,)
2242 { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
2243 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
2244 ac_cache_corrupted=: ;;
2245 ,set)
2246 { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
2247 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
2248 ac_cache_corrupted=: ;;
2249 ,);;
2250 *)
2251 if test "x$ac_old_val" != "x$ac_new_val"; then
2252 # differences in whitespace do not lead to failure.
2253 ac_old_val_w=`echo x $ac_old_val`
2254 ac_new_val_w=`echo x $ac_new_val`
2255 if test "$ac_old_val_w" != "$ac_new_val_w"; then
2256 { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
2257 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
2258 ac_cache_corrupted=:
2259 else
2260 { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
2261 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
2262 eval $ac_var=\$ac_old_val
2263 fi
2264 { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
2265 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
2266 { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
2267 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
2268 fi;;
2269 esac
2270 # Pass precious variables to config.status.
2271 if test "$ac_new_set" = set; then
2272 case $ac_new_val in
2273 *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
2274 *) ac_arg=$ac_var=$ac_new_val ;;
2275 esac
2276 case " $ac_configure_args " in
2277 *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
2278 *) as_fn_append ac_configure_args " '$ac_arg'" ;;
2279 esac
2280 fi
2281 done
2282 if $ac_cache_corrupted; then
2283 { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
2284 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
2285 { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
2286 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
2287 as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
2288 fi
2289 ## -------------------- ##
2290 ## Main body of script. ##
2291 ## -------------------- ##
2292
2293 ac_ext=c
2294 ac_cpp='$CPP $CPPFLAGS'
2295 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
2296 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
2297 ac_compiler_gnu=$ac_cv_c_compiler_gnu
2298
2299
2300
2301
2302 ac_aux_dir=
2303 for ac_dir in ../../build-aux "$srcdir"/../../build-aux; do
2304 if test -f "$ac_dir/install-sh"; then
2305 ac_aux_dir=$ac_dir
2306 ac_install_sh="$ac_aux_dir/install-sh -c"
2307 break
2308 elif test -f "$ac_dir/install.sh"; then
2309 ac_aux_dir=$ac_dir
2310 ac_install_sh="$ac_aux_dir/install.sh -c"
2311 break
2312 elif test -f "$ac_dir/shtool"; then
2313 ac_aux_dir=$ac_dir
2314 ac_install_sh="$ac_aux_dir/shtool install -c"
2315 break
2316 fi
2317 done
2318 if test -z "$ac_aux_dir"; then
2319 as_fn_error $? "cannot find install-sh, install.sh, or shtool in ../../build-aux \"$srcdir\"/../../build-aux" "$LINENO" 5
2320 fi
2321
2322 # These three variables are undocumented and unsupported,
2323 # and are intended to be withdrawn in a future Autoconf release.
2324 # They can cause serious problems if a builder's source tree is in a directory
2325 # whose full name contains unusual characters.
2326 ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
2327 ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
2328 ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
2329
2330
2331
2332
2333 am__api_version='1.13'
2334
2335 # Find a good install program. We prefer a C program (faster),
2336 # so one script is as good as another. But avoid the broken or
2337 # incompatible versions:
2338 # SysV /etc/install, /usr/sbin/install
2339 # SunOS /usr/etc/install
2340 # IRIX /sbin/install
2341 # AIX /bin/install
2342 # AmigaOS /C/install, which installs bootblocks on floppy discs
2343 # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
2344 # AFS /usr/afsws/bin/install, which mishandles nonexistent args
2345 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
2346 # OS/2's system install, which has a completely different semantic
2347 # ./install, which can be erroneously created by make from ./install.sh.
2348 # Reject install programs that cannot install multiple files.
2349 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
2350 $as_echo_n "checking for a BSD-compatible install... " >&6; }
2351 if test -z "$INSTALL"; then
2352 if ${ac_cv_path_install+:} false; then :
2353 $as_echo_n "(cached) " >&6
2354 else
2355 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2356 for as_dir in $PATH
2357 do
2358 IFS=$as_save_IFS
2359 test -z "$as_dir" && as_dir=.
2360 # Account for people who put trailing slashes in PATH elements.
2361 case $as_dir/ in #((
2362 ./ | .// | /[cC]/* | \
2363 /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
2364 ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
2365 /usr/ucb/* ) ;;
2366 *)
2367 # OSF1 and SCO ODT 3.0 have their own names for install.
2368 # Don't use installbsd from OSF since it installs stuff as root
2369 # by default.
2370 for ac_prog in ginstall scoinst install; do
2371 for ac_exec_ext in '' $ac_executable_extensions; do
2372 if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
2373 if test $ac_prog = install &&
2374 grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
2375 # AIX install. It has an incompatible calling convention.
2376 :
2377 elif test $ac_prog = install &&
2378 grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
2379 # program-specific install script used by HP pwplus--don't use.
2380 :
2381 else
2382 rm -rf conftest.one conftest.two conftest.dir
2383 echo one > conftest.one
2384 echo two > conftest.two
2385 mkdir conftest.dir
2386 if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
2387 test -s conftest.one && test -s conftest.two &&
2388 test -s conftest.dir/conftest.one &&
2389 test -s conftest.dir/conftest.two
2390 then
2391 ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
2392 break 3
2393 fi
2394 fi
2395 fi
2396 done
2397 done
2398 ;;
2399 esac
2400
2401 done
2402 IFS=$as_save_IFS
2403
2404 rm -rf conftest.one conftest.two conftest.dir
2405
2406 fi
2407 if test "${ac_cv_path_install+set}" = set; then
2408 INSTALL=$ac_cv_path_install
2409 else
2410 # As a last resort, use the slow shell script. Don't cache a
2411 # value for INSTALL within a source directory, because that will
2412 # break other packages using the cache if that directory is
2413 # removed, or if the value is a relative name.
2414 INSTALL=$ac_install_sh
2415 fi
2416 fi
2417 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
2418 $as_echo "$INSTALL" >&6; }
2419
2420 # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
2421 # It thinks the first close brace ends the variable substitution.
2422 test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
2423
2424 test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
2425
2426 test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
2427
2428 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
2429 $as_echo_n "checking whether build environment is sane... " >&6; }
2430 # Reject unsafe characters in $srcdir or the absolute working directory
2431 # name. Accept space and tab only in the latter.
2432 am_lf='
2433 '
2434 case `pwd` in
2435 *[\\\"\#\$\&\'\`$am_lf]*)
2436 as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
2437 esac
2438 case $srcdir in
2439 *[\\\"\#\$\&\'\`$am_lf\ \ ]*)
2440 as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
2441 esac
2442
2443 # Do 'set' in a subshell so we don't clobber the current shell's
2444 # arguments. Must try -L first in case configure is actually a
2445 # symlink; some systems play weird games with the mod time of symlinks
2446 # (eg FreeBSD returns the mod time of the symlink's containing
2447 # directory).
2448 if (
2449 am_has_slept=no
2450 for am_try in 1 2; do
2451 echo "timestamp, slept: $am_has_slept" > conftest.file
2452 set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
2453 if test "$*" = "X"; then
2454 # -L didn't work.
2455 set X `ls -t "$srcdir/configure" conftest.file`
2456 fi
2457 if test "$*" != "X $srcdir/configure conftest.file" \
2458 && test "$*" != "X conftest.file $srcdir/configure"; then
2459
2460 # If neither matched, then we have a broken ls. This can happen
2461 # if, for instance, CONFIG_SHELL is bash and it inherits a
2462 # broken ls alias from the environment. This has actually
2463 # happened. Such a system could not be considered "sane".
2464 as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
2465 alias in your environment" "$LINENO" 5
2466 fi
2467 if test "$2" = conftest.file || test $am_try -eq 2; then
2468 break
2469 fi
2470 # Just in case.
2471 sleep 1
2472 am_has_slept=yes
2473 done
2474 test "$2" = conftest.file
2475 )
2476 then
2477 # Ok.
2478 :
2479 else
2480 as_fn_error $? "newly created file is older than distributed files!
2481 Check your system clock" "$LINENO" 5
2482 fi
2483 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
2484 $as_echo "yes" >&6; }
2485 # If we didn't sleep, we still need to ensure time stamps of config.status and
2486 # generated files are strictly newer.
2487 am_sleep_pid=
2488 if grep 'slept: no' conftest.file >/dev/null 2>&1; then
2489 ( sleep 1 ) &
2490 am_sleep_pid=$!
2491 fi
2492
2493 rm -f conftest.file
2494
2495 test "$program_prefix" != NONE &&
2496 program_transform_name="s&^&$program_prefix&;$program_transform_name"
2497 # Use a double $ so make ignores it.
2498 test "$program_suffix" != NONE &&
2499 program_transform_name="s&\$&$program_suffix&;$program_transform_name"
2500 # Double any \ or $.
2501 # By default was `s,x,x', remove it if useless.
2502 ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
2503 program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
2504
2505 # expand $ac_aux_dir to an absolute path
2506 am_aux_dir=`cd $ac_aux_dir && pwd`
2507
2508 if test x"${MISSING+set}" != xset; then
2509 case $am_aux_dir in
2510 *\ * | *\ *)
2511 MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
2512 *)
2513 MISSING="\${SHELL} $am_aux_dir/missing" ;;
2514 esac
2515 fi
2516 # Use eval to expand $SHELL
2517 if eval "$MISSING --is-lightweight"; then
2518 am_missing_run="$MISSING "
2519 else
2520 am_missing_run=
2521 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
2522 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
2523 fi
2524
2525 if test x"${install_sh}" != xset; then
2526 case $am_aux_dir in
2527 *\ * | *\ *)
2528 install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
2529 *)
2530 install_sh="\${SHELL} $am_aux_dir/install-sh"
2531 esac
2532 fi
2533
2534 # Installed binaries are usually stripped using 'strip' when the user
2535 # run "make install-strip". However 'strip' might not be the right
2536 # tool to use in cross-compilation environments, therefore Automake
2537 # will honor the 'STRIP' environment variable to overrule this program.
2538 if test "$cross_compiling" != no; then
2539 if test -n "$ac_tool_prefix"; then
2540 # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
2541 set dummy ${ac_tool_prefix}strip; ac_word=$2
2542 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
2543 $as_echo_n "checking for $ac_word... " >&6; }
2544 if ${ac_cv_prog_STRIP+:} false; then :
2545 $as_echo_n "(cached) " >&6
2546 else
2547 if test -n "$STRIP"; then
2548 ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
2549 else
2550 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2551 for as_dir in $PATH
2552 do
2553 IFS=$as_save_IFS
2554 test -z "$as_dir" && as_dir=.
2555 for ac_exec_ext in '' $ac_executable_extensions; do
2556 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
2557 ac_cv_prog_STRIP="${ac_tool_prefix}strip"
2558 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
2559 break 2
2560 fi
2561 done
2562 done
2563 IFS=$as_save_IFS
2564
2565 fi
2566 fi
2567 STRIP=$ac_cv_prog_STRIP
2568 if test -n "$STRIP"; then
2569 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
2570 $as_echo "$STRIP" >&6; }
2571 else
2572 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
2573 $as_echo "no" >&6; }
2574 fi
2575
2576
2577 fi
2578 if test -z "$ac_cv_prog_STRIP"; then
2579 ac_ct_STRIP=$STRIP
2580 # Extract the first word of "strip", so it can be a program name with args.
2581 set dummy strip; ac_word=$2
2582 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
2583 $as_echo_n "checking for $ac_word... " >&6; }
2584 if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
2585 $as_echo_n "(cached) " >&6
2586 else
2587 if test -n "$ac_ct_STRIP"; then
2588 ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
2589 else
2590 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2591 for as_dir in $PATH
2592 do
2593 IFS=$as_save_IFS
2594 test -z "$as_dir" && as_dir=.
2595 for ac_exec_ext in '' $ac_executable_extensions; do
2596 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
2597 ac_cv_prog_ac_ct_STRIP="strip"
2598 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
2599 break 2
2600 fi
2601 done
2602 done
2603 IFS=$as_save_IFS
2604
2605 fi
2606 fi
2607 ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
2608 if test -n "$ac_ct_STRIP"; then
2609 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
2610 $as_echo "$ac_ct_STRIP" >&6; }
2611 else
2612 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
2613 $as_echo "no" >&6; }
2614 fi
2615
2616 if test "x$ac_ct_STRIP" = x; then
2617 STRIP=":"
2618 else
2619 case $cross_compiling:$ac_tool_warned in
2620 yes:)
2621 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
2622 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
2623 ac_tool_warned=yes ;;
2624 esac
2625 STRIP=$ac_ct_STRIP
2626 fi
2627 else
2628 STRIP="$ac_cv_prog_STRIP"
2629 fi
2630
2631 fi
2632 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
2633
2634 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
2635 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
2636 if test -z "$MKDIR_P"; then
2637 if ${ac_cv_path_mkdir+:} false; then :
2638 $as_echo_n "(cached) " >&6
2639 else
2640 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2641 for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
2642 do
2643 IFS=$as_save_IFS
2644 test -z "$as_dir" && as_dir=.
2645 for ac_prog in mkdir gmkdir; do
2646 for ac_exec_ext in '' $ac_executable_extensions; do
2647 as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
2648 case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
2649 'mkdir (GNU coreutils) '* | \
2650 'mkdir (coreutils) '* | \
2651 'mkdir (fileutils) '4.1*)
2652 ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
2653 break 3;;
2654 esac
2655 done
2656 done
2657 done
2658 IFS=$as_save_IFS
2659
2660 fi
2661
2662 test -d ./--version && rmdir ./--version
2663 if test "${ac_cv_path_mkdir+set}" = set; then
2664 MKDIR_P="$ac_cv_path_mkdir -p"
2665 else
2666 # As a last resort, use the slow shell script. Don't cache a
2667 # value for MKDIR_P within a source directory, because that will
2668 # break other packages using the cache if that directory is
2669 # removed, or if the value is a relative name.
2670 MKDIR_P="$ac_install_sh -d"
2671 fi
2672 fi
2673 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
2674 $as_echo "$MKDIR_P" >&6; }
2675
2676 for ac_prog in gawk mawk nawk awk
2677 do
2678 # Extract the first word of "$ac_prog", so it can be a program name with args.
2679 set dummy $ac_prog; ac_word=$2
2680 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
2681 $as_echo_n "checking for $ac_word... " >&6; }
2682 if ${ac_cv_prog_AWK+:} false; then :
2683 $as_echo_n "(cached) " >&6
2684 else
2685 if test -n "$AWK"; then
2686 ac_cv_prog_AWK="$AWK" # Let the user override the test.
2687 else
2688 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2689 for as_dir in $PATH
2690 do
2691 IFS=$as_save_IFS
2692 test -z "$as_dir" && as_dir=.
2693 for ac_exec_ext in '' $ac_executable_extensions; do
2694 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
2695 ac_cv_prog_AWK="$ac_prog"
2696 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
2697 break 2
2698 fi
2699 done
2700 done
2701 IFS=$as_save_IFS
2702
2703 fi
2704 fi
2705 AWK=$ac_cv_prog_AWK
2706 if test -n "$AWK"; then
2707 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
2708 $as_echo "$AWK" >&6; }
2709 else
2710 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
2711 $as_echo "no" >&6; }
2712 fi
2713
2714
2715 test -n "$AWK" && break
2716 done
2717
2718 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
2719 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
2720 set x ${MAKE-make}
2721 ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
2722 if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
2723 $as_echo_n "(cached) " >&6
2724 else
2725 cat >conftest.make <<\_ACEOF
2726 SHELL = /bin/sh
2727 all:
2728 @echo '@@@%%%=$(MAKE)=@@@%%%'
2729 _ACEOF
2730 # GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
2731 case `${MAKE-make} -f conftest.make 2>/dev/null` in
2732 *@@@%%%=?*=@@@%%%*)
2733 eval ac_cv_prog_make_${ac_make}_set=yes;;
2734 *)
2735 eval ac_cv_prog_make_${ac_make}_set=no;;
2736 esac
2737 rm -f conftest.make
2738 fi
2739 if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
2740 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
2741 $as_echo "yes" >&6; }
2742 SET_MAKE=
2743 else
2744 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
2745 $as_echo "no" >&6; }
2746 SET_MAKE="MAKE=${MAKE-make}"
2747 fi
2748
2749 rm -rf .tst 2>/dev/null
2750 mkdir .tst 2>/dev/null
2751 if test -d .tst; then
2752 am__leading_dot=.
2753 else
2754 am__leading_dot=_
2755 fi
2756 rmdir .tst 2>/dev/null
2757
2758 # Check whether --enable-silent-rules was given.
2759 if test "${enable_silent_rules+set}" = set; then :
2760 enableval=$enable_silent_rules;
2761 fi
2762
2763 case $enable_silent_rules in # (((
2764 yes) AM_DEFAULT_VERBOSITY=0;;
2765 no) AM_DEFAULT_VERBOSITY=1;;
2766 *) AM_DEFAULT_VERBOSITY=1;;
2767 esac
2768 am_make=${MAKE-make}
2769 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
2770 $as_echo_n "checking whether $am_make supports nested variables... " >&6; }
2771 if ${am_cv_make_support_nested_variables+:} false; then :
2772 $as_echo_n "(cached) " >&6
2773 else
2774 if $as_echo 'TRUE=$(BAR$(V))
2775 BAR0=false
2776 BAR1=true
2777 V=1
2778 am__doit:
2779 @$(TRUE)
2780 .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
2781 am_cv_make_support_nested_variables=yes
2782 else
2783 am_cv_make_support_nested_variables=no
2784 fi
2785 fi
2786 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
2787 $as_echo "$am_cv_make_support_nested_variables" >&6; }
2788 if test $am_cv_make_support_nested_variables = yes; then
2789 AM_V='$(V)'
2790 AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
2791 else
2792 AM_V=$AM_DEFAULT_VERBOSITY
2793 AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
2794 fi
2795 AM_BACKSLASH='\'
2796
2797 DEPDIR="${am__leading_dot}deps"
2798
2799 ac_config_commands="$ac_config_commands depfiles"
2800
2801
2802 am_make=${MAKE-make}
2803 cat > confinc << 'END'
2804 am__doit:
2805 @echo this is the am__doit target
2806 .PHONY: am__doit
2807 END
2808 # If we don't find an include directive, just comment out the code.
2809 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
2810 $as_echo_n "checking for style of include used by $am_make... " >&6; }
2811 am__include="#"
2812 am__quote=
2813 _am_result=none
2814 # First try GNU make style include.
2815 echo "include confinc" > confmf
2816 # Ignore all kinds of additional output from 'make'.
2817 case `$am_make -s -f confmf 2> /dev/null` in #(
2818 *the\ am__doit\ target*)
2819 am__include=include
2820 am__quote=
2821 _am_result=GNU
2822 ;;
2823 esac
2824 # Now try BSD make style include.
2825 if test "$am__include" = "#"; then
2826 echo '.include "confinc"' > confmf
2827 case `$am_make -s -f confmf 2> /dev/null` in #(
2828 *the\ am__doit\ target*)
2829 am__include=.include
2830 am__quote="\""
2831 _am_result=BSD
2832 ;;
2833 esac
2834 fi
2835
2836
2837 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
2838 $as_echo "$_am_result" >&6; }
2839 rm -f confinc confmf
2840
2841 # Check whether --enable-dependency-tracking was given.
2842 if test "${enable_dependency_tracking+set}" = set; then :
2843 enableval=$enable_dependency_tracking;
2844 fi
2845
2846 if test "x$enable_dependency_tracking" != xno; then
2847 am_depcomp="$ac_aux_dir/depcomp"
2848 AMDEPBACKSLASH='\'
2849 am__nodep='_no'
2850 fi
2851 if test "x$enable_dependency_tracking" != xno; then
2852 AMDEP_TRUE=
2853 AMDEP_FALSE='#'
2854 else
2855 AMDEP_TRUE='#'
2856 AMDEP_FALSE=
2857 fi
2858
2859
2860 ac_ext=c
2861 ac_cpp='$CPP $CPPFLAGS'
2862 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
2863 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
2864 ac_compiler_gnu=$ac_cv_c_compiler_gnu
2865 if test -n "$ac_tool_prefix"; then
2866 # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
2867 set dummy ${ac_tool_prefix}gcc; ac_word=$2
2868 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
2869 $as_echo_n "checking for $ac_word... " >&6; }
2870 if ${ac_cv_prog_CC+:} false; then :
2871 $as_echo_n "(cached) " >&6
2872 else
2873 if test -n "$CC"; then
2874 ac_cv_prog_CC="$CC" # Let the user override the test.
2875 else
2876 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2877 for as_dir in $PATH
2878 do
2879 IFS=$as_save_IFS
2880 test -z "$as_dir" && as_dir=.
2881 for ac_exec_ext in '' $ac_executable_extensions; do
2882 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
2883 ac_cv_prog_CC="${ac_tool_prefix}gcc"
2884 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
2885 break 2
2886 fi
2887 done
2888 done
2889 IFS=$as_save_IFS
2890
2891 fi
2892 fi
2893 CC=$ac_cv_prog_CC
2894 if test -n "$CC"; then
2895 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
2896 $as_echo "$CC" >&6; }
2897 else
2898 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
2899 $as_echo "no" >&6; }
2900 fi
2901
2902
2903 fi
2904 if test -z "$ac_cv_prog_CC"; then
2905 ac_ct_CC=$CC
2906 # Extract the first word of "gcc", so it can be a program name with args.
2907 set dummy gcc; ac_word=$2
2908 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
2909 $as_echo_n "checking for $ac_word... " >&6; }
2910 if ${ac_cv_prog_ac_ct_CC+:} false; then :
2911 $as_echo_n "(cached) " >&6
2912 else
2913 if test -n "$ac_ct_CC"; then
2914 ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
2915 else
2916 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2917 for as_dir in $PATH
2918 do
2919 IFS=$as_save_IFS
2920 test -z "$as_dir" && as_dir=.
2921 for ac_exec_ext in '' $ac_executable_extensions; do
2922 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
2923 ac_cv_prog_ac_ct_CC="gcc"
2924 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
2925 break 2
2926 fi
2927 done
2928 done
2929 IFS=$as_save_IFS
2930
2931 fi
2932 fi
2933 ac_ct_CC=$ac_cv_prog_ac_ct_CC
2934 if test -n "$ac_ct_CC"; then
2935 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
2936 $as_echo "$ac_ct_CC" >&6; }
2937 else
2938 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
2939 $as_echo "no" >&6; }
2940 fi
2941
2942 if test "x$ac_ct_CC" = x; then
2943 CC=""
2944 else
2945 case $cross_compiling:$ac_tool_warned in
2946 yes:)
2947 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
2948 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
2949 ac_tool_warned=yes ;;
2950 esac
2951 CC=$ac_ct_CC
2952 fi
2953 else
2954 CC="$ac_cv_prog_CC"
2955 fi
2956
2957 if test -z "$CC"; then
2958 if test -n "$ac_tool_prefix"; then
2959 # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
2960 set dummy ${ac_tool_prefix}cc; ac_word=$2
2961 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
2962 $as_echo_n "checking for $ac_word... " >&6; }
2963 if ${ac_cv_prog_CC+:} false; then :
2964 $as_echo_n "(cached) " >&6
2965 else
2966 if test -n "$CC"; then
2967 ac_cv_prog_CC="$CC" # Let the user override the test.
2968 else
2969 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2970 for as_dir in $PATH
2971 do
2972 IFS=$as_save_IFS
2973 test -z "$as_dir" && as_dir=.
2974 for ac_exec_ext in '' $ac_executable_extensions; do
2975 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
2976 ac_cv_prog_CC="${ac_tool_prefix}cc"
2977 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
2978 break 2
2979 fi
2980 done
2981 done
2982 IFS=$as_save_IFS
2983
2984 fi
2985 fi
2986 CC=$ac_cv_prog_CC
2987 if test -n "$CC"; then
2988 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
2989 $as_echo "$CC" >&6; }
2990 else
2991 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
2992 $as_echo "no" >&6; }
2993 fi
2994
2995
2996 fi
2997 fi
2998 if test -z "$CC"; then
2999 # Extract the first word of "cc", so it can be a program name with args.
3000 set dummy cc; ac_word=$2
3001 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
3002 $as_echo_n "checking for $ac_word... " >&6; }
3003 if ${ac_cv_prog_CC+:} false; then :
3004 $as_echo_n "(cached) " >&6
3005 else
3006 if test -n "$CC"; then
3007 ac_cv_prog_CC="$CC" # Let the user override the test.
3008 else
3009 ac_prog_rejected=no
3010 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3011 for as_dir in $PATH
3012 do
3013 IFS=$as_save_IFS
3014 test -z "$as_dir" && as_dir=.
3015 for ac_exec_ext in '' $ac_executable_extensions; do
3016 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3017 if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
3018 ac_prog_rejected=yes
3019 continue
3020 fi
3021 ac_cv_prog_CC="cc"
3022 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
3023 break 2
3024 fi
3025 done
3026 done
3027 IFS=$as_save_IFS
3028
3029 if test $ac_prog_rejected = yes; then
3030 # We found a bogon in the path, so make sure we never use it.
3031 set dummy $ac_cv_prog_CC
3032 shift
3033 if test $# != 0; then
3034 # We chose a different compiler from the bogus one.
3035 # However, it has the same basename, so the bogon will be chosen
3036 # first if we set CC to just the basename; use the full file name.
3037 shift
3038 ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
3039 fi
3040 fi
3041 fi
3042 fi
3043 CC=$ac_cv_prog_CC
3044 if test -n "$CC"; then
3045 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
3046 $as_echo "$CC" >&6; }
3047 else
3048 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
3049 $as_echo "no" >&6; }
3050 fi
3051
3052
3053 fi
3054 if test -z "$CC"; then
3055 if test -n "$ac_tool_prefix"; then
3056 for ac_prog in cl.exe
3057 do
3058 # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
3059 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
3060 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
3061 $as_echo_n "checking for $ac_word... " >&6; }
3062 if ${ac_cv_prog_CC+:} false; then :
3063 $as_echo_n "(cached) " >&6
3064 else
3065 if test -n "$CC"; then
3066 ac_cv_prog_CC="$CC" # Let the user override the test.
3067 else
3068 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3069 for as_dir in $PATH
3070 do
3071 IFS=$as_save_IFS
3072 test -z "$as_dir" && as_dir=.
3073 for ac_exec_ext in '' $ac_executable_extensions; do
3074 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3075 ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
3076 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
3077 break 2
3078 fi
3079 done
3080 done
3081 IFS=$as_save_IFS
3082
3083 fi
3084 fi
3085 CC=$ac_cv_prog_CC
3086 if test -n "$CC"; then
3087 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
3088 $as_echo "$CC" >&6; }
3089 else
3090 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
3091 $as_echo "no" >&6; }
3092 fi
3093
3094
3095 test -n "$CC" && break
3096 done
3097 fi
3098 if test -z "$CC"; then
3099 ac_ct_CC=$CC
3100 for ac_prog in cl.exe
3101 do
3102 # Extract the first word of "$ac_prog", so it can be a program name with args.
3103 set dummy $ac_prog; ac_word=$2
3104 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
3105 $as_echo_n "checking for $ac_word... " >&6; }
3106 if ${ac_cv_prog_ac_ct_CC+:} false; then :
3107 $as_echo_n "(cached) " >&6
3108 else
3109 if test -n "$ac_ct_CC"; then
3110 ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
3111 else
3112 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3113 for as_dir in $PATH
3114 do
3115 IFS=$as_save_IFS
3116 test -z "$as_dir" && as_dir=.
3117 for ac_exec_ext in '' $ac_executable_extensions; do
3118 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3119 ac_cv_prog_ac_ct_CC="$ac_prog"
3120 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
3121 break 2
3122 fi
3123 done
3124 done
3125 IFS=$as_save_IFS
3126
3127 fi
3128 fi
3129 ac_ct_CC=$ac_cv_prog_ac_ct_CC
3130 if test -n "$ac_ct_CC"; then
3131 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
3132 $as_echo "$ac_ct_CC" >&6; }
3133 else
3134 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
3135 $as_echo "no" >&6; }
3136 fi
3137
3138
3139 test -n "$ac_ct_CC" && break
3140 done
3141
3142 if test "x$ac_ct_CC" = x; then
3143 CC=""
3144 else
3145 case $cross_compiling:$ac_tool_warned in
3146 yes:)
3147 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
3148 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
3149 ac_tool_warned=yes ;;
3150 esac
3151 CC=$ac_ct_CC
3152 fi
3153 fi
3154
3155 fi
3156
3157
3158 test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
3159 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
3160 as_fn_error $? "no acceptable C compiler found in \$PATH
3161 See \`config.log' for more details" "$LINENO" 5; }
3162
3163 # Provide some information about the compiler.
3164 $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
3165 set X $ac_compile
3166 ac_compiler=$2
3167 for ac_option in --version -v -V -qversion; do
3168 { { ac_try="$ac_compiler $ac_option >&5"
3169 case "(($ac_try" in
3170 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3171 *) ac_try_echo=$ac_try;;
3172 esac
3173 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
3174 $as_echo "$ac_try_echo"; } >&5
3175 (eval "$ac_compiler $ac_option >&5") 2>conftest.err
3176 ac_status=$?
3177 if test -s conftest.err; then
3178 sed '10a\
3179 ... rest of stderr output deleted ...
3180 10q' conftest.err >conftest.er1
3181 cat conftest.er1 >&5
3182 fi
3183 rm -f conftest.er1 conftest.err
3184 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
3185 test $ac_status = 0; }
3186 done
3187
3188 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3189 /* end confdefs.h. */
3190
3191 int
3192 main ()
3193 {
3194
3195 ;
3196 return 0;
3197 }
3198 _ACEOF
3199 ac_clean_files_save=$ac_clean_files
3200 ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
3201 # Try to create an executable without -o first, disregard a.out.
3202 # It will help us diagnose broken compilers, and finding out an intuition
3203 # of exeext.
3204 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
3205 $as_echo_n "checking whether the C compiler works... " >&6; }
3206 ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
3207
3208 # The possible output files:
3209 ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
3210
3211 ac_rmfiles=
3212 for ac_file in $ac_files
3213 do
3214 case $ac_file in
3215 *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
3216 * ) ac_rmfiles="$ac_rmfiles $ac_file";;
3217 esac
3218 done
3219 rm -f $ac_rmfiles
3220
3221 if { { ac_try="$ac_link_default"
3222 case "(($ac_try" in
3223 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3224 *) ac_try_echo=$ac_try;;
3225 esac
3226 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
3227 $as_echo "$ac_try_echo"; } >&5
3228 (eval "$ac_link_default") 2>&5
3229 ac_status=$?
3230 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
3231 test $ac_status = 0; }; then :
3232 # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
3233 # So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
3234 # in a Makefile. We should not override ac_cv_exeext if it was cached,
3235 # so that the user can short-circuit this test for compilers unknown to
3236 # Autoconf.
3237 for ac_file in $ac_files ''
3238 do
3239 test -f "$ac_file" || continue
3240 case $ac_file in
3241 *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
3242 ;;
3243 [ab].out )
3244 # We found the default executable, but exeext='' is most
3245 # certainly right.
3246 break;;
3247 *.* )
3248 if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
3249 then :; else
3250 ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
3251 fi
3252 # We set ac_cv_exeext here because the later test for it is not
3253 # safe: cross compilers may not add the suffix if given an `-o'
3254 # argument, so we may need to know it at that point already.
3255 # Even if this section looks crufty: it has the advantage of
3256 # actually working.
3257 break;;
3258 * )
3259 break;;
3260 esac
3261 done
3262 test "$ac_cv_exeext" = no && ac_cv_exeext=
3263
3264 else
3265 ac_file=''
3266 fi
3267 if test -z "$ac_file"; then :
3268 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
3269 $as_echo "no" >&6; }
3270 $as_echo "$as_me: failed program was:" >&5
3271 sed 's/^/| /' conftest.$ac_ext >&5
3272
3273 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
3274 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
3275 as_fn_error 77 "C compiler cannot create executables
3276 See \`config.log' for more details" "$LINENO" 5; }
3277 else
3278 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
3279 $as_echo "yes" >&6; }
3280 fi
3281 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
3282 $as_echo_n "checking for C compiler default output file name... " >&6; }
3283 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
3284 $as_echo "$ac_file" >&6; }
3285 ac_exeext=$ac_cv_exeext
3286
3287 rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
3288 ac_clean_files=$ac_clean_files_save
3289 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
3290 $as_echo_n "checking for suffix of executables... " >&6; }
3291 if { { ac_try="$ac_link"
3292 case "(($ac_try" in
3293 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3294 *) ac_try_echo=$ac_try;;
3295 esac
3296 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
3297 $as_echo "$ac_try_echo"; } >&5
3298 (eval "$ac_link") 2>&5
3299 ac_status=$?
3300 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
3301 test $ac_status = 0; }; then :
3302 # If both `conftest.exe' and `conftest' are `present' (well, observable)
3303 # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
3304 # work properly (i.e., refer to `conftest.exe'), while it won't with
3305 # `rm'.
3306 for ac_file in conftest.exe conftest conftest.*; do
3307 test -f "$ac_file" || continue
3308 case $ac_file in
3309 *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
3310 *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
3311 break;;
3312 * ) break;;
3313 esac
3314 done
3315 else
3316 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
3317 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
3318 as_fn_error $? "cannot compute suffix of executables: cannot compile and link
3319 See \`config.log' for more details" "$LINENO" 5; }
3320 fi
3321 rm -f conftest conftest$ac_cv_exeext
3322 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
3323 $as_echo "$ac_cv_exeext" >&6; }
3324
3325 rm -f conftest.$ac_ext
3326 EXEEXT=$ac_cv_exeext
3327 ac_exeext=$EXEEXT
3328 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3329 /* end confdefs.h. */
3330 #include <stdio.h>
3331 int
3332 main ()
3333 {
3334 FILE *f = fopen ("conftest.out", "w");
3335 return ferror (f) || fclose (f) != 0;
3336
3337 ;
3338 return 0;
3339 }
3340 _ACEOF
3341 ac_clean_files="$ac_clean_files conftest.out"
3342 # Check that the compiler produces executables we can run. If not, either
3343 # the compiler is broken, or we cross compile.
3344 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
3345 $as_echo_n "checking whether we are cross compiling... " >&6; }
3346 if test "$cross_compiling" != yes; then
3347 { { ac_try="$ac_link"
3348 case "(($ac_try" in
3349 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3350 *) ac_try_echo=$ac_try;;
3351 esac
3352 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
3353 $as_echo "$ac_try_echo"; } >&5
3354 (eval "$ac_link") 2>&5
3355 ac_status=$?
3356 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
3357 test $ac_status = 0; }
3358 if { ac_try='./conftest$ac_cv_exeext'
3359 { { case "(($ac_try" in
3360 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3361 *) ac_try_echo=$ac_try;;
3362 esac
3363 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
3364 $as_echo "$ac_try_echo"; } >&5
3365 (eval "$ac_try") 2>&5
3366 ac_status=$?
3367 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
3368 test $ac_status = 0; }; }; then
3369 cross_compiling=no
3370 else
3371 if test "$cross_compiling" = maybe; then
3372 cross_compiling=yes
3373 else
3374 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
3375 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
3376 as_fn_error $? "cannot run C compiled programs.
3377 If you meant to cross compile, use \`--host'.
3378 See \`config.log' for more details" "$LINENO" 5; }
3379 fi
3380 fi
3381 fi
3382 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
3383 $as_echo "$cross_compiling" >&6; }
3384
3385 rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
3386 ac_clean_files=$ac_clean_files_save
3387 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
3388 $as_echo_n "checking for suffix of object files... " >&6; }
3389 if ${ac_cv_objext+:} false; then :
3390 $as_echo_n "(cached) " >&6
3391 else
3392 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3393 /* end confdefs.h. */
3394
3395 int
3396 main ()
3397 {
3398
3399 ;
3400 return 0;
3401 }
3402 _ACEOF
3403 rm -f conftest.o conftest.obj
3404 if { { ac_try="$ac_compile"
3405 case "(($ac_try" in
3406 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3407 *) ac_try_echo=$ac_try;;
3408 esac
3409 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
3410 $as_echo "$ac_try_echo"; } >&5
3411 (eval "$ac_compile") 2>&5
3412 ac_status=$?
3413 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
3414 test $ac_status = 0; }; then :
3415 for ac_file in conftest.o conftest.obj conftest.*; do
3416 test -f "$ac_file" || continue;
3417 case $ac_file in
3418 *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
3419 *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
3420 break;;
3421 esac
3422 done
3423 else
3424 $as_echo "$as_me: failed program was:" >&5
3425 sed 's/^/| /' conftest.$ac_ext >&5
3426
3427 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
3428 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
3429 as_fn_error $? "cannot compute suffix of object files: cannot compile
3430 See \`config.log' for more details" "$LINENO" 5; }
3431 fi
3432 rm -f conftest.$ac_cv_objext conftest.$ac_ext
3433 fi
3434 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
3435 $as_echo "$ac_cv_objext" >&6; }
3436 OBJEXT=$ac_cv_objext
3437 ac_objext=$OBJEXT
3438 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
3439 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
3440 if ${ac_cv_c_compiler_gnu+:} false; then :
3441 $as_echo_n "(cached) " >&6
3442 else
3443 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3444 /* end confdefs.h. */
3445
3446 int
3447 main ()
3448 {
3449 #ifndef __GNUC__
3450 choke me
3451 #endif
3452
3453 ;
3454 return 0;
3455 }
3456 _ACEOF
3457 if ac_fn_c_try_compile "$LINENO"; then :
3458 ac_compiler_gnu=yes
3459 else
3460 ac_compiler_gnu=no
3461 fi
3462 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3463 ac_cv_c_compiler_gnu=$ac_compiler_gnu
3464
3465 fi
3466 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
3467 $as_echo "$ac_cv_c_compiler_gnu" >&6; }
3468 if test $ac_compiler_gnu = yes; then
3469 GCC=yes
3470 else
3471 GCC=
3472 fi
3473 ac_test_CFLAGS=${CFLAGS+set}
3474 ac_save_CFLAGS=$CFLAGS
3475 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
3476 $as_echo_n "checking whether $CC accepts -g... " >&6; }
3477 if ${ac_cv_prog_cc_g+:} false; then :
3478 $as_echo_n "(cached) " >&6
3479 else
3480 ac_save_c_werror_flag=$ac_c_werror_flag
3481 ac_c_werror_flag=yes
3482 ac_cv_prog_cc_g=no
3483 CFLAGS="-g"
3484 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3485 /* end confdefs.h. */
3486
3487 int
3488 main ()
3489 {
3490
3491 ;
3492 return 0;
3493 }
3494 _ACEOF
3495 if ac_fn_c_try_compile "$LINENO"; then :
3496 ac_cv_prog_cc_g=yes
3497 else
3498 CFLAGS=""
3499 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3500 /* end confdefs.h. */
3501
3502 int
3503 main ()
3504 {
3505
3506 ;
3507 return 0;
3508 }
3509 _ACEOF
3510 if ac_fn_c_try_compile "$LINENO"; then :
3511
3512 else
3513 ac_c_werror_flag=$ac_save_c_werror_flag
3514 CFLAGS="-g"
3515 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3516 /* end confdefs.h. */
3517
3518 int
3519 main ()
3520 {
3521
3522 ;
3523 return 0;
3524 }
3525 _ACEOF
3526 if ac_fn_c_try_compile "$LINENO"; then :
3527 ac_cv_prog_cc_g=yes
3528 fi
3529 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3530 fi
3531 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3532 fi
3533 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3534 ac_c_werror_flag=$ac_save_c_werror_flag
3535 fi
3536 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
3537 $as_echo "$ac_cv_prog_cc_g" >&6; }
3538 if test "$ac_test_CFLAGS" = set; then
3539 CFLAGS=$ac_save_CFLAGS
3540 elif test $ac_cv_prog_cc_g = yes; then
3541 if test "$GCC" = yes; then
3542 CFLAGS="-g -O2"
3543 else
3544 CFLAGS="-g"
3545 fi
3546 else
3547 if test "$GCC" = yes; then
3548 CFLAGS="-O2"
3549 else
3550 CFLAGS=
3551 fi
3552 fi
3553 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
3554 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
3555 if ${ac_cv_prog_cc_c89+:} false; then :
3556 $as_echo_n "(cached) " >&6
3557 else
3558 ac_cv_prog_cc_c89=no
3559 ac_save_CC=$CC
3560 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3561 /* end confdefs.h. */
3562 #include <stdarg.h>
3563 #include <stdio.h>
3564 struct stat;
3565 /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
3566 struct buf { int x; };
3567 FILE * (*rcsopen) (struct buf *, struct stat *, int);
3568 static char *e (p, i)
3569 char **p;
3570 int i;
3571 {
3572 return p[i];
3573 }
3574 static char *f (char * (*g) (char **, int), char **p, ...)
3575 {
3576 char *s;
3577 va_list v;
3578 va_start (v,p);
3579 s = g (p, va_arg (v,int));
3580 va_end (v);
3581 return s;
3582 }
3583
3584 /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
3585 function prototypes and stuff, but not '\xHH' hex character constants.
3586 These don't provoke an error unfortunately, instead are silently treated
3587 as 'x'. The following induces an error, until -std is added to get
3588 proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
3589 array size at least. It's necessary to write '\x00'==0 to get something
3590 that's true only with -std. */
3591 int osf4_cc_array ['\x00' == 0 ? 1 : -1];
3592
3593 /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
3594 inside strings and character constants. */
3595 #define FOO(x) 'x'
3596 int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
3597
3598 int test (int i, double x);
3599 struct s1 {int (*f) (int a);};
3600 struct s2 {int (*f) (double a);};
3601 int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
3602 int argc;
3603 char **argv;
3604 int
3605 main ()
3606 {
3607 return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
3608 ;
3609 return 0;
3610 }
3611 _ACEOF
3612 for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
3613 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
3614 do
3615 CC="$ac_save_CC $ac_arg"
3616 if ac_fn_c_try_compile "$LINENO"; then :
3617 ac_cv_prog_cc_c89=$ac_arg
3618 fi
3619 rm -f core conftest.err conftest.$ac_objext
3620 test "x$ac_cv_prog_cc_c89" != "xno" && break
3621 done
3622 rm -f conftest.$ac_ext
3623 CC=$ac_save_CC
3624
3625 fi
3626 # AC_CACHE_VAL
3627 case "x$ac_cv_prog_cc_c89" in
3628 x)
3629 { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
3630 $as_echo "none needed" >&6; } ;;
3631 xno)
3632 { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
3633 $as_echo "unsupported" >&6; } ;;
3634 *)
3635 CC="$CC $ac_cv_prog_cc_c89"
3636 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
3637 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
3638 esac
3639 if test "x$ac_cv_prog_cc_c89" != xno; then :
3640
3641 fi
3642
3643 ac_ext=c
3644 ac_cpp='$CPP $CPPFLAGS'
3645 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
3646 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
3647 ac_compiler_gnu=$ac_cv_c_compiler_gnu
3648
3649 depcc="$CC" am_compiler_list=
3650
3651 { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
3652 $as_echo_n "checking dependency style of $depcc... " >&6; }
3653 if ${am_cv_CC_dependencies_compiler_type+:} false; then :
3654 $as_echo_n "(cached) " >&6
3655 else
3656 if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
3657 # We make a subdir and do the tests there. Otherwise we can end up
3658 # making bogus files that we don't know about and never remove. For
3659 # instance it was reported that on HP-UX the gcc test will end up
3660 # making a dummy file named 'D' -- because '-MD' means "put the output
3661 # in D".
3662 rm -rf conftest.dir
3663 mkdir conftest.dir
3664 # Copy depcomp to subdir because otherwise we won't find it if we're
3665 # using a relative directory.
3666 cp "$am_depcomp" conftest.dir
3667 cd conftest.dir
3668 # We will build objects and dependencies in a subdirectory because
3669 # it helps to detect inapplicable dependency modes. For instance
3670 # both Tru64's cc and ICC support -MD to output dependencies as a
3671 # side effect of compilation, but ICC will put the dependencies in
3672 # the current directory while Tru64 will put them in the object
3673 # directory.
3674 mkdir sub
3675
3676 am_cv_CC_dependencies_compiler_type=none
3677 if test "$am_compiler_list" = ""; then
3678 am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
3679 fi
3680 am__universal=false
3681 case " $depcc " in #(
3682 *\ -arch\ *\ -arch\ *) am__universal=true ;;
3683 esac
3684
3685 for depmode in $am_compiler_list; do
3686 # Setup a source with many dependencies, because some compilers
3687 # like to wrap large dependency lists on column 80 (with \), and
3688 # we should not choose a depcomp mode which is confused by this.
3689 #
3690 # We need to recreate these files for each test, as the compiler may
3691 # overwrite some of them when testing with obscure command lines.
3692 # This happens at least with the AIX C compiler.
3693 : > sub/conftest.c
3694 for i in 1 2 3 4 5 6; do
3695 echo '#include "conftst'$i'.h"' >> sub/conftest.c
3696 # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
3697 # Solaris 10 /bin/sh.
3698 echo '/* dummy */' > sub/conftst$i.h
3699 done
3700 echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
3701
3702 # We check with '-c' and '-o' for the sake of the "dashmstdout"
3703 # mode. It turns out that the SunPro C++ compiler does not properly
3704 # handle '-M -o', and we need to detect this. Also, some Intel
3705 # versions had trouble with output in subdirs.
3706 am__obj=sub/conftest.${OBJEXT-o}
3707 am__minus_obj="-o $am__obj"
3708 case $depmode in
3709 gcc)
3710 # This depmode causes a compiler race in universal mode.
3711 test "$am__universal" = false || continue
3712 ;;
3713 nosideeffect)
3714 # After this tag, mechanisms are not by side-effect, so they'll
3715 # only be used when explicitly requested.
3716 if test "x$enable_dependency_tracking" = xyes; then
3717 continue
3718 else
3719 break
3720 fi
3721 ;;
3722 msvc7 | msvc7msys | msvisualcpp | msvcmsys)
3723 # This compiler won't grok '-c -o', but also, the minuso test has
3724 # not run yet. These depmodes are late enough in the game, and
3725 # so weak that their functioning should not be impacted.
3726 am__obj=conftest.${OBJEXT-o}
3727 am__minus_obj=
3728 ;;
3729 none) break ;;
3730 esac
3731 if depmode=$depmode \
3732 source=sub/conftest.c object=$am__obj \
3733 depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
3734 $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
3735 >/dev/null 2>conftest.err &&
3736 grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
3737 grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
3738 grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
3739 ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
3740 # icc doesn't choke on unknown options, it will just issue warnings
3741 # or remarks (even with -Werror). So we grep stderr for any message
3742 # that says an option was ignored or not supported.
3743 # When given -MP, icc 7.0 and 7.1 complain thusly:
3744 # icc: Command line warning: ignoring option '-M'; no argument required
3745 # The diagnosis changed in icc 8.0:
3746 # icc: Command line remark: option '-MP' not supported
3747 if (grep 'ignoring option' conftest.err ||
3748 grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
3749 am_cv_CC_dependencies_compiler_type=$depmode
3750 break
3751 fi
3752 fi
3753 done
3754
3755 cd ..
3756 rm -rf conftest.dir
3757 else
3758 am_cv_CC_dependencies_compiler_type=none
3759 fi
3760
3761 fi
3762 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
3763 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
3764 CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
3765
3766 if
3767 test "x$enable_dependency_tracking" != xno \
3768 && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
3769 am__fastdepCC_TRUE=
3770 am__fastdepCC_FALSE='#'
3771 else
3772 am__fastdepCC_TRUE='#'
3773 am__fastdepCC_FALSE=
3774 fi
3775
3776
3777
3778 # Check whether --enable-compiler-warnings was given.
3779 if test "${enable_compiler_warnings+set}" = set; then :
3780 enableval=$enable_compiler_warnings;
3781 fi
3782 case $enable_compiler_warnings in #(
3783 no | min | yes | max | all) :
3784 ;; #(
3785 *) :
3786 if test "x$enable_maintainer_mode" = xyes; then :
3787 enable_compiler_warnings=yes
3788 else
3789 enable_compiler_warnings=min
3790 fi ;;
3791 esac
3792
3793
3794 if test "`cd $srcdir && pwd`" != "`pwd`"; then
3795 # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
3796 # is not polluted with repeated "-I."
3797 am__isrc=' -I$(srcdir)'
3798 # test to see if srcdir already configured
3799 if test -f $srcdir/config.status; then
3800 as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
3801 fi
3802 fi
3803
3804 # test whether we have cygpath
3805 if test -z "$CYGPATH_W"; then
3806 if (cygpath --version) >/dev/null 2>/dev/null; then
3807 CYGPATH_W='cygpath -w'
3808 else
3809 CYGPATH_W=echo
3810 fi
3811 fi
3812
3813
3814 # Define the identity of the package.
3815 PACKAGE='gd-for-tex-live'
3816 VERSION='2.0.35'
3817
3818
3819 cat >>confdefs.h <<_ACEOF
3820 #define PACKAGE "$PACKAGE"
3821 _ACEOF
3822
3823
3824 cat >>confdefs.h <<_ACEOF
3825 #define VERSION "$VERSION"
3826 _ACEOF
3827
3828 # Some tools Automake needs.
3829
3830 ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
3831
3832
3833 AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
3834
3835
3836 AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
3837
3838
3839 AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
3840
3841
3842 MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
3843
3844 # For better backward compatibility. To be removed once Automake 1.9.x
3845 # dies out for good. For more background, see:
3846 # <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
3847 # <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
3848 mkdir_p='$(MKDIR_P)'
3849
3850 # We need awk for the "check" target. The system "awk" is bad on
3851 # some platforms.
3852 # Always define AMTAR for backward compatibility. Yes, it's still used
3853 # in the wild :-( We should find a proper way to deprecate it ...
3854 AMTAR='$${TAR-tar}'
3855
3856 am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
3857
3858
3859
3860
3861
3862
3863 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
3864 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
3865 # Check whether --enable-maintainer-mode was given.
3866 if test "${enable_maintainer_mode+set}" = set; then :
3867 enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
3868 else
3869 USE_MAINTAINER_MODE=no
3870 fi
3871
3872 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
3873 $as_echo "$USE_MAINTAINER_MODE" >&6; }
3874 if test $USE_MAINTAINER_MODE = yes; then
3875 MAINTAINER_MODE_TRUE=
3876 MAINTAINER_MODE_FALSE='#'
3877 else
3878 MAINTAINER_MODE_TRUE='#'
3879 MAINTAINER_MODE_FALSE=
3880 fi
3881
3882 MAINT=$MAINTAINER_MODE_TRUE
3883
3884
3885 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler accepts prototypes" >&5
3886 $as_echo_n "checking whether the compiler accepts prototypes... " >&6; }
3887 if ${kb_cv_c_prototypes+:} false; then :
3888 $as_echo_n "(cached) " >&6
3889 else
3890 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
3891 /* end confdefs.h. */
3892 #include <stdarg.h>
3893 int
3894 main ()
3895 {
3896 extern void foo(int i,...);
3897 ;
3898 return 0;
3899 }
3900 _ACEOF
3901 if ac_fn_c_try_link "$LINENO"; then :
3902 kb_cv_c_prototypes=yes
3903 else
3904 kb_cv_c_prototypes=no
3905 fi
3906 rm -f core conftest.err conftest.$ac_objext \
3907 conftest$ac_exeext conftest.$ac_ext
3908 fi
3909 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $kb_cv_c_prototypes" >&5
3910 $as_echo "$kb_cv_c_prototypes" >&6; }
3911 if test "x$kb_cv_c_prototypes" = xno; then
3912 as_fn_error $? "Sorry, your compiler does not understand prototypes." "$LINENO" 5
3913 fi
3914 { $as_echo "$as_me:${as_lineno-$LINENO}: checking what warning flags to pass to the C compiler" >&5
3915 $as_echo_n "checking what warning flags to pass to the C compiler... " >&6; }
3916 if ${kpse_cv_warning_cflags+:} false; then :
3917 $as_echo_n "(cached) " >&6
3918 else
3919 if test "x$GCC" = xyes; then
3920 kpse_cv_warning_cflags=
3921 if test "x$enable_compiler_warnings" != xno; then
3922 kpse_cv_warning_cflags="-Wimplicit -Wreturn-type"
3923 case `$CC -dumpversion` in #(
3924 3.4.* | 4.*) :
3925 kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wdeclaration-after-statement" ;; #(
3926 *) :
3927 ;;
3928 esac
3929 case `$CC -dumpversion` in #(
3930 3.[234].* | 4.*) :
3931 kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wno-unknown-pragmas" ;; #(
3932 *) :
3933 ;;
3934 esac
3935 if test "x$enable_compiler_warnings" != xmin; then
3936 kpse_cv_warning_cflags="-Wall -Wunused $kpse_cv_warning_cflags"
3937 kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wmissing-prototypes -Wmissing-declarations"
3938 if test "x$enable_compiler_warnings" != xyes; then
3939 kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wparentheses -Wswitch -Wtrigraphs -Wpointer-arith"
3940 kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wcast-qual -Wcast-align -Wwrite-strings"
3941 case `$CC -dumpversion` in #(
3942 3.4.* | 4.*) :
3943 kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wold-style-definition" ;; #(
3944 *) :
3945 ;;
3946 esac
3947 if test "x$enable_compiler_warnings" != xmax; then
3948 kpse_cv_warning_cflags="$kpse_cv_warning_cflags -Wshadow"
3949 fi
3950 fi
3951 fi
3952 fi
3953 elif test "x$enable_compiler_warnings" = xno; then
3954 kpse_cv_warning_cflags=
3955 else
3956 kpse_cv_warning_cflags= # FIXME: warning flags for non-GNU C compilers
3957 fi
3958 fi
3959 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $kpse_cv_warning_cflags" >&5
3960 $as_echo "$kpse_cv_warning_cflags" >&6; }
3961 WARNING_CFLAGS=$kpse_cv_warning_cflags
3962
3963
3964
3965
3966
3967
3968
3969
3970 ac_ext=c
3971 ac_cpp='$CPP $CPPFLAGS'
3972 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
3973 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
3974 ac_compiler_gnu=$ac_cv_c_compiler_gnu
3975 if test -n "$ac_tool_prefix"; then
3976 # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
3977 set dummy ${ac_tool_prefix}gcc; ac_word=$2
3978 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
3979 $as_echo_n "checking for $ac_word... " >&6; }
3980 if ${ac_cv_prog_CC+:} false; then :
3981 $as_echo_n "(cached) " >&6
3982 else
3983 if test -n "$CC"; then
3984 ac_cv_prog_CC="$CC" # Let the user override the test.
3985 else
3986 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3987 for as_dir in $PATH
3988 do
3989 IFS=$as_save_IFS
3990 test -z "$as_dir" && as_dir=.
3991 for ac_exec_ext in '' $ac_executable_extensions; do
3992 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
3993 ac_cv_prog_CC="${ac_tool_prefix}gcc"
3994 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
3995 break 2
3996 fi
3997 done
3998 done
3999 IFS=$as_save_IFS
4000
4001 fi
4002 fi
4003 CC=$ac_cv_prog_CC
4004 if test -n "$CC"; then
4005 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
4006 $as_echo "$CC" >&6; }
4007 else
4008 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4009 $as_echo "no" >&6; }
4010 fi
4011
4012
4013 fi
4014 if test -z "$ac_cv_prog_CC"; then
4015 ac_ct_CC=$CC
4016 # Extract the first word of "gcc", so it can be a program name with args.
4017 set dummy gcc; ac_word=$2
4018 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4019 $as_echo_n "checking for $ac_word... " >&6; }
4020 if ${ac_cv_prog_ac_ct_CC+:} false; then :
4021 $as_echo_n "(cached) " >&6
4022 else
4023 if test -n "$ac_ct_CC"; then
4024 ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
4025 else
4026 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4027 for as_dir in $PATH
4028 do
4029 IFS=$as_save_IFS
4030 test -z "$as_dir" && as_dir=.
4031 for ac_exec_ext in '' $ac_executable_extensions; do
4032 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4033 ac_cv_prog_ac_ct_CC="gcc"
4034 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4035 break 2
4036 fi
4037 done
4038 done
4039 IFS=$as_save_IFS
4040
4041 fi
4042 fi
4043 ac_ct_CC=$ac_cv_prog_ac_ct_CC
4044 if test -n "$ac_ct_CC"; then
4045 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
4046 $as_echo "$ac_ct_CC" >&6; }
4047 else
4048 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4049 $as_echo "no" >&6; }
4050 fi
4051
4052 if test "x$ac_ct_CC" = x; then
4053 CC=""
4054 else
4055 case $cross_compiling:$ac_tool_warned in
4056 yes:)
4057 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
4058 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
4059 ac_tool_warned=yes ;;
4060 esac
4061 CC=$ac_ct_CC
4062 fi
4063 else
4064 CC="$ac_cv_prog_CC"
4065 fi
4066
4067 if test -z "$CC"; then
4068 if test -n "$ac_tool_prefix"; then
4069 # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
4070 set dummy ${ac_tool_prefix}cc; ac_word=$2
4071 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4072 $as_echo_n "checking for $ac_word... " >&6; }
4073 if ${ac_cv_prog_CC+:} false; then :
4074 $as_echo_n "(cached) " >&6
4075 else
4076 if test -n "$CC"; then
4077 ac_cv_prog_CC="$CC" # Let the user override the test.
4078 else
4079 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4080 for as_dir in $PATH
4081 do
4082 IFS=$as_save_IFS
4083 test -z "$as_dir" && as_dir=.
4084 for ac_exec_ext in '' $ac_executable_extensions; do
4085 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4086 ac_cv_prog_CC="${ac_tool_prefix}cc"
4087 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4088 break 2
4089 fi
4090 done
4091 done
4092 IFS=$as_save_IFS
4093
4094 fi
4095 fi
4096 CC=$ac_cv_prog_CC
4097 if test -n "$CC"; then
4098 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
4099 $as_echo "$CC" >&6; }
4100 else
4101 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4102 $as_echo "no" >&6; }
4103 fi
4104
4105
4106 fi
4107 fi
4108 if test -z "$CC"; then
4109 # Extract the first word of "cc", so it can be a program name with args.
4110 set dummy cc; ac_word=$2
4111 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4112 $as_echo_n "checking for $ac_word... " >&6; }
4113 if ${ac_cv_prog_CC+:} false; then :
4114 $as_echo_n "(cached) " >&6
4115 else
4116 if test -n "$CC"; then
4117 ac_cv_prog_CC="$CC" # Let the user override the test.
4118 else
4119 ac_prog_rejected=no
4120 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4121 for as_dir in $PATH
4122 do
4123 IFS=$as_save_IFS
4124 test -z "$as_dir" && as_dir=.
4125 for ac_exec_ext in '' $ac_executable_extensions; do
4126 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4127 if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
4128 ac_prog_rejected=yes
4129 continue
4130 fi
4131 ac_cv_prog_CC="cc"
4132 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4133 break 2
4134 fi
4135 done
4136 done
4137 IFS=$as_save_IFS
4138
4139 if test $ac_prog_rejected = yes; then
4140 # We found a bogon in the path, so make sure we never use it.
4141 set dummy $ac_cv_prog_CC
4142 shift
4143 if test $# != 0; then
4144 # We chose a different compiler from the bogus one.
4145 # However, it has the same basename, so the bogon will be chosen
4146 # first if we set CC to just the basename; use the full file name.
4147 shift
4148 ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
4149 fi
4150 fi
4151 fi
4152 fi
4153 CC=$ac_cv_prog_CC
4154 if test -n "$CC"; then
4155 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
4156 $as_echo "$CC" >&6; }
4157 else
4158 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4159 $as_echo "no" >&6; }
4160 fi
4161
4162
4163 fi
4164 if test -z "$CC"; then
4165 if test -n "$ac_tool_prefix"; then
4166 for ac_prog in cl.exe
4167 do
4168 # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
4169 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
4170 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4171 $as_echo_n "checking for $ac_word... " >&6; }
4172 if ${ac_cv_prog_CC+:} false; then :
4173 $as_echo_n "(cached) " >&6
4174 else
4175 if test -n "$CC"; then
4176 ac_cv_prog_CC="$CC" # Let the user override the test.
4177 else
4178 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4179 for as_dir in $PATH
4180 do
4181 IFS=$as_save_IFS
4182 test -z "$as_dir" && as_dir=.
4183 for ac_exec_ext in '' $ac_executable_extensions; do
4184 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4185 ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
4186 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4187 break 2
4188 fi
4189 done
4190 done
4191 IFS=$as_save_IFS
4192
4193 fi
4194 fi
4195 CC=$ac_cv_prog_CC
4196 if test -n "$CC"; then
4197 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
4198 $as_echo "$CC" >&6; }
4199 else
4200 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4201 $as_echo "no" >&6; }
4202 fi
4203
4204
4205 test -n "$CC" && break
4206 done
4207 fi
4208 if test -z "$CC"; then
4209 ac_ct_CC=$CC
4210 for ac_prog in cl.exe
4211 do
4212 # Extract the first word of "$ac_prog", so it can be a program name with args.
4213 set dummy $ac_prog; ac_word=$2
4214 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4215 $as_echo_n "checking for $ac_word... " >&6; }
4216 if ${ac_cv_prog_ac_ct_CC+:} false; then :
4217 $as_echo_n "(cached) " >&6
4218 else
4219 if test -n "$ac_ct_CC"; then
4220 ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
4221 else
4222 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4223 for as_dir in $PATH
4224 do
4225 IFS=$as_save_IFS
4226 test -z "$as_dir" && as_dir=.
4227 for ac_exec_ext in '' $ac_executable_extensions; do
4228 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4229 ac_cv_prog_ac_ct_CC="$ac_prog"
4230 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4231 break 2
4232 fi
4233 done
4234 done
4235 IFS=$as_save_IFS
4236
4237 fi
4238 fi
4239 ac_ct_CC=$ac_cv_prog_ac_ct_CC
4240 if test -n "$ac_ct_CC"; then
4241 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
4242 $as_echo "$ac_ct_CC" >&6; }
4243 else
4244 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4245 $as_echo "no" >&6; }
4246 fi
4247
4248
4249 test -n "$ac_ct_CC" && break
4250 done
4251
4252 if test "x$ac_ct_CC" = x; then
4253 CC=""
4254 else
4255 case $cross_compiling:$ac_tool_warned in
4256 yes:)
4257 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
4258 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
4259 ac_tool_warned=yes ;;
4260 esac
4261 CC=$ac_ct_CC
4262 fi
4263 fi
4264
4265 fi
4266
4267
4268 test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
4269 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
4270 as_fn_error $? "no acceptable C compiler found in \$PATH
4271 See \`config.log' for more details" "$LINENO" 5; }
4272
4273 # Provide some information about the compiler.
4274 $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
4275 set X $ac_compile
4276 ac_compiler=$2
4277 for ac_option in --version -v -V -qversion; do
4278 { { ac_try="$ac_compiler $ac_option >&5"
4279 case "(($ac_try" in
4280 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
4281 *) ac_try_echo=$ac_try;;
4282 esac
4283 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
4284 $as_echo "$ac_try_echo"; } >&5
4285 (eval "$ac_compiler $ac_option >&5") 2>conftest.err
4286 ac_status=$?
4287 if test -s conftest.err; then
4288 sed '10a\
4289 ... rest of stderr output deleted ...
4290 10q' conftest.err >conftest.er1
4291 cat conftest.er1 >&5
4292 fi
4293 rm -f conftest.er1 conftest.err
4294 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
4295 test $ac_status = 0; }
4296 done
4297
4298 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
4299 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
4300 if ${ac_cv_c_compiler_gnu+:} false; then :
4301 $as_echo_n "(cached) " >&6
4302 else
4303 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
4304 /* end confdefs.h. */
4305
4306 int
4307 main ()
4308 {
4309 #ifndef __GNUC__
4310 choke me
4311 #endif
4312
4313 ;
4314 return 0;
4315 }
4316 _ACEOF
4317 if ac_fn_c_try_compile "$LINENO"; then :
4318 ac_compiler_gnu=yes
4319 else
4320 ac_compiler_gnu=no
4321 fi
4322 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
4323 ac_cv_c_compiler_gnu=$ac_compiler_gnu
4324
4325 fi
4326 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
4327 $as_echo "$ac_cv_c_compiler_gnu" >&6; }
4328 if test $ac_compiler_gnu = yes; then
4329 GCC=yes
4330 else
4331 GCC=
4332 fi
4333 ac_test_CFLAGS=${CFLAGS+set}
4334 ac_save_CFLAGS=$CFLAGS
4335 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
4336 $as_echo_n "checking whether $CC accepts -g... " >&6; }
4337 if ${ac_cv_prog_cc_g+:} false; then :
4338 $as_echo_n "(cached) " >&6
4339 else
4340 ac_save_c_werror_flag=$ac_c_werror_flag
4341 ac_c_werror_flag=yes
4342 ac_cv_prog_cc_g=no
4343 CFLAGS="-g"
4344 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
4345 /* end confdefs.h. */
4346
4347 int
4348 main ()
4349 {
4350
4351 ;
4352 return 0;
4353 }
4354 _ACEOF
4355 if ac_fn_c_try_compile "$LINENO"; then :
4356 ac_cv_prog_cc_g=yes
4357 else
4358 CFLAGS=""
4359 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
4360 /* end confdefs.h. */
4361
4362 int
4363 main ()
4364 {
4365
4366 ;
4367 return 0;
4368 }
4369 _ACEOF
4370 if ac_fn_c_try_compile "$LINENO"; then :
4371
4372 else
4373 ac_c_werror_flag=$ac_save_c_werror_flag
4374 CFLAGS="-g"
4375 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
4376 /* end confdefs.h. */
4377
4378 int
4379 main ()
4380 {
4381
4382 ;
4383 return 0;
4384 }
4385 _ACEOF
4386 if ac_fn_c_try_compile "$LINENO"; then :
4387 ac_cv_prog_cc_g=yes
4388 fi
4389 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
4390 fi
4391 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
4392 fi
4393 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
4394 ac_c_werror_flag=$ac_save_c_werror_flag
4395 fi
4396 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
4397 $as_echo "$ac_cv_prog_cc_g" >&6; }
4398 if test "$ac_test_CFLAGS" = set; then
4399 CFLAGS=$ac_save_CFLAGS
4400 elif test $ac_cv_prog_cc_g = yes; then
4401 if test "$GCC" = yes; then
4402 CFLAGS="-g -O2"
4403 else
4404 CFLAGS="-g"
4405 fi
4406 else
4407 if test "$GCC" = yes; then
4408 CFLAGS="-O2"
4409 else
4410 CFLAGS=
4411 fi
4412 fi
4413 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
4414 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
4415 if ${ac_cv_prog_cc_c89+:} false; then :
4416 $as_echo_n "(cached) " >&6
4417 else
4418 ac_cv_prog_cc_c89=no
4419 ac_save_CC=$CC
4420 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
4421 /* end confdefs.h. */
4422 #include <stdarg.h>
4423 #include <stdio.h>
4424 struct stat;
4425 /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
4426 struct buf { int x; };
4427 FILE * (*rcsopen) (struct buf *, struct stat *, int);
4428 static char *e (p, i)
4429 char **p;
4430 int i;
4431 {
4432 return p[i];
4433 }
4434 static char *f (char * (*g) (char **, int), char **p, ...)
4435 {
4436 char *s;
4437 va_list v;
4438 va_start (v,p);
4439 s = g (p, va_arg (v,int));
4440 va_end (v);
4441 return s;
4442 }
4443
4444 /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
4445 function prototypes and stuff, but not '\xHH' hex character constants.
4446 These don't provoke an error unfortunately, instead are silently treated
4447 as 'x'. The following induces an error, until -std is added to get
4448 proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
4449 array size at least. It's necessary to write '\x00'==0 to get something
4450 that's true only with -std. */
4451 int osf4_cc_array ['\x00' == 0 ? 1 : -1];
4452
4453 /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
4454 inside strings and character constants. */
4455 #define FOO(x) 'x'
4456 int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
4457
4458 int test (int i, double x);
4459 struct s1 {int (*f) (int a);};
4460 struct s2 {int (*f) (double a);};
4461 int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
4462 int argc;
4463 char **argv;
4464 int
4465 main ()
4466 {
4467 return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
4468 ;
4469 return 0;
4470 }
4471 _ACEOF
4472 for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
4473 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
4474 do
4475 CC="$ac_save_CC $ac_arg"
4476 if ac_fn_c_try_compile "$LINENO"; then :
4477 ac_cv_prog_cc_c89=$ac_arg
4478 fi
4479 rm -f core conftest.err conftest.$ac_objext
4480 test "x$ac_cv_prog_cc_c89" != "xno" && break
4481 done
4482 rm -f conftest.$ac_ext
4483 CC=$ac_save_CC
4484
4485 fi
4486 # AC_CACHE_VAL
4487 case "x$ac_cv_prog_cc_c89" in
4488 x)
4489 { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
4490 $as_echo "none needed" >&6; } ;;
4491 xno)
4492 { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
4493 $as_echo "unsupported" >&6; } ;;
4494 *)
4495 CC="$CC $ac_cv_prog_cc_c89"
4496 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
4497 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
4498 esac
4499 if test "x$ac_cv_prog_cc_c89" != xno; then :
4500
4501 fi
4502
4503 ac_ext=c
4504 ac_cpp='$CPP $CPPFLAGS'
4505 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
4506 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
4507 ac_compiler_gnu=$ac_cv_c_compiler_gnu
4508
4509 depcc="$CC" am_compiler_list=
4510
4511 { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
4512 $as_echo_n "checking dependency style of $depcc... " >&6; }
4513 if ${am_cv_CC_dependencies_compiler_type+:} false; then :
4514 $as_echo_n "(cached) " >&6
4515 else
4516 if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
4517 # We make a subdir and do the tests there. Otherwise we can end up
4518 # making bogus files that we don't know about and never remove. For
4519 # instance it was reported that on HP-UX the gcc test will end up
4520 # making a dummy file named 'D' -- because '-MD' means "put the output
4521 # in D".
4522 rm -rf conftest.dir
4523 mkdir conftest.dir
4524 # Copy depcomp to subdir because otherwise we won't find it if we're
4525 # using a relative directory.
4526 cp "$am_depcomp" conftest.dir
4527 cd conftest.dir
4528 # We will build objects and dependencies in a subdirectory because
4529 # it helps to detect inapplicable dependency modes. For instance
4530 # both Tru64's cc and ICC support -MD to output dependencies as a
4531 # side effect of compilation, but ICC will put the dependencies in
4532 # the current directory while Tru64 will put them in the object
4533 # directory.
4534 mkdir sub
4535
4536 am_cv_CC_dependencies_compiler_type=none
4537 if test "$am_compiler_list" = ""; then
4538 am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
4539 fi
4540 am__universal=false
4541 case " $depcc " in #(
4542 *\ -arch\ *\ -arch\ *) am__universal=true ;;
4543 esac
4544
4545 for depmode in $am_compiler_list; do
4546 # Setup a source with many dependencies, because some compilers
4547 # like to wrap large dependency lists on column 80 (with \), and
4548 # we should not choose a depcomp mode which is confused by this.
4549 #
4550 # We need to recreate these files for each test, as the compiler may
4551 # overwrite some of them when testing with obscure command lines.
4552 # This happens at least with the AIX C compiler.
4553 : > sub/conftest.c
4554 for i in 1 2 3 4 5 6; do
4555 echo '#include "conftst'$i'.h"' >> sub/conftest.c
4556 # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
4557 # Solaris 10 /bin/sh.
4558 echo '/* dummy */' > sub/conftst$i.h
4559 done
4560 echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
4561
4562 # We check with '-c' and '-o' for the sake of the "dashmstdout"
4563 # mode. It turns out that the SunPro C++ compiler does not properly
4564 # handle '-M -o', and we need to detect this. Also, some Intel
4565 # versions had trouble with output in subdirs.
4566 am__obj=sub/conftest.${OBJEXT-o}
4567 am__minus_obj="-o $am__obj"
4568 case $depmode in
4569 gcc)
4570 # This depmode causes a compiler race in universal mode.
4571 test "$am__universal" = false || continue
4572 ;;
4573 nosideeffect)
4574 # After this tag, mechanisms are not by side-effect, so they'll
4575 # only be used when explicitly requested.
4576 if test "x$enable_dependency_tracking" = xyes; then
4577 continue
4578 else
4579 break
4580 fi
4581 ;;
4582 msvc7 | msvc7msys | msvisualcpp | msvcmsys)
4583 # This compiler won't grok '-c -o', but also, the minuso test has
4584 # not run yet. These depmodes are late enough in the game, and
4585 # so weak that their functioning should not be impacted.
4586 am__obj=conftest.${OBJEXT-o}
4587 am__minus_obj=
4588 ;;
4589 none) break ;;
4590 esac
4591 if depmode=$depmode \
4592 source=sub/conftest.c object=$am__obj \
4593 depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
4594 $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
4595 >/dev/null 2>conftest.err &&
4596 grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
4597 grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
4598 grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
4599 ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
4600 # icc doesn't choke on unknown options, it will just issue warnings
4601 # or remarks (even with -Werror). So we grep stderr for any message
4602 # that says an option was ignored or not supported.
4603 # When given -MP, icc 7.0 and 7.1 complain thusly:
4604 # icc: Command line warning: ignoring option '-M'; no argument required
4605 # The diagnosis changed in icc 8.0:
4606 # icc: Command line remark: option '-MP' not supported
4607 if (grep 'ignoring option' conftest.err ||
4608 grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
4609 am_cv_CC_dependencies_compiler_type=$depmode
4610 break
4611 fi
4612 fi
4613 done
4614
4615 cd ..
4616 rm -rf conftest.dir
4617 else
4618 am_cv_CC_dependencies_compiler_type=none
4619 fi
4620
4621 fi
4622 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
4623 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
4624 CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
4625
4626 if
4627 test "x$enable_dependency_tracking" != xno \
4628 && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
4629 am__fastdepCC_TRUE=
4630 am__fastdepCC_FALSE='#'
4631 else
4632 am__fastdepCC_TRUE='#'
4633 am__fastdepCC_FALSE=
4634 fi
4635
4636
4637 if test -n "$ac_tool_prefix"; then
4638 # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
4639 set dummy ${ac_tool_prefix}ranlib; ac_word=$2
4640 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4641 $as_echo_n "checking for $ac_word... " >&6; }
4642 if ${ac_cv_prog_RANLIB+:} false; then :
4643 $as_echo_n "(cached) " >&6
4644 else
4645 if test -n "$RANLIB"; then
4646 ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
4647 else
4648 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4649 for as_dir in $PATH
4650 do
4651 IFS=$as_save_IFS
4652 test -z "$as_dir" && as_dir=.
4653 for ac_exec_ext in '' $ac_executable_extensions; do
4654 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4655 ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
4656 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4657 break 2
4658 fi
4659 done
4660 done
4661 IFS=$as_save_IFS
4662
4663 fi
4664 fi
4665 RANLIB=$ac_cv_prog_RANLIB
4666 if test -n "$RANLIB"; then
4667 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
4668 $as_echo "$RANLIB" >&6; }
4669 else
4670 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4671 $as_echo "no" >&6; }
4672 fi
4673
4674
4675 fi
4676 if test -z "$ac_cv_prog_RANLIB"; then
4677 ac_ct_RANLIB=$RANLIB
4678 # Extract the first word of "ranlib", so it can be a program name with args.
4679 set dummy ranlib; ac_word=$2
4680 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
4681 $as_echo_n "checking for $ac_word... " >&6; }
4682 if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
4683 $as_echo_n "(cached) " >&6
4684 else
4685 if test -n "$ac_ct_RANLIB"; then
4686 ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
4687 else
4688 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4689 for as_dir in $PATH
4690 do
4691 IFS=$as_save_IFS
4692 test -z "$as_dir" && as_dir=.
4693 for ac_exec_ext in '' $ac_executable_extensions; do
4694 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
4695 ac_cv_prog_ac_ct_RANLIB="ranlib"
4696 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
4697 break 2
4698 fi
4699 done
4700 done
4701 IFS=$as_save_IFS
4702
4703 fi
4704 fi
4705 ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
4706 if test -n "$ac_ct_RANLIB"; then
4707 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
4708 $as_echo "$ac_ct_RANLIB" >&6; }
4709 else
4710 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
4711 $as_echo "no" >&6; }
4712 fi
4713
4714 if test "x$ac_ct_RANLIB" = x; then
4715 RANLIB=":"
4716 else
4717 case $cross_compiling:$ac_tool_warned in
4718 yes:)
4719 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
4720 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
4721 ac_tool_warned=yes ;;
4722 esac
4723 RANLIB=$ac_ct_RANLIB
4724 fi
4725 else
4726 RANLIB="$ac_cv_prog_RANLIB"
4727 fi
4728
4729 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
4730 $as_echo_n "checking whether ln -s works... " >&6; }
4731 LN_S=$as_ln_s
4732 if test "$LN_S" = "ln -s"; then
4733 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
4734 $as_echo "yes" >&6; }
4735 else
4736 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
4737 $as_echo "no, using $LN_S" >&6; }
4738 fi
4739
4740
4741 ac_config_headers="$ac_config_headers config.h:config.hin"
4742
4743
4744
4745 case `pwd` in
4746 *\ * | *\ *)
4747 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
4748 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
4749 esac
4750
4751
4752
4753 macro_version='2.4.2'
4754 macro_revision='1.3337'
4755
4756
4757
4758
4759
4760
4761
4762
4763
4764
4765
4766
4767
4768 ltmain="$ac_aux_dir/ltmain.sh"
4769
4770 # Make sure we can run config.sub.
4771 $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
4772 as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
4773
4774 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
4775 $as_echo_n "checking build system type... " >&6; }
4776 if ${ac_cv_build+:} false; then :
4777 $as_echo_n "(cached) " >&6
4778 else
4779 ac_build_alias=$build_alias
4780 test "x$ac_build_alias" = x &&
4781 ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
4782 test "x$ac_build_alias" = x &&
4783 as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
4784 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
4785 as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
4786
4787 fi
4788 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
4789 $as_echo "$ac_cv_build" >&6; }
4790 case $ac_cv_build in
4791 *-*-*) ;;
4792 *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
4793 esac
4794 build=$ac_cv_build
4795 ac_save_IFS=$IFS; IFS='-'
4796 set x $ac_cv_build
4797 shift
4798 build_cpu=$1
4799 build_vendor=$2
4800 shift; shift
4801 # Remember, the first character of IFS is used to create $*,
4802 # except with old shells:
4803 build_os=$*
4804 IFS=$ac_save_IFS
4805 case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
4806
4807
4808 { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
4809 $as_echo_n "checking host system type... " >&6; }
4810 if ${ac_cv_host+:} false; then :
4811 $as_echo_n "(cached) " >&6
4812 else
4813 if test "x$host_alias" = x; then
4814 ac_cv_host=$ac_cv_build
4815 else
4816 ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
4817 as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
4818 fi
4819
4820 fi
4821 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
4822 $as_echo "$ac_cv_host" >&6; }
4823 case $ac_cv_host in
4824 *-*-*) ;;
4825 *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
4826 esac
4827 host=$ac_cv_host
4828 ac_save_IFS=$IFS; IFS='-'
4829 set x $ac_cv_host
4830 shift
4831 host_cpu=$1
4832 host_vendor=$2
4833 shift; shift
4834 # Remember, the first character of IFS is used to create $*,
4835 # except with old shells:
4836 host_os=$*
4837 IFS=$ac_save_IFS
4838 case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
4839
4840
4841 # Backslashify metacharacters that are still active within
4842 # double-quoted strings.
4843 sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
4844
4845 # Same as above, but do not quote variable references.
4846 double_quote_subst='s/\(["`\\]\)/\\\1/g'
4847
4848 # Sed substitution to delay expansion of an escaped shell variable in a
4849 # double_quote_subst'ed string.
4850 delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
4851
4852 # Sed substitution to delay expansion of an escaped single quote.
4853 delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
4854
4855 # Sed substitution to avoid accidental globbing in evaled expressions
4856 no_glob_subst='s/\*/\\\*/g'
4857
4858 ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
4859 ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
4860 ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
4861
4862 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
4863 $as_echo_n "checking how to print strings... " >&6; }
4864 # Test print first, because it will be a builtin if present.
4865 if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
4866 test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
4867 ECHO='print -r --'
4868 elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
4869 ECHO='printf %s\n'
4870 else
4871 # Use this function as a fallback that always works.
4872 func_fallback_echo ()
4873 {
4874 eval 'cat <<_LTECHO_EOF
4875 $1
4876 _LTECHO_EOF'
4877 }
4878 ECHO='func_fallback_echo'
4879 fi
4880
4881 # func_echo_all arg...
4882 # Invoke $ECHO with all args, space-separated.
4883 func_echo_all ()
4884 {
4885 $ECHO ""
4886 }
4887
4888 case "$ECHO" in
4889 printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
4890 $as_echo "printf" >&6; } ;;
4891 print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
4892 $as_echo "print -r" >&6; } ;;
4893 *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
4894 $as_echo "cat" >&6; } ;;
4895 esac
4896
4897
4898
4899
4900
4901
4902
4903
4904
4905
4906
4907
4908
4909
4910 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
4911 $as_echo_n "checking for a sed that does not truncate output... " >&6; }
4912 if ${ac_cv_path_SED+:} false; then :
4913 $as_echo_n "(cached) " >&6
4914 else
4915 ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
4916 for ac_i in 1 2 3 4 5 6 7; do
4917 ac_script="$ac_script$as_nl$ac_script"
4918 done
4919 echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
4920 { ac_script=; unset ac_script;}
4921 if test -z "$SED"; then
4922 ac_path_SED_found=false
4923 # Loop through the user's path and test for each of PROGNAME-LIST
4924 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4925 for as_dir in $PATH
4926 do
4927 IFS=$as_save_IFS
4928 test -z "$as_dir" && as_dir=.
4929 for ac_prog in sed gsed; do
4930 for ac_exec_ext in '' $ac_executable_extensions; do
4931 ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
4932 as_fn_executable_p "$ac_path_SED" || continue
4933 # Check for GNU ac_path_SED and select it if it is found.
4934 # Check for GNU $ac_path_SED
4935 case `"$ac_path_SED" --version 2>&1` in
4936 *GNU*)
4937 ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
4938 *)
4939 ac_count=0
4940 $as_echo_n 0123456789 >"conftest.in"
4941 while :
4942 do
4943 cat "conftest.in" "conftest.in" >"conftest.tmp"
4944 mv "conftest.tmp" "conftest.in"
4945 cp "conftest.in" "conftest.nl"
4946 $as_echo '' >> "conftest.nl"
4947 "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
4948 diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
4949 as_fn_arith $ac_count + 1 && ac_count=$as_val
4950 if test $ac_count -gt ${ac_path_SED_max-0}; then
4951 # Best one so far, save it but keep looking for a better one
4952 ac_cv_path_SED="$ac_path_SED"
4953 ac_path_SED_max=$ac_count
4954 fi
4955 # 10*(2^10) chars as input seems more than enough
4956 test $ac_count -gt 10 && break
4957 done
4958 rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
4959 esac
4960
4961 $ac_path_SED_found && break 3
4962 done
4963 done
4964 done
4965 IFS=$as_save_IFS
4966 if test -z "$ac_cv_path_SED"; then
4967 as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
4968 fi
4969 else
4970 ac_cv_path_SED=$SED
4971 fi
4972
4973 fi
4974 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
4975 $as_echo "$ac_cv_path_SED" >&6; }
4976 SED="$ac_cv_path_SED"
4977 rm -f conftest.sed
4978
4979 test -z "$SED" && SED=sed
4980 Xsed="$SED -e 1s/^X//"
4981
4982
4983
4984
4985
4986
4987
4988
4989
4990
4991
4992 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
4993 $as_echo_n "checking for grep that handles long lines and -e... " >&6; }
4994 if ${ac_cv_path_GREP+:} false; then :
4995 $as_echo_n "(cached) " >&6
4996 else
4997 if test -z "$GREP"; then
4998 ac_path_GREP_found=false
4999 # Loop through the user's path and test for each of PROGNAME-LIST
5000 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5001 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
5002 do
5003 IFS=$as_save_IFS
5004 test -z "$as_dir" && as_dir=.
5005 for ac_prog in grep ggrep; do
5006 for ac_exec_ext in '' $ac_executable_extensions; do
5007 ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
5008 as_fn_executable_p "$ac_path_GREP" || continue
5009 # Check for GNU ac_path_GREP and select it if it is found.
5010 # Check for GNU $ac_path_GREP
5011 case `"$ac_path_GREP" --version 2>&1` in
5012 *GNU*)
5013 ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
5014 *)
5015 ac_count=0
5016 $as_echo_n 0123456789 >"conftest.in"
5017 while :
5018 do
5019 cat "conftest.in" "conftest.in" >"conftest.tmp"
5020 mv "conftest.tmp" "conftest.in"
5021 cp "conftest.in" "conftest.nl"
5022 $as_echo 'GREP' >> "conftest.nl"
5023 "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
5024 diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
5025 as_fn_arith $ac_count + 1 && ac_count=$as_val
5026 if test $ac_count -gt ${ac_path_GREP_max-0}; then
5027 # Best one so far, save it but keep looking for a better one
5028 ac_cv_path_GREP="$ac_path_GREP"
5029 ac_path_GREP_max=$ac_count
5030 fi
5031 # 10*(2^10) chars as input seems more than enough
5032 test $ac_count -gt 10 && break
5033 done
5034 rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
5035 esac
5036
5037 $ac_path_GREP_found && break 3
5038 done
5039 done
5040 done
5041 IFS=$as_save_IFS
5042 if test -z "$ac_cv_path_GREP"; then
5043 as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
5044 fi
5045 else
5046 ac_cv_path_GREP=$GREP
5047 fi
5048
5049 fi
5050 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
5051 $as_echo "$ac_cv_path_GREP" >&6; }
5052 GREP="$ac_cv_path_GREP"
5053
5054
5055 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
5056 $as_echo_n "checking for egrep... " >&6; }
5057 if ${ac_cv_path_EGREP+:} false; then :
5058 $as_echo_n "(cached) " >&6
5059 else
5060 if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
5061 then ac_cv_path_EGREP="$GREP -E"
5062 else
5063 if test -z "$EGREP"; then
5064 ac_path_EGREP_found=false
5065 # Loop through the user's path and test for each of PROGNAME-LIST
5066 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5067 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
5068 do
5069 IFS=$as_save_IFS
5070 test -z "$as_dir" && as_dir=.
5071 for ac_prog in egrep; do
5072 for ac_exec_ext in '' $ac_executable_extensions; do
5073 ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
5074 as_fn_executable_p "$ac_path_EGREP" || continue
5075 # Check for GNU ac_path_EGREP and select it if it is found.
5076 # Check for GNU $ac_path_EGREP
5077 case `"$ac_path_EGREP" --version 2>&1` in
5078 *GNU*)
5079 ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
5080 *)
5081 ac_count=0
5082 $as_echo_n 0123456789 >"conftest.in"
5083 while :
5084 do
5085 cat "conftest.in" "conftest.in" >"conftest.tmp"
5086 mv "conftest.tmp" "conftest.in"
5087 cp "conftest.in" "conftest.nl"
5088 $as_echo 'EGREP' >> "conftest.nl"
5089 "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
5090 diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
5091 as_fn_arith $ac_count + 1 && ac_count=$as_val
5092 if test $ac_count -gt ${ac_path_EGREP_max-0}; then
5093 # Best one so far, save it but keep looking for a better one
5094 ac_cv_path_EGREP="$ac_path_EGREP"
5095 ac_path_EGREP_max=$ac_count
5096 fi
5097 # 10*(2^10) chars as input seems more than enough
5098 test $ac_count -gt 10 && break
5099 done
5100 rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
5101 esac
5102
5103 $ac_path_EGREP_found && break 3
5104 done
5105 done
5106 done
5107 IFS=$as_save_IFS
5108 if test -z "$ac_cv_path_EGREP"; then
5109 as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
5110 fi
5111 else
5112 ac_cv_path_EGREP=$EGREP
5113 fi
5114
5115 fi
5116 fi
5117 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
5118 $as_echo "$ac_cv_path_EGREP" >&6; }
5119 EGREP="$ac_cv_path_EGREP"
5120
5121
5122 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
5123 $as_echo_n "checking for fgrep... " >&6; }
5124 if ${ac_cv_path_FGREP+:} false; then :
5125 $as_echo_n "(cached) " >&6
5126 else
5127 if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
5128 then ac_cv_path_FGREP="$GREP -F"
5129 else
5130 if test -z "$FGREP"; then
5131 ac_path_FGREP_found=false
5132 # Loop through the user's path and test for each of PROGNAME-LIST
5133 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5134 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
5135 do
5136 IFS=$as_save_IFS
5137 test -z "$as_dir" && as_dir=.
5138 for ac_prog in fgrep; do
5139 for ac_exec_ext in '' $ac_executable_extensions; do
5140 ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
5141 as_fn_executable_p "$ac_path_FGREP" || continue
5142 # Check for GNU ac_path_FGREP and select it if it is found.
5143 # Check for GNU $ac_path_FGREP
5144 case `"$ac_path_FGREP" --version 2>&1` in
5145 *GNU*)
5146 ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
5147 *)
5148 ac_count=0
5149 $as_echo_n 0123456789 >"conftest.in"
5150 while :
5151 do
5152 cat "conftest.in" "conftest.in" >"conftest.tmp"
5153 mv "conftest.tmp" "conftest.in"
5154 cp "conftest.in" "conftest.nl"
5155 $as_echo 'FGREP' >> "conftest.nl"
5156 "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
5157 diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
5158 as_fn_arith $ac_count + 1 && ac_count=$as_val
5159 if test $ac_count -gt ${ac_path_FGREP_max-0}; then
5160 # Best one so far, save it but keep looking for a better one
5161 ac_cv_path_FGREP="$ac_path_FGREP"
5162 ac_path_FGREP_max=$ac_count
5163 fi
5164 # 10*(2^10) chars as input seems more than enough
5165 test $ac_count -gt 10 && break
5166 done
5167 rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
5168 esac
5169
5170 $ac_path_FGREP_found && break 3
5171 done
5172 done
5173 done
5174 IFS=$as_save_IFS
5175 if test -z "$ac_cv_path_FGREP"; then
5176 as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
5177 fi
5178 else
5179 ac_cv_path_FGREP=$FGREP
5180 fi
5181
5182 fi
5183 fi
5184 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
5185 $as_echo "$ac_cv_path_FGREP" >&6; }
5186 FGREP="$ac_cv_path_FGREP"
5187
5188
5189 test -z "$GREP" && GREP=grep
5190
5191
5192
5193
5194
5195
5196
5197
5198
5199
5200
5201
5202
5203
5204
5205
5206
5207
5208
5209 # Check whether --with-gnu-ld was given.
5210 if test "${with_gnu_ld+set}" = set; then :
5211 withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
5212 else
5213 with_gnu_ld=no
5214 fi
5215
5216 ac_prog=ld
5217 if test "$GCC" = yes; then
5218 # Check if gcc -print-prog-name=ld gives a path.
5219 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
5220 $as_echo_n "checking for ld used by $CC... " >&6; }
5221 case $host in
5222 *-*-mingw*)
5223 # gcc leaves a trailing carriage return which upsets mingw
5224 ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
5225 *)
5226 ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
5227 esac
5228 case $ac_prog in
5229 # Accept absolute paths.
5230 [\\/]* | ?:[\\/]*)
5231 re_direlt='/[^/][^/]*/\.\./'
5232 # Canonicalize the pathname of ld
5233 ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
5234 while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
5235 ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
5236 done
5237 test -z "$LD" && LD="$ac_prog"
5238 ;;
5239 "")
5240 # If it fails, then pretend we aren't using GCC.
5241 ac_prog=ld
5242 ;;
5243 *)
5244 # If it is relative, then search for the first ld in PATH.
5245 with_gnu_ld=unknown
5246 ;;
5247 esac
5248 elif test "$with_gnu_ld" = yes; then
5249 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
5250 $as_echo_n "checking for GNU ld... " >&6; }
5251 else
5252 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
5253 $as_echo_n "checking for non-GNU ld... " >&6; }
5254 fi
5255 if ${lt_cv_path_LD+:} false; then :
5256 $as_echo_n "(cached) " >&6
5257 else
5258 if test -z "$LD"; then
5259 lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
5260 for ac_dir in $PATH; do
5261 IFS="$lt_save_ifs"
5262 test -z "$ac_dir" && ac_dir=.
5263 if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
5264 lt_cv_path_LD="$ac_dir/$ac_prog"
5265 # Check to see if the program is GNU ld. I'd rather use --version,
5266 # but apparently some variants of GNU ld only accept -v.
5267 # Break only if it was the GNU/non-GNU ld that we prefer.
5268 case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
5269 *GNU* | *'with BFD'*)
5270 test "$with_gnu_ld" != no && break
5271 ;;
5272 *)
5273 test "$with_gnu_ld" != yes && break
5274 ;;
5275 esac
5276 fi
5277 done
5278 IFS="$lt_save_ifs"
5279 else
5280 lt_cv_path_LD="$LD" # Let the user override the test with a path.
5281 fi
5282 fi
5283
5284 LD="$lt_cv_path_LD"
5285 if test -n "$LD"; then
5286 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
5287 $as_echo "$LD" >&6; }
5288 else
5289 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
5290 $as_echo "no" >&6; }
5291 fi
5292 test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
5293 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
5294 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
5295 if ${lt_cv_prog_gnu_ld+:} false; then :
5296 $as_echo_n "(cached) " >&6
5297 else
5298 # I'd rather use --version here, but apparently some GNU lds only accept -v.
5299 case `$LD -v 2>&1 </dev/null` in
5300 *GNU* | *'with BFD'*)
5301 lt_cv_prog_gnu_ld=yes
5302 ;;
5303 *)
5304 lt_cv_prog_gnu_ld=no
5305 ;;
5306 esac
5307 fi
5308 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
5309 $as_echo "$lt_cv_prog_gnu_ld" >&6; }
5310 with_gnu_ld=$lt_cv_prog_gnu_ld
5311
5312
5313
5314
5315
5316
5317
5318
5319
5320 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
5321 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
5322 if ${lt_cv_path_NM+:} false; then :
5323 $as_echo_n "(cached) " >&6
5324 else
5325 if test -n "$NM"; then
5326 # Let the user override the test.
5327 lt_cv_path_NM="$NM"
5328 else
5329 lt_nm_to_check="${ac_tool_prefix}nm"
5330 if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
5331 lt_nm_to_check="$lt_nm_to_check nm"
5332 fi
5333 for lt_tmp_nm in $lt_nm_to_check; do
5334 lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
5335 for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
5336 IFS="$lt_save_ifs"
5337 test -z "$ac_dir" && ac_dir=.
5338 tmp_nm="$ac_dir/$lt_tmp_nm"
5339 if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
5340 # Check to see if the nm accepts a BSD-compat flag.
5341 # Adding the `sed 1q' prevents false positives on HP-UX, which says:
5342 # nm: unknown option "B" ignored
5343 # Tru64's nm complains that /dev/null is an invalid object file
5344 case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
5345 */dev/null* | *'Invalid file or object type'*)
5346 lt_cv_path_NM="$tmp_nm -B"
5347 break
5348 ;;
5349 *)
5350 case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
5351 */dev/null*)
5352 lt_cv_path_NM="$tmp_nm -p"
5353 break
5354 ;;
5355 *)
5356 lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
5357 continue # so that we can try to find one that supports BSD flags
5358 ;;
5359 esac
5360 ;;
5361 esac
5362 fi
5363 done
5364 IFS="$lt_save_ifs"
5365 done
5366 : ${lt_cv_path_NM=no}
5367 fi
5368 fi
5369 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
5370 $as_echo "$lt_cv_path_NM" >&6; }
5371 if test "$lt_cv_path_NM" != "no"; then
5372 NM="$lt_cv_path_NM"
5373 else
5374 # Didn't find any BSD compatible name lister, look for dumpbin.
5375 if test -n "$DUMPBIN"; then :
5376 # Let the user override the test.
5377 else
5378 if test -n "$ac_tool_prefix"; then
5379 for ac_prog in dumpbin "link -dump"
5380 do
5381 # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
5382 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
5383 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
5384 $as_echo_n "checking for $ac_word... " >&6; }
5385 if ${ac_cv_prog_DUMPBIN+:} false; then :
5386 $as_echo_n "(cached) " >&6
5387 else
5388 if test -n "$DUMPBIN"; then
5389 ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
5390 else
5391 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5392 for as_dir in $PATH
5393 do
5394 IFS=$as_save_IFS
5395 test -z "$as_dir" && as_dir=.
5396 for ac_exec_ext in '' $ac_executable_extensions; do
5397 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
5398 ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
5399 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
5400 break 2
5401 fi
5402 done
5403 done
5404 IFS=$as_save_IFS
5405
5406 fi
5407 fi
5408 DUMPBIN=$ac_cv_prog_DUMPBIN
5409 if test -n "$DUMPBIN"; then
5410 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
5411 $as_echo "$DUMPBIN" >&6; }
5412 else
5413 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
5414 $as_echo "no" >&6; }
5415 fi
5416
5417
5418 test -n "$DUMPBIN" && break
5419 done
5420 fi
5421 if test -z "$DUMPBIN"; then
5422 ac_ct_DUMPBIN=$DUMPBIN
5423 for ac_prog in dumpbin "link -dump"
5424 do
5425 # Extract the first word of "$ac_prog", so it can be a program name with args.
5426 set dummy $ac_prog; ac_word=$2
5427 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
5428 $as_echo_n "checking for $ac_word... " >&6; }
5429 if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
5430 $as_echo_n "(cached) " >&6
5431 else
5432 if test -n "$ac_ct_DUMPBIN"; then
5433 ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
5434 else
5435 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5436 for as_dir in $PATH
5437 do
5438 IFS=$as_save_IFS
5439 test -z "$as_dir" && as_dir=.
5440 for ac_exec_ext in '' $ac_executable_extensions; do
5441 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
5442 ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
5443 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
5444 break 2
5445 fi
5446 done
5447 done
5448 IFS=$as_save_IFS
5449
5450 fi
5451 fi
5452 ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
5453 if test -n "$ac_ct_DUMPBIN"; then
5454 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
5455 $as_echo "$ac_ct_DUMPBIN" >&6; }
5456 else
5457 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
5458 $as_echo "no" >&6; }
5459 fi
5460
5461
5462 test -n "$ac_ct_DUMPBIN" && break
5463 done
5464
5465 if test "x$ac_ct_DUMPBIN" = x; then
5466 DUMPBIN=":"
5467 else
5468 case $cross_compiling:$ac_tool_warned in
5469 yes:)
5470 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
5471 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
5472 ac_tool_warned=yes ;;
5473 esac
5474 DUMPBIN=$ac_ct_DUMPBIN
5475 fi
5476 fi
5477
5478 case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
5479 *COFF*)
5480 DUMPBIN="$DUMPBIN -symbols"
5481 ;;
5482 *)
5483 DUMPBIN=:
5484 ;;
5485 esac
5486 fi
5487
5488 if test "$DUMPBIN" != ":"; then
5489 NM="$DUMPBIN"
5490 fi
5491 fi
5492 test -z "$NM" && NM=nm
5493
5494
5495
5496
5497
5498
5499 { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
5500 $as_echo_n "checking the name lister ($NM) interface... " >&6; }
5501 if ${lt_cv_nm_interface+:} false; then :
5502 $as_echo_n "(cached) " >&6
5503 else
5504 lt_cv_nm_interface="BSD nm"
5505 echo "int some_variable = 0;" > conftest.$ac_ext
5506 (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
5507 (eval "$ac_compile" 2>conftest.err)
5508 cat conftest.err >&5
5509 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
5510 (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
5511 cat conftest.err >&5
5512 (eval echo "\"\$as_me:$LINENO: output\"" >&5)
5513 cat conftest.out >&5
5514 if $GREP 'External.*some_variable' conftest.out > /dev/null; then
5515 lt_cv_nm_interface="MS dumpbin"
5516 fi
5517 rm -f conftest*
5518 fi
5519 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
5520 $as_echo "$lt_cv_nm_interface" >&6; }
5521
5522 # find the maximum length of command line arguments
5523 { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
5524 $as_echo_n "checking the maximum length of command line arguments... " >&6; }
5525 if ${lt_cv_sys_max_cmd_len+:} false; then :
5526 $as_echo_n "(cached) " >&6
5527 else
5528 i=0
5529 teststring="ABCD"
5530
5531 case $build_os in
5532 msdosdjgpp*)
5533 # On DJGPP, this test can blow up pretty badly due to problems in libc
5534 # (any single argument exceeding 2000 bytes causes a buffer overrun
5535 # during glob expansion). Even if it were fixed, the result of this
5536 # check would be larger than it should be.
5537 lt_cv_sys_max_cmd_len=12288; # 12K is about right
5538 ;;
5539
5540 gnu*)
5541 # Under GNU Hurd, this test is not required because there is
5542 # no limit to the length of command line arguments.
5543 # Libtool will interpret -1 as no limit whatsoever
5544 lt_cv_sys_max_cmd_len=-1;
5545 ;;
5546
5547 cygwin* | mingw* | cegcc*)
5548 # On Win9x/ME, this test blows up -- it succeeds, but takes
5549 # about 5 minutes as the teststring grows exponentially.
5550 # Worse, since 9x/ME are not pre-emptively multitasking,
5551 # you end up with a "frozen" computer, even though with patience
5552 # the test eventually succeeds (with a max line length of 256k).
5553 # Instead, let's just punt: use the minimum linelength reported by
5554 # all of the supported platforms: 8192 (on NT/2K/XP).
5555 lt_cv_sys_max_cmd_len=8192;
5556 ;;
5557
5558 mint*)
5559 # On MiNT this can take a long time and run out of memory.
5560 lt_cv_sys_max_cmd_len=8192;
5561 ;;
5562
5563 amigaos*)
5564 # On AmigaOS with pdksh, this test takes hours, literally.
5565 # So we just punt and use a minimum line length of 8192.
5566 lt_cv_sys_max_cmd_len=8192;
5567 ;;
5568
5569 netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
5570 # This has been around since 386BSD, at least. Likely further.
5571 if test -x /sbin/sysctl; then
5572 lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
5573 elif test -x /usr/sbin/sysctl; then
5574 lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
5575 else
5576 lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
5577 fi
5578 # And add a safety zone
5579 lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
5580 lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
5581 ;;
5582
5583 interix*)
5584 # We know the value 262144 and hardcode it with a safety zone (like BSD)
5585 lt_cv_sys_max_cmd_len=196608
5586 ;;
5587
5588 os2*)
5589 # The test takes a long time on OS/2.
5590 lt_cv_sys_max_cmd_len=8192
5591 ;;
5592
5593 osf*)
5594 # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
5595 # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
5596 # nice to cause kernel panics so lets avoid the loop below.
5597 # First set a reasonable default.
5598 lt_cv_sys_max_cmd_len=16384
5599 #
5600 if test -x /sbin/sysconfig; then
5601 case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
5602 *1*) lt_cv_sys_max_cmd_len=-1 ;;
5603 esac
5604 fi
5605 ;;
5606 sco3.2v5*)
5607 lt_cv_sys_max_cmd_len=102400
5608 ;;
5609 sysv5* | sco5v6* | sysv4.2uw2*)
5610 kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
5611 if test -n "$kargmax"; then
5612 lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'`
5613 else
5614 lt_cv_sys_max_cmd_len=32768
5615 fi
5616 ;;
5617 *)
5618 lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
5619 if test -n "$lt_cv_sys_max_cmd_len"; then
5620 lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
5621 lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
5622 else
5623 # Make teststring a little bigger before we do anything with it.
5624 # a 1K string should be a reasonable start.
5625 for i in 1 2 3 4 5 6 7 8 ; do
5626 teststring=$teststring$teststring
5627 done
5628 SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
5629 # If test is not a shell built-in, we'll probably end up computing a
5630 # maximum length that is only half of the actual maximum length, but
5631 # we can't tell.
5632 while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
5633 = "X$teststring$teststring"; } >/dev/null 2>&1 &&
5634 test $i != 17 # 1/2 MB should be enough
5635 do
5636 i=`expr $i + 1`
5637 teststring=$teststring$teststring
5638 done
5639 # Only check the string length outside the loop.
5640 lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
5641 teststring=
5642 # Add a significant safety factor because C++ compilers can tack on
5643 # massive amounts of additional arguments before passing them to the
5644 # linker. It appears as though 1/2 is a usable value.
5645 lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
5646 fi
5647 ;;
5648 esac
5649
5650 fi
5651
5652 if test -n $lt_cv_sys_max_cmd_len ; then
5653 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
5654 $as_echo "$lt_cv_sys_max_cmd_len" >&6; }
5655 else
5656 { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
5657 $as_echo "none" >&6; }
5658 fi
5659 max_cmd_len=$lt_cv_sys_max_cmd_len
5660
5661
5662
5663
5664
5665
5666 : ${CP="cp -f"}
5667 : ${MV="mv -f"}
5668 : ${RM="rm -f"}
5669
5670 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
5671 $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
5672 # Try some XSI features
5673 xsi_shell=no
5674 ( _lt_dummy="a/b/c"
5675 test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
5676 = c,a/b,b/c, \
5677 && eval 'test $(( 1 + 1 )) -eq 2 \
5678 && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
5679 && xsi_shell=yes
5680 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
5681 $as_echo "$xsi_shell" >&6; }
5682
5683
5684 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
5685 $as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
5686 lt_shell_append=no
5687 ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
5688 >/dev/null 2>&1 \
5689 && lt_shell_append=yes
5690 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
5691 $as_echo "$lt_shell_append" >&6; }
5692
5693
5694 if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
5695 lt_unset=unset
5696 else
5697 lt_unset=false
5698 fi
5699
5700
5701
5702
5703
5704 # test EBCDIC or ASCII
5705 case `echo X|tr X '\101'` in
5706 A) # ASCII based system
5707 # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
5708 lt_SP2NL='tr \040 \012'
5709 lt_NL2SP='tr \015\012 \040\040'
5710 ;;
5711 *) # EBCDIC based system
5712 lt_SP2NL='tr \100 \n'
5713 lt_NL2SP='tr \r\n \100\100'
5714 ;;
5715 esac
5716
5717
5718
5719
5720
5721
5722
5723
5724
5725 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
5726 $as_echo_n "checking how to convert $build file names to $host format... " >&6; }
5727 if ${lt_cv_to_host_file_cmd+:} false; then :
5728 $as_echo_n "(cached) " >&6
5729 else
5730 case $host in
5731 *-*-mingw* )
5732 case $build in
5733 *-*-mingw* ) # actually msys
5734 lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
5735 ;;
5736 *-*-cygwin* )
5737 lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
5738 ;;
5739 * ) # otherwise, assume *nix
5740 lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
5741 ;;
5742 esac
5743 ;;
5744 *-*-cygwin* )
5745 case $build in
5746 *-*-mingw* ) # actually msys
5747 lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
5748 ;;
5749 *-*-cygwin* )
5750 lt_cv_to_host_file_cmd=func_convert_file_noop
5751 ;;
5752 * ) # otherwise, assume *nix
5753 lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
5754 ;;
5755 esac
5756 ;;
5757 * ) # unhandled hosts (and "normal" native builds)
5758 lt_cv_to_host_file_cmd=func_convert_file_noop
5759 ;;
5760 esac
5761
5762 fi
5763
5764 to_host_file_cmd=$lt_cv_to_host_file_cmd
5765 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
5766 $as_echo "$lt_cv_to_host_file_cmd" >&6; }
5767
5768
5769
5770
5771
5772 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
5773 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
5774 if ${lt_cv_to_tool_file_cmd+:} false; then :
5775 $as_echo_n "(cached) " >&6
5776 else
5777 #assume ordinary cross tools, or native build.
5778 lt_cv_to_tool_file_cmd=func_convert_file_noop
5779 case $host in
5780 *-*-mingw* )
5781 case $build in
5782 *-*-mingw* ) # actually msys
5783 lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
5784 ;;
5785 esac
5786 ;;
5787 esac
5788
5789 fi
5790
5791 to_tool_file_cmd=$lt_cv_to_tool_file_cmd
5792 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
5793 $as_echo "$lt_cv_to_tool_file_cmd" >&6; }
5794
5795
5796
5797
5798
5799 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
5800 $as_echo_n "checking for $LD option to reload object files... " >&6; }
5801 if ${lt_cv_ld_reload_flag+:} false; then :
5802 $as_echo_n "(cached) " >&6
5803 else
5804 lt_cv_ld_reload_flag='-r'
5805 fi
5806 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
5807 $as_echo "$lt_cv_ld_reload_flag" >&6; }
5808 reload_flag=$lt_cv_ld_reload_flag
5809 case $reload_flag in
5810 "" | " "*) ;;
5811 *) reload_flag=" $reload_flag" ;;
5812 esac
5813 reload_cmds='$LD$reload_flag -o $output$reload_objs'
5814 case $host_os in
5815 cygwin* | mingw* | pw32* | cegcc*)
5816 if test "$GCC" != yes; then
5817 reload_cmds=false
5818 fi
5819 ;;
5820 darwin*)
5821 if test "$GCC" = yes; then
5822 reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
5823 else
5824 reload_cmds='$LD$reload_flag -o $output$reload_objs'
5825 fi
5826 ;;
5827 esac
5828
5829
5830
5831
5832
5833
5834
5835
5836
5837 if test -n "$ac_tool_prefix"; then
5838 # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
5839 set dummy ${ac_tool_prefix}objdump; ac_word=$2
5840 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
5841 $as_echo_n "checking for $ac_word... " >&6; }
5842 if ${ac_cv_prog_OBJDUMP+:} false; then :
5843 $as_echo_n "(cached) " >&6
5844 else
5845 if test -n "$OBJDUMP"; then
5846 ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
5847 else
5848 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5849 for as_dir in $PATH
5850 do
5851 IFS=$as_save_IFS
5852 test -z "$as_dir" && as_dir=.
5853 for ac_exec_ext in '' $ac_executable_extensions; do
5854 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
5855 ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
5856 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
5857 break 2
5858 fi
5859 done
5860 done
5861 IFS=$as_save_IFS
5862
5863 fi
5864 fi
5865 OBJDUMP=$ac_cv_prog_OBJDUMP
5866 if test -n "$OBJDUMP"; then
5867 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
5868 $as_echo "$OBJDUMP" >&6; }
5869 else
5870 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
5871 $as_echo "no" >&6; }
5872 fi
5873
5874
5875 fi
5876 if test -z "$ac_cv_prog_OBJDUMP"; then
5877 ac_ct_OBJDUMP=$OBJDUMP
5878 # Extract the first word of "objdump", so it can be a program name with args.
5879 set dummy objdump; ac_word=$2
5880 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
5881 $as_echo_n "checking for $ac_word... " >&6; }
5882 if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
5883 $as_echo_n "(cached) " >&6
5884 else
5885 if test -n "$ac_ct_OBJDUMP"; then
5886 ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
5887 else
5888 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5889 for as_dir in $PATH
5890 do
5891 IFS=$as_save_IFS
5892 test -z "$as_dir" && as_dir=.
5893 for ac_exec_ext in '' $ac_executable_extensions; do
5894 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
5895 ac_cv_prog_ac_ct_OBJDUMP="objdump"
5896 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
5897 break 2
5898 fi
5899 done
5900 done
5901 IFS=$as_save_IFS
5902
5903 fi
5904 fi
5905 ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
5906 if test -n "$ac_ct_OBJDUMP"; then
5907 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
5908 $as_echo "$ac_ct_OBJDUMP" >&6; }
5909 else
5910 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
5911 $as_echo "no" >&6; }
5912 fi
5913
5914 if test "x$ac_ct_OBJDUMP" = x; then
5915 OBJDUMP="false"
5916 else
5917 case $cross_compiling:$ac_tool_warned in
5918 yes:)
5919 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
5920 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
5921 ac_tool_warned=yes ;;
5922 esac
5923 OBJDUMP=$ac_ct_OBJDUMP
5924 fi
5925 else
5926 OBJDUMP="$ac_cv_prog_OBJDUMP"
5927 fi
5928
5929 test -z "$OBJDUMP" && OBJDUMP=objdump
5930
5931
5932
5933
5934
5935
5936
5937
5938
5939 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
5940 $as_echo_n "checking how to recognize dependent libraries... " >&6; }
5941 if ${lt_cv_deplibs_check_method+:} false; then :
5942 $as_echo_n "(cached) " >&6
5943 else
5944 lt_cv_file_magic_cmd='$MAGIC_CMD'
5945 lt_cv_file_magic_test_file=
5946 lt_cv_deplibs_check_method='unknown'
5947 # Need to set the preceding variable on all platforms that support
5948 # interlibrary dependencies.
5949 # 'none' -- dependencies not supported.
5950 # `unknown' -- same as none, but documents that we really don't know.
5951 # 'pass_all' -- all dependencies passed with no checks.
5952 # 'test_compile' -- check by making test program.
5953 # 'file_magic [[regex]]' -- check by looking for files in library path
5954 # which responds to the $file_magic_cmd with a given extended regex.
5955 # If you have `file' or equivalent on your system and you're not sure
5956 # whether `pass_all' will *always* work, you probably want this one.
5957
5958 case $host_os in
5959 aix[4-9]*)
5960 lt_cv_deplibs_check_method=pass_all
5961 ;;
5962
5963 beos*)
5964 lt_cv_deplibs_check_method=pass_all
5965 ;;
5966
5967 bsdi[45]*)
5968 lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
5969 lt_cv_file_magic_cmd='/usr/bin/file -L'
5970 lt_cv_file_magic_test_file=/shlib/libc.so
5971 ;;
5972
5973 cygwin*)
5974 # func_win32_libid is a shell function defined in ltmain.sh
5975 lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
5976 lt_cv_file_magic_cmd='func_win32_libid'
5977 ;;
5978
5979 mingw* | pw32*)
5980 # Base MSYS/MinGW do not provide the 'file' command needed by
5981 # func_win32_libid shell function, so use a weaker test based on 'objdump',
5982 # unless we find 'file', for example because we are cross-compiling.
5983 # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
5984 if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
5985 lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
5986 lt_cv_file_magic_cmd='func_win32_libid'
5987 else
5988 # Keep this pattern in sync with the one in func_win32_libid.
5989 lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
5990 lt_cv_file_magic_cmd='$OBJDUMP -f'
5991 fi
5992 ;;
5993
5994 cegcc*)
5995 # use the weaker test based on 'objdump'. See mingw*.
5996 lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
5997 lt_cv_file_magic_cmd='$OBJDUMP -f'
5998 ;;
5999
6000 darwin* | rhapsody*)
6001 lt_cv_deplibs_check_method=pass_all
6002 ;;
6003
6004 freebsd* | dragonfly*)
6005 if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
6006 case $host_cpu in
6007 i*86 )
6008 # Not sure whether the presence of OpenBSD here was a mistake.
6009 # Let's accept both of them until this is cleared up.
6010 lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
6011 lt_cv_file_magic_cmd=/usr/bin/file
6012 lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
6013 ;;
6014 esac
6015 else
6016 lt_cv_deplibs_check_method=pass_all
6017 fi
6018 ;;
6019
6020 gnu*)
6021 lt_cv_deplibs_check_method=pass_all
6022 ;;
6023
6024 haiku*)
6025 lt_cv_deplibs_check_method=pass_all
6026 ;;
6027
6028 hpux10.20* | hpux11*)
6029 lt_cv_file_magic_cmd=/usr/bin/file
6030 case $host_cpu in
6031 ia64*)
6032 lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
6033 lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
6034 ;;
6035 hppa*64*)
6036 lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
6037 lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
6038 ;;
6039 *)
6040 lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
6041 lt_cv_file_magic_test_file=/usr/lib/libc.sl
6042 ;;
6043 esac
6044 ;;
6045
6046 interix[3-9]*)
6047 # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
6048 lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
6049 ;;
6050
6051 irix5* | irix6* | nonstopux*)
6052 case $LD in
6053 *-32|*"-32 ") libmagic=32-bit;;
6054 *-n32|*"-n32 ") libmagic=N32;;
6055 *-64|*"-64 ") libmagic=64-bit;;
6056 *) libmagic=never-match;;
6057 esac
6058 lt_cv_deplibs_check_method=pass_all
6059 ;;
6060
6061 # This must be glibc/ELF.
6062 linux* | k*bsd*-gnu | kopensolaris*-gnu)
6063 lt_cv_deplibs_check_method=pass_all
6064 ;;
6065
6066 netbsd*)
6067 if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
6068 lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
6069 else
6070 lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
6071 fi
6072 ;;
6073
6074 newos6*)
6075 lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
6076 lt_cv_file_magic_cmd=/usr/bin/file
6077 lt_cv_file_magic_test_file=/usr/lib/libnls.so
6078 ;;
6079
6080 *nto* | *qnx*)
6081 lt_cv_deplibs_check_method=pass_all
6082 ;;
6083
6084 openbsd*)
6085 if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
6086 lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
6087 else
6088 lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
6089 fi
6090 ;;
6091
6092 osf3* | osf4* | osf5*)
6093 lt_cv_deplibs_check_method=pass_all
6094 ;;
6095
6096 rdos*)
6097 lt_cv_deplibs_check_method=pass_all
6098 ;;
6099
6100 solaris*)
6101 lt_cv_deplibs_check_method=pass_all
6102 ;;
6103
6104 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
6105 lt_cv_deplibs_check_method=pass_all
6106 ;;
6107
6108 sysv4 | sysv4.3*)
6109 case $host_vendor in
6110 motorola)
6111 lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
6112 lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
6113 ;;
6114 ncr)
6115 lt_cv_deplibs_check_method=pass_all
6116 ;;
6117 sequent)
6118 lt_cv_file_magic_cmd='/bin/file'
6119 lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
6120 ;;
6121 sni)
6122 lt_cv_file_magic_cmd='/bin/file'
6123 lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
6124 lt_cv_file_magic_test_file=/lib/libc.so
6125 ;;
6126 siemens)
6127 lt_cv_deplibs_check_method=pass_all
6128 ;;
6129 pc)
6130 lt_cv_deplibs_check_method=pass_all
6131 ;;
6132 esac
6133 ;;
6134
6135 tpf*)
6136 lt_cv_deplibs_check_method=pass_all
6137 ;;
6138 esac
6139
6140 fi
6141 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
6142 $as_echo "$lt_cv_deplibs_check_method" >&6; }
6143
6144 file_magic_glob=
6145 want_nocaseglob=no
6146 if test "$build" = "$host"; then
6147 case $host_os in
6148 mingw* | pw32*)
6149 if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
6150 want_nocaseglob=yes
6151 else
6152 file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
6153 fi
6154 ;;
6155 esac
6156 fi
6157
6158 file_magic_cmd=$lt_cv_file_magic_cmd
6159 deplibs_check_method=$lt_cv_deplibs_check_method
6160 test -z "$deplibs_check_method" && deplibs_check_method=unknown
6161
6162
6163
6164
6165
6166
6167
6168
6169
6170
6171
6172
6173
6174
6175
6176
6177
6178
6179
6180
6181
6182
6183 if test -n "$ac_tool_prefix"; then
6184 # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
6185 set dummy ${ac_tool_prefix}dlltool; ac_word=$2
6186 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
6187 $as_echo_n "checking for $ac_word... " >&6; }
6188 if ${ac_cv_prog_DLLTOOL+:} false; then :
6189 $as_echo_n "(cached) " >&6
6190 else
6191 if test -n "$DLLTOOL"; then
6192 ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
6193 else
6194 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6195 for as_dir in $PATH
6196 do
6197 IFS=$as_save_IFS
6198 test -z "$as_dir" && as_dir=.
6199 for ac_exec_ext in '' $ac_executable_extensions; do
6200 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
6201 ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
6202 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
6203 break 2
6204 fi
6205 done
6206 done
6207 IFS=$as_save_IFS
6208
6209 fi
6210 fi
6211 DLLTOOL=$ac_cv_prog_DLLTOOL
6212 if test -n "$DLLTOOL"; then
6213 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
6214 $as_echo "$DLLTOOL" >&6; }
6215 else
6216 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6217 $as_echo "no" >&6; }
6218 fi
6219
6220
6221 fi
6222 if test -z "$ac_cv_prog_DLLTOOL"; then
6223 ac_ct_DLLTOOL=$DLLTOOL
6224 # Extract the first word of "dlltool", so it can be a program name with args.
6225 set dummy dlltool; ac_word=$2
6226 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
6227 $as_echo_n "checking for $ac_word... " >&6; }
6228 if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
6229 $as_echo_n "(cached) " >&6
6230 else
6231 if test -n "$ac_ct_DLLTOOL"; then
6232 ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
6233 else
6234 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6235 for as_dir in $PATH
6236 do
6237 IFS=$as_save_IFS
6238 test -z "$as_dir" && as_dir=.
6239 for ac_exec_ext in '' $ac_executable_extensions; do
6240 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
6241 ac_cv_prog_ac_ct_DLLTOOL="dlltool"
6242 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
6243 break 2
6244 fi
6245 done
6246 done
6247 IFS=$as_save_IFS
6248
6249 fi
6250 fi
6251 ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
6252 if test -n "$ac_ct_DLLTOOL"; then
6253 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
6254 $as_echo "$ac_ct_DLLTOOL" >&6; }
6255 else
6256 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6257 $as_echo "no" >&6; }
6258 fi
6259
6260 if test "x$ac_ct_DLLTOOL" = x; then
6261 DLLTOOL="false"
6262 else
6263 case $cross_compiling:$ac_tool_warned in
6264 yes:)
6265 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
6266 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
6267 ac_tool_warned=yes ;;
6268 esac
6269 DLLTOOL=$ac_ct_DLLTOOL
6270 fi
6271 else
6272 DLLTOOL="$ac_cv_prog_DLLTOOL"
6273 fi
6274
6275 test -z "$DLLTOOL" && DLLTOOL=dlltool
6276
6277
6278
6279
6280
6281
6282
6283
6284
6285
6286 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
6287 $as_echo_n "checking how to associate runtime and link libraries... " >&6; }
6288 if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
6289 $as_echo_n "(cached) " >&6
6290 else
6291 lt_cv_sharedlib_from_linklib_cmd='unknown'
6292
6293 case $host_os in
6294 cygwin* | mingw* | pw32* | cegcc*)
6295 # two different shell functions defined in ltmain.sh
6296 # decide which to use based on capabilities of $DLLTOOL
6297 case `$DLLTOOL --help 2>&1` in
6298 *--identify-strict*)
6299 lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
6300 ;;
6301 *)
6302 lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
6303 ;;
6304 esac
6305 ;;
6306 *)
6307 # fallback: assume linklib IS sharedlib
6308 lt_cv_sharedlib_from_linklib_cmd="$ECHO"
6309 ;;
6310 esac
6311
6312 fi
6313 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
6314 $as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
6315 sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
6316 test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
6317
6318
6319
6320
6321
6322
6323
6324 if test -n "$ac_tool_prefix"; then
6325 for ac_prog in ar
6326 do
6327 # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
6328 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
6329 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
6330 $as_echo_n "checking for $ac_word... " >&6; }
6331 if ${ac_cv_prog_AR+:} false; then :
6332 $as_echo_n "(cached) " >&6
6333 else
6334 if test -n "$AR"; then
6335 ac_cv_prog_AR="$AR" # Let the user override the test.
6336 else
6337 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6338 for as_dir in $PATH
6339 do
6340 IFS=$as_save_IFS
6341 test -z "$as_dir" && as_dir=.
6342 for ac_exec_ext in '' $ac_executable_extensions; do
6343 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
6344 ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
6345 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
6346 break 2
6347 fi
6348 done
6349 done
6350 IFS=$as_save_IFS
6351
6352 fi
6353 fi
6354 AR=$ac_cv_prog_AR
6355 if test -n "$AR"; then
6356 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
6357 $as_echo "$AR" >&6; }
6358 else
6359 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6360 $as_echo "no" >&6; }
6361 fi
6362
6363
6364 test -n "$AR" && break
6365 done
6366 fi
6367 if test -z "$AR"; then
6368 ac_ct_AR=$AR
6369 for ac_prog in ar
6370 do
6371 # Extract the first word of "$ac_prog", so it can be a program name with args.
6372 set dummy $ac_prog; ac_word=$2
6373 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
6374 $as_echo_n "checking for $ac_word... " >&6; }
6375 if ${ac_cv_prog_ac_ct_AR+:} false; then :
6376 $as_echo_n "(cached) " >&6
6377 else
6378 if test -n "$ac_ct_AR"; then
6379 ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
6380 else
6381 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6382 for as_dir in $PATH
6383 do
6384 IFS=$as_save_IFS
6385 test -z "$as_dir" && as_dir=.
6386 for ac_exec_ext in '' $ac_executable_extensions; do
6387 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
6388 ac_cv_prog_ac_ct_AR="$ac_prog"
6389 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
6390 break 2
6391 fi
6392 done
6393 done
6394 IFS=$as_save_IFS
6395
6396 fi
6397 fi
6398 ac_ct_AR=$ac_cv_prog_ac_ct_AR
6399 if test -n "$ac_ct_AR"; then
6400 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
6401 $as_echo "$ac_ct_AR" >&6; }
6402 else
6403 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6404 $as_echo "no" >&6; }
6405 fi
6406
6407
6408 test -n "$ac_ct_AR" && break
6409 done
6410
6411 if test "x$ac_ct_AR" = x; then
6412 AR="false"
6413 else
6414 case $cross_compiling:$ac_tool_warned in
6415 yes:)
6416 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
6417 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
6418 ac_tool_warned=yes ;;
6419 esac
6420 AR=$ac_ct_AR
6421 fi
6422 fi
6423
6424 : ${AR=ar}
6425 : ${AR_FLAGS=cru}
6426
6427
6428
6429
6430
6431
6432
6433
6434
6435
6436
6437 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
6438 $as_echo_n "checking for archiver @FILE support... " >&6; }
6439 if ${lt_cv_ar_at_file+:} false; then :
6440 $as_echo_n "(cached) " >&6
6441 else
6442 lt_cv_ar_at_file=no
6443 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
6444 /* end confdefs.h. */
6445
6446 int
6447 main ()
6448 {
6449
6450 ;
6451 return 0;
6452 }
6453 _ACEOF
6454 if ac_fn_c_try_compile "$LINENO"; then :
6455 echo conftest.$ac_objext > conftest.lst
6456 lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
6457 { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
6458 (eval $lt_ar_try) 2>&5
6459 ac_status=$?
6460 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
6461 test $ac_status = 0; }
6462 if test "$ac_status" -eq 0; then
6463 # Ensure the archiver fails upon bogus file names.
6464 rm -f conftest.$ac_objext libconftest.a
6465 { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
6466 (eval $lt_ar_try) 2>&5
6467 ac_status=$?
6468 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
6469 test $ac_status = 0; }
6470 if test "$ac_status" -ne 0; then
6471 lt_cv_ar_at_file=@
6472 fi
6473 fi
6474 rm -f conftest.* libconftest.a
6475
6476 fi
6477 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6478
6479 fi
6480 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
6481 $as_echo "$lt_cv_ar_at_file" >&6; }
6482
6483 if test "x$lt_cv_ar_at_file" = xno; then
6484 archiver_list_spec=
6485 else
6486 archiver_list_spec=$lt_cv_ar_at_file
6487 fi
6488
6489
6490
6491
6492
6493
6494
6495 if test -n "$ac_tool_prefix"; then
6496 # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
6497 set dummy ${ac_tool_prefix}strip; ac_word=$2
6498 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
6499 $as_echo_n "checking for $ac_word... " >&6; }
6500 if ${ac_cv_prog_STRIP+:} false; then :
6501 $as_echo_n "(cached) " >&6
6502 else
6503 if test -n "$STRIP"; then
6504 ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
6505 else
6506 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6507 for as_dir in $PATH
6508 do
6509 IFS=$as_save_IFS
6510 test -z "$as_dir" && as_dir=.
6511 for ac_exec_ext in '' $ac_executable_extensions; do
6512 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
6513 ac_cv_prog_STRIP="${ac_tool_prefix}strip"
6514 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
6515 break 2
6516 fi
6517 done
6518 done
6519 IFS=$as_save_IFS
6520
6521 fi
6522 fi
6523 STRIP=$ac_cv_prog_STRIP
6524 if test -n "$STRIP"; then
6525 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
6526 $as_echo "$STRIP" >&6; }
6527 else
6528 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6529 $as_echo "no" >&6; }
6530 fi
6531
6532
6533 fi
6534 if test -z "$ac_cv_prog_STRIP"; then
6535 ac_ct_STRIP=$STRIP
6536 # Extract the first word of "strip", so it can be a program name with args.
6537 set dummy strip; ac_word=$2
6538 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
6539 $as_echo_n "checking for $ac_word... " >&6; }
6540 if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
6541 $as_echo_n "(cached) " >&6
6542 else
6543 if test -n "$ac_ct_STRIP"; then
6544 ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
6545 else
6546 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6547 for as_dir in $PATH
6548 do
6549 IFS=$as_save_IFS
6550 test -z "$as_dir" && as_dir=.
6551 for ac_exec_ext in '' $ac_executable_extensions; do
6552 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
6553 ac_cv_prog_ac_ct_STRIP="strip"
6554 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
6555 break 2
6556 fi
6557 done
6558 done
6559 IFS=$as_save_IFS
6560
6561 fi
6562 fi
6563 ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
6564 if test -n "$ac_ct_STRIP"; then
6565 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
6566 $as_echo "$ac_ct_STRIP" >&6; }
6567 else
6568 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6569 $as_echo "no" >&6; }
6570 fi
6571
6572 if test "x$ac_ct_STRIP" = x; then
6573 STRIP=":"
6574 else
6575 case $cross_compiling:$ac_tool_warned in
6576 yes:)
6577 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
6578 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
6579 ac_tool_warned=yes ;;
6580 esac
6581 STRIP=$ac_ct_STRIP
6582 fi
6583 else
6584 STRIP="$ac_cv_prog_STRIP"
6585 fi
6586
6587 test -z "$STRIP" && STRIP=:
6588
6589
6590
6591
6592
6593
6594 if test -n "$ac_tool_prefix"; then
6595 # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
6596 set dummy ${ac_tool_prefix}ranlib; ac_word=$2
6597 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
6598 $as_echo_n "checking for $ac_word... " >&6; }
6599 if ${ac_cv_prog_RANLIB+:} false; then :
6600 $as_echo_n "(cached) " >&6
6601 else
6602 if test -n "$RANLIB"; then
6603 ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
6604 else
6605 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6606 for as_dir in $PATH
6607 do
6608 IFS=$as_save_IFS
6609 test -z "$as_dir" && as_dir=.
6610 for ac_exec_ext in '' $ac_executable_extensions; do
6611 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
6612 ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
6613 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
6614 break 2
6615 fi
6616 done
6617 done
6618 IFS=$as_save_IFS
6619
6620 fi
6621 fi
6622 RANLIB=$ac_cv_prog_RANLIB
6623 if test -n "$RANLIB"; then
6624 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
6625 $as_echo "$RANLIB" >&6; }
6626 else
6627 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6628 $as_echo "no" >&6; }
6629 fi
6630
6631
6632 fi
6633 if test -z "$ac_cv_prog_RANLIB"; then
6634 ac_ct_RANLIB=$RANLIB
6635 # Extract the first word of "ranlib", so it can be a program name with args.
6636 set dummy ranlib; ac_word=$2
6637 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
6638 $as_echo_n "checking for $ac_word... " >&6; }
6639 if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
6640 $as_echo_n "(cached) " >&6
6641 else
6642 if test -n "$ac_ct_RANLIB"; then
6643 ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
6644 else
6645 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6646 for as_dir in $PATH
6647 do
6648 IFS=$as_save_IFS
6649 test -z "$as_dir" && as_dir=.
6650 for ac_exec_ext in '' $ac_executable_extensions; do
6651 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
6652 ac_cv_prog_ac_ct_RANLIB="ranlib"
6653 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
6654 break 2
6655 fi
6656 done
6657 done
6658 IFS=$as_save_IFS
6659
6660 fi
6661 fi
6662 ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
6663 if test -n "$ac_ct_RANLIB"; then
6664 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
6665 $as_echo "$ac_ct_RANLIB" >&6; }
6666 else
6667 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
6668 $as_echo "no" >&6; }
6669 fi
6670
6671 if test "x$ac_ct_RANLIB" = x; then
6672 RANLIB=":"
6673 else
6674 case $cross_compiling:$ac_tool_warned in
6675 yes:)
6676 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
6677 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
6678 ac_tool_warned=yes ;;
6679 esac
6680 RANLIB=$ac_ct_RANLIB
6681 fi
6682 else
6683 RANLIB="$ac_cv_prog_RANLIB"
6684 fi
6685
6686 test -z "$RANLIB" && RANLIB=:
6687
6688
6689
6690
6691
6692
6693 # Determine commands to create old-style static archives.
6694 old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
6695 old_postinstall_cmds='chmod 644 $oldlib'
6696 old_postuninstall_cmds=
6697
6698 if test -n "$RANLIB"; then
6699 case $host_os in
6700 openbsd*)
6701 old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
6702 ;;
6703 *)
6704 old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
6705 ;;
6706 esac
6707 old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
6708 fi
6709
6710 case $host_os in
6711 darwin*)
6712 lock_old_archive_extraction=yes ;;
6713 *)
6714 lock_old_archive_extraction=no ;;
6715 esac
6716
6717
6718
6719
6720
6721
6722
6723
6724
6725
6726
6727
6728
6729
6730
6731
6732
6733
6734
6735
6736
6737
6738
6739
6740
6741
6742
6743
6744
6745
6746
6747
6748
6749
6750
6751
6752
6753
6754
6755 # If no C compiler was specified, use CC.
6756 LTCC=${LTCC-"$CC"}
6757
6758 # If no C compiler flags were specified, use CFLAGS.
6759 LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
6760
6761 # Allow CC to be a program name with arguments.
6762 compiler=$CC
6763
6764
6765 # Check for command to grab the raw symbol name followed by C symbol from nm.
6766 { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
6767 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
6768 if ${lt_cv_sys_global_symbol_pipe+:} false; then :
6769 $as_echo_n "(cached) " >&6
6770 else
6771
6772 # These are sane defaults that work on at least a few old systems.
6773 # [They come from Ultrix. What could be older than Ultrix?!! ;)]
6774
6775 # Character class describing NM global symbol codes.
6776 symcode='[BCDEGRST]'
6777
6778 # Regexp to match symbols that can be accessed directly from C.
6779 sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
6780
6781 # Define system-specific variables.
6782 case $host_os in
6783 aix*)
6784 symcode='[BCDT]'
6785 ;;
6786 cygwin* | mingw* | pw32* | cegcc*)
6787 symcode='[ABCDGISTW]'
6788 ;;
6789 hpux*)
6790 if test "$host_cpu" = ia64; then
6791 symcode='[ABCDEGRST]'
6792 fi
6793 ;;
6794 irix* | nonstopux*)
6795 symcode='[BCDEGRST]'
6796 ;;
6797 osf*)
6798 symcode='[BCDEGQRST]'
6799 ;;
6800 solaris*)
6801 symcode='[BDRT]'
6802 ;;
6803 sco3.2v5*)
6804 symcode='[DT]'
6805 ;;
6806 sysv4.2uw2*)
6807 symcode='[DT]'
6808 ;;
6809 sysv5* | sco5v6* | unixware* | OpenUNIX*)
6810 symcode='[ABDT]'
6811 ;;
6812 sysv4)
6813 symcode='[DFNSTU]'
6814 ;;
6815 esac
6816
6817 # If we're using GNU nm, then use its standard symbol codes.
6818 case `$NM -V 2>&1` in
6819 *GNU* | *'with BFD'*)
6820 symcode='[ABCDGIRSTW]' ;;
6821 esac
6822
6823 # Transform an extracted symbol line into a proper C declaration.
6824 # Some systems (esp. on ia64) link data and code symbols differently,
6825 # so use this general approach.
6826 lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
6827
6828 # Transform an extracted symbol line into symbol name and symbol address
6829 lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
6830 lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
6831
6832 # Handle CRLF in mingw tool chain
6833 opt_cr=
6834 case $build_os in
6835 mingw*)
6836 opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
6837 ;;
6838 esac
6839
6840 # Try without a prefix underscore, then with it.
6841 for ac_symprfx in "" "_"; do
6842
6843 # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
6844 symxfrm="\\1 $ac_symprfx\\2 \\2"
6845
6846 # Write the raw and C identifiers.
6847 if test "$lt_cv_nm_interface" = "MS dumpbin"; then
6848 # Fake it for dumpbin and say T for any non-static function
6849 # and D for any global variable.
6850 # Also find C++ and __fastcall symbols from MSVC++,
6851 # which start with @ or ?.
6852 lt_cv_sys_global_symbol_pipe="$AWK '"\
6853 " {last_section=section; section=\$ 3};"\
6854 " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
6855 " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
6856 " \$ 0!~/External *\|/{next};"\
6857 " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
6858 " {if(hide[section]) next};"\
6859 " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
6860 " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
6861 " s[1]~/^[@?]/{print s[1], s[1]; next};"\
6862 " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
6863 " ' prfx=^$ac_symprfx"
6864 else
6865 lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
6866 fi
6867 lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
6868
6869 # Check to see that the pipe works correctly.
6870 pipe_works=no
6871
6872 rm -f conftest*
6873 cat > conftest.$ac_ext <<_LT_EOF
6874 #ifdef __cplusplus
6875 extern "C" {
6876 #endif
6877 char nm_test_var;
6878 void nm_test_func(void);
6879 void nm_test_func(void){}
6880 #ifdef __cplusplus
6881 }
6882 #endif
6883 int main(){nm_test_var='a';nm_test_func();return(0);}
6884 _LT_EOF
6885
6886 if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
6887 (eval $ac_compile) 2>&5
6888 ac_status=$?
6889 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
6890 test $ac_status = 0; }; then
6891 # Now try to grab the symbols.
6892 nlist=conftest.nm
6893 if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
6894 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
6895 ac_status=$?
6896 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
6897 test $ac_status = 0; } && test -s "$nlist"; then
6898 # Try sorting and uniquifying the output.
6899 if sort "$nlist" | uniq > "$nlist"T; then
6900 mv -f "$nlist"T "$nlist"
6901 else
6902 rm -f "$nlist"T
6903 fi
6904
6905 # Make sure that we snagged all the symbols we need.
6906 if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
6907 if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
6908 cat <<_LT_EOF > conftest.$ac_ext
6909 /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
6910 #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
6911 /* DATA imports from DLLs on WIN32 con't be const, because runtime
6912 relocations are performed -- see ld's documentation on pseudo-relocs. */
6913 # define LT_DLSYM_CONST
6914 #elif defined(__osf__)
6915 /* This system does not cope well with relocations in const data. */
6916 # define LT_DLSYM_CONST
6917 #else
6918 # define LT_DLSYM_CONST const
6919 #endif
6920
6921 #ifdef __cplusplus
6922 extern "C" {
6923 #endif
6924
6925 _LT_EOF
6926 # Now generate the symbol file.
6927 eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
6928
6929 cat <<_LT_EOF >> conftest.$ac_ext
6930
6931 /* The mapping between symbol names and symbols. */
6932 LT_DLSYM_CONST struct {
6933 const char *name;
6934 void *address;
6935 }
6936 lt__PROGRAM__LTX_preloaded_symbols[] =
6937 {
6938 { "@PROGRAM@", (void *) 0 },
6939 _LT_EOF
6940 $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
6941 cat <<\_LT_EOF >> conftest.$ac_ext
6942 {0, (void *) 0}
6943 };
6944
6945 /* This works around a problem in FreeBSD linker */
6946 #ifdef FREEBSD_WORKAROUND
6947 static const void *lt_preloaded_setup() {
6948 return lt__PROGRAM__LTX_preloaded_symbols;
6949 }
6950 #endif
6951
6952 #ifdef __cplusplus
6953 }
6954 #endif
6955 _LT_EOF
6956 # Now try linking the two files.
6957 mv conftest.$ac_objext conftstm.$ac_objext
6958 lt_globsym_save_LIBS=$LIBS
6959 lt_globsym_save_CFLAGS=$CFLAGS
6960 LIBS="conftstm.$ac_objext"
6961 CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
6962 if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
6963 (eval $ac_link) 2>&5
6964 ac_status=$?
6965 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
6966 test $ac_status = 0; } && test -s conftest${ac_exeext}; then
6967 pipe_works=yes
6968 fi
6969 LIBS=$lt_globsym_save_LIBS
6970 CFLAGS=$lt_globsym_save_CFLAGS
6971 else
6972 echo "cannot find nm_test_func in $nlist" >&5
6973 fi
6974 else
6975 echo "cannot find nm_test_var in $nlist" >&5
6976 fi
6977 else
6978 echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
6979 fi
6980 else
6981 echo "$progname: failed program was:" >&5
6982 cat conftest.$ac_ext >&5
6983 fi
6984 rm -rf conftest* conftst*
6985
6986 # Do not use the global_symbol_pipe unless it works.
6987 if test "$pipe_works" = yes; then
6988 break
6989 else
6990 lt_cv_sys_global_symbol_pipe=
6991 fi
6992 done
6993
6994 fi
6995
6996 if test -z "$lt_cv_sys_global_symbol_pipe"; then
6997 lt_cv_sys_global_symbol_to_cdecl=
6998 fi
6999 if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
7000 { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
7001 $as_echo "failed" >&6; }
7002 else
7003 { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
7004 $as_echo "ok" >&6; }
7005 fi
7006
7007 # Response file support.
7008 if test "$lt_cv_nm_interface" = "MS dumpbin"; then
7009 nm_file_list_spec='@'
7010 elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
7011 nm_file_list_spec='@'
7012 fi
7013
7014
7015
7016
7017
7018
7019
7020
7021
7022
7023
7024
7025
7026
7027
7028
7029
7030
7031
7032
7033
7034
7035
7036
7037
7038
7039
7040 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
7041 $as_echo_n "checking for sysroot... " >&6; }
7042
7043 # Check whether --with-sysroot was given.
7044 if test "${with_sysroot+set}" = set; then :
7045 withval=$with_sysroot;
7046 else
7047 with_sysroot=no
7048 fi
7049
7050
7051 lt_sysroot=
7052 case ${with_sysroot} in #(
7053 yes)
7054 if test "$GCC" = yes; then
7055 lt_sysroot=`$CC --print-sysroot 2>/dev/null`
7056 fi
7057 ;; #(
7058 /*)
7059 lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
7060 ;; #(
7061 no|'')
7062 ;; #(
7063 *)
7064 { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
7065 $as_echo "${with_sysroot}" >&6; }
7066 as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
7067 ;;
7068 esac
7069
7070 { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
7071 $as_echo "${lt_sysroot:-no}" >&6; }
7072
7073
7074
7075
7076
7077 # Check whether --enable-libtool-lock was given.
7078 if test "${enable_libtool_lock+set}" = set; then :
7079 enableval=$enable_libtool_lock;
7080 fi
7081
7082 test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
7083
7084 # Some flags need to be propagated to the compiler or linker for good
7085 # libtool support.
7086 case $host in
7087 ia64-*-hpux*)
7088 # Find out which ABI we are using.
7089 echo 'int i;' > conftest.$ac_ext
7090 if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
7091 (eval $ac_compile) 2>&5
7092 ac_status=$?
7093 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
7094 test $ac_status = 0; }; then
7095 case `/usr/bin/file conftest.$ac_objext` in
7096 *ELF-32*)
7097 HPUX_IA64_MODE="32"
7098 ;;
7099 *ELF-64*)
7100 HPUX_IA64_MODE="64"
7101 ;;
7102 esac
7103 fi
7104 rm -rf conftest*
7105 ;;
7106 *-*-irix6*)
7107 # Find out which ABI we are using.
7108 echo '#line '$LINENO' "configure"' > conftest.$ac_ext
7109 if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
7110 (eval $ac_compile) 2>&5
7111 ac_status=$?
7112 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
7113 test $ac_status = 0; }; then
7114 if test "$lt_cv_prog_gnu_ld" = yes; then
7115 case `/usr/bin/file conftest.$ac_objext` in
7116 *32-bit*)
7117 LD="${LD-ld} -melf32bsmip"
7118 ;;
7119 *N32*)
7120 LD="${LD-ld} -melf32bmipn32"
7121 ;;
7122 *64-bit*)
7123 LD="${LD-ld} -melf64bmip"
7124 ;;
7125 esac
7126 else
7127 case `/usr/bin/file conftest.$ac_objext` in
7128 *32-bit*)
7129 LD="${LD-ld} -32"
7130 ;;
7131 *N32*)
7132 LD="${LD-ld} -n32"
7133 ;;
7134 *64-bit*)
7135 LD="${LD-ld} -64"
7136 ;;
7137 esac
7138 fi
7139 fi
7140 rm -rf conftest*
7141 ;;
7142
7143 x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
7144 s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
7145 # Find out which ABI we are using.
7146 echo 'int i;' > conftest.$ac_ext
7147 if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
7148 (eval $ac_compile) 2>&5
7149 ac_status=$?
7150 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
7151 test $ac_status = 0; }; then
7152 case `/usr/bin/file conftest.o` in
7153 *32-bit*)
7154 case $host in
7155 x86_64-*kfreebsd*-gnu)
7156 LD="${LD-ld} -m elf_i386_fbsd"
7157 ;;
7158 x86_64-*linux*)
7159 LD="${LD-ld} -m elf_i386"
7160 ;;
7161 ppc64-*linux*|powerpc64-*linux*)
7162 LD="${LD-ld} -m elf32ppclinux"
7163 ;;
7164 s390x-*linux*)
7165 LD="${LD-ld} -m elf_s390"
7166 ;;
7167 sparc64-*linux*)
7168 LD="${LD-ld} -m elf32_sparc"
7169 ;;
7170 esac
7171 ;;
7172 *64-bit*)
7173 case $host in
7174 x86_64-*kfreebsd*-gnu)
7175 LD="${LD-ld} -m elf_x86_64_fbsd"
7176 ;;
7177 x86_64-*linux*)
7178 LD="${LD-ld} -m elf_x86_64"
7179 ;;
7180 ppc*-*linux*|powerpc*-*linux*)
7181 LD="${LD-ld} -m elf64ppc"
7182 ;;
7183 s390*-*linux*|s390*-*tpf*)
7184 LD="${LD-ld} -m elf64_s390"
7185 ;;
7186 sparc*-*linux*)
7187 LD="${LD-ld} -m elf64_sparc"
7188 ;;
7189 esac
7190 ;;
7191 esac
7192 fi
7193 rm -rf conftest*
7194 ;;
7195
7196 *-*-sco3.2v5*)
7197 # On SCO OpenServer 5, we need -belf to get full-featured binaries.
7198 SAVE_CFLAGS="$CFLAGS"
7199 CFLAGS="$CFLAGS -belf"
7200 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
7201 $as_echo_n "checking whether the C compiler needs -belf... " >&6; }
7202 if ${lt_cv_cc_needs_belf+:} false; then :
7203 $as_echo_n "(cached) " >&6
7204 else
7205 ac_ext=c
7206 ac_cpp='$CPP $CPPFLAGS'
7207 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
7208 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
7209 ac_compiler_gnu=$ac_cv_c_compiler_gnu
7210
7211 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
7212 /* end confdefs.h. */
7213
7214 int
7215 main ()
7216 {
7217
7218 ;
7219 return 0;
7220 }
7221 _ACEOF
7222 if ac_fn_c_try_link "$LINENO"; then :
7223 lt_cv_cc_needs_belf=yes
7224 else
7225 lt_cv_cc_needs_belf=no
7226 fi
7227 rm -f core conftest.err conftest.$ac_objext \
7228 conftest$ac_exeext conftest.$ac_ext
7229 ac_ext=c
7230 ac_cpp='$CPP $CPPFLAGS'
7231 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
7232 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
7233 ac_compiler_gnu=$ac_cv_c_compiler_gnu
7234
7235 fi
7236 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
7237 $as_echo "$lt_cv_cc_needs_belf" >&6; }
7238 if test x"$lt_cv_cc_needs_belf" != x"yes"; then
7239 # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
7240 CFLAGS="$SAVE_CFLAGS"
7241 fi
7242 ;;
7243 *-*solaris*)
7244 # Find out which ABI we are using.
7245 echo 'int i;' > conftest.$ac_ext
7246 if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
7247 (eval $ac_compile) 2>&5
7248 ac_status=$?
7249 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
7250 test $ac_status = 0; }; then
7251 case `/usr/bin/file conftest.o` in
7252 *64-bit*)
7253 case $lt_cv_prog_gnu_ld in
7254 yes*)
7255 case $host in
7256 i?86-*-solaris*)
7257 LD="${LD-ld} -m elf_x86_64"
7258 ;;
7259 sparc*-*-solaris*)
7260 LD="${LD-ld} -m elf64_sparc"
7261 ;;
7262 esac
7263 # GNU ld 2.21 introduced _sol2 emulations. Use them if available.
7264 if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
7265 LD="${LD-ld}_sol2"
7266 fi
7267 ;;
7268 *)
7269 if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
7270 LD="${LD-ld} -64"
7271 fi
7272 ;;
7273 esac
7274 ;;
7275 esac
7276 fi
7277 rm -rf conftest*
7278 ;;
7279 esac
7280
7281 need_locks="$enable_libtool_lock"
7282
7283 if test -n "$ac_tool_prefix"; then
7284 # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
7285 set dummy ${ac_tool_prefix}mt; ac_word=$2
7286 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
7287 $as_echo_n "checking for $ac_word... " >&6; }
7288 if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
7289 $as_echo_n "(cached) " >&6
7290 else
7291 if test -n "$MANIFEST_TOOL"; then
7292 ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
7293 else
7294 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
7295 for as_dir in $PATH
7296 do
7297 IFS=$as_save_IFS
7298 test -z "$as_dir" && as_dir=.
7299 for ac_exec_ext in '' $ac_executable_extensions; do
7300 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
7301 ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
7302 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
7303 break 2
7304 fi
7305 done
7306 done
7307 IFS=$as_save_IFS
7308
7309 fi
7310 fi
7311 MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
7312 if test -n "$MANIFEST_TOOL"; then
7313 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
7314 $as_echo "$MANIFEST_TOOL" >&6; }
7315 else
7316 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7317 $as_echo "no" >&6; }
7318 fi
7319
7320
7321 fi
7322 if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
7323 ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
7324 # Extract the first word of "mt", so it can be a program name with args.
7325 set dummy mt; ac_word=$2
7326 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
7327 $as_echo_n "checking for $ac_word... " >&6; }
7328 if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
7329 $as_echo_n "(cached) " >&6
7330 else
7331 if test -n "$ac_ct_MANIFEST_TOOL"; then
7332 ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
7333 else
7334 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
7335 for as_dir in $PATH
7336 do
7337 IFS=$as_save_IFS
7338 test -z "$as_dir" && as_dir=.
7339 for ac_exec_ext in '' $ac_executable_extensions; do
7340 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
7341 ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
7342 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
7343 break 2
7344 fi
7345 done
7346 done
7347 IFS=$as_save_IFS
7348
7349 fi
7350 fi
7351 ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
7352 if test -n "$ac_ct_MANIFEST_TOOL"; then
7353 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
7354 $as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
7355 else
7356 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7357 $as_echo "no" >&6; }
7358 fi
7359
7360 if test "x$ac_ct_MANIFEST_TOOL" = x; then
7361 MANIFEST_TOOL=":"
7362 else
7363 case $cross_compiling:$ac_tool_warned in
7364 yes:)
7365 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
7366 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
7367 ac_tool_warned=yes ;;
7368 esac
7369 MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
7370 fi
7371 else
7372 MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
7373 fi
7374
7375 test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
7376 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
7377 $as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
7378 if ${lt_cv_path_mainfest_tool+:} false; then :
7379 $as_echo_n "(cached) " >&6
7380 else
7381 lt_cv_path_mainfest_tool=no
7382 echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
7383 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
7384 cat conftest.err >&5
7385 if $GREP 'Manifest Tool' conftest.out > /dev/null; then
7386 lt_cv_path_mainfest_tool=yes
7387 fi
7388 rm -f conftest*
7389 fi
7390 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
7391 $as_echo "$lt_cv_path_mainfest_tool" >&6; }
7392 if test "x$lt_cv_path_mainfest_tool" != xyes; then
7393 MANIFEST_TOOL=:
7394 fi
7395
7396
7397
7398
7399
7400
7401 case $host_os in
7402 rhapsody* | darwin*)
7403 if test -n "$ac_tool_prefix"; then
7404 # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
7405 set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
7406 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
7407 $as_echo_n "checking for $ac_word... " >&6; }
7408 if ${ac_cv_prog_DSYMUTIL+:} false; then :
7409 $as_echo_n "(cached) " >&6
7410 else
7411 if test -n "$DSYMUTIL"; then
7412 ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
7413 else
7414 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
7415 for as_dir in $PATH
7416 do
7417 IFS=$as_save_IFS
7418 test -z "$as_dir" && as_dir=.
7419 for ac_exec_ext in '' $ac_executable_extensions; do
7420 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
7421 ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
7422 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
7423 break 2
7424 fi
7425 done
7426 done
7427 IFS=$as_save_IFS
7428
7429 fi
7430 fi
7431 DSYMUTIL=$ac_cv_prog_DSYMUTIL
7432 if test -n "$DSYMUTIL"; then
7433 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
7434 $as_echo "$DSYMUTIL" >&6; }
7435 else
7436 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7437 $as_echo "no" >&6; }
7438 fi
7439
7440
7441 fi
7442 if test -z "$ac_cv_prog_DSYMUTIL"; then
7443 ac_ct_DSYMUTIL=$DSYMUTIL
7444 # Extract the first word of "dsymutil", so it can be a program name with args.
7445 set dummy dsymutil; ac_word=$2
7446 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
7447 $as_echo_n "checking for $ac_word... " >&6; }
7448 if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
7449 $as_echo_n "(cached) " >&6
7450 else
7451 if test -n "$ac_ct_DSYMUTIL"; then
7452 ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
7453 else
7454 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
7455 for as_dir in $PATH
7456 do
7457 IFS=$as_save_IFS
7458 test -z "$as_dir" && as_dir=.
7459 for ac_exec_ext in '' $ac_executable_extensions; do
7460 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
7461 ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
7462 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
7463 break 2
7464 fi
7465 done
7466 done
7467 IFS=$as_save_IFS
7468
7469 fi
7470 fi
7471 ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
7472 if test -n "$ac_ct_DSYMUTIL"; then
7473 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
7474 $as_echo "$ac_ct_DSYMUTIL" >&6; }
7475 else
7476 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7477 $as_echo "no" >&6; }
7478 fi
7479
7480 if test "x$ac_ct_DSYMUTIL" = x; then
7481 DSYMUTIL=":"
7482 else
7483 case $cross_compiling:$ac_tool_warned in
7484 yes:)
7485 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
7486 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
7487 ac_tool_warned=yes ;;
7488 esac
7489 DSYMUTIL=$ac_ct_DSYMUTIL
7490 fi
7491 else
7492 DSYMUTIL="$ac_cv_prog_DSYMUTIL"
7493 fi
7494
7495 if test -n "$ac_tool_prefix"; then
7496 # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
7497 set dummy ${ac_tool_prefix}nmedit; ac_word=$2
7498 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
7499 $as_echo_n "checking for $ac_word... " >&6; }
7500 if ${ac_cv_prog_NMEDIT+:} false; then :
7501 $as_echo_n "(cached) " >&6
7502 else
7503 if test -n "$NMEDIT"; then
7504 ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
7505 else
7506 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
7507 for as_dir in $PATH
7508 do
7509 IFS=$as_save_IFS
7510 test -z "$as_dir" && as_dir=.
7511 for ac_exec_ext in '' $ac_executable_extensions; do
7512 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
7513 ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
7514 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
7515 break 2
7516 fi
7517 done
7518 done
7519 IFS=$as_save_IFS
7520
7521 fi
7522 fi
7523 NMEDIT=$ac_cv_prog_NMEDIT
7524 if test -n "$NMEDIT"; then
7525 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
7526 $as_echo "$NMEDIT" >&6; }
7527 else
7528 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7529 $as_echo "no" >&6; }
7530 fi
7531
7532
7533 fi
7534 if test -z "$ac_cv_prog_NMEDIT"; then
7535 ac_ct_NMEDIT=$NMEDIT
7536 # Extract the first word of "nmedit", so it can be a program name with args.
7537 set dummy nmedit; ac_word=$2
7538 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
7539 $as_echo_n "checking for $ac_word... " >&6; }
7540 if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
7541 $as_echo_n "(cached) " >&6
7542 else
7543 if test -n "$ac_ct_NMEDIT"; then
7544 ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
7545 else
7546 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
7547 for as_dir in $PATH
7548 do
7549 IFS=$as_save_IFS
7550 test -z "$as_dir" && as_dir=.
7551 for ac_exec_ext in '' $ac_executable_extensions; do
7552 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
7553 ac_cv_prog_ac_ct_NMEDIT="nmedit"
7554 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
7555 break 2
7556 fi
7557 done
7558 done
7559 IFS=$as_save_IFS
7560
7561 fi
7562 fi
7563 ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
7564 if test -n "$ac_ct_NMEDIT"; then
7565 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
7566 $as_echo "$ac_ct_NMEDIT" >&6; }
7567 else
7568 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7569 $as_echo "no" >&6; }
7570 fi
7571
7572 if test "x$ac_ct_NMEDIT" = x; then
7573 NMEDIT=":"
7574 else
7575 case $cross_compiling:$ac_tool_warned in
7576 yes:)
7577 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
7578 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
7579 ac_tool_warned=yes ;;
7580 esac
7581 NMEDIT=$ac_ct_NMEDIT
7582 fi
7583 else
7584 NMEDIT="$ac_cv_prog_NMEDIT"
7585 fi
7586
7587 if test -n "$ac_tool_prefix"; then
7588 # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
7589 set dummy ${ac_tool_prefix}lipo; ac_word=$2
7590 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
7591 $as_echo_n "checking for $ac_word... " >&6; }
7592 if ${ac_cv_prog_LIPO+:} false; then :
7593 $as_echo_n "(cached) " >&6
7594 else
7595 if test -n "$LIPO"; then
7596 ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
7597 else
7598 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
7599 for as_dir in $PATH
7600 do
7601 IFS=$as_save_IFS
7602 test -z "$as_dir" && as_dir=.
7603 for ac_exec_ext in '' $ac_executable_extensions; do
7604 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
7605 ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
7606 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
7607 break 2
7608 fi
7609 done
7610 done
7611 IFS=$as_save_IFS
7612
7613 fi
7614 fi
7615 LIPO=$ac_cv_prog_LIPO
7616 if test -n "$LIPO"; then
7617 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
7618 $as_echo "$LIPO" >&6; }
7619 else
7620 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7621 $as_echo "no" >&6; }
7622 fi
7623
7624
7625 fi
7626 if test -z "$ac_cv_prog_LIPO"; then
7627 ac_ct_LIPO=$LIPO
7628 # Extract the first word of "lipo", so it can be a program name with args.
7629 set dummy lipo; ac_word=$2
7630 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
7631 $as_echo_n "checking for $ac_word... " >&6; }
7632 if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
7633 $as_echo_n "(cached) " >&6
7634 else
7635 if test -n "$ac_ct_LIPO"; then
7636 ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
7637 else
7638 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
7639 for as_dir in $PATH
7640 do
7641 IFS=$as_save_IFS
7642 test -z "$as_dir" && as_dir=.
7643 for ac_exec_ext in '' $ac_executable_extensions; do
7644 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
7645 ac_cv_prog_ac_ct_LIPO="lipo"
7646 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
7647 break 2
7648 fi
7649 done
7650 done
7651 IFS=$as_save_IFS
7652
7653 fi
7654 fi
7655 ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
7656 if test -n "$ac_ct_LIPO"; then
7657 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
7658 $as_echo "$ac_ct_LIPO" >&6; }
7659 else
7660 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7661 $as_echo "no" >&6; }
7662 fi
7663
7664 if test "x$ac_ct_LIPO" = x; then
7665 LIPO=":"
7666 else
7667 case $cross_compiling:$ac_tool_warned in
7668 yes:)
7669 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
7670 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
7671 ac_tool_warned=yes ;;
7672 esac
7673 LIPO=$ac_ct_LIPO
7674 fi
7675 else
7676 LIPO="$ac_cv_prog_LIPO"
7677 fi
7678
7679 if test -n "$ac_tool_prefix"; then
7680 # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
7681 set dummy ${ac_tool_prefix}otool; ac_word=$2
7682 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
7683 $as_echo_n "checking for $ac_word... " >&6; }
7684 if ${ac_cv_prog_OTOOL+:} false; then :
7685 $as_echo_n "(cached) " >&6
7686 else
7687 if test -n "$OTOOL"; then
7688 ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
7689 else
7690 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
7691 for as_dir in $PATH
7692 do
7693 IFS=$as_save_IFS
7694 test -z "$as_dir" && as_dir=.
7695 for ac_exec_ext in '' $ac_executable_extensions; do
7696 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
7697 ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
7698 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
7699 break 2
7700 fi
7701 done
7702 done
7703 IFS=$as_save_IFS
7704
7705 fi
7706 fi
7707 OTOOL=$ac_cv_prog_OTOOL
7708 if test -n "$OTOOL"; then
7709 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
7710 $as_echo "$OTOOL" >&6; }
7711 else
7712 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7713 $as_echo "no" >&6; }
7714 fi
7715
7716
7717 fi
7718 if test -z "$ac_cv_prog_OTOOL"; then
7719 ac_ct_OTOOL=$OTOOL
7720 # Extract the first word of "otool", so it can be a program name with args.
7721 set dummy otool; ac_word=$2
7722 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
7723 $as_echo_n "checking for $ac_word... " >&6; }
7724 if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
7725 $as_echo_n "(cached) " >&6
7726 else
7727 if test -n "$ac_ct_OTOOL"; then
7728 ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
7729 else
7730 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
7731 for as_dir in $PATH
7732 do
7733 IFS=$as_save_IFS
7734 test -z "$as_dir" && as_dir=.
7735 for ac_exec_ext in '' $ac_executable_extensions; do
7736 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
7737 ac_cv_prog_ac_ct_OTOOL="otool"
7738 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
7739 break 2
7740 fi
7741 done
7742 done
7743 IFS=$as_save_IFS
7744
7745 fi
7746 fi
7747 ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
7748 if test -n "$ac_ct_OTOOL"; then
7749 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
7750 $as_echo "$ac_ct_OTOOL" >&6; }
7751 else
7752 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7753 $as_echo "no" >&6; }
7754 fi
7755
7756 if test "x$ac_ct_OTOOL" = x; then
7757 OTOOL=":"
7758 else
7759 case $cross_compiling:$ac_tool_warned in
7760 yes:)
7761 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
7762 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
7763 ac_tool_warned=yes ;;
7764 esac
7765 OTOOL=$ac_ct_OTOOL
7766 fi
7767 else
7768 OTOOL="$ac_cv_prog_OTOOL"
7769 fi
7770
7771 if test -n "$ac_tool_prefix"; then
7772 # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
7773 set dummy ${ac_tool_prefix}otool64; ac_word=$2
7774 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
7775 $as_echo_n "checking for $ac_word... " >&6; }
7776 if ${ac_cv_prog_OTOOL64+:} false; then :
7777 $as_echo_n "(cached) " >&6
7778 else
7779 if test -n "$OTOOL64"; then
7780 ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
7781 else
7782 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
7783 for as_dir in $PATH
7784 do
7785 IFS=$as_save_IFS
7786 test -z "$as_dir" && as_dir=.
7787 for ac_exec_ext in '' $ac_executable_extensions; do
7788 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
7789 ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
7790 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
7791 break 2
7792 fi
7793 done
7794 done
7795 IFS=$as_save_IFS
7796
7797 fi
7798 fi
7799 OTOOL64=$ac_cv_prog_OTOOL64
7800 if test -n "$OTOOL64"; then
7801 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
7802 $as_echo "$OTOOL64" >&6; }
7803 else
7804 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7805 $as_echo "no" >&6; }
7806 fi
7807
7808
7809 fi
7810 if test -z "$ac_cv_prog_OTOOL64"; then
7811 ac_ct_OTOOL64=$OTOOL64
7812 # Extract the first word of "otool64", so it can be a program name with args.
7813 set dummy otool64; ac_word=$2
7814 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
7815 $as_echo_n "checking for $ac_word... " >&6; }
7816 if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
7817 $as_echo_n "(cached) " >&6
7818 else
7819 if test -n "$ac_ct_OTOOL64"; then
7820 ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
7821 else
7822 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
7823 for as_dir in $PATH
7824 do
7825 IFS=$as_save_IFS
7826 test -z "$as_dir" && as_dir=.
7827 for ac_exec_ext in '' $ac_executable_extensions; do
7828 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
7829 ac_cv_prog_ac_ct_OTOOL64="otool64"
7830 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
7831 break 2
7832 fi
7833 done
7834 done
7835 IFS=$as_save_IFS
7836
7837 fi
7838 fi
7839 ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
7840 if test -n "$ac_ct_OTOOL64"; then
7841 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
7842 $as_echo "$ac_ct_OTOOL64" >&6; }
7843 else
7844 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
7845 $as_echo "no" >&6; }
7846 fi
7847
7848 if test "x$ac_ct_OTOOL64" = x; then
7849 OTOOL64=":"
7850 else
7851 case $cross_compiling:$ac_tool_warned in
7852 yes:)
7853 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
7854 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
7855 ac_tool_warned=yes ;;
7856 esac
7857 OTOOL64=$ac_ct_OTOOL64
7858 fi
7859 else
7860 OTOOL64="$ac_cv_prog_OTOOL64"
7861 fi
7862
7863
7864
7865
7866
7867
7868
7869
7870
7871
7872
7873
7874
7875
7876
7877
7878
7879
7880
7881
7882
7883
7884
7885
7886
7887
7888
7889 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
7890 $as_echo_n "checking for -single_module linker flag... " >&6; }
7891 if ${lt_cv_apple_cc_single_mod+:} false; then :
7892 $as_echo_n "(cached) " >&6
7893 else
7894 lt_cv_apple_cc_single_mod=no
7895 if test -z "${LT_MULTI_MODULE}"; then
7896 # By default we will add the -single_module flag. You can override
7897 # by either setting the environment variable LT_MULTI_MODULE
7898 # non-empty at configure time, or by adding -multi_module to the
7899 # link flags.
7900 rm -rf libconftest.dylib*
7901 echo "int foo(void){return 1;}" > conftest.c
7902 echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
7903 -dynamiclib -Wl,-single_module conftest.c" >&5
7904 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
7905 -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
7906 _lt_result=$?
7907 # If there is a non-empty error log, and "single_module"
7908 # appears in it, assume the flag caused a linker warning
7909 if test -s conftest.err && $GREP single_module conftest.err; then
7910 cat conftest.err >&5
7911 # Otherwise, if the output was created with a 0 exit code from
7912 # the compiler, it worked.
7913 elif test -f libconftest.dylib && test $_lt_result -eq 0; then
7914 lt_cv_apple_cc_single_mod=yes
7915 else
7916 cat conftest.err >&5
7917 fi
7918 rm -rf libconftest.dylib*
7919 rm -f conftest.*
7920 fi
7921 fi
7922 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
7923 $as_echo "$lt_cv_apple_cc_single_mod" >&6; }
7924
7925 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
7926 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
7927 if ${lt_cv_ld_exported_symbols_list+:} false; then :
7928 $as_echo_n "(cached) " >&6
7929 else
7930 lt_cv_ld_exported_symbols_list=no
7931 save_LDFLAGS=$LDFLAGS
7932 echo "_main" > conftest.sym
7933 LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
7934 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
7935 /* end confdefs.h. */
7936
7937 int
7938 main ()
7939 {
7940
7941 ;
7942 return 0;
7943 }
7944 _ACEOF
7945 if ac_fn_c_try_link "$LINENO"; then :
7946 lt_cv_ld_exported_symbols_list=yes
7947 else
7948 lt_cv_ld_exported_symbols_list=no
7949 fi
7950 rm -f core conftest.err conftest.$ac_objext \
7951 conftest$ac_exeext conftest.$ac_ext
7952 LDFLAGS="$save_LDFLAGS"
7953
7954 fi
7955 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
7956 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
7957
7958 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
7959 $as_echo_n "checking for -force_load linker flag... " >&6; }
7960 if ${lt_cv_ld_force_load+:} false; then :
7961 $as_echo_n "(cached) " >&6
7962 else
7963 lt_cv_ld_force_load=no
7964 cat > conftest.c << _LT_EOF
7965 int forced_loaded() { return 2;}
7966 _LT_EOF
7967 echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
7968 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
7969 echo "$AR cru libconftest.a conftest.o" >&5
7970 $AR cru libconftest.a conftest.o 2>&5
7971 echo "$RANLIB libconftest.a" >&5
7972 $RANLIB libconftest.a 2>&5
7973 cat > conftest.c << _LT_EOF
7974 int main() { return 0;}
7975 _LT_EOF
7976 echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
7977 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
7978 _lt_result=$?
7979 if test -s conftest.err && $GREP force_load conftest.err; then
7980 cat conftest.err >&5
7981 elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
7982 lt_cv_ld_force_load=yes
7983 else
7984 cat conftest.err >&5
7985 fi
7986 rm -f conftest.err libconftest.a conftest conftest.c
7987 rm -rf conftest.dSYM
7988
7989 fi
7990 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
7991 $as_echo "$lt_cv_ld_force_load" >&6; }
7992 case $host_os in
7993 rhapsody* | darwin1.[012])
7994 _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
7995 darwin1.*)
7996 _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
7997 darwin*) # darwin 5.x on
7998 # if running on 10.5 or later, the deployment target defaults
7999 # to the OS version, if on x86, and 10.4, the deployment
8000 # target defaults to 10.4. Don't you love it?
8001 case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
8002 10.0,*86*-darwin8*|10.0,*-darwin[91]*)
8003 _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
8004 10.[012]*)
8005 _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
8006 10.*)
8007 _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
8008 esac
8009 ;;
8010 esac
8011 if test "$lt_cv_apple_cc_single_mod" = "yes"; then
8012 _lt_dar_single_mod='$single_module'
8013 fi
8014 if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
8015 _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
8016 else
8017 _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
8018 fi
8019 if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
8020 _lt_dsymutil='~$DSYMUTIL $lib || :'
8021 else
8022 _lt_dsymutil=
8023 fi
8024 ;;
8025 esac
8026
8027 ac_ext=c
8028 ac_cpp='$CPP $CPPFLAGS'
8029 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
8030 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
8031 ac_compiler_gnu=$ac_cv_c_compiler_gnu
8032 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
8033 $as_echo_n "checking how to run the C preprocessor... " >&6; }
8034 # On Suns, sometimes $CPP names a directory.
8035 if test -n "$CPP" && test -d "$CPP"; then
8036 CPP=
8037 fi
8038 if test -z "$CPP"; then
8039 if ${ac_cv_prog_CPP+:} false; then :
8040 $as_echo_n "(cached) " >&6
8041 else
8042 # Double quotes because CPP needs to be expanded
8043 for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
8044 do
8045 ac_preproc_ok=false
8046 for ac_c_preproc_warn_flag in '' yes
8047 do
8048 # Use a header file that comes with gcc, so configuring glibc
8049 # with a fresh cross-compiler works.
8050 # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
8051 # <limits.h> exists even on freestanding compilers.
8052 # On the NeXT, cc -E runs the code through the compiler's parser,
8053 # not just through cpp. "Syntax error" is here to catch this case.
8054 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
8055 /* end confdefs.h. */
8056 #ifdef __STDC__
8057 # include <limits.h>
8058 #else
8059 # include <assert.h>
8060 #endif
8061 Syntax error
8062 _ACEOF
8063 if ac_fn_c_try_cpp "$LINENO"; then :
8064
8065 else
8066 # Broken: fails on valid input.
8067 continue
8068 fi
8069 rm -f conftest.err conftest.i conftest.$ac_ext
8070
8071 # OK, works on sane cases. Now check whether nonexistent headers
8072 # can be detected and how.
8073 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
8074 /* end confdefs.h. */
8075 #include <ac_nonexistent.h>
8076 _ACEOF
8077 if ac_fn_c_try_cpp "$LINENO"; then :
8078 # Broken: success on invalid input.
8079 continue
8080 else
8081 # Passes both tests.
8082 ac_preproc_ok=:
8083 break
8084 fi
8085 rm -f conftest.err conftest.i conftest.$ac_ext
8086
8087 done
8088 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
8089 rm -f conftest.i conftest.err conftest.$ac_ext
8090 if $ac_preproc_ok; then :
8091 break
8092 fi
8093
8094 done
8095 ac_cv_prog_CPP=$CPP
8096
8097 fi
8098 CPP=$ac_cv_prog_CPP
8099 else
8100 ac_cv_prog_CPP=$CPP
8101 fi
8102 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
8103 $as_echo "$CPP" >&6; }
8104 ac_preproc_ok=false
8105 for ac_c_preproc_warn_flag in '' yes
8106 do
8107 # Use a header file that comes with gcc, so configuring glibc
8108 # with a fresh cross-compiler works.
8109 # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
8110 # <limits.h> exists even on freestanding compilers.
8111 # On the NeXT, cc -E runs the code through the compiler's parser,
8112 # not just through cpp. "Syntax error" is here to catch this case.
8113 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
8114 /* end confdefs.h. */
8115 #ifdef __STDC__
8116 # include <limits.h>
8117 #else
8118 # include <assert.h>
8119 #endif
8120 Syntax error
8121 _ACEOF
8122 if ac_fn_c_try_cpp "$LINENO"; then :
8123
8124 else
8125 # Broken: fails on valid input.
8126 continue
8127 fi
8128 rm -f conftest.err conftest.i conftest.$ac_ext
8129
8130 # OK, works on sane cases. Now check whether nonexistent headers
8131 # can be detected and how.
8132 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
8133 /* end confdefs.h. */
8134 #include <ac_nonexistent.h>
8135 _ACEOF
8136 if ac_fn_c_try_cpp "$LINENO"; then :
8137 # Broken: success on invalid input.
8138 continue
8139 else
8140 # Passes both tests.
8141 ac_preproc_ok=:
8142 break
8143 fi
8144 rm -f conftest.err conftest.i conftest.$ac_ext
8145
8146 done
8147 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
8148 rm -f conftest.i conftest.err conftest.$ac_ext
8149 if $ac_preproc_ok; then :
8150
8151 else
8152 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
8153 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
8154 as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
8155 See \`config.log' for more details" "$LINENO" 5; }
8156 fi
8157
8158 ac_ext=c
8159 ac_cpp='$CPP $CPPFLAGS'
8160 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
8161 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
8162 ac_compiler_gnu=$ac_cv_c_compiler_gnu
8163
8164
8165 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
8166 $as_echo_n "checking for ANSI C header files... " >&6; }
8167 if ${ac_cv_header_stdc+:} false; then :
8168 $as_echo_n "(cached) " >&6
8169 else
8170 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
8171 /* end confdefs.h. */
8172 #include <stdlib.h>
8173 #include <stdarg.h>
8174 #include <string.h>
8175 #include <float.h>
8176
8177 int
8178 main ()
8179 {
8180
8181 ;
8182 return 0;
8183 }
8184 _ACEOF
8185 if ac_fn_c_try_compile "$LINENO"; then :
8186 ac_cv_header_stdc=yes
8187 else
8188 ac_cv_header_stdc=no
8189 fi
8190 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
8191
8192 if test $ac_cv_header_stdc = yes; then
8193 # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
8194 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
8195 /* end confdefs.h. */
8196 #include <string.h>
8197
8198 _ACEOF
8199 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
8200 $EGREP "memchr" >/dev/null 2>&1; then :
8201
8202 else
8203 ac_cv_header_stdc=no
8204 fi
8205 rm -f conftest*
8206
8207 fi
8208
8209 if test $ac_cv_header_stdc = yes; then
8210 # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
8211 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
8212 /* end confdefs.h. */
8213 #include <stdlib.h>
8214
8215 _ACEOF
8216 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
8217 $EGREP "free" >/dev/null 2>&1; then :
8218
8219 else
8220 ac_cv_header_stdc=no
8221 fi
8222 rm -f conftest*
8223
8224 fi
8225
8226 if test $ac_cv_header_stdc = yes; then
8227 # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
8228 if test "$cross_compiling" = yes; then :
8229 :
8230 else
8231 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
8232 /* end confdefs.h. */
8233 #include <ctype.h>
8234 #include <stdlib.h>
8235 #if ((' ' & 0x0FF) == 0x020)
8236 # define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
8237 # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
8238 #else
8239 # define ISLOWER(c) \
8240 (('a' <= (c) && (c) <= 'i') \
8241 || ('j' <= (c) && (c) <= 'r') \
8242 || ('s' <= (c) && (c) <= 'z'))
8243 # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
8244 #endif
8245
8246 #define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
8247 int
8248 main ()
8249 {
8250 int i;
8251 for (i = 0; i < 256; i++)
8252 if (XOR (islower (i), ISLOWER (i))
8253 || toupper (i) != TOUPPER (i))
8254 return 2;
8255 return 0;
8256 }
8257 _ACEOF
8258 if ac_fn_c_try_run "$LINENO"; then :
8259
8260 else
8261 ac_cv_header_stdc=no
8262 fi
8263 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
8264 conftest.$ac_objext conftest.beam conftest.$ac_ext
8265 fi
8266
8267 fi
8268 fi
8269 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
8270 $as_echo "$ac_cv_header_stdc" >&6; }
8271 if test $ac_cv_header_stdc = yes; then
8272
8273 $as_echo "#define STDC_HEADERS 1" >>confdefs.h
8274
8275 fi
8276
8277 # On IRIX 5.3, sys/types and inttypes.h are conflicting.
8278 for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
8279 inttypes.h stdint.h unistd.h
8280 do :
8281 as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
8282 ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
8283 "
8284 if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
8285 cat >>confdefs.h <<_ACEOF
8286 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
8287 _ACEOF
8288
8289 fi
8290
8291 done
8292
8293
8294 for ac_header in dlfcn.h
8295 do :
8296 ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
8297 "
8298 if test "x$ac_cv_header_dlfcn_h" = xyes; then :
8299 cat >>confdefs.h <<_ACEOF
8300 #define HAVE_DLFCN_H 1
8301 _ACEOF
8302
8303 fi
8304
8305 done
8306
8307
8308
8309
8310
8311 # Set options
8312
8313
8314
8315 enable_dlopen=no
8316
8317
8318 enable_win32_dll=no
8319
8320
8321 # Check whether --enable-shared was given.
8322 if test "${enable_shared+set}" = set; then :
8323 enableval=$enable_shared; p=${PACKAGE-default}
8324 case $enableval in
8325 yes) enable_shared=yes ;;
8326 no) enable_shared=no ;;
8327 *)
8328 enable_shared=no
8329 # Look at the argument we got. We use all the common list separators.
8330 lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
8331 for pkg in $enableval; do
8332 IFS="$lt_save_ifs"
8333 if test "X$pkg" = "X$p"; then
8334 enable_shared=yes
8335 fi
8336 done
8337 IFS="$lt_save_ifs"
8338 ;;
8339 esac
8340 else
8341 enable_shared=yes
8342 fi
8343
8344
8345
8346
8347
8348
8349
8350
8351
8352 # Check whether --enable-static was given.
8353 if test "${enable_static+set}" = set; then :
8354 enableval=$enable_static; p=${PACKAGE-default}
8355 case $enableval in
8356 yes) enable_static=yes ;;
8357 no) enable_static=no ;;
8358 *)
8359 enable_static=no
8360 # Look at the argument we got. We use all the common list separators.
8361 lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
8362 for pkg in $enableval; do
8363 IFS="$lt_save_ifs"
8364 if test "X$pkg" = "X$p"; then
8365 enable_static=yes
8366 fi
8367 done
8368 IFS="$lt_save_ifs"
8369 ;;
8370 esac
8371 else
8372 enable_static=yes
8373 fi
8374
8375
8376
8377
8378
8379
8380
8381
8382
8383
8384 # Check whether --with-pic was given.
8385 if test "${with_pic+set}" = set; then :
8386 withval=$with_pic; lt_p=${PACKAGE-default}
8387 case $withval in
8388 yes|no) pic_mode=$withval ;;
8389 *)
8390 pic_mode=default
8391 # Look at the argument we got. We use all the common list separators.
8392 lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
8393 for lt_pkg in $withval; do
8394 IFS="$lt_save_ifs"
8395 if test "X$lt_pkg" = "X$lt_p"; then
8396 pic_mode=yes
8397 fi
8398 done
8399 IFS="$lt_save_ifs"
8400 ;;
8401 esac
8402 else
8403 pic_mode=default
8404 fi
8405
8406
8407 test -z "$pic_mode" && pic_mode=default
8408
8409
8410
8411
8412
8413
8414
8415 # Check whether --enable-fast-install was given.
8416 if test "${enable_fast_install+set}" = set; then :
8417 enableval=$enable_fast_install; p=${PACKAGE-default}
8418 case $enableval in
8419 yes) enable_fast_install=yes ;;
8420 no) enable_fast_install=no ;;
8421 *)
8422 enable_fast_install=no
8423 # Look at the argument we got. We use all the common list separators.
8424 lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
8425 for pkg in $enableval; do
8426 IFS="$lt_save_ifs"
8427 if test "X$pkg" = "X$p"; then
8428 enable_fast_install=yes
8429 fi
8430 done
8431 IFS="$lt_save_ifs"
8432 ;;
8433 esac
8434 else
8435 enable_fast_install=yes
8436 fi
8437
8438
8439
8440
8441
8442
8443
8444
8445
8446
8447
8448 # This can be used to rebuild libtool when needed
8449 LIBTOOL_DEPS="$ltmain"
8450
8451 # Always use our own libtool.
8452 LIBTOOL='$(SHELL) $(top_builddir)/libtool'
8453
8454
8455
8456
8457
8458
8459
8460
8461
8462
8463
8464
8465
8466
8467
8468
8469
8470
8471
8472
8473
8474
8475
8476
8477
8478
8479
8480
8481
8482
8483 test -z "$LN_S" && LN_S="ln -s"
8484
8485
8486
8487
8488
8489
8490
8491
8492
8493
8494
8495
8496
8497
8498 if test -n "${ZSH_VERSION+set}" ; then
8499 setopt NO_GLOB_SUBST
8500 fi
8501
8502 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
8503 $as_echo_n "checking for objdir... " >&6; }
8504 if ${lt_cv_objdir+:} false; then :
8505 $as_echo_n "(cached) " >&6
8506 else
8507 rm -f .libs 2>/dev/null
8508 mkdir .libs 2>/dev/null
8509 if test -d .libs; then
8510 lt_cv_objdir=.libs
8511 else
8512 # MS-DOS does not allow filenames that begin with a dot.
8513 lt_cv_objdir=_libs
8514 fi
8515 rmdir .libs 2>/dev/null
8516 fi
8517 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
8518 $as_echo "$lt_cv_objdir" >&6; }
8519 objdir=$lt_cv_objdir
8520
8521
8522
8523
8524
8525 cat >>confdefs.h <<_ACEOF
8526 #define LT_OBJDIR "$lt_cv_objdir/"
8527 _ACEOF
8528
8529
8530
8531
8532 case $host_os in
8533 aix3*)
8534 # AIX sometimes has problems with the GCC collect2 program. For some
8535 # reason, if we set the COLLECT_NAMES environment variable, the problems
8536 # vanish in a puff of smoke.
8537 if test "X${COLLECT_NAMES+set}" != Xset; then
8538 COLLECT_NAMES=
8539 export COLLECT_NAMES
8540 fi
8541 ;;
8542 esac
8543
8544 # Global variables:
8545 ofile=libtool
8546 can_build_shared=yes
8547
8548 # All known linkers require a `.a' archive for static linking (except MSVC,
8549 # which needs '.lib').
8550 libext=a
8551
8552 with_gnu_ld="$lt_cv_prog_gnu_ld"
8553
8554 old_CC="$CC"
8555 old_CFLAGS="$CFLAGS"
8556
8557 # Set sane defaults for various variables
8558 test -z "$CC" && CC=cc
8559 test -z "$LTCC" && LTCC=$CC
8560 test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
8561 test -z "$LD" && LD=ld
8562 test -z "$ac_objext" && ac_objext=o
8563
8564 for cc_temp in $compiler""; do
8565 case $cc_temp in
8566 compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
8567 distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
8568 \-*) ;;
8569 *) break;;
8570 esac
8571 done
8572 cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
8573
8574
8575 # Only perform the check for file, if the check method requires it
8576 test -z "$MAGIC_CMD" && MAGIC_CMD=file
8577 case $deplibs_check_method in
8578 file_magic*)
8579 if test "$file_magic_cmd" = '$MAGIC_CMD'; then
8580 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
8581 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
8582 if ${lt_cv_path_MAGIC_CMD+:} false; then :
8583 $as_echo_n "(cached) " >&6
8584 else
8585 case $MAGIC_CMD in
8586 [\\/*] | ?:[\\/]*)
8587 lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
8588 ;;
8589 *)
8590 lt_save_MAGIC_CMD="$MAGIC_CMD"
8591 lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
8592 ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
8593 for ac_dir in $ac_dummy; do
8594 IFS="$lt_save_ifs"
8595 test -z "$ac_dir" && ac_dir=.
8596 if test -f $ac_dir/${ac_tool_prefix}file; then
8597 lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
8598 if test -n "$file_magic_test_file"; then
8599 case $deplibs_check_method in
8600 "file_magic "*)
8601 file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
8602 MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
8603 if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
8604 $EGREP "$file_magic_regex" > /dev/null; then
8605 :
8606 else
8607 cat <<_LT_EOF 1>&2
8608
8609 *** Warning: the command libtool uses to detect shared libraries,
8610 *** $file_magic_cmd, produces output that libtool cannot recognize.
8611 *** The result is that libtool may fail to recognize shared libraries
8612 *** as such. This will affect the creation of libtool libraries that
8613 *** depend on shared libraries, but programs linked with such libtool
8614 *** libraries will work regardless of this problem. Nevertheless, you
8615 *** may want to report the problem to your system manager and/or to
8616 *** bug-libtool@gnu.org
8617
8618 _LT_EOF
8619 fi ;;
8620 esac
8621 fi
8622 break
8623 fi
8624 done
8625 IFS="$lt_save_ifs"
8626 MAGIC_CMD="$lt_save_MAGIC_CMD"
8627 ;;
8628 esac
8629 fi
8630
8631 MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
8632 if test -n "$MAGIC_CMD"; then
8633 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
8634 $as_echo "$MAGIC_CMD" >&6; }
8635 else
8636 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
8637 $as_echo "no" >&6; }
8638 fi
8639
8640
8641
8642
8643
8644 if test -z "$lt_cv_path_MAGIC_CMD"; then
8645 if test -n "$ac_tool_prefix"; then
8646 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
8647 $as_echo_n "checking for file... " >&6; }
8648 if ${lt_cv_path_MAGIC_CMD+:} false; then :
8649 $as_echo_n "(cached) " >&6
8650 else
8651 case $MAGIC_CMD in
8652 [\\/*] | ?:[\\/]*)
8653 lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
8654 ;;
8655 *)
8656 lt_save_MAGIC_CMD="$MAGIC_CMD"
8657 lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
8658 ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
8659 for ac_dir in $ac_dummy; do
8660 IFS="$lt_save_ifs"
8661 test -z "$ac_dir" && ac_dir=.
8662 if test -f $ac_dir/file; then
8663 lt_cv_path_MAGIC_CMD="$ac_dir/file"
8664 if test -n "$file_magic_test_file"; then
8665 case $deplibs_check_method in
8666 "file_magic "*)
8667 file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
8668 MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
8669 if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
8670 $EGREP "$file_magic_regex" > /dev/null; then
8671 :
8672 else
8673 cat <<_LT_EOF 1>&2
8674
8675 *** Warning: the command libtool uses to detect shared libraries,
8676 *** $file_magic_cmd, produces output that libtool cannot recognize.
8677 *** The result is that libtool may fail to recognize shared libraries
8678 *** as such. This will affect the creation of libtool libraries that
8679 *** depend on shared libraries, but programs linked with such libtool
8680 *** libraries will work regardless of this problem. Nevertheless, you
8681 *** may want to report the problem to your system manager and/or to
8682 *** bug-libtool@gnu.org
8683
8684 _LT_EOF
8685 fi ;;
8686 esac
8687 fi
8688 break
8689 fi
8690 done
8691 IFS="$lt_save_ifs"
8692 MAGIC_CMD="$lt_save_MAGIC_CMD"
8693 ;;
8694 esac
8695 fi
8696
8697 MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
8698 if test -n "$MAGIC_CMD"; then
8699 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
8700 $as_echo "$MAGIC_CMD" >&6; }
8701 else
8702 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
8703 $as_echo "no" >&6; }
8704 fi
8705
8706
8707 else
8708 MAGIC_CMD=:
8709 fi
8710 fi
8711
8712 fi
8713 ;;
8714 esac
8715
8716 # Use C for the default configuration in the libtool script
8717
8718 lt_save_CC="$CC"
8719 ac_ext=c
8720 ac_cpp='$CPP $CPPFLAGS'
8721 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
8722 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
8723 ac_compiler_gnu=$ac_cv_c_compiler_gnu
8724
8725
8726 # Source file extension for C test sources.
8727 ac_ext=c
8728
8729 # Object file extension for compiled C test sources.
8730 objext=o
8731 objext=$objext
8732
8733 # Code to be used in simple compile tests
8734 lt_simple_compile_test_code="int some_variable = 0;"
8735
8736 # Code to be used in simple link tests
8737 lt_simple_link_test_code='int main(){return(0);}'
8738
8739
8740
8741
8742
8743
8744
8745 # If no C compiler was specified, use CC.
8746 LTCC=${LTCC-"$CC"}
8747
8748 # If no C compiler flags were specified, use CFLAGS.
8749 LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
8750
8751 # Allow CC to be a program name with arguments.
8752 compiler=$CC
8753
8754 # Save the default compiler, since it gets overwritten when the other
8755 # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
8756 compiler_DEFAULT=$CC
8757
8758 # save warnings/boilerplate of simple test code
8759 ac_outfile=conftest.$ac_objext
8760 echo "$lt_simple_compile_test_code" >conftest.$ac_ext
8761 eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
8762 _lt_compiler_boilerplate=`cat conftest.err`
8763 $RM conftest*
8764
8765 ac_outfile=conftest.$ac_objext
8766 echo "$lt_simple_link_test_code" >conftest.$ac_ext
8767 eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
8768 _lt_linker_boilerplate=`cat conftest.err`
8769 $RM -r conftest*
8770
8771
8772 ## CAVEAT EMPTOR:
8773 ## There is no encapsulation within the following macros, do not change
8774 ## the running order or otherwise move them around unless you know exactly
8775 ## what you are doing...
8776 if test -n "$compiler"; then
8777
8778 lt_prog_compiler_no_builtin_flag=
8779
8780 if test "$GCC" = yes; then
8781 case $cc_basename in
8782 nvcc*)
8783 lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
8784 *)
8785 lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
8786 esac
8787
8788 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
8789 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
8790 if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
8791 $as_echo_n "(cached) " >&6
8792 else
8793 lt_cv_prog_compiler_rtti_exceptions=no
8794 ac_outfile=conftest.$ac_objext
8795 echo "$lt_simple_compile_test_code" > conftest.$ac_ext
8796 lt_compiler_flag="-fno-rtti -fno-exceptions"
8797 # Insert the option either (1) after the last *FLAGS variable, or
8798 # (2) before a word containing "conftest.", or (3) at the end.
8799 # Note that $ac_compile itself does not contain backslashes and begins
8800 # with a dollar sign (not a hyphen), so the echo should work correctly.
8801 # The option is referenced via a variable to avoid confusing sed.
8802 lt_compile=`echo "$ac_compile" | $SED \
8803 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
8804 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
8805 -e 's:$: $lt_compiler_flag:'`
8806 (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
8807 (eval "$lt_compile" 2>conftest.err)
8808 ac_status=$?
8809 cat conftest.err >&5
8810 echo "$as_me:$LINENO: \$? = $ac_status" >&5
8811 if (exit $ac_status) && test -s "$ac_outfile"; then
8812 # The compiler can only warn and ignore the option if not recognized
8813 # So say no if there are warnings other than the usual output.
8814 $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
8815 $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
8816 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
8817 lt_cv_prog_compiler_rtti_exceptions=yes
8818 fi
8819 fi
8820 $RM conftest*
8821
8822 fi
8823 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
8824 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
8825
8826 if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
8827 lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
8828 else
8829 :
8830 fi
8831
8832 fi
8833
8834
8835
8836
8837
8838
8839 lt_prog_compiler_wl=
8840 lt_prog_compiler_pic=
8841 lt_prog_compiler_static=
8842
8843
8844 if test "$GCC" = yes; then
8845 lt_prog_compiler_wl='-Wl,'
8846 lt_prog_compiler_static='-static'
8847
8848 case $host_os in
8849 aix*)
8850 # All AIX code is PIC.
8851 if test "$host_cpu" = ia64; then
8852 # AIX 5 now supports IA64 processor
8853 lt_prog_compiler_static='-Bstatic'
8854 fi
8855 ;;
8856
8857 amigaos*)
8858 case $host_cpu in
8859 powerpc)
8860 # see comment about AmigaOS4 .so support
8861 lt_prog_compiler_pic='-fPIC'
8862 ;;
8863 m68k)
8864 # FIXME: we need at least 68020 code to build shared libraries, but
8865 # adding the `-m68020' flag to GCC prevents building anything better,
8866 # like `-m68040'.
8867 lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
8868 ;;
8869 esac
8870 ;;
8871
8872 beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
8873 # PIC is the default for these OSes.
8874 ;;
8875
8876 mingw* | cygwin* | pw32* | os2* | cegcc*)
8877 # This hack is so that the source file can tell whether it is being
8878 # built for inclusion in a dll (and should export symbols for example).
8879 # Although the cygwin gcc ignores -fPIC, still need this for old-style
8880 # (--disable-auto-import) libraries
8881 lt_prog_compiler_pic='-DDLL_EXPORT'
8882 ;;
8883
8884 darwin* | rhapsody*)
8885 # PIC is the default on this platform
8886 # Common symbols not allowed in MH_DYLIB files
8887 lt_prog_compiler_pic='-fno-common'
8888 ;;
8889
8890 haiku*)
8891 # PIC is the default for Haiku.
8892 # The "-static" flag exists, but is broken.
8893 lt_prog_compiler_static=
8894 ;;
8895
8896 hpux*)
8897 # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
8898 # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
8899 # sets the default TLS model and affects inlining.
8900 case $host_cpu in
8901 hppa*64*)
8902 # +Z the default
8903 ;;
8904 *)
8905 lt_prog_compiler_pic='-fPIC'
8906 ;;
8907 esac
8908 ;;
8909
8910 interix[3-9]*)
8911 # Interix 3.x gcc -fpic/-fPIC options generate broken code.
8912 # Instead, we relocate shared libraries at runtime.
8913 ;;
8914
8915 msdosdjgpp*)
8916 # Just because we use GCC doesn't mean we suddenly get shared libraries
8917 # on systems that don't support them.
8918 lt_prog_compiler_can_build_shared=no
8919 enable_shared=no
8920 ;;
8921
8922 *nto* | *qnx*)
8923 # QNX uses GNU C++, but need to define -shared option too, otherwise
8924 # it will coredump.
8925 lt_prog_compiler_pic='-fPIC -shared'
8926 ;;
8927
8928 sysv4*MP*)
8929 if test -d /usr/nec; then
8930 lt_prog_compiler_pic=-Kconform_pic
8931 fi
8932 ;;
8933
8934 *)
8935 lt_prog_compiler_pic='-fPIC'
8936 ;;
8937 esac
8938
8939 case $cc_basename in
8940 nvcc*) # Cuda Compiler Driver 2.2
8941 lt_prog_compiler_wl='-Xlinker '
8942 if test -n "$lt_prog_compiler_pic"; then
8943 lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
8944 fi
8945 ;;
8946 esac
8947 else
8948 # PORTME Check for flag to pass linker flags through the system compiler.
8949 case $host_os in
8950 aix*)
8951 lt_prog_compiler_wl='-Wl,'
8952 if test "$host_cpu" = ia64; then
8953 # AIX 5 now supports IA64 processor
8954 lt_prog_compiler_static='-Bstatic'
8955 else
8956 lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
8957 fi
8958 ;;
8959
8960 mingw* | cygwin* | pw32* | os2* | cegcc*)
8961 # This hack is so that the source file can tell whether it is being
8962 # built for inclusion in a dll (and should export symbols for example).
8963 lt_prog_compiler_pic='-DDLL_EXPORT'
8964 ;;
8965
8966 hpux9* | hpux10* | hpux11*)
8967 lt_prog_compiler_wl='-Wl,'
8968 # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
8969 # not for PA HP-UX.
8970 case $host_cpu in
8971 hppa*64*|ia64*)
8972 # +Z the default
8973 ;;
8974 *)
8975 lt_prog_compiler_pic='+Z'
8976 ;;
8977 esac
8978 # Is there a better lt_prog_compiler_static that works with the bundled CC?
8979 lt_prog_compiler_static='${wl}-a ${wl}archive'
8980 ;;
8981
8982 irix5* | irix6* | nonstopux*)
8983 lt_prog_compiler_wl='-Wl,'
8984 # PIC (with -KPIC) is the default.
8985 lt_prog_compiler_static='-non_shared'
8986 ;;
8987
8988 linux* | k*bsd*-gnu | kopensolaris*-gnu)
8989 case $cc_basename in
8990 # old Intel for x86_64 which still supported -KPIC.
8991 ecc*)
8992 lt_prog_compiler_wl='-Wl,'
8993 lt_prog_compiler_pic='-KPIC'
8994 lt_prog_compiler_static='-static'
8995 ;;
8996 # icc used to be incompatible with GCC.
8997 # ICC 10 doesn't accept -KPIC any more.
8998 icc* | ifort*)
8999 lt_prog_compiler_wl='-Wl,'
9000 lt_prog_compiler_pic='-fPIC'
9001 lt_prog_compiler_static='-static'
9002 ;;
9003 # Lahey Fortran 8.1.
9004 lf95*)
9005 lt_prog_compiler_wl='-Wl,'
9006 lt_prog_compiler_pic='--shared'
9007 lt_prog_compiler_static='--static'
9008 ;;
9009 nagfor*)
9010 # NAG Fortran compiler
9011 lt_prog_compiler_wl='-Wl,-Wl,,'
9012 lt_prog_compiler_pic='-PIC'
9013 lt_prog_compiler_static='-Bstatic'
9014 ;;
9015 pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
9016 # Portland Group compilers (*not* the Pentium gcc compiler,
9017 # which looks to be a dead project)
9018 lt_prog_compiler_wl='-Wl,'
9019 lt_prog_compiler_pic='-fpic'
9020 lt_prog_compiler_static='-Bstatic'
9021 ;;
9022 ccc*)
9023 lt_prog_compiler_wl='-Wl,'
9024 # All Alpha code is PIC.
9025 lt_prog_compiler_static='-non_shared'
9026 ;;
9027 xl* | bgxl* | bgf* | mpixl*)
9028 # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
9029 lt_prog_compiler_wl='-Wl,'
9030 lt_prog_compiler_pic='-qpic'
9031 lt_prog_compiler_static='-qstaticlink'
9032 ;;
9033 *)
9034 case `$CC -V 2>&1 | sed 5q` in
9035 *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
9036 # Sun Fortran 8.3 passes all unrecognized flags to the linker
9037 lt_prog_compiler_pic='-KPIC'
9038 lt_prog_compiler_static='-Bstatic'
9039 lt_prog_compiler_wl=''
9040 ;;
9041 *Sun\ F* | *Sun*Fortran*)
9042 lt_prog_compiler_pic='-KPIC'
9043 lt_prog_compiler_static='-Bstatic'
9044 lt_prog_compiler_wl='-Qoption ld '
9045 ;;
9046 *Sun\ C*)
9047 # Sun C 5.9
9048 lt_prog_compiler_pic='-KPIC'
9049 lt_prog_compiler_static='-Bstatic'
9050 lt_prog_compiler_wl='-Wl,'
9051 ;;
9052 *Intel*\ [CF]*Compiler*)
9053 lt_prog_compiler_wl='-Wl,'
9054 lt_prog_compiler_pic='-fPIC'
9055 lt_prog_compiler_static='-static'
9056 ;;
9057 *Portland\ Group*)
9058 lt_prog_compiler_wl='-Wl,'
9059 lt_prog_compiler_pic='-fpic'
9060 lt_prog_compiler_static='-Bstatic'
9061 ;;
9062 esac
9063 ;;
9064 esac
9065 ;;
9066
9067 newsos6)
9068 lt_prog_compiler_pic='-KPIC'
9069 lt_prog_compiler_static='-Bstatic'
9070 ;;
9071
9072 *nto* | *qnx*)
9073 # QNX uses GNU C++, but need to define -shared option too, otherwise
9074 # it will coredump.
9075 lt_prog_compiler_pic='-fPIC -shared'
9076 ;;
9077
9078 osf3* | osf4* | osf5*)
9079 lt_prog_compiler_wl='-Wl,'
9080 # All OSF/1 code is PIC.
9081 lt_prog_compiler_static='-non_shared'
9082 ;;
9083
9084 rdos*)
9085 lt_prog_compiler_static='-non_shared'
9086 ;;
9087
9088 solaris*)
9089 lt_prog_compiler_pic='-KPIC'
9090 lt_prog_compiler_static='-Bstatic'
9091 case $cc_basename in
9092 f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
9093 lt_prog_compiler_wl='-Qoption ld ';;
9094 *)
9095 lt_prog_compiler_wl='-Wl,';;
9096 esac
9097 ;;
9098
9099 sunos4*)
9100 lt_prog_compiler_wl='-Qoption ld '
9101 lt_prog_compiler_pic='-PIC'
9102 lt_prog_compiler_static='-Bstatic'
9103 ;;
9104
9105 sysv4 | sysv4.2uw2* | sysv4.3*)
9106 lt_prog_compiler_wl='-Wl,'
9107 lt_prog_compiler_pic='-KPIC'
9108 lt_prog_compiler_static='-Bstatic'
9109 ;;
9110
9111 sysv4*MP*)
9112 if test -d /usr/nec ;then
9113 lt_prog_compiler_pic='-Kconform_pic'
9114 lt_prog_compiler_static='-Bstatic'
9115 fi
9116 ;;
9117
9118 sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
9119 lt_prog_compiler_wl='-Wl,'
9120 lt_prog_compiler_pic='-KPIC'
9121 lt_prog_compiler_static='-Bstatic'
9122 ;;
9123
9124 unicos*)
9125 lt_prog_compiler_wl='-Wl,'
9126 lt_prog_compiler_can_build_shared=no
9127 ;;
9128
9129 uts4*)
9130 lt_prog_compiler_pic='-pic'
9131 lt_prog_compiler_static='-Bstatic'
9132 ;;
9133
9134 *)
9135 lt_prog_compiler_can_build_shared=no
9136 ;;
9137 esac
9138 fi
9139
9140 case $host_os in
9141 # For platforms which do not support PIC, -DPIC is meaningless:
9142 *djgpp*)
9143 lt_prog_compiler_pic=
9144 ;;
9145 *)
9146 lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
9147 ;;
9148 esac
9149
9150 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
9151 $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
9152 if ${lt_cv_prog_compiler_pic+:} false; then :
9153 $as_echo_n "(cached) " >&6
9154 else
9155 lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
9156 fi
9157 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
9158 $as_echo "$lt_cv_prog_compiler_pic" >&6; }
9159 lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
9160
9161 #
9162 # Check to make sure the PIC flag actually works.
9163 #
9164 if test -n "$lt_prog_compiler_pic"; then
9165 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
9166 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
9167 if ${lt_cv_prog_compiler_pic_works+:} false; then :
9168 $as_echo_n "(cached) " >&6
9169 else
9170 lt_cv_prog_compiler_pic_works=no
9171 ac_outfile=conftest.$ac_objext
9172 echo "$lt_simple_compile_test_code" > conftest.$ac_ext
9173 lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
9174 # Insert the option either (1) after the last *FLAGS variable, or
9175 # (2) before a word containing "conftest.", or (3) at the end.
9176 # Note that $ac_compile itself does not contain backslashes and begins
9177 # with a dollar sign (not a hyphen), so the echo should work correctly.
9178 # The option is referenced via a variable to avoid confusing sed.
9179 lt_compile=`echo "$ac_compile" | $SED \
9180 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
9181 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
9182 -e 's:$: $lt_compiler_flag:'`
9183 (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
9184 (eval "$lt_compile" 2>conftest.err)
9185 ac_status=$?
9186 cat conftest.err >&5
9187 echo "$as_me:$LINENO: \$? = $ac_status" >&5
9188 if (exit $ac_status) && test -s "$ac_outfile"; then
9189 # The compiler can only warn and ignore the option if not recognized
9190 # So say no if there are warnings other than the usual output.
9191 $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
9192 $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
9193 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
9194 lt_cv_prog_compiler_pic_works=yes
9195 fi
9196 fi
9197 $RM conftest*
9198
9199 fi
9200 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
9201 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
9202
9203 if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
9204 case $lt_prog_compiler_pic in
9205 "" | " "*) ;;
9206 *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
9207 esac
9208 else
9209 lt_prog_compiler_pic=
9210 lt_prog_compiler_can_build_shared=no
9211 fi
9212
9213 fi
9214
9215
9216
9217
9218
9219
9220
9221
9222
9223
9224
9225 #
9226 # Check to make sure the static flag actually works.
9227 #
9228 wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
9229 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
9230 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
9231 if ${lt_cv_prog_compiler_static_works+:} false; then :
9232 $as_echo_n "(cached) " >&6
9233 else
9234 lt_cv_prog_compiler_static_works=no
9235 save_LDFLAGS="$LDFLAGS"
9236 LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
9237 echo "$lt_simple_link_test_code" > conftest.$ac_ext
9238 if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
9239 # The linker can only warn and ignore the option if not recognized
9240 # So say no if there are warnings
9241 if test -s conftest.err; then
9242 # Append any errors to the config.log.
9243 cat conftest.err 1>&5
9244 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
9245 $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
9246 if diff conftest.exp conftest.er2 >/dev/null; then
9247 lt_cv_prog_compiler_static_works=yes
9248 fi
9249 else
9250 lt_cv_prog_compiler_static_works=yes
9251 fi
9252 fi
9253 $RM -r conftest*
9254 LDFLAGS="$save_LDFLAGS"
9255
9256 fi
9257 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
9258 $as_echo "$lt_cv_prog_compiler_static_works" >&6; }
9259
9260 if test x"$lt_cv_prog_compiler_static_works" = xyes; then
9261 :
9262 else
9263 lt_prog_compiler_static=
9264 fi
9265
9266
9267
9268
9269
9270
9271
9272 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
9273 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
9274 if ${lt_cv_prog_compiler_c_o+:} false; then :
9275 $as_echo_n "(cached) " >&6
9276 else
9277 lt_cv_prog_compiler_c_o=no
9278 $RM -r conftest 2>/dev/null
9279 mkdir conftest
9280 cd conftest
9281 mkdir out
9282 echo "$lt_simple_compile_test_code" > conftest.$ac_ext
9283
9284 lt_compiler_flag="-o out/conftest2.$ac_objext"
9285 # Insert the option either (1) after the last *FLAGS variable, or
9286 # (2) before a word containing "conftest.", or (3) at the end.
9287 # Note that $ac_compile itself does not contain backslashes and begins
9288 # with a dollar sign (not a hyphen), so the echo should work correctly.
9289 lt_compile=`echo "$ac_compile" | $SED \
9290 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
9291 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
9292 -e 's:$: $lt_compiler_flag:'`
9293 (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
9294 (eval "$lt_compile" 2>out/conftest.err)
9295 ac_status=$?
9296 cat out/conftest.err >&5
9297 echo "$as_me:$LINENO: \$? = $ac_status" >&5
9298 if (exit $ac_status) && test -s out/conftest2.$ac_objext
9299 then
9300 # The compiler can only warn and ignore the option if not recognized
9301 # So say no if there are warnings
9302 $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
9303 $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
9304 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
9305 lt_cv_prog_compiler_c_o=yes
9306 fi
9307 fi
9308 chmod u+w . 2>&5
9309 $RM conftest*
9310 # SGI C++ compiler will create directory out/ii_files/ for
9311 # template instantiation
9312 test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
9313 $RM out/* && rmdir out
9314 cd ..
9315 $RM -r conftest
9316 $RM conftest*
9317
9318 fi
9319 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
9320 $as_echo "$lt_cv_prog_compiler_c_o" >&6; }
9321
9322
9323
9324
9325
9326
9327 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
9328 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
9329 if ${lt_cv_prog_compiler_c_o+:} false; then :
9330 $as_echo_n "(cached) " >&6
9331 else
9332 lt_cv_prog_compiler_c_o=no
9333 $RM -r conftest 2>/dev/null
9334 mkdir conftest
9335 cd conftest
9336 mkdir out
9337 echo "$lt_simple_compile_test_code" > conftest.$ac_ext
9338
9339 lt_compiler_flag="-o out/conftest2.$ac_objext"
9340 # Insert the option either (1) after the last *FLAGS variable, or
9341 # (2) before a word containing "conftest.", or (3) at the end.
9342 # Note that $ac_compile itself does not contain backslashes and begins
9343 # with a dollar sign (not a hyphen), so the echo should work correctly.
9344 lt_compile=`echo "$ac_compile" | $SED \
9345 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
9346 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
9347 -e 's:$: $lt_compiler_flag:'`
9348 (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
9349 (eval "$lt_compile" 2>out/conftest.err)
9350 ac_status=$?
9351 cat out/conftest.err >&5
9352 echo "$as_me:$LINENO: \$? = $ac_status" >&5
9353 if (exit $ac_status) && test -s out/conftest2.$ac_objext
9354 then
9355 # The compiler can only warn and ignore the option if not recognized
9356 # So say no if there are warnings
9357 $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
9358 $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
9359 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
9360 lt_cv_prog_compiler_c_o=yes
9361 fi
9362 fi
9363 chmod u+w . 2>&5
9364 $RM conftest*
9365 # SGI C++ compiler will create directory out/ii_files/ for
9366 # template instantiation
9367 test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
9368 $RM out/* && rmdir out
9369 cd ..
9370 $RM -r conftest
9371 $RM conftest*
9372
9373 fi
9374 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
9375 $as_echo "$lt_cv_prog_compiler_c_o" >&6; }
9376
9377
9378
9379
9380 hard_links="nottested"
9381 if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
9382 # do not overwrite the value of need_locks provided by the user
9383 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
9384 $as_echo_n "checking if we can lock with hard links... " >&6; }
9385 hard_links=yes
9386 $RM conftest*
9387 ln conftest.a conftest.b 2>/dev/null && hard_links=no
9388 touch conftest.a
9389 ln conftest.a conftest.b 2>&5 || hard_links=no
9390 ln conftest.a conftest.b 2>/dev/null && hard_links=no
9391 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
9392 $as_echo "$hard_links" >&6; }
9393 if test "$hard_links" = no; then
9394 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
9395 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
9396 need_locks=warn
9397 fi
9398 else
9399 need_locks=no
9400 fi
9401
9402
9403
9404
9405
9406
9407 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
9408 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
9409
9410 runpath_var=
9411 allow_undefined_flag=
9412 always_export_symbols=no
9413 archive_cmds=
9414 archive_expsym_cmds=
9415 compiler_needs_object=no
9416 enable_shared_with_static_runtimes=no
9417 export_dynamic_flag_spec=
9418 export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
9419 hardcode_automatic=no
9420 hardcode_direct=no
9421 hardcode_direct_absolute=no
9422 hardcode_libdir_flag_spec=
9423 hardcode_libdir_separator=
9424 hardcode_minus_L=no
9425 hardcode_shlibpath_var=unsupported
9426 inherit_rpath=no
9427 link_all_deplibs=unknown
9428 module_cmds=
9429 module_expsym_cmds=
9430 old_archive_from_new_cmds=
9431 old_archive_from_expsyms_cmds=
9432 thread_safe_flag_spec=
9433 whole_archive_flag_spec=
9434 # include_expsyms should be a list of space-separated symbols to be *always*
9435 # included in the symbol list
9436 include_expsyms=
9437 # exclude_expsyms can be an extended regexp of symbols to exclude
9438 # it will be wrapped by ` (' and `)$', so one must not match beginning or
9439 # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
9440 # as well as any symbol that contains `d'.
9441 exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
9442 # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
9443 # platforms (ab)use it in PIC code, but their linkers get confused if
9444 # the symbol is explicitly referenced. Since portable code cannot
9445 # rely on this symbol name, it's probably fine to never include it in
9446 # preloaded symbol tables.
9447 # Exclude shared library initialization/finalization symbols.
9448 extract_expsyms_cmds=
9449
9450 case $host_os in
9451 cygwin* | mingw* | pw32* | cegcc*)
9452 # FIXME: the MSVC++ port hasn't been tested in a loooong time
9453 # When not using gcc, we currently assume that we are using
9454 # Microsoft Visual C++.
9455 if test "$GCC" != yes; then
9456 with_gnu_ld=no
9457 fi
9458 ;;
9459 interix*)
9460 # we just hope/assume this is gcc and not c89 (= MSVC++)
9461 with_gnu_ld=yes
9462 ;;
9463 openbsd*)
9464 with_gnu_ld=no
9465 ;;
9466 esac
9467
9468 ld_shlibs=yes
9469
9470 # On some targets, GNU ld is compatible enough with the native linker
9471 # that we're better off using the native interface for both.
9472 lt_use_gnu_ld_interface=no
9473 if test "$with_gnu_ld" = yes; then
9474 case $host_os in
9475 aix*)
9476 # The AIX port of GNU ld has always aspired to compatibility
9477 # with the native linker. However, as the warning in the GNU ld
9478 # block says, versions before 2.19.5* couldn't really create working
9479 # shared libraries, regardless of the interface used.
9480 case `$LD -v 2>&1` in
9481 *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
9482 *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
9483 *\ \(GNU\ Binutils\)\ [3-9]*) ;;
9484 *)
9485 lt_use_gnu_ld_interface=yes
9486 ;;
9487 esac
9488 ;;
9489 *)
9490 lt_use_gnu_ld_interface=yes
9491 ;;
9492 esac
9493 fi
9494
9495 if test "$lt_use_gnu_ld_interface" = yes; then
9496 # If archive_cmds runs LD, not CC, wlarc should be empty
9497 wlarc='${wl}'
9498
9499 # Set some defaults for GNU ld with shared library support. These
9500 # are reset later if shared libraries are not supported. Putting them
9501 # here allows them to be overridden if necessary.
9502 runpath_var=LD_RUN_PATH
9503 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
9504 export_dynamic_flag_spec='${wl}--export-dynamic'
9505 # ancient GNU ld didn't support --whole-archive et. al.
9506 if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
9507 whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
9508 else
9509 whole_archive_flag_spec=
9510 fi
9511 supports_anon_versioning=no
9512 case `$LD -v 2>&1` in
9513 *GNU\ gold*) supports_anon_versioning=yes ;;
9514 *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
9515 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
9516 *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
9517 *\ 2.11.*) ;; # other 2.11 versions
9518 *) supports_anon_versioning=yes ;;
9519 esac
9520
9521 # See if GNU ld supports shared libraries.
9522 case $host_os in
9523 aix[3-9]*)
9524 # On AIX/PPC, the GNU linker is very broken
9525 if test "$host_cpu" != ia64; then
9526 ld_shlibs=no
9527 cat <<_LT_EOF 1>&2
9528
9529 *** Warning: the GNU linker, at least up to release 2.19, is reported
9530 *** to be unable to reliably create shared libraries on AIX.
9531 *** Therefore, libtool is disabling shared libraries support. If you
9532 *** really care for shared libraries, you may want to install binutils
9533 *** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
9534 *** You will then need to restart the configuration process.
9535
9536 _LT_EOF
9537 fi
9538 ;;
9539
9540 amigaos*)
9541 case $host_cpu in
9542 powerpc)
9543 # see comment about AmigaOS4 .so support
9544 archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
9545 archive_expsym_cmds=''
9546 ;;
9547 m68k)
9548 archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
9549 hardcode_libdir_flag_spec='-L$libdir'
9550 hardcode_minus_L=yes
9551 ;;
9552 esac
9553 ;;
9554
9555 beos*)
9556 if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
9557 allow_undefined_flag=unsupported
9558 # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
9559 # support --undefined. This deserves some investigation. FIXME
9560 archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
9561 else
9562 ld_shlibs=no
9563 fi
9564 ;;
9565
9566 cygwin* | mingw* | pw32* | cegcc*)
9567 # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
9568 # as there is no search path for DLLs.
9569 hardcode_libdir_flag_spec='-L$libdir'
9570 export_dynamic_flag_spec='${wl}--export-all-symbols'
9571 allow_undefined_flag=unsupported
9572 always_export_symbols=no
9573 enable_shared_with_static_runtimes=yes
9574 export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
9575 exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
9576
9577 if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
9578 archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
9579 # If the export-symbols file already is a .def file (1st line
9580 # is EXPORTS), use it as is; otherwise, prepend...
9581 archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
9582 cp $export_symbols $output_objdir/$soname.def;
9583 else
9584 echo EXPORTS > $output_objdir/$soname.def;
9585 cat $export_symbols >> $output_objdir/$soname.def;
9586 fi~
9587 $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
9588 else
9589 ld_shlibs=no
9590 fi
9591 ;;
9592
9593 haiku*)
9594 archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
9595 link_all_deplibs=yes
9596 ;;
9597
9598 interix[3-9]*)
9599 hardcode_direct=no
9600 hardcode_shlibpath_var=no
9601 hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
9602 export_dynamic_flag_spec='${wl}-E'
9603 # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
9604 # Instead, shared libraries are loaded at an image base (0x10000000 by
9605 # default) and relocated if they conflict, which is a slow very memory
9606 # consuming and fragmenting process. To avoid this, we pick a random,
9607 # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
9608 # time. Moving up from 0x10000000 also allows more sbrk(2) space.
9609 archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
9610 archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
9611 ;;
9612
9613 gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
9614 tmp_diet=no
9615 if test "$host_os" = linux-dietlibc; then
9616 case $cc_basename in
9617 diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
9618 esac
9619 fi
9620 if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
9621 && test "$tmp_diet" = no
9622 then
9623 tmp_addflag=' $pic_flag'
9624 tmp_sharedflag='-shared'
9625 case $cc_basename,$host_cpu in
9626 pgcc*) # Portland Group C compiler
9627 whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
9628 tmp_addflag=' $pic_flag'
9629 ;;
9630 pgf77* | pgf90* | pgf95* | pgfortran*)
9631 # Portland Group f77 and f90 compilers
9632 whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
9633 tmp_addflag=' $pic_flag -Mnomain' ;;
9634 ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
9635 tmp_addflag=' -i_dynamic' ;;
9636 efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
9637 tmp_addflag=' -i_dynamic -nofor_main' ;;
9638 ifc* | ifort*) # Intel Fortran compiler
9639 tmp_addflag=' -nofor_main' ;;
9640 lf95*) # Lahey Fortran 8.1
9641 whole_archive_flag_spec=
9642 tmp_sharedflag='--shared' ;;
9643 xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
9644 tmp_sharedflag='-qmkshrobj'
9645 tmp_addflag= ;;
9646 nvcc*) # Cuda Compiler Driver 2.2
9647 whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
9648 compiler_needs_object=yes
9649 ;;
9650 esac
9651 case `$CC -V 2>&1 | sed 5q` in
9652 *Sun\ C*) # Sun C 5.9
9653 whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
9654 compiler_needs_object=yes
9655 tmp_sharedflag='-G' ;;
9656 *Sun\ F*) # Sun Fortran 8.3
9657 tmp_sharedflag='-G' ;;
9658 esac
9659 archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
9660
9661 if test "x$supports_anon_versioning" = xyes; then
9662 archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
9663 cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
9664 echo "local: *; };" >> $output_objdir/$libname.ver~
9665 $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
9666 fi
9667
9668 case $cc_basename in
9669 xlf* | bgf* | bgxlf* | mpixlf*)
9670 # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
9671 whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
9672 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
9673 archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
9674 if test "x$supports_anon_versioning" = xyes; then
9675 archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
9676 cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
9677 echo "local: *; };" >> $output_objdir/$libname.ver~
9678 $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
9679 fi
9680 ;;
9681 esac
9682 else
9683 ld_shlibs=no
9684 fi
9685 ;;
9686
9687 netbsd*)
9688 if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
9689 archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
9690 wlarc=
9691 else
9692 archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
9693 archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
9694 fi
9695 ;;
9696
9697 solaris*)
9698 if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
9699 ld_shlibs=no
9700 cat <<_LT_EOF 1>&2
9701
9702 *** Warning: The releases 2.8.* of the GNU linker cannot reliably
9703 *** create shared libraries on Solaris systems. Therefore, libtool
9704 *** is disabling shared libraries support. We urge you to upgrade GNU
9705 *** binutils to release 2.9.1 or newer. Another option is to modify
9706 *** your PATH or compiler configuration so that the native linker is
9707 *** used, and then restart.
9708
9709 _LT_EOF
9710 elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
9711 archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
9712 archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
9713 else
9714 ld_shlibs=no
9715 fi
9716 ;;
9717
9718 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
9719 case `$LD -v 2>&1` in
9720 *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
9721 ld_shlibs=no
9722 cat <<_LT_EOF 1>&2
9723
9724 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
9725 *** reliably create shared libraries on SCO systems. Therefore, libtool
9726 *** is disabling shared libraries support. We urge you to upgrade GNU
9727 *** binutils to release 2.16.91.0.3 or newer. Another option is to modify
9728 *** your PATH or compiler configuration so that the native linker is
9729 *** used, and then restart.
9730
9731 _LT_EOF
9732 ;;
9733 *)
9734 # For security reasons, it is highly recommended that you always
9735 # use absolute paths for naming shared libraries, and exclude the
9736 # DT_RUNPATH tag from executables and libraries. But doing so
9737 # requires that you compile everything twice, which is a pain.
9738 if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
9739 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
9740 archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
9741 archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
9742 else
9743 ld_shlibs=no
9744 fi
9745 ;;
9746 esac
9747 ;;
9748
9749 sunos4*)
9750 archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
9751 wlarc=
9752 hardcode_direct=yes
9753 hardcode_shlibpath_var=no
9754 ;;
9755
9756 *)
9757 if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
9758 archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
9759 archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
9760 else
9761 ld_shlibs=no
9762 fi
9763 ;;
9764 esac
9765
9766 if test "$ld_shlibs" = no; then
9767 runpath_var=
9768 hardcode_libdir_flag_spec=
9769 export_dynamic_flag_spec=
9770 whole_archive_flag_spec=
9771 fi
9772 else
9773 # PORTME fill in a description of your system's linker (not GNU ld)
9774 case $host_os in
9775 aix3*)
9776 allow_undefined_flag=unsupported
9777 always_export_symbols=yes
9778 archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
9779 # Note: this linker hardcodes the directories in LIBPATH if there
9780 # are no directories specified by -L.
9781 hardcode_minus_L=yes
9782 if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
9783 # Neither direct hardcoding nor static linking is supported with a
9784 # broken collect2.
9785 hardcode_direct=unsupported
9786 fi
9787 ;;
9788
9789 aix[4-9]*)
9790 if test "$host_cpu" = ia64; then
9791 # On IA64, the linker does run time linking by default, so we don't
9792 # have to do anything special.
9793 aix_use_runtimelinking=no
9794 exp_sym_flag='-Bexport'
9795 no_entry_flag=""
9796 else
9797 # If we're using GNU nm, then we don't want the "-C" option.
9798 # -C means demangle to AIX nm, but means don't demangle with GNU nm
9799 # Also, AIX nm treats weak defined symbols like other global
9800 # defined symbols, whereas GNU nm marks them as "W".
9801 if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
9802 export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
9803 else
9804 export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
9805 fi
9806 aix_use_runtimelinking=no
9807
9808 # Test if we are trying to use run time linking or normal
9809 # AIX style linking. If -brtl is somewhere in LDFLAGS, we
9810 # need to do runtime linking.
9811 case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
9812 for ld_flag in $LDFLAGS; do
9813 if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
9814 aix_use_runtimelinking=yes
9815 break
9816 fi
9817 done
9818 ;;
9819 esac
9820
9821 exp_sym_flag='-bexport'
9822 no_entry_flag='-bnoentry'
9823 fi
9824
9825 # When large executables or shared objects are built, AIX ld can
9826 # have problems creating the table of contents. If linking a library
9827 # or program results in "error TOC overflow" add -mminimal-toc to
9828 # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
9829 # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
9830
9831 archive_cmds=''
9832 hardcode_direct=yes
9833 hardcode_direct_absolute=yes
9834 hardcode_libdir_separator=':'
9835 link_all_deplibs=yes
9836 file_list_spec='${wl}-f,'
9837
9838 if test "$GCC" = yes; then
9839 case $host_os in aix4.[012]|aix4.[012].*)
9840 # We only want to do this on AIX 4.2 and lower, the check
9841 # below for broken collect2 doesn't work under 4.3+
9842 collect2name=`${CC} -print-prog-name=collect2`
9843 if test -f "$collect2name" &&
9844 strings "$collect2name" | $GREP resolve_lib_name >/dev/null
9845 then
9846 # We have reworked collect2
9847 :
9848 else
9849 # We have old collect2
9850 hardcode_direct=unsupported
9851 # It fails to find uninstalled libraries when the uninstalled
9852 # path is not listed in the libpath. Setting hardcode_minus_L
9853 # to unsupported forces relinking
9854 hardcode_minus_L=yes
9855 hardcode_libdir_flag_spec='-L$libdir'
9856 hardcode_libdir_separator=
9857 fi
9858 ;;
9859 esac
9860 shared_flag='-shared'
9861 if test "$aix_use_runtimelinking" = yes; then
9862 shared_flag="$shared_flag "'${wl}-G'
9863 fi
9864 else
9865 # not using gcc
9866 if test "$host_cpu" = ia64; then
9867 # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
9868 # chokes on -Wl,-G. The following line is correct:
9869 shared_flag='-G'
9870 else
9871 if test "$aix_use_runtimelinking" = yes; then
9872 shared_flag='${wl}-G'
9873 else
9874 shared_flag='${wl}-bM:SRE'
9875 fi
9876 fi
9877 fi
9878
9879 export_dynamic_flag_spec='${wl}-bexpall'
9880 # It seems that -bexpall does not export symbols beginning with
9881 # underscore (_), so it is better to generate a list of symbols to export.
9882 always_export_symbols=yes
9883 if test "$aix_use_runtimelinking" = yes; then
9884 # Warning - without using the other runtime loading flags (-brtl),
9885 # -berok will link without error, but may produce a broken library.
9886 allow_undefined_flag='-berok'
9887 # Determine the default libpath from the value encoded in an
9888 # empty executable.
9889 if test "${lt_cv_aix_libpath+set}" = set; then
9890 aix_libpath=$lt_cv_aix_libpath
9891 else
9892 if ${lt_cv_aix_libpath_+:} false; then :
9893 $as_echo_n "(cached) " >&6
9894 else
9895 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
9896 /* end confdefs.h. */
9897
9898 int
9899 main ()
9900 {
9901
9902 ;
9903 return 0;
9904 }
9905 _ACEOF
9906 if ac_fn_c_try_link "$LINENO"; then :
9907
9908 lt_aix_libpath_sed='
9909 /Import File Strings/,/^$/ {
9910 /^0/ {
9911 s/^0 *\([^ ]*\) *$/\1/
9912 p
9913 }
9914 }'
9915 lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
9916 # Check for a 64-bit object if we didn't find anything.
9917 if test -z "$lt_cv_aix_libpath_"; then
9918 lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
9919 fi
9920 fi
9921 rm -f core conftest.err conftest.$ac_objext \
9922 conftest$ac_exeext conftest.$ac_ext
9923 if test -z "$lt_cv_aix_libpath_"; then
9924 lt_cv_aix_libpath_="/usr/lib:/lib"
9925 fi
9926
9927 fi
9928
9929 aix_libpath=$lt_cv_aix_libpath_
9930 fi
9931
9932 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
9933 archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
9934 else
9935 if test "$host_cpu" = ia64; then
9936 hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
9937 allow_undefined_flag="-z nodefs"
9938 archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
9939 else
9940 # Determine the default libpath from the value encoded in an
9941 # empty executable.
9942 if test "${lt_cv_aix_libpath+set}" = set; then
9943 aix_libpath=$lt_cv_aix_libpath
9944 else
9945 if ${lt_cv_aix_libpath_+:} false; then :
9946 $as_echo_n "(cached) " >&6
9947 else
9948 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
9949 /* end confdefs.h. */
9950
9951 int
9952 main ()
9953 {
9954
9955 ;
9956 return 0;
9957 }
9958 _ACEOF
9959 if ac_fn_c_try_link "$LINENO"; then :
9960
9961 lt_aix_libpath_sed='
9962 /Import File Strings/,/^$/ {
9963 /^0/ {
9964 s/^0 *\([^ ]*\) *$/\1/
9965 p
9966 }
9967 }'
9968 lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
9969 # Check for a 64-bit object if we didn't find anything.
9970 if test -z "$lt_cv_aix_libpath_"; then
9971 lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
9972 fi
9973 fi
9974 rm -f core conftest.err conftest.$ac_objext \
9975 conftest$ac_exeext conftest.$ac_ext
9976 if test -z "$lt_cv_aix_libpath_"; then
9977 lt_cv_aix_libpath_="/usr/lib:/lib"
9978 fi
9979
9980 fi
9981
9982 aix_libpath=$lt_cv_aix_libpath_
9983 fi
9984
9985 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
9986 # Warning - without using the other run time loading flags,
9987 # -berok will link without error, but may produce a broken library.
9988 no_undefined_flag=' ${wl}-bernotok'
9989 allow_undefined_flag=' ${wl}-berok'
9990 if test "$with_gnu_ld" = yes; then
9991 # We only use this code for GNU lds that support --whole-archive.
9992 whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
9993 else
9994 # Exported symbols can be pulled into shared objects from archives
9995 whole_archive_flag_spec='$convenience'
9996 fi
9997 archive_cmds_need_lc=yes
9998 # This is similar to how AIX traditionally builds its shared libraries.
9999 archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
10000 fi
10001 fi
10002 ;;
10003
10004 amigaos*)
10005 case $host_cpu in
10006 powerpc)
10007 # see comment about AmigaOS4 .so support
10008 archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
10009 archive_expsym_cmds=''
10010 ;;
10011 m68k)
10012 archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
10013 hardcode_libdir_flag_spec='-L$libdir'
10014 hardcode_minus_L=yes
10015 ;;
10016 esac
10017 ;;
10018
10019 bsdi[45]*)
10020 export_dynamic_flag_spec=-rdynamic
10021 ;;
10022
10023 cygwin* | mingw* | pw32* | cegcc*)
10024 # When not using gcc, we currently assume that we are using
10025 # Microsoft Visual C++.
10026 # hardcode_libdir_flag_spec is actually meaningless, as there is
10027 # no search path for DLLs.
10028 case $cc_basename in
10029 cl*)
10030 # Native MSVC
10031 hardcode_libdir_flag_spec=' '
10032 allow_undefined_flag=unsupported
10033 always_export_symbols=yes
10034 file_list_spec='@'
10035 # Tell ltmain to make .lib files, not .a files.
10036 libext=lib
10037 # Tell ltmain to make .dll files, not .so files.
10038 shrext_cmds=".dll"
10039 # FIXME: Setting linknames here is a bad hack.
10040 archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
10041 archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
10042 sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
10043 else
10044 sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
10045 fi~
10046 $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
10047 linknames='
10048 # The linker will not automatically build a static lib if we build a DLL.
10049 # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
10050 enable_shared_with_static_runtimes=yes
10051 exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
10052 export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
10053 # Don't use ranlib
10054 old_postinstall_cmds='chmod 644 $oldlib'
10055 postlink_cmds='lt_outputfile="@OUTPUT@"~
10056 lt_tool_outputfile="@TOOL_OUTPUT@"~
10057 case $lt_outputfile in
10058 *.exe|*.EXE) ;;
10059 *)
10060 lt_outputfile="$lt_outputfile.exe"
10061 lt_tool_outputfile="$lt_tool_outputfile.exe"
10062 ;;
10063 esac~
10064 if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
10065 $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
10066 $RM "$lt_outputfile.manifest";
10067 fi'
10068 ;;
10069 *)
10070 # Assume MSVC wrapper
10071 hardcode_libdir_flag_spec=' '
10072 allow_undefined_flag=unsupported
10073 # Tell ltmain to make .lib files, not .a files.
10074 libext=lib
10075 # Tell ltmain to make .dll files, not .so files.
10076 shrext_cmds=".dll"
10077 # FIXME: Setting linknames here is a bad hack.
10078 archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
10079 # The linker will automatically build a .lib file if we build a DLL.
10080 old_archive_from_new_cmds='true'
10081 # FIXME: Should let the user specify the lib program.
10082 old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
10083 enable_shared_with_static_runtimes=yes
10084 ;;
10085 esac
10086 ;;
10087
10088 darwin* | rhapsody*)
10089
10090
10091 archive_cmds_need_lc=no
10092 hardcode_direct=no
10093 hardcode_automatic=yes
10094 hardcode_shlibpath_var=unsupported
10095 if test "$lt_cv_ld_force_load" = "yes"; then
10096 whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
10097
10098 else
10099 whole_archive_flag_spec=''
10100 fi
10101 link_all_deplibs=yes
10102 allow_undefined_flag="$_lt_dar_allow_undefined"
10103 case $cc_basename in
10104 ifort*) _lt_dar_can_shared=yes ;;
10105 *) _lt_dar_can_shared=$GCC ;;
10106 esac
10107 if test "$_lt_dar_can_shared" = "yes"; then
10108 output_verbose_link_cmd=func_echo_all
10109 archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
10110 module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
10111 archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
10112 module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
10113
10114 else
10115 ld_shlibs=no
10116 fi
10117
10118 ;;
10119
10120 dgux*)
10121 archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
10122 hardcode_libdir_flag_spec='-L$libdir'
10123 hardcode_shlibpath_var=no
10124 ;;
10125
10126 # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
10127 # support. Future versions do this automatically, but an explicit c++rt0.o
10128 # does not break anything, and helps significantly (at the cost of a little
10129 # extra space).
10130 freebsd2.2*)
10131 archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
10132 hardcode_libdir_flag_spec='-R$libdir'
10133 hardcode_direct=yes
10134 hardcode_shlibpath_var=no
10135 ;;
10136
10137 # Unfortunately, older versions of FreeBSD 2 do not have this feature.
10138 freebsd2.*)
10139 archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
10140 hardcode_direct=yes
10141 hardcode_minus_L=yes
10142 hardcode_shlibpath_var=no
10143 ;;
10144
10145 # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
10146 freebsd* | dragonfly*)
10147 archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
10148 hardcode_libdir_flag_spec='-R$libdir'
10149 hardcode_direct=yes
10150 hardcode_shlibpath_var=no
10151 ;;
10152
10153 hpux9*)
10154 if test "$GCC" = yes; then
10155 archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
10156 else
10157 archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
10158 fi
10159 hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
10160 hardcode_libdir_separator=:
10161 hardcode_direct=yes
10162
10163 # hardcode_minus_L: Not really in the search PATH,
10164 # but as the default location of the library.
10165 hardcode_minus_L=yes
10166 export_dynamic_flag_spec='${wl}-E'
10167 ;;
10168
10169 hpux10*)
10170 if test "$GCC" = yes && test "$with_gnu_ld" = no; then
10171 archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
10172 else
10173 archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
10174 fi
10175 if test "$with_gnu_ld" = no; then
10176 hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
10177 hardcode_libdir_separator=:
10178 hardcode_direct=yes
10179 hardcode_direct_absolute=yes
10180 export_dynamic_flag_spec='${wl}-E'
10181 # hardcode_minus_L: Not really in the search PATH,
10182 # but as the default location of the library.
10183 hardcode_minus_L=yes
10184 fi
10185 ;;
10186
10187 hpux11*)
10188 if test "$GCC" = yes && test "$with_gnu_ld" = no; then
10189 case $host_cpu in
10190 hppa*64*)
10191 archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
10192 ;;
10193 ia64*)
10194 archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
10195 ;;
10196 *)
10197 archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
10198 ;;
10199 esac
10200 else
10201 case $host_cpu in
10202 hppa*64*)
10203 archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
10204 ;;
10205 ia64*)
10206 archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
10207 ;;
10208 *)
10209
10210 # Older versions of the 11.00 compiler do not understand -b yet
10211 # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
10212 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
10213 $as_echo_n "checking if $CC understands -b... " >&6; }
10214 if ${lt_cv_prog_compiler__b+:} false; then :
10215 $as_echo_n "(cached) " >&6
10216 else
10217 lt_cv_prog_compiler__b=no
10218 save_LDFLAGS="$LDFLAGS"
10219 LDFLAGS="$LDFLAGS -b"
10220 echo "$lt_simple_link_test_code" > conftest.$ac_ext
10221 if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
10222 # The linker can only warn and ignore the option if not recognized
10223 # So say no if there are warnings
10224 if test -s conftest.err; then
10225 # Append any errors to the config.log.
10226 cat conftest.err 1>&5
10227 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
10228 $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
10229 if diff conftest.exp conftest.er2 >/dev/null; then
10230 lt_cv_prog_compiler__b=yes
10231 fi
10232 else
10233 lt_cv_prog_compiler__b=yes
10234 fi
10235 fi
10236 $RM -r conftest*
10237 LDFLAGS="$save_LDFLAGS"
10238
10239 fi
10240 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
10241 $as_echo "$lt_cv_prog_compiler__b" >&6; }
10242
10243 if test x"$lt_cv_prog_compiler__b" = xyes; then
10244 archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
10245 else
10246 archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
10247 fi
10248
10249 ;;
10250 esac
10251 fi
10252 if test "$with_gnu_ld" = no; then
10253 hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
10254 hardcode_libdir_separator=:
10255
10256 case $host_cpu in
10257 hppa*64*|ia64*)
10258 hardcode_direct=no
10259 hardcode_shlibpath_var=no
10260 ;;
10261 *)
10262 hardcode_direct=yes
10263 hardcode_direct_absolute=yes
10264 export_dynamic_flag_spec='${wl}-E'
10265
10266 # hardcode_minus_L: Not really in the search PATH,
10267 # but as the default location of the library.
10268 hardcode_minus_L=yes
10269 ;;
10270 esac
10271 fi
10272 ;;
10273
10274 irix5* | irix6* | nonstopux*)
10275 if test "$GCC" = yes; then
10276 archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
10277 # Try to use the -exported_symbol ld option, if it does not
10278 # work, assume that -exports_file does not work either and
10279 # implicitly export all symbols.
10280 # This should be the same for all languages, so no per-tag cache variable.
10281 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
10282 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
10283 if ${lt_cv_irix_exported_symbol+:} false; then :
10284 $as_echo_n "(cached) " >&6
10285 else
10286 save_LDFLAGS="$LDFLAGS"
10287 LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
10288 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
10289 /* end confdefs.h. */
10290 int foo (void) { return 0; }
10291 _ACEOF
10292 if ac_fn_c_try_link "$LINENO"; then :
10293 lt_cv_irix_exported_symbol=yes
10294 else
10295 lt_cv_irix_exported_symbol=no
10296 fi
10297 rm -f core conftest.err conftest.$ac_objext \
10298 conftest$ac_exeext conftest.$ac_ext
10299 LDFLAGS="$save_LDFLAGS"
10300 fi
10301 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
10302 $as_echo "$lt_cv_irix_exported_symbol" >&6; }
10303 if test "$lt_cv_irix_exported_symbol" = yes; then
10304 archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
10305 fi
10306 else
10307 archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
10308 archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
10309 fi
10310 archive_cmds_need_lc='no'
10311 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
10312 hardcode_libdir_separator=:
10313 inherit_rpath=yes
10314 link_all_deplibs=yes
10315 ;;
10316
10317 netbsd*)
10318 if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
10319 archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
10320 else
10321 archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
10322 fi
10323 hardcode_libdir_flag_spec='-R$libdir'
10324 hardcode_direct=yes
10325 hardcode_shlibpath_var=no
10326 ;;
10327
10328 newsos6)
10329 archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
10330 hardcode_direct=yes
10331 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
10332 hardcode_libdir_separator=:
10333 hardcode_shlibpath_var=no
10334 ;;
10335
10336 *nto* | *qnx*)
10337 ;;
10338
10339 openbsd*)
10340 if test -f /usr/libexec/ld.so; then
10341 hardcode_direct=yes
10342 hardcode_shlibpath_var=no
10343 hardcode_direct_absolute=yes
10344 if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
10345 archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
10346 archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
10347 hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
10348 export_dynamic_flag_spec='${wl}-E'
10349 else
10350 case $host_os in
10351 openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
10352 archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
10353 hardcode_libdir_flag_spec='-R$libdir'
10354 ;;
10355 *)
10356 archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
10357 hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
10358 ;;
10359 esac
10360 fi
10361 else
10362 ld_shlibs=no
10363 fi
10364 ;;
10365
10366 os2*)
10367 hardcode_libdir_flag_spec='-L$libdir'
10368 hardcode_minus_L=yes
10369 allow_undefined_flag=unsupported
10370 archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
10371 old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
10372 ;;
10373
10374 osf3*)
10375 if test "$GCC" = yes; then
10376 allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
10377 archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
10378 else
10379 allow_undefined_flag=' -expect_unresolved \*'
10380 archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
10381 fi
10382 archive_cmds_need_lc='no'
10383 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
10384 hardcode_libdir_separator=:
10385 ;;
10386
10387 osf4* | osf5*) # as osf3* with the addition of -msym flag
10388 if test "$GCC" = yes; then
10389 allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
10390 archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
10391 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
10392 else
10393 allow_undefined_flag=' -expect_unresolved \*'
10394 archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
10395 archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
10396 $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
10397
10398 # Both c and cxx compiler support -rpath directly
10399 hardcode_libdir_flag_spec='-rpath $libdir'
10400 fi
10401 archive_cmds_need_lc='no'
10402 hardcode_libdir_separator=:
10403 ;;
10404
10405 solaris*)
10406 no_undefined_flag=' -z defs'
10407 if test "$GCC" = yes; then
10408 wlarc='${wl}'
10409 archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
10410 archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
10411 $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
10412 else
10413 case `$CC -V 2>&1` in
10414 *"Compilers 5.0"*)
10415 wlarc=''
10416 archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
10417 archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
10418 $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
10419 ;;
10420 *)
10421 wlarc='${wl}'
10422 archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
10423 archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
10424 $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
10425 ;;
10426 esac
10427 fi
10428 hardcode_libdir_flag_spec='-R$libdir'
10429 hardcode_shlibpath_var=no
10430 case $host_os in
10431 solaris2.[0-5] | solaris2.[0-5].*) ;;
10432 *)
10433 # The compiler driver will combine and reorder linker options,
10434 # but understands `-z linker_flag'. GCC discards it without `$wl',
10435 # but is careful enough not to reorder.
10436 # Supported since Solaris 2.6 (maybe 2.5.1?)
10437 if test "$GCC" = yes; then
10438 whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
10439 else
10440 whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
10441 fi
10442 ;;
10443 esac
10444 link_all_deplibs=yes
10445 ;;
10446
10447 sunos4*)
10448 if test "x$host_vendor" = xsequent; then
10449 # Use $CC to link under sequent, because it throws in some extra .o
10450 # files that make .init and .fini sections work.
10451 archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
10452 else
10453 archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
10454 fi
10455 hardcode_libdir_flag_spec='-L$libdir'
10456 hardcode_direct=yes
10457 hardcode_minus_L=yes
10458 hardcode_shlibpath_var=no
10459 ;;
10460
10461 sysv4)
10462 case $host_vendor in
10463 sni)
10464 archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
10465 hardcode_direct=yes # is this really true???
10466 ;;
10467 siemens)
10468 ## LD is ld it makes a PLAMLIB
10469 ## CC just makes a GrossModule.
10470 archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
10471 reload_cmds='$CC -r -o $output$reload_objs'
10472 hardcode_direct=no
10473 ;;
10474 motorola)
10475 archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
10476 hardcode_direct=no #Motorola manual says yes, but my tests say they lie
10477 ;;
10478 esac
10479 runpath_var='LD_RUN_PATH'
10480 hardcode_shlibpath_var=no
10481 ;;
10482
10483 sysv4.3*)
10484 archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
10485 hardcode_shlibpath_var=no
10486 export_dynamic_flag_spec='-Bexport'
10487 ;;
10488
10489 sysv4*MP*)
10490 if test -d /usr/nec; then
10491 archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
10492 hardcode_shlibpath_var=no
10493 runpath_var=LD_RUN_PATH
10494 hardcode_runpath_var=yes
10495 ld_shlibs=yes
10496 fi
10497 ;;
10498
10499 sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
10500 no_undefined_flag='${wl}-z,text'
10501 archive_cmds_need_lc=no
10502 hardcode_shlibpath_var=no
10503 runpath_var='LD_RUN_PATH'
10504
10505 if test "$GCC" = yes; then
10506 archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
10507 archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
10508 else
10509 archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
10510 archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
10511 fi
10512 ;;
10513
10514 sysv5* | sco3.2v5* | sco5v6*)
10515 # Note: We can NOT use -z defs as we might desire, because we do not
10516 # link with -lc, and that would cause any symbols used from libc to
10517 # always be unresolved, which means just about no library would
10518 # ever link correctly. If we're not using GNU ld we use -z text
10519 # though, which does catch some bad symbols but isn't as heavy-handed
10520 # as -z defs.
10521 no_undefined_flag='${wl}-z,text'
10522 allow_undefined_flag='${wl}-z,nodefs'
10523 archive_cmds_need_lc=no
10524 hardcode_shlibpath_var=no
10525 hardcode_libdir_flag_spec='${wl}-R,$libdir'
10526 hardcode_libdir_separator=':'
10527 link_all_deplibs=yes
10528 export_dynamic_flag_spec='${wl}-Bexport'
10529 runpath_var='LD_RUN_PATH'
10530
10531 if test "$GCC" = yes; then
10532 archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
10533 archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
10534 else
10535 archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
10536 archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
10537 fi
10538 ;;
10539
10540 uts4*)
10541 archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
10542 hardcode_libdir_flag_spec='-L$libdir'
10543 hardcode_shlibpath_var=no
10544 ;;
10545
10546 *)
10547 ld_shlibs=no
10548 ;;
10549 esac
10550
10551 if test x$host_vendor = xsni; then
10552 case $host in
10553 sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
10554 export_dynamic_flag_spec='${wl}-Blargedynsym'
10555 ;;
10556 esac
10557 fi
10558 fi
10559
10560 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
10561 $as_echo "$ld_shlibs" >&6; }
10562 test "$ld_shlibs" = no && can_build_shared=no
10563
10564 with_gnu_ld=$with_gnu_ld
10565
10566
10567
10568
10569
10570
10571
10572
10573
10574
10575
10576
10577
10578
10579
10580 #
10581 # Do we need to explicitly link libc?
10582 #
10583 case "x$archive_cmds_need_lc" in
10584 x|xyes)
10585 # Assume -lc should be added
10586 archive_cmds_need_lc=yes
10587
10588 if test "$enable_shared" = yes && test "$GCC" = yes; then
10589 case $archive_cmds in
10590 *'~'*)
10591 # FIXME: we may have to deal with multi-command sequences.
10592 ;;
10593 '$CC '*)
10594 # Test whether the compiler implicitly links with -lc since on some
10595 # systems, -lgcc has to come before -lc. If gcc already passes -lc
10596 # to ld, don't add -lc before -lgcc.
10597 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
10598 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
10599 if ${lt_cv_archive_cmds_need_lc+:} false; then :
10600 $as_echo_n "(cached) " >&6
10601 else
10602 $RM conftest*
10603 echo "$lt_simple_compile_test_code" > conftest.$ac_ext
10604
10605 if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
10606 (eval $ac_compile) 2>&5
10607 ac_status=$?
10608 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
10609 test $ac_status = 0; } 2>conftest.err; then
10610 soname=conftest
10611 lib=conftest
10612 libobjs=conftest.$ac_objext
10613 deplibs=
10614 wl=$lt_prog_compiler_wl
10615 pic_flag=$lt_prog_compiler_pic
10616 compiler_flags=-v
10617 linker_flags=-v
10618 verstring=
10619 output_objdir=.
10620 libname=conftest
10621 lt_save_allow_undefined_flag=$allow_undefined_flag
10622 allow_undefined_flag=
10623 if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
10624 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
10625 ac_status=$?
10626 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
10627 test $ac_status = 0; }
10628 then
10629 lt_cv_archive_cmds_need_lc=no
10630 else
10631 lt_cv_archive_cmds_need_lc=yes
10632 fi
10633 allow_undefined_flag=$lt_save_allow_undefined_flag
10634 else
10635 cat conftest.err 1>&5
10636 fi
10637 $RM conftest*
10638
10639 fi
10640 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
10641 $as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
10642 archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
10643 ;;
10644 esac
10645 fi
10646 ;;
10647 esac
10648
10649
10650
10651
10652
10653
10654
10655
10656
10657
10658
10659
10660
10661
10662
10663
10664
10665
10666
10667
10668
10669
10670
10671
10672
10673
10674
10675
10676
10677
10678
10679
10680
10681
10682
10683
10684
10685
10686
10687
10688
10689
10690
10691
10692
10693
10694
10695
10696
10697
10698
10699
10700
10701
10702
10703
10704
10705
10706
10707
10708
10709
10710
10711
10712
10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800 { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
10801 $as_echo_n "checking dynamic linker characteristics... " >&6; }
10802
10803 if test "$GCC" = yes; then
10804 case $host_os in
10805 darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
10806 *) lt_awk_arg="/^libraries:/" ;;
10807 esac
10808 case $host_os in
10809 mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
10810 *) lt_sed_strip_eq="s,=/,/,g" ;;
10811 esac
10812 lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
10813 case $lt_search_path_spec in
10814 *\;*)
10815 # if the path contains ";" then we assume it to be the separator
10816 # otherwise default to the standard path separator (i.e. ":") - it is
10817 # assumed that no part of a normal pathname contains ";" but that should
10818 # okay in the real world where ";" in dirpaths is itself problematic.
10819 lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
10820 ;;
10821 *)
10822 lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
10823 ;;
10824 esac
10825 # Ok, now we have the path, separated by spaces, we can step through it
10826 # and add multilib dir if necessary.
10827 lt_tmp_lt_search_path_spec=
10828 lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
10829 for lt_sys_path in $lt_search_path_spec; do
10830 if test -d "$lt_sys_path/$lt_multi_os_dir"; then
10831 lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
10832 else
10833 test -d "$lt_sys_path" && \
10834 lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
10835 fi
10836 done
10837 lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
10838 BEGIN {RS=" "; FS="/|\n";} {
10839 lt_foo="";
10840 lt_count=0;
10841 for (lt_i = NF; lt_i > 0; lt_i--) {
10842 if ($lt_i != "" && $lt_i != ".") {
10843 if ($lt_i == "..") {
10844 lt_count++;
10845 } else {
10846 if (lt_count == 0) {
10847 lt_foo="/" $lt_i lt_foo;
10848 } else {
10849 lt_count--;
10850 }
10851 }
10852 }
10853 }
10854 if (lt_foo != "") { lt_freq[lt_foo]++; }
10855 if (lt_freq[lt_foo] == 1) { print lt_foo; }
10856 }'`
10857 # AWK program above erroneously prepends '/' to C:/dos/paths
10858 # for these hosts.
10859 case $host_os in
10860 mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
10861 $SED 's,/\([A-Za-z]:\),\1,g'` ;;
10862 esac
10863 sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
10864 else
10865 sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
10866 fi
10867 library_names_spec=
10868 libname_spec='lib$name'
10869 soname_spec=
10870 shrext_cmds=".so"
10871 postinstall_cmds=
10872 postuninstall_cmds=
10873 finish_cmds=
10874 finish_eval=
10875 shlibpath_var=
10876 shlibpath_overrides_runpath=unknown
10877 version_type=none
10878 dynamic_linker="$host_os ld.so"
10879 sys_lib_dlsearch_path_spec="/lib /usr/lib"
10880 need_lib_prefix=unknown
10881 hardcode_into_libs=no
10882
10883 # when you set need_version to no, make sure it does not cause -set_version
10884 # flags to be left without arguments
10885 need_version=unknown
10886
10887 case $host_os in
10888 aix3*)
10889 version_type=linux # correct to gnu/linux during the next big refactor
10890 library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
10891 shlibpath_var=LIBPATH
10892
10893 # AIX 3 has no versioning support, so we append a major version to the name.
10894 soname_spec='${libname}${release}${shared_ext}$major'
10895 ;;
10896
10897 aix[4-9]*)
10898 version_type=linux # correct to gnu/linux during the next big refactor
10899 need_lib_prefix=no
10900 need_version=no
10901 hardcode_into_libs=yes
10902 if test "$host_cpu" = ia64; then
10903 # AIX 5 supports IA64
10904 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
10905 shlibpath_var=LD_LIBRARY_PATH
10906 else
10907 # With GCC up to 2.95.x, collect2 would create an import file
10908 # for dependence libraries. The import file would start with
10909 # the line `#! .'. This would cause the generated library to
10910 # depend on `.', always an invalid library. This was fixed in
10911 # development snapshots of GCC prior to 3.0.
10912 case $host_os in
10913 aix4 | aix4.[01] | aix4.[01].*)
10914 if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
10915 echo ' yes '
10916 echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
10917 :
10918 else
10919 can_build_shared=no
10920 fi
10921 ;;
10922 esac
10923 # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
10924 # soname into executable. Probably we can add versioning support to
10925 # collect2, so additional links can be useful in future.
10926 if test "$aix_use_runtimelinking" = yes; then
10927 # If using run time linking (on AIX 4.2 or later) use lib<name>.so
10928 # instead of lib<name>.a to let people know that these are not
10929 # typical AIX shared libraries.
10930 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
10931 else
10932 # We preserve .a as extension for shared libraries through AIX4.2
10933 # and later when we are not doing run time linking.
10934 library_names_spec='${libname}${release}.a $libname.a'
10935 soname_spec='${libname}${release}${shared_ext}$major'
10936 fi
10937 shlibpath_var=LIBPATH
10938 fi
10939 ;;
10940
10941 amigaos*)
10942 case $host_cpu in
10943 powerpc)
10944 # Since July 2007 AmigaOS4 officially supports .so libraries.
10945 # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
10946 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
10947 ;;
10948 m68k)
10949 library_names_spec='$libname.ixlibrary $libname.a'
10950 # Create ${libname}_ixlibrary.a entries in /sys/libs.
10951 finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
10952 ;;
10953 esac
10954 ;;
10955
10956 beos*)
10957 library_names_spec='${libname}${shared_ext}'
10958 dynamic_linker="$host_os ld.so"
10959 shlibpath_var=LIBRARY_PATH
10960 ;;
10961
10962 bsdi[45]*)
10963 version_type=linux # correct to gnu/linux during the next big refactor
10964 need_version=no
10965 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
10966 soname_spec='${libname}${release}${shared_ext}$major'
10967 finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
10968 shlibpath_var=LD_LIBRARY_PATH
10969 sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
10970 sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
10971 # the default ld.so.conf also contains /usr/contrib/lib and
10972 # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
10973 # libtool to hard-code these into programs
10974 ;;
10975
10976 cygwin* | mingw* | pw32* | cegcc*)
10977 version_type=windows
10978 shrext_cmds=".dll"
10979 need_version=no
10980 need_lib_prefix=no
10981
10982 case $GCC,$cc_basename in
10983 yes,*)
10984 # gcc
10985 library_names_spec='$libname.dll.a'
10986 # DLL is installed to $(libdir)/../bin by postinstall_cmds
10987 postinstall_cmds='base_file=`basename \${file}`~
10988 dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
10989 dldir=$destdir/`dirname \$dlpath`~
10990 test -d \$dldir || mkdir -p \$dldir~
10991 $install_prog $dir/$dlname \$dldir/$dlname~
10992 chmod a+x \$dldir/$dlname~
10993 if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
10994 eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
10995 fi'
10996 postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
10997 dlpath=$dir/\$dldll~
10998 $RM \$dlpath'
10999 shlibpath_overrides_runpath=yes
11000
11001 case $host_os in
11002 cygwin*)
11003 # Cygwin DLLs use 'cyg' prefix rather than 'lib'
11004 soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
11005
11006 sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
11007 ;;
11008 mingw* | cegcc*)
11009 # MinGW DLLs use traditional 'lib' prefix
11010 soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
11011 ;;
11012 pw32*)
11013 # pw32 DLLs use 'pw' prefix rather than 'lib'
11014 library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
11015 ;;
11016 esac
11017 dynamic_linker='Win32 ld.exe'
11018 ;;
11019
11020 *,cl*)
11021 # Native MSVC
11022 libname_spec='$name'
11023 soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
11024 library_names_spec='${libname}.dll.lib'
11025
11026 case $build_os in
11027 mingw*)
11028 sys_lib_search_path_spec=
11029 lt_save_ifs=$IFS
11030 IFS=';'
11031 for lt_path in $LIB
11032 do
11033 IFS=$lt_save_ifs
11034 # Let DOS variable expansion print the short 8.3 style file name.
11035 lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
11036 sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
11037 done
11038 IFS=$lt_save_ifs
11039 # Convert to MSYS style.
11040 sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
11041 ;;
11042 cygwin*)
11043 # Convert to unix form, then to dos form, then back to unix form
11044 # but this time dos style (no spaces!) so that the unix form looks
11045 # like /cygdrive/c/PROGRA~1:/cygdr...
11046 sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
11047 sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
11048 sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
11049 ;;
11050 *)
11051 sys_lib_search_path_spec="$LIB"
11052 if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
11053 # It is most probably a Windows format PATH.
11054 sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
11055 else
11056 sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
11057 fi
11058 # FIXME: find the short name or the path components, as spaces are
11059 # common. (e.g. "Program Files" -> "PROGRA~1")
11060 ;;
11061 esac
11062
11063 # DLL is installed to $(libdir)/../bin by postinstall_cmds
11064 postinstall_cmds='base_file=`basename \${file}`~
11065 dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
11066 dldir=$destdir/`dirname \$dlpath`~
11067 test -d \$dldir || mkdir -p \$dldir~
11068 $install_prog $dir/$dlname \$dldir/$dlname'
11069 postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
11070 dlpath=$dir/\$dldll~
11071 $RM \$dlpath'
11072 shlibpath_overrides_runpath=yes
11073 dynamic_linker='Win32 link.exe'
11074 ;;
11075
11076 *)
11077 # Assume MSVC wrapper
11078 library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
11079 dynamic_linker='Win32 ld.exe'
11080 ;;
11081 esac
11082 # FIXME: first we should search . and the directory the executable is in
11083 shlibpath_var=PATH
11084 ;;
11085
11086 darwin* | rhapsody*)
11087 dynamic_linker="$host_os dyld"
11088 version_type=darwin
11089 need_lib_prefix=no
11090 need_version=no
11091 library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
11092 soname_spec='${libname}${release}${major}$shared_ext'
11093 shlibpath_overrides_runpath=yes
11094 shlibpath_var=DYLD_LIBRARY_PATH
11095 shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
11096
11097 sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
11098 sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
11099 ;;
11100
11101 dgux*)
11102 version_type=linux # correct to gnu/linux during the next big refactor
11103 need_lib_prefix=no
11104 need_version=no
11105 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
11106 soname_spec='${libname}${release}${shared_ext}$major'
11107 shlibpath_var=LD_LIBRARY_PATH
11108 ;;
11109
11110 freebsd* | dragonfly*)
11111 # DragonFly does not have aout. When/if they implement a new
11112 # versioning mechanism, adjust this.
11113 if test -x /usr/bin/objformat; then
11114 objformat=`/usr/bin/objformat`
11115 else
11116 case $host_os in
11117 freebsd[23].*) objformat=aout ;;
11118 *) objformat=elf ;;
11119 esac
11120 fi
11121 version_type=freebsd-$objformat
11122 case $version_type in
11123 freebsd-elf*)
11124 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
11125 need_version=no
11126 need_lib_prefix=no
11127 ;;
11128 freebsd-*)
11129 library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
11130 need_version=yes
11131 ;;
11132 esac
11133 shlibpath_var=LD_LIBRARY_PATH
11134 case $host_os in
11135 freebsd2.*)
11136 shlibpath_overrides_runpath=yes
11137 ;;
11138 freebsd3.[01]* | freebsdelf3.[01]*)
11139 shlibpath_overrides_runpath=yes
11140 hardcode_into_libs=yes
11141 ;;
11142 freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
11143 freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
11144 shlibpath_overrides_runpath=no
11145 hardcode_into_libs=yes
11146 ;;
11147 *) # from 4.6 on, and DragonFly
11148 shlibpath_overrides_runpath=yes
11149 hardcode_into_libs=yes
11150 ;;
11151 esac
11152 ;;
11153
11154 gnu*)
11155 version_type=linux # correct to gnu/linux during the next big refactor
11156 need_lib_prefix=no
11157 need_version=no
11158 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
11159 soname_spec='${libname}${release}${shared_ext}$major'
11160 shlibpath_var=LD_LIBRARY_PATH
11161 shlibpath_overrides_runpath=no
11162 hardcode_into_libs=yes
11163 ;;
11164
11165 haiku*)
11166 version_type=linux # correct to gnu/linux during the next big refactor
11167 need_lib_prefix=no
11168 need_version=no
11169 dynamic_linker="$host_os runtime_loader"
11170 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
11171 soname_spec='${libname}${release}${shared_ext}$major'
11172 shlibpath_var=LIBRARY_PATH
11173 shlibpath_overrides_runpath=yes
11174 sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
11175 hardcode_into_libs=yes
11176 ;;
11177
11178 hpux9* | hpux10* | hpux11*)
11179 # Give a soname corresponding to the major version so that dld.sl refuses to
11180 # link against other versions.
11181 version_type=sunos
11182 need_lib_prefix=no
11183 need_version=no
11184 case $host_cpu in
11185 ia64*)
11186 shrext_cmds='.so'
11187 hardcode_into_libs=yes
11188 dynamic_linker="$host_os dld.so"
11189 shlibpath_var=LD_LIBRARY_PATH
11190 shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
11191 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
11192 soname_spec='${libname}${release}${shared_ext}$major'
11193 if test "X$HPUX_IA64_MODE" = X32; then
11194 sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
11195 else
11196 sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
11197 fi
11198 sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
11199 ;;
11200 hppa*64*)
11201 shrext_cmds='.sl'
11202 hardcode_into_libs=yes
11203 dynamic_linker="$host_os dld.sl"
11204 shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
11205 shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
11206 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
11207 soname_spec='${libname}${release}${shared_ext}$major'
11208 sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
11209 sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
11210 ;;
11211 *)
11212 shrext_cmds='.sl'
11213 dynamic_linker="$host_os dld.sl"
11214 shlibpath_var=SHLIB_PATH
11215 shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
11216 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
11217 soname_spec='${libname}${release}${shared_ext}$major'
11218 ;;
11219 esac
11220 # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
11221 postinstall_cmds='chmod 555 $lib'
11222 # or fails outright, so override atomically:
11223 install_override_mode=555
11224 ;;
11225
11226 interix[3-9]*)
11227 version_type=linux # correct to gnu/linux during the next big refactor
11228 need_lib_prefix=no
11229 need_version=no
11230 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
11231 soname_spec='${libname}${release}${shared_ext}$major'
11232 dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
11233 shlibpath_var=LD_LIBRARY_PATH
11234 shlibpath_overrides_runpath=no
11235 hardcode_into_libs=yes
11236 ;;
11237
11238 irix5* | irix6* | nonstopux*)
11239 case $host_os in
11240 nonstopux*) version_type=nonstopux ;;
11241 *)
11242 if test "$lt_cv_prog_gnu_ld" = yes; then
11243 version_type=linux # correct to gnu/linux during the next big refactor
11244 else
11245 version_type=irix
11246 fi ;;
11247 esac
11248 need_lib_prefix=no
11249 need_version=no
11250 soname_spec='${libname}${release}${shared_ext}$major'
11251 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
11252 case $host_os in
11253 irix5* | nonstopux*)
11254 libsuff= shlibsuff=
11255 ;;
11256 *)
11257 case $LD in # libtool.m4 will add one of these switches to LD
11258 *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
11259 libsuff= shlibsuff= libmagic=32-bit;;
11260 *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
11261 libsuff=32 shlibsuff=N32 libmagic=N32;;
11262 *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
11263 libsuff=64 shlibsuff=64 libmagic=64-bit;;
11264 *) libsuff= shlibsuff= libmagic=never-match;;
11265 esac
11266 ;;
11267 esac
11268 shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
11269 shlibpath_overrides_runpath=no
11270 sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
11271 sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
11272 hardcode_into_libs=yes
11273 ;;
11274
11275 # No shared lib support for Linux oldld, aout, or coff.
11276 linux*oldld* | linux*aout* | linux*coff*)
11277 dynamic_linker=no
11278 ;;
11279
11280 # This must be glibc/ELF.
11281 linux* | k*bsd*-gnu | kopensolaris*-gnu)
11282 version_type=linux # correct to gnu/linux during the next big refactor
11283 need_lib_prefix=no
11284 need_version=no
11285 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
11286 soname_spec='${libname}${release}${shared_ext}$major'
11287 finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
11288 shlibpath_var=LD_LIBRARY_PATH
11289 shlibpath_overrides_runpath=no
11290
11291 # Some binutils ld are patched to set DT_RUNPATH
11292 if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
11293 $as_echo_n "(cached) " >&6
11294 else
11295 lt_cv_shlibpath_overrides_runpath=no
11296 save_LDFLAGS=$LDFLAGS
11297 save_libdir=$libdir
11298 eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
11299 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
11300 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
11301 /* end confdefs.h. */
11302
11303 int
11304 main ()
11305 {
11306
11307 ;
11308 return 0;
11309 }
11310 _ACEOF
11311 if ac_fn_c_try_link "$LINENO"; then :
11312 if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
11313 lt_cv_shlibpath_overrides_runpath=yes
11314 fi
11315 fi
11316 rm -f core conftest.err conftest.$ac_objext \
11317 conftest$ac_exeext conftest.$ac_ext
11318 LDFLAGS=$save_LDFLAGS
11319 libdir=$save_libdir
11320
11321 fi
11322
11323 shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
11324
11325 # This implies no fast_install, which is unacceptable.
11326 # Some rework will be needed to allow for fast_install
11327 # before this can be enabled.
11328 hardcode_into_libs=yes
11329
11330 # Append ld.so.conf contents to the search path
11331 if test -f /etc/ld.so.conf; then
11332 lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
11333 sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
11334 fi
11335
11336 # We used to test for /lib/ld.so.1 and disable shared libraries on
11337 # powerpc, because MkLinux only supported shared libraries with the
11338 # GNU dynamic linker. Since this was broken with cross compilers,
11339 # most powerpc-linux boxes support dynamic linking these days and
11340 # people can always --disable-shared, the test was removed, and we
11341 # assume the GNU/Linux dynamic linker is in use.
11342 dynamic_linker='GNU/Linux ld.so'
11343 ;;
11344
11345 netbsd*)
11346 version_type=sunos
11347 need_lib_prefix=no
11348 need_version=no
11349 if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
11350 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
11351 finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
11352 dynamic_linker='NetBSD (a.out) ld.so'
11353 else
11354 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
11355 soname_spec='${libname}${release}${shared_ext}$major'
11356 dynamic_linker='NetBSD ld.elf_so'
11357 fi
11358 shlibpath_var=LD_LIBRARY_PATH
11359 shlibpath_overrides_runpath=yes
11360 hardcode_into_libs=yes
11361 ;;
11362
11363 newsos6)
11364 version_type=linux # correct to gnu/linux during the next big refactor
11365 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
11366 shlibpath_var=LD_LIBRARY_PATH
11367 shlibpath_overrides_runpath=yes
11368 ;;
11369
11370 *nto* | *qnx*)
11371 version_type=qnx
11372 need_lib_prefix=no
11373 need_version=no
11374 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
11375 soname_spec='${libname}${release}${shared_ext}$major'
11376 shlibpath_var=LD_LIBRARY_PATH
11377 shlibpath_overrides_runpath=no
11378 hardcode_into_libs=yes
11379 dynamic_linker='ldqnx.so'
11380 ;;
11381
11382 openbsd*)
11383 version_type=sunos
11384 sys_lib_dlsearch_path_spec="/usr/lib"
11385 need_lib_prefix=no
11386 # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
11387 case $host_os in
11388 openbsd3.3 | openbsd3.3.*) need_version=yes ;;
11389 *) need_version=no ;;
11390 esac
11391 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
11392 finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
11393 shlibpath_var=LD_LIBRARY_PATH
11394 if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
11395 case $host_os in
11396 openbsd2.[89] | openbsd2.[89].*)
11397 shlibpath_overrides_runpath=no
11398 ;;
11399 *)
11400 shlibpath_overrides_runpath=yes
11401 ;;
11402 esac
11403 else
11404 shlibpath_overrides_runpath=yes
11405 fi
11406 ;;
11407
11408 os2*)
11409 libname_spec='$name'
11410 shrext_cmds=".dll"
11411 need_lib_prefix=no
11412 library_names_spec='$libname${shared_ext} $libname.a'
11413 dynamic_linker='OS/2 ld.exe'
11414 shlibpath_var=LIBPATH
11415 ;;
11416
11417 osf3* | osf4* | osf5*)
11418 version_type=osf
11419 need_lib_prefix=no
11420 need_version=no
11421 soname_spec='${libname}${release}${shared_ext}$major'
11422 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
11423 shlibpath_var=LD_LIBRARY_PATH
11424 sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
11425 sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
11426 ;;
11427
11428 rdos*)
11429 dynamic_linker=no
11430 ;;
11431
11432 solaris*)
11433 version_type=linux # correct to gnu/linux during the next big refactor
11434 need_lib_prefix=no
11435 need_version=no
11436 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
11437 soname_spec='${libname}${release}${shared_ext}$major'
11438 shlibpath_var=LD_LIBRARY_PATH
11439 shlibpath_overrides_runpath=yes
11440 hardcode_into_libs=yes
11441 # ldd complains unless libraries are executable
11442 postinstall_cmds='chmod +x $lib'
11443 ;;
11444
11445 sunos4*)
11446 version_type=sunos
11447 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
11448 finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
11449 shlibpath_var=LD_LIBRARY_PATH
11450 shlibpath_overrides_runpath=yes
11451 if test "$with_gnu_ld" = yes; then
11452 need_lib_prefix=no
11453 fi
11454 need_version=yes
11455 ;;
11456
11457 sysv4 | sysv4.3*)
11458 version_type=linux # correct to gnu/linux during the next big refactor
11459 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
11460 soname_spec='${libname}${release}${shared_ext}$major'
11461 shlibpath_var=LD_LIBRARY_PATH
11462 case $host_vendor in
11463 sni)
11464 shlibpath_overrides_runpath=no
11465 need_lib_prefix=no
11466 runpath_var=LD_RUN_PATH
11467 ;;
11468 siemens)
11469 need_lib_prefix=no
11470 ;;
11471 motorola)
11472 need_lib_prefix=no
11473 need_version=no
11474 shlibpath_overrides_runpath=no
11475 sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
11476 ;;
11477 esac
11478 ;;
11479
11480 sysv4*MP*)
11481 if test -d /usr/nec ;then
11482 version_type=linux # correct to gnu/linux during the next big refactor
11483 library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
11484 soname_spec='$libname${shared_ext}.$major'
11485 shlibpath_var=LD_LIBRARY_PATH
11486 fi
11487 ;;
11488
11489 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
11490 version_type=freebsd-elf
11491 need_lib_prefix=no
11492 need_version=no
11493 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
11494 soname_spec='${libname}${release}${shared_ext}$major'
11495 shlibpath_var=LD_LIBRARY_PATH
11496 shlibpath_overrides_runpath=yes
11497 hardcode_into_libs=yes
11498 if test "$with_gnu_ld" = yes; then
11499 sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
11500 else
11501 sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
11502 case $host_os in
11503 sco3.2v5*)
11504 sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
11505 ;;
11506 esac
11507 fi
11508 sys_lib_dlsearch_path_spec='/usr/lib'
11509 ;;
11510
11511 tpf*)
11512 # TPF is a cross-target only. Preferred cross-host = GNU/Linux.
11513 version_type=linux # correct to gnu/linux during the next big refactor
11514 need_lib_prefix=no
11515 need_version=no
11516 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
11517 shlibpath_var=LD_LIBRARY_PATH
11518 shlibpath_overrides_runpath=no
11519 hardcode_into_libs=yes
11520 ;;
11521
11522 uts4*)
11523 version_type=linux # correct to gnu/linux during the next big refactor
11524 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
11525 soname_spec='${libname}${release}${shared_ext}$major'
11526 shlibpath_var=LD_LIBRARY_PATH
11527 ;;
11528
11529 *)
11530 dynamic_linker=no
11531 ;;
11532 esac
11533 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
11534 $as_echo "$dynamic_linker" >&6; }
11535 test "$dynamic_linker" = no && can_build_shared=no
11536
11537 variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
11538 if test "$GCC" = yes; then
11539 variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
11540 fi
11541
11542 if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
11543 sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
11544 fi
11545 if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
11546 sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
11547 fi
11548
11549
11550
11551
11552
11553
11554
11555
11556
11557
11558
11559
11560
11561
11562
11563
11564
11565
11566
11567
11568
11569
11570
11571
11572
11573
11574
11575
11576
11577
11578
11579
11580
11581
11582
11583
11584
11585
11586
11587
11588
11589
11590
11591
11592
11593
11594
11595
11596
11597
11598
11599
11600
11601
11602
11603
11604
11605
11606
11607
11608
11609
11610
11611
11612
11613
11614
11615
11616
11617
11618
11619
11620
11621
11622
11623
11624
11625
11626
11627
11628
11629
11630
11631
11632
11633
11634
11635
11636
11637
11638
11639
11640 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
11641 $as_echo_n "checking how to hardcode library paths into programs... " >&6; }
11642 hardcode_action=
11643 if test -n "$hardcode_libdir_flag_spec" ||
11644 test -n "$runpath_var" ||
11645 test "X$hardcode_automatic" = "Xyes" ; then
11646
11647 # We can hardcode non-existent directories.
11648 if test "$hardcode_direct" != no &&
11649 # If the only mechanism to avoid hardcoding is shlibpath_var, we
11650 # have to relink, otherwise we might link with an installed library
11651 # when we should be linking with a yet-to-be-installed one
11652 ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
11653 test "$hardcode_minus_L" != no; then
11654 # Linking always hardcodes the temporary library directory.
11655 hardcode_action=relink
11656 else
11657 # We can link without hardcoding, and we can hardcode nonexisting dirs.
11658 hardcode_action=immediate
11659 fi
11660 else
11661 # We cannot hardcode anything, or else we can only hardcode existing
11662 # directories.
11663 hardcode_action=unsupported
11664 fi
11665 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
11666 $as_echo "$hardcode_action" >&6; }
11667
11668 if test "$hardcode_action" = relink ||
11669 test "$inherit_rpath" = yes; then
11670 # Fast installation is not supported
11671 enable_fast_install=no
11672 elif test "$shlibpath_overrides_runpath" = yes ||
11673 test "$enable_shared" = no; then
11674 # Fast installation is not necessary
11675 enable_fast_install=needless
11676 fi
11677
11678
11679
11680
11681
11682
11683 if test "x$enable_dlopen" != xyes; then
11684 enable_dlopen=unknown
11685 enable_dlopen_self=unknown
11686 enable_dlopen_self_static=unknown
11687 else
11688 lt_cv_dlopen=no
11689 lt_cv_dlopen_libs=
11690
11691 case $host_os in
11692 beos*)
11693 lt_cv_dlopen="load_add_on"
11694 lt_cv_dlopen_libs=
11695 lt_cv_dlopen_self=yes
11696 ;;
11697
11698 mingw* | pw32* | cegcc*)
11699 lt_cv_dlopen="LoadLibrary"
11700 lt_cv_dlopen_libs=
11701 ;;
11702
11703 cygwin*)
11704 lt_cv_dlopen="dlopen"
11705 lt_cv_dlopen_libs=
11706 ;;
11707
11708 darwin*)
11709 # if libdl is installed we need to link against it
11710 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
11711 $as_echo_n "checking for dlopen in -ldl... " >&6; }
11712 if ${ac_cv_lib_dl_dlopen+:} false; then :
11713 $as_echo_n "(cached) " >&6
11714 else
11715 ac_check_lib_save_LIBS=$LIBS
11716 LIBS="-ldl $LIBS"
11717 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
11718 /* end confdefs.h. */
11719
11720 /* Override any GCC internal prototype to avoid an error.
11721 Use char because int might match the return type of a GCC
11722 builtin and then its argument prototype would still apply. */
11723 #ifdef __cplusplus
11724 extern "C"
11725 #endif
11726 char dlopen ();
11727 int
11728 main ()
11729 {
11730 return dlopen ();
11731 ;
11732 return 0;
11733 }
11734 _ACEOF
11735 if ac_fn_c_try_link "$LINENO"; then :
11736 ac_cv_lib_dl_dlopen=yes
11737 else
11738 ac_cv_lib_dl_dlopen=no
11739 fi
11740 rm -f core conftest.err conftest.$ac_objext \
11741 conftest$ac_exeext conftest.$ac_ext
11742 LIBS=$ac_check_lib_save_LIBS
11743 fi
11744 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
11745 $as_echo "$ac_cv_lib_dl_dlopen" >&6; }
11746 if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
11747 lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
11748 else
11749
11750 lt_cv_dlopen="dyld"
11751 lt_cv_dlopen_libs=
11752 lt_cv_dlopen_self=yes
11753
11754 fi
11755
11756 ;;
11757
11758 *)
11759 ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
11760 if test "x$ac_cv_func_shl_load" = xyes; then :
11761 lt_cv_dlopen="shl_load"
11762 else
11763 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
11764 $as_echo_n "checking for shl_load in -ldld... " >&6; }
11765 if ${ac_cv_lib_dld_shl_load+:} false; then :
11766 $as_echo_n "(cached) " >&6
11767 else
11768 ac_check_lib_save_LIBS=$LIBS
11769 LIBS="-ldld $LIBS"
11770 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
11771 /* end confdefs.h. */
11772
11773 /* Override any GCC internal prototype to avoid an error.
11774 Use char because int might match the return type of a GCC
11775 builtin and then its argument prototype would still apply. */
11776 #ifdef __cplusplus
11777 extern "C"
11778 #endif
11779 char shl_load ();
11780 int
11781 main ()
11782 {
11783 return shl_load ();
11784 ;
11785 return 0;
11786 }
11787 _ACEOF
11788 if ac_fn_c_try_link "$LINENO"; then :
11789 ac_cv_lib_dld_shl_load=yes
11790 else
11791 ac_cv_lib_dld_shl_load=no
11792 fi
11793 rm -f core conftest.err conftest.$ac_objext \
11794 conftest$ac_exeext conftest.$ac_ext
11795 LIBS=$ac_check_lib_save_LIBS
11796 fi
11797 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
11798 $as_echo "$ac_cv_lib_dld_shl_load" >&6; }
11799 if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
11800 lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
11801 else
11802 ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
11803 if test "x$ac_cv_func_dlopen" = xyes; then :
11804 lt_cv_dlopen="dlopen"
11805 else
11806 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
11807 $as_echo_n "checking for dlopen in -ldl... " >&6; }
11808 if ${ac_cv_lib_dl_dlopen+:} false; then :
11809 $as_echo_n "(cached) " >&6
11810 else
11811 ac_check_lib_save_LIBS=$LIBS
11812 LIBS="-ldl $LIBS"
11813 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
11814 /* end confdefs.h. */
11815
11816 /* Override any GCC internal prototype to avoid an error.
11817 Use char because int might match the return type of a GCC
11818 builtin and then its argument prototype would still apply. */
11819 #ifdef __cplusplus
11820 extern "C"
11821 #endif
11822 char dlopen ();
11823 int
11824 main ()
11825 {
11826 return dlopen ();
11827 ;
11828 return 0;
11829 }
11830 _ACEOF
11831 if ac_fn_c_try_link "$LINENO"; then :
11832 ac_cv_lib_dl_dlopen=yes
11833 else
11834 ac_cv_lib_dl_dlopen=no
11835 fi
11836 rm -f core conftest.err conftest.$ac_objext \
11837 conftest$ac_exeext conftest.$ac_ext
11838 LIBS=$ac_check_lib_save_LIBS
11839 fi
11840 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
11841 $as_echo "$ac_cv_lib_dl_dlopen" >&6; }
11842 if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
11843 lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
11844 else
11845 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
11846 $as_echo_n "checking for dlopen in -lsvld... " >&6; }
11847 if ${ac_cv_lib_svld_dlopen+:} false; then :
11848 $as_echo_n "(cached) " >&6
11849 else
11850 ac_check_lib_save_LIBS=$LIBS
11851 LIBS="-lsvld $LIBS"
11852 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
11853 /* end confdefs.h. */
11854
11855 /* Override any GCC internal prototype to avoid an error.
11856 Use char because int might match the return type of a GCC
11857 builtin and then its argument prototype would still apply. */
11858 #ifdef __cplusplus
11859 extern "C"
11860 #endif
11861 char dlopen ();
11862 int
11863 main ()
11864 {
11865 return dlopen ();
11866 ;
11867 return 0;
11868 }
11869 _ACEOF
11870 if ac_fn_c_try_link "$LINENO"; then :
11871 ac_cv_lib_svld_dlopen=yes
11872 else
11873 ac_cv_lib_svld_dlopen=no
11874 fi
11875 rm -f core conftest.err conftest.$ac_objext \
11876 conftest$ac_exeext conftest.$ac_ext
11877 LIBS=$ac_check_lib_save_LIBS
11878 fi
11879 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
11880 $as_echo "$ac_cv_lib_svld_dlopen" >&6; }
11881 if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
11882 lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
11883 else
11884 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
11885 $as_echo_n "checking for dld_link in -ldld... " >&6; }
11886 if ${ac_cv_lib_dld_dld_link+:} false; then :
11887 $as_echo_n "(cached) " >&6
11888 else
11889 ac_check_lib_save_LIBS=$LIBS
11890 LIBS="-ldld $LIBS"
11891 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
11892 /* end confdefs.h. */
11893
11894 /* Override any GCC internal prototype to avoid an error.
11895 Use char because int might match the return type of a GCC
11896 builtin and then its argument prototype would still apply. */
11897 #ifdef __cplusplus
11898 extern "C"
11899 #endif
11900 char dld_link ();
11901 int
11902 main ()
11903 {
11904 return dld_link ();
11905 ;
11906 return 0;
11907 }
11908 _ACEOF
11909 if ac_fn_c_try_link "$LINENO"; then :
11910 ac_cv_lib_dld_dld_link=yes
11911 else
11912 ac_cv_lib_dld_dld_link=no
11913 fi
11914 rm -f core conftest.err conftest.$ac_objext \
11915 conftest$ac_exeext conftest.$ac_ext
11916 LIBS=$ac_check_lib_save_LIBS
11917 fi
11918 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
11919 $as_echo "$ac_cv_lib_dld_dld_link" >&6; }
11920 if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
11921 lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
11922 fi
11923
11924
11925 fi
11926
11927
11928 fi
11929
11930
11931 fi
11932
11933
11934 fi
11935
11936
11937 fi
11938
11939 ;;
11940 esac
11941
11942 if test "x$lt_cv_dlopen" != xno; then
11943 enable_dlopen=yes
11944 else
11945 enable_dlopen=no
11946 fi
11947
11948 case $lt_cv_dlopen in
11949 dlopen)
11950 save_CPPFLAGS="$CPPFLAGS"
11951 test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
11952
11953 save_LDFLAGS="$LDFLAGS"
11954 wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
11955
11956 save_LIBS="$LIBS"
11957 LIBS="$lt_cv_dlopen_libs $LIBS"
11958
11959 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
11960 $as_echo_n "checking whether a program can dlopen itself... " >&6; }
11961 if ${lt_cv_dlopen_self+:} false; then :
11962 $as_echo_n "(cached) " >&6
11963 else
11964 if test "$cross_compiling" = yes; then :
11965 lt_cv_dlopen_self=cross
11966 else
11967 lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
11968 lt_status=$lt_dlunknown
11969 cat > conftest.$ac_ext <<_LT_EOF
11970 #line $LINENO "configure"
11971 #include "confdefs.h"
11972
11973 #if HAVE_DLFCN_H
11974 #include <dlfcn.h>
11975 #endif
11976
11977 #include <stdio.h>
11978
11979 #ifdef RTLD_GLOBAL
11980 # define LT_DLGLOBAL RTLD_GLOBAL
11981 #else
11982 # ifdef DL_GLOBAL
11983 # define LT_DLGLOBAL DL_GLOBAL
11984 # else
11985 # define LT_DLGLOBAL 0
11986 # endif
11987 #endif
11988
11989 /* We may have to define LT_DLLAZY_OR_NOW in the command line if we
11990 find out it does not work in some platform. */
11991 #ifndef LT_DLLAZY_OR_NOW
11992 # ifdef RTLD_LAZY
11993 # define LT_DLLAZY_OR_NOW RTLD_LAZY
11994 # else
11995 # ifdef DL_LAZY
11996 # define LT_DLLAZY_OR_NOW DL_LAZY
11997 # else
11998 # ifdef RTLD_NOW
11999 # define LT_DLLAZY_OR_NOW RTLD_NOW
12000 # else
12001 # ifdef DL_NOW
12002 # define LT_DLLAZY_OR_NOW DL_NOW
12003 # else
12004 # define LT_DLLAZY_OR_NOW 0
12005 # endif
12006 # endif
12007 # endif
12008 # endif
12009 #endif
12010
12011 /* When -fvisbility=hidden is used, assume the code has been annotated
12012 correspondingly for the symbols needed. */
12013 #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
12014 int fnord () __attribute__((visibility("default")));
12015 #endif
12016
12017 int fnord () { return 42; }
12018 int main ()
12019 {
12020 void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
12021 int status = $lt_dlunknown;
12022
12023 if (self)
12024 {
12025 if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
12026 else
12027 {
12028 if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
12029 else puts (dlerror ());
12030 }
12031 /* dlclose (self); */
12032 }
12033 else
12034 puts (dlerror ());
12035
12036 return status;
12037 }
12038 _LT_EOF
12039 if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
12040 (eval $ac_link) 2>&5
12041 ac_status=$?
12042 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
12043 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
12044 (./conftest; exit; ) >&5 2>/dev/null
12045 lt_status=$?
12046 case x$lt_status in
12047 x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
12048 x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
12049 x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
12050 esac
12051 else :
12052 # compilation failed
12053 lt_cv_dlopen_self=no
12054 fi
12055 fi
12056 rm -fr conftest*
12057
12058
12059 fi
12060 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
12061 $as_echo "$lt_cv_dlopen_self" >&6; }
12062
12063 if test "x$lt_cv_dlopen_self" = xyes; then
12064 wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
12065 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
12066 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
12067 if ${lt_cv_dlopen_self_static+:} false; then :
12068 $as_echo_n "(cached) " >&6
12069 else
12070 if test "$cross_compiling" = yes; then :
12071 lt_cv_dlopen_self_static=cross
12072 else
12073 lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
12074 lt_status=$lt_dlunknown
12075 cat > conftest.$ac_ext <<_LT_EOF
12076 #line $LINENO "configure"
12077 #include "confdefs.h"
12078
12079 #if HAVE_DLFCN_H
12080 #include <dlfcn.h>
12081 #endif
12082
12083 #include <stdio.h>
12084
12085 #ifdef RTLD_GLOBAL
12086 # define LT_DLGLOBAL RTLD_GLOBAL
12087 #else
12088 # ifdef DL_GLOBAL
12089 # define LT_DLGLOBAL DL_GLOBAL
12090 # else
12091 # define LT_DLGLOBAL 0
12092 # endif
12093 #endif
12094
12095 /* We may have to define LT_DLLAZY_OR_NOW in the command line if we
12096 find out it does not work in some platform. */
12097 #ifndef LT_DLLAZY_OR_NOW
12098 # ifdef RTLD_LAZY
12099 # define LT_DLLAZY_OR_NOW RTLD_LAZY
12100 # else
12101 # ifdef DL_LAZY
12102 # define LT_DLLAZY_OR_NOW DL_LAZY
12103 # else
12104 # ifdef RTLD_NOW
12105 # define LT_DLLAZY_OR_NOW RTLD_NOW
12106 # else
12107 # ifdef DL_NOW
12108 # define LT_DLLAZY_OR_NOW DL_NOW
12109 # else
12110 # define LT_DLLAZY_OR_NOW 0
12111 # endif
12112 # endif
12113 # endif
12114 # endif
12115 #endif
12116
12117 /* When -fvisbility=hidden is used, assume the code has been annotated
12118 correspondingly for the symbols needed. */
12119 #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
12120 int fnord () __attribute__((visibility("default")));
12121 #endif
12122
12123 int fnord () { return 42; }
12124 int main ()
12125 {
12126 void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
12127 int status = $lt_dlunknown;
12128
12129 if (self)
12130 {
12131 if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
12132 else
12133 {
12134 if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
12135 else puts (dlerror ());
12136 }
12137 /* dlclose (self); */
12138 }
12139 else
12140 puts (dlerror ());
12141
12142 return status;
12143 }
12144 _LT_EOF
12145 if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
12146 (eval $ac_link) 2>&5
12147 ac_status=$?
12148 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
12149 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
12150 (./conftest; exit; ) >&5 2>/dev/null
12151 lt_status=$?
12152 case x$lt_status in
12153 x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
12154 x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
12155 x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
12156 esac
12157 else :
12158 # compilation failed
12159 lt_cv_dlopen_self_static=no
12160 fi
12161 fi
12162 rm -fr conftest*
12163
12164
12165 fi
12166 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
12167 $as_echo "$lt_cv_dlopen_self_static" >&6; }
12168 fi
12169
12170 CPPFLAGS="$save_CPPFLAGS"
12171 LDFLAGS="$save_LDFLAGS"
12172 LIBS="$save_LIBS"
12173 ;;
12174 esac
12175
12176 case $lt_cv_dlopen_self in
12177 yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
12178 *) enable_dlopen_self=unknown ;;
12179 esac
12180
12181 case $lt_cv_dlopen_self_static in
12182 yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
12183 *) enable_dlopen_self_static=unknown ;;
12184 esac
12185 fi
12186
12187
12188
12189
12190
12191
12192
12193
12194
12195
12196
12197
12198
12199
12200
12201
12202
12203 striplib=
12204 old_striplib=
12205 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
12206 $as_echo_n "checking whether stripping libraries is possible... " >&6; }
12207 if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
12208 test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
12209 test -z "$striplib" && striplib="$STRIP --strip-unneeded"
12210 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
12211 $as_echo "yes" >&6; }
12212 else
12213 # FIXME - insert some real tests, host_os isn't really good enough
12214 case $host_os in
12215 darwin*)
12216 if test -n "$STRIP" ; then
12217 striplib="$STRIP -x"
12218 old_striplib="$STRIP -S"
12219 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
12220 $as_echo "yes" >&6; }
12221 else
12222 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
12223 $as_echo "no" >&6; }
12224 fi
12225 ;;
12226 *)
12227 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
12228 $as_echo "no" >&6; }
12229 ;;
12230 esac
12231 fi
12232
12233
12234
12235
12236
12237
12238
12239
12240
12241
12242
12243
12244 # Report which library types will actually be built
12245 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
12246 $as_echo_n "checking if libtool supports shared libraries... " >&6; }
12247 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
12248 $as_echo "$can_build_shared" >&6; }
12249
12250 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
12251 $as_echo_n "checking whether to build shared libraries... " >&6; }
12252 test "$can_build_shared" = "no" && enable_shared=no
12253
12254 # On AIX, shared libraries and static libraries use the same namespace, and
12255 # are all built from PIC.
12256 case $host_os in
12257 aix3*)
12258 test "$enable_shared" = yes && enable_static=no
12259 if test -n "$RANLIB"; then
12260 archive_cmds="$archive_cmds~\$RANLIB \$lib"
12261 postinstall_cmds='$RANLIB $lib'
12262 fi
12263 ;;
12264
12265 aix[4-9]*)
12266 if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
12267 test "$enable_shared" = yes && enable_static=no
12268 fi
12269 ;;
12270 esac
12271 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
12272 $as_echo "$enable_shared" >&6; }
12273
12274 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
12275 $as_echo_n "checking whether to build static libraries... " >&6; }
12276 # Make sure either enable_shared or enable_static is yes.
12277 test "$enable_shared" = yes || enable_static=yes
12278 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
12279 $as_echo "$enable_static" >&6; }
12280
12281
12282
12283
12284 fi
12285 ac_ext=c
12286 ac_cpp='$CPP $CPPFLAGS'
12287 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
12288 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
12289 ac_compiler_gnu=$ac_cv_c_compiler_gnu
12290
12291 CC="$lt_save_CC"
12292
12293
12294
12295
12296
12297
12298
12299
12300
12301
12302
12303
12304
12305
12306
12307 ac_config_commands="$ac_config_commands libtool"
12308
12309
12310
12311
12312 # Only expand once:
12313
12314
12315
12316 # Checks for header files.
12317 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
12318 $as_echo_n "checking for ANSI C header files... " >&6; }
12319 if ${ac_cv_header_stdc+:} false; then :
12320 $as_echo_n "(cached) " >&6
12321 else
12322 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
12323 /* end confdefs.h. */
12324 #include <stdlib.h>
12325 #include <stdarg.h>
12326 #include <string.h>
12327 #include <float.h>
12328
12329 int
12330 main ()
12331 {
12332
12333 ;
12334 return 0;
12335 }
12336 _ACEOF
12337 if ac_fn_c_try_compile "$LINENO"; then :
12338 ac_cv_header_stdc=yes
12339 else
12340 ac_cv_header_stdc=no
12341 fi
12342 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
12343
12344 if test $ac_cv_header_stdc = yes; then
12345 # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
12346 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
12347 /* end confdefs.h. */
12348 #include <string.h>
12349
12350 _ACEOF
12351 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
12352 $EGREP "memchr" >/dev/null 2>&1; then :
12353
12354 else
12355 ac_cv_header_stdc=no
12356 fi
12357 rm -f conftest*
12358
12359 fi
12360
12361 if test $ac_cv_header_stdc = yes; then
12362 # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
12363 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
12364 /* end confdefs.h. */
12365 #include <stdlib.h>
12366
12367 _ACEOF
12368 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
12369 $EGREP "free" >/dev/null 2>&1; then :
12370
12371 else
12372 ac_cv_header_stdc=no
12373 fi
12374 rm -f conftest*
12375
12376 fi
12377
12378 if test $ac_cv_header_stdc = yes; then
12379 # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
12380 if test "$cross_compiling" = yes; then :
12381 :
12382 else
12383 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
12384 /* end confdefs.h. */
12385 #include <ctype.h>
12386 #include <stdlib.h>
12387 #if ((' ' & 0x0FF) == 0x020)
12388 # define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
12389 # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
12390 #else
12391 # define ISLOWER(c) \
12392 (('a' <= (c) && (c) <= 'i') \
12393 || ('j' <= (c) && (c) <= 'r') \
12394 || ('s' <= (c) && (c) <= 'z'))
12395 # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
12396 #endif
12397
12398 #define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
12399 int
12400 main ()
12401 {
12402 int i;
12403 for (i = 0; i < 256; i++)
12404 if (XOR (islower (i), ISLOWER (i))
12405 || toupper (i) != TOUPPER (i))
12406 return 2;
12407 return 0;
12408 }
12409 _ACEOF
12410 if ac_fn_c_try_run "$LINENO"; then :
12411
12412 else
12413 ac_cv_header_stdc=no
12414 fi
12415 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
12416 conftest.$ac_objext conftest.beam conftest.$ac_ext
12417 fi
12418
12419 fi
12420 fi
12421 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
12422 $as_echo "$ac_cv_header_stdc" >&6; }
12423 if test $ac_cv_header_stdc = yes; then
12424
12425 $as_echo "#define STDC_HEADERS 1" >>confdefs.h
12426
12427 fi
12428
12429 for ac_header in errno.h limits.h stddef.h stdlib.h string.h unistd.h
12430 do :
12431 as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
12432 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
12433 if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
12434 cat >>confdefs.h <<_ACEOF
12435 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
12436 _ACEOF
12437
12438 fi
12439
12440 done
12441
12442
12443 # Checks for typedefs, structures, and compiler characteristics.
12444 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
12445 $as_echo_n "checking for an ANSI C-conforming const... " >&6; }
12446 if ${ac_cv_c_const+:} false; then :
12447 $as_echo_n "(cached) " >&6
12448 else
12449 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
12450 /* end confdefs.h. */
12451
12452 int
12453 main ()
12454 {
12455
12456 #ifndef __cplusplus
12457 /* Ultrix mips cc rejects this sort of thing. */
12458 typedef int charset[2];
12459 const charset cs = { 0, 0 };
12460 /* SunOS 4.1.1 cc rejects this. */
12461 char const *const *pcpcc;
12462 char **ppc;
12463 /* NEC SVR4.0.2 mips cc rejects this. */
12464 struct point {int x, y;};
12465 static struct point const zero = {0,0};
12466 /* AIX XL C 1.02.0.0 rejects this.
12467 It does not let you subtract one const X* pointer from another in
12468 an arm of an if-expression whose if-part is not a constant
12469 expression */
12470 const char *g = "string";
12471 pcpcc = &g + (g ? g-g : 0);
12472 /* HPUX 7.0 cc rejects these. */
12473 ++pcpcc;
12474 ppc = (char**) pcpcc;
12475 pcpcc = (char const *const *) ppc;
12476 { /* SCO 3.2v4 cc rejects this sort of thing. */
12477 char tx;
12478 char *t = &tx;
12479 char const *s = 0 ? (char *) 0 : (char const *) 0;
12480
12481 *t++ = 0;
12482 if (s) return 0;
12483 }
12484 { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
12485 int x[] = {25, 17};
12486 const int *foo = &x[0];
12487 ++foo;
12488 }
12489 { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
12490 typedef const int *iptr;
12491 iptr p = 0;
12492 ++p;
12493 }
12494 { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
12495 "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
12496 struct s { int j; const int *ap[3]; } bx;
12497 struct s *b = &bx; b->j = 5;
12498 }
12499 { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
12500 const int foo = 10;
12501 if (!foo) return 0;
12502 }
12503 return !cs[0] && !zero.x;
12504 #endif
12505
12506 ;
12507 return 0;
12508 }
12509 _ACEOF
12510 if ac_fn_c_try_compile "$LINENO"; then :
12511 ac_cv_c_const=yes
12512 else
12513 ac_cv_c_const=no
12514 fi
12515 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
12516 fi
12517 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
12518 $as_echo "$ac_cv_c_const" >&6; }
12519 if test $ac_cv_c_const = no; then
12520
12521 $as_echo "#define const /**/" >>confdefs.h
12522
12523 fi
12524
12525 ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
12526 if test "x$ac_cv_type_size_t" = xyes; then :
12527
12528 else
12529
12530 cat >>confdefs.h <<_ACEOF
12531 #define size_t unsigned int
12532 _ACEOF
12533
12534 fi
12535
12536 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5
12537 $as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; }
12538 if ${ac_cv_struct_tm+:} false; then :
12539 $as_echo_n "(cached) " >&6
12540 else
12541 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
12542 /* end confdefs.h. */
12543 #include <sys/types.h>
12544 #include <time.h>
12545
12546 int
12547 main ()
12548 {
12549 struct tm tm;
12550 int *p = &tm.tm_sec;
12551 return !p;
12552 ;
12553 return 0;
12554 }
12555 _ACEOF
12556 if ac_fn_c_try_compile "$LINENO"; then :
12557 ac_cv_struct_tm=time.h
12558 else
12559 ac_cv_struct_tm=sys/time.h
12560 fi
12561 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
12562 fi
12563 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5
12564 $as_echo "$ac_cv_struct_tm" >&6; }
12565 if test $ac_cv_struct_tm = sys/time.h; then
12566
12567 $as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h
12568
12569 fi
12570
12571
12572 # Checks for library functions.
12573 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing sin" >&5
12574 $as_echo_n "checking for library containing sin... " >&6; }
12575 if ${ac_cv_search_sin+:} false; then :
12576 $as_echo_n "(cached) " >&6
12577 else
12578 ac_func_search_save_LIBS=$LIBS
12579 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
12580 /* end confdefs.h. */
12581
12582 /* Override any GCC internal prototype to avoid an error.
12583 Use char because int might match the return type of a GCC
12584 builtin and then its argument prototype would still apply. */
12585 #ifdef __cplusplus
12586 extern "C"
12587 #endif
12588 char sin ();
12589 int
12590 main ()
12591 {
12592 return sin ();
12593 ;
12594 return 0;
12595 }
12596 _ACEOF
12597 for ac_lib in '' m; do
12598 if test -z "$ac_lib"; then
12599 ac_res="none required"
12600 else
12601 ac_res=-l$ac_lib
12602 LIBS="-l$ac_lib $ac_func_search_save_LIBS"
12603 fi
12604 if ac_fn_c_try_link "$LINENO"; then :
12605 ac_cv_search_sin=$ac_res
12606 fi
12607 rm -f core conftest.err conftest.$ac_objext \
12608 conftest$ac_exeext
12609 if ${ac_cv_search_sin+:} false; then :
12610 break
12611 fi
12612 done
12613 if ${ac_cv_search_sin+:} false; then :
12614
12615 else
12616 ac_cv_search_sin=no
12617 fi
12618 rm conftest.$ac_ext
12619 LIBS=$ac_func_search_save_LIBS
12620 fi
12621 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_sin" >&5
12622 $as_echo "$ac_cv_search_sin" >&6; }
12623 ac_res=$ac_cv_search_sin
12624 if test "$ac_res" != no; then :
12625 test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
12626
12627 else
12628 as_fn_error $? "cannot find sin" "$LINENO" 5
12629 fi
12630
12631
12632 ## _KPSE_INIT: Initialize TL infrastructure
12633 kpse_BLD=`(cd "./../../." && pwd)`
12634 kpse_SRC=`(cd "$srcdir/../../." && pwd)`
12635
12636 ## _KPSE_LIB_FLAGS: Setup zlib (-lz) flags
12637
12638 # Check whether --with-system-zlib was given.
12639 if test "${with_system_zlib+set}" = set; then :
12640 withval=$with_system_zlib;
12641 fi
12642
12643 # Check whether --with-zlib-includes was given.
12644 if test "${with_zlib_includes+set}" = set; then :
12645 withval=$with_zlib_includes;
12646 fi
12647
12648 # Check whether --with-zlib-libdir was given.
12649 if test "${with_zlib_libdir+set}" = set; then :
12650 withval=$with_zlib_libdir;
12651 fi
12652 if test "x$with_system_zlib" = xyes; then
12653 if test "x$with_zlib_includes" != x && test "x$with_zlib_includes" != xyes; then
12654 ZLIB_INCLUDES="-I$with_zlib_includes"
12655 fi
12656 ZLIB_LIBS="-lz"
12657 if test "x$with_zlib_libdir" != x && test "x$with_zlib_libdir" != xyes; then
12658 ZLIB_LIBS="-L$with_zlib_libdir $ZLIB_LIBS"
12659 fi
12660 else
12661 ZLIB_INCLUDES="-I$kpse_BLD/libs/zlib/include"
12662 ZLIB_LIBS="$kpse_BLD/libs/zlib/libz.a"
12663 ZLIB_DEPEND='${top_builddir}/../../libs/zlib/libz.a'
12664 ZLIB_RULE='# Rebuild libz
12665 $(ZLIB_DEPEND): ${top_builddir}/../../libs/zlib/include/zconf.h
12666 cd ${top_builddir}/../../libs/zlib && $(MAKE) $(AM_MAKEFLAGS) rebuild
12667 ${top_builddir}/../../libs/zlib/include/zconf.h:
12668 cd ${top_builddir}/../../libs/zlib && $(MAKE) $(AM_MAKEFLAGS) rebuild'
12669 fi
12670
12671 if test -n "$ac_tool_prefix"; then
12672 # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
12673 set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
12674 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
12675 $as_echo_n "checking for $ac_word... " >&6; }
12676 if ${ac_cv_prog_PKG_CONFIG+:} false; then :
12677 $as_echo_n "(cached) " >&6
12678 else
12679 if test -n "$PKG_CONFIG"; then
12680 ac_cv_prog_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test.
12681 else
12682 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
12683 for as_dir in $PATH
12684 do
12685 IFS=$as_save_IFS
12686 test -z "$as_dir" && as_dir=.
12687 for ac_exec_ext in '' $ac_executable_extensions; do
12688 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
12689 ac_cv_prog_PKG_CONFIG="${ac_tool_prefix}pkg-config"
12690 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
12691 break 2
12692 fi
12693 done
12694 done
12695 IFS=$as_save_IFS
12696
12697 fi
12698 fi
12699 PKG_CONFIG=$ac_cv_prog_PKG_CONFIG
12700 if test -n "$PKG_CONFIG"; then
12701 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
12702 $as_echo "$PKG_CONFIG" >&6; }
12703 else
12704 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
12705 $as_echo "no" >&6; }
12706 fi
12707
12708
12709 fi
12710 if test -z "$ac_cv_prog_PKG_CONFIG"; then
12711 ac_ct_PKG_CONFIG=$PKG_CONFIG
12712 # Extract the first word of "pkg-config", so it can be a program name with args.
12713 set dummy pkg-config; ac_word=$2
12714 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
12715 $as_echo_n "checking for $ac_word... " >&6; }
12716 if ${ac_cv_prog_ac_ct_PKG_CONFIG+:} false; then :
12717 $as_echo_n "(cached) " >&6
12718 else
12719 if test -n "$ac_ct_PKG_CONFIG"; then
12720 ac_cv_prog_ac_ct_PKG_CONFIG="$ac_ct_PKG_CONFIG" # Let the user override the test.
12721 else
12722 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
12723 for as_dir in $PATH
12724 do
12725 IFS=$as_save_IFS
12726 test -z "$as_dir" && as_dir=.
12727 for ac_exec_ext in '' $ac_executable_extensions; do
12728 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
12729 ac_cv_prog_ac_ct_PKG_CONFIG="pkg-config"
12730 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
12731 break 2
12732 fi
12733 done
12734 done
12735 IFS=$as_save_IFS
12736
12737 fi
12738 fi
12739 ac_ct_PKG_CONFIG=$ac_cv_prog_ac_ct_PKG_CONFIG
12740 if test -n "$ac_ct_PKG_CONFIG"; then
12741 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_PKG_CONFIG" >&5
12742 $as_echo "$ac_ct_PKG_CONFIG" >&6; }
12743 else
12744 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
12745 $as_echo "no" >&6; }
12746 fi
12747
12748 if test "x$ac_ct_PKG_CONFIG" = x; then
12749 PKG_CONFIG="false"
12750 else
12751 case $cross_compiling:$ac_tool_warned in
12752 yes:)
12753 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
12754 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
12755 ac_tool_warned=yes ;;
12756 esac
12757 PKG_CONFIG=$ac_ct_PKG_CONFIG
12758 fi
12759 else
12760 PKG_CONFIG="$ac_cv_prog_PKG_CONFIG"
12761 fi
12762
12763 ## _KPSE_LIB_FLAGS: Setup libpng (-lpng) flags
12764
12765 # Check whether --with-system-libpng was given.
12766 if test "${with_system_libpng+set}" = set; then :
12767 withval=$with_system_libpng;
12768 fi
12769 if test "x$with_system_libpng" = xyes; then
12770 if $PKG_CONFIG libpng; then
12771 LIBPNG_INCLUDES=`$PKG_CONFIG libpng --cflags`
12772 LIBPNG_LIBS=`$PKG_CONFIG libpng --libs`
12773 elif test "x$need_libpng:$with_system_libpng" = xyes:yes; then
12774 as_fn_error $? "did not find libpng" "$LINENO" 5
12775 fi
12776 else
12777 LIBPNG_INCLUDES="-I$kpse_BLD/libs/libpng/include"
12778 LIBPNG_LIBS="$kpse_BLD/libs/libpng/libpng.a"
12779 LIBPNG_DEPEND='${top_builddir}/../../libs/libpng/libpng.a'
12780 LIBPNG_RULE='# Rebuild libpng
12781 $(LIBPNG_DEPEND): ${top_builddir}/../../libs/libpng/include/png.h
12782 cd ${top_builddir}/../../libs/libpng && $(MAKE) $(AM_MAKEFLAGS) rebuild
12783 ${top_builddir}/../../libs/libpng/include/png.h:
12784 cd ${top_builddir}/../../libs/libpng && $(MAKE) $(AM_MAKEFLAGS) rebuild'
12785 fi
12786
12787 ## _KPSE_USE_LIBTOOL: Generate a libtool script for use in configure tests
12788 : ${CONFIG_LT=./config.lt}
12789 { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_LT" >&5
12790 $as_echo "$as_me: creating $CONFIG_LT" >&6;}
12791 as_write_fail=0
12792 cat >"$CONFIG_LT" <<_ASEOF || as_write_fail=1
12793 #! $SHELL
12794 # Generated by $as_me.
12795 # Run this file to recreate a libtool stub with the current configuration.
12796 SHELL=\${CONFIG_SHELL-$SHELL}
12797 export SHELL
12798 _ASEOF
12799 cat >>"$CONFIG_LT" <<\_ASEOF || as_write_fail=1
12800 ## -------------------- ##
12801 ## M4sh Initialization. ##
12802 ## -------------------- ##
12803
12804 # Be more Bourne compatible
12805 DUALCASE=1; export DUALCASE # for MKS sh
12806 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
12807 emulate sh
12808 NULLCMD=:
12809 # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
12810 # is contrary to our usage. Disable this feature.
12811 alias -g '${1+"$@"}'='"$@"'
12812 setopt NO_GLOB_SUBST
12813 else
12814 case `(set -o) 2>/dev/null` in #(
12815 *posix*) :
12816 set -o posix ;; #(
12817 *) :
12818 ;;
12819 esac
12820 fi
12821
12822
12823 as_nl='
12824 '
12825 export as_nl
12826 # Printing a long string crashes Solaris 7 /usr/bin/printf.
12827 as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
12828 as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
12829 as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
12830 # Prefer a ksh shell builtin over an external printf program on Solaris,
12831 # but without wasting forks for bash or zsh.
12832 if test -z "$BASH_VERSION$ZSH_VERSION" \
12833 && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
12834 as_echo='print -r --'
12835 as_echo_n='print -rn --'
12836 elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
12837 as_echo='printf %s\n'
12838 as_echo_n='printf %s'
12839 else
12840 if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
12841 as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
12842 as_echo_n='/usr/ucb/echo -n'
12843 else
12844 as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
12845 as_echo_n_body='eval
12846 arg=$1;
12847 case $arg in #(
12848 *"$as_nl"*)
12849 expr "X$arg" : "X\\(.*\\)$as_nl";
12850 arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
12851 esac;
12852 expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
12853 '
12854 export as_echo_n_body
12855 as_echo_n='sh -c $as_echo_n_body as_echo'
12856 fi
12857 export as_echo_body
12858 as_echo='sh -c $as_echo_body as_echo'
12859 fi
12860
12861 # The user is always right.
12862 if test "${PATH_SEPARATOR+set}" != set; then
12863 PATH_SEPARATOR=:
12864 (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
12865 (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
12866 PATH_SEPARATOR=';'
12867 }
12868 fi
12869
12870
12871 # IFS
12872 # We need space, tab and new line, in precisely that order. Quoting is
12873 # there to prevent editors from complaining about space-tab.
12874 # (If _AS_PATH_WALK were called with IFS unset, it would disable word
12875 # splitting by setting IFS to empty value.)
12876 IFS=" "" $as_nl"
12877
12878 # Find who we are. Look in the path if we contain no directory separator.
12879 as_myself=
12880 case $0 in #((
12881 *[\\/]* ) as_myself=$0 ;;
12882 *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
12883 for as_dir in $PATH
12884 do
12885 IFS=$as_save_IFS
12886 test -z "$as_dir" && as_dir=.
12887 test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
12888 done
12889 IFS=$as_save_IFS
12890
12891 ;;
12892 esac
12893 # We did not find ourselves, most probably we were run as `sh COMMAND'
12894 # in which case we are not to be found in the path.
12895 if test "x$as_myself" = x; then
12896 as_myself=$0
12897 fi
12898 if test ! -f "$as_myself"; then
12899 $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
12900 exit 1
12901 fi
12902
12903 # Unset variables that we do not need and which cause bugs (e.g. in
12904 # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
12905 # suppresses any "Segmentation fault" message there. '((' could
12906 # trigger a bug in pdksh 5.2.14.
12907 for as_var in BASH_ENV ENV MAIL MAILPATH
12908 do eval test x\${$as_var+set} = xset \
12909 && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
12910 done
12911 PS1='$ '
12912 PS2='> '
12913 PS4='+ '
12914
12915 # NLS nuisances.
12916 LC_ALL=C
12917 export LC_ALL
12918 LANGUAGE=C
12919 export LANGUAGE
12920
12921 # CDPATH.
12922 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
12923
12924
12925 # as_fn_error STATUS ERROR [LINENO LOG_FD]
12926 # ----------------------------------------
12927 # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
12928 # provided, also output the error to LOG_FD, referencing LINENO. Then exit the
12929 # script with STATUS, using 1 if that was 0.
12930 as_fn_error ()
12931 {
12932 as_status=$1; test $as_status -eq 0 && as_status=1
12933 if test "$4"; then
12934 as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
12935 $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
12936 fi
12937 $as_echo "$as_me: error: $2" >&2
12938 as_fn_exit $as_status
12939 } # as_fn_error
12940
12941
12942 # as_fn_set_status STATUS
12943 # -----------------------
12944 # Set $? to STATUS, without forking.
12945 as_fn_set_status ()
12946 {
12947 return $1
12948 } # as_fn_set_status
12949
12950 # as_fn_exit STATUS
12951 # -----------------
12952 # Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
12953 as_fn_exit ()
12954 {
12955 set +e
12956 as_fn_set_status $1
12957 exit $1
12958 } # as_fn_exit
12959
12960 # as_fn_unset VAR
12961 # ---------------
12962 # Portably unset VAR.
12963 as_fn_unset ()
12964 {
12965 { eval $1=; unset $1;}
12966 }
12967 as_unset=as_fn_unset
12968 # as_fn_append VAR VALUE
12969 # ----------------------
12970 # Append the text in VALUE to the end of the definition contained in VAR. Take
12971 # advantage of any shell optimizations that allow amortized linear growth over
12972 # repeated appends, instead of the typical quadratic growth present in naive
12973 # implementations.
12974 if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
12975 eval 'as_fn_append ()
12976 {
12977 eval $1+=\$2
12978 }'
12979 else
12980 as_fn_append ()
12981 {
12982 eval $1=\$$1\$2
12983 }
12984 fi # as_fn_append
12985
12986 # as_fn_arith ARG...
12987 # ------------------
12988 # Perform arithmetic evaluation on the ARGs, and store the result in the
12989 # global $as_val. Take advantage of shells that can avoid forks. The arguments
12990 # must be portable across $(()) and expr.
12991 if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
12992 eval 'as_fn_arith ()
12993 {
12994 as_val=$(( $* ))
12995 }'
12996 else
12997 as_fn_arith ()
12998 {
12999 as_val=`expr "$@" || test $? -eq 1`
13000 }
13001 fi # as_fn_arith
13002
13003
13004 if expr a : '\(a\)' >/dev/null 2>&1 &&
13005 test "X`expr 00001 : '.*\(...\)'`" = X001; then
13006 as_expr=expr
13007 else
13008 as_expr=false
13009 fi
13010
13011 if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
13012 as_basename=basename
13013 else
13014 as_basename=false
13015 fi
13016
13017 if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
13018 as_dirname=dirname
13019 else
13020 as_dirname=false
13021 fi
13022
13023 as_me=`$as_basename -- "$0" ||
13024 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
13025 X"$0" : 'X\(//\)$' \| \
13026 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
13027 $as_echo X/"$0" |
13028 sed '/^.*\/\([^/][^/]*\)\/*$/{
13029 s//\1/
13030 q
13031 }
13032 /^X\/\(\/\/\)$/{
13033 s//\1/
13034 q
13035 }
13036 /^X\/\(\/\).*/{
13037 s//\1/
13038 q
13039 }
13040 s/.*/./; q'`
13041
13042 # Avoid depending upon Character Ranges.
13043 as_cr_letters='abcdefghijklmnopqrstuvwxyz'
13044 as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
13045 as_cr_Letters=$as_cr_letters$as_cr_LETTERS
13046 as_cr_digits='0123456789'
13047 as_cr_alnum=$as_cr_Letters$as_cr_digits
13048
13049 ECHO_C= ECHO_N= ECHO_T=
13050 case `echo -n x` in #(((((
13051 -n*)
13052 case `echo 'xy\c'` in
13053 *c*) ECHO_T=' ';; # ECHO_T is single tab character.
13054 xy) ECHO_C='\c';;
13055 *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
13056 ECHO_T=' ';;
13057 esac;;
13058 *)
13059 ECHO_N='-n';;
13060 esac
13061
13062 rm -f conf$$ conf$$.exe conf$$.file
13063 if test -d conf$$.dir; then
13064 rm -f conf$$.dir/conf$$.file
13065 else
13066 rm -f conf$$.dir
13067 mkdir conf$$.dir 2>/dev/null
13068 fi
13069 if (echo >conf$$.file) 2>/dev/null; then
13070 if ln -s conf$$.file conf$$ 2>/dev/null; then
13071 as_ln_s='ln -s'
13072 # ... but there are two gotchas:
13073 # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
13074 # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
13075 # In both cases, we have to default to `cp -pR'.
13076 ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
13077 as_ln_s='cp -pR'
13078 elif ln conf$$.file conf$$ 2>/dev/null; then
13079 as_ln_s=ln
13080 else
13081 as_ln_s='cp -pR'
13082 fi
13083 else
13084 as_ln_s='cp -pR'
13085 fi
13086 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
13087 rmdir conf$$.dir 2>/dev/null
13088
13089
13090 # as_fn_mkdir_p
13091 # -------------
13092 # Create "$as_dir" as a directory, including parents if necessary.
13093 as_fn_mkdir_p ()
13094 {
13095
13096 case $as_dir in #(
13097 -*) as_dir=./$as_dir;;
13098 esac
13099 test -d "$as_dir" || eval $as_mkdir_p || {
13100 as_dirs=
13101 while :; do
13102 case $as_dir in #(
13103 *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
13104 *) as_qdir=$as_dir;;
13105 esac
13106 as_dirs="'$as_qdir' $as_dirs"
13107 as_dir=`$as_dirname -- "$as_dir" ||
13108 $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
13109 X"$as_dir" : 'X\(//\)[^/]' \| \
13110 X"$as_dir" : 'X\(//\)$' \| \
13111 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
13112 $as_echo X"$as_dir" |
13113 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
13114 s//\1/
13115 q
13116 }
13117 /^X\(\/\/\)[^/].*/{
13118 s//\1/
13119 q
13120 }
13121 /^X\(\/\/\)$/{
13122 s//\1/
13123 q
13124 }
13125 /^X\(\/\).*/{
13126 s//\1/
13127 q
13128 }
13129 s/.*/./; q'`
13130 test -d "$as_dir" && break
13131 done
13132 test -z "$as_dirs" || eval "mkdir $as_dirs"
13133 } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
13134
13135
13136 } # as_fn_mkdir_p
13137 if mkdir -p . 2>/dev/null; then
13138 as_mkdir_p='mkdir -p "$as_dir"'
13139 else
13140 test -d ./-p && rmdir ./-p
13141 as_mkdir_p=false
13142 fi
13143
13144
13145 # as_fn_executable_p FILE
13146 # -----------------------
13147 # Test if FILE is an executable regular file.
13148 as_fn_executable_p ()
13149 {
13150 test -f "$1" && test -x "$1"
13151 } # as_fn_executable_p
13152 as_test_x='test -x'
13153 as_executable_p=as_fn_executable_p
13154
13155 # Sed expression to map a string onto a valid CPP name.
13156 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
13157
13158 # Sed expression to map a string onto a valid variable name.
13159 as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
13160
13161
13162 exec 6>&1
13163 ## --------------------------------- ##
13164 ## Main body of "$CONFIG_LT" script. ##
13165 ## --------------------------------- ##
13166 _ASEOF
13167 test $as_write_fail = 0 && chmod +x "$CONFIG_LT"
13168
13169 cat >>"$CONFIG_LT" <<\_LTEOF
13170 lt_cl_silent=false
13171 exec 5>>config.log
13172 {
13173 echo
13174 sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
13175 ## Running $as_me. ##
13176 _ASBOX
13177 } >&5
13178
13179 lt_cl_help="\
13180 \`$as_me' creates a local libtool stub from the current configuration,
13181 for use in further configure time tests before the real libtool is
13182 generated.
13183
13184 Usage: $0 [OPTIONS]
13185
13186 -h, --help print this help, then exit
13187 -V, --version print version number, then exit
13188 -q, --quiet do not print progress messages
13189 -d, --debug don't remove temporary files
13190
13191 Report bugs to <bug-libtool@gnu.org>."
13192
13193 lt_cl_version="\
13194 gd for TeX Live config.lt 2.0.35
13195 configured by $0, generated by GNU Autoconf 2.69.
13196
13197 Copyright (C) 2011 Free Software Foundation, Inc.
13198 This config.lt script is free software; the Free Software Foundation
13199 gives unlimited permision to copy, distribute and modify it."
13200
13201 while test $# != 0
13202 do
13203 case $1 in
13204 --version | --v* | -V )
13205 echo "$lt_cl_version"; exit 0 ;;
13206 --help | --h* | -h )
13207 echo "$lt_cl_help"; exit 0 ;;
13208 --debug | --d* | -d )
13209 debug=: ;;
13210 --quiet | --q* | --silent | --s* | -q )
13211 lt_cl_silent=: ;;
13212
13213 -*) as_fn_error $? "unrecognized option: $1
13214 Try \`$0 --help' for more information." "$LINENO" 5 ;;
13215
13216 *) as_fn_error $? "unrecognized argument: $1
13217 Try \`$0 --help' for more information." "$LINENO" 5 ;;
13218 esac
13219 shift
13220 done
13221
13222 if $lt_cl_silent; then
13223 exec 6>/dev/null
13224 fi
13225 _LTEOF
13226
13227 cat >>"$CONFIG_LT" <<_LTEOF
13228
13229
13230 # The HP-UX ksh and POSIX shell print the target directory to stdout
13231 # if CDPATH is set.
13232 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
13233
13234 sed_quote_subst='$sed_quote_subst'
13235 double_quote_subst='$double_quote_subst'
13236 delay_variable_subst='$delay_variable_subst'
13237 macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
13238 macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
13239 enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
13240 enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
13241 pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
13242 enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
13243 SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
13244 ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
13245 PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
13246 host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
13247 host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
13248 host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
13249 build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
13250 build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
13251 build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
13252 SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
13253 Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
13254 GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
13255 EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
13256 FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
13257 LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
13258 NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
13259 LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
13260 max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
13261 ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
13262 exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
13263 lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
13264 lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
13265 lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
13266 lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
13267 lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
13268 reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
13269 reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
13270 OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
13271 deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
13272 file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
13273 file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
13274 want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
13275 DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
13276 sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
13277 AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
13278 AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
13279 archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
13280 STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
13281 RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
13282 old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
13283 old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
13284 old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
13285 lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
13286 CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
13287 CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
13288 compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
13289 GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
13290 lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
13291 lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
13292 lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
13293 lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
13294 nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
13295 lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
13296 objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
13297 MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
13298 lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
13299 lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
13300 lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
13301 lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
13302 lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
13303 need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
13304 MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
13305 DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
13306 NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
13307 LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
13308 OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
13309 OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
13310 libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
13311 shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
13312 extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
13313 archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
13314 enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
13315 export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
13316 whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
13317 compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
13318 old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
13319 old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
13320 archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
13321 archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
13322 module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
13323 module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
13324 with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
13325 allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
13326 no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
13327 hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
13328 hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
13329 hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
13330 hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
13331 hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
13332 hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
13333 hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
13334 inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
13335 link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
13336 always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
13337 export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
13338 exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
13339 include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
13340 prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
13341 postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
13342 file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
13343 variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
13344 need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
13345 need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
13346 version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
13347 runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
13348 shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
13349 shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
13350 libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
13351 library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
13352 soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
13353 install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
13354 postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
13355 postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
13356 finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
13357 finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
13358 hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
13359 sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
13360 sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
13361 hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
13362 enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
13363 enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
13364 enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
13365 old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
13366 striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
13367
13368 LTCC='$LTCC'
13369 LTCFLAGS='$LTCFLAGS'
13370 compiler='$compiler_DEFAULT'
13371
13372 # A function that is used when there is no print builtin or printf.
13373 func_fallback_echo ()
13374 {
13375 eval 'cat <<_LTECHO_EOF
13376 \$1
13377 _LTECHO_EOF'
13378 }
13379
13380 # Quote evaled strings.
13381 for var in SHELL \
13382 ECHO \
13383 PATH_SEPARATOR \
13384 SED \
13385 GREP \
13386 EGREP \
13387 FGREP \
13388 LD \
13389 NM \
13390 LN_S \
13391 lt_SP2NL \
13392 lt_NL2SP \
13393 reload_flag \
13394 OBJDUMP \
13395 deplibs_check_method \
13396 file_magic_cmd \
13397 file_magic_glob \
13398 want_nocaseglob \
13399 DLLTOOL \
13400 sharedlib_from_linklib_cmd \
13401 AR \
13402 AR_FLAGS \
13403 archiver_list_spec \
13404 STRIP \
13405 RANLIB \
13406 CC \
13407 CFLAGS \
13408 compiler \
13409 lt_cv_sys_global_symbol_pipe \
13410 lt_cv_sys_global_symbol_to_cdecl \
13411 lt_cv_sys_global_symbol_to_c_name_address \
13412 lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
13413 nm_file_list_spec \
13414 lt_prog_compiler_no_builtin_flag \
13415 lt_prog_compiler_pic \
13416 lt_prog_compiler_wl \
13417 lt_prog_compiler_static \
13418 lt_cv_prog_compiler_c_o \
13419 need_locks \
13420 MANIFEST_TOOL \
13421 DSYMUTIL \
13422 NMEDIT \
13423 LIPO \
13424 OTOOL \
13425 OTOOL64 \
13426 shrext_cmds \
13427 export_dynamic_flag_spec \
13428 whole_archive_flag_spec \
13429 compiler_needs_object \
13430 with_gnu_ld \
13431 allow_undefined_flag \
13432 no_undefined_flag \
13433 hardcode_libdir_flag_spec \
13434 hardcode_libdir_separator \
13435 exclude_expsyms \
13436 include_expsyms \
13437 file_list_spec \
13438 variables_saved_for_relink \
13439 libname_spec \
13440 library_names_spec \
13441 soname_spec \
13442 install_override_mode \
13443 finish_eval \
13444 old_striplib \
13445 striplib; do
13446 case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
13447 *[\\\\\\\`\\"\\\$]*)
13448 eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
13449 ;;
13450 *)
13451 eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
13452 ;;
13453 esac
13454 done
13455
13456 # Double-quote double-evaled strings.
13457 for var in reload_cmds \
13458 old_postinstall_cmds \
13459 old_postuninstall_cmds \
13460 old_archive_cmds \
13461 extract_expsyms_cmds \
13462 old_archive_from_new_cmds \
13463 old_archive_from_expsyms_cmds \
13464 archive_cmds \
13465 archive_expsym_cmds \
13466 module_cmds \
13467 module_expsym_cmds \
13468 export_symbols_cmds \
13469 prelink_cmds \
13470 postlink_cmds \
13471 postinstall_cmds \
13472 postuninstall_cmds \
13473 finish_cmds \
13474 sys_lib_search_path_spec \
13475 sys_lib_dlsearch_path_spec; do
13476 case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
13477 *[\\\\\\\`\\"\\\$]*)
13478 eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
13479 ;;
13480 *)
13481 eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
13482 ;;
13483 esac
13484 done
13485
13486 ac_aux_dir='$ac_aux_dir'
13487 xsi_shell='$xsi_shell'
13488 lt_shell_append='$lt_shell_append'
13489
13490 # See if we are running on zsh, and set the options which allow our
13491 # commands through without removal of \ escapes INIT.
13492 if test -n "\${ZSH_VERSION+set}" ; then
13493 setopt NO_GLOB_SUBST
13494 fi
13495
13496
13497 PACKAGE='$PACKAGE'
13498 VERSION='$VERSION'
13499 TIMESTAMP='$TIMESTAMP'
13500 RM='$RM'
13501 ofile='$ofile'
13502
13503
13504
13505 _LTEOF
13506
13507 cat >>"$CONFIG_LT" <<\_LTEOF
13508 { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ofile" >&5
13509 $as_echo "$as_me: creating $ofile" >&6;}
13510
13511
13512 # See if we are running on zsh, and set the options which allow our
13513 # commands through without removal of \ escapes.
13514 if test -n "${ZSH_VERSION+set}" ; then
13515 setopt NO_GLOB_SUBST
13516 fi
13517
13518 cfgfile="${ofile}T"
13519 trap "$RM \"$cfgfile\"; exit 1" 1 2 15
13520 $RM "$cfgfile"
13521
13522 cat <<_LT_EOF >> "$cfgfile"
13523 #! $SHELL
13524
13525 # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
13526 # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
13527 # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
13528 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
13529 #
13530 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
13531 # 2006, 2007, 2008, 2009, 2010, 2011 Free Software
13532 # Foundation, Inc.
13533 # Written by Gordon Matzigkeit, 1996
13534 #
13535 # This file is part of GNU Libtool.
13536 #
13537 # GNU Libtool is free software; you can redistribute it and/or
13538 # modify it under the terms of the GNU General Public License as
13539 # published by the Free Software Foundation; either version 2 of
13540 # the License, or (at your option) any later version.
13541 #
13542 # As a special exception to the GNU General Public License,
13543 # if you distribute this file as part of a program or library that
13544 # is built using GNU Libtool, you may include this file under the
13545 # same distribution terms that you use for the rest of that program.
13546 #
13547 # GNU Libtool is distributed in the hope that it will be useful,
13548 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13549 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13550 # GNU General Public License for more details.
13551 #
13552 # You should have received a copy of the GNU General Public License
13553 # along with GNU Libtool; see the file COPYING. If not, a copy
13554 # can be downloaded from http://www.gnu.org/licenses/gpl.html, or
13555 # obtained by writing to the Free Software Foundation, Inc.,
13556 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
13557
13558
13559 # The names of the tagged configurations supported by this script.
13560 available_tags=""
13561
13562 # ### BEGIN LIBTOOL CONFIG
13563
13564 # Which release of libtool.m4 was used?
13565 macro_version=$macro_version
13566 macro_revision=$macro_revision
13567
13568 # Whether or not to build shared libraries.
13569 build_libtool_libs=$enable_shared
13570
13571 # Whether or not to build static libraries.
13572 build_old_libs=$enable_static
13573
13574 # What type of objects to build.
13575 pic_mode=$pic_mode
13576
13577 # Whether or not to optimize for fast installation.
13578 fast_install=$enable_fast_install
13579
13580 # Shell to use when invoking shell scripts.
13581 SHELL=$lt_SHELL
13582
13583 # An echo program that protects backslashes.
13584 ECHO=$lt_ECHO
13585
13586 # The PATH separator for the build system.
13587 PATH_SEPARATOR=$lt_PATH_SEPARATOR
13588
13589 # The host system.
13590 host_alias=$host_alias
13591 host=$host
13592 host_os=$host_os
13593
13594 # The build system.
13595 build_alias=$build_alias
13596 build=$build
13597 build_os=$build_os
13598
13599 # A sed program that does not truncate output.
13600 SED=$lt_SED
13601
13602 # Sed that helps us avoid accidentally triggering echo(1) options like -n.
13603 Xsed="\$SED -e 1s/^X//"
13604
13605 # A grep program that handles long lines.
13606 GREP=$lt_GREP
13607
13608 # An ERE matcher.
13609 EGREP=$lt_EGREP
13610
13611 # A literal string matcher.
13612 FGREP=$lt_FGREP
13613
13614 # A BSD- or MS-compatible name lister.
13615 NM=$lt_NM
13616
13617 # Whether we need soft or hard links.
13618 LN_S=$lt_LN_S
13619
13620 # What is the maximum length of a command?
13621 max_cmd_len=$max_cmd_len
13622
13623 # Object file suffix (normally "o").
13624 objext=$ac_objext
13625
13626 # Executable file suffix (normally "").
13627 exeext=$exeext
13628
13629 # whether the shell understands "unset".
13630 lt_unset=$lt_unset
13631
13632 # turn spaces into newlines.
13633 SP2NL=$lt_lt_SP2NL
13634
13635 # turn newlines into spaces.
13636 NL2SP=$lt_lt_NL2SP
13637
13638 # convert \$build file names to \$host format.
13639 to_host_file_cmd=$lt_cv_to_host_file_cmd
13640
13641 # convert \$build files to toolchain format.
13642 to_tool_file_cmd=$lt_cv_to_tool_file_cmd
13643
13644 # An object symbol dumper.
13645 OBJDUMP=$lt_OBJDUMP
13646
13647 # Method to check whether dependent libraries are shared objects.
13648 deplibs_check_method=$lt_deplibs_check_method
13649
13650 # Command to use when deplibs_check_method = "file_magic".
13651 file_magic_cmd=$lt_file_magic_cmd
13652
13653 # How to find potential files when deplibs_check_method = "file_magic".
13654 file_magic_glob=$lt_file_magic_glob
13655
13656 # Find potential files using nocaseglob when deplibs_check_method = "file_magic".
13657 want_nocaseglob=$lt_want_nocaseglob
13658
13659 # DLL creation program.
13660 DLLTOOL=$lt_DLLTOOL
13661
13662 # Command to associate shared and link libraries.
13663 sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
13664
13665 # The archiver.
13666 AR=$lt_AR
13667
13668 # Flags to create an archive.
13669 AR_FLAGS=$lt_AR_FLAGS
13670
13671 # How to feed a file listing to the archiver.
13672 archiver_list_spec=$lt_archiver_list_spec
13673
13674 # A symbol stripping program.
13675 STRIP=$lt_STRIP
13676
13677 # Commands used to install an old-style archive.
13678 RANLIB=$lt_RANLIB
13679 old_postinstall_cmds=$lt_old_postinstall_cmds
13680 old_postuninstall_cmds=$lt_old_postuninstall_cmds
13681
13682 # Whether to use a lock for old archive extraction.
13683 lock_old_archive_extraction=$lock_old_archive_extraction
13684
13685 # A C compiler.
13686 LTCC=$lt_CC
13687
13688 # LTCC compiler flags.
13689 LTCFLAGS=$lt_CFLAGS
13690
13691 # Take the output of nm and produce a listing of raw symbols and C names.
13692 global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
13693
13694 # Transform the output of nm in a proper C declaration.
13695 global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
13696
13697 # Transform the output of nm in a C name address pair.
13698 global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
13699
13700 # Transform the output of nm in a C name address pair when lib prefix is needed.
13701 global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
13702
13703 # Specify filename containing input files for \$NM.
13704 nm_file_list_spec=$lt_nm_file_list_spec
13705
13706 # The root where to search for dependent libraries,and in which our libraries should be installed.
13707 lt_sysroot=$lt_sysroot
13708
13709 # The name of the directory that contains temporary libtool files.
13710 objdir=$objdir
13711
13712 # Used to examine libraries when file_magic_cmd begins with "file".
13713 MAGIC_CMD=$MAGIC_CMD
13714
13715 # Must we lock files when doing compilation?
13716 need_locks=$lt_need_locks
13717
13718 # Manifest tool.
13719 MANIFEST_TOOL=$lt_MANIFEST_TOOL
13720
13721 # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
13722 DSYMUTIL=$lt_DSYMUTIL
13723
13724 # Tool to change global to local symbols on Mac OS X.
13725 NMEDIT=$lt_NMEDIT
13726
13727 # Tool to manipulate fat objects and archives on Mac OS X.
13728 LIPO=$lt_LIPO
13729
13730 # ldd/readelf like tool for Mach-O binaries on Mac OS X.
13731 OTOOL=$lt_OTOOL
13732
13733 # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
13734 OTOOL64=$lt_OTOOL64
13735
13736 # Old archive suffix (normally "a").
13737 libext=$libext
13738
13739 # Shared library suffix (normally ".so").
13740 shrext_cmds=$lt_shrext_cmds
13741
13742 # The commands to extract the exported symbol list from a shared archive.
13743 extract_expsyms_cmds=$lt_extract_expsyms_cmds
13744
13745 # Variables whose values should be saved in libtool wrapper scripts and
13746 # restored at link time.
13747 variables_saved_for_relink=$lt_variables_saved_for_relink
13748
13749 # Do we need the "lib" prefix for modules?
13750 need_lib_prefix=$need_lib_prefix
13751
13752 # Do we need a version for libraries?
13753 need_version=$need_version
13754
13755 # Library versioning type.
13756 version_type=$version_type
13757
13758 # Shared library runtime path variable.
13759 runpath_var=$runpath_var
13760
13761 # Shared library path variable.
13762 shlibpath_var=$shlibpath_var
13763
13764 # Is shlibpath searched before the hard-coded library search path?
13765 shlibpath_overrides_runpath=$shlibpath_overrides_runpath
13766
13767 # Format of library name prefix.
13768 libname_spec=$lt_libname_spec
13769
13770 # List of archive names. First name is the real one, the rest are links.
13771 # The last name is the one that the linker finds with -lNAME
13772 library_names_spec=$lt_library_names_spec
13773
13774 # The coded name of the library, if different from the real name.
13775 soname_spec=$lt_soname_spec
13776
13777 # Permission mode override for installation of shared libraries.
13778 install_override_mode=$lt_install_override_mode
13779
13780 # Command to use after installation of a shared archive.
13781 postinstall_cmds=$lt_postinstall_cmds
13782
13783 # Command to use after uninstallation of a shared archive.
13784 postuninstall_cmds=$lt_postuninstall_cmds
13785
13786 # Commands used to finish a libtool library installation in a directory.
13787 finish_cmds=$lt_finish_cmds
13788
13789 # As "finish_cmds", except a single script fragment to be evaled but
13790 # not shown.
13791 finish_eval=$lt_finish_eval
13792
13793 # Whether we should hardcode library paths into libraries.
13794 hardcode_into_libs=$hardcode_into_libs
13795
13796 # Compile-time system search path for libraries.
13797 sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
13798
13799 # Run-time system search path for libraries.
13800 sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
13801
13802 # Whether dlopen is supported.
13803 dlopen_support=$enable_dlopen
13804
13805 # Whether dlopen of programs is supported.
13806 dlopen_self=$enable_dlopen_self
13807
13808 # Whether dlopen of statically linked programs is supported.
13809 dlopen_self_static=$enable_dlopen_self_static
13810
13811 # Commands to strip libraries.
13812 old_striplib=$lt_old_striplib
13813 striplib=$lt_striplib
13814
13815
13816 # The linker used to build libraries.
13817 LD=$lt_LD
13818
13819 # How to create reloadable object files.
13820 reload_flag=$lt_reload_flag
13821 reload_cmds=$lt_reload_cmds
13822
13823 # Commands used to build an old-style archive.
13824 old_archive_cmds=$lt_old_archive_cmds
13825
13826 # A language specific compiler.
13827 CC=$lt_compiler
13828
13829 # Is the compiler the GNU compiler?
13830 with_gcc=$GCC
13831
13832 # Compiler flag to turn off builtin functions.
13833 no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
13834
13835 # Additional compiler flags for building library objects.
13836 pic_flag=$lt_lt_prog_compiler_pic
13837
13838 # How to pass a linker flag through the compiler.
13839 wl=$lt_lt_prog_compiler_wl
13840
13841 # Compiler flag to prevent dynamic linking.
13842 link_static_flag=$lt_lt_prog_compiler_static
13843
13844 # Does compiler simultaneously support -c and -o options?
13845 compiler_c_o=$lt_lt_cv_prog_compiler_c_o
13846
13847 # Whether or not to add -lc for building shared libraries.
13848 build_libtool_need_lc=$archive_cmds_need_lc
13849
13850 # Whether or not to disallow shared libs when runtime libs are static.
13851 allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
13852
13853 # Compiler flag to allow reflexive dlopens.
13854 export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
13855
13856 # Compiler flag to generate shared objects directly from archives.
13857 whole_archive_flag_spec=$lt_whole_archive_flag_spec
13858
13859 # Whether the compiler copes with passing no objects directly.
13860 compiler_needs_object=$lt_compiler_needs_object
13861
13862 # Create an old-style archive from a shared archive.
13863 old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
13864
13865 # Create a temporary old-style archive to link instead of a shared archive.
13866 old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
13867
13868 # Commands used to build a shared archive.
13869 archive_cmds=$lt_archive_cmds
13870 archive_expsym_cmds=$lt_archive_expsym_cmds
13871
13872 # Commands used to build a loadable module if different from building
13873 # a shared archive.
13874 module_cmds=$lt_module_cmds
13875 module_expsym_cmds=$lt_module_expsym_cmds
13876
13877 # Whether we are building with GNU ld or not.
13878 with_gnu_ld=$lt_with_gnu_ld
13879
13880 # Flag that allows shared libraries with undefined symbols to be built.
13881 allow_undefined_flag=$lt_allow_undefined_flag
13882
13883 # Flag that enforces no undefined symbols.
13884 no_undefined_flag=$lt_no_undefined_flag
13885
13886 # Flag to hardcode \$libdir into a binary during linking.
13887 # This must work even if \$libdir does not exist
13888 hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
13889
13890 # Whether we need a single "-rpath" flag with a separated argument.
13891 hardcode_libdir_separator=$lt_hardcode_libdir_separator
13892
13893 # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
13894 # DIR into the resulting binary.
13895 hardcode_direct=$hardcode_direct
13896
13897 # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
13898 # DIR into the resulting binary and the resulting library dependency is
13899 # "absolute",i.e impossible to change by setting \${shlibpath_var} if the
13900 # library is relocated.
13901 hardcode_direct_absolute=$hardcode_direct_absolute
13902
13903 # Set to "yes" if using the -LDIR flag during linking hardcodes DIR
13904 # into the resulting binary.
13905 hardcode_minus_L=$hardcode_minus_L
13906
13907 # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
13908 # into the resulting binary.
13909 hardcode_shlibpath_var=$hardcode_shlibpath_var
13910
13911 # Set to "yes" if building a shared library automatically hardcodes DIR
13912 # into the library and all subsequent libraries and executables linked
13913 # against it.
13914 hardcode_automatic=$hardcode_automatic
13915
13916 # Set to yes if linker adds runtime paths of dependent libraries
13917 # to runtime path list.
13918 inherit_rpath=$inherit_rpath
13919
13920 # Whether libtool must link a program against all its dependency libraries.
13921 link_all_deplibs=$link_all_deplibs
13922
13923 # Set to "yes" if exported symbols are required.
13924 always_export_symbols=$always_export_symbols
13925
13926 # The commands to list exported symbols.
13927 export_symbols_cmds=$lt_export_symbols_cmds
13928
13929 # Symbols that should not be listed in the preloaded symbols.
13930 exclude_expsyms=$lt_exclude_expsyms
13931
13932 # Symbols that must always be exported.
13933 include_expsyms=$lt_include_expsyms
13934
13935 # Commands necessary for linking programs (against libraries) with templates.
13936 prelink_cmds=$lt_prelink_cmds
13937
13938 # Commands necessary for finishing linking programs.
13939 postlink_cmds=$lt_postlink_cmds
13940
13941 # Specify filename containing input files.
13942 file_list_spec=$lt_file_list_spec
13943
13944 # How to hardcode a shared library path into an executable.
13945 hardcode_action=$hardcode_action
13946
13947 # ### END LIBTOOL CONFIG
13948
13949 _LT_EOF
13950
13951 case $host_os in
13952 aix3*)
13953 cat <<\_LT_EOF >> "$cfgfile"
13954 # AIX sometimes has problems with the GCC collect2 program. For some
13955 # reason, if we set the COLLECT_NAMES environment variable, the problems
13956 # vanish in a puff of smoke.
13957 if test "X${COLLECT_NAMES+set}" != Xset; then
13958 COLLECT_NAMES=
13959 export COLLECT_NAMES
13960 fi
13961 _LT_EOF
13962 ;;
13963 esac
13964
13965
13966 ltmain="$ac_aux_dir/ltmain.sh"
13967
13968
13969 # We use sed instead of cat because bash on DJGPP gets confused if
13970 # if finds mixed CR/LF and LF-only lines. Since sed operates in
13971 # text mode, it properly converts lines to CR/LF. This bash problem
13972 # is reportedly fixed, but why not run on old versions too?
13973 sed '$q' "$ltmain" >> "$cfgfile" \
13974 || (rm -f "$cfgfile"; exit 1)
13975
13976 if test x"$xsi_shell" = xyes; then
13977 sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
13978 func_dirname ()\
13979 {\
13980 \ case ${1} in\
13981 \ */*) func_dirname_result="${1%/*}${2}" ;;\
13982 \ * ) func_dirname_result="${3}" ;;\
13983 \ esac\
13984 } # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
13985 && mv -f "$cfgfile.tmp" "$cfgfile" \
13986 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
13987 test 0 -eq $? || _lt_function_replace_fail=:
13988
13989
13990 sed -e '/^func_basename ()$/,/^} # func_basename /c\
13991 func_basename ()\
13992 {\
13993 \ func_basename_result="${1##*/}"\
13994 } # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
13995 && mv -f "$cfgfile.tmp" "$cfgfile" \
13996 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
13997 test 0 -eq $? || _lt_function_replace_fail=:
13998
13999
14000 sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
14001 func_dirname_and_basename ()\
14002 {\
14003 \ case ${1} in\
14004 \ */*) func_dirname_result="${1%/*}${2}" ;;\
14005 \ * ) func_dirname_result="${3}" ;;\
14006 \ esac\
14007 \ func_basename_result="${1##*/}"\
14008 } # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
14009 && mv -f "$cfgfile.tmp" "$cfgfile" \
14010 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
14011 test 0 -eq $? || _lt_function_replace_fail=:
14012
14013
14014 sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
14015 func_stripname ()\
14016 {\
14017 \ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
14018 \ # positional parameters, so assign one to ordinary parameter first.\
14019 \ func_stripname_result=${3}\
14020 \ func_stripname_result=${func_stripname_result#"${1}"}\
14021 \ func_stripname_result=${func_stripname_result%"${2}"}\
14022 } # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
14023 && mv -f "$cfgfile.tmp" "$cfgfile" \
14024 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
14025 test 0 -eq $? || _lt_function_replace_fail=:
14026
14027
14028 sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
14029 func_split_long_opt ()\
14030 {\
14031 \ func_split_long_opt_name=${1%%=*}\
14032 \ func_split_long_opt_arg=${1#*=}\
14033 } # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
14034 && mv -f "$cfgfile.tmp" "$cfgfile" \
14035 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
14036 test 0 -eq $? || _lt_function_replace_fail=:
14037
14038
14039 sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
14040 func_split_short_opt ()\
14041 {\
14042 \ func_split_short_opt_arg=${1#??}\
14043 \ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
14044 } # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
14045 && mv -f "$cfgfile.tmp" "$cfgfile" \
14046 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
14047 test 0 -eq $? || _lt_function_replace_fail=:
14048
14049
14050 sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
14051 func_lo2o ()\
14052 {\
14053 \ case ${1} in\
14054 \ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
14055 \ *) func_lo2o_result=${1} ;;\
14056 \ esac\
14057 } # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
14058 && mv -f "$cfgfile.tmp" "$cfgfile" \
14059 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
14060 test 0 -eq $? || _lt_function_replace_fail=:
14061
14062
14063 sed -e '/^func_xform ()$/,/^} # func_xform /c\
14064 func_xform ()\
14065 {\
14066 func_xform_result=${1%.*}.lo\
14067 } # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
14068 && mv -f "$cfgfile.tmp" "$cfgfile" \
14069 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
14070 test 0 -eq $? || _lt_function_replace_fail=:
14071
14072
14073 sed -e '/^func_arith ()$/,/^} # func_arith /c\
14074 func_arith ()\
14075 {\
14076 func_arith_result=$(( $* ))\
14077 } # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
14078 && mv -f "$cfgfile.tmp" "$cfgfile" \
14079 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
14080 test 0 -eq $? || _lt_function_replace_fail=:
14081
14082
14083 sed -e '/^func_len ()$/,/^} # func_len /c\
14084 func_len ()\
14085 {\
14086 func_len_result=${#1}\
14087 } # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
14088 && mv -f "$cfgfile.tmp" "$cfgfile" \
14089 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
14090 test 0 -eq $? || _lt_function_replace_fail=:
14091
14092 fi
14093
14094 if test x"$lt_shell_append" = xyes; then
14095 sed -e '/^func_append ()$/,/^} # func_append /c\
14096 func_append ()\
14097 {\
14098 eval "${1}+=\\${2}"\
14099 } # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
14100 && mv -f "$cfgfile.tmp" "$cfgfile" \
14101 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
14102 test 0 -eq $? || _lt_function_replace_fail=:
14103
14104
14105 sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
14106 func_append_quoted ()\
14107 {\
14108 \ func_quote_for_eval "${2}"\
14109 \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
14110 } # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
14111 && mv -f "$cfgfile.tmp" "$cfgfile" \
14112 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
14113 test 0 -eq $? || _lt_function_replace_fail=:
14114
14115
14116 # Save a `func_append' function call where possible by direct use of '+='
14117 sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
14118 && mv -f "$cfgfile.tmp" "$cfgfile" \
14119 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
14120 test 0 -eq $? || _lt_function_replace_fail=:
14121 else
14122 # Save a `func_append' function call even when '+=' is not available
14123 sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
14124 && mv -f "$cfgfile.tmp" "$cfgfile" \
14125 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
14126 test 0 -eq $? || _lt_function_replace_fail=:
14127 fi
14128
14129 if test x"$_lt_function_replace_fail" = x":"; then
14130 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
14131 $as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
14132 fi
14133
14134
14135 mv -f "$cfgfile" "$ofile" ||
14136 (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
14137 chmod +x "$ofile"
14138
14139
14140 as_fn_exit 0
14141 _LTEOF
14142 chmod +x "$CONFIG_LT"
14143
14144 # configure is writing to config.log, but config.lt does its own redirection,
14145 # appending to config.log, which fails on DOS, as config.log is still kept
14146 # open by configure. Here we exec the FD to /dev/null, effectively closing
14147 # config.log, so it can be properly (re)opened and appended to by config.lt.
14148 lt_cl_success=:
14149 test "$silent" = yes &&
14150 lt_config_lt_args="$lt_config_lt_args --quiet"
14151 exec 5>/dev/null
14152 $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
14153 exec 5>>config.log
14154 $lt_cl_success || as_fn_exit 1
14155
14156 ac_ext=c
14157 ac_cpp='$CPP $CPPFLAGS'
14158 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
14159 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
14160 ac_compiler_gnu=$ac_cv_c_compiler_gnu
14161 ac_link="./libtool --mode=link --tag=CC $ac_link"
14162
14163 ## _KPSE_LIB_FLAGS: Setup freetype2 (-lfreetype) flags
14164
14165 # Check whether --with-system-freetype2 was given.
14166 if test "${with_system_freetype2+set}" = set; then :
14167 withval=$with_system_freetype2;
14168 fi
14169 if test "x$with_system_freetype2" = xyes; then
14170 if test -n "$ac_tool_prefix"; then
14171 # Extract the first word of "${ac_tool_prefix}freetype-config", so it can be a program name with args.
14172 set dummy ${ac_tool_prefix}freetype-config; ac_word=$2
14173 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
14174 $as_echo_n "checking for $ac_word... " >&6; }
14175 if ${ac_cv_prog_FT2_CONFIG+:} false; then :
14176 $as_echo_n "(cached) " >&6
14177 else
14178 if test -n "$FT2_CONFIG"; then
14179 ac_cv_prog_FT2_CONFIG="$FT2_CONFIG" # Let the user override the test.
14180 else
14181 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
14182 for as_dir in $PATH
14183 do
14184 IFS=$as_save_IFS
14185 test -z "$as_dir" && as_dir=.
14186 for ac_exec_ext in '' $ac_executable_extensions; do
14187 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
14188 ac_cv_prog_FT2_CONFIG="${ac_tool_prefix}freetype-config"
14189 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
14190 break 2
14191 fi
14192 done
14193 done
14194 IFS=$as_save_IFS
14195
14196 fi
14197 fi
14198 FT2_CONFIG=$ac_cv_prog_FT2_CONFIG
14199 if test -n "$FT2_CONFIG"; then
14200 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FT2_CONFIG" >&5
14201 $as_echo "$FT2_CONFIG" >&6; }
14202 else
14203 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
14204 $as_echo "no" >&6; }
14205 fi
14206
14207
14208 fi
14209 if test -z "$ac_cv_prog_FT2_CONFIG"; then
14210 ac_ct_FT2_CONFIG=$FT2_CONFIG
14211 # Extract the first word of "freetype-config", so it can be a program name with args.
14212 set dummy freetype-config; ac_word=$2
14213 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
14214 $as_echo_n "checking for $ac_word... " >&6; }
14215 if ${ac_cv_prog_ac_ct_FT2_CONFIG+:} false; then :
14216 $as_echo_n "(cached) " >&6
14217 else
14218 if test -n "$ac_ct_FT2_CONFIG"; then
14219 ac_cv_prog_ac_ct_FT2_CONFIG="$ac_ct_FT2_CONFIG" # Let the user override the test.
14220 else
14221 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
14222 for as_dir in $PATH
14223 do
14224 IFS=$as_save_IFS
14225 test -z "$as_dir" && as_dir=.
14226 for ac_exec_ext in '' $ac_executable_extensions; do
14227 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
14228 ac_cv_prog_ac_ct_FT2_CONFIG="freetype-config"
14229 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
14230 break 2
14231 fi
14232 done
14233 done
14234 IFS=$as_save_IFS
14235
14236 fi
14237 fi
14238 ac_ct_FT2_CONFIG=$ac_cv_prog_ac_ct_FT2_CONFIG
14239 if test -n "$ac_ct_FT2_CONFIG"; then
14240 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FT2_CONFIG" >&5
14241 $as_echo "$ac_ct_FT2_CONFIG" >&6; }
14242 else
14243 { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
14244 $as_echo "no" >&6; }
14245 fi
14246
14247 if test "x$ac_ct_FT2_CONFIG" = x; then
14248 FT2_CONFIG="false"
14249 else
14250 case $cross_compiling:$ac_tool_warned in
14251 yes:)
14252 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
14253 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
14254 ac_tool_warned=yes ;;
14255 esac
14256 FT2_CONFIG=$ac_ct_FT2_CONFIG
14257 fi
14258 else
14259 FT2_CONFIG="$ac_cv_prog_FT2_CONFIG"
14260 fi
14261 if $FT2_CONFIG --ftversion >/dev/null 2>&1; then
14262 FREETYPE2_INCLUDES=`$FT2_CONFIG --cflags`
14263 FREETYPE2_LIBS=`$FT2_CONFIG --libs`
14264 elif test "x$need_freetype2:$with_system_freetype2" = xyes:yes; then
14265 as_fn_error $? "did not find freetype-config required for system freetype2 library" "$LINENO" 5
14266 fi
14267 else
14268 FREETYPE2_INCLUDES="-I$kpse_BLD/libs/freetype2/freetype2 -I$kpse_BLD/libs/freetype2"
14269 FREETYPE2_LIBS="$kpse_BLD/libs/freetype2/libfreetype.la"
14270 FREETYPE2_DEPEND='${top_builddir}/../../libs/freetype2/libfreetype.la'
14271 FREETYPE2_RULE='# Rebuild libfreetype
14272 $(FREETYPE2_DEPEND): ${top_builddir}/../../libs/freetype2/ft2build.h
14273 cd ${top_builddir}/../../libs/freetype2 && $(MAKE) $(AM_MAKEFLAGS) rebuild
14274 ${top_builddir}/../../libs/freetype2/ft2build.h:
14275 cd ${top_builddir}/../../libs/freetype2 && $(MAKE) $(AM_MAKEFLAGS) rebuild'
14276 fi
14277
14278
14279 if test "x$enable_build" != xno; then
14280 build_TRUE=
14281 build_FALSE='#'
14282 else
14283 build_TRUE='#'
14284 build_FALSE=
14285 fi
14286
14287
14288 if test "x$enable_build" != xno || test -f config.force; then
14289
14290 kpse_save_CPPFLAGS=$CPPFLAGS
14291 kpse_save_LIBS=$LIBS
14292
14293 eval CPPFLAGS=\"$ZLIB_INCLUDES \$CPPFLAGS\"
14294 eval LIBS=\"$ZLIB_LIBS \$LIBS\"
14295
14296 ac_fn_c_check_func "$LINENO" "deflate" "ac_cv_func_deflate"
14297 if test "x$ac_cv_func_deflate" = xyes; then :
14298
14299 else
14300 as_fn_error $? "zlib not found" "$LINENO" 5
14301 fi
14302
14303 for ac_header in zlib.h
14304 do :
14305 ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default"
14306 if test "x$ac_cv_header_zlib_h" = xyes; then :
14307 cat >>confdefs.h <<_ACEOF
14308 #define HAVE_ZLIB_H 1
14309 _ACEOF
14310
14311 else
14312 as_fn_error $? "zlib not found" "$LINENO" 5
14313 fi
14314
14315 done
14316
14317
14318 eval CPPFLAGS=\"$LIBPNG_INCLUDES \$CPPFLAGS\"
14319 eval LIBS=\"$LIBPNG_LIBS \$LIBS\"
14320
14321 ac_fn_c_check_func "$LINENO" "png_create_read_struct" "ac_cv_func_png_create_read_struct"
14322 if test "x$ac_cv_func_png_create_read_struct" = xyes; then :
14323
14324 else
14325 as_fn_error $? "libpng not found" "$LINENO" 5
14326 fi
14327
14328 for ac_header in png.h
14329 do :
14330 ac_fn_c_check_header_mongrel "$LINENO" "png.h" "ac_cv_header_png_h" "$ac_includes_default"
14331 if test "x$ac_cv_header_png_h" = xyes; then :
14332 cat >>confdefs.h <<_ACEOF
14333 #define HAVE_PNG_H 1
14334 _ACEOF
14335
14336 else
14337 as_fn_error $? "libpng not found" "$LINENO" 5
14338 fi
14339
14340 done
14341
14342
14343 eval CPPFLAGS=\"$FREETYPE2_INCLUDES \$CPPFLAGS\"
14344 eval LIBS=\"$FREETYPE2_LIBS \$LIBS\"
14345
14346 ac_fn_c_check_func "$LINENO" "FT_Init_FreeType" "ac_cv_func_FT_Init_FreeType"
14347 if test "x$ac_cv_func_FT_Init_FreeType" = xyes; then :
14348
14349 else
14350 as_fn_error $? "libfreetype2 not found" "$LINENO" 5
14351 fi
14352
14353 for ac_header in ft2build.h
14354 do :
14355 ac_fn_c_check_header_mongrel "$LINENO" "ft2build.h" "ac_cv_header_ft2build_h" "$ac_includes_default"
14356 if test "x$ac_cv_header_ft2build_h" = xyes; then :
14357 cat >>confdefs.h <<_ACEOF
14358 #define HAVE_FT2BUILD_H 1
14359 _ACEOF
14360
14361 else
14362 as_fn_error $? "libfreetype2 not found" "$LINENO" 5
14363 fi
14364
14365 done
14366
14367
14368 CPPFLAGS=$kpse_save_CPPFLAGS
14369 LIBS=$kpse_save_LIBS
14370
14371
14372 echo timestamp >config.force
14373 fi
14374
14375
14376 $as_echo "#define HAVE_LIBZ 1" >>confdefs.h
14377
14378 $as_echo "#define HAVE_ZLIB_H 1" >>confdefs.h
14379
14380
14381 $as_echo "#define HAVE_LIBPNG 1" >>confdefs.h
14382
14383 $as_echo "#define HAVE_PNG_H 1" >>confdefs.h
14384
14385
14386 $as_echo "#define HAVE_LIBFREETYPE 1" >>confdefs.h
14387
14388 $as_echo "#define HAVE_FT2BUILD_H 1" >>confdefs.h
14389
14390
14391 GD_TREE=gd-2.0.35
14392
14393
14394 ac_config_files="$ac_config_files Makefile include/Makefile"
14395
14396
14397 cat >confcache <<\_ACEOF
14398 # This file is a shell script that caches the results of configure
14399 # tests run on this system so they can be shared between configure
14400 # scripts and configure runs, see configure's option --config-cache.
14401 # It is not useful on other systems. If it contains results you don't
14402 # want to keep, you may remove or edit it.
14403 #
14404 # config.status only pays attention to the cache file if you give it
14405 # the --recheck option to rerun configure.
14406 #
14407 # `ac_cv_env_foo' variables (set or unset) will be overridden when
14408 # loading this file, other *unset* `ac_cv_foo' will be assigned the
14409 # following values.
14410
14411 _ACEOF
14412
14413 # The following way of writing the cache mishandles newlines in values,
14414 # but we know of no workaround that is simple, portable, and efficient.
14415 # So, we kill variables containing newlines.
14416 # Ultrix sh set writes to stderr and can't be redirected directly,
14417 # and sets the high bit in the cache file unless we assign to the vars.
14418 (
14419 for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
14420 eval ac_val=\$$ac_var
14421 case $ac_val in #(
14422 *${as_nl}*)
14423 case $ac_var in #(
14424 *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
14425 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
14426 esac
14427 case $ac_var in #(
14428 _ | IFS | as_nl) ;; #(
14429 BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
14430 *) { eval $ac_var=; unset $ac_var;} ;;
14431 esac ;;
14432 esac
14433 done
14434
14435 (set) 2>&1 |
14436 case $as_nl`(ac_space=' '; set) 2>&1` in #(
14437 *${as_nl}ac_space=\ *)
14438 # `set' does not quote correctly, so add quotes: double-quote
14439 # substitution turns \\\\ into \\, and sed turns \\ into \.
14440 sed -n \
14441 "s/'/'\\\\''/g;
14442 s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
14443 ;; #(
14444 *)
14445 # `set' quotes correctly as required by POSIX, so do not add quotes.
14446 sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
14447 ;;
14448 esac |
14449 sort
14450 ) |
14451 sed '
14452 /^ac_cv_env_/b end
14453 t clear
14454 :clear
14455 s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
14456 t end
14457 s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
14458 :end' >>confcache
14459 if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
14460 if test -w "$cache_file"; then
14461 if test "x$cache_file" != "x/dev/null"; then
14462 { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
14463 $as_echo "$as_me: updating cache $cache_file" >&6;}
14464 if test ! -f "$cache_file" || test -h "$cache_file"; then
14465 cat confcache >"$cache_file"
14466 else
14467 case $cache_file in #(
14468 */* | ?:*)
14469 mv -f confcache "$cache_file"$$ &&
14470 mv -f "$cache_file"$$ "$cache_file" ;; #(
14471 *)
14472 mv -f confcache "$cache_file" ;;
14473 esac
14474 fi
14475 fi
14476 else
14477 { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
14478 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
14479 fi
14480 fi
14481 rm -f confcache
14482
14483 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14484 # Let make expand exec_prefix.
14485 test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
14486
14487 DEFS=-DHAVE_CONFIG_H
14488
14489 ac_libobjs=
14490 ac_ltlibobjs=
14491 U=
14492 for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
14493 # 1. Remove the extension, and $U if already installed.
14494 ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
14495 ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
14496 # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
14497 # will be set to the directory where LIBOBJS objects are built.
14498 as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
14499 as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
14500 done
14501 LIBOBJS=$ac_libobjs
14502
14503 LTLIBOBJS=$ac_ltlibobjs
14504
14505
14506 { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
14507 $as_echo_n "checking that generated files are newer than configure... " >&6; }
14508 if test -n "$am_sleep_pid"; then
14509 # Hide warnings about reused PIDs.
14510 wait $am_sleep_pid 2>/dev/null
14511 fi
14512 { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
14513 $as_echo "done" >&6; }
14514 if test -n "$EXEEXT"; then
14515 am__EXEEXT_TRUE=
14516 am__EXEEXT_FALSE='#'
14517 else
14518 am__EXEEXT_TRUE='#'
14519 am__EXEEXT_FALSE=
14520 fi
14521
14522 if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
14523 as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
14524 Usually this means the macro was only invoked conditionally." "$LINENO" 5
14525 fi
14526 if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
14527 as_fn_error $? "conditional \"AMDEP\" was never defined.
14528 Usually this means the macro was only invoked conditionally." "$LINENO" 5
14529 fi
14530 if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
14531 as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
14532 Usually this means the macro was only invoked conditionally." "$LINENO" 5
14533 fi
14534 if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
14535 as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
14536 Usually this means the macro was only invoked conditionally." "$LINENO" 5
14537 fi
14538 if test -z "${build_TRUE}" && test -z "${build_FALSE}"; then
14539 as_fn_error $? "conditional \"build\" was never defined.
14540 Usually this means the macro was only invoked conditionally." "$LINENO" 5
14541 fi
14542
14543 : "${CONFIG_STATUS=./config.status}"
14544 ac_write_fail=0
14545 ac_clean_files_save=$ac_clean_files
14546 ac_clean_files="$ac_clean_files $CONFIG_STATUS"
14547 { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
14548 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
14549 as_write_fail=0
14550 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
14551 #! $SHELL
14552 # Generated by $as_me.
14553 # Run this file to recreate the current configuration.
14554 # Compiler output produced by configure, useful for debugging
14555 # configure, is in config.log if it exists.
14556
14557 debug=false
14558 ac_cs_recheck=false
14559 ac_cs_silent=false
14560
14561 SHELL=\${CONFIG_SHELL-$SHELL}
14562 export SHELL
14563 _ASEOF
14564 cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
14565 ## -------------------- ##
14566 ## M4sh Initialization. ##
14567 ## -------------------- ##
14568
14569 # Be more Bourne compatible
14570 DUALCASE=1; export DUALCASE # for MKS sh
14571 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
14572 emulate sh
14573 NULLCMD=:
14574 # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
14575 # is contrary to our usage. Disable this feature.
14576 alias -g '${1+"$@"}'='"$@"'
14577 setopt NO_GLOB_SUBST
14578 else
14579 case `(set -o) 2>/dev/null` in #(
14580 *posix*) :
14581 set -o posix ;; #(
14582 *) :
14583 ;;
14584 esac
14585 fi
14586
14587
14588 as_nl='
14589 '
14590 export as_nl
14591 # Printing a long string crashes Solaris 7 /usr/bin/printf.
14592 as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
14593 as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
14594 as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
14595 # Prefer a ksh shell builtin over an external printf program on Solaris,
14596 # but without wasting forks for bash or zsh.
14597 if test -z "$BASH_VERSION$ZSH_VERSION" \
14598 && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
14599 as_echo='print -r --'
14600 as_echo_n='print -rn --'
14601 elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
14602 as_echo='printf %s\n'
14603 as_echo_n='printf %s'
14604 else
14605 if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
14606 as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
14607 as_echo_n='/usr/ucb/echo -n'
14608 else
14609 as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
14610 as_echo_n_body='eval
14611 arg=$1;
14612 case $arg in #(
14613 *"$as_nl"*)
14614 expr "X$arg" : "X\\(.*\\)$as_nl";
14615 arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
14616 esac;
14617 expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
14618 '
14619 export as_echo_n_body
14620 as_echo_n='sh -c $as_echo_n_body as_echo'
14621 fi
14622 export as_echo_body
14623 as_echo='sh -c $as_echo_body as_echo'
14624 fi
14625
14626 # The user is always right.
14627 if test "${PATH_SEPARATOR+set}" != set; then
14628 PATH_SEPARATOR=:
14629 (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
14630 (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
14631 PATH_SEPARATOR=';'
14632 }
14633 fi
14634
14635
14636 # IFS
14637 # We need space, tab and new line, in precisely that order. Quoting is
14638 # there to prevent editors from complaining about space-tab.
14639 # (If _AS_PATH_WALK were called with IFS unset, it would disable word
14640 # splitting by setting IFS to empty value.)
14641 IFS=" "" $as_nl"
14642
14643 # Find who we are. Look in the path if we contain no directory separator.
14644 as_myself=
14645 case $0 in #((
14646 *[\\/]* ) as_myself=$0 ;;
14647 *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
14648 for as_dir in $PATH
14649 do
14650 IFS=$as_save_IFS
14651 test -z "$as_dir" && as_dir=.
14652 test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
14653 done
14654 IFS=$as_save_IFS
14655
14656 ;;
14657 esac
14658 # We did not find ourselves, most probably we were run as `sh COMMAND'
14659 # in which case we are not to be found in the path.
14660 if test "x$as_myself" = x; then
14661 as_myself=$0
14662 fi
14663 if test ! -f "$as_myself"; then
14664 $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
14665 exit 1
14666 fi
14667
14668 # Unset variables that we do not need and which cause bugs (e.g. in
14669 # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
14670 # suppresses any "Segmentation fault" message there. '((' could
14671 # trigger a bug in pdksh 5.2.14.
14672 for as_var in BASH_ENV ENV MAIL MAILPATH
14673 do eval test x\${$as_var+set} = xset \
14674 && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
14675 done
14676 PS1='$ '
14677 PS2='> '
14678 PS4='+ '
14679
14680 # NLS nuisances.
14681 LC_ALL=C
14682 export LC_ALL
14683 LANGUAGE=C
14684 export LANGUAGE
14685
14686 # CDPATH.
14687 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
14688
14689
14690 # as_fn_error STATUS ERROR [LINENO LOG_FD]
14691 # ----------------------------------------
14692 # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
14693 # provided, also output the error to LOG_FD, referencing LINENO. Then exit the
14694 # script with STATUS, using 1 if that was 0.
14695 as_fn_error ()
14696 {
14697 as_status=$1; test $as_status -eq 0 && as_status=1
14698 if test "$4"; then
14699 as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
14700 $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
14701 fi
14702 $as_echo "$as_me: error: $2" >&2
14703 as_fn_exit $as_status
14704 } # as_fn_error
14705
14706
14707 # as_fn_set_status STATUS
14708 # -----------------------
14709 # Set $? to STATUS, without forking.
14710 as_fn_set_status ()
14711 {
14712 return $1
14713 } # as_fn_set_status
14714
14715 # as_fn_exit STATUS
14716 # -----------------
14717 # Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
14718 as_fn_exit ()
14719 {
14720 set +e
14721 as_fn_set_status $1
14722 exit $1
14723 } # as_fn_exit
14724
14725 # as_fn_unset VAR
14726 # ---------------
14727 # Portably unset VAR.
14728 as_fn_unset ()
14729 {
14730 { eval $1=; unset $1;}
14731 }
14732 as_unset=as_fn_unset
14733 # as_fn_append VAR VALUE
14734 # ----------------------
14735 # Append the text in VALUE to the end of the definition contained in VAR. Take
14736 # advantage of any shell optimizations that allow amortized linear growth over
14737 # repeated appends, instead of the typical quadratic growth present in naive
14738 # implementations.
14739 if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
14740 eval 'as_fn_append ()
14741 {
14742 eval $1+=\$2
14743 }'
14744 else
14745 as_fn_append ()
14746 {
14747 eval $1=\$$1\$2
14748 }
14749 fi # as_fn_append
14750
14751 # as_fn_arith ARG...
14752 # ------------------
14753 # Perform arithmetic evaluation on the ARGs, and store the result in the
14754 # global $as_val. Take advantage of shells that can avoid forks. The arguments
14755 # must be portable across $(()) and expr.
14756 if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
14757 eval 'as_fn_arith ()
14758 {
14759 as_val=$(( $* ))
14760 }'
14761 else
14762 as_fn_arith ()
14763 {
14764 as_val=`expr "$@" || test $? -eq 1`
14765 }
14766 fi # as_fn_arith
14767
14768
14769 if expr a : '\(a\)' >/dev/null 2>&1 &&
14770 test "X`expr 00001 : '.*\(...\)'`" = X001; then
14771 as_expr=expr
14772 else
14773 as_expr=false
14774 fi
14775
14776 if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
14777 as_basename=basename
14778 else
14779 as_basename=false
14780 fi
14781
14782 if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
14783 as_dirname=dirname
14784 else
14785 as_dirname=false
14786 fi
14787
14788 as_me=`$as_basename -- "$0" ||
14789 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
14790 X"$0" : 'X\(//\)$' \| \
14791 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
14792 $as_echo X/"$0" |
14793 sed '/^.*\/\([^/][^/]*\)\/*$/{
14794 s//\1/
14795 q
14796 }
14797 /^X\/\(\/\/\)$/{
14798 s//\1/
14799 q
14800 }
14801 /^X\/\(\/\).*/{
14802 s//\1/
14803 q
14804 }
14805 s/.*/./; q'`
14806
14807 # Avoid depending upon Character Ranges.
14808 as_cr_letters='abcdefghijklmnopqrstuvwxyz'
14809 as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
14810 as_cr_Letters=$as_cr_letters$as_cr_LETTERS
14811 as_cr_digits='0123456789'
14812 as_cr_alnum=$as_cr_Letters$as_cr_digits
14813
14814 ECHO_C= ECHO_N= ECHO_T=
14815 case `echo -n x` in #(((((
14816 -n*)
14817 case `echo 'xy\c'` in
14818 *c*) ECHO_T=' ';; # ECHO_T is single tab character.
14819 xy) ECHO_C='\c';;
14820 *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
14821 ECHO_T=' ';;
14822 esac;;
14823 *)
14824 ECHO_N='-n';;
14825 esac
14826
14827 rm -f conf$$ conf$$.exe conf$$.file
14828 if test -d conf$$.dir; then
14829 rm -f conf$$.dir/conf$$.file
14830 else
14831 rm -f conf$$.dir
14832 mkdir conf$$.dir 2>/dev/null
14833 fi
14834 if (echo >conf$$.file) 2>/dev/null; then
14835 if ln -s conf$$.file conf$$ 2>/dev/null; then
14836 as_ln_s='ln -s'
14837 # ... but there are two gotchas:
14838 # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
14839 # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
14840 # In both cases, we have to default to `cp -pR'.
14841 ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
14842 as_ln_s='cp -pR'
14843 elif ln conf$$.file conf$$ 2>/dev/null; then
14844 as_ln_s=ln
14845 else
14846 as_ln_s='cp -pR'
14847 fi
14848 else
14849 as_ln_s='cp -pR'
14850 fi
14851 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
14852 rmdir conf$$.dir 2>/dev/null
14853
14854
14855 # as_fn_mkdir_p
14856 # -------------
14857 # Create "$as_dir" as a directory, including parents if necessary.
14858 as_fn_mkdir_p ()
14859 {
14860
14861 case $as_dir in #(
14862 -*) as_dir=./$as_dir;;
14863 esac
14864 test -d "$as_dir" || eval $as_mkdir_p || {
14865 as_dirs=
14866 while :; do
14867 case $as_dir in #(
14868 *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
14869 *) as_qdir=$as_dir;;
14870 esac
14871 as_dirs="'$as_qdir' $as_dirs"
14872 as_dir=`$as_dirname -- "$as_dir" ||
14873 $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
14874 X"$as_dir" : 'X\(//\)[^/]' \| \
14875 X"$as_dir" : 'X\(//\)$' \| \
14876 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
14877 $as_echo X"$as_dir" |
14878 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
14879 s//\1/
14880 q
14881 }
14882 /^X\(\/\/\)[^/].*/{
14883 s//\1/
14884 q
14885 }
14886 /^X\(\/\/\)$/{
14887 s//\1/
14888 q
14889 }
14890 /^X\(\/\).*/{
14891 s//\1/
14892 q
14893 }
14894 s/.*/./; q'`
14895 test -d "$as_dir" && break
14896 done
14897 test -z "$as_dirs" || eval "mkdir $as_dirs"
14898 } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
14899
14900
14901 } # as_fn_mkdir_p
14902 if mkdir -p . 2>/dev/null; then
14903 as_mkdir_p='mkdir -p "$as_dir"'
14904 else
14905 test -d ./-p && rmdir ./-p
14906 as_mkdir_p=false
14907 fi
14908
14909
14910 # as_fn_executable_p FILE
14911 # -----------------------
14912 # Test if FILE is an executable regular file.
14913 as_fn_executable_p ()
14914 {
14915 test -f "$1" && test -x "$1"
14916 } # as_fn_executable_p
14917 as_test_x='test -x'
14918 as_executable_p=as_fn_executable_p
14919
14920 # Sed expression to map a string onto a valid CPP name.
14921 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
14922
14923 # Sed expression to map a string onto a valid variable name.
14924 as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
14925
14926
14927 exec 6>&1
14928 ## ----------------------------------- ##
14929 ## Main body of $CONFIG_STATUS script. ##
14930 ## ----------------------------------- ##
14931 _ASEOF
14932 test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
14933
14934 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
14935 # Save the log message, to keep $0 and so on meaningful, and to
14936 # report actual input values of CONFIG_FILES etc. instead of their
14937 # values after options handling.
14938 ac_log="
14939 This file was extended by gd for TeX Live $as_me 2.0.35, which was
14940 generated by GNU Autoconf 2.69. Invocation command line was
14941
14942 CONFIG_FILES = $CONFIG_FILES
14943 CONFIG_HEADERS = $CONFIG_HEADERS
14944 CONFIG_LINKS = $CONFIG_LINKS
14945 CONFIG_COMMANDS = $CONFIG_COMMANDS
14946 $ $0 $@
14947
14948 on `(hostname || uname -n) 2>/dev/null | sed 1q`
14949 "
14950
14951 _ACEOF
14952
14953 case $ac_config_files in *"
14954 "*) set x $ac_config_files; shift; ac_config_files=$*;;
14955 esac
14956
14957 case $ac_config_headers in *"
14958 "*) set x $ac_config_headers; shift; ac_config_headers=$*;;
14959 esac
14960
14961
14962 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
14963 # Files that config.status was made for.
14964 config_files="$ac_config_files"
14965 config_headers="$ac_config_headers"
14966 config_commands="$ac_config_commands"
14967
14968 _ACEOF
14969
14970 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
14971 ac_cs_usage="\
14972 \`$as_me' instantiates files and other configuration actions
14973 from templates according to the current configuration. Unless the files
14974 and actions are specified as TAGs, all are instantiated by default.
14975
14976 Usage: $0 [OPTION]... [TAG]...
14977
14978 -h, --help print this help, then exit
14979 -V, --version print version number and configuration settings, then exit
14980 --config print configuration, then exit
14981 -q, --quiet, --silent
14982 do not print progress messages
14983 -d, --debug don't remove temporary files
14984 --recheck update $as_me by reconfiguring in the same conditions
14985 --file=FILE[:TEMPLATE]
14986 instantiate the configuration file FILE
14987 --header=FILE[:TEMPLATE]
14988 instantiate the configuration header FILE
14989
14990 Configuration files:
14991 $config_files
14992
14993 Configuration headers:
14994 $config_headers
14995
14996 Configuration commands:
14997 $config_commands
14998
14999 Report bugs to <tex-k@tug.org>."
15000
15001 _ACEOF
15002 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
15003 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
15004 ac_cs_version="\\
15005 gd for TeX Live config.status 2.0.35
15006 configured by $0, generated by GNU Autoconf 2.69,
15007 with options \\"\$ac_cs_config\\"
15008
15009 Copyright (C) 2012 Free Software Foundation, Inc.
15010 This config.status script is free software; the Free Software Foundation
15011 gives unlimited permission to copy, distribute and modify it."
15012
15013 ac_pwd='$ac_pwd'
15014 srcdir='$srcdir'
15015 INSTALL='$INSTALL'
15016 MKDIR_P='$MKDIR_P'
15017 AWK='$AWK'
15018 test -n "\$AWK" || AWK=awk
15019 _ACEOF
15020
15021 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
15022 # The default lists apply if the user does not specify any file.
15023 ac_need_defaults=:
15024 while test $# != 0
15025 do
15026 case $1 in
15027 --*=?*)
15028 ac_option=`expr "X$1" : 'X\([^=]*\)='`
15029 ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
15030 ac_shift=:
15031 ;;
15032 --*=)
15033 ac_option=`expr "X$1" : 'X\([^=]*\)='`
15034 ac_optarg=
15035 ac_shift=:
15036 ;;
15037 *)
15038 ac_option=$1
15039 ac_optarg=$2
15040 ac_shift=shift
15041 ;;
15042 esac
15043
15044 case $ac_option in
15045 # Handling of the options.
15046 -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
15047 ac_cs_recheck=: ;;
15048 --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
15049 $as_echo "$ac_cs_version"; exit ;;
15050 --config | --confi | --conf | --con | --co | --c )
15051 $as_echo "$ac_cs_config"; exit ;;
15052 --debug | --debu | --deb | --de | --d | -d )
15053 debug=: ;;
15054 --file | --fil | --fi | --f )
15055 $ac_shift
15056 case $ac_optarg in
15057 *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
15058 '') as_fn_error $? "missing file argument" ;;
15059 esac
15060 as_fn_append CONFIG_FILES " '$ac_optarg'"
15061 ac_need_defaults=false;;
15062 --header | --heade | --head | --hea )
15063 $ac_shift
15064 case $ac_optarg in
15065 *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
15066 esac
15067 as_fn_append CONFIG_HEADERS " '$ac_optarg'"
15068 ac_need_defaults=false;;
15069 --he | --h)
15070 # Conflict between --help and --header
15071 as_fn_error $? "ambiguous option: \`$1'
15072 Try \`$0 --help' for more information.";;
15073 --help | --hel | -h )
15074 $as_echo "$ac_cs_usage"; exit ;;
15075 -q | -quiet | --quiet | --quie | --qui | --qu | --q \
15076 | -silent | --silent | --silen | --sile | --sil | --si | --s)
15077 ac_cs_silent=: ;;
15078
15079 # This is an error.
15080 -*) as_fn_error $? "unrecognized option: \`$1'
15081 Try \`$0 --help' for more information." ;;
15082
15083 *) as_fn_append ac_config_targets " $1"
15084 ac_need_defaults=false ;;
15085
15086 esac
15087 shift
15088 done
15089
15090 ac_configure_extra_args=
15091
15092 if $ac_cs_silent; then
15093 exec 6>/dev/null
15094 ac_configure_extra_args="$ac_configure_extra_args --silent"
15095 fi
15096
15097 _ACEOF
15098 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
15099 if \$ac_cs_recheck; then
15100 set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
15101 shift
15102 \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
15103 CONFIG_SHELL='$SHELL'
15104 export CONFIG_SHELL
15105 exec "\$@"
15106 fi
15107
15108 _ACEOF
15109 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
15110 exec 5>>config.log
15111 {
15112 echo
15113 sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
15114 ## Running $as_me. ##
15115 _ASBOX
15116 $as_echo "$ac_log"
15117 } >&5
15118
15119 _ACEOF
15120 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
15121 #
15122 # INIT-COMMANDS
15123 #
15124 AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
15125
15126
15127 # The HP-UX ksh and POSIX shell print the target directory to stdout
15128 # if CDPATH is set.
15129 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
15130
15131 sed_quote_subst='$sed_quote_subst'
15132 double_quote_subst='$double_quote_subst'
15133 delay_variable_subst='$delay_variable_subst'
15134 macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
15135 macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
15136 enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
15137 enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
15138 pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
15139 enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
15140 SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
15141 ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
15142 PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
15143 host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
15144 host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
15145 host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
15146 build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
15147 build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
15148 build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
15149 SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
15150 Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
15151 GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
15152 EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
15153 FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
15154 LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
15155 NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
15156 LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
15157 max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
15158 ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
15159 exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
15160 lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
15161 lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
15162 lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
15163 lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
15164 lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
15165 reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
15166 reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
15167 OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
15168 deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
15169 file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
15170 file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
15171 want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
15172 DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
15173 sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
15174 AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
15175 AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
15176 archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
15177 STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
15178 RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
15179 old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
15180 old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
15181 old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
15182 lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
15183 CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
15184 CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
15185 compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
15186 GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
15187 lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
15188 lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
15189 lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
15190 lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
15191 nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
15192 lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
15193 objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
15194 MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
15195 lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
15196 lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
15197 lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
15198 lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
15199 lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
15200 need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
15201 MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
15202 DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
15203 NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
15204 LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
15205 OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
15206 OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
15207 libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
15208 shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
15209 extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
15210 archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
15211 enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
15212 export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
15213 whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
15214 compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
15215 old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
15216 old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
15217 archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
15218 archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
15219 module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
15220 module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
15221 with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
15222 allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
15223 no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
15224 hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
15225 hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
15226 hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
15227 hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
15228 hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
15229 hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
15230 hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
15231 inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
15232 link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
15233 always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
15234 export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
15235 exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
15236 include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
15237 prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
15238 postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
15239 file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
15240 variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
15241 need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
15242 need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
15243 version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
15244 runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
15245 shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
15246 shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
15247 libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
15248 library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
15249 soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
15250 install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
15251 postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
15252 postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
15253 finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
15254 finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
15255 hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
15256 sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
15257 sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
15258 hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
15259 enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
15260 enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
15261 enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
15262 old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
15263 striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
15264
15265 LTCC='$LTCC'
15266 LTCFLAGS='$LTCFLAGS'
15267 compiler='$compiler_DEFAULT'
15268
15269 # A function that is used when there is no print builtin or printf.
15270 func_fallback_echo ()
15271 {
15272 eval 'cat <<_LTECHO_EOF
15273 \$1
15274 _LTECHO_EOF'
15275 }
15276
15277 # Quote evaled strings.
15278 for var in SHELL \
15279 ECHO \
15280 PATH_SEPARATOR \
15281 SED \
15282 GREP \
15283 EGREP \
15284 FGREP \
15285 LD \
15286 NM \
15287 LN_S \
15288 lt_SP2NL \
15289 lt_NL2SP \
15290 reload_flag \
15291 OBJDUMP \
15292 deplibs_check_method \
15293 file_magic_cmd \
15294 file_magic_glob \
15295 want_nocaseglob \
15296 DLLTOOL \
15297 sharedlib_from_linklib_cmd \
15298 AR \
15299 AR_FLAGS \
15300 archiver_list_spec \
15301 STRIP \
15302 RANLIB \
15303 CC \
15304 CFLAGS \
15305 compiler \
15306 lt_cv_sys_global_symbol_pipe \
15307 lt_cv_sys_global_symbol_to_cdecl \
15308 lt_cv_sys_global_symbol_to_c_name_address \
15309 lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
15310 nm_file_list_spec \
15311 lt_prog_compiler_no_builtin_flag \
15312 lt_prog_compiler_pic \
15313 lt_prog_compiler_wl \
15314 lt_prog_compiler_static \
15315 lt_cv_prog_compiler_c_o \
15316 need_locks \
15317 MANIFEST_TOOL \
15318 DSYMUTIL \
15319 NMEDIT \
15320 LIPO \
15321 OTOOL \
15322 OTOOL64 \
15323 shrext_cmds \
15324 export_dynamic_flag_spec \
15325 whole_archive_flag_spec \
15326 compiler_needs_object \
15327 with_gnu_ld \
15328 allow_undefined_flag \
15329 no_undefined_flag \
15330 hardcode_libdir_flag_spec \
15331 hardcode_libdir_separator \
15332 exclude_expsyms \
15333 include_expsyms \
15334 file_list_spec \
15335 variables_saved_for_relink \
15336 libname_spec \
15337 library_names_spec \
15338 soname_spec \
15339 install_override_mode \
15340 finish_eval \
15341 old_striplib \
15342 striplib; do
15343 case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
15344 *[\\\\\\\`\\"\\\$]*)
15345 eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
15346 ;;
15347 *)
15348 eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
15349 ;;
15350 esac
15351 done
15352
15353 # Double-quote double-evaled strings.
15354 for var in reload_cmds \
15355 old_postinstall_cmds \
15356 old_postuninstall_cmds \
15357 old_archive_cmds \
15358 extract_expsyms_cmds \
15359 old_archive_from_new_cmds \
15360 old_archive_from_expsyms_cmds \
15361 archive_cmds \
15362 archive_expsym_cmds \
15363 module_cmds \
15364 module_expsym_cmds \
15365 export_symbols_cmds \
15366 prelink_cmds \
15367 postlink_cmds \
15368 postinstall_cmds \
15369 postuninstall_cmds \
15370 finish_cmds \
15371 sys_lib_search_path_spec \
15372 sys_lib_dlsearch_path_spec; do
15373 case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
15374 *[\\\\\\\`\\"\\\$]*)
15375 eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
15376 ;;
15377 *)
15378 eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
15379 ;;
15380 esac
15381 done
15382
15383 ac_aux_dir='$ac_aux_dir'
15384 xsi_shell='$xsi_shell'
15385 lt_shell_append='$lt_shell_append'
15386
15387 # See if we are running on zsh, and set the options which allow our
15388 # commands through without removal of \ escapes INIT.
15389 if test -n "\${ZSH_VERSION+set}" ; then
15390 setopt NO_GLOB_SUBST
15391 fi
15392
15393
15394 PACKAGE='$PACKAGE'
15395 VERSION='$VERSION'
15396 TIMESTAMP='$TIMESTAMP'
15397 RM='$RM'
15398 ofile='$ofile'
15399
15400 ac_aux_dir='$ac_aux_dir'
15401
15402
15403
15404 _ACEOF
15405
15406 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
15407
15408 # Handling of arguments.
15409 for ac_config_target in $ac_config_targets
15410 do
15411 case $ac_config_target in
15412 "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
15413 "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.hin" ;;
15414 "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
15415 "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
15416 "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
15417
15418 *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
15419 esac
15420 done
15421
15422
15423 # If the user did not use the arguments to specify the items to instantiate,
15424 # then the envvar interface is used. Set only those that are not.
15425 # We use the long form for the default assignment because of an extremely
15426 # bizarre bug on SunOS 4.1.3.
15427 if $ac_need_defaults; then
15428 test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
15429 test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
15430 test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
15431 fi
15432
15433 # Have a temporary directory for convenience. Make it in the build tree
15434 # simply because there is no reason against having it here, and in addition,
15435 # creating and moving files from /tmp can sometimes cause problems.
15436 # Hook for its removal unless debugging.
15437 # Note that there is a small window in which the directory will not be cleaned:
15438 # after its creation but before its name has been assigned to `$tmp'.
15439 $debug ||
15440 {
15441 tmp= ac_tmp=
15442 trap 'exit_status=$?
15443 : "${ac_tmp:=$tmp}"
15444 { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
15445 ' 0
15446 trap 'as_fn_exit 1' 1 2 13 15
15447 }
15448 # Create a (secure) tmp directory for tmp files.
15449
15450 {
15451 tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
15452 test -d "$tmp"
15453 } ||
15454 {
15455 tmp=./conf$$-$RANDOM
15456 (umask 077 && mkdir "$tmp")
15457 } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
15458 ac_tmp=$tmp
15459
15460 # Set up the scripts for CONFIG_FILES section.
15461 # No need to generate them if there are no CONFIG_FILES.
15462 # This happens for instance with `./config.status config.h'.
15463 if test -n "$CONFIG_FILES"; then
15464
15465
15466 ac_cr=`echo X | tr X '\015'`
15467 # On cygwin, bash can eat \r inside `` if the user requested igncr.
15468 # But we know of no other shell where ac_cr would be empty at this
15469 # point, so we can use a bashism as a fallback.
15470 if test "x$ac_cr" = x; then
15471 eval ac_cr=\$\'\\r\'
15472 fi
15473 ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
15474 if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
15475 ac_cs_awk_cr='\\r'
15476 else
15477 ac_cs_awk_cr=$ac_cr
15478 fi
15479
15480 echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
15481 _ACEOF
15482
15483
15484 {
15485 echo "cat >conf$$subs.awk <<_ACEOF" &&
15486 echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
15487 echo "_ACEOF"
15488 } >conf$$subs.sh ||
15489 as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
15490 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
15491 ac_delim='%!_!# '
15492 for ac_last_try in false false false false false :; do
15493 . ./conf$$subs.sh ||
15494 as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
15495
15496 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
15497 if test $ac_delim_n = $ac_delim_num; then
15498 break
15499 elif $ac_last_try; then
15500 as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
15501 else
15502 ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
15503 fi
15504 done
15505 rm -f conf$$subs.sh
15506
15507 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
15508 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
15509 _ACEOF
15510 sed -n '
15511 h
15512 s/^/S["/; s/!.*/"]=/
15513 p
15514 g
15515 s/^[^!]*!//
15516 :repl
15517 t repl
15518 s/'"$ac_delim"'$//
15519 t delim
15520 :nl
15521 h
15522 s/\(.\{148\}\)..*/\1/
15523 t more1
15524 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
15525 p
15526 n
15527 b repl
15528 :more1
15529 s/["\\]/\\&/g; s/^/"/; s/$/"\\/
15530 p
15531 g
15532 s/.\{148\}//
15533 t nl
15534 :delim
15535 h
15536 s/\(.\{148\}\)..*/\1/
15537 t more2
15538 s/["\\]/\\&/g; s/^/"/; s/$/"/
15539 p
15540 b
15541 :more2
15542 s/["\\]/\\&/g; s/^/"/; s/$/"\\/
15543 p
15544 g
15545 s/.\{148\}//
15546 t delim
15547 ' <conf$$subs.awk | sed '
15548 /^[^""]/{
15549 N
15550 s/\n//
15551 }
15552 ' >>$CONFIG_STATUS || ac_write_fail=1
15553 rm -f conf$$subs.awk
15554 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
15555 _ACAWK
15556 cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
15557 for (key in S) S_is_set[key] = 1
15558 FS = ""
15559
15560 }
15561 {
15562 line = $ 0
15563 nfields = split(line, field, "@")
15564 substed = 0
15565 len = length(field[1])
15566 for (i = 2; i < nfields; i++) {
15567 key = field[i]
15568 keylen = length(key)
15569 if (S_is_set[key]) {
15570 value = S[key]
15571 line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
15572 len += length(value) + length(field[++i])
15573 substed = 1
15574 } else
15575 len += 1 + keylen
15576 }
15577
15578 print line
15579 }
15580
15581 _ACAWK
15582 _ACEOF
15583 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
15584 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
15585 sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
15586 else
15587 cat
15588 fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
15589 || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
15590 _ACEOF
15591
15592 # VPATH may cause trouble with some makes, so we remove sole $(srcdir),
15593 # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
15594 # trailing colons and then remove the whole line if VPATH becomes empty
15595 # (actually we leave an empty line to preserve line numbers).
15596 if test "x$srcdir" = x.; then
15597 ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{
15598 h
15599 s///
15600 s/^/:/
15601 s/[ ]*$/:/
15602 s/:\$(srcdir):/:/g
15603 s/:\${srcdir}:/:/g
15604 s/:@srcdir@:/:/g
15605 s/^:*//
15606 s/:*$//
15607 x
15608 s/\(=[ ]*\).*/\1/
15609 G
15610 s/\n//
15611 s/^[^=]*=[ ]*$//
15612 }'
15613 fi
15614
15615 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
15616 fi # test -n "$CONFIG_FILES"
15617
15618 # Set up the scripts for CONFIG_HEADERS section.
15619 # No need to generate them if there are no CONFIG_HEADERS.
15620 # This happens for instance with `./config.status Makefile'.
15621 if test -n "$CONFIG_HEADERS"; then
15622 cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
15623 BEGIN {
15624 _ACEOF
15625
15626 # Transform confdefs.h into an awk script `defines.awk', embedded as
15627 # here-document in config.status, that substitutes the proper values into
15628 # config.h.in to produce config.h.
15629
15630 # Create a delimiter string that does not exist in confdefs.h, to ease
15631 # handling of long lines.
15632 ac_delim='%!_!# '
15633 for ac_last_try in false false :; do
15634 ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
15635 if test -z "$ac_tt"; then
15636 break
15637 elif $ac_last_try; then
15638 as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
15639 else
15640 ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
15641 fi
15642 done
15643
15644 # For the awk script, D is an array of macro values keyed by name,
15645 # likewise P contains macro parameters if any. Preserve backslash
15646 # newline sequences.
15647
15648 ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
15649 sed -n '
15650 s/.\{148\}/&'"$ac_delim"'/g
15651 t rset
15652 :rset
15653 s/^[ ]*#[ ]*define[ ][ ]*/ /
15654 t def
15655 d
15656 :def
15657 s/\\$//
15658 t bsnl
15659 s/["\\]/\\&/g
15660 s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
15661 D["\1"]=" \3"/p
15662 s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p
15663 d
15664 :bsnl
15665 s/["\\]/\\&/g
15666 s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
15667 D["\1"]=" \3\\\\\\n"\\/p
15668 t cont
15669 s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
15670 t cont
15671 d
15672 :cont
15673 n
15674 s/.\{148\}/&'"$ac_delim"'/g
15675 t clear
15676 :clear
15677 s/\\$//
15678 t bsnlc
15679 s/["\\]/\\&/g; s/^/"/; s/$/"/p
15680 d
15681 :bsnlc
15682 s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
15683 b cont
15684 ' <confdefs.h | sed '
15685 s/'"$ac_delim"'/"\\\
15686 "/g' >>$CONFIG_STATUS || ac_write_fail=1
15687
15688 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
15689 for (key in D) D_is_set[key] = 1
15690 FS = ""
15691 }
15692 /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
15693 line = \$ 0
15694 split(line, arg, " ")
15695 if (arg[1] == "#") {
15696 defundef = arg[2]
15697 mac1 = arg[3]
15698 } else {
15699 defundef = substr(arg[1], 2)
15700 mac1 = arg[2]
15701 }
15702 split(mac1, mac2, "(") #)
15703 macro = mac2[1]
15704 prefix = substr(line, 1, index(line, defundef) - 1)
15705 if (D_is_set[macro]) {
15706 # Preserve the white space surrounding the "#".
15707 print prefix "define", macro P[macro] D[macro]
15708 next
15709 } else {
15710 # Replace #undef with comments. This is necessary, for example,
15711 # in the case of _POSIX_SOURCE, which is predefined and required
15712 # on some systems where configure will not decide to define it.
15713 if (defundef == "undef") {
15714 print "/*", prefix defundef, macro, "*/"
15715 next
15716 }
15717 }
15718 }
15719 { print }
15720 _ACAWK
15721 _ACEOF
15722 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
15723 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
15724 fi # test -n "$CONFIG_HEADERS"
15725
15726
15727 eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS"
15728 shift
15729 for ac_tag
15730 do
15731 case $ac_tag in
15732 :[FHLC]) ac_mode=$ac_tag; continue;;
15733 esac
15734 case $ac_mode$ac_tag in
15735 :[FHL]*:*);;
15736 :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
15737 :[FH]-) ac_tag=-:-;;
15738 :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
15739 esac
15740 ac_save_IFS=$IFS
15741 IFS=:
15742 set x $ac_tag
15743 IFS=$ac_save_IFS
15744 shift
15745 ac_file=$1
15746 shift
15747
15748 case $ac_mode in
15749 :L) ac_source=$1;;
15750 :[FH])
15751 ac_file_inputs=
15752 for ac_f
15753 do
15754 case $ac_f in
15755 -) ac_f="$ac_tmp/stdin";;
15756 *) # Look for the file first in the build tree, then in the source tree
15757 # (if the path is not absolute). The absolute path cannot be DOS-style,
15758 # because $ac_f cannot contain `:'.
15759 test -f "$ac_f" ||
15760 case $ac_f in
15761 [\\/$]*) false;;
15762 *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
15763 esac ||
15764 as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
15765 esac
15766 case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
15767 as_fn_append ac_file_inputs " '$ac_f'"
15768 done
15769
15770 # Let's still pretend it is `configure' which instantiates (i.e., don't
15771 # use $as_me), people would be surprised to read:
15772 # /* config.h. Generated by config.status. */
15773 configure_input='Generated from '`
15774 $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
15775 `' by configure.'
15776 if test x"$ac_file" != x-; then
15777 configure_input="$ac_file. $configure_input"
15778 { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
15779 $as_echo "$as_me: creating $ac_file" >&6;}
15780 fi
15781 # Neutralize special characters interpreted by sed in replacement strings.
15782 case $configure_input in #(
15783 *\&* | *\|* | *\\* )
15784 ac_sed_conf_input=`$as_echo "$configure_input" |
15785 sed 's/[\\\\&|]/\\\\&/g'`;; #(
15786 *) ac_sed_conf_input=$configure_input;;
15787 esac
15788
15789 case $ac_tag in
15790 *:-:* | *:-) cat >"$ac_tmp/stdin" \
15791 || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
15792 esac
15793 ;;
15794 esac
15795
15796 ac_dir=`$as_dirname -- "$ac_file" ||
15797 $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
15798 X"$ac_file" : 'X\(//\)[^/]' \| \
15799 X"$ac_file" : 'X\(//\)$' \| \
15800 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
15801 $as_echo X"$ac_file" |
15802 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
15803 s//\1/
15804 q
15805 }
15806 /^X\(\/\/\)[^/].*/{
15807 s//\1/
15808 q
15809 }
15810 /^X\(\/\/\)$/{
15811 s//\1/
15812 q
15813 }
15814 /^X\(\/\).*/{
15815 s//\1/
15816 q
15817 }
15818 s/.*/./; q'`
15819 as_dir="$ac_dir"; as_fn_mkdir_p
15820 ac_builddir=.
15821
15822 case "$ac_dir" in
15823 .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
15824 *)
15825 ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
15826 # A ".." for each directory in $ac_dir_suffix.
15827 ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
15828 case $ac_top_builddir_sub in
15829 "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
15830 *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
15831 esac ;;
15832 esac
15833 ac_abs_top_builddir=$ac_pwd
15834 ac_abs_builddir=$ac_pwd$ac_dir_suffix
15835 # for backward compatibility:
15836 ac_top_builddir=$ac_top_build_prefix
15837
15838 case $srcdir in
15839 .) # We are building in place.
15840 ac_srcdir=.
15841 ac_top_srcdir=$ac_top_builddir_sub
15842 ac_abs_top_srcdir=$ac_pwd ;;
15843 [\\/]* | ?:[\\/]* ) # Absolute name.
15844 ac_srcdir=$srcdir$ac_dir_suffix;
15845 ac_top_srcdir=$srcdir
15846 ac_abs_top_srcdir=$srcdir ;;
15847 *) # Relative name.
15848 ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
15849 ac_top_srcdir=$ac_top_build_prefix$srcdir
15850 ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
15851 esac
15852 ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
15853
15854
15855 case $ac_mode in
15856 :F)
15857 #
15858 # CONFIG_FILE
15859 #
15860
15861 case $INSTALL in
15862 [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
15863 *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
15864 esac
15865 ac_MKDIR_P=$MKDIR_P
15866 case $MKDIR_P in
15867 [\\/$]* | ?:[\\/]* ) ;;
15868 */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
15869 esac
15870 _ACEOF
15871
15872 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
15873 # If the template does not know about datarootdir, expand it.
15874 # FIXME: This hack should be removed a few years after 2.60.
15875 ac_datarootdir_hack=; ac_datarootdir_seen=
15876 ac_sed_dataroot='
15877 /datarootdir/ {
15878 p
15879 q
15880 }
15881 /@datadir@/p
15882 /@docdir@/p
15883 /@infodir@/p
15884 /@localedir@/p
15885 /@mandir@/p'
15886 case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
15887 *datarootdir*) ac_datarootdir_seen=yes;;
15888 *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
15889 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
15890 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
15891 _ACEOF
15892 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
15893 ac_datarootdir_hack='
15894 s&@datadir@&$datadir&g
15895 s&@docdir@&$docdir&g
15896 s&@infodir@&$infodir&g
15897 s&@localedir@&$localedir&g
15898 s&@mandir@&$mandir&g
15899 s&\\\${datarootdir}&$datarootdir&g' ;;
15900 esac
15901 _ACEOF
15902
15903 # Neutralize VPATH when `$srcdir' = `.'.
15904 # Shell code in configure.ac might set extrasub.
15905 # FIXME: do we really want to maintain this feature?
15906 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
15907 ac_sed_extra="$ac_vpsub
15908 $extrasub
15909 _ACEOF
15910 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
15911 :t
15912 /@[a-zA-Z_][a-zA-Z_0-9]*@/!b
15913 s|@configure_input@|$ac_sed_conf_input|;t t
15914 s&@top_builddir@&$ac_top_builddir_sub&;t t
15915 s&@top_build_prefix@&$ac_top_build_prefix&;t t
15916 s&@srcdir@&$ac_srcdir&;t t
15917 s&@abs_srcdir@&$ac_abs_srcdir&;t t
15918 s&@top_srcdir@&$ac_top_srcdir&;t t
15919 s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
15920 s&@builddir@&$ac_builddir&;t t
15921 s&@abs_builddir@&$ac_abs_builddir&;t t
15922 s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
15923 s&@INSTALL@&$ac_INSTALL&;t t
15924 s&@MKDIR_P@&$ac_MKDIR_P&;t t
15925 $ac_datarootdir_hack
15926 "
15927 eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
15928 >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
15929
15930 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
15931 { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
15932 { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
15933 "$ac_tmp/out"`; test -z "$ac_out"; } &&
15934 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
15935 which seems to be undefined. Please make sure it is defined" >&5
15936 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
15937 which seems to be undefined. Please make sure it is defined" >&2;}
15938
15939 rm -f "$ac_tmp/stdin"
15940 case $ac_file in
15941 -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
15942 *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
15943 esac \
15944 || as_fn_error $? "could not create $ac_file" "$LINENO" 5
15945 ;;
15946 :H)
15947 #
15948 # CONFIG_HEADER
15949 #
15950 if test x"$ac_file" != x-; then
15951 {
15952 $as_echo "/* $configure_input */" \
15953 && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
15954 } >"$ac_tmp/config.h" \
15955 || as_fn_error $? "could not create $ac_file" "$LINENO" 5
15956 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
15957 { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
15958 $as_echo "$as_me: $ac_file is unchanged" >&6;}
15959 else
15960 rm -f "$ac_file"
15961 mv "$ac_tmp/config.h" "$ac_file" \
15962 || as_fn_error $? "could not create $ac_file" "$LINENO" 5
15963 fi
15964 else
15965 $as_echo "/* $configure_input */" \
15966 && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
15967 || as_fn_error $? "could not create -" "$LINENO" 5
15968 fi
15969 # Compute "$ac_file"'s index in $config_headers.
15970 _am_arg="$ac_file"
15971 _am_stamp_count=1
15972 for _am_header in $config_headers :; do
15973 case $_am_header in
15974 $_am_arg | $_am_arg:* )
15975 break ;;
15976 * )
15977 _am_stamp_count=`expr $_am_stamp_count + 1` ;;
15978 esac
15979 done
15980 echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
15981 $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
15982 X"$_am_arg" : 'X\(//\)[^/]' \| \
15983 X"$_am_arg" : 'X\(//\)$' \| \
15984 X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
15985 $as_echo X"$_am_arg" |
15986 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
15987 s//\1/
15988 q
15989 }
15990 /^X\(\/\/\)[^/].*/{
15991 s//\1/
15992 q
15993 }
15994 /^X\(\/\/\)$/{
15995 s//\1/
15996 q
15997 }
15998 /^X\(\/\).*/{
15999 s//\1/
16000 q
16001 }
16002 s/.*/./; q'`/stamp-h$_am_stamp_count
16003 ;;
16004
16005 :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
16006 $as_echo "$as_me: executing $ac_file commands" >&6;}
16007 ;;
16008 esac
16009
16010
16011 case $ac_file$ac_mode in
16012 "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
16013 # Older Autoconf quotes --file arguments for eval, but not when files
16014 # are listed without --file. Let's play safe and only enable the eval
16015 # if we detect the quoting.
16016 case $CONFIG_FILES in
16017 *\'*) eval set x "$CONFIG_FILES" ;;
16018 *) set x $CONFIG_FILES ;;
16019 esac
16020 shift
16021 for mf
16022 do
16023 # Strip MF so we end up with the name of the file.
16024 mf=`echo "$mf" | sed -e 's/:.*$//'`
16025 # Check whether this is an Automake generated Makefile or not.
16026 # We used to match only the files named 'Makefile.in', but
16027 # some people rename them; so instead we look at the file content.
16028 # Grep'ing the first line is not enough: some people post-process
16029 # each Makefile.in and add a new line on top of each file to say so.
16030 # Grep'ing the whole file is not good either: AIX grep has a line
16031 # limit of 2048, but all sed's we know have understand at least 4000.
16032 if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
16033 dirpart=`$as_dirname -- "$mf" ||
16034 $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
16035 X"$mf" : 'X\(//\)[^/]' \| \
16036 X"$mf" : 'X\(//\)$' \| \
16037 X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
16038 $as_echo X"$mf" |
16039 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
16040 s//\1/
16041 q
16042 }
16043 /^X\(\/\/\)[^/].*/{
16044 s//\1/
16045 q
16046 }
16047 /^X\(\/\/\)$/{
16048 s//\1/
16049 q
16050 }
16051 /^X\(\/\).*/{
16052 s//\1/
16053 q
16054 }
16055 s/.*/./; q'`
16056 else
16057 continue
16058 fi
16059 # Extract the definition of DEPDIR, am__include, and am__quote
16060 # from the Makefile without running 'make'.
16061 DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
16062 test -z "$DEPDIR" && continue
16063 am__include=`sed -n 's/^am__include = //p' < "$mf"`
16064 test -z "am__include" && continue
16065 am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
16066 # Find all dependency output files, they are included files with
16067 # $(DEPDIR) in their names. We invoke sed twice because it is the
16068 # simplest approach to changing $(DEPDIR) to its actual value in the
16069 # expansion.
16070 for file in `sed -n "
16071 s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
16072 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
16073 # Make sure the directory exists.
16074 test -f "$dirpart/$file" && continue
16075 fdir=`$as_dirname -- "$file" ||
16076 $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
16077 X"$file" : 'X\(//\)[^/]' \| \
16078 X"$file" : 'X\(//\)$' \| \
16079 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
16080 $as_echo X"$file" |
16081 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
16082 s//\1/
16083 q
16084 }
16085 /^X\(\/\/\)[^/].*/{
16086 s//\1/
16087 q
16088 }
16089 /^X\(\/\/\)$/{
16090 s//\1/
16091 q
16092 }
16093 /^X\(\/\).*/{
16094 s//\1/
16095 q
16096 }
16097 s/.*/./; q'`
16098 as_dir=$dirpart/$fdir; as_fn_mkdir_p
16099 # echo "creating $dirpart/$file"
16100 echo '# dummy' > "$dirpart/$file"
16101 done
16102 done
16103 }
16104 ;;
16105 "libtool":C)
16106
16107 # See if we are running on zsh, and set the options which allow our
16108 # commands through without removal of \ escapes.
16109 if test -n "${ZSH_VERSION+set}" ; then
16110 setopt NO_GLOB_SUBST
16111 fi
16112
16113 cfgfile="${ofile}T"
16114 trap "$RM \"$cfgfile\"; exit 1" 1 2 15
16115 $RM "$cfgfile"
16116
16117 cat <<_LT_EOF >> "$cfgfile"
16118 #! $SHELL
16119
16120 # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
16121 # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
16122 # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
16123 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
16124 #
16125 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
16126 # 2006, 2007, 2008, 2009, 2010, 2011 Free Software
16127 # Foundation, Inc.
16128 # Written by Gordon Matzigkeit, 1996
16129 #
16130 # This file is part of GNU Libtool.
16131 #
16132 # GNU Libtool is free software; you can redistribute it and/or
16133 # modify it under the terms of the GNU General Public License as
16134 # published by the Free Software Foundation; either version 2 of
16135 # the License, or (at your option) any later version.
16136 #
16137 # As a special exception to the GNU General Public License,
16138 # if you distribute this file as part of a program or library that
16139 # is built using GNU Libtool, you may include this file under the
16140 # same distribution terms that you use for the rest of that program.
16141 #
16142 # GNU Libtool is distributed in the hope that it will be useful,
16143 # but WITHOUT ANY WARRANTY; without even the implied warranty of
16144 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16145 # GNU General Public License for more details.
16146 #
16147 # You should have received a copy of the GNU General Public License
16148 # along with GNU Libtool; see the file COPYING. If not, a copy
16149 # can be downloaded from http://www.gnu.org/licenses/gpl.html, or
16150 # obtained by writing to the Free Software Foundation, Inc.,
16151 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16152
16153
16154 # The names of the tagged configurations supported by this script.
16155 available_tags=""
16156
16157 # ### BEGIN LIBTOOL CONFIG
16158
16159 # Which release of libtool.m4 was used?
16160 macro_version=$macro_version
16161 macro_revision=$macro_revision
16162
16163 # Whether or not to build shared libraries.
16164 build_libtool_libs=$enable_shared
16165
16166 # Whether or not to build static libraries.
16167 build_old_libs=$enable_static
16168
16169 # What type of objects to build.
16170 pic_mode=$pic_mode
16171
16172 # Whether or not to optimize for fast installation.
16173 fast_install=$enable_fast_install
16174
16175 # Shell to use when invoking shell scripts.
16176 SHELL=$lt_SHELL
16177
16178 # An echo program that protects backslashes.
16179 ECHO=$lt_ECHO
16180
16181 # The PATH separator for the build system.
16182 PATH_SEPARATOR=$lt_PATH_SEPARATOR
16183
16184 # The host system.
16185 host_alias=$host_alias
16186 host=$host
16187 host_os=$host_os
16188
16189 # The build system.
16190 build_alias=$build_alias
16191 build=$build
16192 build_os=$build_os
16193
16194 # A sed program that does not truncate output.
16195 SED=$lt_SED
16196
16197 # Sed that helps us avoid accidentally triggering echo(1) options like -n.
16198 Xsed="\$SED -e 1s/^X//"
16199
16200 # A grep program that handles long lines.
16201 GREP=$lt_GREP
16202
16203 # An ERE matcher.
16204 EGREP=$lt_EGREP
16205
16206 # A literal string matcher.
16207 FGREP=$lt_FGREP
16208
16209 # A BSD- or MS-compatible name lister.
16210 NM=$lt_NM
16211
16212 # Whether we need soft or hard links.
16213 LN_S=$lt_LN_S
16214
16215 # What is the maximum length of a command?
16216 max_cmd_len=$max_cmd_len
16217
16218 # Object file suffix (normally "o").
16219 objext=$ac_objext
16220
16221 # Executable file suffix (normally "").
16222 exeext=$exeext
16223
16224 # whether the shell understands "unset".
16225 lt_unset=$lt_unset
16226
16227 # turn spaces into newlines.
16228 SP2NL=$lt_lt_SP2NL
16229
16230 # turn newlines into spaces.
16231 NL2SP=$lt_lt_NL2SP
16232
16233 # convert \$build file names to \$host format.
16234 to_host_file_cmd=$lt_cv_to_host_file_cmd
16235
16236 # convert \$build files to toolchain format.
16237 to_tool_file_cmd=$lt_cv_to_tool_file_cmd
16238
16239 # An object symbol dumper.
16240 OBJDUMP=$lt_OBJDUMP
16241
16242 # Method to check whether dependent libraries are shared objects.
16243 deplibs_check_method=$lt_deplibs_check_method
16244
16245 # Command to use when deplibs_check_method = "file_magic".
16246 file_magic_cmd=$lt_file_magic_cmd
16247
16248 # How to find potential files when deplibs_check_method = "file_magic".
16249 file_magic_glob=$lt_file_magic_glob
16250
16251 # Find potential files using nocaseglob when deplibs_check_method = "file_magic".
16252 want_nocaseglob=$lt_want_nocaseglob
16253
16254 # DLL creation program.
16255 DLLTOOL=$lt_DLLTOOL
16256
16257 # Command to associate shared and link libraries.
16258 sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
16259
16260 # The archiver.
16261 AR=$lt_AR
16262
16263 # Flags to create an archive.
16264 AR_FLAGS=$lt_AR_FLAGS
16265
16266 # How to feed a file listing to the archiver.
16267 archiver_list_spec=$lt_archiver_list_spec
16268
16269 # A symbol stripping program.
16270 STRIP=$lt_STRIP
16271
16272 # Commands used to install an old-style archive.
16273 RANLIB=$lt_RANLIB
16274 old_postinstall_cmds=$lt_old_postinstall_cmds
16275 old_postuninstall_cmds=$lt_old_postuninstall_cmds
16276
16277 # Whether to use a lock for old archive extraction.
16278 lock_old_archive_extraction=$lock_old_archive_extraction
16279
16280 # A C compiler.
16281 LTCC=$lt_CC
16282
16283 # LTCC compiler flags.
16284 LTCFLAGS=$lt_CFLAGS
16285
16286 # Take the output of nm and produce a listing of raw symbols and C names.
16287 global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
16288
16289 # Transform the output of nm in a proper C declaration.
16290 global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
16291
16292 # Transform the output of nm in a C name address pair.
16293 global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
16294
16295 # Transform the output of nm in a C name address pair when lib prefix is needed.
16296 global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
16297
16298 # Specify filename containing input files for \$NM.
16299 nm_file_list_spec=$lt_nm_file_list_spec
16300
16301 # The root where to search for dependent libraries,and in which our libraries should be installed.
16302 lt_sysroot=$lt_sysroot
16303
16304 # The name of the directory that contains temporary libtool files.
16305 objdir=$objdir
16306
16307 # Used to examine libraries when file_magic_cmd begins with "file".
16308 MAGIC_CMD=$MAGIC_CMD
16309
16310 # Must we lock files when doing compilation?
16311 need_locks=$lt_need_locks
16312
16313 # Manifest tool.
16314 MANIFEST_TOOL=$lt_MANIFEST_TOOL
16315
16316 # Tool to manipulate archived DWARF debug symbol files on Mac OS X.
16317 DSYMUTIL=$lt_DSYMUTIL
16318
16319 # Tool to change global to local symbols on Mac OS X.
16320 NMEDIT=$lt_NMEDIT
16321
16322 # Tool to manipulate fat objects and archives on Mac OS X.
16323 LIPO=$lt_LIPO
16324
16325 # ldd/readelf like tool for Mach-O binaries on Mac OS X.
16326 OTOOL=$lt_OTOOL
16327
16328 # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
16329 OTOOL64=$lt_OTOOL64
16330
16331 # Old archive suffix (normally "a").
16332 libext=$libext
16333
16334 # Shared library suffix (normally ".so").
16335 shrext_cmds=$lt_shrext_cmds
16336
16337 # The commands to extract the exported symbol list from a shared archive.
16338 extract_expsyms_cmds=$lt_extract_expsyms_cmds
16339
16340 # Variables whose values should be saved in libtool wrapper scripts and
16341 # restored at link time.
16342 variables_saved_for_relink=$lt_variables_saved_for_relink
16343
16344 # Do we need the "lib" prefix for modules?
16345 need_lib_prefix=$need_lib_prefix
16346
16347 # Do we need a version for libraries?
16348 need_version=$need_version
16349
16350 # Library versioning type.
16351 version_type=$version_type
16352
16353 # Shared library runtime path variable.
16354 runpath_var=$runpath_var
16355
16356 # Shared library path variable.
16357 shlibpath_var=$shlibpath_var
16358
16359 # Is shlibpath searched before the hard-coded library search path?
16360 shlibpath_overrides_runpath=$shlibpath_overrides_runpath
16361
16362 # Format of library name prefix.
16363 libname_spec=$lt_libname_spec
16364
16365 # List of archive names. First name is the real one, the rest are links.
16366 # The last name is the one that the linker finds with -lNAME
16367 library_names_spec=$lt_library_names_spec
16368
16369 # The coded name of the library, if different from the real name.
16370 soname_spec=$lt_soname_spec
16371
16372 # Permission mode override for installation of shared libraries.
16373 install_override_mode=$lt_install_override_mode
16374
16375 # Command to use after installation of a shared archive.
16376 postinstall_cmds=$lt_postinstall_cmds
16377
16378 # Command to use after uninstallation of a shared archive.
16379 postuninstall_cmds=$lt_postuninstall_cmds
16380
16381 # Commands used to finish a libtool library installation in a directory.
16382 finish_cmds=$lt_finish_cmds
16383
16384 # As "finish_cmds", except a single script fragment to be evaled but
16385 # not shown.
16386 finish_eval=$lt_finish_eval
16387
16388 # Whether we should hardcode library paths into libraries.
16389 hardcode_into_libs=$hardcode_into_libs
16390
16391 # Compile-time system search path for libraries.
16392 sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
16393
16394 # Run-time system search path for libraries.
16395 sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
16396
16397 # Whether dlopen is supported.
16398 dlopen_support=$enable_dlopen
16399
16400 # Whether dlopen of programs is supported.
16401 dlopen_self=$enable_dlopen_self
16402
16403 # Whether dlopen of statically linked programs is supported.
16404 dlopen_self_static=$enable_dlopen_self_static
16405
16406 # Commands to strip libraries.
16407 old_striplib=$lt_old_striplib
16408 striplib=$lt_striplib
16409
16410
16411 # The linker used to build libraries.
16412 LD=$lt_LD
16413
16414 # How to create reloadable object files.
16415 reload_flag=$lt_reload_flag
16416 reload_cmds=$lt_reload_cmds
16417
16418 # Commands used to build an old-style archive.
16419 old_archive_cmds=$lt_old_archive_cmds
16420
16421 # A language specific compiler.
16422 CC=$lt_compiler
16423
16424 # Is the compiler the GNU compiler?
16425 with_gcc=$GCC
16426
16427 # Compiler flag to turn off builtin functions.
16428 no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
16429
16430 # Additional compiler flags for building library objects.
16431 pic_flag=$lt_lt_prog_compiler_pic
16432
16433 # How to pass a linker flag through the compiler.
16434 wl=$lt_lt_prog_compiler_wl
16435
16436 # Compiler flag to prevent dynamic linking.
16437 link_static_flag=$lt_lt_prog_compiler_static
16438
16439 # Does compiler simultaneously support -c and -o options?
16440 compiler_c_o=$lt_lt_cv_prog_compiler_c_o
16441
16442 # Whether or not to add -lc for building shared libraries.
16443 build_libtool_need_lc=$archive_cmds_need_lc
16444
16445 # Whether or not to disallow shared libs when runtime libs are static.
16446 allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
16447
16448 # Compiler flag to allow reflexive dlopens.
16449 export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
16450
16451 # Compiler flag to generate shared objects directly from archives.
16452 whole_archive_flag_spec=$lt_whole_archive_flag_spec
16453
16454 # Whether the compiler copes with passing no objects directly.
16455 compiler_needs_object=$lt_compiler_needs_object
16456
16457 # Create an old-style archive from a shared archive.
16458 old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
16459
16460 # Create a temporary old-style archive to link instead of a shared archive.
16461 old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
16462
16463 # Commands used to build a shared archive.
16464 archive_cmds=$lt_archive_cmds
16465 archive_expsym_cmds=$lt_archive_expsym_cmds
16466
16467 # Commands used to build a loadable module if different from building
16468 # a shared archive.
16469 module_cmds=$lt_module_cmds
16470 module_expsym_cmds=$lt_module_expsym_cmds
16471
16472 # Whether we are building with GNU ld or not.
16473 with_gnu_ld=$lt_with_gnu_ld
16474
16475 # Flag that allows shared libraries with undefined symbols to be built.
16476 allow_undefined_flag=$lt_allow_undefined_flag
16477
16478 # Flag that enforces no undefined symbols.
16479 no_undefined_flag=$lt_no_undefined_flag
16480
16481 # Flag to hardcode \$libdir into a binary during linking.
16482 # This must work even if \$libdir does not exist
16483 hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
16484
16485 # Whether we need a single "-rpath" flag with a separated argument.
16486 hardcode_libdir_separator=$lt_hardcode_libdir_separator
16487
16488 # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
16489 # DIR into the resulting binary.
16490 hardcode_direct=$hardcode_direct
16491
16492 # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
16493 # DIR into the resulting binary and the resulting library dependency is
16494 # "absolute",i.e impossible to change by setting \${shlibpath_var} if the
16495 # library is relocated.
16496 hardcode_direct_absolute=$hardcode_direct_absolute
16497
16498 # Set to "yes" if using the -LDIR flag during linking hardcodes DIR
16499 # into the resulting binary.
16500 hardcode_minus_L=$hardcode_minus_L
16501
16502 # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
16503 # into the resulting binary.
16504 hardcode_shlibpath_var=$hardcode_shlibpath_var
16505
16506 # Set to "yes" if building a shared library automatically hardcodes DIR
16507 # into the library and all subsequent libraries and executables linked
16508 # against it.
16509 hardcode_automatic=$hardcode_automatic
16510
16511 # Set to yes if linker adds runtime paths of dependent libraries
16512 # to runtime path list.
16513 inherit_rpath=$inherit_rpath
16514
16515 # Whether libtool must link a program against all its dependency libraries.
16516 link_all_deplibs=$link_all_deplibs
16517
16518 # Set to "yes" if exported symbols are required.
16519 always_export_symbols=$always_export_symbols
16520
16521 # The commands to list exported symbols.
16522 export_symbols_cmds=$lt_export_symbols_cmds
16523
16524 # Symbols that should not be listed in the preloaded symbols.
16525 exclude_expsyms=$lt_exclude_expsyms
16526
16527 # Symbols that must always be exported.
16528 include_expsyms=$lt_include_expsyms
16529
16530 # Commands necessary for linking programs (against libraries) with templates.
16531 prelink_cmds=$lt_prelink_cmds
16532
16533 # Commands necessary for finishing linking programs.
16534 postlink_cmds=$lt_postlink_cmds
16535
16536 # Specify filename containing input files.
16537 file_list_spec=$lt_file_list_spec
16538
16539 # How to hardcode a shared library path into an executable.
16540 hardcode_action=$hardcode_action
16541
16542 # ### END LIBTOOL CONFIG
16543
16544 _LT_EOF
16545
16546 case $host_os in
16547 aix3*)
16548 cat <<\_LT_EOF >> "$cfgfile"
16549 # AIX sometimes has problems with the GCC collect2 program. For some
16550 # reason, if we set the COLLECT_NAMES environment variable, the problems
16551 # vanish in a puff of smoke.
16552 if test "X${COLLECT_NAMES+set}" != Xset; then
16553 COLLECT_NAMES=
16554 export COLLECT_NAMES
16555 fi
16556 _LT_EOF
16557 ;;
16558 esac
16559
16560
16561 ltmain="$ac_aux_dir/ltmain.sh"
16562
16563
16564 # We use sed instead of cat because bash on DJGPP gets confused if
16565 # if finds mixed CR/LF and LF-only lines. Since sed operates in
16566 # text mode, it properly converts lines to CR/LF. This bash problem
16567 # is reportedly fixed, but why not run on old versions too?
16568 sed '$q' "$ltmain" >> "$cfgfile" \
16569 || (rm -f "$cfgfile"; exit 1)
16570
16571 if test x"$xsi_shell" = xyes; then
16572 sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
16573 func_dirname ()\
16574 {\
16575 \ case ${1} in\
16576 \ */*) func_dirname_result="${1%/*}${2}" ;;\
16577 \ * ) func_dirname_result="${3}" ;;\
16578 \ esac\
16579 } # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
16580 && mv -f "$cfgfile.tmp" "$cfgfile" \
16581 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
16582 test 0 -eq $? || _lt_function_replace_fail=:
16583
16584
16585 sed -e '/^func_basename ()$/,/^} # func_basename /c\
16586 func_basename ()\
16587 {\
16588 \ func_basename_result="${1##*/}"\
16589 } # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
16590 && mv -f "$cfgfile.tmp" "$cfgfile" \
16591 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
16592 test 0 -eq $? || _lt_function_replace_fail=:
16593
16594
16595 sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
16596 func_dirname_and_basename ()\
16597 {\
16598 \ case ${1} in\
16599 \ */*) func_dirname_result="${1%/*}${2}" ;;\
16600 \ * ) func_dirname_result="${3}" ;;\
16601 \ esac\
16602 \ func_basename_result="${1##*/}"\
16603 } # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
16604 && mv -f "$cfgfile.tmp" "$cfgfile" \
16605 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
16606 test 0 -eq $? || _lt_function_replace_fail=:
16607
16608
16609 sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
16610 func_stripname ()\
16611 {\
16612 \ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
16613 \ # positional parameters, so assign one to ordinary parameter first.\
16614 \ func_stripname_result=${3}\
16615 \ func_stripname_result=${func_stripname_result#"${1}"}\
16616 \ func_stripname_result=${func_stripname_result%"${2}"}\
16617 } # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
16618 && mv -f "$cfgfile.tmp" "$cfgfile" \
16619 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
16620 test 0 -eq $? || _lt_function_replace_fail=:
16621
16622
16623 sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
16624 func_split_long_opt ()\
16625 {\
16626 \ func_split_long_opt_name=${1%%=*}\
16627 \ func_split_long_opt_arg=${1#*=}\
16628 } # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
16629 && mv -f "$cfgfile.tmp" "$cfgfile" \
16630 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
16631 test 0 -eq $? || _lt_function_replace_fail=:
16632
16633
16634 sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
16635 func_split_short_opt ()\
16636 {\
16637 \ func_split_short_opt_arg=${1#??}\
16638 \ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
16639 } # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
16640 && mv -f "$cfgfile.tmp" "$cfgfile" \
16641 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
16642 test 0 -eq $? || _lt_function_replace_fail=:
16643
16644
16645 sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
16646 func_lo2o ()\
16647 {\
16648 \ case ${1} in\
16649 \ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
16650 \ *) func_lo2o_result=${1} ;;\
16651 \ esac\
16652 } # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
16653 && mv -f "$cfgfile.tmp" "$cfgfile" \
16654 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
16655 test 0 -eq $? || _lt_function_replace_fail=:
16656
16657
16658 sed -e '/^func_xform ()$/,/^} # func_xform /c\
16659 func_xform ()\
16660 {\
16661 func_xform_result=${1%.*}.lo\
16662 } # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
16663 && mv -f "$cfgfile.tmp" "$cfgfile" \
16664 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
16665 test 0 -eq $? || _lt_function_replace_fail=:
16666
16667
16668 sed -e '/^func_arith ()$/,/^} # func_arith /c\
16669 func_arith ()\
16670 {\
16671 func_arith_result=$(( $* ))\
16672 } # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
16673 && mv -f "$cfgfile.tmp" "$cfgfile" \
16674 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
16675 test 0 -eq $? || _lt_function_replace_fail=:
16676
16677
16678 sed -e '/^func_len ()$/,/^} # func_len /c\
16679 func_len ()\
16680 {\
16681 func_len_result=${#1}\
16682 } # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
16683 && mv -f "$cfgfile.tmp" "$cfgfile" \
16684 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
16685 test 0 -eq $? || _lt_function_replace_fail=:
16686
16687 fi
16688
16689 if test x"$lt_shell_append" = xyes; then
16690 sed -e '/^func_append ()$/,/^} # func_append /c\
16691 func_append ()\
16692 {\
16693 eval "${1}+=\\${2}"\
16694 } # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
16695 && mv -f "$cfgfile.tmp" "$cfgfile" \
16696 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
16697 test 0 -eq $? || _lt_function_replace_fail=:
16698
16699
16700 sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
16701 func_append_quoted ()\
16702 {\
16703 \ func_quote_for_eval "${2}"\
16704 \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
16705 } # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
16706 && mv -f "$cfgfile.tmp" "$cfgfile" \
16707 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
16708 test 0 -eq $? || _lt_function_replace_fail=:
16709
16710
16711 # Save a `func_append' function call where possible by direct use of '+='
16712 sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
16713 && mv -f "$cfgfile.tmp" "$cfgfile" \
16714 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
16715 test 0 -eq $? || _lt_function_replace_fail=:
16716 else
16717 # Save a `func_append' function call even when '+=' is not available
16718 sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
16719 && mv -f "$cfgfile.tmp" "$cfgfile" \
16720 || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
16721 test 0 -eq $? || _lt_function_replace_fail=:
16722 fi
16723
16724 if test x"$_lt_function_replace_fail" = x":"; then
16725 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
16726 $as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
16727 fi
16728
16729
16730 mv -f "$cfgfile" "$ofile" ||
16731 (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
16732 chmod +x "$ofile"
16733
16734 ;;
16735
16736 esac
16737 done # for ac_tag
16738
16739
16740 as_fn_exit 0
16741 _ACEOF
16742 ac_clean_files=$ac_clean_files_save
16743
16744 test $ac_write_fail = 0 ||
16745 as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
16746
16747
16748 # configure is writing to config.log, and then calls config.status.
16749 # config.status does its own redirection, appending to config.log.
16750 # Unfortunately, on DOS this fails, as config.log is still kept open
16751 # by configure, so config.status won't be able to write to it; its
16752 # output is simply discarded. So we exec the FD to /dev/null,
16753 # effectively closing config.log, so it can be properly (re)opened and
16754 # appended to by config.status. When coming back to configure, we
16755 # need to make the FD available again.
16756 if test "$no_create" != yes; then
16757 ac_cs_success=:
16758 ac_config_status_args=
16759 test "$silent" = yes &&
16760 ac_config_status_args="$ac_config_status_args --quiet"
16761 exec 5>/dev/null
16762 $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
16763 exec 5>>config.log
16764 # Use ||, not &&, to avoid exiting from the if with $? = 1, which
16765 # would make configure fail if this is the last instruction.
16766 $ac_cs_success || as_fn_exit 1
16767 fi
16768 if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
16769 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
16770 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
16771 fi
16772
0 dnl Process this file with autoconf to produce a configure script.
1 dnl
2 dnl Copyright (C) 2009-2011 Peter Breitenlohner <tex-live@tug.org>
3 dnl
4 dnl This file is free software; the copyright holder
5 dnl gives unlimited permission to copy and/or distribute it,
6 dnl with or without modifications, as long as this notice is preserved.
7 dnl
8 m4_define([gd_version], [2.0.35])[]dnl using unmodified gd source tree
9 AC_INIT([gd for TeX Live], gd_version, [tex-k@tug.org])
10 AC_PREREQ([2.65])
11 AC_CONFIG_SRCDIR([gd-]gd_version[/gd.c])
12 AC_CONFIG_AUX_DIR([../../build-aux])
13 AC_CONFIG_MACRO_DIR([../../m4])
14
15 KPSE_BASIC([gd])
16
17 AC_PROG_CC
18 AC_PROG_RANLIB
19 AC_PROG_LN_S
20
21 AC_CONFIG_HEADERS([config.h:config.hin])
22
23 LT_PREREQ([2.2.6])
24 LT_INIT
25
26 # Checks for header files.
27 AC_HEADER_STDC
28 AC_CHECK_HEADERS([errno.h limits.h stddef.h stdlib.h string.h unistd.h])
29
30 # Checks for typedefs, structures, and compiler characteristics.
31 AC_C_CONST
32 AC_TYPE_SIZE_T
33 AC_STRUCT_TM
34
35 # Checks for library functions.
36 AC_SEARCH_LIBS([sin], [m], , [AC_ERROR([cannot find sin])])
37
38 KPSE_ZLIB_FLAGS
39 KPSE_LIBPNG_FLAGS
40 KPSE_FREETYPE2_FLAGS
41
42 AM_CONDITIONAL([build], [test "x$enable_build" != xno])
43
44 if test "x$enable_build" != xno || test -f config.force; then
45
46 KPSE_ADD_FLAGS([zlib])
47 AC_CHECK_FUNC([deflate], , [AC_ERROR([zlib not found])])
48 AC_CHECK_HEADERS([zlib.h], , [AC_ERROR([zlib not found])])
49
50 KPSE_ADD_FLAGS([libpng])
51 AC_CHECK_FUNC([png_create_read_struct], , [AC_ERROR([libpng not found])])
52 AC_CHECK_HEADERS([png.h], , [AC_ERROR([libpng not found])])
53
54 KPSE_ADD_FLAGS([freetype2])
55 AC_CHECK_FUNC([FT_Init_FreeType], , [AC_ERROR([libfreetype2 not found])])
56 AC_CHECK_HEADERS([ft2build.h], , [AC_ERROR([libfreetype2 not found])])
57
58 KPSE_RESTORE_FLAGS
59
60 echo timestamp >config.force
61 fi
62
63 AC_DEFINE([HAVE_LIBZ], 1, [Define if you have zlib.])
64 AC_DEFINE([HAVE_ZLIB_H], 1)
65 AC_DEFINE([HAVE_LIBPNG], 1, [Define if you have the png library.])
66 AC_DEFINE([HAVE_PNG_H], 1)
67 AC_DEFINE([HAVE_LIBFREETYPE], 1, [ Define if you have the freetype library.])
68 AC_DEFINE([HAVE_FT2BUILD_H], 1)
69
70 AC_SUBST([GD_TREE], [gd-]gd_version)
71
72 AC_CONFIG_FILES([Makefile include/Makefile])
73
74 AC_OUTPUT
0 CMAKE_MINIMUM_REQUIRED(VERSION 2.4.3 FATAL_ERROR)
1 PROJECT(GD)
2
3 SET(CMAKE_MODULE_PATH "${GD_SOURCE_DIR}/cmake/modules")
4
5 if (BUILD_TEST)
6 ENABLE_TESTING()
7 endif(BUILD_TEST)
8
9 if (USE_EXT_GD)
10 message("Using GD at: ${USE_EXT_GD}")
11 INCLUDE_DIRECTORIES(BEFORE ${GD_INCLUDE_DIR} ${GD_BINARY_DIR})
12 FIND_PACKAGE(GD)
13 if (GD_FOUND)
14 INCLUDE_DIRECTORIES(BEFORE ${GD_INCLUDE_DIR})
15 LINK_DIRECTORIES(BEFORE ${GD_LIBRARIES})
16 SET(GD_LIB ${GD_LIBRARIES})
17 SET(GD_LIBS_DIR ${GD_LIBRARY})
18
19 message("GD libs #: ${GD_LIBRARIES}")
20 message("GD lib #: ${GD_LIBRARY}")
21 message("GD include: ${GD_INCLUDE_DIR}")
22 else (GD_FOUND)
23 message("No gd found")
24 endif (GD_FOUND)
25 else (USE_EXT_GD)
26 SET(GD_VERSION_MAJOR "2")
27 SET(GD_VERSION_MINOR "0x0")
28 SET(GD_VERSION_PATCH "35")
29 SET(GD_VERSION "${GD_VERSION_MAJOR}.${GD_VERSION_MINOR}.${GD_VERSION_PATCH}")
30 SET(GD_VERSION_STRING "${GD_VERSION}")
31
32 SET(GD_VERSION_INT "2000035")
33
34 SET(PACKAGE GD)
35 SET(PACKAGE_NAME GD)
36
37 SET(CMAKE_REQUIRED_INCLUDES "/usr/include" "/usr/local/include")
38
39 message(STATUS "ft2build: ${CMAKE_REQUIRED_INCLUDES}")
40
41 include(CheckIncludeFiles)
42 include(CheckIncludeFile)
43
44 include(AC_HEADER_STDC)
45 include(CheckPrototypeExists)
46 SET(FONTCONFIG_FIND_QUIETLY, 1)
47
48 FIND_PACKAGE(PNG REQUIRED)
49 FIND_PACKAGE(ZLIB)
50 FIND_PACKAGE(JPEG)
51 IF (NOT WIN32)
52 FIND_PACKAGE(PTHREAD)
53 ENDIF (NOT WIN32)
54 FIND_PACKAGE(Freetype)
55 FIND_PACKAGE(XPM)
56 FIND_PACKAGE(Fontconfig)
57
58 if (FREETYPE_FOUND)
59 INCLUDE_DIRECTORIES(${FREETYPE_INCLUDE_DIR})
60 SET(HAVE_FT2BUILD_H 1)
61 SET(HAVE_LIBFREETYPE 1)
62 ENDIF(FREETYPE_FOUND)
63
64 IF(ZLIB_FOUND)
65 INCLUDE_DIRECTORIES(${PNG_INCLUDE_DIR})
66 SET(HAVE_LIBZ 1)
67 SET(HAVE_LIBPNG_PNG_H 1)
68 ENDIF(ZLIB_FOUND)
69
70 IF(PNG_FOUND)
71 INCLUDE_DIRECTORIES(${PNG_INCLUDE_DIR})
72 SET(HAVE_LIBPNG 1)
73 ENDIF(PNG_FOUND)
74
75 IF(XPM_FOUND)
76 INCLUDE_DIRECTORIES(${XPM_INCLUDE_DIR})
77 SET(HAVE_LIBXPM 1)
78 ENDIF(XPM_FOUND)
79
80 IF(JPEG_FOUND)
81 INCLUDE_DIRECTORIES(${PNG_INCLUDE_DIR})
82 SET(HAVE_LIBJPEG 1)
83 ENDIF(JPEG_FOUND)
84
85 IF(FONTCONFIG_FOUND)
86 INCLUDE_DIRECTORIES(${FONTCONFIG_INCLUDE_DIR})
87 SET(HAVE_LIBFONTCONFIG 1)
88 ELSE (FONTCONFIG_FOUND)
89 SET(FONTCONFIG_LIBRARIES "")
90 ENDIF(FONTCONFIG_FOUND)
91
92 SET(HAVE_CONFIG_H 1)
93
94 ADD_DEFINITIONS(-DHAVE_CONFIG_H)
95
96
97 INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}/ ${GD_SOURCE_DIR})
98
99 CONFIGURE_FILE(${GD_SOURCE_DIR}/config.h.cmake ${CMAKE_BINARY_DIR}/config.h ESCAPE_QUOTES)
100
101 SET (LIBGD_SRC_FILES
102 gd.c
103 gdfx.c
104 gd_security.c
105 gd_gd.c
106 gd_gd2.c
107 gd_io.c
108 gd_io_dp.c
109 gd_gif_in.c
110 gd_gif_out.c
111 gd_io_file.c
112 gd_io_ss.c
113 gd_jpeg.c
114 gd_png.c
115 gd_ss.c
116 gd_topal.c
117 gd_wbmp.c
118 gdcache.c
119 gdfontg.c
120 gdfontl.c
121 gdfontmb.c
122 gdfonts.c
123 gdfontt.c
124 gdft.c
125 gdhelpers.c
126 gdhelpers.h
127 gdkanji.c
128 gdtables.c
129 gdxpm.c
130 jisx0208.h
131 wbmp.c
132 wbmp.h
133 )
134
135 set(BUILD_SHARED_LIBS On)
136
137 if (WIN32)
138 SET(GD_LIB bgd)
139 ADD_DEFINITIONS( -DWIN32 -D_WIN32 -DMSWIN32 -DBGDWIN32)
140 else(WIN32)
141 SET(GD_LIB gd)
142 endif(WIN32)
143
144 add_library(${GD_LIB} ${LIBGD_SRC_FILES})
145
146 if (WIN32)
147 SET_TARGET_PROPERTIES(${GD_LIB} PROPERTIES LINK_FLAGS "/NODEFAULTLIB:msvcrt.lib")
148 ENDIF(WIN32)
149
150 target_link_libraries(${GD_LIB} ${FREETYPE_LIBRARIES} ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${XPM_LIBRARIES} ${FONTCONFIG_LIBRARIES})
151
152 endif (USE_EXT_GD)
153
154 add_subdirectory(tests)
0
1 Portions copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
2 2002 by Cold Spring Harbor Laboratory. Funded under Grant
3 P41-RR02188 by the National Institutes of Health.
4
5 Portions copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 by
6 Boutell.Com, Inc.
7
8 Portions relating to GD2 format copyright 1999, 2000, 2001, 2002
9 Philip Warner.
10
11 Portions relating to PNG copyright 1999, 2000, 2001, 2002 Greg
12 Roelofs.
13
14 Portions relating to gdttf.c copyright 1999, 2000, 2001, 2002 John
15 Ellson (ellson@lucent.com).
16
17 Portions relating to gdft.c copyright 2001, 2002 John Ellson
18 (ellson@lucent.com).
19
20 Portions copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
21 Pierre-Alain Joye (pierre@libgd.org).
22
23 Portions relating to JPEG and to color quantization copyright 2000,
24 2001, 2002, Doug Becker and copyright (C) 1994, 1995, 1996, 1997,
25 1998, 1999, 2000, 2001, 2002, Thomas G. Lane. This software is
26 based in part on the work of the Independent JPEG Group. See the
27 file README-JPEG.TXT for more information.
28
29 Portions relating to WBMP copyright 2000, 2001, 2002 Maurice
30 Szmurlo and Johan Van den Brande.
31
32 Permission has been granted to copy, distribute and modify gd in
33 any context without fee, including a commercial application,
34 provided that this notice is present in user-accessible supporting
35 documentation.
36
37 This does not affect your ownership of the derived work itself, and
38 the intent is to assure proper credit for the authors of gd, not to
39 interfere with your productive use of gd. If you have questions,
40 ask. "Derived works" includes all programs that utilize the
41 library. Credit must be given in user-accessible documentation.
42
43 This software is provided "AS IS." The copyright holders disclaim
44 all warranties, either express or implied, including but not
45 limited to implied warranties of merchantability and fitness for a
46 particular purpose, with respect to this code and accompanying
47 documentation.
48
49 Although their code does not appear in gd, the authors wish to thank
50 David Koblas, David Rowley, and Hutchison Avenue Software Corporation
51 for their prior contributions.
52
0 Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
1 Foundation, Inc.
2
3 This file is free documentation; the Free Software Foundation gives
4 unlimited permission to copy, distribute and modify it.
5
6 Basic Installation
7 ==================
8
9 These are generic installation instructions.
10
11 The `configure' shell script attempts to guess correct values for
12 various system-dependent variables used during compilation. It uses
13 those values to create a `Makefile' in each directory of the package.
14 It may also create one or more `.h' files containing system-dependent
15 definitions. Finally, it creates a shell script `config.status' that
16 you can run in the future to recreate the current configuration, and a
17 file `config.log' containing compiler output (useful mainly for
18 debugging `configure').
19
20 It can also use an optional file (typically called `config.cache'
21 and enabled with `--cache-file=config.cache' or simply `-C') that saves
22 the results of its tests to speed up reconfiguring. (Caching is
23 disabled by default to prevent problems with accidental use of stale
24 cache files.)
25
26 If you need to do unusual things to compile the package, please try
27 to figure out how `configure' could check whether to do them, and mail
28 diffs or instructions to the address given in the `README' so they can
29 be considered for the next release. If you are using the cache, and at
30 some point `config.cache' contains results you don't want to keep, you
31 may remove or edit it.
32
33 The file `configure.ac' (or `configure.in') is used to create
34 `configure' by a program called `autoconf'. You only need
35 `configure.ac' if you want to change it or regenerate `configure' using
36 a newer version of `autoconf'.
37
38 The simplest way to compile this package is:
39
40 1. `cd' to the directory containing the package's source code and type
41 `./configure' to configure the package for your system. If you're
42 using `csh' on an old version of System V, you might need to type
43 `sh ./configure' instead to prevent `csh' from trying to execute
44 `configure' itself.
45
46 Running `configure' takes awhile. While running, it prints some
47 messages telling which features it is checking for.
48
49 2. Type `make' to compile the package.
50
51 3. Optionally, type `make check' to run any self-tests that come with
52 the package.
53
54 4. Type `make install' to install the programs and any data files and
55 documentation.
56
57 5. You can remove the program binaries and object files from the
58 source code directory by typing `make clean'. To also remove the
59 files that `configure' created (so you can compile the package for
60 a different kind of computer), type `make distclean'. There is
61 also a `make maintainer-clean' target, but that is intended mainly
62 for the package's developers. If you use it, you may have to get
63 all sorts of other programs in order to regenerate files that came
64 with the distribution.
65
66 Compilers and Options
67 =====================
68
69 Some systems require unusual options for compilation or linking that
70 the `configure' script does not know about. Run `./configure --help'
71 for details on some of the pertinent environment variables.
72
73 You can give `configure' initial values for configuration parameters
74 by setting variables in the command line or in the environment. Here
75 is an example:
76
77 ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
78
79 *Note Defining Variables::, for more details.
80
81 Compiling For Multiple Architectures
82 ====================================
83
84 You can compile the package for more than one kind of computer at the
85 same time, by placing the object files for each architecture in their
86 own directory. To do this, you must use a version of `make' that
87 supports the `VPATH' variable, such as GNU `make'. `cd' to the
88 directory where you want the object files and executables to go and run
89 the `configure' script. `configure' automatically checks for the
90 source code in the directory that `configure' is in and in `..'.
91
92 If you have to use a `make' that does not support the `VPATH'
93 variable, you have to compile the package for one architecture at a
94 time in the source code directory. After you have installed the
95 package for one architecture, use `make distclean' before reconfiguring
96 for another architecture.
97
98 Installation Names
99 ==================
100
101 By default, `make install' will install the package's files in
102 `/usr/local/bin', `/usr/local/man', etc. You can specify an
103 installation prefix other than `/usr/local' by giving `configure' the
104 option `--prefix=PATH'.
105
106 You can specify separate installation prefixes for
107 architecture-specific files and architecture-independent files. If you
108 give `configure' the option `--exec-prefix=PATH', the package will use
109 PATH as the prefix for installing programs and libraries.
110 Documentation and other data files will still use the regular prefix.
111
112 In addition, if you use an unusual directory layout you can give
113 options like `--bindir=PATH' to specify different values for particular
114 kinds of files. Run `configure --help' for a list of the directories
115 you can set and what kinds of files go in them.
116
117 If the package supports it, you can cause programs to be installed
118 with an extra prefix or suffix on their names by giving `configure' the
119 option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
120
121 Optional Features
122 =================
123
124 Some packages pay attention to `--enable-FEATURE' options to
125 `configure', where FEATURE indicates an optional part of the package.
126 They may also pay attention to `--with-PACKAGE' options, where PACKAGE
127 is something like `gnu-as' or `x' (for the X Window System). The
128 `README' should mention any `--enable-' and `--with-' options that the
129 package recognizes.
130
131 For packages that use the X Window System, `configure' can usually
132 find the X include and library files automatically, but if it doesn't,
133 you can use the `configure' options `--x-includes=DIR' and
134 `--x-libraries=DIR' to specify their locations.
135
136 Specifying the System Type
137 ==========================
138
139 There may be some features `configure' cannot figure out
140 automatically, but needs to determine by the type of machine the package
141 will run on. Usually, assuming the package is built to be run on the
142 _same_ architectures, `configure' can figure that out, but if it prints
143 a message saying it cannot guess the machine type, give it the
144 `--build=TYPE' option. TYPE can either be a short name for the system
145 type, such as `sun4', or a canonical name which has the form:
146
147 CPU-COMPANY-SYSTEM
148
149 where SYSTEM can have one of these forms:
150
151 OS KERNEL-OS
152
153 See the file `config.sub' for the possible values of each field. If
154 `config.sub' isn't included in this package, then this package doesn't
155 need to know the machine type.
156
157 If you are _building_ compiler tools for cross-compiling, you should
158 use the `--target=TYPE' option to select the type of system they will
159 produce code for.
160
161 If you want to _use_ a cross compiler, that generates code for a
162 platform different from the build platform, you should specify the
163 "host" platform (i.e., that on which the generated programs will
164 eventually be run) with `--host=TYPE'.
165
166 Sharing Defaults
167 ================
168
169 If you want to set default values for `configure' scripts to share,
170 you can create a site shell script called `config.site' that gives
171 default values for variables like `CC', `cache_file', and `prefix'.
172 `configure' looks for `PREFIX/share/config.site' if it exists, then
173 `PREFIX/etc/config.site' if it exists. Or, you can set the
174 `CONFIG_SITE' environment variable to the location of the site script.
175 A warning: not all `configure' scripts look for a site script.
176
177 Defining Variables
178 ==================
179
180 Variables not defined in a site shell script can be set in the
181 environment passed to `configure'. However, some packages may run
182 configure again during the build, and the customized values of these
183 variables may be lost. In order to avoid this problem, you should set
184 them in the `configure' command line, using `VAR=value'. For example:
185
186 ./configure CC=/usr/local2/bin/gcc
187
188 will cause the specified gcc to be used as the C compiler (unless it is
189 overridden in the site shell script).
190
191 `configure' Invocation
192 ======================
193
194 `configure' recognizes the following options to control how it
195 operates.
196
197 `--help'
198 `-h'
199 Print a summary of the options to `configure', and exit.
200
201 `--version'
202 `-V'
203 Print the version of Autoconf used to generate the `configure'
204 script, and exit.
205
206 `--cache-file=FILE'
207 Enable the cache: use and save the results of the tests in FILE,
208 traditionally `config.cache'. FILE defaults to `/dev/null' to
209 disable caching.
210
211 `--config-cache'
212 `-C'
213 Alias for `--cache-file=config.cache'.
214
215 `--quiet'
216 `--silent'
217 `-q'
218 Do not print messages saying which checks are being made. To
219 suppress all normal output, redirect it to `/dev/null' (any error
220 messages will still be shown).
221
222 `--srcdir=DIR'
223 Look for the package's source code in directory DIR. Usually
224 `configure' can determine that directory automatically.
225
226 `configure' also accepts some other, not widely useful, options. Run
227 `configure --help' for more details.
228
0 ## Process this file with automake to produce Makefile.in -*-Makefile-*-
1 AUTOMAKE_OPTIONS = foreign 1.7
2
3 ACLOCAL_AMFLAGS = -I config
4
5 SUBDIRS = config test
6
7 bin_PROGRAMS = annotate gdparttopng gdtopng gd2copypal gd2topng pngtogd pngtogd2 webpng gd2togif gdcmpgif giftogd2
8
9 bin_SCRIPTS = bdftogd config/gdlib-config
10
11 noinst_PROGRAMS = fontsizetest fontwheeltest gdtest gddemo gd2time gdtestft testac circletexttest testtr fontconfigtest gifanimtest
12
13 EXTRA_DIST = README-JPEG.TXT README.TXT configure.pl bdftogd demoin.png err.out index.html install-item makefile.sample readme.jpn entities.html entities.tcl
14
15 include_HEADERS = gd.h gdfx.h gd_io.h gdcache.h gdfontg.h gdfontl.h gdfontmb.h gdfonts.h gdfontt.h entities.h
16
17 lib_LTLIBRARIES = libgd.la
18
19 libgd_la_SOURCES = gd.c gdfx.c gd_security.c gd_gd.c gd_gd2.c gd_io.c gd_io_dp.c gd_gif_in.c gd_gif_out.c gd_io_file.c gd_io_ss.c gd_jpeg.c gd_png.c gd_ss.c gd_topal.c gd_wbmp.c gdcache.c gdfontg.c gdfontl.c gdfontmb.c gdfonts.c gdfontt.c gdft.c gdhelpers.c gdhelpers.h gdkanji.c gdtables.c gdxpm.c jisx0208.h wbmp.c wbmp.h
20
21 libgd_la_LDFLAGS = -version-info 2:0:0 $(XTRA_LDFLAGS)
22
23 libgd_la_LIBADD = $(LTLIBICONV)
24
25 LDADD = ./libgd.la $(LIBICONV)
26
27 dist-zip: distdir
28 zip -qr $(distdir).zip $(distdir)
29 $(am__remove_distdir)
0 # Makefile.in generated by automake 1.9.6 from Makefile.am.
1 # @configure_input@
2
3 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
4 # 2003, 2004, 2005 Free Software Foundation, Inc.
5 # This Makefile.in is free software; the Free Software Foundation
6 # gives unlimited permission to copy and/or distribute it,
7 # with or without modifications, as long as this notice is preserved.
8
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
11 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
12 # PARTICULAR PURPOSE.
13
14 @SET_MAKE@
15
16
17
18
19 srcdir = @srcdir@
20 top_srcdir = @top_srcdir@
21 VPATH = @srcdir@
22 pkgdatadir = $(datadir)/@PACKAGE@
23 pkglibdir = $(libdir)/@PACKAGE@
24 pkgincludedir = $(includedir)/@PACKAGE@
25 top_builddir = .
26 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
27 INSTALL = @INSTALL@
28 install_sh_DATA = $(install_sh) -c -m 644
29 install_sh_PROGRAM = $(install_sh) -c
30 install_sh_SCRIPT = $(install_sh) -c
31 INSTALL_HEADER = $(INSTALL_DATA)
32 transform = $(program_transform_name)
33 NORMAL_INSTALL = :
34 PRE_INSTALL = :
35 POST_INSTALL = :
36 NORMAL_UNINSTALL = :
37 PRE_UNINSTALL = :
38 POST_UNINSTALL = :
39 build_triplet = @build@
40 host_triplet = @host@
41 target_triplet = @target@
42 bin_PROGRAMS = annotate$(EXEEXT) gdparttopng$(EXEEXT) gdtopng$(EXEEXT) \
43 gd2copypal$(EXEEXT) gd2topng$(EXEEXT) pngtogd$(EXEEXT) \
44 pngtogd2$(EXEEXT) webpng$(EXEEXT) gd2togif$(EXEEXT) \
45 gdcmpgif$(EXEEXT) giftogd2$(EXEEXT)
46 noinst_PROGRAMS = fontsizetest$(EXEEXT) fontwheeltest$(EXEEXT) \
47 gdtest$(EXEEXT) gddemo$(EXEEXT) gd2time$(EXEEXT) \
48 gdtestft$(EXEEXT) testac$(EXEEXT) circletexttest$(EXEEXT) \
49 testtr$(EXEEXT) fontconfigtest$(EXEEXT) gifanimtest$(EXEEXT)
50 subdir = .
51 DIST_COMMON = $(am__configure_deps) $(include_HEADERS) \
52 $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
53 $(srcdir)/config.hin $(top_srcdir)/configure COPYING ChangeLog \
54 INSTALL NEWS depcomp install-sh missing mkinstalldirs
55 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
56 am__aclocal_m4_deps = $(top_srcdir)/configure.ac
57 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
58 $(ACLOCAL_M4)
59 am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
60 configure.lineno configure.status.lineno
61 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
62 CONFIG_HEADER = config.h
63 CONFIG_CLEAN_FILES =
64 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
65 am__vpath_adj = case $$p in \
66 $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
67 *) f=$$p;; \
68 esac;
69 am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
70 am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \
71 "$(DESTDIR)$(bindir)" "$(DESTDIR)$(includedir)"
72 libLTLIBRARIES_INSTALL = $(INSTALL)
73 LTLIBRARIES = $(lib_LTLIBRARIES)
74 am__DEPENDENCIES_1 =
75 libgd_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
76 am_libgd_la_OBJECTS = gd.lo gdfx.lo gd_security.lo gd_gd.lo gd_gd2.lo \
77 gd_io.lo gd_io_dp.lo gd_gif_in.lo gd_gif_out.lo gd_io_file.lo \
78 gd_io_ss.lo gd_jpeg.lo gd_png.lo gd_ss.lo gd_topal.lo \
79 gd_wbmp.lo gdcache.lo gdfontg.lo gdfontl.lo gdfontmb.lo \
80 gdfonts.lo gdfontt.lo gdft.lo gdhelpers.lo gdkanji.lo \
81 gdtables.lo gdxpm.lo wbmp.lo
82 libgd_la_OBJECTS = $(am_libgd_la_OBJECTS)
83 binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
84 PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
85 annotate_SOURCES = annotate.c
86 annotate_OBJECTS = annotate.$(OBJEXT)
87 annotate_LDADD = $(LDADD)
88 annotate_DEPENDENCIES = ./libgd.la $(am__DEPENDENCIES_1)
89 circletexttest_SOURCES = circletexttest.c
90 circletexttest_OBJECTS = circletexttest.$(OBJEXT)
91 circletexttest_LDADD = $(LDADD)
92 circletexttest_DEPENDENCIES = ./libgd.la $(am__DEPENDENCIES_1)
93 fontconfigtest_SOURCES = fontconfigtest.c
94 fontconfigtest_OBJECTS = fontconfigtest.$(OBJEXT)
95 fontconfigtest_LDADD = $(LDADD)
96 fontconfigtest_DEPENDENCIES = ./libgd.la $(am__DEPENDENCIES_1)
97 fontsizetest_SOURCES = fontsizetest.c
98 fontsizetest_OBJECTS = fontsizetest.$(OBJEXT)
99 fontsizetest_LDADD = $(LDADD)
100 fontsizetest_DEPENDENCIES = ./libgd.la $(am__DEPENDENCIES_1)
101 fontwheeltest_SOURCES = fontwheeltest.c
102 fontwheeltest_OBJECTS = fontwheeltest.$(OBJEXT)
103 fontwheeltest_LDADD = $(LDADD)
104 fontwheeltest_DEPENDENCIES = ./libgd.la $(am__DEPENDENCIES_1)
105 gd2copypal_SOURCES = gd2copypal.c
106 gd2copypal_OBJECTS = gd2copypal.$(OBJEXT)
107 gd2copypal_LDADD = $(LDADD)
108 gd2copypal_DEPENDENCIES = ./libgd.la $(am__DEPENDENCIES_1)
109 gd2time_SOURCES = gd2time.c
110 gd2time_OBJECTS = gd2time.$(OBJEXT)
111 gd2time_LDADD = $(LDADD)
112 gd2time_DEPENDENCIES = ./libgd.la $(am__DEPENDENCIES_1)
113 gd2togif_SOURCES = gd2togif.c
114 gd2togif_OBJECTS = gd2togif.$(OBJEXT)
115 gd2togif_LDADD = $(LDADD)
116 gd2togif_DEPENDENCIES = ./libgd.la $(am__DEPENDENCIES_1)
117 gd2topng_SOURCES = gd2topng.c
118 gd2topng_OBJECTS = gd2topng.$(OBJEXT)
119 gd2topng_LDADD = $(LDADD)
120 gd2topng_DEPENDENCIES = ./libgd.la $(am__DEPENDENCIES_1)
121 gdcmpgif_SOURCES = gdcmpgif.c
122 gdcmpgif_OBJECTS = gdcmpgif.$(OBJEXT)
123 gdcmpgif_LDADD = $(LDADD)
124 gdcmpgif_DEPENDENCIES = ./libgd.la $(am__DEPENDENCIES_1)
125 gddemo_SOURCES = gddemo.c
126 gddemo_OBJECTS = gddemo.$(OBJEXT)
127 gddemo_LDADD = $(LDADD)
128 gddemo_DEPENDENCIES = ./libgd.la $(am__DEPENDENCIES_1)
129 gdparttopng_SOURCES = gdparttopng.c
130 gdparttopng_OBJECTS = gdparttopng.$(OBJEXT)
131 gdparttopng_LDADD = $(LDADD)
132 gdparttopng_DEPENDENCIES = ./libgd.la $(am__DEPENDENCIES_1)
133 gdtest_SOURCES = gdtest.c
134 gdtest_OBJECTS = gdtest.$(OBJEXT)
135 gdtest_LDADD = $(LDADD)
136 gdtest_DEPENDENCIES = ./libgd.la $(am__DEPENDENCIES_1)
137 gdtestft_SOURCES = gdtestft.c
138 gdtestft_OBJECTS = gdtestft.$(OBJEXT)
139 gdtestft_LDADD = $(LDADD)
140 gdtestft_DEPENDENCIES = ./libgd.la $(am__DEPENDENCIES_1)
141 gdtopng_SOURCES = gdtopng.c
142 gdtopng_OBJECTS = gdtopng.$(OBJEXT)
143 gdtopng_LDADD = $(LDADD)
144 gdtopng_DEPENDENCIES = ./libgd.la $(am__DEPENDENCIES_1)
145 gifanimtest_SOURCES = gifanimtest.c
146 gifanimtest_OBJECTS = gifanimtest.$(OBJEXT)
147 gifanimtest_LDADD = $(LDADD)
148 gifanimtest_DEPENDENCIES = ./libgd.la $(am__DEPENDENCIES_1)
149 giftogd2_SOURCES = giftogd2.c
150 giftogd2_OBJECTS = giftogd2.$(OBJEXT)
151 giftogd2_LDADD = $(LDADD)
152 giftogd2_DEPENDENCIES = ./libgd.la $(am__DEPENDENCIES_1)
153 pngtogd_SOURCES = pngtogd.c
154 pngtogd_OBJECTS = pngtogd.$(OBJEXT)
155 pngtogd_LDADD = $(LDADD)
156 pngtogd_DEPENDENCIES = ./libgd.la $(am__DEPENDENCIES_1)
157 pngtogd2_SOURCES = pngtogd2.c
158 pngtogd2_OBJECTS = pngtogd2.$(OBJEXT)
159 pngtogd2_LDADD = $(LDADD)
160 pngtogd2_DEPENDENCIES = ./libgd.la $(am__DEPENDENCIES_1)
161 testac_SOURCES = testac.c
162 testac_OBJECTS = testac.$(OBJEXT)
163 testac_LDADD = $(LDADD)
164 testac_DEPENDENCIES = ./libgd.la $(am__DEPENDENCIES_1)
165 testtr_SOURCES = testtr.c
166 testtr_OBJECTS = testtr.$(OBJEXT)
167 testtr_LDADD = $(LDADD)
168 testtr_DEPENDENCIES = ./libgd.la $(am__DEPENDENCIES_1)
169 webpng_SOURCES = webpng.c
170 webpng_OBJECTS = webpng.$(OBJEXT)
171 webpng_LDADD = $(LDADD)
172 webpng_DEPENDENCIES = ./libgd.la $(am__DEPENDENCIES_1)
173 binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
174 SCRIPTS = $(bin_SCRIPTS)
175 DEFAULT_INCLUDES = -I. -I$(srcdir) -I.
176 depcomp = $(SHELL) $(top_srcdir)/config/depcomp
177 am__depfiles_maybe = depfiles
178 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
179 $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
180 LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
181 $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
182 $(AM_CFLAGS) $(CFLAGS)
183 CCLD = $(CC)
184 LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
185 $(AM_LDFLAGS) $(LDFLAGS) -o $@
186 SOURCES = $(libgd_la_SOURCES) annotate.c circletexttest.c \
187 fontconfigtest.c fontsizetest.c fontwheeltest.c gd2copypal.c \
188 gd2time.c gd2togif.c gd2topng.c gdcmpgif.c gddemo.c \
189 gdparttopng.c gdtest.c gdtestft.c gdtopng.c gifanimtest.c \
190 giftogd2.c pngtogd.c pngtogd2.c testac.c testtr.c webpng.c
191 DIST_SOURCES = $(libgd_la_SOURCES) annotate.c circletexttest.c \
192 fontconfigtest.c fontsizetest.c fontwheeltest.c gd2copypal.c \
193 gd2time.c gd2togif.c gd2topng.c gdcmpgif.c gddemo.c \
194 gdparttopng.c gdtest.c gdtestft.c gdtopng.c gifanimtest.c \
195 giftogd2.c pngtogd.c pngtogd2.c testac.c testtr.c webpng.c
196 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
197 html-recursive info-recursive install-data-recursive \
198 install-exec-recursive install-info-recursive \
199 install-recursive installcheck-recursive installdirs-recursive \
200 pdf-recursive ps-recursive uninstall-info-recursive \
201 uninstall-recursive
202 includeHEADERS_INSTALL = $(INSTALL_HEADER)
203 HEADERS = $(include_HEADERS)
204 ETAGS = etags
205 CTAGS = ctags
206 DIST_SUBDIRS = $(SUBDIRS)
207 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
208 distdir = $(PACKAGE)-$(VERSION)
209 top_distdir = $(distdir)
210 am__remove_distdir = \
211 { test ! -d $(distdir) \
212 || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
213 && rm -fr $(distdir); }; }
214 DIST_ARCHIVES = $(distdir).tar.gz
215 GZIP_ENV = --best
216 distuninstallcheck_listfiles = find . -type f -print
217 distcleancheck_listfiles = find . -type f -print
218 ACLOCAL = @ACLOCAL@
219 AMDEP_FALSE = @AMDEP_FALSE@
220 AMDEP_TRUE = @AMDEP_TRUE@
221 AMTAR = @AMTAR@
222 AR = @AR@
223 AUTOCONF = @AUTOCONF@
224 AUTOHEADER = @AUTOHEADER@
225 AUTOMAKE = @AUTOMAKE@
226 AWK = @AWK@
227 CC = @CC@
228 CCDEPMODE = @CCDEPMODE@
229 CFLAGS = @CFLAGS@
230 CPP = @CPP@
231 CPPFLAGS = @CPPFLAGS@
232 CXX = @CXX@
233 CXXCPP = @CXXCPP@
234 CXXDEPMODE = @CXXDEPMODE@
235 CXXFLAGS = @CXXFLAGS@
236 CYGPATH_W = @CYGPATH_W@
237 DEFS = @DEFS@
238 DEPDIR = @DEPDIR@
239 ECHO = @ECHO@
240 ECHO_C = @ECHO_C@
241 ECHO_N = @ECHO_N@
242 ECHO_T = @ECHO_T@
243 EGREP = @EGREP@
244 EXEEXT = @EXEEXT@
245 F77 = @F77@
246 FEATURES = @FEATURES@
247 FFLAGS = @FFLAGS@
248 FREETYPE_CONFIG = @FREETYPE_CONFIG@
249 GDLIBNAME = @GDLIBNAME@
250 GDLIB_MAJOR = @GDLIB_MAJOR@
251 GDLIB_MINOR = @GDLIB_MINOR@
252 GDLIB_REVISION = @GDLIB_REVISION@
253 GREP = @GREP@
254 INSTALL_DATA = @INSTALL_DATA@
255 INSTALL_PROGRAM = @INSTALL_PROGRAM@
256 INSTALL_SCRIPT = @INSTALL_SCRIPT@
257 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
258 LDFLAGS = @LDFLAGS@
259 LIBICONV = @LIBICONV@
260 LIBOBJS = @LIBOBJS@
261 LIBPNG12_CONFIG = @LIBPNG12_CONFIG@
262 LIBPNG_CONFIG = @LIBPNG_CONFIG@
263 LIBS = @LIBS@
264 LIBTOOL = @LIBTOOL@
265 LN_S = @LN_S@
266 LTLIBICONV = @LTLIBICONV@
267 LTLIBOBJS = @LTLIBOBJS@
268 MAKEINFO = @MAKEINFO@
269 OBJEXT = @OBJEXT@
270 PACKAGE = @PACKAGE@
271 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
272 PACKAGE_NAME = @PACKAGE_NAME@
273 PACKAGE_STRING = @PACKAGE_STRING@
274 PACKAGE_TARNAME = @PACKAGE_TARNAME@
275 PACKAGE_VERSION = @PACKAGE_VERSION@
276 PATH_SEPARATOR = @PATH_SEPARATOR@
277 PTHREAD_CC = @PTHREAD_CC@
278 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
279 PTHREAD_LIBS = @PTHREAD_LIBS@
280 RANLIB = @RANLIB@
281 SET_MAKE = @SET_MAKE@
282 SHELL = @SHELL@
283 STRIP = @STRIP@
284 VERSION = @VERSION@
285 XMKMF = @XMKMF@
286 XTRA_LDFLAGS = @XTRA_LDFLAGS@
287 ac_ct_CC = @ac_ct_CC@
288 ac_ct_CXX = @ac_ct_CXX@
289 ac_ct_F77 = @ac_ct_F77@
290 acx_pthread_config = @acx_pthread_config@
291 am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
292 am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
293 am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
294 am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
295 am__include = @am__include@
296 am__leading_dot = @am__leading_dot@
297 am__quote = @am__quote@
298 am__tar = @am__tar@
299 am__untar = @am__untar@
300 bindir = @bindir@
301 build = @build@
302 build_alias = @build_alias@
303 build_cpu = @build_cpu@
304 build_os = @build_os@
305 build_vendor = @build_vendor@
306 datadir = @datadir@
307 datarootdir = @datarootdir@
308 docdir = @docdir@
309 dvidir = @dvidir@
310 exec_prefix = @exec_prefix@
311 host = @host@
312 host_alias = @host_alias@
313 host_cpu = @host_cpu@
314 host_os = @host_os@
315 host_vendor = @host_vendor@
316 htmldir = @htmldir@
317 includedir = @includedir@
318 infodir = @infodir@
319 install_sh = @install_sh@
320 libdir = @libdir@
321 libexecdir = @libexecdir@
322 localedir = @localedir@
323 localstatedir = @localstatedir@
324 mandir = @mandir@
325 mkdir_p = @mkdir_p@
326 oldincludedir = @oldincludedir@
327 pdfdir = @pdfdir@
328 prefix = @prefix@
329 program_transform_name = @program_transform_name@
330 psdir = @psdir@
331 sbindir = @sbindir@
332 sharedstatedir = @sharedstatedir@
333 sysconfdir = @sysconfdir@
334 target = @target@
335 target_alias = @target_alias@
336 target_cpu = @target_cpu@
337 target_os = @target_os@
338 target_vendor = @target_vendor@
339 AUTOMAKE_OPTIONS = foreign 1.7
340 ACLOCAL_AMFLAGS = -I config
341 SUBDIRS = config test
342 bin_SCRIPTS = bdftogd config/gdlib-config
343 EXTRA_DIST = README-JPEG.TXT README.TXT configure.pl bdftogd demoin.png err.out index.html install-item makefile.sample readme.jpn entities.html entities.tcl
344 include_HEADERS = gd.h gdfx.h gd_io.h gdcache.h gdfontg.h gdfontl.h gdfontmb.h gdfonts.h gdfontt.h entities.h
345 lib_LTLIBRARIES = libgd.la
346 libgd_la_SOURCES = gd.c gdfx.c gd_security.c gd_gd.c gd_gd2.c gd_io.c gd_io_dp.c gd_gif_in.c gd_gif_out.c gd_io_file.c gd_io_ss.c gd_jpeg.c gd_png.c gd_ss.c gd_topal.c gd_wbmp.c gdcache.c gdfontg.c gdfontl.c gdfontmb.c gdfonts.c gdfontt.c gdft.c gdhelpers.c gdhelpers.h gdkanji.c gdtables.c gdxpm.c jisx0208.h wbmp.c wbmp.h
347 libgd_la_LDFLAGS = -version-info 2:0:0 $(XTRA_LDFLAGS)
348 libgd_la_LIBADD = $(LTLIBICONV)
349 LDADD = ./libgd.la $(LIBICONV)
350 all: config.h
351 $(MAKE) $(AM_MAKEFLAGS) all-recursive
352
353 .SUFFIXES:
354 .SUFFIXES: .c .lo .o .obj
355 am--refresh:
356 @:
357 $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
358 @for dep in $?; do \
359 case '$(am__configure_deps)' in \
360 *$$dep*) \
361 echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \
362 cd $(srcdir) && $(AUTOMAKE) --foreign \
363 && exit 0; \
364 exit 1;; \
365 esac; \
366 done; \
367 echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
368 cd $(top_srcdir) && \
369 $(AUTOMAKE) --foreign Makefile
370 .PRECIOUS: Makefile
371 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
372 @case '$?' in \
373 *config.status*) \
374 echo ' $(SHELL) ./config.status'; \
375 $(SHELL) ./config.status;; \
376 *) \
377 echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
378 cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
379 esac;
380
381 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
382 $(SHELL) ./config.status --recheck
383
384 $(top_srcdir)/configure: $(am__configure_deps)
385 cd $(srcdir) && $(AUTOCONF)
386 $(ACLOCAL_M4): $(am__aclocal_m4_deps)
387 cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
388
389 config.h: stamp-h1
390 @if test ! -f $@; then \
391 rm -f stamp-h1; \
392 $(MAKE) stamp-h1; \
393 else :; fi
394
395 stamp-h1: $(srcdir)/config.hin $(top_builddir)/config.status
396 @rm -f stamp-h1
397 cd $(top_builddir) && $(SHELL) ./config.status config.h
398 $(srcdir)/config.hin: $(am__configure_deps)
399 cd $(top_srcdir) && $(AUTOHEADER)
400 rm -f stamp-h1
401 touch $@
402
403 distclean-hdr:
404 -rm -f config.h stamp-h1
405 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
406 @$(NORMAL_INSTALL)
407 test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
408 @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
409 if test -f $$p; then \
410 f=$(am__strip_dir) \
411 echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
412 $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
413 else :; fi; \
414 done
415
416 uninstall-libLTLIBRARIES:
417 @$(NORMAL_UNINSTALL)
418 @set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \
419 p=$(am__strip_dir) \
420 echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
421 $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
422 done
423
424 clean-libLTLIBRARIES:
425 -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
426 @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
427 dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
428 test "$$dir" != "$$p" || dir=.; \
429 echo "rm -f \"$${dir}/so_locations\""; \
430 rm -f "$${dir}/so_locations"; \
431 done
432 libgd.la: $(libgd_la_OBJECTS) $(libgd_la_DEPENDENCIES)
433 $(LINK) -rpath $(libdir) $(libgd_la_LDFLAGS) $(libgd_la_OBJECTS) $(libgd_la_LIBADD) $(LIBS)
434 install-binPROGRAMS: $(bin_PROGRAMS)
435 @$(NORMAL_INSTALL)
436 test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
437 @list='$(bin_PROGRAMS)'; for p in $$list; do \
438 p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
439 if test -f $$p \
440 || test -f $$p1 \
441 ; then \
442 f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
443 echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
444 $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
445 else :; fi; \
446 done
447
448 uninstall-binPROGRAMS:
449 @$(NORMAL_UNINSTALL)
450 @list='$(bin_PROGRAMS)'; for p in $$list; do \
451 f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
452 echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
453 rm -f "$(DESTDIR)$(bindir)/$$f"; \
454 done
455
456 clean-binPROGRAMS:
457 @list='$(bin_PROGRAMS)'; for p in $$list; do \
458 f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
459 echo " rm -f $$p $$f"; \
460 rm -f $$p $$f ; \
461 done
462
463 clean-noinstPROGRAMS:
464 @list='$(noinst_PROGRAMS)'; for p in $$list; do \
465 f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
466 echo " rm -f $$p $$f"; \
467 rm -f $$p $$f ; \
468 done
469 annotate$(EXEEXT): $(annotate_OBJECTS) $(annotate_DEPENDENCIES)
470 @rm -f annotate$(EXEEXT)
471 $(LINK) $(annotate_LDFLAGS) $(annotate_OBJECTS) $(annotate_LDADD) $(LIBS)
472 circletexttest$(EXEEXT): $(circletexttest_OBJECTS) $(circletexttest_DEPENDENCIES)
473 @rm -f circletexttest$(EXEEXT)
474 $(LINK) $(circletexttest_LDFLAGS) $(circletexttest_OBJECTS) $(circletexttest_LDADD) $(LIBS)
475 fontconfigtest$(EXEEXT): $(fontconfigtest_OBJECTS) $(fontconfigtest_DEPENDENCIES)
476 @rm -f fontconfigtest$(EXEEXT)
477 $(LINK) $(fontconfigtest_LDFLAGS) $(fontconfigtest_OBJECTS) $(fontconfigtest_LDADD) $(LIBS)
478 fontsizetest$(EXEEXT): $(fontsizetest_OBJECTS) $(fontsizetest_DEPENDENCIES)
479 @rm -f fontsizetest$(EXEEXT)
480 $(LINK) $(fontsizetest_LDFLAGS) $(fontsizetest_OBJECTS) $(fontsizetest_LDADD) $(LIBS)
481 fontwheeltest$(EXEEXT): $(fontwheeltest_OBJECTS) $(fontwheeltest_DEPENDENCIES)
482 @rm -f fontwheeltest$(EXEEXT)
483 $(LINK) $(fontwheeltest_LDFLAGS) $(fontwheeltest_OBJECTS) $(fontwheeltest_LDADD) $(LIBS)
484 gd2copypal$(EXEEXT): $(gd2copypal_OBJECTS) $(gd2copypal_DEPENDENCIES)
485 @rm -f gd2copypal$(EXEEXT)
486 $(LINK) $(gd2copypal_LDFLAGS) $(gd2copypal_OBJECTS) $(gd2copypal_LDADD) $(LIBS)
487 gd2time$(EXEEXT): $(gd2time_OBJECTS) $(gd2time_DEPENDENCIES)
488 @rm -f gd2time$(EXEEXT)
489 $(LINK) $(gd2time_LDFLAGS) $(gd2time_OBJECTS) $(gd2time_LDADD) $(LIBS)
490 gd2togif$(EXEEXT): $(gd2togif_OBJECTS) $(gd2togif_DEPENDENCIES)
491 @rm -f gd2togif$(EXEEXT)
492 $(LINK) $(gd2togif_LDFLAGS) $(gd2togif_OBJECTS) $(gd2togif_LDADD) $(LIBS)
493 gd2topng$(EXEEXT): $(gd2topng_OBJECTS) $(gd2topng_DEPENDENCIES)
494 @rm -f gd2topng$(EXEEXT)
495 $(LINK) $(gd2topng_LDFLAGS) $(gd2topng_OBJECTS) $(gd2topng_LDADD) $(LIBS)
496 gdcmpgif$(EXEEXT): $(gdcmpgif_OBJECTS) $(gdcmpgif_DEPENDENCIES)
497 @rm -f gdcmpgif$(EXEEXT)
498 $(LINK) $(gdcmpgif_LDFLAGS) $(gdcmpgif_OBJECTS) $(gdcmpgif_LDADD) $(LIBS)
499 gddemo$(EXEEXT): $(gddemo_OBJECTS) $(gddemo_DEPENDENCIES)
500 @rm -f gddemo$(EXEEXT)
501 $(LINK) $(gddemo_LDFLAGS) $(gddemo_OBJECTS) $(gddemo_LDADD) $(LIBS)
502 gdparttopng$(EXEEXT): $(gdparttopng_OBJECTS) $(gdparttopng_DEPENDENCIES)
503 @rm -f gdparttopng$(EXEEXT)
504 $(LINK) $(gdparttopng_LDFLAGS) $(gdparttopng_OBJECTS) $(gdparttopng_LDADD) $(LIBS)
505 gdtest$(EXEEXT): $(gdtest_OBJECTS) $(gdtest_DEPENDENCIES)
506 @rm -f gdtest$(EXEEXT)
507 $(LINK) $(gdtest_LDFLAGS) $(gdtest_OBJECTS) $(gdtest_LDADD) $(LIBS)
508 gdtestft$(EXEEXT): $(gdtestft_OBJECTS) $(gdtestft_DEPENDENCIES)
509 @rm -f gdtestft$(EXEEXT)
510 $(LINK) $(gdtestft_LDFLAGS) $(gdtestft_OBJECTS) $(gdtestft_LDADD) $(LIBS)
511 gdtopng$(EXEEXT): $(gdtopng_OBJECTS) $(gdtopng_DEPENDENCIES)
512 @rm -f gdtopng$(EXEEXT)
513 $(LINK) $(gdtopng_LDFLAGS) $(gdtopng_OBJECTS) $(gdtopng_LDADD) $(LIBS)
514 gifanimtest$(EXEEXT): $(gifanimtest_OBJECTS) $(gifanimtest_DEPENDENCIES)
515 @rm -f gifanimtest$(EXEEXT)
516 $(LINK) $(gifanimtest_LDFLAGS) $(gifanimtest_OBJECTS) $(gifanimtest_LDADD) $(LIBS)
517 giftogd2$(EXEEXT): $(giftogd2_OBJECTS) $(giftogd2_DEPENDENCIES)
518 @rm -f giftogd2$(EXEEXT)
519 $(LINK) $(giftogd2_LDFLAGS) $(giftogd2_OBJECTS) $(giftogd2_LDADD) $(LIBS)
520 pngtogd$(EXEEXT): $(pngtogd_OBJECTS) $(pngtogd_DEPENDENCIES)
521 @rm -f pngtogd$(EXEEXT)
522 $(LINK) $(pngtogd_LDFLAGS) $(pngtogd_OBJECTS) $(pngtogd_LDADD) $(LIBS)
523 pngtogd2$(EXEEXT): $(pngtogd2_OBJECTS) $(pngtogd2_DEPENDENCIES)
524 @rm -f pngtogd2$(EXEEXT)
525 $(LINK) $(pngtogd2_LDFLAGS) $(pngtogd2_OBJECTS) $(pngtogd2_LDADD) $(LIBS)
526 testac$(EXEEXT): $(testac_OBJECTS) $(testac_DEPENDENCIES)
527 @rm -f testac$(EXEEXT)
528 $(LINK) $(testac_LDFLAGS) $(testac_OBJECTS) $(testac_LDADD) $(LIBS)
529 testtr$(EXEEXT): $(testtr_OBJECTS) $(testtr_DEPENDENCIES)
530 @rm -f testtr$(EXEEXT)
531 $(LINK) $(testtr_LDFLAGS) $(testtr_OBJECTS) $(testtr_LDADD) $(LIBS)
532 webpng$(EXEEXT): $(webpng_OBJECTS) $(webpng_DEPENDENCIES)
533 @rm -f webpng$(EXEEXT)
534 $(LINK) $(webpng_LDFLAGS) $(webpng_OBJECTS) $(webpng_LDADD) $(LIBS)
535 install-binSCRIPTS: $(bin_SCRIPTS)
536 @$(NORMAL_INSTALL)
537 test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
538 @list='$(bin_SCRIPTS)'; for p in $$list; do \
539 if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
540 if test -f $$d$$p; then \
541 f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
542 echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
543 $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
544 else :; fi; \
545 done
546
547 uninstall-binSCRIPTS:
548 @$(NORMAL_UNINSTALL)
549 @list='$(bin_SCRIPTS)'; for p in $$list; do \
550 f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
551 echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
552 rm -f "$(DESTDIR)$(bindir)/$$f"; \
553 done
554
555 mostlyclean-compile:
556 -rm -f *.$(OBJEXT)
557
558 distclean-compile:
559 -rm -f *.tab.c
560
561 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/annotate.Po@am__quote@
562 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/circletexttest.Po@am__quote@
563 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fontconfigtest.Po@am__quote@
564 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fontsizetest.Po@am__quote@
565 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fontwheeltest.Po@am__quote@
566 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd.Plo@am__quote@
567 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd2copypal.Po@am__quote@
568 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd2time.Po@am__quote@
569 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd2togif.Po@am__quote@
570 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd2topng.Po@am__quote@
571 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd_gd.Plo@am__quote@
572 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd_gd2.Plo@am__quote@
573 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd_gif_in.Plo@am__quote@
574 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd_gif_out.Plo@am__quote@
575 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd_io.Plo@am__quote@
576 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd_io_dp.Plo@am__quote@
577 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd_io_file.Plo@am__quote@
578 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd_io_ss.Plo@am__quote@
579 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd_jpeg.Plo@am__quote@
580 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd_png.Plo@am__quote@
581 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd_security.Plo@am__quote@
582 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd_ss.Plo@am__quote@
583 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd_topal.Plo@am__quote@
584 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gd_wbmp.Plo@am__quote@
585 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdcache.Plo@am__quote@
586 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdcmpgif.Po@am__quote@
587 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gddemo.Po@am__quote@
588 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdfontg.Plo@am__quote@
589 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdfontl.Plo@am__quote@
590 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdfontmb.Plo@am__quote@
591 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdfonts.Plo@am__quote@
592 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdfontt.Plo@am__quote@
593 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdft.Plo@am__quote@
594 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdfx.Plo@am__quote@
595 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdhelpers.Plo@am__quote@
596 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdkanji.Plo@am__quote@
597 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdparttopng.Po@am__quote@
598 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdtables.Plo@am__quote@
599 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdtest.Po@am__quote@
600 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdtestft.Po@am__quote@
601 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdtopng.Po@am__quote@
602 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdxpm.Plo@am__quote@
603 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gifanimtest.Po@am__quote@
604 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/giftogd2.Po@am__quote@
605 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pngtogd.Po@am__quote@
606 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pngtogd2.Po@am__quote@
607 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testac.Po@am__quote@
608 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testtr.Po@am__quote@
609 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wbmp.Plo@am__quote@
610 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/webpng.Po@am__quote@
611
612 .c.o:
613 @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
614 @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
615 @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
616 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
617 @am__fastdepCC_FALSE@ $(COMPILE) -c $<
618
619 .c.obj:
620 @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
621 @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
622 @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
623 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
624 @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
625
626 .c.lo:
627 @am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
628 @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
629 @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
630 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
631 @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
632
633 mostlyclean-libtool:
634 -rm -f *.lo
635
636 clean-libtool:
637 -rm -rf .libs _libs
638
639 distclean-libtool:
640 -rm -f libtool
641 uninstall-info-am:
642 install-includeHEADERS: $(include_HEADERS)
643 @$(NORMAL_INSTALL)
644 test -z "$(includedir)" || $(mkdir_p) "$(DESTDIR)$(includedir)"
645 @list='$(include_HEADERS)'; for p in $$list; do \
646 if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
647 f=$(am__strip_dir) \
648 echo " $(includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \
649 $(includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \
650 done
651
652 uninstall-includeHEADERS:
653 @$(NORMAL_UNINSTALL)
654 @list='$(include_HEADERS)'; for p in $$list; do \
655 f=$(am__strip_dir) \
656 echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \
657 rm -f "$(DESTDIR)$(includedir)/$$f"; \
658 done
659
660 # This directory's subdirectories are mostly independent; you can cd
661 # into them and run `make' without going through this Makefile.
662 # To change the values of `make' variables: instead of editing Makefiles,
663 # (1) if the variable is set in `config.status', edit `config.status'
664 # (which will cause the Makefiles to be regenerated when you run `make');
665 # (2) otherwise, pass the desired values on the `make' command line.
666 $(RECURSIVE_TARGETS):
667 @failcom='exit 1'; \
668 for f in x $$MAKEFLAGS; do \
669 case $$f in \
670 *=* | --[!k]*);; \
671 *k*) failcom='fail=yes';; \
672 esac; \
673 done; \
674 dot_seen=no; \
675 target=`echo $@ | sed s/-recursive//`; \
676 list='$(SUBDIRS)'; for subdir in $$list; do \
677 echo "Making $$target in $$subdir"; \
678 if test "$$subdir" = "."; then \
679 dot_seen=yes; \
680 local_target="$$target-am"; \
681 else \
682 local_target="$$target"; \
683 fi; \
684 (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
685 || eval $$failcom; \
686 done; \
687 if test "$$dot_seen" = "no"; then \
688 $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
689 fi; test -z "$$fail"
690
691 mostlyclean-recursive clean-recursive distclean-recursive \
692 maintainer-clean-recursive:
693 @failcom='exit 1'; \
694 for f in x $$MAKEFLAGS; do \
695 case $$f in \
696 *=* | --[!k]*);; \
697 *k*) failcom='fail=yes';; \
698 esac; \
699 done; \
700 dot_seen=no; \
701 case "$@" in \
702 distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
703 *) list='$(SUBDIRS)' ;; \
704 esac; \
705 rev=''; for subdir in $$list; do \
706 if test "$$subdir" = "."; then :; else \
707 rev="$$subdir $$rev"; \
708 fi; \
709 done; \
710 rev="$$rev ."; \
711 target=`echo $@ | sed s/-recursive//`; \
712 for subdir in $$rev; do \
713 echo "Making $$target in $$subdir"; \
714 if test "$$subdir" = "."; then \
715 local_target="$$target-am"; \
716 else \
717 local_target="$$target"; \
718 fi; \
719 (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
720 || eval $$failcom; \
721 done && test -z "$$fail"
722 tags-recursive:
723 list='$(SUBDIRS)'; for subdir in $$list; do \
724 test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
725 done
726 ctags-recursive:
727 list='$(SUBDIRS)'; for subdir in $$list; do \
728 test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
729 done
730
731 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
732 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
733 unique=`for i in $$list; do \
734 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
735 done | \
736 $(AWK) ' { files[$$0] = 1; } \
737 END { for (i in files) print i; }'`; \
738 mkid -fID $$unique
739 tags: TAGS
740
741 TAGS: tags-recursive $(HEADERS) $(SOURCES) config.hin $(TAGS_DEPENDENCIES) \
742 $(TAGS_FILES) $(LISP)
743 tags=; \
744 here=`pwd`; \
745 if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
746 include_option=--etags-include; \
747 empty_fix=.; \
748 else \
749 include_option=--include; \
750 empty_fix=; \
751 fi; \
752 list='$(SUBDIRS)'; for subdir in $$list; do \
753 if test "$$subdir" = .; then :; else \
754 test ! -f $$subdir/TAGS || \
755 tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
756 fi; \
757 done; \
758 list='$(SOURCES) $(HEADERS) config.hin $(LISP) $(TAGS_FILES)'; \
759 unique=`for i in $$list; do \
760 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
761 done | \
762 $(AWK) ' { files[$$0] = 1; } \
763 END { for (i in files) print i; }'`; \
764 if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
765 test -n "$$unique" || unique=$$empty_fix; \
766 $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
767 $$tags $$unique; \
768 fi
769 ctags: CTAGS
770 CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.hin $(TAGS_DEPENDENCIES) \
771 $(TAGS_FILES) $(LISP)
772 tags=; \
773 here=`pwd`; \
774 list='$(SOURCES) $(HEADERS) config.hin $(LISP) $(TAGS_FILES)'; \
775 unique=`for i in $$list; do \
776 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
777 done | \
778 $(AWK) ' { files[$$0] = 1; } \
779 END { for (i in files) print i; }'`; \
780 test -z "$(CTAGS_ARGS)$$tags$$unique" \
781 || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
782 $$tags $$unique
783
784 GTAGS:
785 here=`$(am__cd) $(top_builddir) && pwd` \
786 && cd $(top_srcdir) \
787 && gtags -i $(GTAGS_ARGS) $$here
788
789 distclean-tags:
790 -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
791
792 distdir: $(DISTFILES)
793 $(am__remove_distdir)
794 mkdir $(distdir)
795 $(mkdir_p) $(distdir)/config
796 @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
797 topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
798 list='$(DISTFILES)'; for file in $$list; do \
799 case $$file in \
800 $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
801 $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
802 esac; \
803 if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
804 dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
805 if test "$$dir" != "$$file" && test "$$dir" != "."; then \
806 dir="/$$dir"; \
807 $(mkdir_p) "$(distdir)$$dir"; \
808 else \
809 dir=''; \
810 fi; \
811 if test -d $$d/$$file; then \
812 if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
813 cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
814 fi; \
815 cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
816 else \
817 test -f $(distdir)/$$file \
818 || cp -p $$d/$$file $(distdir)/$$file \
819 || exit 1; \
820 fi; \
821 done
822 list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
823 if test "$$subdir" = .; then :; else \
824 test -d "$(distdir)/$$subdir" \
825 || $(mkdir_p) "$(distdir)/$$subdir" \
826 || exit 1; \
827 distdir=`$(am__cd) $(distdir) && pwd`; \
828 top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
829 (cd $$subdir && \
830 $(MAKE) $(AM_MAKEFLAGS) \
831 top_distdir="$$top_distdir" \
832 distdir="$$distdir/$$subdir" \
833 distdir) \
834 || exit 1; \
835 fi; \
836 done
837 -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
838 ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
839 ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
840 ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
841 || chmod -R a+r $(distdir)
842 dist-gzip: distdir
843 tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
844 $(am__remove_distdir)
845
846 dist-bzip2: distdir
847 tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
848 $(am__remove_distdir)
849
850 dist-tarZ: distdir
851 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
852 $(am__remove_distdir)
853
854 dist-shar: distdir
855 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
856 $(am__remove_distdir)
857
858 dist dist-all: distdir
859 tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
860 $(am__remove_distdir)
861
862 # This target untars the dist file and tries a VPATH configuration. Then
863 # it guarantees that the distribution is self-contained by making another
864 # tarfile.
865 distcheck: dist
866 case '$(DIST_ARCHIVES)' in \
867 *.tar.gz*) \
868 GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
869 *.tar.bz2*) \
870 bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
871 *.tar.Z*) \
872 uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
873 *.shar.gz*) \
874 GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
875 *.zip*) \
876 unzip $(distdir).zip ;;\
877 esac
878 chmod -R a-w $(distdir); chmod a+w $(distdir)
879 mkdir $(distdir)/_build
880 mkdir $(distdir)/_inst
881 chmod a-w $(distdir)
882 dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
883 && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
884 && cd $(distdir)/_build \
885 && ../configure --srcdir=.. --prefix="$$dc_install_base" \
886 $(DISTCHECK_CONFIGURE_FLAGS) \
887 && $(MAKE) $(AM_MAKEFLAGS) \
888 && $(MAKE) $(AM_MAKEFLAGS) dvi \
889 && $(MAKE) $(AM_MAKEFLAGS) check \
890 && $(MAKE) $(AM_MAKEFLAGS) install \
891 && $(MAKE) $(AM_MAKEFLAGS) installcheck \
892 && $(MAKE) $(AM_MAKEFLAGS) uninstall \
893 && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
894 distuninstallcheck \
895 && chmod -R a-w "$$dc_install_base" \
896 && ({ \
897 (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
898 && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
899 && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
900 && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
901 distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
902 } || { rm -rf "$$dc_destdir"; exit 1; }) \
903 && rm -rf "$$dc_destdir" \
904 && $(MAKE) $(AM_MAKEFLAGS) dist \
905 && rm -rf $(DIST_ARCHIVES) \
906 && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
907 $(am__remove_distdir)
908 @(echo "$(distdir) archives ready for distribution: "; \
909 list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
910 sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
911 distuninstallcheck:
912 @cd $(distuninstallcheck_dir) \
913 && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
914 || { echo "ERROR: files left after uninstall:" ; \
915 if test -n "$(DESTDIR)"; then \
916 echo " (check DESTDIR support)"; \
917 fi ; \
918 $(distuninstallcheck_listfiles) ; \
919 exit 1; } >&2
920 distcleancheck: distclean
921 @if test '$(srcdir)' = . ; then \
922 echo "ERROR: distcleancheck can only run from a VPATH build" ; \
923 exit 1 ; \
924 fi
925 @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
926 || { echo "ERROR: files left in build directory after distclean:" ; \
927 $(distcleancheck_listfiles) ; \
928 exit 1; } >&2
929 check-am: all-am
930 check: check-recursive
931 all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(HEADERS) \
932 config.h
933 install-binPROGRAMS: install-libLTLIBRARIES
934
935 installdirs: installdirs-recursive
936 installdirs-am:
937 for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(includedir)"; do \
938 test -z "$$dir" || $(mkdir_p) "$$dir"; \
939 done
940 install: install-recursive
941 install-exec: install-exec-recursive
942 install-data: install-data-recursive
943 uninstall: uninstall-recursive
944
945 install-am: all-am
946 @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
947
948 installcheck: installcheck-recursive
949 install-strip:
950 $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
951 install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
952 `test -z '$(STRIP)' || \
953 echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
954 mostlyclean-generic:
955
956 clean-generic:
957
958 distclean-generic:
959 -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
960
961 maintainer-clean-generic:
962 @echo "This command is intended for maintainers to use"
963 @echo "it deletes files that may require special tools to rebuild."
964 clean: clean-recursive
965
966 clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \
967 clean-libtool clean-noinstPROGRAMS mostlyclean-am
968
969 distclean: distclean-recursive
970 -rm -f $(am__CONFIG_DISTCLEAN_FILES)
971 -rm -rf ./$(DEPDIR)
972 -rm -f Makefile
973 distclean-am: clean-am distclean-compile distclean-generic \
974 distclean-hdr distclean-libtool distclean-tags
975
976 dvi: dvi-recursive
977
978 dvi-am:
979
980 html: html-recursive
981
982 info: info-recursive
983
984 info-am:
985
986 install-data-am: install-includeHEADERS
987
988 install-exec-am: install-binPROGRAMS install-binSCRIPTS \
989 install-libLTLIBRARIES
990
991 install-info: install-info-recursive
992
993 install-man:
994
995 installcheck-am:
996
997 maintainer-clean: maintainer-clean-recursive
998 -rm -f $(am__CONFIG_DISTCLEAN_FILES)
999 -rm -rf $(top_srcdir)/autom4te.cache
1000 -rm -rf ./$(DEPDIR)
1001 -rm -f Makefile
1002 maintainer-clean-am: distclean-am maintainer-clean-generic
1003
1004 mostlyclean: mostlyclean-recursive
1005
1006 mostlyclean-am: mostlyclean-compile mostlyclean-generic \
1007 mostlyclean-libtool
1008
1009 pdf: pdf-recursive
1010
1011 pdf-am:
1012
1013 ps: ps-recursive
1014
1015 ps-am:
1016
1017 uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \
1018 uninstall-includeHEADERS uninstall-info-am \
1019 uninstall-libLTLIBRARIES
1020
1021 uninstall-info: uninstall-info-recursive
1022
1023 .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
1024 check-am clean clean-binPROGRAMS clean-generic \
1025 clean-libLTLIBRARIES clean-libtool clean-noinstPROGRAMS \
1026 clean-recursive ctags ctags-recursive dist dist-all dist-bzip2 \
1027 dist-gzip dist-shar dist-tarZ dist-zip distcheck distclean \
1028 distclean-compile distclean-generic distclean-hdr \
1029 distclean-libtool distclean-recursive distclean-tags \
1030 distcleancheck distdir distuninstallcheck dvi dvi-am html \
1031 html-am info info-am install install-am install-binPROGRAMS \
1032 install-binSCRIPTS install-data install-data-am install-exec \
1033 install-exec-am install-includeHEADERS install-info \
1034 install-info-am install-libLTLIBRARIES install-man \
1035 install-strip installcheck installcheck-am installdirs \
1036 installdirs-am maintainer-clean maintainer-clean-generic \
1037 maintainer-clean-recursive mostlyclean mostlyclean-compile \
1038 mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \
1039 pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
1040 uninstall-binPROGRAMS uninstall-binSCRIPTS \
1041 uninstall-includeHEADERS uninstall-info-am \
1042 uninstall-libLTLIBRARIES
1043
1044
1045 dist-zip: distdir
1046 zip -qr $(distdir).zip $(distdir)
1047 $(am__remove_distdir)
1048 # Tell versions [3.59,3.63) of GNU make to not export all variables.
1049 # Otherwise a system limit (for SysV at least) may be exceeded.
1050 .NOEXPORT:
0 'GD NEWS
1 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 GD 2.0.35RC3 (2007-04-??)
3 41, Fix valgrind error in gdImageFillTiled (Nuno Lopes)
4 45, Add missing custom cmake macros (required for the tests suite)
5 51, Avoid signature buffer copy in gd_gif_c (Nuno Lopes)
6 48, Race condition in gdImageStringFTEx (Antony Dogval, Pierre
7 Scott MacVicar)
8 52, Reading GIF images is not thread safe (static usage in private
9 functions) (Roman Nemecek, Nuno Lopes, Pierre)
10 60, GIF Local palette is read twice
11 66, GIF, Use local frame dimension when possible instead of the
12 logical screen size (Pierre)
13 68, OpenVMS build support, see VMS/README.VMS for the details
14 (Alexey Chupahin)
15 70, GIF, do not try to use the global colmap if it does not exist
16 (Nuno Lopes, Pierre)
17 72, gdImageAALine draws axis lines with two pixels width (Pierre)
18 73, TTF usage doesn't work properly on Netware (Guenter Knauf, Scott MacVicar)
19 74, gdImageArc CPU usage with large angles (Pierre)
20 78, gdImageFilledRectangle regression fixed when used with reversed edges
21 (Pierre)
22 86, Possible infinite loop in libgd/gd_png.c, flaw found by Xavier Roche
23 (Pierre)
24 87, Fixed segfault when an invalid color index is present in a GIF
25 image data, reported by Elliot <wccode at gmail dot com> (Pierre)
26 89, Possible integer overflow in gdImageCreateTrueColor (Pierre)
27 94, gdImageCreateXbm can crash if gdImageCreate fails (Pierre)
28
29 GD 2.0.34 (2007-02-07)
30 3, Initialize variables in tweenColorTest, fix cache
31 4, gdImageFill, multiple segfaults with patterns or invalid arguments
32 5, gdImageRectangle draws corners twice
33 6, GIF Output does use the transparent color with truecolor images
34 7, Multiple security issues in GIF loader
35 8, gdIimageCopy doen't use the alpha channel
36 9, Add autogen and and misc configure/makefile (Lars Hecking)
37 10, gdImageFilledEllipse does not respect transparency
38 11, gdImageCreateFromPng* crashes with empty file
39 12, gdImageCreateFromPngCrx, initialize the signature buffer not the
40 infile
41 13, leak in jinit_2pass_quantizer (gd_topal.c)
42 14, Added santiy checks for possible memory allocation errors
43 15, gdImageCreatePaletteFromTrueColor, later color allocations overwrite
44 the palette colors (Rob Leslie)
45 16, Obscure error on Sun's compiler in entities.tcl
46 (John Ellson/Graphviz)
47 17, gdImageCreate, invalid gdFree call when overflow2 fails
48 18, HWB_Diff, invalid usage of abs instead of fabs
49 (Nick Atty)
50 19, Fixed gdImageCopyMergeGray when used with a true color image
51 20, transparency preservation in gdImageCopyRotated
52 21, Out of range checks in gdImageSetAAPixelColor
53 22, gdFontCacheSetup does not stop on error
54 23, Errors when gdImageStringFTEx is called with an empty string
55 (Kevin Scaldeferri)
56 24, gdft.c, uninitialized variable "charmap" and avoid divide-by-zero
57 (John Ellson/Graphviz)
58 25, DISABLE_THREADS to permit disabling of thread support
59 (John Ellson/Graphviz)
60 26, dynamicGetbuf, sourceGetbuf must return 0 for errors and EOF
61 27, gdSeek declaration is wrong
62 29, Windows native makefile (Edin Kadribašić)
63 30, restores the ability to recognize and handle a font with
64 Adobe-specific character encoding. Added gdFTEX_Adobe_Custom.
65 31, Shared library support on cygwin (Dr. Volker Zell)
66 32, Pattern-fill works incorrectly if tile is created via
67 gdImageCreateTruecolor (Ethan Merritt)
68 33, malformed PNG image crashes (CRC error)
69 34, reading some gif images creates infinite loop
70 36, gdImageFillToBorder crashes when used with alpha
71 40, possible Buffer overflow in the gdImageStringFTEx function
72 in gdft.c (CVE-2007-0455) (Kees Cook)
0 The Independent JPEG Group's JPEG software
1 ==========================================
2
3 README for release 6b of 27-Mar-1998
4 ====================================
5
6 This distribution contains the sixth public release of the Independent JPEG
7 Group's free JPEG software. You are welcome to redistribute this software and
8 to use it for any purpose, subject to the conditions under LEGAL ISSUES, below.
9
10 Serious users of this software (particularly those incorporating it into
11 larger programs) should contact IJG at jpeg-info@uunet.uu.net to be added to
12 our electronic mailing list. Mailing list members are notified of updates
13 and have a chance to participate in technical discussions, etc.
14
15 This software is the work of Tom Lane, Philip Gladstone, Jim Boucher,
16 Lee Crocker, Julian Minguillon, Luis Ortiz, George Phillips, Davide Rossi,
17 Guido Vollbeding, Ge' Weijers, and other members of the Independent JPEG
18 Group.
19
20 IJG is not affiliated with the official ISO JPEG standards committee.
21
22
23 DOCUMENTATION ROADMAP
24 =====================
25
26 This file contains the following sections:
27
28 OVERVIEW General description of JPEG and the IJG software.
29 LEGAL ISSUES Copyright, lack of warranty, terms of distribution.
30 REFERENCES Where to learn more about JPEG.
31 ARCHIVE LOCATIONS Where to find newer versions of this software.
32 RELATED SOFTWARE Other stuff you should get.
33 FILE FORMAT WARS Software *not* to get.
34 TO DO Plans for future IJG releases.
35
36 Other documentation files in the distribution are:
37
38 User documentation:
39 install.doc How to configure and install the IJG software.
40 usage.doc Usage instructions for cjpeg, djpeg, jpegtran,
41 rdjpgcom, and wrjpgcom.
42 *.1 Unix-style man pages for programs (same info as usage.doc).
43 wizard.doc Advanced usage instructions for JPEG wizards only.
44 change.log Version-to-version change highlights.
45 Programmer and internal documentation:
46 libjpeg.doc How to use the JPEG library in your own programs.
47 example.c Sample code for calling the JPEG library.
48 structure.doc Overview of the JPEG library's internal structure.
49 filelist.doc Road map of IJG files.
50 coderules.doc Coding style rules --- please read if you contribute code.
51
52 Please read at least the files install.doc and usage.doc. Useful information
53 can also be found in the JPEG FAQ (Frequently Asked Questions) article. See
54 ARCHIVE LOCATIONS below to find out where to obtain the FAQ article.
55
56 If you want to understand how the JPEG code works, we suggest reading one or
57 more of the REFERENCES, then looking at the documentation files (in roughly
58 the order listed) before diving into the code.
59
60
61 OVERVIEW
62 ========
63
64 This package contains C software to implement JPEG image compression and
65 decompression. JPEG (pronounced "jay-peg") is a standardized compression
66 method for full-color and gray-scale images. JPEG is intended for compressing
67 "real-world" scenes; line drawings, cartoons and other non-realistic images
68 are not its strong suit. JPEG is lossy, meaning that the output image is not
69 exactly identical to the input image. Hence you must not use JPEG if you
70 have to have identical output bits. However, on typical photographic images,
71 very good compression levels can be obtained with no visible change, and
72 remarkably high compression levels are possible if you can tolerate a
73 low-quality image. For more details, see the references, or just experiment
74 with various compression settings.
75
76 This software implements JPEG baseline, extended-sequential, and progressive
77 compression processes. Provision is made for supporting all variants of these
78 processes, although some uncommon parameter settings aren't implemented yet.
79 For legal reasons, we are not distributing code for the arithmetic-coding
80 variants of JPEG; see LEGAL ISSUES. We have made no provision for supporting
81 the hierarchical or lossless processes defined in the standard.
82
83 We provide a set of library routines for reading and writing JPEG image files,
84 plus two sample applications "cjpeg" and "djpeg", which use the library to
85 perform conversion between JPEG and some other popular image file formats.
86 The library is intended to be reused in other applications.
87
88 In order to support file conversion and viewing software, we have included
89 considerable functionality beyond the bare JPEG coding/decoding capability;
90 for example, the color quantization modules are not strictly part of JPEG
91 decoding, but they are essential for output to colormapped file formats or
92 colormapped displays. These extra functions can be compiled out of the
93 library if not required for a particular application. We have also included
94 "jpegtran", a utility for lossless transcoding between different JPEG
95 processes, and "rdjpgcom" and "wrjpgcom", two simple applications for
96 inserting and extracting textual comments in JFIF files.
97
98 The emphasis in designing this software has been on achieving portability and
99 flexibility, while also making it fast enough to be useful. In particular,
100 the software is not intended to be read as a tutorial on JPEG. (See the
101 REFERENCES section for introductory material.) Rather, it is intended to
102 be reliable, portable, industrial-strength code. We do not claim to have
103 achieved that goal in every aspect of the software, but we strive for it.
104
105 We welcome the use of this software as a component of commercial products.
106 No royalty is required, but we do ask for an acknowledgement in product
107 documentation, as described under LEGAL ISSUES.
108
109
110 LEGAL ISSUES
111 ============
112
113 In plain English:
114
115 1. We don't promise that this software works. (But if you find any bugs,
116 please let us know!)
117 2. You can use this software for whatever you want. You don't have to pay us.
118 3. You may not pretend that you wrote this software. If you use it in a
119 program, you must acknowledge somewhere in your documentation that
120 you've used the IJG code.
121
122 In legalese:
123
124 The authors make NO WARRANTY or representation, either express or implied,
125 with respect to this software, its quality, accuracy, merchantability, or
126 fitness for a particular purpose. This software is provided "AS IS", and you,
127 its user, assume the entire risk as to its quality and accuracy.
128
129 This software is copyright (C) 1991-1998, Thomas G. Lane.
130 All Rights Reserved except as specified below.
131
132 Permission is hereby granted to use, copy, modify, and distribute this
133 software (or portions thereof) for any purpose, without fee, subject to these
134 conditions:
135 (1) If any part of the source code for this software is distributed, then this
136 README file must be included, with this copyright and no-warranty notice
137 unaltered; and any additions, deletions, or changes to the original files
138 must be clearly indicated in accompanying documentation.
139 (2) If only executable code is distributed, then the accompanying
140 documentation must state that "this software is based in part on the work of
141 the Independent JPEG Group".
142 (3) Permission for use of this software is granted only if the user accepts
143 full responsibility for any undesirable consequences; the authors accept
144 NO LIABILITY for damages of any kind.
145
146 These conditions apply to any software derived from or based on the IJG code,
147 not just to the unmodified library. If you use our work, you ought to
148 acknowledge us.
149
150 Permission is NOT granted for the use of any IJG author's name or company name
151 in advertising or publicity relating to this software or products derived from
152 it. This software may be referred to only as "the Independent JPEG Group's
153 software".
154
155 We specifically permit and encourage the use of this software as the basis of
156 commercial products, provided that all warranty or liability claims are
157 assumed by the product vendor.
158
159
160 ansi2knr.c is included in this distribution by permission of L. Peter Deutsch,
161 sole proprietor of its copyright holder, Aladdin Enterprises of Menlo Park, CA.
162 ansi2knr.c is NOT covered by the above copyright and conditions, but instead
163 by the usual distribution terms of the Free Software Foundation; principally,
164 that you must include source code if you redistribute it. (See the file
165 ansi2knr.c for full details.) However, since ansi2knr.c is not needed as part
166 of any program generated from the IJG code, this does not limit you more than
167 the foregoing paragraphs do.
168
169 The Unix configuration script "configure" was produced with GNU Autoconf.
170 It is copyright by the Free Software Foundation but is freely distributable.
171 The same holds for its supporting scripts (config.guess, config.sub,
172 ltconfig, ltmain.sh). Another support script, install-sh, is copyright
173 by M.I.T. but is also freely distributable.
174
175 It appears that the arithmetic coding option of the JPEG spec is covered by
176 patents owned by IBM, AT&T, and Mitsubishi. Hence arithmetic coding cannot
177 legally be used without obtaining one or more licenses. For this reason,
178 support for arithmetic coding has been removed from the free JPEG software.
179 (Since arithmetic coding provides only a marginal gain over the unpatented
180 Huffman mode, it is unlikely that very many implementations will support it.)
181 So far as we are aware, there are no patent restrictions on the remaining
182 code.
183
184 The IJG distribution formerly included code to read and write GIF files.
185 To avoid entanglement with the Unisys LZW patent, GIF reading support has
186 been removed altogether, and the GIF writer has been simplified to produce
187 "uncompressed GIFs". This technique does not use the LZW algorithm; the
188 resulting GIF files are larger than usual, but are readable by all standard
189 GIF decoders.
190
191 We are required to state that
192 "The Graphics Interchange Format(c) is the Copyright property of
193 CompuServe Incorporated. GIF(sm) is a Service Mark property of
194 CompuServe Incorporated."
195
196
197 REFERENCES
198 ==========
199
200 We highly recommend reading one or more of these references before trying to
201 understand the innards of the JPEG software.
202
203 The best short technical introduction to the JPEG compression algorithm is
204 Wallace, Gregory K. "The JPEG Still Picture Compression Standard",
205 Communications of the ACM, April 1991 (vol. 34 no. 4), pp. 30-44.
206 (Adjacent articles in that issue discuss MPEG motion picture compression,
207 applications of JPEG, and related topics.) If you don't have the CACM issue
208 handy, a PostScript file containing a revised version of Wallace's article is
209 available at ftp://ftp.uu.net/graphics/jpeg/wallace.ps.gz. The file (actually
210 a preprint for an article that appeared in IEEE Trans. Consumer Electronics)
211 omits the sample images that appeared in CACM, but it includes corrections
212 and some added material. Note: the Wallace article is copyright ACM and IEEE,
213 and it may not be used for commercial purposes.
214
215 A somewhat less technical, more leisurely introduction to JPEG can be found in
216 "The Data Compression Book" by Mark Nelson and Jean-loup Gailly, published by
217 M&T Books (New York), 2nd ed. 1996, ISBN 1-55851-434-1. This book provides
218 good explanations and example C code for a multitude of compression methods
219 including JPEG. It is an excellent source if you are comfortable reading C
220 code but don't know much about data compression in general. The book's JPEG
221 sample code is far from industrial-strength, but when you are ready to look
222 at a full implementation, you've got one here...
223
224 The best full description of JPEG is the textbook "JPEG Still Image Data
225 Compression Standard" by William B. Pennebaker and Joan L. Mitchell, published
226 by Van Nostrand Reinhold, 1993, ISBN 0-442-01272-1. Price US$59.95, 638 pp.
227 The book includes the complete text of the ISO JPEG standards (DIS 10918-1
228 and draft DIS 10918-2). This is by far the most complete exposition of JPEG
229 in existence, and we highly recommend it.
230
231 The JPEG standard itself is not available electronically; you must order a
232 paper copy through ISO or ITU. (Unless you feel a need to own a certified
233 official copy, we recommend buying the Pennebaker and Mitchell book instead;
234 it's much cheaper and includes a great deal of useful explanatory material.)
235 In the USA, copies of the standard may be ordered from ANSI Sales at (212)
236 642-4900, or from Global Engineering Documents at (800) 854-7179. (ANSI
237 doesn't take credit card orders, but Global does.) It's not cheap: as of
238 1992, ANSI was charging $95 for Part 1 and $47 for Part 2, plus 7%
239 shipping/handling. The standard is divided into two parts, Part 1 being the
240 actual specification, while Part 2 covers compliance testing methods. Part 1
241 is titled "Digital Compression and Coding of Continuous-tone Still Images,
242 Part 1: Requirements and guidelines" and has document numbers ISO/IEC IS
243 10918-1, ITU-T T.81. Part 2 is titled "Digital Compression and Coding of
244 Continuous-tone Still Images, Part 2: Compliance testing" and has document
245 numbers ISO/IEC IS 10918-2, ITU-T T.83.
246
247 Some extensions to the original JPEG standard are defined in JPEG Part 3,
248 a newer ISO standard numbered ISO/IEC IS 10918-3 and ITU-T T.84. IJG
249 currently does not support any Part 3 extensions.
250
251 The JPEG standard does not specify all details of an interchangeable file
252 format. For the omitted details we follow the "JFIF" conventions, revision
253 1.02. A copy of the JFIF spec is available from:
254 Literature Department
255 C-Cube Microsystems, Inc.
256 1778 McCarthy Blvd.
257 Milpitas, CA 95035
258 phone (408) 944-6300, fax (408) 944-6314
259 A PostScript version of this document is available by FTP at
260 ftp://ftp.uu.net/graphics/jpeg/jfif.ps.gz. There is also a plain text
261 version at ftp://ftp.uu.net/graphics/jpeg/jfif.txt.gz, but it is missing
262 the figures.
263
264 The TIFF 6.0 file format specification can be obtained by FTP from
265 ftp://ftp.sgi.com/graphics/tiff/TIFF6.ps.gz. The JPEG incorporation scheme
266 found in the TIFF 6.0 spec of 3-June-92 has a number of serious problems.
267 IJG does not recommend use of the TIFF 6.0 design (TIFF Compression tag 6).
268 Instead, we recommend the JPEG design proposed by TIFF Technical Note #2
269 (Compression tag 7). Copies of this Note can be obtained from ftp.sgi.com or
270 from ftp://ftp.uu.net/graphics/jpeg/. It is expected that the next revision
271 of the TIFF spec will replace the 6.0 JPEG design with the Note's design.
272 Although IJG's own code does not support TIFF/JPEG, the free libtiff library
273 uses our library to implement TIFF/JPEG per the Note. libtiff is available
274 from ftp://ftp.sgi.com/graphics/tiff/.
275
276
277 ARCHIVE LOCATIONS
278 =================
279
280 The "official" archive site for this software is ftp.uu.net (Internet
281 address 192.48.96.9). The most recent released version can always be found
282 there in directory graphics/jpeg. This particular version will be archived
283 as ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz. If you don't have
284 direct Internet access, UUNET's archives are also available via UUCP; contact
285 help@uunet.uu.net for information on retrieving files that way.
286
287 Numerous Internet sites maintain copies of the UUNET files. However, only
288 ftp.uu.net is guaranteed to have the latest official version.
289
290 You can also obtain this software in DOS-compatible "zip" archive format from
291 the SimTel archives (ftp://ftp.simtel.net/pub/simtelnet/msdos/graphics/), or
292 on CompuServe in the Graphics Support forum (GO CIS:GRAPHSUP), library 12
293 "JPEG Tools". Again, these versions may sometimes lag behind the ftp.uu.net
294 release.
295
296 The JPEG FAQ (Frequently Asked Questions) article is a useful source of
297 general information about JPEG. It is updated constantly and therefore is
298 not included in this distribution. The FAQ is posted every two weeks to
299 Usenet newsgroups comp.graphics.misc, news.answers, and other groups.
300 It is available on the World Wide Web at http://www.faqs.org/faqs/jpeg-faq/
301 and other news.answers archive sites, including the official news.answers
302 archive at rtfm.mit.edu: ftp://rtfm.mit.edu/pub/usenet/news.answers/jpeg-faq/.
303 If you don't have Web or FTP access, send e-mail to mail-server@rtfm.mit.edu
304 with body
305 send usenet/news.answers/jpeg-faq/part1
306 send usenet/news.answers/jpeg-faq/part2
307
308
309 RELATED SOFTWARE
310 ================
311
312 Numerous viewing and image manipulation programs now support JPEG. (Quite a
313 few of them use this library to do so.) The JPEG FAQ described above lists
314 some of the more popular free and shareware viewers, and tells where to
315 obtain them on Internet.
316
317 If you are on a Unix machine, we highly recommend Jef Poskanzer's free
318 PBMPLUS software, which provides many useful operations on PPM-format image
319 files. In particular, it can convert PPM images to and from a wide range of
320 other formats, thus making cjpeg/djpeg considerably more useful. The latest
321 version is distributed by the NetPBM group, and is available from numerous
322 sites, notably ftp://wuarchive.wustl.edu/graphics/graphics/packages/NetPBM/.
323 Unfortunately PBMPLUS/NETPBM is not nearly as portable as the IJG software is;
324 you are likely to have difficulty making it work on any non-Unix machine.
325
326 A different free JPEG implementation, written by the PVRG group at Stanford,
327 is available from ftp://havefun.stanford.edu/pub/jpeg/. This program
328 is designed for research and experimentation rather than production use;
329 it is slower, harder to use, and less portable than the IJG code, but it
330 is easier to read and modify. Also, the PVRG code supports lossless JPEG,
331 which we do not. (On the other hand, it doesn't do progressive JPEG.)
332
333
334 FILE FORMAT WARS
335 ================
336
337 Some JPEG programs produce files that are not compatible with our library.
338 The root of the problem is that the ISO JPEG committee failed to specify a
339 concrete file format. Some vendors "filled in the blanks" on their own,
340 creating proprietary formats that no one else could read. (For example, none
341 of the early commercial JPEG implementations for the Macintosh were able to
342 exchange compressed files.)
343
344 The file format we have adopted is called JFIF (see REFERENCES). This format
345 has been agreed to by a number of major commercial JPEG vendors, and it has
346 become the de facto standard. JFIF is a minimal or "low end" representation.
347 We recommend the use of TIFF/JPEG (TIFF revision 6.0 as modified by TIFF
348 Technical Note #2) for "high end" applications that need to record a lot of
349 additional data about an image. TIFF/JPEG is fairly new and not yet widely
350 supported, unfortunately.
351
352 The upcoming JPEG Part 3 standard defines a file format called SPIFF.
353 SPIFF is interoperable with JFIF, in the sense that most JFIF decoders should
354 be able to read the most common variant of SPIFF. SPIFF has some technical
355 advantages over JFIF, but its major claim to fame is simply that it is an
356 official standard rather than an informal one. At this point it is unclear
357 whether SPIFF will supersede JFIF or whether JFIF will remain the de-facto
358 standard. IJG intends to support SPIFF once the standard is frozen, but we
359 have not decided whether it should become our default output format or not.
360 (In any case, our decoder will remain capable of reading JFIF indefinitely.)
361
362 Various proprietary file formats incorporating JPEG compression also exist.
363 We have little or no sympathy for the existence of these formats. Indeed,
364 one of the original reasons for developing this free software was to help
365 force convergence on common, open format standards for JPEG files. Don't
366 use a proprietary file format!
367
368
369 TO DO
370 =====
371
372 The major thrust for v7 will probably be improvement of visual quality.
373 The current method for scaling the quantization tables is known not to be
374 very good at low Q values. We also intend to investigate block boundary
375 smoothing, "poor man's variable quantization", and other means of improving
376 quality-vs-file-size performance without sacrificing compatibility.
377
378 In future versions, we are considering supporting some of the upcoming JPEG
379 Part 3 extensions --- principally, variable quantization and the SPIFF file
380 format.
381
382 As always, speeding things up is of great interest.
383
384 Please send bug reports, offers of help, etc. to jpeg-info@uunet.uu.net.
0 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1
2 To run the tests suite, all you need is (add the cmake options if you need any
3 or if the default libs and include paths are not the default) :
4
5 $ cmake -DBUILD_TEST=1 .
6 $ ctest .
7
8 If you like to run the tests against a installed GD library, set the following
9 environment variables:
10
11 export CMAKE_INCLUDE_PATH=/path/to/the/gd/include
12 export CMAKE_LIBRARY_PATH=/path/to/the/gd/lib
13
14 then call cmake using:
15
16 $ cmake -DUSE_EXT_GD=1 -DBUILD_TEST=1
17 $ make
18 and finally:
19
20 $ ctest .
21
22 I will certainly add a nice CMake option to give prefix later.
23
24 What to do if tests fail on your platform and you use the last GD release?
25 either from your favourite distributions or from http://www.libgd.org or cvs?
26
27 If you use a packaged version of the GD Library (installed from RPM, deb or
28 ports, gentoo packages or any other packages format or distribution), please try
29 to run the tests using the source releases available at:
30
31 http://www.libgd.org/Downloads
32
33 If the tests fail using our source release, please report a bug here:
34
35 http://bugs.libgd.org
36
37 You can attach the two files available in:
38
39 ./Testing/Temporary
40
41 Later versions will have an automatic post mode.
42
43 If the tests run successfully, please report a bug to the maintainer of the
44 packages (debian, bsd, ubuntu or whoever is responsible for the packages).
45
46 Reasons of failures:
47 Exception: SegFault: self explaining
48 Failed test failed, check the log to know where
49 timeout the default timeout is 5 seconds. Some test may
50 have infinite loops when compiled against old versions
51 of the GD library (esp. 2.0.33 or earlier)
52
0 For documentation, browse index.html.
1
2 Quick install guide:
3
4 If the sources have been fetched from CVS, run bootstrap.sh [options].
5
6 From a released source, use:
7 1. Type './configure'
8 2. Type 'make install'
9
10 Generic configuration instructions are in the file INSTALL.
11
12 The following 3rd-party libraries will be used by gd if found by configure.
13 While gd will compile and install even without these, we suggest that at
14 least zlib and libpng are installed, and recommend that freetype and jpeg
15 are installed as well:
16
17 1. zlib, available from http://www.gzip.org/zlib/
18 Data compression library
19
20 2. libpng, available from http://www.libpng.org/pub/png/
21 Portable Network Graphics library; requires zlib
22
23 3. FreeType 2.x, available from http://www.freetype.org/
24 Free, high-quality, and portable font engine
25
26 4. JPEG library, available from http://www.ijg.org/
27 Portable JPEG compression/decompression library
28
29 5. XPM, available from http://koala.ilog.fr/lehors/xpm.html
30 X Pixmap library
31
32 If any of these libraries are installed, but not detected by configure,
33 you can use the following command line options:
34
35 --with-png=DIR
36
37 Without the DIR argument, configure will check for png header files and
38 libraries in a default location. To switch off png support, use
39 --without-png, or --with-png=no.
40
41 If the DIR argument is specified, configure tries to find the png header
42 files in DIR/include, and the libraries in DIR/lib. To accommodate
43 OpenBSD ports, DIR/include/libpng is also checked if necessary.
44
45 --with-freetype=DIR
46
47 Dto. for freetype 2.x library. The search path for include files is
48 DIR/include/freetype2.
49
50 --with-jpeg=DIR
51
52 Dto. for jpeg library.
53
54 --with-xpm=DIR
55
56 Dto. for xpm library.
0 $! (c) Alexey Chupahin 18-APR-2006
1 $! GNU
2 $!
3 $!
4 $DEF SYS$ERROR _NL0:
5 $ SET NOON
6 $WRITE SYS$OUTPUT " "
7 $WRITE SYS$OUTPUT "Configuring GD library for OpenVMS"
8 $WRITE SYS$OUTPUT "(c) Alexey Chupahin "
9 $! Checking architecture
10 $! Checking architecture
11 $ IF F$GETSYI("ARCH_TYPE").EQ.1 THEN CPU = "VAX"
12 $ IF F$GETSYI("ARCH_TYPE").EQ.2 THEN CPU = "Alpha"
13 $ IF F$GETSYI("ARCH_TYPE").EQ.3 THEN CPU = "I64"
14 $WRITE SYS$OUTPUT "Checking architecture ... ", CPU
15 $SHARED=0
16 $IF ( (CPU.EQS."Alpha").OR.(CPU.EQS."I64") )
17 $ THEN
18 $ SHARED=64
19 $ ELSE
20 $ SHARED=32
21 $ENDIF
22 $DECC = F$SEARCH("SYS$SYSTEM:DECC$COMPILER.EXE") .NES. ""
23 $IF (DECC) THEN $WRITE SYS$OUTPUT "Compiler ... DEC C"
24 $IF (.NOT. DECC) THEN $WRITE SYS$OUTPUT "BAD compiler" GOTO EXIT
25 $MMS = F$SEARCH("SYS$SYSTEM:MMS.EXE") .NES. ""
26 $MMK = F$TYPE(MMK)
27 $IF (MMS .OR. MMK) THEN GOTO TEST_LIBRARIES
28 $! I cant find any make tool
29 $GOTO EXIT
30 $!
31 $!
32 $TEST_LIBRARIES:
33 $! Setting as MAKE utility one of MMS or MMK. I prefer MMS.
34 $IF (MMK) THEN MAKE="MMK/IGN=WAR"
35 $IF (MMS) THEN MAKE="MMS/IGN=WAR"
36 $WRITE SYS$OUTPUT "Checking build utility ... ''MAKE'"
37 $WRITE SYS$OUTPUT " "
38 $!
39 $IF (P1.EQS."STATIC") .OR. (P1.EQS."static")
40 $ THEN
41 $ WRITE SYS$OUTPUT "Configuring for static only"
42 $ SHARED=0
43 $ENDIF
44 $!
45 $! Is it package root directory? If no, go to [-]
46 $ IF (F$SEARCH("[]VMS.DIR").EQS."") .AND. (F$SEARCH("[]vms.dir").EQS."")
47 $ THEN
48 $ SET DEF [-]
49 $ ENDIF
50 $!
51 $!Checking for iconv
52 $!
53 $ DEFINE SYS$OUTPUT _NLA0:
54 $ CC/OBJECT=TEST.OBJ SYS$INPUT
55 #include <iconv.h>
56 int main()
57 {
58 iconv_t cd;
59 cd = iconv_open ((const char *)0, (const char *)0);
60 }
61 $TMP = $STATUS
62 $DEAS SYS$OUTPUT
63 $IF (TMP .NE. %X10B90001)
64 $ THEN
65 $ HAVE_ICONV=0
66 $ENDIF
67 $DEFINE SYS$OUTPUT _NLA0:
68 $LINK/EXE=TEST TEST
69 $TMP = $STATUS
70 $!WRITE SYS$OUTPUT TMP
71 $IF (TMP .NE. %X10000001)
72 $ THEN
73 $ HAVE_ICONV=0
74 $ ELSE
75 $ HAVE_ICONV=1
76 $ENDIF
77 $DEAS SYS$OUTPUT
78 $IF (HAVE_ICONV.EQ.1)
79 $ THEN
80 $ WRITE SYS$OUTPUT "Checking for system iconv library... Yes"
81 $ ELSE
82 $ WRITE SYS$OUTPUT "Checking for system iconv library... No"
83 $ENDIF
84 $!
85 $!"Checking for correct zlib library "
86 $ ZLIB_STATIC=0
87 $ DEFINE SYS$OUTPUT _NLA0:
88 $ CC/OBJECT=TEST.OBJ/INCLUDE=(ZLIB) SYS$INPUT
89 #include <stdlib.h>
90 #include <stdio.h>
91 #include <zlib.h>
92 int main()
93 {
94 printf("checking version zlib: %s\n",zlibVersion());
95 }
96 $TMP = $STATUS
97 $DEAS SYS$OUTPUT
98 $IF (TMP .NE. %X10B90001)
99 $ THEN
100 $ HAVE_ZLIB=0
101 $ GOTO EXIT
102 $ENDIF
103 $DEFINE SYS$OUTPUT _NLA0:
104 $!Testing for shared ZLIB
105 $COPY SYS$INPUT OPT.OPT
106 SYS$SHARE:LIBZSHR/SHARE
107 $LINK/EXE=TEST TEST,OPT/OPT
108 $TMP = $STATUS
109 $DEL OPT.OPT;*
110 $!WRITE SYS$OUTPUT TMP
111 $IF (TMP .NE. %X10000001)
112 $ THEN
113 $ LINK/EXE=TEST TEST,ZLIB:LIBZ/LIB
114 $ TMP = $STATUS
115 $ IF (TMP .NE. %X10000001)
116 $ THEN
117 $ HAVE_ZLIB=0
118 $ ELSE
119 $ HAVE_ZLIB=1
120 $ ZLIB_STATIC=1
121 $ ENDIF
122 $ ELSE
123 $ HAVE_ZLIB=1
124 $ENDIF
125 $DEAS SYS$OUTPUT
126 $IF (HAVE_ZLIB.EQ.1)
127 $ THEN
128 $ WRITE SYS$OUTPUT "Checking for correct zlib library ... Yes"
129 $ ELSE
130 $ WRITE SYS$OUTPUT "Checking for correct zlib library ... No"
131 $ WRITE SYS$OUTPUT "This is fatal. Please download and install good library from fafner.dyndns.org/~alexey/libsdl/public.html"
132 $ GOTO EXIT
133 $ENDIF
134 $RUN TEST
135 $!
136 $!
137 $FREETYPE_STATIC=0
138 $!"Checking for correct Freetype2 library"
139 $ DEFINE SYS$OUTPUT _NLA0:
140 $ CC/OBJECT=TEST.OBJ/INCLUDE=(FREETYPE2) SYS$INPUT
141 #include <ft2build.h>
142 #include <freetype/freetype.h>
143 int main(int argc, char *argv[])
144 {
145
146 #if FREETYPE_MAJOR == 2 && FREETYPE_MINOR <= 1
147 printf("This version is too old. Please get newest\n");
148 printf("From fafner.dyndns.org/~alexey/libsdl/required.html\n");
149 exit(2);
150 #endif
151 printf("checking version FreeType : %d.%d.%d\n",
152 FREETYPE_MAJOR,
153 FREETYPE_MINOR,
154 FREETYPE_PATCH);
155 return(0);
156 }
157 $TMP = $STATUS
158 $DEAS SYS$OUTPUT
159 $IF (TMP .NE. %X10B90001)
160 $ THEN
161 $ HAVE_FREETYPE=0
162 $ GOTO NEXT0
163 $ENDIF
164 $DEAS SYS$OUTPUT
165 $DEFINE SYS$OUTPUT _NLA0:
166 $LINK/EXE=TEST TEST,FREETYPE2:FREETYPE/OPT
167 $TMP = $STATUS
168 $IF (TMP .NE. %X10000001)
169 $ THEN
170 $ LINK/EXE=TEST TEST,FREETYPE2:FREETYPE/LIB,ZLIB:LIBZ/LIB
171 $ TMP = $STATUS
172 $ IF (TMP .NE. %X10000001)
173 $ THEN
174 $ TMP = $STATUS
175 $ HAVE_FREETYPE=0
176 $ GOTO NEXT0
177 $ ELSE
178 $ FREETYPE_STATIC=1
179 $ ENDIF
180 $ENDIF
181 $!
182 $RUN TEST
183 $IF ($STATUS .NE. %X00000001)
184 $ THEN
185 $ HAVE_FREETYPE=0
186 $ GOTO NEXT0
187 $ ELSE
188 $ HAVE_FREETYPE=1
189 $ENDIF
190 $NEXT0:
191 $DEAS SYS$OUTPUT
192 $IF (HAVE_FREETYPE.EQ.1)
193 $ THEN
194 $ WRITE SYS$OUTPUT "Checking for correct FreeType ... Yes"
195 $ RUN TEST
196 $ ELSE
197 $ WRITE SYS$OUTPUT "Checking for correct FreeType ... No"
198 $ WRITE SYS$OUTPUT "This is required library "
199 $ WRITE SYS$OUTPUT "install it first from fafner.dyndns.org/~alexey/libsdl/required.html"
200 $ GOTO EXIT
201 $ENDIF
202 $!
203 $!
204 $HAVE_LIBTIFF=0
205 $!"Checking for libPNG "
206 $ DEFINE SYS$OUTPUT _NLA0:
207 $ CC/OBJECT=TEST.OBJ/INCLUDE=(PNG,ZLIB) SYS$INPUT
208 #include <stdlib.h>
209 #include <png.h>
210 int main()
211 {
212 png_uint_32 n,n1,n2,n3;
213 n=png_access_version_number();
214 n3=n%100; n=n/100;
215 n2=n%100; n=n/100;
216 n1=n%100;
217 if ( (n1<=1)&&(n2<2) )
218 { printf("checking version libPNG: %d.%d.%d\n",n1,n2,n3);
219 printf("This version is too old. Please get newest\n");
220 printf("From fafner.dyndns.org/~alexey/libsdl/public.html\n");
221 exit(2);
222 }
223 printf("checking version libPNG: %d.%d.%d\n",n1,n2,n3);
224 }
225 $!
226 $TMP = $STATUS
227 $DEAS SYS$OUTPUT
228 $IF (TMP .NE. %X10B90001)
229 $ THEN
230 $ HAVE_LIBPNG=0
231 $ GOTO NEXT2
232 $ENDIF
233 $DEFINE SYS$OUTPUT _NLA0:
234 $LINK/EXE=TEST TEST,PNG:LIBPNG$SHR/OPT,ZLIB:LIBZ/LIB
235 $TMP = $STATUS
236 $!WRITE SYS$OUTPUT TMP
237 $IF (TMP .NE. %X10000001)
238 $ THEN
239 $! Trying for static libpng
240 $ LINK/EXE=TEST TEST,PNG:LIBPNG/LIB,ZLIB:LIBZ/LIB
241 $ TMP = $STATUS
242 $ IF (TMP .NE. %X10000001)
243 $ THEN
244 $ LIBPNG_STATIC=0
245 $ HAVE_LIBPNG=0
246 $ GOTO NEXT2
247 $ ELSE
248 $ HAVE_LIBPNG=1
249 $ LIBPNG_STATIC=1
250 $ ENDIF
251 $ ELSE
252 $ HAVE_LIBPNG=1
253 $ LIBPNG_STATIC=0
254 $ENDIF
255 $!
256 $RUN TEST
257 $IF ($STATUS .NE. %X00000001)
258 $ THEN
259 $ HAVE_LIBPNG=0
260 $ ELSE
261 $ HAVE_LIBPNG=1
262 $ENDIF
263 $NEXT2:
264 $DEAS SYS$OUTPUT
265 $IF (HAVE_LIBPNG.EQ.1)
266 $ THEN
267 $ WRITE SYS$OUTPUT "Checking for correct libPNG ... Yes"
268 $ RUN TEST
269 $ ELSE
270 $ WRITE SYS$OUTPUT "Checking for correct libPNG ... No"
271 $ WRITE SYS$OUTPUT "This is fatal. Please download and install good library from fafner.dyndns.org/~alexey/libsdl/public.html"
272 $ GOTO EXIT
273 $ENDIF
274 $!
275 $!
276 $!
277 $! Checking for JPEG ...
278 $ DEFINE SYS$OUTPUT _NLA0:
279 $ CC/OBJECT=TEST.OBJ/INCLUDE=(JPEG) SYS$INPUT
280 #include <stdlib.h>
281 #include <stdio.h>
282 #include <jpeglib.h>
283 #include <jversion.h>
284 int main()
285 {
286 printf("checking version jpeg: %s\n",JVERSION);
287 jpeg_quality_scaling(0);
288 return 0;
289 }
290 $TMP = $STATUS
291 $DEAS SYS$OUTPUT
292 $!WRITE SYS$OUTPUT TMP
293 $IF (TMP .NE. %X10B90001)
294 $ THEN
295 $ HAVE_JPEG=0
296 $ GOTO EXIT
297 $ENDIF
298 $DEFINE SYS$OUTPUT _NLA0:
299 $LINK/EXE=TEST TEST,JPEG:LIBJPEG$SHR/OPT
300 $TMP = $STATUS
301 $DEAS SYS$OUTPUT
302 $!WRITE SYS$OUTPUT TMP
303 $IF (TMP .NE. %X10000001)
304 $ THEN
305 $ LINK/EXE=TEST TEST,JPEG:LIBJPEG/OPT
306 $ TMP = $STATUS
307 $ IF (TMP .NE. %X10000001)
308 $ THEN
309 $ HAVE_JPEG=0
310 $ JPEG_STATIC=0
311 $ GOTO EXIT
312 $ ELSE
313 $ HAVE_JPEG=1
314 $ JPEG_STATIC=1
315 $ ENDIF
316 $ ELSE
317 $ HAVE_JPEG=1
318 $ JPEG_STATIC=0
319 $ENDIF
320 $!
321 $IF (HAVE_JPEG.EQ.1)
322 $ THEN
323 $ WRITE SYS$OUTPUT "Checking for correct jpeg library ... Yes"
324 $ ELSE
325 $ WRITE SYS$OUTPUT "Checking for correct jpeg library ... No"
326 $ WRITE SYS$OUTPUT "This is fatal. Please download and install good library from fafner.dyndns.org/~alexey/libsdl/public.html"
327 $ GOTO EXIT
328 $ENDIF
329 $RUN TEST
330 $!
331 $!
332 $!WRITING BUILD FILES
333 $!
334 $IF (SHARED.EQ.64)
335 $ THEN
336 $ COPY SYS$INPUT LIBGD$DEF.OPT
337 SYMBOL_VECTOR= (-
338 gdAlphaBlend=PROCEDURE,-
339 gdImageCreate=PROCEDURE,-
340 gdImageCreateTrueColor=PROCEDURE,-
341 gdImageCreateFromPng=PROCEDURE,-
342 gdImageCreateFromPngCtx=PROCEDURE,-
343 gdImageCreateFromPngPtr=PROCEDURE,-
344 gdImageCreateFromGif=PROCEDURE,-
345 gdImageCreateFromGifCtx=PROCEDURE,-
346 gdImageCreateFromGifPtr=PROCEDURE,-
347 gdImageCreateFromWBMP=PROCEDURE,-
348 gdImageCreateFromWBMPCtx=PROCEDURE,-
349 gdImageCreateFromWBMPPtr=PROCEDURE,-
350 gdImageCreateFromJpeg=PROCEDURE,-
351 gdImageCreateFromJpegCtx=PROCEDURE,-
352 gdImageCreateFromJpegPtr=PROCEDURE,-
353 gdImageCreateFromPngSource=PROCEDURE,-
354 gdImageCreateFromGd=PROCEDURE,-
355 gdImageCreateFromGdCtx=PROCEDURE,-
356 gdImageCreateFromGdPtr=PROCEDURE,-
357 gdImageCreateFromGd2=PROCEDURE,-
358 gdImageCreateFromGd2Ctx=PROCEDURE,-
359 gdImageCreateFromGd2Ptr=PROCEDURE,-
360 gdImageCreateFromGd2Part=PROCEDURE,-
361 gdImageCreateFromGd2PartCtx=PROCEDURE,-
362 gdImageCreateFromGd2PartPtr=PROCEDURE,-
363 gdImageCreateFromXbm=PROCEDURE,-
364 gdImageCreateFromXpm=PROCEDURE,-
365 gdImageStringFTCircle=PROCEDURE,-
366 gdImageDestroy=PROCEDURE,-
367 gdImageSetPixel=PROCEDURE,-
368 gdImageGetPixel=PROCEDURE,-
369 gdImageGetTrueColorPixel=PROCEDURE,-
370 gdImageAABlend=PROCEDURE,-
371 gdImageLine=PROCEDURE,-
372 gdImageDashedLine=PROCEDURE,-
373 gdImageRectangle=PROCEDURE,-
374 gdImageFilledRectangle=PROCEDURE,-
375 gdImageSetClip=PROCEDURE,-
376 gdImageGetClip=PROCEDURE,-
377 gdImageBoundsSafe=PROCEDURE,-
378 gdImageChar=PROCEDURE,-
379 gdImageCharUp=PROCEDURE,-
380 gdImageString=PROCEDURE,-
381 gdImageStringUp=PROCEDURE,-
382 gdImageString16=PROCEDURE,-
383 gdImageStringUp16=PROCEDURE,-
384 gdFontCacheSetup=PROCEDURE,-
385 gdFontCacheShutdown=PROCEDURE,-
386 gdFreeFontCache=PROCEDURE,-
387 gdImageStringTTF=PROCEDURE,-
388 gdImageStringFT=PROCEDURE,-
389 gdFTUseFontConfig=PROCEDURE,-
390 gdImageStringFTEx=PROCEDURE,-
391 gdImagePolygon=PROCEDURE,-
392 gdImageOpenPolygon=PROCEDURE,-
393 gdImageFilledPolygon=PROCEDURE,-
394 gdImageColorAllocate=PROCEDURE,-
395 gdImageColorAllocateAlpha=PROCEDURE,-
396 gdImageColorClosest=PROCEDURE,-
397 gdImageColorClosestAlpha=PROCEDURE,-
398 gdImageColorClosestHWB=PROCEDURE,-
399 gdImageColorExact=PROCEDURE,-
400 gdImageColorExactAlpha=PROCEDURE,-
401 gdImageColorResolve=PROCEDURE,-
402 gdImageColorResolveAlpha=PROCEDURE,-
403 gdImageColorDeallocate=PROCEDURE,-
404 gdImageCreatePaletteFromTrueCol=PROCEDURE,-
405 gdImageTrueColorToPalette=PROCEDURE,-
406 gdImageColorTransparent=PROCEDURE,-
407 gdImagePaletteCopy=PROCEDURE,-
408 gdImageGif=PROCEDURE,-
409 gdImagePng=PROCEDURE,-
410 gdImagePngCtx=PROCEDURE,-
411 gdImageGifCtx=PROCEDURE,-
412 gdImagePngEx=PROCEDURE,-
413 gdImagePngCtxEx=PROCEDURE,-
414 gdImageWBMP=PROCEDURE,-
415 gdImageWBMPCtx=PROCEDURE,-
416 gdFree=PROCEDURE,-
417 gdImageWBMPPtr=PROCEDURE,-
418 gdImageJpeg=PROCEDURE,-
419 gdImageJpegCtx=PROCEDURE,-
420 gdImageJpegPtr=PROCEDURE,-
421 gdImageGifAnimBegin=PROCEDURE,-
422 gdImageGifAnimAdd=PROCEDURE,-
423 gdImageGifAnimEnd=PROCEDURE,-
424 gdImageGifAnimBeginCtx=PROCEDURE,-
425 gdImageGifAnimAddCtx=PROCEDURE,-
426 gdImageGifAnimEndCtx=PROCEDURE,-
427 gdImageGifAnimBeginPtr=PROCEDURE,-
428 gdImageGifAnimAddPtr=PROCEDURE,-
429 gdImageGifAnimEndPtr=PROCEDURE,-
430 gdImagePngToSink=PROCEDURE,-
431 gdImageGd=PROCEDURE,-
432 gdImageGd2=PROCEDURE,-
433 gdImageGifPtr=PROCEDURE,-
434 gdImagePngPtr=PROCEDURE,-
435 gdImagePngPtrEx=PROCEDURE,-
436 gdImageGdPtr=PROCEDURE,-
437 gdImageGd2Ptr=PROCEDURE,-
438 gdImageFilledArc=PROCEDURE,-
439 gdImageArc=PROCEDURE,-
440 gdImageFilledEllipse=PROCEDURE,-
441 gdImageFillToBorder=PROCEDURE,-
442 gdImageFill=PROCEDURE,-
443 gdImageCopy=PROCEDURE,-
444 gdImageCopyMerge=PROCEDURE,-
445 gdImageCopyMergeGray=PROCEDURE,-
446 gdImageCopyResized=PROCEDURE,-
447 gdImageCopyResampled=PROCEDURE,-
448 gdImageCopyRotated=PROCEDURE,-
449 gdImageSetBrush=PROCEDURE,-
450 gdImageSetTile=PROCEDURE,-
451 gdImageSetAntiAliased=PROCEDURE,-
452 gdImageSetAntiAliasedDontBlend=PROCEDURE,-
453 gdImageSetStyle=PROCEDURE,-
454 gdImageSetThickness=PROCEDURE,-
455 gdImageInterlace=PROCEDURE,-
456 gdImageAlphaBlending=PROCEDURE,-
457 gdImageSaveAlpha=PROCEDURE,-
458 gdNewFileCtx=PROCEDURE,-
459 gdNewDynamicCtx=PROCEDURE,-
460 gdNewDynamicCtxEx=PROCEDURE,-
461 gdNewSSCtx=PROCEDURE,-
462 gdDPExtractData=PROCEDURE,-
463 gdFontGetGiant=PROCEDURE,-
464 gdFontGetLarge=PROCEDURE,-
465 gdFontGetMediumBold=PROCEDURE,-
466 gdFontGetSmall=PROCEDURE,-
467 gdFontGetTiny=PROCEDURE,-
468 gdImageCompare=PROCEDURE,-
469 gdFontGiant=DATA,-
470 GDFONTLARGE=DATA,-
471 GDFONTMEDIUMBOLD=DATA,-
472 GDFONTSMALL=DATA,-
473 GDFONTTINY=DATA-
474 )
475 $ENDIF
476 $!
477 $IF (SHARED.EQ.32)
478 $ THEN
479 $ COPY SYS$INPUT LIBGD$DEF.OPT
480 UNIVERSAL=gdAlphaBlend
481 UNIVERSAL=gdImageCreate
482 UNIVERSAL=gdImageCreateTrueColor
483 UNIVERSAL=gdImageCreateFromPng
484 UNIVERSAL=gdImageCreateFromPngCtx
485 UNIVERSAL=gdImageCreateFromPngPtr
486 UNIVERSAL=gdImageCreateFromGif
487 UNIVERSAL=gdImageCreateFromGifCtx
488 UNIVERSAL=gdImageCreateFromGifPtr
489 UNIVERSAL=gdImageCreateFromWBMP
490 UNIVERSAL=gdImageCreateFromWBMPCtx
491 UNIVERSAL=gdImageCreateFromWBMPPtr
492 UNIVERSAL=gdImageCreateFromJpeg
493 UNIVERSAL=gdImageStringFTCircle
494 UNIVERSAL=gdImageCreateFromJpegCtx
495 UNIVERSAL=gdImageCreateFromJpegPtr
496 UNIVERSAL=gdImageCreateFromPngSource
497 UNIVERSAL=gdImageCreateFromGd
498 UNIVERSAL=gdImageCreateFromGdCtx
499 UNIVERSAL=gdImageCreateFromGdPtr
500 UNIVERSAL=gdImageCreateFromGd2
501 UNIVERSAL=gdImageCreateFromGd2Ctx
502 UNIVERSAL=gdImageCreateFromGd2Ptr
503 UNIVERSAL=gdImageCreateFromGd2Part
504 UNIVERSAL=gdImageCreateFromGd2PartCtx
505 UNIVERSAL=gdImageCreateFromGd2PartPtr
506 UNIVERSAL=gdImageCreateFromXbm
507 UNIVERSAL=gdImageCreateFromXpm
508 UNIVERSAL=gdImageDestroy
509 UNIVERSAL=gdImageSetPixel
510 UNIVERSAL=gdImageGetPixel
511 UNIVERSAL=gdImageGetTrueColorPixel
512 UNIVERSAL=gdImageAABlend
513 UNIVERSAL=gdImageLine
514 UNIVERSAL=gdImageDashedLine
515 UNIVERSAL=gdImageRectangle
516 UNIVERSAL=gdImageFilledRectangle
517 UNIVERSAL=gdImageSetClip
518 UNIVERSAL=gdImageGetClip
519 UNIVERSAL=gdImageBoundsSafe
520 UNIVERSAL=gdImageChar
521 UNIVERSAL=gdImageCharUp
522 UNIVERSAL=gdImageString
523 UNIVERSAL=gdImageStringUp
524 UNIVERSAL=gdImageString16
525 UNIVERSAL=gdImageStringUp16
526 UNIVERSAL=gdFontCacheSetup
527 UNIVERSAL=gdFontCacheShutdown
528 UNIVERSAL=gdFreeFontCache
529 UNIVERSAL=gdImageStringTTF
530 UNIVERSAL=gdImageStringFT
531 UNIVERSAL=gdFTUseFontConfig
532 UNIVERSAL=gdImageStringFTEx
533 UNIVERSAL=gdImagePolygon
534 UNIVERSAL=gdImageOpenPolygon
535 UNIVERSAL=gdImageFilledPolygon
536 UNIVERSAL=gdImageColorAllocate
537 UNIVERSAL=gdImageColorAllocateAlpha
538 UNIVERSAL=gdImageColorClosest
539 UNIVERSAL=gdImageColorClosestAlpha
540 UNIVERSAL=gdImageColorClosestHWB
541 UNIVERSAL=gdImageColorExact
542 UNIVERSAL=gdImageColorExactAlpha
543 UNIVERSAL=gdImageColorResolve
544 UNIVERSAL=gdImageColorResolveAlpha
545 UNIVERSAL=gdImageColorDeallocate
546 UNIVERSAL=gdImageCreatePaletteFromTrueCol
547 UNIVERSAL=gdImageTrueColorToPalette
548 UNIVERSAL=gdImageColorTransparent
549 UNIVERSAL=gdImagePaletteCopy
550 UNIVERSAL=gdImageGif
551 UNIVERSAL=gdImagePng
552 UNIVERSAL=gdImagePngCtx
553 UNIVERSAL=gdImageGifCtx
554 UNIVERSAL=gdImagePngEx
555 UNIVERSAL=gdImagePngCtxEx
556 UNIVERSAL=gdImageWBMP
557 UNIVERSAL=gdImageWBMPCtx
558 UNIVERSAL=gdFree
559 UNIVERSAL=gdImageWBMPPtr
560 UNIVERSAL=gdImageJpeg
561 UNIVERSAL=gdImageJpegCtx
562 UNIVERSAL=gdImageJpegPtr
563 UNIVERSAL=gdImageGifAnimBegin
564 UNIVERSAL=gdImageGifAnimAdd
565 UNIVERSAL=gdImageGifAnimEnd
566 UNIVERSAL=gdImageGifAnimBeginCtx
567 UNIVERSAL=gdImageGifAnimAddCtx
568 UNIVERSAL=gdImageGifAnimEndCtx
569 UNIVERSAL=gdImageGifAnimBeginPtr
570 UNIVERSAL=gdImageGifAnimAddPtr
571 UNIVERSAL=gdImageGifAnimEndPtr
572 UNIVERSAL=gdImagePngToSink
573 UNIVERSAL=gdImageGd
574 UNIVERSAL=gdImageGd2
575 UNIVERSAL=gdImageGifPtr
576 UNIVERSAL=gdImagePngPtr
577 UNIVERSAL=gdImagePngPtrEx
578 UNIVERSAL=gdImageGdPtr
579 UNIVERSAL=gdImageGd2Ptr
580 UNIVERSAL=gdImageFilledArc
581 UNIVERSAL=gdImageArc
582 UNIVERSAL=gdImageFilledEllipse
583 UNIVERSAL=gdImageFillToBorder
584 UNIVERSAL=gdImageFill
585 UNIVERSAL=gdImageCopy
586 UNIVERSAL=gdImageCopyMerge
587 UNIVERSAL=gdImageCopyMergeGray
588 UNIVERSAL=gdImageCopyResized
589 UNIVERSAL=gdImageCopyResampled
590 UNIVERSAL=gdImageCopyRotated
591 UNIVERSAL=gdImageSetBrush
592 UNIVERSAL=gdImageSetTile
593 UNIVERSAL=gdImageSetAntiAliased
594 UNIVERSAL=gdImageSetAntiAliasedDontBlend
595 UNIVERSAL=gdImageSetStyle
596 UNIVERSAL=gdImageSetThickness
597 UNIVERSAL=gdImageInterlace
598 UNIVERSAL=gdImageAlphaBlending
599 UNIVERSAL=gdImageSaveAlpha
600 UNIVERSAL=gdNewFileCtx
601 UNIVERSAL=gdNewDynamicCtx
602 UNIVERSAL=gdNewDynamicCtxEx
603 UNIVERSAL=gdNewSSCtx
604 UNIVERSAL=gdDPExtractData
605 UNIVERSAL=gdFontGetGiant
606 UNIVERSAL=gdFontGetLarge
607 UNIVERSAL=gdFontGetMediumBold
608 UNIVERSAL=gdFontGetSmall
609 UNIVERSAL=gdFontGetTiny
610 UNIVERSAL=gdImageCompare
611 UNIVERSAL=gdFontGiant
612 UNIVERSAL=GDFONTLARGE
613 UNIVERSAL=GDFONTMEDIUMBOLD
614 UNIVERSAL=GDFONTSMALL
615 UNIVERSAL=GDFONTTINY
616
617 $ENDIF
618 $!
619 $!
620 $DEF SYS$OUTPUT _NL0:
621 $!
622 $!Making OPT file for GD$SHR.EXE, i.e without reference to himself
623 $COPY SYS$INPUT OPT.OPT
624 []GD/LIB
625 $IF ((HAVE_LIBPNG.EQ.1) .AND. (LIBPNG_STATIC.EQ.1))
626 $ THEN
627 $ APP SYS$INPUT OPT.OPT
628 PNG:LIBPNG/LIB
629 $ENDIF
630 $IF ((HAVE_LIBPNG.EQ.1) .AND. (LIBPNG_STATIC.EQ.0))
631 $ THEN
632 $ APP PNG:LIBPNG$SHR.OPT OPT.OPT
633 $ENDIF
634 $!
635 $IF ((HAVE_JPEG.EQ.1) .AND. (JPEG_STATIC.EQ.1))
636 $ THEN
637 $ APP SYS$INPUT OPT.OPT
638 JPEG:LIBJPEG/LIB
639 $ENDIF
640 $IF ((HAVE_JPEG.EQ.1) .AND. (JPEG_STATIC.EQ.0))
641 $ THEN
642 $ APP JPEG:LIBJPEG$SHR.OPT OPT.OPT
643 $ENDIF
644 $!
645 $IF (HAVE_LIBTIFF.EQ.1)
646 $ THEN
647 $ APP TIFF:LIBTIFF.OPT OPT.OPT
648 $ENDIF
649 $!
650 $IF (HAVE_FREETYPE.EQ.1) .AND. (FREETYPE_STATIC.EQ.1)
651 $ THEN
652 $ APP SYS$INPUT OPT.OPT
653 FREETYPE2:FREETYPE/LIB
654 ZLIB:LIBZ/LIB
655 $ENDIF
656 $IF (HAVE_FREETYPE.EQ.1) .AND. (FREETYPE_STATIC.EQ.0)
657 $ THEN
658 $ APP FREETYPE2:FREETYPE.OPT OPT.OPT
659 $ENDIF
660 $!
661 $IF (HAVE_ZLIB.EQ.1) .AND. ((FREETYPE_STATIC.NE.1).AND.(JPEG_STATIC.NE.1))
662 $ THEN
663 $ IF (ZLIB_STATIC.EQ.0)
664 $ THEN
665 $ APP SYS$INPUT OPT.OPT
666 SYS$SHARE:LIBZSHR/SHARE
667 $ ELSE
668 $ APP SYS$INPUT OPT.OPT
669 ZLIB:LIBZ/LIB
670 $ ENDIF
671 $ENDIF
672 $!
673 $!
674 $PURGE OPT.OPT
675 $!
676 $!
677 $!Making working LIBGD.OPT file
678 $!
679 $IF (SHARED.GT.0)
680 $ THEN
681 $COPY SYS$INPUT LIBGD.OPT
682 SYS$SHARE:GD$SHR/SHARE
683 $ ELSE
684 $COPY SYS$INPUT LIBGD.OPT
685 LIBGD:GD/LIB
686 $ENDIF
687 $!
688 $!Append OPT files to LIBGD.OPT
689 $IF ((HAVE_LIBPNG.EQ.1) .AND. (LIBPNG_STATIC.EQ.1))
690 $ THEN
691 $ APP SYS$INPUT LIBGD.OPT
692 PNG:LIBPNG/LIB
693 $ENDIF
694 $IF ((HAVE_LIBPNG.EQ.1) .AND. (LIBPNG_STATIC.EQ.0))
695 $ THEN
696 $ APP PNG:LIBPNG$SHR.OPT LIBGD.OPT
697 PNG:LIBPNG/LIB
698 $ENDIF
699 $!
700 $IF ((HAVE_JPEG.EQ.1) .AND. (HAVE_LIBTIFF.NE.1) .AND. (JPEG_STATIC.EQ.1))
701 $ THEN
702 $ APP JPEG:LIBJPEG.OPT LIBGD.OPT
703 $ENDIF
704 $IF ((HAVE_JPEG.EQ.1) .AND. (JPEG_STATIC.EQ.0) .AND. (HAVE_LIBTIFF.NE.1))
705 $ THEN
706 $ APP JPEG:LIBJPEG$SHR.OPT LIBGD.OPT
707 $ENDIF
708 $!
709 $IF (HAVE_LIBTIFF.EQ.1)
710 $ THEN
711 $ APP TIFF:LIBTIFF.OPT LIBGD.OPT
712 $ENDIF
713 $!
714 $IF (HAVE_FREETYPE.EQ.1) .AND. (FREETYPE_STATIC.EQ.1)
715 $ THEN
716 $ APP SYS$INPUT LIBGD.OPT
717 FREETYPE2:FREETYPE/LIB
718 ZLIB:LIBZ/LIB
719 $ENDIF
720 $IF (HAVE_FREETYPE.EQ.1) .AND. (FREETYPE_STATIC.EQ.0)
721 $ THEN
722 $ APP FREETYPE2:FREETYPE.OPT LIBGD.OPT
723 $ENDIF
724 $!
725 $IF (HAVE_ZLIB.EQ.1) .AND. ((FREETYPE_STATIC.NE.1).AND.(JPEG_STATIC.NE.1))
726 $ THEN
727 $ IF (ZLIB_STATIC.EQ.0)
728 $ THEN
729 $ APP SYS$INPUT LIBGD.OPT
730 SYS$SHARE:LIBZSHR/SHARE
731 $ ELSE
732 $ APP SYS$INPUT LIBGD.OPT
733 ZLIB:LIBZ/LIB
734 $ ENDIF
735 $ENDIF
736 $!
737 $PURGE LIBGD.OPT
738 $!
739 $DEAS SYS$OUTPUT
740 $!
741 $OPEN/WRITE OUT BUILD.COM
742 $ WRITE OUT "$",MAKE
743 $ WRITE OUT "$ CURRENT = F$ENVIRONMENT (""DEFAULT"") "
744 $ WRITE OUT "$TMP=CURRENT"
745 $ WRITE OUT "$OPEN/WRITE OUTT LIBGD$STARTUP.COM"
746 $ WRITE OUT "$WRITE OUTT ""DEFINE LIBGD ","'","'","TMP'""
747 $ WRITE OUT "$WRITE OUTT ""GD2COPYPAL==""""$","'","'","TMP'"",""GD2COPYPAL""""
748 $ WRITE OUT "$WRITE OUTT ""GD2TIME==""""$","'","'","TMP'"",""GD2TIME""""
749 $ WRITE OUT "$WRITE OUTT ""GD2TOGIF==""""$","'","'","TMP'"",""GD2TOGIF""""
750 $ WRITE OUT "$WRITE OUTT ""GD2TOPNG==""""$","'","'","TMP'"",""GD2TOPNG""""
751 $ WRITE OUT "$WRITE OUTT ""GDCMPGIF==""""$","'","'","TMP'"",""GDCMPGIF""""
752 $ WRITE OUT "$WRITE OUTT ""GDTOPNG==""""$","'","'","TMP'"",""GDTOPNG""""
753 $ WRITE OUT "$WRITE OUTT ""GIFTOGD2==""""$","'","'","TMP'"",""GIFTOGD2""""
754 $ WRITE OUT "$WRITE OUTT ""PNGTOGD==""""$","'","'","TMP'"",""PNGTOGD""""
755 $ WRITE OUT "$WRITE OUTT ""PNGTOGD2==""""$","'","'","TMP'"",""PNGTOGD2""""
756 $ WRITE OUT "$WRITE OUTT ""WEBPNG==""""$","'","'","TMP'"",""WEBPNG""""
757 $!
758 $ WRITE OUT "$WRITE SYS$OUTPUT "" ""
759 $ WRITE OUT "$WRITE SYS$OUTPUT ""***************************************************************************** ""
760 $ WRITE OUT "$WRITE SYS$OUTPUT ""LIBGD$STARTUP.COM has been created. ""
761 $ WRITE OUT "$WRITE SYS$OUTPUT ""This file setups all logicals needed. It should be execute before using ""
762 $ WRITE OUT "$WRITE SYS$OUTPUT ""Nice place to call it - LOGIN.COM ""
763 $ WRITE OUT "$WRITE SYS$OUTPUT """"
764 $ WRITE OUT "$WRITE SYS$OUTPUT ""Using:""
765 $ WRITE OUT "$WRITE SYS$OUTPUT ""CC/INCL=LIBGD PROG""
766 $ WRITE OUT "$WRITE SYS$OUTPUT ""LINK PROG, LIBGD:LIBGD/OPT""
767 $ WRITE OUT "$WRITE SYS$OUTPUT ""***************************************************************************** ""
768 $ WRITE OUT "$WRITE SYS$OUTPUT ""***************************************************************************** ""
769 $CLOSE OUT
770 $!
771 $!
772 $!Writing config.h
773 $COPY SYS$INPUT CONFIG.H
774 /* Generated by configure.com for OpenVMS */
775
776 /* Define to 1 if you have the <dlfcn.h> header file. */
777 #define HAVE_DLFCN_H 1
778
779 /* Define to 1 if you have the <errno.h> header file. */
780 #define HAVE_ERRNO_H 1
781
782
783
784 /* Define to 1 if you have the <inttypes.h> header file. */
785 #define HAVE_INTTYPES_H 1
786
787
788 #define PACKAGE_NAME "GD"
789
790 /* Define to the full name and version of this package. */
791 #define PACKAGE_STRING "GD 2.0.34"
792
793 /* Define to the one symbol short name of this package. */
794 #define PACKAGE_TARNAME "gd"
795
796 /* Define to the version of this package. */
797 #define PACKAGE_VERSION "2.0.34"
798
799 /* Define to necessary symbol if this constant uses a non-standard name on
800 * your system. */
801 /* #undef PTHREAD_CREATE_JOINABLE */
802
803 /* Define to 1 if you have the ANSI C header files. */
804 #define STDC_HEADERS 1
805
806 /* Version number of package */
807 #define VERSION "2.0.34"
808
809 /* Define to 1 if you have the `m' library (-lm). */
810 #define HAVE_LIBM 1
811
812
813 /* Define to 1 if you have the <libpng/png.h> header file. */
814 /* #undef HAVE_LIBPNG_PNG_H */
815
816
817
818 /* Define to 1 if you have the <limits.h> header file. */
819 //#define HAVE_LIMITS_H 1
820
821
822 /* Define to 1 if you have the <memory.h> header file. */
823 #define HAVE_MEMORY_H 1
824
825
826 /* Define if you have POSIX threads libraries and header files. */
827 #define HAVE_PTHREAD 1
828
829 /* Define to 1 if you have the <stddef.h> header file. */
830 #define HAVE_STDDEF_H 1
831
832 /* Define to 1 if you have the <stdint.h> header file. */
833 //#define HAVE_STDINT_H 1
834
835 /* Define to 1 if you have the <stdlib.h> header file. */
836 #define HAVE_STDLIB_H 1
837
838 /* Define to 1 if you have the <strings.h> header file. */
839 #define HAVE_STRINGS_H 1
840
841 /* Define to 1 if you have the <string.h> header file. */
842 #define HAVE_STRING_H 1
843
844 /* Define to 1 if you have the <sys/stat.h> header file. */
845 #define HAVE_SYS_STAT_H 1
846
847 /* Define to 1 if you have the <sys/types.h> header file. */
848 #define HAVE_SYS_TYPES_H 1
849
850 /* Define to 1 if you have the <unistd.h> header file. */
851 #define HAVE_UNISTD_H 1
852
853 /* Define as const if the declaration of iconv() needs const. */
854 //#define ICONV_CONST
855
856 /* Name of package */
857 #define PACKAGE "gd"
858
859 /* Define to the address where bug reports for this package should be sent. */
860 #define PACKAGE_BUGREPORT "http://bugs.libgd.org"
861
862 /* Define to the full name of this package. */
863
864
865
866 $IF HAVE_ICONV.EQ.1
867 $ THEN
868 $ APP SYS$INPUT CONFIG.H
869 /* Define if you have the iconv() function. */
870 #define HAVE_ICONV 1
871 /* Define to 1 if you have the <iconv.h> header file. */
872 #define HAVE_ICONV_H 1
873 /* Define if <iconv.h> defines iconv_t. */
874 #define HAVE_ICONV_T_DEF 1
875 $ENDIF
876 $IF HAVE_LIBTIFF.EQ.1
877 $ THEN
878 $ APP SYS$INPUT CONFIG.H
879 #define HAVE_LIBTIFF 1
880 $ENDIF
881 $IF HAVE_LIBPNG.EQ.1
882 $ THEN
883 $ APP SYS$INPUT CONFIG.H
884 #define HAVE_LIBPNG 1
885 #define HAVE_PNG_H 1
886 $ENDIF
887 $IF HAVE_FREETYPE.EQ.1
888 $ THEN
889 $ APP SYS$INPUT CONFIG.H
890 #define HAVE_LIBFREETYPE 1
891 #define HAVE_FT2BUILD_H 1
892 $ENDIF
893 $IF HAVE_JPEG.EQ.1
894 $ THEN
895 $ APP SYS$INPUT CONFIG.H
896 #define HAVE_LIBJPEG 1
897 $ENDIF
898 $IF HAVE_ZLIB.EQ.1
899 $ THEN
900 $ APP SYS$INPUT CONFIG.H
901 #define HAVE_LIBZ 1
902 $ENDIF
903 $!
904 $DEAS SYS$OUTPUT
905 $!
906 $!
907 $!
908 $COP SYS$INPUT DESCRIP.MMS
909 # Generated by CONFIGURE.COM
910 # Alexey Chupahin elvis_75@mail.ru
911 #
912
913 .FIRST
914 DEF LIBGD []
915
916 CC=cc
917 CFLAGS=/OPT=(INLINE=SPEED) /INCL=([],JPEG,PNG,FREETYPE2,ZLIB,TIFF) /DEF=(HAVE_CONFIG_H)/WARN=(DIS=MACROREDEF)
918 LIBS=[]LIBGD/OPT
919
920
921 ALL : \
922 GD.OLB,\
923 $IF (SHARED.GT.0)
924 $ THEN
925 $ APP SYS$INPUT DESCRIP.MMS
926 GD$SHR.EXE,\
927 $ENDIF
928 $!
929 $APP SYS$INPUT DESCRIP.MMS
930 ANNOTATE.EXE,\
931 CIRCLETEXTTEST.EXE,\
932 FONTCONFIGTEST.EXE,\
933 CIRCLETEXTTEST.EXE,\
934 FONTCONFIGTEST.EXE,\
935 FONTSIZETEST.EXE,\
936 FONTWHEELTEST.EXE,\
937 GD2COPYPAL.EXE,\
938 GD2TIME.EXE,\
939 GD2TOGIF.EXE,\
940 GD2TOPNG.EXE,\
941 GDCMPGIF.EXE,\
942 GDDEMO.EXE,\
943 GDTEST.EXE,\
944 GDTESTFT.EXE,\
945 GDTOPNG.EXE,\
946 GIFANIMTEST.EXE,\
947 GIFTOGD2.EXE,\
948 PNGTOGD.EXE,\
949 PNGTOGD2.EXE,\
950 TESTAC.EXE,\
951 TESTTR.EXE,\
952 WEBPNG.EXE,\
953 GDPARTTOPNG.EXE
954 $!
955
956 ANNOTATE.EXE : ANNOTATE.OBJ
957 LINK $<, $(LIBS)
958
959 CIRCLETEXTTEST.EXE : CIRCLETEXTTEST.OBJ
960 LINK $<, $(LIBS)
961
962 FONTCONFIGTEST.EXE : FONTCONFIGTEST.OBJ
963 LINK $<, $(LIBS)
964
965 FONTSIZETEST.EXE : FONTSIZETEST.OBJ
966 LINK $<, $(LIBS)
967
968 FONTWHEELTEST.EXE : FONTWHEELTEST.OBJ
969 LINK $<, $(LIBS)
970
971 GD2COPYPAL.EXE : GD2COPYPAL.OBJ
972 LINK $<, $(LIBS)
973
974 GD2TIME.EXE : GD2TIME.OBJ
975 LINK $<, $(LIBS)
976
977 GD2TOGIF.EXE : GD2TOGIF.OBJ
978 LINK $<, $(LIBS)
979
980 GD2TOPNG.EXE : GD2TOPNG.OBJ
981 LINK $<, $(LIBS)
982
983
984 GDCMPGIF.EXE : GDCMPGIF.OBJ
985 LINK $<, $(LIBS)
986
987
988 GDDEMO.EXE : GDDEMO.OBJ
989 LINK $<, $(LIBS)
990
991
992 GDTEST.EXE : GDTEST.OBJ
993 LINK $<, $(LIBS)
994
995
996 GDTESTFT.EXE : GDTESTFT.OBJ
997 LINK $<, $(LIBS)
998
999
1000 GDTOPNG.EXE : GDTOPNG.OBJ
1001 LINK $<, $(LIBS)
1002
1003
1004 GIFANIMTEST.EXE : GIFANIMTEST.OBJ
1005 LINK $<, $(LIBS)
1006
1007 GIFTOGD2.EXE : GIFTOGD2.OBJ
1008 LINK $<, $(LIBS)
1009
1010 GIFTOGD2.OBJ : GIFTOGD2.C
1011 CC $(CFLAGS) GIFTOGD2.C
1012
1013
1014
1015 PNGTOGD.EXE : PNGTOGD.OBJ
1016 LINK $<, $(LIBS)
1017
1018
1019 PNGTOGD2.EXE : PNGTOGD2.OBJ
1020 LINK $<, $(LIBS)
1021
1022
1023 TESTAC.EXE : TESTAC.OBJ
1024 LINK $<, $(LIBS)
1025
1026
1027 TESTTR.EXE : TESTTR.OBJ
1028 LINK $<, $(LIBS)
1029
1030
1031 WEBPNG.EXE : WEBPNG.OBJ
1032 LINK $<, $(LIBS)
1033
1034
1035 GDPARTTOPNG.EXE : GDPARTTOPNG.OBJ
1036 LINK $<, $(LIBS)
1037
1038
1039 OBJ=\
1040 GD.OBJ,\
1041 GDCACHE.OBJ,\
1042 GDFONTG.OBJ,\
1043 GDFONTL.OBJ,\
1044 GDFONTMB.OBJ,\
1045 GDFONTS.OBJ,\
1046 GDFONTT.OBJ,\
1047 GDFT.OBJ,\
1048 GDFX.OBJ,\
1049 GDHELPERS.OBJ,\
1050 GDKANJI.OBJ,\
1051 GDTABLES.OBJ,\
1052 GDXPM.OBJ,\
1053 GD_GD.OBJ,\
1054 GD_GD2.OBJ,\
1055 GD_GIF_IN.OBJ,\
1056 GD_GIF_OUT.OBJ,\
1057 GD_IO.OBJ,\
1058 GD_IO_DP.OBJ,\
1059 GD_IO_FILE.OBJ,\
1060 GD_IO_SS.OBJ,\
1061 GD_JPEG.OBJ,\
1062 GD_PNG.OBJ,\
1063 GD_SECURITY.OBJ,\
1064 GD_SS.OBJ,\
1065 GD_TOPAL.OBJ,\
1066 GD_WBMP.OBJ,\
1067 WBMP.OBJ
1068
1069
1070 GD.OLB : $(OBJ)
1071 LIB/CREA GD.OLB $(OBJ)
1072
1073 GD$SHR.EXE : $(OBJ)
1074 LINK/SHARE=GD$SHR GD.OBJ,LIBGD$DEF/OPT,OPT/OPT
1075 COPY GD$SHR.EXE SYS$SHARE
1076
1077 CLEAN :
1078 DEL [...]*.OBJ;*
1079 DEL [...]*.OLB;*
1080 DEL [...]*.EXE;*
1081 $!DEL TMP.MMS;*
1082 $!
1083 $IF (F$SEARCH("GD.H;2").EQS."")
1084 $ THEN
1085 $ WRITE SYS$OUTPUT "Patching GD.H"
1086 $ DEF SYS$OUTPUT "_NLA0:"
1087 $ COPY SYS$INPUT VMS.VMS
1088 #define gdImageCreatePaletteFromTrueColor gdImageCreatePaletteFromTrueCol
1089 $ APP GD.H;1 VMS.VMS
1090 $ REN VMS.VMS GD.H;2
1091 $ DEL VMS.VMS;*
1092 $ DEAS SYS$INPUT
1093 $ENDIF
1094 $!
1095 $!
1096 $!
1097 $!
1098 $WRITE SYS$OUTPUT " "
1099 $WRITE SYS$OUTPUT " "
1100 $WRITE SYS$OUTPUT "Now you can type @BUILD "
1101 $!
1102 $EXIT:
1103 $DEFINE SYS$OUTPUT _NLA0:
1104 $DEL TEST.OBJ;*
1105 $DEL TEST.C;*
1106 $DEL TEST.EXE;*
1107 $DEAS SYS$OUTPUT
0 Dear OpenVMS user,
1
2 Installation process is identical to one in *nix* world and consist to
3 four simple steps:
4 1. Installing required libraries
5 2. Configuration
6 3. Compiling
7 4. Installation.
8
9
10 1. Please install required libraries first:
11
12 1. ZLIB 1.2 or newer
13 2. PNG 1.2.12 or newer
14 3. FreeType 2
15 4. JPEG 6B
16
17 All may be found at OpenVMS libSDL porting project site
18 http://fafner.dyndns.org/~alexey/libsdl/required.html
19
20 Also, system should have MMS make utility from DEC or
21 free analogue MMK. And C compiler with runtime, of course. ;)
22
23
24 2. Configuration is doing automatically by a configuration script:
25
26 $@[.VMS]CONFIGURE
27
28 The script detects hardware,system and required libraries have been installed.
29 Compilation stage will be prepeared to create shared and static libraries.
30 Alpha,IA64 or VAX platform are supported. Optional argument "static"
31 tells to configurator to make static libraries only:
32
33 $@[.VMS]CONFIGURE STATIC
34
35 CONFIGURE script checks your ZLIB, FREETYPE, JPEG, PNG libraries.
36 If it detects any troubles, you may get and install good and tested ones
37 from OpenVMS libSDL porting project site:
38 http://fafner.dyndns.org/~alexey/libsdl/required.html
39
40 When success, it creates a building script named BUILD.COM
41
42 3. Compilation:
43
44 $@BUILD
45
46 It should be error-free.
47
48 When success, it creates a setup script named LIBGD$STARTUP.COM
49
50 4. Setup OpenVMS environment before using libGD:
51
52 $@LIBGD$STARTUP
53
54 LIBGD and its utilites are ready to using.
55
56 Optionally you may insert this startup file into your LOGIN.COM
57 to set libGD environment every time you login automatically.
58
59 To learn libGD please refer libGD official documentation.
60 Compiling with library should be:
61
62 $CC/INCL=LIBGD PROG
63 $LINK PROG, LIBGD:LIBGD/OPT
64
65
66
67 yours,
68 Alexey Chupahin
69 Rostov-on-Don, Russia
70 elvis_75@mail.ru alex@rostov.rs-ultra.ru
0 #ifdef HAVE_CONFIG_H
1 #include "config.h"
2 #endif
3
4 #include <stdio.h>
5 #include <stdlib.h>
6 #include <string.h>
7 #include "gd.h"
8
9 /* A neat little utility which adds freetype text to
10 existing JPEG images. Type annotate -h for instructions.
11 Thanks to Joel Dubiner for supporting this work. -TBB */
12
13 enum
14 {
15 left, center, right
16 };
17
18 int
19 main (int argc, char *argv[])
20 {
21 #ifndef HAVE_LIBFREETYPE
22 /* 2.0.12 */
23 fprintf (stderr, "annotate is not useful without freetype.\n"
24 "Install freetype, then './configure; make clean; make install'\n"
25 "the gd library again.\n");
26 return 1;
27 #else
28 gdImagePtr im;
29 char *iin, *iout;
30 FILE *in, *out;
31 char s[1024];
32 int bounds[8];
33 int lines = 1;
34 int color = gdTrueColor (0, 0, 0);
35 char font[1024];
36 int size = 12;
37 int align = left;
38 int x = 0, y = 0;
39 char *fontError;
40 strcpy (font, "times");
41 if (argc != 3)
42 {
43 fprintf (stderr, "Usage: annotate imagein.jpg imageout.jpg\n\n");
44 fprintf (stderr, "Standard input should consist of\n");
45 fprintf (stderr, "lines in the following formats:\n");
46 fprintf (stderr, "color r g b (0-255 each) [a (0-127, 0 is opaque)]\n");
47 fprintf (stderr, "font fontname\n");
48 fprintf (stderr, "size pointsize\n");
49 fprintf (stderr, "align (left|right|center)\n");
50 fprintf (stderr, "move x y\n");
51 fprintf (stderr, "text actual-output-text\n\n");
52 fprintf (stderr,
53 "If the file 'paris.ttf' exists in /usr/share/fonts/truetype or in a\n");
54 fprintf (stderr,
55 "location specified in the GDFONTPATH environment variable, 'font paris' is\n");
56 fprintf (stderr,
57 "sufficient. You may also specify the full, rooted path of a font file.\n");
58 exit (1);
59 }
60 iin = argv[1];
61 iout = argv[2];
62 in = fopen (iin, "rb");
63 if (!in)
64 {
65 fprintf (stderr, "Couldn't open %s\n", iin);
66 exit (2);
67 }
68 #ifdef HAVE_LIBJPEG
69 im = gdImageCreateFromJpeg (in);
70 #else
71 fprintf (stderr, "No JPEG library support available.\n");
72 #endif
73 fclose (in);
74 if (!im)
75 {
76 fprintf (stderr, "%s did not load properly\n", iin);
77 exit (3);
78 }
79 while (fgets (s, sizeof (s), stdin))
80 {
81 char *st;
82 char *text;
83 st = strtok (s, " \t\r\n");
84 if (!st)
85 {
86 /* Be nice about blank lines */
87 continue;
88 }
89 if (!strcmp (st, "font"))
90 {
91 char *st = strtok (0, " \t\r\n");
92 if (!st)
93 {
94 goto badLine;
95 }
96 strcpy (font, st);
97 }
98 else if (!strcmp (st, "align"))
99 {
100 char *st = strtok (0, " \t\r\n");
101 if (!st)
102 {
103 goto badLine;
104 }
105 if (!strcmp (st, "left"))
106 {
107 align = 0;
108 }
109 else if (!strcmp (st, "center"))
110 {
111 align = 1;
112 }
113 else if (!strcmp (st, "right"))
114 {
115 align = 2;
116 }
117 }
118 else if (!strcmp (st, "size"))
119 {
120 char *st = strtok (0, " \t\r\n");
121 if (!st)
122 {
123 goto badLine;
124 }
125 size = atoi (st);
126 }
127 else if (!strcmp (st, "color"))
128 {
129 char *st = strtok (0, "\r\n");
130 int r, g, b, a = 0;
131 if (!st)
132 {
133 goto badLine;
134 }
135 if (sscanf (st, "%d %d %d %d", &r, &g, &b, &a) < 3)
136 {
137 fprintf (stderr, "Bad color at line %d\n", lines);
138 exit (2);
139 }
140 color = gdTrueColorAlpha (r, g, b, a);
141 }
142 else if (!strcmp (st, "move"))
143 {
144 char *st = strtok (0, "\r\n");
145 if (!st)
146 {
147 goto badLine;
148 }
149 if (sscanf (st, "%d %d", &x, &y) != 2)
150 {
151 fprintf (stderr, "Missing coordinates at line %d\n", lines);
152 exit (3);
153 }
154 }
155 else if (!strcmp (st, "text"))
156 {
157 int rx = x;
158 text = strtok (0, "\r\n");
159 if (!text)
160 {
161 text = "";
162 }
163 gdImageStringFT (0, bounds, color, font, size, 0, x, y, text);
164 switch (align)
165 {
166 case left:
167 break;
168 case center:
169 rx -= (bounds[2] - bounds[0]) / 2;
170 break;
171 case right:
172 rx -= (bounds[2] - bounds[0]);
173 break;
174 }
175 fontError = gdImageStringFT (im, 0, color, font,
176 size, 0, rx, y, text);
177 if (fontError)
178 {
179 fprintf (stderr, "font error at line %d: %s\n", lines,
180 fontError);
181 exit (7);
182 }
183 y -= (bounds[7] - bounds[1]);
184 }
185 else
186 {
187 goto badLine;
188 }
189 lines++;
190 continue;
191 badLine:
192 fprintf (stderr, "Bad syntax, line %d\n", lines);
193 exit (4);
194 }
195 out = fopen (iout, "wb");
196 if (!out)
197 {
198 fprintf (stderr, "Cannot create %s\n", iout);
199 exit (5);
200 }
201 #ifdef HAVE_LIBJPEG
202 gdImageJpeg (im, out, 95);
203 #else
204 fprintf (stderr, "No JPEG library support available.\n");
205 #endif
206 gdImageDestroy (im);
207 fclose (out);
208 return 0;
209 #endif /* HAVE_LIBFREETYPE */
210 }
0 #!/usr/bin/perl -w
1
2 #
3 # Simple convertor from bdf to gd font format.
4 #
5 # Author: Jan Pazdziora, adelton@fi.muni.cz, http://www.fi.muni.cz/~adelton/
6 # at Faculty of Informatics, Masaryk University in Brno, Czech Republic.
7 #
8 # Example of use:
9 # fstobdf -s fontserverhost:7100 -fn 8x16 | ./bdftogd FontLarge gdfontl
10 #
11
12 use strict;
13
14 my $VERSION = '0.60';
15 my $now = localtime;
16
17 if (@ARGV != 2)
18 { die "usage: bdftogd fontname filename, eg. bdftogd FontLarge gdfontl\n"; }
19
20 my $gdname = shift;
21 $gdname = 'gd' . $gdname unless $gdname =~ /^gd/i;
22
23 my $filename = shift;
24 $filename = 'gd' . $filename unless $filename =~ /^gd/i;
25
26 if (-f "$filename.c") { die "File $filename.c already exists, won't overwrite\n"; }
27 if (-f "$filename.h") { die "File $filename.h already exists, won't overwrite\n"; }
28
29 my ($width, $height);
30 my (@data, @left, @bottom);
31 my ($globalleft, $globaltop);
32
33 my ($minchar, $maxchar);
34
35 my ($copyright, $fontdef);
36
37 my $currentchar;
38 my $gobitmap = 0;
39
40
41 while (<>)
42 {
43 chomp;
44 s/\r$//;
45 my ($tag, $value) = split / /, $_, 2;
46 die "Font is not fixed width\n"
47 if $tag eq 'SPACING' and not $value =~ /[CM]/i;
48
49 $currentchar = $value if $tag eq 'ENCODING';
50 $minchar = $currentchar if not defined $minchar
51 or $currentchar < $minchar;
52 $maxchar = $currentchar if not defined $maxchar
53 or $currentchar > $maxchar;
54
55 if ($tag eq 'ENDCHAR')
56 {
57 $gobitmap = 0;
58 my $bottom = $globaltop - $bottom[$currentchar];
59
60
61 if ($bottom > 0)
62 { $data[$currentchar] = substr $data[$currentchar], 0, length($data[$currentchar]) - $bottom * $width; }
63 else
64 { $data[$currentchar] .= '0' x (-$bottom * $width); }
65 }
66
67 if ($tag eq 'FONTBOUNDINGBOX')
68 {
69 my ($tag, $wid, $hei, $left, $top) = split / /;
70 if (defined $top)
71 {
72 $globalleft = $left;
73 $globaltop = $top;
74 $height = $hei;
75 $width = $wid;
76 }
77 }
78 if ($tag eq 'FONT' and not defined $fontdef)
79 { $fontdef = $value; }
80 if ($tag eq 'COPYRIGHT' and not defined $copyright)
81 { $copyright = $value; }
82
83 if ($tag eq 'BBX')
84 {
85 my ($tag, $wid, $hei, $left, $bottom) = split / /;
86 if (defined $bottom)
87 {
88 $left[$currentchar] = $left;
89 $bottom[$currentchar] = $bottom;
90 }
91 }
92
93 if ($gobitmap)
94 {
95 my $value = pack 'H*', $_;
96 my $bits = unpack 'B*', $value;
97 $bits = ('0' x $left[$currentchar]) . $bits;
98 $bits .= '0' x ($width - length $bits);
99 $bits = substr $bits, 0, $width;
100 $data[$currentchar] .= $bits;
101 }
102
103 if ($tag eq 'BITMAP')
104 {
105 $gobitmap = 1;
106 $data[$currentchar] = '';
107 }
108 }
109
110 my $info = <<"EOF";
111 /*
112 This is a header file for gd font, generated using
113 bdftogd version $VERSION by Jan Pazdziora, adelton\@fi.muni.cz
114 from bdf font
115 $fontdef
116 at $now.
117 EOF
118
119 if (defined $copyright)
120 {
121 $info .= <<"EOF";
122 The original bdf was holding following copyright:
123 $copyright
124 */
125 EOF
126 }
127 else
128 {
129 $info .= <<"EOF";
130 No copyright info was found in the original bdf.
131 */
132 EOF
133 }
134
135 open FILEC, "> $filename.c" or die "Error writing $filename.c: $!\n";
136 open FILEH, "> $filename.h" or die "Error writing $filename.h: $!\n";
137 print FILEC <<"EOF";
138
139 $info
140
141 #include "$filename.h"
142
143 char ${gdname}Data[] = {
144 EOF
145
146 $minchar = 0 unless defined $minchar;
147 $maxchar = 255 unless defined $maxchar;
148 for (my $i = $minchar; $i <= $maxchar; $i++)
149 {
150 $data[$i] = '' unless defined $data[$i];
151 $data[$i] = '0' x ($width * $height - length $data[$i]) . $data[$i];
152
153 print FILEC "/* Char $i */\n";
154 for my $line (0 .. $height - 1)
155 { print FILEC join ',', split(//, substr($data[$i], $line * $width, $width)), "\n"; }
156
157 print FILEC "\n";
158
159 next;
160
161 for my $line (0 .. $height - 1)
162 { print substr($data[$i], $line * $width, $width), "\n"; }
163 }
164
165 my $capdef = "\U_${filename}_H_";
166
167 print FILEC <<"EOF";
168
169 };
170
171 gdFont ${gdname}Rep = {
172 @{[ $maxchar - $minchar + 1]},
173 $minchar,
174 $width,
175 $height,
176 ${gdname}Data
177 };
178
179 gdFontPtr ${gdname} = &${gdname}Rep;
180
181 /* This file has not been truncated. */
182
183 EOF
184
185
186 close FILEC;
187
188 print FILEH <<"EOF";
189
190 #ifndef $capdef
191 #define $capdef 1
192
193 $info
194
195 #include "gd.h"
196
197 extern gdFontPtr $gdname;
198
199 #endif
200
201 EOF
202
203 1;
204
0 #ifdef HAVE_CONFIG_H
1 #include "config.h"
2 #endif
3
4 #include <stdio.h>
5 #include "gd.h"
6
7 int
8 main (int argc, char *argv[])
9 {
10 /* 2.0.22: can't depend on PNG either */
11 #ifndef HAVE_LIBPNG
12 fprintf (stderr, "Requires PNG support, gd was compiled without it\n");
13 exit (0);
14 #else
15 char *error;
16 FILE *in = 0;
17 FILE *out;
18 gdImagePtr im;
19 int radius;
20 /* Create an image of text on a circle, with an
21 alpha channel so that we can copy it onto a
22 background */
23 /* TBB: 2.0.18: shouldn't depend on JPEG */
24 #ifdef HAVE_LIBJPEG
25 in = fopen ("eleanor.jpg", "rb");
26 if (!in)
27 {
28 im = gdImageCreateTrueColor (300, 300);
29 }
30 else
31 {
32 im = gdImageCreateFromJpeg (in);
33 fclose (in);
34 }
35 #else
36 im = gdImageCreateTrueColor (300, 300);
37 #endif /* HAVE_LIBJPEG */
38 if (gdImageSX (im) < gdImageSY (im))
39 {
40 radius = gdImageSX (im) / 2;
41 }
42 else
43 {
44 radius = gdImageSY (im) / 2;
45 }
46 error = gdImageStringFTCircle (im,
47 gdImageSX (im) / 2,
48 gdImageSY (im) / 2,
49 radius,
50 radius / 2,
51 0.8,
52 "arial",
53 24,
54 "top text",
55 "bottom text",
56 gdTrueColorAlpha (192, 100, 255, 32));
57 if (error)
58 {
59 fprintf(stderr, "gdImageStringFTEx error: %s\n", error);
60 }
61 out = fopen ("gdfx.png", "wb");
62 if (!out)
63 {
64 fprintf (stderr, "Can't create gdfx.png\n");
65 return 1;
66 }
67 gdImagePng (im, out);
68 fclose (out);
69 gdImageDestroy (im);
70 #endif /* HAVE_LIBPNG */
71 return 0;
72 }
0 message(STATUS "Checking whether system has ANSI C header files")
1 include(CheckPrototypeExists)
2
3 include(CheckPrototypeExists)
4 check_include_files("dlfcn.h;stdint.h;stddef.h;inttypes.h;stdlib.h;strings.h;string.h;float.h" StandardHeadersExist)
5 if(StandardHeadersExist)
6 check_prototype_exists(memchr string.h memchrExists)
7 if(memchrExists)
8
9 check_prototype_exists(free stdlib.h freeExists)
10 if(freeExists)
11 message(STATUS "ANSI C header files - found")
12 set(STDC_HEADERS 1 CACHE INTERNAL "System has ANSI C header files")
13 set(HAVE_STRINGS_H 1)
14 set(HAVE_STRING_H 1)
15 set(HAVE_FLOAT_H 1)
16 set(HAVE_STDLIB_H 1)
17 set(HAVE_STDDEF_H 1)
18 set(HAVE_STDINT_H 1)
19 set(HAVE_INTTYPES_H 1)
20 set(HAVE_DLFCN_H 1)
21 endif(freeExists)
22 endif(memchrExists)
23 endif(StandardHeadersExist)
24
25 if(NOT STDC_HEADERS)
26 message(STATUS "ANSI C header files - not found")
27 set(STDC_HEADERS 0 CACHE INTERNAL "System has ANSI C header files")
28 endif(NOT STDC_HEADERS)
29
30
31 check_include_files(unistd.h HAVE_UNISTD_H)
32
33 include(CheckDIRSymbolExists)
34 check_dirsymbol_exists("sys/stat.h;sys/types.h;dirent.h" HAVE_DIRENT_H)
35 if (HAVE_DIRENT_H)
36 set(HAVE_SYS_STAT_H 1)
37 set(HAVE_SYS_TYPES_H 1)
38 endif (HAVE_DIRENT_H)
39
40 check_include_files("dlfcn.h;stdint.h;stddef.h;inttypes.h;stdlib.h;strings.h;string.h;float.h" StandardHeadersExist)
41 set(HAVE_LIBM 1)
0 # - Check if the DIR symbol exists like in AC_HEADER_DIRENT.
1 # CHECK_DIRSYMBOL_EXISTS(FILES VARIABLE)
2 #
3 # FILES - include files to check
4 # VARIABLE - variable to return result
5 #
6 # This module is a small but important variation on CheckSymbolExists.cmake.
7 # The symbol always searched for is DIR, and the test programme follows
8 # the AC_HEADER_DIRENT test programme rather than the CheckSymbolExists.cmake
9 # test programme which always fails since DIR tends to be typedef'd
10 # rather than #define'd.
11 #
12 # The following variables may be set before calling this macro to
13 # modify the way the check is run:
14 #
15 # CMAKE_REQUIRED_FLAGS = string of compile command line flags
16 # CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
17 # CMAKE_REQUIRED_INCLUDES = list of include directories
18 # CMAKE_REQUIRED_LIBRARIES = list of libraries to link
19
20 MACRO(CHECK_DIRSYMBOL_EXISTS FILES VARIABLE)
21 IF(NOT DEFINED ${VARIABLE})
22 SET(CMAKE_CONFIGURABLE_FILE_CONTENT "/* */\n")
23 SET(MACRO_CHECK_DIRSYMBOL_EXISTS_FLAGS ${CMAKE_REQUIRED_FLAGS})
24 IF(CMAKE_REQUIRED_LIBRARIES)
25 SET(CHECK_DIRSYMBOL_EXISTS_LIBS
26 "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
27 ELSE(CMAKE_REQUIRED_LIBRARIES)
28 SET(CHECK_DIRSYMBOL_EXISTS_LIBS)
29 ENDIF(CMAKE_REQUIRED_LIBRARIES)
30 IF(CMAKE_REQUIRED_INCLUDES)
31 SET(CMAKE_DIRSYMBOL_EXISTS_INCLUDES
32 "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
33 ELSE(CMAKE_REQUIRED_INCLUDES)
34 SET(CMAKE_DIRSYMBOL_EXISTS_INCLUDES)
35 ENDIF(CMAKE_REQUIRED_INCLUDES)
36 FOREACH(FILE ${FILES})
37 SET(CMAKE_CONFIGURABLE_FILE_CONTENT
38 "${CMAKE_CONFIGURABLE_FILE_CONTENT}#include <${FILE}>\n")
39 ENDFOREACH(FILE)
40 SET(CMAKE_CONFIGURABLE_FILE_CONTENT
41 "${CMAKE_CONFIGURABLE_FILE_CONTENT}\nint main()\n{if ((DIR *) 0) return 0;}\n")
42
43 CONFIGURE_FILE("${CMAKE_ROOT}/Modules/CMakeConfigurableFile.in"
44 "${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckDIRSymbolExists.c" @ONLY)
45
46 MESSAGE(STATUS "Looking for DIR in ${FILES}")
47 TRY_COMPILE(${VARIABLE}
48 ${CMAKE_BINARY_DIR}
49 ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckDIRSymbolExists.c
50 COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
51 CMAKE_FLAGS
52 -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_DIRSYMBOL_EXISTS_FLAGS}
53 "${CHECK_DIRSYMBOL_EXISTS_LIBS}"
54 "${CMAKE_DIRSYMBOL_EXISTS_INCLUDES}"
55 OUTPUT_VARIABLE OUTPUT)
56 IF(${VARIABLE})
57 MESSAGE(STATUS "Looking for DIR in ${FILES} - found")
58 SET(${VARIABLE} 1 CACHE INTERNAL "Have symbol DIR")
59 FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeOutput.log
60 "Determining if the DIR symbol is defined as in AC_HEADER_DIRENT "
61 "passed with the following output:\n"
62 "${OUTPUT}\nFile ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckDIRSymbolExists.c:\n"
63 "${CMAKE_CONFIGURABLE_FILE_CONTENT}\n")
64 ELSE(${VARIABLE})
65 MESSAGE(STATUS "Looking for DIR in ${FILES} - not found.")
66 SET(${VARIABLE} "" CACHE INTERNAL "Have symbol DIR")
67 FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log
68 "Determining if the DIR symbol is defined as in AC_HEADER_DIRENT "
69 "failed with the following output:\n"
70 "${OUTPUT}\nFile ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckDIRSymbolExists.c:\n"
71 "${CMAKE_CONFIGURABLE_FILE_CONTENT}\n")
72 ENDIF(${VARIABLE})
73 ENDIF(NOT DEFINED ${VARIABLE})
74 ENDMACRO(CHECK_DIRSYMBOL_EXISTS)
0 # AWI, downloaded from KDE repository since has not yet been transferred
1 # to cmake repository as of 2006-07-31.
2 # http://websvn.kde.org/trunk/KDE/kdelibs/cmake/modules/CheckPrototypeExists.cmake?rev=505849&view=markup
3 #
4 # - Check if the prototype for a function exists.
5 # CHECK_PROTOTYPE_EXISTS (FUNCTION HEADER VARIABLE)
6 #
7 # FUNCTION - the name of the function you are looking for
8 # HEADER - the header(s) where the prototype should be declared
9 # VARIABLE - variable to store the result
10 #
11
12 INCLUDE(CheckCXXSourceCompiles)
13
14 MACRO(CHECK_PROTOTYPE_EXISTS _SYMBOL _HEADER _RESULT)
15 SET(_INCLUDE_FILES)
16 FOREACH(it ${_HEADER})
17 SET(_INCLUDE_FILES "${_INCLUDE_FILES}#include <${it}>\n")
18 ENDFOREACH(it)
19
20 SET(_CHECK_PROTO_EXISTS_SOURCE_CODE "
21 ${_INCLUDE_FILES}
22 void cmakeRequireSymbol(int dummy,...){(void)dummy;}
23 int main()
24 {
25 #ifndef ${_SYMBOL}
26 #ifndef _MSC_VER
27 cmakeRequireSymbol(0,&${_SYMBOL});
28 #else
29 char i = sizeof(&${_SYMBOL});
30 #endif
31 #endif
32 return 0;
33 }
34 ")
35 CHECK_CXX_SOURCE_COMPILES("${_CHECK_PROTO_EXISTS_SOURCE_CODE}" ${_RESULT})
36 ENDMACRO(CHECK_PROTOTYPE_EXISTS _SYMBOL _HEADER _RESULT)
37
0 # - Try to find the Fontconfig
1 # Once done this will define
2 #
3 # FONTCONFIG_FOUND - system has Fontconfig
4 # FONTCONFIG_LIBRARIES - Link these to use FONTCONFIG
5 # FONTCONFIG_DEFINITIONS - Compiler switches required for using FONTCONFIG
6 # FONTCONFIG_INCLUDE_DIR - FontConfig include dir
7 # Copyright (c) 2006, Laurent Montel, <montel@kde.org>
8 #
9 # Redistribution and use is allowed according to the terms of the BSD license.
10 # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
11
12
13 if (FONTCONFIG_LIBRARIES AND FONTCONFIG_DEFINITIONS)
14
15 # in cache already
16 set(FONTCONFIG_FOUND TRUE)
17
18 else (FONTCONFIG_LIBRARIES AND FONTCONFIG_DEFINITIONS)
19 IF (NOT WIN32)
20 # use pkg-config to get the directories and then use these values
21 # in the FIND_PATH() and FIND_LIBRARY() calls
22 INCLUDE(UsePkgConfig)
23
24 PKGCONFIG(fontconfig _FONTCONFIGIncDir _FONTCONFIGLinkDir _FONTCONFIGLinkFlags _FONTCONFIGCflags)
25
26 set(FONTCONFIG_DEFINITIONS ${_FONTCONFIGCflags} CACHE INTERNAL "The compilation flags for fontconfig")
27 ENDIF (NOT WIN32)
28 find_path(FONTCONFIG_INCLUDE_DIR fontconfig/fontconfig.h
29 PATHS
30 ${_FONTCONFIGIncDir}
31 /usr/include
32 /usr/local/include
33 /usr/X11/include
34 )
35
36 find_library(FONTCONFIG_LIBRARIES NAMES fontconfig
37 PATHS
38 ${_FONTCONFIGLinkDir}
39 /usr/lib64
40 /usr/lib
41 /usr/local/lib
42 )
43
44 if (FONTCONFIG_LIBRARIES)
45 set(FONTCONFIG_FOUND TRUE)
46 endif (FONTCONFIG_LIBRARIES)
47
48 if (FONTCONFIG_FOUND)
49 if (NOT FONTCONFIG_FIND_QUIETLY)
50 message(STATUS "Found FONTCONFIG: ${FONTCONFIG_LIBRARIES}")
51 endif (NOT FONTCONFIG_FIND_QUIETLY)
52 else (FONTCONFIG_FOUND)
53 if (FONTCONFIG_FIND_REQUIRED)
54 message(FATAL_ERROR "Could NOT find FONTCONFIG")
55 endif (FONTCONFIG_FIND_REQUIRED)
56 endif (FONTCONFIG_FOUND)
57
58 MARK_AS_ADVANCED(FONTCONFIG_LIBRARIES)
59
60 endif (FONTCONFIG_LIBRARIES AND FONTCONFIG_DEFINITIONS)
0 #
1 # Find the native FREETYPE includes and library
2 #
3
4 # This module defines
5 # FREETYPE_INCLUDE_DIR, where to find ft2build.h, ftheader.h, ...
6 # FREETYPE_LIBRARIES, the libraries to link against to use FREETYPE.
7 # FREETYPE_FOUND, If false, do not try to use FREETYPE.
8
9 # also defined, but not for general use are
10 # FREETYPE_LIBRARY, where to find the FREETYPE library.
11
12 FIND_PATH(FREETYPE_INCLUDE_DIR_FT2BUILD ft2build.h
13 /usr/include/
14 /usr/local/include/
15 )
16
17 FIND_PATH(FREETYPE_INCLUDE_DIR_FTHEADER freetype/config/ftheader.h
18 /usr/include/freetype2
19 /usr/local/include/freetype2
20 )
21
22 FIND_LIBRARY(FREETYPE_LIBRARY freetype
23 /usr/lib64
24 /usr/lib
25 /usr/local/lib
26 )
27
28 IF (FREETYPE_LIBRARY)
29 IF (FREETYPE_INCLUDE_DIR_FTHEADER AND FREETYPE_INCLUDE_DIR_FT2BUILD)
30 SET( FREETYPE_FOUND "YES" )
31 SET( FREETYPE_INCLUDE_DIR
32 ${FREETYPE_INCLUDE_DIR_FT2BUILD}
33 ${FREETYPE_INCLUDE_DIR_FTHEADER} )
34 SET( FREETYPE_LIBRARIES ${FREETYPE_LIBRARY} )
35 ENDIF (FREETYPE_INCLUDE_DIR_FTHEADER AND FREETYPE_INCLUDE_DIR_FT2BUILD)
36 ENDIF (FREETYPE_LIBRARY)
37
38 MARK_AS_ADVANCED(
39 FREETYPE_INCLUDE_DIR_FT2BUILD
40 FREETYPE_INCLUDE_DIR_FTHEADER
41 )
0 # - Find GD
1 # Find the native GD includes and library
2 # This module defines
3 # GD_INCLUDE_DIR, where to find gd.h, etc.
4 # GD_LIBRARIES, the libraries needed to use GD.
5 # GD_FOUND, If false, do not try to use GD.
6 # also defined, but not for general use are
7 # GD_LIBRARY, where to find the GD library.
8 # GD_SUPPORTS_PNG, GD_SUPPORTS_JPEG, GD_SUPPORTS_GIF, test
9 # support for image formats in GD.
10
11 FIND_PATH(GD_INCLUDE_DIR gd.h
12 /usr/local/include
13 /usr/include
14 )
15
16 if(WIN32 AND NOT CYGWIN)
17 SET(GD_NAMES ${GD_NAMES} bgd)
18 else(WIN32)
19 SET(GD_NAMES ${GD_NAMES} gd)
20 endif(WIN32 AND NOT CYGWIN)
21
22 FIND_LIBRARY(GD_LIBRARY
23 NAMES ${GD_NAMES}
24 PATHS /usr/lib64 /usr/lib /usr/local/lib
25 )
26
27 IF (GD_LIBRARY AND GD_INCLUDE_DIR)
28 SET(GD_LIBRARIES ${GD_LIBRARY})
29 SET(GD_FOUND "YES")
30 ELSE (GD_LIBRARY AND GD_INCLUDE_DIR)
31 SET(GD_FOUND "NO")
32 ENDIF (GD_LIBRARY AND GD_INCLUDE_DIR)
33 message("Found GD: ${GD_FOUND}")
34 IF (GD_FOUND)
35 IF (WIN32 AND NOT CYGWIN)
36 SET(GD_SUPPORTS_PNG ON)
37 SET(GD_SUPPORTS_JPEG ON)
38 SET(GD_SUPPORTS_GIF ON)
39 get_filename_component(GD_LIBRARY_DIR ${GD_LIBRARY} PATH)
40 ELSE (WIN32 AND NOT CYGWIN)
41 INCLUDE(CheckLibraryExists)
42 GET_FILENAME_COMPONENT(GD_LIB_PATH ${GD_LIBRARY} PATH)
43 GET_FILENAME_COMPONENT(GD_LIB ${GD_LIBRARY} NAME)
44
45 CHECK_LIBRARY_EXISTS("${GD_LIBRARY}" "gdImagePng" "${GD_LIB_PATH}" GD_SUPPORTS_PNG)
46 IF (GD_SUPPORTS_PNG)
47 find_package(PNG)
48 IF (PNG_FOUND)
49 SET(GD_LIBRARIES ${GD_LIBRARIES} ${PNG_LIBRARIES})
50 SET(GD_INCLUDE_DIR ${GD_INCLUDE_DIR} ${PNG_INCLUDE_DIR})
51 ELSE (PNG_FOUND)
52 SET(GD_SUPPORTS_PNG "NO")
53 ENDIF (PNG_FOUND)
54 ENDIF (GD_SUPPORTS_PNG)
55
56 CHECK_LIBRARY_EXISTS("${GD_LIBRARY}" "gdImageJpeg" "${GD_LIB_PATH}" GD_SUPPORTS_JPEG)
57 IF (GD_SUPPORTS_JPEG)
58 find_package(JPEG)
59 IF (JPEG_FOUND)
60 SET(GD_LIBRARIES ${GD_LIBRARIES} ${JPEG_LIBRARIES})
61 SET(GD_INCLUDE_DIR ${GD_INCLUDE_DIR} ${JPEG_INCLUDE_DIR})
62 ELSE (JPEG_FOUND)
63 SET(GD_SUPPORTS_JPEG "NO")
64 ENDIF (JPEG_FOUND)
65 ENDIF (GD_SUPPORTS_JPEG)
66
67 CHECK_LIBRARY_EXISTS("${GD_LIBRARY}" "gdImageGif" "${GD_LIB_PATH}" GD_SUPPORTS_GIF)
68
69 # Trim the list of include directories
70 SET(GDINCTRIM)
71 FOREACH(GD_DIR ${GD_INCLUDE_DIR})
72 SET(GD_TMP_FOUND OFF)
73 FOREACH(GD_TRIMMED ${GDINCTRIM})
74 IF ("${GD_DIR}" STREQUAL "${GD_TRIMMED}")
75 SET(GD_TMP_FOUND ON)
76 ENDIF ("${GD_DIR}" STREQUAL "${GD_TRIMMED}")
77 ENDFOREACH(GD_TRIMMED ${GDINCTRIM})
78 IF (NOT GD_TMP_FOUND)
79 SET(GDINCTRIM "${GDINCTRIM}" "${GD_DIR}")
80 ENDIF (NOT GD_TMP_FOUND)
81 ENDFOREACH(GD_DIR ${GD_INCLUDE_DIR})
82 SET(GD_INCLUDE_DIR ${GDINCTRIM})
83
84 SET(GD_LIBRARY_DIR)
85
86 # Generate trimmed list of library directories and list of libraries
87 FOREACH(GD_LIB ${GD_LIBRARIES})
88 GET_FILENAME_COMPONENT(GD_NEXTLIBDIR ${GD_LIB} PATH)
89 SET(GD_TMP_FOUND OFF)
90 FOREACH(GD_LIBDIR ${GD_LIBRARY_DIR})
91 IF ("${GD_NEXTLIBDIR}" STREQUAL "${GD_LIBDIR}")
92 SET(GD_TMP_FOUND ON)
93 ENDIF ("${GD_NEXTLIBDIR}" STREQUAL "${GD_LIBDIR}")
94 ENDFOREACH(GD_LIBDIR ${GD_LIBRARIES})
95 IF (NOT GD_TMP_FOUND)
96 SET(GD_LIBRARY_DIR "${GD_LIBRARY_DIR}" "${GD_NEXTLIBDIR}")
97 ENDIF (NOT GD_TMP_FOUND)
98 ENDFOREACH(GD_LIB ${GD_LIBRARIES})
99 ENDIF (WIN32 AND NOT CYGWIN)
100 ENDIF (GD_FOUND)
101
102 IF (GD_FOUND)
103 IF (NOT GD_FIND_QUIETLY)
104 MESSAGE(STATUS "Found GD: ${GD_LIBRARY}")
105 ENDIF (NOT GD_FIND_QUIETLY)
106 ELSE (GD_FOUND)
107 IF (GD_FIND_REQUIRED)
108 MESSAGE(FATAL_ERROR "Could not find GD library")
109 ENDIF (GD_FIND_REQUIRED)
110 ENDIF (GD_FOUND)
111
112 MARK_AS_ADVANCED(
113 GD_LIBRARY
114 GD_LIBRARIES
115 GD_INCLUDE_DIR
116 GD_LIBRARY_DIR
117 GD_SUPPORTS_PNG
118 GD_SUPPORTS_JPEG
119 GD_SUPPORTS_GIF
120 )
0 # - Find the native PNG includes and library
1 #
2
3 # This module defines
4 # PNG_INCLUDE_DIR, where to find png.h, etc.
5 # PNG_LIBRARIES, the libraries to link against to use PNG.
6 # PNG_DEFINITIONS - You should ADD_DEFINITONS(${PNG_DEFINITIONS}) before compiling code that includes png library files.
7 # PNG_FOUND, If false, do not try to use PNG.
8 # also defined, but not for general use are
9 # PNG_LIBRARY, where to find the PNG library.
10 # None of the above will be defined unles zlib can be found.
11 # PNG depends on Zlib
12 #
13 # Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
14 # See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
15
16
17 INCLUDE(FindZLIB)
18
19 SET(PNG_FOUND "NO")
20
21 IF(ZLIB_FOUND)
22 FIND_PATH(PNG_PNG_INCLUDE_DIR png.h
23 /usr/local/include
24 /usr/include
25 /usr/local/include/libpng # OpenBSD
26 )
27
28 SET(PNG_NAMES ${PNG_NAMES} png libpng)
29 FIND_LIBRARY(PNG_LIBRARY
30 NAMES ${PNG_NAMES}
31 PATHS /usr/lib64 /usr/lib /usr/local/lib
32 )
33
34 IF (PNG_LIBRARY AND PNG_PNG_INCLUDE_DIR)
35 # png.h includes zlib.h. Sigh.
36 SET(PNG_INCLUDE_DIR ${PNG_PNG_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR} )
37 SET(PNG_LIBRARIES ${PNG_LIBRARY} ${ZLIB_LIBRARY})
38 SET(PNG_FOUND "YES")
39 SET(HAVE_PNG_H)
40 IF (CYGWIN)
41 IF(BUILD_SHARED_LIBS)
42 # No need to define PNG_USE_DLL here, because it's default for Cygwin.
43 ELSE(BUILD_SHARED_LIBS)
44 SET (PNG_DEFINITIONS -DPNG_STATIC)
45 ENDIF(BUILD_SHARED_LIBS)
46 ENDIF (CYGWIN)
47
48 ENDIF (PNG_LIBRARY AND PNG_PNG_INCLUDE_DIR)
49
50 ENDIF(ZLIB_FOUND)
51
52 IF (PNG_FOUND)
53 IF (NOT PNG_FIND_QUIETLY)
54 MESSAGE(STATUS "Found PNG: ${PNG_LIBRARY}")
55 ENDIF (NOT PNG_FIND_QUIETLY)
56 ELSE (PNG_FOUND)
57 IF (PNG_FIND_REQUIRED)
58 MESSAGE(FATAL_ERROR "Could not find PNG library")
59 ENDIF (PNG_FIND_REQUIRED)
60 ENDIF (PNG_FOUND)
61
62 MARK_AS_ADVANCED(PNG_PNG_INCLUDE_DIR PNG_LIBRARY )
0 #############################################################################
1 #
2 # $Id: FindPTHREAD.cmake,v 1.2.2.1 2007/05/06 19:15:44 pajoye Exp $
3 #
4 # Copyright (C) 1998-2006 Inria. All rights reserved.
5 #
6 # This software was developed at:
7 # IRISA/INRIA Rennes
8 # Projet Lagadic
9 # Campus Universitaire de Beaulieu
10 # 35042 Rennes Cedex
11 # http://www.irisa.fr/lagadic
12 #
13 # This file is part of the ViSP toolkit.
14 #
15 # This file may be distributed under the terms of the Q Public License
16 # as defined by Trolltech AS of Norway and appearing in the file
17 # LICENSE included in the packaging of this file.
18 #
19 # Licensees holding valid ViSP Professional Edition licenses may
20 # use this file in accordance with the ViSP Commercial License
21 # Agreement provided with the Software.
22 #
23 # This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
24 # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
25 #
26 # Contact visp@irisa.fr if any conditions of this licensing are
27 # not clear to you.
28 #
29 # Description:
30 # Try to find pthread library.
31 # Once run this will define:
32 #
33 # PTHREAD_FOUND
34 # PTHREAD_INCLUDE_DIR
35 # PTHREAD_LIBRARIES
36 #
37 # Authors:
38 # Fabien Spindler
39 #
40 #############################################################################
41
42 #IF(NOT UNIX AND NOT WIN32)
43 # SET(PTHREAD_FOUND FALSE)
44 #ELSE(NOT UNIX AND NOT WIN32)
45
46 FIND_PATH(PTHREAD_INCLUDE_DIR pthread.h
47 /usr/include
48 $ENV{PTHREAD_INCLUDE_PATH}
49 )
50 #MESSAGE("DBG PTHREAD_INCLUDE_DIR=${PTHREAD_INCLUDE_DIR}")
51
52 # pthreadVSE pthreadGCE pthreadGC pthreadVC1 pthreadVC2 are comming from web
53 FIND_LIBRARY(PTHREAD_LIBRARY
54 NAMES pthread pthreadGC2 pthreadVSE pthreadGCE pthreadGC pthreadVC1 pthreadVC2
55 PATHS
56 /usr/lib64
57 /usr/lib
58 /usr/local/lib
59 /lib
60 /lib64
61 $ENV{PTHREAD_LIBRARY_PATH}
62 )
63
64 #MESSAGE(STATUS "DBG PTHREAD_LIBRARY=${PTHREAD_LIBRARY}")
65
66 ## --------------------------------
67
68 IF(PTHREAD_LIBRARY)
69 SET(PTHREAD_LIBRARIES ${PTHREAD_LIBRARY})
70 ELSE(PTHREAD_LIBRARY)
71 #MESSAGE(SEND_ERROR "pthread library not found.")
72 ENDIF(PTHREAD_LIBRARY)
73
74 IF(NOT PTHREAD_INCLUDE_DIR)
75 #MESSAGE(SEND_ERROR "pthread include dir not found.")
76 ENDIF(NOT PTHREAD_INCLUDE_DIR)
77
78 IF(PTHREAD_LIBRARIES AND PTHREAD_INCLUDE_DIR)
79 SET(PTHREAD_FOUND TRUE)
80 SET(HAVE_PTHREAD 1)
81 ELSE(PTHREAD_LIBRARIES AND PTHREAD_INCLUDE_DIR)
82 SET(PTHREAD_FOUND FALSE)
83 ENDIF(PTHREAD_LIBRARIES AND PTHREAD_INCLUDE_DIR)
84
85 #MARK_AS_ADVANCED(
86 # PTHREAD_INCLUDE_DIR
87 # PTHREAD_LIBRARIES
88 # )
89 #MESSAGE(STATUS "PTHREAD_FOUND : ${PTHREAD_FOUND}")
90
91 #ENDIF(NOT UNIX AND NOT WIN32)
0 # - Find the native PNG includes and library
1 #
2
3 # This module defines
4 # XPM_INCLUDE_DIR, where to find png.h, etc.
5 # XPM_LIBRARIES, the libraries to link against to use PNG.
6 # XPM_DEFINITIONS - You should ADD_DEFINITONS(${PNG_DEFINITIONS}) before compiling code that includes png library files.
7 # XPM_FOUND, If false, do not try to use PNG.
8 # also defined, but not for general use are
9 # XPM_LIBRARY, where to find the PNG library.
10 # None of the above will be defined unles zlib can be found.
11 # PNG depends on Zlib
12 #
13 # Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
14 # See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
15
16
17 INCLUDE(FindZLIB)
18
19 SET(XPM_FOUND "NO")
20
21 FIND_PATH(XPM_XPM_INCLUDE_DIR xpm.h
22 /usr/local/include/X11
23 /usr/include/X11
24 )
25
26 SET(XPM_NAMES ${XPM_NAMES} Xpm libXpm)
27 FIND_LIBRARY(XPM_LIBRARY
28 NAMES ${XPM_NAMES}
29 PATHS /usr/lib64 /usr/lib /usr/local/lib
30 )
31
32 IF (XPM_LIBRARY AND XPM_XPM_INCLUDE_DIR)
33 SET(XPM_INCLUDE_DIR ${XPM_XPM_INCLUDE_DIR})
34 SET(XPM_LIBRARIES ${XPM_LIBRARY})
35 SET(XPM_FOUND "YES")
36
37 IF (CYGWIN)
38 IF(BUILD_SHARED_LIBS)
39 # No need to define XPM_USE_DLL here, because it's default for Cygwin.
40 ELSE(BUILD_SHARED_LIBS)
41 SET (XPM_DEFINITIONS -DXPM_STATIC)
42 ENDIF(BUILD_SHARED_LIBS)
43 ENDIF (CYGWIN)
44 ENDIF (XPM_LIBRARY AND XPM_XPM_INCLUDE_DIR)
45
46 IF (XPM_FOUND)
47 IF (NOT XPM_FIND_QUIETLY)
48 MESSAGE(STATUS "Found XPM: ${XPM_LIBRARY}")
49 ENDIF (NOT XPM_FIND_QUIETLY)
50 ELSE (XPM_FOUND)
51 IF (XPM_FIND_REQUIRED)
52 MESSAGE(FATAL_ERROR "Could not find XPM library")
53 ENDIF (XPM_FIND_REQUIRED)
54 ENDIF (XPM_FOUND)
55
56 MARK_AS_ADVANCED(XPM_XPM_INCLUDE_DIR XPM_LIBRARY )
0 #include <ctype.h>
1 #if ((' ' & 0x0FF) == 0x020)
2 # define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
3 # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
4 #else
5 # define ISLOWER(c) \
6 (('a' <= (c) && (c) <= 'i') \
7 || ('j' <= (c) && (c) <= 'r') \
8 || ('s' <= (c) && (c) <= 'z'))
9 # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
10 #endif
11
12 #define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
13 int
14 main ()
15 {
16 int i;
17 for (i = 0; i < 256; i++)
18 if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i))
19 exit(1);
20 exit (0);
21 }
0 # cmake/modules/TestForHighBitCharacters.cmake
1 #
2 # Copyright (C) 2006 Alan W. Irwin
3 #
4 # This file is part of PLplot.
5 #
6 # PLplot is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU Library General Public License as published
8 # by the Free Software Foundation; version 2 of the License.
9 #
10 # PLplot is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU Library General Public License for more details.
14 #
15 # You should have received a copy of the GNU Library General Public License
16 # along with the file PLplot; if not, write to the Free Software
17 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
19 # Check if ctype.h macros work on characters with the high bit set.
20 if(NOT DEFINED CMAKE_HIGH_BIT_CHARACTERS)
21 message(STATUS
22 "Check for whether ctype.h macros work on characters with the\n"
23 " high bit set."
24 )
25 try_compile(CMAKE_HIGH_BIT_CHARACTERS
26 ${CMAKE_BINARY_DIR}
27 ${CMAKE_SOURCE_DIR}/CMakeModules/TestForHighBitCharacters.c
28 OUTPUT_VARIABLE OUTPUT)
29 if(CMAKE_HIGH_BIT_CHARACTERS)
30 message(STATUS "High-bit characters - work")
31 set(HIGH_BIT_CHARACTERS 1 CACHE INTERNAL
32 "Do ctype.h macros work on high-bit characters")
33 file(APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeOutput.log
34 "Determining if ctype.h macros work on high-bit characters passed with "
35 "the following output:\n${OUTPUT}\n\n")
36 else(CMAKE_HIGH_BIT_CHARACTERS)
37 message(STATUS "High-bit characters - don't work")
38 set(HIGH_BIT_CHARACTERS 0 CACHE INTERNAL
39 "Do ctype.h macros work on high-bit characters")
40 file(APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log
41 "Determining if ctype.h macros work on high-bit characters failed with "
42 "the following output:\n${OUTPUT}\n\n")
43 endif(CMAKE_HIGH_BIT_CHARACTERS)
44 endif(NOT DEFINED CMAKE_HIGH_BIT_CHARACTERS)
0 # cmake/modules/CheckHEADER_SYS_WAIT.cmake
1 #
2 # Copyright (C) 2006 Alan W. Irwin
3 #
4 # This file is part of PLplot.
5 #
6 # PLplot is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU Library General Public License as published
8 # by the Free Software Foundation; version 2 of the License.
9 #
10 # PLplot is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU Library General Public License for more details.
14 #
15 # You should have received a copy of the GNU Library General Public License
16 # along with the file PLplot; if not, write to the Free Software
17 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
19 #
20 # - Check for sys/wait.h that is POSIX.1 compatible following autotools
21 # AC_HEADER_SYS_WAIT
22
23 include(CheckCSourceCompiles)
24
25 set(_CHECK_HEADER_SYS_WAIT_SOURCE_CODE "
26 #include <sys/types.h>
27 #include <sys/wait.h>
28 #ifndef WEXITSTATUS
29 # define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
30 #endif
31 #ifndef WIFEXITED
32 # define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
33 #endif
34 int
35 main ()
36 {
37 int s;
38 wait (&s);
39 s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
40 ;
41 return 0;
42 }
43 ")
44 check_c_source_compiles(
45 "${_CHECK_HEADER_SYS_WAIT_SOURCE_CODE}"
46 HAVE_SYS_WAIT_H)
0 option(BUILD_TEST "Compile examples in the build tree and enable ctest" OFF)
0 ## Process this file with automake to produce Makefile.in -*-Makefile-*-
1 AUTOMAKE_OPTIONS = foreign 1.7
2
3 EXTRA_DIST = gdlib-config.in
4
5 bin_SCRIPTS = gdlib-config
0 # Makefile.in generated by automake 1.9.6 from Makefile.am.
1 # @configure_input@
2
3 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
4 # 2003, 2004, 2005 Free Software Foundation, Inc.
5 # This Makefile.in is free software; the Free Software Foundation
6 # gives unlimited permission to copy and/or distribute it,
7 # with or without modifications, as long as this notice is preserved.
8
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
11 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
12 # PARTICULAR PURPOSE.
13
14 @SET_MAKE@
15
16 srcdir = @srcdir@
17 top_srcdir = @top_srcdir@
18 VPATH = @srcdir@
19 pkgdatadir = $(datadir)/@PACKAGE@
20 pkglibdir = $(libdir)/@PACKAGE@
21 pkgincludedir = $(includedir)/@PACKAGE@
22 top_builddir = ..
23 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
24 INSTALL = @INSTALL@
25 install_sh_DATA = $(install_sh) -c -m 644
26 install_sh_PROGRAM = $(install_sh) -c
27 install_sh_SCRIPT = $(install_sh) -c
28 INSTALL_HEADER = $(INSTALL_DATA)
29 transform = $(program_transform_name)
30 NORMAL_INSTALL = :
31 PRE_INSTALL = :
32 POST_INSTALL = :
33 NORMAL_UNINSTALL = :
34 PRE_UNINSTALL = :
35 POST_UNINSTALL = :
36 build_triplet = @build@
37 host_triplet = @host@
38 target_triplet = @target@
39 subdir = config
40 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
41 $(srcdir)/gdlib-config.in config.guess config.rpath config.sub \
42 depcomp install-sh ltmain.sh missing mkinstalldirs
43 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
44 am__aclocal_m4_deps = $(top_srcdir)/configure.ac
45 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
46 $(ACLOCAL_M4)
47 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
48 CONFIG_HEADER = $(top_builddir)/config.h
49 CONFIG_CLEAN_FILES = gdlib-config
50 am__installdirs = "$(DESTDIR)$(bindir)"
51 binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
52 SCRIPTS = $(bin_SCRIPTS)
53 SOURCES =
54 DIST_SOURCES =
55 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
56 ACLOCAL = @ACLOCAL@
57 AMDEP_FALSE = @AMDEP_FALSE@
58 AMDEP_TRUE = @AMDEP_TRUE@
59 AMTAR = @AMTAR@
60 AR = @AR@
61 AUTOCONF = @AUTOCONF@
62 AUTOHEADER = @AUTOHEADER@
63 AUTOMAKE = @AUTOMAKE@
64 AWK = @AWK@
65 CC = @CC@
66 CCDEPMODE = @CCDEPMODE@
67 CFLAGS = @CFLAGS@
68 CPP = @CPP@
69 CPPFLAGS = @CPPFLAGS@
70 CXX = @CXX@
71 CXXCPP = @CXXCPP@
72 CXXDEPMODE = @CXXDEPMODE@
73 CXXFLAGS = @CXXFLAGS@
74 CYGPATH_W = @CYGPATH_W@
75 DEFS = @DEFS@
76 DEPDIR = @DEPDIR@
77 ECHO = @ECHO@
78 ECHO_C = @ECHO_C@
79 ECHO_N = @ECHO_N@
80 ECHO_T = @ECHO_T@
81 EGREP = @EGREP@
82 EXEEXT = @EXEEXT@
83 F77 = @F77@
84 FEATURES = @FEATURES@
85 FFLAGS = @FFLAGS@
86 FREETYPE_CONFIG = @FREETYPE_CONFIG@
87 GDLIBNAME = @GDLIBNAME@
88 GDLIB_MAJOR = @GDLIB_MAJOR@
89 GDLIB_MINOR = @GDLIB_MINOR@
90 GDLIB_REVISION = @GDLIB_REVISION@
91 GREP = @GREP@
92 INSTALL_DATA = @INSTALL_DATA@
93 INSTALL_PROGRAM = @INSTALL_PROGRAM@
94 INSTALL_SCRIPT = @INSTALL_SCRIPT@
95 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
96 LDFLAGS = @LDFLAGS@
97 LIBICONV = @LIBICONV@
98 LIBOBJS = @LIBOBJS@
99 LIBPNG12_CONFIG = @LIBPNG12_CONFIG@
100 LIBPNG_CONFIG = @LIBPNG_CONFIG@
101 LIBS = @LIBS@
102 LIBTOOL = @LIBTOOL@
103 LN_S = @LN_S@
104 LTLIBICONV = @LTLIBICONV@
105 LTLIBOBJS = @LTLIBOBJS@
106 MAKEINFO = @MAKEINFO@
107 OBJEXT = @OBJEXT@
108 PACKAGE = @PACKAGE@
109 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
110 PACKAGE_NAME = @PACKAGE_NAME@
111 PACKAGE_STRING = @PACKAGE_STRING@
112 PACKAGE_TARNAME = @PACKAGE_TARNAME@
113 PACKAGE_VERSION = @PACKAGE_VERSION@
114 PATH_SEPARATOR = @PATH_SEPARATOR@
115 PTHREAD_CC = @PTHREAD_CC@
116 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
117 PTHREAD_LIBS = @PTHREAD_LIBS@
118 RANLIB = @RANLIB@
119 SET_MAKE = @SET_MAKE@
120 SHELL = @SHELL@
121 STRIP = @STRIP@
122 VERSION = @VERSION@
123 XMKMF = @XMKMF@
124 XTRA_LDFLAGS = @XTRA_LDFLAGS@
125 ac_ct_CC = @ac_ct_CC@
126 ac_ct_CXX = @ac_ct_CXX@
127 ac_ct_F77 = @ac_ct_F77@
128 acx_pthread_config = @acx_pthread_config@
129 am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
130 am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
131 am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
132 am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
133 am__include = @am__include@
134 am__leading_dot = @am__leading_dot@
135 am__quote = @am__quote@
136 am__tar = @am__tar@
137 am__untar = @am__untar@
138 bindir = @bindir@
139 build = @build@
140 build_alias = @build_alias@
141 build_cpu = @build_cpu@
142 build_os = @build_os@
143 build_vendor = @build_vendor@
144 datadir = @datadir@
145 datarootdir = @datarootdir@
146 docdir = @docdir@
147 dvidir = @dvidir@
148 exec_prefix = @exec_prefix@
149 host = @host@
150 host_alias = @host_alias@
151 host_cpu = @host_cpu@
152 host_os = @host_os@
153 host_vendor = @host_vendor@
154 htmldir = @htmldir@
155 includedir = @includedir@
156 infodir = @infodir@
157 install_sh = @install_sh@
158 libdir = @libdir@
159 libexecdir = @libexecdir@
160 localedir = @localedir@
161 localstatedir = @localstatedir@
162 mandir = @mandir@
163 mkdir_p = @mkdir_p@
164 oldincludedir = @oldincludedir@
165 pdfdir = @pdfdir@
166 prefix = @prefix@
167 program_transform_name = @program_transform_name@
168 psdir = @psdir@
169 sbindir = @sbindir@
170 sharedstatedir = @sharedstatedir@
171 sysconfdir = @sysconfdir@
172 target = @target@
173 target_alias = @target_alias@
174 target_cpu = @target_cpu@
175 target_os = @target_os@
176 target_vendor = @target_vendor@
177 AUTOMAKE_OPTIONS = foreign 1.7
178 EXTRA_DIST = gdlib-config.in
179 bin_SCRIPTS = gdlib-config
180 all: all-am
181
182 .SUFFIXES:
183 $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
184 @for dep in $?; do \
185 case '$(am__configure_deps)' in \
186 *$$dep*) \
187 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
188 && exit 0; \
189 exit 1;; \
190 esac; \
191 done; \
192 echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign config/Makefile'; \
193 cd $(top_srcdir) && \
194 $(AUTOMAKE) --foreign config/Makefile
195 .PRECIOUS: Makefile
196 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
197 @case '$?' in \
198 *config.status*) \
199 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
200 *) \
201 echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
202 cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
203 esac;
204
205 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
206 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
207
208 $(top_srcdir)/configure: $(am__configure_deps)
209 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
210 $(ACLOCAL_M4): $(am__aclocal_m4_deps)
211 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
212 gdlib-config: $(top_builddir)/config.status $(srcdir)/gdlib-config.in
213 cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
214 install-binSCRIPTS: $(bin_SCRIPTS)
215 @$(NORMAL_INSTALL)
216 test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
217 @list='$(bin_SCRIPTS)'; for p in $$list; do \
218 if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
219 if test -f $$d$$p; then \
220 f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
221 echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
222 $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
223 else :; fi; \
224 done
225
226 uninstall-binSCRIPTS:
227 @$(NORMAL_UNINSTALL)
228 @list='$(bin_SCRIPTS)'; for p in $$list; do \
229 f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
230 echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
231 rm -f "$(DESTDIR)$(bindir)/$$f"; \
232 done
233
234 mostlyclean-libtool:
235 -rm -f *.lo
236
237 clean-libtool:
238 -rm -rf .libs _libs
239
240 distclean-libtool:
241 -rm -f libtool
242 uninstall-info-am:
243 tags: TAGS
244 TAGS:
245
246 ctags: CTAGS
247 CTAGS:
248
249
250 distdir: $(DISTFILES)
251 @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
252 topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
253 list='$(DISTFILES)'; for file in $$list; do \
254 case $$file in \
255 $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
256 $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
257 esac; \
258 if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
259 dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
260 if test "$$dir" != "$$file" && test "$$dir" != "."; then \
261 dir="/$$dir"; \
262 $(mkdir_p) "$(distdir)$$dir"; \
263 else \
264 dir=''; \
265 fi; \
266 if test -d $$d/$$file; then \
267 if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
268 cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
269 fi; \
270 cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
271 else \
272 test -f $(distdir)/$$file \
273 || cp -p $$d/$$file $(distdir)/$$file \
274 || exit 1; \
275 fi; \
276 done
277 check-am: all-am
278 check: check-am
279 all-am: Makefile $(SCRIPTS)
280 installdirs:
281 for dir in "$(DESTDIR)$(bindir)"; do \
282 test -z "$$dir" || $(mkdir_p) "$$dir"; \
283 done
284 install: install-am
285 install-exec: install-exec-am
286 install-data: install-data-am
287 uninstall: uninstall-am
288
289 install-am: all-am
290 @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
291
292 installcheck: installcheck-am
293 install-strip:
294 $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
295 install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
296 `test -z '$(STRIP)' || \
297 echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
298 mostlyclean-generic:
299
300 clean-generic:
301
302 distclean-generic:
303 -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
304
305 maintainer-clean-generic:
306 @echo "This command is intended for maintainers to use"
307 @echo "it deletes files that may require special tools to rebuild."
308 clean: clean-am
309
310 clean-am: clean-generic clean-libtool mostlyclean-am
311
312 distclean: distclean-am
313 -rm -f Makefile
314 distclean-am: clean-am distclean-generic distclean-libtool
315
316 dvi: dvi-am
317
318 dvi-am:
319
320 html: html-am
321
322 info: info-am
323
324 info-am:
325
326 install-data-am:
327
328 install-exec-am: install-binSCRIPTS
329
330 install-info: install-info-am
331
332 install-man:
333
334 installcheck-am:
335
336 maintainer-clean: maintainer-clean-am
337 -rm -f Makefile
338 maintainer-clean-am: distclean-am maintainer-clean-generic
339
340 mostlyclean: mostlyclean-am
341
342 mostlyclean-am: mostlyclean-generic mostlyclean-libtool
343
344 pdf: pdf-am
345
346 pdf-am:
347
348 ps: ps-am
349
350 ps-am:
351
352 uninstall-am: uninstall-binSCRIPTS uninstall-info-am
353
354 .PHONY: all all-am check check-am clean clean-generic clean-libtool \
355 distclean distclean-generic distclean-libtool distdir dvi \
356 dvi-am html html-am info info-am install install-am \
357 install-binSCRIPTS install-data install-data-am install-exec \
358 install-exec-am install-info install-info-am install-man \
359 install-strip installcheck installcheck-am installdirs \
360 maintainer-clean maintainer-clean-generic mostlyclean \
361 mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
362 uninstall uninstall-am uninstall-binSCRIPTS uninstall-info-am
363
364 # Tell versions [3.59,3.63) of GNU make to not export all variables.
365 # Otherwise a system limit (for SysV at least) may be exceeded.
366 .NOEXPORT:
0 #!/bin/sh
1 #
2 # Return information about the local GD library installation
3 #
4 # Modeled after pdflib-config
5
6 # installation directories
7 prefix=@prefix@
8 exec_prefix=@exec_prefix@
9 libdir=@libdir@
10 includedir=@includedir@
11 bindir=@bindir@
12
13 usage()
14 {
15 cat <<EOF
16 Print information on GD library's version, configuration, and use.
17 Usage: gdlib-config [options]
18 Options:
19 --libdir # directory where GD library is installed
20 --includedir # directory where GD library headers are installed
21 --version # complete GD library version string
22 --majorversion # GD library major version number
23 --minorversion # GD library minor version number
24 --revision # GD library revision version number
25 --ldflags # options required for linking against GD library
26 --libs # libs required for linking against GD library
27 --cflags # options required for compiling GD library apps
28 --includes # same as --cflags
29 --features # lists optional features compiled into gd, separated
30 # by spaces. Currently (as of 2.0.26) the optional
31 # features are GD_PNG, GD_JPEG, GD_XPM, and
32 # GD_FREETYPE. When these features are reported by
33 # --features, it is safe to include calls to the
34 # related functions in your code.
35 --all # print a summary of all GD library configure options
36 EOF
37 exit $1
38 }
39
40 if test $# -eq 0; then
41 usage 1 1>&2
42 fi
43
44 while test $# -gt 0; do
45 case "$1" in
46 -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
47 *) optarg= ;;
48 esac
49
50 case $1 in
51 --libdir)
52 echo $libdir
53 ;;
54 --includedir)
55 echo $includedir
56 ;;
57 --version)
58 echo @VERSION@
59 ;;
60 --majorversion)
61 echo @GDLIB_MAJOR@
62 ;;
63 --minorversion)
64 echo @GDLIB_MINOR@
65 ;;
66 --revision)
67 echo @GDLIB_REVISION@
68 ;;
69 --ldflags)
70 echo @LDFLAGS@
71 ;;
72 --libs)
73 echo @LIBS@ @LIBICONV@
74 ;;
75 --cflags|--includes)
76 echo -I@includedir@
77 ;;
78 --features)
79 echo @FEATURES@
80 ;;
81 --all)
82 echo "GD library @VERSION@"
83 echo "includedir: $includedir"
84 echo "cflags: -I@includedir@"
85 echo "ldflags: @LDFLAGS@"
86 echo "libs: @LIBS@ @LIBICONV@"
87 echo "libdir: $libdir"
88 echo "features: @FEATURES@"
89 ;;
90 *)
91 usage 1 1>&2
92 ;;
93 esac
94 shift
95 done
0 /* config.hin. Generated from configure.ac by autoheader. */
1
2 /* Define to 1 if you have the <dlfcn.h> header file. */
3 #cmakedefine HAVE_DLFCN_H
4
5 /* Define to 1 if you have the <errno.h> header file. */
6 #cmakedefine HAVE_ERRNO_H
7
8 /* Define to 1 if you have the <ft2build.h> header file. */
9 #cmakedefine HAVE_FT2BUILD_H
10
11 /* Define if you have the iconv() function. */
12 #cmakedefine HAVE_ICONV
13
14 /* Define to 1 if you have the <iconv.h> header file. */
15 #cmakedefine HAVE_ICONV_H
16
17 /* Define if <iconv.h> defines iconv_t. */
18 #cmakedefine HAVE_ICONV_T_DEF
19
20 /* Define to 1 if you have the <inttypes.h> header file. */
21 #cmakedefine HAVE_INTTYPES_H
22
23 /* Define if you have the fontconfig library. */
24 #cmakedefine HAVE_LIBFONTCONFIG
25
26 /* Define if you have the freetype library. */
27 #cmakedefine HAVE_LIBFREETYPE
28
29 /* Define if you have the jpeg library. */
30 #cmakedefine HAVE_LIBJPEG
31
32 /* Define to 1 if you have the `m' library (-lm). */
33 #cmakedefine HAVE_LIBM
34
35 /* Define if you have the png library. */
36 #cmakedefine HAVE_LIBPNG
37
38 /* Define to 1 if you have the <libpng/png.h> header file. */
39 #cmakedefine HAVE_LIBPNG_PNG_H
40
41 /* Define if you have the Xpm library. */
42 #cmakedefine HAVE_LIBXPM
43
44 /* Define if you have zlib. */
45 #cmakedefine HAVE_LIBZ
46
47 /* Define to 1 if you have the <limits.h> header file. */
48 #cmakedefine HAVE_LIMITS_H
49
50 /* Define to 1 if you have the <memory.h> header file. */
51 #cmakedefine HAVE_MEMORY_H
52
53 /* Define to 1 if you have the <png.h> header file. */
54 #cmakedefine HAVE_PNG_H
55
56 /* Define if you have POSIX threads libraries and header files. */
57 #cmakedefine HAVE_PTHREAD
58
59 /* Define to 1 if you have the <stddef.h> header file. */
60 #cmakedefine HAVE_STDDEF_H
61
62 /* Define to 1 if you have the <stdint.h> header file. */
63 #cmakedefine HAVE_STDINT_H
64
65 /* Define to 1 if you have the <stdlib.h> header file. */
66 #cmakedefine HAVE_STDLIB_H
67
68 /* Define to 1 if you have the <strings.h> header file. */
69 #cmakedefine HAVE_STRINGS_H
70
71 /* Define to 1 if you have the <string.h> header file. */
72 #cmakedefine HAVE_STRING_H
73
74 /* Define to 1 if you have the <sys/stat.h> header file. */
75 #cmakedefine HAVE_SYS_STAT_H
76
77 /* Define to 1 if you have the <sys/types.h> header file. */
78 #cmakedefine HAVE_SYS_TYPES_H
79
80 /* Define to 1 if you have the <unistd.h> header file. */
81 #ifndef HAVE_UNISTD_H
82 #cmakedefine HAVE_UNISTD_H
83 #endif
84
85 /* Define as const if the declaration of iconv() needs const. */
86 #cmakedefine ICONV_CONST
87
88 /* Name of package */
89 #cmakedefine PACKAGE
90
91 /* Define to the address where bug reports for this package should be sent. */
92 #cmakedefine PACKAGE_BUGREPORT
93
94 /* Define to the full name of this package. */
95 #cmakedefine PACKAGE_NAME
96
97 /* Define to the full name and version of this package. */
98 #cmakedefine PACKAGE_STRING
99
100 /* Define to the one symbol short name of this package. */
101 #cmakedefine PACKAGE_TARNAME
102
103 /* Define to the version of this package. */
104 #cmakedefine PACKAGE_VERSION
105
106 /* Define to necessary symbol if this constant uses a non-standard name on
107 your system. */
108 #cmakedefine PTHREAD_CREATE_JOINABLE
109
110 /* Define to 1 if you have the ANSI C header files. */
111 #cmakedefine STDC_HEADERS
112
113 /* Version number of package */
114
0 /* config.hin. Generated from configure.ac by autoheader. */
1
2 /* Define to 1 if you have the <dlfcn.h> header file. */
3 #undef HAVE_DLFCN_H
4
5 /* Define to 1 if you have the <errno.h> header file. */
6 #undef HAVE_ERRNO_H
7
8 /* Define to 1 if you have the <ft2build.h> header file. */
9 #undef HAVE_FT2BUILD_H
10
11 /* Define if you have the iconv() function. */
12 #undef HAVE_ICONV
13
14 /* Define to 1 if you have the <iconv.h> header file. */
15 #undef HAVE_ICONV_H
16
17 /* Define if <iconv.h> defines iconv_t. */
18 #undef HAVE_ICONV_T_DEF
19
20 /* Define to 1 if you have the <inttypes.h> header file. */
21 #undef HAVE_INTTYPES_H
22
23 /* Define if you have the fontconfig library. */
24 #undef HAVE_LIBFONTCONFIG
25
26 /* Define if you have the freetype library. */
27 #undef HAVE_LIBFREETYPE
28
29 /* Define if you have the jpeg library. */
30 #undef HAVE_LIBJPEG
31
32 /* Define to 1 if you have the `m' library (-lm). */
33 #undef HAVE_LIBM
34
35 /* Define if you have the png library. */
36 #undef HAVE_LIBPNG
37
38 /* Define to 1 if you have the <libpng/png.h> header file. */
39 #undef HAVE_LIBPNG_PNG_H
40
41 /* Define if you have the Xpm library. */
42 #undef HAVE_LIBXPM
43
44 /* Define if you have zlib. */
45 #undef HAVE_LIBZ
46
47 /* Define to 1 if you have the <limits.h> header file. */
48 #undef HAVE_LIMITS_H
49
50 /* Define to 1 if you have the <memory.h> header file. */
51 #undef HAVE_MEMORY_H
52
53 /* Define to 1 if you have the <png.h> header file. */
54 #undef HAVE_PNG_H
55
56 /* Define if you have POSIX threads libraries and header files. */
57 #undef HAVE_PTHREAD
58
59 /* Define to 1 if you have the <stddef.h> header file. */
60 #undef HAVE_STDDEF_H
61
62 /* Define to 1 if you have the <stdint.h> header file. */
63 #undef HAVE_STDINT_H
64
65 /* Define to 1 if you have the <stdlib.h> header file. */
66 #undef HAVE_STDLIB_H
67
68 /* Define to 1 if you have the <strings.h> header file. */
69 #undef HAVE_STRINGS_H
70
71 /* Define to 1 if you have the <string.h> header file. */
72 #undef HAVE_STRING_H
73
74 /* Define to 1 if you have the <sys/stat.h> header file. */
75 #undef HAVE_SYS_STAT_H
76
77 /* Define to 1 if you have the <sys/types.h> header file. */
78 #undef HAVE_SYS_TYPES_H
79
80 /* Define to 1 if you have the <unistd.h> header file. */
81 #undef HAVE_UNISTD_H
82
83 /* Define as const if the declaration of iconv() needs const. */
84 #undef ICONV_CONST
85
86 /* Name of package */
87 #undef PACKAGE
88
89 /* Define to the address where bug reports for this package should be sent. */
90 #undef PACKAGE_BUGREPORT
91
92 /* Define to the full name of this package. */
93 #undef PACKAGE_NAME
94
95 /* Define to the full name and version of this package. */
96 #undef PACKAGE_STRING
97
98 /* Define to the one symbol short name of this package. */
99 #undef PACKAGE_TARNAME
100
101 /* Define to the version of this package. */
102 #undef PACKAGE_VERSION
103
104 /* Define to necessary symbol if this constant uses a non-standard name on
105 your system. */
106 #undef PTHREAD_CREATE_JOINABLE
107
108 /* Define to 1 if you have the ANSI C header files. */
109 #undef STDC_HEADERS
110
111 /* Version number of package */
112 #undef VERSION
0 #! /bin/sh
1 # Guess values for system-dependent variables and create Makefiles.
2 # Generated by GNU Autoconf 2.61 for GD 2.0.34.
3 #
4 # Report bugs to <http://bugs.libgd.org>.
5 #
6 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
7 # 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
8 # This configure script is free software; the Free Software Foundation
9 # gives unlimited permission to copy, distribute and modify it.
10 ## --------------------- ##
11 ## M4sh Initialization. ##
12 ## --------------------- ##
13
14 # Be more Bourne compatible
15 DUALCASE=1; export DUALCASE # for MKS sh
16 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
17 emulate sh
18 NULLCMD=:
19 # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
20 # is contrary to our usage. Disable this feature.
21 alias -g '${1+"$@"}'='"$@"'
22 setopt NO_GLOB_SUBST
23 else
24 case `(set -o) 2>/dev/null` in
25 *posix*) set -o posix ;;
26 esac
27
28 fi
29
30
31
32
33 # PATH needs CR
34 # Avoid depending upon Character Ranges.
35 as_cr_letters='abcdefghijklmnopqrstuvwxyz'
36 as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
37 as_cr_Letters=$as_cr_letters$as_cr_LETTERS
38 as_cr_digits='0123456789'
39 as_cr_alnum=$as_cr_Letters$as_cr_digits
40
41 # The user is always right.
42 if test "${PATH_SEPARATOR+set}" != set; then
43 echo "#! /bin/sh" >conf$$.sh
44 echo "exit 0" >>conf$$.sh
45 chmod +x conf$$.sh
46 if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
47 PATH_SEPARATOR=';'
48 else
49 PATH_SEPARATOR=:
50 fi
51 rm -f conf$$.sh
52 fi
53
54 # Support unset when possible.
55 if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
56 as_unset=unset
57 else
58 as_unset=false
59 fi
60
61
62 # IFS
63 # We need space, tab and new line, in precisely that order. Quoting is
64 # there to prevent editors from complaining about space-tab.
65 # (If _AS_PATH_WALK were called with IFS unset, it would disable word
66 # splitting by setting IFS to empty value.)
67 as_nl='
68 '
69 IFS=" "" $as_nl"
70
71 # Find who we are. Look in the path if we contain no directory separator.
72 case $0 in
73 *[\\/]* ) as_myself=$0 ;;
74 *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
75 for as_dir in $PATH
76 do
77 IFS=$as_save_IFS
78 test -z "$as_dir" && as_dir=.
79 test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
80 done
81 IFS=$as_save_IFS
82
83 ;;
84 esac
85 # We did not find ourselves, most probably we were run as `sh COMMAND'
86 # in which case we are not to be found in the path.
87 if test "x$as_myself" = x; then
88 as_myself=$0
89 fi
90 if test ! -f "$as_myself"; then
91 echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
92 { (exit 1); exit 1; }
93 fi
94
95 # Work around bugs in pre-3.0 UWIN ksh.
96 for as_var in ENV MAIL MAILPATH
97 do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
98 done
99 PS1='$ '
100 PS2='> '
101 PS4='+ '
102
103 # NLS nuisances.
104 for as_var in \
105 LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
106 LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
107 LC_TELEPHONE LC_TIME
108 do
109 if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
110 eval $as_var=C; export $as_var
111 else
112 ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
113 fi
114 done
115
116 # Required to use basename.
117 if expr a : '\(a\)' >/dev/null 2>&1 &&
118 test "X`expr 00001 : '.*\(...\)'`" = X001; then
119 as_expr=expr
120 else
121 as_expr=false
122 fi
123
124 if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
125 as_basename=basename
126 else
127 as_basename=false
128 fi
129
130
131 # Name of the executable.
132 as_me=`$as_basename -- "$0" ||
133 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
134 X"$0" : 'X\(//\)$' \| \
135 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
136 echo X/"$0" |
137 sed '/^.*\/\([^/][^/]*\)\/*$/{
138 s//\1/
139 q
140 }
141 /^X\/\(\/\/\)$/{
142 s//\1/
143 q
144 }
145 /^X\/\(\/\).*/{
146 s//\1/
147 q
148 }
149 s/.*/./; q'`
150
151 # CDPATH.
152 $as_unset CDPATH
153
154
155 if test "x$CONFIG_SHELL" = x; then
156 if (eval ":") 2>/dev/null; then
157 as_have_required=yes
158 else
159 as_have_required=no
160 fi
161
162 if test $as_have_required = yes && (eval ":
163 (as_func_return () {
164 (exit \$1)
165 }
166 as_func_success () {
167 as_func_return 0
168 }
169 as_func_failure () {
170 as_func_return 1
171 }
172 as_func_ret_success () {
173 return 0
174 }
175 as_func_ret_failure () {
176 return 1
177 }
178
179 exitcode=0
180 if as_func_success; then
181 :
182 else
183 exitcode=1
184 echo as_func_success failed.
185 fi
186
187 if as_func_failure; then
188 exitcode=1
189 echo as_func_failure succeeded.
190 fi
191
192 if as_func_ret_success; then
193 :
194 else
195 exitcode=1
196 echo as_func_ret_success failed.
197 fi
198
199 if as_func_ret_failure; then
200 exitcode=1
201 echo as_func_ret_failure succeeded.
202 fi
203
204 if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
205 :
206 else
207 exitcode=1
208 echo positional parameters were not saved.
209 fi
210
211 test \$exitcode = 0) || { (exit 1); exit 1; }
212
213 (
214 as_lineno_1=\$LINENO
215 as_lineno_2=\$LINENO
216 test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
217 test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
218 ") 2> /dev/null; then
219 :
220 else
221 as_candidate_shells=
222 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
223 for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
224 do
225 IFS=$as_save_IFS
226 test -z "$as_dir" && as_dir=.
227 case $as_dir in
228 /*)
229 for as_base in sh bash ksh sh5; do
230 as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
231 done;;
232 esac
233 done
234 IFS=$as_save_IFS
235
236
237 for as_shell in $as_candidate_shells $SHELL; do
238 # Try only shells that exist, to save several forks.
239 if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
240 { ("$as_shell") 2> /dev/null <<\_ASEOF
241 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
242 emulate sh
243 NULLCMD=:
244 # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
245 # is contrary to our usage. Disable this feature.
246 alias -g '${1+"$@"}'='"$@"'
247 setopt NO_GLOB_SUBST
248 else
249 case `(set -o) 2>/dev/null` in
250 *posix*) set -o posix ;;
251 esac
252
253 fi
254
255
256 :
257 _ASEOF
258 }; then
259 CONFIG_SHELL=$as_shell
260 as_have_required=yes
261 if { "$as_shell" 2> /dev/null <<\_ASEOF
262 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
263 emulate sh
264 NULLCMD=:
265 # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
266 # is contrary to our usage. Disable this feature.
267 alias -g '${1+"$@"}'='"$@"'
268 setopt NO_GLOB_SUBST
269 else
270 case `(set -o) 2>/dev/null` in
271 *posix*) set -o posix ;;
272 esac
273
274 fi
275
276
277 :
278 (as_func_return () {
279 (exit $1)
280 }
281 as_func_success () {
282 as_func_return 0
283 }
284 as_func_failure () {
285 as_func_return 1
286 }
287 as_func_ret_success () {
288 return 0
289 }
290 as_func_ret_failure () {
291 return 1
292 }
293
294 exitcode=0
295 if as_func_success; then
296 :
297 else
298 exitcode=1
299 echo as_func_success failed.
300 fi
301
302 if as_func_failure; then
303 exitcode=1
304 echo as_func_failure succeeded.
305 fi
306
307 if as_func_ret_success; then
308 :
309 else
310 exitcode=1
311 echo as_func_ret_success failed.
312 fi
313
314 if as_func_ret_failure; then
315 exitcode=1
316 echo as_func_ret_failure succeeded.
317 fi
318
319 if ( set x; as_func_ret_success y && test x = "$1" ); then
320 :
321 else
322 exitcode=1
323 echo positional parameters were not saved.
324 fi
325
326 test $exitcode = 0) || { (exit 1); exit 1; }
327
328 (
329 as_lineno_1=$LINENO
330 as_lineno_2=$LINENO
331 test "x$as_lineno_1" != "x$as_lineno_2" &&
332 test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
333
334 _ASEOF
335 }; then
336 break
337 fi
338
339 fi
340
341 done
342
343 if test "x$CONFIG_SHELL" != x; then
344 for as_var in BASH_ENV ENV
345 do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
346 done
347 export CONFIG_SHELL
348 exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
349 fi
350
351
352 if test $as_have_required = no; then
353 echo This script requires a shell more modern than all the
354 echo shells that I found on your system. Please install a
355 echo modern shell, or manually run the script under such a
356 echo shell if you do have one.
357 { (exit 1); exit 1; }
358 fi
359
360
361 fi
362
363 fi
364
365
366
367 (eval "as_func_return () {
368 (exit \$1)
369 }
370 as_func_success () {
371 as_func_return 0
372 }
373 as_func_failure () {
374 as_func_return 1
375 }
376 as_func_ret_success () {
377 return 0
378 }
379 as_func_ret_failure () {
380 return 1
381 }
382
383 exitcode=0
384 if as_func_success; then
385 :
386 else
387 exitcode=1
388 echo as_func_success failed.
389 fi
390
391 if as_func_failure; then
392 exitcode=1
393 echo as_func_failure succeeded.
394 fi
395
396 if as_func_ret_success; then
397 :
398 else
399 exitcode=1
400 echo as_func_ret_success failed.
401 fi
402
403 if as_func_ret_failure; then
404 exitcode=1
405 echo as_func_ret_failure succeeded.
406 fi
407
408 if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
409 :
410 else
411 exitcode=1
412 echo positional parameters were not saved.
413 fi
414
415 test \$exitcode = 0") || {
416 echo No shell found that supports shell functions.
417 echo Please tell autoconf@gnu.org about your system,
418 echo including any error possibly output before this
419 echo message
420 }
421
422
423
424 as_lineno_1=$LINENO
425 as_lineno_2=$LINENO
426 test "x$as_lineno_1" != "x$as_lineno_2" &&
427 test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
428
429 # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
430 # uniformly replaced by the line number. The first 'sed' inserts a
431 # line-number line after each line using $LINENO; the second 'sed'
432 # does the real work. The second script uses 'N' to pair each
433 # line-number line with the line containing $LINENO, and appends
434 # trailing '-' during substitution so that $LINENO is not a special
435 # case at line end.
436 # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
437 # scripts with optimization help from Paolo Bonzini. Blame Lee
438 # E. McMahon (1931-1989) for sed's syntax. :-)
439 sed -n '
440 p
441 /[$]LINENO/=
442 ' <$as_myself |
443 sed '
444 s/[$]LINENO.*/&-/
445 t lineno
446 b
447 :lineno
448 N
449 :loop
450 s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
451 t loop
452 s/-\n.*//
453 ' >$as_me.lineno &&
454 chmod +x "$as_me.lineno" ||
455 { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
456 { (exit 1); exit 1; }; }
457
458 # Don't try to exec as it changes $[0], causing all sort of problems
459 # (the dirname of $[0] is not the place where we might find the
460 # original and so on. Autoconf is especially sensitive to this).
461 . "./$as_me.lineno"
462 # Exit status is that of the last command.
463 exit
464 }
465
466
467 if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
468 as_dirname=dirname
469 else
470 as_dirname=false
471 fi
472
473 ECHO_C= ECHO_N= ECHO_T=
474 case `echo -n x` in
475 -n*)
476 case `echo 'x\c'` in
477 *c*) ECHO_T=' ';; # ECHO_T is single tab character.
478 *) ECHO_C='\c';;
479 esac;;
480 *)
481 ECHO_N='-n';;
482 esac
483
484 if expr a : '\(a\)' >/dev/null 2>&1 &&
485 test "X`expr 00001 : '.*\(...\)'`" = X001; then
486 as_expr=expr
487 else
488 as_expr=false
489 fi
490
491 rm -f conf$$ conf$$.exe conf$$.file
492 if test -d conf$$.dir; then
493 rm -f conf$$.dir/conf$$.file
494 else
495 rm -f conf$$.dir
496 mkdir conf$$.dir
497 fi
498 echo >conf$$.file
499 if ln -s conf$$.file conf$$ 2>/dev/null; then
500 as_ln_s='ln -s'
501 # ... but there are two gotchas:
502 # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
503 # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
504 # In both cases, we have to default to `cp -p'.
505 ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
506 as_ln_s='cp -p'
507 elif ln conf$$.file conf$$ 2>/dev/null; then
508 as_ln_s=ln
509 else
510 as_ln_s='cp -p'
511 fi
512 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
513 rmdir conf$$.dir 2>/dev/null
514
515 if mkdir -p . 2>/dev/null; then
516 as_mkdir_p=:
517 else
518 test -d ./-p && rmdir ./-p
519 as_mkdir_p=false
520 fi
521
522 if test -x / >/dev/null 2>&1; then
523 as_test_x='test -x'
524 else
525 if ls -dL / >/dev/null 2>&1; then
526 as_ls_L_option=L
527 else
528 as_ls_L_option=
529 fi
530 as_test_x='
531 eval sh -c '\''
532 if test -d "$1"; then
533 test -d "$1/.";
534 else
535 case $1 in
536 -*)set "./$1";;
537 esac;
538 case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
539 ???[sx]*):;;*)false;;esac;fi
540 '\'' sh
541 '
542 fi
543 as_executable_p=$as_test_x
544
545 # Sed expression to map a string onto a valid CPP name.
546 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
547
548 # Sed expression to map a string onto a valid variable name.
549 as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
550
551
552
553
554 # Check that we are running under the correct shell.
555 SHELL=${CONFIG_SHELL-/bin/sh}
556
557 case X$ECHO in
558 X*--fallback-echo)
559 # Remove one level of quotation (which was required for Make).
560 ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','`
561 ;;
562 esac
563
564 echo=${ECHO-echo}
565 if test "X$1" = X--no-reexec; then
566 # Discard the --no-reexec flag, and continue.
567 shift
568 elif test "X$1" = X--fallback-echo; then
569 # Avoid inline document here, it may be left over
570 :
571 elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
572 # Yippee, $echo works!
573 :
574 else
575 # Restart under the correct shell.
576 exec $SHELL "$0" --no-reexec ${1+"$@"}
577 fi
578
579 if test "X$1" = X--fallback-echo; then
580 # used as fallback echo
581 shift
582 cat <<EOF
583 $*
584 EOF
585 exit 0
586 fi
587
588 # The HP-UX ksh and POSIX shell print the target directory to stdout
589 # if CDPATH is set.
590 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
591
592 if test -z "$ECHO"; then
593 if test "X${echo_test_string+set}" != Xset; then
594 # find a string as large as possible, as long as the shell can cope with it
595 for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
596 # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
597 if (echo_test_string=`eval $cmd`) 2>/dev/null &&
598 echo_test_string=`eval $cmd` &&
599 (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
600 then
601 break
602 fi
603 done
604 fi
605
606 if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
607 echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
608 test "X$echo_testing_string" = "X$echo_test_string"; then
609 :
610 else
611 # The Solaris, AIX, and Digital Unix default echo programs unquote
612 # backslashes. This makes it impossible to quote backslashes using
613 # echo "$something" | sed 's/\\/\\\\/g'
614 #
615 # So, first we look for a working echo in the user's PATH.
616
617 lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
618 for dir in $PATH /usr/ucb; do
619 IFS="$lt_save_ifs"
620 if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
621 test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
622 echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
623 test "X$echo_testing_string" = "X$echo_test_string"; then
624 echo="$dir/echo"
625 break
626 fi
627 done
628 IFS="$lt_save_ifs"
629
630 if test "X$echo" = Xecho; then
631 # We didn't find a better echo, so look for alternatives.
632 if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
633 echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
634 test "X$echo_testing_string" = "X$echo_test_string"; then
635 # This shell has a builtin print -r that does the trick.
636 echo='print -r'
637 elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
638 test "X$CONFIG_SHELL" != X/bin/ksh; then
639 # If we have ksh, try running configure again with it.
640 ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
641 export ORIGINAL_CONFIG_SHELL
642 CONFIG_SHELL=/bin/ksh
643 export CONFIG_SHELL
644 exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
645 else
646 # Try using printf.
647 echo='printf %s\n'
648 if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
649 echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
650 test "X$echo_testing_string" = "X$echo_test_string"; then
651 # Cool, printf works
652 :
653 elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
654 test "X$echo_testing_string" = 'X\t' &&
655 echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
656 test "X$echo_testing_string" = "X$echo_test_string"; then
657 CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
658 export CONFIG_SHELL
659 SHELL="$CONFIG_SHELL"
660 export SHELL
661 echo="$CONFIG_SHELL $0 --fallback-echo"
662 elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
663 test "X$echo_testing_string" = 'X\t' &&
664 echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
665 test "X$echo_testing_string" = "X$echo_test_string"; then
666 echo="$CONFIG_SHELL $0 --fallback-echo"
667 else
668 # maybe with a smaller string...
669 prev=:
670
671 for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
672 if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
673 then
674 break
675 fi
676 prev="$cmd"
677 done
678
679 if test "$prev" != 'sed 50q "$0"'; then
680 echo_test_string=`eval $prev`
681 export echo_test_string
682 exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
683 else
684 # Oops. We lost completely, so just stick with echo.
685 echo=echo
686 fi
687 fi
688 fi
689 fi
690 fi
691 fi
692
693 # Copy echo and quote the copy suitably for passing to libtool from
694 # the Makefile, instead of quoting the original, which is used later.
695 ECHO=$echo
696 if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
697 ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
698 fi
699
700
701
702
703 tagnames=${tagnames+${tagnames},}CXX
704
705 tagnames=${tagnames+${tagnames},}F77
706
707 exec 7<&0 </dev/null 6>&1
708
709 # Name of the host.
710 # hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
711 # so uname gets run too.
712 ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
713
714 #
715 # Initializations.
716 #
717 ac_default_prefix=/usr/local
718 ac_clean_files=
719 ac_config_libobj_dir=.
720 LIBOBJS=
721 cross_compiling=no
722 subdirs=
723 MFLAGS=
724 MAKEFLAGS=
725 SHELL=${CONFIG_SHELL-/bin/sh}
726
727 # Identity of this package.
728 PACKAGE_NAME='GD'
729 PACKAGE_TARNAME='gd'
730 PACKAGE_VERSION='2.0.34'
731 PACKAGE_STRING='GD 2.0.34'
732 PACKAGE_BUGREPORT='http://bugs.libgd.org'
733
734 ac_unique_file="gd.c"
735 # Factoring default headers for most tests.
736 ac_includes_default="\
737 #include <stdio.h>
738 #ifdef HAVE_SYS_TYPES_H
739 # include <sys/types.h>
740 #endif
741 #ifdef HAVE_SYS_STAT_H
742 # include <sys/stat.h>
743 #endif
744 #ifdef STDC_HEADERS
745 # include <stdlib.h>
746 # include <stddef.h>
747 #else
748 # ifdef HAVE_STDLIB_H
749 # include <stdlib.h>
750 # endif
751 #endif
752 #ifdef HAVE_STRING_H
753 # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
754 # include <memory.h>
755 # endif
756 # include <string.h>
757 #endif
758 #ifdef HAVE_STRINGS_H
759 # include <strings.h>
760 #endif
761 #ifdef HAVE_INTTYPES_H
762 # include <inttypes.h>
763 #endif
764 #ifdef HAVE_STDINT_H
765 # include <stdint.h>
766 #endif
767 #ifdef HAVE_UNISTD_H
768 # include <unistd.h>
769 #endif"
770
771 ac_subst_vars='SHELL
772 PATH_SEPARATOR
773 PACKAGE_NAME
774 PACKAGE_TARNAME
775 PACKAGE_VERSION
776 PACKAGE_STRING
777 PACKAGE_BUGREPORT
778 exec_prefix
779 prefix
780 program_transform_name
781 bindir
782 sbindir
783 libexecdir
784 datarootdir
785 datadir
786 sysconfdir
787 sharedstatedir
788 localstatedir
789 includedir
790 oldincludedir
791 docdir
792 infodir
793 htmldir
794 dvidir
795 pdfdir
796 psdir
797 libdir
798 localedir
799 mandir
800 DEFS
801 ECHO_C
802 ECHO_N
803 ECHO_T
804 LIBS
805 build_alias
806 host_alias
807 target_alias
808 build
809 build_cpu
810 build_vendor
811 build_os
812 host
813 host_cpu
814 host_vendor
815 host_os
816 target
817 target_cpu
818 target_vendor
819 target_os
820 FEATURES
821 GDLIB_MAJOR
822 GDLIB_MINOR
823 GDLIB_REVISION
824 GDLIBNAME
825 INSTALL_PROGRAM
826 INSTALL_SCRIPT
827 INSTALL_DATA
828 CYGPATH_W
829 PACKAGE
830 VERSION
831 ACLOCAL
832 AUTOCONF
833 AUTOMAKE
834 AUTOHEADER
835 MAKEINFO
836 install_sh
837 STRIP
838 INSTALL_STRIP_PROGRAM
839 mkdir_p
840 AWK
841 SET_MAKE
842 am__leading_dot
843 AMTAR
844 am__tar
845 am__untar
846 XTRA_LDFLAGS
847 CC
848 CFLAGS
849 LDFLAGS
850 CPPFLAGS
851 ac_ct_CC
852 EXEEXT
853 OBJEXT
854 DEPDIR
855 am__include
856 am__quote
857 AMDEP_TRUE
858 AMDEP_FALSE
859 AMDEPBACKSLASH
860 CCDEPMODE
861 am__fastdepCC_TRUE
862 am__fastdepCC_FALSE
863 GREP
864 EGREP
865 LN_S
866 ECHO
867 AR
868 RANLIB
869 CPP
870 CXX
871 CXXFLAGS
872 ac_ct_CXX
873 CXXDEPMODE
874 am__fastdepCXX_TRUE
875 am__fastdepCXX_FALSE
876 CXXCPP
877 F77
878 FFLAGS
879 ac_ct_F77
880 LIBTOOL
881 XMKMF
882 LIBICONV
883 LTLIBICONV
884 LIBPNG12_CONFIG
885 LIBPNG_CONFIG
886 FREETYPE_CONFIG
887 acx_pthread_config
888 PTHREAD_CC
889 PTHREAD_LIBS
890 PTHREAD_CFLAGS
891 LIBOBJS
892 LTLIBOBJS'
893 ac_subst_files=''
894 ac_precious_vars='build_alias
895 host_alias
896 target_alias
897 CC
898 CFLAGS
899 LDFLAGS
900 LIBS
901 CPPFLAGS
902 CPP
903 CXX
904 CXXFLAGS
905 CCC
906 CXXCPP
907 F77
908 FFLAGS
909 XMKMF'
910
911
912 # Initialize some variables set by options.
913 ac_init_help=
914 ac_init_version=false
915 # The variables have the same names as the options, with
916 # dashes changed to underlines.
917 cache_file=/dev/null
918 exec_prefix=NONE
919 no_create=
920 no_recursion=
921 prefix=NONE
922 program_prefix=NONE
923 program_suffix=NONE
924 program_transform_name=s,x,x,
925 silent=
926 site=
927 srcdir=
928 verbose=
929 x_includes=NONE
930 x_libraries=NONE
931
932 # Installation directory options.
933 # These are left unexpanded so users can "make install exec_prefix=/foo"
934 # and all the variables that are supposed to be based on exec_prefix
935 # by default will actually change.
936 # Use braces instead of parens because sh, perl, etc. also accept them.
937 # (The list follows the same order as the GNU Coding Standards.)
938 bindir='${exec_prefix}/bin'
939 sbindir='${exec_prefix}/sbin'
940 libexecdir='${exec_prefix}/libexec'
941 datarootdir='${prefix}/share'
942 datadir='${datarootdir}'
943 sysconfdir='${prefix}/etc'
944 sharedstatedir='${prefix}/com'
945 localstatedir='${prefix}/var'
946 includedir='${prefix}/include'
947 oldincludedir='/usr/include'
948 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
949 infodir='${datarootdir}/info'
950 htmldir='${docdir}'
951 dvidir='${docdir}'
952 pdfdir='${docdir}'
953 psdir='${docdir}'
954 libdir='${exec_prefix}/lib'
955 localedir='${datarootdir}/locale'
956 mandir='${datarootdir}/man'
957
958 ac_prev=
959 ac_dashdash=
960 for ac_option
961 do
962 # If the previous option needs an argument, assign it.
963 if test -n "$ac_prev"; then
964 eval $ac_prev=\$ac_option
965 ac_prev=
966 continue
967 fi
968
969 case $ac_option in
970 *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
971 *) ac_optarg=yes ;;
972 esac
973
974 # Accept the important Cygnus configure options, so we can diagnose typos.
975
976 case $ac_dashdash$ac_option in
977 --)
978 ac_dashdash=yes ;;
979
980 -bindir | --bindir | --bindi | --bind | --bin | --bi)
981 ac_prev=bindir ;;
982 -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
983 bindir=$ac_optarg ;;
984
985 -build | --build | --buil | --bui | --bu)
986 ac_prev=build_alias ;;
987 -build=* | --build=* | --buil=* | --bui=* | --bu=*)
988 build_alias=$ac_optarg ;;
989
990 -cache-file | --cache-file | --cache-fil | --cache-fi \
991 | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
992 ac_prev=cache_file ;;
993 -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
994 | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
995 cache_file=$ac_optarg ;;
996
997 --config-cache | -C)
998 cache_file=config.cache ;;
999
1000 -datadir | --datadir | --datadi | --datad)
1001 ac_prev=datadir ;;
1002 -datadir=* | --datadir=* | --datadi=* | --datad=*)
1003 datadir=$ac_optarg ;;
1004
1005 -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
1006 | --dataroo | --dataro | --datar)
1007 ac_prev=datarootdir ;;
1008 -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
1009 | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
1010 datarootdir=$ac_optarg ;;
1011
1012 -disable-* | --disable-*)
1013 ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
1014 # Reject names that are not valid shell variable names.
1015 expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
1016 { echo "$as_me: error: invalid feature name: $ac_feature" >&2
1017 { (exit 1); exit 1; }; }
1018 ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
1019 eval enable_$ac_feature=no ;;
1020
1021 -docdir | --docdir | --docdi | --doc | --do)
1022 ac_prev=docdir ;;
1023 -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
1024 docdir=$ac_optarg ;;
1025
1026 -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
1027 ac_prev=dvidir ;;
1028 -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
1029 dvidir=$ac_optarg ;;
1030
1031 -enable-* | --enable-*)
1032 ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
1033 # Reject names that are not valid shell variable names.
1034 expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
1035 { echo "$as_me: error: invalid feature name: $ac_feature" >&2
1036 { (exit 1); exit 1; }; }
1037 ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
1038 eval enable_$ac_feature=\$ac_optarg ;;
1039
1040 -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
1041 | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
1042 | --exec | --exe | --ex)
1043 ac_prev=exec_prefix ;;
1044 -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
1045 | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
1046 | --exec=* | --exe=* | --ex=*)
1047 exec_prefix=$ac_optarg ;;
1048
1049 -gas | --gas | --ga | --g)
1050 # Obsolete; use --with-gas.
1051 with_gas=yes ;;
1052
1053 -help | --help | --hel | --he | -h)
1054 ac_init_help=long ;;
1055 -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
1056 ac_init_help=recursive ;;
1057 -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
1058 ac_init_help=short ;;
1059
1060 -host | --host | --hos | --ho)
1061 ac_prev=host_alias ;;
1062 -host=* | --host=* | --hos=* | --ho=*)
1063 host_alias=$ac_optarg ;;
1064
1065 -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
1066 ac_prev=htmldir ;;
1067 -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
1068 | --ht=*)
1069 htmldir=$ac_optarg ;;
1070
1071 -includedir | --includedir | --includedi | --included | --include \
1072 | --includ | --inclu | --incl | --inc)
1073 ac_prev=includedir ;;
1074 -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
1075 | --includ=* | --inclu=* | --incl=* | --inc=*)
1076 includedir=$ac_optarg ;;
1077
1078 -infodir | --infodir | --infodi | --infod | --info | --inf)
1079 ac_prev=infodir ;;
1080 -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
1081 infodir=$ac_optarg ;;
1082
1083 -libdir | --libdir | --libdi | --libd)
1084 ac_prev=libdir ;;
1085 -libdir=* | --libdir=* | --libdi=* | --libd=*)
1086 libdir=$ac_optarg ;;
1087
1088 -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
1089 | --libexe | --libex | --libe)
1090 ac_prev=libexecdir ;;
1091 -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
1092 | --libexe=* | --libex=* | --libe=*)
1093 libexecdir=$ac_optarg ;;
1094
1095 -localedir | --localedir | --localedi | --localed | --locale)
1096 ac_prev=localedir ;;
1097 -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
1098 localedir=$ac_optarg ;;
1099
1100 -localstatedir | --localstatedir | --localstatedi | --localstated \
1101 | --localstate | --localstat | --localsta | --localst | --locals)
1102 ac_prev=localstatedir ;;
1103 -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
1104 | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
1105 localstatedir=$ac_optarg ;;
1106
1107 -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
1108 ac_prev=mandir ;;
1109 -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
1110 mandir=$ac_optarg ;;
1111
1112 -nfp | --nfp | --nf)
1113 # Obsolete; use --without-fp.
1114 with_fp=no ;;
1115
1116 -no-create | --no-create | --no-creat | --no-crea | --no-cre \
1117 | --no-cr | --no-c | -n)
1118 no_create=yes ;;
1119
1120 -no-recursion | --no-recursion | --no-recursio | --no-recursi \
1121 | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
1122 no_recursion=yes ;;
1123
1124 -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
1125 | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
1126 | --oldin | --oldi | --old | --ol | --o)
1127 ac_prev=oldincludedir ;;
1128 -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
1129 | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
1130 | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
1131 oldincludedir=$ac_optarg ;;
1132
1133 -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
1134 ac_prev=prefix ;;
1135 -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
1136 prefix=$ac_optarg ;;
1137
1138 -program-prefix | --program-prefix | --program-prefi | --program-pref \
1139 | --program-pre | --program-pr | --program-p)
1140 ac_prev=program_prefix ;;
1141 -program-prefix=* | --program-prefix=* | --program-prefi=* \
1142 | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
1143 program_prefix=$ac_optarg ;;
1144
1145 -program-suffix | --program-suffix | --program-suffi | --program-suff \
1146 | --program-suf | --program-su | --program-s)
1147 ac_prev=program_suffix ;;
1148 -program-suffix=* | --program-suffix=* | --program-suffi=* \
1149 | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
1150 program_suffix=$ac_optarg ;;
1151
1152 -program-transform-name | --program-transform-name \
1153 | --program-transform-nam | --program-transform-na \
1154 | --program-transform-n | --program-transform- \
1155 | --program-transform | --program-transfor \
1156 | --program-transfo | --program-transf \
1157 | --program-trans | --program-tran \
1158 | --progr-tra | --program-tr | --program-t)
1159 ac_prev=program_transform_name ;;
1160 -program-transform-name=* | --program-transform-name=* \
1161 | --program-transform-nam=* | --program-transform-na=* \
1162 | --program-transform-n=* | --program-transform-=* \
1163 | --program-transform=* | --program-transfor=* \
1164 | --program-transfo=* | --program-transf=* \
1165 | --program-trans=* | --program-tran=* \
1166 | --progr-tra=* | --program-tr=* | --program-t=*)
1167 program_transform_name=$ac_optarg ;;
1168
1169 -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
1170 ac_prev=pdfdir ;;
1171 -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
1172 pdfdir=$ac_optarg ;;
1173
1174 -psdir | --psdir | --psdi | --psd | --ps)
1175 ac_prev=psdir ;;
1176 -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
1177 psdir=$ac_optarg ;;
1178
1179 -q | -quiet | --quiet | --quie | --qui | --qu | --q \
1180 | -silent | --silent | --silen | --sile | --sil)
1181 silent=yes ;;
1182
1183 -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
1184 ac_prev=sbindir ;;
1185 -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
1186 | --sbi=* | --sb=*)
1187 sbindir=$ac_optarg ;;
1188
1189 -sharedstatedir | --sharedstatedir | --sharedstatedi \
1190 | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
1191 | --sharedst | --shareds | --shared | --share | --shar \
1192 | --sha | --sh)
1193 ac_prev=sharedstatedir ;;
1194 -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
1195 | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
1196 | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
1197 | --sha=* | --sh=*)
1198 sharedstatedir=$ac_optarg ;;
1199
1200 -site | --site | --sit)
1201 ac_prev=site ;;
1202 -site=* | --site=* | --sit=*)
1203 site=$ac_optarg ;;
1204
1205 -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
1206 ac_prev=srcdir ;;
1207 -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
1208 srcdir=$ac_optarg ;;
1209
1210 -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
1211 | --syscon | --sysco | --sysc | --sys | --sy)
1212 ac_prev=sysconfdir ;;
1213 -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
1214 | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
1215 sysconfdir=$ac_optarg ;;
1216
1217 -target | --target | --targe | --targ | --tar | --ta | --t)
1218 ac_prev=target_alias ;;
1219 -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
1220 target_alias=$ac_optarg ;;
1221
1222 -v | -verbose | --verbose | --verbos | --verbo | --verb)
1223 verbose=yes ;;
1224
1225 -version | --version | --versio | --versi | --vers | -V)
1226 ac_init_version=: ;;
1227
1228 -with-* | --with-*)
1229 ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
1230 # Reject names that are not valid shell variable names.
1231 expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
1232 { echo "$as_me: error: invalid package name: $ac_package" >&2
1233 { (exit 1); exit 1; }; }
1234 ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
1235 eval with_$ac_package=\$ac_optarg ;;
1236
1237 -without-* | --without-*)
1238 ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
1239 # Reject names that are not valid shell variable names.
1240 expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
1241 { echo "$as_me: error: invalid package name: $ac_package" >&2
1242 { (exit 1); exit 1; }; }
1243 ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
1244 eval with_$ac_package=no ;;
1245
1246 --x)
1247 # Obsolete; use --with-x.
1248 with_x=yes ;;
1249
1250 -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
1251 | --x-incl | --x-inc | --x-in | --x-i)
1252 ac_prev=x_includes ;;
1253 -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
1254 | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
1255 x_includes=$ac_optarg ;;
1256
1257 -x-libraries | --x-libraries | --x-librarie | --x-librari \
1258 | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
1259 ac_prev=x_libraries ;;
1260 -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
1261 | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
1262 x_libraries=$ac_optarg ;;
1263
1264 -*) { echo "$as_me: error: unrecognized option: $ac_option
1265 Try \`$0 --help' for more information." >&2
1266 { (exit 1); exit 1; }; }
1267 ;;
1268
1269 *=*)
1270 ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
1271 # Reject names that are not valid shell variable names.
1272 expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
1273 { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
1274 { (exit 1); exit 1; }; }
1275 eval $ac_envvar=\$ac_optarg
1276 export $ac_envvar ;;
1277
1278 *)
1279 # FIXME: should be removed in autoconf 3.0.
1280 echo "$as_me: WARNING: you should use --build, --host, --target" >&2
1281 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
1282 echo "$as_me: WARNING: invalid host type: $ac_option" >&2
1283 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
1284 ;;
1285
1286 esac
1287 done
1288
1289 if test -n "$ac_prev"; then
1290 ac_option=--`echo $ac_prev | sed 's/_/-/g'`
1291 { echo "$as_me: error: missing argument to $ac_option" >&2
1292 { (exit 1); exit 1; }; }
1293 fi
1294
1295 # Be sure to have absolute directory names.
1296 for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
1297 datadir sysconfdir sharedstatedir localstatedir includedir \
1298 oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
1299 libdir localedir mandir
1300 do
1301 eval ac_val=\$$ac_var
1302 case $ac_val in
1303 [\\/$]* | ?:[\\/]* ) continue;;
1304 NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
1305 esac
1306 { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
1307 { (exit 1); exit 1; }; }
1308 done
1309
1310 # There might be people who depend on the old broken behavior: `$host'
1311 # used to hold the argument of --host etc.
1312 # FIXME: To remove some day.
1313 build=$build_alias
1314 host=$host_alias
1315 target=$target_alias
1316
1317 # FIXME: To remove some day.
1318 if test "x$host_alias" != x; then
1319 if test "x$build_alias" = x; then
1320 cross_compiling=maybe
1321 echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
1322 If a cross compiler is detected then cross compile mode will be used." >&2
1323 elif test "x$build_alias" != "x$host_alias"; then
1324 cross_compiling=yes
1325 fi
1326 fi
1327
1328 ac_tool_prefix=
1329 test -n "$host_alias" && ac_tool_prefix=$host_alias-
1330
1331 test "$silent" = yes && exec 6>/dev/null
1332
1333
1334 ac_pwd=`pwd` && test -n "$ac_pwd" &&
1335 ac_ls_di=`ls -di .` &&
1336 ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
1337 { echo "$as_me: error: Working directory cannot be determined" >&2
1338 { (exit 1); exit 1; }; }
1339 test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
1340 { echo "$as_me: error: pwd does not report name of working directory" >&2
1341 { (exit 1); exit 1; }; }
1342
1343
1344 # Find the source files, if location was not specified.
1345 if test -z "$srcdir"; then
1346 ac_srcdir_defaulted=yes
1347 # Try the directory containing this script, then the parent directory.
1348 ac_confdir=`$as_dirname -- "$0" ||
1349 $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
1350 X"$0" : 'X\(//\)[^/]' \| \
1351 X"$0" : 'X\(//\)$' \| \
1352 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
1353 echo X"$0" |
1354 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
1355 s//\1/
1356 q
1357 }
1358 /^X\(\/\/\)[^/].*/{
1359 s//\1/
1360 q
1361 }
1362 /^X\(\/\/\)$/{
1363 s//\1/
1364 q
1365 }
1366 /^X\(\/\).*/{
1367 s//\1/
1368 q
1369 }
1370 s/.*/./; q'`
1371 srcdir=$ac_confdir
1372 if test ! -r "$srcdir/$ac_unique_file"; then
1373 srcdir=..
1374 fi
1375 else
1376 ac_srcdir_defaulted=no
1377 fi
1378 if test ! -r "$srcdir/$ac_unique_file"; then
1379 test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
1380 { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
1381 { (exit 1); exit 1; }; }
1382 fi
1383 ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
1384 ac_abs_confdir=`(
1385 cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2
1386 { (exit 1); exit 1; }; }
1387 pwd)`
1388 # When building in place, set srcdir=.
1389 if test "$ac_abs_confdir" = "$ac_pwd"; then
1390 srcdir=.
1391 fi
1392 # Remove unnecessary trailing slashes from srcdir.
1393 # Double slashes in file names in object file debugging info
1394 # mess up M-x gdb in Emacs.
1395 case $srcdir in
1396 */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
1397 esac
1398 for ac_var in $ac_precious_vars; do
1399 eval ac_env_${ac_var}_set=\${${ac_var}+set}
1400 eval ac_env_${ac_var}_value=\$${ac_var}
1401 eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
1402 eval ac_cv_env_${ac_var}_value=\$${ac_var}
1403 done
1404
1405 #
1406 # Report the --help message.
1407 #
1408 if test "$ac_init_help" = "long"; then
1409 # Omit some internal or obsolete options to make the list less imposing.
1410 # This message is too long to be a string in the A/UX 3.1 sh.
1411 cat <<_ACEOF
1412 \`configure' configures GD 2.0.34 to adapt to many kinds of systems.
1413
1414 Usage: $0 [OPTION]... [VAR=VALUE]...
1415
1416 To assign environment variables (e.g., CC, CFLAGS...), specify them as
1417 VAR=VALUE. See below for descriptions of some of the useful variables.
1418
1419 Defaults for the options are specified in brackets.
1420
1421 Configuration:
1422 -h, --help display this help and exit
1423 --help=short display options specific to this package
1424 --help=recursive display the short help of all the included packages
1425 -V, --version display version information and exit
1426 -q, --quiet, --silent do not print \`checking...' messages
1427 --cache-file=FILE cache test results in FILE [disabled]
1428 -C, --config-cache alias for \`--cache-file=config.cache'
1429 -n, --no-create do not create output files
1430 --srcdir=DIR find the sources in DIR [configure dir or \`..']
1431
1432 Installation directories:
1433 --prefix=PREFIX install architecture-independent files in PREFIX
1434 [$ac_default_prefix]
1435 --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
1436 [PREFIX]
1437
1438 By default, \`make install' will install all the files in
1439 \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
1440 an installation prefix other than \`$ac_default_prefix' using \`--prefix',
1441 for instance \`--prefix=\$HOME'.
1442
1443 For better control, use the options below.
1444
1445 Fine tuning of the installation directories:
1446 --bindir=DIR user executables [EPREFIX/bin]
1447 --sbindir=DIR system admin executables [EPREFIX/sbin]
1448 --libexecdir=DIR program executables [EPREFIX/libexec]
1449 --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
1450 --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
1451 --localstatedir=DIR modifiable single-machine data [PREFIX/var]
1452 --libdir=DIR object code libraries [EPREFIX/lib]
1453 --includedir=DIR C header files [PREFIX/include]
1454 --oldincludedir=DIR C header files for non-gcc [/usr/include]
1455 --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
1456 --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
1457 --infodir=DIR info documentation [DATAROOTDIR/info]
1458 --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
1459 --mandir=DIR man documentation [DATAROOTDIR/man]
1460 --docdir=DIR documentation root [DATAROOTDIR/doc/gd]
1461 --htmldir=DIR html documentation [DOCDIR]
1462 --dvidir=DIR dvi documentation [DOCDIR]
1463 --pdfdir=DIR pdf documentation [DOCDIR]
1464 --psdir=DIR ps documentation [DOCDIR]
1465 _ACEOF
1466
1467 cat <<\_ACEOF
1468
1469 Program names:
1470 --program-prefix=PREFIX prepend PREFIX to installed program names
1471 --program-suffix=SUFFIX append SUFFIX to installed program names
1472 --program-transform-name=PROGRAM run sed PROGRAM on installed program names
1473
1474 X features:
1475 --x-includes=DIR X include files are in DIR
1476 --x-libraries=DIR X library files are in DIR
1477
1478 System types:
1479 --build=BUILD configure for building on BUILD [guessed]
1480 --host=HOST cross-compile to build programs to run on HOST [BUILD]
1481 --target=TARGET configure for building compilers for TARGET [HOST]
1482 _ACEOF
1483 fi
1484
1485 if test -n "$ac_init_help"; then
1486 case $ac_init_help in
1487 short | recursive ) echo "Configuration of GD 2.0.34:";;
1488 esac
1489 cat <<\_ACEOF
1490
1491 Optional Features:
1492 --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
1493 --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
1494 --disable-dependency-tracking speeds up one-time build
1495 --enable-dependency-tracking do not reject slow dependency extractors
1496 --enable-shared[=PKGS] build shared libraries [default=yes]
1497 --enable-static[=PKGS] build static libraries [default=yes]
1498 --enable-fast-install[=PKGS]
1499 optimize for fast installation [default=yes]
1500 --disable-libtool-lock avoid locking (might break parallel builds)
1501 --disable-rpath do not hardcode runtime library paths
1502
1503 Optional Packages:
1504 --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
1505 --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
1506 --with-gnu-ld assume the C compiler uses GNU ld [default=no]
1507 --with-pic try to use only PIC/non-PIC objects [default=use
1508 both]
1509 --with-tags[=TAGS] include additional configurations [automatic]
1510 --with-x use the X Window System
1511 --with-gnu-ld assume the C compiler uses GNU ld default=no
1512 --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib
1513 --without-libiconv-prefix don't search for libiconv in includedir and libdir
1514 --with-png=DIR where to find the png library
1515 --with-freetype=DIR where to find the freetype 2.x library
1516 --with-fontconfig=DIR where to find the fontconfig library
1517 --with-jpeg=DIR where to find the jpeg library
1518 --with-xpm=DIR where to find the xpm library
1519
1520 Some influential environment variables:
1521 CC C compiler command
1522 CFLAGS C compiler flags
1523 LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
1524 nonstandard directory <lib dir>
1525 LIBS libraries to pass to the linker, e.g. -l<library>
1526 CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
1527 you have headers in a nonstandard directory <include dir>
1528 CPP C preprocessor
1529 CXX C++ compiler command
1530 CXXFLAGS C++ compiler flags
1531 CXXCPP C++ preprocessor
1532 F77 Fortran 77 compiler command
1533 FFLAGS Fortran 77 compiler flags
1534 XMKMF Path to xmkmf, Makefile generator for X Window System
1535
1536 Use these variables to override the choices made by `configure' or to help
1537 it to find libraries and programs with nonstandard names/locations.
1538
1539 Report bugs to <http://bugs.libgd.org>.
1540 _ACEOF
1541 ac_status=$?
1542 fi
1543
1544 if test "$ac_init_help" = "recursive"; then
1545 # If there are subdirs, report their specific --help.
1546 for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
1547 test -d "$ac_dir" || continue
1548 ac_builddir=.
1549
1550 case "$ac_dir" in
1551 .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
1552 *)
1553 ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
1554 # A ".." for each directory in $ac_dir_suffix.
1555 ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
1556 case $ac_top_builddir_sub in
1557 "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
1558 *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
1559 esac ;;
1560 esac
1561 ac_abs_top_builddir=$ac_pwd
1562 ac_abs_builddir=$ac_pwd$ac_dir_suffix
1563 # for backward compatibility:
1564 ac_top_builddir=$ac_top_build_prefix
1565
1566 case $srcdir in
1567 .) # We are building in place.
1568 ac_srcdir=.
1569 ac_top_srcdir=$ac_top_builddir_sub
1570 ac_abs_top_srcdir=$ac_pwd ;;
1571 [\\/]* | ?:[\\/]* ) # Absolute name.
1572 ac_srcdir=$srcdir$ac_dir_suffix;
1573 ac_top_srcdir=$srcdir
1574 ac_abs_top_srcdir=$srcdir ;;
1575 *) # Relative name.
1576 ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
1577 ac_top_srcdir=$ac_top_build_prefix$srcdir
1578 ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
1579 esac
1580 ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
1581
1582 cd "$ac_dir" || { ac_status=$?; continue; }
1583 # Check for guested configure.
1584 if test -f "$ac_srcdir/configure.gnu"; then
1585 echo &&
1586 $SHELL "$ac_srcdir/configure.gnu" --help=recursive
1587 elif test -f "$ac_srcdir/configure"; then
1588 echo &&
1589 $SHELL "$ac_srcdir/configure" --help=recursive
1590 else
1591 echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
1592 fi || ac_status=$?
1593 cd "$ac_pwd" || { ac_status=$?; break; }
1594 done
1595 fi
1596
1597 test -n "$ac_init_help" && exit $ac_status
1598 if $ac_init_version; then
1599 cat <<\_ACEOF
1600 GD configure 2.0.34
1601 generated by GNU Autoconf 2.61
1602
1603 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
1604 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
1605 This configure script is free software; the Free Software Foundation
1606 gives unlimited permission to copy, distribute and modify it.
1607 _ACEOF
1608 exit
1609 fi
1610 cat >config.log <<_ACEOF
1611 This file contains any messages produced by compilers while
1612 running configure, to aid debugging if configure makes a mistake.
1613
1614 It was created by GD $as_me 2.0.34, which was
1615 generated by GNU Autoconf 2.61. Invocation command line was
1616
1617 $ $0 $@
1618
1619 _ACEOF
1620 exec 5>>config.log
1621 {
1622 cat <<_ASUNAME
1623 ## --------- ##
1624 ## Platform. ##
1625 ## --------- ##
1626
1627 hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
1628 uname -m = `(uname -m) 2>/dev/null || echo unknown`
1629 uname -r = `(uname -r) 2>/dev/null || echo unknown`
1630 uname -s = `(uname -s) 2>/dev/null || echo unknown`
1631 uname -v = `(uname -v) 2>/dev/null || echo unknown`
1632
1633 /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
1634 /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
1635
1636 /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
1637 /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
1638 /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
1639 /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
1640 /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
1641 /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
1642 /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
1643
1644 _ASUNAME
1645
1646 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
1647 for as_dir in $PATH
1648 do
1649 IFS=$as_save_IFS
1650 test -z "$as_dir" && as_dir=.
1651 echo "PATH: $as_dir"
1652 done
1653 IFS=$as_save_IFS
1654
1655 } >&5
1656
1657 cat >&5 <<_ACEOF
1658
1659
1660 ## ----------- ##
1661 ## Core tests. ##
1662 ## ----------- ##
1663
1664 _ACEOF
1665
1666
1667 # Keep a trace of the command line.
1668 # Strip out --no-create and --no-recursion so they do not pile up.
1669 # Strip out --silent because we don't want to record it for future runs.
1670 # Also quote any args containing shell meta-characters.
1671 # Make two passes to allow for proper duplicate-argument suppression.
1672 ac_configure_args=
1673 ac_configure_args0=
1674 ac_configure_args1=
1675 ac_must_keep_next=false
1676 for ac_pass in 1 2
1677 do
1678 for ac_arg
1679 do
1680 case $ac_arg in
1681 -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
1682 -q | -quiet | --quiet | --quie | --qui | --qu | --q \
1683 | -silent | --silent | --silen | --sile | --sil)
1684 continue ;;
1685 *\'*)
1686 ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
1687 esac
1688 case $ac_pass in
1689 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
1690 2)
1691 ac_configure_args1="$ac_configure_args1 '$ac_arg'"
1692 if test $ac_must_keep_next = true; then
1693 ac_must_keep_next=false # Got value, back to normal.
1694 else
1695 case $ac_arg in
1696 *=* | --config-cache | -C | -disable-* | --disable-* \
1697 | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
1698 | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
1699 | -with-* | --with-* | -without-* | --without-* | --x)
1700 case "$ac_configure_args0 " in
1701 "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
1702 esac
1703 ;;
1704 -* ) ac_must_keep_next=true ;;
1705 esac
1706 fi
1707 ac_configure_args="$ac_configure_args '$ac_arg'"
1708 ;;
1709 esac
1710 done
1711 done
1712 $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
1713 $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
1714
1715 # When interrupted or exit'd, cleanup temporary files, and complete
1716 # config.log. We remove comments because anyway the quotes in there
1717 # would cause problems or look ugly.
1718 # WARNING: Use '\'' to represent an apostrophe within the trap.
1719 # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
1720 trap 'exit_status=$?
1721 # Save into config.log some information that might help in debugging.
1722 {
1723 echo
1724
1725 cat <<\_ASBOX
1726 ## ---------------- ##
1727 ## Cache variables. ##
1728 ## ---------------- ##
1729 _ASBOX
1730 echo
1731 # The following way of writing the cache mishandles newlines in values,
1732 (
1733 for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
1734 eval ac_val=\$$ac_var
1735 case $ac_val in #(
1736 *${as_nl}*)
1737 case $ac_var in #(
1738 *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
1739 echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
1740 esac
1741 case $ac_var in #(
1742 _ | IFS | as_nl) ;; #(
1743 *) $as_unset $ac_var ;;
1744 esac ;;
1745 esac
1746 done
1747 (set) 2>&1 |
1748 case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
1749 *${as_nl}ac_space=\ *)
1750 sed -n \
1751 "s/'\''/'\''\\\\'\'''\''/g;
1752 s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
1753 ;; #(
1754 *)
1755 sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
1756 ;;
1757 esac |
1758 sort
1759 )
1760 echo
1761
1762 cat <<\_ASBOX
1763 ## ----------------- ##
1764 ## Output variables. ##
1765 ## ----------------- ##
1766 _ASBOX
1767 echo
1768 for ac_var in $ac_subst_vars
1769 do
1770 eval ac_val=\$$ac_var
1771 case $ac_val in
1772 *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
1773 esac
1774 echo "$ac_var='\''$ac_val'\''"
1775 done | sort
1776 echo
1777
1778 if test -n "$ac_subst_files"; then
1779 cat <<\_ASBOX
1780 ## ------------------- ##
1781 ## File substitutions. ##
1782 ## ------------------- ##
1783 _ASBOX
1784 echo
1785 for ac_var in $ac_subst_files
1786 do
1787 eval ac_val=\$$ac_var
1788 case $ac_val in
1789 *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
1790 esac
1791 echo "$ac_var='\''$ac_val'\''"
1792 done | sort
1793 echo
1794 fi
1795
1796 if test -s confdefs.h; then
1797 cat <<\_ASBOX
1798 ## ----------- ##
1799 ## confdefs.h. ##
1800 ## ----------- ##
1801 _ASBOX
1802 echo
1803 cat confdefs.h
1804 echo
1805 fi
1806 test "$ac_signal" != 0 &&
1807 echo "$as_me: caught signal $ac_signal"
1808 echo "$as_me: exit $exit_status"
1809 } >&5
1810 rm -f core *.core core.conftest.* &&
1811 rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
1812 exit $exit_status
1813 ' 0
1814 for ac_signal in 1 2 13 15; do
1815 trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
1816 done
1817 ac_signal=0
1818
1819 # confdefs.h avoids OS command line length limits that DEFS can exceed.
1820 rm -f -r conftest* confdefs.h
1821
1822 # Predefined preprocessor variables.
1823
1824 cat >>confdefs.h <<_ACEOF
1825 #define PACKAGE_NAME "$PACKAGE_NAME"
1826 _ACEOF
1827
1828
1829 cat >>confdefs.h <<_ACEOF
1830 #define PACKAGE_TARNAME "$PACKAGE_TARNAME"
1831 _ACEOF
1832
1833
1834 cat >>confdefs.h <<_ACEOF
1835 #define PACKAGE_VERSION "$PACKAGE_VERSION"
1836 _ACEOF
1837
1838
1839 cat >>confdefs.h <<_ACEOF
1840 #define PACKAGE_STRING "$PACKAGE_STRING"
1841 _ACEOF
1842
1843
1844 cat >>confdefs.h <<_ACEOF
1845 #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
1846 _ACEOF
1847
1848
1849 # Let the site file select an alternate cache file if it wants to.
1850 # Prefer explicitly selected file to automatically selected ones.
1851 if test -n "$CONFIG_SITE"; then
1852 set x "$CONFIG_SITE"
1853 elif test "x$prefix" != xNONE; then
1854 set x "$prefix/share/config.site" "$prefix/etc/config.site"
1855 else
1856 set x "$ac_default_prefix/share/config.site" \
1857 "$ac_default_prefix/etc/config.site"
1858 fi
1859 shift
1860 for ac_site_file
1861 do
1862 if test -r "$ac_site_file"; then
1863 { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
1864 echo "$as_me: loading site script $ac_site_file" >&6;}
1865 sed 's/^/| /' "$ac_site_file" >&5
1866 . "$ac_site_file"
1867 fi
1868 done
1869
1870 if test -r "$cache_file"; then
1871 # Some versions of bash will fail to source /dev/null (special
1872 # files actually), so we avoid doing that.
1873 if test -f "$cache_file"; then
1874 { echo "$as_me:$LINENO: loading cache $cache_file" >&5
1875 echo "$as_me: loading cache $cache_file" >&6;}
1876 case $cache_file in
1877 [\\/]* | ?:[\\/]* ) . "$cache_file";;
1878 *) . "./$cache_file";;
1879 esac
1880 fi
1881 else
1882 { echo "$as_me:$LINENO: creating cache $cache_file" >&5
1883 echo "$as_me: creating cache $cache_file" >&6;}
1884 >$cache_file
1885 fi
1886
1887 # Check that the precious variables saved in the cache have kept the same
1888 # value.
1889 ac_cache_corrupted=false
1890 for ac_var in $ac_precious_vars; do
1891 eval ac_old_set=\$ac_cv_env_${ac_var}_set
1892 eval ac_new_set=\$ac_env_${ac_var}_set
1893 eval ac_old_val=\$ac_cv_env_${ac_var}_value
1894 eval ac_new_val=\$ac_env_${ac_var}_value
1895 case $ac_old_set,$ac_new_set in
1896 set,)
1897 { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
1898 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
1899 ac_cache_corrupted=: ;;
1900 ,set)
1901 { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
1902 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
1903 ac_cache_corrupted=: ;;
1904 ,);;
1905 *)
1906 if test "x$ac_old_val" != "x$ac_new_val"; then
1907 { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
1908 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
1909 { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
1910 echo "$as_me: former value: $ac_old_val" >&2;}
1911 { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
1912 echo "$as_me: current value: $ac_new_val" >&2;}
1913 ac_cache_corrupted=:
1914 fi;;
1915 esac
1916 # Pass precious variables to config.status.
1917 if test "$ac_new_set" = set; then
1918 case $ac_new_val in
1919 *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
1920 *) ac_arg=$ac_var=$ac_new_val ;;
1921 esac
1922 case " $ac_configure_args " in
1923 *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
1924 *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
1925 esac
1926 fi
1927 done
1928 if $ac_cache_corrupted; then
1929 { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
1930 echo "$as_me: error: changes in the environment can compromise the build" >&2;}
1931 { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
1932 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
1933 { (exit 1); exit 1; }; }
1934 fi
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960 ac_ext=c
1961 ac_cpp='$CPP $CPPFLAGS'
1962 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
1963 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
1964 ac_compiler_gnu=$ac_cv_c_compiler_gnu
1965
1966
1967
1968 ac_aux_dir=
1969 for ac_dir in config "$srcdir"/config; do
1970 if test -f "$ac_dir/install-sh"; then
1971 ac_aux_dir=$ac_dir
1972 ac_install_sh="$ac_aux_dir/install-sh -c"
1973 break
1974 elif test -f "$ac_dir/install.sh"; then
1975 ac_aux_dir=$ac_dir
1976 ac_install_sh="$ac_aux_dir/install.sh -c"
1977 break
1978 elif test -f "$ac_dir/shtool"; then
1979 ac_aux_dir=$ac_dir
1980 ac_install_sh="$ac_aux_dir/shtool install -c"
1981 break
1982 fi
1983 done
1984 if test -z "$ac_aux_dir"; then
1985 { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in config \"$srcdir\"/config" >&5
1986 echo "$as_me: error: cannot find install-sh or install.sh in config \"$srcdir\"/config" >&2;}
1987 { (exit 1); exit 1; }; }
1988 fi
1989
1990 # These three variables are undocumented and unsupported,
1991 # and are intended to be withdrawn in a future Autoconf release.
1992 # They can cause serious problems if a builder's source tree is in a directory
1993 # whose full name contains unusual characters.
1994 ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
1995 ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
1996 ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
1997
1998
1999 # Make sure we can run config.sub.
2000 $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
2001 { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
2002 echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
2003 { (exit 1); exit 1; }; }
2004
2005 { echo "$as_me:$LINENO: checking build system type" >&5
2006 echo $ECHO_N "checking build system type... $ECHO_C" >&6; }
2007 if test "${ac_cv_build+set}" = set; then
2008 echo $ECHO_N "(cached) $ECHO_C" >&6
2009 else
2010 ac_build_alias=$build_alias
2011 test "x$ac_build_alias" = x &&
2012 ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
2013 test "x$ac_build_alias" = x &&
2014 { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
2015 echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
2016 { (exit 1); exit 1; }; }
2017 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
2018 { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
2019 echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
2020 { (exit 1); exit 1; }; }
2021
2022 fi
2023 { echo "$as_me:$LINENO: result: $ac_cv_build" >&5
2024 echo "${ECHO_T}$ac_cv_build" >&6; }
2025 case $ac_cv_build in
2026 *-*-*) ;;
2027 *) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
2028 echo "$as_me: error: invalid value of canonical build" >&2;}
2029 { (exit 1); exit 1; }; };;
2030 esac
2031 build=$ac_cv_build
2032 ac_save_IFS=$IFS; IFS='-'
2033 set x $ac_cv_build
2034 shift
2035 build_cpu=$1
2036 build_vendor=$2
2037 shift; shift
2038 # Remember, the first character of IFS is used to create $*,
2039 # except with old shells:
2040 build_os=$*
2041 IFS=$ac_save_IFS
2042 case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
2043
2044
2045 { echo "$as_me:$LINENO: checking host system type" >&5
2046 echo $ECHO_N "checking host system type... $ECHO_C" >&6; }
2047 if test "${ac_cv_host+set}" = set; then
2048 echo $ECHO_N "(cached) $ECHO_C" >&6
2049 else
2050 if test "x$host_alias" = x; then
2051 ac_cv_host=$ac_cv_build
2052 else
2053 ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
2054 { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
2055 echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
2056 { (exit 1); exit 1; }; }
2057 fi
2058
2059 fi
2060 { echo "$as_me:$LINENO: result: $ac_cv_host" >&5
2061 echo "${ECHO_T}$ac_cv_host" >&6; }
2062 case $ac_cv_host in
2063 *-*-*) ;;
2064 *) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
2065 echo "$as_me: error: invalid value of canonical host" >&2;}
2066 { (exit 1); exit 1; }; };;
2067 esac
2068 host=$ac_cv_host
2069 ac_save_IFS=$IFS; IFS='-'
2070 set x $ac_cv_host
2071 shift
2072 host_cpu=$1
2073 host_vendor=$2
2074 shift; shift
2075 # Remember, the first character of IFS is used to create $*,
2076 # except with old shells:
2077 host_os=$*
2078 IFS=$ac_save_IFS
2079 case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
2080
2081
2082 { echo "$as_me:$LINENO: checking target system type" >&5
2083 echo $ECHO_N "checking target system type... $ECHO_C" >&6; }
2084 if test "${ac_cv_target+set}" = set; then
2085 echo $ECHO_N "(cached) $ECHO_C" >&6
2086 else
2087 if test "x$target_alias" = x; then
2088 ac_cv_target=$ac_cv_host
2089 else
2090 ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
2091 { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5
2092 echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;}
2093 { (exit 1); exit 1; }; }
2094 fi
2095
2096 fi
2097 { echo "$as_me:$LINENO: result: $ac_cv_target" >&5
2098 echo "${ECHO_T}$ac_cv_target" >&6; }
2099 case $ac_cv_target in
2100 *-*-*) ;;
2101 *) { { echo "$as_me:$LINENO: error: invalid value of canonical target" >&5
2102 echo "$as_me: error: invalid value of canonical target" >&2;}
2103 { (exit 1); exit 1; }; };;
2104 esac
2105 target=$ac_cv_target
2106 ac_save_IFS=$IFS; IFS='-'
2107 set x $ac_cv_target
2108 shift
2109 target_cpu=$1
2110 target_vendor=$2
2111 shift; shift
2112 # Remember, the first character of IFS is used to create $*,
2113 # except with old shells:
2114 target_os=$*
2115 IFS=$ac_save_IFS
2116 case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
2117
2118
2119 # The aliases save the names the user supplied, while $host etc.
2120 # will get canonicalized.
2121 test -n "$target_alias" &&
2122 test "$program_prefix$program_suffix$program_transform_name" = \
2123 NONENONEs,x,x, &&
2124 program_prefix=${target_alias}-
2125
2126 GDLIB_MAJOR=2
2127 GDLIB_MINOR=0
2128 GDLIB_REVISION=34
2129 GDLIBNAME=gd
2130 #Expanded by tests later in this file. TBB 2.0.26
2131 #2.0.28: GIF is standard now. Doesn't depend on anything else,
2132 #so we always build it.
2133 FEATURES="GD_GIF GD_GIFANIM GD_OPENPOLYGON"
2134
2135
2136
2137
2138
2139
2140
2141 am__api_version="1.9"
2142 # Find a good install program. We prefer a C program (faster),
2143 # so one script is as good as another. But avoid the broken or
2144 # incompatible versions:
2145 # SysV /etc/install, /usr/sbin/install
2146 # SunOS /usr/etc/install
2147 # IRIX /sbin/install
2148 # AIX /bin/install
2149 # AmigaOS /C/install, which installs bootblocks on floppy discs
2150 # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
2151 # AFS /usr/afsws/bin/install, which mishandles nonexistent args
2152 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
2153 # OS/2's system install, which has a completely different semantic
2154 # ./install, which can be erroneously created by make from ./install.sh.
2155 { echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
2156 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; }
2157 if test -z "$INSTALL"; then
2158 if test "${ac_cv_path_install+set}" = set; then
2159 echo $ECHO_N "(cached) $ECHO_C" >&6
2160 else
2161 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2162 for as_dir in $PATH
2163 do
2164 IFS=$as_save_IFS
2165 test -z "$as_dir" && as_dir=.
2166 # Account for people who put trailing slashes in PATH elements.
2167 case $as_dir/ in
2168 ./ | .// | /cC/* | \
2169 /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
2170 ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
2171 /usr/ucb/* ) ;;
2172 *)
2173 # OSF1 and SCO ODT 3.0 have their own names for install.
2174 # Don't use installbsd from OSF since it installs stuff as root
2175 # by default.
2176 for ac_prog in ginstall scoinst install; do
2177 for ac_exec_ext in '' $ac_executable_extensions; do
2178 if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
2179 if test $ac_prog = install &&
2180 grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
2181 # AIX install. It has an incompatible calling convention.
2182 :
2183 elif test $ac_prog = install &&
2184 grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
2185 # program-specific install script used by HP pwplus--don't use.
2186 :
2187 else
2188 ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
2189 break 3
2190 fi
2191 fi
2192 done
2193 done
2194 ;;
2195 esac
2196 done
2197 IFS=$as_save_IFS
2198
2199
2200 fi
2201 if test "${ac_cv_path_install+set}" = set; then
2202 INSTALL=$ac_cv_path_install
2203 else
2204 # As a last resort, use the slow shell script. Don't cache a
2205 # value for INSTALL within a source directory, because that will
2206 # break other packages using the cache if that directory is
2207 # removed, or if the value is a relative name.
2208 INSTALL=$ac_install_sh
2209 fi
2210 fi
2211 { echo "$as_me:$LINENO: result: $INSTALL" >&5
2212 echo "${ECHO_T}$INSTALL" >&6; }
2213
2214 # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
2215 # It thinks the first close brace ends the variable substitution.
2216 test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
2217
2218 test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
2219
2220 test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
2221
2222 { echo "$as_me:$LINENO: checking whether build environment is sane" >&5
2223 echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; }
2224 # Just in case
2225 sleep 1
2226 echo timestamp > conftest.file
2227 # Do `set' in a subshell so we don't clobber the current shell's
2228 # arguments. Must try -L first in case configure is actually a
2229 # symlink; some systems play weird games with the mod time of symlinks
2230 # (eg FreeBSD returns the mod time of the symlink's containing
2231 # directory).
2232 if (
2233 set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
2234 if test "$*" = "X"; then
2235 # -L didn't work.
2236 set X `ls -t $srcdir/configure conftest.file`
2237 fi
2238 rm -f conftest.file
2239 if test "$*" != "X $srcdir/configure conftest.file" \
2240 && test "$*" != "X conftest.file $srcdir/configure"; then
2241
2242 # If neither matched, then we have a broken ls. This can happen
2243 # if, for instance, CONFIG_SHELL is bash and it inherits a
2244 # broken ls alias from the environment. This has actually
2245 # happened. Such a system could not be considered "sane".
2246 { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken
2247 alias in your environment" >&5
2248 echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken
2249 alias in your environment" >&2;}
2250 { (exit 1); exit 1; }; }
2251 fi
2252
2253 test "$2" = conftest.file
2254 )
2255 then
2256 # Ok.
2257 :
2258 else
2259 { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
2260 Check your system clock" >&5
2261 echo "$as_me: error: newly created file is older than distributed files!
2262 Check your system clock" >&2;}
2263 { (exit 1); exit 1; }; }
2264 fi
2265 { echo "$as_me:$LINENO: result: yes" >&5
2266 echo "${ECHO_T}yes" >&6; }
2267 test "$program_prefix" != NONE &&
2268 program_transform_name="s&^&$program_prefix&;$program_transform_name"
2269 # Use a double $ so make ignores it.
2270 test "$program_suffix" != NONE &&
2271 program_transform_name="s&\$&$program_suffix&;$program_transform_name"
2272 # Double any \ or $. echo might interpret backslashes.
2273 # By default was `s,x,x', remove it if useless.
2274 cat <<\_ACEOF >conftest.sed
2275 s/[\\$]/&&/g;s/;s,x,x,$//
2276 _ACEOF
2277 program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
2278 rm -f conftest.sed
2279
2280 # expand $ac_aux_dir to an absolute path
2281 am_aux_dir=`cd $ac_aux_dir && pwd`
2282
2283 test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
2284 # Use eval to expand $SHELL
2285 if eval "$MISSING --run true"; then
2286 am_missing_run="$MISSING --run "
2287 else
2288 am_missing_run=
2289 { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
2290 echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
2291 fi
2292
2293 if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
2294 # We used to keeping the `.' as first argument, in order to
2295 # allow $(mkdir_p) to be used without argument. As in
2296 # $(mkdir_p) $(somedir)
2297 # where $(somedir) is conditionally defined. However this is wrong
2298 # for two reasons:
2299 # 1. if the package is installed by a user who cannot write `.'
2300 # make install will fail,
2301 # 2. the above comment should most certainly read
2302 # $(mkdir_p) $(DESTDIR)$(somedir)
2303 # so it does not work when $(somedir) is undefined and
2304 # $(DESTDIR) is not.
2305 # To support the latter case, we have to write
2306 # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
2307 # so the `.' trick is pointless.
2308 mkdir_p='mkdir -p --'
2309 else
2310 # On NextStep and OpenStep, the `mkdir' command does not
2311 # recognize any option. It will interpret all options as
2312 # directories to create, and then abort because `.' already
2313 # exists.
2314 for d in ./-p ./--version;
2315 do
2316 test -d $d && rmdir $d
2317 done
2318 # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
2319 if test -f "$ac_aux_dir/mkinstalldirs"; then
2320 mkdir_p='$(mkinstalldirs)'
2321 else
2322 mkdir_p='$(install_sh) -d'
2323 fi
2324 fi
2325
2326 for ac_prog in gawk mawk nawk awk
2327 do
2328 # Extract the first word of "$ac_prog", so it can be a program name with args.
2329 set dummy $ac_prog; ac_word=$2
2330 { echo "$as_me:$LINENO: checking for $ac_word" >&5
2331 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
2332 if test "${ac_cv_prog_AWK+set}" = set; then
2333 echo $ECHO_N "(cached) $ECHO_C" >&6
2334 else
2335 if test -n "$AWK"; then
2336 ac_cv_prog_AWK="$AWK" # Let the user override the test.
2337 else
2338 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2339 for as_dir in $PATH
2340 do
2341 IFS=$as_save_IFS
2342 test -z "$as_dir" && as_dir=.
2343 for ac_exec_ext in '' $ac_executable_extensions; do
2344 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
2345 ac_cv_prog_AWK="$ac_prog"
2346 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
2347 break 2
2348 fi
2349 done
2350 done
2351 IFS=$as_save_IFS
2352
2353 fi
2354 fi
2355 AWK=$ac_cv_prog_AWK
2356 if test -n "$AWK"; then
2357 { echo "$as_me:$LINENO: result: $AWK" >&5
2358 echo "${ECHO_T}$AWK" >&6; }
2359 else
2360 { echo "$as_me:$LINENO: result: no" >&5
2361 echo "${ECHO_T}no" >&6; }
2362 fi
2363
2364
2365 test -n "$AWK" && break
2366 done
2367
2368 { echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
2369 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; }
2370 set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
2371 if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
2372 echo $ECHO_N "(cached) $ECHO_C" >&6
2373 else
2374 cat >conftest.make <<\_ACEOF
2375 SHELL = /bin/sh
2376 all:
2377 @echo '@@@%%%=$(MAKE)=@@@%%%'
2378 _ACEOF
2379 # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
2380 case `${MAKE-make} -f conftest.make 2>/dev/null` in
2381 *@@@%%%=?*=@@@%%%*)
2382 eval ac_cv_prog_make_${ac_make}_set=yes;;
2383 *)
2384 eval ac_cv_prog_make_${ac_make}_set=no;;
2385 esac
2386 rm -f conftest.make
2387 fi
2388 if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
2389 { echo "$as_me:$LINENO: result: yes" >&5
2390 echo "${ECHO_T}yes" >&6; }
2391 SET_MAKE=
2392 else
2393 { echo "$as_me:$LINENO: result: no" >&5
2394 echo "${ECHO_T}no" >&6; }
2395 SET_MAKE="MAKE=${MAKE-make}"
2396 fi
2397
2398 rm -rf .tst 2>/dev/null
2399 mkdir .tst 2>/dev/null
2400 if test -d .tst; then
2401 am__leading_dot=.
2402 else
2403 am__leading_dot=_
2404 fi
2405 rmdir .tst 2>/dev/null
2406
2407 # test to see if srcdir already configured
2408 if test "`cd $srcdir && pwd`" != "`pwd`" &&
2409 test -f $srcdir/config.status; then
2410 { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
2411 echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
2412 { (exit 1); exit 1; }; }
2413 fi
2414
2415 # test whether we have cygpath
2416 if test -z "$CYGPATH_W"; then
2417 if (cygpath --version) >/dev/null 2>/dev/null; then
2418 CYGPATH_W='cygpath -w'
2419 else
2420 CYGPATH_W=echo
2421 fi
2422 fi
2423
2424
2425 # Define the identity of the package.
2426 PACKAGE='gd'
2427 VERSION='2.0.34'
2428
2429
2430 cat >>confdefs.h <<_ACEOF
2431 #define PACKAGE "$PACKAGE"
2432 _ACEOF
2433
2434
2435 cat >>confdefs.h <<_ACEOF
2436 #define VERSION "$VERSION"
2437 _ACEOF
2438
2439 # Some tools Automake needs.
2440
2441 ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
2442
2443
2444 AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
2445
2446
2447 AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
2448
2449
2450 AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
2451
2452
2453 MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
2454
2455 install_sh=${install_sh-"$am_aux_dir/install-sh"}
2456
2457 # Installed binaries are usually stripped using `strip' when the user
2458 # run `make install-strip'. However `strip' might not be the right
2459 # tool to use in cross-compilation environments, therefore Automake
2460 # will honor the `STRIP' environment variable to overrule this program.
2461 if test "$cross_compiling" != no; then
2462 if test -n "$ac_tool_prefix"; then
2463 # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
2464 set dummy ${ac_tool_prefix}strip; ac_word=$2
2465 { echo "$as_me:$LINENO: checking for $ac_word" >&5
2466 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
2467 if test "${ac_cv_prog_STRIP+set}" = set; then
2468 echo $ECHO_N "(cached) $ECHO_C" >&6
2469 else
2470 if test -n "$STRIP"; then
2471 ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
2472 else
2473 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2474 for as_dir in $PATH
2475 do
2476 IFS=$as_save_IFS
2477 test -z "$as_dir" && as_dir=.
2478 for ac_exec_ext in '' $ac_executable_extensions; do
2479 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
2480 ac_cv_prog_STRIP="${ac_tool_prefix}strip"
2481 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
2482 break 2
2483 fi
2484 done
2485 done
2486 IFS=$as_save_IFS
2487
2488 fi
2489 fi
2490 STRIP=$ac_cv_prog_STRIP
2491 if test -n "$STRIP"; then
2492 { echo "$as_me:$LINENO: result: $STRIP" >&5
2493 echo "${ECHO_T}$STRIP" >&6; }
2494 else
2495 { echo "$as_me:$LINENO: result: no" >&5
2496 echo "${ECHO_T}no" >&6; }
2497 fi
2498
2499
2500 fi
2501 if test -z "$ac_cv_prog_STRIP"; then
2502 ac_ct_STRIP=$STRIP
2503 # Extract the first word of "strip", so it can be a program name with args.
2504 set dummy strip; ac_word=$2
2505 { echo "$as_me:$LINENO: checking for $ac_word" >&5
2506 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
2507 if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
2508 echo $ECHO_N "(cached) $ECHO_C" >&6
2509 else
2510 if test -n "$ac_ct_STRIP"; then
2511 ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
2512 else
2513 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2514 for as_dir in $PATH
2515 do
2516 IFS=$as_save_IFS
2517 test -z "$as_dir" && as_dir=.
2518 for ac_exec_ext in '' $ac_executable_extensions; do
2519 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
2520 ac_cv_prog_ac_ct_STRIP="strip"
2521 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
2522 break 2
2523 fi
2524 done
2525 done
2526 IFS=$as_save_IFS
2527
2528 fi
2529 fi
2530 ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
2531 if test -n "$ac_ct_STRIP"; then
2532 { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
2533 echo "${ECHO_T}$ac_ct_STRIP" >&6; }
2534 else
2535 { echo "$as_me:$LINENO: result: no" >&5
2536 echo "${ECHO_T}no" >&6; }
2537 fi
2538
2539 if test "x$ac_ct_STRIP" = x; then
2540 STRIP=":"
2541 else
2542 case $cross_compiling:$ac_tool_warned in
2543 yes:)
2544 { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
2545 whose name does not start with the host triplet. If you think this
2546 configuration is useful to you, please write to autoconf@gnu.org." >&5
2547 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
2548 whose name does not start with the host triplet. If you think this
2549 configuration is useful to you, please write to autoconf@gnu.org." >&2;}
2550 ac_tool_warned=yes ;;
2551 esac
2552 STRIP=$ac_ct_STRIP
2553 fi
2554 else
2555 STRIP="$ac_cv_prog_STRIP"
2556 fi
2557
2558 fi
2559 INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
2560
2561 # We need awk for the "check" target. The system "awk" is bad on
2562 # some platforms.
2563 # Always define AMTAR for backward compatibility.
2564
2565 AMTAR=${AMTAR-"${am_missing_run}tar"}
2566
2567 am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
2568
2569
2570
2571
2572
2573 ac_config_headers="$ac_config_headers config.h:config.hin"
2574
2575
2576 { echo "$as_me:$LINENO: checking if we are building a Cygwin target" >&5
2577 echo $ECHO_N "checking if we are building a Cygwin target... $ECHO_C" >&6; }
2578 case "$target" in
2579 *-*-cygwin*) XTRA_LDFLAGS="-no-undefined"
2580 os_cygwin=yes
2581 ;;
2582 *) XTRA_LDFLAGS=
2583 os_cygwin=no
2584 ;;
2585 esac
2586 { echo "$as_me:$LINENO: result: $os_cygwin" >&5
2587 echo "${ECHO_T}$os_cygwin" >&6; }
2588
2589
2590 ac_ext=c
2591 ac_cpp='$CPP $CPPFLAGS'
2592 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
2593 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
2594 ac_compiler_gnu=$ac_cv_c_compiler_gnu
2595 if test -n "$ac_tool_prefix"; then
2596 # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
2597 set dummy ${ac_tool_prefix}gcc; ac_word=$2
2598 { echo "$as_me:$LINENO: checking for $ac_word" >&5
2599 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
2600 if test "${ac_cv_prog_CC+set}" = set; then
2601 echo $ECHO_N "(cached) $ECHO_C" >&6
2602 else
2603 if test -n "$CC"; then
2604 ac_cv_prog_CC="$CC" # Let the user override the test.
2605 else
2606 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2607 for as_dir in $PATH
2608 do
2609 IFS=$as_save_IFS
2610 test -z "$as_dir" && as_dir=.
2611 for ac_exec_ext in '' $ac_executable_extensions; do
2612 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
2613 ac_cv_prog_CC="${ac_tool_prefix}gcc"
2614 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
2615 break 2
2616 fi
2617 done
2618 done
2619 IFS=$as_save_IFS
2620
2621 fi
2622 fi
2623 CC=$ac_cv_prog_CC
2624 if test -n "$CC"; then
2625 { echo "$as_me:$LINENO: result: $CC" >&5
2626 echo "${ECHO_T}$CC" >&6; }
2627 else
2628 { echo "$as_me:$LINENO: result: no" >&5
2629 echo "${ECHO_T}no" >&6; }
2630 fi
2631
2632
2633 fi
2634 if test -z "$ac_cv_prog_CC"; then
2635 ac_ct_CC=$CC
2636 # Extract the first word of "gcc", so it can be a program name with args.
2637 set dummy gcc; ac_word=$2
2638 { echo "$as_me:$LINENO: checking for $ac_word" >&5
2639 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
2640 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
2641 echo $ECHO_N "(cached) $ECHO_C" >&6
2642 else
2643 if test -n "$ac_ct_CC"; then
2644 ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
2645 else
2646 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2647 for as_dir in $PATH
2648 do
2649 IFS=$as_save_IFS
2650 test -z "$as_dir" && as_dir=.
2651 for ac_exec_ext in '' $ac_executable_extensions; do
2652 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
2653 ac_cv_prog_ac_ct_CC="gcc"
2654 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
2655 break 2
2656 fi
2657 done
2658 done
2659 IFS=$as_save_IFS
2660
2661 fi
2662 fi
2663 ac_ct_CC=$ac_cv_prog_ac_ct_CC
2664 if test -n "$ac_ct_CC"; then
2665 { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
2666 echo "${ECHO_T}$ac_ct_CC" >&6; }
2667 else
2668 { echo "$as_me:$LINENO: result: no" >&5
2669 echo "${ECHO_T}no" >&6; }
2670 fi
2671
2672 if test "x$ac_ct_CC" = x; then
2673 CC=""
2674 else
2675 case $cross_compiling:$ac_tool_warned in
2676 yes:)
2677 { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
2678 whose name does not start with the host triplet. If you think this
2679 configuration is useful to you, please write to autoconf@gnu.org." >&5
2680 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
2681 whose name does not start with the host triplet. If you think this
2682 configuration is useful to you, please write to autoconf@gnu.org." >&2;}
2683 ac_tool_warned=yes ;;
2684 esac
2685 CC=$ac_ct_CC
2686 fi
2687 else
2688 CC="$ac_cv_prog_CC"
2689 fi
2690
2691 if test -z "$CC"; then
2692 if test -n "$ac_tool_prefix"; then
2693 # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
2694 set dummy ${ac_tool_prefix}cc; ac_word=$2
2695 { echo "$as_me:$LINENO: checking for $ac_word" >&5
2696 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
2697 if test "${ac_cv_prog_CC+set}" = set; then
2698 echo $ECHO_N "(cached) $ECHO_C" >&6
2699 else
2700 if test -n "$CC"; then
2701 ac_cv_prog_CC="$CC" # Let the user override the test.
2702 else
2703 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2704 for as_dir in $PATH
2705 do
2706 IFS=$as_save_IFS
2707 test -z "$as_dir" && as_dir=.
2708 for ac_exec_ext in '' $ac_executable_extensions; do
2709 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
2710 ac_cv_prog_CC="${ac_tool_prefix}cc"
2711 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
2712 break 2
2713 fi
2714 done
2715 done
2716 IFS=$as_save_IFS
2717
2718 fi
2719 fi
2720 CC=$ac_cv_prog_CC
2721 if test -n "$CC"; then
2722 { echo "$as_me:$LINENO: result: $CC" >&5
2723 echo "${ECHO_T}$CC" >&6; }
2724 else
2725 { echo "$as_me:$LINENO: result: no" >&5
2726 echo "${ECHO_T}no" >&6; }
2727 fi
2728
2729
2730 fi
2731 fi
2732 if test -z "$CC"; then
2733 # Extract the first word of "cc", so it can be a program name with args.
2734 set dummy cc; ac_word=$2
2735 { echo "$as_me:$LINENO: checking for $ac_word" >&5
2736 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
2737 if test "${ac_cv_prog_CC+set}" = set; then
2738 echo $ECHO_N "(cached) $ECHO_C" >&6
2739 else
2740 if test -n "$CC"; then
2741 ac_cv_prog_CC="$CC" # Let the user override the test.
2742 else
2743 ac_prog_rejected=no
2744 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2745 for as_dir in $PATH
2746 do
2747 IFS=$as_save_IFS
2748 test -z "$as_dir" && as_dir=.
2749 for ac_exec_ext in '' $ac_executable_extensions; do
2750 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
2751 if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
2752 ac_prog_rejected=yes
2753 continue
2754 fi
2755 ac_cv_prog_CC="cc"
2756 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
2757 break 2
2758 fi
2759 done
2760 done
2761 IFS=$as_save_IFS
2762
2763 if test $ac_prog_rejected = yes; then
2764 # We found a bogon in the path, so make sure we never use it.
2765 set dummy $ac_cv_prog_CC
2766 shift
2767 if test $# != 0; then
2768 # We chose a different compiler from the bogus one.
2769 # However, it has the same basename, so the bogon will be chosen
2770 # first if we set CC to just the basename; use the full file name.
2771 shift
2772 ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
2773 fi
2774 fi
2775 fi
2776 fi
2777 CC=$ac_cv_prog_CC
2778 if test -n "$CC"; then
2779 { echo "$as_me:$LINENO: result: $CC" >&5
2780 echo "${ECHO_T}$CC" >&6; }
2781 else
2782 { echo "$as_me:$LINENO: result: no" >&5
2783 echo "${ECHO_T}no" >&6; }
2784 fi
2785
2786
2787 fi
2788 if test -z "$CC"; then
2789 if test -n "$ac_tool_prefix"; then
2790 for ac_prog in cl.exe
2791 do
2792 # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
2793 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
2794 { echo "$as_me:$LINENO: checking for $ac_word" >&5
2795 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
2796 if test "${ac_cv_prog_CC+set}" = set; then
2797 echo $ECHO_N "(cached) $ECHO_C" >&6
2798 else
2799 if test -n "$CC"; then
2800 ac_cv_prog_CC="$CC" # Let the user override the test.
2801 else
2802 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2803 for as_dir in $PATH
2804 do
2805 IFS=$as_save_IFS
2806 test -z "$as_dir" && as_dir=.
2807 for ac_exec_ext in '' $ac_executable_extensions; do
2808 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
2809 ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
2810 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
2811 break 2
2812 fi
2813 done
2814 done
2815 IFS=$as_save_IFS
2816
2817 fi
2818 fi
2819 CC=$ac_cv_prog_CC
2820 if test -n "$CC"; then
2821 { echo "$as_me:$LINENO: result: $CC" >&5
2822 echo "${ECHO_T}$CC" >&6; }
2823 else
2824 { echo "$as_me:$LINENO: result: no" >&5
2825 echo "${ECHO_T}no" >&6; }
2826 fi
2827
2828
2829 test -n "$CC" && break
2830 done
2831 fi
2832 if test -z "$CC"; then
2833 ac_ct_CC=$CC
2834 for ac_prog in cl.exe
2835 do
2836 # Extract the first word of "$ac_prog", so it can be a program name with args.
2837 set dummy $ac_prog; ac_word=$2
2838 { echo "$as_me:$LINENO: checking for $ac_word" >&5
2839 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
2840 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
2841 echo $ECHO_N "(cached) $ECHO_C" >&6
2842 else
2843 if test -n "$ac_ct_CC"; then
2844 ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
2845 else
2846 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2847 for as_dir in $PATH
2848 do
2849 IFS=$as_save_IFS
2850 test -z "$as_dir" && as_dir=.
2851 for ac_exec_ext in '' $ac_executable_extensions; do
2852 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
2853 ac_cv_prog_ac_ct_CC="$ac_prog"
2854 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
2855 break 2
2856 fi
2857 done
2858 done
2859 IFS=$as_save_IFS
2860
2861 fi
2862 fi
2863 ac_ct_CC=$ac_cv_prog_ac_ct_CC
2864 if test -n "$ac_ct_CC"; then
2865 { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
2866 echo "${ECHO_T}$ac_ct_CC" >&6; }
2867 else
2868 { echo "$as_me:$LINENO: result: no" >&5
2869 echo "${ECHO_T}no" >&6; }
2870 fi
2871
2872
2873 test -n "$ac_ct_CC" && break
2874 done
2875
2876 if test "x$ac_ct_CC" = x; then
2877 CC=""
2878 else
2879 case $cross_compiling:$ac_tool_warned in
2880 yes:)
2881 { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
2882 whose name does not start with the host triplet. If you think this
2883 configuration is useful to you, please write to autoconf@gnu.org." >&5
2884 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
2885 whose name does not start with the host triplet. If you think this
2886 configuration is useful to you, please write to autoconf@gnu.org." >&2;}
2887 ac_tool_warned=yes ;;
2888 esac
2889 CC=$ac_ct_CC
2890 fi
2891 fi
2892
2893 fi
2894
2895
2896 test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
2897 See \`config.log' for more details." >&5
2898 echo "$as_me: error: no acceptable C compiler found in \$PATH
2899 See \`config.log' for more details." >&2;}
2900 { (exit 1); exit 1; }; }
2901
2902 # Provide some information about the compiler.
2903 echo "$as_me:$LINENO: checking for C compiler version" >&5
2904 ac_compiler=`set X $ac_compile; echo $2`
2905 { (ac_try="$ac_compiler --version >&5"
2906 case "(($ac_try" in
2907 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
2908 *) ac_try_echo=$ac_try;;
2909 esac
2910 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
2911 (eval "$ac_compiler --version >&5") 2>&5
2912 ac_status=$?
2913 echo "$as_me:$LINENO: \$? = $ac_status" >&5
2914 (exit $ac_status); }
2915 { (ac_try="$ac_compiler -v >&5"
2916 case "(($ac_try" in
2917 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
2918 *) ac_try_echo=$ac_try;;
2919 esac
2920 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
2921 (eval "$ac_compiler -v >&5") 2>&5
2922 ac_status=$?
2923 echo "$as_me:$LINENO: \$? = $ac_status" >&5
2924 (exit $ac_status); }
2925 { (ac_try="$ac_compiler -V >&5"
2926 case "(($ac_try" in
2927 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
2928 *) ac_try_echo=$ac_try;;
2929 esac
2930 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
2931 (eval "$ac_compiler -V >&5") 2>&5
2932 ac_status=$?
2933 echo "$as_me:$LINENO: \$? = $ac_status" >&5
2934 (exit $ac_status); }
2935
2936 cat >conftest.$ac_ext <<_ACEOF
2937 /* confdefs.h. */
2938 _ACEOF
2939 cat confdefs.h >>conftest.$ac_ext
2940 cat >>conftest.$ac_ext <<_ACEOF
2941 /* end confdefs.h. */
2942
2943 int
2944 main ()
2945 {
2946
2947 ;
2948 return 0;
2949 }
2950 _ACEOF
2951 ac_clean_files_save=$ac_clean_files
2952 ac_clean_files="$ac_clean_files a.out a.exe b.out"
2953 # Try to create an executable without -o first, disregard a.out.
2954 # It will help us diagnose broken compilers, and finding out an intuition
2955 # of exeext.
2956 { echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
2957 echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; }
2958 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
2959 #
2960 # List of possible output files, starting from the most likely.
2961 # The algorithm is not robust to junk in `.', hence go to wildcards (a.*)
2962 # only as a last resort. b.out is created by i960 compilers.
2963 ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'
2964 #
2965 # The IRIX 6 linker writes into existing files which may not be
2966 # executable, retaining their permissions. Remove them first so a
2967 # subsequent execution test works.
2968 ac_rmfiles=
2969 for ac_file in $ac_files
2970 do
2971 case $ac_file in
2972 *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
2973 * ) ac_rmfiles="$ac_rmfiles $ac_file";;
2974 esac
2975 done
2976 rm -f $ac_rmfiles
2977
2978 if { (ac_try="$ac_link_default"
2979 case "(($ac_try" in
2980 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
2981 *) ac_try_echo=$ac_try;;
2982 esac
2983 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
2984 (eval "$ac_link_default") 2>&5
2985 ac_status=$?
2986 echo "$as_me:$LINENO: \$? = $ac_status" >&5
2987 (exit $ac_status); }; then
2988 # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
2989 # So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
2990 # in a Makefile. We should not override ac_cv_exeext if it was cached,
2991 # so that the user can short-circuit this test for compilers unknown to
2992 # Autoconf.
2993 for ac_file in $ac_files ''
2994 do
2995 test -f "$ac_file" || continue
2996 case $ac_file in
2997 *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj )
2998 ;;
2999 [ab].out )
3000 # We found the default executable, but exeext='' is most
3001 # certainly right.
3002 break;;
3003 *.* )
3004 if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
3005 then :; else
3006 ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
3007 fi
3008 # We set ac_cv_exeext here because the later test for it is not
3009 # safe: cross compilers may not add the suffix if given an `-o'
3010 # argument, so we may need to know it at that point already.
3011 # Even if this section looks crufty: it has the advantage of
3012 # actually working.
3013 break;;
3014 * )
3015 break;;
3016 esac
3017 done
3018 test "$ac_cv_exeext" = no && ac_cv_exeext=
3019
3020 else
3021 ac_file=''
3022 fi
3023
3024 { echo "$as_me:$LINENO: result: $ac_file" >&5
3025 echo "${ECHO_T}$ac_file" >&6; }
3026 if test -z "$ac_file"; then
3027 echo "$as_me: failed program was:" >&5
3028 sed 's/^/| /' conftest.$ac_ext >&5
3029
3030 { { echo "$as_me:$LINENO: error: C compiler cannot create executables
3031 See \`config.log' for more details." >&5
3032 echo "$as_me: error: C compiler cannot create executables
3033 See \`config.log' for more details." >&2;}
3034 { (exit 77); exit 77; }; }
3035 fi
3036
3037 ac_exeext=$ac_cv_exeext
3038
3039 # Check that the compiler produces executables we can run. If not, either
3040 # the compiler is broken, or we cross compile.
3041 { echo "$as_me:$LINENO: checking whether the C compiler works" >&5
3042 echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; }
3043 # FIXME: These cross compiler hacks should be removed for Autoconf 3.0
3044 # If not cross compiling, check that we can run a simple program.
3045 if test "$cross_compiling" != yes; then
3046 if { ac_try='./$ac_file'
3047 { (case "(($ac_try" in
3048 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3049 *) ac_try_echo=$ac_try;;
3050 esac
3051 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3052 (eval "$ac_try") 2>&5
3053 ac_status=$?
3054 echo "$as_me:$LINENO: \$? = $ac_status" >&5
3055 (exit $ac_status); }; }; then
3056 cross_compiling=no
3057 else
3058 if test "$cross_compiling" = maybe; then
3059 cross_compiling=yes
3060 else
3061 { { echo "$as_me:$LINENO: error: cannot run C compiled programs.
3062 If you meant to cross compile, use \`--host'.
3063 See \`config.log' for more details." >&5
3064 echo "$as_me: error: cannot run C compiled programs.
3065 If you meant to cross compile, use \`--host'.
3066 See \`config.log' for more details." >&2;}
3067 { (exit 1); exit 1; }; }
3068 fi
3069 fi
3070 fi
3071 { echo "$as_me:$LINENO: result: yes" >&5
3072 echo "${ECHO_T}yes" >&6; }
3073
3074 rm -f a.out a.exe conftest$ac_cv_exeext b.out
3075 ac_clean_files=$ac_clean_files_save
3076 # Check that the compiler produces executables we can run. If not, either
3077 # the compiler is broken, or we cross compile.
3078 { echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
3079 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; }
3080 { echo "$as_me:$LINENO: result: $cross_compiling" >&5
3081 echo "${ECHO_T}$cross_compiling" >&6; }
3082
3083 { echo "$as_me:$LINENO: checking for suffix of executables" >&5
3084 echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; }
3085 if { (ac_try="$ac_link"
3086 case "(($ac_try" in
3087 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3088 *) ac_try_echo=$ac_try;;
3089 esac
3090 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3091 (eval "$ac_link") 2>&5
3092 ac_status=$?
3093 echo "$as_me:$LINENO: \$? = $ac_status" >&5
3094 (exit $ac_status); }; then
3095 # If both `conftest.exe' and `conftest' are `present' (well, observable)
3096 # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
3097 # work properly (i.e., refer to `conftest.exe'), while it won't with
3098 # `rm'.
3099 for ac_file in conftest.exe conftest conftest.*; do
3100 test -f "$ac_file" || continue
3101 case $ac_file in
3102 *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
3103 *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
3104 break;;
3105 * ) break;;
3106 esac
3107 done
3108 else
3109 { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
3110 See \`config.log' for more details." >&5
3111 echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
3112 See \`config.log' for more details." >&2;}
3113 { (exit 1); exit 1; }; }
3114 fi
3115
3116 rm -f conftest$ac_cv_exeext
3117 { echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
3118 echo "${ECHO_T}$ac_cv_exeext" >&6; }
3119
3120 rm -f conftest.$ac_ext
3121 EXEEXT=$ac_cv_exeext
3122 ac_exeext=$EXEEXT
3123 { echo "$as_me:$LINENO: checking for suffix of object files" >&5
3124 echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; }
3125 if test "${ac_cv_objext+set}" = set; then
3126 echo $ECHO_N "(cached) $ECHO_C" >&6
3127 else
3128 cat >conftest.$ac_ext <<_ACEOF
3129 /* confdefs.h. */
3130 _ACEOF
3131 cat confdefs.h >>conftest.$ac_ext
3132 cat >>conftest.$ac_ext <<_ACEOF
3133 /* end confdefs.h. */
3134
3135 int
3136 main ()
3137 {
3138
3139 ;
3140 return 0;
3141 }
3142 _ACEOF
3143 rm -f conftest.o conftest.obj
3144 if { (ac_try="$ac_compile"
3145 case "(($ac_try" in
3146 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3147 *) ac_try_echo=$ac_try;;
3148 esac
3149 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3150 (eval "$ac_compile") 2>&5
3151 ac_status=$?
3152 echo "$as_me:$LINENO: \$? = $ac_status" >&5
3153 (exit $ac_status); }; then
3154 for ac_file in conftest.o conftest.obj conftest.*; do
3155 test -f "$ac_file" || continue;
3156 case $ac_file in
3157 *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;;
3158 *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
3159 break;;
3160 esac
3161 done
3162 else
3163 echo "$as_me: failed program was:" >&5
3164 sed 's/^/| /' conftest.$ac_ext >&5
3165
3166 { { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
3167 See \`config.log' for more details." >&5
3168 echo "$as_me: error: cannot compute suffix of object files: cannot compile
3169 See \`config.log' for more details." >&2;}
3170 { (exit 1); exit 1; }; }
3171 fi
3172
3173 rm -f conftest.$ac_cv_objext conftest.$ac_ext
3174 fi
3175 { echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
3176 echo "${ECHO_T}$ac_cv_objext" >&6; }
3177 OBJEXT=$ac_cv_objext
3178 ac_objext=$OBJEXT
3179 { echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
3180 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
3181 if test "${ac_cv_c_compiler_gnu+set}" = set; then
3182 echo $ECHO_N "(cached) $ECHO_C" >&6
3183 else
3184 cat >conftest.$ac_ext <<_ACEOF
3185 /* confdefs.h. */
3186 _ACEOF
3187 cat confdefs.h >>conftest.$ac_ext
3188 cat >>conftest.$ac_ext <<_ACEOF
3189 /* end confdefs.h. */
3190
3191 int
3192 main ()
3193 {
3194 #ifndef __GNUC__
3195 choke me
3196 #endif
3197
3198 ;
3199 return 0;
3200 }
3201 _ACEOF
3202 rm -f conftest.$ac_objext
3203 if { (ac_try="$ac_compile"
3204 case "(($ac_try" in
3205 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3206 *) ac_try_echo=$ac_try;;
3207 esac
3208 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3209 (eval "$ac_compile") 2>conftest.er1
3210 ac_status=$?
3211 grep -v '^ *+' conftest.er1 >conftest.err
3212 rm -f conftest.er1
3213 cat conftest.err >&5
3214 echo "$as_me:$LINENO: \$? = $ac_status" >&5
3215 (exit $ac_status); } && {
3216 test -z "$ac_c_werror_flag" ||
3217 test ! -s conftest.err
3218 } && test -s conftest.$ac_objext; then
3219 ac_compiler_gnu=yes
3220 else
3221 echo "$as_me: failed program was:" >&5
3222 sed 's/^/| /' conftest.$ac_ext >&5
3223
3224 ac_compiler_gnu=no
3225 fi
3226
3227 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3228 ac_cv_c_compiler_gnu=$ac_compiler_gnu
3229
3230 fi
3231 { echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
3232 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
3233 GCC=`test $ac_compiler_gnu = yes && echo yes`
3234 ac_test_CFLAGS=${CFLAGS+set}
3235 ac_save_CFLAGS=$CFLAGS
3236 { echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
3237 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
3238 if test "${ac_cv_prog_cc_g+set}" = set; then
3239 echo $ECHO_N "(cached) $ECHO_C" >&6
3240 else
3241 ac_save_c_werror_flag=$ac_c_werror_flag
3242 ac_c_werror_flag=yes
3243 ac_cv_prog_cc_g=no
3244 CFLAGS="-g"
3245 cat >conftest.$ac_ext <<_ACEOF
3246 /* confdefs.h. */
3247 _ACEOF
3248 cat confdefs.h >>conftest.$ac_ext
3249 cat >>conftest.$ac_ext <<_ACEOF
3250 /* end confdefs.h. */
3251
3252 int
3253 main ()
3254 {
3255
3256 ;
3257 return 0;
3258 }
3259 _ACEOF
3260 rm -f conftest.$ac_objext
3261 if { (ac_try="$ac_compile"
3262 case "(($ac_try" in
3263 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3264 *) ac_try_echo=$ac_try;;
3265 esac
3266 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3267 (eval "$ac_compile") 2>conftest.er1
3268 ac_status=$?
3269 grep -v '^ *+' conftest.er1 >conftest.err
3270 rm -f conftest.er1
3271 cat conftest.err >&5
3272 echo "$as_me:$LINENO: \$? = $ac_status" >&5
3273 (exit $ac_status); } && {
3274 test -z "$ac_c_werror_flag" ||
3275 test ! -s conftest.err
3276 } && test -s conftest.$ac_objext; then
3277 ac_cv_prog_cc_g=yes
3278 else
3279 echo "$as_me: failed program was:" >&5
3280 sed 's/^/| /' conftest.$ac_ext >&5
3281
3282 CFLAGS=""
3283 cat >conftest.$ac_ext <<_ACEOF
3284 /* confdefs.h. */
3285 _ACEOF
3286 cat confdefs.h >>conftest.$ac_ext
3287 cat >>conftest.$ac_ext <<_ACEOF
3288 /* end confdefs.h. */
3289
3290 int
3291 main ()
3292 {
3293
3294 ;
3295 return 0;
3296 }
3297 _ACEOF
3298 rm -f conftest.$ac_objext
3299 if { (ac_try="$ac_compile"
3300 case "(($ac_try" in
3301 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3302 *) ac_try_echo=$ac_try;;
3303 esac
3304 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3305 (eval "$ac_compile") 2>conftest.er1
3306 ac_status=$?
3307 grep -v '^ *+' conftest.er1 >conftest.err
3308 rm -f conftest.er1
3309 cat conftest.err >&5
3310 echo "$as_me:$LINENO: \$? = $ac_status" >&5
3311 (exit $ac_status); } && {
3312 test -z "$ac_c_werror_flag" ||
3313 test ! -s conftest.err
3314 } && test -s conftest.$ac_objext; then
3315 :
3316 else
3317 echo "$as_me: failed program was:" >&5
3318 sed 's/^/| /' conftest.$ac_ext >&5
3319
3320 ac_c_werror_flag=$ac_save_c_werror_flag
3321 CFLAGS="-g"
3322 cat >conftest.$ac_ext <<_ACEOF
3323 /* confdefs.h. */
3324 _ACEOF
3325 cat confdefs.h >>conftest.$ac_ext
3326 cat >>conftest.$ac_ext <<_ACEOF
3327 /* end confdefs.h. */
3328
3329 int
3330 main ()
3331 {
3332
3333 ;
3334 return 0;
3335 }
3336 _ACEOF
3337 rm -f conftest.$ac_objext
3338 if { (ac_try="$ac_compile"
3339 case "(($ac_try" in
3340 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3341 *) ac_try_echo=$ac_try;;
3342 esac
3343 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3344 (eval "$ac_compile") 2>conftest.er1
3345 ac_status=$?
3346 grep -v '^ *+' conftest.er1 >conftest.err
3347 rm -f conftest.er1
3348 cat conftest.err >&5
3349 echo "$as_me:$LINENO: \$? = $ac_status" >&5
3350 (exit $ac_status); } && {
3351 test -z "$ac_c_werror_flag" ||
3352 test ! -s conftest.err
3353 } && test -s conftest.$ac_objext; then
3354 ac_cv_prog_cc_g=yes
3355 else
3356 echo "$as_me: failed program was:" >&5
3357 sed 's/^/| /' conftest.$ac_ext >&5
3358
3359
3360 fi
3361
3362 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3363 fi
3364
3365 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3366 fi
3367
3368 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3369 ac_c_werror_flag=$ac_save_c_werror_flag
3370 fi
3371 { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
3372 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
3373 if test "$ac_test_CFLAGS" = set; then
3374 CFLAGS=$ac_save_CFLAGS
3375 elif test $ac_cv_prog_cc_g = yes; then
3376 if test "$GCC" = yes; then
3377 CFLAGS="-g -O2"
3378 else
3379 CFLAGS="-g"
3380 fi
3381 else
3382 if test "$GCC" = yes; then
3383 CFLAGS="-O2"
3384 else
3385 CFLAGS=
3386 fi
3387 fi
3388 { echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
3389 echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
3390 if test "${ac_cv_prog_cc_c89+set}" = set; then
3391 echo $ECHO_N "(cached) $ECHO_C" >&6
3392 else
3393 ac_cv_prog_cc_c89=no
3394 ac_save_CC=$CC
3395 cat >conftest.$ac_ext <<_ACEOF
3396 /* confdefs.h. */
3397 _ACEOF
3398 cat confdefs.h >>conftest.$ac_ext
3399 cat >>conftest.$ac_ext <<_ACEOF
3400 /* end confdefs.h. */
3401 #include <stdarg.h>
3402 #include <stdio.h>
3403 #include <sys/types.h>
3404 #include <sys/stat.h>
3405 /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
3406 struct buf { int x; };
3407 FILE * (*rcsopen) (struct buf *, struct stat *, int);
3408 static char *e (p, i)
3409 char **p;
3410 int i;
3411 {
3412 return p[i];
3413 }
3414 static char *f (char * (*g) (char **, int), char **p, ...)
3415 {
3416 char *s;
3417 va_list v;
3418 va_start (v,p);
3419 s = g (p, va_arg (v,int));
3420 va_end (v);
3421 return s;
3422 }
3423
3424 /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
3425 function prototypes and stuff, but not '\xHH' hex character constants.
3426 These don't provoke an error unfortunately, instead are silently treated
3427 as 'x'. The following induces an error, until -std is added to get
3428 proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
3429 array size at least. It's necessary to write '\x00'==0 to get something
3430 that's true only with -std. */
3431 int osf4_cc_array ['\x00' == 0 ? 1 : -1];
3432
3433 /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
3434 inside strings and character constants. */
3435 #define FOO(x) 'x'
3436 int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
3437
3438 int test (int i, double x);
3439 struct s1 {int (*f) (int a);};
3440 struct s2 {int (*f) (double a);};
3441 int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
3442 int argc;
3443 char **argv;
3444 int
3445 main ()
3446 {
3447 return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
3448 ;
3449 return 0;
3450 }
3451 _ACEOF
3452 for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
3453 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
3454 do
3455 CC="$ac_save_CC $ac_arg"
3456 rm -f conftest.$ac_objext
3457 if { (ac_try="$ac_compile"
3458 case "(($ac_try" in
3459 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3460 *) ac_try_echo=$ac_try;;
3461 esac
3462 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3463 (eval "$ac_compile") 2>conftest.er1
3464 ac_status=$?
3465 grep -v '^ *+' conftest.er1 >conftest.err
3466 rm -f conftest.er1
3467 cat conftest.err >&5
3468 echo "$as_me:$LINENO: \$? = $ac_status" >&5
3469 (exit $ac_status); } && {
3470 test -z "$ac_c_werror_flag" ||
3471 test ! -s conftest.err
3472 } && test -s conftest.$ac_objext; then
3473 ac_cv_prog_cc_c89=$ac_arg
3474 else
3475 echo "$as_me: failed program was:" >&5
3476 sed 's/^/| /' conftest.$ac_ext >&5
3477
3478
3479 fi
3480
3481 rm -f core conftest.err conftest.$ac_objext
3482 test "x$ac_cv_prog_cc_c89" != "xno" && break
3483 done
3484 rm -f conftest.$ac_ext
3485 CC=$ac_save_CC
3486
3487 fi
3488 # AC_CACHE_VAL
3489 case "x$ac_cv_prog_cc_c89" in
3490 x)
3491 { echo "$as_me:$LINENO: result: none needed" >&5
3492 echo "${ECHO_T}none needed" >&6; } ;;
3493 xno)
3494 { echo "$as_me:$LINENO: result: unsupported" >&5
3495 echo "${ECHO_T}unsupported" >&6; } ;;
3496 *)
3497 CC="$CC $ac_cv_prog_cc_c89"
3498 { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
3499 echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
3500 esac
3501
3502
3503 ac_ext=c
3504 ac_cpp='$CPP $CPPFLAGS'
3505 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
3506 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
3507 ac_compiler_gnu=$ac_cv_c_compiler_gnu
3508 DEPDIR="${am__leading_dot}deps"
3509
3510 ac_config_commands="$ac_config_commands depfiles"
3511
3512
3513 am_make=${MAKE-make}
3514 cat > confinc << 'END'
3515 am__doit:
3516 @echo done
3517 .PHONY: am__doit
3518 END
3519 # If we don't find an include directive, just comment out the code.
3520 { echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
3521 echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; }
3522 am__include="#"
3523 am__quote=
3524 _am_result=none
3525 # First try GNU make style include.
3526 echo "include confinc" > confmf
3527 # We grep out `Entering directory' and `Leaving directory'
3528 # messages which can occur if `w' ends up in MAKEFLAGS.
3529 # In particular we don't look at `^make:' because GNU make might
3530 # be invoked under some other name (usually "gmake"), in which
3531 # case it prints its new name instead of `make'.
3532 if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
3533 am__include=include
3534 am__quote=
3535 _am_result=GNU
3536 fi
3537 # Now try BSD make style include.
3538 if test "$am__include" = "#"; then
3539 echo '.include "confinc"' > confmf
3540 if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
3541 am__include=.include
3542 am__quote="\""
3543 _am_result=BSD
3544 fi
3545 fi
3546
3547
3548 { echo "$as_me:$LINENO: result: $_am_result" >&5
3549 echo "${ECHO_T}$_am_result" >&6; }
3550 rm -f confinc confmf
3551
3552 # Check whether --enable-dependency-tracking was given.
3553 if test "${enable_dependency_tracking+set}" = set; then
3554 enableval=$enable_dependency_tracking;
3555 fi
3556
3557 if test "x$enable_dependency_tracking" != xno; then
3558 am_depcomp="$ac_aux_dir/depcomp"
3559 AMDEPBACKSLASH='\'
3560 fi
3561
3562
3563 if test "x$enable_dependency_tracking" != xno; then
3564 AMDEP_TRUE=
3565 AMDEP_FALSE='#'
3566 else
3567 AMDEP_TRUE='#'
3568 AMDEP_FALSE=
3569 fi
3570
3571
3572
3573
3574 depcc="$CC" am_compiler_list=
3575
3576 { echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
3577 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
3578 if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
3579 echo $ECHO_N "(cached) $ECHO_C" >&6
3580 else
3581 if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
3582 # We make a subdir and do the tests there. Otherwise we can end up
3583 # making bogus files that we don't know about and never remove. For
3584 # instance it was reported that on HP-UX the gcc test will end up
3585 # making a dummy file named `D' -- because `-MD' means `put the output
3586 # in D'.
3587 mkdir conftest.dir
3588 # Copy depcomp to subdir because otherwise we won't find it if we're
3589 # using a relative directory.
3590 cp "$am_depcomp" conftest.dir
3591 cd conftest.dir
3592 # We will build objects and dependencies in a subdirectory because
3593 # it helps to detect inapplicable dependency modes. For instance
3594 # both Tru64's cc and ICC support -MD to output dependencies as a
3595 # side effect of compilation, but ICC will put the dependencies in
3596 # the current directory while Tru64 will put them in the object
3597 # directory.
3598 mkdir sub
3599
3600 am_cv_CC_dependencies_compiler_type=none
3601 if test "$am_compiler_list" = ""; then
3602 am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
3603 fi
3604 for depmode in $am_compiler_list; do
3605 # Setup a source with many dependencies, because some compilers
3606 # like to wrap large dependency lists on column 80 (with \), and
3607 # we should not choose a depcomp mode which is confused by this.
3608 #
3609 # We need to recreate these files for each test, as the compiler may
3610 # overwrite some of them when testing with obscure command lines.
3611 # This happens at least with the AIX C compiler.
3612 : > sub/conftest.c
3613 for i in 1 2 3 4 5 6; do
3614 echo '#include "conftst'$i'.h"' >> sub/conftest.c
3615 # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
3616 # Solaris 8's {/usr,}/bin/sh.
3617 touch sub/conftst$i.h
3618 done
3619 echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
3620
3621 case $depmode in
3622 nosideeffect)
3623 # after this tag, mechanisms are not by side-effect, so they'll
3624 # only be used when explicitly requested
3625 if test "x$enable_dependency_tracking" = xyes; then
3626 continue
3627 else
3628 break
3629 fi
3630 ;;
3631 none) break ;;
3632 esac
3633 # We check with `-c' and `-o' for the sake of the "dashmstdout"
3634 # mode. It turns out that the SunPro C++ compiler does not properly
3635 # handle `-M -o', and we need to detect this.
3636 if depmode=$depmode \
3637 source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
3638 depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
3639 $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
3640 >/dev/null 2>conftest.err &&
3641 grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
3642 grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
3643 ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
3644 # icc doesn't choke on unknown options, it will just issue warnings
3645 # or remarks (even with -Werror). So we grep stderr for any message
3646 # that says an option was ignored or not supported.
3647 # When given -MP, icc 7.0 and 7.1 complain thusly:
3648 # icc: Command line warning: ignoring option '-M'; no argument required
3649 # The diagnosis changed in icc 8.0:
3650 # icc: Command line remark: option '-MP' not supported
3651 if (grep 'ignoring option' conftest.err ||
3652 grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
3653 am_cv_CC_dependencies_compiler_type=$depmode
3654 break
3655 fi
3656 fi
3657 done
3658
3659 cd ..
3660 rm -rf conftest.dir
3661 else
3662 am_cv_CC_dependencies_compiler_type=none
3663 fi
3664
3665 fi
3666 { echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
3667 echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; }
3668 CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
3669
3670
3671
3672 if
3673 test "x$enable_dependency_tracking" != xno \
3674 && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
3675 am__fastdepCC_TRUE=
3676 am__fastdepCC_FALSE='#'
3677 else
3678 am__fastdepCC_TRUE='#'
3679 am__fastdepCC_FALSE=
3680 fi
3681
3682
3683 ac_ext=c
3684 ac_cpp='$CPP $CPPFLAGS'
3685 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
3686 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
3687 ac_compiler_gnu=$ac_cv_c_compiler_gnu
3688 if test -n "$ac_tool_prefix"; then
3689 # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
3690 set dummy ${ac_tool_prefix}gcc; ac_word=$2
3691 { echo "$as_me:$LINENO: checking for $ac_word" >&5
3692 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
3693 if test "${ac_cv_prog_CC+set}" = set; then
3694 echo $ECHO_N "(cached) $ECHO_C" >&6
3695 else
3696 if test -n "$CC"; then
3697 ac_cv_prog_CC="$CC" # Let the user override the test.
3698 else
3699 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3700 for as_dir in $PATH
3701 do
3702 IFS=$as_save_IFS
3703 test -z "$as_dir" && as_dir=.
3704 for ac_exec_ext in '' $ac_executable_extensions; do
3705 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
3706 ac_cv_prog_CC="${ac_tool_prefix}gcc"
3707 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
3708 break 2
3709 fi
3710 done
3711 done
3712 IFS=$as_save_IFS
3713
3714 fi
3715 fi
3716 CC=$ac_cv_prog_CC
3717 if test -n "$CC"; then
3718 { echo "$as_me:$LINENO: result: $CC" >&5
3719 echo "${ECHO_T}$CC" >&6; }
3720 else
3721 { echo "$as_me:$LINENO: result: no" >&5
3722 echo "${ECHO_T}no" >&6; }
3723 fi
3724
3725
3726 fi
3727 if test -z "$ac_cv_prog_CC"; then
3728 ac_ct_CC=$CC
3729 # Extract the first word of "gcc", so it can be a program name with args.
3730 set dummy gcc; ac_word=$2
3731 { echo "$as_me:$LINENO: checking for $ac_word" >&5
3732 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
3733 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
3734 echo $ECHO_N "(cached) $ECHO_C" >&6
3735 else
3736 if test -n "$ac_ct_CC"; then
3737 ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
3738 else
3739 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3740 for as_dir in $PATH
3741 do
3742 IFS=$as_save_IFS
3743 test -z "$as_dir" && as_dir=.
3744 for ac_exec_ext in '' $ac_executable_extensions; do
3745 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
3746 ac_cv_prog_ac_ct_CC="gcc"
3747 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
3748 break 2
3749 fi
3750 done
3751 done
3752 IFS=$as_save_IFS
3753
3754 fi
3755 fi
3756 ac_ct_CC=$ac_cv_prog_ac_ct_CC
3757 if test -n "$ac_ct_CC"; then
3758 { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
3759 echo "${ECHO_T}$ac_ct_CC" >&6; }
3760 else
3761 { echo "$as_me:$LINENO: result: no" >&5
3762 echo "${ECHO_T}no" >&6; }
3763 fi
3764
3765 if test "x$ac_ct_CC" = x; then
3766 CC=""
3767 else
3768 case $cross_compiling:$ac_tool_warned in
3769 yes:)
3770 { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
3771 whose name does not start with the host triplet. If you think this
3772 configuration is useful to you, please write to autoconf@gnu.org." >&5
3773 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
3774 whose name does not start with the host triplet. If you think this
3775 configuration is useful to you, please write to autoconf@gnu.org." >&2;}
3776 ac_tool_warned=yes ;;
3777 esac
3778 CC=$ac_ct_CC
3779 fi
3780 else
3781 CC="$ac_cv_prog_CC"
3782 fi
3783
3784 if test -z "$CC"; then
3785 if test -n "$ac_tool_prefix"; then
3786 # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
3787 set dummy ${ac_tool_prefix}cc; ac_word=$2
3788 { echo "$as_me:$LINENO: checking for $ac_word" >&5
3789 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
3790 if test "${ac_cv_prog_CC+set}" = set; then
3791 echo $ECHO_N "(cached) $ECHO_C" >&6
3792 else
3793 if test -n "$CC"; then
3794 ac_cv_prog_CC="$CC" # Let the user override the test.
3795 else
3796 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3797 for as_dir in $PATH
3798 do
3799 IFS=$as_save_IFS
3800 test -z "$as_dir" && as_dir=.
3801 for ac_exec_ext in '' $ac_executable_extensions; do
3802 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
3803 ac_cv_prog_CC="${ac_tool_prefix}cc"
3804 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
3805 break 2
3806 fi
3807 done
3808 done
3809 IFS=$as_save_IFS
3810
3811 fi
3812 fi
3813 CC=$ac_cv_prog_CC
3814 if test -n "$CC"; then
3815 { echo "$as_me:$LINENO: result: $CC" >&5
3816 echo "${ECHO_T}$CC" >&6; }
3817 else
3818 { echo "$as_me:$LINENO: result: no" >&5
3819 echo "${ECHO_T}no" >&6; }
3820 fi
3821
3822
3823 fi
3824 fi
3825 if test -z "$CC"; then
3826 # Extract the first word of "cc", so it can be a program name with args.
3827 set dummy cc; ac_word=$2
3828 { echo "$as_me:$LINENO: checking for $ac_word" >&5
3829 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
3830 if test "${ac_cv_prog_CC+set}" = set; then
3831 echo $ECHO_N "(cached) $ECHO_C" >&6
3832 else
3833 if test -n "$CC"; then
3834 ac_cv_prog_CC="$CC" # Let the user override the test.
3835 else
3836 ac_prog_rejected=no
3837 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3838 for as_dir in $PATH
3839 do
3840 IFS=$as_save_IFS
3841 test -z "$as_dir" && as_dir=.
3842 for ac_exec_ext in '' $ac_executable_extensions; do
3843 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
3844 if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
3845 ac_prog_rejected=yes
3846 continue
3847 fi
3848 ac_cv_prog_CC="cc"
3849 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
3850 break 2
3851 fi
3852 done
3853 done
3854 IFS=$as_save_IFS
3855
3856 if test $ac_prog_rejected = yes; then
3857 # We found a bogon in the path, so make sure we never use it.
3858 set dummy $ac_cv_prog_CC
3859 shift
3860 if test $# != 0; then
3861 # We chose a different compiler from the bogus one.
3862 # However, it has the same basename, so the bogon will be chosen
3863 # first if we set CC to just the basename; use the full file name.
3864 shift
3865 ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
3866 fi
3867 fi
3868 fi
3869 fi
3870 CC=$ac_cv_prog_CC
3871 if test -n "$CC"; then
3872 { echo "$as_me:$LINENO: result: $CC" >&5
3873 echo "${ECHO_T}$CC" >&6; }
3874 else
3875 { echo "$as_me:$LINENO: result: no" >&5
3876 echo "${ECHO_T}no" >&6; }
3877 fi
3878
3879
3880 fi
3881 if test -z "$CC"; then
3882 if test -n "$ac_tool_prefix"; then
3883 for ac_prog in cl.exe
3884 do
3885 # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
3886 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
3887 { echo "$as_me:$LINENO: checking for $ac_word" >&5
3888 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
3889 if test "${ac_cv_prog_CC+set}" = set; then
3890 echo $ECHO_N "(cached) $ECHO_C" >&6
3891 else
3892 if test -n "$CC"; then
3893 ac_cv_prog_CC="$CC" # Let the user override the test.
3894 else
3895 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3896 for as_dir in $PATH
3897 do
3898 IFS=$as_save_IFS
3899 test -z "$as_dir" && as_dir=.
3900 for ac_exec_ext in '' $ac_executable_extensions; do
3901 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
3902 ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
3903 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
3904 break 2
3905 fi
3906 done
3907 done
3908 IFS=$as_save_IFS
3909
3910 fi
3911 fi
3912 CC=$ac_cv_prog_CC
3913 if test -n "$CC"; then
3914 { echo "$as_me:$LINENO: result: $CC" >&5
3915 echo "${ECHO_T}$CC" >&6; }
3916 else
3917 { echo "$as_me:$LINENO: result: no" >&5
3918 echo "${ECHO_T}no" >&6; }
3919 fi
3920
3921
3922 test -n "$CC" && break
3923 done
3924 fi
3925 if test -z "$CC"; then
3926 ac_ct_CC=$CC
3927 for ac_prog in cl.exe
3928 do
3929 # Extract the first word of "$ac_prog", so it can be a program name with args.
3930 set dummy $ac_prog; ac_word=$2
3931 { echo "$as_me:$LINENO: checking for $ac_word" >&5
3932 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
3933 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
3934 echo $ECHO_N "(cached) $ECHO_C" >&6
3935 else
3936 if test -n "$ac_ct_CC"; then
3937 ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
3938 else
3939 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3940 for as_dir in $PATH
3941 do
3942 IFS=$as_save_IFS
3943 test -z "$as_dir" && as_dir=.
3944 for ac_exec_ext in '' $ac_executable_extensions; do
3945 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
3946 ac_cv_prog_ac_ct_CC="$ac_prog"
3947 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
3948 break 2
3949 fi
3950 done
3951 done
3952 IFS=$as_save_IFS
3953
3954 fi
3955 fi
3956 ac_ct_CC=$ac_cv_prog_ac_ct_CC
3957 if test -n "$ac_ct_CC"; then
3958 { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
3959 echo "${ECHO_T}$ac_ct_CC" >&6; }
3960 else
3961 { echo "$as_me:$LINENO: result: no" >&5
3962 echo "${ECHO_T}no" >&6; }
3963 fi
3964
3965
3966 test -n "$ac_ct_CC" && break
3967 done
3968
3969 if test "x$ac_ct_CC" = x; then
3970 CC=""
3971 else
3972 case $cross_compiling:$ac_tool_warned in
3973 yes:)
3974 { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
3975 whose name does not start with the host triplet. If you think this
3976 configuration is useful to you, please write to autoconf@gnu.org." >&5
3977 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
3978 whose name does not start with the host triplet. If you think this
3979 configuration is useful to you, please write to autoconf@gnu.org." >&2;}
3980 ac_tool_warned=yes ;;
3981 esac
3982 CC=$ac_ct_CC
3983 fi
3984 fi
3985
3986 fi
3987
3988
3989 test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
3990 See \`config.log' for more details." >&5
3991 echo "$as_me: error: no acceptable C compiler found in \$PATH
3992 See \`config.log' for more details." >&2;}
3993 { (exit 1); exit 1; }; }
3994
3995 # Provide some information about the compiler.
3996 echo "$as_me:$LINENO: checking for C compiler version" >&5
3997 ac_compiler=`set X $ac_compile; echo $2`
3998 { (ac_try="$ac_compiler --version >&5"
3999 case "(($ac_try" in
4000 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
4001 *) ac_try_echo=$ac_try;;
4002 esac
4003 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
4004 (eval "$ac_compiler --version >&5") 2>&5
4005 ac_status=$?
4006 echo "$as_me:$LINENO: \$? = $ac_status" >&5
4007 (exit $ac_status); }
4008 { (ac_try="$ac_compiler -v >&5"
4009 case "(($ac_try" in
4010 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
4011 *) ac_try_echo=$ac_try;;
4012 esac
4013 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
4014 (eval "$ac_compiler -v >&5") 2>&5
4015 ac_status=$?
4016 echo "$as_me:$LINENO: \$? = $ac_status" >&5
4017 (exit $ac_status); }
4018 { (ac_try="$ac_compiler -V >&5"
4019 case "(($ac_try" in
4020 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
4021 *) ac_try_echo=$ac_try;;
4022 esac
4023 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
4024 (eval "$ac_compiler -V >&5") 2>&5
4025 ac_status=$?
4026 echo "$as_me:$LINENO: \$? = $ac_status" >&5
4027 (exit $ac_status); }
4028
4029 { echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
4030 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
4031 if test "${ac_cv_c_compiler_gnu+set}" = set; then
4032 echo $ECHO_N "(cached) $ECHO_C" >&6
4033 else
4034 cat >conftest.$ac_ext <<_ACEOF
4035 /* confdefs.h. */
4036 _ACEOF
4037 cat confdefs.h >>conftest.$ac_ext
4038 cat >>conftest.$ac_ext <<_ACEOF
4039 /* end confdefs.h. */
4040
4041 int
4042 main ()
4043 {
4044 #ifndef __GNUC__
4045 choke me
4046 #endif
4047
4048 ;
4049 return 0;
4050 }
4051 _ACEOF
4052 rm -f conftest.$ac_objext
4053 if { (ac_try="$ac_compile"
4054 case "(($ac_try" in
4055 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
4056 *) ac_try_echo=$ac_try;;
4057 esac
4058 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
4059 (eval "$ac_compile") 2>conftest.er1
4060 ac_status=$?
4061 grep -v '^ *+' conftest.er1 >conftest.err
4062 rm -f conftest.er1
4063 cat conftest.err >&5
4064 echo "$as_me:$LINENO: \$? = $ac_status" >&5
4065 (exit $ac_status); } && {
4066 test -z "$ac_c_werror_flag" ||
4067 test ! -s conftest.err
4068 } && test -s conftest.$ac_objext; then
4069 ac_compiler_gnu=yes
4070 else
4071 echo "$as_me: failed program was:" >&5
4072 sed 's/^/| /' conftest.$ac_ext >&5
4073
4074 ac_compiler_gnu=no
4075 fi
4076
4077 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
4078 ac_cv_c_compiler_gnu=$ac_compiler_gnu
4079
4080 fi
4081 { echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
4082 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
4083 GCC=`test $ac_compiler_gnu = yes && echo yes`
4084 ac_test_CFLAGS=${CFLAGS+set}
4085 ac_save_CFLAGS=$CFLAGS
4086 { echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
4087 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
4088 if test "${ac_cv_prog_cc_g+set}" = set; then
4089 echo $ECHO_N "(cached) $ECHO_C" >&6
4090 else
4091 ac_save_c_werror_flag=$ac_c_werror_flag
4092 ac_c_werror_flag=yes
4093 ac_cv_prog_cc_g=no
4094 CFLAGS="-g"
4095 cat >conftest.$ac_ext <<_ACEOF
4096 /* confdefs.h. */
4097 _ACEOF
4098 cat confdefs.h >>conftest.$ac_ext
4099 cat >>conftest.$ac_ext <<_ACEOF
4100 /* end confdefs.h. */
4101
4102 int
4103 main ()
4104 {
4105
4106 ;
4107 return 0;
4108 }
4109 _ACEOF
4110 rm -f conftest.$ac_objext
4111 if { (ac_try="$ac_compile"
4112 case "(($ac_try" in
4113 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
4114 *) ac_try_echo=$ac_try;;
4115 esac
4116 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
4117 (eval "$ac_compile") 2>conftest.er1
4118 ac_status=$?
4119 grep -v '^ *+' conftest.er1 >conftest.err
4120 rm -f conftest.er1
4121 cat conftest.err >&5
4122 echo "$as_me:$LINENO: \$? = $ac_status" >&5
4123 (exit $ac_status); } && {
4124 test -z "$ac_c_werror_flag" ||
4125 test ! -s conftest.err
4126 } && test -s conftest.$ac_objext; then
4127 ac_cv_prog_cc_g=yes
4128 else
4129 echo "$as_me: failed program was:" >&5
4130 sed 's/^/| /' conftest.$ac_ext >&5
4131
4132 CFLAGS=""
4133 cat >conftest.$ac_ext <<_ACEOF
4134 /* confdefs.h. */
4135 _ACEOF
4136 cat confdefs.h >>conftest.$ac_ext
4137 cat >>conftest.$ac_ext <<_ACEOF
4138 /* end confdefs.h. */
4139
4140 int
4141 main ()
4142 {
4143
4144 ;
4145 return 0;
4146 }
4147 _ACEOF
4148 rm -f conftest.$ac_objext
4149 if { (ac_try="$ac_compile"
4150 case "(($ac_try" in
4151 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
4152 *) ac_try_echo=$ac_try;;
4153 esac
4154 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
4155 (eval "$ac_compile") 2>conftest.er1
4156 ac_status=$?
4157 grep -v '^ *+' conftest.er1 >conftest.err
4158 rm -f conftest.er1
4159 cat conftest.err >&5
4160 echo "$as_me:$LINENO: \$? = $ac_status" >&5
4161 (exit $ac_status); } && {
4162 test -z "$ac_c_werror_flag" ||
4163 test ! -s conftest.err
4164 } && test -s conftest.$ac_objext; then
4165 :
4166 else
4167 echo "$as_me: failed program was:" >&5
4168 sed 's/^/| /' conftest.$ac_ext >&5
4169
4170 ac_c_werror_flag=$ac_save_c_werror_flag
4171 CFLAGS="-g"
4172 cat >conftest.$ac_ext <<_ACEOF
4173 /* confdefs.h. */
4174 _ACEOF
4175 cat confdefs.h >>conftest.$ac_ext
4176 cat >>conftest.$ac_ext <<_ACEOF
4177 /* end confdefs.h. */
4178
4179 int
4180 main ()
4181 {
4182
4183 ;
4184 return 0;
4185 }
4186 _ACEOF
4187 rm -f conftest.$ac_objext
4188 if { (ac_try="$ac_compile"
4189 case "(($ac_try" in
4190 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
4191 *) ac_try_echo=$ac_try;;
4192 esac
4193 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
4194 (eval "$ac_compile") 2>conftest.er1
4195 ac_status=$?
4196 grep -v '^ *+' conftest.er1 >conftest.err
4197 rm -f conftest.er1
4198 cat conftest.err >&5
4199 echo "$as_me:$LINENO: \$? = $ac_status" >&5
4200 (exit $ac_status); } && {
4201 test -z "$ac_c_werror_flag" ||
4202 test ! -s conftest.err
4203 } && test -s conftest.$ac_objext; then
4204 ac_cv_prog_cc_g=yes
4205 else
4206 echo "$as_me: failed program was:" >&5
4207 sed 's/^/| /' conftest.$ac_ext >&5
4208
4209
4210 fi
4211
4212 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
4213 fi
4214
4215 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
4216 fi
4217
4218 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
4219 ac_c_werror_flag=$ac_save_c_werror_flag
4220 fi
4221 { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
4222 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
4223 if test "$ac_test_CFLAGS" = set; then
4224 CFLAGS=$ac_save_CFLAGS
4225 elif test $ac_cv_prog_cc_g = yes; then
4226 if test "$GCC" = yes; then
4227 CFLAGS="-g -O2"
4228 else
4229 CFLAGS="-g"
4230 fi
4231 else
4232 if test "$GCC" = yes; then
4233 CFLAGS="-O2"
4234 else
4235 CFLAGS=
4236 fi
4237 fi
4238 { echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
4239 echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
4240 if test "${ac_cv_prog_cc_c89+set}" = set; then
4241 echo $ECHO_N "(cached) $ECHO_C" >&6
4242 else
4243 ac_cv_prog_cc_c89=no
4244 ac_save_CC=$CC
4245 cat >conftest.$ac_ext <<_ACEOF
4246 /* confdefs.h. */
4247 _ACEOF
4248 cat confdefs.h >>conftest.$ac_ext
4249 cat >>conftest.$ac_ext <<_ACEOF
4250 /* end confdefs.h. */
4251 #include <stdarg.h>
4252 #include <stdio.h>
4253 #include <sys/types.h>
4254 #include <sys/stat.h>
4255 /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
4256 struct buf { int x; };
4257 FILE * (*rcsopen) (struct buf *, struct stat *, int);
4258 static char *e (p, i)
4259 char **p;
4260 int i;
4261 {
4262 return p[i];
4263 }
4264 static char *f (char * (*g) (char **, int), char **p, ...)
4265 {
4266 char *s;
4267 va_list v;
4268 va_start (v,p);
4269 s = g (p, va_arg (v,int));
4270 va_end (v);
4271 return s;
4272 }
4273
4274 /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
4275 function prototypes and stuff, but not '\xHH' hex character constants.
4276 These don't provoke an error unfortunately, instead are silently treated
4277 as 'x'. The following induces an error, until -std is added to get
4278 proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
4279 array size at least. It's necessary to write '\x00'==0 to get something
4280 that's true only with -std. */
4281 int osf4_cc_array ['\x00' == 0 ? 1 : -1];
4282
4283 /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
4284 inside strings and character constants. */
4285 #define FOO(x) 'x'
4286 int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
4287
4288 int test (int i, double x);
4289 struct s1 {int (*f) (int a);};
4290 struct s2 {int (*f) (double a);};
4291 int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
4292 int argc;
4293 char **argv;
4294 int
4295 main ()
4296 {
4297 return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
4298 ;
4299 return 0;
4300 }
4301 _ACEOF
4302 for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
4303 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
4304 do
4305 CC="$ac_save_CC $ac_arg"
4306 rm -f conftest.$ac_objext
4307 if { (ac_try="$ac_compile"
4308 case "(($ac_try" in
4309 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
4310 *) ac_try_echo=$ac_try;;
4311 esac
4312 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
4313 (eval "$ac_compile") 2>conftest.er1
4314 ac_status=$?
4315 grep -v '^ *+' conftest.er1 >conftest.err
4316 rm -f conftest.er1
4317 cat conftest.err >&5
4318 echo "$as_me:$LINENO: \$? = $ac_status" >&5
4319 (exit $ac_status); } && {
4320 test -z "$ac_c_werror_flag" ||
4321 test ! -s conftest.err
4322 } && test -s conftest.$ac_objext; then
4323 ac_cv_prog_cc_c89=$ac_arg
4324 else
4325 echo "$as_me: failed program was:" >&5
4326 sed 's/^/| /' conftest.$ac_ext >&5
4327
4328
4329 fi
4330
4331 rm -f core conftest.err conftest.$ac_objext
4332 test "x$ac_cv_prog_cc_c89" != "xno" && break
4333 done
4334 rm -f conftest.$ac_ext
4335 CC=$ac_save_CC
4336
4337 fi
4338 # AC_CACHE_VAL
4339 case "x$ac_cv_prog_cc_c89" in
4340 x)
4341 { echo "$as_me:$LINENO: result: none needed" >&5
4342 echo "${ECHO_T}none needed" >&6; } ;;
4343 xno)
4344 { echo "$as_me:$LINENO: result: unsupported" >&5
4345 echo "${ECHO_T}unsupported" >&6; } ;;
4346 *)
4347 CC="$CC $ac_cv_prog_cc_c89"
4348 { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
4349 echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
4350 esac
4351
4352
4353 ac_ext=c
4354 ac_cpp='$CPP $CPPFLAGS'
4355 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
4356 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
4357 ac_compiler_gnu=$ac_cv_c_compiler_gnu
4358
4359 depcc="$CC" am_compiler_list=
4360
4361 { echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
4362 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
4363 if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
4364 echo $ECHO_N "(cached) $ECHO_C" >&6
4365 else
4366 if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
4367 # We make a subdir and do the tests there. Otherwise we can end up
4368 # making bogus files that we don't know about and never remove. For
4369 # instance it was reported that on HP-UX the gcc test will end up
4370 # making a dummy file named `D' -- because `-MD' means `put the output
4371 # in D'.
4372 mkdir conftest.dir
4373 # Copy depcomp to subdir because otherwise we won't find it if we're
4374 # using a relative directory.
4375 cp "$am_depcomp" conftest.dir
4376 cd conftest.dir
4377 # We will build objects and dependencies in a subdirectory because
4378 # it helps to detect inapplicable dependency modes. For instance
4379 # both Tru64's cc and ICC support -MD to output dependencies as a
4380 # side effect of compilation, but ICC will put the dependencies in
4381 # the current directory while Tru64 will put them in the object
4382 # directory.
4383 mkdir sub
4384
4385 am_cv_CC_dependencies_compiler_type=none
4386 if test "$am_compiler_list" = ""; then
4387 am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
4388 fi
4389 for depmode in $am_compiler_list; do
4390 # Setup a source with many dependencies, because some compilers
4391 # like to wrap large dependency lists on column 80 (with \), and
4392 # we should not choose a depcomp mode which is confused by this.
4393 #
4394 # We need to recreate these files for each test, as the compiler may
4395 # overwrite some of them when testing with obscure command lines.
4396 # This happens at least with the AIX C compiler.
4397 : > sub/conftest.c
4398 for i in 1 2 3 4 5 6; do
4399 echo '#include "conftst'$i'.h"' >> sub/conftest.c
4400 # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
4401 # Solaris 8's {/usr,}/bin/sh.
4402 touch sub/conftst$i.h
4403 done
4404 echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
4405
4406 case $depmode in
4407 nosideeffect)
4408 # after this tag, mechanisms are not by side-effect, so they'll
4409 # only be used when explicitly requested
4410 if test "x$enable_dependency_tracking" = xyes; then
4411 continue
4412 else
4413 break
4414 fi
4415 ;;
4416 none) break ;;
4417 esac
4418 # We check with `-c' and `-o' for the sake of the "dashmstdout"
4419 # mode. It turns out that the SunPro C++ compiler does not properly
4420 # handle `-M -o', and we need to detect this.
4421 if depmode=$depmode \
4422 source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
4423 depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
4424 $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
4425 >/dev/null 2>conftest.err &&
4426 grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
4427 grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
4428 ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
4429 # icc doesn't choke on unknown options, it will just issue warnings
4430 # or remarks (even with -Werror). So we grep stderr for any message
4431 # that says an option was ignored or not supported.
4432 # When given -MP, icc 7.0 and 7.1 complain thusly:
4433 # icc: Command line warning: ignoring option '-M'; no argument required
4434 # The diagnosis changed in icc 8.0:
4435 # icc: Command line remark: option '-MP' not supported
4436 if (grep 'ignoring option' conftest.err ||
4437 grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
4438 am_cv_CC_dependencies_compiler_type=$depmode
4439 break
4440 fi
4441 fi
4442 done
4443
4444 cd ..
4445 rm -rf conftest.dir
4446 else
4447 am_cv_CC_dependencies_compiler_type=none
4448 fi
4449
4450 fi
4451 { echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
4452 echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; }
4453 CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
4454
4455
4456
4457 if
4458 test "x$enable_dependency_tracking" != xno \
4459 && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
4460 am__fastdepCC_TRUE=
4461 am__fastdepCC_FALSE='#'
4462 else
4463 am__fastdepCC_TRUE='#'
4464 am__fastdepCC_FALSE=
4465 fi
4466
4467
4468
4469 am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc
4470
4471 # Find a good install program. We prefer a C program (faster),
4472 # so one script is as good as another. But avoid the broken or
4473 # incompatible versions:
4474 # SysV /etc/install, /usr/sbin/install
4475 # SunOS /usr/etc/install
4476 # IRIX /sbin/install
4477 # AIX /bin/install
4478 # AmigaOS /C/install, which installs bootblocks on floppy discs
4479 # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
4480 # AFS /usr/afsws/bin/install, which mishandles nonexistent args
4481 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
4482 # OS/2's system install, which has a completely different semantic
4483 # ./install, which can be erroneously created by make from ./install.sh.
4484 { echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
4485 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; }
4486 if test -z "$INSTALL"; then
4487 if test "${ac_cv_path_install+set}" = set; then
4488 echo $ECHO_N "(cached) $ECHO_C" >&6
4489 else
4490 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4491 for as_dir in $PATH
4492 do
4493 IFS=$as_save_IFS
4494 test -z "$as_dir" && as_dir=.
4495 # Account for people who put trailing slashes in PATH elements.
4496 case $as_dir/ in
4497 ./ | .// | /cC/* | \
4498 /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
4499 ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
4500 /usr/ucb/* ) ;;
4501 *)
4502 # OSF1 and SCO ODT 3.0 have their own names for install.
4503 # Don't use installbsd from OSF since it installs stuff as root
4504 # by default.
4505 for ac_prog in ginstall scoinst install; do
4506 for ac_exec_ext in '' $ac_executable_extensions; do
4507 if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
4508 if test $ac_prog = install &&
4509 grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
4510 # AIX install. It has an incompatible calling convention.
4511 :
4512 elif test $ac_prog = install &&
4513 grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
4514 # program-specific install script used by HP pwplus--don't use.
4515 :
4516 else
4517 ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
4518 break 3
4519 fi
4520 fi
4521 done
4522 done
4523 ;;
4524 esac
4525 done
4526 IFS=$as_save_IFS
4527
4528
4529 fi
4530 if test "${ac_cv_path_install+set}" = set; then
4531 INSTALL=$ac_cv_path_install
4532 else
4533 # As a last resort, use the slow shell script. Don't cache a
4534 # value for INSTALL within a source directory, because that will
4535 # break other packages using the cache if that directory is
4536 # removed, or if the value is a relative name.
4537 INSTALL=$ac_install_sh
4538 fi
4539 fi
4540 { echo "$as_me:$LINENO: result: $INSTALL" >&5
4541 echo "${ECHO_T}$INSTALL" >&6; }
4542
4543 # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
4544 # It thinks the first close brace ends the variable substitution.
4545 test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
4546
4547 test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
4548
4549 test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
4550
4551 # Check whether --enable-shared was given.
4552 if test "${enable_shared+set}" = set; then
4553 enableval=$enable_shared; p=${PACKAGE-default}
4554 case $enableval in
4555 yes) enable_shared=yes ;;
4556 no) enable_shared=no ;;
4557 *)
4558 enable_shared=no
4559 # Look at the argument we got. We use all the common list separators.
4560 lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
4561 for pkg in $enableval; do
4562 IFS="$lt_save_ifs"
4563 if test "X$pkg" = "X$p"; then
4564 enable_shared=yes
4565 fi
4566 done
4567 IFS="$lt_save_ifs"
4568 ;;
4569 esac
4570 else
4571 enable_shared=yes
4572 fi
4573
4574
4575 # Check whether --enable-static was given.
4576 if test "${enable_static+set}" = set; then
4577 enableval=$enable_static; p=${PACKAGE-default}
4578 case $enableval in
4579 yes) enable_static=yes ;;
4580 no) enable_static=no ;;
4581 *)
4582 enable_static=no
4583 # Look at the argument we got. We use all the common list separators.
4584 lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
4585 for pkg in $enableval; do
4586 IFS="$lt_save_ifs"
4587 if test "X$pkg" = "X$p"; then
4588 enable_static=yes
4589 fi
4590 done
4591 IFS="$lt_save_ifs"
4592 ;;
4593 esac
4594 else
4595 enable_static=yes
4596 fi
4597
4598
4599 # Check whether --enable-fast-install was given.
4600 if test "${enable_fast_install+set}" = set; then
4601 enableval=$enable_fast_install; p=${PACKAGE-default}
4602 case $enableval in
4603 yes) enable_fast_install=yes ;;
4604 no) enable_fast_install=no ;;
4605 *)
4606 enable_fast_install=no
4607 # Look at the argument we got. We use all the common list separators.
4608 lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
4609 for pkg in $enableval; do
4610 IFS="$lt_save_ifs"
4611 if test "X$pkg" = "X$p"; then
4612 enable_fast_install=yes
4613 fi
4614 done
4615 IFS="$lt_save_ifs"
4616 ;;
4617 esac
4618 else
4619 enable_fast_install=yes
4620 fi
4621
4622
4623 { echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
4624 echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6; }
4625 if test "${lt_cv_path_SED+set}" = set; then
4626 echo $ECHO_N "(cached) $ECHO_C" >&6
4627 else
4628 # Loop through the user's path and test for sed and gsed.
4629 # Then use that list of sed's as ones to test for truncation.
4630 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4631 for as_dir in $PATH
4632 do
4633 IFS=$as_save_IFS
4634 test -z "$as_dir" && as_dir=.
4635 for lt_ac_prog in sed gsed; do
4636 for ac_exec_ext in '' $ac_executable_extensions; do
4637 if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
4638 lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
4639 fi
4640 done
4641 done
4642 done
4643 lt_ac_max=0
4644 lt_ac_count=0
4645 # Add /usr/xpg4/bin/sed as it is typically found on Solaris
4646 # along with /bin/sed that truncates output.
4647 for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
4648 test ! -f $lt_ac_sed && continue
4649 cat /dev/null > conftest.in
4650 lt_ac_count=0
4651 echo $ECHO_N "0123456789$ECHO_C" >conftest.in
4652 # Check for GNU sed and select it if it is found.
4653 if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
4654 lt_cv_path_SED=$lt_ac_sed
4655 break
4656 fi
4657 while true; do
4658 cat conftest.in conftest.in >conftest.tmp
4659 mv conftest.tmp conftest.in
4660 cp conftest.in conftest.nl
4661 echo >>conftest.nl
4662 $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
4663 cmp -s conftest.out conftest.nl || break
4664 # 10000 chars as input seems more than enough
4665 test $lt_ac_count -gt 10 && break
4666 lt_ac_count=`expr $lt_ac_count + 1`
4667 if test $lt_ac_count -gt $lt_ac_max; then
4668 lt_ac_max=$lt_ac_count
4669 lt_cv_path_SED=$lt_ac_sed
4670 fi
4671 done
4672 done
4673
4674 fi
4675
4676 SED=$lt_cv_path_SED
4677 { echo "$as_me:$LINENO: result: $SED" >&5
4678 echo "${ECHO_T}$SED" >&6; }
4679
4680 { echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
4681 echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; }
4682 if test "${ac_cv_path_GREP+set}" = set; then
4683 echo $ECHO_N "(cached) $ECHO_C" >&6
4684 else
4685 # Extract the first word of "grep ggrep" to use in msg output
4686 if test -z "$GREP"; then
4687 set dummy grep ggrep; ac_prog_name=$2
4688 if test "${ac_cv_path_GREP+set}" = set; then
4689 echo $ECHO_N "(cached) $ECHO_C" >&6
4690 else
4691 ac_path_GREP_found=false
4692 # Loop through the user's path and test for each of PROGNAME-LIST
4693 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4694 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
4695 do
4696 IFS=$as_save_IFS
4697 test -z "$as_dir" && as_dir=.
4698 for ac_prog in grep ggrep; do
4699 for ac_exec_ext in '' $ac_executable_extensions; do
4700 ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
4701 { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
4702 # Check for GNU ac_path_GREP and select it if it is found.
4703 # Check for GNU $ac_path_GREP
4704 case `"$ac_path_GREP" --version 2>&1` in
4705 *GNU*)
4706 ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
4707 *)
4708 ac_count=0
4709 echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
4710 while :
4711 do
4712 cat "conftest.in" "conftest.in" >"conftest.tmp"
4713 mv "conftest.tmp" "conftest.in"
4714 cp "conftest.in" "conftest.nl"
4715 echo 'GREP' >> "conftest.nl"
4716 "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
4717 diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
4718 ac_count=`expr $ac_count + 1`
4719 if test $ac_count -gt ${ac_path_GREP_max-0}; then
4720 # Best one so far, save it but keep looking for a better one
4721 ac_cv_path_GREP="$ac_path_GREP"
4722 ac_path_GREP_max=$ac_count
4723 fi
4724 # 10*(2^10) chars as input seems more than enough
4725 test $ac_count -gt 10 && break
4726 done
4727 rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
4728 esac
4729
4730
4731 $ac_path_GREP_found && break 3
4732 done
4733 done
4734
4735 done
4736 IFS=$as_save_IFS
4737
4738
4739 fi
4740
4741 GREP="$ac_cv_path_GREP"
4742 if test -z "$GREP"; then
4743 { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
4744 echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
4745 { (exit 1); exit 1; }; }
4746 fi
4747
4748 else
4749 ac_cv_path_GREP=$GREP
4750 fi
4751
4752
4753 fi
4754 { echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
4755 echo "${ECHO_T}$ac_cv_path_GREP" >&6; }
4756 GREP="$ac_cv_path_GREP"
4757
4758
4759 { echo "$as_me:$LINENO: checking for egrep" >&5
4760 echo $ECHO_N "checking for egrep... $ECHO_C" >&6; }
4761 if test "${ac_cv_path_EGREP+set}" = set; then
4762 echo $ECHO_N "(cached) $ECHO_C" >&6
4763 else
4764 if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
4765 then ac_cv_path_EGREP="$GREP -E"
4766 else
4767 # Extract the first word of "egrep" to use in msg output
4768 if test -z "$EGREP"; then
4769 set dummy egrep; ac_prog_name=$2
4770 if test "${ac_cv_path_EGREP+set}" = set; then
4771 echo $ECHO_N "(cached) $ECHO_C" >&6
4772 else
4773 ac_path_EGREP_found=false
4774 # Loop through the user's path and test for each of PROGNAME-LIST
4775 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4776 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
4777 do
4778 IFS=$as_save_IFS
4779 test -z "$as_dir" && as_dir=.
4780 for ac_prog in egrep; do
4781 for ac_exec_ext in '' $ac_executable_extensions; do
4782 ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
4783 { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
4784 # Check for GNU ac_path_EGREP and select it if it is found.
4785 # Check for GNU $ac_path_EGREP
4786 case `"$ac_path_EGREP" --version 2>&1` in
4787 *GNU*)
4788 ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
4789 *)
4790 ac_count=0
4791 echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
4792 while :
4793 do
4794 cat "conftest.in" "conftest.in" >"conftest.tmp"
4795 mv "conftest.tmp" "conftest.in"
4796 cp "conftest.in" "conftest.nl"
4797 echo 'EGREP' >> "conftest.nl"
4798 "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
4799 diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
4800 ac_count=`expr $ac_count + 1`
4801 if test $ac_count -gt ${ac_path_EGREP_max-0}; then
4802 # Best one so far, save it but keep looking for a better one
4803 ac_cv_path_EGREP="$ac_path_EGREP"
4804 ac_path_EGREP_max=$ac_count
4805 fi
4806 # 10*(2^10) chars as input seems more than enough
4807 test $ac_count -gt 10 && break
4808 done
4809 rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
4810 esac
4811
4812
4813 $ac_path_EGREP_found && break 3
4814 done
4815 done
4816
4817 done
4818 IFS=$as_save_IFS
4819
4820
4821 fi
4822
4823 EGREP="$ac_cv_path_EGREP"
4824 if test -z "$EGREP"; then
4825 { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
4826 echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
4827 { (exit 1); exit 1; }; }
4828 fi
4829
4830 else
4831 ac_cv_path_EGREP=$EGREP
4832 fi
4833
4834
4835 fi
4836 fi
4837 { echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
4838 echo "${ECHO_T}$ac_cv_path_EGREP" >&6; }
4839 EGREP="$ac_cv_path_EGREP"
4840
4841
4842
4843 # Check whether --with-gnu-ld was given.
4844 if test "${with_gnu_ld+set}" = set; then
4845 withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
4846 else
4847 with_gnu_ld=no
4848 fi
4849
4850 ac_prog=ld
4851 if test "$GCC" = yes; then
4852 # Check if gcc -print-prog-name=ld gives a path.
4853 { echo "$as_me:$LINENO: checking for ld used by $CC" >&5
4854 echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; }
4855 case $host in
4856 *-*-mingw*)
4857 # gcc leaves a trailing carriage return which upsets mingw
4858 ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
4859 *)
4860 ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
4861 esac
4862 case $ac_prog in
4863 # Accept absolute paths.
4864 [\\/]* | ?:[\\/]*)
4865 re_direlt='/[^/][^/]*/\.\./'
4866 # Canonicalize the pathname of ld
4867 ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
4868 while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
4869 ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
4870 done
4871 test -z "$LD" && LD="$ac_prog"
4872 ;;
4873 "")
4874 # If it fails, then pretend we aren't using GCC.
4875 ac_prog=ld
4876 ;;
4877 *)
4878 # If it is relative, then search for the first ld in PATH.
4879 with_gnu_ld=unknown
4880 ;;
4881 esac
4882 elif test "$with_gnu_ld" = yes; then
4883 { echo "$as_me:$LINENO: checking for GNU ld" >&5
4884 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; }
4885 else
4886 { echo "$as_me:$LINENO: checking for non-GNU ld" >&5
4887 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; }
4888 fi
4889 if test "${lt_cv_path_LD+set}" = set; then
4890 echo $ECHO_N "(cached) $ECHO_C" >&6
4891 else
4892 if test -z "$LD"; then
4893 lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
4894 for ac_dir in $PATH; do
4895 IFS="$lt_save_ifs"
4896 test -z "$ac_dir" && ac_dir=.
4897 if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
4898 lt_cv_path_LD="$ac_dir/$ac_prog"
4899 # Check to see if the program is GNU ld. I'd rather use --version,
4900 # but apparently some variants of GNU ld only accept -v.
4901 # Break only if it was the GNU/non-GNU ld that we prefer.
4902 case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
4903 *GNU* | *'with BFD'*)
4904 test "$with_gnu_ld" != no && break
4905 ;;
4906 *)
4907 test "$with_gnu_ld" != yes && break
4908 ;;
4909 esac
4910 fi
4911 done
4912 IFS="$lt_save_ifs"
4913 else
4914 lt_cv_path_LD="$LD" # Let the user override the test with a path.
4915 fi
4916 fi
4917
4918 LD="$lt_cv_path_LD"
4919 if test -n "$LD"; then
4920 { echo "$as_me:$LINENO: result: $LD" >&5
4921 echo "${ECHO_T}$LD" >&6; }
4922 else
4923 { echo "$as_me:$LINENO: result: no" >&5
4924 echo "${ECHO_T}no" >&6; }
4925 fi
4926 test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
4927 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
4928 { (exit 1); exit 1; }; }
4929 { echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
4930 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; }
4931 if test "${lt_cv_prog_gnu_ld+set}" = set; then
4932 echo $ECHO_N "(cached) $ECHO_C" >&6
4933 else
4934 # I'd rather use --version here, but apparently some GNU lds only accept -v.
4935 case `$LD -v 2>&1 </dev/null` in
4936 *GNU* | *'with BFD'*)
4937 lt_cv_prog_gnu_ld=yes
4938 ;;
4939 *)
4940 lt_cv_prog_gnu_ld=no
4941 ;;
4942 esac
4943 fi
4944 { echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
4945 echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; }
4946 with_gnu_ld=$lt_cv_prog_gnu_ld
4947
4948
4949 { echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
4950 echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; }
4951 if test "${lt_cv_ld_reload_flag+set}" = set; then
4952 echo $ECHO_N "(cached) $ECHO_C" >&6
4953 else
4954 lt_cv_ld_reload_flag='-r'
4955 fi
4956 { echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
4957 echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; }
4958 reload_flag=$lt_cv_ld_reload_flag
4959 case $reload_flag in
4960 "" | " "*) ;;
4961 *) reload_flag=" $reload_flag" ;;
4962 esac
4963 reload_cmds='$LD$reload_flag -o $output$reload_objs'
4964 case $host_os in
4965 darwin*)
4966 if test "$GCC" = yes; then
4967 reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
4968 else
4969 reload_cmds='$LD$reload_flag -o $output$reload_objs'
4970 fi
4971 ;;
4972 esac
4973
4974 { echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
4975 echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6; }
4976 if test "${lt_cv_path_NM+set}" = set; then
4977 echo $ECHO_N "(cached) $ECHO_C" >&6
4978 else
4979 if test -n "$NM"; then
4980 # Let the user override the test.
4981 lt_cv_path_NM="$NM"
4982 else
4983 lt_nm_to_check="${ac_tool_prefix}nm"
4984 if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
4985 lt_nm_to_check="$lt_nm_to_check nm"
4986 fi
4987 for lt_tmp_nm in $lt_nm_to_check; do
4988 lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
4989 for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
4990 IFS="$lt_save_ifs"
4991 test -z "$ac_dir" && ac_dir=.
4992 tmp_nm="$ac_dir/$lt_tmp_nm"
4993 if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
4994 # Check to see if the nm accepts a BSD-compat flag.
4995 # Adding the `sed 1q' prevents false positives on HP-UX, which says:
4996 # nm: unknown option "B" ignored
4997 # Tru64's nm complains that /dev/null is an invalid object file
4998 case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
4999 */dev/null* | *'Invalid file or object type'*)
5000 lt_cv_path_NM="$tmp_nm -B"
5001 break
5002 ;;
5003 *)
5004 case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
5005 */dev/null*)
5006 lt_cv_path_NM="$tmp_nm -p"
5007 break
5008 ;;
5009 *)
5010 lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
5011 continue # so that we can try to find one that supports BSD flags
5012 ;;
5013 esac
5014 ;;
5015 esac
5016 fi
5017 done
5018 IFS="$lt_save_ifs"
5019 done
5020 test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
5021 fi
5022 fi
5023 { echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
5024 echo "${ECHO_T}$lt_cv_path_NM" >&6; }
5025 NM="$lt_cv_path_NM"
5026
5027 { echo "$as_me:$LINENO: checking whether ln -s works" >&5
5028 echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; }
5029 LN_S=$as_ln_s
5030 if test "$LN_S" = "ln -s"; then
5031 { echo "$as_me:$LINENO: result: yes" >&5
5032 echo "${ECHO_T}yes" >&6; }
5033 else
5034 { echo "$as_me:$LINENO: result: no, using $LN_S" >&5
5035 echo "${ECHO_T}no, using $LN_S" >&6; }
5036 fi
5037
5038 { echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5
5039 echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6; }
5040 if test "${lt_cv_deplibs_check_method+set}" = set; then
5041 echo $ECHO_N "(cached) $ECHO_C" >&6
5042 else
5043 lt_cv_file_magic_cmd='$MAGIC_CMD'
5044 lt_cv_file_magic_test_file=
5045 lt_cv_deplibs_check_method='unknown'
5046 # Need to set the preceding variable on all platforms that support
5047 # interlibrary dependencies.
5048 # 'none' -- dependencies not supported.
5049 # `unknown' -- same as none, but documents that we really don't know.
5050 # 'pass_all' -- all dependencies passed with no checks.
5051 # 'test_compile' -- check by making test program.
5052 # 'file_magic [[regex]]' -- check by looking for files in library path
5053 # which responds to the $file_magic_cmd with a given extended regex.
5054 # If you have `file' or equivalent on your system and you're not sure
5055 # whether `pass_all' will *always* work, you probably want this one.
5056
5057 case $host_os in
5058 aix4* | aix5*)
5059 lt_cv_deplibs_check_method=pass_all
5060 ;;
5061
5062 beos*)
5063 lt_cv_deplibs_check_method=pass_all
5064 ;;
5065
5066 bsdi[45]*)
5067 lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
5068 lt_cv_file_magic_cmd='/usr/bin/file -L'
5069 lt_cv_file_magic_test_file=/shlib/libc.so
5070 ;;
5071
5072 cygwin*)
5073 # func_win32_libid is a shell function defined in ltmain.sh
5074 lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
5075 lt_cv_file_magic_cmd='func_win32_libid'
5076 ;;
5077
5078 mingw* | pw32*)
5079 # Base MSYS/MinGW do not provide the 'file' command needed by
5080 # func_win32_libid shell function, so use a weaker test based on 'objdump'.
5081 lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
5082 lt_cv_file_magic_cmd='$OBJDUMP -f'
5083 ;;
5084
5085 darwin* | rhapsody*)
5086 lt_cv_deplibs_check_method=pass_all
5087 ;;
5088
5089 freebsd* | dragonfly*)
5090 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
5091 case $host_cpu in
5092 i*86 )
5093 # Not sure whether the presence of OpenBSD here was a mistake.
5094 # Let's accept both of them until this is cleared up.
5095 lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
5096 lt_cv_file_magic_cmd=/usr/bin/file
5097 lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
5098 ;;
5099 esac
5100 else
5101 lt_cv_deplibs_check_method=pass_all
5102 fi
5103 ;;
5104
5105 gnu*)
5106 lt_cv_deplibs_check_method=pass_all
5107 ;;
5108
5109 hpux10.20* | hpux11*)
5110 lt_cv_file_magic_cmd=/usr/bin/file
5111 case $host_cpu in
5112 ia64*)
5113 lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
5114 lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
5115 ;;
5116 hppa*64*)
5117 lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'
5118 lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
5119 ;;
5120 *)
5121 lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
5122 lt_cv_file_magic_test_file=/usr/lib/libc.sl
5123 ;;
5124 esac
5125 ;;
5126
5127 interix3*)
5128 # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
5129 lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
5130 ;;
5131
5132 irix5* | irix6* | nonstopux*)
5133 case $LD in
5134 *-32|*"-32 ") libmagic=32-bit;;
5135 *-n32|*"-n32 ") libmagic=N32;;
5136 *-64|*"-64 ") libmagic=64-bit;;
5137 *) libmagic=never-match;;
5138 esac
5139 lt_cv_deplibs_check_method=pass_all
5140 ;;
5141
5142 # This must be Linux ELF.
5143 linux* | k*bsd*-gnu)
5144 lt_cv_deplibs_check_method=pass_all
5145 ;;
5146
5147 netbsd* | netbsdelf*-gnu)
5148 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
5149 lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
5150 else
5151 lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
5152 fi
5153 ;;
5154
5155 newos6*)
5156 lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
5157 lt_cv_file_magic_cmd=/usr/bin/file
5158 lt_cv_file_magic_test_file=/usr/lib/libnls.so
5159 ;;
5160
5161 nto-qnx*)
5162 lt_cv_deplibs_check_method=unknown
5163 ;;
5164
5165 openbsd*)
5166 if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
5167 lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
5168 else
5169 lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
5170 fi
5171 ;;
5172
5173 osf3* | osf4* | osf5*)
5174 lt_cv_deplibs_check_method=pass_all
5175 ;;
5176
5177 solaris*)
5178 lt_cv_deplibs_check_method=pass_all
5179 ;;
5180
5181 sysv4 | sysv4.3*)
5182 case $host_vendor in
5183 motorola)
5184 lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
5185 lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
5186 ;;
5187 ncr)
5188 lt_cv_deplibs_check_method=pass_all
5189 ;;
5190 sequent)
5191 lt_cv_file_magic_cmd='/bin/file'
5192 lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
5193 ;;
5194 sni)
5195 lt_cv_file_magic_cmd='/bin/file'
5196 lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
5197 lt_cv_file_magic_test_file=/lib/libc.so
5198 ;;
5199 siemens)
5200 lt_cv_deplibs_check_method=pass_all
5201 ;;
5202 pc)
5203 lt_cv_deplibs_check_method=pass_all
5204 ;;
5205 esac
5206 ;;
5207
5208 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
5209 lt_cv_deplibs_check_method=pass_all
5210 ;;
5211 esac
5212
5213 fi
5214 { echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
5215 echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; }
5216 file_magic_cmd=$lt_cv_file_magic_cmd
5217 deplibs_check_method=$lt_cv_deplibs_check_method
5218 test -z "$deplibs_check_method" && deplibs_check_method=unknown
5219
5220
5221
5222
5223 # If no C compiler was specified, use CC.
5224 LTCC=${LTCC-"$CC"}
5225
5226 # If no C compiler flags were specified, use CFLAGS.
5227 LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
5228
5229 # Allow CC to be a program name with arguments.
5230 compiler=$CC
5231
5232
5233 # Check whether --enable-libtool-lock was given.
5234 if test "${enable_libtool_lock+set}" = set; then
5235 enableval=$enable_libtool_lock;
5236 fi
5237
5238 test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
5239
5240 # Some flags need to be propagated to the compiler or linker for good
5241 # libtool support.
5242 case $host in
5243 ia64-*-hpux*)
5244 # Find out which ABI we are using.
5245 echo 'int i;' > conftest.$ac_ext
5246 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
5247 (eval $ac_compile) 2>&5
5248 ac_status=$?
5249 echo "$as_me:$LINENO: \$? = $ac_status" >&5
5250 (exit $ac_status); }; then
5251 case `/usr/bin/file conftest.$ac_objext` in
5252 *ELF-32*)
5253 HPUX_IA64_MODE="32"
5254 ;;
5255 *ELF-64*)
5256 HPUX_IA64_MODE="64"
5257 ;;
5258 esac
5259 fi
5260 rm -rf conftest*
5261 ;;
5262 *-*-irix6*)
5263 # Find out which ABI we are using.
5264 echo '#line 5265 "configure"' > conftest.$ac_ext
5265 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
5266 (eval $ac_compile) 2>&5
5267 ac_status=$?
5268 echo "$as_me:$LINENO: \$? = $ac_status" >&5
5269 (exit $ac_status); }; then
5270 if test "$lt_cv_prog_gnu_ld" = yes; then
5271 case `/usr/bin/file conftest.$ac_objext` in
5272 *32-bit*)
5273 LD="${LD-ld} -melf32bsmip"
5274 ;;
5275 *N32*)
5276 LD="${LD-ld} -melf32bmipn32"
5277 ;;
5278 *64-bit*)
5279 LD="${LD-ld} -melf64bmip"
5280 ;;
5281 esac
5282 else
5283 case `/usr/bin/file conftest.$ac_objext` in
5284 *32-bit*)
5285 LD="${LD-ld} -32"
5286 ;;
5287 *N32*)
5288 LD="${LD-ld} -n32"
5289 ;;
5290 *64-bit*)
5291 LD="${LD-ld} -64"
5292 ;;
5293 esac
5294 fi
5295 fi
5296 rm -rf conftest*
5297 ;;
5298
5299 x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
5300 # Find out which ABI we are using.
5301 echo 'int i;' > conftest.$ac_ext
5302 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
5303 (eval $ac_compile) 2>&5
5304 ac_status=$?
5305 echo "$as_me:$LINENO: \$? = $ac_status" >&5
5306 (exit $ac_status); }; then
5307 case `/usr/bin/file conftest.o` in
5308 *32-bit*)
5309 case $host in
5310 x86_64-*linux*)
5311 LD="${LD-ld} -m elf_i386"
5312 ;;
5313 ppc64-*linux*|powerpc64-*linux*)
5314 LD="${LD-ld} -m elf32ppclinux"
5315 ;;
5316 s390x-*linux*)
5317 LD="${LD-ld} -m elf_s390"
5318 ;;
5319 sparc64-*linux*)
5320 LD="${LD-ld} -m elf32_sparc"
5321 ;;
5322 esac
5323 ;;
5324 *64-bit*)
5325 case $host in
5326 x86_64-*linux*)
5327 LD="${LD-ld} -m elf_x86_64"
5328 ;;
5329 ppc*-*linux*|powerpc*-*linux*)
5330 LD="${LD-ld} -m elf64ppc"
5331 ;;
5332 s390*-*linux*)
5333 LD="${LD-ld} -m elf64_s390"
5334 ;;
5335 sparc*-*linux*)
5336 LD="${LD-ld} -m elf64_sparc"
5337 ;;
5338 esac
5339 ;;
5340 esac
5341 fi
5342 rm -rf conftest*
5343 ;;
5344
5345 *-*-sco3.2v5*)
5346 # On SCO OpenServer 5, we need -belf to get full-featured binaries.
5347 SAVE_CFLAGS="$CFLAGS"
5348 CFLAGS="$CFLAGS -belf"
5349 { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
5350 echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; }
5351 if test "${lt_cv_cc_needs_belf+set}" = set; then
5352 echo $ECHO_N "(cached) $ECHO_C" >&6
5353 else
5354 ac_ext=c
5355 ac_cpp='$CPP $CPPFLAGS'
5356 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
5357 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
5358 ac_compiler_gnu=$ac_cv_c_compiler_gnu
5359
5360 cat >conftest.$ac_ext <<_ACEOF
5361 /* confdefs.h. */
5362 _ACEOF
5363 cat confdefs.h >>conftest.$ac_ext
5364 cat >>conftest.$ac_ext <<_ACEOF
5365 /* end confdefs.h. */
5366
5367 int
5368 main ()
5369 {
5370
5371 ;
5372 return 0;
5373 }
5374 _ACEOF
5375 rm -f conftest.$ac_objext conftest$ac_exeext
5376 if { (ac_try="$ac_link"
5377 case "(($ac_try" in
5378 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
5379 *) ac_try_echo=$ac_try;;
5380 esac
5381 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
5382 (eval "$ac_link") 2>conftest.er1
5383 ac_status=$?
5384 grep -v '^ *+' conftest.er1 >conftest.err
5385 rm -f conftest.er1
5386 cat conftest.err >&5
5387 echo "$as_me:$LINENO: \$? = $ac_status" >&5
5388 (exit $ac_status); } && {
5389 test -z "$ac_c_werror_flag" ||
5390 test ! -s conftest.err
5391 } && test -s conftest$ac_exeext &&
5392 $as_test_x conftest$ac_exeext; then
5393 lt_cv_cc_needs_belf=yes
5394 else
5395 echo "$as_me: failed program was:" >&5
5396 sed 's/^/| /' conftest.$ac_ext >&5
5397
5398 lt_cv_cc_needs_belf=no
5399 fi
5400
5401 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
5402 conftest$ac_exeext conftest.$ac_ext
5403 ac_ext=c
5404 ac_cpp='$CPP $CPPFLAGS'
5405 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
5406 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
5407 ac_compiler_gnu=$ac_cv_c_compiler_gnu
5408
5409 fi
5410 { echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
5411 echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; }
5412 if test x"$lt_cv_cc_needs_belf" != x"yes"; then
5413 # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
5414 CFLAGS="$SAVE_CFLAGS"
5415 fi
5416 ;;
5417 sparc*-*solaris*)
5418 # Find out which ABI we are using.
5419 echo 'int i;' > conftest.$ac_ext
5420 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
5421 (eval $ac_compile) 2>&5
5422 ac_status=$?
5423 echo "$as_me:$LINENO: \$? = $ac_status" >&5
5424 (exit $ac_status); }; then
5425 case `/usr/bin/file conftest.o` in
5426 *64-bit*)
5427 case $lt_cv_prog_gnu_ld in
5428 yes*) LD="${LD-ld} -m elf64_sparc" ;;
5429 *) LD="${LD-ld} -64" ;;
5430 esac
5431 ;;
5432 esac
5433 fi
5434 rm -rf conftest*
5435 ;;
5436
5437
5438 esac
5439
5440 need_locks="$enable_libtool_lock"
5441
5442
5443 ac_ext=c
5444 ac_cpp='$CPP $CPPFLAGS'
5445 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
5446 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
5447 ac_compiler_gnu=$ac_cv_c_compiler_gnu
5448 { echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
5449 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; }
5450 # On Suns, sometimes $CPP names a directory.
5451 if test -n "$CPP" && test -d "$CPP"; then
5452 CPP=
5453 fi
5454 if test -z "$CPP"; then
5455 if test "${ac_cv_prog_CPP+set}" = set; then
5456 echo $ECHO_N "(cached) $ECHO_C" >&6
5457 else
5458 # Double quotes because CPP needs to be expanded
5459 for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
5460 do
5461 ac_preproc_ok=false
5462 for ac_c_preproc_warn_flag in '' yes
5463 do
5464 # Use a header file that comes with gcc, so configuring glibc
5465 # with a fresh cross-compiler works.
5466 # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
5467 # <limits.h> exists even on freestanding compilers.
5468 # On the NeXT, cc -E runs the code through the compiler's parser,
5469 # not just through cpp. "Syntax error" is here to catch this case.
5470 cat >conftest.$ac_ext <<_ACEOF
5471 /* confdefs.h. */
5472 _ACEOF
5473 cat confdefs.h >>conftest.$ac_ext
5474 cat >>conftest.$ac_ext <<_ACEOF
5475 /* end confdefs.h. */
5476 #ifdef __STDC__
5477 # include <limits.h>
5478 #else
5479 # include <assert.h>
5480 #endif
5481 Syntax error
5482 _ACEOF
5483 if { (ac_try="$ac_cpp conftest.$ac_ext"
5484 case "(($ac_try" in
5485 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
5486 *) ac_try_echo=$ac_try;;
5487 esac
5488 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
5489 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
5490 ac_status=$?
5491 grep -v '^ *+' conftest.er1 >conftest.err
5492 rm -f conftest.er1
5493 cat conftest.err >&5
5494 echo "$as_me:$LINENO: \$? = $ac_status" >&5
5495 (exit $ac_status); } >/dev/null && {
5496 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
5497 test ! -s conftest.err
5498 }; then
5499 :
5500 else
5501 echo "$as_me: failed program was:" >&5
5502 sed 's/^/| /' conftest.$ac_ext >&5
5503
5504 # Broken: fails on valid input.
5505 continue
5506 fi
5507
5508 rm -f conftest.err conftest.$ac_ext
5509
5510 # OK, works on sane cases. Now check whether nonexistent headers
5511 # can be detected and how.
5512 cat >conftest.$ac_ext <<_ACEOF
5513 /* confdefs.h. */
5514 _ACEOF
5515 cat confdefs.h >>conftest.$ac_ext
5516 cat >>conftest.$ac_ext <<_ACEOF
5517 /* end confdefs.h. */
5518 #include <ac_nonexistent.h>
5519 _ACEOF
5520 if { (ac_try="$ac_cpp conftest.$ac_ext"
5521 case "(($ac_try" in
5522 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
5523 *) ac_try_echo=$ac_try;;
5524 esac
5525 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
5526 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
5527 ac_status=$?
5528 grep -v '^ *+' conftest.er1 >conftest.err
5529 rm -f conftest.er1
5530 cat conftest.err >&5
5531 echo "$as_me:$LINENO: \$? = $ac_status" >&5
5532 (exit $ac_status); } >/dev/null && {
5533 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
5534 test ! -s conftest.err
5535 }; then
5536 # Broken: success on invalid input.
5537 continue
5538 else
5539 echo "$as_me: failed program was:" >&5
5540 sed 's/^/| /' conftest.$ac_ext >&5
5541
5542 # Passes both tests.
5543 ac_preproc_ok=:
5544 break
5545 fi
5546
5547 rm -f conftest.err conftest.$ac_ext
5548
5549 done
5550 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
5551 rm -f conftest.err conftest.$ac_ext
5552 if $ac_preproc_ok; then
5553 break
5554 fi
5555
5556 done
5557 ac_cv_prog_CPP=$CPP
5558
5559 fi
5560 CPP=$ac_cv_prog_CPP
5561 else
5562 ac_cv_prog_CPP=$CPP
5563 fi
5564 { echo "$as_me:$LINENO: result: $CPP" >&5
5565 echo "${ECHO_T}$CPP" >&6; }
5566 ac_preproc_ok=false
5567 for ac_c_preproc_warn_flag in '' yes
5568 do
5569 # Use a header file that comes with gcc, so configuring glibc
5570 # with a fresh cross-compiler works.
5571 # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
5572 # <limits.h> exists even on freestanding compilers.
5573 # On the NeXT, cc -E runs the code through the compiler's parser,
5574 # not just through cpp. "Syntax error" is here to catch this case.
5575 cat >conftest.$ac_ext <<_ACEOF
5576 /* confdefs.h. */
5577 _ACEOF
5578 cat confdefs.h >>conftest.$ac_ext
5579 cat >>conftest.$ac_ext <<_ACEOF
5580 /* end confdefs.h. */
5581 #ifdef __STDC__
5582 # include <limits.h>
5583 #else
5584 # include <assert.h>
5585 #endif
5586 Syntax error
5587 _ACEOF
5588 if { (ac_try="$ac_cpp conftest.$ac_ext"
5589 case "(($ac_try" in
5590 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
5591 *) ac_try_echo=$ac_try;;
5592 esac
5593 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
5594 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
5595 ac_status=$?
5596 grep -v '^ *+' conftest.er1 >conftest.err
5597 rm -f conftest.er1
5598 cat conftest.err >&5
5599 echo "$as_me:$LINENO: \$? = $ac_status" >&5
5600 (exit $ac_status); } >/dev/null && {
5601 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
5602 test ! -s conftest.err
5603 }; then
5604 :
5605 else
5606 echo "$as_me: failed program was:" >&5
5607 sed 's/^/| /' conftest.$ac_ext >&5
5608
5609 # Broken: fails on valid input.
5610 continue
5611 fi
5612
5613 rm -f conftest.err conftest.$ac_ext
5614
5615 # OK, works on sane cases. Now check whether nonexistent headers
5616 # can be detected and how.
5617 cat >conftest.$ac_ext <<_ACEOF
5618 /* confdefs.h. */
5619 _ACEOF
5620 cat confdefs.h >>conftest.$ac_ext
5621 cat >>conftest.$ac_ext <<_ACEOF
5622 /* end confdefs.h. */
5623 #include <ac_nonexistent.h>
5624 _ACEOF
5625 if { (ac_try="$ac_cpp conftest.$ac_ext"
5626 case "(($ac_try" in
5627 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
5628 *) ac_try_echo=$ac_try;;
5629 esac
5630 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
5631 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
5632 ac_status=$?
5633 grep -v '^ *+' conftest.er1 >conftest.err
5634 rm -f conftest.er1
5635 cat conftest.err >&5
5636 echo "$as_me:$LINENO: \$? = $ac_status" >&5
5637 (exit $ac_status); } >/dev/null && {
5638 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
5639 test ! -s conftest.err
5640 }; then
5641 # Broken: success on invalid input.
5642 continue
5643 else
5644 echo "$as_me: failed program was:" >&5
5645 sed 's/^/| /' conftest.$ac_ext >&5
5646
5647 # Passes both tests.
5648 ac_preproc_ok=:
5649 break
5650 fi
5651
5652 rm -f conftest.err conftest.$ac_ext
5653
5654 done
5655 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
5656 rm -f conftest.err conftest.$ac_ext
5657 if $ac_preproc_ok; then
5658 :
5659 else
5660 { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
5661 See \`config.log' for more details." >&5
5662 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
5663 See \`config.log' for more details." >&2;}
5664 { (exit 1); exit 1; }; }
5665 fi
5666
5667 ac_ext=c
5668 ac_cpp='$CPP $CPPFLAGS'
5669 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
5670 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
5671 ac_compiler_gnu=$ac_cv_c_compiler_gnu
5672
5673
5674 { echo "$as_me:$LINENO: checking for ANSI C header files" >&5
5675 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }
5676 if test "${ac_cv_header_stdc+set}" = set; then
5677 echo $ECHO_N "(cached) $ECHO_C" >&6
5678 else
5679 cat >conftest.$ac_ext <<_ACEOF
5680 /* confdefs.h. */
5681 _ACEOF
5682 cat confdefs.h >>conftest.$ac_ext
5683 cat >>conftest.$ac_ext <<_ACEOF
5684 /* end confdefs.h. */
5685 #include <stdlib.h>
5686 #include <stdarg.h>
5687 #include <string.h>
5688 #include <float.h>
5689
5690 int
5691 main ()
5692 {
5693
5694 ;
5695 return 0;
5696 }
5697 _ACEOF
5698 rm -f conftest.$ac_objext
5699 if { (ac_try="$ac_compile"
5700 case "(($ac_try" in
5701 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
5702 *) ac_try_echo=$ac_try;;
5703 esac
5704 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
5705 (eval "$ac_compile") 2>conftest.er1
5706 ac_status=$?
5707 grep -v '^ *+' conftest.er1 >conftest.err
5708 rm -f conftest.er1
5709 cat conftest.err >&5
5710 echo "$as_me:$LINENO: \$? = $ac_status" >&5
5711 (exit $ac_status); } && {
5712 test -z "$ac_c_werror_flag" ||
5713 test ! -s conftest.err
5714 } && test -s conftest.$ac_objext; then
5715 ac_cv_header_stdc=yes
5716 else
5717 echo "$as_me: failed program was:" >&5
5718 sed 's/^/| /' conftest.$ac_ext >&5
5719
5720 ac_cv_header_stdc=no
5721 fi
5722
5723 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
5724
5725 if test $ac_cv_header_stdc = yes; then
5726 # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
5727 cat >conftest.$ac_ext <<_ACEOF
5728 /* confdefs.h. */
5729 _ACEOF
5730 cat confdefs.h >>conftest.$ac_ext
5731 cat >>conftest.$ac_ext <<_ACEOF
5732 /* end confdefs.h. */
5733 #include <string.h>
5734
5735 _ACEOF
5736 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
5737 $EGREP "memchr" >/dev/null 2>&1; then
5738 :
5739 else
5740 ac_cv_header_stdc=no
5741 fi
5742 rm -f conftest*
5743
5744 fi
5745
5746 if test $ac_cv_header_stdc = yes; then
5747 # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
5748 cat >conftest.$ac_ext <<_ACEOF
5749 /* confdefs.h. */
5750 _ACEOF
5751 cat confdefs.h >>conftest.$ac_ext
5752 cat >>conftest.$ac_ext <<_ACEOF
5753 /* end confdefs.h. */
5754 #include <stdlib.h>
5755
5756 _ACEOF
5757 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
5758 $EGREP "free" >/dev/null 2>&1; then
5759 :
5760 else
5761 ac_cv_header_stdc=no
5762 fi
5763 rm -f conftest*
5764
5765 fi
5766
5767 if test $ac_cv_header_stdc = yes; then
5768 # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
5769 if test "$cross_compiling" = yes; then
5770 :
5771 else
5772 cat >conftest.$ac_ext <<_ACEOF
5773 /* confdefs.h. */
5774 _ACEOF
5775 cat confdefs.h >>conftest.$ac_ext
5776 cat >>conftest.$ac_ext <<_ACEOF
5777 /* end confdefs.h. */
5778 #include <ctype.h>
5779 #include <stdlib.h>
5780 #if ((' ' & 0x0FF) == 0x020)
5781 # define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
5782 # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
5783 #else
5784 # define ISLOWER(c) \
5785 (('a' <= (c) && (c) <= 'i') \
5786 || ('j' <= (c) && (c) <= 'r') \
5787 || ('s' <= (c) && (c) <= 'z'))
5788 # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
5789 #endif
5790
5791 #define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
5792 int
5793 main ()
5794 {
5795 int i;
5796 for (i = 0; i < 256; i++)
5797 if (XOR (islower (i), ISLOWER (i))
5798 || toupper (i) != TOUPPER (i))
5799 return 2;
5800 return 0;
5801 }
5802 _ACEOF
5803 rm -f conftest$ac_exeext
5804 if { (ac_try="$ac_link"
5805 case "(($ac_try" in
5806 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
5807 *) ac_try_echo=$ac_try;;
5808 esac
5809 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
5810 (eval "$ac_link") 2>&5
5811 ac_status=$?
5812 echo "$as_me:$LINENO: \$? = $ac_status" >&5
5813 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
5814 { (case "(($ac_try" in
5815 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
5816 *) ac_try_echo=$ac_try;;
5817 esac
5818 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
5819 (eval "$ac_try") 2>&5
5820 ac_status=$?
5821 echo "$as_me:$LINENO: \$? = $ac_status" >&5
5822 (exit $ac_status); }; }; then
5823 :
5824 else
5825 echo "$as_me: program exited with status $ac_status" >&5
5826 echo "$as_me: failed program was:" >&5
5827 sed 's/^/| /' conftest.$ac_ext >&5
5828
5829 ( exit $ac_status )
5830 ac_cv_header_stdc=no
5831 fi
5832 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
5833 fi
5834
5835
5836 fi
5837 fi
5838 { echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
5839 echo "${ECHO_T}$ac_cv_header_stdc" >&6; }
5840 if test $ac_cv_header_stdc = yes; then
5841
5842 cat >>confdefs.h <<\_ACEOF
5843 #define STDC_HEADERS 1
5844 _ACEOF
5845
5846 fi
5847
5848 # On IRIX 5.3, sys/types and inttypes.h are conflicting.
5849
5850
5851
5852
5853
5854
5855
5856
5857
5858 for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
5859 inttypes.h stdint.h unistd.h
5860 do
5861 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
5862 { echo "$as_me:$LINENO: checking for $ac_header" >&5
5863 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
5864 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
5865 echo $ECHO_N "(cached) $ECHO_C" >&6
5866 else
5867 cat >conftest.$ac_ext <<_ACEOF
5868 /* confdefs.h. */
5869 _ACEOF
5870 cat confdefs.h >>conftest.$ac_ext
5871 cat >>conftest.$ac_ext <<_ACEOF
5872 /* end confdefs.h. */
5873 $ac_includes_default
5874
5875 #include <$ac_header>
5876 _ACEOF
5877 rm -f conftest.$ac_objext
5878 if { (ac_try="$ac_compile"
5879 case "(($ac_try" in
5880 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
5881 *) ac_try_echo=$ac_try;;
5882 esac
5883 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
5884 (eval "$ac_compile") 2>conftest.er1
5885 ac_status=$?
5886 grep -v '^ *+' conftest.er1 >conftest.err
5887 rm -f conftest.er1
5888 cat conftest.err >&5
5889 echo "$as_me:$LINENO: \$? = $ac_status" >&5
5890 (exit $ac_status); } && {
5891 test -z "$ac_c_werror_flag" ||
5892 test ! -s conftest.err
5893 } && test -s conftest.$ac_objext; then
5894 eval "$as_ac_Header=yes"
5895 else
5896 echo "$as_me: failed program was:" >&5
5897 sed 's/^/| /' conftest.$ac_ext >&5
5898
5899 eval "$as_ac_Header=no"
5900 fi
5901
5902 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
5903 fi
5904 ac_res=`eval echo '${'$as_ac_Header'}'`
5905 { echo "$as_me:$LINENO: result: $ac_res" >&5
5906 echo "${ECHO_T}$ac_res" >&6; }
5907 if test `eval echo '${'$as_ac_Header'}'` = yes; then
5908 cat >>confdefs.h <<_ACEOF
5909 #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
5910 _ACEOF
5911
5912 fi
5913
5914 done
5915
5916
5917
5918 for ac_header in dlfcn.h
5919 do
5920 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
5921 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
5922 { echo "$as_me:$LINENO: checking for $ac_header" >&5
5923 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
5924 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
5925 echo $ECHO_N "(cached) $ECHO_C" >&6
5926 fi
5927 ac_res=`eval echo '${'$as_ac_Header'}'`
5928 { echo "$as_me:$LINENO: result: $ac_res" >&5
5929 echo "${ECHO_T}$ac_res" >&6; }
5930 else
5931 # Is the header compilable?
5932 { echo "$as_me:$LINENO: checking $ac_header usability" >&5
5933 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
5934 cat >conftest.$ac_ext <<_ACEOF
5935 /* confdefs.h. */
5936 _ACEOF
5937 cat confdefs.h >>conftest.$ac_ext
5938 cat >>conftest.$ac_ext <<_ACEOF
5939 /* end confdefs.h. */
5940 $ac_includes_default
5941 #include <$ac_header>
5942 _ACEOF
5943 rm -f conftest.$ac_objext
5944 if { (ac_try="$ac_compile"
5945 case "(($ac_try" in
5946 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
5947 *) ac_try_echo=$ac_try;;
5948 esac
5949 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
5950 (eval "$ac_compile") 2>conftest.er1
5951 ac_status=$?
5952 grep -v '^ *+' conftest.er1 >conftest.err
5953 rm -f conftest.er1
5954 cat conftest.err >&5
5955 echo "$as_me:$LINENO: \$? = $ac_status" >&5
5956 (exit $ac_status); } && {
5957 test -z "$ac_c_werror_flag" ||
5958 test ! -s conftest.err
5959 } && test -s conftest.$ac_objext; then
5960 ac_header_compiler=yes
5961 else
5962 echo "$as_me: failed program was:" >&5
5963 sed 's/^/| /' conftest.$ac_ext >&5
5964
5965 ac_header_compiler=no
5966 fi
5967
5968 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
5969 { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
5970 echo "${ECHO_T}$ac_header_compiler" >&6; }
5971
5972 # Is the header present?
5973 { echo "$as_me:$LINENO: checking $ac_header presence" >&5
5974 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
5975 cat >conftest.$ac_ext <<_ACEOF
5976 /* confdefs.h. */
5977 _ACEOF
5978 cat confdefs.h >>conftest.$ac_ext
5979 cat >>conftest.$ac_ext <<_ACEOF
5980 /* end confdefs.h. */
5981 #include <$ac_header>
5982 _ACEOF
5983 if { (ac_try="$ac_cpp conftest.$ac_ext"
5984 case "(($ac_try" in
5985 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
5986 *) ac_try_echo=$ac_try;;
5987 esac
5988 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
5989 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
5990 ac_status=$?
5991 grep -v '^ *+' conftest.er1 >conftest.err
5992 rm -f conftest.er1
5993 cat conftest.err >&5
5994 echo "$as_me:$LINENO: \$? = $ac_status" >&5
5995 (exit $ac_status); } >/dev/null && {
5996 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
5997 test ! -s conftest.err
5998 }; then
5999 ac_header_preproc=yes
6000 else
6001 echo "$as_me: failed program was:" >&5
6002 sed 's/^/| /' conftest.$ac_ext >&5
6003
6004 ac_header_preproc=no
6005 fi
6006
6007 rm -f conftest.err conftest.$ac_ext
6008 { echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
6009 echo "${ECHO_T}$ac_header_preproc" >&6; }
6010
6011 # So? What about this header?
6012 case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
6013 yes:no: )
6014 { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
6015 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
6016 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
6017 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
6018 ac_header_preproc=yes
6019 ;;
6020 no:yes:* )
6021 { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
6022 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
6023 { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
6024 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
6025 { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
6026 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
6027 { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
6028 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
6029 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
6030 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
6031 { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
6032 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
6033 ( cat <<\_ASBOX
6034 ## ------------------------------------ ##
6035 ## Report this to http://bugs.libgd.org ##
6036 ## ------------------------------------ ##
6037 _ASBOX
6038 ) | sed "s/^/$as_me: WARNING: /" >&2
6039 ;;
6040 esac
6041 { echo "$as_me:$LINENO: checking for $ac_header" >&5
6042 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
6043 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
6044 echo $ECHO_N "(cached) $ECHO_C" >&6
6045 else
6046 eval "$as_ac_Header=\$ac_header_preproc"
6047 fi
6048 ac_res=`eval echo '${'$as_ac_Header'}'`
6049 { echo "$as_me:$LINENO: result: $ac_res" >&5
6050 echo "${ECHO_T}$ac_res" >&6; }
6051
6052 fi
6053 if test `eval echo '${'$as_ac_Header'}'` = yes; then
6054 cat >>confdefs.h <<_ACEOF
6055 #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
6056 _ACEOF
6057
6058 fi
6059
6060 done
6061
6062 ac_ext=cpp
6063 ac_cpp='$CXXCPP $CPPFLAGS'
6064 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
6065 ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
6066 ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
6067 if test -z "$CXX"; then
6068 if test -n "$CCC"; then
6069 CXX=$CCC
6070 else
6071 if test -n "$ac_tool_prefix"; then
6072 for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
6073 do
6074 # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
6075 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
6076 { echo "$as_me:$LINENO: checking for $ac_word" >&5
6077 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
6078 if test "${ac_cv_prog_CXX+set}" = set; then
6079 echo $ECHO_N "(cached) $ECHO_C" >&6
6080 else
6081 if test -n "$CXX"; then
6082 ac_cv_prog_CXX="$CXX" # Let the user override the test.
6083 else
6084 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6085 for as_dir in $PATH
6086 do
6087 IFS=$as_save_IFS
6088 test -z "$as_dir" && as_dir=.
6089 for ac_exec_ext in '' $ac_executable_extensions; do
6090 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
6091 ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
6092 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
6093 break 2
6094 fi
6095 done
6096 done
6097 IFS=$as_save_IFS
6098
6099 fi
6100 fi
6101 CXX=$ac_cv_prog_CXX
6102 if test -n "$CXX"; then
6103 { echo "$as_me:$LINENO: result: $CXX" >&5
6104 echo "${ECHO_T}$CXX" >&6; }
6105 else
6106 { echo "$as_me:$LINENO: result: no" >&5
6107 echo "${ECHO_T}no" >&6; }
6108 fi
6109
6110
6111 test -n "$CXX" && break
6112 done
6113 fi
6114 if test -z "$CXX"; then
6115 ac_ct_CXX=$CXX
6116 for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
6117 do
6118 # Extract the first word of "$ac_prog", so it can be a program name with args.
6119 set dummy $ac_prog; ac_word=$2
6120 { echo "$as_me:$LINENO: checking for $ac_word" >&5
6121 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
6122 if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
6123 echo $ECHO_N "(cached) $ECHO_C" >&6
6124 else
6125 if test -n "$ac_ct_CXX"; then
6126 ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
6127 else
6128 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6129 for as_dir in $PATH
6130 do
6131 IFS=$as_save_IFS
6132 test -z "$as_dir" && as_dir=.
6133 for ac_exec_ext in '' $ac_executable_extensions; do
6134 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
6135 ac_cv_prog_ac_ct_CXX="$ac_prog"
6136 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
6137 break 2
6138 fi
6139 done
6140 done
6141 IFS=$as_save_IFS
6142
6143 fi
6144 fi
6145 ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
6146 if test -n "$ac_ct_CXX"; then
6147 { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
6148 echo "${ECHO_T}$ac_ct_CXX" >&6; }
6149 else
6150 { echo "$as_me:$LINENO: result: no" >&5
6151 echo "${ECHO_T}no" >&6; }
6152 fi
6153
6154
6155 test -n "$ac_ct_CXX" && break
6156 done
6157
6158 if test "x$ac_ct_CXX" = x; then
6159 CXX="g++"
6160 else
6161 case $cross_compiling:$ac_tool_warned in
6162 yes:)
6163 { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
6164 whose name does not start with the host triplet. If you think this
6165 configuration is useful to you, please write to autoconf@gnu.org." >&5
6166 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
6167 whose name does not start with the host triplet. If you think this
6168 configuration is useful to you, please write to autoconf@gnu.org." >&2;}
6169 ac_tool_warned=yes ;;
6170 esac
6171 CXX=$ac_ct_CXX
6172 fi
6173 fi
6174
6175 fi
6176 fi
6177 # Provide some information about the compiler.
6178 echo "$as_me:$LINENO: checking for C++ compiler version" >&5
6179 ac_compiler=`set X $ac_compile; echo $2`
6180 { (ac_try="$ac_compiler --version >&5"
6181 case "(($ac_try" in
6182 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6183 *) ac_try_echo=$ac_try;;
6184 esac
6185 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6186 (eval "$ac_compiler --version >&5") 2>&5
6187 ac_status=$?
6188 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6189 (exit $ac_status); }
6190 { (ac_try="$ac_compiler -v >&5"
6191 case "(($ac_try" in
6192 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6193 *) ac_try_echo=$ac_try;;
6194 esac
6195 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6196 (eval "$ac_compiler -v >&5") 2>&5
6197 ac_status=$?
6198 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6199 (exit $ac_status); }
6200 { (ac_try="$ac_compiler -V >&5"
6201 case "(($ac_try" in
6202 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6203 *) ac_try_echo=$ac_try;;
6204 esac
6205 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6206 (eval "$ac_compiler -V >&5") 2>&5
6207 ac_status=$?
6208 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6209 (exit $ac_status); }
6210
6211 { echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
6212 echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; }
6213 if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
6214 echo $ECHO_N "(cached) $ECHO_C" >&6
6215 else
6216 cat >conftest.$ac_ext <<_ACEOF
6217 /* confdefs.h. */
6218 _ACEOF
6219 cat confdefs.h >>conftest.$ac_ext
6220 cat >>conftest.$ac_ext <<_ACEOF
6221 /* end confdefs.h. */
6222
6223 int
6224 main ()
6225 {
6226 #ifndef __GNUC__
6227 choke me
6228 #endif
6229
6230 ;
6231 return 0;
6232 }
6233 _ACEOF
6234 rm -f conftest.$ac_objext
6235 if { (ac_try="$ac_compile"
6236 case "(($ac_try" in
6237 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6238 *) ac_try_echo=$ac_try;;
6239 esac
6240 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6241 (eval "$ac_compile") 2>conftest.er1
6242 ac_status=$?
6243 grep -v '^ *+' conftest.er1 >conftest.err
6244 rm -f conftest.er1
6245 cat conftest.err >&5
6246 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6247 (exit $ac_status); } && {
6248 test -z "$ac_cxx_werror_flag" ||
6249 test ! -s conftest.err
6250 } && test -s conftest.$ac_objext; then
6251 ac_compiler_gnu=yes
6252 else
6253 echo "$as_me: failed program was:" >&5
6254 sed 's/^/| /' conftest.$ac_ext >&5
6255
6256 ac_compiler_gnu=no
6257 fi
6258
6259 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6260 ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
6261
6262 fi
6263 { echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
6264 echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; }
6265 GXX=`test $ac_compiler_gnu = yes && echo yes`
6266 ac_test_CXXFLAGS=${CXXFLAGS+set}
6267 ac_save_CXXFLAGS=$CXXFLAGS
6268 { echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
6269 echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; }
6270 if test "${ac_cv_prog_cxx_g+set}" = set; then
6271 echo $ECHO_N "(cached) $ECHO_C" >&6
6272 else
6273 ac_save_cxx_werror_flag=$ac_cxx_werror_flag
6274 ac_cxx_werror_flag=yes
6275 ac_cv_prog_cxx_g=no
6276 CXXFLAGS="-g"
6277 cat >conftest.$ac_ext <<_ACEOF
6278 /* confdefs.h. */
6279 _ACEOF
6280 cat confdefs.h >>conftest.$ac_ext
6281 cat >>conftest.$ac_ext <<_ACEOF
6282 /* end confdefs.h. */
6283
6284 int
6285 main ()
6286 {
6287
6288 ;
6289 return 0;
6290 }
6291 _ACEOF
6292 rm -f conftest.$ac_objext
6293 if { (ac_try="$ac_compile"
6294 case "(($ac_try" in
6295 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6296 *) ac_try_echo=$ac_try;;
6297 esac
6298 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6299 (eval "$ac_compile") 2>conftest.er1
6300 ac_status=$?
6301 grep -v '^ *+' conftest.er1 >conftest.err
6302 rm -f conftest.er1
6303 cat conftest.err >&5
6304 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6305 (exit $ac_status); } && {
6306 test -z "$ac_cxx_werror_flag" ||
6307 test ! -s conftest.err
6308 } && test -s conftest.$ac_objext; then
6309 ac_cv_prog_cxx_g=yes
6310 else
6311 echo "$as_me: failed program was:" >&5
6312 sed 's/^/| /' conftest.$ac_ext >&5
6313
6314 CXXFLAGS=""
6315 cat >conftest.$ac_ext <<_ACEOF
6316 /* confdefs.h. */
6317 _ACEOF
6318 cat confdefs.h >>conftest.$ac_ext
6319 cat >>conftest.$ac_ext <<_ACEOF
6320 /* end confdefs.h. */
6321
6322 int
6323 main ()
6324 {
6325
6326 ;
6327 return 0;
6328 }
6329 _ACEOF
6330 rm -f conftest.$ac_objext
6331 if { (ac_try="$ac_compile"
6332 case "(($ac_try" in
6333 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6334 *) ac_try_echo=$ac_try;;
6335 esac
6336 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6337 (eval "$ac_compile") 2>conftest.er1
6338 ac_status=$?
6339 grep -v '^ *+' conftest.er1 >conftest.err
6340 rm -f conftest.er1
6341 cat conftest.err >&5
6342 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6343 (exit $ac_status); } && {
6344 test -z "$ac_cxx_werror_flag" ||
6345 test ! -s conftest.err
6346 } && test -s conftest.$ac_objext; then
6347 :
6348 else
6349 echo "$as_me: failed program was:" >&5
6350 sed 's/^/| /' conftest.$ac_ext >&5
6351
6352 ac_cxx_werror_flag=$ac_save_cxx_werror_flag
6353 CXXFLAGS="-g"
6354 cat >conftest.$ac_ext <<_ACEOF
6355 /* confdefs.h. */
6356 _ACEOF
6357 cat confdefs.h >>conftest.$ac_ext
6358 cat >>conftest.$ac_ext <<_ACEOF
6359 /* end confdefs.h. */
6360
6361 int
6362 main ()
6363 {
6364
6365 ;
6366 return 0;
6367 }
6368 _ACEOF
6369 rm -f conftest.$ac_objext
6370 if { (ac_try="$ac_compile"
6371 case "(($ac_try" in
6372 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6373 *) ac_try_echo=$ac_try;;
6374 esac
6375 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6376 (eval "$ac_compile") 2>conftest.er1
6377 ac_status=$?
6378 grep -v '^ *+' conftest.er1 >conftest.err
6379 rm -f conftest.er1
6380 cat conftest.err >&5
6381 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6382 (exit $ac_status); } && {
6383 test -z "$ac_cxx_werror_flag" ||
6384 test ! -s conftest.err
6385 } && test -s conftest.$ac_objext; then
6386 ac_cv_prog_cxx_g=yes
6387 else
6388 echo "$as_me: failed program was:" >&5
6389 sed 's/^/| /' conftest.$ac_ext >&5
6390
6391
6392 fi
6393
6394 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6395 fi
6396
6397 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6398 fi
6399
6400 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6401 ac_cxx_werror_flag=$ac_save_cxx_werror_flag
6402 fi
6403 { echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
6404 echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; }
6405 if test "$ac_test_CXXFLAGS" = set; then
6406 CXXFLAGS=$ac_save_CXXFLAGS
6407 elif test $ac_cv_prog_cxx_g = yes; then
6408 if test "$GXX" = yes; then
6409 CXXFLAGS="-g -O2"
6410 else
6411 CXXFLAGS="-g"
6412 fi
6413 else
6414 if test "$GXX" = yes; then
6415 CXXFLAGS="-O2"
6416 else
6417 CXXFLAGS=
6418 fi
6419 fi
6420 ac_ext=cpp
6421 ac_cpp='$CXXCPP $CPPFLAGS'
6422 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
6423 ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
6424 ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
6425
6426 depcc="$CXX" am_compiler_list=
6427
6428 { echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
6429 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
6430 if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
6431 echo $ECHO_N "(cached) $ECHO_C" >&6
6432 else
6433 if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
6434 # We make a subdir and do the tests there. Otherwise we can end up
6435 # making bogus files that we don't know about and never remove. For
6436 # instance it was reported that on HP-UX the gcc test will end up
6437 # making a dummy file named `D' -- because `-MD' means `put the output
6438 # in D'.
6439 mkdir conftest.dir
6440 # Copy depcomp to subdir because otherwise we won't find it if we're
6441 # using a relative directory.
6442 cp "$am_depcomp" conftest.dir
6443 cd conftest.dir
6444 # We will build objects and dependencies in a subdirectory because
6445 # it helps to detect inapplicable dependency modes. For instance
6446 # both Tru64's cc and ICC support -MD to output dependencies as a
6447 # side effect of compilation, but ICC will put the dependencies in
6448 # the current directory while Tru64 will put them in the object
6449 # directory.
6450 mkdir sub
6451
6452 am_cv_CXX_dependencies_compiler_type=none
6453 if test "$am_compiler_list" = ""; then
6454 am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
6455 fi
6456 for depmode in $am_compiler_list; do
6457 # Setup a source with many dependencies, because some compilers
6458 # like to wrap large dependency lists on column 80 (with \), and
6459 # we should not choose a depcomp mode which is confused by this.
6460 #
6461 # We need to recreate these files for each test, as the compiler may
6462 # overwrite some of them when testing with obscure command lines.
6463 # This happens at least with the AIX C compiler.
6464 : > sub/conftest.c
6465 for i in 1 2 3 4 5 6; do
6466 echo '#include "conftst'$i'.h"' >> sub/conftest.c
6467 # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
6468 # Solaris 8's {/usr,}/bin/sh.
6469 touch sub/conftst$i.h
6470 done
6471 echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
6472
6473 case $depmode in
6474 nosideeffect)
6475 # after this tag, mechanisms are not by side-effect, so they'll
6476 # only be used when explicitly requested
6477 if test "x$enable_dependency_tracking" = xyes; then
6478 continue
6479 else
6480 break
6481 fi
6482 ;;
6483 none) break ;;
6484 esac
6485 # We check with `-c' and `-o' for the sake of the "dashmstdout"
6486 # mode. It turns out that the SunPro C++ compiler does not properly
6487 # handle `-M -o', and we need to detect this.
6488 if depmode=$depmode \
6489 source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
6490 depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
6491 $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
6492 >/dev/null 2>conftest.err &&
6493 grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
6494 grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
6495 ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
6496 # icc doesn't choke on unknown options, it will just issue warnings
6497 # or remarks (even with -Werror). So we grep stderr for any message
6498 # that says an option was ignored or not supported.
6499 # When given -MP, icc 7.0 and 7.1 complain thusly:
6500 # icc: Command line warning: ignoring option '-M'; no argument required
6501 # The diagnosis changed in icc 8.0:
6502 # icc: Command line remark: option '-MP' not supported
6503 if (grep 'ignoring option' conftest.err ||
6504 grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
6505 am_cv_CXX_dependencies_compiler_type=$depmode
6506 break
6507 fi
6508 fi
6509 done
6510
6511 cd ..
6512 rm -rf conftest.dir
6513 else
6514 am_cv_CXX_dependencies_compiler_type=none
6515 fi
6516
6517 fi
6518 { echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
6519 echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; }
6520 CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
6521
6522
6523
6524 if
6525 test "x$enable_dependency_tracking" != xno \
6526 && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
6527 am__fastdepCXX_TRUE=
6528 am__fastdepCXX_FALSE='#'
6529 else
6530 am__fastdepCXX_TRUE='#'
6531 am__fastdepCXX_FALSE=
6532 fi
6533
6534
6535
6536
6537 if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
6538 ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
6539 (test "X$CXX" != "Xg++"))) ; then
6540 ac_ext=cpp
6541 ac_cpp='$CXXCPP $CPPFLAGS'
6542 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
6543 ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
6544 ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
6545 { echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
6546 echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6; }
6547 if test -z "$CXXCPP"; then
6548 if test "${ac_cv_prog_CXXCPP+set}" = set; then
6549 echo $ECHO_N "(cached) $ECHO_C" >&6
6550 else
6551 # Double quotes because CXXCPP needs to be expanded
6552 for CXXCPP in "$CXX -E" "/lib/cpp"
6553 do
6554 ac_preproc_ok=false
6555 for ac_cxx_preproc_warn_flag in '' yes
6556 do
6557 # Use a header file that comes with gcc, so configuring glibc
6558 # with a fresh cross-compiler works.
6559 # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
6560 # <limits.h> exists even on freestanding compilers.
6561 # On the NeXT, cc -E runs the code through the compiler's parser,
6562 # not just through cpp. "Syntax error" is here to catch this case.
6563 cat >conftest.$ac_ext <<_ACEOF
6564 /* confdefs.h. */
6565 _ACEOF
6566 cat confdefs.h >>conftest.$ac_ext
6567 cat >>conftest.$ac_ext <<_ACEOF
6568 /* end confdefs.h. */
6569 #ifdef __STDC__
6570 # include <limits.h>
6571 #else
6572 # include <assert.h>
6573 #endif
6574 Syntax error
6575 _ACEOF
6576 if { (ac_try="$ac_cpp conftest.$ac_ext"
6577 case "(($ac_try" in
6578 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6579 *) ac_try_echo=$ac_try;;
6580 esac
6581 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6582 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
6583 ac_status=$?
6584 grep -v '^ *+' conftest.er1 >conftest.err
6585 rm -f conftest.er1
6586 cat conftest.err >&5
6587 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6588 (exit $ac_status); } >/dev/null && {
6589 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
6590 test ! -s conftest.err
6591 }; then
6592 :
6593 else
6594 echo "$as_me: failed program was:" >&5
6595 sed 's/^/| /' conftest.$ac_ext >&5
6596
6597 # Broken: fails on valid input.
6598 continue
6599 fi
6600
6601 rm -f conftest.err conftest.$ac_ext
6602
6603 # OK, works on sane cases. Now check whether nonexistent headers
6604 # can be detected and how.
6605 cat >conftest.$ac_ext <<_ACEOF
6606 /* confdefs.h. */
6607 _ACEOF
6608 cat confdefs.h >>conftest.$ac_ext
6609 cat >>conftest.$ac_ext <<_ACEOF
6610 /* end confdefs.h. */
6611 #include <ac_nonexistent.h>
6612 _ACEOF
6613 if { (ac_try="$ac_cpp conftest.$ac_ext"
6614 case "(($ac_try" in
6615 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6616 *) ac_try_echo=$ac_try;;
6617 esac
6618 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6619 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
6620 ac_status=$?
6621 grep -v '^ *+' conftest.er1 >conftest.err
6622 rm -f conftest.er1
6623 cat conftest.err >&5
6624 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6625 (exit $ac_status); } >/dev/null && {
6626 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
6627 test ! -s conftest.err
6628 }; then
6629 # Broken: success on invalid input.
6630 continue
6631 else
6632 echo "$as_me: failed program was:" >&5
6633 sed 's/^/| /' conftest.$ac_ext >&5
6634
6635 # Passes both tests.
6636 ac_preproc_ok=:
6637 break
6638 fi
6639
6640 rm -f conftest.err conftest.$ac_ext
6641
6642 done
6643 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
6644 rm -f conftest.err conftest.$ac_ext
6645 if $ac_preproc_ok; then
6646 break
6647 fi
6648
6649 done
6650 ac_cv_prog_CXXCPP=$CXXCPP
6651
6652 fi
6653 CXXCPP=$ac_cv_prog_CXXCPP
6654 else
6655 ac_cv_prog_CXXCPP=$CXXCPP
6656 fi
6657 { echo "$as_me:$LINENO: result: $CXXCPP" >&5
6658 echo "${ECHO_T}$CXXCPP" >&6; }
6659 ac_preproc_ok=false
6660 for ac_cxx_preproc_warn_flag in '' yes
6661 do
6662 # Use a header file that comes with gcc, so configuring glibc
6663 # with a fresh cross-compiler works.
6664 # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
6665 # <limits.h> exists even on freestanding compilers.
6666 # On the NeXT, cc -E runs the code through the compiler's parser,
6667 # not just through cpp. "Syntax error" is here to catch this case.
6668 cat >conftest.$ac_ext <<_ACEOF
6669 /* confdefs.h. */
6670 _ACEOF
6671 cat confdefs.h >>conftest.$ac_ext
6672 cat >>conftest.$ac_ext <<_ACEOF
6673 /* end confdefs.h. */
6674 #ifdef __STDC__
6675 # include <limits.h>
6676 #else
6677 # include <assert.h>
6678 #endif
6679 Syntax error
6680 _ACEOF
6681 if { (ac_try="$ac_cpp conftest.$ac_ext"
6682 case "(($ac_try" in
6683 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6684 *) ac_try_echo=$ac_try;;
6685 esac
6686 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6687 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
6688 ac_status=$?
6689 grep -v '^ *+' conftest.er1 >conftest.err
6690 rm -f conftest.er1
6691 cat conftest.err >&5
6692 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6693 (exit $ac_status); } >/dev/null && {
6694 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
6695 test ! -s conftest.err
6696 }; then
6697 :
6698 else
6699 echo "$as_me: failed program was:" >&5
6700 sed 's/^/| /' conftest.$ac_ext >&5
6701
6702 # Broken: fails on valid input.
6703 continue
6704 fi
6705
6706 rm -f conftest.err conftest.$ac_ext
6707
6708 # OK, works on sane cases. Now check whether nonexistent headers
6709 # can be detected and how.
6710 cat >conftest.$ac_ext <<_ACEOF
6711 /* confdefs.h. */
6712 _ACEOF
6713 cat confdefs.h >>conftest.$ac_ext
6714 cat >>conftest.$ac_ext <<_ACEOF
6715 /* end confdefs.h. */
6716 #include <ac_nonexistent.h>
6717 _ACEOF
6718 if { (ac_try="$ac_cpp conftest.$ac_ext"
6719 case "(($ac_try" in
6720 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6721 *) ac_try_echo=$ac_try;;
6722 esac
6723 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6724 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
6725 ac_status=$?
6726 grep -v '^ *+' conftest.er1 >conftest.err
6727 rm -f conftest.er1
6728 cat conftest.err >&5
6729 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6730 (exit $ac_status); } >/dev/null && {
6731 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
6732 test ! -s conftest.err
6733 }; then
6734 # Broken: success on invalid input.
6735 continue
6736 else
6737 echo "$as_me: failed program was:" >&5
6738 sed 's/^/| /' conftest.$ac_ext >&5
6739
6740 # Passes both tests.
6741 ac_preproc_ok=:
6742 break
6743 fi
6744
6745 rm -f conftest.err conftest.$ac_ext
6746
6747 done
6748 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
6749 rm -f conftest.err conftest.$ac_ext
6750 if $ac_preproc_ok; then
6751 :
6752 else
6753 { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check
6754 See \`config.log' for more details." >&5
6755 echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check
6756 See \`config.log' for more details." >&2;}
6757 { (exit 1); exit 1; }; }
6758 fi
6759
6760 ac_ext=cpp
6761 ac_cpp='$CXXCPP $CPPFLAGS'
6762 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
6763 ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
6764 ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
6765
6766 fi
6767
6768
6769 ac_ext=f
6770 ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
6771 ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
6772 ac_compiler_gnu=$ac_cv_f77_compiler_gnu
6773 if test -n "$ac_tool_prefix"; then
6774 for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn
6775 do
6776 # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
6777 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
6778 { echo "$as_me:$LINENO: checking for $ac_word" >&5
6779 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
6780 if test "${ac_cv_prog_F77+set}" = set; then
6781 echo $ECHO_N "(cached) $ECHO_C" >&6
6782 else
6783 if test -n "$F77"; then
6784 ac_cv_prog_F77="$F77" # Let the user override the test.
6785 else
6786 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6787 for as_dir in $PATH
6788 do
6789 IFS=$as_save_IFS
6790 test -z "$as_dir" && as_dir=.
6791 for ac_exec_ext in '' $ac_executable_extensions; do
6792 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
6793 ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
6794 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
6795 break 2
6796 fi
6797 done
6798 done
6799 IFS=$as_save_IFS
6800
6801 fi
6802 fi
6803 F77=$ac_cv_prog_F77
6804 if test -n "$F77"; then
6805 { echo "$as_me:$LINENO: result: $F77" >&5
6806 echo "${ECHO_T}$F77" >&6; }
6807 else
6808 { echo "$as_me:$LINENO: result: no" >&5
6809 echo "${ECHO_T}no" >&6; }
6810 fi
6811
6812
6813 test -n "$F77" && break
6814 done
6815 fi
6816 if test -z "$F77"; then
6817 ac_ct_F77=$F77
6818 for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn
6819 do
6820 # Extract the first word of "$ac_prog", so it can be a program name with args.
6821 set dummy $ac_prog; ac_word=$2
6822 { echo "$as_me:$LINENO: checking for $ac_word" >&5
6823 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
6824 if test "${ac_cv_prog_ac_ct_F77+set}" = set; then
6825 echo $ECHO_N "(cached) $ECHO_C" >&6
6826 else
6827 if test -n "$ac_ct_F77"; then
6828 ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test.
6829 else
6830 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
6831 for as_dir in $PATH
6832 do
6833 IFS=$as_save_IFS
6834 test -z "$as_dir" && as_dir=.
6835 for ac_exec_ext in '' $ac_executable_extensions; do
6836 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
6837 ac_cv_prog_ac_ct_F77="$ac_prog"
6838 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
6839 break 2
6840 fi
6841 done
6842 done
6843 IFS=$as_save_IFS
6844
6845 fi
6846 fi
6847 ac_ct_F77=$ac_cv_prog_ac_ct_F77
6848 if test -n "$ac_ct_F77"; then
6849 { echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
6850 echo "${ECHO_T}$ac_ct_F77" >&6; }
6851 else
6852 { echo "$as_me:$LINENO: result: no" >&5
6853 echo "${ECHO_T}no" >&6; }
6854 fi
6855
6856
6857 test -n "$ac_ct_F77" && break
6858 done
6859
6860 if test "x$ac_ct_F77" = x; then
6861 F77=""
6862 else
6863 case $cross_compiling:$ac_tool_warned in
6864 yes:)
6865 { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
6866 whose name does not start with the host triplet. If you think this
6867 configuration is useful to you, please write to autoconf@gnu.org." >&5
6868 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
6869 whose name does not start with the host triplet. If you think this
6870 configuration is useful to you, please write to autoconf@gnu.org." >&2;}
6871 ac_tool_warned=yes ;;
6872 esac
6873 F77=$ac_ct_F77
6874 fi
6875 fi
6876
6877
6878 # Provide some information about the compiler.
6879 echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5
6880 ac_compiler=`set X $ac_compile; echo $2`
6881 { (ac_try="$ac_compiler --version >&5"
6882 case "(($ac_try" in
6883 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6884 *) ac_try_echo=$ac_try;;
6885 esac
6886 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6887 (eval "$ac_compiler --version >&5") 2>&5
6888 ac_status=$?
6889 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6890 (exit $ac_status); }
6891 { (ac_try="$ac_compiler -v >&5"
6892 case "(($ac_try" in
6893 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6894 *) ac_try_echo=$ac_try;;
6895 esac
6896 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6897 (eval "$ac_compiler -v >&5") 2>&5
6898 ac_status=$?
6899 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6900 (exit $ac_status); }
6901 { (ac_try="$ac_compiler -V >&5"
6902 case "(($ac_try" in
6903 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6904 *) ac_try_echo=$ac_try;;
6905 esac
6906 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6907 (eval "$ac_compiler -V >&5") 2>&5
6908 ac_status=$?
6909 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6910 (exit $ac_status); }
6911 rm -f a.out
6912
6913 # If we don't use `.F' as extension, the preprocessor is not run on the
6914 # input file. (Note that this only needs to work for GNU compilers.)
6915 ac_save_ext=$ac_ext
6916 ac_ext=F
6917 { echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
6918 echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6; }
6919 if test "${ac_cv_f77_compiler_gnu+set}" = set; then
6920 echo $ECHO_N "(cached) $ECHO_C" >&6
6921 else
6922 cat >conftest.$ac_ext <<_ACEOF
6923 program main
6924 #ifndef __GNUC__
6925 choke me
6926 #endif
6927
6928 end
6929 _ACEOF
6930 rm -f conftest.$ac_objext
6931 if { (ac_try="$ac_compile"
6932 case "(($ac_try" in
6933 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6934 *) ac_try_echo=$ac_try;;
6935 esac
6936 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6937 (eval "$ac_compile") 2>conftest.er1
6938 ac_status=$?
6939 grep -v '^ *+' conftest.er1 >conftest.err
6940 rm -f conftest.er1
6941 cat conftest.err >&5
6942 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6943 (exit $ac_status); } && {
6944 test -z "$ac_f77_werror_flag" ||
6945 test ! -s conftest.err
6946 } && test -s conftest.$ac_objext; then
6947 ac_compiler_gnu=yes
6948 else
6949 echo "$as_me: failed program was:" >&5
6950 sed 's/^/| /' conftest.$ac_ext >&5
6951
6952 ac_compiler_gnu=no
6953 fi
6954
6955 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6956 ac_cv_f77_compiler_gnu=$ac_compiler_gnu
6957
6958 fi
6959 { echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
6960 echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6; }
6961 ac_ext=$ac_save_ext
6962 ac_test_FFLAGS=${FFLAGS+set}
6963 ac_save_FFLAGS=$FFLAGS
6964 FFLAGS=
6965 { echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
6966 echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6; }
6967 if test "${ac_cv_prog_f77_g+set}" = set; then
6968 echo $ECHO_N "(cached) $ECHO_C" >&6
6969 else
6970 FFLAGS=-g
6971 cat >conftest.$ac_ext <<_ACEOF
6972 program main
6973
6974 end
6975 _ACEOF
6976 rm -f conftest.$ac_objext
6977 if { (ac_try="$ac_compile"
6978 case "(($ac_try" in
6979 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6980 *) ac_try_echo=$ac_try;;
6981 esac
6982 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6983 (eval "$ac_compile") 2>conftest.er1
6984 ac_status=$?
6985 grep -v '^ *+' conftest.er1 >conftest.err
6986 rm -f conftest.er1
6987 cat conftest.err >&5
6988 echo "$as_me:$LINENO: \$? = $ac_status" >&5
6989 (exit $ac_status); } && {
6990 test -z "$ac_f77_werror_flag" ||
6991 test ! -s conftest.err
6992 } && test -s conftest.$ac_objext; then
6993 ac_cv_prog_f77_g=yes
6994 else
6995 echo "$as_me: failed program was:" >&5
6996 sed 's/^/| /' conftest.$ac_ext >&5
6997
6998 ac_cv_prog_f77_g=no
6999 fi
7000
7001 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
7002
7003 fi
7004 { echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
7005 echo "${ECHO_T}$ac_cv_prog_f77_g" >&6; }
7006 if test "$ac_test_FFLAGS" = set; then
7007 FFLAGS=$ac_save_FFLAGS
7008 elif test $ac_cv_prog_f77_g = yes; then
7009 if test "x$ac_cv_f77_compiler_gnu" = xyes; then
7010 FFLAGS="-g -O2"
7011 else
7012 FFLAGS="-g"
7013 fi
7014 else
7015 if test "x$ac_cv_f77_compiler_gnu" = xyes; then
7016 FFLAGS="-O2"
7017 else
7018 FFLAGS=
7019 fi
7020 fi
7021
7022 G77=`test $ac_compiler_gnu = yes && echo yes`
7023 ac_ext=c
7024 ac_cpp='$CPP $CPPFLAGS'
7025 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
7026 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
7027 ac_compiler_gnu=$ac_cv_c_compiler_gnu
7028
7029
7030
7031 # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
7032
7033 # find the maximum length of command line arguments
7034 { echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
7035 echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; }
7036 if test "${lt_cv_sys_max_cmd_len+set}" = set; then
7037 echo $ECHO_N "(cached) $ECHO_C" >&6
7038 else
7039 i=0
7040 teststring="ABCD"
7041
7042 case $build_os in
7043 msdosdjgpp*)
7044 # On DJGPP, this test can blow up pretty badly due to problems in libc
7045 # (any single argument exceeding 2000 bytes causes a buffer overrun
7046 # during glob expansion). Even if it were fixed, the result of this
7047 # check would be larger than it should be.
7048 lt_cv_sys_max_cmd_len=12288; # 12K is about right
7049 ;;
7050
7051 gnu*)
7052 # Under GNU Hurd, this test is not required because there is
7053 # no limit to the length of command line arguments.
7054 # Libtool will interpret -1 as no limit whatsoever
7055 lt_cv_sys_max_cmd_len=-1;
7056 ;;
7057
7058 cygwin* | mingw*)
7059 # On Win9x/ME, this test blows up -- it succeeds, but takes
7060 # about 5 minutes as the teststring grows exponentially.
7061 # Worse, since 9x/ME are not pre-emptively multitasking,
7062 # you end up with a "frozen" computer, even though with patience
7063 # the test eventually succeeds (with a max line length of 256k).
7064 # Instead, let's just punt: use the minimum linelength reported by
7065 # all of the supported platforms: 8192 (on NT/2K/XP).
7066 lt_cv_sys_max_cmd_len=8192;
7067 ;;
7068
7069 amigaos*)
7070 # On AmigaOS with pdksh, this test takes hours, literally.
7071 # So we just punt and use a minimum line length of 8192.
7072 lt_cv_sys_max_cmd_len=8192;
7073 ;;
7074
7075 netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
7076 # This has been around since 386BSD, at least. Likely further.
7077 if test -x /sbin/sysctl; then
7078 lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
7079 elif test -x /usr/sbin/sysctl; then
7080 lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
7081 else
7082 lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
7083 fi
7084 # And add a safety zone
7085 lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
7086 lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
7087 ;;
7088
7089 interix*)
7090 # We know the value 262144 and hardcode it with a safety zone (like BSD)
7091 lt_cv_sys_max_cmd_len=196608
7092 ;;
7093
7094 osf*)
7095 # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
7096 # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
7097 # nice to cause kernel panics so lets avoid the loop below.
7098 # First set a reasonable default.
7099 lt_cv_sys_max_cmd_len=16384
7100 #
7101 if test -x /sbin/sysconfig; then
7102 case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
7103 *1*) lt_cv_sys_max_cmd_len=-1 ;;
7104 esac
7105 fi
7106 ;;
7107 sco3.2v5*)
7108 lt_cv_sys_max_cmd_len=102400
7109 ;;
7110 sysv5* | sco5v6* | sysv4.2uw2*)
7111 kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
7112 if test -n "$kargmax"; then
7113 lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'`
7114 else
7115 lt_cv_sys_max_cmd_len=32768
7116 fi
7117 ;;
7118 *)
7119 # If test is not a shell built-in, we'll probably end up computing a
7120 # maximum length that is only half of the actual maximum length, but
7121 # we can't tell.
7122 SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
7123 while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \
7124 = "XX$teststring") >/dev/null 2>&1 &&
7125 new_result=`expr "X$teststring" : ".*" 2>&1` &&
7126 lt_cv_sys_max_cmd_len=$new_result &&
7127 test $i != 17 # 1/2 MB should be enough
7128 do
7129 i=`expr $i + 1`
7130 teststring=$teststring$teststring
7131 done
7132 teststring=
7133 # Add a significant safety factor because C++ compilers can tack on massive
7134 # amounts of additional arguments before passing them to the linker.
7135 # It appears as though 1/2 is a usable value.
7136 lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
7137 ;;
7138 esac
7139
7140 fi
7141
7142 if test -n $lt_cv_sys_max_cmd_len ; then
7143 { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
7144 echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; }
7145 else
7146 { echo "$as_me:$LINENO: result: none" >&5
7147 echo "${ECHO_T}none" >&6; }
7148 fi
7149
7150
7151
7152
7153 # Check for command to grab the raw symbol name followed by C symbol from nm.
7154 { echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
7155 echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6; }
7156 if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
7157 echo $ECHO_N "(cached) $ECHO_C" >&6
7158 else
7159
7160 # These are sane defaults that work on at least a few old systems.
7161 # [They come from Ultrix. What could be older than Ultrix?!! ;)]
7162
7163 # Character class describing NM global symbol codes.
7164 symcode='[BCDEGRST]'
7165
7166 # Regexp to match symbols that can be accessed directly from C.
7167 sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
7168
7169 # Transform an extracted symbol line into a proper C declaration
7170 lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
7171
7172 # Transform an extracted symbol line into symbol name and symbol address
7173 lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
7174
7175 # Define system-specific variables.
7176 case $host_os in
7177 aix*)
7178 symcode='[BCDT]'
7179 ;;
7180 cygwin* | mingw* | pw32*)
7181 symcode='[ABCDGISTW]'
7182 ;;
7183 hpux*) # Its linker distinguishes data from code symbols
7184 if test "$host_cpu" = ia64; then
7185 symcode='[ABCDEGRST]'
7186 fi
7187 lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
7188 lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
7189 ;;
7190 linux* | k*bsd*-gnu)
7191 if test "$host_cpu" = ia64; then
7192 symcode='[ABCDGIRSTW]'
7193 lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
7194 lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
7195 fi
7196 ;;
7197 irix* | nonstopux*)
7198 symcode='[BCDEGRST]'
7199 ;;
7200 osf*)
7201 symcode='[BCDEGQRST]'
7202 ;;
7203 solaris*)
7204 symcode='[BDRT]'
7205 ;;
7206 sco3.2v5*)
7207 symcode='[DT]'
7208 ;;
7209 sysv4.2uw2*)
7210 symcode='[DT]'
7211 ;;
7212 sysv5* | sco5v6* | unixware* | OpenUNIX*)
7213 symcode='[ABDT]'
7214 ;;
7215 sysv4)
7216 symcode='[DFNSTU]'
7217 ;;
7218 esac
7219
7220 # Handle CRLF in mingw tool chain
7221 opt_cr=
7222 case $build_os in
7223 mingw*)
7224 opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
7225 ;;
7226 esac
7227
7228 # If we're using GNU nm, then use its standard symbol codes.
7229 case `$NM -V 2>&1` in
7230 *GNU* | *'with BFD'*)
7231 symcode='[ABCDGIRSTW]' ;;
7232 esac
7233
7234 # Try without a prefix undercore, then with it.
7235 for ac_symprfx in "" "_"; do
7236
7237 # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
7238 symxfrm="\\1 $ac_symprfx\\2 \\2"
7239
7240 # Write the raw and C identifiers.
7241 lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
7242
7243 # Check to see that the pipe works correctly.
7244 pipe_works=no
7245
7246 rm -f conftest*
7247 cat > conftest.$ac_ext <<EOF
7248 #ifdef __cplusplus
7249 extern "C" {
7250 #endif
7251 char nm_test_var;
7252 void nm_test_func(){}
7253 #ifdef __cplusplus
7254 }
7255 #endif
7256 int main(){nm_test_var='a';nm_test_func();return(0);}
7257 EOF
7258
7259 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
7260 (eval $ac_compile) 2>&5
7261 ac_status=$?
7262 echo "$as_me:$LINENO: \$? = $ac_status" >&5
7263 (exit $ac_status); }; then
7264 # Now try to grab the symbols.
7265 nlist=conftest.nm
7266 if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
7267 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
7268 ac_status=$?
7269 echo "$as_me:$LINENO: \$? = $ac_status" >&5
7270 (exit $ac_status); } && test -s "$nlist"; then
7271 # Try sorting and uniquifying the output.
7272 if sort "$nlist" | uniq > "$nlist"T; then
7273 mv -f "$nlist"T "$nlist"
7274 else
7275 rm -f "$nlist"T
7276 fi
7277
7278 # Make sure that we snagged all the symbols we need.
7279 if grep ' nm_test_var$' "$nlist" >/dev/null; then
7280 if grep ' nm_test_func$' "$nlist" >/dev/null; then
7281 cat <<EOF > conftest.$ac_ext
7282 #ifdef __cplusplus
7283 extern "C" {
7284 #endif
7285
7286 EOF
7287 # Now generate the symbol file.
7288 eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
7289
7290 cat <<EOF >> conftest.$ac_ext
7291 #if defined (__STDC__) && __STDC__
7292 # define lt_ptr_t void *
7293 #else
7294 # define lt_ptr_t char *
7295 # define const
7296 #endif
7297
7298 /* The mapping between symbol names and symbols. */
7299 const struct {
7300 const char *name;
7301 lt_ptr_t address;
7302 }
7303 lt_preloaded_symbols[] =
7304 {
7305 EOF
7306 $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
7307 cat <<\EOF >> conftest.$ac_ext
7308 {0, (lt_ptr_t) 0}
7309 };
7310
7311 #ifdef __cplusplus
7312 }
7313 #endif
7314 EOF
7315 # Now try linking the two files.
7316 mv conftest.$ac_objext conftstm.$ac_objext
7317 lt_save_LIBS="$LIBS"
7318 lt_save_CFLAGS="$CFLAGS"
7319 LIBS="conftstm.$ac_objext"
7320 CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
7321 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
7322 (eval $ac_link) 2>&5
7323 ac_status=$?
7324 echo "$as_me:$LINENO: \$? = $ac_status" >&5
7325 (exit $ac_status); } && test -s conftest${ac_exeext}; then
7326 pipe_works=yes
7327 fi
7328 LIBS="$lt_save_LIBS"
7329 CFLAGS="$lt_save_CFLAGS"
7330 else
7331 echo "cannot find nm_test_func in $nlist" >&5
7332 fi
7333 else
7334 echo "cannot find nm_test_var in $nlist" >&5
7335 fi
7336 else
7337 echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
7338 fi
7339 else
7340 echo "$progname: failed program was:" >&5
7341 cat conftest.$ac_ext >&5
7342 fi
7343 rm -f conftest* conftst*
7344
7345 # Do not use the global_symbol_pipe unless it works.
7346 if test "$pipe_works" = yes; then
7347 break
7348 else
7349 lt_cv_sys_global_symbol_pipe=
7350 fi
7351 done
7352
7353 fi
7354
7355 if test -z "$lt_cv_sys_global_symbol_pipe"; then
7356 lt_cv_sys_global_symbol_to_cdecl=
7357 fi
7358 if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
7359 { echo "$as_me:$LINENO: result: failed" >&5
7360 echo "${ECHO_T}failed" >&6; }
7361 else
7362 { echo "$as_me:$LINENO: result: ok" >&5
7363 echo "${ECHO_T}ok" >&6; }
7364 fi
7365
7366 { echo "$as_me:$LINENO: checking for objdir" >&5
7367 echo $ECHO_N "checking for objdir... $ECHO_C" >&6; }
7368 if test "${lt_cv_objdir+set}" = set; then
7369 echo $ECHO_N "(cached) $ECHO_C" >&6
7370 else
7371 rm -f .libs 2>/dev/null
7372 mkdir .libs 2>/dev/null
7373 if test -d .libs; then
7374 lt_cv_objdir=.libs
7375 else
7376 # MS-DOS does not allow filenames that begin with a dot.
7377 lt_cv_objdir=_libs
7378 fi
7379 rmdir .libs 2>/dev/null
7380 fi
7381 { echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
7382 echo "${ECHO_T}$lt_cv_objdir" >&6; }
7383 objdir=$lt_cv_objdir
7384
7385
7386
7387
7388
7389 case $host_os in
7390 aix3*)
7391 # AIX sometimes has problems with the GCC collect2 program. For some
7392 # reason, if we set the COLLECT_NAMES environment variable, the problems
7393 # vanish in a puff of smoke.
7394 if test "X${COLLECT_NAMES+set}" != Xset; then
7395 COLLECT_NAMES=
7396 export COLLECT_NAMES
7397 fi
7398 ;;
7399 esac
7400
7401 # Sed substitution that helps us do robust quoting. It backslashifies
7402 # metacharacters that are still active within double-quoted strings.
7403 Xsed='sed -e 1s/^X//'
7404 sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
7405
7406 # Same as above, but do not quote variable references.
7407 double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'
7408
7409 # Sed substitution to delay expansion of an escaped shell variable in a
7410 # double_quote_subst'ed string.
7411 delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
7412
7413 # Sed substitution to avoid accidental globbing in evaled expressions
7414 no_glob_subst='s/\*/\\\*/g'
7415
7416 # Constants:
7417 rm="rm -f"
7418
7419 # Global variables:
7420 default_ofile=libtool
7421 can_build_shared=yes
7422
7423 # All known linkers require a `.a' archive for static linking (except MSVC,
7424 # which needs '.lib').
7425 libext=a
7426 ltmain="$ac_aux_dir/ltmain.sh"
7427 ofile="$default_ofile"
7428 with_gnu_ld="$lt_cv_prog_gnu_ld"
7429
7430 if test -n "$ac_tool_prefix"; then
7431 # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
7432 set dummy ${ac_tool_prefix}ar; ac_word=$2
7433 { echo "$as_me:$LINENO: checking for $ac_word" >&5
7434 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
7435 if test "${ac_cv_prog_AR+set}" = set; then
7436 echo $ECHO_N "(cached) $ECHO_C" >&6
7437 else
7438 if test -n "$AR"; then
7439 ac_cv_prog_AR="$AR" # Let the user override the test.
7440 else
7441 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
7442 for as_dir in $PATH
7443 do
7444 IFS=$as_save_IFS
7445 test -z "$as_dir" && as_dir=.
7446 for ac_exec_ext in '' $ac_executable_extensions; do
7447 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
7448 ac_cv_prog_AR="${ac_tool_prefix}ar"
7449 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
7450 break 2
7451 fi
7452 done
7453 done
7454 IFS=$as_save_IFS
7455
7456 fi
7457 fi
7458 AR=$ac_cv_prog_AR
7459 if test -n "$AR"; then
7460 { echo "$as_me:$LINENO: result: $AR" >&5
7461 echo "${ECHO_T}$AR" >&6; }
7462 else
7463 { echo "$as_me:$LINENO: result: no" >&5
7464 echo "${ECHO_T}no" >&6; }
7465 fi
7466
7467
7468 fi
7469 if test -z "$ac_cv_prog_AR"; then
7470 ac_ct_AR=$AR
7471 # Extract the first word of "ar", so it can be a program name with args.
7472 set dummy ar; ac_word=$2
7473 { echo "$as_me:$LINENO: checking for $ac_word" >&5
7474 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
7475 if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
7476 echo $ECHO_N "(cached) $ECHO_C" >&6
7477 else
7478 if test -n "$ac_ct_AR"; then
7479 ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
7480 else
7481 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
7482 for as_dir in $PATH
7483 do
7484 IFS=$as_save_IFS
7485 test -z "$as_dir" && as_dir=.
7486 for ac_exec_ext in '' $ac_executable_extensions; do
7487 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
7488 ac_cv_prog_ac_ct_AR="ar"
7489 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
7490 break 2
7491 fi
7492 done
7493 done
7494 IFS=$as_save_IFS
7495
7496 fi
7497 fi
7498 ac_ct_AR=$ac_cv_prog_ac_ct_AR
7499 if test -n "$ac_ct_AR"; then
7500 { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
7501 echo "${ECHO_T}$ac_ct_AR" >&6; }
7502 else
7503 { echo "$as_me:$LINENO: result: no" >&5
7504 echo "${ECHO_T}no" >&6; }
7505 fi
7506
7507 if test "x$ac_ct_AR" = x; then
7508 AR="false"
7509 else
7510 case $cross_compiling:$ac_tool_warned in
7511 yes:)
7512 { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
7513 whose name does not start with the host triplet. If you think this
7514 configuration is useful to you, please write to autoconf@gnu.org." >&5
7515 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
7516 whose name does not start with the host triplet. If you think this
7517 configuration is useful to you, please write to autoconf@gnu.org." >&2;}
7518 ac_tool_warned=yes ;;
7519 esac
7520 AR=$ac_ct_AR
7521 fi
7522 else
7523 AR="$ac_cv_prog_AR"
7524 fi
7525
7526 if test -n "$ac_tool_prefix"; then
7527 # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
7528 set dummy ${ac_tool_prefix}ranlib; ac_word=$2
7529 { echo "$as_me:$LINENO: checking for $ac_word" >&5
7530 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
7531 if test "${ac_cv_prog_RANLIB+set}" = set; then
7532 echo $ECHO_N "(cached) $ECHO_C" >&6
7533 else
7534 if test -n "$RANLIB"; then
7535 ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
7536 else
7537 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
7538 for as_dir in $PATH
7539 do
7540 IFS=$as_save_IFS
7541 test -z "$as_dir" && as_dir=.
7542 for ac_exec_ext in '' $ac_executable_extensions; do
7543 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
7544 ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
7545 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
7546 break 2
7547 fi
7548 done
7549 done
7550 IFS=$as_save_IFS
7551
7552 fi
7553 fi
7554 RANLIB=$ac_cv_prog_RANLIB
7555 if test -n "$RANLIB"; then
7556 { echo "$as_me:$LINENO: result: $RANLIB" >&5
7557 echo "${ECHO_T}$RANLIB" >&6; }
7558 else
7559 { echo "$as_me:$LINENO: result: no" >&5
7560 echo "${ECHO_T}no" >&6; }
7561 fi
7562
7563
7564 fi
7565 if test -z "$ac_cv_prog_RANLIB"; then
7566 ac_ct_RANLIB=$RANLIB
7567 # Extract the first word of "ranlib", so it can be a program name with args.
7568 set dummy ranlib; ac_word=$2
7569 { echo "$as_me:$LINENO: checking for $ac_word" >&5
7570 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
7571 if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
7572 echo $ECHO_N "(cached) $ECHO_C" >&6
7573 else
7574 if test -n "$ac_ct_RANLIB"; then
7575 ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
7576 else
7577 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
7578 for as_dir in $PATH
7579 do
7580 IFS=$as_save_IFS
7581 test -z "$as_dir" && as_dir=.
7582 for ac_exec_ext in '' $ac_executable_extensions; do
7583 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
7584 ac_cv_prog_ac_ct_RANLIB="ranlib"
7585 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
7586 break 2
7587 fi
7588 done
7589 done
7590 IFS=$as_save_IFS
7591
7592 fi
7593 fi
7594 ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
7595 if test -n "$ac_ct_RANLIB"; then
7596 { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
7597 echo "${ECHO_T}$ac_ct_RANLIB" >&6; }
7598 else
7599 { echo "$as_me:$LINENO: result: no" >&5
7600 echo "${ECHO_T}no" >&6; }
7601 fi
7602
7603 if test "x$ac_ct_RANLIB" = x; then
7604 RANLIB=":"
7605 else
7606 case $cross_compiling:$ac_tool_warned in
7607 yes:)
7608 { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
7609 whose name does not start with the host triplet. If you think this
7610 configuration is useful to you, please write to autoconf@gnu.org." >&5
7611 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
7612 whose name does not start with the host triplet. If you think this
7613 configuration is useful to you, please write to autoconf@gnu.org." >&2;}
7614 ac_tool_warned=yes ;;
7615 esac
7616 RANLIB=$ac_ct_RANLIB
7617 fi
7618 else
7619 RANLIB="$ac_cv_prog_RANLIB"
7620 fi
7621
7622 if test -n "$ac_tool_prefix"; then
7623 # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
7624 set dummy ${ac_tool_prefix}strip; ac_word=$2
7625 { echo "$as_me:$LINENO: checking for $ac_word" >&5
7626 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
7627 if test "${ac_cv_prog_STRIP+set}" = set; then
7628 echo $ECHO_N "(cached) $ECHO_C" >&6
7629 else
7630 if test -n "$STRIP"; then
7631 ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
7632 else
7633 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
7634 for as_dir in $PATH
7635 do
7636 IFS=$as_save_IFS
7637 test -z "$as_dir" && as_dir=.
7638 for ac_exec_ext in '' $ac_executable_extensions; do
7639 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
7640 ac_cv_prog_STRIP="${ac_tool_prefix}strip"
7641 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
7642 break 2
7643 fi
7644 done
7645 done
7646 IFS=$as_save_IFS
7647
7648 fi
7649 fi
7650 STRIP=$ac_cv_prog_STRIP
7651 if test -n "$STRIP"; then
7652 { echo "$as_me:$LINENO: result: $STRIP" >&5
7653 echo "${ECHO_T}$STRIP" >&6; }
7654 else
7655 { echo "$as_me:$LINENO: result: no" >&5
7656 echo "${ECHO_T}no" >&6; }
7657 fi
7658
7659
7660 fi
7661 if test -z "$ac_cv_prog_STRIP"; then
7662 ac_ct_STRIP=$STRIP
7663 # Extract the first word of "strip", so it can be a program name with args.
7664 set dummy strip; ac_word=$2
7665 { echo "$as_me:$LINENO: checking for $ac_word" >&5
7666 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
7667 if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
7668 echo $ECHO_N "(cached) $ECHO_C" >&6
7669 else
7670 if test -n "$ac_ct_STRIP"; then
7671 ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
7672 else
7673 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
7674 for as_dir in $PATH
7675 do
7676 IFS=$as_save_IFS
7677 test -z "$as_dir" && as_dir=.
7678 for ac_exec_ext in '' $ac_executable_extensions; do
7679 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
7680 ac_cv_prog_ac_ct_STRIP="strip"
7681 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
7682 break 2
7683 fi
7684 done
7685 done
7686 IFS=$as_save_IFS
7687
7688 fi
7689 fi
7690 ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
7691 if test -n "$ac_ct_STRIP"; then
7692 { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
7693 echo "${ECHO_T}$ac_ct_STRIP" >&6; }
7694 else
7695 { echo "$as_me:$LINENO: result: no" >&5
7696 echo "${ECHO_T}no" >&6; }
7697 fi
7698
7699 if test "x$ac_ct_STRIP" = x; then
7700 STRIP=":"
7701 else
7702 case $cross_compiling:$ac_tool_warned in
7703 yes:)
7704 { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
7705 whose name does not start with the host triplet. If you think this
7706 configuration is useful to you, please write to autoconf@gnu.org." >&5
7707 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
7708 whose name does not start with the host triplet. If you think this
7709 configuration is useful to you, please write to autoconf@gnu.org." >&2;}
7710 ac_tool_warned=yes ;;
7711 esac
7712 STRIP=$ac_ct_STRIP
7713 fi
7714 else
7715 STRIP="$ac_cv_prog_STRIP"
7716 fi
7717
7718
7719 old_CC="$CC"
7720 old_CFLAGS="$CFLAGS"
7721
7722 # Set sane defaults for various variables
7723 test -z "$AR" && AR=ar
7724 test -z "$AR_FLAGS" && AR_FLAGS=cru
7725 test -z "$AS" && AS=as
7726 test -z "$CC" && CC=cc
7727 test -z "$LTCC" && LTCC=$CC
7728 test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
7729 test -z "$DLLTOOL" && DLLTOOL=dlltool
7730 test -z "$LD" && LD=ld
7731 test -z "$LN_S" && LN_S="ln -s"
7732 test -z "$MAGIC_CMD" && MAGIC_CMD=file
7733 test -z "$NM" && NM=nm
7734 test -z "$SED" && SED=sed
7735 test -z "$OBJDUMP" && OBJDUMP=objdump
7736 test -z "$RANLIB" && RANLIB=:
7737 test -z "$STRIP" && STRIP=:
7738 test -z "$ac_objext" && ac_objext=o
7739
7740 # Determine commands to create old-style static archives.
7741 old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
7742 old_postinstall_cmds='chmod 644 $oldlib'
7743 old_postuninstall_cmds=
7744
7745 if test -n "$RANLIB"; then
7746 case $host_os in
7747 openbsd*)
7748 old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
7749 ;;
7750 *)
7751 old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
7752 ;;
7753 esac
7754 old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
7755 fi
7756
7757 for cc_temp in $compiler""; do
7758 case $cc_temp in
7759 compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
7760 distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
7761 \-*) ;;
7762 *) break;;
7763 esac
7764 done
7765 cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
7766
7767
7768 # Only perform the check for file, if the check method requires it
7769 case $deplibs_check_method in
7770 file_magic*)
7771 if test "$file_magic_cmd" = '$MAGIC_CMD'; then
7772 { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
7773 echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; }
7774 if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
7775 echo $ECHO_N "(cached) $ECHO_C" >&6
7776 else
7777 case $MAGIC_CMD in
7778 [\\/*] | ?:[\\/]*)
7779 lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
7780 ;;
7781 *)
7782 lt_save_MAGIC_CMD="$MAGIC_CMD"
7783 lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
7784 ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
7785 for ac_dir in $ac_dummy; do
7786 IFS="$lt_save_ifs"
7787 test -z "$ac_dir" && ac_dir=.
7788 if test -f $ac_dir/${ac_tool_prefix}file; then
7789 lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
7790 if test -n "$file_magic_test_file"; then
7791 case $deplibs_check_method in
7792 "file_magic "*)
7793 file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
7794 MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
7795 if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
7796 $EGREP "$file_magic_regex" > /dev/null; then
7797 :
7798 else
7799 cat <<EOF 1>&2
7800
7801 *** Warning: the command libtool uses to detect shared libraries,
7802 *** $file_magic_cmd, produces output that libtool cannot recognize.
7803 *** The result is that libtool may fail to recognize shared libraries
7804 *** as such. This will affect the creation of libtool libraries that
7805 *** depend on shared libraries, but programs linked with such libtool
7806 *** libraries will work regardless of this problem. Nevertheless, you
7807 *** may want to report the problem to your system manager and/or to
7808 *** bug-libtool@gnu.org
7809
7810 EOF
7811 fi ;;
7812 esac
7813 fi
7814 break
7815 fi
7816 done
7817 IFS="$lt_save_ifs"
7818 MAGIC_CMD="$lt_save_MAGIC_CMD"
7819 ;;
7820 esac
7821 fi
7822
7823 MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
7824 if test -n "$MAGIC_CMD"; then
7825 { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
7826 echo "${ECHO_T}$MAGIC_CMD" >&6; }
7827 else
7828 { echo "$as_me:$LINENO: result: no" >&5
7829 echo "${ECHO_T}no" >&6; }
7830 fi
7831
7832 if test -z "$lt_cv_path_MAGIC_CMD"; then
7833 if test -n "$ac_tool_prefix"; then
7834 { echo "$as_me:$LINENO: checking for file" >&5
7835 echo $ECHO_N "checking for file... $ECHO_C" >&6; }
7836 if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
7837 echo $ECHO_N "(cached) $ECHO_C" >&6
7838 else
7839 case $MAGIC_CMD in
7840 [\\/*] | ?:[\\/]*)
7841 lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
7842 ;;
7843 *)
7844 lt_save_MAGIC_CMD="$MAGIC_CMD"
7845 lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
7846 ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
7847 for ac_dir in $ac_dummy; do
7848 IFS="$lt_save_ifs"
7849 test -z "$ac_dir" && ac_dir=.
7850 if test -f $ac_dir/file; then
7851 lt_cv_path_MAGIC_CMD="$ac_dir/file"
7852 if test -n "$file_magic_test_file"; then
7853 case $deplibs_check_method in
7854 "file_magic "*)
7855 file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
7856 MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
7857 if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
7858 $EGREP "$file_magic_regex" > /dev/null; then
7859 :
7860 else
7861 cat <<EOF 1>&2
7862
7863 *** Warning: the command libtool uses to detect shared libraries,
7864 *** $file_magic_cmd, produces output that libtool cannot recognize.
7865 *** The result is that libtool may fail to recognize shared libraries
7866 *** as such. This will affect the creation of libtool libraries that
7867 *** depend on shared libraries, but programs linked with such libtool
7868 *** libraries will work regardless of this problem. Nevertheless, you
7869 *** may want to report the problem to your system manager and/or to
7870 *** bug-libtool@gnu.org
7871
7872 EOF
7873 fi ;;
7874 esac
7875 fi
7876 break
7877 fi
7878 done
7879 IFS="$lt_save_ifs"
7880 MAGIC_CMD="$lt_save_MAGIC_CMD"
7881 ;;
7882 esac
7883 fi
7884
7885 MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
7886 if test -n "$MAGIC_CMD"; then
7887 { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
7888 echo "${ECHO_T}$MAGIC_CMD" >&6; }
7889 else
7890 { echo "$as_me:$LINENO: result: no" >&5
7891 echo "${ECHO_T}no" >&6; }
7892 fi
7893
7894 else
7895 MAGIC_CMD=:
7896 fi
7897 fi
7898
7899 fi
7900 ;;
7901 esac
7902
7903 enable_dlopen=no
7904 enable_win32_dll=no
7905
7906 # Check whether --enable-libtool-lock was given.
7907 if test "${enable_libtool_lock+set}" = set; then
7908 enableval=$enable_libtool_lock;
7909 fi
7910
7911 test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
7912
7913
7914 # Check whether --with-pic was given.
7915 if test "${with_pic+set}" = set; then
7916 withval=$with_pic; pic_mode="$withval"
7917 else
7918 pic_mode=default
7919 fi
7920
7921 test -z "$pic_mode" && pic_mode=default
7922
7923 # Use C for the default configuration in the libtool script
7924 tagname=
7925 lt_save_CC="$CC"
7926 ac_ext=c
7927 ac_cpp='$CPP $CPPFLAGS'
7928 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
7929 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
7930 ac_compiler_gnu=$ac_cv_c_compiler_gnu
7931
7932
7933 # Source file extension for C test sources.
7934 ac_ext=c
7935
7936 # Object file extension for compiled C test sources.
7937 objext=o
7938 objext=$objext
7939
7940 # Code to be used in simple compile tests
7941 lt_simple_compile_test_code="int some_variable = 0;\n"
7942
7943 # Code to be used in simple link tests
7944 lt_simple_link_test_code='int main(){return(0);}\n'
7945
7946
7947 # If no C compiler was specified, use CC.
7948 LTCC=${LTCC-"$CC"}
7949
7950 # If no C compiler flags were specified, use CFLAGS.
7951 LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
7952
7953 # Allow CC to be a program name with arguments.
7954 compiler=$CC
7955
7956
7957 # save warnings/boilerplate of simple test code
7958 ac_outfile=conftest.$ac_objext
7959 printf "$lt_simple_compile_test_code" >conftest.$ac_ext
7960 eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
7961 _lt_compiler_boilerplate=`cat conftest.err`
7962 $rm conftest*
7963
7964 ac_outfile=conftest.$ac_objext
7965 printf "$lt_simple_link_test_code" >conftest.$ac_ext
7966 eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
7967 _lt_linker_boilerplate=`cat conftest.err`
7968 $rm conftest*
7969
7970
7971
7972 lt_prog_compiler_no_builtin_flag=
7973
7974 if test "$GCC" = yes; then
7975 lt_prog_compiler_no_builtin_flag=' -fno-builtin'
7976
7977
7978 { echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
7979 echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; }
7980 if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
7981 echo $ECHO_N "(cached) $ECHO_C" >&6
7982 else
7983 lt_cv_prog_compiler_rtti_exceptions=no
7984 ac_outfile=conftest.$ac_objext
7985 printf "$lt_simple_compile_test_code" > conftest.$ac_ext
7986 lt_compiler_flag="-fno-rtti -fno-exceptions"
7987 # Insert the option either (1) after the last *FLAGS variable, or
7988 # (2) before a word containing "conftest.", or (3) at the end.
7989 # Note that $ac_compile itself does not contain backslashes and begins
7990 # with a dollar sign (not a hyphen), so the echo should work correctly.
7991 # The option is referenced via a variable to avoid confusing sed.
7992 lt_compile=`echo "$ac_compile" | $SED \
7993 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
7994 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
7995 -e 's:$: $lt_compiler_flag:'`
7996 (eval echo "\"\$as_me:7997: $lt_compile\"" >&5)
7997 (eval "$lt_compile" 2>conftest.err)
7998 ac_status=$?
7999 cat conftest.err >&5
8000 echo "$as_me:8001: \$? = $ac_status" >&5
8001 if (exit $ac_status) && test -s "$ac_outfile"; then
8002 # The compiler can only warn and ignore the option if not recognized
8003 # So say no if there are warnings other than the usual output.
8004 $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
8005 $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
8006 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
8007 lt_cv_prog_compiler_rtti_exceptions=yes
8008 fi
8009 fi
8010 $rm conftest*
8011
8012 fi
8013 { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
8014 echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; }
8015
8016 if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
8017 lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
8018 else
8019 :
8020 fi
8021
8022 fi
8023
8024 lt_prog_compiler_wl=
8025 lt_prog_compiler_pic=
8026 lt_prog_compiler_static=
8027
8028 { echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
8029 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
8030
8031 if test "$GCC" = yes; then
8032 lt_prog_compiler_wl='-Wl,'
8033 lt_prog_compiler_static='-static'
8034
8035 case $host_os in
8036 aix*)
8037 # All AIX code is PIC.
8038 if test "$host_cpu" = ia64; then
8039 # AIX 5 now supports IA64 processor
8040 lt_prog_compiler_static='-Bstatic'
8041 fi
8042 ;;
8043
8044 amigaos*)
8045 # FIXME: we need at least 68020 code to build shared libraries, but
8046 # adding the `-m68020' flag to GCC prevents building anything better,
8047 # like `-m68040'.
8048 lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
8049 ;;
8050
8051 beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
8052 # PIC is the default for these OSes.
8053 ;;
8054
8055 mingw* | pw32* | os2*)
8056 # This hack is so that the source file can tell whether it is being
8057 # built for inclusion in a dll (and should export symbols for example).
8058 lt_prog_compiler_pic='-DDLL_EXPORT'
8059 ;;
8060
8061 darwin* | rhapsody*)
8062 # PIC is the default on this platform
8063 # Common symbols not allowed in MH_DYLIB files
8064 lt_prog_compiler_pic='-fno-common'
8065 ;;
8066
8067 interix3*)
8068 # Interix 3.x gcc -fpic/-fPIC options generate broken code.
8069 # Instead, we relocate shared libraries at runtime.
8070 ;;
8071
8072 msdosdjgpp*)
8073 # Just because we use GCC doesn't mean we suddenly get shared libraries
8074 # on systems that don't support them.
8075 lt_prog_compiler_can_build_shared=no
8076 enable_shared=no
8077 ;;
8078
8079 sysv4*MP*)
8080 if test -d /usr/nec; then
8081 lt_prog_compiler_pic=-Kconform_pic
8082 fi
8083 ;;
8084
8085 hpux*)
8086 # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
8087 # not for PA HP-UX.
8088 case $host_cpu in
8089 hppa*64*|ia64*)
8090 # +Z the default
8091 ;;
8092 *)
8093 lt_prog_compiler_pic='-fPIC'
8094 ;;
8095 esac
8096 ;;
8097
8098 *)
8099 lt_prog_compiler_pic='-fPIC'
8100 ;;
8101 esac
8102 else
8103 # PORTME Check for flag to pass linker flags through the system compiler.
8104 case $host_os in
8105 aix*)
8106 lt_prog_compiler_wl='-Wl,'
8107 if test "$host_cpu" = ia64; then
8108 # AIX 5 now supports IA64 processor
8109 lt_prog_compiler_static='-Bstatic'
8110 else
8111 lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
8112 fi
8113 ;;
8114 darwin*)
8115 # PIC is the default on this platform
8116 # Common symbols not allowed in MH_DYLIB files
8117 case $cc_basename in
8118 xlc*)
8119 lt_prog_compiler_pic='-qnocommon'
8120 lt_prog_compiler_wl='-Wl,'
8121 ;;
8122 esac
8123 ;;
8124
8125 mingw* | pw32* | os2*)
8126 # This hack is so that the source file can tell whether it is being
8127 # built for inclusion in a dll (and should export symbols for example).
8128 lt_prog_compiler_pic='-DDLL_EXPORT'
8129 ;;
8130
8131 hpux9* | hpux10* | hpux11*)
8132 lt_prog_compiler_wl='-Wl,'
8133 # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
8134 # not for PA HP-UX.
8135 case $host_cpu in
8136 hppa*64*|ia64*)
8137 # +Z the default
8138 ;;
8139 *)
8140 lt_prog_compiler_pic='+Z'
8141 ;;
8142 esac
8143 # Is there a better lt_prog_compiler_static that works with the bundled CC?
8144 lt_prog_compiler_static='${wl}-a ${wl}archive'
8145 ;;
8146
8147 irix5* | irix6* | nonstopux*)
8148 lt_prog_compiler_wl='-Wl,'
8149 # PIC (with -KPIC) is the default.
8150 lt_prog_compiler_static='-non_shared'
8151 ;;
8152
8153 newsos6)
8154 lt_prog_compiler_pic='-KPIC'
8155 lt_prog_compiler_static='-Bstatic'
8156 ;;
8157
8158 linux* | k*bsd*-gnu)
8159 case $cc_basename in
8160 icc* | ecc*)
8161 lt_prog_compiler_wl='-Wl,'
8162 lt_prog_compiler_pic='-KPIC'
8163 lt_prog_compiler_static='-static'
8164 ;;
8165 pgcc* | pgf77* | pgf90* | pgf95*)
8166 # Portland Group compilers (*not* the Pentium gcc compiler,
8167 # which looks to be a dead project)
8168 lt_prog_compiler_wl='-Wl,'
8169 lt_prog_compiler_pic='-fpic'
8170 lt_prog_compiler_static='-Bstatic'
8171 ;;
8172 ccc*)
8173 lt_prog_compiler_wl='-Wl,'
8174 # All Alpha code is PIC.
8175 lt_prog_compiler_static='-non_shared'
8176 ;;
8177 esac
8178 ;;
8179
8180 osf3* | osf4* | osf5*)
8181 lt_prog_compiler_wl='-Wl,'
8182 # All OSF/1 code is PIC.
8183 lt_prog_compiler_static='-non_shared'
8184 ;;
8185
8186 solaris*)
8187 lt_prog_compiler_pic='-KPIC'
8188 lt_prog_compiler_static='-Bstatic'
8189 case $cc_basename in
8190 f77* | f90* | f95*)
8191 lt_prog_compiler_wl='-Qoption ld ';;
8192 *)
8193 lt_prog_compiler_wl='-Wl,';;
8194 esac
8195 ;;
8196
8197 sunos4*)
8198 lt_prog_compiler_wl='-Qoption ld '
8199 lt_prog_compiler_pic='-PIC'
8200 lt_prog_compiler_static='-Bstatic'
8201 ;;
8202
8203 sysv4 | sysv4.2uw2* | sysv4.3*)
8204 lt_prog_compiler_wl='-Wl,'
8205 lt_prog_compiler_pic='-KPIC'
8206 lt_prog_compiler_static='-Bstatic'
8207 ;;
8208
8209 sysv4*MP*)
8210 if test -d /usr/nec ;then
8211 lt_prog_compiler_pic='-Kconform_pic'
8212 lt_prog_compiler_static='-Bstatic'
8213 fi
8214 ;;
8215
8216 sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
8217 lt_prog_compiler_wl='-Wl,'
8218 lt_prog_compiler_pic='-KPIC'
8219 lt_prog_compiler_static='-Bstatic'
8220 ;;
8221
8222 unicos*)
8223 lt_prog_compiler_wl='-Wl,'
8224 lt_prog_compiler_can_build_shared=no
8225 ;;
8226
8227 uts4*)
8228 lt_prog_compiler_pic='-pic'
8229 lt_prog_compiler_static='-Bstatic'
8230 ;;
8231
8232 *)
8233 lt_prog_compiler_can_build_shared=no
8234 ;;
8235 esac
8236 fi
8237
8238 { echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
8239 echo "${ECHO_T}$lt_prog_compiler_pic" >&6; }
8240
8241 #
8242 # Check to make sure the PIC flag actually works.
8243 #
8244 if test -n "$lt_prog_compiler_pic"; then
8245
8246 { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
8247 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6; }
8248 if test "${lt_prog_compiler_pic_works+set}" = set; then
8249 echo $ECHO_N "(cached) $ECHO_C" >&6
8250 else
8251 lt_prog_compiler_pic_works=no
8252 ac_outfile=conftest.$ac_objext
8253 printf "$lt_simple_compile_test_code" > conftest.$ac_ext
8254 lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
8255 # Insert the option either (1) after the last *FLAGS variable, or
8256 # (2) before a word containing "conftest.", or (3) at the end.
8257 # Note that $ac_compile itself does not contain backslashes and begins
8258 # with a dollar sign (not a hyphen), so the echo should work correctly.
8259 # The option is referenced via a variable to avoid confusing sed.
8260 lt_compile=`echo "$ac_compile" | $SED \
8261 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
8262 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
8263 -e 's:$: $lt_compiler_flag:'`
8264 (eval echo "\"\$as_me:8265: $lt_compile\"" >&5)
8265 (eval "$lt_compile" 2>conftest.err)
8266 ac_status=$?
8267 cat conftest.err >&5
8268 echo "$as_me:8269: \$? = $ac_status" >&5
8269 if (exit $ac_status) && test -s "$ac_outfile"; then
8270 # The compiler can only warn and ignore the option if not recognized
8271 # So say no if there are warnings other than the usual output.
8272 $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
8273 $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
8274 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
8275 lt_prog_compiler_pic_works=yes
8276 fi
8277 fi
8278 $rm conftest*
8279
8280 fi
8281 { echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5
8282 echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6; }
8283
8284 if test x"$lt_prog_compiler_pic_works" = xyes; then
8285 case $lt_prog_compiler_pic in
8286 "" | " "*) ;;
8287 *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
8288 esac
8289 else
8290 lt_prog_compiler_pic=
8291 lt_prog_compiler_can_build_shared=no
8292 fi
8293
8294 fi
8295 case $host_os in
8296 # For platforms which do not support PIC, -DPIC is meaningless:
8297 *djgpp*)
8298 lt_prog_compiler_pic=
8299 ;;
8300 *)
8301 lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
8302 ;;
8303 esac
8304
8305 #
8306 # Check to make sure the static flag actually works.
8307 #
8308 wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
8309 { echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
8310 echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
8311 if test "${lt_prog_compiler_static_works+set}" = set; then
8312 echo $ECHO_N "(cached) $ECHO_C" >&6
8313 else
8314 lt_prog_compiler_static_works=no
8315 save_LDFLAGS="$LDFLAGS"
8316 LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
8317 printf "$lt_simple_link_test_code" > conftest.$ac_ext
8318 if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
8319 # The linker can only warn and ignore the option if not recognized
8320 # So say no if there are warnings
8321 if test -s conftest.err; then
8322 # Append any errors to the config.log.
8323 cat conftest.err 1>&5
8324 $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
8325 $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
8326 if diff conftest.exp conftest.er2 >/dev/null; then
8327 lt_prog_compiler_static_works=yes
8328 fi
8329 else
8330 lt_prog_compiler_static_works=yes
8331 fi
8332 fi
8333 $rm conftest*
8334 LDFLAGS="$save_LDFLAGS"
8335
8336 fi
8337 { echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
8338 echo "${ECHO_T}$lt_prog_compiler_static_works" >&6; }
8339
8340 if test x"$lt_prog_compiler_static_works" = xyes; then
8341 :
8342 else
8343 lt_prog_compiler_static=
8344 fi
8345
8346
8347 { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
8348 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
8349 if test "${lt_cv_prog_compiler_c_o+set}" = set; then
8350 echo $ECHO_N "(cached) $ECHO_C" >&6
8351 else
8352 lt_cv_prog_compiler_c_o=no
8353 $rm -r conftest 2>/dev/null
8354 mkdir conftest
8355 cd conftest
8356 mkdir out
8357 printf "$lt_simple_compile_test_code" > conftest.$ac_ext
8358
8359 lt_compiler_flag="-o out/conftest2.$ac_objext"
8360 # Insert the option either (1) after the last *FLAGS variable, or
8361 # (2) before a word containing "conftest.", or (3) at the end.
8362 # Note that $ac_compile itself does not contain backslashes and begins
8363 # with a dollar sign (not a hyphen), so the echo should work correctly.
8364 lt_compile=`echo "$ac_compile" | $SED \
8365 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
8366 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
8367 -e 's:$: $lt_compiler_flag:'`
8368 (eval echo "\"\$as_me:8369: $lt_compile\"" >&5)
8369 (eval "$lt_compile" 2>out/conftest.err)
8370 ac_status=$?
8371 cat out/conftest.err >&5
8372 echo "$as_me:8373: \$? = $ac_status" >&5
8373 if (exit $ac_status) && test -s out/conftest2.$ac_objext
8374 then
8375 # The compiler can only warn and ignore the option if not recognized
8376 # So say no if there are warnings
8377 $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
8378 $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
8379 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
8380 lt_cv_prog_compiler_c_o=yes
8381 fi
8382 fi
8383 chmod u+w . 2>&5
8384 $rm conftest*
8385 # SGI C++ compiler will create directory out/ii_files/ for
8386 # template instantiation
8387 test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
8388 $rm out/* && rmdir out
8389 cd ..
8390 rmdir conftest
8391 $rm conftest*
8392
8393 fi
8394 { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
8395 echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; }
8396
8397
8398 hard_links="nottested"
8399 if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
8400 # do not overwrite the value of need_locks provided by the user
8401 { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
8402 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; }
8403 hard_links=yes
8404 $rm conftest*
8405 ln conftest.a conftest.b 2>/dev/null && hard_links=no
8406 touch conftest.a
8407 ln conftest.a conftest.b 2>&5 || hard_links=no
8408 ln conftest.a conftest.b 2>/dev/null && hard_links=no
8409 { echo "$as_me:$LINENO: result: $hard_links" >&5
8410 echo "${ECHO_T}$hard_links" >&6; }
8411 if test "$hard_links" = no; then
8412 { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
8413 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
8414 need_locks=warn
8415 fi
8416 else
8417 need_locks=no
8418 fi
8419
8420 { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
8421 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
8422
8423 runpath_var=
8424 allow_undefined_flag=
8425 enable_shared_with_static_runtimes=no
8426 archive_cmds=
8427 archive_expsym_cmds=
8428 old_archive_From_new_cmds=
8429 old_archive_from_expsyms_cmds=
8430 export_dynamic_flag_spec=
8431 whole_archive_flag_spec=
8432 thread_safe_flag_spec=
8433 hardcode_libdir_flag_spec=
8434 hardcode_libdir_flag_spec_ld=
8435 hardcode_libdir_separator=
8436 hardcode_direct=no
8437 hardcode_minus_L=no
8438 hardcode_shlibpath_var=unsupported
8439 link_all_deplibs=unknown
8440 hardcode_automatic=no
8441 module_cmds=
8442 module_expsym_cmds=
8443 always_export_symbols=no
8444 export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
8445 # include_expsyms should be a list of space-separated symbols to be *always*
8446 # included in the symbol list
8447 include_expsyms=
8448 # exclude_expsyms can be an extended regexp of symbols to exclude
8449 # it will be wrapped by ` (' and `)$', so one must not match beginning or
8450 # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
8451 # as well as any symbol that contains `d'.
8452 exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
8453 # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
8454 # platforms (ab)use it in PIC code, but their linkers get confused if
8455 # the symbol is explicitly referenced. Since portable code cannot
8456 # rely on this symbol name, it's probably fine to never include it in
8457 # preloaded symbol tables.
8458 extract_expsyms_cmds=
8459 # Just being paranoid about ensuring that cc_basename is set.
8460 for cc_temp in $compiler""; do
8461 case $cc_temp in
8462 compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
8463 distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
8464 \-*) ;;
8465 *) break;;
8466 esac
8467 done
8468 cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
8469
8470 case $host_os in
8471 cygwin* | mingw* | pw32*)
8472 # FIXME: the MSVC++ port hasn't been tested in a loooong time
8473 # When not using gcc, we currently assume that we are using
8474 # Microsoft Visual C++.
8475 if test "$GCC" != yes; then
8476 with_gnu_ld=no
8477 fi
8478 ;;
8479 interix*)
8480 # we just hope/assume this is gcc and not c89 (= MSVC++)
8481 with_gnu_ld=yes
8482 ;;
8483 openbsd*)
8484 with_gnu_ld=no
8485 ;;
8486 esac
8487
8488 ld_shlibs=yes
8489 if test "$with_gnu_ld" = yes; then
8490 # If archive_cmds runs LD, not CC, wlarc should be empty
8491 wlarc='${wl}'
8492
8493 # Set some defaults for GNU ld with shared library support. These
8494 # are reset later if shared libraries are not supported. Putting them
8495 # here allows them to be overridden if necessary.
8496 runpath_var=LD_RUN_PATH
8497 hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
8498 export_dynamic_flag_spec='${wl}--export-dynamic'
8499 # ancient GNU ld didn't support --whole-archive et. al.
8500 if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
8501 whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
8502 else
8503 whole_archive_flag_spec=
8504 fi
8505 supports_anon_versioning=no
8506 case `$LD -v 2>/dev/null` in
8507 *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
8508 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
8509 *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
8510 *\ 2.11.*) ;; # other 2.11 versions
8511 *) supports_anon_versioning=yes ;;
8512 esac
8513
8514 # See if GNU ld supports shared libraries.
8515 case $host_os in
8516 aix3* | aix4* | aix5*)
8517 # On AIX/PPC, the GNU linker is very broken
8518 if test "$host_cpu" != ia64; then
8519 ld_shlibs=no
8520 cat <<EOF 1>&2
8521
8522 *** Warning: the GNU linker, at least up to release 2.9.1, is reported
8523 *** to be unable to reliably create shared libraries on AIX.
8524 *** Therefore, libtool is disabling shared libraries support. If you
8525 *** really care for shared libraries, you may want to modify your PATH
8526 *** so that a non-GNU linker is found, and then restart.
8527
8528 EOF
8529 fi
8530 ;;
8531
8532 amigaos*)
8533 archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
8534 hardcode_libdir_flag_spec='-L$libdir'
8535 hardcode_minus_L=yes
8536
8537 # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
8538 # that the semantics of dynamic libraries on AmigaOS, at least up
8539 # to version 4, is to share data among multiple programs linked
8540 # with the same dynamic library. Since this doesn't match the
8541 # behavior of shared libraries on other platforms, we can't use
8542 # them.
8543 ld_shlibs=no
8544 ;;
8545
8546 beos*)
8547 if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
8548 allow_undefined_flag=unsupported
8549 # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
8550 # support --undefined. This deserves some investigation. FIXME
8551 archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
8552 else
8553 ld_shlibs=no
8554 fi
8555 ;;
8556
8557 cygwin* | mingw* | pw32*)
8558 # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
8559 # as there is no search path for DLLs.
8560 hardcode_libdir_flag_spec='-L$libdir'
8561 allow_undefined_flag=unsupported
8562 always_export_symbols=no
8563 enable_shared_with_static_runtimes=yes
8564 export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
8565
8566 if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
8567 archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
8568 # If the export-symbols file already is a .def file (1st line
8569 # is EXPORTS), use it as is; otherwise, prepend...
8570 archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
8571 cp $export_symbols $output_objdir/$soname.def;
8572 else
8573 echo EXPORTS > $output_objdir/$soname.def;
8574 cat $export_symbols >> $output_objdir/$soname.def;
8575 fi~
8576 $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
8577 else
8578 ld_shlibs=no
8579 fi
8580 ;;
8581
8582 interix3*)
8583 hardcode_direct=no
8584 hardcode_shlibpath_var=no
8585 hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
8586 export_dynamic_flag_spec='${wl}-E'
8587 # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
8588 # Instead, shared libraries are loaded at an image base (0x10000000 by
8589 # default) and relocated if they conflict, which is a slow very memory
8590 # consuming and fragmenting process. To avoid this, we pick a random,
8591 # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
8592 # time. Moving up from 0x10000000 also allows more sbrk(2) space.
8593 archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
8594 archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
8595 ;;
8596
8597 linux* | k*bsd*-gnu)
8598 if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
8599 tmp_addflag=
8600 case $cc_basename,$host_cpu in
8601 pgcc*) # Portland Group C compiler
8602 whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
8603 tmp_addflag=' $pic_flag'
8604 ;;
8605 pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
8606 whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
8607 tmp_addflag=' $pic_flag -Mnomain' ;;
8608 ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
8609 tmp_addflag=' -i_dynamic' ;;
8610 efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
8611 tmp_addflag=' -i_dynamic -nofor_main' ;;
8612 ifc* | ifort*) # Intel Fortran compiler
8613 tmp_addflag=' -nofor_main' ;;
8614 esac
8615 archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
8616
8617 if test $supports_anon_versioning = yes; then
8618 archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~
8619 cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
8620 $echo "local: *; };" >> $output_objdir/$libname.ver~
8621 $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
8622 fi
8623 link_all_deplibs=no
8624 else
8625 ld_shlibs=no
8626 fi
8627 ;;
8628
8629 netbsd* | netbsdelf*-gnu)
8630 if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
8631 archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
8632 wlarc=
8633 else
8634 archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
8635 archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
8636 fi
8637 ;;
8638
8639 solaris*)
8640 if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
8641 ld_shlibs=no
8642 cat <<EOF 1>&2
8643
8644 *** Warning: The releases 2.8.* of the GNU linker cannot reliably
8645 *** create shared libraries on Solaris systems. Therefore, libtool
8646 *** is disabling shared libraries support. We urge you to upgrade GNU
8647 *** binutils to release 2.9.1 or newer. Another option is to modify
8648 *** your PATH or compiler configuration so that the native linker is
8649 *** used, and then restart.
8650
8651 EOF
8652 elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
8653 archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
8654 archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
8655 else
8656 ld_shlibs=no
8657 fi
8658 ;;
8659
8660 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
8661 case `$LD -v 2>&1` in
8662 *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
8663 ld_shlibs=no
8664 cat <<_LT_EOF 1>&2
8665
8666 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
8667 *** reliably create shared libraries on SCO systems. Therefore, libtool
8668 *** is disabling shared libraries support. We urge you to upgrade GNU
8669 *** binutils to release 2.16.91.0.3 or newer. Another option is to modify
8670 *** your PATH or compiler configuration so that the native linker is
8671 *** used, and then restart.
8672
8673 _LT_EOF
8674 ;;
8675 *)
8676 if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
8677 hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
8678 archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
8679 archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
8680 else
8681 ld_shlibs=no
8682 fi
8683 ;;
8684 esac
8685 ;;
8686
8687 sunos4*)
8688 archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
8689 wlarc=
8690 hardcode_direct=yes
8691 hardcode_shlibpath_var=no
8692 ;;
8693
8694 *)
8695 if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
8696 archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
8697 archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
8698 else
8699 ld_shlibs=no
8700 fi
8701 ;;
8702 esac
8703
8704 if test "$ld_shlibs" = no; then
8705 runpath_var=
8706 hardcode_libdir_flag_spec=
8707 export_dynamic_flag_spec=
8708 whole_archive_flag_spec=
8709 fi
8710 else
8711 # PORTME fill in a description of your system's linker (not GNU ld)
8712 case $host_os in
8713 aix3*)
8714 allow_undefined_flag=unsupported
8715 always_export_symbols=yes
8716 archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
8717 # Note: this linker hardcodes the directories in LIBPATH if there
8718 # are no directories specified by -L.
8719 hardcode_minus_L=yes
8720 if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
8721 # Neither direct hardcoding nor static linking is supported with a
8722 # broken collect2.
8723 hardcode_direct=unsupported
8724 fi
8725 ;;
8726
8727 aix4* | aix5*)
8728 if test "$host_cpu" = ia64; then
8729 # On IA64, the linker does run time linking by default, so we don't
8730 # have to do anything special.
8731 aix_use_runtimelinking=no
8732 exp_sym_flag='-Bexport'
8733 no_entry_flag=""
8734 else
8735 # If we're using GNU nm, then we don't want the "-C" option.
8736 # -C means demangle to AIX nm, but means don't demangle with GNU nm
8737 if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
8738 export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
8739 else
8740 export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
8741 fi
8742 aix_use_runtimelinking=no
8743
8744 # Test if we are trying to use run time linking or normal
8745 # AIX style linking. If -brtl is somewhere in LDFLAGS, we
8746 # need to do runtime linking.
8747 case $host_os in aix4.[23]|aix4.[23].*|aix5*)
8748 for ld_flag in $LDFLAGS; do
8749 if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
8750 aix_use_runtimelinking=yes
8751 break
8752 fi
8753 done
8754 ;;
8755 esac
8756
8757 exp_sym_flag='-bexport'
8758 no_entry_flag='-bnoentry'
8759 fi
8760
8761 # When large executables or shared objects are built, AIX ld can
8762 # have problems creating the table of contents. If linking a library
8763 # or program results in "error TOC overflow" add -mminimal-toc to
8764 # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
8765 # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
8766
8767 archive_cmds=''
8768 hardcode_direct=yes
8769 hardcode_libdir_separator=':'
8770 link_all_deplibs=yes
8771
8772 if test "$GCC" = yes; then
8773 case $host_os in aix4.[012]|aix4.[012].*)
8774 # We only want to do this on AIX 4.2 and lower, the check
8775 # below for broken collect2 doesn't work under 4.3+
8776 collect2name=`${CC} -print-prog-name=collect2`
8777 if test -f "$collect2name" && \
8778 strings "$collect2name" | grep resolve_lib_name >/dev/null
8779 then
8780 # We have reworked collect2
8781 hardcode_direct=yes
8782 else
8783 # We have old collect2
8784 hardcode_direct=unsupported
8785 # It fails to find uninstalled libraries when the uninstalled
8786 # path is not listed in the libpath. Setting hardcode_minus_L
8787 # to unsupported forces relinking
8788 hardcode_minus_L=yes
8789 hardcode_libdir_flag_spec='-L$libdir'
8790 hardcode_libdir_separator=
8791 fi
8792 ;;
8793 esac
8794 shared_flag='-shared'
8795 if test "$aix_use_runtimelinking" = yes; then
8796 shared_flag="$shared_flag "'${wl}-G'
8797 fi
8798 else
8799 # not using gcc
8800 if test "$host_cpu" = ia64; then
8801 # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
8802 # chokes on -Wl,-G. The following line is correct:
8803 shared_flag='-G'
8804 else
8805 if test "$aix_use_runtimelinking" = yes; then
8806 shared_flag='${wl}-G'
8807 else
8808 shared_flag='${wl}-bM:SRE'
8809 fi
8810 fi
8811 fi
8812
8813 # It seems that -bexpall does not export symbols beginning with
8814 # underscore (_), so it is better to generate a list of symbols to export.
8815 always_export_symbols=yes
8816 if test "$aix_use_runtimelinking" = yes; then
8817 # Warning - without using the other runtime loading flags (-brtl),
8818 # -berok will link without error, but may produce a broken library.
8819 allow_undefined_flag='-berok'
8820 # Determine the default libpath from the value encoded in an empty executable.
8821 cat >conftest.$ac_ext <<_ACEOF
8822 /* confdefs.h. */
8823 _ACEOF
8824 cat confdefs.h >>conftest.$ac_ext
8825 cat >>conftest.$ac_ext <<_ACEOF
8826 /* end confdefs.h. */
8827
8828 int
8829 main ()
8830 {
8831
8832 ;
8833 return 0;
8834 }
8835 _ACEOF
8836 rm -f conftest.$ac_objext conftest$ac_exeext
8837 if { (ac_try="$ac_link"
8838 case "(($ac_try" in
8839 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
8840 *) ac_try_echo=$ac_try;;
8841 esac
8842 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8843 (eval "$ac_link") 2>conftest.er1
8844 ac_status=$?
8845 grep -v '^ *+' conftest.er1 >conftest.err
8846 rm -f conftest.er1
8847 cat conftest.err >&5
8848 echo "$as_me:$LINENO: \$? = $ac_status" >&5
8849 (exit $ac_status); } && {
8850 test -z "$ac_c_werror_flag" ||
8851 test ! -s conftest.err
8852 } && test -s conftest$ac_exeext &&
8853 $as_test_x conftest$ac_exeext; then
8854
8855 aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
8856 }'`
8857 # Check for a 64-bit object if we didn't find anything.
8858 if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
8859 }'`; fi
8860 else
8861 echo "$as_me: failed program was:" >&5
8862 sed 's/^/| /' conftest.$ac_ext >&5
8863
8864
8865 fi
8866
8867 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
8868 conftest$ac_exeext conftest.$ac_ext
8869 if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
8870
8871 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
8872 archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
8873 else
8874 if test "$host_cpu" = ia64; then
8875 hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
8876 allow_undefined_flag="-z nodefs"
8877 archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
8878 else
8879 # Determine the default libpath from the value encoded in an empty executable.
8880 cat >conftest.$ac_ext <<_ACEOF
8881 /* confdefs.h. */
8882 _ACEOF
8883 cat confdefs.h >>conftest.$ac_ext
8884 cat >>conftest.$ac_ext <<_ACEOF
8885 /* end confdefs.h. */
8886
8887 int
8888 main ()
8889 {
8890
8891 ;
8892 return 0;
8893 }
8894 _ACEOF
8895 rm -f conftest.$ac_objext conftest$ac_exeext
8896 if { (ac_try="$ac_link"
8897 case "(($ac_try" in
8898 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
8899 *) ac_try_echo=$ac_try;;
8900 esac
8901 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8902 (eval "$ac_link") 2>conftest.er1
8903 ac_status=$?
8904 grep -v '^ *+' conftest.er1 >conftest.err
8905 rm -f conftest.er1
8906 cat conftest.err >&5
8907 echo "$as_me:$LINENO: \$? = $ac_status" >&5
8908 (exit $ac_status); } && {
8909 test -z "$ac_c_werror_flag" ||
8910 test ! -s conftest.err
8911 } && test -s conftest$ac_exeext &&
8912 $as_test_x conftest$ac_exeext; then
8913
8914 aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
8915 }'`
8916 # Check for a 64-bit object if we didn't find anything.
8917 if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
8918 }'`; fi
8919 else
8920 echo "$as_me: failed program was:" >&5
8921 sed 's/^/| /' conftest.$ac_ext >&5
8922
8923
8924 fi
8925
8926 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
8927 conftest$ac_exeext conftest.$ac_ext
8928 if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
8929
8930 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
8931 # Warning - without using the other run time loading flags,
8932 # -berok will link without error, but may produce a broken library.
8933 no_undefined_flag=' ${wl}-bernotok'
8934 allow_undefined_flag=' ${wl}-berok'
8935 # Exported symbols can be pulled into shared objects from archives
8936 whole_archive_flag_spec='$convenience'
8937 archive_cmds_need_lc=yes
8938 # This is similar to how AIX traditionally builds its shared libraries.
8939 archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
8940 fi
8941 fi
8942 ;;
8943
8944 amigaos*)
8945 archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
8946 hardcode_libdir_flag_spec='-L$libdir'
8947 hardcode_minus_L=yes
8948 # see comment about different semantics on the GNU ld section
8949 ld_shlibs=no
8950 ;;
8951
8952 bsdi[45]*)
8953 export_dynamic_flag_spec=-rdynamic
8954 ;;
8955
8956 cygwin* | mingw* | pw32*)
8957 # When not using gcc, we currently assume that we are using
8958 # Microsoft Visual C++.
8959 # hardcode_libdir_flag_spec is actually meaningless, as there is
8960 # no search path for DLLs.
8961 hardcode_libdir_flag_spec=' '
8962 allow_undefined_flag=unsupported
8963 # Tell ltmain to make .lib files, not .a files.
8964 libext=lib
8965 # Tell ltmain to make .dll files, not .so files.
8966 shrext_cmds=".dll"
8967 # FIXME: Setting linknames here is a bad hack.
8968 archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
8969 # The linker will automatically build a .lib file if we build a DLL.
8970 old_archive_From_new_cmds='true'
8971 # FIXME: Should let the user specify the lib program.
8972 old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
8973 fix_srcfile_path='`cygpath -w "$srcfile"`'
8974 enable_shared_with_static_runtimes=yes
8975 ;;
8976
8977 darwin* | rhapsody*)
8978 case $host_os in
8979 rhapsody* | darwin1.[012])
8980 allow_undefined_flag='${wl}-undefined ${wl}suppress'
8981 ;;
8982 *) # Darwin 1.3 on
8983 if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
8984 allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
8985 else
8986 case ${MACOSX_DEPLOYMENT_TARGET} in
8987 10.[012])
8988 allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
8989 ;;
8990 10.*)
8991 allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup'
8992 ;;
8993 esac
8994 fi
8995 ;;
8996 esac
8997 archive_cmds_need_lc=no
8998 hardcode_direct=no
8999 hardcode_automatic=yes
9000 hardcode_shlibpath_var=unsupported
9001 whole_archive_flag_spec=''
9002 link_all_deplibs=yes
9003 if test "$GCC" = yes ; then
9004 output_verbose_link_cmd='echo'
9005 archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
9006 module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
9007 # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
9008 archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
9009 module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
9010 else
9011 case $cc_basename in
9012 xlc*)
9013 output_verbose_link_cmd='echo'
9014 archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
9015 module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
9016 # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
9017 archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
9018 module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
9019 ;;
9020 *)
9021 ld_shlibs=no
9022 ;;
9023 esac
9024 fi
9025 ;;
9026
9027 dgux*)
9028 archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
9029 hardcode_libdir_flag_spec='-L$libdir'
9030 hardcode_shlibpath_var=no
9031 ;;
9032
9033 freebsd1*)
9034 ld_shlibs=no
9035 ;;
9036
9037 # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
9038 # support. Future versions do this automatically, but an explicit c++rt0.o
9039 # does not break anything, and helps significantly (at the cost of a little
9040 # extra space).
9041 freebsd2.2*)
9042 archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
9043 hardcode_libdir_flag_spec='-R$libdir'
9044 hardcode_direct=yes
9045 hardcode_shlibpath_var=no
9046 ;;
9047
9048 # Unfortunately, older versions of FreeBSD 2 do not have this feature.
9049 freebsd2*)
9050 archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
9051 hardcode_direct=yes
9052 hardcode_minus_L=yes
9053 hardcode_shlibpath_var=no
9054 ;;
9055
9056 # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
9057 freebsd* | dragonfly*)
9058 archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
9059 hardcode_libdir_flag_spec='-R$libdir'
9060 hardcode_direct=yes
9061 hardcode_shlibpath_var=no
9062 ;;
9063
9064 hpux9*)
9065 if test "$GCC" = yes; then
9066 archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
9067 else
9068 archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
9069 fi
9070 hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
9071 hardcode_libdir_separator=:
9072 hardcode_direct=yes
9073
9074 # hardcode_minus_L: Not really in the search PATH,
9075 # but as the default location of the library.
9076 hardcode_minus_L=yes
9077 export_dynamic_flag_spec='${wl}-E'
9078 ;;
9079
9080 hpux10*)
9081 if test "$GCC" = yes -a "$with_gnu_ld" = no; then
9082 archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
9083 else
9084 archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
9085 fi
9086 if test "$with_gnu_ld" = no; then
9087 hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
9088 hardcode_libdir_separator=:
9089
9090 hardcode_direct=yes
9091 export_dynamic_flag_spec='${wl}-E'
9092
9093 # hardcode_minus_L: Not really in the search PATH,
9094 # but as the default location of the library.
9095 hardcode_minus_L=yes
9096 fi
9097 ;;
9098
9099 hpux11*)
9100 if test "$GCC" = yes -a "$with_gnu_ld" = no; then
9101 case $host_cpu in
9102 hppa*64*)
9103 archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
9104 ;;
9105 ia64*)
9106 archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
9107 ;;
9108 *)
9109 archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
9110 ;;
9111 esac
9112 else
9113 case $host_cpu in
9114 hppa*64*)
9115 archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
9116 ;;
9117 ia64*)
9118 archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
9119 ;;
9120 *)
9121 archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
9122 ;;
9123 esac
9124 fi
9125 if test "$with_gnu_ld" = no; then
9126 hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
9127 hardcode_libdir_separator=:
9128
9129 case $host_cpu in
9130 hppa*64*|ia64*)
9131 hardcode_libdir_flag_spec_ld='+b $libdir'
9132 hardcode_direct=no
9133 hardcode_shlibpath_var=no
9134 ;;
9135 *)
9136 hardcode_direct=yes
9137 export_dynamic_flag_spec='${wl}-E'
9138
9139 # hardcode_minus_L: Not really in the search PATH,
9140 # but as the default location of the library.
9141 hardcode_minus_L=yes
9142 ;;
9143 esac
9144 fi
9145 ;;
9146
9147 irix5* | irix6* | nonstopux*)
9148 if test "$GCC" = yes; then
9149 archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
9150 else
9151 archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
9152 hardcode_libdir_flag_spec_ld='-rpath $libdir'
9153 fi
9154 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
9155 hardcode_libdir_separator=:
9156 link_all_deplibs=yes
9157 ;;
9158
9159 netbsd* | netbsdelf*-gnu)
9160 if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
9161 archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
9162 else
9163 archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
9164 fi
9165 hardcode_libdir_flag_spec='-R$libdir'
9166 hardcode_direct=yes
9167 hardcode_shlibpath_var=no
9168 ;;
9169
9170 newsos6)
9171 archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
9172 hardcode_direct=yes
9173 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
9174 hardcode_libdir_separator=:
9175 hardcode_shlibpath_var=no
9176 ;;
9177
9178 openbsd*)
9179 hardcode_direct=yes
9180 hardcode_shlibpath_var=no
9181 if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
9182 archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
9183 archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
9184 hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
9185 export_dynamic_flag_spec='${wl}-E'
9186 else
9187 case $host_os in
9188 openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
9189 archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
9190 hardcode_libdir_flag_spec='-R$libdir'
9191 ;;
9192 *)
9193 archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
9194 hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
9195 ;;
9196 esac
9197 fi
9198 ;;
9199
9200 os2*)
9201 hardcode_libdir_flag_spec='-L$libdir'
9202 hardcode_minus_L=yes
9203 allow_undefined_flag=unsupported
9204 archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
9205 old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
9206 ;;
9207
9208 osf3*)
9209 if test "$GCC" = yes; then
9210 allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
9211 archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
9212 else
9213 allow_undefined_flag=' -expect_unresolved \*'
9214 archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
9215 fi
9216 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
9217 hardcode_libdir_separator=:
9218 ;;
9219
9220 osf4* | osf5*) # as osf3* with the addition of -msym flag
9221 if test "$GCC" = yes; then
9222 allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
9223 archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
9224 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
9225 else
9226 allow_undefined_flag=' -expect_unresolved \*'
9227 archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
9228 archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
9229 $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
9230
9231 # Both c and cxx compiler support -rpath directly
9232 hardcode_libdir_flag_spec='-rpath $libdir'
9233 fi
9234 hardcode_libdir_separator=:
9235 ;;
9236
9237 solaris*)
9238 no_undefined_flag=' -z text'
9239 if test "$GCC" = yes; then
9240 wlarc='${wl}'
9241 archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
9242 archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
9243 $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
9244 else
9245 wlarc=''
9246 archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
9247 archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
9248 $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
9249 fi
9250 hardcode_libdir_flag_spec='-R$libdir'
9251 hardcode_shlibpath_var=no
9252 case $host_os in
9253 solaris2.[0-5] | solaris2.[0-5].*) ;;
9254 *)
9255 # The compiler driver will combine linker options so we
9256 # cannot just pass the convience library names through
9257 # without $wl, iff we do not link with $LD.
9258 # Luckily, gcc supports the same syntax we need for Sun Studio.
9259 # Supported since Solaris 2.6 (maybe 2.5.1?)
9260 case $wlarc in
9261 '')
9262 whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
9263 *)
9264 whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
9265 esac ;;
9266 esac
9267 link_all_deplibs=yes
9268 ;;
9269
9270 sunos4*)
9271 if test "x$host_vendor" = xsequent; then
9272 # Use $CC to link under sequent, because it throws in some extra .o
9273 # files that make .init and .fini sections work.
9274 archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
9275 else
9276 archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
9277 fi
9278 hardcode_libdir_flag_spec='-L$libdir'
9279 hardcode_direct=yes
9280 hardcode_minus_L=yes
9281 hardcode_shlibpath_var=no
9282 ;;
9283
9284 sysv4)
9285 case $host_vendor in
9286 sni)
9287 archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
9288 hardcode_direct=yes # is this really true???
9289 ;;
9290 siemens)
9291 ## LD is ld it makes a PLAMLIB
9292 ## CC just makes a GrossModule.
9293 archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
9294 reload_cmds='$CC -r -o $output$reload_objs'
9295 hardcode_direct=no
9296 ;;
9297 motorola)
9298 archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
9299 hardcode_direct=no #Motorola manual says yes, but my tests say they lie
9300 ;;
9301 esac
9302 runpath_var='LD_RUN_PATH'
9303 hardcode_shlibpath_var=no
9304 ;;
9305
9306 sysv4.3*)
9307 archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
9308 hardcode_shlibpath_var=no
9309 export_dynamic_flag_spec='-Bexport'
9310 ;;
9311
9312 sysv4*MP*)
9313 if test -d /usr/nec; then
9314 archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
9315 hardcode_shlibpath_var=no
9316 runpath_var=LD_RUN_PATH
9317 hardcode_runpath_var=yes
9318 ld_shlibs=yes
9319 fi
9320 ;;
9321
9322 sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
9323 no_undefined_flag='${wl}-z,text'
9324 archive_cmds_need_lc=no
9325 hardcode_shlibpath_var=no
9326 runpath_var='LD_RUN_PATH'
9327
9328 if test "$GCC" = yes; then
9329 archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
9330 archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
9331 else
9332 archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
9333 archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
9334 fi
9335 ;;
9336
9337 sysv5* | sco3.2v5* | sco5v6*)
9338 # Note: We can NOT use -z defs as we might desire, because we do not
9339 # link with -lc, and that would cause any symbols used from libc to
9340 # always be unresolved, which means just about no library would
9341 # ever link correctly. If we're not using GNU ld we use -z text
9342 # though, which does catch some bad symbols but isn't as heavy-handed
9343 # as -z defs.
9344 no_undefined_flag='${wl}-z,text'
9345 allow_undefined_flag='${wl}-z,nodefs'
9346 archive_cmds_need_lc=no
9347 hardcode_shlibpath_var=no
9348 hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
9349 hardcode_libdir_separator=':'
9350 link_all_deplibs=yes
9351 export_dynamic_flag_spec='${wl}-Bexport'
9352 runpath_var='LD_RUN_PATH'
9353
9354 if test "$GCC" = yes; then
9355 archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
9356 archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
9357 else
9358 archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
9359 archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
9360 fi
9361 ;;
9362
9363 uts4*)
9364 archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
9365 hardcode_libdir_flag_spec='-L$libdir'
9366 hardcode_shlibpath_var=no
9367 ;;
9368
9369 *)
9370 ld_shlibs=no
9371 ;;
9372 esac
9373 fi
9374
9375 { echo "$as_me:$LINENO: result: $ld_shlibs" >&5
9376 echo "${ECHO_T}$ld_shlibs" >&6; }
9377 test "$ld_shlibs" = no && can_build_shared=no
9378
9379 #
9380 # Do we need to explicitly link libc?
9381 #
9382 case "x$archive_cmds_need_lc" in
9383 x|xyes)
9384 # Assume -lc should be added
9385 archive_cmds_need_lc=yes
9386
9387 if test "$enable_shared" = yes && test "$GCC" = yes; then
9388 case $archive_cmds in
9389 *'~'*)
9390 # FIXME: we may have to deal with multi-command sequences.
9391 ;;
9392 '$CC '*)
9393 # Test whether the compiler implicitly links with -lc since on some
9394 # systems, -lgcc has to come before -lc. If gcc already passes -lc
9395 # to ld, don't add -lc before -lgcc.
9396 { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
9397 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
9398 $rm conftest*
9399 printf "$lt_simple_compile_test_code" > conftest.$ac_ext
9400
9401 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
9402 (eval $ac_compile) 2>&5
9403 ac_status=$?
9404 echo "$as_me:$LINENO: \$? = $ac_status" >&5
9405 (exit $ac_status); } 2>conftest.err; then
9406 soname=conftest
9407 lib=conftest
9408 libobjs=conftest.$ac_objext
9409 deplibs=
9410 wl=$lt_prog_compiler_wl
9411 pic_flag=$lt_prog_compiler_pic
9412 compiler_flags=-v
9413 linker_flags=-v
9414 verstring=
9415 output_objdir=.
9416 libname=conftest
9417 lt_save_allow_undefined_flag=$allow_undefined_flag
9418 allow_undefined_flag=
9419 if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
9420 (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
9421 ac_status=$?
9422 echo "$as_me:$LINENO: \$? = $ac_status" >&5
9423 (exit $ac_status); }
9424 then
9425 archive_cmds_need_lc=no
9426 else
9427 archive_cmds_need_lc=yes
9428 fi
9429 allow_undefined_flag=$lt_save_allow_undefined_flag
9430 else
9431 cat conftest.err 1>&5
9432 fi
9433 $rm conftest*
9434 { echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
9435 echo "${ECHO_T}$archive_cmds_need_lc" >&6; }
9436 ;;
9437 esac
9438 fi
9439 ;;
9440 esac
9441
9442 { echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
9443 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
9444 library_names_spec=
9445 libname_spec='lib$name'
9446 soname_spec=
9447 shrext_cmds=".so"
9448 postinstall_cmds=
9449 postuninstall_cmds=
9450 finish_cmds=
9451 finish_eval=
9452 shlibpath_var=
9453 shlibpath_overrides_runpath=unknown
9454 version_type=none
9455 dynamic_linker="$host_os ld.so"
9456 sys_lib_dlsearch_path_spec="/lib /usr/lib"
9457 if test "$GCC" = yes; then
9458 sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
9459 if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
9460 # if the path contains ";" then we assume it to be the separator
9461 # otherwise default to the standard path separator (i.e. ":") - it is
9462 # assumed that no part of a normal pathname contains ";" but that should
9463 # okay in the real world where ";" in dirpaths is itself problematic.
9464 sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
9465 else
9466 sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
9467 fi
9468 else
9469 sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
9470 fi
9471 need_lib_prefix=unknown
9472 hardcode_into_libs=no
9473
9474 # when you set need_version to no, make sure it does not cause -set_version
9475 # flags to be left without arguments
9476 need_version=unknown
9477
9478 case $host_os in
9479 aix3*)
9480 version_type=linux
9481 library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
9482 shlibpath_var=LIBPATH
9483
9484 # AIX 3 has no versioning support, so we append a major version to the name.
9485 soname_spec='${libname}${release}${shared_ext}$major'
9486 ;;
9487
9488 aix4* | aix5*)
9489 version_type=linux
9490 need_lib_prefix=no
9491 need_version=no
9492 hardcode_into_libs=yes
9493 if test "$host_cpu" = ia64; then
9494 # AIX 5 supports IA64
9495 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
9496 shlibpath_var=LD_LIBRARY_PATH
9497 else
9498 # With GCC up to 2.95.x, collect2 would create an import file
9499 # for dependence libraries. The import file would start with
9500 # the line `#! .'. This would cause the generated library to
9501 # depend on `.', always an invalid library. This was fixed in
9502 # development snapshots of GCC prior to 3.0.
9503 case $host_os in
9504 aix4 | aix4.[01] | aix4.[01].*)
9505 if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
9506 echo ' yes '
9507 echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
9508 :
9509 else
9510 can_build_shared=no
9511 fi
9512 ;;
9513 esac
9514 # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
9515 # soname into executable. Probably we can add versioning support to
9516 # collect2, so additional links can be useful in future.
9517 if test "$aix_use_runtimelinking" = yes; then
9518 # If using run time linking (on AIX 4.2 or later) use lib<name>.so
9519 # instead of lib<name>.a to let people know that these are not
9520 # typical AIX shared libraries.
9521 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
9522 else
9523 # We preserve .a as extension for shared libraries through AIX4.2
9524 # and later when we are not doing run time linking.
9525 library_names_spec='${libname}${release}.a $libname.a'
9526 soname_spec='${libname}${release}${shared_ext}$major'
9527 fi
9528 shlibpath_var=LIBPATH
9529 fi
9530 ;;
9531
9532 amigaos*)
9533 library_names_spec='$libname.ixlibrary $libname.a'
9534 # Create ${libname}_ixlibrary.a entries in /sys/libs.
9535 finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
9536 ;;
9537
9538 beos*)
9539 library_names_spec='${libname}${shared_ext}'
9540 dynamic_linker="$host_os ld.so"
9541 shlibpath_var=LIBRARY_PATH
9542 ;;
9543
9544 bsdi[45]*)
9545 version_type=linux
9546 need_version=no
9547 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
9548 soname_spec='${libname}${release}${shared_ext}$major'
9549 finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
9550 shlibpath_var=LD_LIBRARY_PATH
9551 sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
9552 sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
9553 # the default ld.so.conf also contains /usr/contrib/lib and
9554 # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
9555 # libtool to hard-code these into programs
9556 ;;
9557
9558 cygwin* | mingw* | pw32*)
9559 version_type=windows
9560 shrext_cmds=".dll"
9561 need_version=no
9562 need_lib_prefix=no
9563
9564 case $GCC,$host_os in
9565 yes,cygwin* | yes,mingw* | yes,pw32*)
9566 library_names_spec='$libname.dll.a'
9567 # DLL is installed to $(libdir)/../bin by postinstall_cmds
9568 postinstall_cmds='base_file=`basename \${file}`~
9569 dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
9570 dldir=$destdir/`dirname \$dlpath`~
9571 test -d \$dldir || mkdir -p \$dldir~
9572 $install_prog $dir/$dlname \$dldir/$dlname~
9573 chmod a+x \$dldir/$dlname'
9574 postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
9575 dlpath=$dir/\$dldll~
9576 $rm \$dlpath'
9577 shlibpath_overrides_runpath=yes
9578
9579 case $host_os in
9580 cygwin*)
9581 # Cygwin DLLs use 'cyg' prefix rather than 'lib'
9582 soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
9583 sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
9584 ;;
9585 mingw*)
9586 # MinGW DLLs use traditional 'lib' prefix
9587 soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
9588 sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
9589 if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
9590 # It is most probably a Windows format PATH printed by
9591 # mingw gcc, but we are running on Cygwin. Gcc prints its search
9592 # path with ; separators, and with drive letters. We can handle the
9593 # drive letters (cygwin fileutils understands them), so leave them,
9594 # especially as we might pass files found there to a mingw objdump,
9595 # which wouldn't understand a cygwinified path. Ahh.
9596 sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
9597 else
9598 sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
9599 fi
9600 ;;
9601 pw32*)
9602 # pw32 DLLs use 'pw' prefix rather than 'lib'
9603 library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
9604 ;;
9605 esac
9606 ;;
9607
9608 *)
9609 library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
9610 ;;
9611 esac
9612 dynamic_linker='Win32 ld.exe'
9613 # FIXME: first we should search . and the directory the executable is in
9614 shlibpath_var=PATH
9615 ;;
9616
9617 darwin* | rhapsody*)
9618 dynamic_linker="$host_os dyld"
9619 version_type=darwin
9620 need_lib_prefix=no
9621 need_version=no
9622 library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
9623 soname_spec='${libname}${release}${major}$shared_ext'
9624 shlibpath_overrides_runpath=yes
9625 shlibpath_var=DYLD_LIBRARY_PATH
9626 shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
9627 # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
9628 if test "$GCC" = yes; then
9629 sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
9630 else
9631 sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
9632 fi
9633 sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
9634 ;;
9635
9636 dgux*)
9637 version_type=linux
9638 need_lib_prefix=no
9639 need_version=no
9640 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
9641 soname_spec='${libname}${release}${shared_ext}$major'
9642 shlibpath_var=LD_LIBRARY_PATH
9643 ;;
9644
9645 freebsd1*)
9646 dynamic_linker=no
9647 ;;
9648
9649 freebsd* | dragonfly*)
9650 # DragonFly does not have aout. When/if they implement a new
9651 # versioning mechanism, adjust this.
9652 if test -x /usr/bin/objformat; then
9653 objformat=`/usr/bin/objformat`
9654 else
9655 case $host_os in
9656 freebsd[123]*) objformat=aout ;;
9657 *) objformat=elf ;;
9658 esac
9659 fi
9660 version_type=freebsd-$objformat
9661 case $version_type in
9662 freebsd-elf*)
9663 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
9664 need_version=no
9665 need_lib_prefix=no
9666 ;;
9667 freebsd-*)
9668 library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
9669 need_version=yes
9670 ;;
9671 esac
9672 shlibpath_var=LD_LIBRARY_PATH
9673 case $host_os in
9674 freebsd2*)
9675 shlibpath_overrides_runpath=yes
9676 ;;
9677 freebsd3.[01]* | freebsdelf3.[01]*)
9678 shlibpath_overrides_runpath=yes
9679 hardcode_into_libs=yes
9680 ;;
9681 freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
9682 freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
9683 shlibpath_overrides_runpath=no
9684 hardcode_into_libs=yes
9685 ;;
9686 freebsd*) # from 4.6 on
9687 shlibpath_overrides_runpath=yes
9688 hardcode_into_libs=yes
9689 ;;
9690 esac
9691 ;;
9692
9693 gnu*)
9694 version_type=linux
9695 need_lib_prefix=no
9696 need_version=no
9697 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
9698 soname_spec='${libname}${release}${shared_ext}$major'
9699 shlibpath_var=LD_LIBRARY_PATH
9700 hardcode_into_libs=yes
9701 ;;
9702
9703 hpux9* | hpux10* | hpux11*)
9704 # Give a soname corresponding to the major version so that dld.sl refuses to
9705 # link against other versions.
9706 version_type=sunos
9707 need_lib_prefix=no
9708 need_version=no
9709 case $host_cpu in
9710 ia64*)
9711 shrext_cmds='.so'
9712 hardcode_into_libs=yes
9713 dynamic_linker="$host_os dld.so"
9714 shlibpath_var=LD_LIBRARY_PATH
9715 shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
9716 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
9717 soname_spec='${libname}${release}${shared_ext}$major'
9718 if test "X$HPUX_IA64_MODE" = X32; then
9719 sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
9720 else
9721 sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
9722 fi
9723 sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
9724 ;;
9725 hppa*64*)
9726 shrext_cmds='.sl'
9727 hardcode_into_libs=yes
9728 dynamic_linker="$host_os dld.sl"
9729 shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
9730 shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
9731 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
9732 soname_spec='${libname}${release}${shared_ext}$major'
9733 sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
9734 sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
9735 ;;
9736 *)
9737 shrext_cmds='.sl'
9738 dynamic_linker="$host_os dld.sl"
9739 shlibpath_var=SHLIB_PATH
9740 shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
9741 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
9742 soname_spec='${libname}${release}${shared_ext}$major'
9743 ;;
9744 esac
9745 # HP-UX runs *really* slowly unless shared libraries are mode 555.
9746 postinstall_cmds='chmod 555 $lib'
9747 ;;
9748
9749 interix3*)
9750 version_type=linux
9751 need_lib_prefix=no
9752 need_version=no
9753 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
9754 soname_spec='${libname}${release}${shared_ext}$major'
9755 dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
9756 shlibpath_var=LD_LIBRARY_PATH
9757 shlibpath_overrides_runpath=no
9758 hardcode_into_libs=yes
9759 ;;
9760
9761 irix5* | irix6* | nonstopux*)
9762 case $host_os in
9763 nonstopux*) version_type=nonstopux ;;
9764 *)
9765 if test "$lt_cv_prog_gnu_ld" = yes; then
9766 version_type=linux
9767 else
9768 version_type=irix
9769 fi ;;
9770 esac
9771 need_lib_prefix=no
9772 need_version=no
9773 soname_spec='${libname}${release}${shared_ext}$major'
9774 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
9775 case $host_os in
9776 irix5* | nonstopux*)
9777 libsuff= shlibsuff=
9778 ;;
9779 *)
9780 case $LD in # libtool.m4 will add one of these switches to LD
9781 *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
9782 libsuff= shlibsuff= libmagic=32-bit;;
9783 *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
9784 libsuff=32 shlibsuff=N32 libmagic=N32;;
9785 *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
9786 libsuff=64 shlibsuff=64 libmagic=64-bit;;
9787 *) libsuff= shlibsuff= libmagic=never-match;;
9788 esac
9789 ;;
9790 esac
9791 shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
9792 shlibpath_overrides_runpath=no
9793 sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
9794 sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
9795 hardcode_into_libs=yes
9796 ;;
9797
9798 # No shared lib support for Linux oldld, aout, or coff.
9799 linux*oldld* | linux*aout* | linux*coff*)
9800 dynamic_linker=no
9801 ;;
9802
9803 # This must be Linux ELF.
9804 linux* | k*bsd*-gnu)
9805 version_type=linux
9806 need_lib_prefix=no
9807 need_version=no
9808 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
9809 soname_spec='${libname}${release}${shared_ext}$major'
9810 finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
9811 shlibpath_var=LD_LIBRARY_PATH
9812 shlibpath_overrides_runpath=no
9813 # This implies no fast_install, which is unacceptable.
9814 # Some rework will be needed to allow for fast_install
9815 # before this can be enabled.
9816 hardcode_into_libs=yes
9817
9818 # Append ld.so.conf contents to the search path
9819 if test -f /etc/ld.so.conf; then
9820 lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
9821 sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
9822 fi
9823
9824 # We used to test for /lib/ld.so.1 and disable shared libraries on
9825 # powerpc, because MkLinux only supported shared libraries with the
9826 # GNU dynamic linker. Since this was broken with cross compilers,
9827 # most powerpc-linux boxes support dynamic linking these days and
9828 # people can always --disable-shared, the test was removed, and we
9829 # assume the GNU/Linux dynamic linker is in use.
9830 dynamic_linker='GNU/Linux ld.so'
9831 ;;
9832
9833 netbsdelf*-gnu)
9834 version_type=linux
9835 need_lib_prefix=no
9836 need_version=no
9837 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
9838 soname_spec='${libname}${release}${shared_ext}$major'
9839 shlibpath_var=LD_LIBRARY_PATH
9840 shlibpath_overrides_runpath=no
9841 hardcode_into_libs=yes
9842 dynamic_linker='NetBSD ld.elf_so'
9843 ;;
9844
9845 netbsd*)
9846 version_type=sunos
9847 need_lib_prefix=no
9848 need_version=no
9849 if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
9850 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
9851 finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
9852 dynamic_linker='NetBSD (a.out) ld.so'
9853 else
9854 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
9855 soname_spec='${libname}${release}${shared_ext}$major'
9856 dynamic_linker='NetBSD ld.elf_so'
9857 fi
9858 shlibpath_var=LD_LIBRARY_PATH
9859 shlibpath_overrides_runpath=yes
9860 hardcode_into_libs=yes
9861 ;;
9862
9863 newsos6)
9864 version_type=linux
9865 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
9866 shlibpath_var=LD_LIBRARY_PATH
9867 shlibpath_overrides_runpath=yes
9868 ;;
9869
9870 nto-qnx*)
9871 version_type=linux
9872 need_lib_prefix=no
9873 need_version=no
9874 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
9875 soname_spec='${libname}${release}${shared_ext}$major'
9876 shlibpath_var=LD_LIBRARY_PATH
9877 shlibpath_overrides_runpath=yes
9878 ;;
9879
9880 openbsd*)
9881 version_type=sunos
9882 sys_lib_dlsearch_path_spec="/usr/lib"
9883 need_lib_prefix=no
9884 # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
9885 case $host_os in
9886 openbsd3.3 | openbsd3.3.*) need_version=yes ;;
9887 *) need_version=no ;;
9888 esac
9889 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
9890 finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
9891 shlibpath_var=LD_LIBRARY_PATH
9892 if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
9893 case $host_os in
9894 openbsd2.[89] | openbsd2.[89].*)
9895 shlibpath_overrides_runpath=no
9896 ;;
9897 *)
9898 shlibpath_overrides_runpath=yes
9899 ;;
9900 esac
9901 else
9902 shlibpath_overrides_runpath=yes
9903 fi
9904 ;;
9905
9906 os2*)
9907 libname_spec='$name'
9908 shrext_cmds=".dll"
9909 need_lib_prefix=no
9910 library_names_spec='$libname${shared_ext} $libname.a'
9911 dynamic_linker='OS/2 ld.exe'
9912 shlibpath_var=LIBPATH
9913 ;;
9914
9915 osf3* | osf4* | osf5*)
9916 version_type=osf
9917 need_lib_prefix=no
9918 need_version=no
9919 soname_spec='${libname}${release}${shared_ext}$major'
9920 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
9921 shlibpath_var=LD_LIBRARY_PATH
9922 sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
9923 sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
9924 ;;
9925
9926 solaris*)
9927 version_type=linux
9928 need_lib_prefix=no
9929 need_version=no
9930 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
9931 soname_spec='${libname}${release}${shared_ext}$major'
9932 shlibpath_var=LD_LIBRARY_PATH
9933 shlibpath_overrides_runpath=yes
9934 hardcode_into_libs=yes
9935 # ldd complains unless libraries are executable
9936 postinstall_cmds='chmod +x $lib'
9937 ;;
9938
9939 sunos4*)
9940 version_type=sunos
9941 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
9942 finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
9943 shlibpath_var=LD_LIBRARY_PATH
9944 shlibpath_overrides_runpath=yes
9945 if test "$with_gnu_ld" = yes; then
9946 need_lib_prefix=no
9947 fi
9948 need_version=yes
9949 ;;
9950
9951 sysv4 | sysv4.3*)
9952 version_type=linux
9953 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
9954 soname_spec='${libname}${release}${shared_ext}$major'
9955 shlibpath_var=LD_LIBRARY_PATH
9956 case $host_vendor in
9957 sni)
9958 shlibpath_overrides_runpath=no
9959 need_lib_prefix=no
9960 export_dynamic_flag_spec='${wl}-Blargedynsym'
9961 runpath_var=LD_RUN_PATH
9962 ;;
9963 siemens)
9964 need_lib_prefix=no
9965 ;;
9966 motorola)
9967 need_lib_prefix=no
9968 need_version=no
9969 shlibpath_overrides_runpath=no
9970 sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
9971 ;;
9972 esac
9973 ;;
9974
9975 sysv4*MP*)
9976 if test -d /usr/nec ;then
9977 version_type=linux
9978 library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
9979 soname_spec='$libname${shared_ext}.$major'
9980 shlibpath_var=LD_LIBRARY_PATH
9981 fi
9982 ;;
9983
9984 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
9985 version_type=freebsd-elf
9986 need_lib_prefix=no
9987 need_version=no
9988 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
9989 soname_spec='${libname}${release}${shared_ext}$major'
9990 shlibpath_var=LD_LIBRARY_PATH
9991 hardcode_into_libs=yes
9992 if test "$with_gnu_ld" = yes; then
9993 sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
9994 shlibpath_overrides_runpath=no
9995 else
9996 sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
9997 shlibpath_overrides_runpath=yes
9998 case $host_os in
9999 sco3.2v5*)
10000 sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
10001 ;;
10002 esac
10003 fi
10004 sys_lib_dlsearch_path_spec='/usr/lib'
10005 ;;
10006
10007 uts4*)
10008 version_type=linux
10009 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
10010 soname_spec='${libname}${release}${shared_ext}$major'
10011 shlibpath_var=LD_LIBRARY_PATH
10012 ;;
10013
10014 *)
10015 dynamic_linker=no
10016 ;;
10017 esac
10018 { echo "$as_me:$LINENO: result: $dynamic_linker" >&5
10019 echo "${ECHO_T}$dynamic_linker" >&6; }
10020 test "$dynamic_linker" = no && can_build_shared=no
10021
10022 variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
10023 if test "$GCC" = yes; then
10024 variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
10025 fi
10026
10027 { echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
10028 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
10029 hardcode_action=
10030 if test -n "$hardcode_libdir_flag_spec" || \
10031 test -n "$runpath_var" || \
10032 test "X$hardcode_automatic" = "Xyes" ; then
10033
10034 # We can hardcode non-existant directories.
10035 if test "$hardcode_direct" != no &&
10036 # If the only mechanism to avoid hardcoding is shlibpath_var, we
10037 # have to relink, otherwise we might link with an installed library
10038 # when we should be linking with a yet-to-be-installed one
10039 ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no &&
10040 test "$hardcode_minus_L" != no; then
10041 # Linking always hardcodes the temporary library directory.
10042 hardcode_action=relink
10043 else
10044 # We can link without hardcoding, and we can hardcode nonexisting dirs.
10045 hardcode_action=immediate
10046 fi
10047 else
10048 # We cannot hardcode anything, or else we can only hardcode existing
10049 # directories.
10050 hardcode_action=unsupported
10051 fi
10052 { echo "$as_me:$LINENO: result: $hardcode_action" >&5
10053 echo "${ECHO_T}$hardcode_action" >&6; }
10054
10055 if test "$hardcode_action" = relink; then
10056 # Fast installation is not supported
10057 enable_fast_install=no
10058 elif test "$shlibpath_overrides_runpath" = yes ||
10059 test "$enable_shared" = no; then
10060 # Fast installation is not necessary
10061 enable_fast_install=needless
10062 fi
10063
10064 striplib=
10065 old_striplib=
10066 { echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
10067 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6; }
10068 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
10069 test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
10070 test -z "$striplib" && striplib="$STRIP --strip-unneeded"
10071 { echo "$as_me:$LINENO: result: yes" >&5
10072 echo "${ECHO_T}yes" >&6; }
10073 else
10074 # FIXME - insert some real tests, host_os isn't really good enough
10075 case $host_os in
10076 darwin*)
10077 if test -n "$STRIP" ; then
10078 striplib="$STRIP -x"
10079 { echo "$as_me:$LINENO: result: yes" >&5
10080 echo "${ECHO_T}yes" >&6; }
10081 else
10082 { echo "$as_me:$LINENO: result: no" >&5
10083 echo "${ECHO_T}no" >&6; }
10084 fi
10085 ;;
10086 *)
10087 { echo "$as_me:$LINENO: result: no" >&5
10088 echo "${ECHO_T}no" >&6; }
10089 ;;
10090 esac
10091 fi
10092
10093 if test "x$enable_dlopen" != xyes; then
10094 enable_dlopen=unknown
10095 enable_dlopen_self=unknown
10096 enable_dlopen_self_static=unknown
10097 else
10098 lt_cv_dlopen=no
10099 lt_cv_dlopen_libs=
10100
10101 case $host_os in
10102 beos*)
10103 lt_cv_dlopen="load_add_on"
10104 lt_cv_dlopen_libs=
10105 lt_cv_dlopen_self=yes
10106 ;;
10107
10108 mingw* | pw32*)
10109 lt_cv_dlopen="LoadLibrary"
10110 lt_cv_dlopen_libs=
10111 ;;
10112
10113 cygwin*)
10114 lt_cv_dlopen="dlopen"
10115 lt_cv_dlopen_libs=
10116 ;;
10117
10118 darwin*)
10119 # if libdl is installed we need to link against it
10120 { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
10121 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; }
10122 if test "${ac_cv_lib_dl_dlopen+set}" = set; then
10123 echo $ECHO_N "(cached) $ECHO_C" >&6
10124 else
10125 ac_check_lib_save_LIBS=$LIBS
10126 LIBS="-ldl $LIBS"
10127 cat >conftest.$ac_ext <<_ACEOF
10128 /* confdefs.h. */
10129 _ACEOF
10130 cat confdefs.h >>conftest.$ac_ext
10131 cat >>conftest.$ac_ext <<_ACEOF
10132 /* end confdefs.h. */
10133
10134 /* Override any GCC internal prototype to avoid an error.
10135 Use char because int might match the return type of a GCC
10136 builtin and then its argument prototype would still apply. */
10137 #ifdef __cplusplus
10138 extern "C"
10139 #endif
10140 char dlopen ();
10141 int
10142 main ()
10143 {
10144 return dlopen ();
10145 ;
10146 return 0;
10147 }
10148 _ACEOF
10149 rm -f conftest.$ac_objext conftest$ac_exeext
10150 if { (ac_try="$ac_link"
10151 case "(($ac_try" in
10152 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
10153 *) ac_try_echo=$ac_try;;
10154 esac
10155 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
10156 (eval "$ac_link") 2>conftest.er1
10157 ac_status=$?
10158 grep -v '^ *+' conftest.er1 >conftest.err
10159 rm -f conftest.er1
10160 cat conftest.err >&5
10161 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10162 (exit $ac_status); } && {
10163 test -z "$ac_c_werror_flag" ||
10164 test ! -s conftest.err
10165 } && test -s conftest$ac_exeext &&
10166 $as_test_x conftest$ac_exeext; then
10167 ac_cv_lib_dl_dlopen=yes
10168 else
10169 echo "$as_me: failed program was:" >&5
10170 sed 's/^/| /' conftest.$ac_ext >&5
10171
10172 ac_cv_lib_dl_dlopen=no
10173 fi
10174
10175 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
10176 conftest$ac_exeext conftest.$ac_ext
10177 LIBS=$ac_check_lib_save_LIBS
10178 fi
10179 { echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
10180 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; }
10181 if test $ac_cv_lib_dl_dlopen = yes; then
10182 lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
10183 else
10184
10185 lt_cv_dlopen="dyld"
10186 lt_cv_dlopen_libs=
10187 lt_cv_dlopen_self=yes
10188
10189 fi
10190
10191 ;;
10192
10193 *)
10194 { echo "$as_me:$LINENO: checking for shl_load" >&5
10195 echo $ECHO_N "checking for shl_load... $ECHO_C" >&6; }
10196 if test "${ac_cv_func_shl_load+set}" = set; then
10197 echo $ECHO_N "(cached) $ECHO_C" >&6
10198 else
10199 cat >conftest.$ac_ext <<_ACEOF
10200 /* confdefs.h. */
10201 _ACEOF
10202 cat confdefs.h >>conftest.$ac_ext
10203 cat >>conftest.$ac_ext <<_ACEOF
10204 /* end confdefs.h. */
10205 /* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
10206 For example, HP-UX 11i <limits.h> declares gettimeofday. */
10207 #define shl_load innocuous_shl_load
10208
10209 /* System header to define __stub macros and hopefully few prototypes,
10210 which can conflict with char shl_load (); below.
10211 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
10212 <limits.h> exists even on freestanding compilers. */
10213
10214 #ifdef __STDC__
10215 # include <limits.h>
10216 #else
10217 # include <assert.h>
10218 #endif
10219
10220 #undef shl_load
10221
10222 /* Override any GCC internal prototype to avoid an error.
10223 Use char because int might match the return type of a GCC
10224 builtin and then its argument prototype would still apply. */
10225 #ifdef __cplusplus
10226 extern "C"
10227 #endif
10228 char shl_load ();
10229 /* The GNU C library defines this for functions which it implements
10230 to always fail with ENOSYS. Some functions are actually named
10231 something starting with __ and the normal name is an alias. */
10232 #if defined __stub_shl_load || defined __stub___shl_load
10233 choke me
10234 #endif
10235
10236 int
10237 main ()
10238 {
10239 return shl_load ();
10240 ;
10241 return 0;
10242 }
10243 _ACEOF
10244 rm -f conftest.$ac_objext conftest$ac_exeext
10245 if { (ac_try="$ac_link"
10246 case "(($ac_try" in
10247 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
10248 *) ac_try_echo=$ac_try;;
10249 esac
10250 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
10251 (eval "$ac_link") 2>conftest.er1
10252 ac_status=$?
10253 grep -v '^ *+' conftest.er1 >conftest.err
10254 rm -f conftest.er1
10255 cat conftest.err >&5
10256 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10257 (exit $ac_status); } && {
10258 test -z "$ac_c_werror_flag" ||
10259 test ! -s conftest.err
10260 } && test -s conftest$ac_exeext &&
10261 $as_test_x conftest$ac_exeext; then
10262 ac_cv_func_shl_load=yes
10263 else
10264 echo "$as_me: failed program was:" >&5
10265 sed 's/^/| /' conftest.$ac_ext >&5
10266
10267 ac_cv_func_shl_load=no
10268 fi
10269
10270 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
10271 conftest$ac_exeext conftest.$ac_ext
10272 fi
10273 { echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
10274 echo "${ECHO_T}$ac_cv_func_shl_load" >&6; }
10275 if test $ac_cv_func_shl_load = yes; then
10276 lt_cv_dlopen="shl_load"
10277 else
10278 { echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
10279 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6; }
10280 if test "${ac_cv_lib_dld_shl_load+set}" = set; then
10281 echo $ECHO_N "(cached) $ECHO_C" >&6
10282 else
10283 ac_check_lib_save_LIBS=$LIBS
10284 LIBS="-ldld $LIBS"
10285 cat >conftest.$ac_ext <<_ACEOF
10286 /* confdefs.h. */
10287 _ACEOF
10288 cat confdefs.h >>conftest.$ac_ext
10289 cat >>conftest.$ac_ext <<_ACEOF
10290 /* end confdefs.h. */
10291
10292 /* Override any GCC internal prototype to avoid an error.
10293 Use char because int might match the return type of a GCC
10294 builtin and then its argument prototype would still apply. */
10295 #ifdef __cplusplus
10296 extern "C"
10297 #endif
10298 char shl_load ();
10299 int
10300 main ()
10301 {
10302 return shl_load ();
10303 ;
10304 return 0;
10305 }
10306 _ACEOF
10307 rm -f conftest.$ac_objext conftest$ac_exeext
10308 if { (ac_try="$ac_link"
10309 case "(($ac_try" in
10310 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
10311 *) ac_try_echo=$ac_try;;
10312 esac
10313 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
10314 (eval "$ac_link") 2>conftest.er1
10315 ac_status=$?
10316 grep -v '^ *+' conftest.er1 >conftest.err
10317 rm -f conftest.er1
10318 cat conftest.err >&5
10319 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10320 (exit $ac_status); } && {
10321 test -z "$ac_c_werror_flag" ||
10322 test ! -s conftest.err
10323 } && test -s conftest$ac_exeext &&
10324 $as_test_x conftest$ac_exeext; then
10325 ac_cv_lib_dld_shl_load=yes
10326 else
10327 echo "$as_me: failed program was:" >&5
10328 sed 's/^/| /' conftest.$ac_ext >&5
10329
10330 ac_cv_lib_dld_shl_load=no
10331 fi
10332
10333 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
10334 conftest$ac_exeext conftest.$ac_ext
10335 LIBS=$ac_check_lib_save_LIBS
10336 fi
10337 { echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
10338 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; }
10339 if test $ac_cv_lib_dld_shl_load = yes; then
10340 lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
10341 else
10342 { echo "$as_me:$LINENO: checking for dlopen" >&5
10343 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; }
10344 if test "${ac_cv_func_dlopen+set}" = set; then
10345 echo $ECHO_N "(cached) $ECHO_C" >&6
10346 else
10347 cat >conftest.$ac_ext <<_ACEOF
10348 /* confdefs.h. */
10349 _ACEOF
10350 cat confdefs.h >>conftest.$ac_ext
10351 cat >>conftest.$ac_ext <<_ACEOF
10352 /* end confdefs.h. */
10353 /* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
10354 For example, HP-UX 11i <limits.h> declares gettimeofday. */
10355 #define dlopen innocuous_dlopen
10356
10357 /* System header to define __stub macros and hopefully few prototypes,
10358 which can conflict with char dlopen (); below.
10359 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
10360 <limits.h> exists even on freestanding compilers. */
10361
10362 #ifdef __STDC__
10363 # include <limits.h>
10364 #else
10365 # include <assert.h>
10366 #endif
10367
10368 #undef dlopen
10369
10370 /* Override any GCC internal prototype to avoid an error.
10371 Use char because int might match the return type of a GCC
10372 builtin and then its argument prototype would still apply. */
10373 #ifdef __cplusplus
10374 extern "C"
10375 #endif
10376 char dlopen ();
10377 /* The GNU C library defines this for functions which it implements
10378 to always fail with ENOSYS. Some functions are actually named
10379 something starting with __ and the normal name is an alias. */
10380 #if defined __stub_dlopen || defined __stub___dlopen
10381 choke me
10382 #endif
10383
10384 int
10385 main ()
10386 {
10387 return dlopen ();
10388 ;
10389 return 0;
10390 }
10391 _ACEOF
10392 rm -f conftest.$ac_objext conftest$ac_exeext
10393 if { (ac_try="$ac_link"
10394 case "(($ac_try" in
10395 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
10396 *) ac_try_echo=$ac_try;;
10397 esac
10398 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
10399 (eval "$ac_link") 2>conftest.er1
10400 ac_status=$?
10401 grep -v '^ *+' conftest.er1 >conftest.err
10402 rm -f conftest.er1
10403 cat conftest.err >&5
10404 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10405 (exit $ac_status); } && {
10406 test -z "$ac_c_werror_flag" ||
10407 test ! -s conftest.err
10408 } && test -s conftest$ac_exeext &&
10409 $as_test_x conftest$ac_exeext; then
10410 ac_cv_func_dlopen=yes
10411 else
10412 echo "$as_me: failed program was:" >&5
10413 sed 's/^/| /' conftest.$ac_ext >&5
10414
10415 ac_cv_func_dlopen=no
10416 fi
10417
10418 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
10419 conftest$ac_exeext conftest.$ac_ext
10420 fi
10421 { echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
10422 echo "${ECHO_T}$ac_cv_func_dlopen" >&6; }
10423 if test $ac_cv_func_dlopen = yes; then
10424 lt_cv_dlopen="dlopen"
10425 else
10426 { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
10427 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; }
10428 if test "${ac_cv_lib_dl_dlopen+set}" = set; then
10429 echo $ECHO_N "(cached) $ECHO_C" >&6
10430 else
10431 ac_check_lib_save_LIBS=$LIBS
10432 LIBS="-ldl $LIBS"
10433 cat >conftest.$ac_ext <<_ACEOF
10434 /* confdefs.h. */
10435 _ACEOF
10436 cat confdefs.h >>conftest.$ac_ext
10437 cat >>conftest.$ac_ext <<_ACEOF
10438 /* end confdefs.h. */
10439
10440 /* Override any GCC internal prototype to avoid an error.
10441 Use char because int might match the return type of a GCC
10442 builtin and then its argument prototype would still apply. */
10443 #ifdef __cplusplus
10444 extern "C"
10445 #endif
10446 char dlopen ();
10447 int
10448 main ()
10449 {
10450 return dlopen ();
10451 ;
10452 return 0;
10453 }
10454 _ACEOF
10455 rm -f conftest.$ac_objext conftest$ac_exeext
10456 if { (ac_try="$ac_link"
10457 case "(($ac_try" in
10458 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
10459 *) ac_try_echo=$ac_try;;
10460 esac
10461 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
10462 (eval "$ac_link") 2>conftest.er1
10463 ac_status=$?
10464 grep -v '^ *+' conftest.er1 >conftest.err
10465 rm -f conftest.er1
10466 cat conftest.err >&5
10467 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10468 (exit $ac_status); } && {
10469 test -z "$ac_c_werror_flag" ||
10470 test ! -s conftest.err
10471 } && test -s conftest$ac_exeext &&
10472 $as_test_x conftest$ac_exeext; then
10473 ac_cv_lib_dl_dlopen=yes
10474 else
10475 echo "$as_me: failed program was:" >&5
10476 sed 's/^/| /' conftest.$ac_ext >&5
10477
10478 ac_cv_lib_dl_dlopen=no
10479 fi
10480
10481 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
10482 conftest$ac_exeext conftest.$ac_ext
10483 LIBS=$ac_check_lib_save_LIBS
10484 fi
10485 { echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
10486 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; }
10487 if test $ac_cv_lib_dl_dlopen = yes; then
10488 lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
10489 else
10490 { echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
10491 echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6; }
10492 if test "${ac_cv_lib_svld_dlopen+set}" = set; then
10493 echo $ECHO_N "(cached) $ECHO_C" >&6
10494 else
10495 ac_check_lib_save_LIBS=$LIBS
10496 LIBS="-lsvld $LIBS"
10497 cat >conftest.$ac_ext <<_ACEOF
10498 /* confdefs.h. */
10499 _ACEOF
10500 cat confdefs.h >>conftest.$ac_ext
10501 cat >>conftest.$ac_ext <<_ACEOF
10502 /* end confdefs.h. */
10503
10504 /* Override any GCC internal prototype to avoid an error.
10505 Use char because int might match the return type of a GCC
10506 builtin and then its argument prototype would still apply. */
10507 #ifdef __cplusplus
10508 extern "C"
10509 #endif
10510 char dlopen ();
10511 int
10512 main ()
10513 {
10514 return dlopen ();
10515 ;
10516 return 0;
10517 }
10518 _ACEOF
10519 rm -f conftest.$ac_objext conftest$ac_exeext
10520 if { (ac_try="$ac_link"
10521 case "(($ac_try" in
10522 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
10523 *) ac_try_echo=$ac_try;;
10524 esac
10525 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
10526 (eval "$ac_link") 2>conftest.er1
10527 ac_status=$?
10528 grep -v '^ *+' conftest.er1 >conftest.err
10529 rm -f conftest.er1
10530 cat conftest.err >&5
10531 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10532 (exit $ac_status); } && {
10533 test -z "$ac_c_werror_flag" ||
10534 test ! -s conftest.err
10535 } && test -s conftest$ac_exeext &&
10536 $as_test_x conftest$ac_exeext; then
10537 ac_cv_lib_svld_dlopen=yes
10538 else
10539 echo "$as_me: failed program was:" >&5
10540 sed 's/^/| /' conftest.$ac_ext >&5
10541
10542 ac_cv_lib_svld_dlopen=no
10543 fi
10544
10545 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
10546 conftest$ac_exeext conftest.$ac_ext
10547 LIBS=$ac_check_lib_save_LIBS
10548 fi
10549 { echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
10550 echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6; }
10551 if test $ac_cv_lib_svld_dlopen = yes; then
10552 lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
10553 else
10554 { echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
10555 echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6; }
10556 if test "${ac_cv_lib_dld_dld_link+set}" = set; then
10557 echo $ECHO_N "(cached) $ECHO_C" >&6
10558 else
10559 ac_check_lib_save_LIBS=$LIBS
10560 LIBS="-ldld $LIBS"
10561 cat >conftest.$ac_ext <<_ACEOF
10562 /* confdefs.h. */
10563 _ACEOF
10564 cat confdefs.h >>conftest.$ac_ext
10565 cat >>conftest.$ac_ext <<_ACEOF
10566 /* end confdefs.h. */
10567
10568 /* Override any GCC internal prototype to avoid an error.
10569 Use char because int might match the return type of a GCC
10570 builtin and then its argument prototype would still apply. */
10571 #ifdef __cplusplus
10572 extern "C"
10573 #endif
10574 char dld_link ();
10575 int
10576 main ()
10577 {
10578 return dld_link ();
10579 ;
10580 return 0;
10581 }
10582 _ACEOF
10583 rm -f conftest.$ac_objext conftest$ac_exeext
10584 if { (ac_try="$ac_link"
10585 case "(($ac_try" in
10586 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
10587 *) ac_try_echo=$ac_try;;
10588 esac
10589 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
10590 (eval "$ac_link") 2>conftest.er1
10591 ac_status=$?
10592 grep -v '^ *+' conftest.er1 >conftest.err
10593 rm -f conftest.er1
10594 cat conftest.err >&5
10595 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10596 (exit $ac_status); } && {
10597 test -z "$ac_c_werror_flag" ||
10598 test ! -s conftest.err
10599 } && test -s conftest$ac_exeext &&
10600 $as_test_x conftest$ac_exeext; then
10601 ac_cv_lib_dld_dld_link=yes
10602 else
10603 echo "$as_me: failed program was:" >&5
10604 sed 's/^/| /' conftest.$ac_ext >&5
10605
10606 ac_cv_lib_dld_dld_link=no
10607 fi
10608
10609 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
10610 conftest$ac_exeext conftest.$ac_ext
10611 LIBS=$ac_check_lib_save_LIBS
10612 fi
10613 { echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
10614 echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6; }
10615 if test $ac_cv_lib_dld_dld_link = yes; then
10616 lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
10617 fi
10618
10619
10620 fi
10621
10622
10623 fi
10624
10625
10626 fi
10627
10628
10629 fi
10630
10631
10632 fi
10633
10634 ;;
10635 esac
10636
10637 if test "x$lt_cv_dlopen" != xno; then
10638 enable_dlopen=yes
10639 else
10640 enable_dlopen=no
10641 fi
10642
10643 case $lt_cv_dlopen in
10644 dlopen)
10645 save_CPPFLAGS="$CPPFLAGS"
10646 test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
10647
10648 save_LDFLAGS="$LDFLAGS"
10649 wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
10650
10651 save_LIBS="$LIBS"
10652 LIBS="$lt_cv_dlopen_libs $LIBS"
10653
10654 { echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
10655 echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6; }
10656 if test "${lt_cv_dlopen_self+set}" = set; then
10657 echo $ECHO_N "(cached) $ECHO_C" >&6
10658 else
10659 if test "$cross_compiling" = yes; then :
10660 lt_cv_dlopen_self=cross
10661 else
10662 lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
10663 lt_status=$lt_dlunknown
10664 cat > conftest.$ac_ext <<EOF
10665 #line 10666 "configure"
10666 #include "confdefs.h"
10667
10668 #if HAVE_DLFCN_H
10669 #include <dlfcn.h>
10670 #endif
10671
10672 #include <stdio.h>
10673
10674 #ifdef RTLD_GLOBAL
10675 # define LT_DLGLOBAL RTLD_GLOBAL
10676 #else
10677 # ifdef DL_GLOBAL
10678 # define LT_DLGLOBAL DL_GLOBAL
10679 # else
10680 # define LT_DLGLOBAL 0
10681 # endif
10682 #endif
10683
10684 /* We may have to define LT_DLLAZY_OR_NOW in the command line if we
10685 find out it does not work in some platform. */
10686 #ifndef LT_DLLAZY_OR_NOW
10687 # ifdef RTLD_LAZY
10688 # define LT_DLLAZY_OR_NOW RTLD_LAZY
10689 # else
10690 # ifdef DL_LAZY
10691 # define LT_DLLAZY_OR_NOW DL_LAZY
10692 # else
10693 # ifdef RTLD_NOW
10694 # define LT_DLLAZY_OR_NOW RTLD_NOW
10695 # else
10696 # ifdef DL_NOW
10697 # define LT_DLLAZY_OR_NOW DL_NOW
10698 # else
10699 # define LT_DLLAZY_OR_NOW 0
10700 # endif
10701 # endif
10702 # endif
10703 # endif
10704 #endif
10705
10706 #ifdef __cplusplus
10707 extern "C" void exit (int);
10708 #endif
10709
10710 void fnord() { int i=42;}
10711 int main ()
10712 {
10713 void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
10714 int status = $lt_dlunknown;
10715
10716 if (self)
10717 {
10718 if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
10719 else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
10720 /* dlclose (self); */
10721 }
10722 else
10723 puts (dlerror ());
10724
10725 exit (status);
10726 }
10727 EOF
10728 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
10729 (eval $ac_link) 2>&5
10730 ac_status=$?
10731 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10732 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
10733 (./conftest; exit; ) >&5 2>/dev/null
10734 lt_status=$?
10735 case x$lt_status in
10736 x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
10737 x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
10738 x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
10739 esac
10740 else :
10741 # compilation failed
10742 lt_cv_dlopen_self=no
10743 fi
10744 fi
10745 rm -fr conftest*
10746
10747
10748 fi
10749 { echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
10750 echo "${ECHO_T}$lt_cv_dlopen_self" >&6; }
10751
10752 if test "x$lt_cv_dlopen_self" = xyes; then
10753 wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
10754 { echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
10755 echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6; }
10756 if test "${lt_cv_dlopen_self_static+set}" = set; then
10757 echo $ECHO_N "(cached) $ECHO_C" >&6
10758 else
10759 if test "$cross_compiling" = yes; then :
10760 lt_cv_dlopen_self_static=cross
10761 else
10762 lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
10763 lt_status=$lt_dlunknown
10764 cat > conftest.$ac_ext <<EOF
10765 #line 10766 "configure"
10766 #include "confdefs.h"
10767
10768 #if HAVE_DLFCN_H
10769 #include <dlfcn.h>
10770 #endif
10771
10772 #include <stdio.h>
10773
10774 #ifdef RTLD_GLOBAL
10775 # define LT_DLGLOBAL RTLD_GLOBAL
10776 #else
10777 # ifdef DL_GLOBAL
10778 # define LT_DLGLOBAL DL_GLOBAL
10779 # else
10780 # define LT_DLGLOBAL 0
10781 # endif
10782 #endif
10783
10784 /* We may have to define LT_DLLAZY_OR_NOW in the command line if we
10785 find out it does not work in some platform. */
10786 #ifndef LT_DLLAZY_OR_NOW
10787 # ifdef RTLD_LAZY
10788 # define LT_DLLAZY_OR_NOW RTLD_LAZY
10789 # else
10790 # ifdef DL_LAZY
10791 # define LT_DLLAZY_OR_NOW DL_LAZY
10792 # else
10793 # ifdef RTLD_NOW
10794 # define LT_DLLAZY_OR_NOW RTLD_NOW
10795 # else
10796 # ifdef DL_NOW
10797 # define LT_DLLAZY_OR_NOW DL_NOW
10798 # else
10799 # define LT_DLLAZY_OR_NOW 0
10800 # endif
10801 # endif
10802 # endif
10803 # endif
10804 #endif
10805
10806 #ifdef __cplusplus
10807 extern "C" void exit (int);
10808 #endif
10809
10810 void fnord() { int i=42;}
10811 int main ()
10812 {
10813 void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
10814 int status = $lt_dlunknown;
10815
10816 if (self)
10817 {
10818 if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
10819 else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
10820 /* dlclose (self); */
10821 }
10822 else
10823 puts (dlerror ());
10824
10825 exit (status);
10826 }
10827 EOF
10828 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
10829 (eval $ac_link) 2>&5
10830 ac_status=$?
10831 echo "$as_me:$LINENO: \$? = $ac_status" >&5
10832 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
10833 (./conftest; exit; ) >&5 2>/dev/null
10834 lt_status=$?
10835 case x$lt_status in
10836 x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
10837 x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
10838 x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
10839 esac
10840 else :
10841 # compilation failed
10842 lt_cv_dlopen_self_static=no
10843 fi
10844 fi
10845 rm -fr conftest*
10846
10847
10848 fi
10849 { echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
10850 echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6; }
10851 fi
10852
10853 CPPFLAGS="$save_CPPFLAGS"
10854 LDFLAGS="$save_LDFLAGS"
10855 LIBS="$save_LIBS"
10856 ;;
10857 esac
10858
10859 case $lt_cv_dlopen_self in
10860 yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
10861 *) enable_dlopen_self=unknown ;;
10862 esac
10863
10864 case $lt_cv_dlopen_self_static in
10865 yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
10866 *) enable_dlopen_self_static=unknown ;;
10867 esac
10868 fi
10869
10870
10871 # Report which library types will actually be built
10872 { echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
10873 echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; }
10874 { echo "$as_me:$LINENO: result: $can_build_shared" >&5
10875 echo "${ECHO_T}$can_build_shared" >&6; }
10876
10877 { echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
10878 echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; }
10879 test "$can_build_shared" = "no" && enable_shared=no
10880
10881 # On AIX, shared libraries and static libraries use the same namespace, and
10882 # are all built from PIC.
10883 case $host_os in
10884 aix3*)
10885 test "$enable_shared" = yes && enable_static=no
10886 if test -n "$RANLIB"; then
10887 archive_cmds="$archive_cmds~\$RANLIB \$lib"
10888 postinstall_cmds='$RANLIB $lib'
10889 fi
10890 ;;
10891
10892 aix4* | aix5*)
10893 if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
10894 test "$enable_shared" = yes && enable_static=no
10895 fi
10896 ;;
10897 esac
10898 { echo "$as_me:$LINENO: result: $enable_shared" >&5
10899 echo "${ECHO_T}$enable_shared" >&6; }
10900
10901 { echo "$as_me:$LINENO: checking whether to build static libraries" >&5
10902 echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; }
10903 # Make sure either enable_shared or enable_static is yes.
10904 test "$enable_shared" = yes || enable_static=yes
10905 { echo "$as_me:$LINENO: result: $enable_static" >&5
10906 echo "${ECHO_T}$enable_static" >&6; }
10907
10908 # The else clause should only fire when bootstrapping the
10909 # libtool distribution, otherwise you forgot to ship ltmain.sh
10910 # with your package, and you will get complaints that there are
10911 # no rules to generate ltmain.sh.
10912 if test -f "$ltmain"; then
10913 # See if we are running on zsh, and set the options which allow our commands through
10914 # without removal of \ escapes.
10915 if test -n "${ZSH_VERSION+set}" ; then
10916 setopt NO_GLOB_SUBST
10917 fi
10918 # Now quote all the things that may contain metacharacters while being
10919 # careful not to overquote the AC_SUBSTed values. We take copies of the
10920 # variables and quote the copies for generation of the libtool script.
10921 for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
10922 SED SHELL STRIP \
10923 libname_spec library_names_spec soname_spec extract_expsyms_cmds \
10924 old_striplib striplib file_magic_cmd finish_cmds finish_eval \
10925 deplibs_check_method reload_flag reload_cmds need_locks \
10926 lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
10927 lt_cv_sys_global_symbol_to_c_name_address \
10928 sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
10929 old_postinstall_cmds old_postuninstall_cmds \
10930 compiler \
10931 CC \
10932 LD \
10933 lt_prog_compiler_wl \
10934 lt_prog_compiler_pic \
10935 lt_prog_compiler_static \
10936 lt_prog_compiler_no_builtin_flag \
10937 export_dynamic_flag_spec \
10938 thread_safe_flag_spec \
10939 whole_archive_flag_spec \
10940 enable_shared_with_static_runtimes \
10941 old_archive_cmds \
10942 old_archive_from_new_cmds \
10943 predep_objects \
10944 postdep_objects \
10945 predeps \
10946 postdeps \
10947 compiler_lib_search_path \
10948 archive_cmds \
10949 archive_expsym_cmds \
10950 postinstall_cmds \
10951 postuninstall_cmds \
10952 old_archive_from_expsyms_cmds \
10953 allow_undefined_flag \
10954 no_undefined_flag \
10955 export_symbols_cmds \
10956 hardcode_libdir_flag_spec \
10957 hardcode_libdir_flag_spec_ld \
10958 hardcode_libdir_separator \
10959 hardcode_automatic \
10960 module_cmds \
10961 module_expsym_cmds \
10962 lt_cv_prog_compiler_c_o \
10963 exclude_expsyms \
10964 include_expsyms; do
10965
10966 case $var in
10967 old_archive_cmds | \
10968 old_archive_from_new_cmds | \
10969 archive_cmds | \
10970 archive_expsym_cmds | \
10971 module_cmds | \
10972 module_expsym_cmds | \
10973 old_archive_from_expsyms_cmds | \
10974 export_symbols_cmds | \
10975 extract_expsyms_cmds | reload_cmds | finish_cmds | \
10976 postinstall_cmds | postuninstall_cmds | \
10977 old_postinstall_cmds | old_postuninstall_cmds | \
10978 sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
10979 # Double-quote double-evaled strings.
10980 eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
10981 ;;
10982 *)
10983 eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
10984 ;;
10985 esac
10986 done
10987
10988 case $lt_echo in
10989 *'\$0 --fallback-echo"')
10990 lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
10991 ;;
10992 esac
10993
10994 cfgfile="${ofile}T"
10995 trap "$rm \"$cfgfile\"; exit 1" 1 2 15
10996 $rm -f "$cfgfile"
10997 { echo "$as_me:$LINENO: creating $ofile" >&5
10998 echo "$as_me: creating $ofile" >&6;}
10999
11000 cat <<__EOF__ >> "$cfgfile"
11001 #! $SHELL
11002
11003 # `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
11004 # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
11005 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
11006 #
11007 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
11008 # Free Software Foundation, Inc.
11009 #
11010 # This file is part of GNU Libtool:
11011 # Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
11012 #
11013 # This program is free software; you can redistribute it and/or modify
11014 # it under the terms of the GNU General Public License as published by
11015 # the Free Software Foundation; either version 2 of the License, or
11016 # (at your option) any later version.
11017 #
11018 # This program is distributed in the hope that it will be useful, but
11019 # WITHOUT ANY WARRANTY; without even the implied warranty of
11020 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11021 # General Public License for more details.
11022 #
11023 # You should have received a copy of the GNU General Public License
11024 # along with this program; if not, write to the Free Software
11025 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
11026 #
11027 # As a special exception to the GNU General Public License, if you
11028 # distribute this file as part of a program that contains a
11029 # configuration script generated by Autoconf, you may include it under
11030 # the same distribution terms that you use for the rest of that program.
11031
11032 # A sed program that does not truncate output.
11033 SED=$lt_SED
11034
11035 # Sed that helps us avoid accidentally triggering echo(1) options like -n.
11036 Xsed="$SED -e 1s/^X//"
11037
11038 # The HP-UX ksh and POSIX shell print the target directory to stdout
11039 # if CDPATH is set.
11040 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
11041
11042 # The names of the tagged configurations supported by this script.
11043 available_tags=
11044
11045 # ### BEGIN LIBTOOL CONFIG
11046
11047 # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
11048
11049 # Shell to use when invoking shell scripts.
11050 SHELL=$lt_SHELL
11051
11052 # Whether or not to build shared libraries.
11053 build_libtool_libs=$enable_shared
11054
11055 # Whether or not to build static libraries.
11056 build_old_libs=$enable_static
11057
11058 # Whether or not to add -lc for building shared libraries.
11059 build_libtool_need_lc=$archive_cmds_need_lc
11060
11061 # Whether or not to disallow shared libs when runtime libs are static
11062 allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
11063
11064 # Whether or not to optimize for fast installation.
11065 fast_install=$enable_fast_install
11066
11067 # The host system.
11068 host_alias=$host_alias
11069 host=$host
11070 host_os=$host_os
11071
11072 # The build system.
11073 build_alias=$build_alias
11074 build=$build
11075 build_os=$build_os
11076
11077 # An echo program that does not interpret backslashes.
11078 echo=$lt_echo
11079
11080 # The archiver.
11081 AR=$lt_AR
11082 AR_FLAGS=$lt_AR_FLAGS
11083
11084 # A C compiler.
11085 LTCC=$lt_LTCC
11086
11087 # LTCC compiler flags.
11088 LTCFLAGS=$lt_LTCFLAGS
11089
11090 # A language-specific compiler.
11091 CC=$lt_compiler
11092
11093 # Is the compiler the GNU C compiler?
11094 with_gcc=$GCC
11095
11096 # An ERE matcher.
11097 EGREP=$lt_EGREP
11098
11099 # The linker used to build libraries.
11100 LD=$lt_LD
11101
11102 # Whether we need hard or soft links.
11103 LN_S=$lt_LN_S
11104
11105 # A BSD-compatible nm program.
11106 NM=$lt_NM
11107
11108 # A symbol stripping program
11109 STRIP=$lt_STRIP
11110
11111 # Used to examine libraries when file_magic_cmd begins "file"
11112 MAGIC_CMD=$MAGIC_CMD
11113
11114 # Used on cygwin: DLL creation program.
11115 DLLTOOL="$DLLTOOL"
11116
11117 # Used on cygwin: object dumper.
11118 OBJDUMP="$OBJDUMP"
11119
11120 # Used on cygwin: assembler.
11121 AS="$AS"
11122
11123 # The name of the directory that contains temporary libtool files.
11124 objdir=$objdir
11125
11126 # How to create reloadable object files.
11127 reload_flag=$lt_reload_flag
11128 reload_cmds=$lt_reload_cmds
11129
11130 # How to pass a linker flag through the compiler.
11131 wl=$lt_lt_prog_compiler_wl
11132
11133 # Object file suffix (normally "o").
11134 objext="$ac_objext"
11135
11136 # Old archive suffix (normally "a").
11137 libext="$libext"
11138
11139 # Shared library suffix (normally ".so").
11140 shrext_cmds='$shrext_cmds'
11141
11142 # Executable file suffix (normally "").
11143 exeext="$exeext"
11144
11145 # Additional compiler flags for building library objects.
11146 pic_flag=$lt_lt_prog_compiler_pic
11147 pic_mode=$pic_mode
11148
11149 # What is the maximum length of a command?
11150 max_cmd_len=$lt_cv_sys_max_cmd_len
11151
11152 # Does compiler simultaneously support -c and -o options?
11153 compiler_c_o=$lt_lt_cv_prog_compiler_c_o
11154
11155 # Must we lock files when doing compilation?
11156 need_locks=$lt_need_locks
11157
11158 # Do we need the lib prefix for modules?
11159 need_lib_prefix=$need_lib_prefix
11160
11161 # Do we need a version for libraries?
11162 need_version=$need_version
11163
11164 # Whether dlopen is supported.
11165 dlopen_support=$enable_dlopen
11166
11167 # Whether dlopen of programs is supported.
11168 dlopen_self=$enable_dlopen_self
11169
11170 # Whether dlopen of statically linked programs is supported.
11171 dlopen_self_static=$enable_dlopen_self_static
11172
11173 # Compiler flag to prevent dynamic linking.
11174 link_static_flag=$lt_lt_prog_compiler_static
11175
11176 # Compiler flag to turn off builtin functions.
11177 no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
11178
11179 # Compiler flag to allow reflexive dlopens.
11180 export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
11181
11182 # Compiler flag to generate shared objects directly from archives.
11183 whole_archive_flag_spec=$lt_whole_archive_flag_spec
11184
11185 # Compiler flag to generate thread-safe objects.
11186 thread_safe_flag_spec=$lt_thread_safe_flag_spec
11187
11188 # Library versioning type.
11189 version_type=$version_type
11190
11191 # Format of library name prefix.
11192 libname_spec=$lt_libname_spec
11193
11194 # List of archive names. First name is the real one, the rest are links.
11195 # The last name is the one that the linker finds with -lNAME.
11196 library_names_spec=$lt_library_names_spec
11197
11198 # The coded name of the library, if different from the real name.
11199 soname_spec=$lt_soname_spec
11200
11201 # Commands used to build and install an old-style archive.
11202 RANLIB=$lt_RANLIB
11203 old_archive_cmds=$lt_old_archive_cmds
11204 old_postinstall_cmds=$lt_old_postinstall_cmds
11205 old_postuninstall_cmds=$lt_old_postuninstall_cmds
11206
11207 # Create an old-style archive from a shared archive.
11208 old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
11209
11210 # Create a temporary old-style archive to link instead of a shared archive.
11211 old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
11212
11213 # Commands used to build and install a shared archive.
11214 archive_cmds=$lt_archive_cmds
11215 archive_expsym_cmds=$lt_archive_expsym_cmds
11216 postinstall_cmds=$lt_postinstall_cmds
11217 postuninstall_cmds=$lt_postuninstall_cmds
11218
11219 # Commands used to build a loadable module (assumed same as above if empty)
11220 module_cmds=$lt_module_cmds
11221 module_expsym_cmds=$lt_module_expsym_cmds
11222
11223 # Commands to strip libraries.
11224 old_striplib=$lt_old_striplib
11225 striplib=$lt_striplib
11226
11227 # Dependencies to place before the objects being linked to create a
11228 # shared library.
11229 predep_objects=$lt_predep_objects
11230
11231 # Dependencies to place after the objects being linked to create a
11232 # shared library.
11233 postdep_objects=$lt_postdep_objects
11234
11235 # Dependencies to place before the objects being linked to create a
11236 # shared library.
11237 predeps=$lt_predeps
11238
11239 # Dependencies to place after the objects being linked to create a
11240 # shared library.
11241 postdeps=$lt_postdeps
11242
11243 # The library search path used internally by the compiler when linking
11244 # a shared library.
11245 compiler_lib_search_path=$lt_compiler_lib_search_path
11246
11247 # Method to check whether dependent libraries are shared objects.
11248 deplibs_check_method=$lt_deplibs_check_method
11249
11250 # Command to use when deplibs_check_method == file_magic.
11251 file_magic_cmd=$lt_file_magic_cmd
11252
11253 # Flag that allows shared libraries with undefined symbols to be built.
11254 allow_undefined_flag=$lt_allow_undefined_flag
11255
11256 # Flag that forces no undefined symbols.
11257 no_undefined_flag=$lt_no_undefined_flag
11258
11259 # Commands used to finish a libtool library installation in a directory.
11260 finish_cmds=$lt_finish_cmds
11261
11262 # Same as above, but a single script fragment to be evaled but not shown.
11263 finish_eval=$lt_finish_eval
11264
11265 # Take the output of nm and produce a listing of raw symbols and C names.
11266 global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
11267
11268 # Transform the output of nm in a proper C declaration
11269 global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
11270
11271 # Transform the output of nm in a C name address pair
11272 global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
11273
11274 # This is the shared library runtime path variable.
11275 runpath_var=$runpath_var
11276
11277 # This is the shared library path variable.
11278 shlibpath_var=$shlibpath_var
11279
11280 # Is shlibpath searched before the hard-coded library search path?
11281 shlibpath_overrides_runpath=$shlibpath_overrides_runpath
11282
11283 # How to hardcode a shared library path into an executable.
11284 hardcode_action=$hardcode_action
11285
11286 # Whether we should hardcode library paths into libraries.
11287 hardcode_into_libs=$hardcode_into_libs
11288
11289 # Flag to hardcode \$libdir into a binary during linking.
11290 # This must work even if \$libdir does not exist.
11291 hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
11292
11293 # If ld is used when linking, flag to hardcode \$libdir into
11294 # a binary during linking. This must work even if \$libdir does
11295 # not exist.
11296 hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
11297
11298 # Whether we need a single -rpath flag with a separated argument.
11299 hardcode_libdir_separator=$lt_hardcode_libdir_separator
11300
11301 # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
11302 # resulting binary.
11303 hardcode_direct=$hardcode_direct
11304
11305 # Set to yes if using the -LDIR flag during linking hardcodes DIR into the
11306 # resulting binary.
11307 hardcode_minus_L=$hardcode_minus_L
11308
11309 # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
11310 # the resulting binary.
11311 hardcode_shlibpath_var=$hardcode_shlibpath_var
11312
11313 # Set to yes if building a shared library automatically hardcodes DIR into the library
11314 # and all subsequent libraries and executables linked against it.
11315 hardcode_automatic=$hardcode_automatic
11316
11317 # Variables whose values should be saved in libtool wrapper scripts and
11318 # restored at relink time.
11319 variables_saved_for_relink="$variables_saved_for_relink"
11320
11321 # Whether libtool must link a program against all its dependency libraries.
11322 link_all_deplibs=$link_all_deplibs
11323
11324 # Compile-time system search path for libraries
11325 sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
11326
11327 # Run-time system search path for libraries
11328 sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
11329
11330 # Fix the shell variable \$srcfile for the compiler.
11331 fix_srcfile_path="$fix_srcfile_path"
11332
11333 # Set to yes if exported symbols are required.
11334 always_export_symbols=$always_export_symbols
11335
11336 # The commands to list exported symbols.
11337 export_symbols_cmds=$lt_export_symbols_cmds
11338
11339 # The commands to extract the exported symbol list from a shared archive.
11340 extract_expsyms_cmds=$lt_extract_expsyms_cmds
11341
11342 # Symbols that should not be listed in the preloaded symbols.
11343 exclude_expsyms=$lt_exclude_expsyms
11344
11345 # Symbols that must always be exported.
11346 include_expsyms=$lt_include_expsyms
11347
11348 # ### END LIBTOOL CONFIG
11349
11350 __EOF__
11351
11352
11353 case $host_os in
11354 aix3*)
11355 cat <<\EOF >> "$cfgfile"
11356
11357 # AIX sometimes has problems with the GCC collect2 program. For some
11358 # reason, if we set the COLLECT_NAMES environment variable, the problems
11359 # vanish in a puff of smoke.
11360 if test "X${COLLECT_NAMES+set}" != Xset; then
11361 COLLECT_NAMES=
11362 export COLLECT_NAMES
11363 fi
11364 EOF
11365 ;;
11366 esac
11367
11368 # We use sed instead of cat because bash on DJGPP gets confused if
11369 # if finds mixed CR/LF and LF-only lines. Since sed operates in
11370 # text mode, it properly converts lines to CR/LF. This bash problem
11371 # is reportedly fixed, but why not run on old versions too?
11372 sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
11373
11374 mv -f "$cfgfile" "$ofile" || \
11375 (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
11376 chmod +x "$ofile"
11377
11378 else
11379 # If there is no Makefile yet, we rely on a make rule to execute
11380 # `config.status --recheck' to rerun these tests and create the
11381 # libtool script then.
11382 ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
11383 if test -f "$ltmain_in"; then
11384 test -f Makefile && make "$ltmain"
11385 fi
11386 fi
11387
11388
11389 ac_ext=c
11390 ac_cpp='$CPP $CPPFLAGS'
11391 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
11392 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
11393 ac_compiler_gnu=$ac_cv_c_compiler_gnu
11394
11395 CC="$lt_save_CC"
11396
11397
11398 # Check whether --with-tags was given.
11399 if test "${with_tags+set}" = set; then
11400 withval=$with_tags; tagnames="$withval"
11401 fi
11402
11403
11404 if test -f "$ltmain" && test -n "$tagnames"; then
11405 if test ! -f "${ofile}"; then
11406 { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5
11407 echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;}
11408 fi
11409
11410 if test -z "$LTCC"; then
11411 eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
11412 if test -z "$LTCC"; then
11413 { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5
11414 echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;}
11415 else
11416 { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5
11417 echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;}
11418 fi
11419 fi
11420 if test -z "$LTCFLAGS"; then
11421 eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`"
11422 fi
11423
11424 # Extract list of available tagged configurations in $ofile.
11425 # Note that this assumes the entire list is on one line.
11426 available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
11427
11428 lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
11429 for tagname in $tagnames; do
11430 IFS="$lt_save_ifs"
11431 # Check whether tagname contains only valid characters
11432 case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in
11433 "") ;;
11434 *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5
11435 echo "$as_me: error: invalid tag name: $tagname" >&2;}
11436 { (exit 1); exit 1; }; }
11437 ;;
11438 esac
11439
11440 if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
11441 then
11442 { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5
11443 echo "$as_me: error: tag name \"$tagname\" already exists" >&2;}
11444 { (exit 1); exit 1; }; }
11445 fi
11446
11447 # Update the list of available tags.
11448 if test -n "$tagname"; then
11449 echo appending configuration tag \"$tagname\" to $ofile
11450
11451 case $tagname in
11452 CXX)
11453 if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
11454 ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
11455 (test "X$CXX" != "Xg++"))) ; then
11456 ac_ext=cpp
11457 ac_cpp='$CXXCPP $CPPFLAGS'
11458 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
11459 ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
11460 ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
11461
11462
11463
11464
11465 archive_cmds_need_lc_CXX=no
11466 allow_undefined_flag_CXX=
11467 always_export_symbols_CXX=no
11468 archive_expsym_cmds_CXX=
11469 export_dynamic_flag_spec_CXX=
11470 hardcode_direct_CXX=no
11471 hardcode_libdir_flag_spec_CXX=
11472 hardcode_libdir_flag_spec_ld_CXX=
11473 hardcode_libdir_separator_CXX=
11474 hardcode_minus_L_CXX=no
11475 hardcode_shlibpath_var_CXX=unsupported
11476 hardcode_automatic_CXX=no
11477 module_cmds_CXX=
11478 module_expsym_cmds_CXX=
11479 link_all_deplibs_CXX=unknown
11480 old_archive_cmds_CXX=$old_archive_cmds
11481 no_undefined_flag_CXX=
11482 whole_archive_flag_spec_CXX=
11483 enable_shared_with_static_runtimes_CXX=no
11484
11485 # Dependencies to place before and after the object being linked:
11486 predep_objects_CXX=
11487 postdep_objects_CXX=
11488 predeps_CXX=
11489 postdeps_CXX=
11490 compiler_lib_search_path_CXX=
11491
11492 # Source file extension for C++ test sources.
11493 ac_ext=cpp
11494
11495 # Object file extension for compiled C++ test sources.
11496 objext=o
11497 objext_CXX=$objext
11498
11499 # Code to be used in simple compile tests
11500 lt_simple_compile_test_code="int some_variable = 0;\n"
11501
11502 # Code to be used in simple link tests
11503 lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n'
11504
11505 # ltmain only uses $CC for tagged configurations so make sure $CC is set.
11506
11507 # If no C compiler was specified, use CC.
11508 LTCC=${LTCC-"$CC"}
11509
11510 # If no C compiler flags were specified, use CFLAGS.
11511 LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
11512
11513 # Allow CC to be a program name with arguments.
11514 compiler=$CC
11515
11516
11517 # save warnings/boilerplate of simple test code
11518 ac_outfile=conftest.$ac_objext
11519 printf "$lt_simple_compile_test_code" >conftest.$ac_ext
11520 eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
11521 _lt_compiler_boilerplate=`cat conftest.err`
11522 $rm conftest*
11523
11524 ac_outfile=conftest.$ac_objext
11525 printf "$lt_simple_link_test_code" >conftest.$ac_ext
11526 eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
11527 _lt_linker_boilerplate=`cat conftest.err`
11528 $rm conftest*
11529
11530
11531 # Allow CC to be a program name with arguments.
11532 lt_save_CC=$CC
11533 lt_save_LD=$LD
11534 lt_save_GCC=$GCC
11535 GCC=$GXX
11536 lt_save_with_gnu_ld=$with_gnu_ld
11537 lt_save_path_LD=$lt_cv_path_LD
11538 if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
11539 lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
11540 else
11541 $as_unset lt_cv_prog_gnu_ld
11542 fi
11543 if test -n "${lt_cv_path_LDCXX+set}"; then
11544 lt_cv_path_LD=$lt_cv_path_LDCXX
11545 else
11546 $as_unset lt_cv_path_LD
11547 fi
11548 test -z "${LDCXX+set}" || LD=$LDCXX
11549 CC=${CXX-"c++"}
11550 compiler=$CC
11551 compiler_CXX=$CC
11552 for cc_temp in $compiler""; do
11553 case $cc_temp in
11554 compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
11555 distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
11556 \-*) ;;
11557 *) break;;
11558 esac
11559 done
11560 cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
11561
11562
11563 # We don't want -fno-exception wen compiling C++ code, so set the
11564 # no_builtin_flag separately
11565 if test "$GXX" = yes; then
11566 lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
11567 else
11568 lt_prog_compiler_no_builtin_flag_CXX=
11569 fi
11570
11571 if test "$GXX" = yes; then
11572 # Set up default GNU C++ configuration
11573
11574
11575 # Check whether --with-gnu-ld was given.
11576 if test "${with_gnu_ld+set}" = set; then
11577 withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
11578 else
11579 with_gnu_ld=no
11580 fi
11581
11582 ac_prog=ld
11583 if test "$GCC" = yes; then
11584 # Check if gcc -print-prog-name=ld gives a path.
11585 { echo "$as_me:$LINENO: checking for ld used by $CC" >&5
11586 echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; }
11587 case $host in
11588 *-*-mingw*)
11589 # gcc leaves a trailing carriage return which upsets mingw
11590 ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
11591 *)
11592 ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
11593 esac
11594 case $ac_prog in
11595 # Accept absolute paths.
11596 [\\/]* | ?:[\\/]*)
11597 re_direlt='/[^/][^/]*/\.\./'
11598 # Canonicalize the pathname of ld
11599 ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
11600 while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
11601 ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
11602 done
11603 test -z "$LD" && LD="$ac_prog"
11604 ;;
11605 "")
11606 # If it fails, then pretend we aren't using GCC.
11607 ac_prog=ld
11608 ;;
11609 *)
11610 # If it is relative, then search for the first ld in PATH.
11611 with_gnu_ld=unknown
11612 ;;
11613 esac
11614 elif test "$with_gnu_ld" = yes; then
11615 { echo "$as_me:$LINENO: checking for GNU ld" >&5
11616 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; }
11617 else
11618 { echo "$as_me:$LINENO: checking for non-GNU ld" >&5
11619 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; }
11620 fi
11621 if test "${lt_cv_path_LD+set}" = set; then
11622 echo $ECHO_N "(cached) $ECHO_C" >&6
11623 else
11624 if test -z "$LD"; then
11625 lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
11626 for ac_dir in $PATH; do
11627 IFS="$lt_save_ifs"
11628 test -z "$ac_dir" && ac_dir=.
11629 if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
11630 lt_cv_path_LD="$ac_dir/$ac_prog"
11631 # Check to see if the program is GNU ld. I'd rather use --version,
11632 # but apparently some variants of GNU ld only accept -v.
11633 # Break only if it was the GNU/non-GNU ld that we prefer.
11634 case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
11635 *GNU* | *'with BFD'*)
11636 test "$with_gnu_ld" != no && break
11637 ;;
11638 *)
11639 test "$with_gnu_ld" != yes && break
11640 ;;
11641 esac
11642 fi
11643 done
11644 IFS="$lt_save_ifs"
11645 else
11646 lt_cv_path_LD="$LD" # Let the user override the test with a path.
11647 fi
11648 fi
11649
11650 LD="$lt_cv_path_LD"
11651 if test -n "$LD"; then
11652 { echo "$as_me:$LINENO: result: $LD" >&5
11653 echo "${ECHO_T}$LD" >&6; }
11654 else
11655 { echo "$as_me:$LINENO: result: no" >&5
11656 echo "${ECHO_T}no" >&6; }
11657 fi
11658 test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
11659 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
11660 { (exit 1); exit 1; }; }
11661 { echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
11662 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; }
11663 if test "${lt_cv_prog_gnu_ld+set}" = set; then
11664 echo $ECHO_N "(cached) $ECHO_C" >&6
11665 else
11666 # I'd rather use --version here, but apparently some GNU lds only accept -v.
11667 case `$LD -v 2>&1 </dev/null` in
11668 *GNU* | *'with BFD'*)
11669 lt_cv_prog_gnu_ld=yes
11670 ;;
11671 *)
11672 lt_cv_prog_gnu_ld=no
11673 ;;
11674 esac
11675 fi
11676 { echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
11677 echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; }
11678 with_gnu_ld=$lt_cv_prog_gnu_ld
11679
11680
11681
11682 # Check if GNU C++ uses GNU ld as the underlying linker, since the
11683 # archiving commands below assume that GNU ld is being used.
11684 if test "$with_gnu_ld" = yes; then
11685 archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
11686 archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
11687
11688 hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
11689 export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
11690
11691 # If archive_cmds runs LD, not CC, wlarc should be empty
11692 # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
11693 # investigate it a little bit more. (MM)
11694 wlarc='${wl}'
11695
11696 # ancient GNU ld didn't support --whole-archive et. al.
11697 if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
11698 grep 'no-whole-archive' > /dev/null; then
11699 whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
11700 else
11701 whole_archive_flag_spec_CXX=
11702 fi
11703 else
11704 with_gnu_ld=no
11705 wlarc=
11706
11707 # A generic and very simple default shared library creation
11708 # command for GNU C++ for the case where it uses the native
11709 # linker, instead of GNU ld. If possible, this setting should
11710 # overridden to take advantage of the native linker features on
11711 # the platform it is being used on.
11712 archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
11713 fi
11714
11715 # Commands to make compiler produce verbose output that lists
11716 # what "hidden" libraries, object files and flags are used when
11717 # linking a shared library.
11718 output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
11719
11720 else
11721 GXX=no
11722 with_gnu_ld=no
11723 wlarc=
11724 fi
11725
11726 # PORTME: fill in a description of your system's C++ link characteristics
11727 { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
11728 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
11729 ld_shlibs_CXX=yes
11730 case $host_os in
11731 aix3*)
11732 # FIXME: insert proper C++ library support
11733 ld_shlibs_CXX=no
11734 ;;
11735 aix4* | aix5*)
11736 if test "$host_cpu" = ia64; then
11737 # On IA64, the linker does run time linking by default, so we don't
11738 # have to do anything special.
11739 aix_use_runtimelinking=no
11740 exp_sym_flag='-Bexport'
11741 no_entry_flag=""
11742 else
11743 aix_use_runtimelinking=no
11744
11745 # Test if we are trying to use run time linking or normal
11746 # AIX style linking. If -brtl is somewhere in LDFLAGS, we
11747 # need to do runtime linking.
11748 case $host_os in aix4.[23]|aix4.[23].*|aix5*)
11749 for ld_flag in $LDFLAGS; do
11750 case $ld_flag in
11751 *-brtl*)
11752 aix_use_runtimelinking=yes
11753 break
11754 ;;
11755 esac
11756 done
11757 ;;
11758 esac
11759
11760 exp_sym_flag='-bexport'
11761 no_entry_flag='-bnoentry'
11762 fi
11763
11764 # When large executables or shared objects are built, AIX ld can
11765 # have problems creating the table of contents. If linking a library
11766 # or program results in "error TOC overflow" add -mminimal-toc to
11767 # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
11768 # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
11769
11770 archive_cmds_CXX=''
11771 hardcode_direct_CXX=yes
11772 hardcode_libdir_separator_CXX=':'
11773 link_all_deplibs_CXX=yes
11774
11775 if test "$GXX" = yes; then
11776 case $host_os in aix4.[012]|aix4.[012].*)
11777 # We only want to do this on AIX 4.2 and lower, the check
11778 # below for broken collect2 doesn't work under 4.3+
11779 collect2name=`${CC} -print-prog-name=collect2`
11780 if test -f "$collect2name" && \
11781 strings "$collect2name" | grep resolve_lib_name >/dev/null
11782 then
11783 # We have reworked collect2
11784 hardcode_direct_CXX=yes
11785 else
11786 # We have old collect2
11787 hardcode_direct_CXX=unsupported
11788 # It fails to find uninstalled libraries when the uninstalled
11789 # path is not listed in the libpath. Setting hardcode_minus_L
11790 # to unsupported forces relinking
11791 hardcode_minus_L_CXX=yes
11792 hardcode_libdir_flag_spec_CXX='-L$libdir'
11793 hardcode_libdir_separator_CXX=
11794 fi
11795 ;;
11796 esac
11797 shared_flag='-shared'
11798 if test "$aix_use_runtimelinking" = yes; then
11799 shared_flag="$shared_flag "'${wl}-G'
11800 fi
11801 else
11802 # not using gcc
11803 if test "$host_cpu" = ia64; then
11804 # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
11805 # chokes on -Wl,-G. The following line is correct:
11806 shared_flag='-G'
11807 else
11808 if test "$aix_use_runtimelinking" = yes; then
11809 shared_flag='${wl}-G'
11810 else
11811 shared_flag='${wl}-bM:SRE'
11812 fi
11813 fi
11814 fi
11815
11816 # It seems that -bexpall does not export symbols beginning with
11817 # underscore (_), so it is better to generate a list of symbols to export.
11818 always_export_symbols_CXX=yes
11819 if test "$aix_use_runtimelinking" = yes; then
11820 # Warning - without using the other runtime loading flags (-brtl),
11821 # -berok will link without error, but may produce a broken library.
11822 allow_undefined_flag_CXX='-berok'
11823 # Determine the default libpath from the value encoded in an empty executable.
11824 cat >conftest.$ac_ext <<_ACEOF
11825 /* confdefs.h. */
11826 _ACEOF
11827 cat confdefs.h >>conftest.$ac_ext
11828 cat >>conftest.$ac_ext <<_ACEOF
11829 /* end confdefs.h. */
11830
11831 int
11832 main ()
11833 {
11834
11835 ;
11836 return 0;
11837 }
11838 _ACEOF
11839 rm -f conftest.$ac_objext conftest$ac_exeext
11840 if { (ac_try="$ac_link"
11841 case "(($ac_try" in
11842 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
11843 *) ac_try_echo=$ac_try;;
11844 esac
11845 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
11846 (eval "$ac_link") 2>conftest.er1
11847 ac_status=$?
11848 grep -v '^ *+' conftest.er1 >conftest.err
11849 rm -f conftest.er1
11850 cat conftest.err >&5
11851 echo "$as_me:$LINENO: \$? = $ac_status" >&5
11852 (exit $ac_status); } && {
11853 test -z "$ac_cxx_werror_flag" ||
11854 test ! -s conftest.err
11855 } && test -s conftest$ac_exeext &&
11856 $as_test_x conftest$ac_exeext; then
11857
11858 aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
11859 }'`
11860 # Check for a 64-bit object if we didn't find anything.
11861 if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
11862 }'`; fi
11863 else
11864 echo "$as_me: failed program was:" >&5
11865 sed 's/^/| /' conftest.$ac_ext >&5
11866
11867
11868 fi
11869
11870 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
11871 conftest$ac_exeext conftest.$ac_ext
11872 if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
11873
11874 hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
11875
11876 archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
11877 else
11878 if test "$host_cpu" = ia64; then
11879 hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
11880 allow_undefined_flag_CXX="-z nodefs"
11881 archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
11882 else
11883 # Determine the default libpath from the value encoded in an empty executable.
11884 cat >conftest.$ac_ext <<_ACEOF
11885 /* confdefs.h. */
11886 _ACEOF
11887 cat confdefs.h >>conftest.$ac_ext
11888 cat >>conftest.$ac_ext <<_ACEOF
11889 /* end confdefs.h. */
11890
11891 int
11892 main ()
11893 {
11894
11895 ;
11896 return 0;
11897 }
11898 _ACEOF
11899 rm -f conftest.$ac_objext conftest$ac_exeext
11900 if { (ac_try="$ac_link"
11901 case "(($ac_try" in
11902 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
11903 *) ac_try_echo=$ac_try;;
11904 esac
11905 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
11906 (eval "$ac_link") 2>conftest.er1
11907 ac_status=$?
11908 grep -v '^ *+' conftest.er1 >conftest.err
11909 rm -f conftest.er1
11910 cat conftest.err >&5
11911 echo "$as_me:$LINENO: \$? = $ac_status" >&5
11912 (exit $ac_status); } && {
11913 test -z "$ac_cxx_werror_flag" ||
11914 test ! -s conftest.err
11915 } && test -s conftest$ac_exeext &&
11916 $as_test_x conftest$ac_exeext; then
11917
11918 aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
11919 }'`
11920 # Check for a 64-bit object if we didn't find anything.
11921 if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
11922 }'`; fi
11923 else
11924 echo "$as_me: failed program was:" >&5
11925 sed 's/^/| /' conftest.$ac_ext >&5
11926
11927
11928 fi
11929
11930 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
11931 conftest$ac_exeext conftest.$ac_ext
11932 if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
11933
11934 hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
11935 # Warning - without using the other run time loading flags,
11936 # -berok will link without error, but may produce a broken library.
11937 no_undefined_flag_CXX=' ${wl}-bernotok'
11938 allow_undefined_flag_CXX=' ${wl}-berok'
11939 # Exported symbols can be pulled into shared objects from archives
11940 whole_archive_flag_spec_CXX='$convenience'
11941 archive_cmds_need_lc_CXX=yes
11942 # This is similar to how AIX traditionally builds its shared libraries.
11943 archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
11944 fi
11945 fi
11946 ;;
11947
11948 beos*)
11949 if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
11950 allow_undefined_flag_CXX=unsupported
11951 # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
11952 # support --undefined. This deserves some investigation. FIXME
11953 archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
11954 else
11955 ld_shlibs_CXX=no
11956 fi
11957 ;;
11958
11959 chorus*)
11960 case $cc_basename in
11961 *)
11962 # FIXME: insert proper C++ library support
11963 ld_shlibs_CXX=no
11964 ;;
11965 esac
11966 ;;
11967
11968 cygwin* | mingw* | pw32*)
11969 # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
11970 # as there is no search path for DLLs.
11971 hardcode_libdir_flag_spec_CXX='-L$libdir'
11972 allow_undefined_flag_CXX=unsupported
11973 always_export_symbols_CXX=no
11974 enable_shared_with_static_runtimes_CXX=yes
11975
11976 if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
11977 archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
11978 # If the export-symbols file already is a .def file (1st line
11979 # is EXPORTS), use it as is; otherwise, prepend...
11980 archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
11981 cp $export_symbols $output_objdir/$soname.def;
11982 else
11983 echo EXPORTS > $output_objdir/$soname.def;
11984 cat $export_symbols >> $output_objdir/$soname.def;
11985 fi~
11986 $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
11987 else
11988 ld_shlibs_CXX=no
11989 fi
11990 ;;
11991 darwin* | rhapsody*)
11992 case $host_os in
11993 rhapsody* | darwin1.[012])
11994 allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress'
11995 ;;
11996 *) # Darwin 1.3 on
11997 if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
11998 allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
11999 else
12000 case ${MACOSX_DEPLOYMENT_TARGET} in
12001 10.[012])
12002 allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
12003 ;;
12004 10.*)
12005 allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup'
12006 ;;
12007 esac
12008 fi
12009 ;;
12010 esac
12011 archive_cmds_need_lc_CXX=no
12012 hardcode_direct_CXX=no
12013 hardcode_automatic_CXX=yes
12014 hardcode_shlibpath_var_CXX=unsupported
12015 whole_archive_flag_spec_CXX=''
12016 link_all_deplibs_CXX=yes
12017
12018 if test "$GXX" = yes ; then
12019 lt_int_apple_cc_single_mod=no
12020 output_verbose_link_cmd='echo'
12021 if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
12022 lt_int_apple_cc_single_mod=yes
12023 fi
12024 if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
12025 archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
12026 else
12027 archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
12028 fi
12029 module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
12030 # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
12031 if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
12032 archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
12033 else
12034 archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
12035 fi
12036 module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
12037 else
12038 case $cc_basename in
12039 xlc*)
12040 output_verbose_link_cmd='echo'
12041 archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
12042 module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
12043 # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
12044 archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
12045 module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
12046 ;;
12047 *)
12048 ld_shlibs_CXX=no
12049 ;;
12050 esac
12051 fi
12052 ;;
12053
12054 dgux*)
12055 case $cc_basename in
12056 ec++*)
12057 # FIXME: insert proper C++ library support
12058 ld_shlibs_CXX=no
12059 ;;
12060 ghcx*)
12061 # Green Hills C++ Compiler
12062 # FIXME: insert proper C++ library support
12063 ld_shlibs_CXX=no
12064 ;;
12065 *)
12066 # FIXME: insert proper C++ library support
12067 ld_shlibs_CXX=no
12068 ;;
12069 esac
12070 ;;
12071 freebsd[12]*)
12072 # C++ shared libraries reported to be fairly broken before switch to ELF
12073 ld_shlibs_CXX=no
12074 ;;
12075 freebsd-elf*)
12076 archive_cmds_need_lc_CXX=no
12077 ;;
12078 freebsd* | dragonfly*)
12079 # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
12080 # conventions
12081 ld_shlibs_CXX=yes
12082 ;;
12083 gnu*)
12084 ;;
12085 hpux9*)
12086 hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
12087 hardcode_libdir_separator_CXX=:
12088 export_dynamic_flag_spec_CXX='${wl}-E'
12089 hardcode_direct_CXX=yes
12090 hardcode_minus_L_CXX=yes # Not in the search PATH,
12091 # but as the default
12092 # location of the library.
12093
12094 case $cc_basename in
12095 CC*)
12096 # FIXME: insert proper C++ library support
12097 ld_shlibs_CXX=no
12098 ;;
12099 aCC*)
12100 archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
12101 # Commands to make compiler produce verbose output that lists
12102 # what "hidden" libraries, object files and flags are used when
12103 # linking a shared library.
12104 #
12105 # There doesn't appear to be a way to prevent this compiler from
12106 # explicitly linking system object files so we need to strip them
12107 # from the output so that they don't get included in the library
12108 # dependencies.
12109 output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
12110 ;;
12111 *)
12112 if test "$GXX" = yes; then
12113 archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
12114 else
12115 # FIXME: insert proper C++ library support
12116 ld_shlibs_CXX=no
12117 fi
12118 ;;
12119 esac
12120 ;;
12121 hpux10*|hpux11*)
12122 if test $with_gnu_ld = no; then
12123 hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
12124 hardcode_libdir_separator_CXX=:
12125
12126 case $host_cpu in
12127 hppa*64*|ia64*)
12128 hardcode_libdir_flag_spec_ld_CXX='+b $libdir'
12129 ;;
12130 *)
12131 export_dynamic_flag_spec_CXX='${wl}-E'
12132 ;;
12133 esac
12134 fi
12135 case $host_cpu in
12136 hppa*64*|ia64*)
12137 hardcode_direct_CXX=no
12138 hardcode_shlibpath_var_CXX=no
12139 ;;
12140 *)
12141 hardcode_direct_CXX=yes
12142 hardcode_minus_L_CXX=yes # Not in the search PATH,
12143 # but as the default
12144 # location of the library.
12145 ;;
12146 esac
12147
12148 case $cc_basename in
12149 CC*)
12150 # FIXME: insert proper C++ library support
12151 ld_shlibs_CXX=no
12152 ;;
12153 aCC*)
12154 case $host_cpu in
12155 hppa*64*)
12156 archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
12157 ;;
12158 ia64*)
12159 archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
12160 ;;
12161 *)
12162 archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
12163 ;;
12164 esac
12165 # Commands to make compiler produce verbose output that lists
12166 # what "hidden" libraries, object files and flags are used when
12167 # linking a shared library.
12168 #
12169 # There doesn't appear to be a way to prevent this compiler from
12170 # explicitly linking system object files so we need to strip them
12171 # from the output so that they don't get included in the library
12172 # dependencies.
12173 output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
12174 ;;
12175 *)
12176 if test "$GXX" = yes; then
12177 if test $with_gnu_ld = no; then
12178 case $host_cpu in
12179 hppa*64*)
12180 archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
12181 ;;
12182 ia64*)
12183 archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
12184 ;;
12185 *)
12186 archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
12187 ;;
12188 esac
12189 fi
12190 else
12191 # FIXME: insert proper C++ library support
12192 ld_shlibs_CXX=no
12193 fi
12194 ;;
12195 esac
12196 ;;
12197 interix3*)
12198 hardcode_direct_CXX=no
12199 hardcode_shlibpath_var_CXX=no
12200 hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
12201 export_dynamic_flag_spec_CXX='${wl}-E'
12202 # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
12203 # Instead, shared libraries are loaded at an image base (0x10000000 by
12204 # default) and relocated if they conflict, which is a slow very memory
12205 # consuming and fragmenting process. To avoid this, we pick a random,
12206 # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
12207 # time. Moving up from 0x10000000 also allows more sbrk(2) space.
12208 archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
12209 archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
12210 ;;
12211 irix5* | irix6*)
12212 case $cc_basename in
12213 CC*)
12214 # SGI C++
12215 archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
12216
12217 # Archives containing C++ object files must be created using
12218 # "CC -ar", where "CC" is the IRIX C++ compiler. This is
12219 # necessary to make sure instantiated templates are included
12220 # in the archive.
12221 old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
12222 ;;
12223 *)
12224 if test "$GXX" = yes; then
12225 if test "$with_gnu_ld" = no; then
12226 archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
12227 else
12228 archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
12229 fi
12230 fi
12231 link_all_deplibs_CXX=yes
12232 ;;
12233 esac
12234 hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
12235 hardcode_libdir_separator_CXX=:
12236 ;;
12237 linux* | k*bsd*-gnu)
12238 case $cc_basename in
12239 KCC*)
12240 # Kuck and Associates, Inc. (KAI) C++ Compiler
12241
12242 # KCC will only create a shared library if the output file
12243 # ends with ".so" (or ".sl" for HP-UX), so rename the library
12244 # to its proper name (with version) after linking.
12245 archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
12246 archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
12247 # Commands to make compiler produce verbose output that lists
12248 # what "hidden" libraries, object files and flags are used when
12249 # linking a shared library.
12250 #
12251 # There doesn't appear to be a way to prevent this compiler from
12252 # explicitly linking system object files so we need to strip them
12253 # from the output so that they don't get included in the library
12254 # dependencies.
12255 output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
12256
12257 hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir'
12258 export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
12259
12260 # Archives containing C++ object files must be created using
12261 # "CC -Bstatic", where "CC" is the KAI C++ compiler.
12262 old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
12263 ;;
12264 icpc*)
12265 # Intel C++
12266 with_gnu_ld=yes
12267 # version 8.0 and above of icpc choke on multiply defined symbols
12268 # if we add $predep_objects and $postdep_objects, however 7.1 and
12269 # earlier do not add the objects themselves.
12270 case `$CC -V 2>&1` in
12271 *"Version 7."*)
12272 archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
12273 archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
12274 ;;
12275 *) # Version 8.0 or newer
12276 tmp_idyn=
12277 case $host_cpu in
12278 ia64*) tmp_idyn=' -i_dynamic';;
12279 esac
12280 archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
12281 archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
12282 ;;
12283 esac
12284 archive_cmds_need_lc_CXX=no
12285 hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
12286 export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
12287 whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
12288 ;;
12289 pgCC*)
12290 # Portland Group C++ compiler
12291 archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
12292 archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
12293
12294 hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
12295 export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
12296 whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
12297 ;;
12298 cxx*)
12299 # Compaq C++
12300 archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
12301 archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
12302
12303 runpath_var=LD_RUN_PATH
12304 hardcode_libdir_flag_spec_CXX='-rpath $libdir'
12305 hardcode_libdir_separator_CXX=:
12306
12307 # Commands to make compiler produce verbose output that lists
12308 # what "hidden" libraries, object files and flags are used when
12309 # linking a shared library.
12310 #
12311 # There doesn't appear to be a way to prevent this compiler from
12312 # explicitly linking system object files so we need to strip them
12313 # from the output so that they don't get included in the library
12314 # dependencies.
12315 output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
12316 ;;
12317 esac
12318 ;;
12319 lynxos*)
12320 # FIXME: insert proper C++ library support
12321 ld_shlibs_CXX=no
12322 ;;
12323 m88k*)
12324 # FIXME: insert proper C++ library support
12325 ld_shlibs_CXX=no
12326 ;;
12327 mvs*)
12328 case $cc_basename in
12329 cxx*)
12330 # FIXME: insert proper C++ library support
12331 ld_shlibs_CXX=no
12332 ;;
12333 *)
12334 # FIXME: insert proper C++ library support
12335 ld_shlibs_CXX=no
12336 ;;
12337 esac
12338 ;;
12339 netbsd* | netbsdelf*-gnu)
12340 if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
12341 archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
12342 wlarc=
12343 hardcode_libdir_flag_spec_CXX='-R$libdir'
12344 hardcode_direct_CXX=yes
12345 hardcode_shlibpath_var_CXX=no
12346 fi
12347 # Workaround some broken pre-1.5 toolchains
12348 output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
12349 ;;
12350 openbsd2*)
12351 # C++ shared libraries are fairly broken
12352 ld_shlibs_CXX=no
12353 ;;
12354 openbsd*)
12355 hardcode_direct_CXX=yes
12356 hardcode_shlibpath_var_CXX=no
12357 archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
12358 hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
12359 if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
12360 archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
12361 export_dynamic_flag_spec_CXX='${wl}-E'
12362 whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
12363 fi
12364 output_verbose_link_cmd='echo'
12365 ;;
12366 osf3*)
12367 case $cc_basename in
12368 KCC*)
12369 # Kuck and Associates, Inc. (KAI) C++ Compiler
12370
12371 # KCC will only create a shared library if the output file
12372 # ends with ".so" (or ".sl" for HP-UX), so rename the library
12373 # to its proper name (with version) after linking.
12374 archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
12375
12376 hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
12377 hardcode_libdir_separator_CXX=:
12378
12379 # Archives containing C++ object files must be created using
12380 # "CC -Bstatic", where "CC" is the KAI C++ compiler.
12381 old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
12382
12383 ;;
12384 RCC*)
12385 # Rational C++ 2.4.1
12386 # FIXME: insert proper C++ library support
12387 ld_shlibs_CXX=no
12388 ;;
12389 cxx*)
12390 allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
12391 archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
12392
12393 hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
12394 hardcode_libdir_separator_CXX=:
12395
12396 # Commands to make compiler produce verbose output that lists
12397 # what "hidden" libraries, object files and flags are used when
12398 # linking a shared library.
12399 #
12400 # There doesn't appear to be a way to prevent this compiler from
12401 # explicitly linking system object files so we need to strip them
12402 # from the output so that they don't get included in the library
12403 # dependencies.
12404 output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
12405 ;;
12406 *)
12407 if test "$GXX" = yes && test "$with_gnu_ld" = no; then
12408 allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
12409 archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
12410
12411 hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
12412 hardcode_libdir_separator_CXX=:
12413
12414 # Commands to make compiler produce verbose output that lists
12415 # what "hidden" libraries, object files and flags are used when
12416 # linking a shared library.
12417 output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
12418
12419 else
12420 # FIXME: insert proper C++ library support
12421 ld_shlibs_CXX=no
12422 fi
12423 ;;
12424 esac
12425 ;;
12426 osf4* | osf5*)
12427 case $cc_basename in
12428 KCC*)
12429 # Kuck and Associates, Inc. (KAI) C++ Compiler
12430
12431 # KCC will only create a shared library if the output file
12432 # ends with ".so" (or ".sl" for HP-UX), so rename the library
12433 # to its proper name (with version) after linking.
12434 archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
12435
12436 hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
12437 hardcode_libdir_separator_CXX=:
12438
12439 # Archives containing C++ object files must be created using
12440 # the KAI C++ compiler.
12441 old_archive_cmds_CXX='$CC -o $oldlib $oldobjs'
12442 ;;
12443 RCC*)
12444 # Rational C++ 2.4.1
12445 # FIXME: insert proper C++ library support
12446 ld_shlibs_CXX=no
12447 ;;
12448 cxx*)
12449 allow_undefined_flag_CXX=' -expect_unresolved \*'
12450 archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
12451 archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
12452 echo "-hidden">> $lib.exp~
12453 $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~
12454 $rm $lib.exp'
12455
12456 hardcode_libdir_flag_spec_CXX='-rpath $libdir'
12457 hardcode_libdir_separator_CXX=:
12458
12459 # Commands to make compiler produce verbose output that lists
12460 # what "hidden" libraries, object files and flags are used when
12461 # linking a shared library.
12462 #
12463 # There doesn't appear to be a way to prevent this compiler from
12464 # explicitly linking system object files so we need to strip them
12465 # from the output so that they don't get included in the library
12466 # dependencies.
12467 output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
12468 ;;
12469 *)
12470 if test "$GXX" = yes && test "$with_gnu_ld" = no; then
12471 allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
12472 archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
12473
12474 hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
12475 hardcode_libdir_separator_CXX=:
12476
12477 # Commands to make compiler produce verbose output that lists
12478 # what "hidden" libraries, object files and flags are used when
12479 # linking a shared library.
12480 output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
12481
12482 else
12483 # FIXME: insert proper C++ library support
12484 ld_shlibs_CXX=no
12485 fi
12486 ;;
12487 esac
12488 ;;
12489 psos*)
12490 # FIXME: insert proper C++ library support
12491 ld_shlibs_CXX=no
12492 ;;
12493 sunos4*)
12494 case $cc_basename in
12495 CC*)
12496 # Sun C++ 4.x
12497 # FIXME: insert proper C++ library support
12498 ld_shlibs_CXX=no
12499 ;;
12500 lcc*)
12501 # Lucid
12502 # FIXME: insert proper C++ library support
12503 ld_shlibs_CXX=no
12504 ;;
12505 *)
12506 # FIXME: insert proper C++ library support
12507 ld_shlibs_CXX=no
12508 ;;
12509 esac
12510 ;;
12511 solaris*)
12512 case $cc_basename in
12513 CC*)
12514 # Sun C++ 4.2, 5.x and Centerline C++
12515 archive_cmds_need_lc_CXX=yes
12516 no_undefined_flag_CXX=' -zdefs'
12517 archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
12518 archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
12519 $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
12520
12521 hardcode_libdir_flag_spec_CXX='-R$libdir'
12522 hardcode_shlibpath_var_CXX=no
12523 case $host_os in
12524 solaris2.[0-5] | solaris2.[0-5].*) ;;
12525 *)
12526 # The C++ compiler is used as linker so we must use $wl
12527 # flag to pass the commands to the underlying system
12528 # linker. We must also pass each convience library through
12529 # to the system linker between allextract/defaultextract.
12530 # The C++ compiler will combine linker options so we
12531 # cannot just pass the convience library names through
12532 # without $wl.
12533 # Supported since Solaris 2.6 (maybe 2.5.1?)
12534 whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
12535 ;;
12536 esac
12537 link_all_deplibs_CXX=yes
12538
12539 output_verbose_link_cmd='echo'
12540
12541 # Archives containing C++ object files must be created using
12542 # "CC -xar", where "CC" is the Sun C++ compiler. This is
12543 # necessary to make sure instantiated templates are included
12544 # in the archive.
12545 old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
12546 ;;
12547 gcx*)
12548 # Green Hills C++ Compiler
12549 archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
12550
12551 # The C++ compiler must be used to create the archive.
12552 old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
12553 ;;
12554 *)
12555 # GNU C++ compiler with Solaris linker
12556 if test "$GXX" = yes && test "$with_gnu_ld" = no; then
12557 no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
12558 if $CC --version | grep -v '^2\.7' > /dev/null; then
12559 archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
12560 archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
12561 $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
12562
12563 # Commands to make compiler produce verbose output that lists
12564 # what "hidden" libraries, object files and flags are used when
12565 # linking a shared library.
12566 output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
12567 else
12568 # g++ 2.7 appears to require `-G' NOT `-shared' on this
12569 # platform.
12570 archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
12571 archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
12572 $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
12573
12574 # Commands to make compiler produce verbose output that lists
12575 # what "hidden" libraries, object files and flags are used when
12576 # linking a shared library.
12577 output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
12578 fi
12579
12580 hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
12581 fi
12582 ;;
12583 esac
12584 ;;
12585 sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
12586 no_undefined_flag_CXX='${wl}-z,text'
12587 archive_cmds_need_lc_CXX=no
12588 hardcode_shlibpath_var_CXX=no
12589 runpath_var='LD_RUN_PATH'
12590
12591 case $cc_basename in
12592 CC*)
12593 archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
12594 archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
12595 ;;
12596 *)
12597 archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
12598 archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
12599 ;;
12600 esac
12601 ;;
12602 sysv5* | sco3.2v5* | sco5v6*)
12603 # Note: We can NOT use -z defs as we might desire, because we do not
12604 # link with -lc, and that would cause any symbols used from libc to
12605 # always be unresolved, which means just about no library would
12606 # ever link correctly. If we're not using GNU ld we use -z text
12607 # though, which does catch some bad symbols but isn't as heavy-handed
12608 # as -z defs.
12609 # For security reasons, it is highly recommended that you always
12610 # use absolute paths for naming shared libraries, and exclude the
12611 # DT_RUNPATH tag from executables and libraries. But doing so
12612 # requires that you compile everything twice, which is a pain.
12613 # So that behaviour is only enabled if SCOABSPATH is set to a
12614 # non-empty value in the environment. Most likely only useful for
12615 # creating official distributions of packages.
12616 # This is a hack until libtool officially supports absolute path
12617 # names for shared libraries.
12618 no_undefined_flag_CXX='${wl}-z,text'
12619 allow_undefined_flag_CXX='${wl}-z,nodefs'
12620 archive_cmds_need_lc_CXX=no
12621 hardcode_shlibpath_var_CXX=no
12622 hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
12623 hardcode_libdir_separator_CXX=':'
12624 link_all_deplibs_CXX=yes
12625 export_dynamic_flag_spec_CXX='${wl}-Bexport'
12626 runpath_var='LD_RUN_PATH'
12627
12628 case $cc_basename in
12629 CC*)
12630 archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
12631 archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
12632 ;;
12633 *)
12634 archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
12635 archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
12636 ;;
12637 esac
12638 ;;
12639 tandem*)
12640 case $cc_basename in
12641 NCC*)
12642 # NonStop-UX NCC 3.20
12643 # FIXME: insert proper C++ library support
12644 ld_shlibs_CXX=no
12645 ;;
12646 *)
12647 # FIXME: insert proper C++ library support
12648 ld_shlibs_CXX=no
12649 ;;
12650 esac
12651 ;;
12652 vxworks*)
12653 # FIXME: insert proper C++ library support
12654 ld_shlibs_CXX=no
12655 ;;
12656 *)
12657 # FIXME: insert proper C++ library support
12658 ld_shlibs_CXX=no
12659 ;;
12660 esac
12661 { echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
12662 echo "${ECHO_T}$ld_shlibs_CXX" >&6; }
12663 test "$ld_shlibs_CXX" = no && can_build_shared=no
12664
12665 GCC_CXX="$GXX"
12666 LD_CXX="$LD"
12667
12668
12669 cat > conftest.$ac_ext <<EOF
12670 class Foo
12671 {
12672 public:
12673 Foo (void) { a = 0; }
12674 private:
12675 int a;
12676 };
12677 EOF
12678
12679 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
12680 (eval $ac_compile) 2>&5
12681 ac_status=$?
12682 echo "$as_me:$LINENO: \$? = $ac_status" >&5
12683 (exit $ac_status); }; then
12684 # Parse the compiler output and extract the necessary
12685 # objects, libraries and library flags.
12686
12687 # Sentinel used to keep track of whether or not we are before
12688 # the conftest object file.
12689 pre_test_object_deps_done=no
12690
12691 # The `*' in the case matches for architectures that use `case' in
12692 # $output_verbose_cmd can trigger glob expansion during the loop
12693 # eval without this substitution.
12694 output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
12695
12696 for p in `eval $output_verbose_link_cmd`; do
12697 case $p in
12698
12699 -L* | -R* | -l*)
12700 # Some compilers place space between "-{L,R}" and the path.
12701 # Remove the space.
12702 if test $p = "-L" \
12703 || test $p = "-R"; then
12704 prev=$p
12705 continue
12706 else
12707 prev=
12708 fi
12709
12710 if test "$pre_test_object_deps_done" = no; then
12711 case $p in
12712 -L* | -R*)
12713 # Internal compiler library paths should come after those
12714 # provided the user. The postdeps already come after the
12715 # user supplied libs so there is no need to process them.
12716 if test -z "$compiler_lib_search_path_CXX"; then
12717 compiler_lib_search_path_CXX="${prev}${p}"
12718 else
12719 compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
12720 fi
12721 ;;
12722 # The "-l" case would never come before the object being
12723 # linked, so don't bother handling this case.
12724 esac
12725 else
12726 if test -z "$postdeps_CXX"; then
12727 postdeps_CXX="${prev}${p}"
12728 else
12729 postdeps_CXX="${postdeps_CXX} ${prev}${p}"
12730 fi
12731 fi
12732 ;;
12733
12734 *.$objext)
12735 # This assumes that the test object file only shows up
12736 # once in the compiler output.
12737 if test "$p" = "conftest.$objext"; then
12738 pre_test_object_deps_done=yes
12739 continue
12740 fi
12741
12742 if test "$pre_test_object_deps_done" = no; then
12743 if test -z "$predep_objects_CXX"; then
12744 predep_objects_CXX="$p"
12745 else
12746 predep_objects_CXX="$predep_objects_CXX $p"
12747 fi
12748 else
12749 if test -z "$postdep_objects_CXX"; then
12750 postdep_objects_CXX="$p"
12751 else
12752 postdep_objects_CXX="$postdep_objects_CXX $p"
12753 fi
12754 fi
12755 ;;
12756
12757 *) ;; # Ignore the rest.
12758
12759 esac
12760 done
12761
12762 # Clean up.
12763 rm -f a.out a.exe
12764 else
12765 echo "libtool.m4: error: problem compiling CXX test program"
12766 fi
12767
12768 $rm -f confest.$objext
12769
12770 # PORTME: override above test on systems where it is broken
12771 case $host_os in
12772 interix3*)
12773 # Interix 3.5 installs completely hosed .la files for C++, so rather than
12774 # hack all around it, let's just trust "g++" to DTRT.
12775 predep_objects_CXX=
12776 postdep_objects_CXX=
12777 postdeps_CXX=
12778 ;;
12779
12780 solaris*)
12781 case $cc_basename in
12782 CC*)
12783 # Adding this requires a known-good setup of shared libraries for
12784 # Sun compiler versions before 5.6, else PIC objects from an old
12785 # archive will be linked into the output, leading to subtle bugs.
12786 postdeps_CXX='-lCstd -lCrun'
12787 ;;
12788 esac
12789 ;;
12790 esac
12791
12792
12793 case " $postdeps_CXX " in
12794 *" -lc "*) archive_cmds_need_lc_CXX=no ;;
12795 esac
12796
12797 lt_prog_compiler_wl_CXX=
12798 lt_prog_compiler_pic_CXX=
12799 lt_prog_compiler_static_CXX=
12800
12801 { echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
12802 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
12803
12804 # C++ specific cases for pic, static, wl, etc.
12805 if test "$GXX" = yes; then
12806 lt_prog_compiler_wl_CXX='-Wl,'
12807 lt_prog_compiler_static_CXX='-static'
12808
12809 case $host_os in
12810 aix*)
12811 # All AIX code is PIC.
12812 if test "$host_cpu" = ia64; then
12813 # AIX 5 now supports IA64 processor
12814 lt_prog_compiler_static_CXX='-Bstatic'
12815 fi
12816 ;;
12817 amigaos*)
12818 # FIXME: we need at least 68020 code to build shared libraries, but
12819 # adding the `-m68020' flag to GCC prevents building anything better,
12820 # like `-m68040'.
12821 lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
12822 ;;
12823 beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
12824 # PIC is the default for these OSes.
12825 ;;
12826 mingw* | os2* | pw32*)
12827 # This hack is so that the source file can tell whether it is being
12828 # built for inclusion in a dll (and should export symbols for example).
12829 lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
12830 ;;
12831 darwin* | rhapsody*)
12832 # PIC is the default on this platform
12833 # Common symbols not allowed in MH_DYLIB files
12834 lt_prog_compiler_pic_CXX='-fno-common'
12835 ;;
12836 *djgpp*)
12837 # DJGPP does not support shared libraries at all
12838 lt_prog_compiler_pic_CXX=
12839 ;;
12840 interix3*)
12841 # Interix 3.x gcc -fpic/-fPIC options generate broken code.
12842 # Instead, we relocate shared libraries at runtime.
12843 ;;
12844 sysv4*MP*)
12845 if test -d /usr/nec; then
12846 lt_prog_compiler_pic_CXX=-Kconform_pic
12847 fi
12848 ;;
12849 hpux*)
12850 # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
12851 # not for PA HP-UX.
12852 case $host_cpu in
12853 hppa*64*|ia64*)
12854 ;;
12855 *)
12856 lt_prog_compiler_pic_CXX='-fPIC'
12857 ;;
12858 esac
12859 ;;
12860 *)
12861 lt_prog_compiler_pic_CXX='-fPIC'
12862 ;;
12863 esac
12864 else
12865 case $host_os in
12866 aix4* | aix5*)
12867 # All AIX code is PIC.
12868 if test "$host_cpu" = ia64; then
12869 # AIX 5 now supports IA64 processor
12870 lt_prog_compiler_static_CXX='-Bstatic'
12871 else
12872 lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
12873 fi
12874 ;;
12875 chorus*)
12876 case $cc_basename in
12877 cxch68*)
12878 # Green Hills C++ Compiler
12879 # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
12880 ;;
12881 esac
12882 ;;
12883 darwin*)
12884 # PIC is the default on this platform
12885 # Common symbols not allowed in MH_DYLIB files
12886 case $cc_basename in
12887 xlc*)
12888 lt_prog_compiler_pic_CXX='-qnocommon'
12889 lt_prog_compiler_wl_CXX='-Wl,'
12890 ;;
12891 esac
12892 ;;
12893 dgux*)
12894 case $cc_basename in
12895 ec++*)
12896 lt_prog_compiler_pic_CXX='-KPIC'
12897 ;;
12898 ghcx*)
12899 # Green Hills C++ Compiler
12900 lt_prog_compiler_pic_CXX='-pic'
12901 ;;
12902 *)
12903 ;;
12904 esac
12905 ;;
12906 freebsd* | dragonfly*)
12907 # FreeBSD uses GNU C++
12908 ;;
12909 hpux9* | hpux10* | hpux11*)
12910 case $cc_basename in
12911 CC*)
12912 lt_prog_compiler_wl_CXX='-Wl,'
12913 lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
12914 if test "$host_cpu" != ia64; then
12915 lt_prog_compiler_pic_CXX='+Z'
12916 fi
12917 ;;
12918 aCC*)
12919 lt_prog_compiler_wl_CXX='-Wl,'
12920 lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
12921 case $host_cpu in
12922 hppa*64*|ia64*)
12923 # +Z the default
12924 ;;
12925 *)
12926 lt_prog_compiler_pic_CXX='+Z'
12927 ;;
12928 esac
12929 ;;
12930 *)
12931 ;;
12932 esac
12933 ;;
12934 interix*)
12935 # This is c89, which is MS Visual C++ (no shared libs)
12936 # Anyone wants to do a port?
12937 ;;
12938 irix5* | irix6* | nonstopux*)
12939 case $cc_basename in
12940 CC*)
12941 lt_prog_compiler_wl_CXX='-Wl,'
12942 lt_prog_compiler_static_CXX='-non_shared'
12943 # CC pic flag -KPIC is the default.
12944 ;;
12945 *)
12946 ;;
12947 esac
12948 ;;
12949 linux* | k*bsd*-gnu)
12950 case $cc_basename in
12951 KCC*)
12952 # KAI C++ Compiler
12953 lt_prog_compiler_wl_CXX='--backend -Wl,'
12954 lt_prog_compiler_pic_CXX='-fPIC'
12955 ;;
12956 icpc* | ecpc*)
12957 # Intel C++
12958 lt_prog_compiler_wl_CXX='-Wl,'
12959 lt_prog_compiler_pic_CXX='-KPIC'
12960 lt_prog_compiler_static_CXX='-static'
12961 ;;
12962 pgCC*)
12963 # Portland Group C++ compiler.
12964 lt_prog_compiler_wl_CXX='-Wl,'
12965 lt_prog_compiler_pic_CXX='-fpic'
12966 lt_prog_compiler_static_CXX='-Bstatic'
12967 ;;
12968 cxx*)
12969 # Compaq C++
12970 # Make sure the PIC flag is empty. It appears that all Alpha
12971 # Linux and Compaq Tru64 Unix objects are PIC.
12972 lt_prog_compiler_pic_CXX=
12973 lt_prog_compiler_static_CXX='-non_shared'
12974 ;;
12975 *)
12976 ;;
12977 esac
12978 ;;
12979 lynxos*)
12980 ;;
12981 m88k*)
12982 ;;
12983 mvs*)
12984 case $cc_basename in
12985 cxx*)
12986 lt_prog_compiler_pic_CXX='-W c,exportall'
12987 ;;
12988 *)
12989 ;;
12990 esac
12991 ;;
12992 netbsd* | netbsdelf*-gnu)
12993 ;;
12994 osf3* | osf4* | osf5*)
12995 case $cc_basename in
12996 KCC*)
12997 lt_prog_compiler_wl_CXX='--backend -Wl,'
12998 ;;
12999 RCC*)
13000 # Rational C++ 2.4.1
13001 lt_prog_compiler_pic_CXX='-pic'
13002 ;;
13003 cxx*)
13004 # Digital/Compaq C++
13005 lt_prog_compiler_wl_CXX='-Wl,'
13006 # Make sure the PIC flag is empty. It appears that all Alpha
13007 # Linux and Compaq Tru64 Unix objects are PIC.
13008 lt_prog_compiler_pic_CXX=
13009 lt_prog_compiler_static_CXX='-non_shared'
13010 ;;
13011 *)
13012 ;;
13013 esac
13014 ;;
13015 psos*)
13016 ;;
13017 solaris*)
13018 case $cc_basename in
13019 CC*)
13020 # Sun C++ 4.2, 5.x and Centerline C++
13021 lt_prog_compiler_pic_CXX='-KPIC'
13022 lt_prog_compiler_static_CXX='-Bstatic'
13023 lt_prog_compiler_wl_CXX='-Qoption ld '
13024 ;;
13025 gcx*)
13026 # Green Hills C++ Compiler
13027 lt_prog_compiler_pic_CXX='-PIC'
13028 ;;
13029 *)
13030 ;;
13031 esac
13032 ;;
13033 sunos4*)
13034 case $cc_basename in
13035 CC*)
13036 # Sun C++ 4.x
13037 lt_prog_compiler_pic_CXX='-pic'
13038 lt_prog_compiler_static_CXX='-Bstatic'
13039 ;;
13040 lcc*)
13041 # Lucid
13042 lt_prog_compiler_pic_CXX='-pic'
13043 ;;
13044 *)
13045 ;;
13046 esac
13047 ;;
13048 tandem*)
13049 case $cc_basename in
13050 NCC*)
13051 # NonStop-UX NCC 3.20
13052 lt_prog_compiler_pic_CXX='-KPIC'
13053 ;;
13054 *)
13055 ;;
13056 esac
13057 ;;
13058 sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
13059 case $cc_basename in
13060 CC*)
13061 lt_prog_compiler_wl_CXX='-Wl,'
13062 lt_prog_compiler_pic_CXX='-KPIC'
13063 lt_prog_compiler_static_CXX='-Bstatic'
13064 ;;
13065 esac
13066 ;;
13067 vxworks*)
13068 ;;
13069 *)
13070 lt_prog_compiler_can_build_shared_CXX=no
13071 ;;
13072 esac
13073 fi
13074
13075 { echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5
13076 echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6; }
13077
13078 #
13079 # Check to make sure the PIC flag actually works.
13080 #
13081 if test -n "$lt_prog_compiler_pic_CXX"; then
13082
13083 { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
13084 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6; }
13085 if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then
13086 echo $ECHO_N "(cached) $ECHO_C" >&6
13087 else
13088 lt_prog_compiler_pic_works_CXX=no
13089 ac_outfile=conftest.$ac_objext
13090 printf "$lt_simple_compile_test_code" > conftest.$ac_ext
13091 lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
13092 # Insert the option either (1) after the last *FLAGS variable, or
13093 # (2) before a word containing "conftest.", or (3) at the end.
13094 # Note that $ac_compile itself does not contain backslashes and begins
13095 # with a dollar sign (not a hyphen), so the echo should work correctly.
13096 # The option is referenced via a variable to avoid confusing sed.
13097 lt_compile=`echo "$ac_compile" | $SED \
13098 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
13099 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
13100 -e 's:$: $lt_compiler_flag:'`
13101 (eval echo "\"\$as_me:13102: $lt_compile\"" >&5)
13102 (eval "$lt_compile" 2>conftest.err)
13103 ac_status=$?
13104 cat conftest.err >&5
13105 echo "$as_me:13106: \$? = $ac_status" >&5
13106 if (exit $ac_status) && test -s "$ac_outfile"; then
13107 # The compiler can only warn and ignore the option if not recognized
13108 # So say no if there are warnings other than the usual output.
13109 $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
13110 $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
13111 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
13112 lt_prog_compiler_pic_works_CXX=yes
13113 fi
13114 fi
13115 $rm conftest*
13116
13117 fi
13118 { echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5
13119 echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6; }
13120
13121 if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then
13122 case $lt_prog_compiler_pic_CXX in
13123 "" | " "*) ;;
13124 *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
13125 esac
13126 else
13127 lt_prog_compiler_pic_CXX=
13128 lt_prog_compiler_can_build_shared_CXX=no
13129 fi
13130
13131 fi
13132 case $host_os in
13133 # For platforms which do not support PIC, -DPIC is meaningless:
13134 *djgpp*)
13135 lt_prog_compiler_pic_CXX=
13136 ;;
13137 *)
13138 lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
13139 ;;
13140 esac
13141
13142 #
13143 # Check to make sure the static flag actually works.
13144 #
13145 wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
13146 { echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
13147 echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
13148 if test "${lt_prog_compiler_static_works_CXX+set}" = set; then
13149 echo $ECHO_N "(cached) $ECHO_C" >&6
13150 else
13151 lt_prog_compiler_static_works_CXX=no
13152 save_LDFLAGS="$LDFLAGS"
13153 LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
13154 printf "$lt_simple_link_test_code" > conftest.$ac_ext
13155 if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
13156 # The linker can only warn and ignore the option if not recognized
13157 # So say no if there are warnings
13158 if test -s conftest.err; then
13159 # Append any errors to the config.log.
13160 cat conftest.err 1>&5
13161 $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
13162 $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
13163 if diff conftest.exp conftest.er2 >/dev/null; then
13164 lt_prog_compiler_static_works_CXX=yes
13165 fi
13166 else
13167 lt_prog_compiler_static_works_CXX=yes
13168 fi
13169 fi
13170 $rm conftest*
13171 LDFLAGS="$save_LDFLAGS"
13172
13173 fi
13174 { echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_CXX" >&5
13175 echo "${ECHO_T}$lt_prog_compiler_static_works_CXX" >&6; }
13176
13177 if test x"$lt_prog_compiler_static_works_CXX" = xyes; then
13178 :
13179 else
13180 lt_prog_compiler_static_CXX=
13181 fi
13182
13183
13184 { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
13185 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
13186 if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
13187 echo $ECHO_N "(cached) $ECHO_C" >&6
13188 else
13189 lt_cv_prog_compiler_c_o_CXX=no
13190 $rm -r conftest 2>/dev/null
13191 mkdir conftest
13192 cd conftest
13193 mkdir out
13194 printf "$lt_simple_compile_test_code" > conftest.$ac_ext
13195
13196 lt_compiler_flag="-o out/conftest2.$ac_objext"
13197 # Insert the option either (1) after the last *FLAGS variable, or
13198 # (2) before a word containing "conftest.", or (3) at the end.
13199 # Note that $ac_compile itself does not contain backslashes and begins
13200 # with a dollar sign (not a hyphen), so the echo should work correctly.
13201 lt_compile=`echo "$ac_compile" | $SED \
13202 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
13203 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
13204 -e 's:$: $lt_compiler_flag:'`
13205 (eval echo "\"\$as_me:13206: $lt_compile\"" >&5)
13206 (eval "$lt_compile" 2>out/conftest.err)
13207 ac_status=$?
13208 cat out/conftest.err >&5
13209 echo "$as_me:13210: \$? = $ac_status" >&5
13210 if (exit $ac_status) && test -s out/conftest2.$ac_objext
13211 then
13212 # The compiler can only warn and ignore the option if not recognized
13213 # So say no if there are warnings
13214 $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
13215 $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
13216 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
13217 lt_cv_prog_compiler_c_o_CXX=yes
13218 fi
13219 fi
13220 chmod u+w . 2>&5
13221 $rm conftest*
13222 # SGI C++ compiler will create directory out/ii_files/ for
13223 # template instantiation
13224 test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
13225 $rm out/* && rmdir out
13226 cd ..
13227 rmdir conftest
13228 $rm conftest*
13229
13230 fi
13231 { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
13232 echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6; }
13233
13234
13235 hard_links="nottested"
13236 if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
13237 # do not overwrite the value of need_locks provided by the user
13238 { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
13239 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; }
13240 hard_links=yes
13241 $rm conftest*
13242 ln conftest.a conftest.b 2>/dev/null && hard_links=no
13243 touch conftest.a
13244 ln conftest.a conftest.b 2>&5 || hard_links=no
13245 ln conftest.a conftest.b 2>/dev/null && hard_links=no
13246 { echo "$as_me:$LINENO: result: $hard_links" >&5
13247 echo "${ECHO_T}$hard_links" >&6; }
13248 if test "$hard_links" = no; then
13249 { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
13250 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
13251 need_locks=warn
13252 fi
13253 else
13254 need_locks=no
13255 fi
13256
13257 { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
13258 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
13259
13260 export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
13261 case $host_os in
13262 aix4* | aix5*)
13263 # If we're using GNU nm, then we don't want the "-C" option.
13264 # -C means demangle to AIX nm, but means don't demangle with GNU nm
13265 if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
13266 export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
13267 else
13268 export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
13269 fi
13270 ;;
13271 pw32*)
13272 export_symbols_cmds_CXX="$ltdll_cmds"
13273 ;;
13274 cygwin* | mingw*)
13275 export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
13276 ;;
13277 linux* | k*bsd*-gnu)
13278 link_all_deplibs_CXX=no
13279 ;;
13280 *)
13281 export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
13282 ;;
13283 esac
13284
13285 { echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
13286 echo "${ECHO_T}$ld_shlibs_CXX" >&6; }
13287 test "$ld_shlibs_CXX" = no && can_build_shared=no
13288
13289 #
13290 # Do we need to explicitly link libc?
13291 #
13292 case "x$archive_cmds_need_lc_CXX" in
13293 x|xyes)
13294 # Assume -lc should be added
13295 archive_cmds_need_lc_CXX=yes
13296
13297 if test "$enable_shared" = yes && test "$GCC" = yes; then
13298 case $archive_cmds_CXX in
13299 *'~'*)
13300 # FIXME: we may have to deal with multi-command sequences.
13301 ;;
13302 '$CC '*)
13303 # Test whether the compiler implicitly links with -lc since on some
13304 # systems, -lgcc has to come before -lc. If gcc already passes -lc
13305 # to ld, don't add -lc before -lgcc.
13306 { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
13307 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
13308 $rm conftest*
13309 printf "$lt_simple_compile_test_code" > conftest.$ac_ext
13310
13311 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
13312 (eval $ac_compile) 2>&5
13313 ac_status=$?
13314 echo "$as_me:$LINENO: \$? = $ac_status" >&5
13315 (exit $ac_status); } 2>conftest.err; then
13316 soname=conftest
13317 lib=conftest
13318 libobjs=conftest.$ac_objext
13319 deplibs=
13320 wl=$lt_prog_compiler_wl_CXX
13321 pic_flag=$lt_prog_compiler_pic_CXX
13322 compiler_flags=-v
13323 linker_flags=-v
13324 verstring=
13325 output_objdir=.
13326 libname=conftest
13327 lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
13328 allow_undefined_flag_CXX=
13329 if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
13330 (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
13331 ac_status=$?
13332 echo "$as_me:$LINENO: \$? = $ac_status" >&5
13333 (exit $ac_status); }
13334 then
13335 archive_cmds_need_lc_CXX=no
13336 else
13337 archive_cmds_need_lc_CXX=yes
13338 fi
13339 allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
13340 else
13341 cat conftest.err 1>&5
13342 fi
13343 $rm conftest*
13344 { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5
13345 echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6; }
13346 ;;
13347 esac
13348 fi
13349 ;;
13350 esac
13351
13352 { echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
13353 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
13354 library_names_spec=
13355 libname_spec='lib$name'
13356 soname_spec=
13357 shrext_cmds=".so"
13358 postinstall_cmds=
13359 postuninstall_cmds=
13360 finish_cmds=
13361 finish_eval=
13362 shlibpath_var=
13363 shlibpath_overrides_runpath=unknown
13364 version_type=none
13365 dynamic_linker="$host_os ld.so"
13366 sys_lib_dlsearch_path_spec="/lib /usr/lib"
13367 if test "$GCC" = yes; then
13368 sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
13369 if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
13370 # if the path contains ";" then we assume it to be the separator
13371 # otherwise default to the standard path separator (i.e. ":") - it is
13372 # assumed that no part of a normal pathname contains ";" but that should
13373 # okay in the real world where ";" in dirpaths is itself problematic.
13374 sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
13375 else
13376 sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
13377 fi
13378 else
13379 sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
13380 fi
13381 need_lib_prefix=unknown
13382 hardcode_into_libs=no
13383
13384 # when you set need_version to no, make sure it does not cause -set_version
13385 # flags to be left without arguments
13386 need_version=unknown
13387
13388 case $host_os in
13389 aix3*)
13390 version_type=linux
13391 library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
13392 shlibpath_var=LIBPATH
13393
13394 # AIX 3 has no versioning support, so we append a major version to the name.
13395 soname_spec='${libname}${release}${shared_ext}$major'
13396 ;;
13397
13398 aix4* | aix5*)
13399 version_type=linux
13400 need_lib_prefix=no
13401 need_version=no
13402 hardcode_into_libs=yes
13403 if test "$host_cpu" = ia64; then
13404 # AIX 5 supports IA64
13405 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
13406 shlibpath_var=LD_LIBRARY_PATH
13407 else
13408 # With GCC up to 2.95.x, collect2 would create an import file
13409 # for dependence libraries. The import file would start with
13410 # the line `#! .'. This would cause the generated library to
13411 # depend on `.', always an invalid library. This was fixed in
13412 # development snapshots of GCC prior to 3.0.
13413 case $host_os in
13414 aix4 | aix4.[01] | aix4.[01].*)
13415 if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
13416 echo ' yes '
13417 echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
13418 :
13419 else
13420 can_build_shared=no
13421 fi
13422 ;;
13423 esac
13424 # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
13425 # soname into executable. Probably we can add versioning support to
13426 # collect2, so additional links can be useful in future.
13427 if test "$aix_use_runtimelinking" = yes; then
13428 # If using run time linking (on AIX 4.2 or later) use lib<name>.so
13429 # instead of lib<name>.a to let people know that these are not
13430 # typical AIX shared libraries.
13431 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
13432 else
13433 # We preserve .a as extension for shared libraries through AIX4.2
13434 # and later when we are not doing run time linking.
13435 library_names_spec='${libname}${release}.a $libname.a'
13436 soname_spec='${libname}${release}${shared_ext}$major'
13437 fi
13438 shlibpath_var=LIBPATH
13439 fi
13440 ;;
13441
13442 amigaos*)
13443 library_names_spec='$libname.ixlibrary $libname.a'
13444 # Create ${libname}_ixlibrary.a entries in /sys/libs.
13445 finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
13446 ;;
13447
13448 beos*)
13449 library_names_spec='${libname}${shared_ext}'
13450 dynamic_linker="$host_os ld.so"
13451 shlibpath_var=LIBRARY_PATH
13452 ;;
13453
13454 bsdi[45]*)
13455 version_type=linux
13456 need_version=no
13457 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
13458 soname_spec='${libname}${release}${shared_ext}$major'
13459 finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
13460 shlibpath_var=LD_LIBRARY_PATH
13461 sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
13462 sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
13463 # the default ld.so.conf also contains /usr/contrib/lib and
13464 # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
13465 # libtool to hard-code these into programs
13466 ;;
13467
13468 cygwin* | mingw* | pw32*)
13469 version_type=windows
13470 shrext_cmds=".dll"
13471 need_version=no
13472 need_lib_prefix=no
13473
13474 case $GCC,$host_os in
13475 yes,cygwin* | yes,mingw* | yes,pw32*)
13476 library_names_spec='$libname.dll.a'
13477 # DLL is installed to $(libdir)/../bin by postinstall_cmds
13478 postinstall_cmds='base_file=`basename \${file}`~
13479 dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
13480 dldir=$destdir/`dirname \$dlpath`~
13481 test -d \$dldir || mkdir -p \$dldir~
13482 $install_prog $dir/$dlname \$dldir/$dlname~
13483 chmod a+x \$dldir/$dlname'
13484 postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
13485 dlpath=$dir/\$dldll~
13486 $rm \$dlpath'
13487 shlibpath_overrides_runpath=yes
13488
13489 case $host_os in
13490 cygwin*)
13491 # Cygwin DLLs use 'cyg' prefix rather than 'lib'
13492 soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
13493 sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
13494 ;;
13495 mingw*)
13496 # MinGW DLLs use traditional 'lib' prefix
13497 soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
13498 sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
13499 if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
13500 # It is most probably a Windows format PATH printed by
13501 # mingw gcc, but we are running on Cygwin. Gcc prints its search
13502 # path with ; separators, and with drive letters. We can handle the
13503 # drive letters (cygwin fileutils understands them), so leave them,
13504 # especially as we might pass files found there to a mingw objdump,
13505 # which wouldn't understand a cygwinified path. Ahh.
13506 sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
13507 else
13508 sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
13509 fi
13510 ;;
13511 pw32*)
13512 # pw32 DLLs use 'pw' prefix rather than 'lib'
13513 library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
13514 ;;
13515 esac
13516 ;;
13517
13518 *)
13519 library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
13520 ;;
13521 esac
13522 dynamic_linker='Win32 ld.exe'
13523 # FIXME: first we should search . and the directory the executable is in
13524 shlibpath_var=PATH
13525 ;;
13526
13527 darwin* | rhapsody*)
13528 dynamic_linker="$host_os dyld"
13529 version_type=darwin
13530 need_lib_prefix=no
13531 need_version=no
13532 library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
13533 soname_spec='${libname}${release}${major}$shared_ext'
13534 shlibpath_overrides_runpath=yes
13535 shlibpath_var=DYLD_LIBRARY_PATH
13536 shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
13537 # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
13538 if test "$GCC" = yes; then
13539 sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
13540 else
13541 sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
13542 fi
13543 sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
13544 ;;
13545
13546 dgux*)
13547 version_type=linux
13548 need_lib_prefix=no
13549 need_version=no
13550 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
13551 soname_spec='${libname}${release}${shared_ext}$major'
13552 shlibpath_var=LD_LIBRARY_PATH
13553 ;;
13554
13555 freebsd1*)
13556 dynamic_linker=no
13557 ;;
13558
13559 freebsd* | dragonfly*)
13560 # DragonFly does not have aout. When/if they implement a new
13561 # versioning mechanism, adjust this.
13562 if test -x /usr/bin/objformat; then
13563 objformat=`/usr/bin/objformat`
13564 else
13565 case $host_os in
13566 freebsd[123]*) objformat=aout ;;
13567 *) objformat=elf ;;
13568 esac
13569 fi
13570 version_type=freebsd-$objformat
13571 case $version_type in
13572 freebsd-elf*)
13573 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
13574 need_version=no
13575 need_lib_prefix=no
13576 ;;
13577 freebsd-*)
13578 library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
13579 need_version=yes
13580 ;;
13581 esac
13582 shlibpath_var=LD_LIBRARY_PATH
13583 case $host_os in
13584 freebsd2*)
13585 shlibpath_overrides_runpath=yes
13586 ;;
13587 freebsd3.[01]* | freebsdelf3.[01]*)
13588 shlibpath_overrides_runpath=yes
13589 hardcode_into_libs=yes
13590 ;;
13591 freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
13592 freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
13593 shlibpath_overrides_runpath=no
13594 hardcode_into_libs=yes
13595 ;;
13596 freebsd*) # from 4.6 on
13597 shlibpath_overrides_runpath=yes
13598 hardcode_into_libs=yes
13599 ;;
13600 esac
13601 ;;
13602
13603 gnu*)
13604 version_type=linux
13605 need_lib_prefix=no
13606 need_version=no
13607 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
13608 soname_spec='${libname}${release}${shared_ext}$major'
13609 shlibpath_var=LD_LIBRARY_PATH
13610 hardcode_into_libs=yes
13611 ;;
13612
13613 hpux9* | hpux10* | hpux11*)
13614 # Give a soname corresponding to the major version so that dld.sl refuses to
13615 # link against other versions.
13616 version_type=sunos
13617 need_lib_prefix=no
13618 need_version=no
13619 case $host_cpu in
13620 ia64*)
13621 shrext_cmds='.so'
13622 hardcode_into_libs=yes
13623 dynamic_linker="$host_os dld.so"
13624 shlibpath_var=LD_LIBRARY_PATH
13625 shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
13626 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
13627 soname_spec='${libname}${release}${shared_ext}$major'
13628 if test "X$HPUX_IA64_MODE" = X32; then
13629 sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
13630 else
13631 sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
13632 fi
13633 sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
13634 ;;
13635 hppa*64*)
13636 shrext_cmds='.sl'
13637 hardcode_into_libs=yes
13638 dynamic_linker="$host_os dld.sl"
13639 shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
13640 shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
13641 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
13642 soname_spec='${libname}${release}${shared_ext}$major'
13643 sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
13644 sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
13645 ;;
13646 *)
13647 shrext_cmds='.sl'
13648 dynamic_linker="$host_os dld.sl"
13649 shlibpath_var=SHLIB_PATH
13650 shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
13651 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
13652 soname_spec='${libname}${release}${shared_ext}$major'
13653 ;;
13654 esac
13655 # HP-UX runs *really* slowly unless shared libraries are mode 555.
13656 postinstall_cmds='chmod 555 $lib'
13657 ;;
13658
13659 interix3*)
13660 version_type=linux
13661 need_lib_prefix=no
13662 need_version=no
13663 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
13664 soname_spec='${libname}${release}${shared_ext}$major'
13665 dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
13666 shlibpath_var=LD_LIBRARY_PATH
13667 shlibpath_overrides_runpath=no
13668 hardcode_into_libs=yes
13669 ;;
13670
13671 irix5* | irix6* | nonstopux*)
13672 case $host_os in
13673 nonstopux*) version_type=nonstopux ;;
13674 *)
13675 if test "$lt_cv_prog_gnu_ld" = yes; then
13676 version_type=linux
13677 else
13678 version_type=irix
13679 fi ;;
13680 esac
13681 need_lib_prefix=no
13682 need_version=no
13683 soname_spec='${libname}${release}${shared_ext}$major'
13684 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
13685 case $host_os in
13686 irix5* | nonstopux*)
13687 libsuff= shlibsuff=
13688 ;;
13689 *)
13690 case $LD in # libtool.m4 will add one of these switches to LD
13691 *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
13692 libsuff= shlibsuff= libmagic=32-bit;;
13693 *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
13694 libsuff=32 shlibsuff=N32 libmagic=N32;;
13695 *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
13696 libsuff=64 shlibsuff=64 libmagic=64-bit;;
13697 *) libsuff= shlibsuff= libmagic=never-match;;
13698 esac
13699 ;;
13700 esac
13701 shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
13702 shlibpath_overrides_runpath=no
13703 sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
13704 sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
13705 hardcode_into_libs=yes
13706 ;;
13707
13708 # No shared lib support for Linux oldld, aout, or coff.
13709 linux*oldld* | linux*aout* | linux*coff*)
13710 dynamic_linker=no
13711 ;;
13712
13713 # This must be Linux ELF.
13714 linux* | k*bsd*-gnu)
13715 version_type=linux
13716 need_lib_prefix=no
13717 need_version=no
13718 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
13719 soname_spec='${libname}${release}${shared_ext}$major'
13720 finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
13721 shlibpath_var=LD_LIBRARY_PATH
13722 shlibpath_overrides_runpath=no
13723 # This implies no fast_install, which is unacceptable.
13724 # Some rework will be needed to allow for fast_install
13725 # before this can be enabled.
13726 hardcode_into_libs=yes
13727
13728 # Append ld.so.conf contents to the search path
13729 if test -f /etc/ld.so.conf; then
13730 lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
13731 sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
13732 fi
13733
13734 # We used to test for /lib/ld.so.1 and disable shared libraries on
13735 # powerpc, because MkLinux only supported shared libraries with the
13736 # GNU dynamic linker. Since this was broken with cross compilers,
13737 # most powerpc-linux boxes support dynamic linking these days and
13738 # people can always --disable-shared, the test was removed, and we
13739 # assume the GNU/Linux dynamic linker is in use.
13740 dynamic_linker='GNU/Linux ld.so'
13741 ;;
13742
13743 netbsdelf*-gnu)
13744 version_type=linux
13745 need_lib_prefix=no
13746 need_version=no
13747 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
13748 soname_spec='${libname}${release}${shared_ext}$major'
13749 shlibpath_var=LD_LIBRARY_PATH
13750 shlibpath_overrides_runpath=no
13751 hardcode_into_libs=yes
13752 dynamic_linker='NetBSD ld.elf_so'
13753 ;;
13754
13755 netbsd*)
13756 version_type=sunos
13757 need_lib_prefix=no
13758 need_version=no
13759 if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
13760 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
13761 finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
13762 dynamic_linker='NetBSD (a.out) ld.so'
13763 else
13764 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
13765 soname_spec='${libname}${release}${shared_ext}$major'
13766 dynamic_linker='NetBSD ld.elf_so'
13767 fi
13768 shlibpath_var=LD_LIBRARY_PATH
13769 shlibpath_overrides_runpath=yes
13770 hardcode_into_libs=yes
13771 ;;
13772
13773 newsos6)
13774 version_type=linux
13775 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
13776 shlibpath_var=LD_LIBRARY_PATH
13777 shlibpath_overrides_runpath=yes
13778 ;;
13779
13780 nto-qnx*)
13781 version_type=linux
13782 need_lib_prefix=no
13783 need_version=no
13784 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
13785 soname_spec='${libname}${release}${shared_ext}$major'
13786 shlibpath_var=LD_LIBRARY_PATH
13787 shlibpath_overrides_runpath=yes
13788 ;;
13789
13790 openbsd*)
13791 version_type=sunos
13792 sys_lib_dlsearch_path_spec="/usr/lib"
13793 need_lib_prefix=no
13794 # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
13795 case $host_os in
13796 openbsd3.3 | openbsd3.3.*) need_version=yes ;;
13797 *) need_version=no ;;
13798 esac
13799 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
13800 finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
13801 shlibpath_var=LD_LIBRARY_PATH
13802 if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
13803 case $host_os in
13804 openbsd2.[89] | openbsd2.[89].*)
13805 shlibpath_overrides_runpath=no
13806 ;;
13807 *)
13808 shlibpath_overrides_runpath=yes
13809 ;;
13810 esac
13811 else
13812 shlibpath_overrides_runpath=yes
13813 fi
13814 ;;
13815
13816 os2*)
13817 libname_spec='$name'
13818 shrext_cmds=".dll"
13819 need_lib_prefix=no
13820 library_names_spec='$libname${shared_ext} $libname.a'
13821 dynamic_linker='OS/2 ld.exe'
13822 shlibpath_var=LIBPATH
13823 ;;
13824
13825 osf3* | osf4* | osf5*)
13826 version_type=osf
13827 need_lib_prefix=no
13828 need_version=no
13829 soname_spec='${libname}${release}${shared_ext}$major'
13830 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
13831 shlibpath_var=LD_LIBRARY_PATH
13832 sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
13833 sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
13834 ;;
13835
13836 solaris*)
13837 version_type=linux
13838 need_lib_prefix=no
13839 need_version=no
13840 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
13841 soname_spec='${libname}${release}${shared_ext}$major'
13842 shlibpath_var=LD_LIBRARY_PATH
13843 shlibpath_overrides_runpath=yes
13844 hardcode_into_libs=yes
13845 # ldd complains unless libraries are executable
13846 postinstall_cmds='chmod +x $lib'
13847 ;;
13848
13849 sunos4*)
13850 version_type=sunos
13851 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
13852 finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
13853 shlibpath_var=LD_LIBRARY_PATH
13854 shlibpath_overrides_runpath=yes
13855 if test "$with_gnu_ld" = yes; then
13856 need_lib_prefix=no
13857 fi
13858 need_version=yes
13859 ;;
13860
13861 sysv4 | sysv4.3*)
13862 version_type=linux
13863 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
13864 soname_spec='${libname}${release}${shared_ext}$major'
13865 shlibpath_var=LD_LIBRARY_PATH
13866 case $host_vendor in
13867 sni)
13868 shlibpath_overrides_runpath=no
13869 need_lib_prefix=no
13870 export_dynamic_flag_spec='${wl}-Blargedynsym'
13871 runpath_var=LD_RUN_PATH
13872 ;;
13873 siemens)
13874 need_lib_prefix=no
13875 ;;
13876 motorola)
13877 need_lib_prefix=no
13878 need_version=no
13879 shlibpath_overrides_runpath=no
13880 sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
13881 ;;
13882 esac
13883 ;;
13884
13885 sysv4*MP*)
13886 if test -d /usr/nec ;then
13887 version_type=linux
13888 library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
13889 soname_spec='$libname${shared_ext}.$major'
13890 shlibpath_var=LD_LIBRARY_PATH
13891 fi
13892 ;;
13893
13894 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
13895 version_type=freebsd-elf
13896 need_lib_prefix=no
13897 need_version=no
13898 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
13899 soname_spec='${libname}${release}${shared_ext}$major'
13900 shlibpath_var=LD_LIBRARY_PATH
13901 hardcode_into_libs=yes
13902 if test "$with_gnu_ld" = yes; then
13903 sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
13904 shlibpath_overrides_runpath=no
13905 else
13906 sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
13907 shlibpath_overrides_runpath=yes
13908 case $host_os in
13909 sco3.2v5*)
13910 sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
13911 ;;
13912 esac
13913 fi
13914 sys_lib_dlsearch_path_spec='/usr/lib'
13915 ;;
13916
13917 uts4*)
13918 version_type=linux
13919 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
13920 soname_spec='${libname}${release}${shared_ext}$major'
13921 shlibpath_var=LD_LIBRARY_PATH
13922 ;;
13923
13924 *)
13925 dynamic_linker=no
13926 ;;
13927 esac
13928 { echo "$as_me:$LINENO: result: $dynamic_linker" >&5
13929 echo "${ECHO_T}$dynamic_linker" >&6; }
13930 test "$dynamic_linker" = no && can_build_shared=no
13931
13932 variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
13933 if test "$GCC" = yes; then
13934 variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
13935 fi
13936
13937 { echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
13938 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
13939 hardcode_action_CXX=
13940 if test -n "$hardcode_libdir_flag_spec_CXX" || \
13941 test -n "$runpath_var_CXX" || \
13942 test "X$hardcode_automatic_CXX" = "Xyes" ; then
13943
13944 # We can hardcode non-existant directories.
13945 if test "$hardcode_direct_CXX" != no &&
13946 # If the only mechanism to avoid hardcoding is shlibpath_var, we
13947 # have to relink, otherwise we might link with an installed library
13948 # when we should be linking with a yet-to-be-installed one
13949 ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
13950 test "$hardcode_minus_L_CXX" != no; then
13951 # Linking always hardcodes the temporary library directory.
13952 hardcode_action_CXX=relink
13953 else
13954 # We can link without hardcoding, and we can hardcode nonexisting dirs.
13955 hardcode_action_CXX=immediate
13956 fi
13957 else
13958 # We cannot hardcode anything, or else we can only hardcode existing
13959 # directories.
13960 hardcode_action_CXX=unsupported
13961 fi
13962 { echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5
13963 echo "${ECHO_T}$hardcode_action_CXX" >&6; }
13964
13965 if test "$hardcode_action_CXX" = relink; then
13966 # Fast installation is not supported
13967 enable_fast_install=no
13968 elif test "$shlibpath_overrides_runpath" = yes ||
13969 test "$enable_shared" = no; then
13970 # Fast installation is not necessary
13971 enable_fast_install=needless
13972 fi
13973
13974
13975 # The else clause should only fire when bootstrapping the
13976 # libtool distribution, otherwise you forgot to ship ltmain.sh
13977 # with your package, and you will get complaints that there are
13978 # no rules to generate ltmain.sh.
13979 if test -f "$ltmain"; then
13980 # See if we are running on zsh, and set the options which allow our commands through
13981 # without removal of \ escapes.
13982 if test -n "${ZSH_VERSION+set}" ; then
13983 setopt NO_GLOB_SUBST
13984 fi
13985 # Now quote all the things that may contain metacharacters while being
13986 # careful not to overquote the AC_SUBSTed values. We take copies of the
13987 # variables and quote the copies for generation of the libtool script.
13988 for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
13989 SED SHELL STRIP \
13990 libname_spec library_names_spec soname_spec extract_expsyms_cmds \
13991 old_striplib striplib file_magic_cmd finish_cmds finish_eval \
13992 deplibs_check_method reload_flag reload_cmds need_locks \
13993 lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
13994 lt_cv_sys_global_symbol_to_c_name_address \
13995 sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
13996 old_postinstall_cmds old_postuninstall_cmds \
13997 compiler_CXX \
13998 CC_CXX \
13999 LD_CXX \
14000 lt_prog_compiler_wl_CXX \
14001 lt_prog_compiler_pic_CXX \
14002 lt_prog_compiler_static_CXX \
14003 lt_prog_compiler_no_builtin_flag_CXX \
14004 export_dynamic_flag_spec_CXX \
14005 thread_safe_flag_spec_CXX \
14006 whole_archive_flag_spec_CXX \
14007 enable_shared_with_static_runtimes_CXX \
14008 old_archive_cmds_CXX \
14009 old_archive_from_new_cmds_CXX \
14010 predep_objects_CXX \
14011 postdep_objects_CXX \
14012 predeps_CXX \
14013 postdeps_CXX \
14014 compiler_lib_search_path_CXX \
14015 archive_cmds_CXX \
14016 archive_expsym_cmds_CXX \
14017 postinstall_cmds_CXX \
14018 postuninstall_cmds_CXX \
14019 old_archive_from_expsyms_cmds_CXX \
14020 allow_undefined_flag_CXX \
14021 no_undefined_flag_CXX \
14022 export_symbols_cmds_CXX \
14023 hardcode_libdir_flag_spec_CXX \
14024 hardcode_libdir_flag_spec_ld_CXX \
14025 hardcode_libdir_separator_CXX \
14026 hardcode_automatic_CXX \
14027 module_cmds_CXX \
14028 module_expsym_cmds_CXX \
14029 lt_cv_prog_compiler_c_o_CXX \
14030 exclude_expsyms_CXX \
14031 include_expsyms_CXX; do
14032
14033 case $var in
14034 old_archive_cmds_CXX | \
14035 old_archive_from_new_cmds_CXX | \
14036 archive_cmds_CXX | \
14037 archive_expsym_cmds_CXX | \
14038 module_cmds_CXX | \
14039 module_expsym_cmds_CXX | \
14040 old_archive_from_expsyms_cmds_CXX | \
14041 export_symbols_cmds_CXX | \
14042 extract_expsyms_cmds | reload_cmds | finish_cmds | \
14043 postinstall_cmds | postuninstall_cmds | \
14044 old_postinstall_cmds | old_postuninstall_cmds | \
14045 sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
14046 # Double-quote double-evaled strings.
14047 eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
14048 ;;
14049 *)
14050 eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
14051 ;;
14052 esac
14053 done
14054
14055 case $lt_echo in
14056 *'\$0 --fallback-echo"')
14057 lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
14058 ;;
14059 esac
14060
14061 cfgfile="$ofile"
14062
14063 cat <<__EOF__ >> "$cfgfile"
14064 # ### BEGIN LIBTOOL TAG CONFIG: $tagname
14065
14066 # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
14067
14068 # Shell to use when invoking shell scripts.
14069 SHELL=$lt_SHELL
14070
14071 # Whether or not to build shared libraries.
14072 build_libtool_libs=$enable_shared
14073
14074 # Whether or not to build static libraries.
14075 build_old_libs=$enable_static
14076
14077 # Whether or not to add -lc for building shared libraries.
14078 build_libtool_need_lc=$archive_cmds_need_lc_CXX
14079
14080 # Whether or not to disallow shared libs when runtime libs are static
14081 allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
14082
14083 # Whether or not to optimize for fast installation.
14084 fast_install=$enable_fast_install
14085
14086 # The host system.
14087 host_alias=$host_alias
14088 host=$host
14089 host_os=$host_os
14090
14091 # The build system.
14092 build_alias=$build_alias
14093 build=$build
14094 build_os=$build_os
14095
14096 # An echo program that does not interpret backslashes.
14097 echo=$lt_echo
14098
14099 # The archiver.
14100 AR=$lt_AR
14101 AR_FLAGS=$lt_AR_FLAGS
14102
14103 # A C compiler.
14104 LTCC=$lt_LTCC
14105
14106 # LTCC compiler flags.
14107 LTCFLAGS=$lt_LTCFLAGS
14108
14109 # A language-specific compiler.
14110 CC=$lt_compiler_CXX
14111
14112 # Is the compiler the GNU C compiler?
14113 with_gcc=$GCC_CXX
14114
14115 # An ERE matcher.
14116 EGREP=$lt_EGREP
14117
14118 # The linker used to build libraries.
14119 LD=$lt_LD_CXX
14120
14121 # Whether we need hard or soft links.
14122 LN_S=$lt_LN_S
14123
14124 # A BSD-compatible nm program.
14125 NM=$lt_NM
14126
14127 # A symbol stripping program
14128 STRIP=$lt_STRIP
14129
14130 # Used to examine libraries when file_magic_cmd begins "file"
14131 MAGIC_CMD=$MAGIC_CMD
14132
14133 # Used on cygwin: DLL creation program.
14134 DLLTOOL="$DLLTOOL"
14135
14136 # Used on cygwin: object dumper.
14137 OBJDUMP="$OBJDUMP"
14138
14139 # Used on cygwin: assembler.
14140 AS="$AS"
14141
14142 # The name of the directory that contains temporary libtool files.
14143 objdir=$objdir
14144
14145 # How to create reloadable object files.
14146 reload_flag=$lt_reload_flag
14147 reload_cmds=$lt_reload_cmds
14148
14149 # How to pass a linker flag through the compiler.
14150 wl=$lt_lt_prog_compiler_wl_CXX
14151
14152 # Object file suffix (normally "o").
14153 objext="$ac_objext"
14154
14155 # Old archive suffix (normally "a").
14156 libext="$libext"
14157
14158 # Shared library suffix (normally ".so").
14159 shrext_cmds='$shrext_cmds'
14160
14161 # Executable file suffix (normally "").
14162 exeext="$exeext"
14163
14164 # Additional compiler flags for building library objects.
14165 pic_flag=$lt_lt_prog_compiler_pic_CXX
14166 pic_mode=$pic_mode
14167
14168 # What is the maximum length of a command?
14169 max_cmd_len=$lt_cv_sys_max_cmd_len
14170
14171 # Does compiler simultaneously support -c and -o options?
14172 compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
14173
14174 # Must we lock files when doing compilation?
14175 need_locks=$lt_need_locks
14176
14177 # Do we need the lib prefix for modules?
14178 need_lib_prefix=$need_lib_prefix
14179
14180 # Do we need a version for libraries?
14181 need_version=$need_version
14182
14183 # Whether dlopen is supported.
14184 dlopen_support=$enable_dlopen
14185
14186 # Whether dlopen of programs is supported.
14187 dlopen_self=$enable_dlopen_self
14188
14189 # Whether dlopen of statically linked programs is supported.
14190 dlopen_self_static=$enable_dlopen_self_static
14191
14192 # Compiler flag to prevent dynamic linking.
14193 link_static_flag=$lt_lt_prog_compiler_static_CXX
14194
14195 # Compiler flag to turn off builtin functions.
14196 no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
14197
14198 # Compiler flag to allow reflexive dlopens.
14199 export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
14200
14201 # Compiler flag to generate shared objects directly from archives.
14202 whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
14203
14204 # Compiler flag to generate thread-safe objects.
14205 thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX
14206
14207 # Library versioning type.
14208 version_type=$version_type
14209
14210 # Format of library name prefix.
14211 libname_spec=$lt_libname_spec
14212
14213 # List of archive names. First name is the real one, the rest are links.
14214 # The last name is the one that the linker finds with -lNAME.
14215 library_names_spec=$lt_library_names_spec
14216
14217 # The coded name of the library, if different from the real name.
14218 soname_spec=$lt_soname_spec
14219
14220 # Commands used to build and install an old-style archive.
14221 RANLIB=$lt_RANLIB
14222 old_archive_cmds=$lt_old_archive_cmds_CXX
14223 old_postinstall_cmds=$lt_old_postinstall_cmds
14224 old_postuninstall_cmds=$lt_old_postuninstall_cmds
14225
14226 # Create an old-style archive from a shared archive.
14227 old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
14228
14229 # Create a temporary old-style archive to link instead of a shared archive.
14230 old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
14231
14232 # Commands used to build and install a shared archive.
14233 archive_cmds=$lt_archive_cmds_CXX
14234 archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
14235 postinstall_cmds=$lt_postinstall_cmds
14236 postuninstall_cmds=$lt_postuninstall_cmds
14237
14238 # Commands used to build a loadable module (assumed same as above if empty)
14239 module_cmds=$lt_module_cmds_CXX
14240 module_expsym_cmds=$lt_module_expsym_cmds_CXX
14241
14242 # Commands to strip libraries.
14243 old_striplib=$lt_old_striplib
14244 striplib=$lt_striplib
14245
14246 # Dependencies to place before the objects being linked to create a
14247 # shared library.
14248 predep_objects=$lt_predep_objects_CXX
14249
14250 # Dependencies to place after the objects being linked to create a
14251 # shared library.
14252 postdep_objects=$lt_postdep_objects_CXX
14253
14254 # Dependencies to place before the objects being linked to create a
14255 # shared library.
14256 predeps=$lt_predeps_CXX
14257
14258 # Dependencies to place after the objects being linked to create a
14259 # shared library.
14260 postdeps=$lt_postdeps_CXX
14261
14262 # The library search path used internally by the compiler when linking
14263 # a shared library.
14264 compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
14265
14266 # Method to check whether dependent libraries are shared objects.
14267 deplibs_check_method=$lt_deplibs_check_method
14268
14269 # Command to use when deplibs_check_method == file_magic.
14270 file_magic_cmd=$lt_file_magic_cmd
14271
14272 # Flag that allows shared libraries with undefined symbols to be built.
14273 allow_undefined_flag=$lt_allow_undefined_flag_CXX
14274
14275 # Flag that forces no undefined symbols.
14276 no_undefined_flag=$lt_no_undefined_flag_CXX
14277
14278 # Commands used to finish a libtool library installation in a directory.
14279 finish_cmds=$lt_finish_cmds
14280
14281 # Same as above, but a single script fragment to be evaled but not shown.
14282 finish_eval=$lt_finish_eval
14283
14284 # Take the output of nm and produce a listing of raw symbols and C names.
14285 global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
14286
14287 # Transform the output of nm in a proper C declaration
14288 global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
14289
14290 # Transform the output of nm in a C name address pair
14291 global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
14292
14293 # This is the shared library runtime path variable.
14294 runpath_var=$runpath_var
14295
14296 # This is the shared library path variable.
14297 shlibpath_var=$shlibpath_var
14298
14299 # Is shlibpath searched before the hard-coded library search path?
14300 shlibpath_overrides_runpath=$shlibpath_overrides_runpath
14301
14302 # How to hardcode a shared library path into an executable.
14303 hardcode_action=$hardcode_action_CXX
14304
14305 # Whether we should hardcode library paths into libraries.
14306 hardcode_into_libs=$hardcode_into_libs
14307
14308 # Flag to hardcode \$libdir into a binary during linking.
14309 # This must work even if \$libdir does not exist.
14310 hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
14311
14312 # If ld is used when linking, flag to hardcode \$libdir into
14313 # a binary during linking. This must work even if \$libdir does
14314 # not exist.
14315 hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
14316
14317 # Whether we need a single -rpath flag with a separated argument.
14318 hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
14319
14320 # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
14321 # resulting binary.
14322 hardcode_direct=$hardcode_direct_CXX
14323
14324 # Set to yes if using the -LDIR flag during linking hardcodes DIR into the
14325 # resulting binary.
14326 hardcode_minus_L=$hardcode_minus_L_CXX
14327
14328 # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
14329 # the resulting binary.
14330 hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
14331
14332 # Set to yes if building a shared library automatically hardcodes DIR into the library
14333 # and all subsequent libraries and executables linked against it.
14334 hardcode_automatic=$hardcode_automatic_CXX
14335
14336 # Variables whose values should be saved in libtool wrapper scripts and
14337 # restored at relink time.
14338 variables_saved_for_relink="$variables_saved_for_relink"
14339
14340 # Whether libtool must link a program against all its dependency libraries.
14341 link_all_deplibs=$link_all_deplibs_CXX
14342
14343 # Compile-time system search path for libraries
14344 sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
14345
14346 # Run-time system search path for libraries
14347 sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
14348
14349 # Fix the shell variable \$srcfile for the compiler.
14350 fix_srcfile_path="$fix_srcfile_path_CXX"
14351
14352 # Set to yes if exported symbols are required.
14353 always_export_symbols=$always_export_symbols_CXX
14354
14355 # The commands to list exported symbols.
14356 export_symbols_cmds=$lt_export_symbols_cmds_CXX
14357
14358 # The commands to extract the exported symbol list from a shared archive.
14359 extract_expsyms_cmds=$lt_extract_expsyms_cmds
14360
14361 # Symbols that should not be listed in the preloaded symbols.
14362 exclude_expsyms=$lt_exclude_expsyms_CXX
14363
14364 # Symbols that must always be exported.
14365 include_expsyms=$lt_include_expsyms_CXX
14366
14367 # ### END LIBTOOL TAG CONFIG: $tagname
14368
14369 __EOF__
14370
14371
14372 else
14373 # If there is no Makefile yet, we rely on a make rule to execute
14374 # `config.status --recheck' to rerun these tests and create the
14375 # libtool script then.
14376 ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
14377 if test -f "$ltmain_in"; then
14378 test -f Makefile && make "$ltmain"
14379 fi
14380 fi
14381
14382
14383 ac_ext=c
14384 ac_cpp='$CPP $CPPFLAGS'
14385 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
14386 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
14387 ac_compiler_gnu=$ac_cv_c_compiler_gnu
14388
14389 CC=$lt_save_CC
14390 LDCXX=$LD
14391 LD=$lt_save_LD
14392 GCC=$lt_save_GCC
14393 with_gnu_ldcxx=$with_gnu_ld
14394 with_gnu_ld=$lt_save_with_gnu_ld
14395 lt_cv_path_LDCXX=$lt_cv_path_LD
14396 lt_cv_path_LD=$lt_save_path_LD
14397 lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
14398 lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
14399
14400 else
14401 tagname=""
14402 fi
14403 ;;
14404
14405 F77)
14406 if test -n "$F77" && test "X$F77" != "Xno"; then
14407
14408 ac_ext=f
14409 ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
14410 ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
14411 ac_compiler_gnu=$ac_cv_f77_compiler_gnu
14412
14413
14414 archive_cmds_need_lc_F77=no
14415 allow_undefined_flag_F77=
14416 always_export_symbols_F77=no
14417 archive_expsym_cmds_F77=
14418 export_dynamic_flag_spec_F77=
14419 hardcode_direct_F77=no
14420 hardcode_libdir_flag_spec_F77=
14421 hardcode_libdir_flag_spec_ld_F77=
14422 hardcode_libdir_separator_F77=
14423 hardcode_minus_L_F77=no
14424 hardcode_automatic_F77=no
14425 module_cmds_F77=
14426 module_expsym_cmds_F77=
14427 link_all_deplibs_F77=unknown
14428 old_archive_cmds_F77=$old_archive_cmds
14429 no_undefined_flag_F77=
14430 whole_archive_flag_spec_F77=
14431 enable_shared_with_static_runtimes_F77=no
14432
14433 # Source file extension for f77 test sources.
14434 ac_ext=f
14435
14436 # Object file extension for compiled f77 test sources.
14437 objext=o
14438 objext_F77=$objext
14439
14440 # Code to be used in simple compile tests
14441 lt_simple_compile_test_code=" subroutine t\n return\n end\n"
14442
14443 # Code to be used in simple link tests
14444 lt_simple_link_test_code=" program t\n end\n"
14445
14446 # ltmain only uses $CC for tagged configurations so make sure $CC is set.
14447
14448 # If no C compiler was specified, use CC.
14449 LTCC=${LTCC-"$CC"}
14450
14451 # If no C compiler flags were specified, use CFLAGS.
14452 LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
14453
14454 # Allow CC to be a program name with arguments.
14455 compiler=$CC
14456
14457
14458 # save warnings/boilerplate of simple test code
14459 ac_outfile=conftest.$ac_objext
14460 printf "$lt_simple_compile_test_code" >conftest.$ac_ext
14461 eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
14462 _lt_compiler_boilerplate=`cat conftest.err`
14463 $rm conftest*
14464
14465 ac_outfile=conftest.$ac_objext
14466 printf "$lt_simple_link_test_code" >conftest.$ac_ext
14467 eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
14468 _lt_linker_boilerplate=`cat conftest.err`
14469 $rm conftest*
14470
14471
14472 # Allow CC to be a program name with arguments.
14473 lt_save_CC="$CC"
14474 CC=${F77-"f77"}
14475 compiler=$CC
14476 compiler_F77=$CC
14477 for cc_temp in $compiler""; do
14478 case $cc_temp in
14479 compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
14480 distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
14481 \-*) ;;
14482 *) break;;
14483 esac
14484 done
14485 cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
14486
14487
14488 { echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
14489 echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; }
14490 { echo "$as_me:$LINENO: result: $can_build_shared" >&5
14491 echo "${ECHO_T}$can_build_shared" >&6; }
14492
14493 { echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
14494 echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; }
14495 test "$can_build_shared" = "no" && enable_shared=no
14496
14497 # On AIX, shared libraries and static libraries use the same namespace, and
14498 # are all built from PIC.
14499 case $host_os in
14500 aix3*)
14501 test "$enable_shared" = yes && enable_static=no
14502 if test -n "$RANLIB"; then
14503 archive_cmds="$archive_cmds~\$RANLIB \$lib"
14504 postinstall_cmds='$RANLIB $lib'
14505 fi
14506 ;;
14507 aix4* | aix5*)
14508 if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
14509 test "$enable_shared" = yes && enable_static=no
14510 fi
14511 ;;
14512 esac
14513 { echo "$as_me:$LINENO: result: $enable_shared" >&5
14514 echo "${ECHO_T}$enable_shared" >&6; }
14515
14516 { echo "$as_me:$LINENO: checking whether to build static libraries" >&5
14517 echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; }
14518 # Make sure either enable_shared or enable_static is yes.
14519 test "$enable_shared" = yes || enable_static=yes
14520 { echo "$as_me:$LINENO: result: $enable_static" >&5
14521 echo "${ECHO_T}$enable_static" >&6; }
14522
14523 GCC_F77="$G77"
14524 LD_F77="$LD"
14525
14526 lt_prog_compiler_wl_F77=
14527 lt_prog_compiler_pic_F77=
14528 lt_prog_compiler_static_F77=
14529
14530 { echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
14531 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
14532
14533 if test "$GCC" = yes; then
14534 lt_prog_compiler_wl_F77='-Wl,'
14535 lt_prog_compiler_static_F77='-static'
14536
14537 case $host_os in
14538 aix*)
14539 # All AIX code is PIC.
14540 if test "$host_cpu" = ia64; then
14541 # AIX 5 now supports IA64 processor
14542 lt_prog_compiler_static_F77='-Bstatic'
14543 fi
14544 ;;
14545
14546 amigaos*)
14547 # FIXME: we need at least 68020 code to build shared libraries, but
14548 # adding the `-m68020' flag to GCC prevents building anything better,
14549 # like `-m68040'.
14550 lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
14551 ;;
14552
14553 beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
14554 # PIC is the default for these OSes.
14555 ;;
14556
14557 mingw* | pw32* | os2*)
14558 # This hack is so that the source file can tell whether it is being
14559 # built for inclusion in a dll (and should export symbols for example).
14560 lt_prog_compiler_pic_F77='-DDLL_EXPORT'
14561 ;;
14562
14563 darwin* | rhapsody*)
14564 # PIC is the default on this platform
14565 # Common symbols not allowed in MH_DYLIB files
14566 lt_prog_compiler_pic_F77='-fno-common'
14567 ;;
14568
14569 interix3*)
14570 # Interix 3.x gcc -fpic/-fPIC options generate broken code.
14571 # Instead, we relocate shared libraries at runtime.
14572 ;;
14573
14574 msdosdjgpp*)
14575 # Just because we use GCC doesn't mean we suddenly get shared libraries
14576 # on systems that don't support them.
14577 lt_prog_compiler_can_build_shared_F77=no
14578 enable_shared=no
14579 ;;
14580
14581 sysv4*MP*)
14582 if test -d /usr/nec; then
14583 lt_prog_compiler_pic_F77=-Kconform_pic
14584 fi
14585 ;;
14586
14587 hpux*)
14588 # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
14589 # not for PA HP-UX.
14590 case $host_cpu in
14591 hppa*64*|ia64*)
14592 # +Z the default
14593 ;;
14594 *)
14595 lt_prog_compiler_pic_F77='-fPIC'
14596 ;;
14597 esac
14598 ;;
14599
14600 *)
14601 lt_prog_compiler_pic_F77='-fPIC'
14602 ;;
14603 esac
14604 else
14605 # PORTME Check for flag to pass linker flags through the system compiler.
14606 case $host_os in
14607 aix*)
14608 lt_prog_compiler_wl_F77='-Wl,'
14609 if test "$host_cpu" = ia64; then
14610 # AIX 5 now supports IA64 processor
14611 lt_prog_compiler_static_F77='-Bstatic'
14612 else
14613 lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
14614 fi
14615 ;;
14616 darwin*)
14617 # PIC is the default on this platform
14618 # Common symbols not allowed in MH_DYLIB files
14619 case $cc_basename in
14620 xlc*)
14621 lt_prog_compiler_pic_F77='-qnocommon'
14622 lt_prog_compiler_wl_F77='-Wl,'
14623 ;;
14624 esac
14625 ;;
14626
14627 mingw* | pw32* | os2*)
14628 # This hack is so that the source file can tell whether it is being
14629 # built for inclusion in a dll (and should export symbols for example).
14630 lt_prog_compiler_pic_F77='-DDLL_EXPORT'
14631 ;;
14632
14633 hpux9* | hpux10* | hpux11*)
14634 lt_prog_compiler_wl_F77='-Wl,'
14635 # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
14636 # not for PA HP-UX.
14637 case $host_cpu in
14638 hppa*64*|ia64*)
14639 # +Z the default
14640 ;;
14641 *)
14642 lt_prog_compiler_pic_F77='+Z'
14643 ;;
14644 esac
14645 # Is there a better lt_prog_compiler_static that works with the bundled CC?
14646 lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
14647 ;;
14648
14649 irix5* | irix6* | nonstopux*)
14650 lt_prog_compiler_wl_F77='-Wl,'
14651 # PIC (with -KPIC) is the default.
14652 lt_prog_compiler_static_F77='-non_shared'
14653 ;;
14654
14655 newsos6)
14656 lt_prog_compiler_pic_F77='-KPIC'
14657 lt_prog_compiler_static_F77='-Bstatic'
14658 ;;
14659
14660 linux* | k*bsd*-gnu)
14661 case $cc_basename in
14662 icc* | ecc*)
14663 lt_prog_compiler_wl_F77='-Wl,'
14664 lt_prog_compiler_pic_F77='-KPIC'
14665 lt_prog_compiler_static_F77='-static'
14666 ;;
14667 pgcc* | pgf77* | pgf90* | pgf95*)
14668 # Portland Group compilers (*not* the Pentium gcc compiler,
14669 # which looks to be a dead project)
14670 lt_prog_compiler_wl_F77='-Wl,'
14671 lt_prog_compiler_pic_F77='-fpic'
14672 lt_prog_compiler_static_F77='-Bstatic'
14673 ;;
14674 ccc*)
14675 lt_prog_compiler_wl_F77='-Wl,'
14676 # All Alpha code is PIC.
14677 lt_prog_compiler_static_F77='-non_shared'
14678 ;;
14679 esac
14680 ;;
14681
14682 osf3* | osf4* | osf5*)
14683 lt_prog_compiler_wl_F77='-Wl,'
14684 # All OSF/1 code is PIC.
14685 lt_prog_compiler_static_F77='-non_shared'
14686 ;;
14687
14688 solaris*)
14689 lt_prog_compiler_pic_F77='-KPIC'
14690 lt_prog_compiler_static_F77='-Bstatic'
14691 case $cc_basename in
14692 f77* | f90* | f95*)
14693 lt_prog_compiler_wl_F77='-Qoption ld ';;
14694 *)
14695 lt_prog_compiler_wl_F77='-Wl,';;
14696 esac
14697 ;;
14698
14699 sunos4*)
14700 lt_prog_compiler_wl_F77='-Qoption ld '
14701 lt_prog_compiler_pic_F77='-PIC'
14702 lt_prog_compiler_static_F77='-Bstatic'
14703 ;;
14704
14705 sysv4 | sysv4.2uw2* | sysv4.3*)
14706 lt_prog_compiler_wl_F77='-Wl,'
14707 lt_prog_compiler_pic_F77='-KPIC'
14708 lt_prog_compiler_static_F77='-Bstatic'
14709 ;;
14710
14711 sysv4*MP*)
14712 if test -d /usr/nec ;then
14713 lt_prog_compiler_pic_F77='-Kconform_pic'
14714 lt_prog_compiler_static_F77='-Bstatic'
14715 fi
14716 ;;
14717
14718 sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
14719 lt_prog_compiler_wl_F77='-Wl,'
14720 lt_prog_compiler_pic_F77='-KPIC'
14721 lt_prog_compiler_static_F77='-Bstatic'
14722 ;;
14723
14724 unicos*)
14725 lt_prog_compiler_wl_F77='-Wl,'
14726 lt_prog_compiler_can_build_shared_F77=no
14727 ;;
14728
14729 uts4*)
14730 lt_prog_compiler_pic_F77='-pic'
14731 lt_prog_compiler_static_F77='-Bstatic'
14732 ;;
14733
14734 *)
14735 lt_prog_compiler_can_build_shared_F77=no
14736 ;;
14737 esac
14738 fi
14739
14740 { echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5
14741 echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6; }
14742
14743 #
14744 # Check to make sure the PIC flag actually works.
14745 #
14746 if test -n "$lt_prog_compiler_pic_F77"; then
14747
14748 { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
14749 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6; }
14750 if test "${lt_prog_compiler_pic_works_F77+set}" = set; then
14751 echo $ECHO_N "(cached) $ECHO_C" >&6
14752 else
14753 lt_prog_compiler_pic_works_F77=no
14754 ac_outfile=conftest.$ac_objext
14755 printf "$lt_simple_compile_test_code" > conftest.$ac_ext
14756 lt_compiler_flag="$lt_prog_compiler_pic_F77"
14757 # Insert the option either (1) after the last *FLAGS variable, or
14758 # (2) before a word containing "conftest.", or (3) at the end.
14759 # Note that $ac_compile itself does not contain backslashes and begins
14760 # with a dollar sign (not a hyphen), so the echo should work correctly.
14761 # The option is referenced via a variable to avoid confusing sed.
14762 lt_compile=`echo "$ac_compile" | $SED \
14763 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
14764 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
14765 -e 's:$: $lt_compiler_flag:'`
14766 (eval echo "\"\$as_me:14767: $lt_compile\"" >&5)
14767 (eval "$lt_compile" 2>conftest.err)
14768 ac_status=$?
14769 cat conftest.err >&5
14770 echo "$as_me:14771: \$? = $ac_status" >&5
14771 if (exit $ac_status) && test -s "$ac_outfile"; then
14772 # The compiler can only warn and ignore the option if not recognized
14773 # So say no if there are warnings other than the usual output.
14774 $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
14775 $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
14776 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
14777 lt_prog_compiler_pic_works_F77=yes
14778 fi
14779 fi
14780 $rm conftest*
14781
14782 fi
14783 { echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5
14784 echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6; }
14785
14786 if test x"$lt_prog_compiler_pic_works_F77" = xyes; then
14787 case $lt_prog_compiler_pic_F77 in
14788 "" | " "*) ;;
14789 *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
14790 esac
14791 else
14792 lt_prog_compiler_pic_F77=
14793 lt_prog_compiler_can_build_shared_F77=no
14794 fi
14795
14796 fi
14797 case $host_os in
14798 # For platforms which do not support PIC, -DPIC is meaningless:
14799 *djgpp*)
14800 lt_prog_compiler_pic_F77=
14801 ;;
14802 *)
14803 lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
14804 ;;
14805 esac
14806
14807 #
14808 # Check to make sure the static flag actually works.
14809 #
14810 wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\"
14811 { echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
14812 echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
14813 if test "${lt_prog_compiler_static_works_F77+set}" = set; then
14814 echo $ECHO_N "(cached) $ECHO_C" >&6
14815 else
14816 lt_prog_compiler_static_works_F77=no
14817 save_LDFLAGS="$LDFLAGS"
14818 LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
14819 printf "$lt_simple_link_test_code" > conftest.$ac_ext
14820 if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
14821 # The linker can only warn and ignore the option if not recognized
14822 # So say no if there are warnings
14823 if test -s conftest.err; then
14824 # Append any errors to the config.log.
14825 cat conftest.err 1>&5
14826 $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
14827 $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
14828 if diff conftest.exp conftest.er2 >/dev/null; then
14829 lt_prog_compiler_static_works_F77=yes
14830 fi
14831 else
14832 lt_prog_compiler_static_works_F77=yes
14833 fi
14834 fi
14835 $rm conftest*
14836 LDFLAGS="$save_LDFLAGS"
14837
14838 fi
14839 { echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_F77" >&5
14840 echo "${ECHO_T}$lt_prog_compiler_static_works_F77" >&6; }
14841
14842 if test x"$lt_prog_compiler_static_works_F77" = xyes; then
14843 :
14844 else
14845 lt_prog_compiler_static_F77=
14846 fi
14847
14848
14849 { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
14850 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
14851 if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
14852 echo $ECHO_N "(cached) $ECHO_C" >&6
14853 else
14854 lt_cv_prog_compiler_c_o_F77=no
14855 $rm -r conftest 2>/dev/null
14856 mkdir conftest
14857 cd conftest
14858 mkdir out
14859 printf "$lt_simple_compile_test_code" > conftest.$ac_ext
14860
14861 lt_compiler_flag="-o out/conftest2.$ac_objext"
14862 # Insert the option either (1) after the last *FLAGS variable, or
14863 # (2) before a word containing "conftest.", or (3) at the end.
14864 # Note that $ac_compile itself does not contain backslashes and begins
14865 # with a dollar sign (not a hyphen), so the echo should work correctly.
14866 lt_compile=`echo "$ac_compile" | $SED \
14867 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
14868 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
14869 -e 's:$: $lt_compiler_flag:'`
14870 (eval echo "\"\$as_me:14871: $lt_compile\"" >&5)
14871 (eval "$lt_compile" 2>out/conftest.err)
14872 ac_status=$?
14873 cat out/conftest.err >&5
14874 echo "$as_me:14875: \$? = $ac_status" >&5
14875 if (exit $ac_status) && test -s out/conftest2.$ac_objext
14876 then
14877 # The compiler can only warn and ignore the option if not recognized
14878 # So say no if there are warnings
14879 $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
14880 $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
14881 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
14882 lt_cv_prog_compiler_c_o_F77=yes
14883 fi
14884 fi
14885 chmod u+w . 2>&5
14886 $rm conftest*
14887 # SGI C++ compiler will create directory out/ii_files/ for
14888 # template instantiation
14889 test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
14890 $rm out/* && rmdir out
14891 cd ..
14892 rmdir conftest
14893 $rm conftest*
14894
14895 fi
14896 { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5
14897 echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6; }
14898
14899
14900 hard_links="nottested"
14901 if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
14902 # do not overwrite the value of need_locks provided by the user
14903 { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
14904 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; }
14905 hard_links=yes
14906 $rm conftest*
14907 ln conftest.a conftest.b 2>/dev/null && hard_links=no
14908 touch conftest.a
14909 ln conftest.a conftest.b 2>&5 || hard_links=no
14910 ln conftest.a conftest.b 2>/dev/null && hard_links=no
14911 { echo "$as_me:$LINENO: result: $hard_links" >&5
14912 echo "${ECHO_T}$hard_links" >&6; }
14913 if test "$hard_links" = no; then
14914 { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
14915 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
14916 need_locks=warn
14917 fi
14918 else
14919 need_locks=no
14920 fi
14921
14922 { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
14923 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
14924
14925 runpath_var=
14926 allow_undefined_flag_F77=
14927 enable_shared_with_static_runtimes_F77=no
14928 archive_cmds_F77=
14929 archive_expsym_cmds_F77=
14930 old_archive_From_new_cmds_F77=
14931 old_archive_from_expsyms_cmds_F77=
14932 export_dynamic_flag_spec_F77=
14933 whole_archive_flag_spec_F77=
14934 thread_safe_flag_spec_F77=
14935 hardcode_libdir_flag_spec_F77=
14936 hardcode_libdir_flag_spec_ld_F77=
14937 hardcode_libdir_separator_F77=
14938 hardcode_direct_F77=no
14939 hardcode_minus_L_F77=no
14940 hardcode_shlibpath_var_F77=unsupported
14941 link_all_deplibs_F77=unknown
14942 hardcode_automatic_F77=no
14943 module_cmds_F77=
14944 module_expsym_cmds_F77=
14945 always_export_symbols_F77=no
14946 export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
14947 # include_expsyms should be a list of space-separated symbols to be *always*
14948 # included in the symbol list
14949 include_expsyms_F77=
14950 # exclude_expsyms can be an extended regexp of symbols to exclude
14951 # it will be wrapped by ` (' and `)$', so one must not match beginning or
14952 # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
14953 # as well as any symbol that contains `d'.
14954 exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_"
14955 # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
14956 # platforms (ab)use it in PIC code, but their linkers get confused if
14957 # the symbol is explicitly referenced. Since portable code cannot
14958 # rely on this symbol name, it's probably fine to never include it in
14959 # preloaded symbol tables.
14960 extract_expsyms_cmds=
14961 # Just being paranoid about ensuring that cc_basename is set.
14962 for cc_temp in $compiler""; do
14963 case $cc_temp in
14964 compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
14965 distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
14966 \-*) ;;
14967 *) break;;
14968 esac
14969 done
14970 cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
14971
14972 case $host_os in
14973 cygwin* | mingw* | pw32*)
14974 # FIXME: the MSVC++ port hasn't been tested in a loooong time
14975 # When not using gcc, we currently assume that we are using
14976 # Microsoft Visual C++.
14977 if test "$GCC" != yes; then
14978 with_gnu_ld=no
14979 fi
14980 ;;
14981 interix*)
14982 # we just hope/assume this is gcc and not c89 (= MSVC++)
14983 with_gnu_ld=yes
14984 ;;
14985 openbsd*)
14986 with_gnu_ld=no
14987 ;;
14988 esac
14989
14990 ld_shlibs_F77=yes
14991 if test "$with_gnu_ld" = yes; then
14992 # If archive_cmds runs LD, not CC, wlarc should be empty
14993 wlarc='${wl}'
14994
14995 # Set some defaults for GNU ld with shared library support. These
14996 # are reset later if shared libraries are not supported. Putting them
14997 # here allows them to be overridden if necessary.
14998 runpath_var=LD_RUN_PATH
14999 hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir'
15000 export_dynamic_flag_spec_F77='${wl}--export-dynamic'
15001 # ancient GNU ld didn't support --whole-archive et. al.
15002 if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
15003 whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
15004 else
15005 whole_archive_flag_spec_F77=
15006 fi
15007 supports_anon_versioning=no
15008 case `$LD -v 2>/dev/null` in
15009 *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
15010 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
15011 *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
15012 *\ 2.11.*) ;; # other 2.11 versions
15013 *) supports_anon_versioning=yes ;;
15014 esac
15015
15016 # See if GNU ld supports shared libraries.
15017 case $host_os in
15018 aix3* | aix4* | aix5*)
15019 # On AIX/PPC, the GNU linker is very broken
15020 if test "$host_cpu" != ia64; then
15021 ld_shlibs_F77=no
15022 cat <<EOF 1>&2
15023
15024 *** Warning: the GNU linker, at least up to release 2.9.1, is reported
15025 *** to be unable to reliably create shared libraries on AIX.
15026 *** Therefore, libtool is disabling shared libraries support. If you
15027 *** really care for shared libraries, you may want to modify your PATH
15028 *** so that a non-GNU linker is found, and then restart.
15029
15030 EOF
15031 fi
15032 ;;
15033
15034 amigaos*)
15035 archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
15036 hardcode_libdir_flag_spec_F77='-L$libdir'
15037 hardcode_minus_L_F77=yes
15038
15039 # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
15040 # that the semantics of dynamic libraries on AmigaOS, at least up
15041 # to version 4, is to share data among multiple programs linked
15042 # with the same dynamic library. Since this doesn't match the
15043 # behavior of shared libraries on other platforms, we can't use
15044 # them.
15045 ld_shlibs_F77=no
15046 ;;
15047
15048 beos*)
15049 if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
15050 allow_undefined_flag_F77=unsupported
15051 # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
15052 # support --undefined. This deserves some investigation. FIXME
15053 archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
15054 else
15055 ld_shlibs_F77=no
15056 fi
15057 ;;
15058
15059 cygwin* | mingw* | pw32*)
15060 # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
15061 # as there is no search path for DLLs.
15062 hardcode_libdir_flag_spec_F77='-L$libdir'
15063 allow_undefined_flag_F77=unsupported
15064 always_export_symbols_F77=no
15065 enable_shared_with_static_runtimes_F77=yes
15066 export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
15067
15068 if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
15069 archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
15070 # If the export-symbols file already is a .def file (1st line
15071 # is EXPORTS), use it as is; otherwise, prepend...
15072 archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
15073 cp $export_symbols $output_objdir/$soname.def;
15074 else
15075 echo EXPORTS > $output_objdir/$soname.def;
15076 cat $export_symbols >> $output_objdir/$soname.def;
15077 fi~
15078 $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
15079 else
15080 ld_shlibs_F77=no
15081 fi
15082 ;;
15083
15084 interix3*)
15085 hardcode_direct_F77=no
15086 hardcode_shlibpath_var_F77=no
15087 hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
15088 export_dynamic_flag_spec_F77='${wl}-E'
15089 # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
15090 # Instead, shared libraries are loaded at an image base (0x10000000 by
15091 # default) and relocated if they conflict, which is a slow very memory
15092 # consuming and fragmenting process. To avoid this, we pick a random,
15093 # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
15094 # time. Moving up from 0x10000000 also allows more sbrk(2) space.
15095 archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
15096 archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
15097 ;;
15098
15099 linux* | k*bsd*-gnu)
15100 if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
15101 tmp_addflag=
15102 case $cc_basename,$host_cpu in
15103 pgcc*) # Portland Group C compiler
15104 whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
15105 tmp_addflag=' $pic_flag'
15106 ;;
15107 pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
15108 whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
15109 tmp_addflag=' $pic_flag -Mnomain' ;;
15110 ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
15111 tmp_addflag=' -i_dynamic' ;;
15112 efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
15113 tmp_addflag=' -i_dynamic -nofor_main' ;;
15114 ifc* | ifort*) # Intel Fortran compiler
15115 tmp_addflag=' -nofor_main' ;;
15116 esac
15117 archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
15118
15119 if test $supports_anon_versioning = yes; then
15120 archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~
15121 cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
15122 $echo "local: *; };" >> $output_objdir/$libname.ver~
15123 $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
15124 fi
15125 link_all_deplibs_F77=no
15126 else
15127 ld_shlibs_F77=no
15128 fi
15129 ;;
15130
15131 netbsd* | netbsdelf*-gnu)
15132 if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
15133 archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
15134 wlarc=
15135 else
15136 archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
15137 archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
15138 fi
15139 ;;
15140
15141 solaris*)
15142 if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
15143 ld_shlibs_F77=no
15144 cat <<EOF 1>&2
15145
15146 *** Warning: The releases 2.8.* of the GNU linker cannot reliably
15147 *** create shared libraries on Solaris systems. Therefore, libtool
15148 *** is disabling shared libraries support. We urge you to upgrade GNU
15149 *** binutils to release 2.9.1 or newer. Another option is to modify
15150 *** your PATH or compiler configuration so that the native linker is
15151 *** used, and then restart.
15152
15153 EOF
15154 elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
15155 archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
15156 archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
15157 else
15158 ld_shlibs_F77=no
15159 fi
15160 ;;
15161
15162 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
15163 case `$LD -v 2>&1` in
15164 *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
15165 ld_shlibs_F77=no
15166 cat <<_LT_EOF 1>&2
15167
15168 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
15169 *** reliably create shared libraries on SCO systems. Therefore, libtool
15170 *** is disabling shared libraries support. We urge you to upgrade GNU
15171 *** binutils to release 2.16.91.0.3 or newer. Another option is to modify
15172 *** your PATH or compiler configuration so that the native linker is
15173 *** used, and then restart.
15174
15175 _LT_EOF
15176 ;;
15177 *)
15178 if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
15179 hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
15180 archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
15181 archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
15182 else
15183 ld_shlibs_F77=no
15184 fi
15185 ;;
15186 esac
15187 ;;
15188
15189 sunos4*)
15190 archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
15191 wlarc=
15192 hardcode_direct_F77=yes
15193 hardcode_shlibpath_var_F77=no
15194 ;;
15195
15196 *)
15197 if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
15198 archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
15199 archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
15200 else
15201 ld_shlibs_F77=no
15202 fi
15203 ;;
15204 esac
15205
15206 if test "$ld_shlibs_F77" = no; then
15207 runpath_var=
15208 hardcode_libdir_flag_spec_F77=
15209 export_dynamic_flag_spec_F77=
15210 whole_archive_flag_spec_F77=
15211 fi
15212 else
15213 # PORTME fill in a description of your system's linker (not GNU ld)
15214 case $host_os in
15215 aix3*)
15216 allow_undefined_flag_F77=unsupported
15217 always_export_symbols_F77=yes
15218 archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
15219 # Note: this linker hardcodes the directories in LIBPATH if there
15220 # are no directories specified by -L.
15221 hardcode_minus_L_F77=yes
15222 if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
15223 # Neither direct hardcoding nor static linking is supported with a
15224 # broken collect2.
15225 hardcode_direct_F77=unsupported
15226 fi
15227 ;;
15228
15229 aix4* | aix5*)
15230 if test "$host_cpu" = ia64; then
15231 # On IA64, the linker does run time linking by default, so we don't
15232 # have to do anything special.
15233 aix_use_runtimelinking=no
15234 exp_sym_flag='-Bexport'
15235 no_entry_flag=""
15236 else
15237 # If we're using GNU nm, then we don't want the "-C" option.
15238 # -C means demangle to AIX nm, but means don't demangle with GNU nm
15239 if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
15240 export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
15241 else
15242 export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
15243 fi
15244 aix_use_runtimelinking=no
15245
15246 # Test if we are trying to use run time linking or normal
15247 # AIX style linking. If -brtl is somewhere in LDFLAGS, we
15248 # need to do runtime linking.
15249 case $host_os in aix4.[23]|aix4.[23].*|aix5*)
15250 for ld_flag in $LDFLAGS; do
15251 if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
15252 aix_use_runtimelinking=yes
15253 break
15254 fi
15255 done
15256 ;;
15257 esac
15258
15259 exp_sym_flag='-bexport'
15260 no_entry_flag='-bnoentry'
15261 fi
15262
15263 # When large executables or shared objects are built, AIX ld can
15264 # have problems creating the table of contents. If linking a library
15265 # or program results in "error TOC overflow" add -mminimal-toc to
15266 # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
15267 # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
15268
15269 archive_cmds_F77=''
15270 hardcode_direct_F77=yes
15271 hardcode_libdir_separator_F77=':'
15272 link_all_deplibs_F77=yes
15273
15274 if test "$GCC" = yes; then
15275 case $host_os in aix4.[012]|aix4.[012].*)
15276 # We only want to do this on AIX 4.2 and lower, the check
15277 # below for broken collect2 doesn't work under 4.3+
15278 collect2name=`${CC} -print-prog-name=collect2`
15279 if test -f "$collect2name" && \
15280 strings "$collect2name" | grep resolve_lib_name >/dev/null
15281 then
15282 # We have reworked collect2
15283 hardcode_direct_F77=yes
15284 else
15285 # We have old collect2
15286 hardcode_direct_F77=unsupported
15287 # It fails to find uninstalled libraries when the uninstalled
15288 # path is not listed in the libpath. Setting hardcode_minus_L
15289 # to unsupported forces relinking
15290 hardcode_minus_L_F77=yes
15291 hardcode_libdir_flag_spec_F77='-L$libdir'
15292 hardcode_libdir_separator_F77=
15293 fi
15294 ;;
15295 esac
15296 shared_flag='-shared'
15297 if test "$aix_use_runtimelinking" = yes; then
15298 shared_flag="$shared_flag "'${wl}-G'
15299 fi
15300 else
15301 # not using gcc
15302 if test "$host_cpu" = ia64; then
15303 # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
15304 # chokes on -Wl,-G. The following line is correct:
15305 shared_flag='-G'
15306 else
15307 if test "$aix_use_runtimelinking" = yes; then
15308 shared_flag='${wl}-G'
15309 else
15310 shared_flag='${wl}-bM:SRE'
15311 fi
15312 fi
15313 fi
15314
15315 # It seems that -bexpall does not export symbols beginning with
15316 # underscore (_), so it is better to generate a list of symbols to export.
15317 always_export_symbols_F77=yes
15318 if test "$aix_use_runtimelinking" = yes; then
15319 # Warning - without using the other runtime loading flags (-brtl),
15320 # -berok will link without error, but may produce a broken library.
15321 allow_undefined_flag_F77='-berok'
15322 # Determine the default libpath from the value encoded in an empty executable.
15323 cat >conftest.$ac_ext <<_ACEOF
15324 program main
15325
15326 end
15327 _ACEOF
15328 rm -f conftest.$ac_objext conftest$ac_exeext
15329 if { (ac_try="$ac_link"
15330 case "(($ac_try" in
15331 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
15332 *) ac_try_echo=$ac_try;;
15333 esac
15334 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
15335 (eval "$ac_link") 2>conftest.er1
15336 ac_status=$?
15337 grep -v '^ *+' conftest.er1 >conftest.err
15338 rm -f conftest.er1
15339 cat conftest.err >&5
15340 echo "$as_me:$LINENO: \$? = $ac_status" >&5
15341 (exit $ac_status); } && {
15342 test -z "$ac_f77_werror_flag" ||
15343 test ! -s conftest.err
15344 } && test -s conftest$ac_exeext &&
15345 $as_test_x conftest$ac_exeext; then
15346
15347 aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
15348 }'`
15349 # Check for a 64-bit object if we didn't find anything.
15350 if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
15351 }'`; fi
15352 else
15353 echo "$as_me: failed program was:" >&5
15354 sed 's/^/| /' conftest.$ac_ext >&5
15355
15356
15357 fi
15358
15359 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
15360 conftest$ac_exeext conftest.$ac_ext
15361 if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
15362
15363 hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
15364 archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
15365 else
15366 if test "$host_cpu" = ia64; then
15367 hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
15368 allow_undefined_flag_F77="-z nodefs"
15369 archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
15370 else
15371 # Determine the default libpath from the value encoded in an empty executable.
15372 cat >conftest.$ac_ext <<_ACEOF
15373 program main
15374
15375 end
15376 _ACEOF
15377 rm -f conftest.$ac_objext conftest$ac_exeext
15378 if { (ac_try="$ac_link"
15379 case "(($ac_try" in
15380 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
15381 *) ac_try_echo=$ac_try;;
15382 esac
15383 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
15384 (eval "$ac_link") 2>conftest.er1
15385 ac_status=$?
15386 grep -v '^ *+' conftest.er1 >conftest.err
15387 rm -f conftest.er1
15388 cat conftest.err >&5
15389 echo "$as_me:$LINENO: \$? = $ac_status" >&5
15390 (exit $ac_status); } && {
15391 test -z "$ac_f77_werror_flag" ||
15392 test ! -s conftest.err
15393 } && test -s conftest$ac_exeext &&
15394 $as_test_x conftest$ac_exeext; then
15395
15396 aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
15397 }'`
15398 # Check for a 64-bit object if we didn't find anything.
15399 if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
15400 }'`; fi
15401 else
15402 echo "$as_me: failed program was:" >&5
15403 sed 's/^/| /' conftest.$ac_ext >&5
15404
15405
15406 fi
15407
15408 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
15409 conftest$ac_exeext conftest.$ac_ext
15410 if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
15411
15412 hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
15413 # Warning - without using the other run time loading flags,
15414 # -berok will link without error, but may produce a broken library.
15415 no_undefined_flag_F77=' ${wl}-bernotok'
15416 allow_undefined_flag_F77=' ${wl}-berok'
15417 # Exported symbols can be pulled into shared objects from archives
15418 whole_archive_flag_spec_F77='$convenience'
15419 archive_cmds_need_lc_F77=yes
15420 # This is similar to how AIX traditionally builds its shared libraries.
15421 archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
15422 fi
15423 fi
15424 ;;
15425
15426 amigaos*)
15427 archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
15428 hardcode_libdir_flag_spec_F77='-L$libdir'
15429 hardcode_minus_L_F77=yes
15430 # see comment about different semantics on the GNU ld section
15431 ld_shlibs_F77=no
15432 ;;
15433
15434 bsdi[45]*)
15435 export_dynamic_flag_spec_F77=-rdynamic
15436 ;;
15437
15438 cygwin* | mingw* | pw32*)
15439 # When not using gcc, we currently assume that we are using
15440 # Microsoft Visual C++.
15441 # hardcode_libdir_flag_spec is actually meaningless, as there is
15442 # no search path for DLLs.
15443 hardcode_libdir_flag_spec_F77=' '
15444 allow_undefined_flag_F77=unsupported
15445 # Tell ltmain to make .lib files, not .a files.
15446 libext=lib
15447 # Tell ltmain to make .dll files, not .so files.
15448 shrext_cmds=".dll"
15449 # FIXME: Setting linknames here is a bad hack.
15450 archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
15451 # The linker will automatically build a .lib file if we build a DLL.
15452 old_archive_From_new_cmds_F77='true'
15453 # FIXME: Should let the user specify the lib program.
15454 old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs'
15455 fix_srcfile_path_F77='`cygpath -w "$srcfile"`'
15456 enable_shared_with_static_runtimes_F77=yes
15457 ;;
15458
15459 darwin* | rhapsody*)
15460 case $host_os in
15461 rhapsody* | darwin1.[012])
15462 allow_undefined_flag_F77='${wl}-undefined ${wl}suppress'
15463 ;;
15464 *) # Darwin 1.3 on
15465 if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
15466 allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
15467 else
15468 case ${MACOSX_DEPLOYMENT_TARGET} in
15469 10.[012])
15470 allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
15471 ;;
15472 10.*)
15473 allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup'
15474 ;;
15475 esac
15476 fi
15477 ;;
15478 esac
15479 archive_cmds_need_lc_F77=no
15480 hardcode_direct_F77=no
15481 hardcode_automatic_F77=yes
15482 hardcode_shlibpath_var_F77=unsupported
15483 whole_archive_flag_spec_F77=''
15484 link_all_deplibs_F77=yes
15485 if test "$GCC" = yes ; then
15486 output_verbose_link_cmd='echo'
15487 archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
15488 module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
15489 # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
15490 archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
15491 module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
15492 else
15493 case $cc_basename in
15494 xlc*)
15495 output_verbose_link_cmd='echo'
15496 archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
15497 module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
15498 # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
15499 archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
15500 module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
15501 ;;
15502 *)
15503 ld_shlibs_F77=no
15504 ;;
15505 esac
15506 fi
15507 ;;
15508
15509 dgux*)
15510 archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
15511 hardcode_libdir_flag_spec_F77='-L$libdir'
15512 hardcode_shlibpath_var_F77=no
15513 ;;
15514
15515 freebsd1*)
15516 ld_shlibs_F77=no
15517 ;;
15518
15519 # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
15520 # support. Future versions do this automatically, but an explicit c++rt0.o
15521 # does not break anything, and helps significantly (at the cost of a little
15522 # extra space).
15523 freebsd2.2*)
15524 archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
15525 hardcode_libdir_flag_spec_F77='-R$libdir'
15526 hardcode_direct_F77=yes
15527 hardcode_shlibpath_var_F77=no
15528 ;;
15529
15530 # Unfortunately, older versions of FreeBSD 2 do not have this feature.
15531 freebsd2*)
15532 archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
15533 hardcode_direct_F77=yes
15534 hardcode_minus_L_F77=yes
15535 hardcode_shlibpath_var_F77=no
15536 ;;
15537
15538 # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
15539 freebsd* | dragonfly*)
15540 archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
15541 hardcode_libdir_flag_spec_F77='-R$libdir'
15542 hardcode_direct_F77=yes
15543 hardcode_shlibpath_var_F77=no
15544 ;;
15545
15546 hpux9*)
15547 if test "$GCC" = yes; then
15548 archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
15549 else
15550 archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
15551 fi
15552 hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
15553 hardcode_libdir_separator_F77=:
15554 hardcode_direct_F77=yes
15555
15556 # hardcode_minus_L: Not really in the search PATH,
15557 # but as the default location of the library.
15558 hardcode_minus_L_F77=yes
15559 export_dynamic_flag_spec_F77='${wl}-E'
15560 ;;
15561
15562 hpux10*)
15563 if test "$GCC" = yes -a "$with_gnu_ld" = no; then
15564 archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
15565 else
15566 archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
15567 fi
15568 if test "$with_gnu_ld" = no; then
15569 hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
15570 hardcode_libdir_separator_F77=:
15571
15572 hardcode_direct_F77=yes
15573 export_dynamic_flag_spec_F77='${wl}-E'
15574
15575 # hardcode_minus_L: Not really in the search PATH,
15576 # but as the default location of the library.
15577 hardcode_minus_L_F77=yes
15578 fi
15579 ;;
15580
15581 hpux11*)
15582 if test "$GCC" = yes -a "$with_gnu_ld" = no; then
15583 case $host_cpu in
15584 hppa*64*)
15585 archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
15586 ;;
15587 ia64*)
15588 archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
15589 ;;
15590 *)
15591 archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
15592 ;;
15593 esac
15594 else
15595 case $host_cpu in
15596 hppa*64*)
15597 archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
15598 ;;
15599 ia64*)
15600 archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
15601 ;;
15602 *)
15603 archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
15604 ;;
15605 esac
15606 fi
15607 if test "$with_gnu_ld" = no; then
15608 hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
15609 hardcode_libdir_separator_F77=:
15610
15611 case $host_cpu in
15612 hppa*64*|ia64*)
15613 hardcode_libdir_flag_spec_ld_F77='+b $libdir'
15614 hardcode_direct_F77=no
15615 hardcode_shlibpath_var_F77=no
15616 ;;
15617 *)
15618 hardcode_direct_F77=yes
15619 export_dynamic_flag_spec_F77='${wl}-E'
15620
15621 # hardcode_minus_L: Not really in the search PATH,
15622 # but as the default location of the library.
15623 hardcode_minus_L_F77=yes
15624 ;;
15625 esac
15626 fi
15627 ;;
15628
15629 irix5* | irix6* | nonstopux*)
15630 if test "$GCC" = yes; then
15631 archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
15632 else
15633 archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
15634 hardcode_libdir_flag_spec_ld_F77='-rpath $libdir'
15635 fi
15636 hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
15637 hardcode_libdir_separator_F77=:
15638 link_all_deplibs_F77=yes
15639 ;;
15640
15641 netbsd* | netbsdelf*-gnu)
15642 if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
15643 archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
15644 else
15645 archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
15646 fi
15647 hardcode_libdir_flag_spec_F77='-R$libdir'
15648 hardcode_direct_F77=yes
15649 hardcode_shlibpath_var_F77=no
15650 ;;
15651
15652 newsos6)
15653 archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
15654 hardcode_direct_F77=yes
15655 hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
15656 hardcode_libdir_separator_F77=:
15657 hardcode_shlibpath_var_F77=no
15658 ;;
15659
15660 openbsd*)
15661 hardcode_direct_F77=yes
15662 hardcode_shlibpath_var_F77=no
15663 if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
15664 archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
15665 archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
15666 hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
15667 export_dynamic_flag_spec_F77='${wl}-E'
15668 else
15669 case $host_os in
15670 openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
15671 archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
15672 hardcode_libdir_flag_spec_F77='-R$libdir'
15673 ;;
15674 *)
15675 archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
15676 hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
15677 ;;
15678 esac
15679 fi
15680 ;;
15681
15682 os2*)
15683 hardcode_libdir_flag_spec_F77='-L$libdir'
15684 hardcode_minus_L_F77=yes
15685 allow_undefined_flag_F77=unsupported
15686 archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
15687 old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
15688 ;;
15689
15690 osf3*)
15691 if test "$GCC" = yes; then
15692 allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
15693 archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
15694 else
15695 allow_undefined_flag_F77=' -expect_unresolved \*'
15696 archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
15697 fi
15698 hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
15699 hardcode_libdir_separator_F77=:
15700 ;;
15701
15702 osf4* | osf5*) # as osf3* with the addition of -msym flag
15703 if test "$GCC" = yes; then
15704 allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
15705 archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
15706 hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
15707 else
15708 allow_undefined_flag_F77=' -expect_unresolved \*'
15709 archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
15710 archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
15711 $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
15712
15713 # Both c and cxx compiler support -rpath directly
15714 hardcode_libdir_flag_spec_F77='-rpath $libdir'
15715 fi
15716 hardcode_libdir_separator_F77=:
15717 ;;
15718
15719 solaris*)
15720 no_undefined_flag_F77=' -z text'
15721 if test "$GCC" = yes; then
15722 wlarc='${wl}'
15723 archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
15724 archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
15725 $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
15726 else
15727 wlarc=''
15728 archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
15729 archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
15730 $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
15731 fi
15732 hardcode_libdir_flag_spec_F77='-R$libdir'
15733 hardcode_shlibpath_var_F77=no
15734 case $host_os in
15735 solaris2.[0-5] | solaris2.[0-5].*) ;;
15736 *)
15737 # The compiler driver will combine linker options so we
15738 # cannot just pass the convience library names through
15739 # without $wl, iff we do not link with $LD.
15740 # Luckily, gcc supports the same syntax we need for Sun Studio.
15741 # Supported since Solaris 2.6 (maybe 2.5.1?)
15742 case $wlarc in
15743 '')
15744 whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;;
15745 *)
15746 whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
15747 esac ;;
15748 esac
15749 link_all_deplibs_F77=yes
15750 ;;
15751
15752 sunos4*)
15753 if test "x$host_vendor" = xsequent; then
15754 # Use $CC to link under sequent, because it throws in some extra .o
15755 # files that make .init and .fini sections work.
15756 archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
15757 else
15758 archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
15759 fi
15760 hardcode_libdir_flag_spec_F77='-L$libdir'
15761 hardcode_direct_F77=yes
15762 hardcode_minus_L_F77=yes
15763 hardcode_shlibpath_var_F77=no
15764 ;;
15765
15766 sysv4)
15767 case $host_vendor in
15768 sni)
15769 archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
15770 hardcode_direct_F77=yes # is this really true???
15771 ;;
15772 siemens)
15773 ## LD is ld it makes a PLAMLIB
15774 ## CC just makes a GrossModule.
15775 archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
15776 reload_cmds_F77='$CC -r -o $output$reload_objs'
15777 hardcode_direct_F77=no
15778 ;;
15779 motorola)
15780 archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
15781 hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
15782 ;;
15783 esac
15784 runpath_var='LD_RUN_PATH'
15785 hardcode_shlibpath_var_F77=no
15786 ;;
15787
15788 sysv4.3*)
15789 archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
15790 hardcode_shlibpath_var_F77=no
15791 export_dynamic_flag_spec_F77='-Bexport'
15792 ;;
15793
15794 sysv4*MP*)
15795 if test -d /usr/nec; then
15796 archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
15797 hardcode_shlibpath_var_F77=no
15798 runpath_var=LD_RUN_PATH
15799 hardcode_runpath_var=yes
15800 ld_shlibs_F77=yes
15801 fi
15802 ;;
15803
15804 sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
15805 no_undefined_flag_F77='${wl}-z,text'
15806 archive_cmds_need_lc_F77=no
15807 hardcode_shlibpath_var_F77=no
15808 runpath_var='LD_RUN_PATH'
15809
15810 if test "$GCC" = yes; then
15811 archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
15812 archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
15813 else
15814 archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
15815 archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
15816 fi
15817 ;;
15818
15819 sysv5* | sco3.2v5* | sco5v6*)
15820 # Note: We can NOT use -z defs as we might desire, because we do not
15821 # link with -lc, and that would cause any symbols used from libc to
15822 # always be unresolved, which means just about no library would
15823 # ever link correctly. If we're not using GNU ld we use -z text
15824 # though, which does catch some bad symbols but isn't as heavy-handed
15825 # as -z defs.
15826 no_undefined_flag_F77='${wl}-z,text'
15827 allow_undefined_flag_F77='${wl}-z,nodefs'
15828 archive_cmds_need_lc_F77=no
15829 hardcode_shlibpath_var_F77=no
15830 hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
15831 hardcode_libdir_separator_F77=':'
15832 link_all_deplibs_F77=yes
15833 export_dynamic_flag_spec_F77='${wl}-Bexport'
15834 runpath_var='LD_RUN_PATH'
15835
15836 if test "$GCC" = yes; then
15837 archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
15838 archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
15839 else
15840 archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
15841 archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
15842 fi
15843 ;;
15844
15845 uts4*)
15846 archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
15847 hardcode_libdir_flag_spec_F77='-L$libdir'
15848 hardcode_shlibpath_var_F77=no
15849 ;;
15850
15851 *)
15852 ld_shlibs_F77=no
15853 ;;
15854 esac
15855 fi
15856
15857 { echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5
15858 echo "${ECHO_T}$ld_shlibs_F77" >&6; }
15859 test "$ld_shlibs_F77" = no && can_build_shared=no
15860
15861 #
15862 # Do we need to explicitly link libc?
15863 #
15864 case "x$archive_cmds_need_lc_F77" in
15865 x|xyes)
15866 # Assume -lc should be added
15867 archive_cmds_need_lc_F77=yes
15868
15869 if test "$enable_shared" = yes && test "$GCC" = yes; then
15870 case $archive_cmds_F77 in
15871 *'~'*)
15872 # FIXME: we may have to deal with multi-command sequences.
15873 ;;
15874 '$CC '*)
15875 # Test whether the compiler implicitly links with -lc since on some
15876 # systems, -lgcc has to come before -lc. If gcc already passes -lc
15877 # to ld, don't add -lc before -lgcc.
15878 { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
15879 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
15880 $rm conftest*
15881 printf "$lt_simple_compile_test_code" > conftest.$ac_ext
15882
15883 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
15884 (eval $ac_compile) 2>&5
15885 ac_status=$?
15886 echo "$as_me:$LINENO: \$? = $ac_status" >&5
15887 (exit $ac_status); } 2>conftest.err; then
15888 soname=conftest
15889 lib=conftest
15890 libobjs=conftest.$ac_objext
15891 deplibs=
15892 wl=$lt_prog_compiler_wl_F77
15893 pic_flag=$lt_prog_compiler_pic_F77
15894 compiler_flags=-v
15895 linker_flags=-v
15896 verstring=
15897 output_objdir=.
15898 libname=conftest
15899 lt_save_allow_undefined_flag=$allow_undefined_flag_F77
15900 allow_undefined_flag_F77=
15901 if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
15902 (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
15903 ac_status=$?
15904 echo "$as_me:$LINENO: \$? = $ac_status" >&5
15905 (exit $ac_status); }
15906 then
15907 archive_cmds_need_lc_F77=no
15908 else
15909 archive_cmds_need_lc_F77=yes
15910 fi
15911 allow_undefined_flag_F77=$lt_save_allow_undefined_flag
15912 else
15913 cat conftest.err 1>&5
15914 fi
15915 $rm conftest*
15916 { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5
15917 echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6; }
15918 ;;
15919 esac
15920 fi
15921 ;;
15922 esac
15923
15924 { echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
15925 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
15926 library_names_spec=
15927 libname_spec='lib$name'
15928 soname_spec=
15929 shrext_cmds=".so"
15930 postinstall_cmds=
15931 postuninstall_cmds=
15932 finish_cmds=
15933 finish_eval=
15934 shlibpath_var=
15935 shlibpath_overrides_runpath=unknown
15936 version_type=none
15937 dynamic_linker="$host_os ld.so"
15938 sys_lib_dlsearch_path_spec="/lib /usr/lib"
15939 if test "$GCC" = yes; then
15940 sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
15941 if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
15942 # if the path contains ";" then we assume it to be the separator
15943 # otherwise default to the standard path separator (i.e. ":") - it is
15944 # assumed that no part of a normal pathname contains ";" but that should
15945 # okay in the real world where ";" in dirpaths is itself problematic.
15946 sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
15947 else
15948 sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
15949 fi
15950 else
15951 sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
15952 fi
15953 need_lib_prefix=unknown
15954 hardcode_into_libs=no
15955
15956 # when you set need_version to no, make sure it does not cause -set_version
15957 # flags to be left without arguments
15958 need_version=unknown
15959
15960 case $host_os in
15961 aix3*)
15962 version_type=linux
15963 library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
15964 shlibpath_var=LIBPATH
15965
15966 # AIX 3 has no versioning support, so we append a major version to the name.
15967 soname_spec='${libname}${release}${shared_ext}$major'
15968 ;;
15969
15970 aix4* | aix5*)
15971 version_type=linux
15972 need_lib_prefix=no
15973 need_version=no
15974 hardcode_into_libs=yes
15975 if test "$host_cpu" = ia64; then
15976 # AIX 5 supports IA64
15977 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
15978 shlibpath_var=LD_LIBRARY_PATH
15979 else
15980 # With GCC up to 2.95.x, collect2 would create an import file
15981 # for dependence libraries. The import file would start with
15982 # the line `#! .'. This would cause the generated library to
15983 # depend on `.', always an invalid library. This was fixed in
15984 # development snapshots of GCC prior to 3.0.
15985 case $host_os in
15986 aix4 | aix4.[01] | aix4.[01].*)
15987 if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
15988 echo ' yes '
15989 echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
15990 :
15991 else
15992 can_build_shared=no
15993 fi
15994 ;;
15995 esac
15996 # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
15997 # soname into executable. Probably we can add versioning support to
15998 # collect2, so additional links can be useful in future.
15999 if test "$aix_use_runtimelinking" = yes; then
16000 # If using run time linking (on AIX 4.2 or later) use lib<name>.so
16001 # instead of lib<name>.a to let people know that these are not
16002 # typical AIX shared libraries.
16003 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
16004 else
16005 # We preserve .a as extension for shared libraries through AIX4.2
16006 # and later when we are not doing run time linking.
16007 library_names_spec='${libname}${release}.a $libname.a'
16008 soname_spec='${libname}${release}${shared_ext}$major'
16009 fi
16010 shlibpath_var=LIBPATH
16011 fi
16012 ;;
16013
16014 amigaos*)
16015 library_names_spec='$libname.ixlibrary $libname.a'
16016 # Create ${libname}_ixlibrary.a entries in /sys/libs.
16017 finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
16018 ;;
16019
16020 beos*)
16021 library_names_spec='${libname}${shared_ext}'
16022 dynamic_linker="$host_os ld.so"
16023 shlibpath_var=LIBRARY_PATH
16024 ;;
16025
16026 bsdi[45]*)
16027 version_type=linux
16028 need_version=no
16029 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
16030 soname_spec='${libname}${release}${shared_ext}$major'
16031 finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
16032 shlibpath_var=LD_LIBRARY_PATH
16033 sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
16034 sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
16035 # the default ld.so.conf also contains /usr/contrib/lib and
16036 # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
16037 # libtool to hard-code these into programs
16038 ;;
16039
16040 cygwin* | mingw* | pw32*)
16041 version_type=windows
16042 shrext_cmds=".dll"
16043 need_version=no
16044 need_lib_prefix=no
16045
16046 case $GCC,$host_os in
16047 yes,cygwin* | yes,mingw* | yes,pw32*)
16048 library_names_spec='$libname.dll.a'
16049 # DLL is installed to $(libdir)/../bin by postinstall_cmds
16050 postinstall_cmds='base_file=`basename \${file}`~
16051 dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
16052 dldir=$destdir/`dirname \$dlpath`~
16053 test -d \$dldir || mkdir -p \$dldir~
16054 $install_prog $dir/$dlname \$dldir/$dlname~
16055 chmod a+x \$dldir/$dlname'
16056 postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
16057 dlpath=$dir/\$dldll~
16058 $rm \$dlpath'
16059 shlibpath_overrides_runpath=yes
16060
16061 case $host_os in
16062 cygwin*)
16063 # Cygwin DLLs use 'cyg' prefix rather than 'lib'
16064 soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
16065 sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
16066 ;;
16067 mingw*)
16068 # MinGW DLLs use traditional 'lib' prefix
16069 soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
16070 sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
16071 if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
16072 # It is most probably a Windows format PATH printed by
16073 # mingw gcc, but we are running on Cygwin. Gcc prints its search
16074 # path with ; separators, and with drive letters. We can handle the
16075 # drive letters (cygwin fileutils understands them), so leave them,
16076 # especially as we might pass files found there to a mingw objdump,
16077 # which wouldn't understand a cygwinified path. Ahh.
16078 sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
16079 else
16080 sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
16081 fi
16082 ;;
16083 pw32*)
16084 # pw32 DLLs use 'pw' prefix rather than 'lib'
16085 library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
16086 ;;
16087 esac
16088 ;;
16089
16090 *)
16091 library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
16092 ;;
16093 esac
16094 dynamic_linker='Win32 ld.exe'
16095 # FIXME: first we should search . and the directory the executable is in
16096 shlibpath_var=PATH
16097 ;;
16098
16099 darwin* | rhapsody*)
16100 dynamic_linker="$host_os dyld"
16101 version_type=darwin
16102 need_lib_prefix=no
16103 need_version=no
16104 library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
16105 soname_spec='${libname}${release}${major}$shared_ext'
16106 shlibpath_overrides_runpath=yes
16107 shlibpath_var=DYLD_LIBRARY_PATH
16108 shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
16109 # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
16110 if test "$GCC" = yes; then
16111 sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
16112 else
16113 sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
16114 fi
16115 sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
16116 ;;
16117
16118 dgux*)
16119 version_type=linux
16120 need_lib_prefix=no
16121 need_version=no
16122 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
16123 soname_spec='${libname}${release}${shared_ext}$major'
16124 shlibpath_var=LD_LIBRARY_PATH
16125 ;;
16126
16127 freebsd1*)
16128 dynamic_linker=no
16129 ;;
16130
16131 freebsd* | dragonfly*)
16132 # DragonFly does not have aout. When/if they implement a new
16133 # versioning mechanism, adjust this.
16134 if test -x /usr/bin/objformat; then
16135 objformat=`/usr/bin/objformat`
16136 else
16137 case $host_os in
16138 freebsd[123]*) objformat=aout ;;
16139 *) objformat=elf ;;
16140 esac
16141 fi
16142 version_type=freebsd-$objformat
16143 case $version_type in
16144 freebsd-elf*)
16145 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
16146 need_version=no
16147 need_lib_prefix=no
16148 ;;
16149 freebsd-*)
16150 library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
16151 need_version=yes
16152 ;;
16153 esac
16154 shlibpath_var=LD_LIBRARY_PATH
16155 case $host_os in
16156 freebsd2*)
16157 shlibpath_overrides_runpath=yes
16158 ;;
16159 freebsd3.[01]* | freebsdelf3.[01]*)
16160 shlibpath_overrides_runpath=yes
16161 hardcode_into_libs=yes
16162 ;;
16163 freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
16164 freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
16165 shlibpath_overrides_runpath=no
16166 hardcode_into_libs=yes
16167 ;;
16168 freebsd*) # from 4.6 on
16169 shlibpath_overrides_runpath=yes
16170 hardcode_into_libs=yes
16171 ;;
16172 esac
16173 ;;
16174
16175 gnu*)
16176 version_type=linux
16177 need_lib_prefix=no
16178 need_version=no
16179 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
16180 soname_spec='${libname}${release}${shared_ext}$major'
16181 shlibpath_var=LD_LIBRARY_PATH
16182 hardcode_into_libs=yes
16183 ;;
16184
16185 hpux9* | hpux10* | hpux11*)
16186 # Give a soname corresponding to the major version so that dld.sl refuses to
16187 # link against other versions.
16188 version_type=sunos
16189 need_lib_prefix=no
16190 need_version=no
16191 case $host_cpu in
16192 ia64*)
16193 shrext_cmds='.so'
16194 hardcode_into_libs=yes
16195 dynamic_linker="$host_os dld.so"
16196 shlibpath_var=LD_LIBRARY_PATH
16197 shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
16198 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
16199 soname_spec='${libname}${release}${shared_ext}$major'
16200 if test "X$HPUX_IA64_MODE" = X32; then
16201 sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
16202 else
16203 sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
16204 fi
16205 sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
16206 ;;
16207 hppa*64*)
16208 shrext_cmds='.sl'
16209 hardcode_into_libs=yes
16210 dynamic_linker="$host_os dld.sl"
16211 shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
16212 shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
16213 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
16214 soname_spec='${libname}${release}${shared_ext}$major'
16215 sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
16216 sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
16217 ;;
16218 *)
16219 shrext_cmds='.sl'
16220 dynamic_linker="$host_os dld.sl"
16221 shlibpath_var=SHLIB_PATH
16222 shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
16223 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
16224 soname_spec='${libname}${release}${shared_ext}$major'
16225 ;;
16226 esac
16227 # HP-UX runs *really* slowly unless shared libraries are mode 555.
16228 postinstall_cmds='chmod 555 $lib'
16229 ;;
16230
16231 interix3*)
16232 version_type=linux
16233 need_lib_prefix=no
16234 need_version=no
16235 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
16236 soname_spec='${libname}${release}${shared_ext}$major'
16237 dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
16238 shlibpath_var=LD_LIBRARY_PATH
16239 shlibpath_overrides_runpath=no
16240 hardcode_into_libs=yes
16241 ;;
16242
16243 irix5* | irix6* | nonstopux*)
16244 case $host_os in
16245 nonstopux*) version_type=nonstopux ;;
16246 *)
16247 if test "$lt_cv_prog_gnu_ld" = yes; then
16248 version_type=linux
16249 else
16250 version_type=irix
16251 fi ;;
16252 esac
16253 need_lib_prefix=no
16254 need_version=no
16255 soname_spec='${libname}${release}${shared_ext}$major'
16256 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
16257 case $host_os in
16258 irix5* | nonstopux*)
16259 libsuff= shlibsuff=
16260 ;;
16261 *)
16262 case $LD in # libtool.m4 will add one of these switches to LD
16263 *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
16264 libsuff= shlibsuff= libmagic=32-bit;;
16265 *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
16266 libsuff=32 shlibsuff=N32 libmagic=N32;;
16267 *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
16268 libsuff=64 shlibsuff=64 libmagic=64-bit;;
16269 *) libsuff= shlibsuff= libmagic=never-match;;
16270 esac
16271 ;;
16272 esac
16273 shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
16274 shlibpath_overrides_runpath=no
16275 sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
16276 sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
16277 hardcode_into_libs=yes
16278 ;;
16279
16280 # No shared lib support for Linux oldld, aout, or coff.
16281 linux*oldld* | linux*aout* | linux*coff*)
16282 dynamic_linker=no
16283 ;;
16284
16285 # This must be Linux ELF.
16286 linux* | k*bsd*-gnu)
16287 version_type=linux
16288 need_lib_prefix=no
16289 need_version=no
16290 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
16291 soname_spec='${libname}${release}${shared_ext}$major'
16292 finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
16293 shlibpath_var=LD_LIBRARY_PATH
16294 shlibpath_overrides_runpath=no
16295 # This implies no fast_install, which is unacceptable.
16296 # Some rework will be needed to allow for fast_install
16297 # before this can be enabled.
16298 hardcode_into_libs=yes
16299
16300 # Append ld.so.conf contents to the search path
16301 if test -f /etc/ld.so.conf; then
16302 lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
16303 sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
16304 fi
16305
16306 # We used to test for /lib/ld.so.1 and disable shared libraries on
16307 # powerpc, because MkLinux only supported shared libraries with the
16308 # GNU dynamic linker. Since this was broken with cross compilers,
16309 # most powerpc-linux boxes support dynamic linking these days and
16310 # people can always --disable-shared, the test was removed, and we
16311 # assume the GNU/Linux dynamic linker is in use.
16312 dynamic_linker='GNU/Linux ld.so'
16313 ;;
16314
16315 netbsdelf*-gnu)
16316 version_type=linux
16317 need_lib_prefix=no
16318 need_version=no
16319 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
16320 soname_spec='${libname}${release}${shared_ext}$major'
16321 shlibpath_var=LD_LIBRARY_PATH
16322 shlibpath_overrides_runpath=no
16323 hardcode_into_libs=yes
16324 dynamic_linker='NetBSD ld.elf_so'
16325 ;;
16326
16327 netbsd*)
16328 version_type=sunos
16329 need_lib_prefix=no
16330 need_version=no
16331 if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
16332 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
16333 finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
16334 dynamic_linker='NetBSD (a.out) ld.so'
16335 else
16336 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
16337 soname_spec='${libname}${release}${shared_ext}$major'
16338 dynamic_linker='NetBSD ld.elf_so'
16339 fi
16340 shlibpath_var=LD_LIBRARY_PATH
16341 shlibpath_overrides_runpath=yes
16342 hardcode_into_libs=yes
16343 ;;
16344
16345 newsos6)
16346 version_type=linux
16347 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
16348 shlibpath_var=LD_LIBRARY_PATH
16349 shlibpath_overrides_runpath=yes
16350 ;;
16351
16352 nto-qnx*)
16353 version_type=linux
16354 need_lib_prefix=no
16355 need_version=no
16356 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
16357 soname_spec='${libname}${release}${shared_ext}$major'
16358 shlibpath_var=LD_LIBRARY_PATH
16359 shlibpath_overrides_runpath=yes
16360 ;;
16361
16362 openbsd*)
16363 version_type=sunos
16364 sys_lib_dlsearch_path_spec="/usr/lib"
16365 need_lib_prefix=no
16366 # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
16367 case $host_os in
16368 openbsd3.3 | openbsd3.3.*) need_version=yes ;;
16369 *) need_version=no ;;
16370 esac
16371 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
16372 finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
16373 shlibpath_var=LD_LIBRARY_PATH
16374 if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
16375 case $host_os in
16376 openbsd2.[89] | openbsd2.[89].*)
16377 shlibpath_overrides_runpath=no
16378 ;;
16379 *)
16380 shlibpath_overrides_runpath=yes
16381 ;;
16382 esac
16383 else
16384 shlibpath_overrides_runpath=yes
16385 fi
16386 ;;
16387
16388 os2*)
16389 libname_spec='$name'
16390 shrext_cmds=".dll"
16391 need_lib_prefix=no
16392 library_names_spec='$libname${shared_ext} $libname.a'
16393 dynamic_linker='OS/2 ld.exe'
16394 shlibpath_var=LIBPATH
16395 ;;
16396
16397 osf3* | osf4* | osf5*)
16398 version_type=osf
16399 need_lib_prefix=no
16400 need_version=no
16401 soname_spec='${libname}${release}${shared_ext}$major'
16402 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
16403 shlibpath_var=LD_LIBRARY_PATH
16404 sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
16405 sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
16406 ;;
16407
16408 solaris*)
16409 version_type=linux
16410 need_lib_prefix=no
16411 need_version=no
16412 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
16413 soname_spec='${libname}${release}${shared_ext}$major'
16414 shlibpath_var=LD_LIBRARY_PATH
16415 shlibpath_overrides_runpath=yes
16416 hardcode_into_libs=yes
16417 # ldd complains unless libraries are executable
16418 postinstall_cmds='chmod +x $lib'
16419 ;;
16420
16421 sunos4*)
16422 version_type=sunos
16423 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
16424 finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
16425 shlibpath_var=LD_LIBRARY_PATH
16426 shlibpath_overrides_runpath=yes
16427 if test "$with_gnu_ld" = yes; then
16428 need_lib_prefix=no
16429 fi
16430 need_version=yes
16431 ;;
16432
16433 sysv4 | sysv4.3*)
16434 version_type=linux
16435 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
16436 soname_spec='${libname}${release}${shared_ext}$major'
16437 shlibpath_var=LD_LIBRARY_PATH
16438 case $host_vendor in
16439 sni)
16440 shlibpath_overrides_runpath=no
16441 need_lib_prefix=no
16442 export_dynamic_flag_spec='${wl}-Blargedynsym'
16443 runpath_var=LD_RUN_PATH
16444 ;;
16445 siemens)
16446 need_lib_prefix=no
16447 ;;
16448 motorola)
16449 need_lib_prefix=no
16450 need_version=no
16451 shlibpath_overrides_runpath=no
16452 sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
16453 ;;
16454 esac
16455 ;;
16456
16457 sysv4*MP*)
16458 if test -d /usr/nec ;then
16459 version_type=linux
16460 library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
16461 soname_spec='$libname${shared_ext}.$major'
16462 shlibpath_var=LD_LIBRARY_PATH
16463 fi
16464 ;;
16465
16466 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
16467 version_type=freebsd-elf
16468 need_lib_prefix=no
16469 need_version=no
16470 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
16471 soname_spec='${libname}${release}${shared_ext}$major'
16472 shlibpath_var=LD_LIBRARY_PATH
16473 hardcode_into_libs=yes
16474 if test "$with_gnu_ld" = yes; then
16475 sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
16476 shlibpath_overrides_runpath=no
16477 else
16478 sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
16479 shlibpath_overrides_runpath=yes
16480 case $host_os in
16481 sco3.2v5*)
16482 sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
16483 ;;
16484 esac
16485 fi
16486 sys_lib_dlsearch_path_spec='/usr/lib'
16487 ;;
16488
16489 uts4*)
16490 version_type=linux
16491 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
16492 soname_spec='${libname}${release}${shared_ext}$major'
16493 shlibpath_var=LD_LIBRARY_PATH
16494 ;;
16495
16496 *)
16497 dynamic_linker=no
16498 ;;
16499 esac
16500 { echo "$as_me:$LINENO: result: $dynamic_linker" >&5
16501 echo "${ECHO_T}$dynamic_linker" >&6; }
16502 test "$dynamic_linker" = no && can_build_shared=no
16503
16504 variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
16505 if test "$GCC" = yes; then
16506 variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
16507 fi
16508
16509 { echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
16510 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
16511 hardcode_action_F77=
16512 if test -n "$hardcode_libdir_flag_spec_F77" || \
16513 test -n "$runpath_var_F77" || \
16514 test "X$hardcode_automatic_F77" = "Xyes" ; then
16515
16516 # We can hardcode non-existant directories.
16517 if test "$hardcode_direct_F77" != no &&
16518 # If the only mechanism to avoid hardcoding is shlibpath_var, we
16519 # have to relink, otherwise we might link with an installed library
16520 # when we should be linking with a yet-to-be-installed one
16521 ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
16522 test "$hardcode_minus_L_F77" != no; then
16523 # Linking always hardcodes the temporary library directory.
16524 hardcode_action_F77=relink
16525 else
16526 # We can link without hardcoding, and we can hardcode nonexisting dirs.
16527 hardcode_action_F77=immediate
16528 fi
16529 else
16530 # We cannot hardcode anything, or else we can only hardcode existing
16531 # directories.
16532 hardcode_action_F77=unsupported
16533 fi
16534 { echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5
16535 echo "${ECHO_T}$hardcode_action_F77" >&6; }
16536
16537 if test "$hardcode_action_F77" = relink; then
16538 # Fast installation is not supported
16539 enable_fast_install=no
16540 elif test "$shlibpath_overrides_runpath" = yes ||
16541 test "$enable_shared" = no; then
16542 # Fast installation is not necessary
16543 enable_fast_install=needless
16544 fi
16545
16546
16547 # The else clause should only fire when bootstrapping the
16548 # libtool distribution, otherwise you forgot to ship ltmain.sh
16549 # with your package, and you will get complaints that there are
16550 # no rules to generate ltmain.sh.
16551 if test -f "$ltmain"; then
16552 # See if we are running on zsh, and set the options which allow our commands through
16553 # without removal of \ escapes.
16554 if test -n "${ZSH_VERSION+set}" ; then
16555 setopt NO_GLOB_SUBST
16556 fi
16557 # Now quote all the things that may contain metacharacters while being
16558 # careful not to overquote the AC_SUBSTed values. We take copies of the
16559 # variables and quote the copies for generation of the libtool script.
16560 for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
16561 SED SHELL STRIP \
16562 libname_spec library_names_spec soname_spec extract_expsyms_cmds \
16563 old_striplib striplib file_magic_cmd finish_cmds finish_eval \
16564 deplibs_check_method reload_flag reload_cmds need_locks \
16565 lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
16566 lt_cv_sys_global_symbol_to_c_name_address \
16567 sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
16568 old_postinstall_cmds old_postuninstall_cmds \
16569 compiler_F77 \
16570 CC_F77 \
16571 LD_F77 \
16572 lt_prog_compiler_wl_F77 \
16573 lt_prog_compiler_pic_F77 \
16574 lt_prog_compiler_static_F77 \
16575 lt_prog_compiler_no_builtin_flag_F77 \
16576 export_dynamic_flag_spec_F77 \
16577 thread_safe_flag_spec_F77 \
16578 whole_archive_flag_spec_F77 \
16579 enable_shared_with_static_runtimes_F77 \
16580 old_archive_cmds_F77 \
16581 old_archive_from_new_cmds_F77 \
16582 predep_objects_F77 \
16583 postdep_objects_F77 \
16584 predeps_F77 \
16585 postdeps_F77 \
16586 compiler_lib_search_path_F77 \
16587 archive_cmds_F77 \
16588 archive_expsym_cmds_F77 \
16589 postinstall_cmds_F77 \
16590 postuninstall_cmds_F77 \
16591 old_archive_from_expsyms_cmds_F77 \
16592 allow_undefined_flag_F77 \
16593 no_undefined_flag_F77 \
16594 export_symbols_cmds_F77 \
16595 hardcode_libdir_flag_spec_F77 \
16596 hardcode_libdir_flag_spec_ld_F77 \
16597 hardcode_libdir_separator_F77 \
16598 hardcode_automatic_F77 \
16599 module_cmds_F77 \
16600 module_expsym_cmds_F77 \
16601 lt_cv_prog_compiler_c_o_F77 \
16602 exclude_expsyms_F77 \
16603 include_expsyms_F77; do
16604
16605 case $var in
16606 old_archive_cmds_F77 | \
16607 old_archive_from_new_cmds_F77 | \
16608 archive_cmds_F77 | \
16609 archive_expsym_cmds_F77 | \
16610 module_cmds_F77 | \
16611 module_expsym_cmds_F77 | \
16612 old_archive_from_expsyms_cmds_F77 | \
16613 export_symbols_cmds_F77 | \
16614 extract_expsyms_cmds | reload_cmds | finish_cmds | \
16615 postinstall_cmds | postuninstall_cmds | \
16616 old_postinstall_cmds | old_postuninstall_cmds | \
16617 sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
16618 # Double-quote double-evaled strings.
16619 eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
16620 ;;
16621 *)
16622 eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
16623 ;;
16624 esac
16625 done
16626
16627 case $lt_echo in
16628 *'\$0 --fallback-echo"')
16629 lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
16630 ;;
16631 esac
16632
16633 cfgfile="$ofile"
16634
16635 cat <<__EOF__ >> "$cfgfile"
16636 # ### BEGIN LIBTOOL TAG CONFIG: $tagname
16637
16638 # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
16639
16640 # Shell to use when invoking shell scripts.
16641 SHELL=$lt_SHELL
16642
16643 # Whether or not to build shared libraries.
16644 build_libtool_libs=$enable_shared
16645
16646 # Whether or not to build static libraries.
16647 build_old_libs=$enable_static
16648
16649 # Whether or not to add -lc for building shared libraries.
16650 build_libtool_need_lc=$archive_cmds_need_lc_F77
16651
16652 # Whether or not to disallow shared libs when runtime libs are static
16653 allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
16654
16655 # Whether or not to optimize for fast installation.
16656 fast_install=$enable_fast_install
16657
16658 # The host system.
16659 host_alias=$host_alias
16660 host=$host
16661 host_os=$host_os
16662
16663 # The build system.
16664 build_alias=$build_alias
16665 build=$build
16666 build_os=$build_os
16667
16668 # An echo program that does not interpret backslashes.
16669 echo=$lt_echo
16670
16671 # The archiver.
16672 AR=$lt_AR
16673 AR_FLAGS=$lt_AR_FLAGS
16674
16675 # A C compiler.
16676 LTCC=$lt_LTCC
16677
16678 # LTCC compiler flags.
16679 LTCFLAGS=$lt_LTCFLAGS
16680
16681 # A language-specific compiler.
16682 CC=$lt_compiler_F77
16683
16684 # Is the compiler the GNU C compiler?
16685 with_gcc=$GCC_F77
16686
16687 # An ERE matcher.
16688 EGREP=$lt_EGREP
16689
16690 # The linker used to build libraries.
16691 LD=$lt_LD_F77
16692
16693 # Whether we need hard or soft links.
16694 LN_S=$lt_LN_S
16695
16696 # A BSD-compatible nm program.
16697 NM=$lt_NM
16698
16699 # A symbol stripping program
16700 STRIP=$lt_STRIP
16701
16702 # Used to examine libraries when file_magic_cmd begins "file"
16703 MAGIC_CMD=$MAGIC_CMD
16704
16705 # Used on cygwin: DLL creation program.
16706 DLLTOOL="$DLLTOOL"
16707
16708 # Used on cygwin: object dumper.
16709 OBJDUMP="$OBJDUMP"
16710
16711 # Used on cygwin: assembler.
16712 AS="$AS"
16713
16714 # The name of the directory that contains temporary libtool files.
16715 objdir=$objdir
16716
16717 # How to create reloadable object files.
16718 reload_flag=$lt_reload_flag
16719 reload_cmds=$lt_reload_cmds
16720
16721 # How to pass a linker flag through the compiler.
16722 wl=$lt_lt_prog_compiler_wl_F77
16723
16724 # Object file suffix (normally "o").
16725 objext="$ac_objext"
16726
16727 # Old archive suffix (normally "a").
16728 libext="$libext"
16729
16730 # Shared library suffix (normally ".so").
16731 shrext_cmds='$shrext_cmds'
16732
16733 # Executable file suffix (normally "").
16734 exeext="$exeext"
16735
16736 # Additional compiler flags for building library objects.
16737 pic_flag=$lt_lt_prog_compiler_pic_F77
16738 pic_mode=$pic_mode
16739
16740 # What is the maximum length of a command?
16741 max_cmd_len=$lt_cv_sys_max_cmd_len
16742
16743 # Does compiler simultaneously support -c and -o options?
16744 compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
16745
16746 # Must we lock files when doing compilation?
16747 need_locks=$lt_need_locks
16748
16749 # Do we need the lib prefix for modules?
16750 need_lib_prefix=$need_lib_prefix
16751
16752 # Do we need a version for libraries?
16753 need_version=$need_version
16754
16755 # Whether dlopen is supported.
16756 dlopen_support=$enable_dlopen
16757
16758 # Whether dlopen of programs is supported.
16759 dlopen_self=$enable_dlopen_self
16760
16761 # Whether dlopen of statically linked programs is supported.
16762 dlopen_self_static=$enable_dlopen_self_static
16763
16764 # Compiler flag to prevent dynamic linking.
16765 link_static_flag=$lt_lt_prog_compiler_static_F77
16766
16767 # Compiler flag to turn off builtin functions.
16768 no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
16769
16770 # Compiler flag to allow reflexive dlopens.
16771 export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
16772
16773 # Compiler flag to generate shared objects directly from archives.
16774 whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
16775
16776 # Compiler flag to generate thread-safe objects.
16777 thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77
16778
16779 # Library versioning type.
16780 version_type=$version_type
16781
16782 # Format of library name prefix.
16783 libname_spec=$lt_libname_spec
16784
16785 # List of archive names. First name is the real one, the rest are links.
16786 # The last name is the one that the linker finds with -lNAME.
16787 library_names_spec=$lt_library_names_spec
16788
16789 # The coded name of the library, if different from the real name.
16790 soname_spec=$lt_soname_spec
16791
16792 # Commands used to build and install an old-style archive.
16793 RANLIB=$lt_RANLIB
16794 old_archive_cmds=$lt_old_archive_cmds_F77
16795 old_postinstall_cmds=$lt_old_postinstall_cmds
16796 old_postuninstall_cmds=$lt_old_postuninstall_cmds
16797
16798 # Create an old-style archive from a shared archive.
16799 old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77
16800
16801 # Create a temporary old-style archive to link instead of a shared archive.
16802 old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77
16803
16804 # Commands used to build and install a shared archive.
16805 archive_cmds=$lt_archive_cmds_F77
16806 archive_expsym_cmds=$lt_archive_expsym_cmds_F77
16807 postinstall_cmds=$lt_postinstall_cmds
16808 postuninstall_cmds=$lt_postuninstall_cmds
16809
16810 # Commands used to build a loadable module (assumed same as above if empty)
16811 module_cmds=$lt_module_cmds_F77
16812 module_expsym_cmds=$lt_module_expsym_cmds_F77
16813
16814 # Commands to strip libraries.
16815 old_striplib=$lt_old_striplib
16816 striplib=$lt_striplib
16817
16818 # Dependencies to place before the objects being linked to create a
16819 # shared library.
16820 predep_objects=$lt_predep_objects_F77
16821
16822 # Dependencies to place after the objects being linked to create a
16823 # shared library.
16824 postdep_objects=$lt_postdep_objects_F77
16825
16826 # Dependencies to place before the objects being linked to create a
16827 # shared library.
16828 predeps=$lt_predeps_F77
16829
16830 # Dependencies to place after the objects being linked to create a
16831 # shared library.
16832 postdeps=$lt_postdeps_F77
16833
16834 # The library search path used internally by the compiler when linking
16835 # a shared library.
16836 compiler_lib_search_path=$lt_compiler_lib_search_path_F77
16837
16838 # Method to check whether dependent libraries are shared objects.
16839 deplibs_check_method=$lt_deplibs_check_method
16840
16841 # Command to use when deplibs_check_method == file_magic.
16842 file_magic_cmd=$lt_file_magic_cmd
16843
16844 # Flag that allows shared libraries with undefined symbols to be built.
16845 allow_undefined_flag=$lt_allow_undefined_flag_F77
16846
16847 # Flag that forces no undefined symbols.
16848 no_undefined_flag=$lt_no_undefined_flag_F77
16849
16850 # Commands used to finish a libtool library installation in a directory.
16851 finish_cmds=$lt_finish_cmds
16852
16853 # Same as above, but a single script fragment to be evaled but not shown.
16854 finish_eval=$lt_finish_eval
16855
16856 # Take the output of nm and produce a listing of raw symbols and C names.
16857 global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
16858
16859 # Transform the output of nm in a proper C declaration
16860 global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
16861
16862 # Transform the output of nm in a C name address pair
16863 global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
16864
16865 # This is the shared library runtime path variable.
16866 runpath_var=$runpath_var
16867
16868 # This is the shared library path variable.
16869 shlibpath_var=$shlibpath_var
16870
16871 # Is shlibpath searched before the hard-coded library search path?
16872 shlibpath_overrides_runpath=$shlibpath_overrides_runpath
16873
16874 # How to hardcode a shared library path into an executable.
16875 hardcode_action=$hardcode_action_F77
16876
16877 # Whether we should hardcode library paths into libraries.
16878 hardcode_into_libs=$hardcode_into_libs
16879
16880 # Flag to hardcode \$libdir into a binary during linking.
16881 # This must work even if \$libdir does not exist.
16882 hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77
16883
16884 # If ld is used when linking, flag to hardcode \$libdir into
16885 # a binary during linking. This must work even if \$libdir does
16886 # not exist.
16887 hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77
16888
16889 # Whether we need a single -rpath flag with a separated argument.
16890 hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77
16891
16892 # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
16893 # resulting binary.
16894 hardcode_direct=$hardcode_direct_F77
16895
16896 # Set to yes if using the -LDIR flag during linking hardcodes DIR into the
16897 # resulting binary.
16898 hardcode_minus_L=$hardcode_minus_L_F77
16899
16900 # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
16901 # the resulting binary.
16902 hardcode_shlibpath_var=$hardcode_shlibpath_var_F77
16903
16904 # Set to yes if building a shared library automatically hardcodes DIR into the library
16905 # and all subsequent libraries and executables linked against it.
16906 hardcode_automatic=$hardcode_automatic_F77
16907
16908 # Variables whose values should be saved in libtool wrapper scripts and
16909 # restored at relink time.
16910 variables_saved_for_relink="$variables_saved_for_relink"
16911
16912 # Whether libtool must link a program against all its dependency libraries.
16913 link_all_deplibs=$link_all_deplibs_F77
16914
16915 # Compile-time system search path for libraries
16916 sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
16917
16918 # Run-time system search path for libraries
16919 sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
16920
16921 # Fix the shell variable \$srcfile for the compiler.
16922 fix_srcfile_path="$fix_srcfile_path_F77"
16923
16924 # Set to yes if exported symbols are required.
16925 always_export_symbols=$always_export_symbols_F77
16926
16927 # The commands to list exported symbols.
16928 export_symbols_cmds=$lt_export_symbols_cmds_F77
16929
16930 # The commands to extract the exported symbol list from a shared archive.
16931 extract_expsyms_cmds=$lt_extract_expsyms_cmds
16932
16933 # Symbols that should not be listed in the preloaded symbols.
16934 exclude_expsyms=$lt_exclude_expsyms_F77
16935
16936 # Symbols that must always be exported.
16937 include_expsyms=$lt_include_expsyms_F77
16938
16939 # ### END LIBTOOL TAG CONFIG: $tagname
16940
16941 __EOF__
16942
16943
16944 else
16945 # If there is no Makefile yet, we rely on a make rule to execute
16946 # `config.status --recheck' to rerun these tests and create the
16947 # libtool script then.
16948 ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
16949 if test -f "$ltmain_in"; then
16950 test -f Makefile && make "$ltmain"
16951 fi
16952 fi
16953
16954
16955 ac_ext=c
16956 ac_cpp='$CPP $CPPFLAGS'
16957 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
16958 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
16959 ac_compiler_gnu=$ac_cv_c_compiler_gnu
16960
16961 CC="$lt_save_CC"
16962
16963 else
16964 tagname=""
16965 fi
16966 ;;
16967
16968 GCJ)
16969 if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
16970
16971
16972 # Source file extension for Java test sources.
16973 ac_ext=java
16974
16975 # Object file extension for compiled Java test sources.
16976 objext=o
16977 objext_GCJ=$objext
16978
16979 # Code to be used in simple compile tests
16980 lt_simple_compile_test_code="class foo {}\n"
16981
16982 # Code to be used in simple link tests
16983 lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n'
16984
16985 # ltmain only uses $CC for tagged configurations so make sure $CC is set.
16986
16987 # If no C compiler was specified, use CC.
16988 LTCC=${LTCC-"$CC"}
16989
16990 # If no C compiler flags were specified, use CFLAGS.
16991 LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
16992
16993 # Allow CC to be a program name with arguments.
16994 compiler=$CC
16995
16996
16997 # save warnings/boilerplate of simple test code
16998 ac_outfile=conftest.$ac_objext
16999 printf "$lt_simple_compile_test_code" >conftest.$ac_ext
17000 eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
17001 _lt_compiler_boilerplate=`cat conftest.err`
17002 $rm conftest*
17003
17004 ac_outfile=conftest.$ac_objext
17005 printf "$lt_simple_link_test_code" >conftest.$ac_ext
17006 eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
17007 _lt_linker_boilerplate=`cat conftest.err`
17008 $rm conftest*
17009
17010
17011 # Allow CC to be a program name with arguments.
17012 lt_save_CC="$CC"
17013 CC=${GCJ-"gcj"}
17014 compiler=$CC
17015 compiler_GCJ=$CC
17016 for cc_temp in $compiler""; do
17017 case $cc_temp in
17018 compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
17019 distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
17020 \-*) ;;
17021 *) break;;
17022 esac
17023 done
17024 cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
17025
17026
17027 # GCJ did not exist at the time GCC didn't implicitly link libc in.
17028 archive_cmds_need_lc_GCJ=no
17029
17030 old_archive_cmds_GCJ=$old_archive_cmds
17031
17032
17033 lt_prog_compiler_no_builtin_flag_GCJ=
17034
17035 if test "$GCC" = yes; then
17036 lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin'
17037
17038
17039 { echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
17040 echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; }
17041 if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
17042 echo $ECHO_N "(cached) $ECHO_C" >&6
17043 else
17044 lt_cv_prog_compiler_rtti_exceptions=no
17045 ac_outfile=conftest.$ac_objext
17046 printf "$lt_simple_compile_test_code" > conftest.$ac_ext
17047 lt_compiler_flag="-fno-rtti -fno-exceptions"
17048 # Insert the option either (1) after the last *FLAGS variable, or
17049 # (2) before a word containing "conftest.", or (3) at the end.
17050 # Note that $ac_compile itself does not contain backslashes and begins
17051 # with a dollar sign (not a hyphen), so the echo should work correctly.
17052 # The option is referenced via a variable to avoid confusing sed.
17053 lt_compile=`echo "$ac_compile" | $SED \
17054 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
17055 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
17056 -e 's:$: $lt_compiler_flag:'`
17057 (eval echo "\"\$as_me:17058: $lt_compile\"" >&5)
17058 (eval "$lt_compile" 2>conftest.err)
17059 ac_status=$?
17060 cat conftest.err >&5
17061 echo "$as_me:17062: \$? = $ac_status" >&5
17062 if (exit $ac_status) && test -s "$ac_outfile"; then
17063 # The compiler can only warn and ignore the option if not recognized
17064 # So say no if there are warnings other than the usual output.
17065 $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
17066 $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
17067 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
17068 lt_cv_prog_compiler_rtti_exceptions=yes
17069 fi
17070 fi
17071 $rm conftest*
17072
17073 fi
17074 { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
17075 echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; }
17076
17077 if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
17078 lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions"
17079 else
17080 :
17081 fi
17082
17083 fi
17084
17085 lt_prog_compiler_wl_GCJ=
17086 lt_prog_compiler_pic_GCJ=
17087 lt_prog_compiler_static_GCJ=
17088
17089 { echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
17090 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
17091
17092 if test "$GCC" = yes; then
17093 lt_prog_compiler_wl_GCJ='-Wl,'
17094 lt_prog_compiler_static_GCJ='-static'
17095
17096 case $host_os in
17097 aix*)
17098 # All AIX code is PIC.
17099 if test "$host_cpu" = ia64; then
17100 # AIX 5 now supports IA64 processor
17101 lt_prog_compiler_static_GCJ='-Bstatic'
17102 fi
17103 ;;
17104
17105 amigaos*)
17106 # FIXME: we need at least 68020 code to build shared libraries, but
17107 # adding the `-m68020' flag to GCC prevents building anything better,
17108 # like `-m68040'.
17109 lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4'
17110 ;;
17111
17112 beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
17113 # PIC is the default for these OSes.
17114 ;;
17115
17116 mingw* | pw32* | os2*)
17117 # This hack is so that the source file can tell whether it is being
17118 # built for inclusion in a dll (and should export symbols for example).
17119 lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
17120 ;;
17121
17122 darwin* | rhapsody*)
17123 # PIC is the default on this platform
17124 # Common symbols not allowed in MH_DYLIB files
17125 lt_prog_compiler_pic_GCJ='-fno-common'
17126 ;;
17127
17128 interix3*)
17129 # Interix 3.x gcc -fpic/-fPIC options generate broken code.
17130 # Instead, we relocate shared libraries at runtime.
17131 ;;
17132
17133 msdosdjgpp*)
17134 # Just because we use GCC doesn't mean we suddenly get shared libraries
17135 # on systems that don't support them.
17136 lt_prog_compiler_can_build_shared_GCJ=no
17137 enable_shared=no
17138 ;;
17139
17140 sysv4*MP*)
17141 if test -d /usr/nec; then
17142 lt_prog_compiler_pic_GCJ=-Kconform_pic
17143 fi
17144 ;;
17145
17146 hpux*)
17147 # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
17148 # not for PA HP-UX.
17149 case $host_cpu in
17150 hppa*64*|ia64*)
17151 # +Z the default
17152 ;;
17153 *)
17154 lt_prog_compiler_pic_GCJ='-fPIC'
17155 ;;
17156 esac
17157 ;;
17158
17159 *)
17160 lt_prog_compiler_pic_GCJ='-fPIC'
17161 ;;
17162 esac
17163 else
17164 # PORTME Check for flag to pass linker flags through the system compiler.
17165 case $host_os in
17166 aix*)
17167 lt_prog_compiler_wl_GCJ='-Wl,'
17168 if test "$host_cpu" = ia64; then
17169 # AIX 5 now supports IA64 processor
17170 lt_prog_compiler_static_GCJ='-Bstatic'
17171 else
17172 lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp'
17173 fi
17174 ;;
17175 darwin*)
17176 # PIC is the default on this platform
17177 # Common symbols not allowed in MH_DYLIB files
17178 case $cc_basename in
17179 xlc*)
17180 lt_prog_compiler_pic_GCJ='-qnocommon'
17181 lt_prog_compiler_wl_GCJ='-Wl,'
17182 ;;
17183 esac
17184 ;;
17185
17186 mingw* | pw32* | os2*)
17187 # This hack is so that the source file can tell whether it is being
17188 # built for inclusion in a dll (and should export symbols for example).
17189 lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
17190 ;;
17191
17192 hpux9* | hpux10* | hpux11*)
17193 lt_prog_compiler_wl_GCJ='-Wl,'
17194 # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
17195 # not for PA HP-UX.
17196 case $host_cpu in
17197 hppa*64*|ia64*)
17198 # +Z the default
17199 ;;
17200 *)
17201 lt_prog_compiler_pic_GCJ='+Z'
17202 ;;
17203 esac
17204 # Is there a better lt_prog_compiler_static that works with the bundled CC?
17205 lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive'
17206 ;;
17207
17208 irix5* | irix6* | nonstopux*)
17209 lt_prog_compiler_wl_GCJ='-Wl,'
17210 # PIC (with -KPIC) is the default.
17211 lt_prog_compiler_static_GCJ='-non_shared'
17212 ;;
17213
17214 newsos6)
17215 lt_prog_compiler_pic_GCJ='-KPIC'
17216 lt_prog_compiler_static_GCJ='-Bstatic'
17217 ;;
17218
17219 linux* | k*bsd*-gnu)
17220 case $cc_basename in
17221 icc* | ecc*)
17222 lt_prog_compiler_wl_GCJ='-Wl,'
17223 lt_prog_compiler_pic_GCJ='-KPIC'
17224 lt_prog_compiler_static_GCJ='-static'
17225 ;;
17226 pgcc* | pgf77* | pgf90* | pgf95*)
17227 # Portland Group compilers (*not* the Pentium gcc compiler,
17228 # which looks to be a dead project)
17229 lt_prog_compiler_wl_GCJ='-Wl,'
17230 lt_prog_compiler_pic_GCJ='-fpic'
17231 lt_prog_compiler_static_GCJ='-Bstatic'
17232 ;;
17233 ccc*)
17234 lt_prog_compiler_wl_GCJ='-Wl,'
17235 # All Alpha code is PIC.
17236 lt_prog_compiler_static_GCJ='-non_shared'
17237 ;;
17238 esac
17239 ;;
17240
17241 osf3* | osf4* | osf5*)
17242 lt_prog_compiler_wl_GCJ='-Wl,'
17243 # All OSF/1 code is PIC.
17244 lt_prog_compiler_static_GCJ='-non_shared'
17245 ;;
17246
17247 solaris*)
17248 lt_prog_compiler_pic_GCJ='-KPIC'
17249 lt_prog_compiler_static_GCJ='-Bstatic'
17250 case $cc_basename in
17251 f77* | f90* | f95*)
17252 lt_prog_compiler_wl_GCJ='-Qoption ld ';;
17253 *)
17254 lt_prog_compiler_wl_GCJ='-Wl,';;
17255 esac
17256 ;;
17257
17258 sunos4*)
17259 lt_prog_compiler_wl_GCJ='-Qoption ld '
17260 lt_prog_compiler_pic_GCJ='-PIC'
17261 lt_prog_compiler_static_GCJ='-Bstatic'
17262 ;;
17263
17264 sysv4 | sysv4.2uw2* | sysv4.3*)
17265 lt_prog_compiler_wl_GCJ='-Wl,'
17266 lt_prog_compiler_pic_GCJ='-KPIC'
17267 lt_prog_compiler_static_GCJ='-Bstatic'
17268 ;;
17269
17270 sysv4*MP*)
17271 if test -d /usr/nec ;then
17272 lt_prog_compiler_pic_GCJ='-Kconform_pic'
17273 lt_prog_compiler_static_GCJ='-Bstatic'
17274 fi
17275 ;;
17276
17277 sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
17278 lt_prog_compiler_wl_GCJ='-Wl,'
17279 lt_prog_compiler_pic_GCJ='-KPIC'
17280 lt_prog_compiler_static_GCJ='-Bstatic'
17281 ;;
17282
17283 unicos*)
17284 lt_prog_compiler_wl_GCJ='-Wl,'
17285 lt_prog_compiler_can_build_shared_GCJ=no
17286 ;;
17287
17288 uts4*)
17289 lt_prog_compiler_pic_GCJ='-pic'
17290 lt_prog_compiler_static_GCJ='-Bstatic'
17291 ;;
17292
17293 *)
17294 lt_prog_compiler_can_build_shared_GCJ=no
17295 ;;
17296 esac
17297 fi
17298
17299 { echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5
17300 echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6; }
17301
17302 #
17303 # Check to make sure the PIC flag actually works.
17304 #
17305 if test -n "$lt_prog_compiler_pic_GCJ"; then
17306
17307 { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5
17308 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6; }
17309 if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then
17310 echo $ECHO_N "(cached) $ECHO_C" >&6
17311 else
17312 lt_prog_compiler_pic_works_GCJ=no
17313 ac_outfile=conftest.$ac_objext
17314 printf "$lt_simple_compile_test_code" > conftest.$ac_ext
17315 lt_compiler_flag="$lt_prog_compiler_pic_GCJ"
17316 # Insert the option either (1) after the last *FLAGS variable, or
17317 # (2) before a word containing "conftest.", or (3) at the end.
17318 # Note that $ac_compile itself does not contain backslashes and begins
17319 # with a dollar sign (not a hyphen), so the echo should work correctly.
17320 # The option is referenced via a variable to avoid confusing sed.
17321 lt_compile=`echo "$ac_compile" | $SED \
17322 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
17323 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
17324 -e 's:$: $lt_compiler_flag:'`
17325 (eval echo "\"\$as_me:17326: $lt_compile\"" >&5)
17326 (eval "$lt_compile" 2>conftest.err)
17327 ac_status=$?
17328 cat conftest.err >&5
17329 echo "$as_me:17330: \$? = $ac_status" >&5
17330 if (exit $ac_status) && test -s "$ac_outfile"; then
17331 # The compiler can only warn and ignore the option if not recognized
17332 # So say no if there are warnings other than the usual output.
17333 $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
17334 $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
17335 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
17336 lt_prog_compiler_pic_works_GCJ=yes
17337 fi
17338 fi
17339 $rm conftest*
17340
17341 fi
17342 { echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5
17343 echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6; }
17344
17345 if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then
17346 case $lt_prog_compiler_pic_GCJ in
17347 "" | " "*) ;;
17348 *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;;
17349 esac
17350 else
17351 lt_prog_compiler_pic_GCJ=
17352 lt_prog_compiler_can_build_shared_GCJ=no
17353 fi
17354
17355 fi
17356 case $host_os in
17357 # For platforms which do not support PIC, -DPIC is meaningless:
17358 *djgpp*)
17359 lt_prog_compiler_pic_GCJ=
17360 ;;
17361 *)
17362 lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ"
17363 ;;
17364 esac
17365
17366 #
17367 # Check to make sure the static flag actually works.
17368 #
17369 wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\"
17370 { echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
17371 echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
17372 if test "${lt_prog_compiler_static_works_GCJ+set}" = set; then
17373 echo $ECHO_N "(cached) $ECHO_C" >&6
17374 else
17375 lt_prog_compiler_static_works_GCJ=no
17376 save_LDFLAGS="$LDFLAGS"
17377 LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
17378 printf "$lt_simple_link_test_code" > conftest.$ac_ext
17379 if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
17380 # The linker can only warn and ignore the option if not recognized
17381 # So say no if there are warnings
17382 if test -s conftest.err; then
17383 # Append any errors to the config.log.
17384 cat conftest.err 1>&5
17385 $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
17386 $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
17387 if diff conftest.exp conftest.er2 >/dev/null; then
17388 lt_prog_compiler_static_works_GCJ=yes
17389 fi
17390 else
17391 lt_prog_compiler_static_works_GCJ=yes
17392 fi
17393 fi
17394 $rm conftest*
17395 LDFLAGS="$save_LDFLAGS"
17396
17397 fi
17398 { echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_GCJ" >&5
17399 echo "${ECHO_T}$lt_prog_compiler_static_works_GCJ" >&6; }
17400
17401 if test x"$lt_prog_compiler_static_works_GCJ" = xyes; then
17402 :
17403 else
17404 lt_prog_compiler_static_GCJ=
17405 fi
17406
17407
17408 { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
17409 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
17410 if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then
17411 echo $ECHO_N "(cached) $ECHO_C" >&6
17412 else
17413 lt_cv_prog_compiler_c_o_GCJ=no
17414 $rm -r conftest 2>/dev/null
17415 mkdir conftest
17416 cd conftest
17417 mkdir out
17418 printf "$lt_simple_compile_test_code" > conftest.$ac_ext
17419
17420 lt_compiler_flag="-o out/conftest2.$ac_objext"
17421 # Insert the option either (1) after the last *FLAGS variable, or
17422 # (2) before a word containing "conftest.", or (3) at the end.
17423 # Note that $ac_compile itself does not contain backslashes and begins
17424 # with a dollar sign (not a hyphen), so the echo should work correctly.
17425 lt_compile=`echo "$ac_compile" | $SED \
17426 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
17427 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
17428 -e 's:$: $lt_compiler_flag:'`
17429 (eval echo "\"\$as_me:17430: $lt_compile\"" >&5)
17430 (eval "$lt_compile" 2>out/conftest.err)
17431 ac_status=$?
17432 cat out/conftest.err >&5
17433 echo "$as_me:17434: \$? = $ac_status" >&5
17434 if (exit $ac_status) && test -s out/conftest2.$ac_objext
17435 then
17436 # The compiler can only warn and ignore the option if not recognized
17437 # So say no if there are warnings
17438 $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
17439 $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
17440 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
17441 lt_cv_prog_compiler_c_o_GCJ=yes
17442 fi
17443 fi
17444 chmod u+w . 2>&5
17445 $rm conftest*
17446 # SGI C++ compiler will create directory out/ii_files/ for
17447 # template instantiation
17448 test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
17449 $rm out/* && rmdir out
17450 cd ..
17451 rmdir conftest
17452 $rm conftest*
17453
17454 fi
17455 { echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5
17456 echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6; }
17457
17458
17459 hard_links="nottested"
17460 if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then
17461 # do not overwrite the value of need_locks provided by the user
17462 { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
17463 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; }
17464 hard_links=yes
17465 $rm conftest*
17466 ln conftest.a conftest.b 2>/dev/null && hard_links=no
17467 touch conftest.a
17468 ln conftest.a conftest.b 2>&5 || hard_links=no
17469 ln conftest.a conftest.b 2>/dev/null && hard_links=no
17470 { echo "$as_me:$LINENO: result: $hard_links" >&5
17471 echo "${ECHO_T}$hard_links" >&6; }
17472 if test "$hard_links" = no; then
17473 { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
17474 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
17475 need_locks=warn
17476 fi
17477 else
17478 need_locks=no
17479 fi
17480
17481 { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
17482 echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
17483
17484 runpath_var=
17485 allow_undefined_flag_GCJ=
17486 enable_shared_with_static_runtimes_GCJ=no
17487 archive_cmds_GCJ=
17488 archive_expsym_cmds_GCJ=
17489 old_archive_From_new_cmds_GCJ=
17490 old_archive_from_expsyms_cmds_GCJ=
17491 export_dynamic_flag_spec_GCJ=
17492 whole_archive_flag_spec_GCJ=
17493 thread_safe_flag_spec_GCJ=
17494 hardcode_libdir_flag_spec_GCJ=
17495 hardcode_libdir_flag_spec_ld_GCJ=
17496 hardcode_libdir_separator_GCJ=
17497 hardcode_direct_GCJ=no
17498 hardcode_minus_L_GCJ=no
17499 hardcode_shlibpath_var_GCJ=unsupported
17500 link_all_deplibs_GCJ=unknown
17501 hardcode_automatic_GCJ=no
17502 module_cmds_GCJ=
17503 module_expsym_cmds_GCJ=
17504 always_export_symbols_GCJ=no
17505 export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
17506 # include_expsyms should be a list of space-separated symbols to be *always*
17507 # included in the symbol list
17508 include_expsyms_GCJ=
17509 # exclude_expsyms can be an extended regexp of symbols to exclude
17510 # it will be wrapped by ` (' and `)$', so one must not match beginning or
17511 # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
17512 # as well as any symbol that contains `d'.
17513 exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_"
17514 # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
17515 # platforms (ab)use it in PIC code, but their linkers get confused if
17516 # the symbol is explicitly referenced. Since portable code cannot
17517 # rely on this symbol name, it's probably fine to never include it in
17518 # preloaded symbol tables.
17519 extract_expsyms_cmds=
17520 # Just being paranoid about ensuring that cc_basename is set.
17521 for cc_temp in $compiler""; do
17522 case $cc_temp in
17523 compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
17524 distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
17525 \-*) ;;
17526 *) break;;
17527 esac
17528 done
17529 cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
17530
17531 case $host_os in
17532 cygwin* | mingw* | pw32*)
17533 # FIXME: the MSVC++ port hasn't been tested in a loooong time
17534 # When not using gcc, we currently assume that we are using
17535 # Microsoft Visual C++.
17536 if test "$GCC" != yes; then
17537 with_gnu_ld=no
17538 fi
17539 ;;
17540 interix*)
17541 # we just hope/assume this is gcc and not c89 (= MSVC++)
17542 with_gnu_ld=yes
17543 ;;
17544 openbsd*)
17545 with_gnu_ld=no
17546 ;;
17547 esac
17548
17549 ld_shlibs_GCJ=yes
17550 if test "$with_gnu_ld" = yes; then
17551 # If archive_cmds runs LD, not CC, wlarc should be empty
17552 wlarc='${wl}'
17553
17554 # Set some defaults for GNU ld with shared library support. These
17555 # are reset later if shared libraries are not supported. Putting them
17556 # here allows them to be overridden if necessary.
17557 runpath_var=LD_RUN_PATH
17558 hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir'
17559 export_dynamic_flag_spec_GCJ='${wl}--export-dynamic'
17560 # ancient GNU ld didn't support --whole-archive et. al.
17561 if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
17562 whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
17563 else
17564 whole_archive_flag_spec_GCJ=
17565 fi
17566 supports_anon_versioning=no
17567 case `$LD -v 2>/dev/null` in
17568 *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
17569 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
17570 *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
17571 *\ 2.11.*) ;; # other 2.11 versions
17572 *) supports_anon_versioning=yes ;;
17573 esac
17574
17575 # See if GNU ld supports shared libraries.
17576 case $host_os in
17577 aix3* | aix4* | aix5*)
17578 # On AIX/PPC, the GNU linker is very broken
17579 if test "$host_cpu" != ia64; then
17580 ld_shlibs_GCJ=no
17581 cat <<EOF 1>&2
17582
17583 *** Warning: the GNU linker, at least up to release 2.9.1, is reported
17584 *** to be unable to reliably create shared libraries on AIX.
17585 *** Therefore, libtool is disabling shared libraries support. If you
17586 *** really care for shared libraries, you may want to modify your PATH
17587 *** so that a non-GNU linker is found, and then restart.
17588
17589 EOF
17590 fi
17591 ;;
17592
17593 amigaos*)
17594 archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
17595 hardcode_libdir_flag_spec_GCJ='-L$libdir'
17596 hardcode_minus_L_GCJ=yes
17597
17598 # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
17599 # that the semantics of dynamic libraries on AmigaOS, at least up
17600 # to version 4, is to share data among multiple programs linked
17601 # with the same dynamic library. Since this doesn't match the
17602 # behavior of shared libraries on other platforms, we can't use
17603 # them.
17604 ld_shlibs_GCJ=no
17605 ;;
17606
17607 beos*)
17608 if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
17609 allow_undefined_flag_GCJ=unsupported
17610 # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
17611 # support --undefined. This deserves some investigation. FIXME
17612 archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
17613 else
17614 ld_shlibs_GCJ=no
17615 fi
17616 ;;
17617
17618 cygwin* | mingw* | pw32*)
17619 # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless,
17620 # as there is no search path for DLLs.
17621 hardcode_libdir_flag_spec_GCJ='-L$libdir'
17622 allow_undefined_flag_GCJ=unsupported
17623 always_export_symbols_GCJ=no
17624 enable_shared_with_static_runtimes_GCJ=yes
17625 export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
17626
17627 if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
17628 archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
17629 # If the export-symbols file already is a .def file (1st line
17630 # is EXPORTS), use it as is; otherwise, prepend...
17631 archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
17632 cp $export_symbols $output_objdir/$soname.def;
17633 else
17634 echo EXPORTS > $output_objdir/$soname.def;
17635 cat $export_symbols >> $output_objdir/$soname.def;
17636 fi~
17637 $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
17638 else
17639 ld_shlibs_GCJ=no
17640 fi
17641 ;;
17642
17643 interix3*)
17644 hardcode_direct_GCJ=no
17645 hardcode_shlibpath_var_GCJ=no
17646 hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
17647 export_dynamic_flag_spec_GCJ='${wl}-E'
17648 # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
17649 # Instead, shared libraries are loaded at an image base (0x10000000 by
17650 # default) and relocated if they conflict, which is a slow very memory
17651 # consuming and fragmenting process. To avoid this, we pick a random,
17652 # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
17653 # time. Moving up from 0x10000000 also allows more sbrk(2) space.
17654 archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
17655 archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
17656 ;;
17657
17658 linux* | k*bsd*-gnu)
17659 if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
17660 tmp_addflag=
17661 case $cc_basename,$host_cpu in
17662 pgcc*) # Portland Group C compiler
17663 whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
17664 tmp_addflag=' $pic_flag'
17665 ;;
17666 pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
17667 whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
17668 tmp_addflag=' $pic_flag -Mnomain' ;;
17669 ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
17670 tmp_addflag=' -i_dynamic' ;;
17671 efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
17672 tmp_addflag=' -i_dynamic -nofor_main' ;;
17673 ifc* | ifort*) # Intel Fortran compiler
17674 tmp_addflag=' -nofor_main' ;;
17675 esac
17676 archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
17677
17678 if test $supports_anon_versioning = yes; then
17679 archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~
17680 cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
17681 $echo "local: *; };" >> $output_objdir/$libname.ver~
17682 $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
17683 fi
17684 link_all_deplibs_GCJ=no
17685 else
17686 ld_shlibs_GCJ=no
17687 fi
17688 ;;
17689
17690 netbsd* | netbsdelf*-gnu)
17691 if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
17692 archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
17693 wlarc=
17694 else
17695 archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
17696 archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
17697 fi
17698 ;;
17699
17700 solaris*)
17701 if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
17702 ld_shlibs_GCJ=no
17703 cat <<EOF 1>&2
17704
17705 *** Warning: The releases 2.8.* of the GNU linker cannot reliably
17706 *** create shared libraries on Solaris systems. Therefore, libtool
17707 *** is disabling shared libraries support. We urge you to upgrade GNU
17708 *** binutils to release 2.9.1 or newer. Another option is to modify
17709 *** your PATH or compiler configuration so that the native linker is
17710 *** used, and then restart.
17711
17712 EOF
17713 elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
17714 archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
17715 archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
17716 else
17717 ld_shlibs_GCJ=no
17718 fi
17719 ;;
17720
17721 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
17722 case `$LD -v 2>&1` in
17723 *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
17724 ld_shlibs_GCJ=no
17725 cat <<_LT_EOF 1>&2
17726
17727 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
17728 *** reliably create shared libraries on SCO systems. Therefore, libtool
17729 *** is disabling shared libraries support. We urge you to upgrade GNU
17730 *** binutils to release 2.16.91.0.3 or newer. Another option is to modify
17731 *** your PATH or compiler configuration so that the native linker is
17732 *** used, and then restart.
17733
17734 _LT_EOF
17735 ;;
17736 *)
17737 if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
17738 hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
17739 archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
17740 archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
17741 else
17742 ld_shlibs_GCJ=no
17743 fi
17744 ;;
17745 esac
17746 ;;
17747
17748 sunos4*)
17749 archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
17750 wlarc=
17751 hardcode_direct_GCJ=yes
17752 hardcode_shlibpath_var_GCJ=no
17753 ;;
17754
17755 *)
17756 if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
17757 archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
17758 archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
17759 else
17760 ld_shlibs_GCJ=no
17761 fi
17762 ;;
17763 esac
17764
17765 if test "$ld_shlibs_GCJ" = no; then
17766 runpath_var=
17767 hardcode_libdir_flag_spec_GCJ=
17768 export_dynamic_flag_spec_GCJ=
17769 whole_archive_flag_spec_GCJ=
17770 fi
17771 else
17772 # PORTME fill in a description of your system's linker (not GNU ld)
17773 case $host_os in
17774 aix3*)
17775 allow_undefined_flag_GCJ=unsupported
17776 always_export_symbols_GCJ=yes
17777 archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
17778 # Note: this linker hardcodes the directories in LIBPATH if there
17779 # are no directories specified by -L.
17780 hardcode_minus_L_GCJ=yes
17781 if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
17782 # Neither direct hardcoding nor static linking is supported with a
17783 # broken collect2.
17784 hardcode_direct_GCJ=unsupported
17785 fi
17786 ;;
17787
17788 aix4* | aix5*)
17789 if test "$host_cpu" = ia64; then
17790 # On IA64, the linker does run time linking by default, so we don't
17791 # have to do anything special.
17792 aix_use_runtimelinking=no
17793 exp_sym_flag='-Bexport'
17794 no_entry_flag=""
17795 else
17796 # If we're using GNU nm, then we don't want the "-C" option.
17797 # -C means demangle to AIX nm, but means don't demangle with GNU nm
17798 if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
17799 export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
17800 else
17801 export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
17802 fi
17803 aix_use_runtimelinking=no
17804
17805 # Test if we are trying to use run time linking or normal
17806 # AIX style linking. If -brtl is somewhere in LDFLAGS, we
17807 # need to do runtime linking.
17808 case $host_os in aix4.[23]|aix4.[23].*|aix5*)
17809 for ld_flag in $LDFLAGS; do
17810 if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
17811 aix_use_runtimelinking=yes
17812 break
17813 fi
17814 done
17815 ;;
17816 esac
17817
17818 exp_sym_flag='-bexport'
17819 no_entry_flag='-bnoentry'
17820 fi
17821
17822 # When large executables or shared objects are built, AIX ld can
17823 # have problems creating the table of contents. If linking a library
17824 # or program results in "error TOC overflow" add -mminimal-toc to
17825 # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
17826 # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
17827
17828 archive_cmds_GCJ=''
17829 hardcode_direct_GCJ=yes
17830 hardcode_libdir_separator_GCJ=':'
17831 link_all_deplibs_GCJ=yes
17832
17833 if test "$GCC" = yes; then
17834 case $host_os in aix4.[012]|aix4.[012].*)
17835 # We only want to do this on AIX 4.2 and lower, the check
17836 # below for broken collect2 doesn't work under 4.3+
17837 collect2name=`${CC} -print-prog-name=collect2`
17838 if test -f "$collect2name" && \
17839 strings "$collect2name" | grep resolve_lib_name >/dev/null
17840 then
17841 # We have reworked collect2
17842 hardcode_direct_GCJ=yes
17843 else
17844 # We have old collect2
17845 hardcode_direct_GCJ=unsupported
17846 # It fails to find uninstalled libraries when the uninstalled
17847 # path is not listed in the libpath. Setting hardcode_minus_L
17848 # to unsupported forces relinking
17849 hardcode_minus_L_GCJ=yes
17850 hardcode_libdir_flag_spec_GCJ='-L$libdir'
17851 hardcode_libdir_separator_GCJ=
17852 fi
17853 ;;
17854 esac
17855 shared_flag='-shared'
17856 if test "$aix_use_runtimelinking" = yes; then
17857 shared_flag="$shared_flag "'${wl}-G'
17858 fi
17859 else
17860 # not using gcc
17861 if test "$host_cpu" = ia64; then
17862 # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
17863 # chokes on -Wl,-G. The following line is correct:
17864 shared_flag='-G'
17865 else
17866 if test "$aix_use_runtimelinking" = yes; then
17867 shared_flag='${wl}-G'
17868 else
17869 shared_flag='${wl}-bM:SRE'
17870 fi
17871 fi
17872 fi
17873
17874 # It seems that -bexpall does not export symbols beginning with
17875 # underscore (_), so it is better to generate a list of symbols to export.
17876 always_export_symbols_GCJ=yes
17877 if test "$aix_use_runtimelinking" = yes; then
17878 # Warning - without using the other runtime loading flags (-brtl),
17879 # -berok will link without error, but may produce a broken library.
17880 allow_undefined_flag_GCJ='-berok'
17881 # Determine the default libpath from the value encoded in an empty executable.
17882 cat >conftest.$ac_ext <<_ACEOF
17883 /* confdefs.h. */
17884 _ACEOF
17885 cat confdefs.h >>conftest.$ac_ext
17886 cat >>conftest.$ac_ext <<_ACEOF
17887 /* end confdefs.h. */
17888
17889 int
17890 main ()
17891 {
17892
17893 ;
17894 return 0;
17895 }
17896 _ACEOF
17897 rm -f conftest.$ac_objext conftest$ac_exeext
17898 if { (ac_try="$ac_link"
17899 case "(($ac_try" in
17900 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
17901 *) ac_try_echo=$ac_try;;
17902 esac
17903 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
17904 (eval "$ac_link") 2>conftest.er1
17905 ac_status=$?
17906 grep -v '^ *+' conftest.er1 >conftest.err
17907 rm -f conftest.er1
17908 cat conftest.err >&5
17909 echo "$as_me:$LINENO: \$? = $ac_status" >&5
17910 (exit $ac_status); } && {
17911 test -z "$ac_c_werror_flag" ||
17912 test ! -s conftest.err
17913 } && test -s conftest$ac_exeext &&
17914 $as_test_x conftest$ac_exeext; then
17915
17916 aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
17917 }'`
17918 # Check for a 64-bit object if we didn't find anything.
17919 if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
17920 }'`; fi
17921 else
17922 echo "$as_me: failed program was:" >&5
17923 sed 's/^/| /' conftest.$ac_ext >&5
17924
17925
17926 fi
17927
17928 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
17929 conftest$ac_exeext conftest.$ac_ext
17930 if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
17931
17932 hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
17933 archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
17934 else
17935 if test "$host_cpu" = ia64; then
17936 hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib'
17937 allow_undefined_flag_GCJ="-z nodefs"
17938 archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
17939 else
17940 # Determine the default libpath from the value encoded in an empty executable.
17941 cat >conftest.$ac_ext <<_ACEOF
17942 /* confdefs.h. */
17943 _ACEOF
17944 cat confdefs.h >>conftest.$ac_ext
17945 cat >>conftest.$ac_ext <<_ACEOF
17946 /* end confdefs.h. */
17947
17948 int
17949 main ()
17950 {
17951
17952 ;
17953 return 0;
17954 }
17955 _ACEOF
17956 rm -f conftest.$ac_objext conftest$ac_exeext
17957 if { (ac_try="$ac_link"
17958 case "(($ac_try" in
17959 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
17960 *) ac_try_echo=$ac_try;;
17961 esac
17962 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
17963 (eval "$ac_link") 2>conftest.er1
17964 ac_status=$?
17965 grep -v '^ *+' conftest.er1 >conftest.err
17966 rm -f conftest.er1
17967 cat conftest.err >&5
17968 echo "$as_me:$LINENO: \$? = $ac_status" >&5
17969 (exit $ac_status); } && {
17970 test -z "$ac_c_werror_flag" ||
17971 test ! -s conftest.err
17972 } && test -s conftest$ac_exeext &&
17973 $as_test_x conftest$ac_exeext; then
17974
17975 aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
17976 }'`
17977 # Check for a 64-bit object if we didn't find anything.
17978 if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
17979 }'`; fi
17980 else
17981 echo "$as_me: failed program was:" >&5
17982 sed 's/^/| /' conftest.$ac_ext >&5
17983
17984
17985 fi
17986
17987 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
17988 conftest$ac_exeext conftest.$ac_ext
17989 if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
17990
17991 hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
17992 # Warning - without using the other run time loading flags,
17993 # -berok will link without error, but may produce a broken library.
17994 no_undefined_flag_GCJ=' ${wl}-bernotok'
17995 allow_undefined_flag_GCJ=' ${wl}-berok'
17996 # Exported symbols can be pulled into shared objects from archives
17997 whole_archive_flag_spec_GCJ='$convenience'
17998 archive_cmds_need_lc_GCJ=yes
17999 # This is similar to how AIX traditionally builds its shared libraries.
18000 archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
18001 fi
18002 fi
18003 ;;
18004
18005 amigaos*)
18006 archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
18007 hardcode_libdir_flag_spec_GCJ='-L$libdir'
18008 hardcode_minus_L_GCJ=yes
18009 # see comment about different semantics on the GNU ld section
18010 ld_shlibs_GCJ=no
18011 ;;
18012
18013 bsdi[45]*)
18014 export_dynamic_flag_spec_GCJ=-rdynamic
18015 ;;
18016
18017 cygwin* | mingw* | pw32*)
18018 # When not using gcc, we currently assume that we are using
18019 # Microsoft Visual C++.
18020 # hardcode_libdir_flag_spec is actually meaningless, as there is
18021 # no search path for DLLs.
18022 hardcode_libdir_flag_spec_GCJ=' '
18023 allow_undefined_flag_GCJ=unsupported
18024 # Tell ltmain to make .lib files, not .a files.
18025 libext=lib
18026 # Tell ltmain to make .dll files, not .so files.
18027 shrext_cmds=".dll"
18028 # FIXME: Setting linknames here is a bad hack.
18029 archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
18030 # The linker will automatically build a .lib file if we build a DLL.
18031 old_archive_From_new_cmds_GCJ='true'
18032 # FIXME: Should let the user specify the lib program.
18033 old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs'
18034 fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`'
18035 enable_shared_with_static_runtimes_GCJ=yes
18036 ;;
18037
18038 darwin* | rhapsody*)
18039 case $host_os in
18040 rhapsody* | darwin1.[012])
18041 allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress'
18042 ;;
18043 *) # Darwin 1.3 on
18044 if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
18045 allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
18046 else
18047 case ${MACOSX_DEPLOYMENT_TARGET} in
18048 10.[012])
18049 allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
18050 ;;
18051 10.*)
18052 allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup'
18053 ;;
18054 esac
18055 fi
18056 ;;
18057 esac
18058 archive_cmds_need_lc_GCJ=no
18059 hardcode_direct_GCJ=no
18060 hardcode_automatic_GCJ=yes
18061 hardcode_shlibpath_var_GCJ=unsupported
18062 whole_archive_flag_spec_GCJ=''
18063 link_all_deplibs_GCJ=yes
18064 if test "$GCC" = yes ; then
18065 output_verbose_link_cmd='echo'
18066 archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
18067 module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
18068 # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
18069 archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
18070 module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
18071 else
18072 case $cc_basename in
18073 xlc*)
18074 output_verbose_link_cmd='echo'
18075 archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
18076 module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
18077 # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
18078 archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
18079 module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
18080 ;;
18081 *)
18082 ld_shlibs_GCJ=no
18083 ;;
18084 esac
18085 fi
18086 ;;
18087
18088 dgux*)
18089 archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
18090 hardcode_libdir_flag_spec_GCJ='-L$libdir'
18091 hardcode_shlibpath_var_GCJ=no
18092 ;;
18093
18094 freebsd1*)
18095 ld_shlibs_GCJ=no
18096 ;;
18097
18098 # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
18099 # support. Future versions do this automatically, but an explicit c++rt0.o
18100 # does not break anything, and helps significantly (at the cost of a little
18101 # extra space).
18102 freebsd2.2*)
18103 archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
18104 hardcode_libdir_flag_spec_GCJ='-R$libdir'
18105 hardcode_direct_GCJ=yes
18106 hardcode_shlibpath_var_GCJ=no
18107 ;;
18108
18109 # Unfortunately, older versions of FreeBSD 2 do not have this feature.
18110 freebsd2*)
18111 archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
18112 hardcode_direct_GCJ=yes
18113 hardcode_minus_L_GCJ=yes
18114 hardcode_shlibpath_var_GCJ=no
18115 ;;
18116
18117 # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
18118 freebsd* | dragonfly*)
18119 archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
18120 hardcode_libdir_flag_spec_GCJ='-R$libdir'
18121 hardcode_direct_GCJ=yes
18122 hardcode_shlibpath_var_GCJ=no
18123 ;;
18124
18125 hpux9*)
18126 if test "$GCC" = yes; then
18127 archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
18128 else
18129 archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
18130 fi
18131 hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
18132 hardcode_libdir_separator_GCJ=:
18133 hardcode_direct_GCJ=yes
18134
18135 # hardcode_minus_L: Not really in the search PATH,
18136 # but as the default location of the library.
18137 hardcode_minus_L_GCJ=yes
18138 export_dynamic_flag_spec_GCJ='${wl}-E'
18139 ;;
18140
18141 hpux10*)
18142 if test "$GCC" = yes -a "$with_gnu_ld" = no; then
18143 archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
18144 else
18145 archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
18146 fi
18147 if test "$with_gnu_ld" = no; then
18148 hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
18149 hardcode_libdir_separator_GCJ=:
18150
18151 hardcode_direct_GCJ=yes
18152 export_dynamic_flag_spec_GCJ='${wl}-E'
18153
18154 # hardcode_minus_L: Not really in the search PATH,
18155 # but as the default location of the library.
18156 hardcode_minus_L_GCJ=yes
18157 fi
18158 ;;
18159
18160 hpux11*)
18161 if test "$GCC" = yes -a "$with_gnu_ld" = no; then
18162 case $host_cpu in
18163 hppa*64*)
18164 archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
18165 ;;
18166 ia64*)
18167 archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
18168 ;;
18169 *)
18170 archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
18171 ;;
18172 esac
18173 else
18174 case $host_cpu in
18175 hppa*64*)
18176 archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
18177 ;;
18178 ia64*)
18179 archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
18180 ;;
18181 *)
18182 archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
18183 ;;
18184 esac
18185 fi
18186 if test "$with_gnu_ld" = no; then
18187 hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
18188 hardcode_libdir_separator_GCJ=:
18189
18190 case $host_cpu in
18191 hppa*64*|ia64*)
18192 hardcode_libdir_flag_spec_ld_GCJ='+b $libdir'
18193 hardcode_direct_GCJ=no
18194 hardcode_shlibpath_var_GCJ=no
18195 ;;
18196 *)
18197 hardcode_direct_GCJ=yes
18198 export_dynamic_flag_spec_GCJ='${wl}-E'
18199
18200 # hardcode_minus_L: Not really in the search PATH,
18201 # but as the default location of the library.
18202 hardcode_minus_L_GCJ=yes
18203 ;;
18204 esac
18205 fi
18206 ;;
18207
18208 irix5* | irix6* | nonstopux*)
18209 if test "$GCC" = yes; then
18210 archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
18211 else
18212 archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
18213 hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir'
18214 fi
18215 hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
18216 hardcode_libdir_separator_GCJ=:
18217 link_all_deplibs_GCJ=yes
18218 ;;
18219
18220 netbsd* | netbsdelf*-gnu)
18221 if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
18222 archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
18223 else
18224 archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
18225 fi
18226 hardcode_libdir_flag_spec_GCJ='-R$libdir'
18227 hardcode_direct_GCJ=yes
18228 hardcode_shlibpath_var_GCJ=no
18229 ;;
18230
18231 newsos6)
18232 archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
18233 hardcode_direct_GCJ=yes
18234 hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
18235 hardcode_libdir_separator_GCJ=:
18236 hardcode_shlibpath_var_GCJ=no
18237 ;;
18238
18239 openbsd*)
18240 hardcode_direct_GCJ=yes
18241 hardcode_shlibpath_var_GCJ=no
18242 if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
18243 archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
18244 archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
18245 hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
18246 export_dynamic_flag_spec_GCJ='${wl}-E'
18247 else
18248 case $host_os in
18249 openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
18250 archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
18251 hardcode_libdir_flag_spec_GCJ='-R$libdir'
18252 ;;
18253 *)
18254 archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
18255 hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
18256 ;;
18257 esac
18258 fi
18259 ;;
18260
18261 os2*)
18262 hardcode_libdir_flag_spec_GCJ='-L$libdir'
18263 hardcode_minus_L_GCJ=yes
18264 allow_undefined_flag_GCJ=unsupported
18265 archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
18266 old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
18267 ;;
18268
18269 osf3*)
18270 if test "$GCC" = yes; then
18271 allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
18272 archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
18273 else
18274 allow_undefined_flag_GCJ=' -expect_unresolved \*'
18275 archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
18276 fi
18277 hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
18278 hardcode_libdir_separator_GCJ=:
18279 ;;
18280
18281 osf4* | osf5*) # as osf3* with the addition of -msym flag
18282 if test "$GCC" = yes; then
18283 allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
18284 archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
18285 hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
18286 else
18287 allow_undefined_flag_GCJ=' -expect_unresolved \*'
18288 archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
18289 archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
18290 $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
18291
18292 # Both c and cxx compiler support -rpath directly
18293 hardcode_libdir_flag_spec_GCJ='-rpath $libdir'
18294 fi
18295 hardcode_libdir_separator_GCJ=:
18296 ;;
18297
18298 solaris*)
18299 no_undefined_flag_GCJ=' -z text'
18300 if test "$GCC" = yes; then
18301 wlarc='${wl}'
18302 archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
18303 archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
18304 $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
18305 else
18306 wlarc=''
18307 archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
18308 archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
18309 $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
18310 fi
18311 hardcode_libdir_flag_spec_GCJ='-R$libdir'
18312 hardcode_shlibpath_var_GCJ=no
18313 case $host_os in
18314 solaris2.[0-5] | solaris2.[0-5].*) ;;
18315 *)
18316 # The compiler driver will combine linker options so we
18317 # cannot just pass the convience library names through
18318 # without $wl, iff we do not link with $LD.
18319 # Luckily, gcc supports the same syntax we need for Sun Studio.
18320 # Supported since Solaris 2.6 (maybe 2.5.1?)
18321 case $wlarc in
18322 '')
18323 whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;;
18324 *)
18325 whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
18326 esac ;;
18327 esac
18328 link_all_deplibs_GCJ=yes
18329 ;;
18330
18331 sunos4*)
18332 if test "x$host_vendor" = xsequent; then
18333 # Use $CC to link under sequent, because it throws in some extra .o
18334 # files that make .init and .fini sections work.
18335 archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
18336 else
18337 archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
18338 fi
18339 hardcode_libdir_flag_spec_GCJ='-L$libdir'
18340 hardcode_direct_GCJ=yes
18341 hardcode_minus_L_GCJ=yes
18342 hardcode_shlibpath_var_GCJ=no
18343 ;;
18344
18345 sysv4)
18346 case $host_vendor in
18347 sni)
18348 archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
18349 hardcode_direct_GCJ=yes # is this really true???
18350 ;;
18351 siemens)
18352 ## LD is ld it makes a PLAMLIB
18353 ## CC just makes a GrossModule.
18354 archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
18355 reload_cmds_GCJ='$CC -r -o $output$reload_objs'
18356 hardcode_direct_GCJ=no
18357 ;;
18358 motorola)
18359 archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
18360 hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie
18361 ;;
18362 esac
18363 runpath_var='LD_RUN_PATH'
18364 hardcode_shlibpath_var_GCJ=no
18365 ;;
18366
18367 sysv4.3*)
18368 archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
18369 hardcode_shlibpath_var_GCJ=no
18370 export_dynamic_flag_spec_GCJ='-Bexport'
18371 ;;
18372
18373 sysv4*MP*)
18374 if test -d /usr/nec; then
18375 archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
18376 hardcode_shlibpath_var_GCJ=no
18377 runpath_var=LD_RUN_PATH
18378 hardcode_runpath_var=yes
18379 ld_shlibs_GCJ=yes
18380 fi
18381 ;;
18382
18383 sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
18384 no_undefined_flag_GCJ='${wl}-z,text'
18385 archive_cmds_need_lc_GCJ=no
18386 hardcode_shlibpath_var_GCJ=no
18387 runpath_var='LD_RUN_PATH'
18388
18389 if test "$GCC" = yes; then
18390 archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
18391 archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
18392 else
18393 archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
18394 archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
18395 fi
18396 ;;
18397
18398 sysv5* | sco3.2v5* | sco5v6*)
18399 # Note: We can NOT use -z defs as we might desire, because we do not
18400 # link with -lc, and that would cause any symbols used from libc to
18401 # always be unresolved, which means just about no library would
18402 # ever link correctly. If we're not using GNU ld we use -z text
18403 # though, which does catch some bad symbols but isn't as heavy-handed
18404 # as -z defs.
18405 no_undefined_flag_GCJ='${wl}-z,text'
18406 allow_undefined_flag_GCJ='${wl}-z,nodefs'
18407 archive_cmds_need_lc_GCJ=no
18408 hardcode_shlibpath_var_GCJ=no
18409 hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
18410 hardcode_libdir_separator_GCJ=':'
18411 link_all_deplibs_GCJ=yes
18412 export_dynamic_flag_spec_GCJ='${wl}-Bexport'
18413 runpath_var='LD_RUN_PATH'
18414
18415 if test "$GCC" = yes; then
18416 archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
18417 archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
18418 else
18419 archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
18420 archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
18421 fi
18422 ;;
18423
18424 uts4*)
18425 archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
18426 hardcode_libdir_flag_spec_GCJ='-L$libdir'
18427 hardcode_shlibpath_var_GCJ=no
18428 ;;
18429
18430 *)
18431 ld_shlibs_GCJ=no
18432 ;;
18433 esac
18434 fi
18435
18436 { echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5
18437 echo "${ECHO_T}$ld_shlibs_GCJ" >&6; }
18438 test "$ld_shlibs_GCJ" = no && can_build_shared=no
18439
18440 #
18441 # Do we need to explicitly link libc?
18442 #
18443 case "x$archive_cmds_need_lc_GCJ" in
18444 x|xyes)
18445 # Assume -lc should be added
18446 archive_cmds_need_lc_GCJ=yes
18447
18448 if test "$enable_shared" = yes && test "$GCC" = yes; then
18449 case $archive_cmds_GCJ in
18450 *'~'*)
18451 # FIXME: we may have to deal with multi-command sequences.
18452 ;;
18453 '$CC '*)
18454 # Test whether the compiler implicitly links with -lc since on some
18455 # systems, -lgcc has to come before -lc. If gcc already passes -lc
18456 # to ld, don't add -lc before -lgcc.
18457 { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
18458 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
18459 $rm conftest*
18460 printf "$lt_simple_compile_test_code" > conftest.$ac_ext
18461
18462 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
18463 (eval $ac_compile) 2>&5
18464 ac_status=$?
18465 echo "$as_me:$LINENO: \$? = $ac_status" >&5
18466 (exit $ac_status); } 2>conftest.err; then
18467 soname=conftest
18468 lib=conftest
18469 libobjs=conftest.$ac_objext
18470 deplibs=
18471 wl=$lt_prog_compiler_wl_GCJ
18472 pic_flag=$lt_prog_compiler_pic_GCJ
18473 compiler_flags=-v
18474 linker_flags=-v
18475 verstring=
18476 output_objdir=.
18477 libname=conftest
18478 lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ
18479 allow_undefined_flag_GCJ=
18480 if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
18481 (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
18482 ac_status=$?
18483 echo "$as_me:$LINENO: \$? = $ac_status" >&5
18484 (exit $ac_status); }
18485 then
18486 archive_cmds_need_lc_GCJ=no
18487 else
18488 archive_cmds_need_lc_GCJ=yes
18489 fi
18490 allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag
18491 else
18492 cat conftest.err 1>&5
18493 fi
18494 $rm conftest*
18495 { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5
18496 echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6; }
18497 ;;
18498 esac
18499 fi
18500 ;;
18501 esac
18502
18503 { echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
18504 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
18505 library_names_spec=
18506 libname_spec='lib$name'
18507 soname_spec=
18508 shrext_cmds=".so"
18509 postinstall_cmds=
18510 postuninstall_cmds=
18511 finish_cmds=
18512 finish_eval=
18513 shlibpath_var=
18514 shlibpath_overrides_runpath=unknown
18515 version_type=none
18516 dynamic_linker="$host_os ld.so"
18517 sys_lib_dlsearch_path_spec="/lib /usr/lib"
18518 if test "$GCC" = yes; then
18519 sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
18520 if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
18521 # if the path contains ";" then we assume it to be the separator
18522 # otherwise default to the standard path separator (i.e. ":") - it is
18523 # assumed that no part of a normal pathname contains ";" but that should
18524 # okay in the real world where ";" in dirpaths is itself problematic.
18525 sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
18526 else
18527 sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
18528 fi
18529 else
18530 sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
18531 fi
18532 need_lib_prefix=unknown
18533 hardcode_into_libs=no
18534
18535 # when you set need_version to no, make sure it does not cause -set_version
18536 # flags to be left without arguments
18537 need_version=unknown
18538
18539 case $host_os in
18540 aix3*)
18541 version_type=linux
18542 library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
18543 shlibpath_var=LIBPATH
18544
18545 # AIX 3 has no versioning support, so we append a major version to the name.
18546 soname_spec='${libname}${release}${shared_ext}$major'
18547 ;;
18548
18549 aix4* | aix5*)
18550 version_type=linux
18551 need_lib_prefix=no
18552 need_version=no
18553 hardcode_into_libs=yes
18554 if test "$host_cpu" = ia64; then
18555 # AIX 5 supports IA64
18556 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
18557 shlibpath_var=LD_LIBRARY_PATH
18558 else
18559 # With GCC up to 2.95.x, collect2 would create an import file
18560 # for dependence libraries. The import file would start with
18561 # the line `#! .'. This would cause the generated library to
18562 # depend on `.', always an invalid library. This was fixed in
18563 # development snapshots of GCC prior to 3.0.
18564 case $host_os in
18565 aix4 | aix4.[01] | aix4.[01].*)
18566 if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
18567 echo ' yes '
18568 echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
18569 :
18570 else
18571 can_build_shared=no
18572 fi
18573 ;;
18574 esac
18575 # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
18576 # soname into executable. Probably we can add versioning support to
18577 # collect2, so additional links can be useful in future.
18578 if test "$aix_use_runtimelinking" = yes; then
18579 # If using run time linking (on AIX 4.2 or later) use lib<name>.so
18580 # instead of lib<name>.a to let people know that these are not
18581 # typical AIX shared libraries.
18582 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
18583 else
18584 # We preserve .a as extension for shared libraries through AIX4.2
18585 # and later when we are not doing run time linking.
18586 library_names_spec='${libname}${release}.a $libname.a'
18587 soname_spec='${libname}${release}${shared_ext}$major'
18588 fi
18589 shlibpath_var=LIBPATH
18590 fi
18591 ;;
18592
18593 amigaos*)
18594 library_names_spec='$libname.ixlibrary $libname.a'
18595 # Create ${libname}_ixlibrary.a entries in /sys/libs.
18596 finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
18597 ;;
18598
18599 beos*)
18600 library_names_spec='${libname}${shared_ext}'
18601 dynamic_linker="$host_os ld.so"
18602 shlibpath_var=LIBRARY_PATH
18603 ;;
18604
18605 bsdi[45]*)
18606 version_type=linux
18607 need_version=no
18608 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
18609 soname_spec='${libname}${release}${shared_ext}$major'
18610 finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
18611 shlibpath_var=LD_LIBRARY_PATH
18612 sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
18613 sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
18614 # the default ld.so.conf also contains /usr/contrib/lib and
18615 # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
18616 # libtool to hard-code these into programs
18617 ;;
18618
18619 cygwin* | mingw* | pw32*)
18620 version_type=windows
18621 shrext_cmds=".dll"
18622 need_version=no
18623 need_lib_prefix=no
18624
18625 case $GCC,$host_os in
18626 yes,cygwin* | yes,mingw* | yes,pw32*)
18627 library_names_spec='$libname.dll.a'
18628 # DLL is installed to $(libdir)/../bin by postinstall_cmds
18629 postinstall_cmds='base_file=`basename \${file}`~
18630 dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
18631 dldir=$destdir/`dirname \$dlpath`~
18632 test -d \$dldir || mkdir -p \$dldir~
18633 $install_prog $dir/$dlname \$dldir/$dlname~
18634 chmod a+x \$dldir/$dlname'
18635 postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
18636 dlpath=$dir/\$dldll~
18637 $rm \$dlpath'
18638 shlibpath_overrides_runpath=yes
18639
18640 case $host_os in
18641 cygwin*)
18642 # Cygwin DLLs use 'cyg' prefix rather than 'lib'
18643 soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
18644 sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
18645 ;;
18646 mingw*)
18647 # MinGW DLLs use traditional 'lib' prefix
18648 soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
18649 sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
18650 if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
18651 # It is most probably a Windows format PATH printed by
18652 # mingw gcc, but we are running on Cygwin. Gcc prints its search
18653 # path with ; separators, and with drive letters. We can handle the
18654 # drive letters (cygwin fileutils understands them), so leave them,
18655 # especially as we might pass files found there to a mingw objdump,
18656 # which wouldn't understand a cygwinified path. Ahh.
18657 sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
18658 else
18659 sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
18660 fi
18661 ;;
18662 pw32*)
18663 # pw32 DLLs use 'pw' prefix rather than 'lib'
18664 library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
18665 ;;
18666 esac
18667 ;;
18668
18669 *)
18670 library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
18671 ;;
18672 esac
18673 dynamic_linker='Win32 ld.exe'
18674 # FIXME: first we should search . and the directory the executable is in
18675 shlibpath_var=PATH
18676 ;;
18677
18678 darwin* | rhapsody*)
18679 dynamic_linker="$host_os dyld"
18680 version_type=darwin
18681 need_lib_prefix=no
18682 need_version=no
18683 library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
18684 soname_spec='${libname}${release}${major}$shared_ext'
18685 shlibpath_overrides_runpath=yes
18686 shlibpath_var=DYLD_LIBRARY_PATH
18687 shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
18688 # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
18689 if test "$GCC" = yes; then
18690 sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
18691 else
18692 sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
18693 fi
18694 sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
18695 ;;
18696
18697 dgux*)
18698 version_type=linux
18699 need_lib_prefix=no
18700 need_version=no
18701 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
18702 soname_spec='${libname}${release}${shared_ext}$major'
18703 shlibpath_var=LD_LIBRARY_PATH
18704 ;;
18705
18706 freebsd1*)
18707 dynamic_linker=no
18708 ;;
18709
18710 freebsd* | dragonfly*)
18711 # DragonFly does not have aout. When/if they implement a new
18712 # versioning mechanism, adjust this.
18713 if test -x /usr/bin/objformat; then
18714 objformat=`/usr/bin/objformat`
18715 else
18716 case $host_os in
18717 freebsd[123]*) objformat=aout ;;
18718 *) objformat=elf ;;
18719 esac
18720 fi
18721 version_type=freebsd-$objformat
18722 case $version_type in
18723 freebsd-elf*)
18724 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
18725 need_version=no
18726 need_lib_prefix=no
18727 ;;
18728 freebsd-*)
18729 library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
18730 need_version=yes
18731 ;;
18732 esac
18733 shlibpath_var=LD_LIBRARY_PATH
18734 case $host_os in
18735 freebsd2*)
18736 shlibpath_overrides_runpath=yes
18737 ;;
18738 freebsd3.[01]* | freebsdelf3.[01]*)
18739 shlibpath_overrides_runpath=yes
18740 hardcode_into_libs=yes
18741 ;;
18742 freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
18743 freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
18744 shlibpath_overrides_runpath=no
18745 hardcode_into_libs=yes
18746 ;;
18747 freebsd*) # from 4.6 on
18748 shlibpath_overrides_runpath=yes
18749 hardcode_into_libs=yes
18750 ;;
18751 esac
18752 ;;
18753
18754 gnu*)
18755 version_type=linux
18756 need_lib_prefix=no
18757 need_version=no
18758 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
18759 soname_spec='${libname}${release}${shared_ext}$major'
18760 shlibpath_var=LD_LIBRARY_PATH
18761 hardcode_into_libs=yes
18762 ;;
18763
18764 hpux9* | hpux10* | hpux11*)
18765 # Give a soname corresponding to the major version so that dld.sl refuses to
18766 # link against other versions.
18767 version_type=sunos
18768 need_lib_prefix=no
18769 need_version=no
18770 case $host_cpu in
18771 ia64*)
18772 shrext_cmds='.so'
18773 hardcode_into_libs=yes
18774 dynamic_linker="$host_os dld.so"
18775 shlibpath_var=LD_LIBRARY_PATH
18776 shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
18777 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
18778 soname_spec='${libname}${release}${shared_ext}$major'
18779 if test "X$HPUX_IA64_MODE" = X32; then
18780 sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
18781 else
18782 sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
18783 fi
18784 sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
18785 ;;
18786 hppa*64*)
18787 shrext_cmds='.sl'
18788 hardcode_into_libs=yes
18789 dynamic_linker="$host_os dld.sl"
18790 shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
18791 shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
18792 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
18793 soname_spec='${libname}${release}${shared_ext}$major'
18794 sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
18795 sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
18796 ;;
18797 *)
18798 shrext_cmds='.sl'
18799 dynamic_linker="$host_os dld.sl"
18800 shlibpath_var=SHLIB_PATH
18801 shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
18802 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
18803 soname_spec='${libname}${release}${shared_ext}$major'
18804 ;;
18805 esac
18806 # HP-UX runs *really* slowly unless shared libraries are mode 555.
18807 postinstall_cmds='chmod 555 $lib'
18808 ;;
18809
18810 interix3*)
18811 version_type=linux
18812 need_lib_prefix=no
18813 need_version=no
18814 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
18815 soname_spec='${libname}${release}${shared_ext}$major'
18816 dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
18817 shlibpath_var=LD_LIBRARY_PATH
18818 shlibpath_overrides_runpath=no
18819 hardcode_into_libs=yes
18820 ;;
18821
18822 irix5* | irix6* | nonstopux*)
18823 case $host_os in
18824 nonstopux*) version_type=nonstopux ;;
18825 *)
18826 if test "$lt_cv_prog_gnu_ld" = yes; then
18827 version_type=linux
18828 else
18829 version_type=irix
18830 fi ;;
18831 esac
18832 need_lib_prefix=no
18833 need_version=no
18834 soname_spec='${libname}${release}${shared_ext}$major'
18835 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
18836 case $host_os in
18837 irix5* | nonstopux*)
18838 libsuff= shlibsuff=
18839 ;;
18840 *)
18841 case $LD in # libtool.m4 will add one of these switches to LD
18842 *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
18843 libsuff= shlibsuff= libmagic=32-bit;;
18844 *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
18845 libsuff=32 shlibsuff=N32 libmagic=N32;;
18846 *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
18847 libsuff=64 shlibsuff=64 libmagic=64-bit;;
18848 *) libsuff= shlibsuff= libmagic=never-match;;
18849 esac
18850 ;;
18851 esac
18852 shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
18853 shlibpath_overrides_runpath=no
18854 sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
18855 sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
18856 hardcode_into_libs=yes
18857 ;;
18858
18859 # No shared lib support for Linux oldld, aout, or coff.
18860 linux*oldld* | linux*aout* | linux*coff*)
18861 dynamic_linker=no
18862 ;;
18863
18864 # This must be Linux ELF.
18865 linux* | k*bsd*-gnu)
18866 version_type=linux
18867 need_lib_prefix=no
18868 need_version=no
18869 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
18870 soname_spec='${libname}${release}${shared_ext}$major'
18871 finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
18872 shlibpath_var=LD_LIBRARY_PATH
18873 shlibpath_overrides_runpath=no
18874 # This implies no fast_install, which is unacceptable.
18875 # Some rework will be needed to allow for fast_install
18876 # before this can be enabled.
18877 hardcode_into_libs=yes
18878
18879 # Append ld.so.conf contents to the search path
18880 if test -f /etc/ld.so.conf; then
18881 lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
18882 sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
18883 fi
18884
18885 # We used to test for /lib/ld.so.1 and disable shared libraries on
18886 # powerpc, because MkLinux only supported shared libraries with the
18887 # GNU dynamic linker. Since this was broken with cross compilers,
18888 # most powerpc-linux boxes support dynamic linking these days and
18889 # people can always --disable-shared, the test was removed, and we
18890 # assume the GNU/Linux dynamic linker is in use.
18891 dynamic_linker='GNU/Linux ld.so'
18892 ;;
18893
18894 netbsdelf*-gnu)
18895 version_type=linux
18896 need_lib_prefix=no
18897 need_version=no
18898 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
18899 soname_spec='${libname}${release}${shared_ext}$major'
18900 shlibpath_var=LD_LIBRARY_PATH
18901 shlibpath_overrides_runpath=no
18902 hardcode_into_libs=yes
18903 dynamic_linker='NetBSD ld.elf_so'
18904 ;;
18905
18906 netbsd*)
18907 version_type=sunos
18908 need_lib_prefix=no
18909 need_version=no
18910 if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
18911 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
18912 finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
18913 dynamic_linker='NetBSD (a.out) ld.so'
18914 else
18915 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
18916 soname_spec='${libname}${release}${shared_ext}$major'
18917 dynamic_linker='NetBSD ld.elf_so'
18918 fi
18919 shlibpath_var=LD_LIBRARY_PATH
18920 shlibpath_overrides_runpath=yes
18921 hardcode_into_libs=yes
18922 ;;
18923
18924 newsos6)
18925 version_type=linux
18926 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
18927 shlibpath_var=LD_LIBRARY_PATH
18928 shlibpath_overrides_runpath=yes
18929 ;;
18930
18931 nto-qnx*)
18932 version_type=linux
18933 need_lib_prefix=no
18934 need_version=no
18935 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
18936 soname_spec='${libname}${release}${shared_ext}$major'
18937 shlibpath_var=LD_LIBRARY_PATH
18938 shlibpath_overrides_runpath=yes
18939 ;;
18940
18941 openbsd*)
18942 version_type=sunos
18943 sys_lib_dlsearch_path_spec="/usr/lib"
18944 need_lib_prefix=no
18945 # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
18946 case $host_os in
18947 openbsd3.3 | openbsd3.3.*) need_version=yes ;;
18948 *) need_version=no ;;
18949 esac
18950 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
18951 finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
18952 shlibpath_var=LD_LIBRARY_PATH
18953 if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
18954 case $host_os in
18955 openbsd2.[89] | openbsd2.[89].*)
18956 shlibpath_overrides_runpath=no
18957 ;;
18958 *)
18959 shlibpath_overrides_runpath=yes
18960 ;;
18961 esac
18962 else
18963 shlibpath_overrides_runpath=yes
18964 fi
18965 ;;
18966
18967 os2*)
18968 libname_spec='$name'
18969 shrext_cmds=".dll"
18970 need_lib_prefix=no
18971 library_names_spec='$libname${shared_ext} $libname.a'
18972 dynamic_linker='OS/2 ld.exe'
18973 shlibpath_var=LIBPATH
18974 ;;
18975
18976 osf3* | osf4* | osf5*)
18977 version_type=osf
18978 need_lib_prefix=no
18979 need_version=no
18980 soname_spec='${libname}${release}${shared_ext}$major'
18981 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
18982 shlibpath_var=LD_LIBRARY_PATH
18983 sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
18984 sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
18985 ;;
18986
18987 solaris*)
18988 version_type=linux
18989 need_lib_prefix=no
18990 need_version=no
18991 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
18992 soname_spec='${libname}${release}${shared_ext}$major'
18993 shlibpath_var=LD_LIBRARY_PATH
18994 shlibpath_overrides_runpath=yes
18995 hardcode_into_libs=yes
18996 # ldd complains unless libraries are executable
18997 postinstall_cmds='chmod +x $lib'
18998 ;;
18999
19000 sunos4*)
19001 version_type=sunos
19002 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
19003 finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
19004 shlibpath_var=LD_LIBRARY_PATH
19005 shlibpath_overrides_runpath=yes
19006 if test "$with_gnu_ld" = yes; then
19007 need_lib_prefix=no
19008 fi
19009 need_version=yes
19010 ;;
19011
19012 sysv4 | sysv4.3*)
19013 version_type=linux
19014 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
19015 soname_spec='${libname}${release}${shared_ext}$major'
19016 shlibpath_var=LD_LIBRARY_PATH
19017 case $host_vendor in
19018 sni)
19019 shlibpath_overrides_runpath=no
19020 need_lib_prefix=no
19021 export_dynamic_flag_spec='${wl}-Blargedynsym'
19022 runpath_var=LD_RUN_PATH
19023 ;;
19024 siemens)
19025 need_lib_prefix=no
19026 ;;
19027 motorola)
19028 need_lib_prefix=no
19029 need_version=no
19030 shlibpath_overrides_runpath=no
19031 sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
19032 ;;
19033 esac
19034 ;;
19035
19036 sysv4*MP*)
19037 if test -d /usr/nec ;then
19038 version_type=linux
19039 library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
19040 soname_spec='$libname${shared_ext}.$major'
19041 shlibpath_var=LD_LIBRARY_PATH
19042 fi
19043 ;;
19044
19045 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
19046 version_type=freebsd-elf
19047 need_lib_prefix=no
19048 need_version=no
19049 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
19050 soname_spec='${libname}${release}${shared_ext}$major'
19051 shlibpath_var=LD_LIBRARY_PATH
19052 hardcode_into_libs=yes
19053 if test "$with_gnu_ld" = yes; then
19054 sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
19055 shlibpath_overrides_runpath=no
19056 else
19057 sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
19058 shlibpath_overrides_runpath=yes
19059 case $host_os in
19060 sco3.2v5*)
19061 sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
19062 ;;
19063 esac
19064 fi
19065 sys_lib_dlsearch_path_spec='/usr/lib'
19066 ;;
19067
19068 uts4*)
19069 version_type=linux
19070 library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
19071 soname_spec='${libname}${release}${shared_ext}$major'
19072 shlibpath_var=LD_LIBRARY_PATH
19073 ;;
19074
19075 *)
19076 dynamic_linker=no
19077 ;;
19078 esac
19079 { echo "$as_me:$LINENO: result: $dynamic_linker" >&5
19080 echo "${ECHO_T}$dynamic_linker" >&6; }
19081 test "$dynamic_linker" = no && can_build_shared=no
19082
19083 variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
19084 if test "$GCC" = yes; then
19085 variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
19086 fi
19087
19088 { echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
19089 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
19090 hardcode_action_GCJ=
19091 if test -n "$hardcode_libdir_flag_spec_GCJ" || \
19092 test -n "$runpath_var_GCJ" || \
19093 test "X$hardcode_automatic_GCJ" = "Xyes" ; then
19094
19095 # We can hardcode non-existant directories.
19096 if test "$hardcode_direct_GCJ" != no &&
19097 # If the only mechanism to avoid hardcoding is shlibpath_var, we
19098 # have to relink, otherwise we might link with an installed library
19099 # when we should be linking with a yet-to-be-installed one
19100 ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no &&
19101 test "$hardcode_minus_L_GCJ" != no; then
19102 # Linking always hardcodes the temporary library directory.
19103 hardcode_action_GCJ=relink
19104 else
19105 # We can link without hardcoding, and we can hardcode nonexisting dirs.
19106 hardcode_action_GCJ=immediate
19107 fi
19108 else
19109 # We cannot hardcode anything, or else we can only hardcode existing
19110 # directories.
19111 hardcode_action_GCJ=unsupported
19112 fi
19113 { echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5
19114 echo "${ECHO_T}$hardcode_action_GCJ" >&6; }
19115
19116 if test "$hardcode_action_GCJ" = relink; then
19117 # Fast installation is not supported
19118 enable_fast_install=no
19119 elif test "$shlibpath_overrides_runpath" = yes ||
19120 test "$enable_shared" = no; then
19121 # Fast installation is not necessary
19122 enable_fast_install=needless
19123 fi
19124
19125
19126 # The else clause should only fire when bootstrapping the
19127 # libtool distribution, otherwise you forgot to ship ltmain.sh
19128 # with your package, and you will get complaints that there are
19129 # no rules to generate ltmain.sh.
19130 if test -f "$ltmain"; then
19131 # See if we are running on zsh, and set the options which allow our commands through
19132 # without removal of \ escapes.
19133 if test -n "${ZSH_VERSION+set}" ; then
19134 setopt NO_GLOB_SUBST
19135 fi
19136 # Now quote all the things that may contain metacharacters while being
19137 # careful not to overquote the AC_SUBSTed values. We take copies of the
19138 # variables and quote the copies for generation of the libtool script.
19139 for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
19140 SED SHELL STRIP \
19141 libname_spec library_names_spec soname_spec extract_expsyms_cmds \
19142 old_striplib striplib file_magic_cmd finish_cmds finish_eval \
19143 deplibs_check_method reload_flag reload_cmds need_locks \
19144 lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
19145 lt_cv_sys_global_symbol_to_c_name_address \
19146 sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
19147 old_postinstall_cmds old_postuninstall_cmds \
19148 compiler_GCJ \
19149 CC_GCJ \
19150 LD_GCJ \
19151 lt_prog_compiler_wl_GCJ \
19152 lt_prog_compiler_pic_GCJ \
19153 lt_prog_compiler_static_GCJ \
19154 lt_prog_compiler_no_builtin_flag_GCJ \
19155 export_dynamic_flag_spec_GCJ \
19156 thread_safe_flag_spec_GCJ \
19157 whole_archive_flag_spec_GCJ \
19158 enable_shared_with_static_runtimes_GCJ \
19159 old_archive_cmds_GCJ \
19160 old_archive_from_new_cmds_GCJ \
19161 predep_objects_GCJ \
19162 postdep_objects_GCJ \
19163 predeps_GCJ \
19164 postdeps_GCJ \
19165 compiler_lib_search_path_GCJ \
19166 archive_cmds_GCJ \
19167 archive_expsym_cmds_GCJ \
19168 postinstall_cmds_GCJ \
19169 postuninstall_cmds_GCJ \
19170 old_archive_from_expsyms_cmds_GCJ \
19171 allow_undefined_flag_GCJ \
19172 no_undefined_flag_GCJ \
19173 export_symbols_cmds_GCJ \
19174 hardcode_libdir_flag_spec_GCJ \
19175 hardcode_libdir_flag_spec_ld_GCJ \
19176 hardcode_libdir_separator_GCJ \
19177 hardcode_automatic_GCJ \
19178 module_cmds_GCJ \
19179 module_expsym_cmds_GCJ \
19180 lt_cv_prog_compiler_c_o_GCJ \
19181 exclude_expsyms_GCJ \
19182 include_expsyms_GCJ; do
19183
19184 case $var in
19185 old_archive_cmds_GCJ | \
19186 old_archive_from_new_cmds_GCJ | \
19187 archive_cmds_GCJ | \
19188 archive_expsym_cmds_GCJ | \
19189 module_cmds_GCJ | \
19190 module_expsym_cmds_GCJ | \
19191 old_archive_from_expsyms_cmds_GCJ | \
19192 export_symbols_cmds_GCJ | \
19193 extract_expsyms_cmds | reload_cmds | finish_cmds | \
19194 postinstall_cmds | postuninstall_cmds | \
19195 old_postinstall_cmds | old_postuninstall_cmds | \
19196 sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
19197 # Double-quote double-evaled strings.
19198 eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
19199 ;;
19200 *)
19201 eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
19202 ;;
19203 esac
19204 done
19205
19206 case $lt_echo in
19207 *'\$0 --fallback-echo"')
19208 lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
19209 ;;
19210 esac
19211
19212 cfgfile="$ofile"
19213
19214 cat <<__EOF__ >> "$cfgfile"
19215 # ### BEGIN LIBTOOL TAG CONFIG: $tagname
19216
19217 # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
19218
19219 # Shell to use when invoking shell scripts.
19220 SHELL=$lt_SHELL
19221
19222 # Whether or not to build shared libraries.
19223 build_libtool_libs=$enable_shared
19224
19225 # Whether or not to build static libraries.
19226 build_old_libs=$enable_static
19227
19228 # Whether or not to add -lc for building shared libraries.
19229 build_libtool_need_lc=$archive_cmds_need_lc_GCJ
19230
19231 # Whether or not to disallow shared libs when runtime libs are static
19232 allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ
19233
19234 # Whether or not to optimize for fast installation.
19235 fast_install=$enable_fast_install
19236
19237 # The host system.
19238 host_alias=$host_alias
19239 host=$host
19240 host_os=$host_os
19241
19242 # The build system.
19243 build_alias=$build_alias
19244 build=$build
19245 build_os=$build_os
19246
19247 # An echo program that does not interpret backslashes.
19248 echo=$lt_echo
19249
19250 # The archiver.
19251 AR=$lt_AR
19252 AR_FLAGS=$lt_AR_FLAGS
19253
19254 # A C compiler.
19255 LTCC=$lt_LTCC
19256
19257 # LTCC compiler flags.
19258 LTCFLAGS=$lt_LTCFLAGS
19259
19260 # A language-specific compiler.
19261 CC=$lt_compiler_GCJ
19262
19263 # Is the compiler the GNU C compiler?
19264 with_gcc=$GCC_GCJ
19265
19266 # An ERE matcher.
19267 EGREP=$lt_EGREP
19268
19269 # The linker used to build libraries.
19270 LD=$lt_LD_GCJ
19271
19272 # Whether we need hard or soft links.
19273 LN_S=$lt_LN_S
19274
19275 # A BSD-compatible nm program.
19276 NM=$lt_NM
19277
19278 # A symbol stripping program
19279 STRIP=$lt_STRIP
19280
19281 # Used to examine libraries when file_magic_cmd begins "file"
19282 MAGIC_CMD=$MAGIC_CMD
19283
19284 # Used on cygwin: DLL creation program.
19285 DLLTOOL="$DLLTOOL"
19286
19287 # Used on cygwin: object dumper.
19288 OBJDUMP="$OBJDUMP"
19289
19290 # Used on cygwin: assembler.
19291 AS="$AS"
19292
19293 # The name of the directory that contains temporary libtool files.
19294 objdir=$objdir
19295
19296 # How to create reloadable object files.
19297 reload_flag=$lt_reload_flag
19298 reload_cmds=$lt_reload_cmds
19299
19300 # How to pass a linker flag through the compiler.
19301 wl=$lt_lt_prog_compiler_wl_GCJ
19302
19303 # Object file suffix (normally "o").
19304 objext="$ac_objext"
19305
19306 # Old archive suffix (normally "a").
19307 libext="$libext"
19308
19309 # Shared library suffix (normally ".so").
19310 shrext_cmds='$shrext_cmds'
19311
19312 # Executable file suffix (normally "").
19313 exeext="$exeext"
19314
19315 # Additional compiler flags for building library objects.
19316 pic_flag=$lt_lt_prog_compiler_pic_GCJ
19317 pic_mode=$pic_mode
19318
19319 # What is the maximum length of a command?
19320 max_cmd_len=$lt_cv_sys_max_cmd_len
19321
19322 # Does compiler simultaneously support -c and -o options?
19323 compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ
19324
19325 # Must we lock files when doing compilation?
19326 need_locks=$lt_need_locks
19327
19328 # Do we need the lib prefix for modules?
19329 need_lib_prefix=$need_lib_prefix
19330
19331 # Do we need a version for libraries?
19332 need_version=$need_version
19333
19334 # Whether dlopen is supported.
19335 dlopen_support=$enable_dlopen
19336
19337 # Whether dlopen of programs is supported.
19338 dlopen_self=$enable_dlopen_self
19339
19340 # Whether dlopen of statically linked programs is supported.
19341 dlopen_self_static=$enable_dlopen_self_static
19342
19343 # Compiler flag to prevent dynamic linking.
19344 link_static_flag=$lt_lt_prog_compiler_static_GCJ
19345
19346 # Compiler flag to turn off builtin functions.
19347 no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ
19348
19349 # Compiler flag to allow reflexive dlopens.
19350 export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ
19351
19352 # Compiler flag to generate shared objects directly from archives.
19353 whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ
19354
19355 # Compiler flag to generate thread-safe objects.
19356 thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ
19357
19358 # Library versioning type.
19359 version_type=$version_type
19360
19361 # Format of library name prefix.
19362 libname_spec=$lt_libname_spec
19363
19364 # List of archive names. First name is the real one, the rest are links.
19365 # The last name is the one that the linker finds with -lNAME.
19366 library_names_spec=$lt_library_names_spec
19367
19368 # The coded name of the library, if different from the real name.
19369 soname_spec=$lt_soname_spec
19370
19371 # Commands used to build and install an old-style archive.
19372 RANLIB=$lt_RANLIB
19373 old_archive_cmds=$lt_old_archive_cmds_GCJ
19374 old_postinstall_cmds=$lt_old_postinstall_cmds
19375 old_postuninstall_cmds=$lt_old_postuninstall_cmds
19376
19377 # Create an old-style archive from a shared archive.
19378 old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ
19379
19380 # Create a temporary old-style archive to link instead of a shared archive.
19381 old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ
19382
19383 # Commands used to build and install a shared archive.
19384 archive_cmds=$lt_archive_cmds_GCJ
19385 archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ
19386 postinstall_cmds=$lt_postinstall_cmds
19387 postuninstall_cmds=$lt_postuninstall_cmds
19388
19389 # Commands used to build a loadable module (assumed same as above if empty)
19390 module_cmds=$lt_module_cmds_GCJ
19391 module_expsym_cmds=$lt_module_expsym_cmds_GCJ
19392
19393 # Commands to strip libraries.
19394 old_striplib=$lt_old_striplib
19395 striplib=$lt_striplib
19396
19397 # Dependencies to place before the objects being linked to create a
19398 # shared library.
19399 predep_objects=$lt_predep_objects_GCJ
19400
19401 # Dependencies to place after the objects being linked to create a
19402 # shared library.
19403 postdep_objects=$lt_postdep_objects_GCJ
19404
19405 # Dependencies to place before the objects being linked to create a
19406 # shared library.
19407 predeps=$lt_predeps_GCJ
19408
19409 # Dependencies to place after the objects being linked to create a
19410 # shared library.
19411 postdeps=$lt_postdeps_GCJ
19412
19413 # The library search path used internally by the compiler when linking
19414 # a shared library.
19415 compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ
19416
19417 # Method to check whether dependent libraries are shared objects.
19418 deplibs_check_method=$lt_deplibs_check_method
19419
19420 # Command to use when deplibs_check_method == file_magic.
19421 file_magic_cmd=$lt_file_magic_cmd
19422
19423 # Flag that allows shared libraries with undefined symbols to be built.
19424 allow_undefined_flag=$lt_allow_undefined_flag_GCJ
19425
19426 # Flag that forces no undefined symbols.
19427 no_undefined_flag=$lt_no_undefined_flag_GCJ
19428
19429 # Commands used to finish a libtool library installation in a directory.
19430 finish_cmds=$lt_finish_cmds
19431
19432 # Same as above, but a single script fragment to be evaled but not shown.
19433 finish_eval=$lt_finish_eval
19434
19435 # Take the output of nm and produce a listing of raw symbols and C names.
19436 global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
19437
19438 # Transform the output of nm in a proper C declaration
19439 global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
19440
19441 # Transform the output of nm in a C name address pair
19442 global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
19443
19444 # This is the shared library runtime path variable.
19445 runpath_var=$runpath_var
19446
19447 # This is the shared library path variable.
19448 shlibpath_var=$shlibpath_var
19449
19450 # Is shlibpath searched before the hard-coded library search path?
19451 shlibpath_overrides_runpath=$shlibpath_overrides_runpath
19452
19453 # How to hardcode a shared library path into an executable.
19454 hardcode_action=$hardcode_action_GCJ
19455
19456 # Whether we should hardcode library paths into libraries.
19457 hardcode_into_libs=$hardcode_into_libs
19458
19459 # Flag to hardcode \$libdir into a binary during linking.
19460 # This must work even if \$libdir does not exist.
19461 hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ
19462
19463 # If ld is used when linking, flag to hardcode \$libdir into
19464 # a binary during linking. This must work even if \$libdir does
19465 # not exist.
19466 hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ
19467
19468 # Whether we need a single -rpath flag with a separated argument.
19469 hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ
19470
19471 # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
19472 # resulting binary.
19473 hardcode_direct=$hardcode_direct_GCJ
19474
19475 # Set to yes if using the -LDIR flag during linking hardcodes DIR into the
19476 # resulting binary.
19477 hardcode_minus_L=$hardcode_minus_L_GCJ
19478
19479 # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
19480 # the resulting binary.
19481 hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ
19482
19483 # Set to yes if building a shared library automatically hardcodes DIR into the library
19484 # and all subsequent libraries and executables linked against it.
19485 hardcode_automatic=$hardcode_automatic_GCJ
19486
19487 # Variables whose values should be saved in libtool wrapper scripts and
19488 # restored at relink time.
19489 variables_saved_for_relink="$variables_saved_for_relink"
19490
19491 # Whether libtool must link a program against all its dependency libraries.
19492 link_all_deplibs=$link_all_deplibs_GCJ
19493
19494 # Compile-time system search path for libraries
19495 sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
19496
19497 # Run-time system search path for libraries
19498 sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
19499
19500 # Fix the shell variable \$srcfile for the compiler.
19501 fix_srcfile_path="$fix_srcfile_path_GCJ"
19502
19503 # Set to yes if exported symbols are required.
19504 always_export_symbols=$always_export_symbols_GCJ
19505
19506 # The commands to list exported symbols.
19507 export_symbols_cmds=$lt_export_symbols_cmds_GCJ
19508
19509 # The commands to extract the exported symbol list from a shared archive.
19510 extract_expsyms_cmds=$lt_extract_expsyms_cmds
19511
19512 # Symbols that should not be listed in the preloaded symbols.
19513 exclude_expsyms=$lt_exclude_expsyms_GCJ
19514
19515 # Symbols that must always be exported.
19516 include_expsyms=$lt_include_expsyms_GCJ
19517
19518 # ### END LIBTOOL TAG CONFIG: $tagname
19519
19520 __EOF__
19521
19522
19523 else
19524 # If there is no Makefile yet, we rely on a make rule to execute
19525 # `config.status --recheck' to rerun these tests and create the
19526 # libtool script then.
19527 ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
19528 if test -f "$ltmain_in"; then
19529 test -f Makefile && make "$ltmain"
19530 fi
19531 fi
19532
19533
19534 ac_ext=c
19535 ac_cpp='$CPP $CPPFLAGS'
19536 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
19537 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
19538 ac_compiler_gnu=$ac_cv_c_compiler_gnu
19539
19540 CC="$lt_save_CC"
19541
19542 else
19543 tagname=""
19544 fi
19545 ;;
19546
19547 RC)
19548
19549
19550 # Source file extension for RC test sources.
19551 ac_ext=rc
19552
19553 # Object file extension for compiled RC test sources.
19554 objext=o
19555 objext_RC=$objext
19556
19557 # Code to be used in simple compile tests
19558 lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
19559
19560 # Code to be used in simple link tests
19561 lt_simple_link_test_code="$lt_simple_compile_test_code"
19562
19563 # ltmain only uses $CC for tagged configurations so make sure $CC is set.
19564
19565 # If no C compiler was specified, use CC.
19566 LTCC=${LTCC-"$CC"}
19567
19568 # If no C compiler flags were specified, use CFLAGS.
19569 LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
19570
19571 # Allow CC to be a program name with arguments.
19572 compiler=$CC
19573
19574
19575 # save warnings/boilerplate of simple test code
19576 ac_outfile=conftest.$ac_objext
19577 printf "$lt_simple_compile_test_code" >conftest.$ac_ext
19578 eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
19579 _lt_compiler_boilerplate=`cat conftest.err`
19580 $rm conftest*
19581
19582 ac_outfile=conftest.$ac_objext
19583 printf "$lt_simple_link_test_code" >conftest.$ac_ext
19584 eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
19585 _lt_linker_boilerplate=`cat conftest.err`
19586 $rm conftest*
19587
19588
19589 # Allow CC to be a program name with arguments.
19590 lt_save_CC="$CC"
19591 CC=${RC-"windres"}
19592 compiler=$CC
19593 compiler_RC=$CC
19594 for cc_temp in $compiler""; do
19595 case $cc_temp in
19596 compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
19597 distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
19598 \-*) ;;
19599 *) break;;
19600 esac
19601 done
19602 cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
19603
19604 lt_cv_prog_compiler_c_o_RC=yes
19605
19606 # The else clause should only fire when bootstrapping the
19607 # libtool distribution, otherwise you forgot to ship ltmain.sh
19608 # with your package, and you will get complaints that there are
19609 # no rules to generate ltmain.sh.
19610 if test -f "$ltmain"; then
19611 # See if we are running on zsh, and set the options which allow our commands through
19612 # without removal of \ escapes.
19613 if test -n "${ZSH_VERSION+set}" ; then
19614 setopt NO_GLOB_SUBST
19615 fi
19616 # Now quote all the things that may contain metacharacters while being
19617 # careful not to overquote the AC_SUBSTed values. We take copies of the
19618 # variables and quote the copies for generation of the libtool script.
19619 for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
19620 SED SHELL STRIP \
19621 libname_spec library_names_spec soname_spec extract_expsyms_cmds \
19622 old_striplib striplib file_magic_cmd finish_cmds finish_eval \
19623 deplibs_check_method reload_flag reload_cmds need_locks \
19624 lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
19625 lt_cv_sys_global_symbol_to_c_name_address \
19626 sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
19627 old_postinstall_cmds old_postuninstall_cmds \
19628 compiler_RC \
19629 CC_RC \
19630 LD_RC \
19631 lt_prog_compiler_wl_RC \
19632 lt_prog_compiler_pic_RC \
19633 lt_prog_compiler_static_RC \
19634 lt_prog_compiler_no_builtin_flag_RC \
19635 export_dynamic_flag_spec_RC \
19636 thread_safe_flag_spec_RC \
19637 whole_archive_flag_spec_RC \
19638 enable_shared_with_static_runtimes_RC \
19639 old_archive_cmds_RC \
19640 old_archive_from_new_cmds_RC \
19641 predep_objects_RC \
19642 postdep_objects_RC \
19643 predeps_RC \
19644 postdeps_RC \
19645 compiler_lib_search_path_RC \
19646 archive_cmds_RC \
19647 archive_expsym_cmds_RC \
19648 postinstall_cmds_RC \
19649 postuninstall_cmds_RC \
19650 old_archive_from_expsyms_cmds_RC \
19651 allow_undefined_flag_RC \
19652 no_undefined_flag_RC \
19653 export_symbols_cmds_RC \
19654 hardcode_libdir_flag_spec_RC \
19655 hardcode_libdir_flag_spec_ld_RC \
19656 hardcode_libdir_separator_RC \
19657 hardcode_automatic_RC \
19658 module_cmds_RC \
19659 module_expsym_cmds_RC \
19660 lt_cv_prog_compiler_c_o_RC \
19661 exclude_expsyms_RC \
19662 include_expsyms_RC; do
19663
19664 case $var in
19665 old_archive_cmds_RC | \
19666 old_archive_from_new_cmds_RC | \
19667 archive_cmds_RC | \
19668 archive_expsym_cmds_RC | \
19669 module_cmds_RC | \
19670 module_expsym_cmds_RC | \
19671 old_archive_from_expsyms_cmds_RC | \
19672 export_symbols_cmds_RC | \
19673 extract_expsyms_cmds | reload_cmds | finish_cmds | \
19674 postinstall_cmds | postuninstall_cmds | \
19675 old_postinstall_cmds | old_postuninstall_cmds | \
19676 sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
19677 # Double-quote double-evaled strings.
19678 eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
19679 ;;
19680 *)
19681 eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
19682 ;;
19683 esac
19684 done
19685
19686 case $lt_echo in
19687 *'\$0 --fallback-echo"')
19688 lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
19689 ;;
19690 esac
19691
19692 cfgfile="$ofile"
19693
19694 cat <<__EOF__ >> "$cfgfile"
19695 # ### BEGIN LIBTOOL TAG CONFIG: $tagname
19696
19697 # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
19698
19699 # Shell to use when invoking shell scripts.
19700 SHELL=$lt_SHELL
19701
19702 # Whether or not to build shared libraries.
19703 build_libtool_libs=$enable_shared
19704
19705 # Whether or not to build static libraries.
19706 build_old_libs=$enable_static
19707
19708 # Whether or not to add -lc for building shared libraries.
19709 build_libtool_need_lc=$archive_cmds_need_lc_RC
19710
19711 # Whether or not to disallow shared libs when runtime libs are static
19712 allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC
19713
19714 # Whether or not to optimize for fast installation.
19715 fast_install=$enable_fast_install
19716
19717 # The host system.
19718 host_alias=$host_alias
19719 host=$host
19720 host_os=$host_os
19721
19722 # The build system.
19723 build_alias=$build_alias
19724 build=$build
19725 build_os=$build_os
19726
19727 # An echo program that does not interpret backslashes.
19728 echo=$lt_echo
19729
19730 # The archiver.
19731 AR=$lt_AR
19732 AR_FLAGS=$lt_AR_FLAGS
19733
19734 # A C compiler.
19735 LTCC=$lt_LTCC
19736
19737 # LTCC compiler flags.
19738 LTCFLAGS=$lt_LTCFLAGS
19739
19740 # A language-specific compiler.
19741 CC=$lt_compiler_RC
19742
19743 # Is the compiler the GNU C compiler?
19744 with_gcc=$GCC_RC
19745
19746 # An ERE matcher.
19747 EGREP=$lt_EGREP
19748
19749 # The linker used to build libraries.
19750 LD=$lt_LD_RC
19751
19752 # Whether we need hard or soft links.
19753 LN_S=$lt_LN_S
19754
19755 # A BSD-compatible nm program.
19756 NM=$lt_NM
19757
19758 # A symbol stripping program
19759 STRIP=$lt_STRIP
19760
19761 # Used to examine libraries when file_magic_cmd begins "file"
19762 MAGIC_CMD=$MAGIC_CMD
19763
19764 # Used on cygwin: DLL creation program.
19765 DLLTOOL="$DLLTOOL"
19766
19767 # Used on cygwin: object dumper.
19768 OBJDUMP="$OBJDUMP"
19769
19770 # Used on cygwin: assembler.
19771 AS="$AS"
19772
19773 # The name of the directory that contains temporary libtool files.
19774 objdir=$objdir
19775
19776 # How to create reloadable object files.
19777 reload_flag=$lt_reload_flag
19778 reload_cmds=$lt_reload_cmds
19779
19780 # How to pass a linker flag through the compiler.
19781 wl=$lt_lt_prog_compiler_wl_RC
19782
19783 # Object file suffix (normally "o").
19784 objext="$ac_objext"
19785
19786 # Old archive suffix (normally "a").
19787 libext="$libext"
19788
19789 # Shared library suffix (normally ".so").
19790 shrext_cmds='$shrext_cmds'
19791
19792 # Executable file suffix (normally "").
19793 exeext="$exeext"
19794
19795 # Additional compiler flags for building library objects.
19796 pic_flag=$lt_lt_prog_compiler_pic_RC
19797 pic_mode=$pic_mode
19798
19799 # What is the maximum length of a command?
19800 max_cmd_len=$lt_cv_sys_max_cmd_len
19801
19802 # Does compiler simultaneously support -c and -o options?
19803 compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC
19804
19805 # Must we lock files when doing compilation?
19806 need_locks=$lt_need_locks
19807
19808 # Do we need the lib prefix for modules?
19809 need_lib_prefix=$need_lib_prefix
19810
19811 # Do we need a version for libraries?
19812 need_version=$need_version
19813
19814 # Whether dlopen is supported.
19815 dlopen_support=$enable_dlopen
19816
19817 # Whether dlopen of programs is supported.
19818 dlopen_self=$enable_dlopen_self
19819
19820 # Whether dlopen of statically linked programs is supported.
19821 dlopen_self_static=$enable_dlopen_self_static
19822
19823 # Compiler flag to prevent dynamic linking.
19824 link_static_flag=$lt_lt_prog_compiler_static_RC
19825
19826 # Compiler flag to turn off builtin functions.
19827 no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC
19828
19829 # Compiler flag to allow reflexive dlopens.
19830 export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC
19831
19832 # Compiler flag to generate shared objects directly from archives.
19833 whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC
19834
19835 # Compiler flag to generate thread-safe objects.
19836 thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC
19837
19838 # Library versioning type.
19839 version_type=$version_type
19840
19841 # Format of library name prefix.
19842 libname_spec=$lt_libname_spec
19843
19844 # List of archive names. First name is the real one, the rest are links.
19845 # The last name is the one that the linker finds with -lNAME.
19846 library_names_spec=$lt_library_names_spec
19847
19848 # The coded name of the library, if different from the real name.
19849 soname_spec=$lt_soname_spec
19850
19851 # Commands used to build and install an old-style archive.
19852 RANLIB=$lt_RANLIB
19853 old_archive_cmds=$lt_old_archive_cmds_RC
19854 old_postinstall_cmds=$lt_old_postinstall_cmds
19855 old_postuninstall_cmds=$lt_old_postuninstall_cmds
19856
19857 # Create an old-style archive from a shared archive.
19858 old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC
19859
19860 # Create a temporary old-style archive to link instead of a shared archive.
19861 old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC
19862
19863 # Commands used to build and install a shared archive.
19864 archive_cmds=$lt_archive_cmds_RC
19865 archive_expsym_cmds=$lt_archive_expsym_cmds_RC
19866 postinstall_cmds=$lt_postinstall_cmds
19867 postuninstall_cmds=$lt_postuninstall_cmds
19868
19869 # Commands used to build a loadable module (assumed same as above if empty)
19870 module_cmds=$lt_module_cmds_RC
19871 module_expsym_cmds=$lt_module_expsym_cmds_RC
19872
19873 # Commands to strip libraries.
19874 old_striplib=$lt_old_striplib
19875 striplib=$lt_striplib
19876
19877 # Dependencies to place before the objects being linked to create a
19878 # shared library.
19879 predep_objects=$lt_predep_objects_RC
19880
19881 # Dependencies to place after the objects being linked to create a
19882 # shared library.
19883 postdep_objects=$lt_postdep_objects_RC
19884
19885 # Dependencies to place before the objects being linked to create a
19886 # shared library.
19887 predeps=$lt_predeps_RC
19888
19889 # Dependencies to place after the objects being linked to create a
19890 # shared library.
19891 postdeps=$lt_postdeps_RC
19892
19893 # The library search path used internally by the compiler when linking
19894 # a shared library.
19895 compiler_lib_search_path=$lt_compiler_lib_search_path_RC
19896
19897 # Method to check whether dependent libraries are shared objects.
19898 deplibs_check_method=$lt_deplibs_check_method
19899
19900 # Command to use when deplibs_check_method == file_magic.
19901 file_magic_cmd=$lt_file_magic_cmd
19902
19903 # Flag that allows shared libraries with undefined symbols to be built.
19904 allow_undefined_flag=$lt_allow_undefined_flag_RC
19905
19906 # Flag that forces no undefined symbols.
19907 no_undefined_flag=$lt_no_undefined_flag_RC
19908
19909 # Commands used to finish a libtool library installation in a directory.
19910 finish_cmds=$lt_finish_cmds
19911
19912 # Same as above, but a single script fragment to be evaled but not shown.
19913 finish_eval=$lt_finish_eval
19914
19915 # Take the output of nm and produce a listing of raw symbols and C names.
19916 global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
19917
19918 # Transform the output of nm in a proper C declaration
19919 global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
19920
19921 # Transform the output of nm in a C name address pair
19922 global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
19923
19924 # This is the shared library runtime path variable.
19925 runpath_var=$runpath_var
19926
19927 # This is the shared library path variable.
19928 shlibpath_var=$shlibpath_var
19929
19930 # Is shlibpath searched before the hard-coded library search path?
19931 shlibpath_overrides_runpath=$shlibpath_overrides_runpath
19932
19933 # How to hardcode a shared library path into an executable.
19934 hardcode_action=$hardcode_action_RC
19935
19936 # Whether we should hardcode library paths into libraries.
19937 hardcode_into_libs=$hardcode_into_libs
19938
19939 # Flag to hardcode \$libdir into a binary during linking.
19940 # This must work even if \$libdir does not exist.
19941 hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC
19942
19943 # If ld is used when linking, flag to hardcode \$libdir into
19944 # a binary during linking. This must work even if \$libdir does
19945 # not exist.
19946 hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC
19947
19948 # Whether we need a single -rpath flag with a separated argument.
19949 hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC
19950
19951 # Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
19952 # resulting binary.
19953 hardcode_direct=$hardcode_direct_RC
19954
19955 # Set to yes if using the -LDIR flag during linking hardcodes DIR into the
19956 # resulting binary.
19957 hardcode_minus_L=$hardcode_minus_L_RC
19958
19959 # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
19960 # the resulting binary.
19961 hardcode_shlibpath_var=$hardcode_shlibpath_var_RC
19962
19963 # Set to yes if building a shared library automatically hardcodes DIR into the library
19964 # and all subsequent libraries and executables linked against it.
19965 hardcode_automatic=$hardcode_automatic_RC
19966
19967 # Variables whose values should be saved in libtool wrapper scripts and
19968 # restored at relink time.
19969 variables_saved_for_relink="$variables_saved_for_relink"
19970
19971 # Whether libtool must link a program against all its dependency libraries.
19972 link_all_deplibs=$link_all_deplibs_RC
19973
19974 # Compile-time system search path for libraries
19975 sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
19976
19977 # Run-time system search path for libraries
19978 sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
19979
19980 # Fix the shell variable \$srcfile for the compiler.
19981 fix_srcfile_path="$fix_srcfile_path_RC"
19982
19983 # Set to yes if exported symbols are required.
19984 always_export_symbols=$always_export_symbols_RC
19985
19986 # The commands to list exported symbols.
19987 export_symbols_cmds=$lt_export_symbols_cmds_RC
19988
19989 # The commands to extract the exported symbol list from a shared archive.
19990 extract_expsyms_cmds=$lt_extract_expsyms_cmds
19991
19992 # Symbols that should not be listed in the preloaded symbols.
19993 exclude_expsyms=$lt_exclude_expsyms_RC
19994
19995 # Symbols that must always be exported.
19996 include_expsyms=$lt_include_expsyms_RC
19997
19998 # ### END LIBTOOL TAG CONFIG: $tagname
19999
20000 __EOF__
20001
20002
20003 else
20004 # If there is no Makefile yet, we rely on a make rule to execute
20005 # `config.status --recheck' to rerun these tests and create the
20006 # libtool script then.
20007 ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
20008 if test -f "$ltmain_in"; then
20009 test -f Makefile && make "$ltmain"
20010 fi
20011 fi
20012
20013
20014 ac_ext=c
20015 ac_cpp='$CPP $CPPFLAGS'
20016 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
20017 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
20018 ac_compiler_gnu=$ac_cv_c_compiler_gnu
20019
20020 CC="$lt_save_CC"
20021
20022 ;;
20023
20024 *)
20025 { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5
20026 echo "$as_me: error: Unsupported tag name: $tagname" >&2;}
20027 { (exit 1); exit 1; }; }
20028 ;;
20029 esac
20030
20031 # Append the new tag name to the list of available tags.
20032 if test -n "$tagname" ; then
20033 available_tags="$available_tags $tagname"
20034 fi
20035 fi
20036 done
20037 IFS="$lt_save_ifs"
20038
20039 # Now substitute the updated list of available tags.
20040 if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
20041 mv "${ofile}T" "$ofile"
20042 chmod +x "$ofile"
20043 else
20044 rm -f "${ofile}T"
20045 { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5
20046 echo "$as_me: error: unable to update list of available tagged configurations." >&2;}
20047 { (exit 1); exit 1; }; }
20048 fi
20049 fi
20050
20051
20052
20053 # This can be used to rebuild libtool when needed
20054 LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
20055
20056 # Always use our own libtool.
20057 LIBTOOL='$(SHELL) $(top_builddir)/libtool'
20058
20059 # Prevent multiple expansion
20060
20061
20062
20063
20064
20065
20066
20067
20068
20069
20070
20071
20072
20073
20074
20075
20076
20077
20078
20079
20080 { echo "$as_me:$LINENO: checking whether ln -s works" >&5
20081 echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; }
20082 LN_S=$as_ln_s
20083 if test "$LN_S" = "ln -s"; then
20084 { echo "$as_me:$LINENO: result: yes" >&5
20085 echo "${ECHO_T}yes" >&6; }
20086 else
20087 { echo "$as_me:$LINENO: result: no, using $LN_S" >&5
20088 echo "${ECHO_T}no, using $LN_S" >&6; }
20089 fi
20090
20091 { echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
20092 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; }
20093 set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
20094 if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
20095 echo $ECHO_N "(cached) $ECHO_C" >&6
20096 else
20097 cat >conftest.make <<\_ACEOF
20098 SHELL = /bin/sh
20099 all:
20100 @echo '@@@%%%=$(MAKE)=@@@%%%'
20101 _ACEOF
20102 # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
20103 case `${MAKE-make} -f conftest.make 2>/dev/null` in
20104 *@@@%%%=?*=@@@%%%*)
20105 eval ac_cv_prog_make_${ac_make}_set=yes;;
20106 *)
20107 eval ac_cv_prog_make_${ac_make}_set=no;;
20108 esac
20109 rm -f conftest.make
20110 fi
20111 if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
20112 { echo "$as_me:$LINENO: result: yes" >&5
20113 echo "${ECHO_T}yes" >&6; }
20114 SET_MAKE=
20115 else
20116 { echo "$as_me:$LINENO: result: no" >&5
20117 echo "${ECHO_T}no" >&6; }
20118 SET_MAKE="MAKE=${MAKE-make}"
20119 fi
20120
20121 #AC_PROG_RANLIB
20122
20123 { echo "$as_me:$LINENO: checking for X" >&5
20124 echo $ECHO_N "checking for X... $ECHO_C" >&6; }
20125
20126
20127 # Check whether --with-x was given.
20128 if test "${with_x+set}" = set; then
20129 withval=$with_x;
20130 fi
20131
20132 # $have_x is `yes', `no', `disabled', or empty when we do not yet know.
20133 if test "x$with_x" = xno; then
20134 # The user explicitly disabled X.
20135 have_x=disabled
20136 else
20137 case $x_includes,$x_libraries in #(
20138 *\'*) { { echo "$as_me:$LINENO: error: Cannot use X directory names containing '" >&5
20139 echo "$as_me: error: Cannot use X directory names containing '" >&2;}
20140 { (exit 1); exit 1; }; };; #(
20141 *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then
20142 echo $ECHO_N "(cached) $ECHO_C" >&6
20143 else
20144 # One or both of the vars are not set, and there is no cached value.
20145 ac_x_includes=no ac_x_libraries=no
20146 rm -f -r conftest.dir
20147 if mkdir conftest.dir; then
20148 cd conftest.dir
20149 cat >Imakefile <<'_ACEOF'
20150 incroot:
20151 @echo incroot='${INCROOT}'
20152 usrlibdir:
20153 @echo usrlibdir='${USRLIBDIR}'
20154 libdir:
20155 @echo libdir='${LIBDIR}'
20156 _ACEOF
20157 if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then
20158 # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
20159 for ac_var in incroot usrlibdir libdir; do
20160 eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`"
20161 done
20162 # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.
20163 for ac_extension in a so sl; do
20164 if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" &&
20165 test -f "$ac_im_libdir/libX11.$ac_extension"; then
20166 ac_im_usrlibdir=$ac_im_libdir; break
20167 fi
20168 done
20169 # Screen out bogus values from the imake configuration. They are
20170 # bogus both because they are the default anyway, and because
20171 # using them would break gcc on systems where it needs fixed includes.
20172 case $ac_im_incroot in
20173 /usr/include) ac_x_includes= ;;
20174 *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
20175 esac
20176 case $ac_im_usrlibdir in
20177 /usr/lib | /lib) ;;
20178 *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
20179 esac
20180 fi
20181 cd ..
20182 rm -f -r conftest.dir
20183 fi
20184
20185 # Standard set of common directories for X headers.
20186 # Check X11 before X11Rn because it is often a symlink to the current release.
20187 ac_x_header_dirs='
20188 /usr/X11/include
20189 /usr/X11R6/include
20190 /usr/X11R5/include
20191 /usr/X11R4/include
20192
20193 /usr/include/X11
20194 /usr/include/X11R6
20195 /usr/include/X11R5
20196 /usr/include/X11R4
20197
20198 /usr/local/X11/include
20199 /usr/local/X11R6/include
20200 /usr/local/X11R5/include
20201 /usr/local/X11R4/include
20202
20203 /usr/local/include/X11
20204 /usr/local/include/X11R6
20205 /usr/local/include/X11R5
20206 /usr/local/include/X11R4
20207
20208 /usr/X386/include
20209 /usr/x386/include
20210 /usr/XFree86/include/X11
20211
20212 /usr/include
20213 /usr/local/include
20214 /usr/unsupported/include
20215 /usr/athena/include
20216 /usr/local/x11r5/include
20217 /usr/lpp/Xamples/include
20218
20219 /usr/openwin/include
20220 /usr/openwin/share/include'
20221
20222 if test "$ac_x_includes" = no; then
20223 # Guess where to find include files, by looking for Xlib.h.
20224 # First, try using that file with no special directory specified.
20225 cat >conftest.$ac_ext <<_ACEOF
20226 /* confdefs.h. */
20227 _ACEOF
20228 cat confdefs.h >>conftest.$ac_ext
20229 cat >>conftest.$ac_ext <<_ACEOF
20230 /* end confdefs.h. */
20231 #include <X11/Xlib.h>
20232 _ACEOF
20233 if { (ac_try="$ac_cpp conftest.$ac_ext"
20234 case "(($ac_try" in
20235 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
20236 *) ac_try_echo=$ac_try;;
20237 esac
20238 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
20239 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
20240 ac_status=$?
20241 grep -v '^ *+' conftest.er1 >conftest.err
20242 rm -f conftest.er1
20243 cat conftest.err >&5
20244 echo "$as_me:$LINENO: \$? = $ac_status" >&5
20245 (exit $ac_status); } >/dev/null && {
20246 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
20247 test ! -s conftest.err
20248 }; then
20249 # We can compile using X headers with no special include directory.
20250 ac_x_includes=
20251 else
20252 echo "$as_me: failed program was:" >&5
20253 sed 's/^/| /' conftest.$ac_ext >&5
20254
20255 for ac_dir in $ac_x_header_dirs; do
20256 if test -r "$ac_dir/X11/Xlib.h"; then
20257 ac_x_includes=$ac_dir
20258 break
20259 fi
20260 done
20261 fi
20262
20263 rm -f conftest.err conftest.$ac_ext
20264 fi # $ac_x_includes = no
20265
20266 if test "$ac_x_libraries" = no; then
20267 # Check for the libraries.
20268 # See if we find them without any special options.
20269 # Don't add to $LIBS permanently.
20270 ac_save_LIBS=$LIBS
20271 LIBS="-lX11 $LIBS"
20272 cat >conftest.$ac_ext <<_ACEOF
20273 /* confdefs.h. */
20274 _ACEOF
20275 cat confdefs.h >>conftest.$ac_ext
20276 cat >>conftest.$ac_ext <<_ACEOF
20277 /* end confdefs.h. */
20278 #include <X11/Xlib.h>
20279 int
20280 main ()
20281 {
20282 XrmInitialize ()
20283 ;
20284 return 0;
20285 }
20286 _ACEOF
20287 rm -f conftest.$ac_objext conftest$ac_exeext
20288 if { (ac_try="$ac_link"
20289 case "(($ac_try" in
20290 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
20291 *) ac_try_echo=$ac_try;;
20292 esac
20293 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
20294 (eval "$ac_link") 2>conftest.er1
20295 ac_status=$?
20296 grep -v '^ *+' conftest.er1 >conftest.err
20297 rm -f conftest.er1
20298 cat conftest.err >&5
20299 echo "$as_me:$LINENO: \$? = $ac_status" >&5
20300 (exit $ac_status); } && {
20301 test -z "$ac_c_werror_flag" ||
20302 test ! -s conftest.err
20303 } && test -s conftest$ac_exeext &&
20304 $as_test_x conftest$ac_exeext; then
20305 LIBS=$ac_save_LIBS
20306 # We can link X programs with no special library path.
20307 ac_x_libraries=
20308 else
20309 echo "$as_me: failed program was:" >&5
20310 sed 's/^/| /' conftest.$ac_ext >&5
20311
20312 LIBS=$ac_save_LIBS
20313 for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`
20314 do
20315 # Don't even attempt the hair of trying to link an X program!
20316 for ac_extension in a so sl; do
20317 if test -r "$ac_dir/libX11.$ac_extension"; then
20318 ac_x_libraries=$ac_dir
20319 break 2
20320 fi
20321 done
20322 done
20323 fi
20324
20325 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
20326 conftest$ac_exeext conftest.$ac_ext
20327 fi # $ac_x_libraries = no
20328
20329 case $ac_x_includes,$ac_x_libraries in #(
20330 no,* | *,no | *\'*)
20331 # Didn't find X, or a directory has "'" in its name.
20332 ac_cv_have_x="have_x=no";; #(
20333 *)
20334 # Record where we found X for the cache.
20335 ac_cv_have_x="have_x=yes\
20336 ac_x_includes='$ac_x_includes'\
20337 ac_x_libraries='$ac_x_libraries'"
20338 esac
20339 fi
20340 ;; #(
20341 *) have_x=yes;;
20342 esac
20343 eval "$ac_cv_have_x"
20344 fi # $with_x != no
20345
20346 if test "$have_x" != yes; then
20347 { echo "$as_me:$LINENO: result: $have_x" >&5
20348 echo "${ECHO_T}$have_x" >&6; }
20349 no_x=yes
20350 else
20351 # If each of the values was on the command line, it overrides each guess.
20352 test "x$x_includes" = xNONE && x_includes=$ac_x_includes
20353 test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries
20354 # Update the cache value to reflect the command line values.
20355 ac_cv_have_x="have_x=yes\
20356 ac_x_includes='$x_includes'\
20357 ac_x_libraries='$x_libraries'"
20358 { echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5
20359 echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6; }
20360 fi
20361
20362
20363 if test -n "$x_includes" && test "x$x_includes" != xNONE ; then
20364 CPPFLAGS="$CPPFLAGS -I$x_includes"
20365 fi
20366 if test -n "$x_libraries" && test "x$x_libraries" != xNONE ; then
20367 LDFLAGS="$LDFLAGS -L$x_libraries"
20368 fi
20369
20370 { echo "$as_me:$LINENO: checking for ANSI C header files" >&5
20371 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }
20372 if test "${ac_cv_header_stdc+set}" = set; then
20373 echo $ECHO_N "(cached) $ECHO_C" >&6
20374 else
20375 cat >conftest.$ac_ext <<_ACEOF
20376 /* confdefs.h. */
20377 _ACEOF
20378 cat confdefs.h >>conftest.$ac_ext
20379 cat >>conftest.$ac_ext <<_ACEOF
20380 /* end confdefs.h. */
20381 #include <stdlib.h>
20382 #include <stdarg.h>
20383 #include <string.h>
20384 #include <float.h>
20385
20386 int
20387 main ()
20388 {
20389
20390 ;
20391 return 0;
20392 }
20393 _ACEOF
20394 rm -f conftest.$ac_objext
20395 if { (ac_try="$ac_compile"
20396 case "(($ac_try" in
20397 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
20398 *) ac_try_echo=$ac_try;;
20399 esac
20400 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
20401 (eval "$ac_compile") 2>conftest.er1
20402 ac_status=$?
20403 grep -v '^ *+' conftest.er1 >conftest.err
20404 rm -f conftest.er1
20405 cat conftest.err >&5
20406 echo "$as_me:$LINENO: \$? = $ac_status" >&5
20407 (exit $ac_status); } && {
20408 test -z "$ac_c_werror_flag" ||
20409 test ! -s conftest.err
20410 } && test -s conftest.$ac_objext; then
20411 ac_cv_header_stdc=yes
20412 else
20413 echo "$as_me: failed program was:" >&5
20414 sed 's/^/| /' conftest.$ac_ext >&5
20415
20416 ac_cv_header_stdc=no
20417 fi
20418
20419 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
20420
20421 if test $ac_cv_header_stdc = yes; then
20422 # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
20423 cat >conftest.$ac_ext <<_ACEOF
20424 /* confdefs.h. */
20425 _ACEOF
20426 cat confdefs.h >>conftest.$ac_ext
20427 cat >>conftest.$ac_ext <<_ACEOF
20428 /* end confdefs.h. */
20429 #include <string.h>
20430
20431 _ACEOF
20432 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
20433 $EGREP "memchr" >/dev/null 2>&1; then
20434 :
20435 else
20436 ac_cv_header_stdc=no
20437 fi
20438 rm -f conftest*
20439
20440 fi
20441
20442 if test $ac_cv_header_stdc = yes; then
20443 # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
20444 cat >conftest.$ac_ext <<_ACEOF
20445 /* confdefs.h. */
20446 _ACEOF
20447 cat confdefs.h >>conftest.$ac_ext
20448 cat >>conftest.$ac_ext <<_ACEOF
20449 /* end confdefs.h. */
20450 #include <stdlib.h>
20451
20452 _ACEOF
20453 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
20454 $EGREP "free" >/dev/null 2>&1; then
20455 :
20456 else
20457 ac_cv_header_stdc=no
20458 fi
20459 rm -f conftest*
20460
20461 fi
20462
20463 if test $ac_cv_header_stdc = yes; then
20464 # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
20465 if test "$cross_compiling" = yes; then
20466 :
20467 else
20468 cat >conftest.$ac_ext <<_ACEOF
20469 /* confdefs.h. */
20470 _ACEOF
20471 cat confdefs.h >>conftest.$ac_ext
20472 cat >>conftest.$ac_ext <<_ACEOF
20473 /* end confdefs.h. */
20474 #include <ctype.h>
20475 #include <stdlib.h>
20476 #if ((' ' & 0x0FF) == 0x020)
20477 # define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
20478 # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
20479 #else
20480 # define ISLOWER(c) \
20481 (('a' <= (c) && (c) <= 'i') \
20482 || ('j' <= (c) && (c) <= 'r') \
20483 || ('s' <= (c) && (c) <= 'z'))
20484 # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
20485 #endif
20486
20487 #define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
20488 int
20489 main ()
20490 {
20491 int i;
20492 for (i = 0; i < 256; i++)
20493 if (XOR (islower (i), ISLOWER (i))
20494 || toupper (i) != TOUPPER (i))
20495 return 2;
20496 return 0;
20497 }
20498 _ACEOF
20499 rm -f conftest$ac_exeext
20500 if { (ac_try="$ac_link"
20501 case "(($ac_try" in
20502 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
20503 *) ac_try_echo=$ac_try;;
20504 esac
20505 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
20506 (eval "$ac_link") 2>&5
20507 ac_status=$?
20508 echo "$as_me:$LINENO: \$? = $ac_status" >&5
20509 (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
20510 { (case "(($ac_try" in
20511 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
20512 *) ac_try_echo=$ac_try;;
20513 esac
20514 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
20515 (eval "$ac_try") 2>&5
20516 ac_status=$?
20517 echo "$as_me:$LINENO: \$? = $ac_status" >&5
20518 (exit $ac_status); }; }; then
20519 :
20520 else
20521 echo "$as_me: program exited with status $ac_status" >&5
20522 echo "$as_me: failed program was:" >&5
20523 sed 's/^/| /' conftest.$ac_ext >&5
20524
20525 ( exit $ac_status )
20526 ac_cv_header_stdc=no
20527 fi
20528 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
20529 fi
20530
20531
20532 fi
20533 fi
20534 { echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
20535 echo "${ECHO_T}$ac_cv_header_stdc" >&6; }
20536 if test $ac_cv_header_stdc = yes; then
20537
20538 cat >>confdefs.h <<\_ACEOF
20539 #define STDC_HEADERS 1
20540 _ACEOF
20541
20542 fi
20543
20544
20545
20546
20547
20548
20549
20550 for ac_header in errno.h limits.h stddef.h stdlib.h string.h unistd.h
20551 do
20552 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
20553 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
20554 { echo "$as_me:$LINENO: checking for $ac_header" >&5
20555 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
20556 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
20557 echo $ECHO_N "(cached) $ECHO_C" >&6
20558 fi
20559 ac_res=`eval echo '${'$as_ac_Header'}'`
20560 { echo "$as_me:$LINENO: result: $ac_res" >&5
20561 echo "${ECHO_T}$ac_res" >&6; }
20562 else
20563 # Is the header compilable?
20564 { echo "$as_me:$LINENO: checking $ac_header usability" >&5
20565 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
20566 cat >conftest.$ac_ext <<_ACEOF
20567 /* confdefs.h. */
20568 _ACEOF
20569 cat confdefs.h >>conftest.$ac_ext
20570 cat >>conftest.$ac_ext <<_ACEOF
20571 /* end confdefs.h. */
20572 $ac_includes_default
20573 #include <$ac_header>
20574 _ACEOF
20575 rm -f conftest.$ac_objext
20576 if { (ac_try="$ac_compile"
20577 case "(($ac_try" in
20578 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
20579 *) ac_try_echo=$ac_try;;
20580 esac
20581 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
20582 (eval "$ac_compile") 2>conftest.er1
20583 ac_status=$?
20584 grep -v '^ *+' conftest.er1 >conftest.err
20585 rm -f conftest.er1
20586 cat conftest.err >&5
20587 echo "$as_me:$LINENO: \$? = $ac_status" >&5
20588 (exit $ac_status); } && {
20589 test -z "$ac_c_werror_flag" ||
20590 test ! -s conftest.err
20591 } && test -s conftest.$ac_objext; then
20592 ac_header_compiler=yes
20593 else
20594 echo "$as_me: failed program was:" >&5
20595 sed 's/^/| /' conftest.$ac_ext >&5
20596
20597 ac_header_compiler=no
20598 fi
20599
20600 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
20601 { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
20602 echo "${ECHO_T}$ac_header_compiler" >&6; }
20603
20604 # Is the header present?
20605 { echo "$as_me:$LINENO: checking $ac_header presence" >&5
20606 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
20607 cat >conftest.$ac_ext <<_ACEOF
20608 /* confdefs.h. */
20609 _ACEOF
20610 cat confdefs.h >>conftest.$ac_ext
20611 cat >>conftest.$ac_ext <<_ACEOF
20612 /* end confdefs.h. */
20613 #include <$ac_header>
20614 _ACEOF
20615 if { (ac_try="$ac_cpp conftest.$ac_ext"
20616 case "(($ac_try" in
20617 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
20618 *) ac_try_echo=$ac_try;;
20619 esac
20620 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
20621 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
20622 ac_status=$?
20623 grep -v '^ *+' conftest.er1 >conftest.err
20624 rm -f conftest.er1
20625 cat conftest.err >&5
20626 echo "$as_me:$LINENO: \$? = $ac_status" >&5
20627 (exit $ac_status); } >/dev/null && {
20628 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
20629 test ! -s conftest.err
20630 }; then
20631 ac_header_preproc=yes
20632 else
20633 echo "$as_me: failed program was:" >&5
20634 sed 's/^/| /' conftest.$ac_ext >&5
20635
20636 ac_header_preproc=no
20637 fi
20638
20639 rm -f conftest.err conftest.$ac_ext
20640 { echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
20641 echo "${ECHO_T}$ac_header_preproc" >&6; }
20642
20643 # So? What about this header?
20644 case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
20645 yes:no: )
20646 { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
20647 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
20648 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
20649 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
20650 ac_header_preproc=yes
20651 ;;
20652 no:yes:* )
20653 { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
20654 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
20655 { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
20656 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
20657 { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
20658 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
20659 { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
20660 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
20661 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
20662 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
20663 { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
20664 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
20665 ( cat <<\_ASBOX
20666 ## ------------------------------------ ##
20667 ## Report this to http://bugs.libgd.org ##
20668 ## ------------------------------------ ##
20669 _ASBOX
20670 ) | sed "s/^/$as_me: WARNING: /" >&2
20671 ;;
20672 esac
20673 { echo "$as_me:$LINENO: checking for $ac_header" >&5
20674 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
20675 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
20676 echo $ECHO_N "(cached) $ECHO_C" >&6
20677 else
20678 eval "$as_ac_Header=\$ac_header_preproc"
20679 fi
20680 ac_res=`eval echo '${'$as_ac_Header'}'`
20681 { echo "$as_me:$LINENO: result: $ac_res" >&5
20682 echo "${ECHO_T}$ac_res" >&6; }
20683
20684 fi
20685 if test `eval echo '${'$as_ac_Header'}'` = yes; then
20686 cat >>confdefs.h <<_ACEOF
20687 #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
20688 _ACEOF
20689
20690 fi
20691
20692 done
20693
20694
20695
20696 if test "X$prefix" = "XNONE"; then
20697 acl_final_prefix="$ac_default_prefix"
20698 else
20699 acl_final_prefix="$prefix"
20700 fi
20701 if test "X$exec_prefix" = "XNONE"; then
20702 acl_final_exec_prefix='${prefix}'
20703 else
20704 acl_final_exec_prefix="$exec_prefix"
20705 fi
20706 acl_save_prefix="$prefix"
20707 prefix="$acl_final_prefix"
20708 eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
20709 prefix="$acl_save_prefix"
20710
20711
20712 # Check whether --with-gnu-ld was given.
20713 if test "${with_gnu_ld+set}" = set; then
20714 withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
20715 else
20716 with_gnu_ld=no
20717 fi
20718
20719 # Prepare PATH_SEPARATOR.
20720 # The user is always right.
20721 if test "${PATH_SEPARATOR+set}" != set; then
20722 echo "#! /bin/sh" >conf$$.sh
20723 echo "exit 0" >>conf$$.sh
20724 chmod +x conf$$.sh
20725 if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
20726 PATH_SEPARATOR=';'
20727 else
20728 PATH_SEPARATOR=:
20729 fi
20730 rm -f conf$$.sh
20731 fi
20732 ac_prog=ld
20733 if test "$GCC" = yes; then
20734 # Check if gcc -print-prog-name=ld gives a path.
20735 { echo "$as_me:$LINENO: checking for ld used by GCC" >&5
20736 echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6; }
20737 case $host in
20738 *-*-mingw*)
20739 # gcc leaves a trailing carriage return which upsets mingw
20740 ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
20741 *)
20742 ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
20743 esac
20744 case $ac_prog in
20745 # Accept absolute paths.
20746 [\\/]* | [A-Za-z]:[\\/]*)
20747 re_direlt='/[^/][^/]*/\.\./'
20748 # Canonicalize the path of ld
20749 ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
20750 while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
20751 ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
20752 done
20753 test -z "$LD" && LD="$ac_prog"
20754 ;;
20755 "")
20756 # If it fails, then pretend we aren't using GCC.
20757 ac_prog=ld
20758 ;;
20759 *)
20760 # If it is relative, then search for the first ld in PATH.
20761 with_gnu_ld=unknown
20762 ;;
20763 esac
20764 elif test "$with_gnu_ld" = yes; then
20765 { echo "$as_me:$LINENO: checking for GNU ld" >&5
20766 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; }
20767 else
20768 { echo "$as_me:$LINENO: checking for non-GNU ld" >&5
20769 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; }
20770 fi
20771 if test "${acl_cv_path_LD+set}" = set; then
20772 echo $ECHO_N "(cached) $ECHO_C" >&6
20773 else
20774 if test -z "$LD"; then
20775 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
20776 for ac_dir in $PATH; do
20777 test -z "$ac_dir" && ac_dir=.
20778 if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
20779 acl_cv_path_LD="$ac_dir/$ac_prog"
20780 # Check to see if the program is GNU ld. I'd rather use --version,
20781 # but apparently some GNU ld's only accept -v.
20782 # Break only if it was the GNU/non-GNU ld that we prefer.
20783 case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
20784 *GNU* | *'with BFD'*)
20785 test "$with_gnu_ld" != no && break ;;
20786 *)
20787 test "$with_gnu_ld" != yes && break ;;
20788 esac
20789 fi
20790 done
20791 IFS="$ac_save_ifs"
20792 else
20793 acl_cv_path_LD="$LD" # Let the user override the test with a path.
20794 fi
20795 fi
20796
20797 LD="$acl_cv_path_LD"
20798 if test -n "$LD"; then
20799 { echo "$as_me:$LINENO: result: $LD" >&5
20800 echo "${ECHO_T}$LD" >&6; }
20801 else
20802 { echo "$as_me:$LINENO: result: no" >&5
20803 echo "${ECHO_T}no" >&6; }
20804 fi
20805 test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
20806 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
20807 { (exit 1); exit 1; }; }
20808 { echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
20809 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; }
20810 if test "${acl_cv_prog_gnu_ld+set}" = set; then
20811 echo $ECHO_N "(cached) $ECHO_C" >&6
20812 else
20813 # I'd rather use --version here, but apparently some GNU ld's only accept -v.
20814 case `$LD -v 2>&1 </dev/null` in
20815 *GNU* | *'with BFD'*)
20816 acl_cv_prog_gnu_ld=yes ;;
20817 *)
20818 acl_cv_prog_gnu_ld=no ;;
20819 esac
20820 fi
20821 { echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5
20822 echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6; }
20823 with_gnu_ld=$acl_cv_prog_gnu_ld
20824
20825
20826
20827
20828 { echo "$as_me:$LINENO: checking for shared library run path origin" >&5
20829 echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6; }
20830 if test "${acl_cv_rpath+set}" = set; then
20831 echo $ECHO_N "(cached) $ECHO_C" >&6
20832 else
20833
20834 CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
20835 ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
20836 . ./conftest.sh
20837 rm -f ./conftest.sh
20838 acl_cv_rpath=done
20839
20840 fi
20841 { echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5
20842 echo "${ECHO_T}$acl_cv_rpath" >&6; }
20843 wl="$acl_cv_wl"
20844 libext="$acl_cv_libext"
20845 shlibext="$acl_cv_shlibext"
20846 hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
20847 hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
20848 hardcode_direct="$acl_cv_hardcode_direct"
20849 hardcode_minus_L="$acl_cv_hardcode_minus_L"
20850 # Check whether --enable-rpath was given.
20851 if test "${enable_rpath+set}" = set; then
20852 enableval=$enable_rpath; :
20853 else
20854 enable_rpath=yes
20855 fi
20856
20857
20858
20859 acl_libdirstem=lib
20860 searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
20861 if test -n "$searchpath"; then
20862 acl_save_IFS="${IFS= }"; IFS=":"
20863 for searchdir in $searchpath; do
20864 if test -d "$searchdir"; then
20865 case "$searchdir" in
20866 */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
20867 *) searchdir=`cd "$searchdir" && pwd`
20868 case "$searchdir" in
20869 */lib64 ) acl_libdirstem=lib64 ;;
20870 esac ;;
20871 esac
20872 fi
20873 done
20874 IFS="$acl_save_IFS"
20875 fi
20876
20877
20878
20879
20880
20881
20882
20883
20884 use_additional=yes
20885
20886 acl_save_prefix="$prefix"
20887 prefix="$acl_final_prefix"
20888 acl_save_exec_prefix="$exec_prefix"
20889 exec_prefix="$acl_final_exec_prefix"
20890
20891 eval additional_includedir=\"$includedir\"
20892 eval additional_libdir=\"$libdir\"
20893
20894 exec_prefix="$acl_save_exec_prefix"
20895 prefix="$acl_save_prefix"
20896
20897
20898 # Check whether --with-libiconv-prefix was given.
20899 if test "${with_libiconv_prefix+set}" = set; then
20900 withval=$with_libiconv_prefix;
20901 if test "X$withval" = "Xno"; then
20902 use_additional=no
20903 else
20904 if test "X$withval" = "X"; then
20905
20906 acl_save_prefix="$prefix"
20907 prefix="$acl_final_prefix"
20908 acl_save_exec_prefix="$exec_prefix"
20909 exec_prefix="$acl_final_exec_prefix"
20910
20911 eval additional_includedir=\"$includedir\"
20912 eval additional_libdir=\"$libdir\"
20913
20914 exec_prefix="$acl_save_exec_prefix"
20915 prefix="$acl_save_prefix"
20916
20917 else
20918 additional_includedir="$withval/include"
20919 additional_libdir="$withval/$acl_libdirstem"
20920 fi
20921 fi
20922
20923 fi
20924
20925 LIBICONV=
20926 LTLIBICONV=
20927 INCICONV=
20928 rpathdirs=
20929 ltrpathdirs=
20930 names_already_handled=
20931 names_next_round='iconv '
20932 while test -n "$names_next_round"; do
20933 names_this_round="$names_next_round"
20934 names_next_round=
20935 for name in $names_this_round; do
20936 already_handled=
20937 for n in $names_already_handled; do
20938 if test "$n" = "$name"; then
20939 already_handled=yes
20940 break
20941 fi
20942 done
20943 if test -z "$already_handled"; then
20944 names_already_handled="$names_already_handled $name"
20945 uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
20946 eval value=\"\$HAVE_LIB$uppername\"
20947 if test -n "$value"; then
20948 if test "$value" = yes; then
20949 eval value=\"\$LIB$uppername\"
20950 test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value"
20951 eval value=\"\$LTLIB$uppername\"
20952 test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value"
20953 else
20954 :
20955 fi
20956 else
20957 found_dir=
20958 found_la=
20959 found_so=
20960 found_a=
20961 if test $use_additional = yes; then
20962 if test -n "$shlibext" \
20963 && { test -f "$additional_libdir/lib$name.$shlibext" \
20964 || { test "$shlibext" = dll \
20965 && test -f "$additional_libdir/lib$name.dll.a"; }; }; then
20966 found_dir="$additional_libdir"
20967 if test -f "$additional_libdir/lib$name.$shlibext"; then
20968 found_so="$additional_libdir/lib$name.$shlibext"
20969 else
20970 found_so="$additional_libdir/lib$name.dll.a"
20971 fi
20972 if test -f "$additional_libdir/lib$name.la"; then
20973 found_la="$additional_libdir/lib$name.la"
20974 fi
20975 else
20976 if test -f "$additional_libdir/lib$name.$libext"; then
20977 found_dir="$additional_libdir"
20978 found_a="$additional_libdir/lib$name.$libext"
20979 if test -f "$additional_libdir/lib$name.la"; then
20980 found_la="$additional_libdir/lib$name.la"
20981 fi
20982 fi
20983 fi
20984 fi
20985 if test "X$found_dir" = "X"; then
20986 for x in $LDFLAGS $LTLIBICONV; do
20987
20988 acl_save_prefix="$prefix"
20989 prefix="$acl_final_prefix"
20990 acl_save_exec_prefix="$exec_prefix"
20991 exec_prefix="$acl_final_exec_prefix"
20992 eval x=\"$x\"
20993 exec_prefix="$acl_save_exec_prefix"
20994 prefix="$acl_save_prefix"
20995
20996 case "$x" in
20997 -L*)
20998 dir=`echo "X$x" | sed -e 's/^X-L//'`
20999 if test -n "$shlibext" \
21000 && { test -f "$dir/lib$name.$shlibext" \
21001 || { test "$shlibext" = dll \
21002 && test -f "$dir/lib$name.dll.a"; }; }; then
21003 found_dir="$dir"
21004 if test -f "$dir/lib$name.$shlibext"; then
21005 found_so="$dir/lib$name.$shlibext"
21006 else
21007 found_so="$dir/lib$name.dll.a"
21008 fi
21009 if test -f "$dir/lib$name.la"; then
21010 found_la="$dir/lib$name.la"
21011 fi
21012 else
21013 if test -f "$dir/lib$name.$libext"; then
21014 found_dir="$dir"
21015 found_a="$dir/lib$name.$libext"
21016 if test -f "$dir/lib$name.la"; then
21017 found_la="$dir/lib$name.la"
21018 fi
21019 fi
21020 fi
21021 ;;
21022 esac
21023 if test "X$found_dir" != "X"; then
21024 break
21025 fi
21026 done
21027 fi
21028 if test "X$found_dir" != "X"; then
21029 LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name"
21030 if test "X$found_so" != "X"; then
21031 if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then
21032 LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
21033 else
21034 haveit=
21035 for x in $ltrpathdirs; do
21036 if test "X$x" = "X$found_dir"; then
21037 haveit=yes
21038 break
21039 fi
21040 done
21041 if test -z "$haveit"; then
21042 ltrpathdirs="$ltrpathdirs $found_dir"
21043 fi
21044 if test "$hardcode_direct" = yes; then
21045 LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
21046 else
21047 if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
21048 LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
21049 haveit=
21050 for x in $rpathdirs; do
21051 if test "X$x" = "X$found_dir"; then
21052 haveit=yes
21053 break
21054 fi
21055 done
21056 if test -z "$haveit"; then
21057 rpathdirs="$rpathdirs $found_dir"
21058 fi
21059 else
21060 haveit=
21061 for x in $LDFLAGS $LIBICONV; do
21062
21063 acl_save_prefix="$prefix"
21064 prefix="$acl_final_prefix"
21065 acl_save_exec_prefix="$exec_prefix"
21066 exec_prefix="$acl_final_exec_prefix"
21067 eval x=\"$x\"
21068 exec_prefix="$acl_save_exec_prefix"
21069 prefix="$acl_save_prefix"
21070
21071 if test "X$x" = "X-L$found_dir"; then
21072 haveit=yes
21073 break
21074 fi
21075 done
21076 if test -z "$haveit"; then
21077 LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir"
21078 fi
21079 if test "$hardcode_minus_L" != no; then
21080 LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
21081 else
21082 LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
21083 fi
21084 fi
21085 fi
21086 fi
21087 else
21088 if test "X$found_a" != "X"; then
21089 LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a"
21090 else
21091 LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name"
21092 fi
21093 fi
21094 additional_includedir=
21095 case "$found_dir" in
21096 */$acl_libdirstem | */$acl_libdirstem/)
21097 basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
21098 additional_includedir="$basedir/include"
21099 ;;
21100 esac
21101 if test "X$additional_includedir" != "X"; then
21102 if test "X$additional_includedir" != "X/usr/include"; then
21103 haveit=
21104 if test "X$additional_includedir" = "X/usr/local/include"; then
21105 if test -n "$GCC"; then
21106 case $host_os in
21107 linux* | gnu* | k*bsd*-gnu) haveit=yes;;
21108 esac
21109 fi
21110 fi
21111 if test -z "$haveit"; then
21112 for x in $CPPFLAGS $INCICONV; do
21113
21114 acl_save_prefix="$prefix"
21115 prefix="$acl_final_prefix"
21116 acl_save_exec_prefix="$exec_prefix"
21117 exec_prefix="$acl_final_exec_prefix"
21118 eval x=\"$x\"
21119 exec_prefix="$acl_save_exec_prefix"
21120 prefix="$acl_save_prefix"
21121
21122 if test "X$x" = "X-I$additional_includedir"; then
21123 haveit=yes
21124 break
21125 fi
21126 done
21127 if test -z "$haveit"; then
21128 if test -d "$additional_includedir"; then
21129 INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir"
21130 fi
21131 fi
21132 fi
21133 fi
21134 fi
21135 if test -n "$found_la"; then
21136 save_libdir="$libdir"
21137 case "$found_la" in
21138 */* | *\\*) . "$found_la" ;;
21139 *) . "./$found_la" ;;
21140 esac
21141 libdir="$save_libdir"
21142 for dep in $dependency_libs; do
21143 case "$dep" in
21144 -L*)
21145 additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
21146 if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
21147 haveit=
21148 if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
21149 if test -n "$GCC"; then
21150 case $host_os in
21151 linux* | gnu* | k*bsd*-gnu) haveit=yes;;
21152 esac
21153 fi
21154 fi
21155 if test -z "$haveit"; then
21156 haveit=
21157 for x in $LDFLAGS $LIBICONV; do
21158
21159 acl_save_prefix="$prefix"
21160 prefix="$acl_final_prefix"
21161 acl_save_exec_prefix="$exec_prefix"
21162 exec_prefix="$acl_final_exec_prefix"
21163 eval x=\"$x\"
21164 exec_prefix="$acl_save_exec_prefix"
21165 prefix="$acl_save_prefix"
21166
21167 if test "X$x" = "X-L$additional_libdir"; then
21168 haveit=yes
21169 break
21170 fi
21171 done
21172 if test -z "$haveit"; then
21173 if test -d "$additional_libdir"; then
21174 LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir"
21175 fi
21176 fi
21177 haveit=
21178 for x in $LDFLAGS $LTLIBICONV; do
21179
21180 acl_save_prefix="$prefix"
21181 prefix="$acl_final_prefix"
21182 acl_save_exec_prefix="$exec_prefix"
21183 exec_prefix="$acl_final_exec_prefix"
21184 eval x=\"$x\"
21185 exec_prefix="$acl_save_exec_prefix"
21186 prefix="$acl_save_prefix"
21187
21188 if test "X$x" = "X-L$additional_libdir"; then
21189 haveit=yes
21190 break
21191 fi
21192 done
21193 if test -z "$haveit"; then
21194 if test -d "$additional_libdir"; then
21195 LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir"
21196 fi
21197 fi
21198 fi
21199 fi
21200 ;;
21201 -R*)
21202 dir=`echo "X$dep" | sed -e 's/^X-R//'`
21203 if test "$enable_rpath" != no; then
21204 haveit=
21205 for x in $rpathdirs; do
21206 if test "X$x" = "X$dir"; then
21207 haveit=yes
21208 break
21209 fi
21210 done
21211 if test -z "$haveit"; then
21212 rpathdirs="$rpathdirs $dir"
21213 fi
21214 haveit=
21215 for x in $ltrpathdirs; do
21216 if test "X$x" = "X$dir"; then
21217 haveit=yes
21218 break
21219 fi
21220 done
21221 if test -z "$haveit"; then
21222 ltrpathdirs="$ltrpathdirs $dir"
21223 fi
21224 fi
21225 ;;
21226 -l*)
21227 names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
21228 ;;
21229 *.la)
21230 names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
21231 ;;
21232 *)
21233 LIBICONV="${LIBICONV}${LIBICONV:+ }$dep"
21234 LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep"
21235 ;;
21236 esac
21237 done
21238 fi
21239 else
21240 LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
21241 LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name"
21242 fi
21243 fi
21244 fi
21245 done
21246 done
21247 if test "X$rpathdirs" != "X"; then
21248 if test -n "$hardcode_libdir_separator"; then
21249 alldirs=
21250 for found_dir in $rpathdirs; do
21251 alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
21252 done
21253 acl_save_libdir="$libdir"
21254 libdir="$alldirs"
21255 eval flag=\"$hardcode_libdir_flag_spec\"
21256 libdir="$acl_save_libdir"
21257 LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
21258 else
21259 for found_dir in $rpathdirs; do
21260 acl_save_libdir="$libdir"
21261 libdir="$found_dir"
21262 eval flag=\"$hardcode_libdir_flag_spec\"
21263 libdir="$acl_save_libdir"
21264 LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
21265 done
21266 fi
21267 fi
21268 if test "X$ltrpathdirs" != "X"; then
21269 for found_dir in $ltrpathdirs; do
21270 LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir"
21271 done
21272 fi
21273
21274
21275
21276
21277
21278
21279
21280 am_save_CPPFLAGS="$CPPFLAGS"
21281
21282 for element in $INCICONV; do
21283 haveit=
21284 for x in $CPPFLAGS; do
21285
21286 acl_save_prefix="$prefix"
21287 prefix="$acl_final_prefix"
21288 acl_save_exec_prefix="$exec_prefix"
21289 exec_prefix="$acl_final_exec_prefix"
21290 eval x=\"$x\"
21291 exec_prefix="$acl_save_exec_prefix"
21292 prefix="$acl_save_prefix"
21293
21294 if test "X$x" = "X$element"; then
21295 haveit=yes
21296 break
21297 fi
21298 done
21299 if test -z "$haveit"; then
21300 CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
21301 fi
21302 done
21303
21304
21305 { echo "$as_me:$LINENO: checking for iconv" >&5
21306 echo $ECHO_N "checking for iconv... $ECHO_C" >&6; }
21307 if test "${am_cv_func_iconv+set}" = set; then
21308 echo $ECHO_N "(cached) $ECHO_C" >&6
21309 else
21310
21311 am_cv_func_iconv="no, consider installing GNU libiconv"
21312 am_cv_lib_iconv=no
21313 cat >conftest.$ac_ext <<_ACEOF
21314 /* confdefs.h. */
21315 _ACEOF
21316 cat confdefs.h >>conftest.$ac_ext
21317 cat >>conftest.$ac_ext <<_ACEOF
21318 /* end confdefs.h. */
21319 #include <stdlib.h>
21320 #include <iconv.h>
21321 int
21322 main ()
21323 {
21324 iconv_t cd = iconv_open("","");
21325 iconv(cd,NULL,NULL,NULL,NULL);
21326 iconv_close(cd);
21327 ;
21328 return 0;
21329 }
21330 _ACEOF
21331 rm -f conftest.$ac_objext conftest$ac_exeext
21332 if { (ac_try="$ac_link"
21333 case "(($ac_try" in
21334 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
21335 *) ac_try_echo=$ac_try;;
21336 esac
21337 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
21338 (eval "$ac_link") 2>conftest.er1
21339 ac_status=$?
21340 grep -v '^ *+' conftest.er1 >conftest.err
21341 rm -f conftest.er1
21342 cat conftest.err >&5
21343 echo "$as_me:$LINENO: \$? = $ac_status" >&5
21344 (exit $ac_status); } && {
21345 test -z "$ac_c_werror_flag" ||
21346 test ! -s conftest.err
21347 } && test -s conftest$ac_exeext &&
21348 $as_test_x conftest$ac_exeext; then
21349 am_cv_func_iconv=yes
21350 else
21351 echo "$as_me: failed program was:" >&5
21352 sed 's/^/| /' conftest.$ac_ext >&5
21353
21354
21355 fi
21356
21357 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
21358 conftest$ac_exeext conftest.$ac_ext
21359 if test "$am_cv_func_iconv" != yes; then
21360 am_save_LIBS="$LIBS"
21361 LIBS="$LIBS $LIBICONV"
21362 cat >conftest.$ac_ext <<_ACEOF
21363 /* confdefs.h. */
21364 _ACEOF
21365 cat confdefs.h >>conftest.$ac_ext
21366 cat >>conftest.$ac_ext <<_ACEOF
21367 /* end confdefs.h. */
21368 #include <stdlib.h>
21369 #include <iconv.h>
21370 int
21371 main ()
21372 {
21373 iconv_t cd = iconv_open("","");
21374 iconv(cd,NULL,NULL,NULL,NULL);
21375 iconv_close(cd);
21376 ;
21377 return 0;
21378 }
21379 _ACEOF
21380 rm -f conftest.$ac_objext conftest$ac_exeext
21381 if { (ac_try="$ac_link"
21382 case "(($ac_try" in
21383 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
21384 *) ac_try_echo=$ac_try;;
21385 esac
21386 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
21387 (eval "$ac_link") 2>conftest.er1
21388 ac_status=$?
21389 grep -v '^ *+' conftest.er1 >conftest.err
21390 rm -f conftest.er1
21391 cat conftest.err >&5
21392 echo "$as_me:$LINENO: \$? = $ac_status" >&5
21393 (exit $ac_status); } && {
21394 test -z "$ac_c_werror_flag" ||
21395 test ! -s conftest.err
21396 } && test -s conftest$ac_exeext &&
21397 $as_test_x conftest$ac_exeext; then
21398 am_cv_lib_iconv=yes
21399 am_cv_func_iconv=yes
21400 else
21401 echo "$as_me: failed program was:" >&5
21402 sed 's/^/| /' conftest.$ac_ext >&5
21403
21404
21405 fi
21406
21407 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
21408 conftest$ac_exeext conftest.$ac_ext
21409 LIBS="$am_save_LIBS"
21410 fi
21411
21412 fi
21413 { echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5
21414 echo "${ECHO_T}$am_cv_func_iconv" >&6; }
21415 if test "$am_cv_func_iconv" = yes; then
21416
21417 cat >>confdefs.h <<\_ACEOF
21418 #define HAVE_ICONV 1
21419 _ACEOF
21420
21421 fi
21422 if test "$am_cv_lib_iconv" = yes; then
21423 { echo "$as_me:$LINENO: checking how to link with libiconv" >&5
21424 echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6; }
21425 { echo "$as_me:$LINENO: result: $LIBICONV" >&5
21426 echo "${ECHO_T}$LIBICONV" >&6; }
21427 else
21428 CPPFLAGS="$am_save_CPPFLAGS"
21429 LIBICONV=
21430 LTLIBICONV=
21431 fi
21432
21433
21434
21435 if test "$am_cv_func_iconv" = yes; then
21436 { echo "$as_me:$LINENO: checking for iconv declaration" >&5
21437 echo $ECHO_N "checking for iconv declaration... $ECHO_C" >&6; }
21438 if test "${am_cv_proto_iconv+set}" = set; then
21439 echo $ECHO_N "(cached) $ECHO_C" >&6
21440 else
21441
21442 cat >conftest.$ac_ext <<_ACEOF
21443 /* confdefs.h. */
21444 _ACEOF
21445 cat confdefs.h >>conftest.$ac_ext
21446 cat >>conftest.$ac_ext <<_ACEOF
21447 /* end confdefs.h. */
21448
21449 #include <stdlib.h>
21450 #include <iconv.h>
21451 extern
21452 #ifdef __cplusplus
21453 "C"
21454 #endif
21455 #if defined(__STDC__) || defined(__cplusplus)
21456 size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
21457 #else
21458 size_t iconv();
21459 #endif
21460
21461 int
21462 main ()
21463 {
21464
21465 ;
21466 return 0;
21467 }
21468 _ACEOF
21469 rm -f conftest.$ac_objext
21470 if { (ac_try="$ac_compile"
21471 case "(($ac_try" in
21472 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
21473 *) ac_try_echo=$ac_try;;
21474 esac
21475 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
21476 (eval "$ac_compile") 2>conftest.er1
21477 ac_status=$?
21478 grep -v '^ *+' conftest.er1 >conftest.err
21479 rm -f conftest.er1
21480 cat conftest.err >&5
21481 echo "$as_me:$LINENO: \$? = $ac_status" >&5
21482 (exit $ac_status); } && {
21483 test -z "$ac_c_werror_flag" ||
21484 test ! -s conftest.err
21485 } && test -s conftest.$ac_objext; then
21486 am_cv_proto_iconv_arg1=""
21487 else
21488 echo "$as_me: failed program was:" >&5
21489 sed 's/^/| /' conftest.$ac_ext >&5
21490
21491 am_cv_proto_iconv_arg1="const"
21492 fi
21493
21494 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
21495 am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"
21496 fi
21497
21498 am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
21499 { echo "$as_me:$LINENO: result: ${ac_t:-
21500 }$am_cv_proto_iconv" >&5
21501 echo "${ECHO_T}${ac_t:-
21502 }$am_cv_proto_iconv" >&6; }
21503
21504 cat >>confdefs.h <<_ACEOF
21505 #define ICONV_CONST $am_cv_proto_iconv_arg1
21506 _ACEOF
21507
21508 fi
21509
21510 # if test -n "$LIBICONV" ; then
21511 # LIBS="$LIBS $LIBICONV"
21512 # fi
21513
21514
21515 for ac_header in iconv.h
21516 do
21517 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
21518 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
21519 { echo "$as_me:$LINENO: checking for $ac_header" >&5
21520 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
21521 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
21522 echo $ECHO_N "(cached) $ECHO_C" >&6
21523 fi
21524 ac_res=`eval echo '${'$as_ac_Header'}'`
21525 { echo "$as_me:$LINENO: result: $ac_res" >&5
21526 echo "${ECHO_T}$ac_res" >&6; }
21527 else
21528 # Is the header compilable?
21529 { echo "$as_me:$LINENO: checking $ac_header usability" >&5
21530 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
21531 cat >conftest.$ac_ext <<_ACEOF
21532 /* confdefs.h. */
21533 _ACEOF
21534 cat confdefs.h >>conftest.$ac_ext
21535 cat >>conftest.$ac_ext <<_ACEOF
21536 /* end confdefs.h. */
21537 $ac_includes_default
21538 #include <$ac_header>
21539 _ACEOF
21540 rm -f conftest.$ac_objext
21541 if { (ac_try="$ac_compile"
21542 case "(($ac_try" in
21543 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
21544 *) ac_try_echo=$ac_try;;
21545 esac
21546 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
21547 (eval "$ac_compile") 2>conftest.er1
21548 ac_status=$?
21549 grep -v '^ *+' conftest.er1 >conftest.err
21550 rm -f conftest.er1
21551 cat conftest.err >&5
21552 echo "$as_me:$LINENO: \$? = $ac_status" >&5
21553 (exit $ac_status); } && {
21554 test -z "$ac_c_werror_flag" ||
21555 test ! -s conftest.err
21556 } && test -s conftest.$ac_objext; then
21557 ac_header_compiler=yes
21558 else
21559 echo "$as_me: failed program was:" >&5
21560 sed 's/^/| /' conftest.$ac_ext >&5
21561
21562 ac_header_compiler=no
21563 fi
21564
21565 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
21566 { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
21567 echo "${ECHO_T}$ac_header_compiler" >&6; }
21568
21569 # Is the header present?
21570 { echo "$as_me:$LINENO: checking $ac_header presence" >&5
21571 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
21572 cat >conftest.$ac_ext <<_ACEOF
21573 /* confdefs.h. */
21574 _ACEOF
21575 cat confdefs.h >>conftest.$ac_ext
21576 cat >>conftest.$ac_ext <<_ACEOF
21577 /* end confdefs.h. */
21578 #include <$ac_header>
21579 _ACEOF
21580 if { (ac_try="$ac_cpp conftest.$ac_ext"
21581 case "(($ac_try" in
21582 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
21583 *) ac_try_echo=$ac_try;;
21584 esac
21585 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
21586 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
21587 ac_status=$?
21588 grep -v '^ *+' conftest.er1 >conftest.err
21589 rm -f conftest.er1
21590 cat conftest.err >&5
21591 echo "$as_me:$LINENO: \$? = $ac_status" >&5
21592 (exit $ac_status); } >/dev/null && {
21593 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
21594 test ! -s conftest.err
21595 }; then
21596 ac_header_preproc=yes
21597 else
21598 echo "$as_me: failed program was:" >&5
21599 sed 's/^/| /' conftest.$ac_ext >&5
21600
21601 ac_header_preproc=no
21602 fi
21603
21604 rm -f conftest.err conftest.$ac_ext
21605 { echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
21606 echo "${ECHO_T}$ac_header_preproc" >&6; }
21607
21608 # So? What about this header?
21609 case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
21610 yes:no: )
21611 { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
21612 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
21613 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
21614 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
21615 ac_header_preproc=yes
21616 ;;
21617 no:yes:* )
21618 { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
21619 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
21620 { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
21621 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
21622 { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
21623 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
21624 { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
21625 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
21626 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
21627 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
21628 { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
21629 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
21630 ( cat <<\_ASBOX
21631 ## ------------------------------------ ##
21632 ## Report this to http://bugs.libgd.org ##
21633 ## ------------------------------------ ##
21634 _ASBOX
21635 ) | sed "s/^/$as_me: WARNING: /" >&2
21636 ;;
21637 esac
21638 { echo "$as_me:$LINENO: checking for $ac_header" >&5
21639 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
21640 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
21641 echo $ECHO_N "(cached) $ECHO_C" >&6
21642 else
21643 eval "$as_ac_Header=\$ac_header_preproc"
21644 fi
21645 ac_res=`eval echo '${'$as_ac_Header'}'`
21646 { echo "$as_me:$LINENO: result: $ac_res" >&5
21647 echo "${ECHO_T}$ac_res" >&6; }
21648
21649 fi
21650 if test `eval echo '${'$as_ac_Header'}'` = yes; then
21651 cat >>confdefs.h <<_ACEOF
21652 #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
21653 _ACEOF
21654 { echo "$as_me:$LINENO: checking whether iconv.h defines iconv_t" >&5
21655 echo $ECHO_N "checking whether iconv.h defines iconv_t... $ECHO_C" >&6; }
21656 cat >conftest.$ac_ext <<_ACEOF
21657 /* confdefs.h. */
21658 _ACEOF
21659 cat confdefs.h >>conftest.$ac_ext
21660 cat >>conftest.$ac_ext <<_ACEOF
21661 /* end confdefs.h. */
21662 #include <iconv.h>
21663
21664 _ACEOF
21665 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
21666 $EGREP "typedef.*iconv_t" >/dev/null 2>&1; then
21667 { echo "$as_me:$LINENO: result: yes" >&5
21668 echo "${ECHO_T}yes" >&6; }
21669
21670 cat >>confdefs.h <<\_ACEOF
21671 #define HAVE_ICONV_T_DEF 1
21672 _ACEOF
21673
21674 else
21675 { echo "$as_me:$LINENO: result: no" >&5
21676 echo "${ECHO_T}no" >&6; }
21677 fi
21678 rm -f conftest*
21679
21680 fi
21681
21682 done
21683
21684
21685 # Checks for typedefs, structures, and compiler characteristics.
21686 #AC_C_CONST
21687 #AC_TYPE_SIZE_T
21688
21689 # Checks for library functions.
21690 #AC_FUNC_ERROR_AT_LINE
21691 #AC_FUNC_MALLOC
21692 #AC_FUNC_REALLOC
21693 #AC_FUNC_VPRINTF
21694 #AC_CHECK_FUNCS([floor memset sqrt strchr strdup strtol])
21695
21696
21697
21698 { echo "$as_me:$LINENO: checking for sin" >&5
21699 echo $ECHO_N "checking for sin... $ECHO_C" >&6; }
21700 if test "${ac_cv_func_sin+set}" = set; then
21701 echo $ECHO_N "(cached) $ECHO_C" >&6
21702 else
21703 cat >conftest.$ac_ext <<_ACEOF
21704 /* confdefs.h. */
21705 _ACEOF
21706 cat confdefs.h >>conftest.$ac_ext
21707 cat >>conftest.$ac_ext <<_ACEOF
21708 /* end confdefs.h. */
21709 /* Define sin to an innocuous variant, in case <limits.h> declares sin.
21710 For example, HP-UX 11i <limits.h> declares gettimeofday. */
21711 #define sin innocuous_sin
21712
21713 /* System header to define __stub macros and hopefully few prototypes,
21714 which can conflict with char sin (); below.
21715 Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
21716 <limits.h> exists even on freestanding compilers. */
21717
21718 #ifdef __STDC__
21719 # include <limits.h>
21720 #else
21721 # include <assert.h>
21722 #endif
21723
21724 #undef sin
21725
21726 /* Override any GCC internal prototype to avoid an error.
21727 Use char because int might match the return type of a GCC
21728 builtin and then its argument prototype would still apply. */
21729 #ifdef __cplusplus
21730 extern "C"
21731 #endif
21732 char sin ();
21733 /* The GNU C library defines this for functions which it implements
21734 to always fail with ENOSYS. Some functions are actually named
21735 something starting with __ and the normal name is an alias. */
21736 #if defined __stub_sin || defined __stub___sin
21737 choke me
21738 #endif
21739
21740 int
21741 main ()
21742 {
21743 return sin ();
21744 ;
21745 return 0;
21746 }
21747 _ACEOF
21748 rm -f conftest.$ac_objext conftest$ac_exeext
21749 if { (ac_try="$ac_link"
21750 case "(($ac_try" in
21751 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
21752 *) ac_try_echo=$ac_try;;
21753 esac
21754 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
21755 (eval "$ac_link") 2>conftest.er1
21756 ac_status=$?
21757 grep -v '^ *+' conftest.er1 >conftest.err
21758 rm -f conftest.er1
21759 cat conftest.err >&5
21760 echo "$as_me:$LINENO: \$? = $ac_status" >&5
21761 (exit $ac_status); } && {
21762 test -z "$ac_c_werror_flag" ||
21763 test ! -s conftest.err
21764 } && test -s conftest$ac_exeext &&
21765 $as_test_x conftest$ac_exeext; then
21766 ac_cv_func_sin=yes
21767 else
21768 echo "$as_me: failed program was:" >&5
21769 sed 's/^/| /' conftest.$ac_ext >&5
21770
21771 ac_cv_func_sin=no
21772 fi
21773
21774 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
21775 conftest$ac_exeext conftest.$ac_ext
21776 fi
21777 { echo "$as_me:$LINENO: result: $ac_cv_func_sin" >&5
21778 echo "${ECHO_T}$ac_cv_func_sin" >&6; }
21779 if test $ac_cv_func_sin = yes; then
21780 :
21781 else
21782
21783 { echo "$as_me:$LINENO: checking for sin in -lm" >&5
21784 echo $ECHO_N "checking for sin in -lm... $ECHO_C" >&6; }
21785 if test "${ac_cv_lib_m_sin+set}" = set; then
21786 echo $ECHO_N "(cached) $ECHO_C" >&6
21787 else
21788 ac_check_lib_save_LIBS=$LIBS
21789 LIBS="-lm $LIBS"
21790 cat >conftest.$ac_ext <<_ACEOF
21791 /* confdefs.h. */
21792 _ACEOF
21793 cat confdefs.h >>conftest.$ac_ext
21794 cat >>conftest.$ac_ext <<_ACEOF
21795 /* end confdefs.h. */
21796
21797 /* Override any GCC internal prototype to avoid an error.
21798 Use char because int might match the return type of a GCC
21799 builtin and then its argument prototype would still apply. */
21800 #ifdef __cplusplus
21801 extern "C"
21802 #endif
21803 char sin ();
21804 int
21805 main ()
21806 {
21807 return sin ();
21808 ;
21809 return 0;
21810 }
21811 _ACEOF
21812 rm -f conftest.$ac_objext conftest$ac_exeext
21813 if { (ac_try="$ac_link"
21814 case "(($ac_try" in
21815 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
21816 *) ac_try_echo=$ac_try;;
21817 esac
21818 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
21819 (eval "$ac_link") 2>conftest.er1
21820 ac_status=$?
21821 grep -v '^ *+' conftest.er1 >conftest.err
21822 rm -f conftest.er1
21823 cat conftest.err >&5
21824 echo "$as_me:$LINENO: \$? = $ac_status" >&5
21825 (exit $ac_status); } && {
21826 test -z "$ac_c_werror_flag" ||
21827 test ! -s conftest.err
21828 } && test -s conftest$ac_exeext &&
21829 $as_test_x conftest$ac_exeext; then
21830 ac_cv_lib_m_sin=yes
21831 else
21832 echo "$as_me: failed program was:" >&5
21833 sed 's/^/| /' conftest.$ac_ext >&5
21834
21835 ac_cv_lib_m_sin=no
21836 fi
21837
21838 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
21839 conftest$ac_exeext conftest.$ac_ext
21840 LIBS=$ac_check_lib_save_LIBS
21841 fi
21842 { echo "$as_me:$LINENO: result: $ac_cv_lib_m_sin" >&5
21843 echo "${ECHO_T}$ac_cv_lib_m_sin" >&6; }
21844 if test $ac_cv_lib_m_sin = yes; then
21845 cat >>confdefs.h <<_ACEOF
21846 #define HAVE_LIBM 1
21847 _ACEOF
21848
21849 LIBS="-lm $LIBS"
21850
21851 fi
21852
21853 fi
21854
21855
21856 { echo "$as_me:$LINENO: checking for deflate in -lz" >&5
21857 echo $ECHO_N "checking for deflate in -lz... $ECHO_C" >&6; }
21858 if test "${ac_cv_lib_z_deflate+set}" = set; then
21859 echo $ECHO_N "(cached) $ECHO_C" >&6
21860 else
21861 ac_check_lib_save_LIBS=$LIBS
21862 LIBS="-lz $LIBS"
21863 cat >conftest.$ac_ext <<_ACEOF
21864 /* confdefs.h. */
21865 _ACEOF
21866 cat confdefs.h >>conftest.$ac_ext
21867 cat >>conftest.$ac_ext <<_ACEOF
21868 /* end confdefs.h. */
21869
21870 /* Override any GCC internal prototype to avoid an error.
21871 Use char because int might match the return type of a GCC
21872 builtin and then its argument prototype would still apply. */
21873 #ifdef __cplusplus
21874 extern "C"
21875 #endif
21876 char deflate ();
21877 int
21878 main ()
21879 {
21880 return deflate ();
21881 ;
21882 return 0;
21883 }
21884 _ACEOF
21885 rm -f conftest.$ac_objext conftest$ac_exeext
21886 if { (ac_try="$ac_link"
21887 case "(($ac_try" in
21888 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
21889 *) ac_try_echo=$ac_try;;
21890 esac
21891 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
21892 (eval "$ac_link") 2>conftest.er1
21893 ac_status=$?
21894 grep -v '^ *+' conftest.er1 >conftest.err
21895 rm -f conftest.er1
21896 cat conftest.err >&5
21897 echo "$as_me:$LINENO: \$? = $ac_status" >&5
21898 (exit $ac_status); } && {
21899 test -z "$ac_c_werror_flag" ||
21900 test ! -s conftest.err
21901 } && test -s conftest$ac_exeext &&
21902 $as_test_x conftest$ac_exeext; then
21903 ac_cv_lib_z_deflate=yes
21904 else
21905 echo "$as_me: failed program was:" >&5
21906 sed 's/^/| /' conftest.$ac_ext >&5
21907
21908 ac_cv_lib_z_deflate=no
21909 fi
21910
21911 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
21912 conftest$ac_exeext conftest.$ac_ext
21913 LIBS=$ac_check_lib_save_LIBS
21914 fi
21915 { echo "$as_me:$LINENO: result: $ac_cv_lib_z_deflate" >&5
21916 echo "${ECHO_T}$ac_cv_lib_z_deflate" >&6; }
21917 if test $ac_cv_lib_z_deflate = yes; then
21918 LIBS="-lz $LIBS"
21919
21920 cat >>confdefs.h <<\_ACEOF
21921 #define HAVE_LIBZ 1
21922 _ACEOF
21923
21924 else
21925 { echo "$as_me:$LINENO: WARNING: zlib is required - see http://www.gzip.org/zlib/" >&5
21926 echo "$as_me: WARNING: zlib is required - see http://www.gzip.org/zlib/" >&2;}
21927 fi
21928
21929
21930
21931 # Check whether --with-png was given.
21932 if test "${with_png+set}" = set; then
21933 withval=$with_png;
21934 else
21935 withval=yes
21936 fi
21937
21938
21939 # libpng12.so is a nightmare. We have to test separately for
21940 # libpng12-config and libpng-config. If we find libpng12-config,
21941 # we don't look for the other, which will just be a symlink to it,
21942 # confusing autoconf into thinking the library itself will be named -lpng,
21943 # which it won't be. Awful. This code will suffice unless the libpng
21944 # authors decide to do this AGAIN. Which I really hope they won't. TBB
21945
21946 if test "$withval" != no; then
21947 # Extract the first word of "libpng12-config", so it can be a program name with args.
21948 set dummy libpng12-config; ac_word=$2
21949 { echo "$as_me:$LINENO: checking for $ac_word" >&5
21950 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
21951 if test "${ac_cv_path_LIBPNG12_CONFIG+set}" = set; then
21952 echo $ECHO_N "(cached) $ECHO_C" >&6
21953 else
21954 case $LIBPNG12_CONFIG in
21955 [\\/]* | ?:[\\/]*)
21956 ac_cv_path_LIBPNG12_CONFIG="$LIBPNG12_CONFIG" # Let the user override the test with a path.
21957 ;;
21958 *)
21959 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
21960 for as_dir in $PATH
21961 do
21962 IFS=$as_save_IFS
21963 test -z "$as_dir" && as_dir=.
21964 for ac_exec_ext in '' $ac_executable_extensions; do
21965 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
21966 ac_cv_path_LIBPNG12_CONFIG="$as_dir/$ac_word$ac_exec_ext"
21967 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
21968 break 2
21969 fi
21970 done
21971 done
21972 IFS=$as_save_IFS
21973
21974 ;;
21975 esac
21976 fi
21977 LIBPNG12_CONFIG=$ac_cv_path_LIBPNG12_CONFIG
21978 if test -n "$LIBPNG12_CONFIG"; then
21979 { echo "$as_me:$LINENO: result: $LIBPNG12_CONFIG" >&5
21980 echo "${ECHO_T}$LIBPNG12_CONFIG" >&6; }
21981 else
21982 { echo "$as_me:$LINENO: result: no" >&5
21983 echo "${ECHO_T}no" >&6; }
21984 fi
21985
21986
21987 # Extract the first word of "libpng-config", so it can be a program name with args.
21988 set dummy libpng-config; ac_word=$2
21989 { echo "$as_me:$LINENO: checking for $ac_word" >&5
21990 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
21991 if test "${ac_cv_path_LIBPNG_CONFIG+set}" = set; then
21992 echo $ECHO_N "(cached) $ECHO_C" >&6
21993 else
21994 case $LIBPNG_CONFIG in
21995 [\\/]* | ?:[\\/]*)
21996 ac_cv_path_LIBPNG_CONFIG="$LIBPNG_CONFIG" # Let the user override the test with a path.
21997 ;;
21998 *)
21999 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
22000 for as_dir in $PATH
22001 do
22002 IFS=$as_save_IFS
22003 test -z "$as_dir" && as_dir=.
22004 for ac_exec_ext in '' $ac_executable_extensions; do
22005 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
22006 ac_cv_path_LIBPNG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
22007 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
22008 break 2
22009 fi
22010 done
22011 done
22012 IFS=$as_save_IFS
22013
22014 ;;
22015 esac
22016 fi
22017 LIBPNG_CONFIG=$ac_cv_path_LIBPNG_CONFIG
22018 if test -n "$LIBPNG_CONFIG"; then
22019 { echo "$as_me:$LINENO: result: $LIBPNG_CONFIG" >&5
22020 echo "${ECHO_T}$LIBPNG_CONFIG" >&6; }
22021 else
22022 { echo "$as_me:$LINENO: result: no" >&5
22023 echo "${ECHO_T}no" >&6; }
22024 fi
22025
22026
22027 if test -n "$LIBPNG12_CONFIG"; then
22028 libpng_CPPFLAGS=`libpng12-config --cflags`
22029 # should be --ldopts, but it's currently broken
22030 libpng_LDFLAGS=`libpng12-config --ldflags`
22031 libpng_LDFLAGS=`echo " $libpng_LDFLAGS" | sed 's/ -l[^ ][^ ]*//g'`
22032 elif test -n "$LIBPNG_CONFIG"; then
22033 libpng_CPPFLAGS=`libpng-config --cflags`
22034 # should be --ldopts, but it's currently broken
22035 libpng_LDFLAGS=`libpng-config --ldflags`
22036 libpng_LDFLAGS=`echo " $libpng_LDFLAGS" | sed 's/ -l[^ ][^ ]*//g'`
22037 elif test -d "$withval"; then
22038 libpng_CPPFLAGS="-I$withval/include"
22039 libpng_LDFLAGS="-L$withval/lib"
22040 fi
22041
22042
22043 for ac_header in png.h
22044 do
22045 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
22046 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
22047 { echo "$as_me:$LINENO: checking for $ac_header" >&5
22048 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
22049 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
22050 echo $ECHO_N "(cached) $ECHO_C" >&6
22051 fi
22052 ac_res=`eval echo '${'$as_ac_Header'}'`
22053 { echo "$as_me:$LINENO: result: $ac_res" >&5
22054 echo "${ECHO_T}$ac_res" >&6; }
22055 else
22056 # Is the header compilable?
22057 { echo "$as_me:$LINENO: checking $ac_header usability" >&5
22058 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
22059 cat >conftest.$ac_ext <<_ACEOF
22060 /* confdefs.h. */
22061 _ACEOF
22062 cat confdefs.h >>conftest.$ac_ext
22063 cat >>conftest.$ac_ext <<_ACEOF
22064 /* end confdefs.h. */
22065 $ac_includes_default
22066 #include <$ac_header>
22067 _ACEOF
22068 rm -f conftest.$ac_objext
22069 if { (ac_try="$ac_compile"
22070 case "(($ac_try" in
22071 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
22072 *) ac_try_echo=$ac_try;;
22073 esac
22074 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
22075 (eval "$ac_compile") 2>conftest.er1
22076 ac_status=$?
22077 grep -v '^ *+' conftest.er1 >conftest.err
22078 rm -f conftest.er1
22079 cat conftest.err >&5
22080 echo "$as_me:$LINENO: \$? = $ac_status" >&5
22081 (exit $ac_status); } && {
22082 test -z "$ac_c_werror_flag" ||
22083 test ! -s conftest.err
22084 } && test -s conftest.$ac_objext; then
22085 ac_header_compiler=yes
22086 else
22087 echo "$as_me: failed program was:" >&5
22088 sed 's/^/| /' conftest.$ac_ext >&5
22089
22090 ac_header_compiler=no
22091 fi
22092
22093 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
22094 { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
22095 echo "${ECHO_T}$ac_header_compiler" >&6; }
22096
22097 # Is the header present?
22098 { echo "$as_me:$LINENO: checking $ac_header presence" >&5
22099 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
22100 cat >conftest.$ac_ext <<_ACEOF
22101 /* confdefs.h. */
22102 _ACEOF
22103 cat confdefs.h >>conftest.$ac_ext
22104 cat >>conftest.$ac_ext <<_ACEOF
22105 /* end confdefs.h. */
22106 #include <$ac_header>
22107 _ACEOF
22108 if { (ac_try="$ac_cpp conftest.$ac_ext"
22109 case "(($ac_try" in
22110 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
22111 *) ac_try_echo=$ac_try;;
22112 esac
22113 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
22114 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
22115 ac_status=$?
22116 grep -v '^ *+' conftest.er1 >conftest.err
22117 rm -f conftest.er1
22118 cat conftest.err >&5
22119 echo "$as_me:$LINENO: \$? = $ac_status" >&5
22120 (exit $ac_status); } >/dev/null && {
22121 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
22122 test ! -s conftest.err
22123 }; then
22124 ac_header_preproc=yes
22125 else
22126 echo "$as_me: failed program was:" >&5
22127 sed 's/^/| /' conftest.$ac_ext >&5
22128
22129 ac_header_preproc=no
22130 fi
22131
22132 rm -f conftest.err conftest.$ac_ext
22133 { echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
22134 echo "${ECHO_T}$ac_header_preproc" >&6; }
22135
22136 # So? What about this header?
22137 case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
22138 yes:no: )
22139 { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
22140 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
22141 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
22142 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
22143 ac_header_preproc=yes
22144 ;;
22145 no:yes:* )
22146 { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
22147 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
22148 { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
22149 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
22150 { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
22151 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
22152 { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
22153 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
22154 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
22155 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
22156 { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
22157 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
22158 ( cat <<\_ASBOX
22159 ## ------------------------------------ ##
22160 ## Report this to http://bugs.libgd.org ##
22161 ## ------------------------------------ ##
22162 _ASBOX
22163 ) | sed "s/^/$as_me: WARNING: /" >&2
22164 ;;
22165 esac
22166 { echo "$as_me:$LINENO: checking for $ac_header" >&5
22167 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
22168 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
22169 echo $ECHO_N "(cached) $ECHO_C" >&6
22170 else
22171 eval "$as_ac_Header=\$ac_header_preproc"
22172 fi
22173 ac_res=`eval echo '${'$as_ac_Header'}'`
22174 { echo "$as_me:$LINENO: result: $ac_res" >&5
22175 echo "${ECHO_T}$ac_res" >&6; }
22176
22177 fi
22178 if test `eval echo '${'$as_ac_Header'}'` = yes; then
22179 cat >>confdefs.h <<_ACEOF
22180 #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
22181 _ACEOF
22182
22183 else
22184
22185 for ac_header in libpng/png.h
22186 do
22187 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
22188 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
22189 { echo "$as_me:$LINENO: checking for $ac_header" >&5
22190 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
22191 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
22192 echo $ECHO_N "(cached) $ECHO_C" >&6
22193 fi
22194 ac_res=`eval echo '${'$as_ac_Header'}'`
22195 { echo "$as_me:$LINENO: result: $ac_res" >&5
22196 echo "${ECHO_T}$ac_res" >&6; }
22197 else
22198 # Is the header compilable?
22199 { echo "$as_me:$LINENO: checking $ac_header usability" >&5
22200 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
22201 cat >conftest.$ac_ext <<_ACEOF
22202 /* confdefs.h. */
22203 _ACEOF
22204 cat confdefs.h >>conftest.$ac_ext
22205 cat >>conftest.$ac_ext <<_ACEOF
22206 /* end confdefs.h. */
22207 $ac_includes_default
22208 #include <$ac_header>
22209 _ACEOF
22210 rm -f conftest.$ac_objext
22211 if { (ac_try="$ac_compile"
22212 case "(($ac_try" in
22213 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
22214 *) ac_try_echo=$ac_try;;
22215 esac
22216 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
22217 (eval "$ac_compile") 2>conftest.er1
22218 ac_status=$?
22219 grep -v '^ *+' conftest.er1 >conftest.err
22220 rm -f conftest.er1
22221 cat conftest.err >&5
22222 echo "$as_me:$LINENO: \$? = $ac_status" >&5
22223 (exit $ac_status); } && {
22224 test -z "$ac_c_werror_flag" ||
22225 test ! -s conftest.err
22226 } && test -s conftest.$ac_objext; then
22227 ac_header_compiler=yes
22228 else
22229 echo "$as_me: failed program was:" >&5
22230 sed 's/^/| /' conftest.$ac_ext >&5
22231
22232 ac_header_compiler=no
22233 fi
22234
22235 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
22236 { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
22237 echo "${ECHO_T}$ac_header_compiler" >&6; }
22238
22239 # Is the header present?
22240 { echo "$as_me:$LINENO: checking $ac_header presence" >&5
22241 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
22242 cat >conftest.$ac_ext <<_ACEOF
22243 /* confdefs.h. */
22244 _ACEOF
22245 cat confdefs.h >>conftest.$ac_ext
22246 cat >>conftest.$ac_ext <<_ACEOF
22247 /* end confdefs.h. */
22248 #include <$ac_header>
22249 _ACEOF
22250 if { (ac_try="$ac_cpp conftest.$ac_ext"
22251 case "(($ac_try" in
22252 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
22253 *) ac_try_echo=$ac_try;;
22254 esac
22255 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
22256 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
22257 ac_status=$?
22258 grep -v '^ *+' conftest.er1 >conftest.err
22259 rm -f conftest.er1
22260 cat conftest.err >&5
22261 echo "$as_me:$LINENO: \$? = $ac_status" >&5
22262 (exit $ac_status); } >/dev/null && {
22263 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
22264 test ! -s conftest.err
22265 }; then
22266 ac_header_preproc=yes
22267 else
22268 echo "$as_me: failed program was:" >&5
22269 sed 's/^/| /' conftest.$ac_ext >&5
22270
22271 ac_header_preproc=no
22272 fi
22273
22274 rm -f conftest.err conftest.$ac_ext
22275 { echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
22276 echo "${ECHO_T}$ac_header_preproc" >&6; }
22277
22278 # So? What about this header?
22279 case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
22280 yes:no: )
22281 { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
22282 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
22283 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
22284 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
22285 ac_header_preproc=yes
22286 ;;
22287 no:yes:* )
22288 { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
22289 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
22290 { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
22291 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
22292 { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
22293 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
22294 { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
22295 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
22296 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
22297 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
22298 { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
22299 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
22300 ( cat <<\_ASBOX
22301 ## ------------------------------------ ##
22302 ## Report this to http://bugs.libgd.org ##
22303 ## ------------------------------------ ##
22304 _ASBOX
22305 ) | sed "s/^/$as_me: WARNING: /" >&2
22306 ;;
22307 esac
22308 { echo "$as_me:$LINENO: checking for $ac_header" >&5
22309 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
22310 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
22311 echo $ECHO_N "(cached) $ECHO_C" >&6
22312 else
22313 eval "$as_ac_Header=\$ac_header_preproc"
22314 fi
22315 ac_res=`eval echo '${'$as_ac_Header'}'`
22316 { echo "$as_me:$LINENO: result: $ac_res" >&5
22317 echo "${ECHO_T}$ac_res" >&6; }
22318
22319 fi
22320 if test `eval echo '${'$as_ac_Header'}'` = yes; then
22321 cat >>confdefs.h <<_ACEOF
22322 #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
22323 _ACEOF
22324 CPPFLAGS="$CPPFLAGS $libpng_CPPFLAGS/libpng"
22325 else
22326 CPPFLAGS="$_cppflags"
22327 fi
22328
22329 done
22330
22331 fi
22332
22333 done
22334
22335
22336 _ldflags="$LDFLAGS"
22337 LDFLAGS="$libpng_LDFLAGS $LDFLAGS"
22338
22339 if test -n "$LIBPNG12_CONFIG"; then
22340 { echo "$as_me:$LINENO: checking for png_create_read_struct in -lpng12" >&5
22341 echo $ECHO_N "checking for png_create_read_struct in -lpng12... $ECHO_C" >&6; }
22342 if test "${ac_cv_lib_png12_png_create_read_struct+set}" = set; then
22343 echo $ECHO_N "(cached) $ECHO_C" >&6
22344 else
22345 ac_check_lib_save_LIBS=$LIBS
22346 LIBS="-lpng12 $LIBS"
22347 cat >conftest.$ac_ext <<_ACEOF
22348 /* confdefs.h. */
22349 _ACEOF
22350 cat confdefs.h >>conftest.$ac_ext
22351 cat >>conftest.$ac_ext <<_ACEOF
22352 /* end confdefs.h. */
22353
22354 /* Override any GCC internal prototype to avoid an error.
22355 Use char because int might match the return type of a GCC
22356 builtin and then its argument prototype would still apply. */
22357 #ifdef __cplusplus
22358 extern "C"
22359 #endif
22360 char png_create_read_struct ();
22361 int
22362 main ()
22363 {
22364 return png_create_read_struct ();
22365 ;
22366 return 0;
22367 }
22368 _ACEOF
22369 rm -f conftest.$ac_objext conftest$ac_exeext
22370 if { (ac_try="$ac_link"
22371 case "(($ac_try" in
22372 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
22373 *) ac_try_echo=$ac_try;;
22374 esac
22375 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
22376 (eval "$ac_link") 2>conftest.er1
22377 ac_status=$?
22378 grep -v '^ *+' conftest.er1 >conftest.err
22379 rm -f conftest.er1
22380 cat conftest.err >&5
22381 echo "$as_me:$LINENO: \$? = $ac_status" >&5
22382 (exit $ac_status); } && {
22383 test -z "$ac_c_werror_flag" ||
22384 test ! -s conftest.err
22385 } && test -s conftest$ac_exeext &&
22386 $as_test_x conftest$ac_exeext; then
22387 ac_cv_lib_png12_png_create_read_struct=yes
22388 else
22389 echo "$as_me: failed program was:" >&5
22390 sed 's/^/| /' conftest.$ac_ext >&5
22391
22392 ac_cv_lib_png12_png_create_read_struct=no
22393 fi
22394
22395 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
22396 conftest$ac_exeext conftest.$ac_ext
22397 LIBS=$ac_check_lib_save_LIBS
22398 fi
22399 { echo "$as_me:$LINENO: result: $ac_cv_lib_png12_png_create_read_struct" >&5
22400 echo "${ECHO_T}$ac_cv_lib_png12_png_create_read_struct" >&6; }
22401 if test $ac_cv_lib_png12_png_create_read_struct = yes; then
22402 LIBS="-lpng12 $LIBS"
22403 FEATURES="GD_PNG $FEATURES"
22404
22405 cat >>confdefs.h <<\_ACEOF
22406 #define HAVE_LIBPNG 1
22407 _ACEOF
22408
22409 else
22410 LDFLAGS="$_ldflags"
22411 { echo "$as_me:$LINENO: WARNING: libpng is required - see http://www.libpng.org/pub/png/" >&5
22412 echo "$as_me: WARNING: libpng is required - see http://www.libpng.org/pub/png/" >&2;}
22413 fi
22414
22415 elif test -n "$LIBPNG_CONFIG"; then
22416 { echo "$as_me:$LINENO: checking for png_create_read_struct in -lpng" >&5
22417 echo $ECHO_N "checking for png_create_read_struct in -lpng... $ECHO_C" >&6; }
22418 if test "${ac_cv_lib_png_png_create_read_struct+set}" = set; then
22419 echo $ECHO_N "(cached) $ECHO_C" >&6
22420 else
22421 ac_check_lib_save_LIBS=$LIBS
22422 LIBS="-lpng $LIBS"
22423 cat >conftest.$ac_ext <<_ACEOF
22424 /* confdefs.h. */
22425 _ACEOF
22426 cat confdefs.h >>conftest.$ac_ext
22427 cat >>conftest.$ac_ext <<_ACEOF
22428 /* end confdefs.h. */
22429
22430 /* Override any GCC internal prototype to avoid an error.
22431 Use char because int might match the return type of a GCC
22432 builtin and then its argument prototype would still apply. */
22433 #ifdef __cplusplus
22434 extern "C"
22435 #endif
22436 char png_create_read_struct ();
22437 int
22438 main ()
22439 {
22440 return png_create_read_struct ();
22441 ;
22442 return 0;
22443 }
22444 _ACEOF
22445 rm -f conftest.$ac_objext conftest$ac_exeext
22446 if { (ac_try="$ac_link"
22447 case "(($ac_try" in
22448 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
22449 *) ac_try_echo=$ac_try;;
22450 esac
22451 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
22452 (eval "$ac_link") 2>conftest.er1
22453 ac_status=$?
22454 grep -v '^ *+' conftest.er1 >conftest.err
22455 rm -f conftest.er1
22456 cat conftest.err >&5
22457 echo "$as_me:$LINENO: \$? = $ac_status" >&5
22458 (exit $ac_status); } && {
22459 test -z "$ac_c_werror_flag" ||
22460 test ! -s conftest.err
22461 } && test -s conftest$ac_exeext &&
22462 $as_test_x conftest$ac_exeext; then
22463 ac_cv_lib_png_png_create_read_struct=yes
22464 else
22465 echo "$as_me: failed program was:" >&5
22466 sed 's/^/| /' conftest.$ac_ext >&5
22467
22468 ac_cv_lib_png_png_create_read_struct=no
22469 fi
22470
22471 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
22472 conftest$ac_exeext conftest.$ac_ext
22473 LIBS=$ac_check_lib_save_LIBS
22474 fi
22475 { echo "$as_me:$LINENO: result: $ac_cv_lib_png_png_create_read_struct" >&5
22476 echo "${ECHO_T}$ac_cv_lib_png_png_create_read_struct" >&6; }
22477 if test $ac_cv_lib_png_png_create_read_struct = yes; then
22478 LIBS="-lpng $LIBS"
22479 FEATURES="GD_PNG $FEATURES"
22480
22481 cat >>confdefs.h <<\_ACEOF
22482 #define HAVE_LIBPNG 1
22483 _ACEOF
22484
22485 else
22486 LDFLAGS="$_ldflags"
22487 { echo "$as_me:$LINENO: WARNING: libpng is required - see http://www.libpng.org/pub/png/" >&5
22488 echo "$as_me: WARNING: libpng is required - see http://www.libpng.org/pub/png/" >&2;}
22489 fi
22490
22491 else
22492 { echo "$as_me:$LINENO: checking for png_create_read_struct in -lpng" >&5
22493 echo $ECHO_N "checking for png_create_read_struct in -lpng... $ECHO_C" >&6; }
22494 if test "${ac_cv_lib_png_png_create_read_struct+set}" = set; then
22495 echo $ECHO_N "(cached) $ECHO_C" >&6
22496 else
22497 ac_check_lib_save_LIBS=$LIBS
22498 LIBS="-lpng $LIBS"
22499 cat >conftest.$ac_ext <<_ACEOF
22500 /* confdefs.h. */
22501 _ACEOF
22502 cat confdefs.h >>conftest.$ac_ext
22503 cat >>conftest.$ac_ext <<_ACEOF
22504 /* end confdefs.h. */
22505
22506 /* Override any GCC internal prototype to avoid an error.
22507 Use char because int might match the return type of a GCC
22508 builtin and then its argument prototype would still apply. */
22509 #ifdef __cplusplus
22510 extern "C"
22511 #endif
22512 char png_create_read_struct ();
22513 int
22514 main ()
22515 {
22516 return png_create_read_struct ();
22517 ;
22518 return 0;
22519 }
22520 _ACEOF
22521 rm -f conftest.$ac_objext conftest$ac_exeext
22522 if { (ac_try="$ac_link"
22523 case "(($ac_try" in
22524 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
22525 *) ac_try_echo=$ac_try;;
22526 esac
22527 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
22528 (eval "$ac_link") 2>conftest.er1
22529 ac_status=$?
22530 grep -v '^ *+' conftest.er1 >conftest.err
22531 rm -f conftest.er1
22532 cat conftest.err >&5
22533 echo "$as_me:$LINENO: \$? = $ac_status" >&5
22534 (exit $ac_status); } && {
22535 test -z "$ac_c_werror_flag" ||
22536 test ! -s conftest.err
22537 } && test -s conftest$ac_exeext &&
22538 $as_test_x conftest$ac_exeext; then
22539 ac_cv_lib_png_png_create_read_struct=yes
22540 else
22541 echo "$as_me: failed program was:" >&5
22542 sed 's/^/| /' conftest.$ac_ext >&5
22543
22544 ac_cv_lib_png_png_create_read_struct=no
22545 fi
22546
22547 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
22548 conftest$ac_exeext conftest.$ac_ext
22549 LIBS=$ac_check_lib_save_LIBS
22550 fi
22551 { echo "$as_me:$LINENO: result: $ac_cv_lib_png_png_create_read_struct" >&5
22552 echo "${ECHO_T}$ac_cv_lib_png_png_create_read_struct" >&6; }
22553 if test $ac_cv_lib_png_png_create_read_struct = yes; then
22554 LIBS="-lpng $LIBS"
22555 FEATURES="GD_PNG $FEATURES"
22556
22557 cat >>confdefs.h <<\_ACEOF
22558 #define HAVE_LIBPNG 1
22559 _ACEOF
22560
22561 else
22562 LDFLAGS="$_ldflags"
22563 { echo "$as_me:$LINENO: WARNING: libpng is required - see http://www.libpng.org/pub/png/" >&5
22564 echo "$as_me: WARNING: libpng is required - see http://www.libpng.org/pub/png/" >&2;}
22565 fi
22566
22567 fi
22568 else
22569 ac_cv_lib_png_png_create_read_struct=no
22570 { echo "$as_me:$LINENO: WARNING: libpng is required - see http://www.libpng.org/pub/png/" >&5
22571 echo "$as_me: WARNING: libpng is required - see http://www.libpng.org/pub/png/" >&2;}
22572 fi
22573
22574 #TBB: png12's png_create_read_struct is just as good
22575 #2.0.23: should be = not ==
22576 if test "$ac_cv_lib_png12_png_create_read_struct" = yes; then
22577 ac_cv_lib_png_png_create_read_struct=yes
22578 fi
22579
22580
22581 # Check whether --with-freetype was given.
22582 if test "${with_freetype+set}" = set; then
22583 withval=$with_freetype; if test "$withval" != no; then
22584 if test "$withval" != yes; then
22585 FREETYPE_DIR=$withval
22586 fi
22587 fi
22588 fi
22589
22590
22591 if test "$withval" != no; then
22592
22593 if test -n "$FREETYPE_DIR"; then
22594 # Extract the first word of "freetype-config", so it can be a program name with args.
22595 set dummy freetype-config; ac_word=$2
22596 { echo "$as_me:$LINENO: checking for $ac_word" >&5
22597 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
22598 if test "${ac_cv_path_FREETYPE_CONFIG+set}" = set; then
22599 echo $ECHO_N "(cached) $ECHO_C" >&6
22600 else
22601 case $FREETYPE_CONFIG in
22602 [\\/]* | ?:[\\/]*)
22603 ac_cv_path_FREETYPE_CONFIG="$FREETYPE_CONFIG" # Let the user override the test with a path.
22604 ;;
22605 *)
22606 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
22607 as_dummy="$FREETYPE_DIR/bin:$PATH"
22608 for as_dir in $as_dummy
22609 do
22610 IFS=$as_save_IFS
22611 test -z "$as_dir" && as_dir=.
22612 for ac_exec_ext in '' $ac_executable_extensions; do
22613 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
22614 ac_cv_path_FREETYPE_CONFIG="$as_dir/$ac_word$ac_exec_ext"
22615 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
22616 break 2
22617 fi
22618 done
22619 done
22620 IFS=$as_save_IFS
22621
22622 ;;
22623 esac
22624 fi
22625 FREETYPE_CONFIG=$ac_cv_path_FREETYPE_CONFIG
22626 if test -n "$FREETYPE_CONFIG"; then
22627 { echo "$as_me:$LINENO: result: $FREETYPE_CONFIG" >&5
22628 echo "${ECHO_T}$FREETYPE_CONFIG" >&6; }
22629 else
22630 { echo "$as_me:$LINENO: result: no" >&5
22631 echo "${ECHO_T}no" >&6; }
22632 fi
22633
22634
22635 else
22636 # Extract the first word of "freetype-config", so it can be a program name with args.
22637 set dummy freetype-config; ac_word=$2
22638 { echo "$as_me:$LINENO: checking for $ac_word" >&5
22639 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
22640 if test "${ac_cv_path_FREETYPE_CONFIG+set}" = set; then
22641 echo $ECHO_N "(cached) $ECHO_C" >&6
22642 else
22643 case $FREETYPE_CONFIG in
22644 [\\/]* | ?:[\\/]*)
22645 ac_cv_path_FREETYPE_CONFIG="$FREETYPE_CONFIG" # Let the user override the test with a path.
22646 ;;
22647 *)
22648 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
22649 for as_dir in $PATH
22650 do
22651 IFS=$as_save_IFS
22652 test -z "$as_dir" && as_dir=.
22653 for ac_exec_ext in '' $ac_executable_extensions; do
22654 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
22655 ac_cv_path_FREETYPE_CONFIG="$as_dir/$ac_word$ac_exec_ext"
22656 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
22657 break 2
22658 fi
22659 done
22660 done
22661 IFS=$as_save_IFS
22662
22663 ;;
22664 esac
22665 fi
22666 FREETYPE_CONFIG=$ac_cv_path_FREETYPE_CONFIG
22667 if test -n "$FREETYPE_CONFIG"; then
22668 { echo "$as_me:$LINENO: result: $FREETYPE_CONFIG" >&5
22669 echo "${ECHO_T}$FREETYPE_CONFIG" >&6; }
22670 else
22671 { echo "$as_me:$LINENO: result: no" >&5
22672 echo "${ECHO_T}no" >&6; }
22673 fi
22674
22675
22676 fi
22677
22678 if test -n "$FREETYPE_CONFIG"; then
22679 if test -n "$FREETYPE_DIR"; then
22680 libft_INCLUDES="`$FREETYPE_CONFIG --cflags` -I$FREETYPE_DIR/include"
22681 else
22682 libft_INCLUDES=`$FREETYPE_CONFIG --cflags`
22683 fi
22684 libft_LDFLAGS=`$FREETYPE_CONFIG --libs`
22685 libft_LDFLAGS=`echo " $libft_LDFLAGS" |sed 's/ -l[^ ][^ ]*//g'`
22686 else
22687 if test -n "$FREETYPE_DIR"; then
22688 libft_INCLUDES="-I$FREETYPE_DIR/include/freetype2 -I$FREETYPE_DIR/include"
22689 libft_LDFLAGS="-L$FREETYPE_DIR/lib"
22690 else
22691 libft_INCLUDES=""
22692 libft_LDFLAGS=""
22693 fi
22694 fi
22695
22696 _cppflags="$CPPFLAGS"
22697 _ldflags="$LDFLAGS"
22698 CPPFLAGS="$libft_INCLUDES $CPPFLAGS"
22699 LDFLAGS="$libft_LDFLAGS $LDFLAGS"
22700 SAVE_FEATURES=$FEATURES
22701 { echo "$as_me:$LINENO: checking for FT_Init_FreeType in -lfreetype" >&5
22702 echo $ECHO_N "checking for FT_Init_FreeType in -lfreetype... $ECHO_C" >&6; }
22703 if test "${ac_cv_lib_freetype_FT_Init_FreeType+set}" = set; then
22704 echo $ECHO_N "(cached) $ECHO_C" >&6
22705 else
22706 ac_check_lib_save_LIBS=$LIBS
22707 LIBS="-lfreetype $LIBS"
22708 cat >conftest.$ac_ext <<_ACEOF
22709 /* confdefs.h. */
22710 _ACEOF
22711 cat confdefs.h >>conftest.$ac_ext
22712 cat >>conftest.$ac_ext <<_ACEOF
22713 /* end confdefs.h. */
22714
22715 /* Override any GCC internal prototype to avoid an error.
22716 Use char because int might match the return type of a GCC
22717 builtin and then its argument prototype would still apply. */
22718 #ifdef __cplusplus
22719 extern "C"
22720 #endif
22721 char FT_Init_FreeType ();
22722 int
22723 main ()
22724 {
22725 return FT_Init_FreeType ();
22726 ;
22727 return 0;
22728 }
22729 _ACEOF
22730 rm -f conftest.$ac_objext conftest$ac_exeext
22731 if { (ac_try="$ac_link"
22732 case "(($ac_try" in
22733 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
22734 *) ac_try_echo=$ac_try;;
22735 esac
22736 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
22737 (eval "$ac_link") 2>conftest.er1
22738 ac_status=$?
22739 grep -v '^ *+' conftest.er1 >conftest.err
22740 rm -f conftest.er1
22741 cat conftest.err >&5
22742 echo "$as_me:$LINENO: \$? = $ac_status" >&5
22743 (exit $ac_status); } && {
22744 test -z "$ac_c_werror_flag" ||
22745 test ! -s conftest.err
22746 } && test -s conftest$ac_exeext &&
22747 $as_test_x conftest$ac_exeext; then
22748 ac_cv_lib_freetype_FT_Init_FreeType=yes
22749 else
22750 echo "$as_me: failed program was:" >&5
22751 sed 's/^/| /' conftest.$ac_ext >&5
22752
22753 ac_cv_lib_freetype_FT_Init_FreeType=no
22754 fi
22755
22756 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
22757 conftest$ac_exeext conftest.$ac_ext
22758 LIBS=$ac_check_lib_save_LIBS
22759 fi
22760 { echo "$as_me:$LINENO: result: $ac_cv_lib_freetype_FT_Init_FreeType" >&5
22761 echo "${ECHO_T}$ac_cv_lib_freetype_FT_Init_FreeType" >&6; }
22762 if test $ac_cv_lib_freetype_FT_Init_FreeType = yes; then
22763 LIBS="-lfreetype $LIBS"
22764 FEATURES="GD_FREETYPE $FEATURES"
22765
22766 cat >>confdefs.h <<\_ACEOF
22767 #define HAVE_LIBFREETYPE 1
22768 _ACEOF
22769
22770 else
22771 LDFLAGS="$_ldflags"
22772 { echo "$as_me:$LINENO: WARNING: not found - disabling freetype support" >&5
22773 echo "$as_me: WARNING: not found - disabling freetype support" >&2;}
22774 FEATURES=$SAVE_FEATURES
22775 fi
22776
22777
22778 #TBB: 2.0.26: newer gd versions require ft2build.h
22779
22780 for ac_header in ft2build.h
22781 do
22782 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
22783 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
22784 { echo "$as_me:$LINENO: checking for $ac_header" >&5
22785 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
22786 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
22787 echo $ECHO_N "(cached) $ECHO_C" >&6
22788 fi
22789 ac_res=`eval echo '${'$as_ac_Header'}'`
22790 { echo "$as_me:$LINENO: result: $ac_res" >&5
22791 echo "${ECHO_T}$ac_res" >&6; }
22792 else
22793 # Is the header compilable?
22794 { echo "$as_me:$LINENO: checking $ac_header usability" >&5
22795 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
22796 cat >conftest.$ac_ext <<_ACEOF
22797 /* confdefs.h. */
22798 _ACEOF
22799 cat confdefs.h >>conftest.$ac_ext
22800 cat >>conftest.$ac_ext <<_ACEOF
22801 /* end confdefs.h. */
22802 $ac_includes_default
22803 #include <$ac_header>
22804 _ACEOF
22805 rm -f conftest.$ac_objext
22806 if { (ac_try="$ac_compile"
22807 case "(($ac_try" in
22808 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
22809 *) ac_try_echo=$ac_try;;
22810 esac
22811 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
22812 (eval "$ac_compile") 2>conftest.er1
22813 ac_status=$?
22814 grep -v '^ *+' conftest.er1 >conftest.err
22815 rm -f conftest.er1
22816 cat conftest.err >&5
22817 echo "$as_me:$LINENO: \$? = $ac_status" >&5
22818 (exit $ac_status); } && {
22819 test -z "$ac_c_werror_flag" ||
22820 test ! -s conftest.err
22821 } && test -s conftest.$ac_objext; then
22822 ac_header_compiler=yes
22823 else
22824 echo "$as_me: failed program was:" >&5
22825 sed 's/^/| /' conftest.$ac_ext >&5
22826
22827 ac_header_compiler=no
22828 fi
22829
22830 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
22831 { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
22832 echo "${ECHO_T}$ac_header_compiler" >&6; }
22833
22834 # Is the header present?
22835 { echo "$as_me:$LINENO: checking $ac_header presence" >&5
22836 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
22837 cat >conftest.$ac_ext <<_ACEOF
22838 /* confdefs.h. */
22839 _ACEOF
22840 cat confdefs.h >>conftest.$ac_ext
22841 cat >>conftest.$ac_ext <<_ACEOF
22842 /* end confdefs.h. */
22843 #include <$ac_header>
22844 _ACEOF
22845 if { (ac_try="$ac_cpp conftest.$ac_ext"
22846 case "(($ac_try" in
22847 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
22848 *) ac_try_echo=$ac_try;;
22849 esac
22850 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
22851 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
22852 ac_status=$?
22853 grep -v '^ *+' conftest.er1 >conftest.err
22854 rm -f conftest.er1
22855 cat conftest.err >&5
22856 echo "$as_me:$LINENO: \$? = $ac_status" >&5
22857 (exit $ac_status); } >/dev/null && {
22858 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
22859 test ! -s conftest.err
22860 }; then
22861 ac_header_preproc=yes
22862 else
22863 echo "$as_me: failed program was:" >&5
22864 sed 's/^/| /' conftest.$ac_ext >&5
22865
22866 ac_header_preproc=no
22867 fi
22868
22869 rm -f conftest.err conftest.$ac_ext
22870 { echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
22871 echo "${ECHO_T}$ac_header_preproc" >&6; }
22872
22873 # So? What about this header?
22874 case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
22875 yes:no: )
22876 { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
22877 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
22878 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
22879 echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
22880 ac_header_preproc=yes
22881 ;;
22882 no:yes:* )
22883 { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
22884 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
22885 { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
22886 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
22887 { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
22888 echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
22889 { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
22890 echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
22891 { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
22892 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
22893 { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
22894 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
22895 ( cat <<\_ASBOX
22896 ## ------------------------------------ ##
22897 ## Report this to http://bugs.libgd.org ##
22898 ## ------------------------------------ ##
22899 _ASBOX
22900 ) | sed "s/^/$as_me: WARNING: /" >&2
22901 ;;
22902 esac
22903 { echo "$as_me:$LINENO: checking for $ac_header" >&5
22904 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
22905 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
22906 echo $ECHO_N "(cached) $ECHO_C" >&6
22907 else
22908 eval "$as_ac_Header=\$ac_header_preproc"
22909 fi
22910 ac_res=`eval echo '${'$as_ac_Header'}'`
22911 { echo "$as_me:$LINENO: result: $ac_res" >&5
22912 echo "${ECHO_T}$ac_res" >&6; }
22913
22914 fi
22915 if test `eval echo '${'$as_ac_Header'}'` = yes; then
22916 cat >>confdefs.h <<_ACEOF
22917 #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
22918 _ACEOF
22919
22920 else
22921 { echo "$as_me:$LINENO: result: no" >&5
22922 echo "${ECHO_T}no" >&6; }
22923 FEATURES=$SAVE_FEATURES
22924 ac_cv_lib_freetype_FT_Init_FreeType=no
22925 CPPFLAGS="$_cppflags"
22926 fi
22927
22928 done
22929
22930
22931 else
22932 ac_cv_lib_freetype_FT_Init_FreeType=no
22933 fi
22934
22935
22936 # Check whether --with-fontconfig was given.
22937 if test "${with_fontconfig+set}" = set; then
22938 withval=$with_fontconfig; if test -d "$withval"; then
22939 LDFLAGS="$LDFLAGS -L$withval/lib"
22940 CPPFLAGS="$CPPFLAGS -I$withval/include"
22941 fi
22942 else
22943 withval=yes
22944 fi
22945
22946
22947 if test "$withval" != no; then
22948 { echo "$as_me:$LINENO: checking for FcInit in -lfontconfig" >&5
22949 echo $ECHO_N "checking for FcInit in -lfontconfig... $ECHO_C" >&6; }
22950 if test "${ac_cv_lib_fontconfig_FcInit+set}" = set; then
22951 echo $ECHO_N "(cached) $ECHO_C" >&6
22952 else
22953 ac_check_lib_save_LIBS=$LIBS
22954 LIBS="-lfontconfig $LIBS"
22955 cat >conftest.$ac_ext <<_ACEOF
22956 /* confdefs.h. */
22957 _ACEOF
22958 cat confdefs.h >>conftest.$ac_ext
22959 cat >>conftest.$ac_ext <<_ACEOF
22960 /* end confdefs.h. */
22961
22962 /* Override any GCC internal prototype to avoid an error.
22963 Use char because int might match the return type of a GCC
22964 builtin and then its argument prototype would still apply. */
22965 #ifdef __cplusplus
22966 extern "C"
22967 #endif
22968 char FcInit ();
22969 int
22970 main ()
22971 {
22972 return FcInit ();
22973 ;
22974 return 0;
22975 }
22976 _ACEOF
22977 rm -f conftest.$ac_objext conftest$ac_exeext
22978 if { (ac_try="$ac_link"
22979 case "(($ac_try" in
22980 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
22981 *) ac_try_echo=$ac_try;;
22982 esac
22983 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
22984 (eval "$ac_link") 2>conftest.er1
22985 ac_status=$?
22986 grep -v '^ *+' conftest.er1 >conftest.err
22987 rm -f conftest.er1
22988 cat conftest.err >&5
22989 echo "$as_me:$LINENO: \$? = $ac_status" >&5
22990 (exit $ac_status); } && {
22991 test -z "$ac_c_werror_flag" ||
22992 test ! -s conftest.err
22993 } && test -s conftest$ac_exeext &&
22994 $as_test_x conftest$ac_exeext; then
22995 ac_cv_lib_fontconfig_FcInit=yes
22996 else
22997 echo "$as_me: failed program was:" >&5
22998 sed 's/^/| /' conftest.$ac_ext >&5
22999
23000 ac_cv_lib_fontconfig_FcInit=no
23001 fi
23002
23003 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
23004 conftest$ac_exeext conftest.$ac_ext
23005 LIBS=$ac_check_lib_save_LIBS
23006 fi
23007 { echo "$as_me:$LINENO: result: $ac_cv_lib_fontconfig_FcInit" >&5
23008 echo "${ECHO_T}$ac_cv_lib_fontconfig_FcInit" >&6; }
23009 if test $ac_cv_lib_fontconfig_FcInit = yes; then
23010 LIBS="-lfontconfig $LIBS"
23011 FEATURES="GD_FONTCONFIG $FEATURES"
23012
23013 cat >>confdefs.h <<\_ACEOF
23014 #define HAVE_LIBFONTCONFIG 1
23015 _ACEOF
23016
23017 fi
23018
23019 else
23020 ac_cv_lib_fontconfig_FcInit=no
23021 fi
23022
23023
23024 # Check whether --with-jpeg was given.
23025 if test "${with_jpeg+set}" = set; then
23026 withval=$with_jpeg; if test -d "$withval"; then
23027 LDFLAGS="$LDFLAGS -L$withval/lib"
23028 CPPFLAGS="$CPPFLAGS -I$withval/include"
23029 fi
23030 else
23031 withval=yes
23032 fi
23033
23034
23035 if test "$withval" != no; then
23036 { echo "$as_me:$LINENO: checking for jpeg_set_defaults in -ljpeg" >&5
23037 echo $ECHO_N "checking for jpeg_set_defaults in -ljpeg... $ECHO_C" >&6; }
23038 if test "${ac_cv_lib_jpeg_jpeg_set_defaults+set}" = set; then
23039 echo $ECHO_N "(cached) $ECHO_C" >&6
23040 else
23041 ac_check_lib_save_LIBS=$LIBS
23042 LIBS="-ljpeg $LIBS"
23043 cat >conftest.$ac_ext <<_ACEOF
23044 /* confdefs.h. */
23045 _ACEOF
23046 cat confdefs.h >>conftest.$ac_ext
23047 cat >>conftest.$ac_ext <<_ACEOF
23048 /* end confdefs.h. */
23049
23050 /* Override any GCC internal prototype to avoid an error.
23051 Use char because int might match the return type of a GCC
23052 builtin and then its argument prototype would still apply. */
23053 #ifdef __cplusplus
23054 extern "C"
23055 #endif
23056 char jpeg_set_defaults ();
23057 int
23058 main ()
23059 {
23060 return jpeg_set_defaults ();
23061 ;
23062 return 0;
23063 }
23064 _ACEOF
23065 rm -f conftest.$ac_objext conftest$ac_exeext
23066 if { (ac_try="$ac_link"
23067 case "(($ac_try" in
23068 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
23069 *) ac_try_echo=$ac_try;;
23070 esac
23071 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
23072 (eval "$ac_link") 2>conftest.er1
23073 ac_status=$?
23074 grep -v '^ *+' conftest.er1 >conftest.err
23075 rm -f conftest.er1
23076 cat conftest.err >&5
23077 echo "$as_me:$LINENO: \$? = $ac_status" >&5
23078 (exit $ac_status); } && {
23079 test -z "$ac_c_werror_flag" ||
23080 test ! -s conftest.err
23081 } && test -s conftest$ac_exeext &&
23082 $as_test_x conftest$ac_exeext; then
23083 ac_cv_lib_jpeg_jpeg_set_defaults=yes
23084 else
23085 echo "$as_me: failed program was:" >&5
23086 sed 's/^/| /' conftest.$ac_ext >&5
23087
23088 ac_cv_lib_jpeg_jpeg_set_defaults=no
23089 fi
23090
23091 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
23092 conftest$ac_exeext conftest.$ac_ext
23093 LIBS=$ac_check_lib_save_LIBS
23094 fi
23095 { echo "$as_me:$LINENO: result: $ac_cv_lib_jpeg_jpeg_set_defaults" >&5
23096 echo "${ECHO_T}$ac_cv_lib_jpeg_jpeg_set_defaults" >&6; }
23097 if test $ac_cv_lib_jpeg_jpeg_set_defaults = yes; then
23098 LIBS="-ljpeg $LIBS"
23099 FEATURES="GD_JPEG $FEATURES"
23100
23101 cat >>confdefs.h <<\_ACEOF
23102 #define HAVE_LIBJPEG 1
23103 _ACEOF
23104
23105 fi
23106
23107 else
23108 ac_cv_lib_jpeg_jpeg_set_defaults=no
23109 fi
23110
23111
23112 # Check whether --with-xpm was given.
23113 if test "${with_xpm+set}" = set; then
23114 withval=$with_xpm; if test -d "$withval"; then
23115 LDFLAGS="$LDFLAGS -L$withval/lib"
23116 CPPFLAGS="$CPPFLAGS -I$withval/include"
23117 fi
23118 else
23119 withval=yes
23120 fi
23121
23122
23123 if test "$withval" != no; then
23124 { echo "$as_me:$LINENO: checking for XpmReadFileToXpmImage in -lXpm" >&5
23125 echo $ECHO_N "checking for XpmReadFileToXpmImage in -lXpm... $ECHO_C" >&6; }
23126 if test "${ac_cv_lib_Xpm_XpmReadFileToXpmImage+set}" = set; then
23127 echo $ECHO_N "(cached) $ECHO_C" >&6
23128 else
23129 ac_check_lib_save_LIBS=$LIBS
23130 LIBS="-lXpm -lX11 $LIBS"
23131 cat >conftest.$ac_ext <<_ACEOF
23132 /* confdefs.h. */
23133 _ACEOF
23134 cat confdefs.h >>conftest.$ac_ext
23135 cat >>conftest.$ac_ext <<_ACEOF
23136 /* end confdefs.h. */
23137
23138 /* Override any GCC internal prototype to avoid an error.
23139 Use char because int might match the return type of a GCC
23140 builtin and then its argument prototype would still apply. */
23141 #ifdef __cplusplus
23142 extern "C"
23143 #endif
23144 char XpmReadFileToXpmImage ();
23145 int
23146 main ()
23147 {
23148 return XpmReadFileToXpmImage ();
23149 ;
23150 return 0;
23151 }
23152 _ACEOF
23153 rm -f conftest.$ac_objext conftest$ac_exeext
23154 if { (ac_try="$ac_link"
23155 case "(($ac_try" in
23156 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
23157 *) ac_try_echo=$ac_try;;
23158 esac
23159 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
23160 (eval "$ac_link") 2>conftest.er1
23161 ac_status=$?
23162 grep -v '^ *+' conftest.er1 >conftest.err
23163 rm -f conftest.er1
23164 cat conftest.err >&5
23165 echo "$as_me:$LINENO: \$? = $ac_status" >&5
23166 (exit $ac_status); } && {
23167 test -z "$ac_c_werror_flag" ||
23168 test ! -s conftest.err
23169 } && test -s conftest$ac_exeext &&
23170 $as_test_x conftest$ac_exeext; then
23171 ac_cv_lib_Xpm_XpmReadFileToXpmImage=yes
23172 else
23173 echo "$as_me: failed program was:" >&5
23174 sed 's/^/| /' conftest.$ac_ext >&5
23175
23176 ac_cv_lib_Xpm_XpmReadFileToXpmImage=no
23177 fi
23178
23179 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
23180 conftest$ac_exeext conftest.$ac_ext
23181 LIBS=$ac_check_lib_save_LIBS
23182 fi
23183 { echo "$as_me:$LINENO: result: $ac_cv_lib_Xpm_XpmReadFileToXpmImage" >&5
23184 echo "${ECHO_T}$ac_cv_lib_Xpm_XpmReadFileToXpmImage" >&6; }
23185 if test $ac_cv_lib_Xpm_XpmReadFileToXpmImage = yes; then
23186 LIBS="-lXpm -lX11 $LIBS"
23187 FEATURES="GD_XPM $FEATURES"
23188
23189 cat >>confdefs.h <<\_ACEOF
23190 #define HAVE_LIBXPM 1
23191 _ACEOF
23192
23193 fi
23194
23195 else
23196 ac_cv_lib_Xpm_XpmReadFileToXpmImage=no
23197 fi
23198
23199
23200
23201
23202 ac_ext=c
23203 ac_cpp='$CPP $CPPFLAGS'
23204 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
23205 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
23206 ac_compiler_gnu=$ac_cv_c_compiler_gnu
23207
23208 acx_pthread_ok=no
23209
23210 # We used to check for pthread.h first, but this fails if pthread.h
23211 # requires special compiler flags (e.g. on True64 or Sequent).
23212 # It gets checked for in the link test anyway.
23213
23214 # First of all, check if the user has set any of the PTHREAD_LIBS,
23215 # etcetera environment variables, and if threads linking works using
23216 # them:
23217 if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
23218 save_CFLAGS="$CFLAGS"
23219 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
23220 save_LIBS="$LIBS"
23221 LIBS="$PTHREAD_LIBS $LIBS"
23222 { echo "$as_me:$LINENO: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5
23223 echo $ECHO_N "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... $ECHO_C" >&6; }
23224 cat >conftest.$ac_ext <<_ACEOF
23225 /* confdefs.h. */
23226 _ACEOF
23227 cat confdefs.h >>conftest.$ac_ext
23228 cat >>conftest.$ac_ext <<_ACEOF
23229 /* end confdefs.h. */
23230
23231 /* Override any GCC internal prototype to avoid an error.
23232 Use char because int might match the return type of a GCC
23233 builtin and then its argument prototype would still apply. */
23234 #ifdef __cplusplus
23235 extern "C"
23236 #endif
23237 char pthread_join ();
23238 int
23239 main ()
23240 {
23241 return pthread_join ();
23242 ;
23243 return 0;
23244 }
23245 _ACEOF
23246 rm -f conftest.$ac_objext conftest$ac_exeext
23247 if { (ac_try="$ac_link"
23248 case "(($ac_try" in
23249 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
23250 *) ac_try_echo=$ac_try;;
23251 esac
23252 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
23253 (eval "$ac_link") 2>conftest.er1
23254 ac_status=$?
23255 grep -v '^ *+' conftest.er1 >conftest.err
23256 rm -f conftest.er1
23257 cat conftest.err >&5
23258 echo "$as_me:$LINENO: \$? = $ac_status" >&5
23259 (exit $ac_status); } && {
23260 test -z "$ac_c_werror_flag" ||
23261 test ! -s conftest.err
23262 } && test -s conftest$ac_exeext &&
23263 $as_test_x conftest$ac_exeext; then
23264 acx_pthread_ok=yes
23265 else
23266 echo "$as_me: failed program was:" >&5
23267 sed 's/^/| /' conftest.$ac_ext >&5
23268
23269
23270 fi
23271
23272 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
23273 conftest$ac_exeext conftest.$ac_ext
23274 { echo "$as_me:$LINENO: result: $acx_pthread_ok" >&5
23275 echo "${ECHO_T}$acx_pthread_ok" >&6; }
23276 if test x"$acx_pthread_ok" = xno; then
23277 PTHREAD_LIBS=""
23278 PTHREAD_CFLAGS=""
23279 fi
23280 LIBS="$save_LIBS"
23281 CFLAGS="$save_CFLAGS"
23282 fi
23283
23284 # We must check for the threads library under a number of different
23285 # names; the ordering is very important because some systems
23286 # (e.g. DEC) have both -lpthread and -lpthreads, where one of the
23287 # libraries is broken (non-POSIX).
23288
23289 # Create a list of thread flags to try. Items starting with a "-" are
23290 # C compiler flags, and other items are library names, except for "none"
23291 # which indicates that we try without any flags at all, and "pthread-config"
23292 # which is a program returning the flags for the Pth emulation library.
23293
23294 acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
23295
23296 # The ordering *is* (sometimes) important. Some notes on the
23297 # individual items follow:
23298
23299 # pthreads: AIX (must check this before -lpthread)
23300 # none: in case threads are in libc; should be tried before -Kthread and
23301 # other compiler flags to prevent continual compiler warnings
23302 # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
23303 # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
23304 # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
23305 # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
23306 # -pthreads: Solaris/gcc
23307 # -mthreads: Mingw32/gcc, Lynx/gcc
23308 # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
23309 # doesn't hurt to check since this sometimes defines pthreads too;
23310 # also defines -D_REENTRANT)
23311 # ... -mt is also the pthreads flag for HP/aCC
23312 # pthread: Linux, etcetera
23313 # --thread-safe: KAI C++
23314 # pthread-config: use pthread-config program (for GNU Pth library)
23315
23316 case "${host_cpu}-${host_os}" in
23317 *solaris*)
23318
23319 # On Solaris (at least, for some versions), libc contains stubbed
23320 # (non-functional) versions of the pthreads routines, so link-based
23321 # tests will erroneously succeed. (We need to link with -pthreads/-mt/
23322 # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather
23323 # a function called by this macro, so we could check for that, but
23324 # who knows whether they'll stub that too in a future libc.) So,
23325 # we'll just look for -pthreads and -lpthread first:
23326
23327 acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags"
23328 ;;
23329 esac
23330
23331 if test x"$acx_pthread_ok" = xno; then
23332 for flag in $acx_pthread_flags; do
23333
23334 case $flag in
23335 none)
23336 { echo "$as_me:$LINENO: checking whether pthreads work without any flags" >&5
23337 echo $ECHO_N "checking whether pthreads work without any flags... $ECHO_C" >&6; }
23338 ;;
23339
23340 -*)
23341 { echo "$as_me:$LINENO: checking whether pthreads work with $flag" >&5
23342 echo $ECHO_N "checking whether pthreads work with $flag... $ECHO_C" >&6; }
23343 PTHREAD_CFLAGS="$flag"
23344 ;;
23345
23346 pthread-config)
23347 # Extract the first word of "pthread-config", so it can be a program name with args.
23348 set dummy pthread-config; ac_word=$2
23349 { echo "$as_me:$LINENO: checking for $ac_word" >&5
23350 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
23351 if test "${ac_cv_prog_acx_pthread_config+set}" = set; then
23352 echo $ECHO_N "(cached) $ECHO_C" >&6
23353 else
23354 if test -n "$acx_pthread_config"; then
23355 ac_cv_prog_acx_pthread_config="$acx_pthread_config" # Let the user override the test.
23356 else
23357 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
23358 for as_dir in $PATH
23359 do
23360 IFS=$as_save_IFS
23361 test -z "$as_dir" && as_dir=.
23362 for ac_exec_ext in '' $ac_executable_extensions; do
23363 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
23364 ac_cv_prog_acx_pthread_config="yes"
23365 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
23366 break 2
23367 fi
23368 done
23369 done
23370 IFS=$as_save_IFS
23371
23372 test -z "$ac_cv_prog_acx_pthread_config" && ac_cv_prog_acx_pthread_config="no"
23373 fi
23374 fi
23375 acx_pthread_config=$ac_cv_prog_acx_pthread_config
23376 if test -n "$acx_pthread_config"; then
23377 { echo "$as_me:$LINENO: result: $acx_pthread_config" >&5
23378 echo "${ECHO_T}$acx_pthread_config" >&6; }
23379 else
23380 { echo "$as_me:$LINENO: result: no" >&5
23381 echo "${ECHO_T}no" >&6; }
23382 fi
23383
23384
23385 if test x"$acx_pthread_config" = xno; then continue; fi
23386 PTHREAD_CFLAGS="`pthread-config --cflags`"
23387 PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
23388 ;;
23389
23390 *)
23391 { echo "$as_me:$LINENO: checking for the pthreads library -l$flag" >&5
23392 echo $ECHO_N "checking for the pthreads library -l$flag... $ECHO_C" >&6; }
23393 PTHREAD_LIBS="-l$flag"
23394 ;;
23395 esac
23396
23397 save_LIBS="$LIBS"
23398 save_CFLAGS="$CFLAGS"
23399 LIBS="$PTHREAD_LIBS $LIBS"
23400 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
23401
23402 # Check for various functions. We must include pthread.h,
23403 # since some functions may be macros. (On the Sequent, we
23404 # need a special flag -Kthread to make this header compile.)
23405 # We check for pthread_join because it is in -lpthread on IRIX
23406 # while pthread_create is in libc. We check for pthread_attr_init
23407 # due to DEC craziness with -lpthreads. We check for
23408 # pthread_cleanup_push because it is one of the few pthread
23409 # functions on Solaris that doesn't have a non-functional libc stub.
23410 # We try pthread_create on general principles.
23411 cat >conftest.$ac_ext <<_ACEOF
23412 /* confdefs.h. */
23413 _ACEOF
23414 cat confdefs.h >>conftest.$ac_ext
23415 cat >>conftest.$ac_ext <<_ACEOF
23416 /* end confdefs.h. */
23417 #include <pthread.h>
23418 int
23419 main ()
23420 {
23421 pthread_t th; pthread_join(th, 0);
23422 pthread_attr_init(0); pthread_cleanup_push(0, 0);
23423 pthread_create(0,0,0,0); pthread_cleanup_pop(0);
23424 ;
23425 return 0;
23426 }
23427 _ACEOF
23428 rm -f conftest.$ac_objext conftest$ac_exeext
23429 if { (ac_try="$ac_link"
23430 case "(($ac_try" in
23431 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
23432 *) ac_try_echo=$ac_try;;
23433 esac
23434 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
23435 (eval "$ac_link") 2>conftest.er1
23436 ac_status=$?
23437 grep -v '^ *+' conftest.er1 >conftest.err
23438 rm -f conftest.er1
23439 cat conftest.err >&5
23440 echo "$as_me:$LINENO: \$? = $ac_status" >&5
23441 (exit $ac_status); } && {
23442 test -z "$ac_c_werror_flag" ||
23443 test ! -s conftest.err
23444 } && test -s conftest$ac_exeext &&
23445 $as_test_x conftest$ac_exeext; then
23446 acx_pthread_ok=yes
23447 else
23448 echo "$as_me: failed program was:" >&5
23449 sed 's/^/| /' conftest.$ac_ext >&5
23450
23451
23452 fi
23453
23454 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
23455 conftest$ac_exeext conftest.$ac_ext
23456
23457 LIBS="$save_LIBS"
23458 CFLAGS="$save_CFLAGS"
23459
23460 { echo "$as_me:$LINENO: result: $acx_pthread_ok" >&5
23461 echo "${ECHO_T}$acx_pthread_ok" >&6; }
23462 if test "x$acx_pthread_ok" = xyes; then
23463 break;
23464 fi
23465
23466 PTHREAD_LIBS=""
23467 PTHREAD_CFLAGS=""
23468 done
23469 fi
23470
23471 # Various other checks:
23472 if test "x$acx_pthread_ok" = xyes; then
23473 save_LIBS="$LIBS"
23474 LIBS="$PTHREAD_LIBS $LIBS"
23475 save_CFLAGS="$CFLAGS"
23476 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
23477
23478 # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
23479 { echo "$as_me:$LINENO: checking for joinable pthread attribute" >&5
23480 echo $ECHO_N "checking for joinable pthread attribute... $ECHO_C" >&6; }
23481 attr_name=unknown
23482 for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
23483 cat >conftest.$ac_ext <<_ACEOF
23484 /* confdefs.h. */
23485 _ACEOF
23486 cat confdefs.h >>conftest.$ac_ext
23487 cat >>conftest.$ac_ext <<_ACEOF
23488 /* end confdefs.h. */
23489 #include <pthread.h>
23490 int
23491 main ()
23492 {
23493 int attr=$attr; return attr;
23494 ;
23495 return 0;
23496 }
23497 _ACEOF
23498 rm -f conftest.$ac_objext conftest$ac_exeext
23499 if { (ac_try="$ac_link"
23500 case "(($ac_try" in
23501 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
23502 *) ac_try_echo=$ac_try;;
23503 esac
23504 eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
23505 (eval "$ac_link") 2>conftest.er1
23506 ac_status=$?
23507 grep -v '^ *+' conftest.er1 >conftest.err
23508 rm -f conftest.er1
23509 cat conftest.err >&5
23510 echo "$as_me:$LINENO: \$? = $ac_status" >&5
23511 (exit $ac_status); } && {
23512 test -z "$ac_c_werror_flag" ||
23513 test ! -s conftest.err
23514 } && test -s conftest$ac_exeext &&
23515 $as_test_x conftest$ac_exeext; then
23516 attr_name=$attr; break
23517 else
23518 echo "$as_me: failed program was:" >&5
23519 sed 's/^/| /' conftest.$ac_ext >&5
23520
23521
23522 fi
23523
23524 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
23525 conftest$ac_exeext conftest.$ac_ext
23526 done
23527 { echo "$as_me:$LINENO: result: $attr_name" >&5
23528 echo "${ECHO_T}$attr_name" >&6; }
23529 if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
23530
23531 cat >>confdefs.h <<_ACEOF
23532 #define PTHREAD_CREATE_JOINABLE $attr_name
23533 _ACEOF
23534
23535 fi
23536
23537 { echo "$as_me:$LINENO: checking if more special flags are required for pthreads" >&5
23538 echo $ECHO_N "checking if more special flags are required for pthreads... $ECHO_C" >&6; }
23539 flag=no
23540 case "${host_cpu}-${host_os}" in
23541 *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";;
23542 *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";;
23543 esac
23544 { echo "$as_me:$LINENO: result: ${flag}" >&5
23545 echo "${ECHO_T}${flag}" >&6; }
23546 if test "x$flag" != xno; then
23547 PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
23548 fi
23549
23550 LIBS="$save_LIBS"
23551 CFLAGS="$save_CFLAGS"
23552
23553 # More AIX lossage: must compile with xlc_r or cc_r
23554 if test x"$GCC" != xyes; then
23555 for ac_prog in xlc_r cc_r
23556 do
23557 # Extract the first word of "$ac_prog", so it can be a program name with args.
23558 set dummy $ac_prog; ac_word=$2
23559 { echo "$as_me:$LINENO: checking for $ac_word" >&5
23560 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
23561 if test "${ac_cv_prog_PTHREAD_CC+set}" = set; then
23562 echo $ECHO_N "(cached) $ECHO_C" >&6
23563 else
23564 if test -n "$PTHREAD_CC"; then
23565 ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test.
23566 else
23567 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
23568 for as_dir in $PATH
23569 do
23570 IFS=$as_save_IFS
23571 test -z "$as_dir" && as_dir=.
23572 for ac_exec_ext in '' $ac_executable_extensions; do
23573 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
23574 ac_cv_prog_PTHREAD_CC="$ac_prog"
23575 echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
23576 break 2
23577 fi
23578 done
23579 done
23580 IFS=$as_save_IFS
23581
23582 fi
23583 fi
23584 PTHREAD_CC=$ac_cv_prog_PTHREAD_CC
23585 if test -n "$PTHREAD_CC"; then
23586 { echo "$as_me:$LINENO: result: $PTHREAD_CC" >&5
23587 echo "${ECHO_T}$PTHREAD_CC" >&6; }
23588 else
23589 { echo "$as_me:$LINENO: result: no" >&5
23590 echo "${ECHO_T}no" >&6; }
23591 fi
23592
23593
23594 test -n "$PTHREAD_CC" && break
23595 done
23596 test -n "$PTHREAD_CC" || PTHREAD_CC="${CC}"
23597
23598 else
23599 PTHREAD_CC=$CC
23600 fi
23601 else
23602 PTHREAD_CC="$CC"
23603 fi
23604
23605
23606
23607
23608
23609 # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
23610 if test x"$acx_pthread_ok" = xyes; then
23611
23612 cat >>confdefs.h <<\_ACEOF
23613 #define HAVE_PTHREAD 1
23614 _ACEOF
23615
23616 :
23617 else
23618 acx_pthread_ok=no
23619
23620 fi
23621 ac_ext=c
23622 ac_cpp='$CPP $CPPFLAGS'
23623 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
23624 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
23625 ac_compiler_gnu=$ac_cv_c_compiler_gnu
23626
23627
23628
23629 { echo "$as_me:$LINENO: result:
23630 ** Configuration summary for $PACKAGE $VERSION:
23631
23632 Support for PNG library: $ac_cv_lib_png_png_create_read_struct
23633 Support for JPEG library: $ac_cv_lib_jpeg_jpeg_set_defaults
23634 Support for Freetype 2.x library: $ac_cv_lib_freetype_FT_Init_FreeType
23635 Support for Fontconfig library: $ac_cv_lib_fontconfig_FcInit
23636 Support for Xpm library: $ac_cv_lib_Xpm_XpmReadFileToXpmImage
23637 Support for pthreads: $acx_pthread_ok
23638 " >&5
23639 echo "${ECHO_T}
23640 ** Configuration summary for $PACKAGE $VERSION:
23641
23642 Support for PNG library: $ac_cv_lib_png_png_create_read_struct
23643 Support for JPEG library: $ac_cv_lib_jpeg_jpeg_set_defaults
23644 Support for Freetype 2.x library: $ac_cv_lib_freetype_FT_Init_FreeType
23645 Support for Fontconfig library: $ac_cv_lib_fontconfig_FcInit
23646 Support for Xpm library: $ac_cv_lib_Xpm_XpmReadFileToXpmImage
23647 Support for pthreads: $acx_pthread_ok
23648 " >&6; }
23649
23650 ac_config_files="$ac_config_files Makefile config/Makefile config/gdlib-config test/Makefile"
23651
23652
23653 cat >confcache <<\_ACEOF
23654 # This file is a shell script that caches the results of configure
23655 # tests run on this system so they can be shared between configure
23656 # scripts and configure runs, see configure's option --config-cache.
23657 # It is not useful on other systems. If it contains results you don't
23658 # want to keep, you may remove or edit it.
23659 #
23660 # config.status only pays attention to the cache file if you give it
23661 # the --recheck option to rerun configure.
23662 #
23663 # `ac_cv_env_foo' variables (set or unset) will be overridden when
23664 # loading this file, other *unset* `ac_cv_foo' will be assigned the
23665 # following values.
23666
23667 _ACEOF
23668
23669 # The following way of writing the cache mishandles newlines in values,
23670 # but we know of no workaround that is simple, portable, and efficient.
23671 # So, we kill variables containing newlines.
23672 # Ultrix sh set writes to stderr and can't be redirected directly,
23673 # and sets the high bit in the cache file unless we assign to the vars.
23674 (
23675 for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
23676 eval ac_val=\$$ac_var
23677 case $ac_val in #(
23678 *${as_nl}*)
23679 case $ac_var in #(
23680 *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
23681 echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
23682 esac
23683 case $ac_var in #(
23684 _ | IFS | as_nl) ;; #(
23685 *) $as_unset $ac_var ;;
23686 esac ;;
23687 esac
23688 done
23689
23690 (set) 2>&1 |
23691 case $as_nl`(ac_space=' '; set) 2>&1` in #(
23692 *${as_nl}ac_space=\ *)
23693 # `set' does not quote correctly, so add quotes (double-quote
23694 # substitution turns \\\\ into \\, and sed turns \\ into \).
23695 sed -n \
23696 "s/'/'\\\\''/g;
23697 s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
23698 ;; #(
23699 *)
23700 # `set' quotes correctly as required by POSIX, so do not add quotes.
23701 sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
23702 ;;
23703 esac |
23704 sort
23705 ) |
23706 sed '
23707 /^ac_cv_env_/b end
23708 t clear
23709 :clear
23710 s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
23711 t end
23712 s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
23713 :end' >>confcache
23714 if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
23715 if test -w "$cache_file"; then
23716 test "x$cache_file" != "x/dev/null" &&
23717 { echo "$as_me:$LINENO: updating cache $cache_file" >&5
23718 echo "$as_me: updating cache $cache_file" >&6;}
23719 cat confcache >$cache_file
23720 else
23721 { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
23722 echo "$as_me: not updating unwritable cache $cache_file" >&6;}
23723 fi
23724 fi
23725 rm -f confcache
23726
23727 test "x$prefix" = xNONE && prefix=$ac_default_prefix
23728 # Let make expand exec_prefix.
23729 test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
23730
23731 DEFS=-DHAVE_CONFIG_H
23732
23733 ac_libobjs=
23734 ac_ltlibobjs=
23735 for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
23736 # 1. Remove the extension, and $U if already installed.
23737 ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
23738 ac_i=`echo "$ac_i" | sed "$ac_script"`
23739 # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
23740 # will be set to the directory where LIBOBJS objects are built.
23741 ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
23742 ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
23743 done
23744 LIBOBJS=$ac_libobjs
23745
23746 LTLIBOBJS=$ac_ltlibobjs
23747
23748
23749 if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
23750 { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
23751 Usually this means the macro was only invoked conditionally." >&5
23752 echo "$as_me: error: conditional \"AMDEP\" was never defined.
23753 Usually this means the macro was only invoked conditionally." >&2;}
23754 { (exit 1); exit 1; }; }
23755 fi
23756 if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
23757 { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
23758 Usually this means the macro was only invoked conditionally." >&5
23759 echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
23760 Usually this means the macro was only invoked conditionally." >&2;}
23761 { (exit 1); exit 1; }; }
23762 fi
23763 if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
23764 { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
23765 Usually this means the macro was only invoked conditionally." >&5
23766 echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
23767 Usually this means the macro was only invoked conditionally." >&2;}
23768 { (exit 1); exit 1; }; }
23769 fi
23770 if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
23771 { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined.
23772 Usually this means the macro was only invoked conditionally." >&5
23773 echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
23774 Usually this means the macro was only invoked conditionally." >&2;}
23775 { (exit 1); exit 1; }; }
23776 fi
23777
23778 : ${CONFIG_STATUS=./config.status}
23779 ac_clean_files_save=$ac_clean_files
23780 ac_clean_files="$ac_clean_files $CONFIG_STATUS"
23781 { echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
23782 echo "$as_me: creating $CONFIG_STATUS" >&6;}
23783 cat >$CONFIG_STATUS <<_ACEOF
23784 #! $SHELL
23785 # Generated by $as_me.
23786 # Run this file to recreate the current configuration.
23787 # Compiler output produced by configure, useful for debugging
23788 # configure, is in config.log if it exists.
23789
23790 debug=false
23791 ac_cs_recheck=false
23792 ac_cs_silent=false
23793 SHELL=\${CONFIG_SHELL-$SHELL}
23794 _ACEOF
23795
23796 cat >>$CONFIG_STATUS <<\_ACEOF
23797 ## --------------------- ##
23798 ## M4sh Initialization. ##
23799 ## --------------------- ##
23800
23801 # Be more Bourne compatible
23802 DUALCASE=1; export DUALCASE # for MKS sh
23803 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
23804 emulate sh
23805 NULLCMD=:
23806 # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
23807 # is contrary to our usage. Disable this feature.
23808 alias -g '${1+"$@"}'='"$@"'
23809 setopt NO_GLOB_SUBST
23810 else
23811 case `(set -o) 2>/dev/null` in
23812 *posix*) set -o posix ;;
23813 esac
23814
23815 fi
23816
23817
23818
23819
23820 # PATH needs CR
23821 # Avoid depending upon Character Ranges.
23822 as_cr_letters='abcdefghijklmnopqrstuvwxyz'
23823 as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
23824 as_cr_Letters=$as_cr_letters$as_cr_LETTERS
23825 as_cr_digits='0123456789'
23826 as_cr_alnum=$as_cr_Letters$as_cr_digits
23827
23828 # The user is always right.
23829 if test "${PATH_SEPARATOR+set}" != set; then
23830 echo "#! /bin/sh" >conf$$.sh
23831 echo "exit 0" >>conf$$.sh
23832 chmod +x conf$$.sh
23833 if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
23834 PATH_SEPARATOR=';'
23835 else
23836 PATH_SEPARATOR=:
23837 fi
23838 rm -f conf$$.sh
23839 fi
23840
23841 # Support unset when possible.
23842 if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
23843 as_unset=unset
23844 else
23845 as_unset=false
23846 fi
23847
23848
23849 # IFS
23850 # We need space, tab and new line, in precisely that order. Quoting is
23851 # there to prevent editors from complaining about space-tab.
23852 # (If _AS_PATH_WALK were called with IFS unset, it would disable word
23853 # splitting by setting IFS to empty value.)
23854 as_nl='
23855 '
23856 IFS=" "" $as_nl"
23857
23858 # Find who we are. Look in the path if we contain no directory separator.
23859 case $0 in
23860 *[\\/]* ) as_myself=$0 ;;
23861 *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
23862 for as_dir in $PATH
23863 do
23864 IFS=$as_save_IFS
23865 test -z "$as_dir" && as_dir=.
23866 test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
23867 done
23868 IFS=$as_save_IFS
23869
23870 ;;
23871 esac
23872 # We did not find ourselves, most probably we were run as `sh COMMAND'
23873 # in which case we are not to be found in the path.
23874 if test "x$as_myself" = x; then
23875 as_myself=$0
23876 fi
23877 if test ! -f "$as_myself"; then
23878 echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
23879 { (exit 1); exit 1; }
23880 fi
23881
23882 # Work around bugs in pre-3.0 UWIN ksh.
23883 for as_var in ENV MAIL MAILPATH
23884 do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
23885 done
23886 PS1='$ '
23887 PS2='> '
23888 PS4='+ '
23889
23890 # NLS nuisances.
23891 for as_var in \
23892 LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
23893 LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
23894 LC_TELEPHONE LC_TIME
23895 do
23896 if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
23897 eval $as_var=C; export $as_var
23898 else
23899 ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
23900 fi
23901 done
23902
23903 # Required to use basename.
23904 if expr a : '\(a\)' >/dev/null 2>&1 &&
23905 test "X`expr 00001 : '.*\(...\)'`" = X001; then
23906 as_expr=expr
23907 else
23908 as_expr=false
23909 fi
23910
23911 if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
23912 as_basename=basename
23913 else
23914 as_basename=false
23915 fi
23916
23917
23918 # Name of the executable.
23919 as_me=`$as_basename -- "$0" ||
23920 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
23921 X"$0" : 'X\(//\)$' \| \
23922 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
23923 echo X/"$0" |
23924 sed '/^.*\/\([^/][^/]*\)\/*$/{
23925 s//\1/
23926 q
23927 }
23928 /^X\/\(\/\/\)$/{
23929 s//\1/
23930 q
23931 }
23932 /^X\/\(\/\).*/{
23933 s//\1/
23934 q
23935 }
23936 s/.*/./; q'`
23937
23938 # CDPATH.
23939 $as_unset CDPATH
23940
23941
23942
23943 as_lineno_1=$LINENO
23944 as_lineno_2=$LINENO
23945 test "x$as_lineno_1" != "x$as_lineno_2" &&
23946 test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
23947
23948 # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
23949 # uniformly replaced by the line number. The first 'sed' inserts a
23950 # line-number line after each line using $LINENO; the second 'sed'
23951 # does the real work. The second script uses 'N' to pair each
23952 # line-number line with the line containing $LINENO, and appends
23953 # trailing '-' during substitution so that $LINENO is not a special
23954 # case at line end.
23955 # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
23956 # scripts with optimization help from Paolo Bonzini. Blame Lee
23957 # E. McMahon (1931-1989) for sed's syntax. :-)
23958 sed -n '
23959 p
23960 /[$]LINENO/=
23961 ' <$as_myself |
23962 sed '
23963 s/[$]LINENO.*/&-/
23964 t lineno
23965 b
23966 :lineno
23967 N
23968 :loop
23969 s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
23970 t loop
23971 s/-\n.*//
23972 ' >$as_me.lineno &&
23973 chmod +x "$as_me.lineno" ||
23974 { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
23975 { (exit 1); exit 1; }; }
23976
23977 # Don't try to exec as it changes $[0], causing all sort of problems
23978 # (the dirname of $[0] is not the place where we might find the
23979 # original and so on. Autoconf is especially sensitive to this).
23980 . "./$as_me.lineno"
23981 # Exit status is that of the last command.
23982 exit
23983 }
23984
23985
23986 if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
23987 as_dirname=dirname
23988 else
23989 as_dirname=false
23990 fi
23991
23992 ECHO_C= ECHO_N= ECHO_T=
23993 case `echo -n x` in
23994 -n*)
23995 case `echo 'x\c'` in
23996 *c*) ECHO_T=' ';; # ECHO_T is single tab character.
23997 *) ECHO_C='\c';;
23998 esac;;
23999 *)
24000 ECHO_N='-n';;
24001 esac
24002
24003 if expr a : '\(a\)' >/dev/null 2>&1 &&
24004 test "X`expr 00001 : '.*\(...\)'`" = X001; then
24005 as_expr=expr
24006 else
24007 as_expr=false
24008 fi
24009
24010 rm -f conf$$ conf$$.exe conf$$.file
24011 if test -d conf$$.dir; then
24012 rm -f conf$$.dir/conf$$.file
24013 else
24014 rm -f conf$$.dir
24015 mkdir conf$$.dir
24016 fi
24017 echo >conf$$.file
24018 if ln -s conf$$.file conf$$ 2>/dev/null; then
24019 as_ln_s='ln -s'
24020 # ... but there are two gotchas:
24021 # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
24022 # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
24023 # In both cases, we have to default to `cp -p'.
24024 ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
24025 as_ln_s='cp -p'
24026 elif ln conf$$.file conf$$ 2>/dev/null; then
24027 as_ln_s=ln
24028 else
24029 as_ln_s='cp -p'
24030 fi
24031 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
24032 rmdir conf$$.dir 2>/dev/null
24033
24034 if mkdir -p . 2>/dev/null; then
24035 as_mkdir_p=:
24036 else
24037 test -d ./-p && rmdir ./-p
24038 as_mkdir_p=false
24039 fi
24040
24041 if test -x / >/dev/null 2>&1; then
24042 as_test_x='test -x'
24043 else
24044 if ls -dL / >/dev/null 2>&1; then
24045 as_ls_L_option=L
24046 else
24047 as_ls_L_option=
24048 fi
24049 as_test_x='
24050 eval sh -c '\''
24051 if test -d "$1"; then
24052 test -d "$1/.";
24053 else
24054 case $1 in
24055 -*)set "./$1";;
24056 esac;
24057 case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
24058 ???[sx]*):;;*)false;;esac;fi
24059 '\'' sh
24060 '
24061 fi
24062 as_executable_p=$as_test_x
24063
24064 # Sed expression to map a string onto a valid CPP name.
24065 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
24066
24067 # Sed expression to map a string onto a valid variable name.
24068 as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
24069
24070
24071 exec 6>&1
24072
24073 # Save the log message, to keep $[0] and so on meaningful, and to
24074 # report actual input values of CONFIG_FILES etc. instead of their
24075 # values after options handling.
24076 ac_log="
24077 This file was extended by GD $as_me 2.0.34, which was
24078 generated by GNU Autoconf 2.61. Invocation command line was
24079
24080 CONFIG_FILES = $CONFIG_FILES
24081 CONFIG_HEADERS = $CONFIG_HEADERS
24082 CONFIG_LINKS = $CONFIG_LINKS
24083 CONFIG_COMMANDS = $CONFIG_COMMANDS
24084 $ $0 $@
24085
24086 on `(hostname || uname -n) 2>/dev/null | sed 1q`
24087 "
24088
24089 _ACEOF
24090
24091 cat >>$CONFIG_STATUS <<_ACEOF
24092 # Files that config.status was made for.
24093 config_files="$ac_config_files"
24094 config_headers="$ac_config_headers"
24095 config_commands="$ac_config_commands"
24096
24097 _ACEOF
24098
24099 cat >>$CONFIG_STATUS <<\_ACEOF
24100 ac_cs_usage="\
24101 \`$as_me' instantiates files from templates according to the
24102 current configuration.
24103
24104 Usage: $0 [OPTIONS] [FILE]...
24105
24106 -h, --help print this help, then exit
24107 -V, --version print version number and configuration settings, then exit
24108 -q, --quiet do not print progress messages
24109 -d, --debug don't remove temporary files
24110 --recheck update $as_me by reconfiguring in the same conditions
24111 --file=FILE[:TEMPLATE]
24112 instantiate the configuration file FILE
24113 --header=FILE[:TEMPLATE]
24114 instantiate the configuration header FILE
24115
24116 Configuration files:
24117 $config_files
24118
24119 Configuration headers:
24120 $config_headers
24121
24122 Configuration commands:
24123 $config_commands
24124
24125 Report bugs to <bug-autoconf@gnu.org>."
24126
24127 _ACEOF
24128 cat >>$CONFIG_STATUS <<_ACEOF
24129 ac_cs_version="\\
24130 GD config.status 2.0.34
24131 configured by $0, generated by GNU Autoconf 2.61,
24132 with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
24133
24134 Copyright (C) 2006 Free Software Foundation, Inc.
24135 This config.status script is free software; the Free Software Foundation
24136 gives unlimited permission to copy, distribute and modify it."
24137
24138 ac_pwd='$ac_pwd'
24139 srcdir='$srcdir'
24140 INSTALL='$INSTALL'
24141 _ACEOF
24142
24143 cat >>$CONFIG_STATUS <<\_ACEOF
24144 # If no file are specified by the user, then we need to provide default
24145 # value. By we need to know if files were specified by the user.
24146 ac_need_defaults=:
24147 while test $# != 0
24148 do
24149 case $1 in
24150 --*=*)
24151 ac_option=`expr "X$1" : 'X\([^=]*\)='`
24152 ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
24153 ac_shift=:
24154 ;;
24155 *)
24156 ac_option=$1
24157 ac_optarg=$2
24158 ac_shift=shift
24159 ;;
24160 esac
24161
24162 case $ac_option in
24163 # Handling of the options.
24164 -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
24165 ac_cs_recheck=: ;;
24166 --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
24167 echo "$ac_cs_version"; exit ;;
24168 --debug | --debu | --deb | --de | --d | -d )
24169 debug=: ;;
24170 --file | --fil | --fi | --f )
24171 $ac_shift
24172 CONFIG_FILES="$CONFIG_FILES $ac_optarg"
24173 ac_need_defaults=false;;
24174 --header | --heade | --head | --hea )
24175 $ac_shift
24176 CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
24177 ac_need_defaults=false;;
24178 --he | --h)
24179 # Conflict between --help and --header
24180 { echo "$as_me: error: ambiguous option: $1
24181 Try \`$0 --help' for more information." >&2
24182 { (exit 1); exit 1; }; };;
24183 --help | --hel | -h )
24184 echo "$ac_cs_usage"; exit ;;
24185 -q | -quiet | --quiet | --quie | --qui | --qu | --q \
24186 | -silent | --silent | --silen | --sile | --sil | --si | --s)
24187 ac_cs_silent=: ;;
24188
24189 # This is an error.
24190 -*) { echo "$as_me: error: unrecognized option: $1
24191 Try \`$0 --help' for more information." >&2
24192 { (exit 1); exit 1; }; } ;;
24193
24194 *) ac_config_targets="$ac_config_targets $1"
24195 ac_need_defaults=false ;;
24196
24197 esac
24198 shift
24199 done
24200
24201 ac_configure_extra_args=
24202
24203 if $ac_cs_silent; then
24204 exec 6>/dev/null
24205 ac_configure_extra_args="$ac_configure_extra_args --silent"
24206 fi
24207
24208 _ACEOF
24209 cat >>$CONFIG_STATUS <<_ACEOF
24210 if \$ac_cs_recheck; then
24211 echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
24212 CONFIG_SHELL=$SHELL
24213 export CONFIG_SHELL
24214 exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
24215 fi
24216
24217 _ACEOF
24218 cat >>$CONFIG_STATUS <<\_ACEOF
24219 exec 5>>config.log
24220 {
24221 echo
24222 sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
24223 ## Running $as_me. ##
24224 _ASBOX
24225 echo "$ac_log"
24226 } >&5
24227
24228 _ACEOF
24229 cat >>$CONFIG_STATUS <<_ACEOF
24230 #
24231 # INIT-COMMANDS
24232 #
24233 AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
24234
24235 _ACEOF
24236
24237 cat >>$CONFIG_STATUS <<\_ACEOF
24238
24239 # Handling of arguments.
24240 for ac_config_target in $ac_config_targets
24241 do
24242 case $ac_config_target in
24243 "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.hin" ;;
24244 "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
24245 "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
24246 "config/Makefile") CONFIG_FILES="$CONFIG_FILES config/Makefile" ;;
24247 "config/gdlib-config") CONFIG_FILES="$CONFIG_FILES config/gdlib-config" ;;
24248 "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;;
24249
24250 *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
24251 echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
24252 { (exit 1); exit 1; }; };;
24253 esac
24254 done
24255
24256
24257 # If the user did not use the arguments to specify the items to instantiate,
24258 # then the envvar interface is used. Set only those that are not.
24259 # We use the long form for the default assignment because of an extremely
24260 # bizarre bug on SunOS 4.1.3.
24261 if $ac_need_defaults; then
24262 test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
24263 test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
24264 test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
24265 fi
24266
24267 # Have a temporary directory for convenience. Make it in the build tree
24268 # simply because there is no reason against having it here, and in addition,
24269 # creating and moving files from /tmp can sometimes cause problems.
24270 # Hook for its removal unless debugging.
24271 # Note that there is a small window in which the directory will not be cleaned:
24272 # after its creation but before its name has been assigned to `$tmp'.
24273 $debug ||
24274 {
24275 tmp=
24276 trap 'exit_status=$?
24277 { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
24278 ' 0
24279 trap '{ (exit 1); exit 1; }' 1 2 13 15
24280 }
24281 # Create a (secure) tmp directory for tmp files.
24282
24283 {
24284 tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
24285 test -n "$tmp" && test -d "$tmp"
24286 } ||
24287 {
24288 tmp=./conf$$-$RANDOM
24289 (umask 077 && mkdir "$tmp")
24290 } ||
24291 {
24292 echo "$me: cannot create a temporary directory in ." >&2
24293 { (exit 1); exit 1; }
24294 }
24295
24296 #
24297 # Set up the sed scripts for CONFIG_FILES section.
24298 #
24299
24300 # No need to generate the scripts if there are no CONFIG_FILES.
24301 # This happens for instance when ./config.status config.h
24302 if test -n "$CONFIG_FILES"; then
24303
24304 _ACEOF
24305
24306
24307
24308 ac_delim='%!_!# '
24309 for ac_last_try in false false false false false :; do
24310 cat >conf$$subs.sed <<_ACEOF
24311 SHELL!$SHELL$ac_delim
24312 PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim
24313 PACKAGE_NAME!$PACKAGE_NAME$ac_delim
24314 PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim
24315 PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim
24316 PACKAGE_STRING!$PACKAGE_STRING$ac_delim
24317 PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim
24318 exec_prefix!$exec_prefix$ac_delim
24319 prefix!$prefix$ac_delim
24320 program_transform_name!$program_transform_name$ac_delim
24321 bindir!$bindir$ac_delim
24322 sbindir!$sbindir$ac_delim
24323 libexecdir!$libexecdir$ac_delim
24324 datarootdir!$datarootdir$ac_delim
24325 datadir!$datadir$ac_delim
24326 sysconfdir!$sysconfdir$ac_delim
24327 sharedstatedir!$sharedstatedir$ac_delim
24328 localstatedir!$localstatedir$ac_delim
24329 includedir!$includedir$ac_delim
24330 oldincludedir!$oldincludedir$ac_delim
24331 docdir!$docdir$ac_delim
24332 infodir!$infodir$ac_delim
24333 htmldir!$htmldir$ac_delim
24334 dvidir!$dvidir$ac_delim
24335 pdfdir!$pdfdir$ac_delim
24336 psdir!$psdir$ac_delim
24337 libdir!$libdir$ac_delim
24338 localedir!$localedir$ac_delim
24339 mandir!$mandir$ac_delim
24340 DEFS!$DEFS$ac_delim
24341 ECHO_C!$ECHO_C$ac_delim
24342 ECHO_N!$ECHO_N$ac_delim
24343 ECHO_T!$ECHO_T$ac_delim
24344 LIBS!$LIBS$ac_delim
24345 build_alias!$build_alias$ac_delim
24346 host_alias!$host_alias$ac_delim
24347 target_alias!$target_alias$ac_delim
24348 build!$build$ac_delim
24349 build_cpu!$build_cpu$ac_delim
24350 build_vendor!$build_vendor$ac_delim
24351 build_os!$build_os$ac_delim
24352 host!$host$ac_delim
24353 host_cpu!$host_cpu$ac_delim
24354 host_vendor!$host_vendor$ac_delim
24355 host_os!$host_os$ac_delim
24356 target!$target$ac_delim
24357 target_cpu!$target_cpu$ac_delim
24358 target_vendor!$target_vendor$ac_delim
24359 target_os!$target_os$ac_delim
24360 FEATURES!$FEATURES$ac_delim
24361 GDLIB_MAJOR!$GDLIB_MAJOR$ac_delim
24362 GDLIB_MINOR!$GDLIB_MINOR$ac_delim
24363 GDLIB_REVISION!$GDLIB_REVISION$ac_delim
24364 GDLIBNAME!$GDLIBNAME$ac_delim
24365 INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim
24366 INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim
24367 INSTALL_DATA!$INSTALL_DATA$ac_delim
24368 CYGPATH_W!$CYGPATH_W$ac_delim
24369 PACKAGE!$PACKAGE$ac_delim
24370 VERSION!$VERSION$ac_delim
24371 ACLOCAL!$ACLOCAL$ac_delim
24372 AUTOCONF!$AUTOCONF$ac_delim
24373 AUTOMAKE!$AUTOMAKE$ac_delim
24374 AUTOHEADER!$AUTOHEADER$ac_delim
24375 MAKEINFO!$MAKEINFO$ac_delim
24376 install_sh!$install_sh$ac_delim
24377 STRIP!$STRIP$ac_delim
24378 INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim
24379 mkdir_p!$mkdir_p$ac_delim
24380 AWK!$AWK$ac_delim
24381 SET_MAKE!$SET_MAKE$ac_delim
24382 am__leading_dot!$am__leading_dot$ac_delim
24383 AMTAR!$AMTAR$ac_delim
24384 am__tar!$am__tar$ac_delim
24385 am__untar!$am__untar$ac_delim
24386 XTRA_LDFLAGS!$XTRA_LDFLAGS$ac_delim
24387 CC!$CC$ac_delim
24388 CFLAGS!$CFLAGS$ac_delim
24389 LDFLAGS!$LDFLAGS$ac_delim
24390 CPPFLAGS!$CPPFLAGS$ac_delim
24391 ac_ct_CC!$ac_ct_CC$ac_delim
24392 EXEEXT!$EXEEXT$ac_delim
24393 OBJEXT!$OBJEXT$ac_delim
24394 DEPDIR!$DEPDIR$ac_delim
24395 am__include!$am__include$ac_delim
24396 am__quote!$am__quote$ac_delim
24397 AMDEP_TRUE!$AMDEP_TRUE$ac_delim
24398 AMDEP_FALSE!$AMDEP_FALSE$ac_delim
24399 AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim
24400 CCDEPMODE!$CCDEPMODE$ac_delim
24401 am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim
24402 am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim
24403 GREP!$GREP$ac_delim
24404 EGREP!$EGREP$ac_delim
24405 LN_S!$LN_S$ac_delim
24406 ECHO!$ECHO$ac_delim
24407 AR!$AR$ac_delim
24408 _ACEOF
24409
24410 if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
24411 break
24412 elif $ac_last_try; then
24413 { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
24414 echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
24415 { (exit 1); exit 1; }; }
24416 else
24417 ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
24418 fi
24419 done
24420
24421 ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
24422 if test -n "$ac_eof"; then
24423 ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
24424 ac_eof=`expr $ac_eof + 1`
24425 fi
24426
24427 cat >>$CONFIG_STATUS <<_ACEOF
24428 cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
24429 /@[a-zA-Z_][a-zA-Z_0-9]*@/!b
24430 _ACEOF
24431 sed '
24432 s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
24433 s/^/s,@/; s/!/@,|#_!!_#|/
24434 :n
24435 t n
24436 s/'"$ac_delim"'$/,g/; t
24437 s/$/\\/; p
24438 N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
24439 ' >>$CONFIG_STATUS <conf$$subs.sed
24440 rm -f conf$$subs.sed
24441 cat >>$CONFIG_STATUS <<_ACEOF
24442 CEOF$ac_eof
24443 _ACEOF
24444
24445
24446 ac_delim='%!_!# '
24447 for ac_last_try in false false false false false :; do
24448 cat >conf$$subs.sed <<_ACEOF
24449 RANLIB!$RANLIB$ac_delim
24450 CPP!$CPP$ac_delim
24451 CXX!$CXX$ac_delim
24452 CXXFLAGS!$CXXFLAGS$ac_delim
24453 ac_ct_CXX!$ac_ct_CXX$ac_delim
24454 CXXDEPMODE!$CXXDEPMODE$ac_delim
24455 am__fastdepCXX_TRUE!$am__fastdepCXX_TRUE$ac_delim
24456 am__fastdepCXX_FALSE!$am__fastdepCXX_FALSE$ac_delim
24457 CXXCPP!$CXXCPP$ac_delim
24458 F77!$F77$ac_delim
24459 FFLAGS!$FFLAGS$ac_delim
24460 ac_ct_F77!$ac_ct_F77$ac_delim
24461 LIBTOOL!$LIBTOOL$ac_delim
24462 XMKMF!$XMKMF$ac_delim
24463 LIBICONV!$LIBICONV$ac_delim
24464 LTLIBICONV!$LTLIBICONV$ac_delim
24465 LIBPNG12_CONFIG!$LIBPNG12_CONFIG$ac_delim
24466 LIBPNG_CONFIG!$LIBPNG_CONFIG$ac_delim
24467 FREETYPE_CONFIG!$FREETYPE_CONFIG$ac_delim
24468 acx_pthread_config!$acx_pthread_config$ac_delim
24469 PTHREAD_CC!$PTHREAD_CC$ac_delim
24470 PTHREAD_LIBS!$PTHREAD_LIBS$ac_delim
24471 PTHREAD_CFLAGS!$PTHREAD_CFLAGS$ac_delim
24472 LIBOBJS!$LIBOBJS$ac_delim
24473 LTLIBOBJS!$LTLIBOBJS$ac_delim
24474 _ACEOF
24475
24476 if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 25; then
24477 break
24478 elif $ac_last_try; then
24479 { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
24480 echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
24481 { (exit 1); exit 1; }; }
24482 else
24483 ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
24484 fi
24485 done
24486
24487 ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
24488 if test -n "$ac_eof"; then
24489 ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
24490 ac_eof=`expr $ac_eof + 1`
24491 fi
24492
24493 cat >>$CONFIG_STATUS <<_ACEOF
24494 cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof
24495 /@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
24496 _ACEOF
24497 sed '
24498 s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
24499 s/^/s,@/; s/!/@,|#_!!_#|/
24500 :n
24501 t n
24502 s/'"$ac_delim"'$/,g/; t
24503 s/$/\\/; p
24504 N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
24505 ' >>$CONFIG_STATUS <conf$$subs.sed
24506 rm -f conf$$subs.sed
24507 cat >>$CONFIG_STATUS <<_ACEOF
24508 :end
24509 s/|#_!!_#|//g
24510 CEOF$ac_eof
24511 _ACEOF
24512
24513
24514 # VPATH may cause trouble with some makes, so we remove $(srcdir),
24515 # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
24516 # trailing colons and then remove the whole line if VPATH becomes empty
24517 # (actually we leave an empty line to preserve line numbers).
24518 if test "x$srcdir" = x.; then
24519 ac_vpsub='/^[ ]*VPATH[ ]*=/{
24520 s/:*\$(srcdir):*/:/
24521 s/:*\${srcdir}:*/:/
24522 s/:*@srcdir@:*/:/
24523 s/^\([^=]*=[ ]*\):*/\1/
24524 s/:*$//
24525 s/^[^=]*=[ ]*$//
24526 }'
24527 fi
24528
24529 cat >>$CONFIG_STATUS <<\_ACEOF
24530 fi # test -n "$CONFIG_FILES"
24531
24532
24533 for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS
24534 do
24535 case $ac_tag in
24536 :[FHLC]) ac_mode=$ac_tag; continue;;
24537 esac
24538 case $ac_mode$ac_tag in
24539 :[FHL]*:*);;
24540 :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
24541 echo "$as_me: error: Invalid tag $ac_tag." >&2;}
24542 { (exit 1); exit 1; }; };;
24543 :[FH]-) ac_tag=-:-;;
24544 :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
24545 esac
24546 ac_save_IFS=$IFS
24547 IFS=:
24548 set x $ac_tag
24549 IFS=$ac_save_IFS
24550 shift
24551 ac_file=$1
24552 shift
24553
24554 case $ac_mode in
24555 :L) ac_source=$1;;
24556 :[FH])
24557 ac_file_inputs=
24558 for ac_f
24559 do
24560 case $ac_f in
24561 -) ac_f="$tmp/stdin";;
24562 *) # Look for the file first in the build tree, then in the source tree
24563 # (if the path is not absolute). The absolute path cannot be DOS-style,
24564 # because $ac_f cannot contain `:'.
24565 test -f "$ac_f" ||
24566 case $ac_f in
24567 [\\/$]*) false;;
24568 *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
24569 esac ||
24570 { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
24571 echo "$as_me: error: cannot find input file: $ac_f" >&2;}
24572 { (exit 1); exit 1; }; };;
24573 esac
24574 ac_file_inputs="$ac_file_inputs $ac_f"
24575 done
24576
24577 # Let's still pretend it is `configure' which instantiates (i.e., don't
24578 # use $as_me), people would be surprised to read:
24579 # /* config.h. Generated by config.status. */
24580 configure_input="Generated from "`IFS=:
24581 echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
24582 if test x"$ac_file" != x-; then
24583 configure_input="$ac_file. $configure_input"
24584 { echo "$as_me:$LINENO: creating $ac_file" >&5
24585 echo "$as_me: creating $ac_file" >&6;}
24586 fi
24587
24588 case $ac_tag in
24589 *:-:* | *:-) cat >"$tmp/stdin";;
24590 esac
24591 ;;
24592 esac
24593
24594 ac_dir=`$as_dirname -- "$ac_file" ||
24595 $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
24596 X"$ac_file" : 'X\(//\)[^/]' \| \
24597 X"$ac_file" : 'X\(//\)$' \| \
24598 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
24599 echo X"$ac_file" |
24600 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
24601 s//\1/
24602 q
24603 }
24604 /^X\(\/\/\)[^/].*/{
24605 s//\1/
24606 q
24607 }
24608 /^X\(\/\/\)$/{
24609 s//\1/
24610 q
24611 }
24612 /^X\(\/\).*/{
24613 s//\1/
24614 q
24615 }
24616 s/.*/./; q'`
24617 { as_dir="$ac_dir"
24618 case $as_dir in #(
24619 -*) as_dir=./$as_dir;;
24620 esac
24621 test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
24622 as_dirs=
24623 while :; do
24624 case $as_dir in #(
24625 *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
24626 *) as_qdir=$as_dir;;
24627 esac
24628 as_dirs="'$as_qdir' $as_dirs"
24629 as_dir=`$as_dirname -- "$as_dir" ||
24630 $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
24631 X"$as_dir" : 'X\(//\)[^/]' \| \
24632 X"$as_dir" : 'X\(//\)$' \| \
24633 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
24634 echo X"$as_dir" |
24635 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
24636 s//\1/
24637 q
24638 }
24639 /^X\(\/\/\)[^/].*/{
24640 s//\1/
24641 q
24642 }
24643 /^X\(\/\/\)$/{
24644 s//\1/
24645 q
24646 }
24647 /^X\(\/\).*/{
24648 s//\1/
24649 q
24650 }
24651 s/.*/./; q'`
24652 test -d "$as_dir" && break
24653 done
24654 test -z "$as_dirs" || eval "mkdir $as_dirs"
24655 } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
24656 echo "$as_me: error: cannot create directory $as_dir" >&2;}
24657 { (exit 1); exit 1; }; }; }
24658 ac_builddir=.
24659
24660 case "$ac_dir" in
24661 .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
24662 *)
24663 ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
24664 # A ".." for each directory in $ac_dir_suffix.
24665 ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
24666 case $ac_top_builddir_sub in
24667 "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
24668 *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
24669 esac ;;
24670 esac
24671 ac_abs_top_builddir=$ac_pwd
24672 ac_abs_builddir=$ac_pwd$ac_dir_suffix
24673 # for backward compatibility:
24674 ac_top_builddir=$ac_top_build_prefix
24675
24676 case $srcdir in
24677 .) # We are building in place.
24678 ac_srcdir=.
24679 ac_top_srcdir=$ac_top_builddir_sub
24680 ac_abs_top_srcdir=$ac_pwd ;;
24681 [\\/]* | ?:[\\/]* ) # Absolute name.
24682 ac_srcdir=$srcdir$ac_dir_suffix;
24683 ac_top_srcdir=$srcdir
24684 ac_abs_top_srcdir=$srcdir ;;
24685 *) # Relative name.
24686 ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
24687 ac_top_srcdir=$ac_top_build_prefix$srcdir
24688 ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
24689 esac
24690 ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
24691
24692
24693 case $ac_mode in
24694 :F)
24695 #
24696 # CONFIG_FILE
24697 #
24698
24699 case $INSTALL in
24700 [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
24701 *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
24702 esac
24703 _ACEOF
24704
24705 cat >>$CONFIG_STATUS <<\_ACEOF
24706 # If the template does not know about datarootdir, expand it.
24707 # FIXME: This hack should be removed a few years after 2.60.
24708 ac_datarootdir_hack=; ac_datarootdir_seen=
24709
24710 case `sed -n '/datarootdir/ {
24711 p
24712 q
24713 }
24714 /@datadir@/p
24715 /@docdir@/p
24716 /@infodir@/p
24717 /@localedir@/p
24718 /@mandir@/p
24719 ' $ac_file_inputs` in
24720 *datarootdir*) ac_datarootdir_seen=yes;;
24721 *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
24722 { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
24723 echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
24724 _ACEOF
24725 cat >>$CONFIG_STATUS <<_ACEOF
24726 ac_datarootdir_hack='
24727 s&@datadir@&$datadir&g
24728 s&@docdir@&$docdir&g
24729 s&@infodir@&$infodir&g
24730 s&@localedir@&$localedir&g
24731 s&@mandir@&$mandir&g
24732 s&\\\${datarootdir}&$datarootdir&g' ;;
24733 esac
24734 _ACEOF
24735
24736 # Neutralize VPATH when `$srcdir' = `.'.
24737 # Shell code in configure.ac might set extrasub.
24738 # FIXME: do we really want to maintain this feature?
24739 cat >>$CONFIG_STATUS <<_ACEOF
24740 sed "$ac_vpsub
24741 $extrasub
24742 _ACEOF
24743 cat >>$CONFIG_STATUS <<\_ACEOF
24744 :t
24745 /@[a-zA-Z_][a-zA-Z_0-9]*@/!b
24746 s&@configure_input@&$configure_input&;t t
24747 s&@top_builddir@&$ac_top_builddir_sub&;t t
24748 s&@srcdir@&$ac_srcdir&;t t
24749 s&@abs_srcdir@&$ac_abs_srcdir&;t t
24750 s&@top_srcdir@&$ac_top_srcdir&;t t
24751 s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
24752 s&@builddir@&$ac_builddir&;t t
24753 s&@abs_builddir@&$ac_abs_builddir&;t t
24754 s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
24755 s&@INSTALL@&$ac_INSTALL&;t t
24756 $ac_datarootdir_hack
24757 " $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out
24758
24759 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
24760 { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
24761 { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
24762 { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
24763 which seems to be undefined. Please make sure it is defined." >&5
24764 echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
24765 which seems to be undefined. Please make sure it is defined." >&2;}
24766
24767 rm -f "$tmp/stdin"
24768 case $ac_file in
24769 -) cat "$tmp/out"; rm -f "$tmp/out";;
24770 *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;
24771 esac
24772 ;;
24773 :H)
24774 #
24775 # CONFIG_HEADER
24776 #
24777 _ACEOF
24778
24779 # Transform confdefs.h into a sed script `conftest.defines', that
24780 # substitutes the proper values into config.h.in to produce config.h.
24781 rm -f conftest.defines conftest.tail
24782 # First, append a space to every undef/define line, to ease matching.
24783 echo 's/$/ /' >conftest.defines
24784 # Then, protect against being on the right side of a sed subst, or in
24785 # an unquoted here document, in config.status. If some macros were
24786 # called several times there might be several #defines for the same
24787 # symbol, which is useless. But do not sort them, since the last
24788 # AC_DEFINE must be honored.
24789 ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
24790 # These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where
24791 # NAME is the cpp macro being defined, VALUE is the value it is being given.
24792 # PARAMS is the parameter list in the macro definition--in most cases, it's
24793 # just an empty string.
24794 ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*'
24795 ac_dB='\\)[ (].*,\\1define\\2'
24796 ac_dC=' '
24797 ac_dD=' ,'
24798
24799 uniq confdefs.h |
24800 sed -n '
24801 t rset
24802 :rset
24803 s/^[ ]*#[ ]*define[ ][ ]*//
24804 t ok
24805 d
24806 :ok
24807 s/[\\&,]/\\&/g
24808 s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p
24809 s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p
24810 ' >>conftest.defines
24811
24812 # Remove the space that was appended to ease matching.
24813 # Then replace #undef with comments. This is necessary, for
24814 # example, in the case of _POSIX_SOURCE, which is predefined and required
24815 # on some systems where configure will not decide to define it.
24816 # (The regexp can be short, since the line contains either #define or #undef.)
24817 echo 's/ $//
24818 s,^[ #]*u.*,/* & */,' >>conftest.defines
24819
24820 # Break up conftest.defines:
24821 ac_max_sed_lines=50
24822
24823 # First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1"
24824 # Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2"
24825 # Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1"
24826 # et cetera.
24827 ac_in='$ac_file_inputs'
24828 ac_out='"$tmp/out1"'
24829 ac_nxt='"$tmp/out2"'
24830
24831 while :
24832 do
24833 # Write a here document:
24834 cat >>$CONFIG_STATUS <<_ACEOF
24835 # First, check the format of the line:
24836 cat >"\$tmp/defines.sed" <<\\CEOF
24837 /^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def
24838 /^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def
24839 b
24840 :def
24841 _ACEOF
24842 sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS
24843 echo 'CEOF
24844 sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS
24845 ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in
24846 sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail
24847 grep . conftest.tail >/dev/null || break
24848 rm -f conftest.defines
24849 mv conftest.tail conftest.defines
24850 done
24851 rm -f conftest.defines conftest.tail
24852
24853 echo "ac_result=$ac_in" >>$CONFIG_STATUS
24854 cat >>$CONFIG_STATUS <<\_ACEOF
24855 if test x"$ac_file" != x-; then
24856 echo "/* $configure_input */" >"$tmp/config.h"
24857 cat "$ac_result" >>"$tmp/config.h"
24858 if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then
24859 { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
24860 echo "$as_me: $ac_file is unchanged" >&6;}
24861 else
24862 rm -f $ac_file
24863 mv "$tmp/config.h" $ac_file
24864 fi
24865 else
24866 echo "/* $configure_input */"
24867 cat "$ac_result"
24868 fi
24869 rm -f "$tmp/out12"
24870 # Compute $ac_file's index in $config_headers.
24871 _am_stamp_count=1
24872 for _am_header in $config_headers :; do
24873 case $_am_header in
24874 $ac_file | $ac_file:* )
24875 break ;;
24876 * )
24877 _am_stamp_count=`expr $_am_stamp_count + 1` ;;
24878 esac
24879 done
24880 echo "timestamp for $ac_file" >`$as_dirname -- $ac_file ||
24881 $as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
24882 X$ac_file : 'X\(//\)[^/]' \| \
24883 X$ac_file : 'X\(//\)$' \| \
24884 X$ac_file : 'X\(/\)' \| . 2>/dev/null ||
24885 echo X$ac_file |
24886 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
24887 s//\1/
24888 q
24889 }
24890 /^X\(\/\/\)[^/].*/{
24891 s//\1/
24892 q
24893 }
24894 /^X\(\/\/\)$/{
24895 s//\1/
24896 q
24897 }
24898 /^X\(\/\).*/{
24899 s//\1/
24900 q
24901 }
24902 s/.*/./; q'`/stamp-h$_am_stamp_count
24903 ;;
24904
24905 :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5
24906 echo "$as_me: executing $ac_file commands" >&6;}
24907 ;;
24908 esac
24909
24910
24911 case $ac_file$ac_mode in
24912 "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
24913 # Strip MF so we end up with the name of the file.
24914 mf=`echo "$mf" | sed -e 's/:.*$//'`
24915 # Check whether this is an Automake generated Makefile or not.
24916 # We used to match only the files named `Makefile.in', but
24917 # some people rename them; so instead we look at the file content.
24918 # Grep'ing the first line is not enough: some people post-process
24919 # each Makefile.in and add a new line on top of each file to say so.
24920 # So let's grep whole file.
24921 if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
24922 dirpart=`$as_dirname -- "$mf" ||
24923 $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
24924 X"$mf" : 'X\(//\)[^/]' \| \
24925 X"$mf" : 'X\(//\)$' \| \
24926 X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
24927 echo X"$mf" |
24928 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
24929 s//\1/
24930 q
24931 }
24932 /^X\(\/\/\)[^/].*/{
24933 s//\1/
24934 q
24935 }
24936 /^X\(\/\/\)$/{
24937 s//\1/
24938 q
24939 }
24940 /^X\(\/\).*/{
24941 s//\1/
24942 q
24943 }
24944 s/.*/./; q'`
24945 else
24946 continue
24947 fi
24948 # Extract the definition of DEPDIR, am__include, and am__quote
24949 # from the Makefile without running `make'.
24950 DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
24951 test -z "$DEPDIR" && continue
24952 am__include=`sed -n 's/^am__include = //p' < "$mf"`
24953 test -z "am__include" && continue
24954 am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
24955 # When using ansi2knr, U may be empty or an underscore; expand it
24956 U=`sed -n 's/^U = //p' < "$mf"`
24957 # Find all dependency output files, they are included files with
24958 # $(DEPDIR) in their names. We invoke sed twice because it is the
24959 # simplest approach to changing $(DEPDIR) to its actual value in the
24960 # expansion.
24961 for file in `sed -n "
24962 s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
24963 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
24964 # Make sure the directory exists.
24965 test -f "$dirpart/$file" && continue
24966 fdir=`$as_dirname -- "$file" ||
24967 $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
24968 X"$file" : 'X\(//\)[^/]' \| \
24969 X"$file" : 'X\(//\)$' \| \
24970 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
24971 echo X"$file" |
24972 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
24973 s//\1/
24974 q
24975 }
24976 /^X\(\/\/\)[^/].*/{
24977 s//\1/
24978 q
24979 }
24980 /^X\(\/\/\)$/{
24981 s//\1/
24982 q
24983 }
24984 /^X\(\/\).*/{
24985 s//\1/
24986 q
24987 }
24988 s/.*/./; q'`
24989 { as_dir=$dirpart/$fdir
24990 case $as_dir in #(
24991 -*) as_dir=./$as_dir;;
24992 esac
24993 test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
24994 as_dirs=
24995 while :; do
24996 case $as_dir in #(
24997 *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
24998 *) as_qdir=$as_dir;;
24999 esac
25000 as_dirs="'$as_qdir' $as_dirs"
25001 as_dir=`$as_dirname -- "$as_dir" ||
25002 $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
25003 X"$as_dir" : 'X\(//\)[^/]' \| \
25004 X"$as_dir" : 'X\(//\)$' \| \
25005 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
25006 echo X"$as_dir" |
25007 sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
25008 s//\1/
25009 q
25010 }
25011 /^X\(\/\/\)[^/].*/{
25012 s//\1/
25013 q
25014 }
25015 /^X\(\/\/\)$/{
25016 s//\1/
25017 q
25018 }
25019 /^X\(\/\).*/{
25020 s//\1/
25021 q
25022 }
25023 s/.*/./; q'`
25024 test -d "$as_dir" && break
25025 done
25026 test -z "$as_dirs" || eval "mkdir $as_dirs"
25027 } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
25028 echo "$as_me: error: cannot create directory $as_dir" >&2;}
25029 { (exit 1); exit 1; }; }; }
25030 # echo "creating $dirpart/$file"
25031 echo '# dummy' > "$dirpart/$file"
25032 done
25033 done
25034 ;;
25035
25036 esac
25037 done # for ac_tag
25038
25039
25040 { (exit 0); exit 0; }
25041 _ACEOF
25042 chmod +x $CONFIG_STATUS
25043 ac_clean_files=$ac_clean_files_save
25044
25045
25046 # configure is writing to config.log, and then calls config.status.
25047 # config.status does its own redirection, appending to config.log.
25048 # Unfortunately, on DOS this fails, as config.log is still kept open
25049 # by configure, so config.status won't be able to write to it; its
25050 # output is simply discarded. So we exec the FD to /dev/null,
25051 # effectively closing config.log, so it can be properly (re)opened and
25052 # appended to by config.status. When coming back to configure, we
25053 # need to make the FD available again.
25054 if test "$no_create" != yes; then
25055 ac_cs_success=:
25056 ac_config_status_args=
25057 test "$silent" = yes &&
25058 ac_config_status_args="$ac_config_status_args --quiet"
25059 exec 5>/dev/null
25060 $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
25061 exec 5>>config.log
25062 # Use ||, not &&, to avoid exiting from the if with $? = 1, which
25063 # would make configure fail if this is the last instruction.
25064 $ac_cs_success || { (exit 1); exit 1; }
25065 fi
25066
0 # Process this file with autoconf to produce a configure script.
1 # Configure template for gd library
2
3 #
4 AC_PREREQ(2.54)
5
6 #HEY! Change BOTH the version number and the GDLIB_REVISION setting!
7 AC_INIT([GD], [2.0.35], [http://bugs.libgd.org])
8 AC_CONFIG_SRCDIR([gd.c])
9 AC_CONFIG_AUX_DIR(config)
10 AC_CANONICAL_TARGET([])
11
12 GDLIB_MAJOR=2
13 GDLIB_MINOR=0
14 GDLIB_REVISION=35
15 GDLIBNAME=gd
16 #Expanded by tests later in this file. TBB 2.0.26
17 #2.0.28: GIF is standard now. Doesn't depend on anything else,
18 #so we always build it.
19 FEATURES="GD_GIF GD_GIFANIM GD_OPENPOLYGON"
20 AC_SUBST(FEATURES)
21
22 AC_SUBST(GDLIB_MAJOR)
23 AC_SUBST(GDLIB_MINOR)
24 AC_SUBST(GDLIB_REVISION)
25 AC_SUBST(GDLIBNAME)
26
27 AM_INIT_AUTOMAKE()
28 AC_CONFIG_HEADERS([config.h:config.hin])
29
30 AC_MSG_CHECKING([if we are building a Cygwin target])
31 case "$target" in
32 *-*-cygwin*) XTRA_LDFLAGS="-no-undefined"
33 os_cygwin=yes
34 ;;
35 *) XTRA_LDFLAGS=
36 os_cygwin=no
37 ;;
38 esac
39 AC_MSG_RESULT([$os_cygwin])
40 AC_SUBST([XTRA_LDFLAGS])
41
42 AC_PROG_CC
43 AM_PROG_CC_STDC
44 AC_PROG_INSTALL
45 AC_PROG_LIBTOOL
46 AC_PROG_LN_S
47 AC_PROG_MAKE_SET
48 #AC_PROG_RANLIB
49
50 dnl may be required for freetype and Xpm
51 AC_PATH_X
52
53 if test -n "$x_includes" && test "x$x_includes" != xNONE ; then
54 CPPFLAGS="$CPPFLAGS -I$x_includes"
55 fi
56 if test -n "$x_libraries" && test "x$x_libraries" != xNONE ; then
57 LDFLAGS="$LDFLAGS -L$x_libraries"
58 fi
59
60 AC_HEADER_STDC
61 AC_CHECK_HEADERS([errno.h limits.h stddef.h stdlib.h string.h unistd.h])
62
63 AM_ICONV
64 # if test -n "$LIBICONV" ; then
65 # LIBS="$LIBS $LIBICONV"
66 # fi
67
68 AC_CHECK_HEADERS(iconv.h,
69 [AC_MSG_CHECKING(whether iconv.h defines iconv_t)
70 AC_EGREP_HEADER([typedef.*iconv_t],iconv.h,
71 [AC_MSG_RESULT(yes)
72 AC_DEFINE(HAVE_ICONV_T_DEF, 1,
73 [Define if <iconv.h> defines iconv_t.])],
74 AC_MSG_RESULT(no))])
75
76 # Checks for typedefs, structures, and compiler characteristics.
77 #AC_C_CONST
78 #AC_TYPE_SIZE_T
79
80 # Checks for library functions.
81 #AC_FUNC_ERROR_AT_LINE
82 #AC_FUNC_MALLOC
83 #AC_FUNC_REALLOC
84 #AC_FUNC_VPRINTF
85 #AC_CHECK_FUNCS([floor memset sqrt strchr strdup strtol])
86
87 dnl @synopsis ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
88 dnl
89 dnl @summary figure out how to build C programs using POSIX threads
90 dnl
91 dnl This macro figures out how to build C programs using POSIX threads.
92 dnl It sets the PTHREAD_LIBS output variable to the threads library and
93 dnl linker flags, and the PTHREAD_CFLAGS output variable to any special
94 dnl C compiler flags that are needed. (The user can also force certain
95 dnl compiler flags/libs to be tested by setting these environment
96 dnl variables.)
97 dnl
98 dnl Also sets PTHREAD_CC to any special C compiler that is needed for
99 dnl multi-threaded programs (defaults to the value of CC otherwise).
100 dnl (This is necessary on AIX to use the special cc_r compiler alias.)
101 dnl
102 dnl NOTE: You are assumed to not only compile your program with these
103 dnl flags, but also link it with them as well. e.g. you should link
104 dnl with $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS
105 dnl $LIBS
106 dnl
107 dnl If you are only building threads programs, you may wish to use
108 dnl these variables in your default LIBS, CFLAGS, and CC:
109 dnl
110 dnl LIBS="$PTHREAD_LIBS $LIBS"
111 dnl CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
112 dnl CC="$PTHREAD_CC"
113 dnl
114 dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute
115 dnl constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to
116 dnl that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
117 dnl
118 dnl ACTION-IF-FOUND is a list of shell commands to run if a threads
119 dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands to
120 dnl run it if it is not found. If ACTION-IF-FOUND is not specified, the
121 dnl default action will define HAVE_PTHREAD.
122 dnl
123 dnl Please let the authors know if this macro fails on any platform, or
124 dnl if you have any other suggestions or comments. This macro was based
125 dnl on work by SGJ on autoconf scripts for FFTW (www.fftw.org) (with
126 dnl help from M. Frigo), as well as ac_pthread and hb_pthread macros
127 dnl posted by Alejandro Forero Cuervo to the autoconf macro repository.
128 dnl We are also grateful for the helpful feedback of numerous users.
129 dnl
130 dnl @category InstalledPackages
131 dnl @author Steven G. Johnson <stevenj@alum.mit.edu>
132 dnl @version 2006-05-29
133 dnl @license GPLWithACException
134
135 AC_DEFUN([ACX_PTHREAD], [
136 AC_REQUIRE([AC_CANONICAL_HOST])
137 AC_LANG_SAVE
138 AC_LANG_C
139 acx_pthread_ok=no
140
141 # We used to check for pthread.h first, but this fails if pthread.h
142 # requires special compiler flags (e.g. on True64 or Sequent).
143 # It gets checked for in the link test anyway.
144
145 # First of all, check if the user has set any of the PTHREAD_LIBS,
146 # etcetera environment variables, and if threads linking works using
147 # them:
148 if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
149 save_CFLAGS="$CFLAGS"
150 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
151 save_LIBS="$LIBS"
152 LIBS="$PTHREAD_LIBS $LIBS"
153 AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
154 AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes)
155 AC_MSG_RESULT($acx_pthread_ok)
156 if test x"$acx_pthread_ok" = xno; then
157 PTHREAD_LIBS=""
158 PTHREAD_CFLAGS=""
159 fi
160 LIBS="$save_LIBS"
161 CFLAGS="$save_CFLAGS"
162 fi
163
164 # We must check for the threads library under a number of different
165 # names; the ordering is very important because some systems
166 # (e.g. DEC) have both -lpthread and -lpthreads, where one of the
167 # libraries is broken (non-POSIX).
168
169 # Create a list of thread flags to try. Items starting with a "-" are
170 # C compiler flags, and other items are library names, except for "none"
171 # which indicates that we try without any flags at all, and "pthread-config"
172 # which is a program returning the flags for the Pth emulation library.
173
174 acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
175
176 # The ordering *is* (sometimes) important. Some notes on the
177 # individual items follow:
178
179 # pthreads: AIX (must check this before -lpthread)
180 # none: in case threads are in libc; should be tried before -Kthread and
181 # other compiler flags to prevent continual compiler warnings
182 # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
183 # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
184 # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
185 # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
186 # -pthreads: Solaris/gcc
187 # -mthreads: Mingw32/gcc, Lynx/gcc
188 # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
189 # doesn't hurt to check since this sometimes defines pthreads too;
190 # also defines -D_REENTRANT)
191 # ... -mt is also the pthreads flag for HP/aCC
192 # pthread: Linux, etcetera
193 # --thread-safe: KAI C++
194 # pthread-config: use pthread-config program (for GNU Pth library)
195
196 case "${host_cpu}-${host_os}" in
197 *solaris*)
198
199 # On Solaris (at least, for some versions), libc contains stubbed
200 # (non-functional) versions of the pthreads routines, so link-based
201 # tests will erroneously succeed. (We need to link with -pthreads/-mt/
202 # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather
203 # a function called by this macro, so we could check for that, but
204 # who knows whether they'll stub that too in a future libc.) So,
205 # we'll just look for -pthreads and -lpthread first:
206
207 acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags"
208 ;;
209 esac
210
211 if test x"$acx_pthread_ok" = xno; then
212 for flag in $acx_pthread_flags; do
213
214 case $flag in
215 none)
216 AC_MSG_CHECKING([whether pthreads work without any flags])
217 ;;
218
219 -*)
220 AC_MSG_CHECKING([whether pthreads work with $flag])
221 PTHREAD_CFLAGS="$flag"
222 ;;
223
224 pthread-config)
225 AC_CHECK_PROG(acx_pthread_config, pthread-config, yes, no)
226 if test x"$acx_pthread_config" = xno; then continue; fi
227 PTHREAD_CFLAGS="`pthread-config --cflags`"
228 PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
229 ;;
230
231 *)
232 AC_MSG_CHECKING([for the pthreads library -l$flag])
233 PTHREAD_LIBS="-l$flag"
234 ;;
235 esac
236
237 save_LIBS="$LIBS"
238 save_CFLAGS="$CFLAGS"
239 LIBS="$PTHREAD_LIBS $LIBS"
240 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
241
242 # Check for various functions. We must include pthread.h,
243 # since some functions may be macros. (On the Sequent, we
244 # need a special flag -Kthread to make this header compile.)
245 # We check for pthread_join because it is in -lpthread on IRIX
246 # while pthread_create is in libc. We check for pthread_attr_init
247 # due to DEC craziness with -lpthreads. We check for
248 # pthread_cleanup_push because it is one of the few pthread
249 # functions on Solaris that doesn't have a non-functional libc stub.
250 # We try pthread_create on general principles.
251 AC_TRY_LINK([#include <pthread.h>],
252 [pthread_t th; pthread_join(th, 0);
253 pthread_attr_init(0); pthread_cleanup_push(0, 0);
254 pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
255 [acx_pthread_ok=yes])
256
257 LIBS="$save_LIBS"
258 CFLAGS="$save_CFLAGS"
259
260 AC_MSG_RESULT($acx_pthread_ok)
261 if test "x$acx_pthread_ok" = xyes; then
262 break;
263 fi
264
265 PTHREAD_LIBS=""
266 PTHREAD_CFLAGS=""
267 done
268 fi
269
270 # Various other checks:
271 if test "x$acx_pthread_ok" = xyes; then
272 save_LIBS="$LIBS"
273 LIBS="$PTHREAD_LIBS $LIBS"
274 save_CFLAGS="$CFLAGS"
275 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
276
277 # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
278 AC_MSG_CHECKING([for joinable pthread attribute])
279 attr_name=unknown
280 for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
281 AC_TRY_LINK([#include <pthread.h>], [int attr=$attr; return attr;],
282 [attr_name=$attr; break])
283 done
284 AC_MSG_RESULT($attr_name)
285 if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
286 AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name,
287 [Define to necessary symbol if this constant
288 uses a non-standard name on your system.])
289 fi
290
291 AC_MSG_CHECKING([if more special flags are required for pthreads])
292 flag=no
293 case "${host_cpu}-${host_os}" in
294 *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";;
295 *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";;
296 esac
297 AC_MSG_RESULT(${flag})
298 if test "x$flag" != xno; then
299 PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
300 fi
301
302 LIBS="$save_LIBS"
303 CFLAGS="$save_CFLAGS"
304
305 # More AIX lossage: must compile with xlc_r or cc_r
306 if test x"$GCC" != xyes; then
307 AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC})
308 else
309 PTHREAD_CC=$CC
310 fi
311 else
312 PTHREAD_CC="$CC"
313 fi
314
315 AC_SUBST(PTHREAD_LIBS)
316 AC_SUBST(PTHREAD_CFLAGS)
317 AC_SUBST(PTHREAD_CC)
318
319 # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
320 if test x"$acx_pthread_ok" = xyes; then
321 ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
322 :
323 else
324 acx_pthread_ok=no
325 $2
326 fi
327 AC_LANG_RESTORE
328 ])dnl ACX_PTHREAD
329
330 dnl do we need to specify -lm explicitly?
331 AC_CHECK_FUNC(sin,,[AC_CHECK_LIB(m,sin)])
332
333 dnl zlib is required
334 AC_CHECK_LIB(z,deflate,
335 [LIBS="-lz $LIBS"
336 AC_DEFINE(HAVE_LIBZ, 1, [ Define if you have zlib. ])],
337 [AC_MSG_WARN([zlib is required - see http://www.gzip.org/zlib/])])
338
339 dnl libpng is required
340 AC_ARG_WITH(png,dnl
341 [ --with-png=DIR where to find the png library],,
342 withval=yes)
343
344 # libpng12.so is a nightmare. We have to test separately for
345 # libpng12-config and libpng-config. If we find libpng12-config,
346 # we don't look for the other, which will just be a symlink to it,
347 # confusing autoconf into thinking the library itself will be named -lpng,
348 # which it won't be. Awful. This code will suffice unless the libpng
349 # authors decide to do this AGAIN. Which I really hope they won't. TBB
350
351 if test "$withval" != no; then
352 AC_PATH_PROG([LIBPNG12_CONFIG], [libpng12-config])
353 AC_PATH_PROG([LIBPNG_CONFIG], [libpng-config])
354 if test -n "$LIBPNG12_CONFIG"; then
355 libpng_CPPFLAGS=`libpng12-config --cflags`
356 # should be --ldopts, but it's currently broken
357 libpng_LDFLAGS=`libpng12-config --ldflags`
358 libpng_LDFLAGS=`echo " $libpng_LDFLAGS" | sed 's/ -l[[^ ]][[^ ]]*//g'`
359 elif test -n "$LIBPNG_CONFIG"; then
360 libpng_CPPFLAGS=`libpng-config --cflags`
361 # should be --ldopts, but it's currently broken
362 libpng_LDFLAGS=`libpng-config --ldflags`
363 libpng_LDFLAGS=`echo " $libpng_LDFLAGS" | sed 's/ -l[[^ ]][[^ ]]*//g'`
364 elif test -d "$withval"; then
365 libpng_CPPFLAGS="-I$withval/include"
366 libpng_LDFLAGS="-L$withval/lib"
367 fi
368
369 AC_CHECK_HEADERS(png.h,,
370 [AC_CHECK_HEADERS(libpng/png.h,
371 [CPPFLAGS="$CPPFLAGS $libpng_CPPFLAGS/libpng"],
372 [CPPFLAGS="$_cppflags"])])
373
374 _ldflags="$LDFLAGS"
375 LDFLAGS="$libpng_LDFLAGS $LDFLAGS"
376
377 if test -n "$LIBPNG12_CONFIG"; then
378 AC_CHECK_LIB(png12,png_create_read_struct,
379 [LIBS="-lpng12 $LIBS"
380 FEATURES="GD_PNG $FEATURES"
381 AC_DEFINE(HAVE_LIBPNG, 1, [ Define if you have the png library. ])],
382 [LDFLAGS="$_ldflags"
383 AC_MSG_WARN([libpng is required - see http://www.libpng.org/pub/png/])])
384 elif test -n "$LIBPNG_CONFIG"; then
385 AC_CHECK_LIB(png,png_create_read_struct,
386 [LIBS="-lpng $LIBS"
387 FEATURES="GD_PNG $FEATURES"
388 AC_DEFINE(HAVE_LIBPNG, 1, [ Define if you have the png library. ])],
389 [LDFLAGS="$_ldflags"
390 AC_MSG_WARN([libpng is required - see http://www.libpng.org/pub/png/])])
391 else
392 AC_CHECK_LIB(png,png_create_read_struct,
393 [LIBS="-lpng $LIBS"
394 FEATURES="GD_PNG $FEATURES"
395 AC_DEFINE(HAVE_LIBPNG, 1, [ Define if you have the png library. ])],
396 [LDFLAGS="$_ldflags"
397 AC_MSG_WARN([libpng is required - see http://www.libpng.org/pub/png/])])
398 fi
399 else
400 ac_cv_lib_png_png_create_read_struct=no
401 AC_MSG_WARN([libpng is required - see http://www.libpng.org/pub/png/])
402 fi
403
404 #TBB: png12's png_create_read_struct is just as good
405 #2.0.23: should be = not ==
406 if test "$ac_cv_lib_png12_png_create_read_struct" = yes; then
407 ac_cv_lib_png_png_create_read_struct=yes
408 fi
409
410 dnl FreeType configure tests snarfed from libwmf ..
411 AC_ARG_WITH(freetype,dnl
412 [ --with-freetype=DIR where to find the freetype 2.x library],
413 [if test "$withval" != no; then
414 if test "$withval" != yes; then
415 FREETYPE_DIR=$withval
416 fi
417 fi])
418
419 if test "$withval" != no; then
420
421 if test -n "$FREETYPE_DIR"; then
422 AC_PATH_PROG(FREETYPE_CONFIG,freetype-config,,[$FREETYPE_DIR/bin:$PATH])
423 else
424 AC_PATH_PROG(FREETYPE_CONFIG,freetype-config)
425 fi
426
427 if test -n "$FREETYPE_CONFIG"; then
428 if test -n "$FREETYPE_DIR"; then
429 libft_INCLUDES="`$FREETYPE_CONFIG --cflags` -I$FREETYPE_DIR/include"
430 else
431 libft_INCLUDES=`$FREETYPE_CONFIG --cflags`
432 fi
433 libft_LDFLAGS=`$FREETYPE_CONFIG --libs`
434 libft_LDFLAGS=`echo " $libft_LDFLAGS" |sed 's/ -l[[^ ]][[^ ]]*//g'`
435 else
436 if test -n "$FREETYPE_DIR"; then
437 libft_INCLUDES="-I$FREETYPE_DIR/include/freetype2 -I$FREETYPE_DIR/include"
438 libft_LDFLAGS="-L$FREETYPE_DIR/lib"
439 else
440 libft_INCLUDES=""
441 libft_LDFLAGS=""
442 fi
443 fi
444
445 _cppflags="$CPPFLAGS"
446 _ldflags="$LDFLAGS"
447 CPPFLAGS="$libft_INCLUDES $CPPFLAGS"
448 LDFLAGS="$libft_LDFLAGS $LDFLAGS"
449 SAVE_FEATURES=$FEATURES
450 AC_CHECK_LIB(freetype,FT_Init_FreeType,
451 [LIBS="-lfreetype $LIBS"
452 FEATURES="GD_FREETYPE $FEATURES"
453 AC_DEFINE(HAVE_LIBFREETYPE, 1, [ Define if you have the freetype library. ])],
454 [LDFLAGS="$_ldflags"
455 AC_MSG_WARN([not found - disabling freetype support])
456 FEATURES=$SAVE_FEATURES])
457
458 #TBB: 2.0.26: newer gd versions require ft2build.h
459 AC_CHECK_HEADERS(ft2build.h,,
460 [AC_MSG_RESULT([no])
461 FEATURES=$SAVE_FEATURES
462 ac_cv_lib_freetype_FT_Init_FreeType=no
463 CPPFLAGS="$_cppflags"])
464
465 else
466 ac_cv_lib_freetype_FT_Init_FreeType=no
467 fi
468
469 dnl check for libfontconfig by default
470 AC_ARG_WITH(fontconfig,dnl
471 [ --with-fontconfig=DIR where to find the fontconfig library],
472 [if test -d "$withval"; then
473 LDFLAGS="$LDFLAGS -L$withval/lib"
474 CPPFLAGS="$CPPFLAGS -I$withval/include"
475 fi],
476 withval=yes)
477
478 if test "$withval" != no; then
479 AC_CHECK_LIB(fontconfig,FcInit,
480 [LIBS="-lfontconfig $LIBS"
481 FEATURES="GD_FONTCONFIG $FEATURES"
482 AC_DEFINE(HAVE_LIBFONTCONFIG, 1, [ Define if you have the fontconfig library. ])])
483 else
484 ac_cv_lib_fontconfig_FcInit=no
485 fi
486
487 dnl check for libjpeg by default
488 AC_ARG_WITH(jpeg,dnl
489 [ --with-jpeg=DIR where to find the jpeg library],
490 [if test -d "$withval"; then
491 LDFLAGS="$LDFLAGS -L$withval/lib"
492 CPPFLAGS="$CPPFLAGS -I$withval/include"
493 fi],
494 withval=yes)
495
496 if test "$withval" != no; then
497 AC_CHECK_LIB(jpeg,jpeg_set_defaults,
498 [LIBS="-ljpeg $LIBS"
499 FEATURES="GD_JPEG $FEATURES"
500 AC_DEFINE(HAVE_LIBJPEG, 1, [ Define if you have the jpeg library. ])])
501 else
502 ac_cv_lib_jpeg_jpeg_set_defaults=no
503 fi
504
505 dnl check for libXpm by default
506 AC_ARG_WITH(xpm,dnl
507 [ --with-xpm=DIR where to find the xpm library],
508 [if test -d "$withval"; then
509 LDFLAGS="$LDFLAGS -L$withval/lib"
510 CPPFLAGS="$CPPFLAGS -I$withval/include"
511 fi],
512 withval=yes)
513
514 if test "$withval" != no; then
515 AC_CHECK_LIB(Xpm,XpmReadFileToXpmImage,
516 [LIBS="-lXpm -lX11 $LIBS"
517 FEATURES="GD_XPM $FEATURES"
518 AC_DEFINE(HAVE_LIBXPM, 1, [ Define if you have the Xpm library. ])],,
519 [-lX11])
520 else
521 ac_cv_lib_Xpm_XpmReadFileToXpmImage=no
522 fi
523
524 ACX_PTHREAD()
525
526 dnl report configuration
527 AC_MSG_RESULT([
528 ** Configuration summary for $PACKAGE $VERSION:
529
530 Support for PNG library: $ac_cv_lib_png_png_create_read_struct
531 Support for JPEG library: $ac_cv_lib_jpeg_jpeg_set_defaults
532 Support for Freetype 2.x library: $ac_cv_lib_freetype_FT_Init_FreeType
533 Support for Fontconfig library: $ac_cv_lib_fontconfig_FcInit
534 Support for Xpm library: $ac_cv_lib_Xpm_XpmReadFileToXpmImage
535 Support for pthreads: $acx_pthread_ok
536 ])
537
538 AC_CONFIG_FILES([Makefile config/Makefile config/gdlib-config test/Makefile])
539
540 AC_OUTPUT
0 /*
1 * Generated file - do not edit directly.
2 *
3 * This file was generated from:
4 * http://www.w3.org/TR/REC-html40/sgml/entities.html
5 * by means of the script:
6 * entities.tcl
7 */
8
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12
13 static struct entities_s {
14 char *name;
15 int value;
16 } entities[] = {
17 {"AElig", 198},
18 {"Aacute", 193},
19 {"Acirc", 194},
20 {"Agrave", 192},
21 {"Alpha", 913},
22 {"Aring", 197},
23 {"Atilde", 195},
24 {"Auml", 196},
25 {"Beta", 914},
26 {"Ccedil", 199},
27 {"Chi", 935},
28 {"Dagger", 8225},
29 {"Delta", 916},
30 {"ETH", 208},
31 {"Eacute", 201},
32 {"Ecirc", 202},
33 {"Egrave", 200},
34 {"Epsilon", 917},
35 {"Eta", 919},
36 {"Euml", 203},
37 {"Gamma", 915},
38 {"Iacute", 205},
39 {"Icirc", 206},
40 {"Igrave", 204},
41 {"Iota", 921},
42 {"Iuml", 207},
43 {"Kappa", 922},
44 {"Lambda", 923},
45 {"Mu", 924},
46 {"Ntilde", 209},
47 {"Nu", 925},
48 {"OElig", 338},
49 {"Oacute", 211},
50 {"Ocirc", 212},
51 {"Ograve", 210},
52 {"Omega", 937},
53 {"Omicron", 927},
54 {"Oslash", 216},
55 {"Otilde", 213},
56 {"Ouml", 214},
57 {"Phi", 934},
58 {"Pi", 928},
59 {"Prime", 8243},
60 {"Psi", 936},
61 {"Rho", 929},
62 {"Scaron", 352},
63 {"Sigma", 931},
64 {"THORN", 222},
65 {"Tau", 932},
66 {"Theta", 920},
67 {"Uacute", 218},
68 {"Ucirc", 219},
69 {"Ugrave", 217},
70 {"Upsilon", 933},
71 {"Uuml", 220},
72 {"Xi", 926},
73 {"Yacute", 221},
74 {"Yuml", 376},
75 {"Zeta", 918},
76 {"aacute", 225},
77 {"acirc", 226},
78 {"acute", 180},
79 {"aelig", 230},
80 {"agrave", 224},
81 {"alefsym", 8501},
82 {"alpha", 945},
83 {"amp", 38},
84 {"and", 8743},
85 {"ang", 8736},
86 {"aring", 229},
87 {"asymp", 8776},
88 {"atilde", 227},
89 {"auml", 228},
90 {"bdquo", 8222},
91 {"beta", 946},
92 {"brvbar", 166},
93 {"bull", 8226},
94 {"cap", 8745},
95 {"ccedil", 231},
96 {"cedil", 184},
97 {"cent", 162},
98 {"chi", 967},
99 {"circ", 710},
100 {"clubs", 9827},
101 {"cong", 8773},
102 {"copy", 169},
103 {"crarr", 8629},
104 {"cup", 8746},
105 {"curren", 164},
106 {"dArr", 8659},
107 {"dagger", 8224},
108 {"darr", 8595},
109 {"deg", 176},
110 {"delta", 948},
111 {"diams", 9830},
112 {"divide", 247},
113 {"eacute", 233},
114 {"ecirc", 234},
115 {"egrave", 232},
116 {"empty", 8709},
117 {"emsp", 8195},
118 {"ensp", 8194},
119 {"epsilon", 949},
120 {"equiv", 8801},
121 {"eta", 951},
122 {"eth", 240},
123 {"euml", 235},
124 {"euro", 8364},
125 {"exist", 8707},
126 {"fnof", 402},
127 {"forall", 8704},
128 {"frac12", 189},
129 {"frac14", 188},
130 {"frac34", 190},
131 {"frasl", 8260},
132 {"gamma", 947},
133 {"ge", 8805},
134 {"gt", 62},
135 {"hArr", 8660},
136 {"harr", 8596},
137 {"hearts", 9829},
138 {"hellip", 8230},
139 {"iacute", 237},
140 {"icirc", 238},
141 {"iexcl", 161},
142 {"igrave", 236},
143 {"image", 8465},
144 {"infin", 8734},
145 {"int", 8747},
146 {"iota", 953},
147 {"iquest", 191},
148 {"isin", 8712},
149 {"iuml", 239},
150 {"kappa", 954},
151 {"lArr", 8656},
152 {"lambda", 955},
153 {"lang", 9001},
154 {"laquo", 171},
155 {"larr", 8592},
156 {"lceil", 8968},
157 {"ldquo", 8220},
158 {"le", 8804},
159 {"lfloor", 8970},
160 {"lowast", 8727},
161 {"loz", 9674},
162 {"lrm", 8206},
163 {"lsaquo", 8249},
164 {"lsquo", 8216},
165 {"lt", 60},
166 {"macr", 175},
167 {"mdash", 8212},
168 {"micro", 181},
169 {"middot", 183},
170 {"minus", 8722},
171 {"mu", 956},
172 {"nabla", 8711},
173 {"nbsp", 160},
174 {"ndash", 8211},
175 {"ne", 8800},
176 {"ni", 8715},
177 {"not", 172},
178 {"notin", 8713},
179 {"nsub", 8836},
180 {"ntilde", 241},
181 {"nu", 957},
182 {"oacute", 243},
183 {"ocirc", 244},
184 {"oelig", 339},
185 {"ograve", 242},
186 {"oline", 8254},
187 {"omega", 969},
188 {"omicron", 959},
189 {"oplus", 8853},
190 {"or", 8744},
191 {"ordf", 170},
192 {"ordm", 186},
193 {"oslash", 248},
194 {"otilde", 245},
195 {"otimes", 8855},
196 {"ouml", 246},
197 {"para", 182},
198 {"part", 8706},
199 {"permil", 8240},
200 {"perp", 8869},
201 {"phi", 966},
202 {"pi", 960},
203 {"piv", 982},
204 {"plusmn", 177},
205 {"pound", 163},
206 {"prime", 8242},
207 {"prod", 8719},
208 {"prop", 8733},
209 {"psi", 968},
210 {"quot", 34},
211 {"rArr", 8658},
212 {"radic", 8730},
213 {"rang", 9002},
214 {"raquo", 187},
215 {"rarr", 8594},
216 {"rceil", 8969},
217 {"rdquo", 8221},
218 {"real", 8476},
219 {"reg", 174},
220 {"rfloor", 8971},
221 {"rho", 961},
222 {"rlm", 8207},
223 {"rsaquo", 8250},
224 {"rsquo", 8217},
225 {"sbquo", 8218},
226 {"scaron", 353},
227 {"sdot", 8901},
228 {"sect", 167},
229 {"shy", 173},
230 {"sigma", 963},
231 {"sigmaf", 962},
232 {"sim", 8764},
233 {"spades", 9824},
234 {"sub", 8834},
235 {"sube", 8838},
236 {"sum", 8721},
237 {"sup", 8835},
238 {"sup1", 185},
239 {"sup2", 178},
240 {"sup3", 179},
241 {"supe", 8839},
242 {"szlig", 223},
243 {"tau", 964},
244 {"there4", 8756},
245 {"theta", 952},
246 {"thetasym", 977},
247 {"thinsp", 8201},
248 {"thorn", 254},
249 {"tilde", 732},
250 {"times", 215},
251 {"trade", 8482},
252 {"uArr", 8657},
253 {"uacute", 250},
254 {"uarr", 8593},
255 {"ucirc", 251},
256 {"ugrave", 249},
257 {"uml", 168},
258 {"upsih", 978},
259 {"upsilon", 965},
260 {"uuml", 252},
261 {"weierp", 8472},
262 {"xi", 958},
263 {"yacute", 253},
264 {"yen", 165},
265 {"yuml", 255},
266 {"zeta", 950},
267 {"zwj", 8205},
268 {"zwnj", 8204},
269 };
270
271 #define ENTITY_NAME_LENGTH_MAX 8
272 #define NR_OF_ENTITIES 252
273
274 #ifdef __cplusplus
275 }
276 #endif
0 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
1 <html lang="en"><head>
2 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Character entity references in HTML 4</title>
3
4 <link rel="previous" href="http://www.w3.org/TR/REC-html40/sgml/framesetdtd.html">
5 <link rel="next" href="http://www.w3.org/TR/REC-html40/appendix/changes.html">
6 <link rel="contents" href="http://www.w3.org/TR/REC-html40/cover.html#toc">
7 <link rel="stylesheet" type="text/css" href="entities.html_files/W3C-REC.css">
8 <link rel="STYLESHEET" href="entities.html_files/default.css" type="text/css"></head>
9
10 <body>
11 <div class="navbar" align="center">&nbsp;<a href="http://www.w3.org/TR/REC-html40/sgml/framesetdtd.html">
12 previous</a> &nbsp; <a href="http://www.w3.org/TR/REC-html40/appendix/changes.html">next</a> &nbsp; <a href="http://www.w3.org/TR/REC-html40/cover.html#minitoc">contents</a> &nbsp; <a href="http://www.w3.org/TR/REC-html40/index/elements.html">
13 elements</a> &nbsp; <a href="http://www.w3.org/TR/REC-html40/index/attributes.html">attributes</a> &nbsp; <a href="http://www.w3.org/TR/REC-html40/index/list.html">index</a>
14
15 <hr></div>
16
17 <h1 align="center"><a name="h-24">24</a> <a name="entities">Character entity
18 references in HTML 4</a></h1>
19
20 <div class="subtoc">
21 <p><strong>Contents</strong></p>
22
23 <ol>
24 <li><a class="tocxref" href="#h-24.1">Introduction to character entity
25 references</a></li>
26
27 <li><a class="tocxref" href="#h-24.2">Character entity references for ISO
28 8859-1 characters</a>
29
30 <ol>
31 <li><a class="tocxref" href="#h-24.2.1">The list of characters</a></li>
32 </ol>
33 </li>
34
35 <li><a class="tocxref" href="#h-24.3">Character entity references for symbols,
36 mathematical symbols, and Greek letters</a>
37
38 <ol>
39 <li><a class="tocxref" href="#h-24.3.1">The list of characters</a></li>
40 </ol>
41 </li>
42
43 <li><a class="tocxref" href="#h-24.4">Character entity references for
44 markup-significant and internationalization characters</a>
45
46 <ol>
47 <li><a class="tocxref" href="#h-24.4.1">The list of characters</a></li>
48 </ol>
49 </li>
50 </ol>
51 </div>
52
53 <h2><a name="h-24.1">24.1</a> Introduction to character entity references</h2>
54
55 A <a href="http://www.w3.org/TR/REC-html40/charset.html#entities">character entity reference</a> is an SGML
56 construct that references a character of the <a href="http://www.w3.org/TR/REC-html40/charset.html">document
57 character set.</a>
58
59 <p>This version of HTML supports several sets of character entity
60 references:</p>
61
62 <ul>
63 <li><a href="#iso-88591">ISO 8859-1 (Latin-1) characters</a> In accordance with
64 section 14 of <a rel="biblioentry" href="http://www.w3.org/TR/REC-html40/references.html#ref-RFC1866" class="informref">[RFC1866]</a>, the set of Latin-1 entities has been extended by
65 this specification to cover the whole right part of ISO-8859-1 (all code
66 positions with the high-order bit set), including the already commonly used
67 &amp;nbsp;, &amp;copy; and &amp;reg;. The names of the entities are taken from
68 the appendices of SGML (defined in <a rel="biblioentry" href="http://www.w3.org/TR/REC-html40/references.html#ref-ISO8879" class="normref">[ISO8879]</a>).</li>
69
70 <li><a href="#sym">symbols, mathematical symbols, and Greek letters</a>. These
71 characters may be represented by glyphs in the Adobe font "Symbol".</li>
72
73 <li><a href="#misc">markup-significant and internationalization characters</a>
74 (e.g., for bidirectional text).</li>
75 </ul>
76
77 <p>The following sections present the complete lists of character entity
78 references. Although, by convention, <a rel="biblioentry" href="http://www.w3.org/TR/REC-html40/references.html#ref-ISO10646" class="normref">[ISO10646]</a> the comments
79 following each entry are usually written with uppercase letters, we have
80 converted them to lowercase in this specification for reasons of
81 readability.</p>
82
83 <h2><a name="h-24.2">24.2</a> <a name="iso-88591">Character entity references
84 for ISO 8859-1 characters</a></h2>
85
86 <p>The character entity references in this section produce characters whose
87 numeric equivalents should already be supported by conforming HTML 2.0 user
88 agents. Thus, the character entity reference &amp;divide; is a more convenient
89 form than &amp;#247; for obtaining the division sign (÷).</p>
90
91 <p>To support these named entities, user agents need only recognize the entity
92 names and convert them to characters that lie within the repertoire of <a rel="biblioentry" href="http://www.w3.org/TR/REC-html40/references.html#ref-ISO88591" class="normref">
93 [ISO88591]</a>.</p>
94
95 <p>Character 65533 (FFFD hexadecimal) is the last valid character in UCS-2.
96 65534 (FFFE hexadecimal) is unassigned and reserved as the byte-swapped version
97 of ZERO WIDTH NON-BREAKING SPACE for byte-order detection purposes. 65535 (FFFF
98 hexadecimal) is unassigned.</p>
99
100 <h3><a name="h-24.2.1">24.2.1</a> The list of characters</h3>
101
102 <div class="dtd-fragment">
103 <pre>&lt;!-- Portions © International Organization for Standardization 1986
104 Permission to copy in any form is granted for use with
105 conforming SGML systems and applications as defined in
106 ISO 8879, provided this notice is included in all copies.
107 --&gt;
108 &lt;!-- Character entity set. Typical invocation:
109 &lt;!ENTITY % HTMLlat1 PUBLIC
110 "-//W3C//ENTITIES Latin 1//EN//HTML"&gt;
111 %HTMLlat1;
112 --&gt;
113
114 &lt;!ENTITY nbsp CDATA "&amp;#160;" -- no-break space = non-breaking space,
115 U+00A0 ISOnum --&gt;
116 &lt;!ENTITY iexcl CDATA "&amp;#161;" -- inverted exclamation mark, U+00A1 ISOnum --&gt;
117 &lt;!ENTITY cent CDATA "&amp;#162;" -- cent sign, U+00A2 ISOnum --&gt;
118 &lt;!ENTITY pound CDATA "&amp;#163;" -- pound sign, U+00A3 ISOnum --&gt;
119 &lt;!ENTITY curren CDATA "&amp;#164;" -- currency sign, U+00A4 ISOnum --&gt;
120 &lt;!ENTITY yen CDATA "&amp;#165;" -- yen sign = yuan sign, U+00A5 ISOnum --&gt;
121 &lt;!ENTITY brvbar CDATA "&amp;#166;" -- broken bar = broken vertical bar,
122 U+00A6 ISOnum --&gt;
123 &lt;!ENTITY sect CDATA "&amp;#167;" -- section sign, U+00A7 ISOnum --&gt;
124 &lt;!ENTITY uml CDATA "&amp;#168;" -- diaeresis = spacing diaeresis,
125 U+00A8 ISOdia --&gt;
126 &lt;!ENTITY copy CDATA "&amp;#169;" -- copyright sign, U+00A9 ISOnum --&gt;
127 &lt;!ENTITY ordf CDATA "&amp;#170;" -- feminine ordinal indicator, U+00AA ISOnum --&gt;
128 &lt;!ENTITY laquo CDATA "&amp;#171;" -- left-pointing double angle quotation mark
129 = left pointing guillemet, U+00AB ISOnum --&gt;
130 &lt;!ENTITY not CDATA "&amp;#172;" -- not sign, U+00AC ISOnum --&gt;
131 &lt;!ENTITY shy CDATA "&amp;#173;" -- soft hyphen = discretionary hyphen,
132 U+00AD ISOnum --&gt;
133 &lt;!ENTITY reg CDATA "&amp;#174;" -- registered sign = registered trade mark sign,
134 U+00AE ISOnum --&gt;
135 &lt;!ENTITY macr CDATA "&amp;#175;" -- macron = spacing macron = overline
136 = APL overbar, U+00AF ISOdia --&gt;
137 &lt;!ENTITY deg CDATA "&amp;#176;" -- degree sign, U+00B0 ISOnum --&gt;
138 &lt;!ENTITY plusmn CDATA "&amp;#177;" -- plus-minus sign = plus-or-minus sign,
139 U+00B1 ISOnum --&gt;
140 &lt;!ENTITY sup2 CDATA "&amp;#178;" -- superscript two = superscript digit two
141 = squared, U+00B2 ISOnum --&gt;
142 &lt;!ENTITY sup3 CDATA "&amp;#179;" -- superscript three = superscript digit three
143 = cubed, U+00B3 ISOnum --&gt;
144 &lt;!ENTITY acute CDATA "&amp;#180;" -- acute accent = spacing acute,
145 U+00B4 ISOdia --&gt;
146 &lt;!ENTITY micro CDATA "&amp;#181;" -- micro sign, U+00B5 ISOnum --&gt;
147 &lt;!ENTITY para CDATA "&amp;#182;" -- pilcrow sign = paragraph sign,
148 U+00B6 ISOnum --&gt;
149 &lt;!ENTITY middot CDATA "&amp;#183;" -- middle dot = Georgian comma
150 = Greek middle dot, U+00B7 ISOnum --&gt;
151 &lt;!ENTITY cedil CDATA "&amp;#184;" -- cedilla = spacing cedilla, U+00B8 ISOdia --&gt;
152 &lt;!ENTITY sup1 CDATA "&amp;#185;" -- superscript one = superscript digit one,
153 U+00B9 ISOnum --&gt;
154 &lt;!ENTITY ordm CDATA "&amp;#186;" -- masculine ordinal indicator,
155 U+00BA ISOnum --&gt;
156 &lt;!ENTITY raquo CDATA "&amp;#187;" -- right-pointing double angle quotation mark
157 = right pointing guillemet, U+00BB ISOnum --&gt;
158 &lt;!ENTITY frac14 CDATA "&amp;#188;" -- vulgar fraction one quarter
159 = fraction one quarter, U+00BC ISOnum --&gt;
160 &lt;!ENTITY frac12 CDATA "&amp;#189;" -- vulgar fraction one half
161 = fraction one half, U+00BD ISOnum --&gt;
162 &lt;!ENTITY frac34 CDATA "&amp;#190;" -- vulgar fraction three quarters
163 = fraction three quarters, U+00BE ISOnum --&gt;
164 &lt;!ENTITY iquest CDATA "&amp;#191;" -- inverted question mark
165 = turned question mark, U+00BF ISOnum --&gt;
166 &lt;!ENTITY Agrave CDATA "&amp;#192;" -- latin capital letter A with grave
167 = latin capital letter A grave,
168 U+00C0 ISOlat1 --&gt;
169 &lt;!ENTITY Aacute CDATA "&amp;#193;" -- latin capital letter A with acute,
170 U+00C1 ISOlat1 --&gt;
171 &lt;!ENTITY Acirc CDATA "&amp;#194;" -- latin capital letter A with circumflex,
172 U+00C2 ISOlat1 --&gt;
173 &lt;!ENTITY Atilde CDATA "&amp;#195;" -- latin capital letter A with tilde,
174 U+00C3 ISOlat1 --&gt;
175 &lt;!ENTITY Auml CDATA "&amp;#196;" -- latin capital letter A with diaeresis,
176 U+00C4 ISOlat1 --&gt;
177 &lt;!ENTITY Aring CDATA "&amp;#197;" -- latin capital letter A with ring above
178 = latin capital letter A ring,
179 U+00C5 ISOlat1 --&gt;
180 &lt;!ENTITY AElig CDATA "&amp;#198;" -- latin capital letter AE
181 = latin capital ligature AE,
182 U+00C6 ISOlat1 --&gt;
183 &lt;!ENTITY Ccedil CDATA "&amp;#199;" -- latin capital letter C with cedilla,
184 U+00C7 ISOlat1 --&gt;
185 &lt;!ENTITY Egrave CDATA "&amp;#200;" -- latin capital letter E with grave,
186 U+00C8 ISOlat1 --&gt;
187 &lt;!ENTITY Eacute CDATA "&amp;#201;" -- latin capital letter E with acute,
188 U+00C9 ISOlat1 --&gt;
189 &lt;!ENTITY Ecirc CDATA "&amp;#202;" -- latin capital letter E with circumflex,
190 U+00CA ISOlat1 --&gt;
191 &lt;!ENTITY Euml CDATA "&amp;#203;" -- latin capital letter E with diaeresis,
192 U+00CB ISOlat1 --&gt;
193 &lt;!ENTITY Igrave CDATA "&amp;#204;" -- latin capital letter I with grave,
194 U+00CC ISOlat1 --&gt;
195 &lt;!ENTITY Iacute CDATA "&amp;#205;" -- latin capital letter I with acute,
196 U+00CD ISOlat1 --&gt;
197 &lt;!ENTITY Icirc CDATA "&amp;#206;" -- latin capital letter I with circumflex,
198 U+00CE ISOlat1 --&gt;
199 &lt;!ENTITY Iuml CDATA "&amp;#207;" -- latin capital letter I with diaeresis,
200 U+00CF ISOlat1 --&gt;
201 &lt;!ENTITY ETH CDATA "&amp;#208;" -- latin capital letter ETH, U+00D0 ISOlat1 --&gt;
202 &lt;!ENTITY Ntilde CDATA "&amp;#209;" -- latin capital letter N with tilde,
203 U+00D1 ISOlat1 --&gt;
204 &lt;!ENTITY Ograve CDATA "&amp;#210;" -- latin capital letter O with grave,
205 U+00D2 ISOlat1 --&gt;
206 &lt;!ENTITY Oacute CDATA "&amp;#211;" -- latin capital letter O with acute,
207 U+00D3 ISOlat1 --&gt;
208 &lt;!ENTITY Ocirc CDATA "&amp;#212;" -- latin capital letter O with circumflex,
209 U+00D4 ISOlat1 --&gt;
210 &lt;!ENTITY Otilde CDATA "&amp;#213;" -- latin capital letter O with tilde,
211 U+00D5 ISOlat1 --&gt;
212 &lt;!ENTITY Ouml CDATA "&amp;#214;" -- latin capital letter O with diaeresis,
213 U+00D6 ISOlat1 --&gt;
214 &lt;!ENTITY times CDATA "&amp;#215;" -- multiplication sign, U+00D7 ISOnum --&gt;
215 &lt;!ENTITY Oslash CDATA "&amp;#216;" -- latin capital letter O with stroke
216 = latin capital letter O slash,
217 U+00D8 ISOlat1 --&gt;
218 &lt;!ENTITY Ugrave CDATA "&amp;#217;" -- latin capital letter U with grave,
219 U+00D9 ISOlat1 --&gt;
220 &lt;!ENTITY Uacute CDATA "&amp;#218;" -- latin capital letter U with acute,
221 U+00DA ISOlat1 --&gt;
222 &lt;!ENTITY Ucirc CDATA "&amp;#219;" -- latin capital letter U with circumflex,
223 U+00DB ISOlat1 --&gt;
224 &lt;!ENTITY Uuml CDATA "&amp;#220;" -- latin capital letter U with diaeresis,
225 U+00DC ISOlat1 --&gt;
226 &lt;!ENTITY Yacute CDATA "&amp;#221;" -- latin capital letter Y with acute,
227 U+00DD ISOlat1 --&gt;
228 &lt;!ENTITY THORN CDATA "&amp;#222;" -- latin capital letter THORN,
229 U+00DE ISOlat1 --&gt;
230 &lt;!ENTITY szlig CDATA "&amp;#223;" -- latin small letter sharp s = ess-zed,
231 U+00DF ISOlat1 --&gt;
232 &lt;!ENTITY agrave CDATA "&amp;#224;" -- latin small letter a with grave
233 = latin small letter a grave,
234 U+00E0 ISOlat1 --&gt;
235 &lt;!ENTITY aacute CDATA "&amp;#225;" -- latin small letter a with acute,
236 U+00E1 ISOlat1 --&gt;
237 &lt;!ENTITY acirc CDATA "&amp;#226;" -- latin small letter a with circumflex,
238 U+00E2 ISOlat1 --&gt;
239 &lt;!ENTITY atilde CDATA "&amp;#227;" -- latin small letter a with tilde,
240 U+00E3 ISOlat1 --&gt;
241 &lt;!ENTITY auml CDATA "&amp;#228;" -- latin small letter a with diaeresis,
242 U+00E4 ISOlat1 --&gt;
243 &lt;!ENTITY aring CDATA "&amp;#229;" -- latin small letter a with ring above
244 = latin small letter a ring,
245 U+00E5 ISOlat1 --&gt;
246 &lt;!ENTITY aelig CDATA "&amp;#230;" -- latin small letter ae
247 = latin small ligature ae, U+00E6 ISOlat1 --&gt;
248 &lt;!ENTITY ccedil CDATA "&amp;#231;" -- latin small letter c with cedilla,
249 U+00E7 ISOlat1 --&gt;
250 &lt;!ENTITY egrave CDATA "&amp;#232;" -- latin small letter e with grave,
251 U+00E8 ISOlat1 --&gt;
252 &lt;!ENTITY eacute CDATA "&amp;#233;" -- latin small letter e with acute,
253 U+00E9 ISOlat1 --&gt;
254 &lt;!ENTITY ecirc CDATA "&amp;#234;" -- latin small letter e with circumflex,
255 U+00EA ISOlat1 --&gt;
256 &lt;!ENTITY euml CDATA "&amp;#235;" -- latin small letter e with diaeresis,
257 U+00EB ISOlat1 --&gt;
258 &lt;!ENTITY igrave CDATA "&amp;#236;" -- latin small letter i with grave,
259 U+00EC ISOlat1 --&gt;
260 &lt;!ENTITY iacute CDATA "&amp;#237;" -- latin small letter i with acute,
261 U+00ED ISOlat1 --&gt;
262 &lt;!ENTITY icirc CDATA "&amp;#238;" -- latin small letter i with circumflex,
263 U+00EE ISOlat1 --&gt;
264 &lt;!ENTITY iuml CDATA "&amp;#239;" -- latin small letter i with diaeresis,
265 U+00EF ISOlat1 --&gt;
266 &lt;!ENTITY eth CDATA "&amp;#240;" -- latin small letter eth, U+00F0 ISOlat1 --&gt;
267 &lt;!ENTITY ntilde CDATA "&amp;#241;" -- latin small letter n with tilde,
268 U+00F1 ISOlat1 --&gt;
269 &lt;!ENTITY ograve CDATA "&amp;#242;" -- latin small letter o with grave,
270 U+00F2 ISOlat1 --&gt;
271 &lt;!ENTITY oacute CDATA "&amp;#243;" -- latin small letter o with acute,
272 U+00F3 ISOlat1 --&gt;
273 &lt;!ENTITY ocirc CDATA "&amp;#244;" -- latin small letter o with circumflex,
274 U+00F4 ISOlat1 --&gt;
275 &lt;!ENTITY otilde CDATA "&amp;#245;" -- latin small letter o with tilde,
276 U+00F5 ISOlat1 --&gt;
277 &lt;!ENTITY ouml CDATA "&amp;#246;" -- latin small letter o with diaeresis,
278 U+00F6 ISOlat1 --&gt;
279 &lt;!ENTITY divide CDATA "&amp;#247;" -- division sign, U+00F7 ISOnum --&gt;
280 &lt;!ENTITY oslash CDATA "&amp;#248;" -- latin small letter o with stroke,
281 = latin small letter o slash,
282 U+00F8 ISOlat1 --&gt;
283 &lt;!ENTITY ugrave CDATA "&amp;#249;" -- latin small letter u with grave,
284 U+00F9 ISOlat1 --&gt;
285 &lt;!ENTITY uacute CDATA "&amp;#250;" -- latin small letter u with acute,
286 U+00FA ISOlat1 --&gt;
287 &lt;!ENTITY ucirc CDATA "&amp;#251;" -- latin small letter u with circumflex,
288 U+00FB ISOlat1 --&gt;
289 &lt;!ENTITY uuml CDATA "&amp;#252;" -- latin small letter u with diaeresis,
290 U+00FC ISOlat1 --&gt;
291 &lt;!ENTITY yacute CDATA "&amp;#253;" -- latin small letter y with acute,
292 U+00FD ISOlat1 --&gt;
293 &lt;!ENTITY thorn CDATA "&amp;#254;" -- latin small letter thorn,
294 U+00FE ISOlat1 --&gt;
295 &lt;!ENTITY yuml CDATA "&amp;#255;" -- latin small letter y with diaeresis,
296 U+00FF ISOlat1 --&gt;
297 </pre>
298 </div>
299
300 <h2><a name="h-24.3">24.3</a> <a name="sym">Character entity references for
301 symbols, mathematical symbols, and Greek letters</a></h2>
302
303 <p>The character entity references in this section produce characters that may
304 be represented by glyphs in the widely available Adobe Symbol font, including
305 Greek characters, various bracketing symbols, and a selection of mathematical
306 operators such as gradient, product, and summation symbols.</p>
307
308 <p>To support these entities, user agents may support full <a rel="biblioentry" href="http://www.w3.org/TR/REC-html40/references.html#ref-ISO10646" class="normref">[ISO10646]</a> or use
309 other means. Display of glyphs for these characters may be obtained by being
310 able to display the relevant <a rel="biblioentry" href="http://www.w3.org/TR/REC-html40/references.html#ref-ISO10646" class="normref">[ISO10646]</a> characters or
311 by other means, such as internally mapping the listed entities, numeric
312 character references, and characters to the appropriate position in some font
313 that contains the requisite glyphs.</p>
314
315 <div class="note">
316 <p><em><strong>When to use Greek entities.</strong> This entity set contains
317 all the letters used in modern Greek. However, it does not include Greek
318 punctuation, precomposed accented characters nor the non-spacing accents
319 (tonos, dialytika) required to compose them. There are no archaic letters,
320 Coptic-unique letters, or precomposed letters for Polytonic Greek. The entities
321 defined here are not intended for the representation of modern Greek text and
322 would not be an efficient representation; rather, they are intended for
323 occasional Greek letters used in technical and mathematical works.</em></p>
324 </div>
325
326 <h3><a name="h-24.3.1">24.3.1</a> The list of characters</h3>
327
328 <div class="dtd-fragment">
329 <pre>&lt;!-- Mathematical, Greek and Symbolic characters for HTML --&gt;
330
331 &lt;!-- Character entity set. Typical invocation:
332 &lt;!ENTITY % HTMLsymbol PUBLIC
333 "-//W3C//ENTITIES Symbols//EN//HTML"&gt;
334 %HTMLsymbol; --&gt;
335
336 &lt;!-- Portions © International Organization for Standardization 1986:
337 Permission to copy in any form is granted for use with
338 conforming SGML systems and applications as defined in
339 ISO 8879, provided this notice is included in all copies.
340 --&gt;
341
342 &lt;!-- Relevant ISO entity set is given unless names are newly introduced.
343 New names (i.e., not in ISO 8879 list) do not clash with any
344 existing ISO 8879 entity names. ISO 10646 character numbers
345 are given for each character, in hex. CDATA values are decimal
346 conversions of the ISO 10646 values and refer to the document
347 character set. Names are ISO 10646 names.
348
349 --&gt;
350
351 &lt;!-- Latin Extended-B --&gt;
352 &lt;!ENTITY fnof CDATA "&amp;#402;" -- latin small f with hook = function
353 = florin, U+0192 ISOtech --&gt;
354
355 &lt;!-- Greek --&gt;
356 &lt;!ENTITY Alpha CDATA "&amp;#913;" -- greek capital letter alpha, U+0391 --&gt;
357 &lt;!ENTITY Beta CDATA "&amp;#914;" -- greek capital letter beta, U+0392 --&gt;
358 &lt;!ENTITY Gamma CDATA "&amp;#915;" -- greek capital letter gamma,
359 U+0393 ISOgrk3 --&gt;
360 &lt;!ENTITY Delta CDATA "&amp;#916;" -- greek capital letter delta,
361 U+0394 ISOgrk3 --&gt;
362 &lt;!ENTITY Epsilon CDATA "&amp;#917;" -- greek capital letter epsilon, U+0395 --&gt;
363 &lt;!ENTITY Zeta CDATA "&amp;#918;" -- greek capital letter zeta, U+0396 --&gt;
364 &lt;!ENTITY Eta CDATA "&amp;#919;" -- greek capital letter eta, U+0397 --&gt;
365 &lt;!ENTITY Theta CDATA "&amp;#920;" -- greek capital letter theta,
366 U+0398 ISOgrk3 --&gt;
367 &lt;!ENTITY Iota CDATA "&amp;#921;" -- greek capital letter iota, U+0399 --&gt;
368 &lt;!ENTITY Kappa CDATA "&amp;#922;" -- greek capital letter kappa, U+039A --&gt;
369 &lt;!ENTITY Lambda CDATA "&amp;#923;" -- greek capital letter lambda,
370 U+039B ISOgrk3 --&gt;
371 &lt;!ENTITY Mu CDATA "&amp;#924;" -- greek capital letter mu, U+039C --&gt;
372 &lt;!ENTITY Nu CDATA "&amp;#925;" -- greek capital letter nu, U+039D --&gt;
373 &lt;!ENTITY Xi CDATA "&amp;#926;" -- greek capital letter xi, U+039E ISOgrk3 --&gt;
374 &lt;!ENTITY Omicron CDATA "&amp;#927;" -- greek capital letter omicron, U+039F --&gt;
375 &lt;!ENTITY Pi CDATA "&amp;#928;" -- greek capital letter pi, U+03A0 ISOgrk3 --&gt;
376 &lt;!ENTITY Rho CDATA "&amp;#929;" -- greek capital letter rho, U+03A1 --&gt;
377 &lt;!-- there is no Sigmaf, and no U+03A2 character either --&gt;
378 &lt;!ENTITY Sigma CDATA "&amp;#931;" -- greek capital letter sigma,
379 U+03A3 ISOgrk3 --&gt;
380 &lt;!ENTITY Tau CDATA "&amp;#932;" -- greek capital letter tau, U+03A4 --&gt;
381 &lt;!ENTITY Upsilon CDATA "&amp;#933;" -- greek capital letter upsilon,
382 U+03A5 ISOgrk3 --&gt;
383 &lt;!ENTITY Phi CDATA "&amp;#934;" -- greek capital letter phi,
384 U+03A6 ISOgrk3 --&gt;
385 &lt;!ENTITY Chi CDATA "&amp;#935;" -- greek capital letter chi, U+03A7 --&gt;
386 &lt;!ENTITY Psi CDATA "&amp;#936;" -- greek capital letter psi,
387 U+03A8 ISOgrk3 --&gt;
388 &lt;!ENTITY Omega CDATA "&amp;#937;" -- greek capital letter omega,
389 U+03A9 ISOgrk3 --&gt;
390
391 &lt;!ENTITY alpha CDATA "&amp;#945;" -- greek small letter alpha,
392 U+03B1 ISOgrk3 --&gt;
393 &lt;!ENTITY beta CDATA "&amp;#946;" -- greek small letter beta, U+03B2 ISOgrk3 --&gt;
394 &lt;!ENTITY gamma CDATA "&amp;#947;" -- greek small letter gamma,
395 U+03B3 ISOgrk3 --&gt;
396 &lt;!ENTITY delta CDATA "&amp;#948;" -- greek small letter delta,
397 U+03B4 ISOgrk3 --&gt;
398 &lt;!ENTITY epsilon CDATA "&amp;#949;" -- greek small letter epsilon,
399 U+03B5 ISOgrk3 --&gt;
400 &lt;!ENTITY zeta CDATA "&amp;#950;" -- greek small letter zeta, U+03B6 ISOgrk3 --&gt;
401 &lt;!ENTITY eta CDATA "&amp;#951;" -- greek small letter eta, U+03B7 ISOgrk3 --&gt;
402 &lt;!ENTITY theta CDATA "&amp;#952;" -- greek small letter theta,
403 U+03B8 ISOgrk3 --&gt;
404 &lt;!ENTITY iota CDATA "&amp;#953;" -- greek small letter iota, U+03B9 ISOgrk3 --&gt;
405 &lt;!ENTITY kappa CDATA "&amp;#954;" -- greek small letter kappa,
406 U+03BA ISOgrk3 --&gt;
407 &lt;!ENTITY lambda CDATA "&amp;#955;" -- greek small letter lambda,
408 U+03BB ISOgrk3 --&gt;
409 &lt;!ENTITY mu CDATA "&amp;#956;" -- greek small letter mu, U+03BC ISOgrk3 --&gt;
410 &lt;!ENTITY nu CDATA "&amp;#957;" -- greek small letter nu, U+03BD ISOgrk3 --&gt;
411 &lt;!ENTITY xi CDATA "&amp;#958;" -- greek small letter xi, U+03BE ISOgrk3 --&gt;
412 &lt;!ENTITY omicron CDATA "&amp;#959;" -- greek small letter omicron, U+03BF NEW --&gt;
413 &lt;!ENTITY pi CDATA "&amp;#960;" -- greek small letter pi, U+03C0 ISOgrk3 --&gt;
414 &lt;!ENTITY rho CDATA "&amp;#961;" -- greek small letter rho, U+03C1 ISOgrk3 --&gt;
415 &lt;!ENTITY sigmaf CDATA "&amp;#962;" -- greek small letter final sigma,
416 U+03C2 ISOgrk3 --&gt;
417 &lt;!ENTITY sigma CDATA "&amp;#963;" -- greek small letter sigma,
418 U+03C3 ISOgrk3 --&gt;
419 &lt;!ENTITY tau CDATA "&amp;#964;" -- greek small letter tau, U+03C4 ISOgrk3 --&gt;
420 &lt;!ENTITY upsilon CDATA "&amp;#965;" -- greek small letter upsilon,
421 U+03C5 ISOgrk3 --&gt;
422 &lt;!ENTITY phi CDATA "&amp;#966;" -- greek small letter phi, U+03C6 ISOgrk3 --&gt;
423 &lt;!ENTITY chi CDATA "&amp;#967;" -- greek small letter chi, U+03C7 ISOgrk3 --&gt;
424 &lt;!ENTITY psi CDATA "&amp;#968;" -- greek small letter psi, U+03C8 ISOgrk3 --&gt;
425 &lt;!ENTITY omega CDATA "&amp;#969;" -- greek small letter omega,
426 U+03C9 ISOgrk3 --&gt;
427 &lt;!ENTITY thetasym CDATA "&amp;#977;" -- greek small letter theta symbol,
428 U+03D1 NEW --&gt;
429 &lt;!ENTITY upsih CDATA "&amp;#978;" -- greek upsilon with hook symbol,
430 U+03D2 NEW --&gt;
431 &lt;!ENTITY piv CDATA "&amp;#982;" -- greek pi symbol, U+03D6 ISOgrk3 --&gt;
432
433 &lt;!-- General Punctuation --&gt;
434 &lt;!ENTITY bull CDATA "&amp;#8226;" -- bullet = black small circle,
435 U+2022 ISOpub --&gt;
436 &lt;!-- bullet is NOT the same as bullet operator, U+2219 --&gt;
437 &lt;!ENTITY hellip CDATA "&amp;#8230;" -- horizontal ellipsis = three dot leader,
438 U+2026 ISOpub --&gt;
439 &lt;!ENTITY prime CDATA "&amp;#8242;" -- prime = minutes = feet, U+2032 ISOtech --&gt;
440 &lt;!ENTITY Prime CDATA "&amp;#8243;" -- double prime = seconds = inches,
441 U+2033 ISOtech --&gt;
442 &lt;!ENTITY oline CDATA "&amp;#8254;" -- overline = spacing overscore,
443 U+203E NEW --&gt;
444 &lt;!ENTITY frasl CDATA "&amp;#8260;" -- fraction slash, U+2044 NEW --&gt;
445
446 &lt;!-- Letterlike Symbols --&gt;
447 &lt;!ENTITY weierp CDATA "&amp;#8472;" -- script capital P = power set
448 = Weierstrass p, U+2118 ISOamso --&gt;
449 &lt;!ENTITY image CDATA "&amp;#8465;" -- blackletter capital I = imaginary part,
450 U+2111 ISOamso --&gt;
451 &lt;!ENTITY real CDATA "&amp;#8476;" -- blackletter capital R = real part symbol,
452 U+211C ISOamso --&gt;
453 &lt;!ENTITY trade CDATA "&amp;#8482;" -- trade mark sign, U+2122 ISOnum --&gt;
454 &lt;!ENTITY alefsym CDATA "&amp;#8501;" -- alef symbol = first transfinite cardinal,
455 U+2135 NEW --&gt;
456 &lt;!-- alef symbol is NOT the same as hebrew letter alef,
457 U+05D0 although the same glyph could be used to depict both characters --&gt;
458
459 &lt;!-- Arrows --&gt;
460 &lt;!ENTITY larr CDATA "&amp;#8592;" -- leftwards arrow, U+2190 ISOnum --&gt;
461 &lt;!ENTITY uarr CDATA "&amp;#8593;" -- upwards arrow, U+2191 ISOnum--&gt;
462 &lt;!ENTITY rarr CDATA "&amp;#8594;" -- rightwards arrow, U+2192 ISOnum --&gt;
463 &lt;!ENTITY darr CDATA "&amp;#8595;" -- downwards arrow, U+2193 ISOnum --&gt;
464 &lt;!ENTITY harr CDATA "&amp;#8596;" -- left right arrow, U+2194 ISOamsa --&gt;
465 &lt;!ENTITY crarr CDATA "&amp;#8629;" -- downwards arrow with corner leftwards
466 = carriage return, U+21B5 NEW --&gt;
467 &lt;!ENTITY lArr CDATA "&amp;#8656;" -- leftwards double arrow, U+21D0 ISOtech --&gt;
468 &lt;!-- ISO 10646 does not say that lArr is the same as the 'is implied by' arrow
469 but also does not have any other character for that function. So ? lArr can
470 be used for 'is implied by' as ISOtech suggests --&gt;
471 &lt;!ENTITY uArr CDATA "&amp;#8657;" -- upwards double arrow, U+21D1 ISOamsa --&gt;
472 &lt;!ENTITY rArr CDATA "&amp;#8658;" -- rightwards double arrow,
473 U+21D2 ISOtech --&gt;
474 &lt;!-- ISO 10646 does not say this is the 'implies' character but does not have
475 another character with this function so ?
476 rArr can be used for 'implies' as ISOtech suggests --&gt;
477 &lt;!ENTITY dArr CDATA "&amp;#8659;" -- downwards double arrow, U+21D3 ISOamsa --&gt;
478 &lt;!ENTITY hArr CDATA "&amp;#8660;" -- left right double arrow,
479 U+21D4 ISOamsa --&gt;
480
481 &lt;!-- Mathematical Operators --&gt;
482 &lt;!ENTITY forall CDATA "&amp;#8704;" -- for all, U+2200 ISOtech --&gt;
483 &lt;!ENTITY part CDATA "&amp;#8706;" -- partial differential, U+2202 ISOtech --&gt;
484 &lt;!ENTITY exist CDATA "&amp;#8707;" -- there exists, U+2203 ISOtech --&gt;
485 &lt;!ENTITY empty CDATA "&amp;#8709;" -- empty set = null set = diameter,
486 U+2205 ISOamso --&gt;
487 &lt;!ENTITY nabla CDATA "&amp;#8711;" -- nabla = backward difference,
488 U+2207 ISOtech --&gt;
489 &lt;!ENTITY isin CDATA "&amp;#8712;" -- element of, U+2208 ISOtech --&gt;
490 &lt;!ENTITY notin CDATA "&amp;#8713;" -- not an element of, U+2209 ISOtech --&gt;
491 &lt;!ENTITY ni CDATA "&amp;#8715;" -- contains as member, U+220B ISOtech --&gt;
492 &lt;!-- should there be a more memorable name than 'ni'? --&gt;
493 &lt;!ENTITY prod CDATA "&amp;#8719;" -- n-ary product = product sign,
494 U+220F ISOamsb --&gt;
495 &lt;!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though
496 the same glyph might be used for both --&gt;
497 &lt;!ENTITY sum CDATA "&amp;#8721;" -- n-ary sumation, U+2211 ISOamsb --&gt;
498 &lt;!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'
499 though the same glyph might be used for both --&gt;
500 &lt;!ENTITY minus CDATA "&amp;#8722;" -- minus sign, U+2212 ISOtech --&gt;
501 &lt;!ENTITY lowast CDATA "&amp;#8727;" -- asterisk operator, U+2217 ISOtech --&gt;
502 &lt;!ENTITY radic CDATA "&amp;#8730;" -- square root = radical sign,
503 U+221A ISOtech --&gt;
504 &lt;!ENTITY prop CDATA "&amp;#8733;" -- proportional to, U+221D ISOtech --&gt;
505 &lt;!ENTITY infin CDATA "&amp;#8734;" -- infinity, U+221E ISOtech --&gt;
506 &lt;!ENTITY ang CDATA "&amp;#8736;" -- angle, U+2220 ISOamso --&gt;
507 &lt;!ENTITY and CDATA "&amp;#8743;" -- logical and = wedge, U+2227 ISOtech --&gt;
508 &lt;!ENTITY or CDATA "&amp;#8744;" -- logical or = vee, U+2228 ISOtech --&gt;
509 &lt;!ENTITY cap CDATA "&amp;#8745;" -- intersection = cap, U+2229 ISOtech --&gt;
510 &lt;!ENTITY cup CDATA "&amp;#8746;" -- union = cup, U+222A ISOtech --&gt;
511 &lt;!ENTITY int CDATA "&amp;#8747;" -- integral, U+222B ISOtech --&gt;
512 &lt;!ENTITY there4 CDATA "&amp;#8756;" -- therefore, U+2234 ISOtech --&gt;
513 &lt;!ENTITY sim CDATA "&amp;#8764;" -- tilde operator = varies with = similar to,
514 U+223C ISOtech --&gt;
515 &lt;!-- tilde operator is NOT the same character as the tilde, U+007E,
516 although the same glyph might be used to represent both --&gt;
517 &lt;!ENTITY cong CDATA "&amp;#8773;" -- approximately equal to, U+2245 ISOtech --&gt;
518 &lt;!ENTITY asymp CDATA "&amp;#8776;" -- almost equal to = asymptotic to,
519 U+2248 ISOamsr --&gt;
520 &lt;!ENTITY ne CDATA "&amp;#8800;" -- not equal to, U+2260 ISOtech --&gt;
521 &lt;!ENTITY equiv CDATA "&amp;#8801;" -- identical to, U+2261 ISOtech --&gt;
522 &lt;!ENTITY le CDATA "&amp;#8804;" -- less-than or equal to, U+2264 ISOtech --&gt;
523 &lt;!ENTITY ge CDATA "&amp;#8805;" -- greater-than or equal to,
524 U+2265 ISOtech --&gt;
525 &lt;!ENTITY sub CDATA "&amp;#8834;" -- subset of, U+2282 ISOtech --&gt;
526 &lt;!ENTITY sup CDATA "&amp;#8835;" -- superset of, U+2283 ISOtech --&gt;
527 &lt;!-- note that nsup, 'not a superset of, U+2283' is not covered by the Symbol
528 font encoding and is not included. Should it be, for symmetry?
529 It is in ISOamsn --&gt;
530 &lt;!ENTITY nsub CDATA "&amp;#8836;" -- not a subset of, U+2284 ISOamsn --&gt;
531 &lt;!ENTITY sube CDATA "&amp;#8838;" -- subset of or equal to, U+2286 ISOtech --&gt;
532 &lt;!ENTITY supe CDATA "&amp;#8839;" -- superset of or equal to,
533 U+2287 ISOtech --&gt;
534 &lt;!ENTITY oplus CDATA "&amp;#8853;" -- circled plus = direct sum,
535 U+2295 ISOamsb --&gt;
536 &lt;!ENTITY otimes CDATA "&amp;#8855;" -- circled times = vector product,
537 U+2297 ISOamsb --&gt;
538 &lt;!ENTITY perp CDATA "&amp;#8869;" -- up tack = orthogonal to = perpendicular,
539 U+22A5 ISOtech --&gt;
540 &lt;!ENTITY sdot CDATA "&amp;#8901;" -- dot operator, U+22C5 ISOamsb --&gt;
541 &lt;!-- dot operator is NOT the same character as U+00B7 middle dot --&gt;
542
543 &lt;!-- Miscellaneous Technical --&gt;
544 &lt;!ENTITY lceil CDATA "&amp;#8968;" -- left ceiling = apl upstile,
545 U+2308 ISOamsc --&gt;
546 &lt;!ENTITY rceil CDATA "&amp;#8969;" -- right ceiling, U+2309 ISOamsc --&gt;
547 &lt;!ENTITY lfloor CDATA "&amp;#8970;" -- left floor = apl downstile,
548 U+230A ISOamsc --&gt;
549 &lt;!ENTITY rfloor CDATA "&amp;#8971;" -- right floor, U+230B ISOamsc --&gt;
550 &lt;!ENTITY lang CDATA "&amp;#9001;" -- left-pointing angle bracket = bra,
551 U+2329 ISOtech --&gt;
552 &lt;!-- lang is NOT the same character as U+003C 'less than'
553 or U+2039 'single left-pointing angle quotation mark' --&gt;
554 &lt;!ENTITY rang CDATA "&amp;#9002;" -- right-pointing angle bracket = ket,
555 U+232A ISOtech --&gt;
556 &lt;!-- rang is NOT the same character as U+003E 'greater than'
557 or U+203A 'single right-pointing angle quotation mark' --&gt;
558
559 &lt;!-- Geometric Shapes --&gt;
560 &lt;!ENTITY loz CDATA "&amp;#9674;" -- lozenge, U+25CA ISOpub --&gt;
561
562 &lt;!-- Miscellaneous Symbols --&gt;
563 &lt;!ENTITY spades CDATA "&amp;#9824;" -- black spade suit, U+2660 ISOpub --&gt;
564 &lt;!-- black here seems to mean filled as opposed to hollow --&gt;
565 &lt;!ENTITY clubs CDATA "&amp;#9827;" -- black club suit = shamrock,
566 U+2663 ISOpub --&gt;
567 &lt;!ENTITY hearts CDATA "&amp;#9829;" -- black heart suit = valentine,
568 U+2665 ISOpub --&gt;
569 &lt;!ENTITY diams CDATA "&amp;#9830;" -- black diamond suit, U+2666 ISOpub --&gt;
570 </pre>
571 </div>
572
573 <h2><a name="h-24.4">24.4</a> <a name="misc">Character entity references for
574 markup-significant and internationalization characters</a></h2>
575
576 <p>The character entity references in this section are for escaping
577 markup-significant characters (these are the same as those in HTML 2.0 and
578 3.2), for denoting spaces and dashes. Other characters in this section apply to
579 internationalization issues such as the disambiguation of bidirectional text
580 (see the section on <a href="http://www.w3.org/TR/REC-html40/struct/dirlang.html#bidirection">bidirectional
581 text</a> for details).</p>
582
583 <p>Entities have also been added for the remaining characters occurring in
584 CP-1252 which do not occur in the HTMLlat1 or HTMLsymbol entity sets. These all
585 occur in the 128 to 159 range within the CP-1252 charset. These entities permit
586 the characters to be denoted in a platform-independent manner.</p>
587
588 <p>To support these entities, user agents may support full <a rel="biblioentry" href="http://www.w3.org/TR/REC-html40/references.html#ref-ISO10646" class="normref">[ISO10646]</a> or use
589 other means. Display of glyphs for these characters may be obtained by being
590 able to display the relevant <a rel="biblioentry" href="http://www.w3.org/TR/REC-html40/references.html#ref-ISO10646" class="normref">[ISO10646]</a> characters or
591 by other means, such as internally mapping the listed entities, numeric
592 character references, and characters to the appropriate position in some font
593 that contains the requisite glyphs.</p>
594
595 <h3><a name="h-24.4.1">24.4.1</a> The list of characters</h3>
596
597 <div class="dtd-fragment">
598 <pre>&lt;!-- Special characters for HTML --&gt;
599
600 &lt;!-- Character entity set. Typical invocation:
601 &lt;!ENTITY % HTMLspecial PUBLIC
602 "-//W3C//ENTITIES Special//EN//HTML"&gt;
603 %HTMLspecial; --&gt;
604
605 &lt;!-- Portions © International Organization for Standardization 1986:
606 Permission to copy in any form is granted for use with
607 conforming SGML systems and applications as defined in
608 ISO 8879, provided this notice is included in all copies.
609 --&gt;
610
611 &lt;!-- Relevant ISO entity set is given unless names are newly introduced.
612 New names (i.e., not in ISO 8879 list) do not clash with any
613 existing ISO 8879 entity names. ISO 10646 character numbers
614 are given for each character, in hex. CDATA values are decimal
615 conversions of the ISO 10646 values and refer to the document
616 character set. Names are ISO 10646 names.
617
618 --&gt;
619
620 &lt;!-- C0 Controls and Basic Latin --&gt;
621 &lt;!ENTITY quot CDATA "&amp;#34;" -- quotation mark = APL quote,
622 U+0022 ISOnum --&gt;
623 &lt;!ENTITY amp CDATA "&amp;#38;" -- ampersand, U+0026 ISOnum --&gt;
624 &lt;!ENTITY lt CDATA "&amp;#60;" -- less-than sign, U+003C ISOnum --&gt;
625 &lt;!ENTITY gt CDATA "&amp;#62;" -- greater-than sign, U+003E ISOnum --&gt;
626
627 &lt;!-- Latin Extended-A --&gt;
628 &lt;!ENTITY OElig CDATA "&amp;#338;" -- latin capital ligature OE,
629 U+0152 ISOlat2 --&gt;
630 &lt;!ENTITY oelig CDATA "&amp;#339;" -- latin small ligature oe, U+0153 ISOlat2 --&gt;
631 &lt;!-- ligature is a misnomer, this is a separate character in some languages --&gt;
632 &lt;!ENTITY Scaron CDATA "&amp;#352;" -- latin capital letter S with caron,
633 U+0160 ISOlat2 --&gt;
634 &lt;!ENTITY scaron CDATA "&amp;#353;" -- latin small letter s with caron,
635 U+0161 ISOlat2 --&gt;
636 &lt;!ENTITY Yuml CDATA "&amp;#376;" -- latin capital letter Y with diaeresis,
637 U+0178 ISOlat2 --&gt;
638
639 &lt;!-- Spacing Modifier Letters --&gt;
640 &lt;!ENTITY circ CDATA "&amp;#710;" -- modifier letter circumflex accent,
641 U+02C6 ISOpub --&gt;
642 &lt;!ENTITY tilde CDATA "&amp;#732;" -- small tilde, U+02DC ISOdia --&gt;
643
644 &lt;!-- General Punctuation --&gt;
645 &lt;!ENTITY ensp CDATA "&amp;#8194;" -- en space, U+2002 ISOpub --&gt;
646 &lt;!ENTITY emsp CDATA "&amp;#8195;" -- em space, U+2003 ISOpub --&gt;
647 &lt;!ENTITY thinsp CDATA "&amp;#8201;" -- thin space, U+2009 ISOpub --&gt;
648 &lt;!ENTITY zwnj CDATA "&amp;#8204;" -- zero width non-joiner,
649 U+200C NEW RFC 2070 --&gt;
650 &lt;!ENTITY zwj CDATA "&amp;#8205;" -- zero width joiner, U+200D NEW RFC 2070 --&gt;
651 &lt;!ENTITY lrm CDATA "&amp;#8206;" -- left-to-right mark, U+200E NEW RFC 2070 --&gt;
652 &lt;!ENTITY rlm CDATA "&amp;#8207;" -- right-to-left mark, U+200F NEW RFC 2070 --&gt;
653 &lt;!ENTITY ndash CDATA "&amp;#8211;" -- en dash, U+2013 ISOpub --&gt;
654 &lt;!ENTITY mdash CDATA "&amp;#8212;" -- em dash, U+2014 ISOpub --&gt;
655 &lt;!ENTITY lsquo CDATA "&amp;#8216;" -- left single quotation mark,
656 U+2018 ISOnum --&gt;
657 &lt;!ENTITY rsquo CDATA "&amp;#8217;" -- right single quotation mark,
658 U+2019 ISOnum --&gt;
659 &lt;!ENTITY sbquo CDATA "&amp;#8218;" -- single low-9 quotation mark, U+201A NEW --&gt;
660 &lt;!ENTITY ldquo CDATA "&amp;#8220;" -- left double quotation mark,
661 U+201C ISOnum --&gt;
662 &lt;!ENTITY rdquo CDATA "&amp;#8221;" -- right double quotation mark,
663 U+201D ISOnum --&gt;
664 &lt;!ENTITY bdquo CDATA "&amp;#8222;" -- double low-9 quotation mark, U+201E NEW --&gt;
665 &lt;!ENTITY dagger CDATA "&amp;#8224;" -- dagger, U+2020 ISOpub --&gt;
666 &lt;!ENTITY Dagger CDATA "&amp;#8225;" -- double dagger, U+2021 ISOpub --&gt;
667 &lt;!ENTITY permil CDATA "&amp;#8240;" -- per mille sign, U+2030 ISOtech --&gt;
668 &lt;!ENTITY lsaquo CDATA "&amp;#8249;" -- single left-pointing angle quotation mark,
669 U+2039 ISO proposed --&gt;
670 &lt;!-- lsaquo is proposed but not yet ISO standardized --&gt;
671 &lt;!ENTITY rsaquo CDATA "&amp;#8250;" -- single right-pointing angle quotation mark,
672 U+203A ISO proposed --&gt;
673 &lt;!-- rsaquo is proposed but not yet ISO standardized --&gt;
674 &lt;!ENTITY euro CDATA "&amp;#8364;" -- euro sign, U+20AC NEW --&gt;
675 </pre>
676 </div>
677
678 <div class="navbar" align="center">
679 <hr><a href="http://www.w3.org/TR/REC-html40/sgml/framesetdtd.html">previous</a> &nbsp; <a href="http://www.w3.org/TR/REC-html40/appendix/changes.html">next</a> &nbsp; <a href="http://www.w3.org/TR/REC-html40/cover.html#minitoc">
680 contents</a> &nbsp; <a href="http://www.w3.org/TR/REC-html40/index/elements.html">elements</a> &nbsp; <a href="http://www.w3.org/TR/REC-html40/index/attributes.html">attributes</a> &nbsp; <a href="http://www.w3.org/TR/REC-html40/index/list.html">index</a></div>
681 </body></html>
0 #!/usr/bin/tclsh
1
2 # get names for html-4.0 characters from:
3 # http://www.w3.org/TR/REC-html40/sgml/entities.html
4 set f [open entities.html r]
5 set entity_name_length_max 0
6 set nr_of_entities 0
7 while {! [eof $f]} {
8 set rec [gets $f]
9 if {[scan $rec {&lt;!ENTITY %s CDATA "&amp;#%d;"; --} name val] == 2} {
10 set entity($name) $val
11 set entity_name_length [string length $name]
12 if {$entity_name_length > $entity_name_length_max} {
13 set entity_name_length_max $entity_name_length
14 }
15 incr nr_of_entities
16 }
17 }
18 close $f
19
20 set f [open entities.h w]
21 puts $f "/*"
22 puts $f " * Generated file - do not edit directly."
23 puts $f " *"
24 puts $f " * This file was generated from:"
25 puts $f " * http://www.w3.org/TR/REC-html40/sgml/entities.html"
26 puts $f " * by means of the script:"
27 puts $f " * entities.tcl"
28 puts $f " */"
29 puts $f ""
30 puts $f "#ifdef __cplusplus"
31 puts $f "extern \"C\" {"
32 puts $f "#endif"
33 puts $f ""
34 puts $f "static struct entities_s {"
35 puts $f " char *name;"
36 puts $f " int value;"
37 puts $f "} entities\[\] = {"
38 foreach name [lsort [array names entity]] {
39 puts $f " {\"$name\", $entity($name)},"
40 }
41 puts $f "};"
42 puts $f ""
43 puts $f "#define ENTITY_NAME_LENGTH_MAX $entity_name_length_max"
44 puts $f "#define NR_OF_ENTITIES $nr_of_entities"
45 puts $f ""
46 puts $f "#ifdef __cplusplus"
47 puts $f "}"
48 puts $f "#endif"
49 close $f
0 ------------- New fontwheel --------------
1 times
2 .....Hello, there!
3 ------------------------------------------
4 ------------- New fontwheel --------------
5 times
6 .....Hello, there!
7 ------------------------------------------
8 ------------- New fontwheel --------------
9 arial
10 .....Hello, there!
11 ------------------------------------------
12 ------------- New fontwheel --------------
13 arial
14 .....Hello, there!
15 ------------------------------------------
16 ------------- New fontwheel --------------
17 times
18 Hello, there!
19 ------------------------------------------
20 Could not find/open font
21 Could not find/open font
22 Could not find/open font
23 Could not find/open font
24 Could not find/open font
25 Could not find/open font
26 Could not find/open font
27 Could not find/open font
28 Could not find/open font
29 Could not find/open font
30 Could not find/open font
31 Could not find/open font
32 Could not find/open font
33 Could not find/open font
34 Could not find/open font
35 Could not find/open font
36 Could not find/open font
37 Could not find/open font
38 ------------- New fontwheel --------------
39 times
40 Hello, there!
41 ------------------------------------------
42 Could not find/open font
43 Could not find/open font
44 Could not find/open font
45 Could not find/open font
46 Could not find/open font
47 Could not find/open font
48 Could not find/open font
49 Could not find/open font
50 Could not find/open font
51 Could not find/open font
52 Could not find/open font
53 Could not find/open font
54 ------------- New fontwheel --------------
55 arial
56 Hello, there!
57 ------------------------------------------
58 ------------- New fontwheel --------------
59 arial
60 Hello
61 there!
62 ------------------------------------------
0 #ifdef HAVE_CONFIG_H
1 #include "config.h"
2 #endif
3
4 #include "gd.h"
5
6 int main (int argc, char *argv[])
7 {
8 gdImagePtr im;
9 int green, blue;
10 gdFTStringExtra se;
11 FILE *out;
12 im = gdImageCreateTrueColor(300, 100);
13 green = gdImageColorAllocate(im, 128, 255, 128);
14 gdImageFilledRectangle(im, 0, 0, 300, 100, green);
15 blue = gdImageColorAllocate(im, 128, 128, 255);
16 /* Default: fontlist argument is a pathname to a truetype font */
17 gdImageStringFT(im, 0, blue, "arial",
18 12, 0, 20, 20, "plain pathname default");
19 /* Specifically opt for fontconfig */
20 se.flags = gdFTEX_FONTCONFIG;
21 gdImageStringFTEx(im, 0, blue, "arial:bold",
22 12, 0, 20, 40, "fontconfig arial:bold", &se);
23 /* Change the default to fontconfig */
24 if (!gdFTUseFontConfig(1)) {
25 fprintf(stderr, "fontconfig not compiled into gd\n");
26 }
27 /* Use fontconfig by (newly set) default */
28 gdImageStringFT(im, 0, blue, "arial:bold",
29 12, 0, 20, 60, "fontconfig arial:bold default");
30 /* Explicitly use a pathname despite fontconfig default */
31 se.flags = gdFTEX_FONTPATHNAME;
32 gdImageStringFTEx(im, 0, blue, "arial",
33 12, 0, 20, 80, "plain pathname", &se);
34 #ifdef HAVE_LIBPNG
35 out = fopen("fontconfigtest.png", "wb");
36 gdImagePng(im, out);
37 fclose(out);
38 #else
39 fprintf(stderr, "PNG not compiled into gd\n");
40 #endif /* HAVE_LIBPNG */
41 return 0;
42 }
43
0
1 #ifdef HAVE_CONFIG_H
2 #include "config.h"
3 #endif
4
5 #include "gd.h"
6
7 void
8 dosizes (gdImagePtr im, int color, char *fontfile,
9 int x, int y, const char *string)
10 {
11 int brect[8];
12 double curang = 0.0;
13 char *cp;
14 int cursize;
15 char buf[60];
16
17 for (cursize = 1; cursize <= 20; cursize++)
18 {
19 sprintf (buf, "%d: %s", cursize, string);
20
21 /* The case of newlines is taken care of in the gdImageStringTTF call */
22 #if defined(OLDER_GD)
23 cp =
24 gdImageStringTTF (im, brect, color, fontfile, cursize, curang, x, y,
25 buf);
26 #else
27 cp =
28 gdImageStringFT (im, brect, color, fontfile, cursize, curang, x, y,
29 buf);
30 #endif
31 if (cp)
32 fprintf (stderr, "%s\n", cp);
33 y += cursize + 4;
34
35 /* render the same fontsize with antialiasing turned off */
36 #if defined(OLDER_GD)
37 cp =
38 gdImageStringTTF (im, brect, 0 - color, fontfile, cursize, curang, x,
39 y, buf);
40 #else
41 cp =
42 gdImageStringFT (im, brect, 0 - color, fontfile, cursize, curang, x,
43 y, buf);
44 #endif
45 if (cp)
46 fprintf (stderr, "%s\n", cp);
47 y += cursize + 4;
48 }
49 }
50
51 void
52 dotest (char *font, int w, int h, char *string, const char *filename)
53 {
54 gdImagePtr im;
55 FILE *out;
56 int bg;
57 int fc;
58
59 im = gdImageCreate (w, h);
60 bg = gdImageColorAllocate (im, 0, 0, 0);
61
62 gdImageFilledRectangle (im, 1, 1, w - 1, h - 1, bg);
63
64 fc = gdImageColorAllocate (im, 255, 192, 192);
65
66 out = fopen (filename, "wb");
67
68 dosizes (im, fc, font, 20, 20, string);
69
70 #if defined(HAVE_LIBPNG)
71 gdImagePng (im, out);
72 #elif defined(HAVE_LIBJPEG)
73 gdImageJpeg (im, out, -1);
74 #endif
75 fclose (out);
76 }
77
78 int
79 main (int argc, char **argv)
80 {
81
82 #if defined(HAVE_LIBPNG)
83 dotest ("times", 400, 600, ".....Hello, there!", "fontsizetest1.png");
84 dotest ("cour", 400, 600, ".....Hello, there!", "fontsizetest2.png");
85 dotest ("arial", 400, 600, ".....Hello, there!", "fontsizetest3.png");
86 dotest ("luximr", 400, 600, ".....Hello, there!", "fontsizetest4.png");
87 #elif defined(HAVE_LIBJPEG)
88 dotest ("times", 400, 600, ".....Hello, there!", "fontsizetest1.jpeg");
89 dotest ("cour", 400, 600, ".....Hello, there!", "fontsizetest2.jpeg");
90 dotest ("arial", 400, 600, ".....Hello, there!", "fontsizetest3.jpeg");
91 dotest ("luximr", 400, 600, ".....Hello, there!", "fontsizetest4.jpeg");
92 #else
93 fprintf (stderr, "no PNG or JPEG support\n");
94 #endif
95
96 return 0;
97 }
0
1 #ifdef HAVE_CONFIG_H
2 #include "config.h"
3 #endif
4
5 #include <math.h>
6 #include "gd.h"
7 #define DEGTORAD(x) ( (x) * (2.0 * 3.14159265) / 360.0 )
8
9 void
10 doerr (FILE * err, const char *msg)
11 {
12 if (err)
13 {
14 fprintf (err, "%s\n", msg);
15 fflush (err);
16 }
17 }
18
19 void
20 dowheel (gdImagePtr im, int color, char *fontfile, int fontsize,
21 double angle, int x, int y, int offset, char *string)
22 {
23 int brect[8];
24 FILE *err;
25 double curangrads, curang, x0, y0;
26 char *cp;
27
28 err = fopen ("err.out", "a");
29 doerr (err, "------------- New fontwheel --------------");
30 doerr (err, fontfile);
31 doerr (err, string);
32 doerr (err, "------------------------------------------");
33
34 for (curang = 0.0; curang < 360.0; curang += angle)
35 {
36 curangrads = DEGTORAD(curang);
37 x0 = x + cos (curangrads) * offset;
38 y0 = y - sin (curangrads) * offset;
39
40 /* The case of newlines is taken care of in the gdImageStringTTF call */
41 #if defined(OLDER_GD)
42 cp = gdImageStringTTF (im, brect, color, fontfile, fontsize,
43 curangrads, x0, y0, string);
44 #else
45 cp = gdImageStringFT (im, brect, color, fontfile, fontsize,
46 curangrads, x0, y0, string);
47 #endif
48 if (cp)
49 doerr (err, cp);
50
51 gdImagePolygon (im, (gdPointPtr)brect, 4, color);
52 }
53
54 fclose (err);
55 }
56
57 #if 0
58 void
59 dolines (gdImagePtr im, int color, double incr, int x, int y, int offset,
60 int length)
61 {
62 double curang;
63 double angle;
64 double x0, x1, y0, y1;
65 for (curang = 0.0; curang < 360.0; curang += incr)
66 {
67 angle = curang * (2.0 * 3.14159265) / 360.0;
68 x0 = cos (angle) * offset + x;
69 x1 = cos (angle) * (offset + length) + x;
70 y0 = sin (angle) * offset + y;
71 y1 = sin (angle) * (offset + length) + y;
72 gdImageLine (im, x0, y0, x1, y1, color);
73 }
74 }
75 #endif
76
77 void
78 dotest (char *font, int size, double incr,
79 int w, int h, char *string, const char *filename)
80 {
81 gdImagePtr im;
82 FILE *out;
83 int bg;
84 int fc;
85 #if 0
86 int lc;
87 #endif
88 int xc = w / 2;
89 int yc = h / 2;
90
91 im = gdImageCreate (w, h);
92 bg = gdImageColorAllocate (im, 0, 0, 0);
93
94 gdImageFilledRectangle (im, 1, 1, w - 1, h - 1, bg);
95
96 fc = gdImageColorAllocate (im, 255, 192, 192);
97 #if 0
98 lc = gdImageColorAllocate (im, 192, 255, 255);
99 #endif
100
101 out = fopen (filename, "wb");
102
103 dowheel (im, fc, font, size, incr, xc, yc, 20, string);
104 #if 0
105 dolines (im, lc, incr, xc, yc, 20, 120);
106 #endif
107
108 #if defined(HAVE_LIBPNG)
109 gdImagePng (im, out);
110 #elif defined(HAVE_LIBJPEG)
111 gdImageJpeg (im, out, -1);
112 #endif
113
114 fclose (out);
115 }
116
117 int
118 main (int argc, char **argv)
119 {
120
121 #if defined(HAVE_LIBPNG)
122 dotest ("times", 16, 20.0, 400, 400, "Hello, there!",
123 "fontwheeltest1.png");
124 dotest ("times", 16, 30.0, 400, 400, "Hello, there!",
125 "fontwheeltest2.png");
126 dotest ("arial", 16, 45.0, 400, 400, "Hello, there!",
127 "fontwheeltest3.png");
128 dotest ("arial", 16, 90.0, 400, 400, "Hello\nthere!",
129 "fontwheeltest4.png");
130 #elif defined(HAVE_LIBJPEG)
131 dotest ("times", 16, 20.0, 400, 400, "Hello, there!",
132 "fontwheeltest1.jpeg");
133 dotest ("times", 16, 30.0, 400, 400, "Hello, there!",
134 "fontwheeltest2.jpeg");
135 dotest ("arial", 16, 45.0, 400, 400, "Hello, there!",
136 "fontwheeltest3.jpeg");
137 dotest ("arial", 16, 90.0, 400, 400, "Hello\nthere!",
138 "fontwheeltest4.jpeg");
139 #else
140 fprintf (stderr, "no PNG or JPEG support\n");
141 #endif
142
143 return 0;
144 }
0 /* $Id: gd.c,v 1.49.2.16 2007/06/19 20:25:51 pajoye Exp $ */
1 #ifdef HAVE_CONFIG_H
2 #include "config.h"
3 #endif
4
5 #include <stdio.h>
6 #include <math.h>
7 #include <string.h>
8 #include <stdlib.h>
9 /* 2.03: don't include zlib here or we can't build without PNG */
10 #include "gd.h"
11 #include "gdhelpers.h"
12
13 /* 2.0.12: this now checks the clipping rectangle */
14 #define gdImageBoundsSafeMacro(im, x, y) (!((((y) < (im)->cy1) || ((y) > (im)->cy2)) || (((x) < (im)->cx1) || ((x) > (im)->cx2))))
15
16 #ifdef _OSD_POSIX /* BS2000 uses the EBCDIC char set instead of ASCII */
17 #define CHARSET_EBCDIC
18 #define __attribute__(any) /*nothing */
19 #endif
20 /*_OSD_POSIX*/
21
22 #ifndef CHARSET_EBCDIC
23 #define ASC(ch) ch
24 #else /*CHARSET_EBCDIC */
25 #define ASC(ch) gd_toascii[(unsigned char)ch]
26 static const unsigned char gd_toascii[256] = {
27 /*00 */ 0x00, 0x01, 0x02, 0x03, 0x85, 0x09, 0x86, 0x7f,
28 0x87, 0x8d, 0x8e, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /*................ */
29 /*10 */ 0x10, 0x11, 0x12, 0x13, 0x8f, 0x0a, 0x08, 0x97,
30 0x18, 0x19, 0x9c, 0x9d, 0x1c, 0x1d, 0x1e, 0x1f, /*................ */
31 /*20 */ 0x80, 0x81, 0x82, 0x83, 0x84, 0x92, 0x17, 0x1b,
32 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x05, 0x06, 0x07, /*................ */
33 /*30 */ 0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04,
34 0x98, 0x99, 0x9a, 0x9b, 0x14, 0x15, 0x9e, 0x1a, /*................ */
35 /*40 */ 0x20, 0xa0, 0xe2, 0xe4, 0xe0, 0xe1, 0xe3, 0xe5,
36 0xe7, 0xf1, 0x60, 0x2e, 0x3c, 0x28, 0x2b, 0x7c, /* .........`.<(+| */
37 /*50 */ 0x26, 0xe9, 0xea, 0xeb, 0xe8, 0xed, 0xee, 0xef,
38 0xec, 0xdf, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x9f, /*&.........!$*);. */
39 /*60 */ 0x2d, 0x2f, 0xc2, 0xc4, 0xc0, 0xc1, 0xc3, 0xc5,
40 0xc7, 0xd1, 0x5e, 0x2c, 0x25, 0x5f, 0x3e, 0x3f,
41 /*-/........^,%_>?*/
42 /*70 */ 0xf8, 0xc9, 0xca, 0xcb, 0xc8, 0xcd, 0xce, 0xcf,
43 0xcc, 0xa8, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22, /*..........:#@'=" */
44 /*80 */ 0xd8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
45 0x68, 0x69, 0xab, 0xbb, 0xf0, 0xfd, 0xfe, 0xb1, /*.abcdefghi...... */
46 /*90 */ 0xb0, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
47 0x71, 0x72, 0xaa, 0xba, 0xe6, 0xb8, 0xc6, 0xa4, /*.jklmnopqr...... */
48 /*a0 */ 0xb5, 0xaf, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
49 0x79, 0x7a, 0xa1, 0xbf, 0xd0, 0xdd, 0xde, 0xae, /*..stuvwxyz...... */
50 /*b0 */ 0xa2, 0xa3, 0xa5, 0xb7, 0xa9, 0xa7, 0xb6, 0xbc,
51 0xbd, 0xbe, 0xac, 0x5b, 0x5c, 0x5d, 0xb4, 0xd7, /*...........[\].. */
52 /*c0 */ 0xf9, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
53 0x48, 0x49, 0xad, 0xf4, 0xf6, 0xf2, 0xf3, 0xf5, /*.ABCDEFGHI...... */
54 /*d0 */ 0xa6, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,
55 0x51, 0x52, 0xb9, 0xfb, 0xfc, 0xdb, 0xfa, 0xff, /*.JKLMNOPQR...... */
56 /*e0 */ 0xd9, 0xf7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
57 0x59, 0x5a, 0xb2, 0xd4, 0xd6, 0xd2, 0xd3, 0xd5, /*..STUVWXYZ...... */
58 /*f0 */ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
59 0x38, 0x39, 0xb3, 0x7b, 0xdc, 0x7d, 0xda, 0x7e /*0123456789.{.}.~ */
60 };
61 #endif /*CHARSET_EBCDIC */
62
63 extern int gdCosT[];
64 extern int gdSinT[];
65
66 static void gdImageBrushApply (gdImagePtr im, int x, int y);
67 static void gdImageTileApply (gdImagePtr im, int x, int y);
68 BGD_DECLARE(int) gdImageGetTrueColorPixel (gdImagePtr im, int x, int y);
69
70 BGD_DECLARE(gdImagePtr) gdImageCreate (int sx, int sy)
71 {
72 int i;
73 gdImagePtr im;
74
75 if (overflow2(sizeof (unsigned char *), sy)) {
76 return NULL;
77 }
78 if (overflow2(sizeof (unsigned char *), sx)) {
79 return NULL;
80 }
81
82 im = (gdImage *) gdMalloc (sizeof (gdImage));
83 if (!im) {
84 return NULL;
85 }
86
87 memset (im, 0, sizeof (gdImage));
88 /* Row-major ever since gd 1.3 */
89 im->pixels = (unsigned char **) gdMalloc (sizeof (unsigned char *) * sy);
90 if (!im->pixels) {
91 gdFree(im);
92 return NULL;
93 }
94
95 im->polyInts = 0;
96 im->polyAllocated = 0;
97 im->brush = 0;
98 im->tile = 0;
99 im->style = 0;
100 for (i = 0; (i < sy); i++)
101 {
102 /* Row-major ever since gd 1.3 */
103 im->pixels[i] = (unsigned char *) gdCalloc (sx, sizeof (unsigned char));
104 if (!im->pixels[i])
105 {
106 for (--i ; i >= 0; i--)
107 {
108 gdFree(im->pixels[i]);
109 }
110 gdFree(im->pixels);
111 gdFree(im);
112 return NULL;
113 }
114
115 }
116 im->sx = sx;
117 im->sy = sy;
118 im->colorsTotal = 0;
119 im->transparent = (-1);
120 im->interlace = 0;
121 im->thick = 1;
122 im->AA = 0;
123 for (i = 0; (i < gdMaxColors); i++)
124 {
125 im->open[i] = 1;
126 im->red[i] = 0;
127 im->green[i] = 0;
128 im->blue[i] = 0;
129 };
130 im->trueColor = 0;
131 im->tpixels = 0;
132 im->cx1 = 0;
133 im->cy1 = 0;
134 im->cx2 = im->sx - 1;
135 im->cy2 = im->sy - 1;
136 return im;
137 }
138
139 BGD_DECLARE(gdImagePtr) gdImageCreateTrueColor (int sx, int sy)
140 {
141 int i;
142 gdImagePtr im;
143
144 if (overflow2(sx, sy)) {
145 return NULL;
146 }
147
148 if (overflow2(sizeof (int *), sy)) {
149 return 0;
150 }
151
152 if (overflow2(sizeof(int), sx)) {
153 return NULL;
154 }
155
156 im = (gdImage *) gdMalloc (sizeof (gdImage));
157 if (!im) {
158 return 0;
159 }
160 memset (im, 0, sizeof (gdImage));
161
162 im->tpixels = (int **) gdMalloc (sizeof (int *) * sy);
163 if (!im->tpixels) {
164 gdFree(im);
165 return 0;
166 }
167 im->polyInts = 0;
168 im->polyAllocated = 0;
169 im->brush = 0;
170 im->tile = 0;
171 im->style = 0;
172 for (i = 0; (i < sy); i++)
173 {
174 im->tpixels[i] = (int *) gdCalloc (sx, sizeof (int));
175 if (!im->tpixels[i]) {
176 /* 2.0.34 */
177 i--;
178 while (i >= 0) {
179 gdFree(im->tpixels[i]);
180 i--;
181 }
182 gdFree(im->tpixels);
183 gdFree(im);
184 return 0;
185 }
186 }
187 im->sx = sx;
188 im->sy = sy;
189 im->transparent = (-1);
190 im->interlace = 0;
191 im->trueColor = 1;
192 /* 2.0.2: alpha blending is now on by default, and saving of alpha is
193 off by default. This allows font antialiasing to work as expected
194 on the first try in JPEGs -- quite important -- and also allows
195 for smaller PNGs when saving of alpha channel is not really
196 desired, which it usually isn't! */
197 im->saveAlphaFlag = 0;
198 im->alphaBlendingFlag = 1;
199 im->thick = 1;
200 im->AA = 0;
201 im->cx1 = 0;
202 im->cy1 = 0;
203 im->cx2 = im->sx - 1;
204 im->cy2 = im->sy - 1;
205 return im;
206 }
207
208 BGD_DECLARE(void) gdImageDestroy (gdImagePtr im)
209 {
210 int i;
211 if (im->pixels)
212 {
213 for (i = 0; (i < im->sy); i++)
214 {
215 gdFree (im->pixels[i]);
216 }
217 gdFree (im->pixels);
218 }
219 if (im->tpixels)
220 {
221 for (i = 0; (i < im->sy); i++)
222 {
223 gdFree (im->tpixels[i]);
224 }
225 gdFree (im->tpixels);
226 }
227 if (im->polyInts)
228 {
229 gdFree (im->polyInts);
230 }
231 if (im->style)
232 {
233 gdFree (im->style);
234 }
235 gdFree (im);
236 }
237
238 BGD_DECLARE(int) gdImageColorClosest (gdImagePtr im, int r, int g, int b)
239 {
240 return gdImageColorClosestAlpha (im, r, g, b, gdAlphaOpaque);
241 }
242
243 BGD_DECLARE(int) gdImageColorClosestAlpha (gdImagePtr im, int r, int g, int b, int a)
244 {
245 int i;
246 long rd, gd, bd, ad;
247 int ct = (-1);
248 int first = 1;
249 long mindist = 0;
250 if (im->trueColor)
251 {
252 return gdTrueColorAlpha (r, g, b, a);
253 }
254 for (i = 0; (i < (im->colorsTotal)); i++)
255 {
256 long dist;
257 if (im->open[i])
258 {
259 continue;
260 }
261 rd = (im->red[i] - r);
262 gd = (im->green[i] - g);
263 bd = (im->blue[i] - b);
264 /* gd 2.02: whoops, was - b (thanks to David Marwood) */
265 /* gd 2.16: was blue rather than alpha! Geez! Thanks to
266 Artur Jakub Jerzak */
267 ad = (im->alpha[i] - a);
268 dist = rd * rd + gd * gd + bd * bd + ad * ad;
269 if (first || (dist < mindist))
270 {
271 mindist = dist;
272 ct = i;
273 first = 0;
274 }
275 }
276 return ct;
277 }
278
279 /* This code is taken from http://www.acm.org/jgt/papers/SmithLyons96/hwb_rgb.html, an article
280 * on colour conversion to/from RBG and HWB colour systems.
281 * It has been modified to return the converted value as a * parameter.
282 */
283
284 #define RETURN_HWB(h, w, b) {HWB->H = h; HWB->W = w; HWB->B = b; return HWB;}
285 #define RETURN_RGB(r, g, b) {RGB->R = r; RGB->G = g; RGB->B = b; return RGB;}
286 #define HWB_UNDEFINED -1
287 #define SETUP_RGB(s, r, g, b) {s.R = r/255.0; s.G = g/255.0; s.B = b/255.0;}
288
289 #define MIN(a,b) ((a)<(b)?(a):(b))
290 #define MIN3(a,b,c) ((a)<(b)?(MIN(a,c)):(MIN(b,c)))
291 #define MAX(a,b) ((a)<(b)?(b):(a))
292 #define MAX3(a,b,c) ((a)<(b)?(MAX(b,c)):(MAX(a,c)))
293
294
295 /*
296 * Theoretically, hue 0 (pure red) is identical to hue 6 in these transforms. Pure
297 * red always maps to 6 in this implementation. Therefore UNDEFINED can be
298 * defined as 0 in situations where only unsigned numbers are desired.
299 */
300 typedef struct
301 {
302 float R, G, B;
303 }
304 RGBType;
305 typedef struct
306 {
307 float H, W, B;
308 }
309 HWBType;
310
311 static HWBType *
312 RGB_to_HWB (RGBType RGB, HWBType * HWB)
313 {
314
315 /*
316 * RGB are each on [0, 1]. W and B are returned on [0, 1] and H is
317 * returned on [0, 6]. Exception: H is returned UNDEFINED if W == 1 - B.
318 */
319
320 float R = RGB.R, G = RGB.G, B = RGB.B, w, v, b, f;
321 int i;
322
323 w = MIN3 (R, G, B);
324 v = MAX3 (R, G, B);
325 b = 1 - v;
326 if (v == w)
327 RETURN_HWB (HWB_UNDEFINED, w, b);
328 f = (R == w) ? G - B : ((G == w) ? B - R : R - G);
329 i = (R == w) ? 3 : ((G == w) ? 5 : 1);
330 RETURN_HWB (i - f / (v - w), w, b);
331
332 }
333
334 static float
335 HWB_Diff (int r1, int g1, int b1, int r2, int g2, int b2)
336 {
337 RGBType RGB1, RGB2;
338 HWBType HWB1, HWB2;
339 float diff;
340
341 SETUP_RGB (RGB1, r1, g1, b1);
342 SETUP_RGB (RGB2, r2, g2, b2);
343
344 RGB_to_HWB (RGB1, &HWB1);
345 RGB_to_HWB (RGB2, &HWB2);
346
347 /*
348 * I made this bit up; it seems to produce OK results, and it is certainly
349 * more visually correct than the current RGB metric. (PJW)
350 */
351
352 if ((HWB1.H == HWB_UNDEFINED) || (HWB2.H == HWB_UNDEFINED))
353 {
354 diff = 0; /* Undefined hues always match... */
355 }
356 else
357 {
358 diff = fabs (HWB1.H - HWB2.H);
359 if (diff > 3)
360 {
361 diff = 6 - diff; /* Remember, it's a colour circle */
362 }
363 }
364
365 diff =
366 diff * diff + (HWB1.W - HWB2.W) * (HWB1.W - HWB2.W) + (HWB1.B -
367 HWB2.B) * (HWB1.B -
368 HWB2.B);
369
370 return diff;
371 }
372
373
374 #if 0
375 /*
376 * This is not actually used, but is here for completeness, in case someone wants to
377 * use the HWB stuff for anything else...
378 */
379 static RGBType *
380 HWB_to_RGB (HWBType HWB, RGBType * RGB)
381 {
382
383 /*
384 * H is given on [0, 6] or UNDEFINED. W and B are given on [0, 1].
385 * RGB are each returned on [0, 1].
386 */
387
388 float h = HWB.H, w = HWB.W, b = HWB.B, v, n, f;
389 int i;
390
391 v = 1 - b;
392 if (h == HWB_UNDEFINED)
393 RETURN_RGB (v, v, v);
394 i = floor (h);
395 f = h - i;
396 if (i & 1)
397 f = 1 - f; /* if i is odd */
398 n = w + f * (v - w); /* linear interpolation between w and v */
399 switch (i)
400 {
401 case 6:
402 case 0:
403 RETURN_RGB (v, n, w);
404 case 1:
405 RETURN_RGB (n, v, w);
406 case 2:
407 RETURN_RGB (w, v, n);
408 case 3:
409 RETURN_RGB (w, n, v);
410 case 4:
411 RETURN_RGB (n, w, v);
412 case 5:
413 RETURN_RGB (v, w, n);
414 }
415
416 return RGB;
417
418 }
419 #endif
420
421 BGD_DECLARE(int) gdImageColorClosestHWB (gdImagePtr im, int r, int g, int b)
422 {
423 int i;
424 /* long rd, gd, bd; */
425 int ct = (-1);
426 int first = 1;
427 float mindist = 0;
428 if (im->trueColor)
429 {
430 return gdTrueColor (r, g, b);
431 }
432 for (i = 0; (i < (im->colorsTotal)); i++)
433 {
434 float dist;
435 if (im->open[i])
436 {
437 continue;
438 }
439 dist = HWB_Diff (im->red[i], im->green[i], im->blue[i], r, g, b);
440 if (first || (dist < mindist))
441 {
442 mindist = dist;
443 ct = i;
444 first = 0;
445 }
446 }
447 return ct;
448 }
449
450 BGD_DECLARE(int) gdImageColorExact (gdImagePtr im, int r, int g, int b)
451 {
452 return gdImageColorExactAlpha (im, r, g, b, gdAlphaOpaque);
453 }
454
455 BGD_DECLARE(int) gdImageColorExactAlpha (gdImagePtr im, int r, int g, int b, int a)
456 {
457 int i;
458 if (im->trueColor)
459 {
460 return gdTrueColorAlpha (r, g, b, a);
461 }
462 for (i = 0; (i < (im->colorsTotal)); i++)
463 {
464 if (im->open[i])
465 {
466 continue;
467 }
468 if ((im->red[i] == r) &&
469 (im->green[i] == g) && (im->blue[i] == b) && (im->alpha[i] == a))
470 {
471 return i;
472 }
473 }
474 return -1;
475 }
476
477 BGD_DECLARE(int) gdImageColorAllocate (gdImagePtr im, int r, int g, int b)
478 {
479 return gdImageColorAllocateAlpha (im, r, g, b, gdAlphaOpaque);
480 }
481
482 BGD_DECLARE(int) gdImageColorAllocateAlpha (gdImagePtr im, int r, int g, int b, int a)
483 {
484 int i;
485 int ct = (-1);
486 if (im->trueColor)
487 {
488 return gdTrueColorAlpha (r, g, b, a);
489 }
490 for (i = 0; (i < (im->colorsTotal)); i++)
491 {
492 if (im->open[i])
493 {
494 ct = i;
495 break;
496 }
497 }
498 if (ct == (-1))
499 {
500 ct = im->colorsTotal;
501 if (ct == gdMaxColors)
502 {
503 return -1;
504 }
505 im->colorsTotal++;
506 }
507 im->red[ct] = r;
508 im->green[ct] = g;
509 im->blue[ct] = b;
510 im->alpha[ct] = a;
511 im->open[ct] = 0;
512 return ct;
513 }
514
515 /*
516 * gdImageColorResolve is an alternative for the code fragment:
517 *
518 * if ((color=gdImageColorExact(im,R,G,B)) < 0)
519 * if ((color=gdImageColorAllocate(im,R,G,B)) < 0)
520 * color=gdImageColorClosest(im,R,G,B);
521 *
522 * in a single function. Its advantage is that it is guaranteed to
523 * return a color index in one search over the color table.
524 */
525
526 BGD_DECLARE(int) gdImageColorResolve (gdImagePtr im, int r, int g, int b)
527 {
528 return gdImageColorResolveAlpha (im, r, g, b, gdAlphaOpaque);
529 }
530
531 BGD_DECLARE(int) gdImageColorResolveAlpha (gdImagePtr im, int r, int g, int b, int a)
532 {
533 int c;
534 int ct = -1;
535 int op = -1;
536 long rd, gd, bd, ad, dist;
537 long mindist = 4 * 255 * 255; /* init to max poss dist */
538 if (im->trueColor)
539 {
540 return gdTrueColorAlpha (r, g, b, a);
541 }
542
543 for (c = 0; c < im->colorsTotal; c++)
544 {
545 if (im->open[c])
546 {
547 op = c; /* Save open slot */
548 continue; /* Color not in use */
549 }
550 if (c == im->transparent)
551 {
552 /* don't ever resolve to the color that has
553 * been designated as the transparent color */
554 continue;
555 }
556 rd = (long) (im->red[c] - r);
557 gd = (long) (im->green[c] - g);
558 bd = (long) (im->blue[c] - b);
559 ad = (long) (im->alpha[c] - a);
560 dist = rd * rd + gd * gd + bd * bd + ad * ad;
561 if (dist < mindist)
562 {
563 if (dist == 0)
564 {
565 return c; /* Return exact match color */
566 }
567 mindist = dist;
568 ct = c;
569 }
570 }
571 /* no exact match. We now know closest, but first try to allocate exact */
572 if (op == -1)
573 {
574 op = im->colorsTotal;
575 if (op == gdMaxColors)
576 { /* No room for more colors */
577 return ct; /* Return closest available color */
578 }
579 im->colorsTotal++;
580 }
581 im->red[op] = r;
582 im->green[op] = g;
583 im->blue[op] = b;
584 im->alpha[op] = a;
585 im->open[op] = 0;
586 return op; /* Return newly allocated color */
587 }
588
589 BGD_DECLARE(void) gdImageColorDeallocate (gdImagePtr im, int color)
590 {
591 if (im->trueColor)
592 {
593 return;
594 }
595 /* Mark it open. */
596 im->open[color] = 1;
597 }
598
599 BGD_DECLARE(void) gdImageColorTransparent (gdImagePtr im, int color)
600 {
601 if (!im->trueColor)
602 {
603 if (im->transparent != -1)
604 {
605 im->alpha[im->transparent] = gdAlphaOpaque;
606 }
607 if (color != -1)
608 {
609 im->alpha[color] = gdAlphaTransparent;
610 }
611 }
612 im->transparent = color;
613 }
614
615 BGD_DECLARE(void) gdImagePaletteCopy (gdImagePtr to, gdImagePtr from)
616 {
617 int i;
618 int x, y, p;
619 int xlate[256];
620 if (to->trueColor)
621 {
622 return;
623 }
624 if (from->trueColor)
625 {
626 return;
627 }
628
629 for (i = 0; i < 256; i++)
630 {
631 xlate[i] = -1;
632 };
633
634 for (x = 0; x < (to->sx); x++)
635 {
636 for (y = 0; y < (to->sy); y++)
637 {
638 /* Optimization: no gdImageGetPixel */
639 p = to->pixels[y][x];
640 if (xlate[p] == -1)
641 {
642 /* This ought to use HWB, but we don't have an alpha-aware
643 version of that yet. */
644 xlate[p] =
645 gdImageColorClosestAlpha (from, to->red[p], to->green[p],
646 to->blue[p], to->alpha[p]);
647 /*printf("Mapping %d (%d, %d, %d, %d) to %d (%d, %d, %d, %d)\n", */
648 /* p, to->red[p], to->green[p], to->blue[p], to->alpha[p], */
649 /* xlate[p], from->red[xlate[p]], from->green[xlate[p]], from->blue[xlate[p]], from->alpha[xlate[p]]); */
650 };
651 /* Optimization: no gdImageSetPixel */
652 to->pixels[y][x] = xlate[p];
653 };
654 };
655
656 for (i = 0; (i < (from->colorsTotal)); i++)
657 {
658 /*printf("Copying color %d (%d, %d, %d, %d)\n", i, from->red[i], from->blue[i], from->green[i], from->alpha[i]); */
659 to->red[i] = from->red[i];
660 to->blue[i] = from->blue[i];
661 to->green[i] = from->green[i];
662 to->alpha[i] = from->alpha[i];
663 to->open[i] = 0;
664 };
665
666 for (i = from->colorsTotal; (i < to->colorsTotal); i++)
667 {
668 to->open[i] = 1;
669 };
670
671 to->colorsTotal = from->colorsTotal;
672
673 }
674
675 /* 2.0.10: before the drawing routines, some code to clip points that are
676 * outside the drawing window. Nick Atty (nick@canalplan.org.uk)
677 *
678 * This is the Sutherland Hodgman Algorithm, as implemented by
679 * Duvanenko, Robbins and Gyurcsik - SH(DRG) for short. See Dr Dobb's
680 * Journal, January 1996, pp107-110 and 116-117
681 *
682 * Given the end points of a line, and a bounding rectangle (which we
683 * know to be from (0,0) to (SX,SY)), adjust the endpoints to be on
684 * the edges of the rectangle if the line should be drawn at all,
685 * otherwise return a failure code */
686
687 /* this does "one-dimensional" clipping: note that the second time it
688 is called, all the x parameters refer to height and the y to width
689 - the comments ignore this (if you can understand it when it's
690 looking at the X parameters, it should become clear what happens on
691 the second call!) The code is simplified from that in the article,
692 as we know that gd images always start at (0,0) */
693
694 /* 2.0.26, TBB: we now have to respect a clipping rectangle, it won't
695 necessarily start at 0. */
696
697 static int
698 clip_1d (int *x0, int *y0, int *x1, int *y1, int mindim, int maxdim)
699 {
700 double m; /* gradient of line */
701 if (*x0 < mindim)
702 { /* start of line is left of window */
703 if (*x1 < mindim) /* as is the end, so the line never cuts the window */
704 return 0;
705 m = (*y1 - *y0) / (double) (*x1 - *x0); /* calculate the slope of the line */
706 /* adjust x0 to be on the left boundary (ie to be zero), and y0 to match */
707 *y0 -= m * (*x0 - mindim);
708 *x0 = mindim;
709 /* now, perhaps, adjust the far end of the line as well */
710 if (*x1 > maxdim)
711 {
712 *y1 += m * (maxdim - *x1);
713 *x1 = maxdim;
714 }
715 return 1;
716 }
717 if (*x0 > maxdim)
718 { /* start of line is right of window -
719 complement of above */
720 if (*x1 > maxdim) /* as is the end, so the line misses the window */
721 return 0;
722 m = (*y1 - *y0) / (double) (*x1 - *x0); /* calculate the slope of the line */
723 *y0 += m * (maxdim - *x0); /* adjust so point is on the right
724 boundary */
725 *x0 = maxdim;
726 /* now, perhaps, adjust the end of the line */
727 if (*x1 < mindim)
728 {
729 *y1 -= m * (*x1 - mindim);
730 *x1 = mindim;
731 }
732 return 1;
733 }
734 /* the final case - the start of the line is inside the window */
735 if (*x1 > maxdim)
736 { /* other end is outside to the right */
737 m = (*y1 - *y0) / (double) (*x1 - *x0); /* calculate the slope of the line */
738 *y1 += m * (maxdim - *x1);
739 *x1 = maxdim;
740 return 1;
741 }
742 if (*x1 < mindim)
743 { /* other end is outside to the left */
744 m = (*y1 - *y0) / (double) (*x1 - *x0); /* calculate the slope of the line */
745 *y1 -= m * (*x1 - mindim);
746 *x1 = mindim;
747 return 1;
748 }
749 /* only get here if both points are inside the window */
750 return 1;
751 }
752
753 /* end of line clipping code */
754
755 BGD_DECLARE(void) gdImageSetPixel (gdImagePtr im, int x, int y, int color)
756 {
757 int p;
758 switch (color)
759 {
760 case gdStyled:
761 if (!im->style)
762 {
763 /* Refuse to draw if no style is set. */
764 return;
765 }
766 else
767 {
768 p = im->style[im->stylePos++];
769 }
770 if (p != (gdTransparent))
771 {
772 gdImageSetPixel (im, x, y, p);
773 }
774 im->stylePos = im->stylePos % im->styleLength;
775 break;
776 case gdStyledBrushed:
777 if (!im->style)
778 {
779 /* Refuse to draw if no style is set. */
780 return;
781 }
782 p = im->style[im->stylePos++];
783 if ((p != gdTransparent) && (p != 0))
784 {
785 gdImageSetPixel (im, x, y, gdBrushed);
786 }
787 im->stylePos = im->stylePos % im->styleLength;
788 break;
789 case gdBrushed:
790 gdImageBrushApply (im, x, y);
791 break;
792 case gdTiled:
793 gdImageTileApply (im, x, y);
794 break;
795 case gdAntiAliased:
796 /* This shouldn't happen (2.0.26) because we just call
797 gdImageAALine now, but do something sane. */
798 gdImageSetPixel(im, x, y, im->AA_color);
799 break;
800 default:
801 if (gdImageBoundsSafeMacro (im, x, y))
802 {
803 if (im->trueColor)
804 {
805 if (im->alphaBlendingFlag)
806 {
807 im->tpixels[y][x] = gdAlphaBlend (im->tpixels[y][x], color);
808 }
809 else
810 {
811 im->tpixels[y][x] = color;
812 }
813 }
814 else
815 {
816 im->pixels[y][x] = color;
817 }
818 }
819 break;
820 }
821 }
822
823 static void
824 gdImageBrushApply (gdImagePtr im, int x, int y)
825 {
826 int lx, ly;
827 int hy;
828 int hx;
829 int x1, y1, x2, y2;
830 int srcx, srcy;
831 if (!im->brush)
832 {
833 return;
834 }
835 hy = gdImageSY (im->brush) / 2;
836 y1 = y - hy;
837 y2 = y1 + gdImageSY (im->brush);
838 hx = gdImageSX (im->brush) / 2;
839 x1 = x - hx;
840 x2 = x1 + gdImageSX (im->brush);
841 srcy = 0;
842 if (im->trueColor)
843 {
844 if (im->brush->trueColor)
845 {
846 for (ly = y1; (ly < y2); ly++)
847 {
848 srcx = 0;
849 for (lx = x1; (lx < x2); lx++)
850 {
851 int p;
852 p = gdImageGetTrueColorPixel (im->brush, srcx, srcy);
853 /* 2.0.9, Thomas Winzig: apply simple full transparency */
854 if (p != gdImageGetTransparent (im->brush))
855 {
856 gdImageSetPixel (im, lx, ly, p);
857 }
858 srcx++;
859 }
860 srcy++;
861 }
862 }
863 else
864 {
865 /* 2.0.12: Brush palette, image truecolor (thanks to Thorben Kundinger
866 for pointing out the issue) */
867 for (ly = y1; (ly < y2); ly++)
868 {
869 srcx = 0;
870 for (lx = x1; (lx < x2); lx++)
871 {
872 int p, tc;
873 p = gdImageGetPixel (im->brush, srcx, srcy);
874 tc = gdImageGetTrueColorPixel (im->brush, srcx, srcy);
875 /* 2.0.9, Thomas Winzig: apply simple full transparency */
876 if (p != gdImageGetTransparent (im->brush))
877 {
878 gdImageSetPixel (im, lx, ly, tc);
879 }
880 srcx++;
881 }
882 srcy++;
883 }
884 }
885 }
886 else
887 {
888 for (ly = y1; (ly < y2); ly++)
889 {
890 srcx = 0;
891 for (lx = x1; (lx < x2); lx++)
892 {
893 int p;
894 p = gdImageGetPixel (im->brush, srcx, srcy);
895 /* Allow for non-square brushes! */
896 if (p != gdImageGetTransparent (im->brush))
897 {
898 /* Truecolor brush. Very slow
899 on a palette destination. */
900 if (im->brush->trueColor)
901 {
902 gdImageSetPixel (im, lx, ly,
903 gdImageColorResolveAlpha (im,
904 gdTrueColorGetRed
905 (p),
906 gdTrueColorGetGreen
907 (p),
908 gdTrueColorGetBlue
909 (p),
910 gdTrueColorGetAlpha
911 (p)));
912 }
913 else
914 {
915 gdImageSetPixel (im, lx, ly, im->brushColorMap[p]);
916 }
917 }
918 srcx++;
919 }
920 srcy++;
921 }
922 }
923 }
924
925 static void
926 gdImageTileApply (gdImagePtr im, int x, int y)
927 {
928 int srcx, srcy;
929 int p;
930 if (!im->tile)
931 {
932 return;
933 }
934 srcx = x % gdImageSX (im->tile);
935 srcy = y % gdImageSY (im->tile);
936 if (im->trueColor)
937 {
938 p = gdImageGetTrueColorPixel (im->tile, srcx, srcy);
939 if (p != gdImageGetTransparent (im->tile)) {
940 gdImageSetPixel (im, x, y, p);
941 }
942 }
943 else
944 {
945 p = gdImageGetPixel (im->tile, srcx, srcy);
946 /* Allow for transparency */
947 if (p != gdImageGetTransparent (im->tile))
948 {
949 if (im->tile->trueColor)
950 {
951 /* Truecolor tile. Very slow
952 on a palette destination. */
953 gdImageSetPixel (im, x, y,
954 gdImageColorResolveAlpha (im,
955 gdTrueColorGetRed
956 (p),
957 gdTrueColorGetGreen
958 (p),
959 gdTrueColorGetBlue
960 (p),
961 gdTrueColorGetAlpha
962 (p)));
963 }
964 else
965 {
966 gdImageSetPixel (im, x, y, im->tileColorMap[p]);
967 }
968 }
969 }
970 }
971
972 BGD_DECLARE(int) gdImageGetPixel (gdImagePtr im, int x, int y)
973 {
974 if (gdImageBoundsSafeMacro (im, x, y))
975 {
976 if (im->trueColor)
977 {
978 return im->tpixels[y][x];
979 }
980 else
981 {
982 return im->pixels[y][x];
983 }
984 }
985 else
986 {
987 return 0;
988 }
989 }
990
991 BGD_DECLARE(int) gdImageGetTrueColorPixel (gdImagePtr im, int x, int y)
992 {
993 int p = gdImageGetPixel (im, x, y);
994 if (!im->trueColor)
995 {
996 return gdTrueColorAlpha (im->red[p], im->green[p], im->blue[p],
997 (im->transparent == p) ? gdAlphaTransparent :
998 im->alpha[p]);
999 }
1000 else
1001 {
1002 return p;
1003 }
1004 }
1005
1006 BGD_DECLARE(void) gdImageAABlend (gdImagePtr im)
1007 {
1008 /* NO-OP, kept for library compatibility. */
1009 }
1010
1011 static void gdImageAALine (gdImagePtr im, int x1, int y1, int x2, int y2, int col);
1012
1013 static void gdImageHLine(gdImagePtr im, int y, int x1, int x2, int col)
1014 {
1015 if (im->thick > 1) {
1016 int thickhalf = im->thick >> 1;
1017 gdImageFilledRectangle(im, x1, y - thickhalf, x2, y + im->thick - thickhalf - 1, col);
1018 } else {
1019 if (x2 < x1) {
1020 int t = x2;
1021 x2 = x1;
1022 x1 = t;
1023 }
1024
1025 for (;x1 <= x2; x1++) {
1026 gdImageSetPixel(im, x1, y, col);
1027 }
1028 }
1029 return;
1030 }
1031
1032 static void gdImageVLine(gdImagePtr im, int x, int y1, int y2, int col)
1033 {
1034 if (im->thick > 1) {
1035 int thickhalf = im->thick >> 1;
1036 gdImageFilledRectangle(im, x - thickhalf, y1, x + im->thick - thickhalf - 1, y2, col);
1037 } else {
1038 if (y2 < y1) {
1039 int t = y1;
1040 y1 = y2;
1041 y2 = t;
1042 }
1043
1044 for (;y1 <= y2; y1++) {
1045 gdImageSetPixel(im, x, y1, col);
1046 }
1047 }
1048 return;
1049 }
1050
1051 /* Bresenham as presented in Foley & Van Dam */
1052 BGD_DECLARE(void) gdImageLine (gdImagePtr im, int x1, int y1, int x2, int y2, int color)
1053 {
1054 int dx, dy, incr1, incr2, d, x, y, xend, yend, xdirflag, ydirflag;
1055 int wid;
1056 int w, wstart;
1057 int thick;
1058
1059 if (color == gdAntiAliased)
1060 {
1061 /*
1062 gdAntiAliased passed as color: use the much faster, much cheaper
1063 and equally attractive gdImageAALine implementation. That
1064 clips too, so don't clip twice.
1065 */
1066 gdImageAALine(im, x1, y1, x2, y2, im->AA_color);
1067 return;
1068 }
1069 /* 2.0.10: Nick Atty: clip to edges of drawing rectangle, return if no
1070 points need to be drawn. 2.0.26, TBB: clip to edges of clipping
1071 rectangle. We were getting away with this because gdImageSetPixel
1072 is used for actual drawing, but this is still more efficient and opens
1073 the way to skip per-pixel bounds checking in the future. */
1074
1075 if (clip_1d (&x1, &y1, &x2, &y2, im->cx1, im->cx2) == 0)
1076 return;
1077 if (clip_1d (&y1, &x1, &y2, &x2, im->cy1, im->cy2) == 0)
1078 return;
1079 thick = im->thick;
1080
1081 dx = abs (x2 - x1);
1082 dy = abs (y2 - y1);
1083
1084 if (dx == 0) {
1085 gdImageVLine(im, x1, y1, y2, color);
1086 return;
1087 } else if (dy == 0) {
1088 gdImageHLine(im, y1, x1, x2, color);
1089 return;
1090 }
1091
1092 if (dy <= dx)
1093 {
1094 /* More-or-less horizontal. use wid for vertical stroke */
1095 /* Doug Claar: watch out for NaN in atan2 (2.0.5) */
1096 if ((dx == 0) && (dy == 0))
1097 {
1098 wid = 1;
1099 }
1100 else
1101 {
1102 /* 2.0.12: Michael Schwartz: divide rather than multiply;
1103 TBB: but watch out for /0! */
1104 double ac = cos (atan2 (dy, dx));
1105 if (ac != 0)
1106 {
1107 wid = thick / ac;
1108 }
1109 else
1110 {
1111 wid = 1;
1112 }
1113 if (wid == 0)
1114 {
1115 wid = 1;
1116 }
1117 }
1118 d = 2 * dy - dx;
1119 incr1 = 2 * dy;
1120 incr2 = 2 * (dy - dx);
1121 if (x1 > x2)
1122 {
1123 x = x2;
1124 y = y2;
1125 ydirflag = (-1);
1126 xend = x1;
1127 }
1128 else
1129 {
1130 x = x1;
1131 y = y1;
1132 ydirflag = 1;
1133 xend = x2;
1134 }
1135
1136 /* Set up line thickness */
1137 wstart = y - wid / 2;
1138 for (w = wstart; w < wstart + wid; w++)
1139 gdImageSetPixel (im, x, w, color);
1140
1141 if (((y2 - y1) * ydirflag) > 0)
1142 {
1143 while (x < xend)
1144 {
1145 x++;
1146 if (d < 0)
1147 {
1148 d += incr1;
1149 }
1150 else
1151 {
1152 y++;
1153 d += incr2;
1154 }
1155 wstart = y - wid / 2;
1156 for (w = wstart; w < wstart + wid; w++)
1157 gdImageSetPixel (im, x, w, color);
1158 }
1159 }
1160 else
1161 {
1162 while (x < xend)
1163 {
1164 x++;
1165 if (d < 0)
1166 {
1167 d += incr1;
1168 }
1169 else
1170 {
1171 y--;
1172 d += incr2;
1173 }
1174 wstart = y - wid / 2;
1175 for (w = wstart; w < wstart + wid; w++)
1176 gdImageSetPixel (im, x, w, color);
1177 }
1178 }
1179 }
1180 else
1181 {
1182 /* More-or-less vertical. use wid for horizontal stroke */
1183 /* 2.0.12: Michael Schwartz: divide rather than multiply;
1184 TBB: but watch out for /0! */
1185 double as = sin (atan2 (dy, dx));
1186 if (as != 0)
1187 {
1188 wid = thick / as;
1189 }
1190 else
1191 {
1192 wid = 1;
1193 }
1194 if (wid == 0)
1195 wid = 1;
1196
1197 d = 2 * dx - dy;
1198 incr1 = 2 * dx;
1199 incr2 = 2 * (dx - dy);
1200 if (y1 > y2)
1201 {
1202 y = y2;
1203 x = x2;
1204 yend = y1;
1205 xdirflag = (-1);
1206 }
1207 else
1208 {
1209 y = y1;
1210 x = x1;
1211 yend = y2;
1212 xdirflag = 1;
1213 }
1214
1215 /* Set up line thickness */
1216 wstart = x - wid / 2;
1217 for (w = wstart; w < wstart + wid; w++)
1218 gdImageSetPixel (im, w, y, color);
1219
1220 if (((x2 - x1) * xdirflag) > 0)
1221 {
1222 while (y < yend)
1223 {
1224 y++;
1225 if (d < 0)
1226 {
1227 d += incr1;
1228 }
1229 else
1230 {
1231 x++;
1232 d += incr2;
1233 }
1234 wstart = x - wid / 2;
1235 for (w = wstart; w < wstart + wid; w++)
1236 gdImageSetPixel (im, w, y, color);
1237 }
1238 }
1239 else
1240 {
1241 while (y < yend)
1242 {
1243 y++;
1244 if (d < 0)
1245 {
1246 d += incr1;
1247 }
1248 else
1249 {
1250 x--;
1251 d += incr2;
1252 }
1253 wstart = x - wid / 2;
1254 for (w = wstart; w < wstart + wid; w++)
1255 gdImageSetPixel (im, w, y, color);
1256 }
1257 }
1258 }
1259
1260 }
1261 static void dashedSet (gdImagePtr im, int x, int y, int color,
1262 int *onP, int *dashStepP, int wid, int vert);
1263
1264 BGD_DECLARE(void) gdImageDashedLine (gdImagePtr im, int x1, int y1, int x2, int y2, int color)
1265 {
1266 int dx, dy, incr1, incr2, d, x, y, xend, yend, xdirflag, ydirflag;
1267 int dashStep = 0;
1268 int on = 1;
1269 int wid;
1270 int vert;
1271 int thick = im->thick;
1272
1273 dx = abs (x2 - x1);
1274 dy = abs (y2 - y1);
1275 if (dy <= dx)
1276 {
1277 /* More-or-less horizontal. use wid for vertical stroke */
1278 /* 2.0.12: Michael Schwartz: divide rather than multiply;
1279 TBB: but watch out for /0! */
1280 double as = sin (atan2 (dy, dx));
1281 if (as != 0)
1282 {
1283 wid = thick / as;
1284 }
1285 else
1286 {
1287 wid = 1;
1288 }
1289 vert = 1;
1290
1291 d = 2 * dy - dx;
1292 incr1 = 2 * dy;
1293 incr2 = 2 * (dy - dx);
1294 if (x1 > x2)
1295 {
1296 x = x2;
1297 y = y2;
1298 ydirflag = (-1);
1299 xend = x1;
1300 }
1301 else
1302 {
1303 x = x1;
1304 y = y1;
1305 ydirflag = 1;
1306 xend = x2;
1307 }
1308 dashedSet (im, x, y, color, &on, &dashStep, wid, vert);
1309 if (((y2 - y1) * ydirflag) > 0)
1310 {
1311 while (x < xend)
1312 {
1313 x++;
1314 if (d < 0)
1315 {
1316 d += incr1;
1317 }
1318 else
1319 {
1320 y++;
1321 d += incr2;
1322 }
1323 dashedSet (im, x, y, color, &on, &dashStep, wid, vert);
1324 }
1325 }
1326 else
1327 {
1328 while (x < xend)
1329 {
1330 x++;
1331 if (d < 0)
1332 {
1333 d += incr1;
1334 }
1335 else
1336 {
1337 y--;
1338 d += incr2;
1339 }
1340 dashedSet (im, x, y, color, &on, &dashStep, wid, vert);
1341 }
1342 }
1343 }
1344 else
1345 {
1346 /* 2.0.12: Michael Schwartz: divide rather than multiply;
1347 TBB: but watch out for /0! */
1348 double as = sin (atan2 (dy, dx));
1349 if (as != 0)
1350 {
1351 wid = thick / as;
1352 }
1353 else
1354 {
1355 wid = 1;
1356 }
1357 vert = 0;
1358
1359 d = 2 * dx - dy;
1360 incr1 = 2 * dx;
1361 incr2 = 2 * (dx - dy);
1362 if (y1 > y2)
1363 {
1364 y = y2;
1365 x = x2;
1366 yend = y1;
1367 xdirflag = (-1);
1368 }
1369 else
1370 {
1371 y = y1;
1372 x = x1;
1373 yend = y2;
1374 xdirflag = 1;
1375 }
1376 dashedSet (im, x, y, color, &on, &dashStep, wid, vert);
1377 if (((x2 - x1) * xdirflag) > 0)
1378 {
1379 while (y < yend)
1380 {
1381 y++;
1382 if (d < 0)
1383 {
1384 d += incr1;
1385 }
1386 else
1387 {
1388 x++;
1389 d += incr2;
1390 }
1391 dashedSet (im, x, y, color, &on, &dashStep, wid, vert);
1392 }
1393 }
1394 else
1395 {
1396 while (y < yend)
1397 {
1398 y++;
1399 if (d < 0)
1400 {
1401 d += incr1;
1402 }
1403 else
1404 {
1405 x--;
1406 d += incr2;
1407 }
1408 dashedSet (im, x, y, color, &on, &dashStep, wid, vert);
1409 }
1410 }
1411 }
1412 }
1413
1414 static void
1415 dashedSet (gdImagePtr im, int x, int y, int color,
1416 int *onP, int *dashStepP, int wid, int vert)
1417 {
1418 int dashStep = *dashStepP;
1419 int on = *onP;
1420 int w, wstart;
1421
1422 dashStep++;
1423 if (dashStep == gdDashSize)
1424 {
1425 dashStep = 0;
1426 on = !on;
1427 }
1428 if (on)
1429 {
1430 if (vert)
1431 {
1432 wstart = y - wid / 2;
1433 for (w = wstart; w < wstart + wid; w++)
1434 gdImageSetPixel (im, x, w, color);
1435 }
1436 else
1437 {
1438 wstart = x - wid / 2;
1439 for (w = wstart; w < wstart + wid; w++)
1440 gdImageSetPixel (im, w, y, color);
1441 }
1442 }
1443 *dashStepP = dashStep;
1444 *onP = on;
1445 }
1446
1447 BGD_DECLARE(int) gdImageBoundsSafe (gdImagePtr im, int x, int y)
1448 {
1449 return gdImageBoundsSafeMacro (im, x, y);
1450 }
1451
1452 BGD_DECLARE(void) gdImageChar (gdImagePtr im, gdFontPtr f, int x, int y, int c, int color)
1453 {
1454 int cx, cy;
1455 int px, py;
1456 int fline;
1457 cx = 0;
1458 cy = 0;
1459 #ifdef CHARSET_EBCDIC
1460 c = ASC (c);
1461 #endif /*CHARSET_EBCDIC */
1462 if ((c < f->offset) || (c >= (f->offset + f->nchars)))
1463 {
1464 return;
1465 }
1466 fline = (c - f->offset) * f->h * f->w;
1467 for (py = y; (py < (y + f->h)); py++)
1468 {
1469 for (px = x; (px < (x + f->w)); px++)
1470 {
1471 if (f->data[fline + cy * f->w + cx])
1472 {
1473 gdImageSetPixel (im, px, py, color);
1474 }
1475 cx++;
1476 }
1477 cx = 0;
1478 cy++;
1479 }
1480 }
1481
1482 BGD_DECLARE(void) gdImageCharUp (gdImagePtr im, gdFontPtr f, int x, int y, int c, int color)
1483 {
1484 int cx, cy;
1485 int px, py;
1486 int fline;
1487 cx = 0;
1488 cy = 0;
1489 #ifdef CHARSET_EBCDIC
1490 c = ASC (c);
1491 #endif /*CHARSET_EBCDIC */
1492 if ((c < f->offset) || (c >= (f->offset + f->nchars)))
1493 {
1494 return;
1495 }
1496 fline = (c - f->offset) * f->h * f->w;
1497 for (py = y; (py > (y - f->w)); py--)
1498 {
1499 for (px = x; (px < (x + f->h)); px++)
1500 {
1501 if (f->data[fline + cy * f->w + cx])
1502 {
1503 gdImageSetPixel (im, px, py, color);
1504 }
1505 cy++;
1506 }
1507 cy = 0;
1508 cx++;
1509 }
1510 }
1511
1512 BGD_DECLARE(void) gdImageString (gdImagePtr im, gdFontPtr f,
1513 int x, int y, unsigned char *s, int color)
1514 {
1515 int i;
1516 int l;
1517 l = strlen ((char *) s);
1518 for (i = 0; (i < l); i++)
1519 {
1520 gdImageChar (im, f, x, y, s[i], color);
1521 x += f->w;
1522 }
1523 }
1524
1525 BGD_DECLARE(void) gdImageStringUp (gdImagePtr im, gdFontPtr f,
1526 int x, int y, unsigned char *s, int color)
1527 {
1528 int i;
1529 int l;
1530 l = strlen ((char *) s);
1531 for (i = 0; (i < l); i++)
1532 {
1533 gdImageCharUp (im, f, x, y, s[i], color);
1534 y -= f->w;
1535 }
1536 }
1537
1538 static int strlen16 (unsigned short *s);
1539
1540 BGD_DECLARE(void) gdImageString16 (gdImagePtr im, gdFontPtr f,
1541 int x, int y, unsigned short *s, int color)
1542 {
1543 int i;
1544 int l;
1545 l = strlen16 (s);
1546 for (i = 0; (i < l); i++)
1547 {
1548 gdImageChar (im, f, x, y, s[i], color);
1549 x += f->w;
1550 }
1551 }
1552
1553 BGD_DECLARE(void) gdImageStringUp16 (gdImagePtr im, gdFontPtr f,
1554 int x, int y, unsigned short *s, int color)
1555 {
1556 int i;
1557 int l;
1558 l = strlen16 (s);
1559 for (i = 0; (i < l); i++)
1560 {
1561 gdImageCharUp (im, f, x, y, s[i], color);
1562 y -= f->w;
1563 }
1564 }
1565
1566 static int
1567 strlen16 (unsigned short *s)
1568 {
1569 int len = 0;
1570 while (*s)
1571 {
1572 s++;
1573 len++;
1574 }
1575 return len;
1576 }
1577
1578 #ifndef HAVE_LSQRT
1579 /* If you don't have a nice square root function for longs, you can use
1580 ** this hack
1581 */
1582 long
1583 lsqrt (long n)
1584 {
1585 long result = (long) sqrt ((double) n);
1586 return result;
1587 }
1588 #endif
1589
1590 /* s and e are integers modulo 360 (degrees), with 0 degrees
1591 being the rightmost extreme and degrees changing clockwise.
1592 cx and cy are the center in pixels; w and h are the horizontal
1593 and vertical diameter in pixels. Nice interface, but slow.
1594 See gd_arc_f_buggy.c for a better version that doesn't
1595 seem to be bug-free yet. */
1596
1597 BGD_DECLARE(void) gdImageArc (gdImagePtr im, int cx, int cy, int w, int h, int s, int e,
1598 int color)
1599 {
1600 gdImageFilledArc (im, cx, cy, w, h, s, e, color, gdNoFill);
1601 }
1602
1603 BGD_DECLARE(void) gdImageFilledArc (gdImagePtr im, int cx, int cy, int w, int h, int s, int e,
1604 int color, int style)
1605 {
1606 gdPoint pts[3];
1607 int i;
1608 int lx = 0, ly = 0;
1609 int fx = 0, fy = 0;
1610
1611 if ((s % 360) == (e % 360)) {
1612 s = 0; e = 360;
1613 } else {
1614 if (s > 360) {
1615 s = s % 360;
1616 }
1617
1618 if (e > 360) {
1619 e = e % 360;
1620 }
1621
1622 while (s < 0) {
1623 s += 360;
1624 }
1625
1626 while (e < s) {
1627 e += 360;
1628 }
1629
1630 if (s == e) {
1631 s = 0; e = 360;
1632 }
1633 }
1634
1635 for (i = s; (i <= e); i++)
1636 {
1637 int x, y;
1638 x = ((long) gdCosT[i % 360] * (long) w / (2 * 1024)) + cx;
1639 y = ((long) gdSinT[i % 360] * (long) h / (2 * 1024)) + cy;
1640 if (i != s)
1641 {
1642 if (!(style & gdChord))
1643 {
1644 if (style & gdNoFill)
1645 {
1646 gdImageLine (im, lx, ly, x, y, color);
1647 }
1648 else
1649 {
1650 /* This is expensive! */
1651 pts[0].x = lx;
1652 pts[0].y = ly;
1653 pts[1].x = x;
1654 pts[1].y = y;
1655 pts[2].x = cx;
1656 pts[2].y = cy;
1657 gdImageFilledPolygon (im, pts, 3, color);
1658 }
1659 }
1660 }
1661 else
1662 {
1663 fx = x;
1664 fy = y;
1665 }
1666 lx = x;
1667 ly = y;
1668 }
1669 if (style & gdChord)
1670 {
1671 if (style & gdNoFill)
1672 {
1673 if (style & gdEdged)
1674 {
1675 gdImageLine (im, cx, cy, lx, ly, color);
1676 gdImageLine (im, cx, cy, fx, fy, color);
1677 }
1678 gdImageLine (im, fx, fy, lx, ly, color);
1679 }
1680 else
1681 {
1682 pts[0].x = fx;
1683 pts[0].y = fy;
1684 pts[1].x = lx;
1685 pts[1].y = ly;
1686 pts[2].x = cx;
1687 pts[2].y = cy;
1688 gdImageFilledPolygon (im, pts, 3, color);
1689 }
1690 }
1691 else
1692 {
1693 if (style & gdNoFill)
1694 {
1695 if (style & gdEdged)
1696 {
1697 gdImageLine (im, cx, cy, lx, ly, color);
1698 gdImageLine (im, cx, cy, fx, fy, color);
1699 }
1700 }
1701 }
1702 }
1703
1704 BGD_DECLARE(void) gdImageFilledEllipse (gdImagePtr im, int mx, int my, int w, int h, int c)
1705 {
1706 int x=0,mx1=0,mx2=0,my1=0,my2=0;
1707 long aq,bq,dx,dy,r,rx,ry,a,b;
1708 int i;
1709 int old_y1,old_y2;
1710
1711 a=w>>1;
1712 b=h>>1;
1713
1714 gdImageLine(im, mx-a, my, mx+a, my, c);
1715
1716 mx1 = mx-a;my1 = my;
1717 mx2 = mx+a;my2 = my;
1718
1719 aq = a * a;
1720 bq = b * b;
1721 dx = aq << 1;
1722 dy = bq << 1;
1723 r = a * bq;
1724 rx = r << 1;
1725 ry = 0;
1726 x = a;
1727 old_y2=-2;
1728 old_y1=-2;
1729 while (x > 0){
1730 if (r > 0) {
1731 my1++;my2--;
1732 ry +=dx;
1733 r -=ry;
1734 }
1735 if (r <= 0){
1736 x--;
1737 mx1++;mx2--;
1738 rx -=dy;
1739 r +=rx;
1740 }
1741 if(old_y2!=my2){
1742 for(i=mx1;i<=mx2;i++){
1743 gdImageSetPixel(im,i,my1,c);
1744 }
1745 }
1746 if(old_y2!=my2){
1747 for(i=mx1;i<=mx2;i++){
1748 gdImageSetPixel(im,i,my2,c);
1749 }
1750 }
1751 old_y2 = my2;
1752 old_y1 = my1;
1753 }
1754 }
1755
1756 BGD_DECLARE(void) gdImageFillToBorder (gdImagePtr im, int x, int y, int border, int color)
1757 {
1758 int lastBorder;
1759 /* Seek left */
1760 int leftLimit, rightLimit;
1761 int i;
1762 int restoreAlphaBleding;
1763
1764 if (border < 0)
1765 {
1766 /* Refuse to fill to a non-solid border */
1767 return;
1768 }
1769
1770 leftLimit = (-1);
1771
1772 restoreAlphaBleding = im->alphaBlendingFlag;
1773 im->alphaBlendingFlag = 0;
1774
1775 for (i = x; (i >= 0); i--)
1776 {
1777 if (gdImageGetPixel (im, i, y) == border)
1778 {
1779 break;
1780 }
1781 gdImageSetPixel (im, i, y, color);
1782 leftLimit = i;
1783 }
1784 if (leftLimit == (-1))
1785 {
1786 im->alphaBlendingFlag = restoreAlphaBleding;
1787 return;
1788 }
1789 /* Seek right */
1790 rightLimit = x;
1791 for (i = (x + 1); (i < im->sx); i++)
1792 {
1793 if (gdImageGetPixel (im, i, y) == border)
1794 {
1795 break;
1796 }
1797 gdImageSetPixel (im, i, y, color);
1798 rightLimit = i;
1799 }
1800 /* Look at lines above and below and start paints */
1801 /* Above */
1802 if (y > 0)
1803 {
1804 lastBorder = 1;
1805 for (i = leftLimit; (i <= rightLimit); i++)
1806 {
1807 int c;
1808 c = gdImageGetPixel (im, i, y - 1);
1809 if (lastBorder)
1810 {
1811 if ((c != border) && (c != color))
1812 {
1813 gdImageFillToBorder (im, i, y - 1, border, color);
1814 lastBorder = 0;
1815 }
1816 }
1817 else if ((c == border) || (c == color))
1818 {
1819 lastBorder = 1;
1820 }
1821 }
1822 }
1823 /* Below */
1824 if (y < ((im->sy) - 1))
1825 {
1826 lastBorder = 1;
1827 for (i = leftLimit; (i <= rightLimit); i++)
1828 {
1829 int c = gdImageGetPixel (im, i, y + 1);
1830 if (lastBorder)
1831 {
1832 if ((c != border) && (c != color))
1833 {
1834 gdImageFillToBorder (im, i, y + 1, border, color);
1835 lastBorder = 0;
1836 }
1837 }
1838 else if ((c == border) || (c == color))
1839 {
1840 lastBorder = 1;
1841 }
1842 }
1843 }
1844 im->alphaBlendingFlag = restoreAlphaBleding;
1845 }
1846
1847 /*
1848 * set the pixel at (x,y) and its 4-connected neighbors
1849 * with the same pixel value to the new pixel value nc (new color).
1850 * A 4-connected neighbor: pixel above, below, left, or right of a pixel.
1851 * ideas from comp.graphics discussions.
1852 * For tiled fill, the use of a flag buffer is mandatory. As the tile image can
1853 * contain the same color as the color to fill. To do not bloat normal filling
1854 * code I added a 2nd private function.
1855 */
1856
1857 static int gdImageTileGet (gdImagePtr im, int x, int y)
1858 {
1859 int srcx, srcy;
1860 int tileColor,p;
1861 if (!im->tile) {
1862 return -1;
1863 }
1864 srcx = x % gdImageSX(im->tile);
1865 srcy = y % gdImageSY(im->tile);
1866 p = gdImageGetPixel(im->tile, srcx, srcy);
1867 if (p == im->tile->transparent) {
1868 tileColor = im->transparent;
1869 } else if (im->trueColor) {
1870 if (im->tile->trueColor) {
1871 tileColor = p;
1872 } else {
1873 tileColor = gdTrueColorAlpha( gdImageRed(im->tile,p), gdImageGreen(im->tile,p), gdImageBlue (im->tile,p), gdImageAlpha (im->tile,p));
1874 }
1875 } else {
1876 if (im->tile->trueColor) {
1877 tileColor = gdImageColorResolveAlpha(im, gdTrueColorGetRed (p), gdTrueColorGetGreen (p), gdTrueColorGetBlue (p), gdTrueColorGetAlpha (p));
1878 } else {
1879 tileColor = p;
1880 tileColor = gdImageColorResolveAlpha(im, gdImageRed (im->tile,p), gdImageGreen (im->tile,p), gdImageBlue (im->tile,p), gdImageAlpha (im->tile,p));
1881 }
1882 }
1883 return tileColor;
1884 }
1885
1886
1887
1888 /* horizontal segment of scan line y */
1889 struct seg {int y, xl, xr, dy;};
1890
1891 /* max depth of stack */
1892 #define FILL_MAX 1200000
1893 #define FILL_PUSH(Y, XL, XR, DY) \
1894 if (sp<stack+FILL_MAX*10 && Y+(DY)>=0 && Y+(DY)<wy2) \
1895 {sp->y = Y; sp->xl = XL; sp->xr = XR; sp->dy = DY; sp++;}
1896
1897 #define FILL_POP(Y, XL, XR, DY) \
1898 {sp--; Y = sp->y+(DY = sp->dy); XL = sp->xl; XR = sp->xr;}
1899
1900 void _gdImageFillTiled(gdImagePtr im, int x, int y, int nc);
1901 BGD_DECLARE(void) gdImageFill(gdImagePtr im, int x, int y, int nc)
1902 {
1903 int l, x1, x2, dy;
1904 int oc; /* old pixel value */
1905 int wx2,wy2;
1906
1907 int alphablending_bak;
1908
1909 /* stack of filled segments */
1910 /* struct seg stack[FILL_MAX],*sp = stack;; */
1911 struct seg *stack;
1912 struct seg *sp;
1913
1914 if (!im->trueColor && nc > (im->colorsTotal - 1)) {
1915 return;
1916 }
1917
1918 alphablending_bak = im->alphaBlendingFlag;
1919 im->alphaBlendingFlag = 0;
1920
1921 if (nc==gdTiled) {
1922 _gdImageFillTiled(im,x,y,nc);
1923 im->alphaBlendingFlag = alphablending_bak;
1924 return;
1925 }
1926
1927 wx2=im->sx;wy2=im->sy;
1928 oc = gdImageGetPixel(im, x, y);
1929 if (oc==nc || x<0 || x>wx2 || y<0 || y>wy2) {
1930 im->alphaBlendingFlag = alphablending_bak;
1931 return;
1932 }
1933
1934 /* Do not use the 4 neighbors implementation with
1935 * small images
1936 */
1937 if (im->sx < 4) {
1938 int ix = x, iy = y, c;
1939 do {
1940 c = gdImageGetPixel(im, ix, iy);
1941 if (c != oc) {
1942 goto done;
1943 }
1944 gdImageSetPixel(im, ix, iy, nc);
1945 } while(ix++ < (im->sx -1));
1946 ix = x; iy = y + 1;
1947 do {
1948 c = gdImageGetPixel(im, ix, iy);
1949 if (c != oc) {
1950 goto done;
1951 }
1952 gdImageSetPixel(im, ix, iy, nc);
1953 } while(ix++ < (im->sx -1));
1954 goto done;
1955 }
1956
1957 stack = (struct seg *)gdMalloc(sizeof(struct seg) * ((int)(im->sy*im->sx)/4));
1958 if (!stack) {
1959 return;
1960 }
1961 sp = stack;
1962
1963 /* required! */
1964 FILL_PUSH(y,x,x,1);
1965 /* seed segment (popped 1st) */
1966 FILL_PUSH(y+1, x, x, -1);
1967 while (sp>stack) {
1968 FILL_POP(y, x1, x2, dy);
1969
1970 for (x=x1; x>=0 && gdImageGetPixel(im,x, y)==oc; x--) {
1971 gdImageSetPixel(im,x, y, nc);
1972 }
1973 if (x>=x1) {
1974 goto skip;
1975 }
1976 l = x+1;
1977
1978 /* leak on left? */
1979 if (l<x1) {
1980 FILL_PUSH(y, l, x1-1, -dy);
1981 }
1982 x = x1+1;
1983 do {
1984 for (; x<=wx2 && gdImageGetPixel(im,x, y)==oc; x++) {
1985 gdImageSetPixel(im, x, y, nc);
1986 }
1987 FILL_PUSH(y, l, x-1, dy);
1988 /* leak on right? */
1989 if (x>x2+1) {
1990 FILL_PUSH(y, x2+1, x-1, -dy);
1991 }
1992 skip: for (x++; x<=x2 && (gdImageGetPixel(im, x, y)!=oc); x++);
1993
1994 l = x;
1995 } while (x<=x2);
1996 }
1997
1998 gdFree(stack);
1999
2000 done:
2001 im->alphaBlendingFlag = alphablending_bak;
2002 }
2003
2004 void _gdImageFillTiled(gdImagePtr im, int x, int y, int nc)
2005 {
2006 int i,l, x1, x2, dy;
2007 int oc; /* old pixel value */
2008 int tiled;
2009 int wx2,wy2;
2010 /* stack of filled segments */
2011 struct seg *stack;
2012 struct seg *sp;
2013
2014 int **pts;
2015 if(!im->tile){
2016 return;
2017 }
2018
2019 wx2=im->sx;wy2=im->sy;
2020 tiled = nc==gdTiled;
2021
2022 nc = gdImageTileGet(im,x,y);
2023 pts = (int **) gdCalloc(sizeof(int *) * im->sy, sizeof(int));
2024 if (!pts) {
2025 return;
2026 }
2027
2028 for (i=0; i<im->sy;i++) {
2029 pts[i] = (int *) gdCalloc(im->sx, sizeof(int));
2030
2031 if (!pts[i]) {
2032 for (--i ; i >= 0; i--) {
2033 gdFree(pts[i]);
2034 }
2035 return;
2036 }
2037 }
2038
2039 stack = (struct seg *)gdMalloc(sizeof(struct seg) * ((int)(im->sy*im->sx)/4));
2040 if (!stack) {
2041 return;
2042 }
2043 sp = stack;
2044
2045 oc = gdImageGetPixel(im, x, y);
2046
2047 /* required! */
2048 FILL_PUSH(y,x,x,1);
2049 /* seed segment (popped 1st) */
2050 FILL_PUSH(y+1, x, x, -1);
2051 while (sp>stack) {
2052 FILL_POP(y, x1, x2, dy);
2053 for (x=x1; x>=0 && (!pts[y][x] && gdImageGetPixel(im,x,y)==oc); x--) {
2054 if (pts[y][x]){
2055 /* we should never be here */
2056 break;
2057 }
2058 nc = gdImageTileGet(im,x,y);
2059 pts[y][x]=1;
2060 gdImageSetPixel(im,x, y, nc);
2061 }
2062 if (x>=x1) {
2063 goto skip;
2064 }
2065 l = x+1;
2066
2067 /* leak on left? */
2068 if (l<x1) {
2069 FILL_PUSH(y, l, x1-1, -dy);
2070 }
2071 x = x1+1;
2072 do {
2073 for (; x<wx2 && (!pts[y][x] && gdImageGetPixel(im,x, y)==oc) ; x++) {
2074 if (pts[y][x]){
2075 /* we should never be here */
2076 break;
2077 }
2078 nc = gdImageTileGet(im,x,y);
2079 pts[y][x]=1;
2080 gdImageSetPixel(im, x, y, nc);
2081 }
2082 FILL_PUSH(y, l, x-1, dy);
2083 /* leak on right? */
2084 if (x>x2+1) {
2085 FILL_PUSH(y, x2+1, x-1, -dy);
2086 }
2087 skip: for (x++; x<=x2 && (pts[y][x] || gdImageGetPixel(im,x, y)!=oc); x++);
2088 l = x;
2089 } while (x<=x2);
2090 }
2091 for (i=0; i<im->sy;i++) {
2092 gdFree(pts[i]);
2093 }
2094 gdFree(pts);
2095 gdFree(stack);
2096 }
2097
2098 BGD_DECLARE(void) gdImageRectangle (gdImagePtr im, int x1, int y1, int x2, int y2, int color)
2099 {
2100 int x1h = x1, x1v = x1, y1h = y1, y1v = y1, x2h = x2, x2v = x2, y2h = y2, y2v = y2;
2101 int thick = im->thick;
2102 int half1 = 1;
2103 int t;
2104
2105 if (y2 < y1) {
2106 t=y1;
2107 y1 = y2;
2108 y2 = t;
2109
2110 t = x1;
2111 x1 = x2;
2112 x2 = t;
2113 }
2114
2115 x1h = x1; x1v = x1; y1h = y1; y1v = y1; x2h = x2; x2v = x2; y2h = y2; y2v = y2;
2116 if (thick > 1) {
2117 int cx, cy, x1ul, y1ul, x2lr, y2lr;
2118 int half = thick >> 1;
2119 half1 = thick - half;
2120 x1ul = x1 - half;
2121 y1ul = y1 - half;
2122
2123 x2lr = x2 + half;
2124 y2lr = y2 + half;
2125
2126 cy = y1ul + thick;
2127 while (cy-- > y1ul) {
2128 cx = x1ul - 1;
2129 while (cx++ < x2lr) {
2130 gdImageSetPixel(im, cx, cy, color);
2131 }
2132 }
2133
2134 cy = y2lr - thick;
2135 while (cy++ < y2lr) {
2136 cx = x1ul - 1;
2137 while (cx++ < x2lr) {
2138 gdImageSetPixel(im, cx, cy, color);
2139 }
2140 }
2141
2142 cy = y1ul + thick - 1;
2143 while (cy++ < y2lr -thick) {
2144 cx = x1ul - 1;
2145 while (cx++ < x1ul + thick) {
2146 gdImageSetPixel(im, cx, cy, color);
2147 }
2148 }
2149
2150 cy = y1ul + thick - 1;
2151 while (cy++ < y2lr -thick) {
2152 cx = x2lr - thick - 1;
2153 while (cx++ < x2lr) {
2154 gdImageSetPixel(im, cx, cy, color);
2155 }
2156 }
2157
2158 return;
2159 } else {
2160 y1v = y1h + 1;
2161 y2v = y2h - 1;
2162 gdImageLine(im, x1h, y1h, x2h, y1h, color);
2163 gdImageLine(im, x1h, y2h, x2h, y2h, color);
2164 gdImageLine(im, x1v, y1v, x1v, y2v, color);
2165 gdImageLine(im, x2v, y1v, x2v, y2v, color);
2166 }
2167 }
2168
2169 BGD_DECLARE(void) gdImageFilledRectangle (gdImagePtr im, int x1, int y1, int x2, int y2,
2170 int color)
2171 {
2172 int x, y;
2173 /* Nick Atty: limit the points at the edge. Note that this also
2174 nicely kills any plotting for rectangles completely outside the
2175 window as it makes the tests in the for loops fail */
2176 if (x1 < 0)
2177 x1 = 0;
2178 if (x1 > gdImageSX (im))
2179 x1 = gdImageSX (im);
2180 if (y1 < 0)
2181 y1 = 0;
2182 if (y1 > gdImageSY (im))
2183 y1 = gdImageSY (im);
2184
2185 if (x1 > x2) {
2186 x = x1;
2187 x1 = x2;
2188 x2 = x;
2189 }
2190 if (y1 > y2) {
2191 y = y1;
2192 y1 = y2;
2193 y2 = y;
2194 }
2195
2196 for (y = y1; (y <= y2); y++)
2197 {
2198 for (x = x1; (x <= x2); x++)
2199 {
2200 gdImageSetPixel (im, x, y, color);
2201 }
2202 }
2203 }
2204
2205 BGD_DECLARE(void) gdImageCopy (gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX,
2206 int srcY, int w, int h)
2207 {
2208 int c;
2209 int x, y;
2210 int tox, toy;
2211 int i;
2212 int colorMap[gdMaxColors];
2213
2214 if (dst->trueColor) {
2215 /* 2.0: much easier when the destination is truecolor. */
2216 /* 2.0.10: needs a transparent-index check that is still valid if
2217 * * the source is not truecolor. Thanks to Frank Warmerdam.
2218 */
2219
2220 if (src->trueColor) {
2221 for (y = 0; (y < h); y++) {
2222 for (x = 0; (x < w); x++) {
2223 int c = gdImageGetTrueColorPixel (src, srcX + x, srcY + y);
2224 gdImageSetPixel (dst, dstX + x, dstY + y, c);
2225 }
2226 }
2227 } else {
2228 /* source is palette based */
2229 for (y = 0; (y < h); y++) {
2230 for (x = 0; (x < w); x++) {
2231 int c = gdImageGetPixel (src, srcX + x, srcY + y);
2232 if (c != src->transparent) {
2233 gdImageSetPixel(dst, dstX + x, dstY + y, gdTrueColorAlpha(src->red[c], src->green[c], src->blue[c], src->alpha[c]));
2234 }
2235 }
2236 }
2237 }
2238 return;
2239 }
2240
2241 for (i = 0; (i < gdMaxColors); i++)
2242 {
2243 colorMap[i] = (-1);
2244 }
2245 toy = dstY;
2246 for (y = srcY; (y < (srcY + h)); y++)
2247 {
2248 tox = dstX;
2249 for (x = srcX; (x < (srcX + w)); x++)
2250 {
2251 int nc;
2252 int mapTo;
2253 c = gdImageGetPixel (src, x, y);
2254 /* Added 7/24/95: support transparent copies */
2255 if (gdImageGetTransparent (src) == c)
2256 {
2257 tox++;
2258 continue;
2259 }
2260 /* Have we established a mapping for this color? */
2261 if (src->trueColor)
2262 {
2263 /* 2.05: remap to the palette available in the
2264 destination image. This is slow and
2265 works badly, but it beats crashing! Thanks
2266 to Padhrig McCarthy. */
2267 mapTo = gdImageColorResolveAlpha (dst,
2268 gdTrueColorGetRed (c),
2269 gdTrueColorGetGreen (c),
2270 gdTrueColorGetBlue (c),
2271 gdTrueColorGetAlpha (c));
2272 }
2273 else if (colorMap[c] == (-1))
2274 {
2275 /* If it's the same image, mapping is trivial */
2276 if (dst == src)
2277 {
2278 nc = c;
2279 }
2280 else
2281 {
2282 /* Get best match possible. This
2283 function never returns error. */
2284 nc = gdImageColorResolveAlpha (dst,
2285 src->red[c], src->green[c],
2286 src->blue[c], src->alpha[c]);
2287 }
2288 colorMap[c] = nc;
2289 mapTo = colorMap[c];
2290 }
2291 else
2292 {
2293 mapTo = colorMap[c];
2294 }
2295 gdImageSetPixel (dst, tox, toy, mapTo);
2296 tox++;
2297 }
2298 toy++;
2299 }
2300 }
2301
2302 /* This function is a substitute for real alpha channel operations,
2303 so it doesn't pay attention to the alpha channel. */
2304 BGD_DECLARE(void) gdImageCopyMerge (gdImagePtr dst, gdImagePtr src, int dstX, int dstY,
2305 int srcX, int srcY, int w, int h, int pct)
2306 {
2307
2308 int c, dc;
2309 int x, y;
2310 int tox, toy;
2311 int ncR, ncG, ncB;
2312 toy = dstY;
2313 for (y = srcY; (y < (srcY + h)); y++)
2314 {
2315 tox = dstX;
2316 for (x = srcX; (x < (srcX + w)); x++)
2317 {
2318 int nc;
2319 c = gdImageGetPixel (src, x, y);
2320 /* Added 7/24/95: support transparent copies */
2321 if (gdImageGetTransparent (src) == c)
2322 {
2323 tox++;
2324 continue;
2325 }
2326 /* If it's the same image, mapping is trivial */
2327 if (dst == src)
2328 {
2329 nc = c;
2330 }
2331 else
2332 {
2333 dc = gdImageGetPixel (dst, tox, toy);
2334
2335 ncR = gdImageRed (src, c) * (pct / 100.0)
2336 + gdImageRed (dst, dc) * ((100 - pct) / 100.0);
2337 ncG = gdImageGreen (src, c) * (pct / 100.0)
2338 + gdImageGreen (dst, dc) * ((100 - pct) / 100.0);
2339 ncB = gdImageBlue (src, c) * (pct / 100.0)
2340 + gdImageBlue (dst, dc) * ((100 - pct) / 100.0);
2341
2342 /* Find a reasonable color */
2343 nc = gdImageColorResolve (dst, ncR, ncG, ncB);
2344 }
2345 gdImageSetPixel (dst, tox, toy, nc);
2346 tox++;
2347 }
2348 toy++;
2349 }
2350 }
2351
2352 /* This function is a substitute for real alpha channel operations,
2353 so it doesn't pay attention to the alpha channel. */
2354 BGD_DECLARE(void) gdImageCopyMergeGray (gdImagePtr dst, gdImagePtr src, int dstX, int dstY,
2355 int srcX, int srcY, int w, int h, int pct)
2356 {
2357
2358 int c, dc;
2359 int x, y;
2360 int tox, toy;
2361 int ncR, ncG, ncB;
2362 float g;
2363 toy = dstY;
2364 for (y = srcY; (y < (srcY + h)); y++)
2365 {
2366 tox = dstX;
2367 for (x = srcX; (x < (srcX + w)); x++)
2368 {
2369 int nc;
2370 c = gdImageGetPixel (src, x, y);
2371 /* Added 7/24/95: support transparent copies */
2372 if (gdImageGetTransparent (src) == c)
2373 {
2374 tox++;
2375 continue;
2376 }
2377 /*
2378 * If it's the same image, mapping is NOT trivial since we
2379 * merge with greyscale target, but if pct is 100, the grey
2380 * value is not used, so it becomes trivial. pjw 2.0.12.
2381 */
2382 if (dst == src && pct == 100)
2383 {
2384 nc = c;
2385 }
2386 else
2387 {
2388 dc = gdImageGetPixel (dst, tox, toy);
2389 g = 0.29900 * gdImageRed(dst, dc)
2390 + 0.58700 * gdImageGreen(dst, dc) + 0.11400 * gdImageBlue(dst, dc);
2391
2392 ncR = gdImageRed (src, c) * (pct / 100.0)
2393 + g * ((100 - pct) / 100.0);
2394 ncG = gdImageGreen (src, c) * (pct / 100.0)
2395 + g * ((100 - pct) / 100.0);
2396 ncB = gdImageBlue (src, c) * (pct / 100.0)
2397 + g * ((100 - pct) / 100.0);
2398
2399 /* First look for an exact match */
2400 nc = gdImageColorExact (dst, ncR, ncG, ncB);
2401 if (nc == (-1))
2402 {
2403 /* No, so try to allocate it */
2404 nc = gdImageColorAllocate (dst, ncR, ncG, ncB);
2405 /* If we're out of colors, go for the
2406 closest color */
2407 if (nc == (-1))
2408 {
2409 nc = gdImageColorClosest (dst, ncR, ncG, ncB);
2410 }
2411 }
2412 }
2413 gdImageSetPixel (dst, tox, toy, nc);
2414 tox++;
2415 }
2416 toy++;
2417 }
2418 }
2419
2420 BGD_DECLARE(void) gdImageCopyResized (gdImagePtr dst, gdImagePtr src, int dstX, int dstY,
2421 int srcX, int srcY, int dstW, int dstH, int srcW,
2422 int srcH)
2423 {
2424 int c;
2425 int x, y;
2426 int tox, toy;
2427 int ydest;
2428 int i;
2429 int colorMap[gdMaxColors];
2430 /* Stretch vectors */
2431 int *stx;
2432 int *sty;
2433 /* We only need to use floating point to determine the correct
2434 stretch vector for one line's worth. */
2435 if (overflow2(sizeof (int), srcW)) {
2436 return;
2437 }
2438 if (overflow2(sizeof (int), srcH)) {
2439 return;
2440 }
2441 stx = (int *) gdMalloc (sizeof (int) * srcW);
2442 if (!stx) {
2443 return;
2444 }
2445
2446 sty = (int *) gdMalloc (sizeof (int) * srcH);
2447 if (!sty) {
2448 return;
2449 }
2450
2451 /* Fixed by Mao Morimoto 2.0.16 */
2452 for (i = 0; (i < srcW); i++)
2453 {
2454 stx[i] = dstW * (i + 1) / srcW - dstW * i / srcW;
2455 }
2456 for (i = 0; (i < srcH); i++)
2457 {
2458 sty[i] = dstH * (i + 1) / srcH - dstH * i / srcH;
2459 }
2460 for (i = 0; (i < gdMaxColors); i++)
2461 {
2462 colorMap[i] = (-1);
2463 }
2464 toy = dstY;
2465 for (y = srcY; (y < (srcY + srcH)); y++)
2466 {
2467 for (ydest = 0; (ydest < sty[y - srcY]); ydest++)
2468 {
2469 tox = dstX;
2470 for (x = srcX; (x < (srcX + srcW)); x++)
2471 {
2472 int nc = 0;
2473 int mapTo;
2474 if (!stx[x - srcX])
2475 {
2476 continue;
2477 }
2478 if (dst->trueColor)
2479 {
2480 /* 2.0.9: Thorben Kundinger: Maybe the source image is not
2481 a truecolor image */
2482 if (!src->trueColor)
2483 {
2484 int tmp = gdImageGetPixel (src, x, y);
2485 mapTo = gdImageGetTrueColorPixel (src, x, y);
2486 if (gdImageGetTransparent (src) == tmp)
2487 {
2488 /* 2.0.21, TK: not tox++ */
2489 tox += stx[x - srcX];
2490 continue;
2491 }
2492 }
2493 else
2494 {
2495 /* TK: old code follows */
2496 mapTo = gdImageGetTrueColorPixel (src, x, y);
2497 /* Added 7/24/95: support transparent copies */
2498 if (gdImageGetTransparent (src) == mapTo)
2499 {
2500 /* 2.0.21, TK: not tox++ */
2501 tox += stx[x - srcX];
2502 continue;
2503 }
2504 }
2505 }
2506 else
2507 {
2508 c = gdImageGetPixel (src, x, y);
2509 /* Added 7/24/95: support transparent copies */
2510 if (gdImageGetTransparent (src) == c)
2511 {
2512 tox += stx[x - srcX];
2513 continue;
2514 }
2515 if (src->trueColor)
2516 {
2517 /* Remap to the palette available in the
2518 destination image. This is slow and
2519 works badly. */
2520 mapTo = gdImageColorResolveAlpha (dst,
2521 gdTrueColorGetRed (c),
2522 gdTrueColorGetGreen
2523 (c),
2524 gdTrueColorGetBlue
2525 (c),
2526 gdTrueColorGetAlpha
2527 (c));
2528 }
2529 else
2530 {
2531 /* Have we established a mapping for this color? */
2532 if (colorMap[c] == (-1))
2533 {
2534 /* If it's the same image, mapping is trivial */
2535 if (dst == src)
2536 {
2537 nc = c;
2538 }
2539 else
2540 {
2541 /* Find or create the best match */
2542 /* 2.0.5: can't use gdTrueColorGetRed, etc with palette */
2543 nc = gdImageColorResolveAlpha (dst,
2544 gdImageRed (src,
2545 c),
2546 gdImageGreen
2547 (src, c),
2548 gdImageBlue (src,
2549 c),
2550 gdImageAlpha
2551 (src, c));
2552 }
2553 colorMap[c] = nc;
2554 }
2555 mapTo = colorMap[c];
2556 }
2557 }
2558 for (i = 0; (i < stx[x - srcX]); i++)
2559 {
2560 gdImageSetPixel (dst, tox, toy, mapTo);
2561 tox++;
2562 }
2563 }
2564 toy++;
2565 }
2566 }
2567 gdFree (stx);
2568 gdFree (sty);
2569 }
2570
2571 /* gd 2.0.8: gdImageCopyRotated is added. Source
2572 is a rectangle, with its upper left corner at
2573 srcX and srcY. Destination is the *center* of
2574 the rotated copy. Angle is in degrees, same as
2575 gdImageArc. Floating point destination center
2576 coordinates allow accurate rotation of
2577 objects of odd-numbered width or height. */
2578
2579 BGD_DECLARE(void) gdImageCopyRotated (gdImagePtr dst,
2580 gdImagePtr src,
2581 double dstX, double dstY,
2582 int srcX, int srcY,
2583 int srcWidth, int srcHeight, int angle)
2584 {
2585 double dx, dy;
2586 double radius = sqrt (srcWidth * srcWidth + srcHeight * srcHeight);
2587 double aCos = cos (angle * .0174532925);
2588 double aSin = sin (angle * .0174532925);
2589 double scX = srcX + ((double) srcWidth) / 2;
2590 double scY = srcY + ((double) srcHeight) / 2;
2591 int cmap[gdMaxColors];
2592 int i;
2593
2594 /*
2595 2.0.34: transparency preservation. The transparentness of
2596 the transparent color is more important than its hue.
2597 */
2598 if (src->transparent != -1) {
2599 if (dst->transparent == -1) {
2600 dst->transparent = src->transparent;
2601 }
2602 }
2603
2604 for (i = 0; (i < gdMaxColors); i++)
2605 {
2606 cmap[i] = (-1);
2607 }
2608 for (dy = dstY - radius; (dy <= dstY + radius); dy++)
2609 {
2610 for (dx = dstX - radius; (dx <= dstX + radius); dx++)
2611 {
2612 double sxd = (dx - dstX) * aCos - (dy - dstY) * aSin;
2613 double syd = (dy - dstY) * aCos + (dx - dstX) * aSin;
2614 int sx = sxd + scX;
2615 int sy = syd + scY;
2616 if ((sx >= srcX) && (sx < srcX + srcWidth) &&
2617 (sy >= srcY) && (sy < srcY + srcHeight))
2618 {
2619 int c = gdImageGetPixel (src, sx, sy);
2620 /* 2.0.34: transparency wins */
2621 if (c == src->transparent)
2622 {
2623 gdImageSetPixel (dst, dx, dy, dst->transparent);
2624 }
2625 else if (!src->trueColor)
2626 {
2627 /* Use a table to avoid an expensive
2628 lookup on every single pixel */
2629 if (cmap[c] == -1)
2630 {
2631 cmap[c] = gdImageColorResolveAlpha (dst,
2632 gdImageRed (src, c),
2633 gdImageGreen (src,
2634 c),
2635 gdImageBlue (src,
2636 c),
2637 gdImageAlpha (src,
2638 c));
2639 }
2640 gdImageSetPixel (dst, dx, dy, cmap[c]);
2641 }
2642 else
2643 {
2644 gdImageSetPixel (dst,
2645 dx, dy,
2646 gdImageColorResolveAlpha (dst,
2647 gdImageRed (src,
2648 c),
2649 gdImageGreen
2650 (src, c),
2651 gdImageBlue (src,
2652 c),
2653 gdImageAlpha
2654 (src, c)));
2655 }
2656 }
2657 }
2658 }
2659 }
2660
2661 /* When gd 1.x was first created, floating point was to be avoided.
2662 These days it is often faster than table lookups or integer
2663 arithmetic. The routine below is shamelessly, gloriously
2664 floating point. TBB */
2665
2666 /* 2.0.10: cast instead of floor() yields 35% performance improvement.
2667 Thanks to John Buckman. */
2668
2669 #define floor2(exp) ((long) exp)
2670 /*#define floor2(exp) floor(exp)*/
2671
2672 BGD_DECLARE(void) gdImageCopyResampled (gdImagePtr dst,
2673 gdImagePtr src,
2674 int dstX, int dstY,
2675 int srcX, int srcY,
2676 int dstW, int dstH, int srcW, int srcH)
2677 {
2678 int x, y;
2679 double sy1, sy2, sx1, sx2;
2680 if (!dst->trueColor)
2681 {
2682 gdImageCopyResized (dst, src, dstX, dstY, srcX, srcY, dstW, dstH,
2683 srcW, srcH);
2684 return;
2685 }
2686 for (y = dstY; (y < dstY + dstH); y++)
2687 {
2688 sy1 = ((double) y - (double) dstY) * (double) srcH / (double) dstH;
2689 sy2 = ((double) (y + 1) - (double) dstY) * (double) srcH /
2690 (double) dstH;
2691 for (x = dstX; (x < dstX + dstW); x++)
2692 {
2693 double sx, sy;
2694 double spixels = 0;
2695 double red = 0.0, green = 0.0, blue = 0.0, alpha = 0.0;
2696 sx1 = ((double) x - (double) dstX) * (double) srcW / dstW;
2697 sx2 = ((double) (x + 1) - (double) dstX) * (double) srcW / dstW;
2698 sy = sy1;
2699 do
2700 {
2701 double yportion;
2702 if (floor2 (sy) == floor2 (sy1))
2703 {
2704 yportion = 1.0 - (sy - floor2 (sy));
2705 if (yportion > sy2 - sy1)
2706 {
2707 yportion = sy2 - sy1;
2708 }
2709 sy = floor2 (sy);
2710 }
2711 else if (sy == floor2 (sy2))
2712 {
2713 yportion = sy2 - floor2 (sy2);
2714 }
2715 else
2716 {
2717 yportion = 1.0;
2718 }
2719 sx = sx1;
2720 do
2721 {
2722 double xportion;
2723 double pcontribution;
2724 int p;
2725 if (floor2 (sx) == floor2 (sx1))
2726 {
2727 xportion = 1.0 - (sx - floor2 (sx));
2728 if (xportion > sx2 - sx1)
2729 {
2730 xportion = sx2 - sx1;
2731 }
2732 sx = floor2 (sx);
2733 }
2734 else if (sx == floor2 (sx2))
2735 {
2736 xportion = sx2 - floor2 (sx2);
2737 }
2738 else
2739 {
2740 xportion = 1.0;
2741 }
2742 pcontribution = xportion * yportion;
2743 /* 2.08: previously srcX and srcY were ignored.
2744 Andrew Pattison */
2745 p = gdImageGetTrueColorPixel (src,
2746 (int) sx + srcX,
2747 (int) sy + srcY);
2748 red += gdTrueColorGetRed (p) * pcontribution;
2749 green += gdTrueColorGetGreen (p) * pcontribution;
2750 blue += gdTrueColorGetBlue (p) * pcontribution;
2751 alpha += gdTrueColorGetAlpha (p) * pcontribution;
2752 spixels += xportion * yportion;
2753 sx += 1.0;
2754 }
2755 while (sx < sx2);
2756 sy += 1.0;
2757 }
2758 while (sy < sy2);
2759 if (spixels != 0.0)
2760 {
2761 red /= spixels;
2762 green /= spixels;
2763 blue /= spixels;
2764 alpha /= spixels;
2765 }
2766 /* Clamping to allow for rounding errors above */
2767 if (red > 255.0)
2768 {
2769 red = 255.0;
2770 }
2771 if (green > 255.0)
2772 {
2773 green = 255.0;
2774 }
2775 if (blue > 255.0)
2776 {
2777 blue = 255.0;
2778 }
2779 if (alpha > gdAlphaMax)
2780 {
2781 alpha = gdAlphaMax;
2782 }
2783 gdImageSetPixel (dst,
2784 x, y,
2785 gdTrueColorAlpha ((int) red,
2786 (int) green,
2787 (int) blue, (int) alpha));
2788 }
2789 }
2790 }
2791
2792 BGD_DECLARE(gdImagePtr) gdImageCreateFromXbm (FILE * fd)
2793 {
2794 gdImagePtr im;
2795 int bit;
2796 int w, h;
2797 int bytes;
2798 int ch;
2799 int i, x, y;
2800 char *sp;
2801 char s[161];
2802 if (!fgets (s, 160, fd))
2803 {
2804 return 0;
2805 }
2806 sp = &s[0];
2807 /* Skip #define */
2808 sp = strchr (sp, ' ');
2809 if (!sp)
2810 {
2811 return 0;
2812 }
2813 /* Skip width label */
2814 sp++;
2815 sp = strchr (sp, ' ');
2816 if (!sp)
2817 {
2818 return 0;
2819 }
2820 /* Get width */
2821 w = atoi (sp + 1);
2822 if (!w)
2823 {
2824 return 0;
2825 }
2826 if (!fgets (s, 160, fd))
2827 {
2828 return 0;
2829 }
2830 sp = s;
2831 /* Skip #define */
2832 sp = strchr (sp, ' ');
2833 if (!sp)
2834 {
2835 return 0;
2836 }
2837 /* Skip height label */
2838 sp++;
2839 sp = strchr (sp, ' ');
2840 if (!sp)
2841 {
2842 return 0;
2843 }
2844 /* Get height */
2845 h = atoi (sp + 1);
2846 if (!h)
2847 {
2848 return 0;
2849 }
2850 /* Skip declaration line */
2851 if (!fgets (s, 160, fd))
2852 {
2853 return 0;
2854 }
2855 bytes = (w * h / 8) + 1;
2856 im = gdImageCreate (w, h);
2857 if (!im) {
2858 return 0;
2859 }
2860
2861 gdImageColorAllocate (im, 255, 255, 255);
2862 gdImageColorAllocate (im, 0, 0, 0);
2863 x = 0;
2864 y = 0;
2865 for (i = 0; (i < bytes); i++)
2866 {
2867 char h[3];
2868 unsigned int b;
2869 /* Skip spaces, commas, CRs, 0x */
2870 while (1)
2871 {
2872 ch = getc (fd);
2873 if (ch == EOF)
2874 {
2875 goto fail;
2876 }
2877 if (ch == 'x')
2878 {
2879 break;
2880 }
2881 }
2882 /* Get hex value */
2883 ch = getc (fd);
2884 if (ch == EOF)
2885 {
2886 goto fail;
2887 }
2888 h[0] = ch;
2889 ch = getc (fd);
2890 if (ch == EOF)
2891 {
2892 goto fail;
2893 }
2894 h[1] = ch;
2895 h[2] = '\0';
2896 sscanf (h, "%x", &b);
2897 for (bit = 1; (bit <= 128); (bit = bit << 1))
2898 {
2899 gdImageSetPixel (im, x++, y, (b & bit) ? 1 : 0);
2900 if (x == im->sx)
2901 {
2902 x = 0;
2903 y++;
2904 if (y == im->sy)
2905 {
2906 return im;
2907 }
2908 /* Fix 8/8/95 */
2909 break;
2910 }
2911 }
2912 }
2913 /* Shouldn't happen */
2914 fprintf (stderr, "Error: bug in gdImageCreateFromXbm!\n");
2915 return 0;
2916 fail:
2917 gdImageDestroy (im);
2918 return 0;
2919 }
2920
2921 BGD_DECLARE(void) gdImagePolygon (gdImagePtr im, gdPointPtr p, int n, int c)
2922 {
2923 if (!n)
2924 {
2925 return;
2926 }
2927
2928
2929 gdImageLine (im, p->x, p->y, p[n - 1].x, p[n - 1].y, c);
2930 gdImageOpenPolygon (im, p, n, c);
2931 }
2932
2933 BGD_DECLARE(void) gdImageOpenPolygon (gdImagePtr im, gdPointPtr p, int n, int c)
2934 {
2935 int i;
2936 int lx, ly;
2937 if (!n)
2938 {
2939 return;
2940 }
2941
2942
2943 lx = p->x;
2944 ly = p->y;
2945 for (i = 1; (i < n); i++)
2946 {
2947 p++;
2948 gdImageLine (im, lx, ly, p->x, p->y, c);
2949 lx = p->x;
2950 ly = p->y;
2951 }
2952
2953 }
2954
2955 /* THANKS to Kirsten Schulz for the polygon fixes! */
2956
2957 /* The intersection finding technique of this code could be improved */
2958 /* by remembering the previous intertersection, and by using the slope. */
2959 /* That could help to adjust intersections to produce a nice */
2960 /* interior_extrema. */
2961
2962 #if 0
2963 static void horizontalLine(gdImagePtr im, int minx, int maxx, int y,
2964 int fill_color);
2965 #endif
2966
2967 BGD_DECLARE(void) gdImageFilledPolygon (gdImagePtr im, gdPointPtr p, int n, int c)
2968 {
2969 int i;
2970 int j;
2971 int index;
2972 int y;
2973 int miny, maxy;
2974 int x1, y1;
2975 int x2, y2;
2976 int ind1, ind2;
2977 int ints;
2978 int fill_color;
2979 if (!n)
2980 {
2981 return;
2982 }
2983
2984
2985 if (!im->polyAllocated)
2986 {
2987 if (overflow2(sizeof (int), n)) {
2988 return;
2989 }
2990 im->polyInts = (int *) gdMalloc (sizeof (int) * n);
2991 if (!im->polyInts) {
2992 return;
2993 }
2994 im->polyAllocated = n;
2995 }
2996 if (im->polyAllocated < n)
2997 {
2998 while (im->polyAllocated < n)
2999 {
3000 im->polyAllocated *= 2;
3001 }
3002 if (overflow2(sizeof (int), im->polyAllocated)) {
3003 return;
3004 }
3005 im->polyInts = (int *) gdRealloc (im->polyInts,
3006 sizeof (int) * im->polyAllocated);
3007 if (!im->polyInts) {
3008 return;
3009 }
3010 }
3011 miny = p[0].y;
3012 maxy = p[0].y;
3013 for (i = 1; (i < n); i++)
3014 {
3015 if (p[i].y < miny)
3016 {
3017 miny = p[i].y;
3018 }
3019 if (p[i].y > maxy)
3020 {
3021 maxy = p[i].y;
3022 }
3023 }
3024 /* 2.0.16: Optimization by Ilia Chipitsine -- don't waste time offscreen */
3025 /* 2.0.26: clipping rectangle is even better */
3026 if (miny < im->cy1)
3027 {
3028 miny = im->cy1;
3029 }
3030 if (maxy > im->cy2)
3031 {
3032 maxy = im->cy2;
3033 }
3034 /* Fix in 1.3: count a vertex only once */
3035 for (y = miny; (y <= maxy); y++)
3036 {
3037 /*1.4 int interLast = 0; */
3038 /* int dirLast = 0; */
3039 /* int interFirst = 1; */
3040 /* 2.0.26+ int yshift = 0; */
3041 if (c == gdAntiAliased) {
3042 fill_color = im->AA_color;
3043 } else {
3044 fill_color = c;
3045 }
3046 ints = 0;
3047 for (i = 0; (i < n); i++)
3048 {
3049 if (!i)
3050 {
3051 ind1 = n - 1;
3052 ind2 = 0;
3053 }
3054 else
3055 {
3056 ind1 = i - 1;
3057 ind2 = i;
3058 }
3059 y1 = p[ind1].y;
3060 y2 = p[ind2].y;
3061 if (y1 < y2)
3062 {
3063 x1 = p[ind1].x;
3064 x2 = p[ind2].x;
3065 }
3066 else if (y1 > y2)
3067 {
3068 y2 = p[ind1].y;
3069 y1 = p[ind2].y;
3070 x2 = p[ind1].x;
3071 x1 = p[ind2].x;
3072 }
3073 else
3074 {
3075 continue;
3076 }
3077
3078 /* Do the following math as float intermediately, and round to ensure
3079 * that Polygon and FilledPolygon for the same set of points have the
3080 * same footprint. */
3081
3082 if ((y >= y1) && (y < y2))
3083 {
3084 im->polyInts[ints++] = (int) ((float) ((y - y1) * (x2 - x1)) /
3085 (float) (y2 - y1) + 0.5 + x1);
3086 }
3087 else if ((y == maxy) && (y > y1) && (y <= y2))
3088 {
3089 im->polyInts[ints++] = (int) ((float) ((y - y1) * (x2 - x1)) /
3090 (float) (y2 - y1) + 0.5 + x1);
3091 }
3092 }
3093 /*
3094 2.0.26: polygons pretty much always have less than 100 points,
3095 and most of the time they have considerably less. For such trivial
3096 cases, insertion sort is a good choice. Also a good choice for
3097 future implementations that may wish to indirect through a table.
3098 */
3099 for (i = 1; (i < ints); i++) {
3100 index = im->polyInts[i];
3101 j = i;
3102 while ((j > 0) && (im->polyInts[j - 1] > index)) {
3103 im->polyInts[j] = im->polyInts[j - 1];
3104 j--;
3105 }
3106 im->polyInts[j] = index;
3107 }
3108 for (i = 0; (i < (ints)); i += 2)
3109 {
3110 #if 0
3111 int minx = im->polyInts[i];
3112 int maxx = im->polyInts[i + 1];
3113 #endif
3114 /* 2.0.29: back to gdImageLine to prevent segfaults when
3115 performing a pattern fill */
3116 gdImageLine (im, im->polyInts[i], y, im->polyInts[i + 1], y,
3117 fill_color);
3118 }
3119 }
3120 /* If we are drawing this AA, then redraw the border with AA lines. */
3121 /* This doesn't work as well as I'd like, but it doesn't clash either. */
3122 if (c == gdAntiAliased) {
3123 gdImagePolygon (im, p, n, c);
3124 }
3125 }
3126
3127 #if 0
3128 static void horizontalLine(gdImagePtr im, int minx, int maxx, int y,
3129 int fill_color)
3130 {
3131 /* 2.0.27: potential corruption fixed by John Ellson */
3132 if (minx < im->cx1) minx = im->cx1;
3133 if (maxx < minx) maxx = minx;
3134 if (maxx > im->cx2) maxx = im->cx2;
3135 if (minx > maxx) minx = maxx;
3136
3137 if (y < im->cy1) y = im->cy1;
3138 if (y > im->cy2) y = im->cy2;
3139
3140 if (im->trueColor) {
3141 while (minx <= maxx) {
3142 im->tpixels[y][minx++] = fill_color;
3143 }
3144 } else {
3145 while (minx <= maxx) {
3146 im->pixels[y][minx++] = fill_color;
3147 }
3148 }
3149 }
3150 #endif
3151
3152 static void gdImageSetAAPixelColor(gdImagePtr im, int x, int y, int color, int t);
3153
3154 BGD_DECLARE(void) gdImageSetStyle (gdImagePtr im, int *style, int noOfPixels)
3155 {
3156 if (im->style)
3157 {
3158 gdFree (im->style);
3159 }
3160 if (overflow2(sizeof (int), noOfPixels)) {
3161 return;
3162 }
3163 im->style = (int *) gdMalloc (sizeof (int) * noOfPixels);
3164 if (!im->style) {
3165 return;
3166 }
3167 memcpy (im->style, style, sizeof (int) * noOfPixels);
3168 im->styleLength = noOfPixels;
3169 im->stylePos = 0;
3170 }
3171
3172 BGD_DECLARE(void) gdImageSetThickness (gdImagePtr im, int thickness)
3173 {
3174 im->thick = thickness;
3175 }
3176
3177 BGD_DECLARE(void) gdImageSetBrush (gdImagePtr im, gdImagePtr brush)
3178 {
3179 int i;
3180 im->brush = brush;
3181 if ((!im->trueColor) && (!im->brush->trueColor))
3182 {
3183 for (i = 0; (i < gdImageColorsTotal (brush)); i++)
3184 {
3185 int index;
3186 index = gdImageColorResolveAlpha (im,
3187 gdImageRed (brush, i),
3188 gdImageGreen (brush, i),
3189 gdImageBlue (brush, i),
3190 gdImageAlpha (brush, i));
3191 im->brushColorMap[i] = index;
3192 }
3193 }
3194 }
3195
3196 BGD_DECLARE(void) gdImageSetTile (gdImagePtr im, gdImagePtr tile)
3197 {
3198 int i;
3199 im->tile = tile;
3200 if ((!im->trueColor) && (!im->tile->trueColor))
3201 {
3202 for (i = 0; (i < gdImageColorsTotal (tile)); i++)
3203 {
3204 int index;
3205 index = gdImageColorResolveAlpha (im,
3206 gdImageRed (tile, i),
3207 gdImageGreen (tile, i),
3208 gdImageBlue (tile, i),
3209 gdImageAlpha (tile, i));
3210 im->tileColorMap[i] = index;
3211 }
3212 }
3213 }
3214
3215 BGD_DECLARE(void) gdImageSetAntiAliased (gdImagePtr im, int c)
3216 {
3217 im->AA = 1;
3218 im->AA_color = c;
3219 im->AA_dont_blend = -1;
3220 }
3221
3222 BGD_DECLARE(void) gdImageSetAntiAliasedDontBlend (gdImagePtr im, int c, int dont_blend)
3223 {
3224 im->AA = 1;
3225 im->AA_color = c;
3226 im->AA_dont_blend = dont_blend;
3227 }
3228
3229 BGD_DECLARE(void) gdImageInterlace (gdImagePtr im, int interlaceArg)
3230 {
3231 im->interlace = interlaceArg;
3232 }
3233
3234 BGD_DECLARE(int) gdImageCompare (gdImagePtr im1, gdImagePtr im2)
3235 {
3236 int x, y;
3237 int p1, p2;
3238 int cmpStatus = 0;
3239 int sx, sy;
3240
3241 if (im1->interlace != im2->interlace)
3242 {
3243 cmpStatus |= GD_CMP_INTERLACE;
3244 }
3245
3246 if (im1->transparent != im2->transparent)
3247 {
3248 cmpStatus |= GD_CMP_TRANSPARENT;
3249 }
3250
3251 if (im1->trueColor != im2->trueColor)
3252 {
3253 cmpStatus |= GD_CMP_TRUECOLOR;
3254 }
3255
3256 sx = im1->sx;
3257 if (im1->sx != im2->sx)
3258 {
3259 cmpStatus |= GD_CMP_SIZE_X + GD_CMP_IMAGE;
3260 if (im2->sx < im1->sx)
3261 {
3262 sx = im2->sx;
3263 }
3264 }
3265
3266 sy = im1->sy;
3267 if (im1->sy != im2->sy)
3268 {
3269 cmpStatus |= GD_CMP_SIZE_Y + GD_CMP_IMAGE;
3270 if (im2->sy < im1->sy)
3271 {
3272 sy = im2->sy;
3273 }
3274 }
3275
3276 if (im1->colorsTotal != im2->colorsTotal)
3277 {
3278 cmpStatus |= GD_CMP_NUM_COLORS;
3279 }
3280
3281 for (y = 0; (y < sy); y++)
3282 {
3283 for (x = 0; (x < sx); x++)
3284 {
3285 p1 =
3286 im1->trueColor ? gdImageTrueColorPixel (im1, x,
3287 y) :
3288 gdImagePalettePixel (im1, x, y);
3289 p2 =
3290 im2->trueColor ? gdImageTrueColorPixel (im2, x,
3291 y) :
3292 gdImagePalettePixel (im2, x, y);
3293 if (gdImageRed (im1, p1) != gdImageRed (im2, p2))
3294 {
3295 cmpStatus |= GD_CMP_COLOR + GD_CMP_IMAGE;
3296 break;
3297 }
3298 if (gdImageGreen (im1, p1) != gdImageGreen (im2, p2))
3299 {
3300 cmpStatus |= GD_CMP_COLOR + GD_CMP_IMAGE;
3301 break;
3302 }
3303 if (gdImageBlue (im1, p1) != gdImageBlue (im2, p2))
3304 {
3305 cmpStatus |= GD_CMP_COLOR + GD_CMP_IMAGE;
3306 break;
3307 }
3308 #if 0
3309 /* Soon we'll add alpha channel to palettes */
3310 if (gdImageAlpha (im1, p1) != gdImageAlpha (im2, p2))
3311 {
3312 cmpStatus |= GD_CMP_COLOR + GD_CMP_IMAGE;
3313 break;
3314 }
3315 #endif
3316 }
3317 if (cmpStatus & GD_CMP_COLOR)
3318 {
3319 break;
3320 };
3321 }
3322
3323 return cmpStatus;
3324 }
3325
3326
3327 /* Thanks to Frank Warmerdam for this superior implementation
3328 of gdAlphaBlend(), which merges alpha in the
3329 destination color much better. */
3330
3331 BGD_DECLARE(int) gdAlphaBlend (int dst, int src)
3332 {
3333 int src_alpha = gdTrueColorGetAlpha(src);
3334 int dst_alpha, alpha, red, green, blue;
3335 int src_weight, dst_weight, tot_weight;
3336
3337 /* -------------------------------------------------------------------- */
3338 /* Simple cases we want to handle fast. */
3339 /* -------------------------------------------------------------------- */
3340 if( src_alpha == gdAlphaOpaque )
3341 return src;
3342
3343 dst_alpha = gdTrueColorGetAlpha(dst);
3344 if( src_alpha == gdAlphaTransparent )
3345 return dst;
3346 if( dst_alpha == gdAlphaTransparent )
3347 return src;
3348
3349 /* -------------------------------------------------------------------- */
3350 /* What will the source and destination alphas be? Note that */
3351 /* the destination weighting is substantially reduced as the */
3352 /* overlay becomes quite opaque. */
3353 /* -------------------------------------------------------------------- */
3354 src_weight = gdAlphaTransparent - src_alpha;
3355 dst_weight = (gdAlphaTransparent - dst_alpha) * src_alpha / gdAlphaMax;
3356 tot_weight = src_weight + dst_weight;
3357
3358 /* -------------------------------------------------------------------- */
3359 /* What red, green and blue result values will we use? */
3360 /* -------------------------------------------------------------------- */
3361 alpha = src_alpha * dst_alpha / gdAlphaMax;
3362
3363 red = (gdTrueColorGetRed(src) * src_weight
3364 + gdTrueColorGetRed(dst) * dst_weight) / tot_weight;
3365 green = (gdTrueColorGetGreen(src) * src_weight
3366 + gdTrueColorGetGreen(dst) * dst_weight) / tot_weight;
3367 blue = (gdTrueColorGetBlue(src) * src_weight
3368 + gdTrueColorGetBlue(dst) * dst_weight) / tot_weight;
3369
3370 /* -------------------------------------------------------------------- */
3371 /* Return merged result. */
3372 /* -------------------------------------------------------------------- */
3373 return ((alpha << 24) + (red << 16) + (green << 8) + blue);
3374 }
3375
3376 BGD_DECLARE(void) gdImageAlphaBlending (gdImagePtr im, int alphaBlendingArg)
3377 {
3378 im->alphaBlendingFlag = alphaBlendingArg;
3379 }
3380
3381 BGD_DECLARE(void) gdImageSaveAlpha (gdImagePtr im, int saveAlphaArg)
3382 {
3383 im->saveAlphaFlag = saveAlphaArg;
3384 }
3385
3386 BGD_DECLARE(void) gdImageSetClip (gdImagePtr im, int x1, int y1, int x2, int y2)
3387 {
3388 if (x1 < 0)
3389 {
3390 x1 = 0;
3391 }
3392 if (x1 >= im->sx)
3393 {
3394 x1 = im->sx - 1;
3395 }
3396 if (x2 < 0)
3397 {
3398 x2 = 0;
3399 }
3400 if (x2 >= im->sx)
3401 {
3402 x2 = im->sx - 1;
3403 }
3404 if (y1 < 0)
3405 {
3406 y1 = 0;
3407 }
3408 if (y1 >= im->sy)
3409 {
3410 y1 = im->sy - 1;
3411 }
3412 if (y2 < 0)
3413 {
3414 y2 = 0;
3415 }
3416 if (y2 >= im->sy)
3417 {
3418 y2 = im->sy - 1;
3419 }
3420 im->cx1 = x1;
3421 im->cy1 = y1;
3422 im->cx2 = x2;
3423 im->cy2 = y2;
3424 }
3425
3426 BGD_DECLARE(void) gdImageGetClip (gdImagePtr im, int *x1P, int *y1P, int *x2P, int *y2P)
3427 {
3428 *x1P = im->cx1;
3429 *y1P = im->cy1;
3430 *x2P = im->cx2;
3431 *y2P = im->cy2;
3432 }
3433
3434 /*
3435 * Added on 2003/12 by Pierre-Alain Joye (pajoye@pearfr.org)
3436 * */
3437 #define BLEND_COLOR(a, nc, c, cc) \
3438 nc = (cc) + (((((c) - (cc)) * (a)) + ((((c) - (cc)) * (a)) >> 8) + 0x80) >> 8);
3439
3440 static void gdImageSetAAPixelColor(gdImagePtr im, int x, int y, int color, int t)
3441 {
3442 int dr,dg,db,p,r,g,b;
3443
3444 /* 2.0.34: watch out for out of range calls */
3445 if (!gdImageBoundsSafeMacro(im, x, y)) {
3446 return;
3447 }
3448 p = gdImageGetPixel(im,x,y);
3449 /* TBB: we have to implement the dont_blend stuff to provide
3450 the full feature set of the old implementation */
3451 if ((p == color)
3452 || ((p == im->AA_dont_blend)
3453 && (t != 0x00)))
3454 {
3455 return;
3456 }
3457 dr = gdTrueColorGetRed(color);
3458 dg = gdTrueColorGetGreen(color);
3459 db = gdTrueColorGetBlue(color);
3460
3461 r = gdTrueColorGetRed(p);
3462 g = gdTrueColorGetGreen(p);
3463 b = gdTrueColorGetBlue(p);
3464
3465 BLEND_COLOR(t, dr, r, dr);
3466 BLEND_COLOR(t, dg, g, dg);
3467 BLEND_COLOR(t, db, b, db);
3468 im->tpixels[y][x] = gdTrueColorAlpha(dr, dg, db, gdAlphaOpaque);
3469 }
3470
3471 static void gdImageAALine (gdImagePtr im, int x1, int y1, int x2, int y2, int col)
3472 {
3473 /* keep them as 32bits */
3474 long x, y, inc;
3475 long dx, dy,tmp;
3476
3477 if (!im->trueColor) {
3478 /* TBB: don't crash when the image is of the wrong type */
3479 gdImageLine(im, x1, y1, x2, y2, col);
3480 return;
3481 }
3482 /* TBB: use the clipping rectangle */
3483 if (clip_1d (&x1, &y1, &x2, &y2, im->cx1, im->cx2) == 0)
3484 return;
3485 if (clip_1d (&y1, &x1, &y2, &x2, im->cy1, im->cy2) == 0)
3486 return;
3487 dx = x2 - x1;
3488 dy = y2 - y1;
3489
3490 /* Axis aligned lines */
3491 if (dx == 0) {
3492 gdImageVLine(im, x1, y1, y2, col);
3493 return;
3494 } else if (dy == 0) {
3495 gdImageHLine(im, y1, x1, x2, col);
3496 return;
3497 }
3498
3499 if (dx == 0 && dy == 0) {
3500 /* TBB: allow setting points */
3501 gdImageSetAAPixelColor(im, x1, y1, col, 0xFF);
3502 return;
3503 }
3504 if (abs(dx) > abs(dy)) {
3505 if (dx < 0) {
3506 tmp = x1;
3507 x1 = x2;
3508 x2 = tmp;
3509 tmp = y1;
3510 y1 = y2;
3511 y2 = tmp;
3512 dx = x2 - x1;
3513 dy = y2 - y1;
3514 }
3515 x = x1 << 16;
3516 y = y1 << 16;
3517 inc = (dy * 65536) / dx;
3518 /* TBB: set the last pixel for consistency (<=) */
3519 while ((x >> 16) <= x2) {
3520 gdImageSetAAPixelColor(im, x >> 16, y >> 16, col, (y >> 8) & 0xFF);
3521 gdImageSetAAPixelColor(im, x >> 16, (y >> 16) + 1,col, (~y >> 8) & 0xFF);
3522 x += (1 << 16);
3523 y += inc;
3524 }
3525 } else {
3526 if (dy < 0) {
3527 tmp = x1;
3528 x1 = x2;
3529 x2 = tmp;
3530 tmp = y1;
3531 y1 = y2;
3532 y2 = tmp;
3533 dx = x2 - x1;
3534 dy = y2 - y1;
3535 }
3536 x = x1 << 16;
3537 y = y1 << 16;
3538 inc = (dx * 65536) / dy;
3539 /* TBB: set the last pixel for consistency (<=) */
3540 while ((y>>16) <= y2) {
3541 gdImageSetAAPixelColor(im, x >> 16, y >> 16, col, (x >> 8) & 0xFF);
3542 gdImageSetAAPixelColor(im, (x >> 16) + 1, (y >> 16),col, (~x >> 8) & 0xFF);
3543 x += inc;
3544 y += (1<<16);
3545 }
3546 }
3547 }
0 #ifdef __cplusplus
1 extern "C" {
2 #endif
3
4 #ifndef GD_H
5 #define GD_H 1
6
7 #define GD_MAJOR_VERSION 2
8 #define GD_MINOR_VERSION 0
9 #define GD_RELEASE_VERSION 35
10 #define GD_EXTRA_VERSION ""
11 #define GD_VERSION_STRING "2.0.35"
12
13
14 /* Do the DLL dance: dllexport when building the DLL,
15 dllimport when importing from it, nothing when
16 not on Silly Silly Windows (tm Aardman Productions). */
17
18 /* 2.0.20: for headers */
19
20 /* 2.0.24: __stdcall also needed for Visual BASIC
21 and other languages. This breaks ABI compatibility
22 with previous DLL revs, but it's necessary. */
23
24 /* 2.0.29: WIN32 programmers can declare the NONDLL macro if they
25 wish to build gd as a static library or by directly including
26 the gd sources in a project. */
27
28 #ifndef WIN32
29 #define NONDLL 1
30 #endif /* WIN32 */
31
32 #ifdef NONDLL
33 #define BGD_DECLARE(rt) extern rt
34 #else
35 #ifdef BGDWIN32
36 #define BGD_DECLARE(rt) __declspec(dllexport) rt __stdcall
37 #else
38 #define BGD_DECLARE(rt) __declspec(dllimport) rt _stdcall
39 #endif /* BGDWIN32 */
40 #endif /* NONDLL */
41
42 /* 2.0.20: for actual storage of exported data, functions don't need this,
43 currently needed only for font pointers */
44 #ifdef NONDLL
45 /* 2.0.25: bring back extern */
46 #define BGD_EXPORT_DATA_PROT extern
47 #define BGD_EXPORT_DATA_IMPL
48 #else
49 #ifdef BGDWIN32
50 #define BGD_EXPORT_DATA_PROT __declspec(dllexport) extern
51 #define BGD_EXPORT_DATA_IMPL __declspec(dllexport)
52 #else
53 #define BGD_EXPORT_DATA_PROT __declspec(dllimport) extern
54 #define BGD_EXPORT_DATA_IMPL __declspec(dllimport)
55 #endif /* BGDWIN32 */
56 #endif /* NONDLL */
57
58 #ifdef __cplusplus
59 extern "C"
60 {
61 #endif
62
63 /* some might want to set DEFAULT_FONTPATH from configure in config.h */
64 #ifdef NETWARE
65 /* default fontpath for netware systems, could probably be handled in configure for 2.1 */
66 #define DEFAULT_FONTPATH "sys:/java/nwgfx/lib/x11/fonts/ttf;."
67 #define PATHSEPARATOR ";"
68 #endif
69
70 /* 2.0.23: more Type 1 fonts */
71 #ifndef DEFAULT_FONTPATH
72 /* default fontpath for unix systems - whatever happened to standards ! */
73 #define DEFAULT_FONTPATH "/usr/X11R6/lib/X11/fonts/TrueType:/usr/X11R6/lib/X11/fonts/truetype:/usr/X11R6/lib/X11/fonts/TTF:/usr/share/fonts/TrueType:/usr/share/fonts/truetype:/usr/openwin/lib/X11/fonts/TrueType:/usr/X11R6/lib/X11/fonts/Type1:/usr/lib/X11/fonts/Type1:/usr/openwin/lib/X11/fonts/Type1"
74 #endif
75 #ifndef PATHSEPARATOR
76 #define PATHSEPARATOR ":"
77 #endif
78
79 /* gd.h: declarations file for the graphic-draw module.
80 * Permission to use, copy, modify, and distribute this software and its
81 * documentation for any purpose and without fee is hereby granted, provided
82 * that the above copyright notice appear in all copies and that both that
83 * copyright notice and this permission notice appear in supporting
84 * documentation. This software is provided "AS IS." Thomas Boutell and
85 * Boutell.Com, Inc. disclaim all warranties, either express or implied,
86 * including but not limited to implied warranties of merchantability and
87 * fitness for a particular purpose, with respect to this code and accompanying
88 * documentation. */
89
90 /* stdio is needed for file I/O. */
91 #include <stdio.h>
92 #include "gd_io.h"
93
94 /* The maximum number of palette entries in palette-based images.
95 In the wonderful new world of gd 2.0, you can of course have
96 many more colors when using truecolor mode. */
97
98 #define gdMaxColors 256
99
100 /* Image type. See functions below; you will not need to change
101 the elements directly. Use the provided macros to
102 access sx, sy, the color table, and colorsTotal for
103 read-only purposes. */
104
105 /* If 'truecolor' is set true, the image is truecolor;
106 pixels are represented by integers, which
107 must be 32 bits wide or more.
108
109 True colors are repsented as follows:
110
111 ARGB
112
113 Where 'A' (alpha channel) occupies only the
114 LOWER 7 BITS of the MSB. This very small
115 loss of alpha channel resolution allows gd 2.x
116 to keep backwards compatibility by allowing
117 signed integers to be used to represent colors,
118 and negative numbers to represent special cases,
119 just as in gd 1.x. */
120
121 #define gdAlphaMax 127
122 #define gdAlphaOpaque 0
123 #define gdAlphaTransparent 127
124 #define gdRedMax 255
125 #define gdGreenMax 255
126 #define gdBlueMax 255
127 #define gdTrueColorGetAlpha(c) (((c) & 0x7F000000) >> 24)
128 #define gdTrueColorGetRed(c) (((c) & 0xFF0000) >> 16)
129 #define gdTrueColorGetGreen(c) (((c) & 0x00FF00) >> 8)
130 #define gdTrueColorGetBlue(c) ((c) & 0x0000FF)
131
132 /* This function accepts truecolor pixel values only. The
133 source color is composited with the destination color
134 based on the alpha channel value of the source color.
135 The resulting color is opaque. */
136
137 BGD_DECLARE(int) gdAlphaBlend (int dest, int src);
138
139 typedef struct gdImageStruct
140 {
141 /* Palette-based image pixels */
142 unsigned char **pixels;
143 int sx;
144 int sy;
145 /* These are valid in palette images only. See also
146 'alpha', which appears later in the structure to
147 preserve binary backwards compatibility */
148 int colorsTotal;
149 int red[gdMaxColors];
150 int green[gdMaxColors];
151 int blue[gdMaxColors];
152 int open[gdMaxColors];
153 /* For backwards compatibility, this is set to the
154 first palette entry with 100% transparency,
155 and is also set and reset by the
156 gdImageColorTransparent function. Newer
157 applications can allocate palette entries
158 with any desired level of transparency; however,
159 bear in mind that many viewers, notably
160 many web browsers, fail to implement
161 full alpha channel for PNG and provide
162 support for full opacity or transparency only. */
163 int transparent;
164 int *polyInts;
165 int polyAllocated;
166 struct gdImageStruct *brush;
167 struct gdImageStruct *tile;
168 int brushColorMap[gdMaxColors];
169 int tileColorMap[gdMaxColors];
170 int styleLength;
171 int stylePos;
172 int *style;
173 int interlace;
174 /* New in 2.0: thickness of line. Initialized to 1. */
175 int thick;
176 /* New in 2.0: alpha channel for palettes. Note that only
177 Macintosh Internet Explorer and (possibly) Netscape 6
178 really support multiple levels of transparency in
179 palettes, to my knowledge, as of 2/15/01. Most
180 common browsers will display 100% opaque and
181 100% transparent correctly, and do something
182 unpredictable and/or undesirable for levels
183 in between. TBB */
184 int alpha[gdMaxColors];
185 /* Truecolor flag and pixels. New 2.0 fields appear here at the
186 end to minimize breakage of existing object code. */
187 int trueColor;
188 int **tpixels;
189 /* Should alpha channel be copied, or applied, each time a
190 pixel is drawn? This applies to truecolor images only.
191 No attempt is made to alpha-blend in palette images,
192 even if semitransparent palette entries exist.
193 To do that, build your image as a truecolor image,
194 then quantize down to 8 bits. */
195 int alphaBlendingFlag;
196 /* Should the alpha channel of the image be saved? This affects
197 PNG at the moment; other future formats may also
198 have that capability. JPEG doesn't. */
199 int saveAlphaFlag;
200
201 /* There should NEVER BE ACCESSOR MACROS FOR ITEMS BELOW HERE, so this
202 part of the structure can be safely changed in new releases. */
203
204 /* 2.0.12: anti-aliased globals. 2.0.26: just a few vestiges after
205 switching to the fast, memory-cheap implementation from PHP-gd. */
206 int AA;
207 int AA_color;
208 int AA_dont_blend;
209
210 /* 2.0.12: simple clipping rectangle. These values
211 must be checked for safety when set; please use
212 gdImageSetClip */
213 int cx1;
214 int cy1;
215 int cx2;
216 int cy2;
217 }
218 gdImage;
219
220 typedef gdImage *gdImagePtr;
221
222 typedef struct
223 {
224 /* # of characters in font */
225 int nchars;
226 /* First character is numbered... (usually 32 = space) */
227 int offset;
228 /* Character width and height */
229 int w;
230 int h;
231 /* Font data; array of characters, one row after another.
232 Easily included in code, also easily loaded from
233 data files. */
234 char *data;
235 }
236 gdFont;
237
238 /* Text functions take these. */
239 typedef gdFont *gdFontPtr;
240
241 /* For backwards compatibility only. Use gdImageSetStyle()
242 for MUCH more flexible line drawing. Also see
243 gdImageSetBrush(). */
244 #define gdDashSize 4
245
246 /* Special colors. */
247
248 #define gdStyled (-2)
249 #define gdBrushed (-3)
250 #define gdStyledBrushed (-4)
251 #define gdTiled (-5)
252
253 /* NOT the same as the transparent color index.
254 This is used in line styles only. */
255 #define gdTransparent (-6)
256
257 #define gdAntiAliased (-7)
258
259 /* Functions to manipulate images. */
260
261 /* Creates a palette-based image (up to 256 colors). */
262 BGD_DECLARE(gdImagePtr) gdImageCreate (int sx, int sy);
263
264 /* An alternate name for the above (2.0). */
265 #define gdImageCreatePalette gdImageCreate
266
267 /* Creates a truecolor image (millions of colors). */
268 BGD_DECLARE(gdImagePtr) gdImageCreateTrueColor (int sx, int sy);
269
270 /* Creates an image from various file types. These functions
271 return a palette or truecolor image based on the
272 nature of the file being loaded. Truecolor PNG
273 stays truecolor; palette PNG stays palette-based;
274 JPEG is always truecolor. */
275 BGD_DECLARE(gdImagePtr) gdImageCreateFromPng (FILE * fd);
276 BGD_DECLARE(gdImagePtr) gdImageCreateFromPngCtx (gdIOCtxPtr in);
277 BGD_DECLARE(gdImagePtr) gdImageCreateFromPngPtr (int size, void *data);
278
279 /* These read the first frame only */
280 BGD_DECLARE(gdImagePtr) gdImageCreateFromGif (FILE * fd);
281 BGD_DECLARE(gdImagePtr) gdImageCreateFromGifCtx (gdIOCtxPtr in);
282 BGD_DECLARE(gdImagePtr) gdImageCreateFromGifPtr (int size, void *data);
283 BGD_DECLARE(gdImagePtr) gdImageCreateFromWBMP (FILE * inFile);
284 BGD_DECLARE(gdImagePtr) gdImageCreateFromWBMPCtx (gdIOCtx * infile);
285 BGD_DECLARE(gdImagePtr) gdImageCreateFromWBMPPtr (int size, void *data);
286 BGD_DECLARE(gdImagePtr) gdImageCreateFromJpeg (FILE * infile);
287 BGD_DECLARE(gdImagePtr) gdImageCreateFromJpegCtx (gdIOCtx * infile);
288 BGD_DECLARE(gdImagePtr) gdImageCreateFromJpegPtr (int size, void *data);
289
290 /* A custom data source. */
291 /* The source function must return -1 on error, otherwise the number
292 of bytes fetched. 0 is EOF, not an error! */
293 /* context will be passed to your source function. */
294
295 typedef struct
296 {
297 int (*source) (void *context, char *buffer, int len);
298 void *context;
299 }
300 gdSource, *gdSourcePtr;
301
302 /* Deprecated in favor of gdImageCreateFromPngCtx */
303 BGD_DECLARE(gdImagePtr) gdImageCreateFromPngSource (gdSourcePtr in);
304
305 BGD_DECLARE(gdImagePtr) gdImageCreateFromGd (FILE * in);
306 BGD_DECLARE(gdImagePtr) gdImageCreateFromGdCtx (gdIOCtxPtr in);
307 BGD_DECLARE(gdImagePtr) gdImageCreateFromGdPtr (int size, void *data);
308
309 BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2 (FILE * in);
310 BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2Ctx (gdIOCtxPtr in);
311 BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2Ptr (int size, void *data);
312
313 BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2Part (FILE * in, int srcx, int srcy, int w,
314 int h);
315 BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2PartCtx (gdIOCtxPtr in, int srcx, int srcy,
316 int w, int h);
317 BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2PartPtr (int size, void *data, int srcx, int srcy,
318 int w, int h);
319 /* 2.0.10: prototype was missing */
320 BGD_DECLARE(gdImagePtr) gdImageCreateFromXbm (FILE * in);
321
322 /* NOTE: filename, not FILE */
323 BGD_DECLARE(gdImagePtr) gdImageCreateFromXpm (char *filename);
324
325 BGD_DECLARE(void) gdImageDestroy (gdImagePtr im);
326
327 /* Replaces or blends with the background depending on the
328 most recent call to gdImageAlphaBlending and the
329 alpha channel value of 'color'; default is to overwrite.
330 Tiling and line styling are also implemented
331 here. All other gd drawing functions pass through this call,
332 allowing for many useful effects. */
333
334 BGD_DECLARE(void) gdImageSetPixel (gdImagePtr im, int x, int y, int color);
335 /* FreeType 2 text output with hook to extra flags */
336
337 BGD_DECLARE(int) gdImageGetPixel (gdImagePtr im, int x, int y);
338 BGD_DECLARE(int) gdImageGetTrueColorPixel (gdImagePtr im, int x, int y);
339
340 BGD_DECLARE(void) gdImageAABlend (gdImagePtr im);
341
342 BGD_DECLARE(void) gdImageLine (gdImagePtr im, int x1, int y1, int x2, int y2, int color);
343
344 /* For backwards compatibility only. Use gdImageSetStyle()
345 for much more flexible line drawing. */
346 BGD_DECLARE(void) gdImageDashedLine (gdImagePtr im, int x1, int y1, int x2, int y2,
347 int color);
348 /* Corners specified (not width and height). Upper left first, lower right
349 second. */
350 BGD_DECLARE(void) gdImageRectangle (gdImagePtr im, int x1, int y1, int x2, int y2,
351 int color);
352 /* Solid bar. Upper left corner first, lower right corner second. */
353 BGD_DECLARE(void) gdImageFilledRectangle (gdImagePtr im, int x1, int y1, int x2, int y2,
354 int color);
355 BGD_DECLARE(void) gdImageSetClip(gdImagePtr im, int x1, int y1, int x2, int y2);
356 BGD_DECLARE(void) gdImageGetClip(gdImagePtr im, int *x1P, int *y1P, int *x2P, int *y2P);
357 BGD_DECLARE(int) gdImageBoundsSafe (gdImagePtr im, int x, int y);
358 BGD_DECLARE(void) gdImageChar (gdImagePtr im, gdFontPtr f, int x, int y, int c,
359 int color);
360 BGD_DECLARE(void) gdImageCharUp (gdImagePtr im, gdFontPtr f, int x, int y, int c,
361 int color);
362 BGD_DECLARE(void) gdImageString (gdImagePtr im, gdFontPtr f, int x, int y,
363 unsigned char *s, int color);
364 BGD_DECLARE(void) gdImageStringUp (gdImagePtr im, gdFontPtr f, int x, int y,
365 unsigned char *s, int color);
366 BGD_DECLARE(void) gdImageString16 (gdImagePtr im, gdFontPtr f, int x, int y,
367 unsigned short *s, int color);
368 BGD_DECLARE(void) gdImageStringUp16 (gdImagePtr im, gdFontPtr f, int x, int y,
369 unsigned short *s, int color);
370
371 /* 2.0.16: for thread-safe use of gdImageStringFT and friends,
372 call this before allowing any thread to call gdImageStringFT.
373 Otherwise it is invoked by the first thread to invoke
374 gdImageStringFT, with a very small but real risk of a race condition.
375 Return 0 on success, nonzero on failure to initialize freetype. */
376 BGD_DECLARE(int) gdFontCacheSetup (void);
377
378 /* Optional: clean up after application is done using fonts in
379 BGD_DECLARE( ) gdImageStringFT(). */
380 BGD_DECLARE(void) gdFontCacheShutdown (void);
381 /* 2.0.20: for backwards compatibility. A few applications did start calling
382 this function when it first appeared although it was never documented.
383 Simply invokes gdFontCacheShutdown. */
384 BGD_DECLARE(void) gdFreeFontCache (void);
385
386 /* Calls gdImageStringFT. Provided for backwards compatibility only. */
387 BGD_DECLARE(char *) gdImageStringTTF (gdImage * im, int *brect, int fg, char *fontlist,
388 double ptsize, double angle, int x, int y,
389 char *string);
390
391 /* FreeType 2 text output */
392 BGD_DECLARE(char *) gdImageStringFT (gdImage * im, int *brect, int fg, char *fontlist,
393 double ptsize, double angle, int x, int y,
394 char *string);
395
396 /* 2.0.5: provides an extensible way to pass additional parameters.
397 Thanks to Wez Furlong, sorry for the delay. */
398
399 typedef struct
400 {
401 int flags; /* Logical OR of gdFTEX_ values */
402 double linespacing; /* fine tune line spacing for '\n' */
403 int charmap; /* TBB: 2.0.12: may be gdFTEX_Unicode,
404 gdFTEX_Shift_JIS, gdFTEX_Big5,
405 or gdFTEX_Adobe_Custom;
406 when not specified, maps are searched
407 for in the above order. */
408 int hdpi; /* if (flags & gdFTEX_RESOLUTION) */
409 int vdpi; /* if (flags & gdFTEX_RESOLUTION) */
410 char *xshow; /* if (flags & gdFTEX_XSHOW)
411 then, on return, xshow is a malloc'ed
412 string contining xshow position data for
413 the last string.
414
415 NB. The caller is responsible for gdFree'ing
416 the xshow string.
417 */
418 char *fontpath; /* if (flags & gdFTEX_RETURNFONTPATHNAME)
419 then, on return, fontpath is a malloc'ed
420 string containing the actual font file path name
421 used, which can be interesting when fontconfig
422 is in use.
423
424 The caller is responsible for gdFree'ing the
425 fontpath string.
426 */
427
428 }
429 gdFTStringExtra, *gdFTStringExtraPtr;
430
431 #define gdFTEX_LINESPACE 1
432 #define gdFTEX_CHARMAP 2
433 #define gdFTEX_RESOLUTION 4
434 #define gdFTEX_DISABLE_KERNING 8
435 #define gdFTEX_XSHOW 16
436 /* The default unless gdFTUseFontConfig(1); has been called:
437 fontlist is a full or partial font file pathname or list thereof
438 (i.e. just like before 2.0.29) */
439 #define gdFTEX_FONTPATHNAME 32
440 /* Necessary to use fontconfig patterns instead of font pathnames
441 as the fontlist argument, unless gdFTUseFontConfig(1); has
442 been called. New in 2.0.29 */
443 #define gdFTEX_FONTCONFIG 64
444 /* Sometimes interesting when fontconfig is used: the fontpath
445 element of the structure above will contain a gdMalloc'd string
446 copy of the actual font file pathname used, if this flag is set
447 when the call is made */
448 #define gdFTEX_RETURNFONTPATHNAME 128
449
450 /* If flag is nonzero, the fontlist parameter to gdImageStringFT
451 and gdImageStringFTEx shall be assumed to be a fontconfig font pattern
452 if fontconfig was compiled into gd. This function returns zero
453 if fontconfig is not available, nonzero otherwise. */
454 BGD_DECLARE(int) gdFTUseFontConfig(int flag);
455
456 /* These are NOT flags; set one in 'charmap' if you set the
457 gdFTEX_CHARMAP bit in 'flags'. */
458 #define gdFTEX_Unicode 0
459 #define gdFTEX_Shift_JIS 1
460 #define gdFTEX_Big5 2
461 #define gdFTEX_Adobe_Custom 3
462
463 BGD_DECLARE(char *) gdImageStringFTEx (gdImage * im, int *brect, int fg, char *fontlist,
464 double ptsize, double angle, int x, int y,
465 char *string, gdFTStringExtraPtr strex);
466
467 /* Point type for use in polygon drawing. */
468 typedef struct
469 {
470 int x, y;
471 }
472 gdPoint, *gdPointPtr;
473
474 BGD_DECLARE(void) gdImagePolygon (gdImagePtr im, gdPointPtr p, int n, int c);
475 BGD_DECLARE(void) gdImageOpenPolygon (gdImagePtr im, gdPointPtr p, int n, int c);
476 BGD_DECLARE(void) gdImageFilledPolygon (gdImagePtr im, gdPointPtr p, int n, int c);
477
478 /* These functions still work with truecolor images,
479 for which they never return error. */
480 BGD_DECLARE(int) gdImageColorAllocate (gdImagePtr im, int r, int g, int b);
481 /* gd 2.0: palette entries with non-opaque transparency are permitted. */
482 BGD_DECLARE(int) gdImageColorAllocateAlpha (gdImagePtr im, int r, int g, int b, int a);
483 /* Assumes opaque is the preferred alpha channel value */
484 BGD_DECLARE(int) gdImageColorClosest (gdImagePtr im, int r, int g, int b);
485 /* Closest match taking all four parameters into account.
486 A slightly different color with the same transparency
487 beats the exact same color with radically different
488 transparency */
489 BGD_DECLARE(int) gdImageColorClosestAlpha (gdImagePtr im, int r, int g, int b, int a);
490 /* An alternate method */
491 BGD_DECLARE(int) gdImageColorClosestHWB (gdImagePtr im, int r, int g, int b);
492 /* Returns exact, 100% opaque matches only */
493 BGD_DECLARE(int) gdImageColorExact (gdImagePtr im, int r, int g, int b);
494 /* Returns an exact match only, including alpha */
495 BGD_DECLARE(int) gdImageColorExactAlpha (gdImagePtr im, int r, int g, int b, int a);
496 /* Opaque only */
497 BGD_DECLARE(int) gdImageColorResolve (gdImagePtr im, int r, int g, int b);
498 /* Based on gdImageColorExactAlpha and gdImageColorClosestAlpha */
499 BGD_DECLARE(int) gdImageColorResolveAlpha (gdImagePtr im, int r, int g, int b, int a);
500
501 /* A simpler way to obtain an opaque truecolor value for drawing on a
502 truecolor image. Not for use with palette images! */
503
504 #define gdTrueColor(r, g, b) (((r) << 16) + \
505 ((g) << 8) + \
506 (b))
507
508 /* Returns a truecolor value with an alpha channel component.
509 gdAlphaMax (127, **NOT 255**) is transparent, 0 is completely
510 opaque. */
511
512 #define gdTrueColorAlpha(r, g, b, a) (((a) << 24) + \
513 ((r) << 16) + \
514 ((g) << 8) + \
515 (b))
516
517 BGD_DECLARE(void) gdImageColorDeallocate (gdImagePtr im, int color);
518
519 /* Converts a truecolor image to a palette-based image,
520 using a high-quality two-pass quantization routine
521 which attempts to preserve alpha channel information
522 as well as R/G/B color information when creating
523 a palette. If ditherFlag is set, the image will be
524 dithered to approximate colors better, at the expense
525 of some obvious "speckling." colorsWanted can be
526 anything up to 256. If the original source image
527 includes photographic information or anything that
528 came out of a JPEG, 256 is strongly recommended.
529
530 Better yet, don't use these function -- write real
531 truecolor PNGs and JPEGs. The disk space gain of
532 conversion to palette is not great (for small images
533 it can be negative) and the quality loss is ugly.
534
535 DIFFERENCES: gdImageCreatePaletteFromTrueColor creates and
536 returns a new image. gdImageTrueColorToPalette modifies
537 an existing image, and the truecolor pixels are discarded. */
538
539 BGD_DECLARE(gdImagePtr) gdImageCreatePaletteFromTrueColor (gdImagePtr im, int ditherFlag,
540 int colorsWanted);
541
542 BGD_DECLARE(void) gdImageTrueColorToPalette (gdImagePtr im, int ditherFlag,
543 int colorsWanted);
544
545 /* Specifies a color index (if a palette image) or an
546 RGB color (if a truecolor image) which should be
547 considered 100% transparent. FOR TRUECOLOR IMAGES,
548 THIS IS IGNORED IF AN ALPHA CHANNEL IS BEING
549 SAVED. Use gdImageSaveAlpha(im, 0); to
550 turn off the saving of a full alpha channel in
551 a truecolor image. Note that gdImageColorTransparent
552 is usually compatible with older browsers that
553 do not understand full alpha channels well. TBB */
554 BGD_DECLARE(void) gdImageColorTransparent (gdImagePtr im, int color);
555
556 BGD_DECLARE(void) gdImagePaletteCopy (gdImagePtr dst, gdImagePtr src);
557 BGD_DECLARE(void) gdImageGif (gdImagePtr im, FILE * out);
558 BGD_DECLARE(void) gdImagePng (gdImagePtr im, FILE * out);
559 BGD_DECLARE(void) gdImagePngCtx (gdImagePtr im, gdIOCtx * out);
560 BGD_DECLARE(void) gdImageGifCtx (gdImagePtr im, gdIOCtx * out);
561
562 /* 2.0.12: Compression level: 0-9 or -1, where 0 is NO COMPRESSION at all,
563 1 is FASTEST but produces larger files, 9 provides the best
564 compression (smallest files) but takes a long time to compress, and
565 -1 selects the default compiled into the zlib library. */
566 BGD_DECLARE(void) gdImagePngEx (gdImagePtr im, FILE * out, int level);
567 BGD_DECLARE(void) gdImagePngCtxEx (gdImagePtr im, gdIOCtx * out, int level);
568
569 BGD_DECLARE(void) gdImageWBMP (gdImagePtr image, int fg, FILE * out);
570 BGD_DECLARE(void) gdImageWBMPCtx (gdImagePtr image, int fg, gdIOCtx * out);
571
572 /* Guaranteed to correctly free memory returned
573 by the gdImage*Ptr functions */
574 BGD_DECLARE(void) gdFree (void *m);
575
576 /* Best to free this memory with gdFree(), not free() */
577 BGD_DECLARE(void *) gdImageWBMPPtr (gdImagePtr im, int *size, int fg);
578
579 /* 100 is highest quality (there is always a little loss with JPEG).
580 0 is lowest. 10 is about the lowest useful setting. */
581 BGD_DECLARE(void) gdImageJpeg (gdImagePtr im, FILE * out, int quality);
582 BGD_DECLARE(void) gdImageJpegCtx (gdImagePtr im, gdIOCtx * out, int quality);
583
584 /* Best to free this memory with gdFree(), not free() */
585 BGD_DECLARE(void *) gdImageJpegPtr (gdImagePtr im, int *size, int quality);
586
587 /* Legal values for Disposal. gdDisposalNone is always used by
588 the built-in optimizer if previm is passed. */
589
590 enum {
591 gdDisposalUnknown,
592 gdDisposalNone,
593 gdDisposalRestoreBackground,
594 gdDisposalRestorePrevious
595 };
596
597 BGD_DECLARE(void) gdImageGifAnimBegin(gdImagePtr im, FILE *outFile, int GlobalCM, int Loops);
598 BGD_DECLARE(void) gdImageGifAnimAdd(gdImagePtr im, FILE *outFile, int LocalCM, int LeftOfs, int TopOfs, int Delay, int Disposal, gdImagePtr previm);
599 BGD_DECLARE(void) gdImageGifAnimEnd(FILE *outFile);
600 BGD_DECLARE(void) gdImageGifAnimBeginCtx(gdImagePtr im, gdIOCtx *out, int GlobalCM, int Loops);
601 BGD_DECLARE(void) gdImageGifAnimAddCtx(gdImagePtr im, gdIOCtx *out, int LocalCM, int LeftOfs, int TopOfs, int Delay, int Disposal, gdImagePtr previm);
602 BGD_DECLARE(void) gdImageGifAnimEndCtx(gdIOCtx *out);
603 BGD_DECLARE(void *) gdImageGifAnimBeginPtr(gdImagePtr im, int *size, int GlobalCM, int Loops);
604 BGD_DECLARE(void *) gdImageGifAnimAddPtr(gdImagePtr im, int *size, int LocalCM, int LeftOfs, int TopOfs, int Delay, int Disposal, gdImagePtr previm);
605 BGD_DECLARE(void *) gdImageGifAnimEndPtr(int *size);
606
607 /* A custom data sink. For backwards compatibility. Use
608 gdIOCtx instead. */
609 /* The sink function must return -1 on error, otherwise the number
610 of bytes written, which must be equal to len. */
611 /* context will be passed to your sink function. */
612 typedef struct
613 {
614 int (*sink) (void *context, const char *buffer, int len);
615 void *context;
616 }
617 gdSink, *gdSinkPtr;
618
619 BGD_DECLARE(void) gdImagePngToSink (gdImagePtr im, gdSinkPtr out);
620
621 BGD_DECLARE(void) gdImageGd (gdImagePtr im, FILE * out);
622 BGD_DECLARE(void) gdImageGd2 (gdImagePtr im, FILE * out, int cs, int fmt);
623
624 /* Best to free this memory with gdFree(), not free() */
625 BGD_DECLARE(void *) gdImageGifPtr (gdImagePtr im, int *size);
626
627 /* Best to free this memory with gdFree(), not free() */
628 BGD_DECLARE(void *) gdImagePngPtr (gdImagePtr im, int *size);
629 BGD_DECLARE(void *) gdImagePngPtrEx (gdImagePtr im, int *size, int level);
630
631 /* Best to free this memory with gdFree(), not free() */
632 BGD_DECLARE(void *) gdImageGdPtr (gdImagePtr im, int *size);
633
634 /* Best to free this memory with gdFree(), not free() */
635 BGD_DECLARE(void *) gdImageGd2Ptr (gdImagePtr im, int cs, int fmt, int *size);
636
637 BGD_DECLARE(void) gdImageEllipse (gdImagePtr im, int cx, int cy, int w, int h,
638 int color);
639
640 /* Style is a bitwise OR ( | operator ) of these.
641 gdArc and gdChord are mutually exclusive;
642 gdChord just connects the starting and ending
643 angles with a straight line, while gdArc produces
644 a rounded edge. gdPie is a synonym for gdArc.
645 gdNoFill indicates that the arc or chord should be
646 outlined, not filled. gdEdged, used together with
647 gdNoFill, indicates that the beginning and ending
648 angles should be connected to the center; this is
649 a good way to outline (rather than fill) a
650 'pie slice'. */
651 #define gdArc 0
652 #define gdPie gdArc
653 #define gdChord 1
654 #define gdNoFill 2
655 #define gdEdged 4
656
657 BGD_DECLARE(void) gdImageFilledArc (gdImagePtr im, int cx, int cy, int w, int h, int s,
658 int e, int color, int style);
659 BGD_DECLARE(void) gdImageArc (gdImagePtr im, int cx, int cy, int w, int h, int s, int e,
660 int color);
661 BGD_DECLARE(void) gdImageEllipse(gdImagePtr im, int cx, int cy, int w, int h, int color);
662 BGD_DECLARE(void) gdImageFilledEllipse (gdImagePtr im, int cx, int cy, int w, int h,
663 int color);
664 BGD_DECLARE(void) gdImageFillToBorder (gdImagePtr im, int x, int y, int border,
665 int color);
666 BGD_DECLARE(void) gdImageFill (gdImagePtr im, int x, int y, int color);
667 BGD_DECLARE(void) gdImageCopy (gdImagePtr dst, gdImagePtr src, int dstX, int dstY,
668 int srcX, int srcY, int w, int h);
669 BGD_DECLARE(void) gdImageCopyMerge (gdImagePtr dst, gdImagePtr src, int dstX, int dstY,
670 int srcX, int srcY, int w, int h, int pct);
671 BGD_DECLARE(void) gdImageCopyMergeGray (gdImagePtr dst, gdImagePtr src, int dstX,
672 int dstY, int srcX, int srcY, int w, int h,
673 int pct);
674
675 /* Stretches or shrinks to fit, as needed. Does NOT attempt
676 to average the entire set of source pixels that scale down onto the
677 destination pixel. */
678 BGD_DECLARE(void) gdImageCopyResized (gdImagePtr dst, gdImagePtr src, int dstX, int dstY,
679 int srcX, int srcY, int dstW, int dstH, int srcW,
680 int srcH);
681
682 /* gd 2.0: stretches or shrinks to fit, as needed. When called with a
683 truecolor destination image, this function averages the
684 entire set of source pixels that scale down onto the
685 destination pixel, taking into account what portion of the
686 destination pixel each source pixel represents. This is a
687 floating point operation, but this is not a performance issue
688 on modern hardware, except for some embedded devices. If the
689 destination is a palette image, gdImageCopyResized is
690 substituted automatically. */
691 BGD_DECLARE(void) gdImageCopyResampled (gdImagePtr dst, gdImagePtr src, int dstX,
692 int dstY, int srcX, int srcY, int dstW, int dstH,
693 int srcW, int srcH);
694
695 /* gd 2.0.8: gdImageCopyRotated is added. Source
696 is a rectangle, with its upper left corner at
697 srcX and srcY. Destination is the *center* of
698 the rotated copy. Angle is in degrees, same as
699 gdImageArc. Floating point destination center
700 coordinates allow accurate rotation of
701 objects of odd-numbered width or height. */
702 BGD_DECLARE(void) gdImageCopyRotated (gdImagePtr dst,
703 gdImagePtr src,
704 double dstX, double dstY,
705 int srcX, int srcY,
706 int srcWidth, int srcHeight, int angle);
707
708 BGD_DECLARE(void) gdImageSetBrush (gdImagePtr im, gdImagePtr brush);
709 BGD_DECLARE(void) gdImageSetTile (gdImagePtr im, gdImagePtr tile);
710 BGD_DECLARE(void) gdImageSetAntiAliased (gdImagePtr im, int c);
711 BGD_DECLARE(void) gdImageSetAntiAliasedDontBlend (gdImagePtr im, int c, int dont_blend);
712 BGD_DECLARE(void) gdImageSetStyle (gdImagePtr im, int *style, int noOfPixels);
713 /* Line thickness (defaults to 1). Affects lines, ellipses,
714 rectangles, polygons and so forth. */
715 BGD_DECLARE(void) gdImageSetThickness (gdImagePtr im, int thickness);
716 /* On or off (1 or 0) for all three of these. */
717 BGD_DECLARE(void) gdImageInterlace (gdImagePtr im, int interlaceArg);
718 BGD_DECLARE(void) gdImageAlphaBlending (gdImagePtr im, int alphaBlendingArg);
719 BGD_DECLARE(void) gdImageSaveAlpha (gdImagePtr im, int saveAlphaArg);
720
721 /* Macros to access information about images. */
722
723 /* Returns nonzero if the image is a truecolor image,
724 zero for a palette image. */
725
726 #define gdImageTrueColor(im) ((im)->trueColor)
727
728 #define gdImageSX(im) ((im)->sx)
729 #define gdImageSY(im) ((im)->sy)
730 #define gdImageColorsTotal(im) ((im)->colorsTotal)
731 #define gdImageRed(im, c) ((im)->trueColor ? gdTrueColorGetRed(c) : \
732 (im)->red[(c)])
733 #define gdImageGreen(im, c) ((im)->trueColor ? gdTrueColorGetGreen(c) : \
734 (im)->green[(c)])
735 #define gdImageBlue(im, c) ((im)->trueColor ? gdTrueColorGetBlue(c) : \
736 (im)->blue[(c)])
737 #define gdImageAlpha(im, c) ((im)->trueColor ? gdTrueColorGetAlpha(c) : \
738 (im)->alpha[(c)])
739 #define gdImageGetTransparent(im) ((im)->transparent)
740 #define gdImageGetInterlaced(im) ((im)->interlace)
741
742 /* These macros provide direct access to pixels in
743 palette-based and truecolor images, respectively.
744 If you use these macros, you must perform your own
745 bounds checking. Use of the macro for the correct type
746 of image is also your responsibility. */
747 #define gdImagePalettePixel(im, x, y) (im)->pixels[(y)][(x)]
748 #define gdImageTrueColorPixel(im, x, y) (im)->tpixels[(y)][(x)]
749
750 /* I/O Support routines. */
751
752 BGD_DECLARE(gdIOCtx *) gdNewFileCtx (FILE *);
753 /* If data is null, size is ignored and an initial data buffer is
754 allocated automatically. NOTE: this function assumes gd has the right
755 to free or reallocate "data" at will! Also note that gd will free
756 "data" when the IO context is freed. If data is not null, it must point
757 to memory allocated with gdMalloc, or by a call to gdImage[something]Ptr.
758 If not, see gdNewDynamicCtxEx for an alternative. */
759 BGD_DECLARE(gdIOCtx *) gdNewDynamicCtx (int size, void *data);
760 /* 2.0.21: if freeFlag is nonzero, gd will free and/or reallocate "data" as
761 needed as described above. If freeFlag is zero, gd will never free
762 or reallocate "data," which means that the context should only be used
763 for *reading* an image from a memory buffer, or writing an image to a
764 memory buffer which is already large enough. If the memory buffer is
765 not large enough and an image write is attempted, the write operation
766 will fail. Those wishing to write an image to a buffer in memory have
767 a much simpler alternative in the gdImage[something]Ptr functions. */
768 BGD_DECLARE(gdIOCtx *) gdNewDynamicCtxEx (int size, void *data, int freeFlag);
769 BGD_DECLARE(gdIOCtx *) gdNewSSCtx (gdSourcePtr in, gdSinkPtr out);
770 BGD_DECLARE(void *) gdDPExtractData (struct gdIOCtx *ctx, int *size);
771
772 #define GD2_CHUNKSIZE 128
773 #define GD2_CHUNKSIZE_MIN 64
774 #define GD2_CHUNKSIZE_MAX 4096
775
776 #define GD2_VERS 2
777 #define GD2_ID "gd2"
778
779 #define GD2_FMT_RAW 1
780 #define GD2_FMT_COMPRESSED 2
781
782 /* Image comparison definitions */
783 BGD_DECLARE(int) gdImageCompare (gdImagePtr im1, gdImagePtr im2);
784
785 #define GD_CMP_IMAGE 1 /* Actual image IS different */
786 #define GD_CMP_NUM_COLORS 2 /* Number of Colours in pallette differ */
787 #define GD_CMP_COLOR 4 /* Image colours differ */
788 #define GD_CMP_SIZE_X 8 /* Image width differs */
789 #define GD_CMP_SIZE_Y 16 /* Image heights differ */
790 #define GD_CMP_TRANSPARENT 32 /* Transparent colour */
791 #define GD_CMP_BACKGROUND 64 /* Background colour */
792 #define GD_CMP_INTERLACE 128 /* Interlaced setting */
793 #define GD_CMP_TRUECOLOR 256 /* Truecolor vs palette differs */
794
795 /* resolution affects ttf font rendering, particularly hinting */
796 #define GD_RESOLUTION 96 /* pixels per inch */
797
798 #ifdef __cplusplus
799 }
800 #endif
801
802 /* newfangled special effects */
803 #include "gdfx.h"
804
805 #endif /* GD_H */
806
807 #ifdef __cplusplus
808 }
809 #endif
0
1 #ifdef HAVE_CONFIG_H
2 #include "config.h"
3 #endif
4
5 #include <stdio.h>
6 #include <stdlib.h>
7 #include "gd.h"
8
9 /* A short program which converts a .png file into a .gd file, for
10 your convenience in creating images on the fly from a
11 basis image that must be loaded quickly. The .gd format
12 is not intended to be a general-purpose format. */
13
14 int
15 main (int argc, char **argv)
16 {
17 gdImagePtr im;
18 gdImagePtr pal;
19 FILE *in, *out;
20 if (argc != 3)
21 {
22 fprintf (stderr, "Usage: gd2copypal palettefile.gd2 filename.gd2\n");
23 exit (1);
24 }
25 in = fopen (argv[1], "rb");
26 if (!in)
27 {
28 fprintf (stderr, "Palette file does not exist!\n");
29 exit (1);
30 }
31 pal = gdImageCreateFromGd2 (in);
32 fclose (in);
33 if (!pal)
34 {
35 fprintf (stderr, "Palette is not in GD2 format!\n");
36 exit (1);
37 }
38
39 in = fopen (argv[2], "rb");
40 if (!in)
41 {
42 fprintf (stderr, "Input file does not exist!\n");
43 exit (1);
44 }
45 im = gdImageCreateFromGd2 (in);
46 fclose (in);
47 if (!im)
48 {
49 fprintf (stderr, "Input is not in GD2 format!\n");
50 exit (1);
51 }
52
53 gdImagePaletteCopy (im, pal);
54
55 out = fopen (argv[2], "wb");
56 if (!out)
57 {
58 fprintf (stderr, "Output file cannot be written to!\n");
59 gdImageDestroy (im);
60 exit (1);
61 }
62 gdImageGd2 (im, out, 128, 2);
63 fclose (out);
64 gdImageDestroy (pal);
65 gdImageDestroy (im);
66
67 return 0;
68 }
0 #ifdef HAVE_CONFIG_H
1 #include "config.h"
2 #endif
3
4 #include <stdio.h>
5 #include <stdlib.h> /* for atoi */
6 #include <time.h> /* For time */
7 #include "gd.h"
8
9 /* A short program which converts a .png file into a .gd file, for
10 your convenience in creating images on the fly from a
11 basis image that must be loaded quickly. The .gd format
12 is not intended to be a general-purpose format. */
13
14 int
15 main (int argc, char **argv)
16 {
17 gdImagePtr im;
18 FILE *in;
19 int x, y, w, h;
20 int c;
21 int i;
22 int t0;
23
24 if (argc != 7)
25 {
26 fprintf (stderr, "Usage: gd2time filename.gd count x y w h\n");
27 exit (1);
28 }
29
30 c = atoi (argv[2]);
31 x = atoi (argv[3]);
32 y = atoi (argv[4]);
33 w = atoi (argv[5]);
34 h = atoi (argv[6]);
35
36 printf ("Extracting %d times from (%d, %d), size is %dx%d\n", c, x, y, w,
37 h);
38
39 t0 = time (0);
40 for (i = 0; i < c; i++)
41 {
42 in = fopen (argv[1], "rb");
43 if (!in)
44 {
45 fprintf (stderr, "Input file does not exist!\n");
46 exit (1);
47 }
48
49 im = gdImageCreateFromGd2Part (in, x, y, w, h);
50 fclose (in);
51
52 if (!im)
53 {
54 fprintf (stderr, "Error reading source file!\n");
55 exit (1);
56 }
57 gdImageDestroy (im);
58 };
59 t0 = time (0) - t0;
60 printf ("%d seconds to extract (& destroy) %d times\n", t0, c);
61
62 return 0;
63 }
0 #ifdef HAVE_CONFIG_H
1 #include "config.h"
2 #endif
3
4 #include <stdio.h>
5 #include <stdlib.h>
6
7 #include "gd.h"
8
9 /* A short program which converts a .gif file into a .gd file, for
10 your convenience in creating images on the fly from a
11 basis image that must be loaded quickly. The .gd format
12 is not intended to be a general-purpose format. */
13
14 int main(int argc, char **argv)
15 {
16 gdImagePtr im;
17 FILE *in, *out;
18 if (argc != 3) {
19 fprintf(stderr, "Usage: gd2togif filename.gd2 filename.gif\n");
20 exit(1);
21 }
22 in = fopen(argv[1], "rb");
23 if (!in) {
24 fprintf(stderr, "Input file does not exist!\n");
25 exit(1);
26 }
27 im = gdImageCreateFromGd2(in);
28 fclose(in);
29 if (!im) {
30 fprintf(stderr, "Input is not in GIF format!\n");
31 exit(1);
32 }
33 out = fopen(argv[2], "wb");
34 if (!out) {
35 fprintf(stderr, "Output file cannot be written to!\n");
36 gdImageDestroy(im);
37 exit(1);
38 }
39 gdImageGif(im, out);
40 fclose(out);
41 gdImageDestroy(im);
42
43 return 0;
44 }
45
0
1 #ifdef HAVE_CONFIG_H
2 #include "config.h"
3 #endif
4
5 #include <stdio.h>
6 #include <stdlib.h>
7 #include "gd.h"
8
9 /* A short program which converts a .png file into a .gd2 file, for
10 your convenience in creating images on the fly from a
11 basis image that must be loaded quickly. The .gd2 format
12 is not intended to be a general-purpose format. */
13
14 int
15 main (int argc, char **argv)
16 {
17 gdImagePtr im;
18 FILE *in, *out;
19 int x=0, y=0, w=0, h=0;
20 if ((argc != 3) && (argc != 7))
21 {
22 fprintf (stderr,
23 "Usage: gd2topng filename.gd2 filename.png [srcx srcy width height]\n");
24 fprintf (stderr,
25 "If the coordinates are absent,t he entire image is converted.\n");
26 exit (1);
27 }
28 if (argc == 7)
29 {
30 x = atoi (argv[3]);
31 y = atoi (argv[4]);
32 w = atoi (argv[5]);
33 h = atoi (argv[6]);
34 }
35 in = fopen (argv[1], "rb");
36 if (!in)
37 {
38 fprintf (stderr, "Input file does not exist!\n");
39 exit (1);
40 }
41 if (argc == 7)
42 {
43 im = gdImageCreateFromGd2Part (in, x, y, w, h);
44 }
45 else
46 {
47 im = gdImageCreateFromGd2 (in);
48 }
49 fclose (in);
50 if (!im)
51 {
52 fprintf (stderr, "Input is not in GD2 format!\n");
53 exit (1);
54 }
55 out = fopen (argv[2], "wb");
56 if (!out)
57 {
58 fprintf (stderr, "Output file cannot be written to!\n");
59 gdImageDestroy (im);
60 exit (1);
61 }
62 #ifdef HAVE_LIBPNG
63 gdImagePng (im, out);
64 #else
65 fprintf (stderr, "No PNG library support available.\n");
66 #endif
67 fclose (out);
68 gdImageDestroy (im);
69
70 return 0;
71 }
0 #ifdef HAVE_CONFIG_H
1 #include "config.h"
2 #endif
3
4 #include <stdio.h>
5 #include <math.h>
6 #include <string.h>
7 #include <stdlib.h>
8 #include "gd.h"
9
10 #define TRUE 1
11 #define FALSE 0
12
13 /* Use this for commenting out debug-print statements. */
14 /* Just use the first '#define' to allow all the prints... */
15 /*#define GD2_DBG(s) (s) */
16 #define GD2_DBG(s)
17
18 /* */
19 /* Shared code to read color tables from gd file. */
20 /* */
21 int
22 _gdGetColors (gdIOCtx * in, gdImagePtr im, int gd2xFlag)
23 {
24 int i;
25 if (gd2xFlag)
26 {
27 int trueColorFlag;
28 if (!gdGetByte (&trueColorFlag, in))
29 {
30 goto fail1;
31 }
32 /* 2.0.12: detect bad truecolor .gd files created by pre-2.0.12.
33 Beginning in 2.0.12 truecolor is indicated by the initial 2-byte
34 signature. */
35 if (trueColorFlag != im->trueColor)
36 {
37 goto fail1;
38 }
39 /* This should have been a word all along */
40 if (!im->trueColor)
41 {
42 if (!gdGetWord (&im->colorsTotal, in))
43 {
44 goto fail1;
45 }
46 }
47 /* Int to accommodate truecolor single-color transparency */
48 if (!gdGetInt (&im->transparent, in))
49 {
50 goto fail1;
51 }
52 }
53 else
54 {
55 if (!gdGetByte (&im->colorsTotal, in))
56 {
57 goto fail1;
58 }
59 if (!gdGetWord (&im->transparent, in))
60 {
61 goto fail1;
62 }
63 if (im->transparent == 257)
64 {
65 im->transparent = (-1);
66 }
67 }
68 GD2_DBG (printf
69 ("Pallette had %d colours (T=%d)\n", im->colorsTotal,
70 im->transparent));
71 if (im->trueColor)
72 {
73 return TRUE;
74 }
75 for (i = 0; (i < gdMaxColors); i++)
76 {
77 if (!gdGetByte (&im->red[i], in))
78 {
79 goto fail1;
80 }
81 if (!gdGetByte (&im->green[i], in))
82 {
83 goto fail1;
84 }
85 if (!gdGetByte (&im->blue[i], in))
86 {
87 goto fail1;
88 }
89 if (gd2xFlag)
90 {
91 if (!gdGetByte (&im->alpha[i], in))
92 {
93 goto fail1;
94 }
95 }
96 }
97
98 for (i = 0; (i < im->colorsTotal); i++)
99 {
100 im->open[i] = 0;
101 };
102
103 return TRUE;
104 fail1:
105 return FALSE;
106 }
107
108 /* */
109 /* Use the common basic header info to make the image object. */
110 /* */
111 static gdImagePtr
112 _gdCreateFromFile (gdIOCtx * in, int *sx, int *sy)
113 {
114 gdImagePtr im;
115 int gd2xFlag = 0;
116 int trueColorFlag = 0;
117 if (!gdGetWord (sx, in))
118 {
119 goto fail1;
120 }
121 if ((*sx == 65535) || (*sx == 65534))
122 {
123 /* This is a gd 2.0 .gd file */
124 gd2xFlag = 1;
125 /* 2.0.12: 65534 signals a truecolor .gd file.
126 There is a slight redundancy here but we can
127 live with it. */
128 if (*sx == 65534)
129 {
130 trueColorFlag = 1;
131 }
132 if (!gdGetWord (sx, in))
133 {
134 goto fail1;
135 }
136 }
137 if (!gdGetWord (sy, in))
138 {
139 goto fail1;
140 }
141
142 GD2_DBG (printf ("Image is %dx%d\n", *sx, *sy));
143 if (trueColorFlag)
144 {
145 im = gdImageCreateTrueColor (*sx, *sy);
146 }
147 else
148 {
149 im = gdImageCreate (*sx, *sy);
150 }
151 if (!_gdGetColors (in, im, gd2xFlag))
152 {
153 goto fail2;
154 }
155
156 return im;
157 fail2:
158 gdImageDestroy (im);
159 fail1:
160 return 0;
161 }
162
163 BGD_DECLARE(gdImagePtr) gdImageCreateFromGd (FILE * inFile)
164 {
165 gdImagePtr im;
166 gdIOCtx *in;
167
168 in = gdNewFileCtx (inFile);
169 im = gdImageCreateFromGdCtx (in);
170
171 in->gd_free (in);
172
173 return im;
174 }
175
176 BGD_DECLARE(gdImagePtr) gdImageCreateFromGdPtr (int size, void *data)
177 {
178 gdImagePtr im;
179 gdIOCtx *in = gdNewDynamicCtxEx (size, data, 0);
180 im = gdImageCreateFromGdCtx (in);
181 in->gd_free (in);
182 return im;
183 }
184
185 BGD_DECLARE(gdImagePtr) gdImageCreateFromGdCtx (gdIOCtxPtr in)
186 {
187 int sx, sy;
188 int x, y;
189 gdImagePtr im;
190
191 /* Read the header */
192 im = _gdCreateFromFile (in, &sx, &sy);
193
194 if (im == NULL)
195 {
196 goto fail1;
197 };
198
199 /* Then the data... */
200 /* 2.0.12: support truecolor properly in .gd as well as in .gd2.
201 Problem reported by Andreas Pfaller. */
202 if (im->trueColor)
203 {
204 for (y = 0; (y < sy); y++)
205 {
206 for (x = 0; (x < sx); x++)
207 {
208 int pix;
209 if (!gdGetInt (&pix, in))
210 {
211 goto fail2;
212 }
213 im->tpixels[y][x] = pix;
214 }
215 }
216 }
217 else
218 {
219 for (y = 0; (y < sy); y++)
220 {
221 for (x = 0; (x < sx); x++)
222 {
223 int ch;
224 ch = gdGetC (in);
225 if (ch == EOF)
226 {
227 goto fail2;
228 }
229 /* ROW-MAJOR IN GD 1.3 */
230 im->pixels[y][x] = ch;
231 }
232 }
233 }
234 return im;
235
236 fail2:
237 gdImageDestroy (im);
238 fail1:
239 return 0;
240 }
241
242 void
243 _gdPutColors (gdImagePtr im, gdIOCtx * out)
244 {
245 int i;
246
247 gdPutC (im->trueColor, out);
248 if (!im->trueColor)
249 {
250 gdPutWord (im->colorsTotal, out);
251 }
252 gdPutInt (im->transparent, out);
253 if (!im->trueColor)
254 {
255 for (i = 0; (i < gdMaxColors); i++)
256 {
257 gdPutC ((unsigned char) im->red[i], out);
258 gdPutC ((unsigned char) im->green[i], out);
259 gdPutC ((unsigned char) im->blue[i], out);
260 gdPutC ((unsigned char) im->alpha[i], out);
261 }
262 }
263 }
264
265 static void
266 _gdPutHeader (gdImagePtr im, gdIOCtx * out)
267 {
268 /* 65535 indicates this is a gd 2.x .gd file.
269 2.0.12: 65534 indicates truecolor. */
270 if (im->trueColor)
271 {
272 gdPutWord (65534, out);
273 }
274 else
275 {
276 gdPutWord (65535, out);
277 }
278 gdPutWord (im->sx, out);
279 gdPutWord (im->sy, out);
280
281 _gdPutColors (im, out);
282
283 }
284
285 static void
286 _gdImageGd (gdImagePtr im, gdIOCtx * out)
287 {
288 int x, y;
289
290 _gdPutHeader (im, out);
291
292 for (y = 0; (y < im->sy); y++)
293 {
294 for (x = 0; (x < im->sx); x++)
295 {
296 /* ROW-MAJOR IN GD 1.3 */
297 if (im->trueColor)
298 {
299 gdPutInt (im->tpixels[y][x], out);
300 }
301 else
302 {
303 gdPutC ((unsigned char) im->pixels[y][x], out);
304 }
305 }
306 }
307 }
308
309 BGD_DECLARE(void) gdImageGd (gdImagePtr im, FILE * outFile)
310 {
311 gdIOCtx *out = gdNewFileCtx (outFile);
312 _gdImageGd (im, out);
313 out->gd_free (out);
314 }
315
316 BGD_DECLARE(void *) gdImageGdPtr (gdImagePtr im, int *size)
317 {
318 void *rv;
319 gdIOCtx *out = gdNewDynamicCtx (2048, NULL);
320 _gdImageGd (im, out);
321 rv = gdDPExtractData (out, size);
322 out->gd_free (out);
323 return rv;
324 }
0 /*
1 * gd_gd2.c
2 *
3 * Implements the I/O and support for the GD2 format.
4 *
5 * Changing the definition of GD2_DBG (below) will cause copious messages
6 * to be displayed while it processes requests.
7 *
8 * Designed, Written & Copyright 1999, Philip Warner.
9 *
10 */
11
12 #ifdef HAVE_CONFIG_H
13 #include "config.h"
14 #endif
15
16 #include <stdio.h>
17 /* 2.0.29: no more errno.h, makes windows happy */
18 #include <math.h>
19 #include <string.h>
20 #include <stdlib.h>
21 #include "gd.h"
22 #include "gdhelpers.h"
23
24 /* 2.03: gd2 is no longer mandatory */
25 /* JCE - test after including gd.h so that HAVE_LIBZ can be set in
26 * a config.h file included by gd.h */
27 #ifdef HAVE_LIBZ
28 #include <zlib.h>
29
30 #define TRUE 1
31 #define FALSE 0
32
33 /* 2.11: not part of the API, as the save routine can figure it out
34 from im->trueColor, and the load routine doesn't need to tell
35 the end user the saved format. NOTE: adding 2 is assumed
36 to result in the correct format value for truecolor! */
37 #define GD2_FMT_TRUECOLOR_RAW 3
38 #define GD2_FMT_TRUECOLOR_COMPRESSED 4
39
40 #define gd2_compressed(fmt) (((fmt) == GD2_FMT_COMPRESSED) || \
41 ((fmt) == GD2_FMT_TRUECOLOR_COMPRESSED))
42
43 #define gd2_truecolor(fmt) (((fmt) == GD2_FMT_TRUECOLOR_RAW) || \
44 ((fmt) == GD2_FMT_TRUECOLOR_COMPRESSED))
45
46 /* Use this for commenting out debug-print statements. */
47 /* Just use the first '#define' to allow all the prints... */
48 /*#define GD2_DBG(s) (s) */
49 #define GD2_DBG(s)
50
51 typedef struct
52 {
53 int offset;
54 int size;
55 }
56 t_chunk_info;
57
58 extern int _gdGetColors (gdIOCtx * in, gdImagePtr im, int gd2xFlag);
59 extern void _gdPutColors (gdImagePtr im, gdIOCtx * out);
60
61 /* */
62 /* Read the extra info in the gd2 header. */
63 /* */
64 static int
65 _gd2GetHeader (gdIOCtxPtr in, int *sx, int *sy,
66 int *cs, int *vers, int *fmt, int *ncx, int *ncy,
67 t_chunk_info ** chunkIdx)
68 {
69 int i;
70 int ch;
71 char id[5];
72 t_chunk_info *cidx;
73 int sidx;
74 int nc;
75
76 GD2_DBG (printf ("Reading gd2 header info\n"));
77
78 for (i = 0; i < 4; i++)
79 {
80 ch = gdGetC (in);
81 if (ch == EOF)
82 {
83 goto fail1;
84 };
85 id[i] = ch;
86 };
87 id[4] = 0;
88
89 GD2_DBG (printf ("Got file code: %s\n", id));
90
91 /* Equiv. of 'magick'. */
92 if (strcmp (id, GD2_ID) != 0)
93 {
94 GD2_DBG (printf ("Not a valid gd2 file\n"));
95 goto fail1;
96 };
97
98 /* Version */
99 if (gdGetWord (vers, in) != 1)
100 {
101 goto fail1;
102 };
103 GD2_DBG (printf ("Version: %d\n", *vers));
104
105 if ((*vers != 1) && (*vers != 2))
106 {
107 GD2_DBG (printf ("Bad version: %d\n", *vers));
108 goto fail1;
109 };
110
111 /* Image Size */
112 if (!gdGetWord (sx, in))
113 {
114 GD2_DBG (printf ("Could not get x-size\n"));
115 goto fail1;
116 }
117 if (!gdGetWord (sy, in))
118 {
119 GD2_DBG (printf ("Could not get y-size\n"));
120 goto fail1;
121 }
122 GD2_DBG (printf ("Image is %dx%d\n", *sx, *sy));
123
124 /* Chunk Size (pixels, not bytes!) */
125 if (gdGetWord (cs, in) != 1)
126 {
127 goto fail1;
128 };
129 GD2_DBG (printf ("ChunkSize: %d\n", *cs));
130
131 if ((*cs < GD2_CHUNKSIZE_MIN) || (*cs > GD2_CHUNKSIZE_MAX))
132 {
133 GD2_DBG (printf ("Bad chunk size: %d\n", *cs));
134 goto fail1;
135 };
136
137 /* Data Format */
138 if (gdGetWord (fmt, in) != 1)
139 {
140 goto fail1;
141 };
142 GD2_DBG (printf ("Format: %d\n", *fmt));
143
144 if ((*fmt != GD2_FMT_RAW) && (*fmt != GD2_FMT_COMPRESSED) &&
145 (*fmt != GD2_FMT_TRUECOLOR_RAW) &&
146 (*fmt != GD2_FMT_TRUECOLOR_COMPRESSED))
147 {
148 GD2_DBG (printf ("Bad data format: %d\n", *fmt));
149 goto fail1;
150 };
151
152
153 /* # of chunks wide */
154 if (gdGetWord (ncx, in) != 1)
155 {
156 goto fail1;
157 };
158 GD2_DBG (printf ("%d Chunks Wide\n", *ncx));
159
160 /* # of chunks high */
161 if (gdGetWord (ncy, in) != 1)
162 {
163 goto fail1;
164 };
165 GD2_DBG (printf ("%d Chunks vertically\n", *ncy));
166
167 if (gd2_compressed (*fmt))
168 {
169 nc = (*ncx) * (*ncy);
170 GD2_DBG (printf ("Reading %d chunk index entries\n", nc));
171 sidx = sizeof (t_chunk_info) * nc;
172 cidx = gdCalloc (sidx, 1);
173 if (!cidx) {
174 goto fail1;
175 }
176 for (i = 0; i < nc; i++)
177 {
178 if (gdGetInt (&cidx[i].offset, in) != 1)
179 {
180 goto fail1;
181 };
182 if (gdGetInt (&cidx[i].size, in) != 1)
183 {
184 goto fail1;
185 };
186 };
187 *chunkIdx = cidx;
188 };
189
190 GD2_DBG (printf ("gd2 header complete\n"));
191
192 return 1;
193
194 fail1:
195 return 0;
196 }
197
198 static gdImagePtr
199 _gd2CreateFromFile (gdIOCtxPtr in, int *sx, int *sy,
200 int *cs, int *vers, int *fmt,
201 int *ncx, int *ncy, t_chunk_info ** cidx)
202 {
203 gdImagePtr im;
204
205 if (_gd2GetHeader (in, sx, sy, cs, vers, fmt, ncx, ncy, cidx) != 1)
206 {
207 GD2_DBG (printf ("Bad GD2 header\n"));
208 goto fail1;
209 }
210 if (gd2_truecolor (*fmt))
211 {
212 im = gdImageCreateTrueColor (*sx, *sy);
213 }
214 else
215 {
216 im = gdImageCreate (*sx, *sy);
217 }
218 if (im == NULL)
219 {
220 GD2_DBG (printf ("Could not create gdImage\n"));
221 goto fail1;
222 };
223
224 if (!_gdGetColors (in, im, (*vers) == 2))
225 {
226 GD2_DBG (printf ("Could not read color palette\n"));
227 goto fail2;
228 }
229 GD2_DBG (printf ("Image palette completed: %d colours\n", im->colorsTotal));
230
231 return im;
232
233 fail2:
234 gdImageDestroy (im);
235 return 0;
236
237 fail1:
238 return 0;
239
240 }
241
242 static int
243 _gd2ReadChunk (int offset, char *compBuf, int compSize, char *chunkBuf,
244 uLongf * chunkLen, gdIOCtx * in)
245 {
246 int zerr;
247
248 if (gdTell (in) != offset)
249 {
250 GD2_DBG (printf ("Positioning in file to %d\n", offset));
251 gdSeek (in, offset);
252 }
253 else
254 {
255 GD2_DBG (printf ("Already Positioned in file to %d\n", offset));
256 };
257
258 /* Read and uncompress an entire chunk. */
259 GD2_DBG (printf ("Reading file\n"));
260 if (gdGetBuf (compBuf, compSize, in) != compSize)
261 {
262 return FALSE;
263 };
264 GD2_DBG (printf
265 ("Got %d bytes. Uncompressing into buffer of %d bytes\n", compSize,
266 *chunkLen));
267 zerr =
268 uncompress ((unsigned char *) chunkBuf, chunkLen,
269 (unsigned char *) compBuf, compSize);
270 if (zerr != Z_OK)
271 {
272 GD2_DBG (printf ("Error %d from uncompress\n", zerr));
273 return FALSE;
274 };
275 GD2_DBG (printf ("Got chunk\n"));
276 return TRUE;
277 }
278
279 BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2 (FILE * inFile)
280 {
281 gdIOCtx *in = gdNewFileCtx (inFile);
282 gdImagePtr im;
283
284 im = gdImageCreateFromGd2Ctx (in);
285
286 in->gd_free (in);
287
288 return im;
289 }
290
291 BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2Ptr (int size, void *data)
292 {
293 gdImagePtr im;
294 gdIOCtx *in = gdNewDynamicCtxEx (size, data, 0);
295 im = gdImageCreateFromGd2Ctx (in);
296 in->gd_free (in);
297 return im;
298 }
299
300 BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2Ctx (gdIOCtxPtr in)
301 {
302 int sx, sy;
303 int i;
304 int ncx, ncy, nc, cs, cx, cy;
305 int x, y, ylo, yhi, xlo, xhi;
306 int vers, fmt;
307 t_chunk_info *chunkIdx = NULL; /* So we can gdFree it with impunity. */
308 unsigned char *chunkBuf = NULL; /* So we can gdFree it with impunity. */
309 int chunkNum = 0;
310 int chunkMax = 0;
311 uLongf chunkLen;
312 int chunkPos = 0;
313 int compMax = 0;
314 int bytesPerPixel;
315 char *compBuf = NULL; /* So we can gdFree it with impunity. */
316
317 gdImagePtr im;
318
319 /* Get the header */
320 im =
321 _gd2CreateFromFile (in, &sx, &sy, &cs, &vers, &fmt, &ncx, &ncy,
322 &chunkIdx);
323
324 if (im == NULL)
325 {
326 return 0;
327 }
328
329 bytesPerPixel = im->trueColor ? 4 : 1;
330 nc = ncx * ncy;
331
332 if (gd2_compressed (fmt))
333 {
334 /* Find the maximum compressed chunk size. */
335 compMax = 0;
336 for (i = 0; (i < nc); i++)
337 {
338 if (chunkIdx[i].size > compMax)
339 {
340 compMax = chunkIdx[i].size;
341 };
342 };
343 compMax++;
344
345 /* Allocate buffers */
346 chunkMax = cs * bytesPerPixel * cs;
347 chunkBuf = gdCalloc (chunkMax, 1);
348 if (!chunkBuf) {
349 goto fail2;
350 }
351 compBuf = gdCalloc (compMax, 1);
352 if (!compBuf) {
353 goto fail2;
354 }
355
356 GD2_DBG (printf ("Largest compressed chunk is %d bytes\n", compMax));
357 };
358
359 /* if ( (ncx != sx / cs) || (ncy != sy / cs)) { */
360 /* goto fail2; */
361 /* }; */
362
363 /* Read the data... */
364 for (cy = 0; (cy < ncy); cy++)
365 {
366 for (cx = 0; (cx < ncx); cx++)
367 {
368
369 ylo = cy * cs;
370 yhi = ylo + cs;
371 if (yhi > im->sy)
372 {
373 yhi = im->sy;
374 };
375
376 GD2_DBG (printf
377 ("Processing Chunk %d (%d, %d), y from %d to %d\n",
378 chunkNum, cx, cy, ylo, yhi));
379
380 if (gd2_compressed (fmt))
381 {
382
383 chunkLen = chunkMax;
384
385 if (!_gd2ReadChunk (chunkIdx[chunkNum].offset,
386 compBuf,
387 chunkIdx[chunkNum].size,
388 (char *) chunkBuf, &chunkLen, in))
389 {
390 GD2_DBG (printf ("Error reading comproessed chunk\n"));
391 goto fail2;
392 };
393
394 chunkPos = 0;
395 };
396
397 for (y = ylo; (y < yhi); y++)
398 {
399
400 xlo = cx * cs;
401 xhi = xlo + cs;
402 if (xhi > im->sx)
403 {
404 xhi = im->sx;
405 };
406 /*GD2_DBG(printf("y=%d: ",y)); */
407 if (!gd2_compressed (fmt))
408 {
409 for (x = xlo; x < xhi; x++)
410 {
411
412 if (im->trueColor)
413 {
414 if (!gdGetInt (&im->tpixels[y][x], in))
415 {
416 /*printf("EOF while reading\n"); */
417 /*gdImageDestroy(im); */
418 /*return 0; */
419 im->tpixels[y][x] = 0;
420 }
421 }
422 else
423 {
424 int ch;
425 if (!gdGetByte (&ch, in))
426 {
427 /*printf("EOF while reading\n"); */
428 /*gdImageDestroy(im); */
429 /*return 0; */
430 ch = 0;
431 }
432 im->pixels[y][x] = ch;
433 }
434 }
435 }
436 else
437 {
438 for (x = xlo; x < xhi; x++)
439 {
440 if (im->trueColor)
441 {
442 /* 2.0.1: work around a gcc bug by being verbose.
443 TBB */
444 int a = chunkBuf[chunkPos++] << 24;
445 int r = chunkBuf[chunkPos++] << 16;
446 int g = chunkBuf[chunkPos++] << 8;
447 int b = chunkBuf[chunkPos++];
448 /* 2.0.11: tpixels */
449 im->tpixels[y][x] = a + r + g + b;
450 }
451 else
452 {
453 im->pixels[y][x] = chunkBuf[chunkPos++];
454 }
455 };
456 };
457 /*GD2_DBG(printf("\n")); */
458 };
459 chunkNum++;
460 };
461 };
462
463 GD2_DBG (printf ("Freeing memory\n"));
464
465 gdFree (chunkBuf);
466 gdFree (compBuf);
467 gdFree (chunkIdx);
468
469 GD2_DBG (printf ("Done\n"));
470
471 return im;
472
473 fail2:
474 gdImageDestroy (im);
475 fail1:
476 if (chunkBuf) {
477 gdFree (chunkBuf);
478 }
479 if (compBuf) {
480 gdFree (compBuf);
481 }
482 if (chunkIdx) {
483 gdFree (chunkIdx);
484 }
485 return 0;
486 }
487
488 BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2Part (FILE * inFile, int srcx, int srcy, int w, int h)
489 {
490 gdImagePtr im;
491 gdIOCtx *in = gdNewFileCtx (inFile);
492
493 im = gdImageCreateFromGd2PartCtx (in, srcx, srcy, w, h);
494
495 in->gd_free (in);
496
497 return im;
498 }
499
500 BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2PartPtr (int size, void *data, int srcx, int srcy, int w,
501 int h)
502 {
503 gdImagePtr im;
504 gdIOCtx *in = gdNewDynamicCtxEx (size, data, 0);
505 im = gdImageCreateFromGd2PartCtx (in, srcx, srcy, w, h);
506 in->gd_free (in);
507 return im;
508 }
509
510 BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2PartCtx (gdIOCtx * in, int srcx, int srcy, int w, int h)
511 {
512 int scx, scy, ecx, ecy, fsx, fsy;
513 int nc, ncx, ncy, cs, cx, cy;
514 int x, y, ylo, yhi, xlo, xhi;
515 int dstart, dpos;
516 int i;
517 /* 2.0.12: unsigned is correct; fixes problems with color munging.
518 Thanks to Steven Brown. */
519 unsigned int ch;
520 int vers, fmt;
521 t_chunk_info *chunkIdx = NULL;
522 unsigned char *chunkBuf = NULL;
523 int chunkNum;
524 int chunkMax = 0;
525 uLongf chunkLen;
526 int chunkPos = 0;
527 int compMax;
528 char *compBuf = NULL;
529
530 gdImagePtr im;
531
532 /* */
533 /* The next few lines are basically copied from gd2CreateFromFile */
534 /* - we change the file size, so don't want to use the code directly. */
535 /* but we do need to know the file size. */
536 /* */
537 if (_gd2GetHeader (in, &fsx, &fsy, &cs, &vers, &fmt, &ncx, &ncy, &chunkIdx)
538 != 1)
539 {
540 goto fail1;
541 }
542
543 GD2_DBG (printf ("File size is %dx%d\n", fsx, fsy));
544
545 /* This is the difference - make a file based on size of chunks. */
546 if (gd2_truecolor (fmt))
547 {
548 im = gdImageCreateTrueColor (w, h);
549 }
550 else
551 {
552 im = gdImageCreate (w, h);
553 }
554 if (im == NULL)
555 {
556 goto fail1;
557 };
558
559 if (!_gdGetColors (in, im, vers == 2))
560 {
561 goto fail2;
562 }
563 GD2_DBG (printf ("Image palette completed: %d colours\n", im->colorsTotal));
564
565 /* Process the header info */
566 nc = ncx * ncy;
567
568 if (gd2_compressed (fmt))
569 {
570 /* Find the maximum compressed chunk size. */
571 compMax = 0;
572 for (i = 0; (i < nc); i++)
573 {
574 if (chunkIdx[i].size > compMax)
575 {
576 compMax = chunkIdx[i].size;
577 };
578 };
579 compMax++;
580
581 if (im->trueColor)
582 {
583 chunkMax = cs * cs * 4;
584 }
585 else
586 {
587 chunkMax = cs * cs;
588 }
589 chunkBuf = gdCalloc (chunkMax, 1);
590 if (!chunkBuf) {
591 goto fail2;
592 }
593 compBuf = gdCalloc (compMax, 1);
594 if (!compBuf) {
595 goto fail2;
596 }
597
598 };
599
600 /* Don't bother with this... */
601 /* if ( (ncx != sx / cs) || (ncy != sy / cs)) { */
602 /* goto fail2; */
603 /* }; */
604
605
606 /* Work out start/end chunks */
607 scx = srcx / cs;
608 scy = srcy / cs;
609 if (scx < 0)
610 {
611 scx = 0;
612 };
613 if (scy < 0)
614 {
615 scy = 0;
616 };
617
618 ecx = (srcx + w) / cs;
619 ecy = (srcy + h) / cs;
620 if (ecx >= ncx)
621 {
622 ecx = ncx - 1;
623 };
624 if (ecy >= ncy)
625 {
626 ecy = ncy - 1;
627 };
628
629 /* Remember file position of image data. */
630 dstart = gdTell (in);
631 GD2_DBG (printf ("Data starts at %d\n", dstart));
632
633 /* Loop through the chunks. */
634 for (cy = scy; (cy <= ecy); cy++)
635 {
636
637 ylo = cy * cs;
638 yhi = ylo + cs;
639 if (yhi > fsy)
640 {
641 yhi = fsy;
642 };
643
644 for (cx = scx; (cx <= ecx); cx++)
645 {
646
647 xlo = cx * cs;
648 xhi = xlo + cs;
649 if (xhi > fsx)
650 {
651 xhi = fsx;
652 };
653
654 GD2_DBG (printf
655 ("Processing Chunk (%d, %d), from %d to %d\n", cx, cy, ylo,
656 yhi));
657
658 if (!gd2_compressed (fmt))
659 {
660 GD2_DBG (printf ("Using raw format data\n"));
661 if (im->trueColor)
662 {
663 dpos =
664 (cy * (cs * fsx) * 4 + cx * cs * (yhi - ylo) * 4) +
665 dstart;
666 }
667 else
668 {
669 dpos = cy * (cs * fsx) + cx * cs * (yhi - ylo) + dstart;
670 }
671 /* gd 2.0.11: gdSeek returns TRUE on success, not 0.
672 Longstanding bug. 01/16/03 */
673 if (!gdSeek (in, dpos))
674 {
675 fprintf (stderr, "Seek error\n");
676 goto fail2;
677 };
678 GD2_DBG (printf
679 ("Reading (%d, %d) from position %d\n", cx, cy,
680 dpos - dstart));
681 }
682 else
683 {
684 chunkNum = cx + cy * ncx;
685
686 chunkLen = chunkMax;
687 if (!_gd2ReadChunk (chunkIdx[chunkNum].offset,
688 compBuf,
689 chunkIdx[chunkNum].size,
690 (char *) chunkBuf, &chunkLen, in))
691 {
692 printf ("Error reading comproessed chunk\n");
693 goto fail2;
694 };
695 chunkPos = 0;
696 GD2_DBG (printf
697 ("Reading (%d, %d) from chunk %d\n", cx, cy,
698 chunkNum));
699 };
700
701 GD2_DBG (printf
702 (" into (%d, %d) - (%d, %d)\n", xlo, ylo, xhi, yhi));
703 for (y = ylo; (y < yhi); y++)
704 {
705
706 for (x = xlo; x < xhi; x++)
707 {
708 if (!gd2_compressed (fmt))
709 {
710 if (im->trueColor)
711 {
712 if (!gdGetInt ((int *) &ch, in))
713 {
714 ch = 0;
715 /*printf("EOF while reading file\n"); */
716 /*goto fail2; */
717 }
718 }
719 else
720 {
721 ch = gdGetC (in);
722 if ((int) ch == EOF)
723 {
724 ch = 0;
725 /*printf("EOF while reading file\n"); */
726 /*goto fail2; */
727 }
728 }
729 }
730 else
731 {
732 if (im->trueColor)
733 {
734 ch = chunkBuf[chunkPos++];
735 ch = (ch << 8) + chunkBuf[chunkPos++];
736 ch = (ch << 8) + chunkBuf[chunkPos++];
737 ch = (ch << 8) + chunkBuf[chunkPos++];
738 }
739 else
740 {
741 ch = chunkBuf[chunkPos++];
742 }
743 };
744
745 /* Only use a point that is in the image. */
746 if ((x >= srcx) && (x < (srcx + w)) && (x < fsx) && (x >= 0)
747 && (y >= srcy) && (y < (srcy + h)) && (y < fsy)
748 && (y >= 0))
749 {
750 /* 2.0.11: tpixels */
751 if (im->trueColor)
752 {
753 im->tpixels[y - srcy][x - srcx] = ch;
754 }
755 else
756 {
757 im->pixels[y - srcy][x - srcx] = ch;
758 }
759 }
760 };
761 };
762 };
763 };
764
765 gdFree (chunkBuf);
766 gdFree (compBuf);
767 gdFree (chunkIdx);
768
769 return im;
770
771 fail2:
772 gdImageDestroy (im);
773 fail1:
774 if (chunkBuf) {
775 gdFree (chunkBuf);
776 }
777 if (compBuf) {
778 gdFree (compBuf);
779 }
780 if (chunkIdx) {
781 gdFree (chunkIdx);
782 }
783 return 0;
784
785 }
786
787 static void
788 _gd2PutHeader (gdImagePtr im, gdIOCtx * out, int cs, int fmt, int cx, int cy)
789 {
790 int i;
791
792 /* Send the gd2 id, to verify file format. */
793 for (i = 0; i < 4; i++)
794 {
795 gdPutC ((unsigned char) (GD2_ID[i]), out);
796 };
797
798 /* */
799 /* We put the version info first, so future versions can easily change header info. */
800 /* */
801 gdPutWord (GD2_VERS, out);
802 gdPutWord (im->sx, out);
803 gdPutWord (im->sy, out);
804 gdPutWord (cs, out);
805 gdPutWord (fmt, out);
806 gdPutWord (cx, out);
807 gdPutWord (cy, out);
808
809 }
810
811 static void
812 _gdImageGd2 (gdImagePtr im, gdIOCtx * out, int cs, int fmt)
813 {
814 int ncx, ncy, cx, cy;
815 int x, y, ylo, yhi, xlo, xhi;
816 int chunkLen;
817 int chunkNum = 0;
818 char *chunkData = NULL; /* So we can gdFree it with impunity. */
819 char *compData = NULL; /* So we can gdFree it with impunity. */
820 uLongf compLen;
821 int idxPos = 0;
822 int idxSize;
823 t_chunk_info *chunkIdx = NULL;
824 int posSave;
825 int bytesPerPixel = im->trueColor ? 4 : 1;
826 int compMax = 0;
827
828 /*printf("Trying to write GD2 file\n"); */
829
830 /* */
831 /* Force fmt to a valid value since we don't return anything. */
832 /* */
833 if ((fmt != GD2_FMT_RAW) && (fmt != GD2_FMT_COMPRESSED))
834 {
835 fmt = im->trueColor ? GD2_FMT_TRUECOLOR_COMPRESSED : GD2_FMT_COMPRESSED;
836 };
837 if (im->trueColor)
838 {
839 fmt += 2;
840 }
841 /* */
842 /* Make sure chunk size is valid. These are arbitrary values; 64 because it seems */
843 /* a little silly to expect performance improvements on a 64x64 bit scale, and */
844 /* 4096 because we buffer one chunk, and a 16MB buffer seems a little large - it may be */
845 /* OK for one user, but for another to read it, they require the buffer. */
846 /* */
847 if (cs == 0)
848 {
849 cs = GD2_CHUNKSIZE;
850 }
851 else if (cs < GD2_CHUNKSIZE_MIN)
852 {
853 cs = GD2_CHUNKSIZE_MIN;
854 }
855 else if (cs > GD2_CHUNKSIZE_MAX)
856 {
857 cs = GD2_CHUNKSIZE_MAX;
858 };
859
860 /* Work out number of chunks. */
861 ncx = im->sx / cs + 1;
862 ncy = im->sy / cs + 1;
863
864 /* Write the standard header. */
865 _gd2PutHeader (im, out, cs, fmt, ncx, ncy);
866
867 if (gd2_compressed (fmt))
868 {
869 /* */
870 /* Work out size of buffer for compressed data, If CHUNKSIZE is large, */
871 /* then these will be large! */
872 /* */
873 /* The zlib notes say output buffer size should be (input size) * 1.01 * 12 */
874 /* - we'll use 1.02 to be paranoid. */
875 /* */
876 compMax = cs * bytesPerPixel * cs * 1.02 + 12;
877
878 /* */
879 /* Allocate the buffers. */
880 /* */
881 chunkData = gdCalloc (cs * bytesPerPixel * cs, 1);
882 if (!chunkData) {
883 goto fail;
884 }
885 compData = gdCalloc (compMax, 1);
886 if (!compData) {
887 goto fail;
888 }
889
890 /* */
891 /* Save the file position of chunk index, and allocate enough space for */
892 /* each chunk_info block . */
893 /* */
894 idxPos = gdTell (out);
895 idxSize = ncx * ncy * sizeof (t_chunk_info);
896 GD2_DBG (printf ("Index size is %d\n", idxSize));
897 gdSeek (out, idxPos + idxSize);
898
899 chunkIdx = gdCalloc (idxSize * sizeof (t_chunk_info), 1);
900 if (!chunkIdx) {
901 goto fail;
902 }
903 };
904
905 _gdPutColors (im, out);
906
907 GD2_DBG (printf ("Size: %dx%d\n", im->sx, im->sy));
908 GD2_DBG (printf ("Chunks: %dx%d\n", ncx, ncy));
909
910 for (cy = 0; (cy < ncy); cy++)
911 {
912 for (cx = 0; (cx < ncx); cx++)
913 {
914
915 ylo = cy * cs;
916 yhi = ylo + cs;
917 if (yhi > im->sy)
918 {
919 yhi = im->sy;
920 };
921
922 GD2_DBG (printf
923 ("Processing Chunk (%dx%d), y from %d to %d\n", cx, cy,
924 ylo, yhi));
925 chunkLen = 0;
926 for (y = ylo; (y < yhi); y++)
927 {
928
929 /*GD2_DBG(printf("y=%d: ",y)); */
930
931 xlo = cx * cs;
932 xhi = xlo + cs;
933 if (xhi > im->sx)
934 {
935 xhi = im->sx;
936 };
937
938 if (gd2_compressed (fmt))
939 {
940 for (x = xlo; x < xhi; x++)
941 {
942 /* 2.0.11: use truecolor pixel array. TBB */
943 /*GD2_DBG(printf("%d...",x)); */
944 if (im->trueColor)
945 {
946 int p = im->tpixels[y][x];
947 chunkData[chunkLen++] = gdTrueColorGetAlpha (p);
948 chunkData[chunkLen++] = gdTrueColorGetRed (p);
949 chunkData[chunkLen++] = gdTrueColorGetGreen (p);
950 chunkData[chunkLen++] = gdTrueColorGetBlue (p);
951 }
952 else
953 {
954 int p = im->pixels[y][x];
955 chunkData[chunkLen++] = p;
956 }
957 };
958 }
959 else
960 {
961 for (x = xlo; x < xhi; x++)
962 {
963 /*GD2_DBG(printf("%d, ",x)); */
964
965 if (im->trueColor)
966 {
967 gdPutInt (im->tpixels[y][x], out);
968 }
969 else
970 {
971 gdPutC ((unsigned char) im->pixels[y][x], out);
972 }
973 };
974 };
975 /*GD2_DBG(printf("y=%d done.\n",y)); */
976 };
977 if (gd2_compressed (fmt))
978 {
979 compLen = compMax;
980 if (compress ((unsigned char *)
981 &compData[0], &compLen,
982 (unsigned char *) &chunkData[0],
983 chunkLen) != Z_OK)
984 {
985 printf ("Error from compressing\n");
986 }
987 else
988 {
989 chunkIdx[chunkNum].offset = gdTell (out);
990 chunkIdx[chunkNum++].size = compLen;
991 GD2_DBG (printf
992 ("Chunk %d size %d offset %d\n", chunkNum,
993 chunkIdx[chunkNum - 1].size,
994 chunkIdx[chunkNum - 1].offset));
995
996 if (gdPutBuf (compData, compLen, out) <= 0)
997 {
998 fprintf(stderr, "gd write error\n");
999 };
1000 };
1001 };
1002 };
1003 };
1004 if (gd2_compressed (fmt))
1005 {
1006 /* Save the position, write the index, restore position (paranoia). */
1007 GD2_DBG (printf ("Seeking %d to write index\n", idxPos));
1008 posSave = gdTell (out);
1009 gdSeek (out, idxPos);
1010 GD2_DBG (printf ("Writing index\n"));
1011 for (x = 0; x < chunkNum; x++)
1012 {
1013 GD2_DBG (printf
1014 ("Chunk %d size %d offset %d\n", x, chunkIdx[x].size,
1015 chunkIdx[x].offset));
1016 gdPutInt (chunkIdx[x].offset, out);
1017 gdPutInt (chunkIdx[x].size, out);
1018 };
1019 /* We don't use fwrite for *endian reasons. */
1020 /*fwrite(chunkIdx, sizeof(int)*2, chunkNum, out); */
1021 gdSeek (out, posSave);
1022 };
1023
1024 /*printf("Memory block size is %d\n",gdTell(out)); */
1025 fail:
1026 GD2_DBG (printf ("Freeing memory\n"));
1027
1028 if (chunkData) {
1029 gdFree (chunkData);
1030 }
1031 if (compData) {
1032 gdFree (compData);
1033 }
1034 if (chunkIdx) {
1035 gdFree (chunkIdx);
1036 }
1037 GD2_DBG (printf ("Done\n"));
1038
1039 }
1040
1041 BGD_DECLARE(void) gdImageGd2 (gdImagePtr im, FILE * outFile, int cs, int fmt)
1042 {
1043 gdIOCtx *out = gdNewFileCtx (outFile);
1044 _gdImageGd2 (im, out, cs, fmt);
1045 out->gd_free (out);
1046 }
1047
1048 BGD_DECLARE(void *) gdImageGd2Ptr (gdImagePtr im, int cs, int fmt, int *size)
1049 {
1050 void *rv;
1051 gdIOCtx *out = gdNewDynamicCtx (2048, NULL);
1052 _gdImageGd2 (im, out, cs, fmt);
1053 rv = gdDPExtractData (out, size);
1054 out->gd_free (out);
1055 return rv;
1056 }
1057
1058 #else /* no HAVE_LIBZ */
1059 BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2 (FILE * inFile)
1060 {
1061 fprintf (stderr, "GD2 support is not available - no libz\n");
1062 return NULL;
1063 }
1064
1065 BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2Ctx (gdIOCtxPtr in)
1066 {
1067 fprintf (stderr, "GD2 support is not available - no libz\n");
1068 return NULL;
1069 }
1070 #endif /* HAVE_LIBZ */
0 #include <stdio.h>
1 #include <math.h>
2 #include <string.h>
3 #include <stdlib.h>
4 #include "gd.h"
5
6 /* Used only when debugging GIF compression code */
7 /* #define DEBUGGING_ENVARS */
8
9 #ifdef DEBUGGING_ENVARS
10
11 static int verbose_set = 0;
12 static int verbose;
13 #define VERBOSE (verbose_set?verbose:set_verbose())
14
15 static int set_verbose(void)
16 {
17 verbose = !!getenv("GIF_VERBOSE");
18 verbose_set = 1;
19 return(verbose);
20 }
21
22 #else
23
24 #define VERBOSE 0
25
26 #endif
27
28
29 #define MAXCOLORMAPSIZE 256
30
31 #define TRUE 1
32 #define FALSE 0
33
34 #define CM_RED 0
35 #define CM_GREEN 1
36 #define CM_BLUE 2
37
38 #define MAX_LWZ_BITS 12
39
40 #define INTERLACE 0x40
41 #define LOCALCOLORMAP 0x80
42 #define BitSet(byte, bit) (((byte) & (bit)) == (bit))
43
44 #define ReadOK(file,buffer,len) (gdGetBuf(buffer, len, file) > 0)
45
46 #define LM_to_uint(a,b) (((b)<<8)|(a))
47
48 /* We may eventually want to use this information, but def it out for now */
49 #if 0
50 static struct {
51 unsigned int Width;
52 unsigned int Height;
53 unsigned char ColorMap[3][MAXCOLORMAPSIZE];
54 unsigned int BitPixel;
55 unsigned int ColorResolution;
56 unsigned int Background;
57 unsigned int AspectRatio;
58 } GifScreen;
59 #endif
60
61 #if 0
62 static struct {
63 int transparent;
64 int delayTime;
65 int inputFlag;
66 int disposal;
67 } Gif89 = { -1, -1, -1, 0 };
68 #endif
69
70 #define STACK_SIZE ((1<<(MAX_LWZ_BITS))*2)
71
72 typedef struct {
73 unsigned char buf[280];
74 int curbit, lastbit, done, last_byte;
75 } CODE_STATIC_DATA;
76
77 typedef struct {
78 int fresh;
79 int code_size, set_code_size;
80 int max_code, max_code_size;
81 int firstcode, oldcode;
82 int clear_code, end_code;
83 int table[2][(1<< MAX_LWZ_BITS)];
84 int stack[STACK_SIZE], *sp;
85 CODE_STATIC_DATA scd;
86 } LZW_STATIC_DATA;
87
88 static int ReadColorMap (gdIOCtx *fd, int number, unsigned char (*buffer)[256]);
89 static int DoExtension (gdIOCtx *fd, int label, int *Transparent, int *ZeroDataBlockP);
90 static int GetDataBlock (gdIOCtx *fd, unsigned char *buf, int *ZeroDataBlockP);
91 static int GetCode (gdIOCtx *fd, CODE_STATIC_DATA *scd, int code_size, int flag, int *ZeroDataBlockP);
92 static int LWZReadByte (gdIOCtx *fd, LZW_STATIC_DATA *sd, char flag, int input_code_size, int *ZeroDataBlockP);
93
94 static void ReadImage (gdImagePtr im, gdIOCtx *fd, int len, int height, unsigned char (*cmap)[256], int interlace, int *ZeroDataBlockP); /*1.4//, int ignore); */
95
96 BGD_DECLARE(gdImagePtr) gdImageCreateFromGif(FILE *fdFile)
97 {
98 gdIOCtx *fd = gdNewFileCtx(fdFile);
99 gdImagePtr im = 0;
100
101 im = gdImageCreateFromGifCtx(fd);
102
103 fd->gd_free(fd);
104
105 return im;
106 }
107
108 BGD_DECLARE(gdImagePtr) gdImageCreateFromGifPtr (int size, void *data)
109 {
110 gdImagePtr im;
111 gdIOCtx *in = gdNewDynamicCtxEx (size, data, 0);
112 im = gdImageCreateFromGifCtx (in);
113 in->gd_free (in);
114 return im;
115 }
116
117 BGD_DECLARE(gdImagePtr) gdImageCreateFromGifCtx(gdIOCtxPtr fd)
118 {
119 int BitPixel;
120 #if 0
121 int ColorResolution;
122 int Background;
123 int AspectRatio;
124 #endif
125 int Transparent = (-1);
126 unsigned char buf[16];
127 unsigned char c;
128 unsigned char ColorMap[3][MAXCOLORMAPSIZE];
129 unsigned char localColorMap[3][MAXCOLORMAPSIZE];
130 int imw, imh, screen_width, screen_height;
131 int gif87a, useGlobalColormap;
132 int bitPixel;
133 int i;
134 /*1.4//int imageCount = 0; */
135 /* 2.0.28: threadsafe storage */
136 int ZeroDataBlock = FALSE;
137 int haveGlobalColormap;
138
139 gdImagePtr im = 0;
140 if (! ReadOK(fd,buf,6)) {
141 return 0;
142 }
143 if (strncmp((char *)buf,"GIF",3) != 0) {
144 return 0;
145 }
146 if (memcmp((char *)buf+3, "87a", 3) == 0) {
147 gif87a = 1;
148 } else if (memcmp((char *)buf+3, "89a", 3) == 0) {
149 gif87a = 0;
150 } else {
151 return 0;
152 }
153
154 if (! ReadOK(fd,buf,7)) {
155 return 0;
156 }
157
158 BitPixel = 2<<(buf[4]&0x07);
159 #if 0
160 ColorResolution = (int) (((buf[4]&0x70)>>3)+1);
161 Background = buf[5];
162 AspectRatio = buf[6];
163 #endif
164 screen_width = imw = LM_to_uint(buf[0],buf[1]);
165 screen_height = imh = LM_to_uint(buf[2],buf[3]);
166
167 haveGlobalColormap = BitSet(buf[4], LOCALCOLORMAP); /* Global Colormap */
168 if (haveGlobalColormap) {
169 if (ReadColorMap(fd, BitPixel, ColorMap)) {
170 return 0;
171 }
172 }
173 for (;;) {
174 int top, left;
175 int width, height;
176
177 if (! ReadOK(fd,&c,1)) {
178 return 0;
179 }
180 if (c == ';') { /* GIF terminator */
181 goto terminated;
182 }
183
184 if (c == '!') { /* Extension */
185 if (! ReadOK(fd,&c,1)) {
186 return 0;
187 }
188 DoExtension(fd, c, &Transparent, &ZeroDataBlock);
189 continue;
190 }
191
192 if (c != ',') { /* Not a valid start character */
193 continue;
194 }
195
196 /*1.4//++imageCount; */
197
198 if (! ReadOK(fd,buf,9)) {
199 return 0;
200 }
201
202 useGlobalColormap = ! BitSet(buf[8], LOCALCOLORMAP);
203
204 bitPixel = 1<<((buf[8]&0x07)+1);
205 left = LM_to_uint(buf[0], buf[1]);
206 top = LM_to_uint(buf[2], buf[3]);
207 width = LM_to_uint(buf[4], buf[5]);
208 height = LM_to_uint(buf[6], buf[7]);
209
210 if (left + width > screen_width || top + height > screen_height) {
211 if (VERBOSE) {
212 printf("Frame is not confined to screen dimension.\n");
213 }
214 return 0;
215 }
216
217 if (!(im = gdImageCreate(width, height))) {
218 return 0;
219 }
220 im->interlace = BitSet(buf[8], INTERLACE);
221 if (!useGlobalColormap) {
222 if (ReadColorMap(fd, bitPixel, localColorMap)) {
223 gdImageDestroy(im);
224 return 0;
225 }
226 ReadImage(im, fd, width, height, localColorMap,
227 BitSet(buf[8], INTERLACE), &ZeroDataBlock);
228 } else {
229 if (!haveGlobalColormap) {
230 gdImageDestroy(im);
231 return 0;
232 }
233 ReadImage(im, fd, width, height,
234 ColorMap,
235 BitSet(buf[8], INTERLACE), &ZeroDataBlock);
236 }
237 if (Transparent != (-1)) {
238 gdImageColorTransparent(im, Transparent);
239 }
240 goto terminated;
241 }
242
243 terminated:
244 /* Terminator before any image was declared! */
245 if (!im) {
246 return 0;
247 }
248 if (!im->colorsTotal) {
249 gdImageDestroy(im);
250 return 0;
251 }
252 /* Check for open colors at the end, so
253 we can reduce colorsTotal and ultimately
254 BitsPerPixel */
255 for (i=((im->colorsTotal-1)); (i>=0); i--) {
256 if (im->open[i]) {
257 im->colorsTotal--;
258 } else {
259 break;
260 }
261 }
262 return im;
263 }
264
265 static int
266 ReadColorMap(gdIOCtx *fd, int number, unsigned char (*buffer)[256])
267 {
268 int i;
269 unsigned char rgb[3];
270
271
272 for (i = 0; i < number; ++i) {
273 if (! ReadOK(fd, rgb, sizeof(rgb))) {
274 return TRUE;
275 }
276 buffer[CM_RED][i] = rgb[0] ;
277 buffer[CM_GREEN][i] = rgb[1] ;
278 buffer[CM_BLUE][i] = rgb[2] ;
279 }
280
281
282 return FALSE;
283 }
284
285 static int
286 DoExtension(gdIOCtx *fd, int label, int *Transparent, int *ZeroDataBlockP)
287 {
288 unsigned char buf[256];
289
290 switch (label) {
291 case 0xf9: /* Graphic Control Extension */
292 memset(buf, 0, 4); /* initialize a few bytes in the case the next function fails */
293 (void) GetDataBlock(fd, (unsigned char*) buf, ZeroDataBlockP);
294 #if 0
295 Gif89.disposal = (buf[0] >> 2) & 0x7;
296 Gif89.inputFlag = (buf[0] >> 1) & 0x1;
297 Gif89.delayTime = LM_to_uint(buf[1],buf[2]);
298 #endif
299 if ((buf[0] & 0x1) != 0)
300 *Transparent = buf[3];
301
302 while (GetDataBlock(fd, (unsigned char*) buf, ZeroDataBlockP) > 0);
303 return FALSE;
304 default:
305 break;
306 }
307 while (GetDataBlock(fd, (unsigned char*) buf, ZeroDataBlockP) > 0)
308 ;
309
310 return FALSE;
311 }
312
313 static int
314 GetDataBlock_(gdIOCtx *fd, unsigned char *buf, int *ZeroDataBlockP)
315 {
316 unsigned char count;
317
318 if (! ReadOK(fd,&count,1)) {
319 return -1;
320 }
321
322 *ZeroDataBlockP = count == 0;
323
324 if ((count != 0) && (! ReadOK(fd, buf, count))) {
325 return -1;
326 }
327
328 return count;
329 }
330
331 static int
332 GetDataBlock(gdIOCtx *fd, unsigned char *buf, int *ZeroDataBlockP)
333 {
334 int rv;
335 int i;
336
337 rv = GetDataBlock_(fd,buf, ZeroDataBlockP);
338 if (VERBOSE)
339 { printf("[GetDataBlock returning %d",rv);
340 if (rv > 0)
341 { printf(":");
342 for (i=0;i<rv;i++) printf(" %02x",buf[i]);
343 }
344 printf("]\n");
345 }
346 return(rv);
347 }
348
349 static int
350 GetCode_(gdIOCtx *fd, CODE_STATIC_DATA *scd, int code_size, int flag, int *ZeroDataBlockP)
351 {
352 int i, j, ret;
353 unsigned char count;
354
355 if (flag) {
356 scd->curbit = 0;
357 scd->lastbit = 0;
358 scd->last_byte = 0;
359 scd->done = FALSE;
360 return 0;
361 }
362
363 if ( (scd->curbit + code_size) >= scd->lastbit) {
364 if (scd->done) {
365 if (scd->curbit >= scd->lastbit) {
366 /* Oh well */
367 }
368 return -1;
369 }
370 scd->buf[0] = scd->buf[scd->last_byte-2];
371 scd->buf[1] = scd->buf[scd->last_byte-1];
372
373 if ((count = GetDataBlock(fd, &scd->buf[2], ZeroDataBlockP)) <= 0)
374 scd->done = TRUE;
375
376 scd->last_byte = 2 + count;
377 scd->curbit = (scd->curbit - scd->lastbit) + 16;
378 scd->lastbit = (2+count)*8 ;
379 }
380
381 ret = 0;
382 for (i = scd->curbit, j = 0; j < code_size; ++i, ++j)
383 ret |= ((scd->buf[ i / 8 ] & (1 << (i % 8))) != 0) << j;
384
385 scd->curbit += code_size;
386 return ret;
387 }
388
389 static int
390 GetCode(gdIOCtx *fd, CODE_STATIC_DATA *scd, int code_size, int flag, int *ZeroDataBlockP)
391 {
392 int rv;
393
394 rv = GetCode_(fd, scd, code_size,flag, ZeroDataBlockP);
395 if (VERBOSE) printf("[GetCode(,%d,%d) returning %d]\n",code_size,flag,rv);
396 return(rv);
397 }
398
399 static int
400 LWZReadByte_(gdIOCtx *fd, LZW_STATIC_DATA *sd, char flag, int input_code_size, int *ZeroDataBlockP)
401 {
402 int code, incode, i;
403
404 if (flag) {
405 sd->set_code_size = input_code_size;
406 sd->code_size = sd->set_code_size+1;
407 sd->clear_code = 1 << sd->set_code_size ;
408 sd->end_code = sd->clear_code + 1;
409 sd->max_code_size = 2*sd->clear_code;
410 sd->max_code = sd->clear_code+2;
411
412 GetCode(fd, &sd->scd, 0, TRUE, ZeroDataBlockP);
413
414 sd->fresh = TRUE;
415
416 for (i = 0; i < sd->clear_code; ++i) {
417 sd->table[0][i] = 0;
418 sd->table[1][i] = i;
419 }
420 for (; i < (1<<MAX_LWZ_BITS); ++i)
421 sd->table[0][i] = sd->table[1][0] = 0;
422
423 sd->sp = sd->stack;
424
425 return 0;
426 } else if (sd->fresh) {
427 sd->fresh = FALSE;
428 do {
429 sd->firstcode = sd->oldcode =
430 GetCode(fd, &sd->scd, sd->code_size, FALSE, ZeroDataBlockP);
431 } while (sd->firstcode == sd->clear_code);
432 return sd->firstcode;
433 }
434
435 if (sd->sp > sd->stack)
436 return *--sd->sp;
437
438 while ((code = GetCode(fd, &sd->scd, sd->code_size, FALSE, ZeroDataBlockP)) >= 0) {
439 if (code == sd->clear_code) {
440 for (i = 0; i < sd->clear_code; ++i) {
441 sd->table[0][i] = 0;
442 sd->table[1][i] = i;
443 }
444 for (; i < (1<<MAX_LWZ_BITS); ++i)
445 sd->table[0][i] = sd->table[1][i] = 0;
446 sd->code_size = sd->set_code_size+1;
447 sd->max_code_size = 2*sd->clear_code;
448 sd->max_code = sd->clear_code+2;
449 sd->sp = sd->stack;
450 sd->firstcode = sd->oldcode =
451 GetCode(fd, &sd->scd, sd->code_size, FALSE, ZeroDataBlockP);
452 return sd->firstcode;
453 } else if (code == sd->end_code) {
454 int count;
455 unsigned char buf[260];
456
457 if (*ZeroDataBlockP)
458 return -2;
459
460 while ((count = GetDataBlock(fd, buf, ZeroDataBlockP)) > 0)
461 ;
462
463 if (count != 0)
464 return -2;
465 }
466
467 incode = code;
468
469 if (sd->sp == (sd->stack + STACK_SIZE)) {
470 /* Bad compressed data stream */
471 return -1;
472 }
473
474 if (code >= sd->max_code) {
475 *sd->sp++ = sd->firstcode;
476 code = sd->oldcode;
477 }
478
479 while (code >= sd->clear_code) {
480 if (sd->sp == (sd->stack + STACK_SIZE)) {
481 /* Bad compressed data stream */
482 return -1;
483 }
484 *sd->sp++ = sd->table[1][code];
485 if (code == sd->table[0][code]) {
486 /* Oh well */
487 }
488 code = sd->table[0][code];
489 }
490
491 *sd->sp++ = sd->firstcode = sd->table[1][code];
492
493 if ((code = sd->max_code) <(1<<MAX_LWZ_BITS)) {
494 sd->table[0][code] = sd->oldcode;
495 sd->table[1][code] = sd->firstcode;
496 ++sd->max_code;
497 if ((sd->max_code >= sd->max_code_size) &&
498 (sd->max_code_size < (1<<MAX_LWZ_BITS))) {
499 sd->max_code_size *= 2;
500 ++sd->code_size;
501 }
502 }
503
504 sd->oldcode = incode;
505
506 if (sd->sp > sd->stack)
507 return *--sd->sp;
508 }
509 return code;
510 }
511
512 static int
513 LWZReadByte(gdIOCtx *fd, LZW_STATIC_DATA *sd, char flag, int input_code_size, int *ZeroDataBlockP)
514 {
515 int rv;
516
517 rv = LWZReadByte_(fd, sd, flag, input_code_size, ZeroDataBlockP);
518 if (VERBOSE) printf("[LWZReadByte(,%d,%d) returning %d]\n",flag,input_code_size,rv);
519 return(rv);
520 }
521
522 static void
523 ReadImage(gdImagePtr im, gdIOCtx *fd, int len, int height, unsigned char (*cmap)[256], int interlace, int *ZeroDataBlockP) /*1.4//, int ignore) */
524 {
525 unsigned char c;
526 int v;
527 int xpos = 0, ypos = 0, pass = 0;
528 int i;
529 LZW_STATIC_DATA sd;
530
531 /*
532 ** Initialize the Compression routines
533 */
534 if (! ReadOK(fd,&c,1)) {
535 return;
536 }
537
538 if (c > MAX_LWZ_BITS) {
539 return;
540 }
541
542 /* Stash the color map into the image */
543 for (i=0; (i<gdMaxColors); i++) {
544 im->red[i] = cmap[CM_RED][i];
545 im->green[i] = cmap[CM_GREEN][i];
546 im->blue[i] = cmap[CM_BLUE][i];
547 im->open[i] = 1;
548 }
549 /* Many (perhaps most) of these colors will remain marked open. */
550 im->colorsTotal = gdMaxColors;
551 if (LWZReadByte(fd, &sd, TRUE, c, ZeroDataBlockP) < 0) {
552 return;
553 }
554
555 /*
556 ** If this is an "uninteresting picture" ignore it.
557 ** REMOVED For 1.4
558 */
559 /*if (ignore) { */
560 /* while (LWZReadByte(fd, &sd, FALSE, c) >= 0) */
561 /* ; */
562 /* return; */
563 /*} */
564
565 while ((v = LWZReadByte(fd, &sd, FALSE, c, ZeroDataBlockP)) >= 0 ) {
566 if (v >= gdMaxColors) {
567 v = 0;
568 }
569
570 /* This how we recognize which colors are actually used. */
571 if (im->open[v]) {
572 im->open[v] = 0;
573 }
574 gdImageSetPixel(im, xpos, ypos, v);
575 ++xpos;
576 if (xpos == len) {
577 xpos = 0;
578 if (interlace) {
579 switch (pass) {
580 case 0:
581 case 1:
582 ypos += 8; break;
583 case 2:
584 ypos += 4; break;
585 case 3:
586 ypos += 2; break;
587 }
588
589 if (ypos >= height) {
590 ++pass;
591 switch (pass) {
592 case 1:
593 ypos = 4; break;
594 case 2:
595 ypos = 2; break;
596 case 3:
597 ypos = 1; break;
598 default:
599 goto fini;
600 }
601 }
602 } else {
603 ++ypos;
604 }
605 }
606 if (ypos >= height)
607 break;
608 }
609
610 fini:
611 if (LWZReadByte(fd, &sd, FALSE, c, ZeroDataBlockP) >=0) {
612 /* Ignore extra */
613 }
614 }
615
616
0 #include <stdio.h>
1 #include <math.h>
2 #include <string.h>
3 #include <stdlib.h>
4 #include "gd.h"
5 #include "gdhelpers.h"
6
7 /* Code drawn from ppmtogif.c, from the pbmplus package
8 **
9 ** Based on GIFENCOD by David Rowley <mgardi@watdscu.waterloo.edu>. A
10 ** Lempel-Zim compression based on "compress".
11 **
12 ** Modified by Marcel Wijkstra <wijkstra@fwi.uva.nl>
13 **
14 ** Copyright (C) 1989 by Jef Poskanzer.
15 **
16 ** Permission to use, copy, modify, and distribute this software and its
17 ** documentation for any purpose and without fee is hereby granted, provided
18 ** that the above copyright notice appear in all copies and that both that
19 ** copyright notice and this permission notice appear in supporting
20 ** documentation. This software is provided "as is" without express or
21 ** implied warranty.
22 **
23 ** The Graphics Interchange Format(c) is the Copyright property of
24 ** CompuServe Incorporated. GIF(sm) is a Service Mark property of
25 ** CompuServe Incorporated.
26 */
27
28 /*
29 * a code_int must be able to hold 2**GIFBITS values of type int, and also -1
30 */
31 typedef int code_int;
32
33 #ifdef SIGNED_COMPARE_SLOW
34 typedef unsigned long int count_int;
35 typedef unsigned short int count_short;
36 #else /*SIGNED_COMPARE_SLOW*/
37 typedef long int count_int;
38 #endif /*SIGNED_COMPARE_SLOW*/
39
40 /* 2.0.28: threadsafe */
41
42 #define maxbits GIFBITS
43
44 /* should NEVER generate this code */
45 #define maxmaxcode ((code_int)1 << GIFBITS)
46
47 #define HSIZE 5003 /* 80% occupancy */
48 #define hsize HSIZE /* Apparently invariant, left over from
49 compress */
50
51 typedef struct {
52 int Width, Height;
53 int curx, cury;
54 long CountDown;
55 int Pass;
56 int Interlace;
57 int n_bits; /* number of bits/code */
58 code_int maxcode; /* maximum code, given n_bits */
59 count_int htab [HSIZE];
60 unsigned short codetab [HSIZE];
61 code_int free_ent; /* first unused entry */
62 /*
63 * block compression parameters -- after all codes are used up,
64 * and compression rate changes, start over.
65 */
66 int clear_flg;
67 int offset;
68 long int in_count; /* length of input */
69 long int out_count; /* # of codes output (for debugging) */
70
71 int g_init_bits;
72 gdIOCtx * g_outfile;
73
74 int ClearCode;
75 int EOFCode;
76 unsigned long cur_accum;
77 int cur_bits;
78 /*
79 * Number of characters so far in this 'packet'
80 */
81 int a_count;
82 /*
83 * Define the storage for the packet accumulator
84 */
85 char accum[ 256 ];
86 } GifCtx;
87
88 static int gifPutWord(int w, gdIOCtx *out);
89 static int colorstobpp(int colors);
90 static void BumpPixel (GifCtx *ctx);
91 static int GIFNextPixel (gdImagePtr im, GifCtx *ctx);
92 static void GIFEncode (gdIOCtxPtr fp, int GWidth, int GHeight, int GInterlace, int Background, int Transparent, int BitsPerPixel, int *Red, int *Green, int *Blue, gdImagePtr im);
93 static void GIFAnimEncode (gdIOCtxPtr fp, int IWidth, int IHeight, int LeftOfs, int TopOfs, int GInterlace, int Transparent, int Delay, int Disposal, int BitsPerPixel, int *Red, int *Green, int *Blue, gdImagePtr im);
94 static void compress (int init_bits, gdIOCtx *outfile, gdImagePtr im, GifCtx *ctx);
95 static void output (code_int code, GifCtx *ctx);
96 static void cl_block (GifCtx *ctx);
97 static void cl_hash (register count_int chsize, GifCtx *ctx);
98 static void char_init (GifCtx *ctx);
99 static void char_out (int c, GifCtx *ctx);
100 static void flush_char (GifCtx *ctx);
101 BGD_DECLARE(void *) gdImageGifPtr (gdImagePtr im, int *size)
102 {
103 void *rv;
104 gdIOCtx *out = gdNewDynamicCtx (2048, NULL);
105 gdImageGifCtx (im, out);
106 rv = gdDPExtractData (out, size);
107 out->gd_free (out);
108 return rv;
109 }
110
111 BGD_DECLARE(void) gdImageGif (gdImagePtr im, FILE * outFile)
112 {
113 gdIOCtx *out = gdNewFileCtx (outFile);
114 gdImageGifCtx (im, out);
115 out->gd_free (out);
116 }
117
118 BGD_DECLARE(void) gdImageGifCtx(gdImagePtr im, gdIOCtxPtr out)
119 {
120 gdImagePtr pim = 0, tim = im;
121 int interlace, transparent, BitsPerPixel;
122 interlace = im->interlace;
123 transparent = im->transparent;
124 if (im->trueColor) {
125 /* Expensive, but the only way that produces an
126 acceptable result: mix down to a palette
127 based temporary image. */
128 pim = gdImageCreatePaletteFromTrueColor(im, 1, 256);
129 if (!pim) {
130 return;
131 }
132 tim = pim;
133 }
134 BitsPerPixel = colorstobpp(tim->colorsTotal);
135 /* All set, let's do it. */
136 GIFEncode(
137 out, tim->sx, tim->sy, interlace, 0, tim->transparent, BitsPerPixel,
138 tim->red, tim->green, tim->blue, tim);
139 if (pim) {
140 /* Destroy palette based temporary image. */
141 gdImageDestroy( pim);
142 }
143 }
144
145 BGD_DECLARE(void *) gdImageGifAnimBeginPtr (gdImagePtr im, int *size, int GlobalCM, int Loops)
146 {
147 void *rv;
148 gdIOCtx *out = gdNewDynamicCtx (2048, NULL);
149 gdImageGifAnimBeginCtx(im, out, GlobalCM, Loops);
150 rv = gdDPExtractData (out, size);
151 out->gd_free (out);
152 return rv;
153 }
154
155 BGD_DECLARE(void) gdImageGifAnimBegin (gdImagePtr im, FILE *outFile, int GlobalCM, int Loops)
156 {
157 gdIOCtx *out = gdNewFileCtx (outFile);
158 gdImageGifAnimBeginCtx (im, out, GlobalCM, Loops);
159 out->gd_free (out);
160 }
161
162 BGD_DECLARE(void) gdImageGifAnimBeginCtx(gdImagePtr im, gdIOCtxPtr out, int GlobalCM, int Loops)
163 {
164 int B;
165 int RWidth, RHeight;
166 int Resolution;
167 int ColorMapSize;
168 int BitsPerPixel;
169 int Background = 0;
170 int i;
171
172 /* Default is to use global color map */
173 if (GlobalCM < 0) GlobalCM = 1;
174
175 BitsPerPixel = colorstobpp(im->colorsTotal);
176 ColorMapSize = 1 << BitsPerPixel;
177
178 RWidth = im->sx;
179 RHeight = im->sy;
180
181 Resolution = BitsPerPixel;
182
183 /*
184 * Write the Magic header
185 */
186 gdPutBuf("GIF89a", 6, out );
187
188 /*
189 * Write out the screen width and height
190 */
191 gifPutWord( RWidth, out );
192 gifPutWord( RHeight, out );
193
194 /*
195 * Indicate that there is a global colour map
196 */
197 B = GlobalCM ? 0x80 : 0;
198
199 /*
200 * OR in the resolution
201 */
202 B |= (Resolution - 1) << 5;
203
204 /*
205 * OR in the Bits per Pixel
206 */
207 B |= (BitsPerPixel - 1);
208
209 /*
210 * Write it out
211 */
212 gdPutC( B, out );
213
214 /*
215 * Write out the Background colour
216 */
217 gdPutC( Background, out );
218
219 /*
220 * Byte of 0's (future expansion)
221 */
222 gdPutC( 0, out );
223
224 /*
225 * Write out the Global Colour Map
226 */
227 if (GlobalCM)
228 for( i=0; i<ColorMapSize; ++i ) {
229 gdPutC( im->red[i], out );
230 gdPutC( im->green[i], out );
231 gdPutC( im->blue[i], out );
232 }
233
234 if (Loops >= 0) {
235 gdPutBuf( "!\377\13NETSCAPE2.0\3\1", 16, out );
236 gifPutWord( Loops, out );
237 gdPutC( 0, out );
238 }
239 }
240
241 BGD_DECLARE(void *) gdImageGifAnimAddPtr (gdImagePtr im, int *size, int LocalCM, int LeftOfs, int TopOfs, int Delay, int Disposal, gdImagePtr previm)
242 {
243 void *rv;
244 gdIOCtx *out = gdNewDynamicCtx (2048, NULL);
245 gdImageGifAnimAddCtx(im, out, LocalCM, LeftOfs, TopOfs, Delay, Disposal, previm);
246 rv = gdDPExtractData (out, size);
247 out->gd_free (out);
248 return rv;
249 }
250
251 BGD_DECLARE(void) gdImageGifAnimAdd (gdImagePtr im, FILE * outFile, int LocalCM, int LeftOfs, int TopOfs, int Delay, int Disposal, gdImagePtr previm)
252 {
253 gdIOCtx *out = gdNewFileCtx (outFile);
254 gdImageGifAnimAddCtx (im, out, LocalCM, LeftOfs, TopOfs, Delay, Disposal, previm);
255 out->gd_free (out);
256 }
257
258 static int
259 comparewithmap (gdImagePtr im1, gdImagePtr im2, int c1, int c2, int *colorMap)
260 {
261 if (!colorMap)
262 return c1 == c2;
263 if (-2 != colorMap[c1])
264 return colorMap[c1] == c2;
265 return (colorMap[c1] = gdImageColorExactAlpha (im2, im1->red[c1], im1->green[c1], im1->blue[c1], im1->alpha[c1]))
266 == c2;
267 }
268
269 BGD_DECLARE(void) gdImageGifAnimAddCtx(gdImagePtr im, gdIOCtxPtr out, int LocalCM, int LeftOfs, int TopOfs, int Delay, int Disposal, gdImagePtr previm)
270 {
271 gdImagePtr pim = 0, tim = im;
272 int interlace, transparent, BitsPerPixel;
273 interlace = im->interlace;
274 transparent = im->transparent;
275
276 /* Default is no local color map */
277 if (LocalCM < 0) LocalCM = 0;
278 if (im->trueColor) {
279 /* Expensive, but the only way that produces an
280 acceptable result: mix down to a palette
281 based temporary image. */
282 pim = gdImageCreatePaletteFromTrueColor(im, 1, 256);
283 if (!pim) {
284 return;
285 }
286 tim = pim;
287 }
288 if (previm) {
289 /* create optimized animation. Compare this image to
290 the previous image and crop the temporary copy of
291 current image to include only changed rectangular
292 area. Also replace unchanged pixels inside this
293 area with transparent color. Transparent color
294 needs to be already allocated!
295 Preconditions:
296 TopOfs, LeftOfs are assumed 0
297
298 Images should be of same size. If not, a temporary
299 copy is made with the same size as previous image.
300
301 */
302 gdImagePtr prev_pim = 0, prev_tim = previm;
303 int x, y;
304 int min_x = 0;
305 int min_y = tim->sy;
306 int max_x = 0;
307 int max_y = 0;
308 int colorMap[256];
309
310 if (previm->trueColor) {
311 prev_pim = gdImageCreatePaletteFromTrueColor(previm, 1, 256);
312 if (!prev_pim) {
313 return;
314 }
315 prev_tim = prev_pim;
316 }
317 for (x = 0; x < 256; ++x)
318 colorMap[x] = -2;
319
320 /* First find bounding box of changed areas. */
321 /* first find the top changed row */
322 for (y = 0; y < tim->sy; ++y)
323 for (x = 0; x < tim->sx; ++x)
324 if (!comparewithmap(prev_tim, tim,
325 prev_tim->pixels[y][x],
326 tim->pixels[y][x],
327 colorMap)) {
328 min_y = max_y = y;
329 min_x = max_x = x;
330 goto break_top;
331 }
332 break_top:
333 if (tim->sy == min_y) {
334 /* No changes in this frame!! Encode empty image. */
335 transparent = 0;
336 min_x = min_y = 1;
337 max_x = max_y = 0;
338 } else {
339 /* Then the bottom row */
340 for (y = tim->sy - 1; y > min_y; --y)
341 for (x = 0; x < tim->sx; ++x)
342 if (!comparewithmap
343 (prev_tim, tim,
344 prev_tim->pixels[y][x],
345 tim->pixels[y][x],
346 colorMap)) {
347 max_y = y;
348 if (x < min_x) min_x = x;
349 if (x > max_x) max_x = x;
350 goto break_bot;
351 }
352 break_bot:
353 /* left side */
354 for (x = 0; x < min_x; ++x)
355 for (y = min_y; y <= max_y; ++y)
356 if (!comparewithmap
357 (prev_tim, tim,
358 prev_tim->pixels[y][x],
359 tim->pixels[y][x],
360 colorMap)) {
361 min_x = x;
362 goto break_left;
363 }
364 break_left:
365 /* right side */
366 for (x = tim->sx-1; x > max_x; --x)
367 for (y = min_y; y <= max_y; ++y)
368 if (!comparewithmap
369 (prev_tim, tim,
370 prev_tim->pixels[y][x],
371 tim->pixels[y][x],
372 colorMap)) {
373 max_x = x;
374 goto break_right;
375 }
376 break_right:
377 ;
378 }
379
380 LeftOfs = min_x;
381 TopOfs = min_y;
382 Disposal = 1;
383
384 /* Make a copy of the image with the new offsets.
385 But only if necessary. */
386 if (min_x != 0 || max_x != tim->sx-1
387 || min_y != 0 || max_y != tim->sy-1
388 || transparent >= 0) {
389 gdImagePtr pim2
390 = gdImageCreate(max_x-min_x+1, max_y-min_y+1);
391 if (!pim2) {
392 if (prev_pim)
393 gdImageDestroy (prev_pim);
394 goto fail_end;
395 }
396 gdImagePaletteCopy (pim2, LocalCM ? tim : prev_tim);
397 gdImageCopy (pim2, tim, 0, 0, min_x, min_y,
398 max_x-min_x+1, max_y-min_y+1);
399 if (pim)
400 gdImageDestroy (pim);
401 tim = pim = pim2;
402 }
403
404 /* now let's compare pixels for transparent
405 optimization. But only if transparent is set. */
406 if (transparent >= 0) {
407 for (y = 0; y < tim->sy; ++y)
408 for (x = 0; x < tim->sx; ++x)
409 if (comparewithmap
410 (prev_tim, tim,
411 prev_tim->pixels[min_y+y][min_x+x],
412 tim->pixels[y][x], 0)) {
413 gdImageSetPixel (tim, x, y,
414 transparent);
415 break;
416 }
417 }
418 if (prev_pim)
419 gdImageDestroy (prev_pim);
420 }
421 BitsPerPixel = colorstobpp(tim->colorsTotal);
422 /* All set, let's do it. */
423 GIFAnimEncode(
424 out, tim->sx, tim->sy, LeftOfs, TopOfs, interlace, transparent,
425 Delay, Disposal, BitsPerPixel,
426 LocalCM ? tim->red : 0, tim->green, tim->blue, tim);
427 fail_end:
428 if (pim) {
429 /* Destroy palette based temporary image. */
430 gdImageDestroy( pim);
431 }
432 }
433
434 BGD_DECLARE(void) gdImageGifAnimEnd(FILE *outFile)
435 {
436 #if 1
437 putc (';', outFile);
438 #else
439 gdIOCtx *out = gdNewFileCtx (outFile);
440 gdImageGifAnimEndCtx (out);
441 out->gd_free (out);
442 #endif
443 }
444
445 BGD_DECLARE(void *) gdImageGifAnimEndPtr (int *size)
446 {
447 char *rv = (char *) gdMalloc (1);
448 if (!rv) {
449 return 0;
450 }
451 *rv = ';';
452 *size = 1;
453 return (void *)rv;
454 }
455
456 BGD_DECLARE(void) gdImageGifAnimEndCtx(gdIOCtx *out)
457 {
458 /*
459 * Write the GIF file terminator
460 */
461 gdPutC( ';', out );
462 }
463
464 static int
465 colorstobpp(int colors)
466 {
467 int bpp = 0;
468
469 if ( colors <= 2 )
470 bpp = 1;
471 else if ( colors <= 4 )
472 bpp = 2;
473 else if ( colors <= 8 )
474 bpp = 3;
475 else if ( colors <= 16 )
476 bpp = 4;
477 else if ( colors <= 32 )
478 bpp = 5;
479 else if ( colors <= 64 )
480 bpp = 6;
481 else if ( colors <= 128 )
482 bpp = 7;
483 else if ( colors <= 256 )
484 bpp = 8;
485 return bpp;
486 }
487
488 /*****************************************************************************
489 *
490 * GIFENCODE.C - GIF Image compression interface
491 *
492 * GIFEncode( FName, GHeight, GWidth, GInterlace, Background, Transparent,
493 * BitsPerPixel, Red, Green, Blue, gdImagePtr )
494 *
495 *****************************************************************************/
496
497 #define TRUE 1
498 #define FALSE 0
499 /*
500 * Bump the 'curx' and 'cury' to point to the next pixel
501 */
502 static void
503 BumpPixel(GifCtx *ctx)
504 {
505 /*
506 * Bump the current X position
507 */
508 ++(ctx->curx);
509
510 /*
511 * If we are at the end of a scan line, set curx back to the beginning
512 * If we are interlaced, bump the cury to the appropriate spot,
513 * otherwise, just increment it.
514 */
515 if( ctx->curx == ctx->Width ) {
516 ctx->curx = 0;
517
518 if( !ctx->Interlace )
519 ++(ctx->cury);
520 else {
521 switch( ctx->Pass ) {
522
523 case 0:
524 ctx->cury += 8;
525 if( ctx->cury >= ctx->Height ) {
526 ++(ctx->Pass);
527 ctx->cury = 4;
528 }
529 break;
530
531 case 1:
532 ctx->cury += 8;
533 if( ctx->cury >= ctx->Height ) {
534 ++(ctx->Pass);
535 ctx->cury = 2;
536 }
537 break;
538
539 case 2:
540 ctx->cury += 4;
541 if( ctx->cury >= ctx->Height ) {
542 ++(ctx->Pass);
543 ctx->cury = 1;
544 }
545 break;
546
547 case 3:
548 ctx->cury += 2;
549 break;
550 }
551 }
552 }
553 }
554
555 /*
556 * Return the next pixel from the image
557 */
558 static int
559 GIFNextPixel(gdImagePtr im, GifCtx *ctx)
560 {
561 int r;
562
563 if( ctx->CountDown == 0 )
564 return EOF;
565
566 --(ctx->CountDown);
567
568 r = gdImageGetPixel(im, ctx->curx, ctx->cury);
569
570 BumpPixel(ctx);
571
572 return r;
573 }
574
575 /* public */
576
577 static void
578 GIFEncode(gdIOCtxPtr fp, int GWidth, int GHeight, int GInterlace, int Background, int Transparent, int BitsPerPixel, int *Red, int *Green, int *Blue, gdImagePtr im)
579 {
580 int B;
581 int RWidth, RHeight;
582 int LeftOfs, TopOfs;
583 int Resolution;
584 int ColorMapSize;
585 int InitCodeSize;
586 int i;
587 GifCtx ctx;
588 ctx.Interlace = GInterlace;
589 ctx.in_count = 1;
590 memset(&ctx, 0, sizeof(ctx));
591 ColorMapSize = 1 << BitsPerPixel;
592
593 RWidth = ctx.Width = GWidth;
594 RHeight = ctx.Height = GHeight;
595 LeftOfs = TopOfs = 0;
596
597 Resolution = BitsPerPixel;
598
599 /*
600 * Calculate number of bits we are expecting
601 */
602 ctx.CountDown = (long)ctx.Width * (long)ctx.Height;
603
604 /*
605 * Indicate which pass we are on (if interlace)
606 */
607 ctx.Pass = 0;
608
609 /*
610 * The initial code size
611 */
612 if( BitsPerPixel <= 1 )
613 InitCodeSize = 2;
614 else
615 InitCodeSize = BitsPerPixel;
616
617 /*
618 * Set up the current x and y position
619 */
620 ctx.curx = ctx.cury = 0;
621
622 /*
623 * Write the Magic header
624 */
625 gdPutBuf(Transparent < 0 ? "GIF87a" : "GIF89a", 6, fp );
626
627 /*
628 * Write out the screen width and height
629 */
630 gifPutWord( RWidth, fp );
631 gifPutWord( RHeight, fp );
632
633 /*
634 * Indicate that there is a global colour map
635 */
636 B = 0x80; /* Yes, there is a color map */
637
638 /*
639 * OR in the resolution
640 */
641 B |= (Resolution - 1) << 5;
642
643 /*
644 * OR in the Bits per Pixel
645 */
646 B |= (BitsPerPixel - 1);
647
648 /*
649 * Write it out
650 */
651 gdPutC( B, fp );
652
653 /*
654 * Write out the Background colour
655 */
656 gdPutC( Background, fp );
657
658 /*
659 * Byte of 0's (future expansion)
660 */
661 gdPutC( 0, fp );
662
663 /*
664 * Write out the Global Colour Map
665 */
666 for( i=0; i<ColorMapSize; ++i ) {
667 gdPutC( Red[i], fp );
668 gdPutC( Green[i], fp );
669 gdPutC( Blue[i], fp );
670 }
671
672 /*
673 * Write out extension for transparent colour index, if necessary.
674 */
675 if ( Transparent >= 0 ) {
676 gdPutC( '!', fp );
677 gdPutC( 0xf9, fp );
678 gdPutC( 4, fp );
679 gdPutC( 1, fp );
680 gdPutC( 0, fp );
681 gdPutC( 0, fp );
682 gdPutC( (unsigned char) Transparent, fp );
683 gdPutC( 0, fp );
684 }
685
686 /*
687 * Write an Image separator
688 */
689 gdPutC( ',', fp );
690
691 /*
692 * Write the Image header
693 */
694
695 gifPutWord( LeftOfs, fp );
696 gifPutWord( TopOfs, fp );
697 gifPutWord( ctx.Width, fp );
698 gifPutWord( ctx.Height, fp );
699
700 /*
701 * Write out whether or not the image is interlaced
702 */
703 if( ctx.Interlace )
704 gdPutC( 0x40, fp );
705 else
706 gdPutC( 0x00, fp );
707
708 /*
709 * Write out the initial code size
710 */
711 gdPutC( InitCodeSize, fp );
712
713 /*
714 * Go and actually compress the data
715 */
716 compress( InitCodeSize+1, fp, im, &ctx );
717
718 /*
719 * Write out a Zero-length packet (to end the series)
720 */
721 gdPutC( 0, fp );
722
723 /*
724 * Write the GIF file terminator
725 */
726 gdPutC( ';', fp );
727 }
728
729 static void
730 GIFAnimEncode(gdIOCtxPtr fp, int IWidth, int IHeight, int LeftOfs, int TopOfs, int GInterlace, int Transparent, int Delay, int Disposal, int BitsPerPixel, int *Red, int *Green, int *Blue, gdImagePtr im)
731 {
732 int B;
733 int ColorMapSize;
734 int InitCodeSize;
735 int i;
736 GifCtx ctx;
737 ctx.Interlace = GInterlace;
738 ctx.in_count = 1;
739 memset(&ctx, 0, sizeof(ctx));
740 ColorMapSize = 1 << BitsPerPixel;
741
742 if (LeftOfs < 0) LeftOfs = 0;
743 if (TopOfs < 0) TopOfs = 0;
744 if (Delay < 0) Delay = 100;
745 if (Disposal < 0) Disposal = 1;
746
747 ctx.Width = IWidth;
748 ctx.Height = IHeight;
749
750 /*
751 * Calculate number of bits we are expecting
752 */
753 ctx.CountDown = (long)ctx.Width * (long)ctx.Height;
754
755 /*
756 * Indicate which pass we are on (if interlace)
757 */
758 ctx.Pass = 0;
759
760 /*
761 * The initial code size
762 */
763 if( BitsPerPixel <= 1 )
764 InitCodeSize = 2;
765 else
766 InitCodeSize = BitsPerPixel;
767
768 /*
769 * Set up the current x and y position
770 */
771 ctx.curx = ctx.cury = 0;
772
773 /*
774 * Write out extension for image animation and looping
775 */
776 gdPutC( '!', fp );
777 gdPutC( 0xf9, fp );
778 gdPutC( 4, fp );
779 gdPutC( (Transparent >= 0 ? 1 : 0)
780 | (Disposal << 2), fp );
781 gdPutC( (unsigned char)(Delay & 255), fp );
782 gdPutC( (unsigned char)((Delay >> 8) & 255), fp );
783 gdPutC( (unsigned char) Transparent, fp );
784 gdPutC( 0, fp );
785
786 /*
787 * Write an Image separator
788 */
789 gdPutC( ',', fp );
790
791 /*
792 * Write out the Image header
793 */
794 gifPutWord( LeftOfs, fp );
795 gifPutWord( TopOfs, fp );
796 gifPutWord( ctx.Width, fp );
797 gifPutWord( ctx.Height, fp );
798
799 /*
800 * Indicate that there is a local colour map
801 */
802 B = (Red && Green && Blue) ? 0x80 : 0;
803
804 /*
805 * OR in the interlacing
806 */
807 B |= ctx.Interlace ? 0x40 : 0;
808
809 /*
810 * OR in the Bits per Pixel
811 */
812 B |= (Red && Green && Blue) ? (BitsPerPixel - 1) : 0;
813
814 /*
815 * Write it out
816 */
817 gdPutC( B, fp );
818
819 /*
820 * Write out the Local Colour Map
821 */
822 if (Red && Green && Blue)
823 for( i=0; i<ColorMapSize; ++i ) {
824 gdPutC( Red[i], fp );
825 gdPutC( Green[i], fp );
826 gdPutC( Blue[i], fp );
827 }
828
829 /*
830 * Write out the initial code size
831 */
832 gdPutC( InitCodeSize, fp );
833
834 /*
835 * Go and actually compress the data
836 */
837 compress( InitCodeSize+1, fp, im, &ctx );
838
839 /*
840 * Write out a Zero-length packet (to end the series)
841 */
842 gdPutC( 0, fp );
843 }
844
845 /***************************************************************************
846 *
847 * GIFCOMPR.C - GIF Image compression routines
848 *
849 * Lempel-Ziv compression based on 'compress'. GIF modifications by
850 * David Rowley (mgardi@watdcsu.waterloo.edu)
851 *
852 ***************************************************************************/
853
854 /*
855 * General DEFINEs
856 */
857
858 #define GIFBITS 12
859
860 #ifdef NO_UCHAR
861 typedef char char_type;
862 #else /*NO_UCHAR*/
863 typedef unsigned char char_type;
864 #endif /*NO_UCHAR*/
865
866 /*
867 *
868 * GIF Image compression - modified 'compress'
869 *
870 * Based on: compress.c - File compression ala IEEE Computer, June 1984.
871 *
872 * By Authors: Spencer W. Thomas (decvax!harpo!utah-cs!utah-gr!thomas)
873 * Jim McKie (decvax!mcvax!jim)
874 * Steve Davies (decvax!vax135!petsd!peora!srd)
875 * Ken Turkowski (decvax!decwrl!turtlevax!ken)
876 * James A. Woods (decvax!ihnp4!ames!jaw)
877 * Joe Orost (decvax!vax135!petsd!joe)
878 *
879 */
880 #include <ctype.h>
881
882 #define ARGVAL() (*++(*argv) || (--argc && *++argv))
883
884 #ifdef COMPATIBLE /* But wrong! */
885 # define MAXCODE(n_bits) ((code_int) 1 << (n_bits) - 1)
886 #else /*COMPATIBLE*/
887 # define MAXCODE(n_bits) (((code_int) 1 << (n_bits)) - 1)
888 #endif /*COMPATIBLE*/
889
890 #define HashTabOf(i) ctx->htab[i]
891 #define CodeTabOf(i) ctx->codetab[i]
892
893
894 /*
895 * To save much memory, we overlay the table used by compress() with those
896 * used by decompress(). The tab_prefix table is the same size and type
897 * as the codetab. The tab_suffix table needs 2**GIFBITS characters. We
898 * get this from the beginning of htab. The output stack uses the rest
899 * of htab, and contains characters. There is plenty of room for any
900 * possible stack (stack used to be 8000 characters).
901 */
902
903 #define tab_prefixof(i) CodeTabOf(i)
904 #define tab_suffixof(i) ((char_type*)(htab))[i]
905 #define de_stack ((char_type*)&tab_suffixof((code_int)1<<GIFBITS))
906
907 /*
908 * compress stdin to stdout
909 *
910 * Algorithm: use open addressing double hashing (no chaining) on the
911 * prefix code / next character combination. We do a variant of Knuth's
912 * algorithm D (vol. 3, sec. 6.4) along with G. Knott's relatively-prime
913 * secondary probe. Here, the modular division first probe is gives way
914 * to a faster exclusive-or manipulation. Also do block compression with
915 * an adaptive reset, whereby the code table is cleared when the compression
916 * ratio decreases, but after the table fills. The variable-length output
917 * codes are re-sized at this point, and a special CLEAR code is generated
918 * for the decompressor. Late addition: construct the table according to
919 * file size for noticeable speed improvement on small files. Please direct
920 * questions about this implementation to ames!jaw.
921 */
922
923 static void
924 output(code_int code, GifCtx *ctx);
925
926 static void
927 compress(int init_bits, gdIOCtxPtr outfile, gdImagePtr im, GifCtx *ctx)
928 {
929 register long fcode;
930 register code_int i /* = 0 */;
931 register int c;
932 register code_int ent;
933 register code_int disp;
934 register code_int hsize_reg;
935 register int hshift;
936
937 /*
938 * Set up the globals: g_init_bits - initial number of bits
939 * g_outfile - pointer to output file
940 */
941 ctx->g_init_bits = init_bits;
942 ctx->g_outfile = outfile;
943
944 /*
945 * Set up the necessary values
946 */
947 ctx->offset = 0;
948 ctx->out_count = 0;
949 ctx->clear_flg = 0;
950 ctx->in_count = 1;
951 ctx->maxcode = MAXCODE(ctx->n_bits = ctx->g_init_bits);
952
953 ctx->ClearCode = (1 << (init_bits - 1));
954 ctx->EOFCode = ctx->ClearCode + 1;
955 ctx->free_ent = ctx->ClearCode + 2;
956
957 char_init(ctx);
958
959 ent = GIFNextPixel( im, ctx );
960
961 hshift = 0;
962 for ( fcode = (long) hsize; fcode < 65536L; fcode *= 2L )
963 ++hshift;
964 hshift = 8 - hshift; /* set hash code range bound */
965
966 hsize_reg = hsize;
967 cl_hash( (count_int) hsize_reg, ctx ); /* clear hash table */
968
969 output( (code_int)ctx->ClearCode, ctx );
970
971 #ifdef SIGNED_COMPARE_SLOW
972 while ( (c = GIFNextPixel( im )) != (unsigned) EOF ) {
973 #else /*SIGNED_COMPARE_SLOW*/
974 while ( (c = GIFNextPixel( im, ctx )) != EOF ) { /* } */
975 #endif /*SIGNED_COMPARE_SLOW*/
976
977 ++(ctx->in_count);
978
979 fcode = (long) (((long) c << maxbits) + ent);
980 i = (((code_int)c << hshift) ^ ent); /* xor hashing */
981
982 if ( HashTabOf (i) == fcode ) {
983 ent = CodeTabOf (i);
984 continue;
985 } else if ( (long)HashTabOf (i) < 0 ) /* empty slot */
986 goto nomatch;
987 disp = hsize_reg - i; /* secondary hash (after G. Knott) */
988 if ( i == 0 )
989 disp = 1;
990 probe:
991 if ( (i -= disp) < 0 )
992 i += hsize_reg;
993
994 if ( HashTabOf (i) == fcode ) {
995 ent = CodeTabOf (i);
996 continue;
997 }
998 if ( (long)HashTabOf (i) > 0 )
999 goto probe;
1000 nomatch:
1001 output ( (code_int) ent, ctx );
1002 ++(ctx->out_count);
1003 ent = c;
1004 #ifdef SIGNED_COMPARE_SLOW
1005 if ( (unsigned) ctx->free_ent < (unsigned) maxmaxcode) {
1006 #else /*SIGNED_COMPARE_SLOW*/
1007 if ( ctx->free_ent < maxmaxcode ) { /* } */
1008 #endif /*SIGNED_COMPARE_SLOW*/
1009 CodeTabOf (i) = ctx->free_ent++; /* code -> hashtable */
1010 HashTabOf (i) = fcode;
1011 } else
1012 cl_block(ctx);
1013 }
1014 /*
1015 * Put out the final code.
1016 */
1017 output( (code_int)ent, ctx );
1018 ++(ctx->out_count);
1019 output( (code_int) ctx->EOFCode, ctx );
1020 }
1021
1022 /*****************************************************************
1023 * TAG( output )
1024 *
1025 * Output the given code.
1026 * Inputs:
1027 * code: A n_bits-bit integer. If == -1, then EOF. This assumes
1028 * that n_bits =< (long)wordsize - 1.
1029 * Outputs:
1030 * Outputs code to the file.
1031 * Assumptions:
1032 * Chars are 8 bits long.
1033 * Algorithm:
1034 * Maintain a GIFBITS character long buffer (so that 8 codes will
1035 * fit in it exactly). Use the VAX insv instruction to insert each
1036 * code in turn. When the buffer fills up empty it and start over.
1037 */
1038
1039 static unsigned long masks[] = { 0x0000, 0x0001, 0x0003, 0x0007, 0x000F,
1040 0x001F, 0x003F, 0x007F, 0x00FF,
1041 0x01FF, 0x03FF, 0x07FF, 0x0FFF,
1042 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF };
1043
1044 static void
1045 output(code_int code, GifCtx *ctx)
1046 {
1047 ctx->cur_accum &= masks[ ctx->cur_bits ];
1048
1049 if( ctx->cur_bits > 0 )
1050 ctx->cur_accum |= ((long)code << ctx->cur_bits);
1051 else
1052 ctx->cur_accum = code;
1053
1054 ctx->cur_bits += ctx->n_bits;
1055
1056 while( ctx->cur_bits >= 8 ) {
1057 char_out( (unsigned int)(ctx->cur_accum & 0xff), ctx );
1058 ctx->cur_accum >>= 8;
1059 ctx->cur_bits -= 8;
1060 }
1061
1062 /*
1063 * If the next entry is going to be too big for the code size,
1064 * then increase it, if possible.
1065 */
1066 if ( ctx->free_ent > ctx->maxcode || ctx->clear_flg ) {
1067
1068 if( ctx->clear_flg ) {
1069
1070 ctx->maxcode = MAXCODE (ctx->n_bits = ctx->g_init_bits);
1071 ctx->clear_flg = 0;
1072
1073 } else {
1074
1075 ++(ctx->n_bits);
1076 if ( ctx->n_bits == maxbits )
1077 ctx->maxcode = maxmaxcode;
1078 else
1079 ctx->maxcode = MAXCODE(ctx->n_bits);
1080 }
1081 }
1082
1083 if( code == ctx->EOFCode ) {
1084 /*
1085 * At EOF, write the rest of the buffer.
1086 */
1087 while( ctx->cur_bits > 0 ) {
1088 char_out( (unsigned int)(ctx->cur_accum & 0xff), ctx);
1089 ctx->cur_accum >>= 8;
1090 ctx->cur_bits -= 8;
1091 }
1092
1093 flush_char(ctx);
1094
1095 }
1096 }
1097
1098 /*
1099 * Clear out the hash table
1100 */
1101 static void
1102 cl_block (GifCtx *ctx) /* table clear for block compress */
1103 {
1104
1105 cl_hash ( (count_int) hsize, ctx );
1106 ctx->free_ent = ctx->ClearCode + 2;
1107 ctx->clear_flg = 1;
1108
1109 output( (code_int)ctx->ClearCode, ctx);
1110 }
1111
1112 static void
1113 cl_hash(register count_int chsize, GifCtx *ctx) /* reset code table */
1114
1115 {
1116
1117 register count_int *htab_p = ctx->htab+chsize;
1118
1119 register long i;
1120 register long m1 = -1;
1121
1122 i = chsize - 16;
1123 do { /* might use Sys V memset(3) here */
1124 *(htab_p-16) = m1;
1125 *(htab_p-15) = m1;
1126 *(htab_p-14) = m1;
1127 *(htab_p-13) = m1;
1128 *(htab_p-12) = m1;
1129 *(htab_p-11) = m1;
1130 *(htab_p-10) = m1;
1131 *(htab_p-9) = m1;
1132 *(htab_p-8) = m1;
1133 *(htab_p-7) = m1;
1134 *(htab_p-6) = m1;
1135 *(htab_p-5) = m1;
1136 *(htab_p-4) = m1;
1137 *(htab_p-3) = m1;
1138 *(htab_p-2) = m1;
1139 *(htab_p-1) = m1;
1140 htab_p -= 16;
1141 } while ((i -= 16) >= 0);
1142
1143 for ( i += 16; i > 0; --i )
1144 *--htab_p = m1;
1145 }
1146
1147 /******************************************************************************
1148 *
1149 * GIF Specific routines
1150 *
1151 ******************************************************************************/
1152
1153 /*
1154 * Set up the 'byte output' routine
1155 */
1156 static void
1157 char_init(GifCtx *ctx)
1158 {
1159 ctx->a_count = 0;
1160 }
1161
1162 /*
1163 * Add a character to the end of the current packet, and if it is 254
1164 * characters, flush the packet to disk.
1165 */
1166 static void
1167 char_out(int c, GifCtx *ctx)
1168 {
1169 ctx->accum[ ctx->a_count++ ] = c;
1170 if( ctx->a_count >= 254 )
1171 flush_char(ctx);
1172 }
1173
1174 /*
1175 * Flush the packet to disk, and reset the accumulator
1176 */
1177 static void
1178 flush_char(GifCtx *ctx)
1179 {
1180 if( ctx->a_count > 0 ) {
1181 gdPutC( ctx->a_count, ctx->g_outfile );
1182 gdPutBuf( ctx->accum, ctx->a_count, ctx->g_outfile );
1183 ctx->a_count = 0;
1184 }
1185 }
1186
1187 static int gifPutWord(int w, gdIOCtx *out)
1188 {
1189 /* Byte order is little-endian */
1190 gdPutC(w & 0xFF, out);
1191 gdPutC((w >> 8) & 0xFF, out);
1192 return 0;
1193 }
1194
1195
0
1
2 /*
3 * io.c
4 *
5 * Implements the simple I/O 'helper' routines.
6 *
7 * Not really essential, but these routines were used extensively in GD,
8 * so they were moved here. They also make IOCtx calls look better...
9 *
10 * Written (or, at least, moved) 1999, Philip Warner.
11 *
12 */
13
14 #ifdef HAVE_CONFIG_H
15 #include "config.h"
16 #endif
17
18 #include <math.h>
19 #include <string.h>
20 #include <stdlib.h>
21 #include "gd.h"
22
23 /* Use this for commenting out debug-print statements. */
24 /* Just use the first '#define' to allow all the prints... */
25 /*#define IO_DBG(s) (s) */
26 #define IO_DBG(s)
27
28
29 /*
30 * Write out a word to the I/O context pointer
31 */
32 void
33 Putword (int w, gdIOCtx * ctx)
34 {
35 unsigned char buf[2];
36 buf[0] = w & 0xff;
37 buf[1] = (w / 256) & 0xff;
38 (ctx->putBuf) (ctx, (char *) buf, 2);
39 }
40
41 void
42 Putchar (int c, gdIOCtx * ctx)
43 {
44 (ctx->putC) (ctx, c & 0xff);
45 }
46
47 void
48 gdPutC (const unsigned char c, gdIOCtx * ctx)
49 {
50 (ctx->putC) (ctx, c);
51 }
52
53 void
54 gdPutWord (int w, gdIOCtx * ctx)
55 {
56 IO_DBG (printf ("Putting word...\n"));
57 (ctx->putC) (ctx, (unsigned char) (w >> 8));
58 (ctx->putC) (ctx, (unsigned char) (w & 0xFF));
59 IO_DBG (printf ("put.\n"));
60 }
61
62 void
63 gdPutInt (int w, gdIOCtx * ctx)
64 {
65 IO_DBG (printf ("Putting int...\n"));
66 (ctx->putC) (ctx, (unsigned char) (w >> 24));
67 (ctx->putC) (ctx, (unsigned char) ((w >> 16) & 0xFF));
68 (ctx->putC) (ctx, (unsigned char) ((w >> 8) & 0xFF));
69 (ctx->putC) (ctx, (unsigned char) (w & 0xFF));
70 IO_DBG (printf ("put.\n"));
71 }
72
73 int
74 gdGetC (gdIOCtx * ctx)
75 {
76 return ((ctx->getC) (ctx));
77 }
78
79
80
81 int
82 gdGetByte (int *result, gdIOCtx * ctx)
83 {
84 int r;
85 r = (ctx->getC) (ctx);
86 if (r == EOF)
87 {
88 return 0;
89 }
90 *result = r;
91 return 1;
92 }
93
94 int
95 gdGetWord (int *result, gdIOCtx * ctx)
96 {
97 int r;
98 r = (ctx->getC) (ctx);
99 if (r == EOF)
100 {
101 return 0;
102 }
103 *result = r << 8;
104 r = (ctx->getC) (ctx);
105 if (r == EOF)
106 {
107 return 0;
108 }
109 *result += r;
110 return 1;
111 }
112
113
114 int
115 gdGetInt (int *result, gdIOCtx * ctx)
116 {
117 int r;
118 r = (ctx->getC) (ctx);
119 if (r == EOF)
120 {
121 return 0;
122 }
123 *result = r << 24;
124
125 r = (ctx->getC) (ctx);
126 if (r == EOF)
127 {
128 return 0;
129 }
130 *result += r << 16;
131
132 r = (ctx->getC) (ctx);
133 if (r == EOF)
134 {
135 return 0;
136 }
137 *result += r << 8;
138
139 r = (ctx->getC) (ctx);
140 if (r == EOF)
141 {
142 return 0;
143 }
144 *result += r;
145
146 return 1;
147 }
148
149 int
150 gdPutBuf (const void *buf, int size, gdIOCtx * ctx)
151 {
152 IO_DBG (printf ("Putting buf...\n"));
153 return (ctx->putBuf) (ctx, buf, size);
154 IO_DBG (printf ("put.\n"));
155 }
156
157 int
158 gdGetBuf (void *buf, int size, gdIOCtx * ctx)
159 {
160 return (ctx->getBuf) (ctx, buf, size);
161 }
162
163
164 int
165 gdSeek (gdIOCtx * ctx, const int pos)
166 {
167 IO_DBG (printf ("Seeking...\n"));
168 return ((ctx->seek) (ctx, pos));
169 IO_DBG (printf ("Done.\n"));
170 }
171
172 long
173 gdTell (gdIOCtx * ctx)
174 {
175 IO_DBG (printf ("Telling...\n"));
176 return ((ctx->tell) (ctx));
177 IO_DBG (printf ("told.\n"));
178 }
0 #ifdef __cplusplus
1 extern "C" {
2 #endif
3
4 #ifndef GD_IO_H
5 #define GD_IO_H 1
6
7 #include <stdio.h>
8
9 #ifdef VMS
10 #define Putchar gdPutchar
11 #endif
12
13 typedef struct gdIOCtx
14 {
15 int (*getC) (struct gdIOCtx *);
16 int (*getBuf) (struct gdIOCtx *, void *, int);
17
18 void (*putC) (struct gdIOCtx *, int);
19 int (*putBuf) (struct gdIOCtx *, const void *, int);
20
21 /* seek must return 1 on SUCCESS, 0 on FAILURE. Unlike fseek! */
22 int (*seek) (struct gdIOCtx *, const int);
23
24 long (*tell) (struct gdIOCtx *);
25
26 void (*gd_free) (struct gdIOCtx *);
27
28 }
29 gdIOCtx;
30
31 typedef struct gdIOCtx *gdIOCtxPtr;
32
33 void Putword (int w, gdIOCtx * ctx);
34 void Putchar (int c, gdIOCtx * ctx);
35
36 void gdPutC (const unsigned char c, gdIOCtx * ctx);
37 int gdPutBuf (const void *, int, gdIOCtx *);
38 void gdPutWord (int w, gdIOCtx * ctx);
39 void gdPutInt (int w, gdIOCtx * ctx);
40
41 int gdGetC (gdIOCtx * ctx);
42 int gdGetBuf (void *, int, gdIOCtx *);
43 int gdGetByte (int *result, gdIOCtx * ctx);
44 int gdGetWord (int *result, gdIOCtx * ctx);
45 int gdGetInt (int *result, gdIOCtx * ctx);
46
47 int gdSeek (gdIOCtx * ctx, const int offset);
48 long gdTell (gdIOCtx * ctx);
49
50 #endif
51
52 #ifdef __cplusplus
53 }
54 #endif
0 /*
1 * io_dp.c
2 *
3 * Implements the dynamic pointer interface.
4 *
5 * Based on GD.pm code by Lincoln Stein for interfacing to libgd.
6 * Added support for reading as well as support for 'tell' and 'seek'.
7 *
8 * As will all I/O modules, most functions are for local use only (called
9 * via function pointers in the I/O context).
10 *
11 * gdDPExtractData is the exception to this: it will return the pointer to
12 * the internal data, and reset the internal storage.
13 *
14 * Written/Modified 1999, Philip Warner.
15 *
16 */
17
18 #ifdef HAVE_CONFIG_H
19 #include "config.h"
20 #endif
21
22 #include <math.h>
23 #include <string.h>
24 #include <stdlib.h>
25 #include "gd.h"
26 #include "gdhelpers.h"
27
28 #define TRUE 1
29 #define FALSE 0
30
31 /* this is used for creating images in main memory */
32 typedef struct dpStruct
33 {
34 void *data;
35 int logicalSize;
36 int realSize;
37 int dataGood;
38 int pos;
39 int freeOK;
40 }
41 dynamicPtr;
42
43 typedef struct dpIOCtx
44 {
45 gdIOCtx ctx;
46 dynamicPtr *dp;
47 }
48 dpIOCtx;
49
50 typedef struct dpIOCtx *dpIOCtxPtr;
51
52
53 /* these functions operate on in-memory dynamic pointers */
54 static int allocDynamic (dynamicPtr * dp, int initialSize, void *data);
55 static int appendDynamic (dynamicPtr * dp, const void *src, int size);
56 static int gdReallocDynamic (dynamicPtr * dp, int required);
57 static int trimDynamic (dynamicPtr * dp);
58 static void gdFreeDynamicCtx (struct gdIOCtx *ctx);
59 static dynamicPtr *newDynamic (int initialSize, void *data, int freeOKFlag);
60
61 static int dynamicPutbuf (struct gdIOCtx *, const void *, int);
62 static void dynamicPutchar (struct gdIOCtx *, int a);
63
64 static int dynamicGetbuf (gdIOCtxPtr ctx, void *buf, int len);
65 static int dynamicGetchar (gdIOCtxPtr ctx);
66
67 static int dynamicSeek (struct gdIOCtx *, const int);
68 static long dynamicTell (struct gdIOCtx *);
69
70 /* return data as a dynamic pointer */
71 BGD_DECLARE(gdIOCtx *) gdNewDynamicCtx (int initialSize, void *data)
72 {
73 /* 2.0.23: Phil Moore: 'return' keyword was missing! */
74 return gdNewDynamicCtxEx (initialSize, data, 1);
75 }
76
77 BGD_DECLARE(gdIOCtx *) gdNewDynamicCtxEx (int initialSize, void *data, int freeOKFlag)
78 {
79 dpIOCtx *ctx;
80 dynamicPtr *dp;
81
82 ctx = (dpIOCtx *) gdMalloc (sizeof (dpIOCtx));
83 if (ctx == NULL)
84 {
85 return NULL;
86 }
87
88 dp = newDynamic (initialSize, data, freeOKFlag);
89 if (!dp)
90 {
91 gdFree (ctx);
92 return NULL;
93 };
94
95 ctx->dp = dp;
96
97 ctx->ctx.getC = dynamicGetchar;
98 ctx->ctx.putC = dynamicPutchar;
99
100 ctx->ctx.getBuf = dynamicGetbuf;
101 ctx->ctx.putBuf = dynamicPutbuf;
102
103 ctx->ctx.seek = dynamicSeek;
104 ctx->ctx.tell = dynamicTell;
105
106 ctx->ctx.gd_free = gdFreeDynamicCtx;
107
108 return (gdIOCtx *) ctx;
109 }
110
111 BGD_DECLARE(void *) gdDPExtractData (struct gdIOCtx *ctx, int *size)
112 {
113 dynamicPtr *dp;
114 dpIOCtx *dctx;
115 void *data;
116
117 dctx = (dpIOCtx *) ctx;
118 dp = dctx->dp;
119
120 /* clean up the data block and return it */
121 if (dp->dataGood)
122 {
123 trimDynamic (dp);
124 *size = dp->logicalSize;
125 data = dp->data;
126 }
127 else
128 {
129 *size = 0;
130 data = NULL;
131 /* 2.0.21: never free memory we don't own */
132 if ((dp->data != NULL) && (dp->freeOK))
133 {
134 gdFree (dp->data);
135 }
136 }
137
138 dp->data = NULL;
139 dp->realSize = 0;
140 dp->logicalSize = 0;
141
142 return data;
143 }
144
145 static void
146 gdFreeDynamicCtx (struct gdIOCtx *ctx)
147 {
148 dynamicPtr *dp;
149 dpIOCtx *dctx;
150
151 dctx = (dpIOCtx *) ctx;
152 dp = dctx->dp;
153
154 gdFree (ctx);
155
156 /* clean up the data block and return it */
157 /* 2.0.21: never free memory we don't own */
158 if ((dp->data != NULL) && (dp->freeOK))
159 {
160 gdFree (dp->data);
161 dp->data = NULL;
162 }
163
164 dp->realSize = 0;
165 dp->logicalSize = 0;
166
167 gdFree (dp);
168
169 }
170
171 static long
172 dynamicTell (struct gdIOCtx *ctx)
173 {
174 dpIOCtx *dctx;
175
176 dctx = (dpIOCtx *) ctx;
177 return (dctx->dp->pos);
178 }
179
180 static int
181 dynamicSeek (struct gdIOCtx *ctx, const int pos)
182 {
183 int bytesNeeded;
184 dynamicPtr *dp;
185 dpIOCtx *dctx;
186
187 dctx = (dpIOCtx *) ctx;
188 dp = dctx->dp;
189
190 if (!dp->dataGood)
191 return FALSE;
192
193 bytesNeeded = pos;
194 if (bytesNeeded > dp->realSize)
195 {
196 /* 2.0.21 */
197 if (!dp->freeOK)
198 {
199 return FALSE;
200 }
201 if (overflow2(dp->realSize, 2)) {
202 return FALSE;
203 }
204 if (!gdReallocDynamic (dp, dp->realSize * 2))
205 {
206 dp->dataGood = FALSE;
207 return FALSE;
208 }
209 }
210
211 /* if we get here, we can be sure that we have enough bytes
212 to copy safely */
213
214 /* Extend the logical size if we seek beyond EOF. */
215 if (pos > dp->logicalSize)
216 {
217 dp->logicalSize = pos;
218 };
219
220 dp->pos = pos;
221
222 return TRUE;
223 }
224
225 /* return data as a dynamic pointer */
226 static dynamicPtr *
227 newDynamic (int initialSize, void *data, int freeOKFlag)
228 {
229 dynamicPtr *dp;
230 dp = (dynamicPtr *) gdMalloc (sizeof (dynamicPtr));
231 if (dp == NULL)
232 {
233 return NULL;
234 }
235
236 if (!allocDynamic (dp, initialSize, data))
237 return NULL;
238
239 dp->pos = 0;
240 dp->freeOK = freeOKFlag;
241 return dp;
242 }
243
244 static int
245 dynamicPutbuf (struct gdIOCtx *ctx, const void *buf, int size)
246 {
247 dpIOCtx *dctx;
248 dctx = (dpIOCtx *) ctx;
249
250 appendDynamic (dctx->dp, buf, size);
251
252 if (dctx->dp->dataGood)
253 {
254 return size;
255 }
256 else
257 {
258 return -1;
259 };
260
261 }
262
263 static void
264 dynamicPutchar (struct gdIOCtx *ctx, int a)
265 {
266 unsigned char b;
267 dpIOCtxPtr dctx;
268
269 b = a;
270 dctx = (dpIOCtxPtr) ctx;
271
272 appendDynamic (dctx->dp, &b, 1);
273 }
274
275 static int
276 dynamicGetbuf (gdIOCtxPtr ctx, void *buf, int len)
277 {
278 int rlen, remain;
279 dpIOCtxPtr dctx;
280 dynamicPtr *dp;
281
282 dctx = (dpIOCtxPtr) ctx;
283 dp = dctx->dp;
284
285 remain = dp->logicalSize - dp->pos;
286 if (remain >= len)
287 {
288 rlen = len;
289 }
290 else
291 {
292 if (remain == 0)
293 {
294 /* 2.0.34: EOF is incorrect. We use 0 for
295 errors and EOF, just like fileGetbuf,
296 which is a simple fread() wrapper.
297 TBB. Original bug report: Daniel Cowgill. */
298 return 0; /* NOT EOF */
299 }
300 rlen = remain;
301 }
302
303 memcpy (buf, (void *) ((char *) dp->data + dp->pos), rlen);
304 dp->pos += rlen;
305
306 return rlen;
307 }
308
309 static int
310 dynamicGetchar (gdIOCtxPtr ctx)
311 {
312 unsigned char b;
313 int rv;
314
315 rv = dynamicGetbuf (ctx, &b, 1);
316
317 if (rv != 1)
318 {
319 return EOF;
320 }
321 else
322 {
323 return b; /* (b & 0xff); */
324 }
325 }
326
327 /* *********************************************************************
328
329 * InitDynamic - Return a dynamically resizable void*
330 *
331 * *********************************************************************
332 */
333 static int
334 allocDynamic (dynamicPtr * dp, int initialSize, void *data)
335 {
336
337 if (data == NULL)
338 {
339 dp->logicalSize = 0;
340 dp->dataGood = FALSE;
341 dp->data = gdMalloc (initialSize);
342 }
343 else
344 {
345 dp->logicalSize = initialSize;
346 dp->dataGood = TRUE;
347 dp->data = data;
348 }
349
350 if (dp->data != NULL)
351 {
352 dp->realSize = initialSize;
353 dp->dataGood = TRUE;
354 dp->pos = 0;
355 return TRUE;
356 }
357 else
358 {
359 dp->realSize = 0;
360 return FALSE;
361 }
362 }
363
364 /* append bytes to the end of a dynamic pointer */
365 static int
366 appendDynamic (dynamicPtr * dp, const void *src, int size)
367 {
368 int bytesNeeded;
369 char *tmp;
370
371 if (!dp->dataGood)
372 return FALSE;
373
374 /* bytesNeeded = dp->logicalSize + size; */
375 bytesNeeded = dp->pos + size;
376
377 if (bytesNeeded > dp->realSize)
378 {
379 /* 2.0.21 */
380 if (!dp->freeOK)
381 {
382 return FALSE;
383 }
384 if (overflow2(dp->realSize, 2)) {
385 return FALSE;
386 }
387 if (!gdReallocDynamic (dp, bytesNeeded * 2))
388 {
389 dp->dataGood = FALSE;
390 return FALSE;
391 }
392 }
393
394 /* if we get here, we can be sure that we have enough bytes
395 to copy safely */
396 /*printf("Mem OK Size: %d, Pos: %d\n", dp->realSize, dp->pos); */
397
398 tmp = (char *) dp->data;
399 memcpy ((void *) (tmp + (dp->pos)), src, size);
400 dp->pos += size;
401
402 if (dp->pos > dp->logicalSize)
403 {
404 dp->logicalSize = dp->pos;
405 };
406
407 return TRUE;
408 }
409
410 /* grow (or shrink) dynamic pointer */
411 static int
412 gdReallocDynamic (dynamicPtr * dp, int required)
413 {
414 void *newPtr;
415
416 /* First try gdRealloc(). If that doesn't work, make a new
417 memory block and copy. */
418 if ((newPtr = gdRealloc (dp->data, required)))
419 {
420 dp->realSize = required;
421 dp->data = newPtr;
422 return TRUE;
423 }
424
425 /* create a new pointer */
426 newPtr = gdMalloc (required);
427 if (!newPtr)
428 {
429 dp->dataGood = FALSE;
430 return FALSE;
431 }
432
433 /* copy the old data into it */
434 memcpy (newPtr, dp->data, dp->logicalSize);
435 gdFree (dp->data);
436 dp->data = newPtr;
437
438 dp->realSize = required;
439 return TRUE;
440 }
441
442 /* trim pointer so that its real and logical sizes match */
443 static int
444 trimDynamic (dynamicPtr * dp)
445 {
446 /* 2.0.21: we don't reallocate memory we don't own */
447 if (!dp->freeOK)
448 {
449 return TRUE;
450 }
451 return gdReallocDynamic (dp, dp->logicalSize);
452 }
0
1 /*
2 * io_file.c
3 *
4 * Implements the file interface.
5 *
6 * As will all I/O modules, most functions are for local use only (called
7 * via function pointers in the I/O context).
8 *
9 * Most functions are just 'wrappers' for standard file functions.
10 *
11 * Written/Modified 1999, Philip Warner.
12 *
13 */
14
15 #ifdef HAVE_CONFIG_H
16 #include "config.h"
17 #endif
18
19 /* For platforms with incomplete ANSI defines. Fortunately,
20 SEEK_SET is defined to be zero by the standard. */
21
22 #ifndef SEEK_SET
23 #define SEEK_SET 0
24 #endif /* SEEK_SET */
25
26 #include <math.h>
27 #include <string.h>
28 #include <stdlib.h>
29 #include "gd.h"
30 #include "gdhelpers.h"
31
32 /* this is used for creating images in main memory */
33
34 typedef struct fileIOCtx
35 {
36 gdIOCtx ctx;
37 FILE *f;
38 }
39 fileIOCtx;
40
41 gdIOCtx *newFileCtx (FILE * f);
42
43 static int fileGetbuf (gdIOCtx *, void *, int);
44 static int filePutbuf (gdIOCtx *, const void *, int);
45 static void filePutchar (gdIOCtx *, int);
46 static int fileGetchar (gdIOCtx * ctx);
47
48 static int fileSeek (struct gdIOCtx *, const int);
49 static long fileTell (struct gdIOCtx *);
50 static void gdFreeFileCtx (gdIOCtx * ctx);
51
52 /* return data as a dynamic pointer */
53 BGD_DECLARE(gdIOCtx *) gdNewFileCtx (FILE * f)
54 {
55 fileIOCtx *ctx;
56
57 ctx = (fileIOCtx *) gdMalloc (sizeof (fileIOCtx));
58 if (ctx == NULL)
59 {
60 return NULL;
61 }
62
63 ctx->f = f;
64
65 ctx->ctx.getC = fileGetchar;
66 ctx->ctx.putC = filePutchar;
67
68 ctx->ctx.getBuf = fileGetbuf;
69 ctx->ctx.putBuf = filePutbuf;
70
71 ctx->ctx.tell = fileTell;
72 ctx->ctx.seek = fileSeek;
73
74 ctx->ctx.gd_free = gdFreeFileCtx;
75
76 return (gdIOCtx *) ctx;
77 }
78
79 static void
80 gdFreeFileCtx (gdIOCtx * ctx)
81 {
82 gdFree (ctx);
83 }
84
85
86 static int
87 filePutbuf (gdIOCtx * ctx, const void *buf, int size)
88 {
89 fileIOCtx *fctx;
90 fctx = (fileIOCtx *) ctx;
91
92 return fwrite (buf, 1, size, fctx->f);
93
94 }
95
96 static int
97 fileGetbuf (gdIOCtx * ctx, void *buf, int size)
98 {
99 fileIOCtx *fctx;
100 fctx = (fileIOCtx *) ctx;
101
102 return (fread (buf, 1, size, fctx->f));
103
104 }
105
106 static void
107 filePutchar (gdIOCtx * ctx, int a)
108 {
109 unsigned char b;
110 fileIOCtx *fctx;
111 fctx = (fileIOCtx *) ctx;
112
113 b = a;
114
115 putc (b, fctx->f);
116 }
117
118 static int
119 fileGetchar (gdIOCtx * ctx)
120 {
121 fileIOCtx *fctx;
122 fctx = (fileIOCtx *) ctx;
123
124 return getc (fctx->f);
125 }
126
127
128 static int
129 fileSeek (struct gdIOCtx *ctx, const int pos)
130 {
131 fileIOCtx *fctx;
132 fctx = (fileIOCtx *) ctx;
133 return (fseek (fctx->f, pos, SEEK_SET) == 0);
134 }
135
136 static long
137 fileTell (struct gdIOCtx *ctx)
138 {
139 fileIOCtx *fctx;
140 fctx = (fileIOCtx *) ctx;
141
142 return ftell (fctx->f);
143 }
0
1 /*
2 * io_ss.c
3 *
4 * Implements the Source/Sink interface.
5 *
6 * As will all I/O modules, most functions are for local use only (called
7 * via function pointers in the I/O context).
8 *
9 * The Source/Sink model is the primary 'user' interface for alternate data
10 * sources; the IOCtx interface is intended (at least in version 1.5) to be
11 * used internally until it settles down a bit.
12 *
13 * This module just layers the Source/Sink interface on top of the IOCtx; no
14 * support is provided for tell/seek, so GD2 writing is not possible, and
15 * retrieving parts of GD2 files is also not possible.
16 *
17 * A new SS context does not need to be created with both a Source and a Sink.
18 *
19 * Written/Modified 1999, Philip Warner.
20 *
21 */
22
23 #ifdef HAVE_CONFIG_H
24 #include "config.h"
25 #endif
26
27 #include <math.h>
28 #include <string.h>
29 #include <stdlib.h>
30 #include "gd.h"
31 #include "gdhelpers.h"
32
33 /* this is used for creating images in main memory */
34
35 typedef struct ssIOCtx
36 {
37 gdIOCtx ctx;
38 gdSourcePtr src;
39 gdSinkPtr snk;
40 }
41 ssIOCtx;
42
43 typedef struct ssIOCtx *ssIOCtxPtr;
44
45 static int sourceGetbuf (gdIOCtx *, void *, int);
46 static int sourceGetchar (gdIOCtx * ctx);
47 static int sinkPutbuf (gdIOCtx * ctx, const void *buf, int size);
48 static void sinkPutchar (gdIOCtx * ctx, int a);
49 static void gdFreeSsCtx (gdIOCtx * ctx);
50
51 /* return data as a dynamic pointer */
52 BGD_DECLARE(gdIOCtx *) gdNewSSCtx (gdSourcePtr src, gdSinkPtr snk)
53 {
54 ssIOCtxPtr ctx;
55
56 ctx = (ssIOCtxPtr) gdMalloc (sizeof (ssIOCtx));
57 if (ctx == NULL)
58 {
59 return NULL;
60 }
61
62 ctx->src = src;
63 ctx->snk = snk;
64
65 ctx->ctx.getC = sourceGetchar;
66 ctx->ctx.getBuf = sourceGetbuf;
67
68 ctx->ctx.putC = sinkPutchar;
69 ctx->ctx.putBuf = sinkPutbuf;
70
71 ctx->ctx.tell = NULL;
72 ctx->ctx.seek = NULL;
73
74 ctx->ctx.gd_free = gdFreeSsCtx;
75
76 return (gdIOCtx *) ctx;
77 }
78
79 static void
80 gdFreeSsCtx (gdIOCtx * ctx)
81 {
82 gdFree (ctx);
83 }
84
85
86 static int
87 sourceGetbuf (gdIOCtx * ctx, void *buf, int size)
88 {
89 ssIOCtx *lctx;
90 int res;
91
92 lctx = (ssIOCtx *) ctx;
93
94 res = ((lctx->src->source) (lctx->src->context, buf, size));
95
96 /*
97 ** Translate the return values from the Source object:
98 ** 0 is EOF, -1 is error
99 */
100
101 if (res == 0)
102 {
103 return 0;
104 }
105 else if (res < 0)
106 {
107 return 0;
108 }
109 else
110 {
111 return res;
112 };
113
114 }
115
116 static int
117 sourceGetchar (gdIOCtx * ctx)
118 {
119 int res;
120 unsigned char buf;
121
122 res = sourceGetbuf (ctx, &buf, 1);
123
124 if (res == 1)
125 {
126 return buf;
127 }
128 else
129 {
130 return EOF;
131 };
132
133 }
134
135 static int
136 sinkPutbuf (gdIOCtx * ctx, const void *buf, int size)
137 {
138 ssIOCtxPtr lctx;
139 int res;
140
141 lctx = (ssIOCtx *) ctx;
142
143 res = (lctx->snk->sink) (lctx->snk->context, buf, size);
144
145 if (res <= 0)
146 {
147 return 0;
148 }
149 else
150 {
151 return res;
152 };
153
154 }
155
156 static void
157 sinkPutchar (gdIOCtx * ctx, int a)
158 {
159 unsigned char b;
160
161 b = a;
162 sinkPutbuf (ctx, &b, 1);
163
164 }
0 /*
1 * gd_jpeg.c: Read and write JPEG (JFIF) format image files using the
2 * gd graphics library (http://www.libgd.org).
3 *
4 * This software is based in part on the work of the Independent JPEG
5 * Group. For more information on the IJG JPEG software (and JPEG
6 * documentation, etc.), see ftp://ftp.uu.net/graphics/jpeg/.
7 *
8 * NOTE: IJG 12-bit JSAMPLE (BITS_IN_JSAMPLE == 12) mode is not
9 * supported at all on read in gd 2.0, and is not supported on write
10 * except for palette images, which is sort of pointless (TBB). Even that
11 * has never been tested according to DB.
12 *
13 * Copyright 2000 Doug Becker, mailto:thebeckers@home.com
14 *
15 * Modification 4/18/00 TBB: JPEG_DEBUG rather than just DEBUG,
16 * so VC++ builds don't spew to standard output, causing
17 * major CGI brain damage
18 *
19 * 2.0.10: more efficient gdImageCreateFromJpegCtx, thanks to
20 * Christian Aberger
21 */
22
23 #ifdef HAVE_CONFIG_H
24 #include "config.h"
25 #endif
26
27 #include <stdio.h>
28 #include <stdlib.h>
29 #include <setjmp.h>
30 #include <limits.h>
31 #include <string.h>
32
33 #include "gd.h"
34 /* TBB: move this up so include files are not brought in */
35 /* JCE: arrange HAVE_LIBJPEG so that it can be set in gd.h */
36 #ifdef HAVE_LIBJPEG
37 #include "gdhelpers.h"
38
39 /* JCE undef two symbols that we don't need anymore but which are
40 may be defined in config.h from ./configure but which are
41 redefined incompatibly in jpeglib.h */
42 #undef HAVE_STDDEF_H
43 #undef HAVE_STDLIB_H
44
45 /* 1.8.1: remove dependency on jinclude.h */
46 #include "jpeglib.h"
47 #include "jerror.h"
48
49 static const char *const GD_JPEG_VERSION = "1.0";
50
51 typedef struct _jmpbuf_wrapper
52 {
53 jmp_buf jmpbuf;
54 }
55 jmpbuf_wrapper;
56
57 /* Called by the IJG JPEG library upon encountering a fatal error */
58 static void
59 fatal_jpeg_error (j_common_ptr cinfo)
60 {
61 jmpbuf_wrapper *jmpbufw;
62
63 fprintf (stderr, "gd-jpeg: JPEG library reports unrecoverable error: ");
64 (*cinfo->err->output_message) (cinfo);
65 fflush (stderr);
66
67 jmpbufw = (jmpbuf_wrapper *) cinfo->client_data;
68 jpeg_destroy (cinfo);
69
70 if (jmpbufw != 0)
71 {
72 longjmp (jmpbufw->jmpbuf, 1);
73 fprintf (stderr, "gd-jpeg: EXTREMELY fatal error: longjmp"
74 " returned control; terminating\n");
75 }
76 else
77 {
78 fprintf (stderr, "gd-jpeg: EXTREMELY fatal error: jmpbuf"
79 " unrecoverable; terminating\n");
80 }
81
82 fflush (stderr);
83 exit (99);
84 }
85
86 /*
87 * Write IM to OUTFILE as a JFIF-formatted JPEG image, using quality
88 * QUALITY. If QUALITY is in the range 0-100, increasing values
89 * represent higher quality but also larger image size. If QUALITY is
90 * negative, the IJG JPEG library's default quality is used (which
91 * should be near optimal for many applications). See the IJG JPEG
92 * library documentation for more details. */
93
94 BGD_DECLARE(void) gdImageJpeg (gdImagePtr im, FILE * outFile, int quality)
95 {
96 gdIOCtx *out = gdNewFileCtx (outFile);
97 gdImageJpegCtx (im, out, quality);
98 out->gd_free (out);
99 }
100
101 BGD_DECLARE(void *) gdImageJpegPtr (gdImagePtr im, int *size, int quality)
102 {
103 void *rv;
104 gdIOCtx *out = gdNewDynamicCtx (2048, NULL);
105 gdImageJpegCtx (im, out, quality);
106 rv = gdDPExtractData (out, size);
107 out->gd_free (out);
108 return rv;
109 }
110
111 void jpeg_gdIOCtx_dest (j_compress_ptr cinfo, gdIOCtx * outfile);
112
113 BGD_DECLARE(void) gdImageJpegCtx (gdImagePtr im, gdIOCtx * outfile, int quality)
114 {
115 struct jpeg_compress_struct cinfo;
116 struct jpeg_error_mgr jerr;
117 int i, j, jidx;
118 /* volatile so we can gdFree it on return from longjmp */
119 volatile JSAMPROW row = 0;
120 JSAMPROW rowptr[1];
121 jmpbuf_wrapper jmpbufw;
122 JDIMENSION nlines;
123 char comment[255];
124
125 #ifdef JPEG_DEBUG
126 printf ("gd-jpeg: gd JPEG version %s\n", GD_JPEG_VERSION);
127 printf ("gd-jpeg: JPEG library version %d, %d-bit sample values\n",
128 JPEG_LIB_VERSION, BITS_IN_JSAMPLE);
129 if (!im->trueColor)
130 {
131 for (i = 0; i < im->colorsTotal; i++)
132 {
133 if (!im->open[i])
134 printf ("gd-jpeg: gd colormap index %d: (%d, %d, %d)\n", i,
135 im->red[i], im->green[i], im->blue[i]);
136 }
137 }
138 #endif /* JPEG_DEBUG */
139
140 memset (&cinfo, 0, sizeof (cinfo));
141 memset (&jerr, 0, sizeof (jerr));
142
143 cinfo.err = jpeg_std_error (&jerr);
144 cinfo.client_data = &jmpbufw;
145 if (setjmp (jmpbufw.jmpbuf) != 0)
146 {
147 /* we're here courtesy of longjmp */
148 if (row)
149 gdFree (row);
150 return;
151 }
152
153 cinfo.err->error_exit = fatal_jpeg_error;
154
155 jpeg_create_compress (&cinfo);
156
157 cinfo.image_width = im->sx;
158 cinfo.image_height = im->sy;
159 cinfo.input_components = 3; /* # of color components per pixel */
160 cinfo.in_color_space = JCS_RGB; /* colorspace of input image */
161 jpeg_set_defaults (&cinfo);
162 if (quality >= 0)
163 jpeg_set_quality (&cinfo, quality, TRUE);
164
165 /* If user requests interlace, translate that to progressive JPEG */
166 if (gdImageGetInterlaced (im))
167 {
168 #ifdef JPEG_DEBUG
169 printf ("gd-jpeg: interlace set, outputting progressive"
170 " JPEG image\n");
171 #endif
172 jpeg_simple_progression (&cinfo);
173 }
174
175 jpeg_gdIOCtx_dest (&cinfo, outfile);
176
177 row = (JSAMPROW) gdCalloc (1, cinfo.image_width * cinfo.input_components
178 * sizeof (JSAMPLE));
179 if (row == 0)
180 {
181 fprintf (stderr, "gd-jpeg: error: unable to allocate JPEG row "
182 "structure: gdCalloc returns NULL\n");
183 jpeg_destroy_compress (&cinfo);
184 return;
185 }
186
187 rowptr[0] = row;
188
189 jpeg_start_compress (&cinfo, TRUE);
190
191 sprintf (comment, "CREATOR: gd-jpeg v%s (using IJG JPEG v%d),",
192 GD_JPEG_VERSION, JPEG_LIB_VERSION);
193 if (quality >= 0)
194 sprintf (comment + strlen (comment), " quality = %d\n", quality);
195 else
196 strcat (comment + strlen (comment), " default quality\n");
197 jpeg_write_marker (&cinfo, JPEG_COM, (unsigned char *) comment,
198 (unsigned int) strlen (comment));
199 if (im->trueColor)
200 {
201 #if BITS_IN_JSAMPLE == 12
202 fprintf (stderr,
203 "gd-jpeg: error: jpeg library was compiled for 12-bit\n"
204 "precision. This is mostly useless, because JPEGs on the web are\n"
205 "8-bit and such versions of the jpeg library won't read or write\n"
206 "them. GD doesn't support these unusual images. Edit your\n"
207 "jmorecfg.h file to specify the correct precision and completely\n"
208 "'make clean' and 'make install' libjpeg again. Sorry.\n");
209 goto error;
210 #endif /* BITS_IN_JSAMPLE == 12 */
211 for (i = 0; i < im->sy; i++)
212 {
213 for (jidx = 0, j = 0; j < im->sx; j++)
214 {
215 int val = im->tpixels[i][j];
216 row[jidx++] = gdTrueColorGetRed (val);
217 row[jidx++] = gdTrueColorGetGreen (val);
218 row[jidx++] = gdTrueColorGetBlue (val);
219 }
220
221 nlines = jpeg_write_scanlines (&cinfo, rowptr, 1);
222 if (nlines != 1)
223 fprintf (stderr, "gd_jpeg: warning: jpeg_write_scanlines"
224 " returns %u -- expected 1\n", nlines);
225 }
226 }
227 else
228 {
229 for (i = 0; i < im->sy; i++)
230 {
231 for (jidx = 0, j = 0; j < im->sx; j++)
232 {
233 int idx = im->pixels[i][j];
234
235 /*
236 * NB: Although gd RGB values are ints, their max value is
237 * 255 (see the documentation for gdImageColorAllocate())
238 * -- perfect for 8-bit JPEG encoding (which is the norm)
239 */
240 #if BITS_IN_JSAMPLE == 8
241 row[jidx++] = im->red[idx];
242 row[jidx++] = im->green[idx];
243 row[jidx++] = im->blue[idx];
244 #elif BITS_IN_JSAMPLE == 12
245 row[jidx++] = im->red[idx] << 4;
246 row[jidx++] = im->green[idx] << 4;
247 row[jidx++] = im->blue[idx] << 4;
248 #else
249 #error IJG JPEG library BITS_IN_JSAMPLE value must be 8 or 12
250 #endif
251 }
252
253 nlines = jpeg_write_scanlines (&cinfo, rowptr, 1);
254 if (nlines != 1)
255 fprintf (stderr, "gd_jpeg: warning: jpeg_write_scanlines"
256 " returns %u -- expected 1\n", nlines);
257 }
258 }
259 jpeg_finish_compress (&cinfo);
260 jpeg_destroy_compress (&cinfo);
261 gdFree (row);
262 }
263
264 BGD_DECLARE(gdImagePtr) gdImageCreateFromJpeg (FILE * inFile)
265 {
266 gdImagePtr im;
267 gdIOCtx *in = gdNewFileCtx (inFile);
268 im = gdImageCreateFromJpegCtx (in);
269 in->gd_free (in);
270 return im;
271 }
272
273 BGD_DECLARE(gdImagePtr) gdImageCreateFromJpegPtr (int size, void *data)
274 {
275 gdImagePtr im;
276 gdIOCtx *in = gdNewDynamicCtxEx (size, data, 0);
277 im = gdImageCreateFromJpegCtx (in);
278 in->gd_free (in);
279 return im;
280 }
281
282 void jpeg_gdIOCtx_src (j_decompress_ptr cinfo, gdIOCtx * infile);
283
284 static int CMYKToRGB (int c, int m, int y, int k, int inverted);
285
286 /*
287 * Create a gd-format image from the JPEG-format INFILE. Returns the
288 * image, or NULL upon error.
289 */
290 BGD_DECLARE(gdImagePtr) gdImageCreateFromJpegCtx (gdIOCtx * infile)
291 {
292 struct jpeg_decompress_struct cinfo;
293 struct jpeg_error_mgr jerr;
294 jmpbuf_wrapper jmpbufw;
295 /* volatile so we can gdFree them after longjmp */
296 volatile JSAMPROW row = 0;
297 volatile gdImagePtr im = 0;
298 JSAMPROW rowptr[1];
299 int i, j, retval;
300 JDIMENSION nrows;
301 int channels = 3;
302 int inverted = 0;
303 #ifdef JPEG_DEBUG
304 printf ("gd-jpeg: gd JPEG version %s\n", GD_JPEG_VERSION);
305 printf ("gd-jpeg: JPEG library version %d, %d-bit sample values\n",
306 JPEG_LIB_VERSION, BITS_IN_JSAMPLE);
307 #endif
308
309 memset (&cinfo, 0, sizeof (cinfo));
310 memset (&jerr, 0, sizeof (jerr));
311
312 cinfo.err = jpeg_std_error (&jerr);
313 cinfo.client_data = &jmpbufw;
314 if (setjmp (jmpbufw.jmpbuf) != 0)
315 {
316 /* we're here courtesy of longjmp */
317 if (row)
318 gdFree (row);
319 if (im)
320 gdImageDestroy (im);
321 return 0;
322 }
323
324 cinfo.err->error_exit = fatal_jpeg_error;
325
326 jpeg_create_decompress (&cinfo);
327
328 jpeg_gdIOCtx_src (&cinfo, infile);
329
330 /* 2.0.22: save the APP14 marker to check for Adobe Photoshop CMYK
331 files with inverted components. */
332 jpeg_save_markers (&cinfo, JPEG_APP0 + 14, 256);
333
334 retval = jpeg_read_header (&cinfo, TRUE);
335 if (retval != JPEG_HEADER_OK)
336 fprintf (stderr, "gd-jpeg: warning: jpeg_read_header returns"
337 " %d, expected %d\n", retval, JPEG_HEADER_OK);
338
339 if (cinfo.image_height > INT_MAX)
340 fprintf (stderr, "gd-jpeg: warning: JPEG image height (%u) is"
341 " greater than INT_MAX (%d) (and thus greater than"
342 " gd can handle)", cinfo.image_height, INT_MAX);
343
344 if (cinfo.image_width > INT_MAX)
345 fprintf (stderr, "gd-jpeg: warning: JPEG image width (%u) is"
346 " greater than INT_MAX (%d) (and thus greater than"
347 " gd can handle)\n", cinfo.image_width, INT_MAX);
348
349 im = gdImageCreateTrueColor ((int) cinfo.image_width,
350 (int) cinfo.image_height);
351 if (im == 0)
352 {
353 fprintf (stderr, "gd-jpeg error: cannot allocate gdImage" " struct\n");
354 goto error;
355 }
356 /* 2.0.22: very basic support for reading CMYK colorspace files. Nice for
357 thumbnails but there's no support for fussy adjustment of the
358 assumed properties of inks and paper. */
359 if ((cinfo.jpeg_color_space == JCS_CMYK) ||
360 (cinfo.jpeg_color_space == JCS_YCCK))
361 {
362 cinfo.out_color_space = JCS_CMYK;
363 }
364 else
365 {
366 cinfo.out_color_space = JCS_RGB;
367 }
368
369 if (jpeg_start_decompress (&cinfo) != TRUE)
370 fprintf (stderr, "gd-jpeg: warning: jpeg_start_decompress"
371 " reports suspended data source\n");
372
373 #ifdef JPEG_DEBUG
374 printf ("gd-jpeg: JPEG image information:");
375 if (cinfo.saw_JFIF_marker)
376 printf (" JFIF version %d.%.2d",
377 (int) cinfo.JFIF_major_version, (int) cinfo.JFIF_minor_version);
378 else if (cinfo.saw_Adobe_marker)
379 printf (" Adobe format");
380 else
381 printf (" UNKNOWN format");
382
383 printf (" %ux%u (raw) / %ux%u (scaled) %d-bit", cinfo.image_width,
384 cinfo.image_height, cinfo.output_width,
385 cinfo.output_height, cinfo.data_precision);
386 printf (" %s", (cinfo.progressive_mode ? "progressive" : "baseline"));
387 printf (" image, %d quantized colors, ", cinfo.actual_number_of_colors);
388
389 switch (cinfo.jpeg_color_space)
390 {
391 case JCS_GRAYSCALE:
392 printf ("grayscale");
393 break;
394
395 case JCS_RGB:
396 printf ("RGB");
397 break;
398
399 case JCS_YCbCr:
400 printf ("YCbCr (a.k.a. YUV)");
401 break;
402
403 case JCS_CMYK:
404 printf ("CMYK");
405 break;
406
407 case JCS_YCCK:
408 printf ("YCbCrK");
409 break;
410
411 default:
412 printf ("UNKNOWN (value: %d)", (int) cinfo.jpeg_color_space);
413 break;
414 }
415 printf (" colorspace\n");
416 fflush (stdout);
417 #endif /* JPEG_DEBUG */
418
419 /* REMOVED by TBB 2/12/01. This field of the structure is
420 documented as private, and sure enough it's gone in the
421 latest libjpeg, replaced by something else. Unfortunately
422 there is still no right way to find out if the file was
423 progressive or not; just declare your intent before you
424 write one by calling gdImageInterlace(im, 1) yourself.
425 After all, we're not really supposed to rework JPEGs and
426 write them out again anyway. Lossy compression, remember? */
427 #if 0
428 gdImageInterlace (im, cinfo.progressive_mode != 0);
429 #endif
430 if (cinfo.out_color_space == JCS_RGB)
431 {
432 if (cinfo.output_components != 3)
433 {
434 fprintf (stderr, "gd-jpeg: error: JPEG color quantization"
435 " request resulted in output_components == %d"
436 " (expected 3 for RGB)\n", cinfo.output_components);
437 goto error;
438 }
439 channels = 3;
440 }
441 else if (cinfo.out_color_space == JCS_CMYK)
442 {
443 jpeg_saved_marker_ptr marker;
444 if (cinfo.output_components != 4)
445 {
446 fprintf (stderr, "gd-jpeg: error: JPEG color quantization"
447 " request resulted in output_components == %d"
448 " (expected 4 for CMYK)\n", cinfo.output_components);
449 goto error;
450 }
451 channels = 4;
452 marker = cinfo.marker_list;
453 while (marker)
454 {
455 if ((marker->marker == (JPEG_APP0 + 14)) &&
456 (marker->data_length >= 12)
457 && (!strncmp ((const char *) marker->data, "Adobe", 5)))
458 {
459 inverted = 1;
460 break;
461 }
462 marker = marker->next;
463 }
464 }
465 else
466 {
467 fprintf (stderr, "gd-jpeg: error: unexpected colorspace\n");
468 goto error;
469 }
470 #if BITS_IN_JSAMPLE == 12
471 fprintf (stderr, "gd-jpeg: error: jpeg library was compiled for 12-bit\n"
472 "precision. This is mostly useless, because JPEGs on the web are\n"
473 "8-bit and such versions of the jpeg library won't read or write\n"
474 "them. GD doesn't support these unusual images. Edit your\n"
475 "jmorecfg.h file to specify the correct precision and completely\n"
476 "'make clean' and 'make install' libjpeg again. Sorry.\n");
477 goto error;
478 #endif /* BITS_IN_JSAMPLE == 12 */
479
480 row = gdCalloc (cinfo.output_width * channels, sizeof (JSAMPLE));
481 if (row == 0)
482 {
483 fprintf (stderr, "gd-jpeg: error: unable to allocate row for"
484 " JPEG scanline: gdCalloc returns NULL\n");
485 goto error;
486 }
487 rowptr[0] = row;
488 if (cinfo.out_color_space == JCS_CMYK)
489 {
490 for (i = 0; i < cinfo.output_height; i++)
491 {
492 register JSAMPROW currow = row;
493 register int *tpix = im->tpixels[i];
494 nrows = jpeg_read_scanlines (&cinfo, rowptr, 1);
495 if (nrows != 1)
496 {
497 fprintf (stderr, "gd-jpeg: error: jpeg_read_scanlines"
498 " returns %u, expected 1\n", nrows);
499 goto error;
500 }
501 for (j = 0; j < cinfo.output_width; j++, currow += 4, tpix++)
502 {
503 *tpix =
504 CMYKToRGB (currow[0], currow[1], currow[2], currow[3],
505 inverted);
506 }
507 }
508 }
509 else
510 {
511 for (i = 0; i < cinfo.output_height; i++)
512 {
513 register JSAMPROW currow = row;
514 register int *tpix = im->tpixels[i];
515 nrows = jpeg_read_scanlines (&cinfo, rowptr, 1);
516 if (nrows != 1)
517 {
518 fprintf (stderr, "gd-jpeg: error: jpeg_read_scanlines"
519 " returns %u, expected 1\n", nrows);
520 goto error;
521 }
522 for (j = 0; j < cinfo.output_width; j++, currow += 3, tpix++)
523 {
524 *tpix = gdTrueColor (currow[0], currow[1], currow[2]);
525 }
526 }
527 }
528 if (jpeg_finish_decompress (&cinfo) != TRUE)
529 fprintf (stderr, "gd-jpeg: warning: jpeg_finish_decompress"
530 " reports suspended data source\n");
531 /* TBB 2.0.29: we should do our best to read whatever we can read, and a
532 warning is a warning. A fatal error on warnings doesn't make sense. */
533 #if 0
534 /* This was originally added by Truxton Fulton */
535 if (cinfo.err->num_warnings > 0)
536 goto error;
537 #endif
538
539 jpeg_destroy_decompress (&cinfo);
540 gdFree (row);
541 return im;
542
543 error:
544 jpeg_destroy_decompress (&cinfo);
545 if (row)
546 gdFree (row);
547 if (im)
548 gdImageDestroy (im);
549 return 0;
550 }
551
552 /* A very basic conversion approach, TBB */
553
554 static int
555 CMYKToRGB (int c, int m, int y, int k, int inverted)
556 {
557 if (inverted)
558 {
559 c = 255 - c;
560 m = 255 - m;
561 y = 255 - y;
562 k = 255 - k;
563 }
564 return gdTrueColor ((255 - c) * (255 - k) / 255,
565 (255 - m) * (255 - k) / 255,
566 (255 - y) * (255 - k) / 255);
567 #if 0
568 if (inverted)
569 {
570 c = 255 - c;
571 m = 255 - m;
572 y = 255 - y;
573 k = 255 - k;
574 }
575 c = c * (255 - k) / 255 + k;
576 if (c > 255)
577 {
578 c = 255;
579 }
580 if (c < 0)
581 {
582 c = 0;
583 }
584 m = m * (255 - k) / 255 + k;
585 if (m > 255)
586 {
587 m = 255;
588 }
589 if (m < 0)
590 {
591 m = 0;
592 }
593 y = y * (255 - k) / 255 + k;
594 if (y > 255)
595 {
596 y = 255;
597 }
598 if (y < 0)
599 {
600 y = 0;
601 }
602 c = 255 - c;
603 m = 255 - m;
604 y = 255 - y;
605 return gdTrueColor (c, m, y);
606 #endif
607 }
608
609 /*
610
611 * gdIOCtx JPEG data sources and sinks, T. Boutell
612 * almost a simple global replace from T. Lane's stdio versions.
613 *
614 */
615
616 /* Different versions of libjpeg use either 'jboolean' or 'boolean', and
617 some platforms define 'boolean', and so forth. Deal with this
618 madness by typedeffing 'safeboolean' to 'boolean' if HAVE_BOOLEAN
619 is already set, because this is the test that libjpeg uses.
620 Otherwise, typedef it to int, because that's what libjpeg does
621 if HAVE_BOOLEAN is not defined. -TBB */
622
623 #ifdef HAVE_BOOLEAN
624 typedef boolean safeboolean;
625 #else
626 typedef int safeboolean;
627 #endif /* HAVE_BOOLEAN */
628
629 /* Expanded data source object for gdIOCtx input */
630
631 typedef struct
632 {
633 struct jpeg_source_mgr pub; /* public fields */
634
635 gdIOCtx *infile; /* source stream */
636 unsigned char *buffer; /* start of buffer */
637 safeboolean start_of_file; /* have we gotten any data yet? */
638
639 }
640 my_source_mgr;
641
642 typedef my_source_mgr *my_src_ptr;
643
644 #define INPUT_BUF_SIZE 4096 /* choose an efficiently fread'able size */
645
646 /*
647 * Initialize source --- called by jpeg_read_header
648 * before any data is actually read.
649 */
650
651 void
652 init_source (j_decompress_ptr cinfo)
653 {
654 my_src_ptr src = (my_src_ptr) cinfo->src;
655
656 /* We reset the empty-input-file flag for each image,
657 * but we don't clear the input buffer.
658 * This is correct behavior for reading a series of images from one source.
659 */
660 src->start_of_file = TRUE;
661 }
662
663
664 /*
665 * Fill the input buffer --- called whenever buffer is emptied.
666 *
667 * In typical applications, this should read fresh data into the buffer
668 * (ignoring the current state of next_input_byte & bytes_in_buffer),
669 * reset the pointer & count to the start of the buffer, and return TRUE
670 * indicating that the buffer has been reloaded. It is not necessary to
671 * fill the buffer entirely, only to obtain at least one more byte.
672 *
673 * There is no such thing as an EOF return. If the end of the file has been
674 * reached, the routine has a choice of ERREXIT() or inserting fake data into
675 * the buffer. In most cases, generating a warning message and inserting a
676 * fake EOI marker is the best course of action --- this will allow the
677 * decompressor to output however much of the image is there. However,
678 * the resulting error message is misleading if the real problem is an empty
679 * input file, so we handle that case specially.
680 *
681 * In applications that need to be able to suspend compression due to input
682 * not being available yet, a FALSE return indicates that no more data can be
683 * obtained right now, but more may be forthcoming later. In this situation,
684 * the decompressor will return to its caller (with an indication of the
685 * number of scanlines it has read, if any). The application should resume
686 * decompression after it has loaded more data into the input buffer. Note
687 * that there are substantial restrictions on the use of suspension --- see
688 * the documentation.
689 *
690 * When suspending, the decompressor will back up to a convenient restart point
691 * (typically the start of the current MCU). next_input_byte & bytes_in_buffer
692 * indicate where the restart point will be if the current call returns FALSE.
693 * Data beyond this point must be rescanned after resumption, so move it to
694 * the front of the buffer rather than discarding it.
695 */
696
697 #define END_JPEG_SEQUENCE "\r\n[*]--:END JPEG:--[*]\r\n"
698 safeboolean
699 fill_input_buffer (j_decompress_ptr cinfo)
700 {
701 my_src_ptr src = (my_src_ptr) cinfo->src;
702 /* 2.0.12: signed size. Thanks to Geert Jansen */
703 /* 2.0.14: some platforms (mingw-msys) don't have ssize_t. Call
704 an int an int. */
705 int nbytes = 0;
706 memset (src->buffer, 0, INPUT_BUF_SIZE);
707
708 while (nbytes < INPUT_BUF_SIZE)
709 {
710
711 int got = gdGetBuf (src->buffer + nbytes,
712 INPUT_BUF_SIZE - nbytes,
713 src->infile);
714
715 if ((got == EOF) || (got == 0))
716 {
717
718 /* EOF or error. If we got any data, don't worry about it.
719 If we didn't, then this is unexpected. */
720 if (!nbytes)
721 {
722
723 nbytes = -1;
724
725 }
726
727 break;
728
729 }
730
731 nbytes += got;
732
733 }
734
735 if (nbytes <= 0)
736 {
737 if (src->start_of_file) /* Treat empty input file as fatal error */
738 ERREXIT (cinfo, JERR_INPUT_EMPTY);
739 WARNMS (cinfo, JWRN_JPEG_EOF);
740 /* Insert a fake EOI marker */
741 src->buffer[0] = (unsigned char) 0xFF;
742 src->buffer[1] = (unsigned char) JPEG_EOI;
743 nbytes = 2;
744 }
745
746 src->pub.next_input_byte = src->buffer;
747 src->pub.bytes_in_buffer = nbytes;
748 src->start_of_file = FALSE;
749
750 return TRUE;
751 }
752
753
754 /*
755 * Skip data --- used to skip over a potentially large amount of
756 * uninteresting data (such as an APPn marker).
757 *
758 * Writers of suspendable-input applications must note that skip_input_data
759 * is not granted the right to give a suspension return. If the skip extends
760 * beyond the data currently in the buffer, the buffer can be marked empty so
761 * that the next read will cause a fill_input_buffer call that can suspend.
762 * Arranging for additional bytes to be discarded before reloading the input
763 * buffer is the application writer's problem.
764 */
765
766 void
767 skip_input_data (j_decompress_ptr cinfo, long num_bytes)
768 {
769 my_src_ptr src = (my_src_ptr) cinfo->src;
770
771 /* Just a dumb implementation for now. Not clear that being smart is worth
772 * any trouble anyway --- large skips are infrequent.
773 */
774 if (num_bytes > 0)
775 {
776 while (num_bytes > (long) src->pub.bytes_in_buffer)
777 {
778 num_bytes -= (long) src->pub.bytes_in_buffer;
779 (void) fill_input_buffer (cinfo);
780 /* note we assume that fill_input_buffer will never return FALSE,
781 * so suspension need not be handled.
782 */
783 }
784 src->pub.next_input_byte += (size_t) num_bytes;
785 src->pub.bytes_in_buffer -= (size_t) num_bytes;
786 }
787 }
788
789
790 /*
791 * An additional method that can be provided by data source modules is the
792 * resync_to_restart method for error recovery in the presence of RST markers.
793 * For the moment, this source module just uses the default resync method
794 * provided by the JPEG library. That method assumes that no backtracking
795 * is possible.
796 */
797
798
799 /*
800 * Terminate source --- called by jpeg_finish_decompress
801 * after all data has been read. Often a no-op.
802 *
803 * NB: *not* called by jpeg_abort or jpeg_destroy; surrounding
804 * application must deal with any cleanup that should happen even
805 * for error exit.
806 */
807
808 void
809 term_source (j_decompress_ptr cinfo)
810 {
811
812 #if 0
813 /* never used */
814 my_src_ptr src = (my_src_ptr) cinfo->src;
815
816 #endif
817 }
818
819
820 /*
821 * Prepare for input from a gdIOCtx stream.
822 * The caller must have already opened the stream, and is responsible
823 * for closing it after finishing decompression.
824 */
825
826 void
827 jpeg_gdIOCtx_src (j_decompress_ptr cinfo, gdIOCtx * infile)
828 {
829 my_src_ptr src;
830
831 /* The source object and input buffer are made permanent so that a series
832 * of JPEG images can be read from the same file by calling jpeg_gdIOCtx_src
833 * only before the first one. (If we discarded the buffer at the end of
834 * one image, we'd likely lose the start of the next one.)
835 * This makes it unsafe to use this manager and a different source
836 * manager serially with the same JPEG object. Caveat programmer.
837 */
838 if (cinfo->src == NULL)
839 { /* first time for this JPEG object? */
840 cinfo->src = (struct jpeg_source_mgr *)
841 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT,
842 sizeof (my_source_mgr));
843 src = (my_src_ptr) cinfo->src;
844 src->buffer = (unsigned char *)
845 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT,
846 INPUT_BUF_SIZE * sizeof (unsigned char));
847
848 }
849
850 src = (my_src_ptr) cinfo->src;
851 src->pub.init_source = init_source;
852 src->pub.fill_input_buffer = fill_input_buffer;
853 src->pub.skip_input_data = skip_input_data;
854 src->pub.resync_to_restart = jpeg_resync_to_restart; /* use default method */
855 src->pub.term_source = term_source;
856 src->infile = infile;
857 src->pub.bytes_in_buffer = 0; /* forces fill_input_buffer on first read */
858 src->pub.next_input_byte = NULL; /* until buffer loaded */
859 }
860
861 /* Expanded data destination object for stdio output */
862
863 typedef struct
864 {
865 struct jpeg_destination_mgr pub; /* public fields */
866 gdIOCtx *outfile; /* target stream */
867 unsigned char *buffer; /* start of buffer */
868 }
869 my_destination_mgr;
870
871 typedef my_destination_mgr *my_dest_ptr;
872
873 #define OUTPUT_BUF_SIZE 4096 /* choose an efficiently fwrite'able size */
874
875 /*
876 * Initialize destination --- called by jpeg_start_compress
877 * before any data is actually written.
878 */
879
880 void
881 init_destination (j_compress_ptr cinfo)
882 {
883 my_dest_ptr dest = (my_dest_ptr) cinfo->dest;
884
885 /* Allocate the output buffer --- it will be released when done with image */
886 dest->buffer = (unsigned char *)
887 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
888 OUTPUT_BUF_SIZE * sizeof (unsigned char));
889
890 dest->pub.next_output_byte = dest->buffer;
891 dest->pub.free_in_buffer = OUTPUT_BUF_SIZE;
892 }
893
894
895 /*
896 * Empty the output buffer --- called whenever buffer fills up.
897 *
898 * In typical applications, this should write the entire output buffer
899 * (ignoring the current state of next_output_byte & free_in_buffer),
900 * reset the pointer & count to the start of the buffer, and return TRUE
901 * indicating that the buffer has been dumped.
902 *
903 * In applications that need to be able to suspend compression due to output
904 * overrun, a FALSE return indicates that the buffer cannot be emptied now.
905 * In this situation, the compressor will return to its caller (possibly with
906 * an indication that it has not accepted all the supplied scanlines). The
907 * application should resume compression after it has made more room in the
908 * output buffer. Note that there are substantial restrictions on the use of
909 * suspension --- see the documentation.
910 *
911 * When suspending, the compressor will back up to a convenient restart point
912 * (typically the start of the current MCU). next_output_byte & free_in_buffer
913 * indicate where the restart point will be if the current call returns FALSE.
914 * Data beyond this point will be regenerated after resumption, so do not
915 * write it out when emptying the buffer externally.
916 */
917
918 safeboolean
919 empty_output_buffer (j_compress_ptr cinfo)
920 {
921 my_dest_ptr dest = (my_dest_ptr) cinfo->dest;
922
923 if (gdPutBuf (dest->buffer, OUTPUT_BUF_SIZE, dest->outfile) !=
924 (size_t) OUTPUT_BUF_SIZE)
925 ERREXIT (cinfo, JERR_FILE_WRITE);
926
927 dest->pub.next_output_byte = dest->buffer;
928 dest->pub.free_in_buffer = OUTPUT_BUF_SIZE;
929
930 return TRUE;
931 }
932
933
934 /*
935 * Terminate destination --- called by jpeg_finish_compress
936 * after all data has been written. Usually needs to flush buffer.
937 *
938 * NB: *not* called by jpeg_abort or jpeg_destroy; surrounding
939 * application must deal with any cleanup that should happen even
940 * for error exit.
941 */
942
943 void
944 term_destination (j_compress_ptr cinfo)
945 {
946 my_dest_ptr dest = (my_dest_ptr) cinfo->dest;
947 size_t datacount = OUTPUT_BUF_SIZE - dest->pub.free_in_buffer;
948
949 /* Write any data remaining in the buffer */
950 if (datacount > 0)
951 {
952 if (gdPutBuf (dest->buffer, datacount, dest->outfile) != datacount)
953 ERREXIT (cinfo, JERR_FILE_WRITE);
954 }
955 }
956
957
958 /*
959 * Prepare for output to a stdio stream.
960 * The caller must have already opened the stream, and is responsible
961 * for closing it after finishing compression.
962 */
963
964 void
965 jpeg_gdIOCtx_dest (j_compress_ptr cinfo, gdIOCtx * outfile)
966 {
967 my_dest_ptr dest;
968
969 /* The destination object is made permanent so that multiple JPEG images
970 * can be written to the same file without re-executing jpeg_stdio_dest.
971 * This makes it dangerous to use this manager and a different destination
972 * manager serially with the same JPEG object, because their private object
973 * sizes may be different. Caveat programmer.
974 */
975 if (cinfo->dest == NULL)
976 { /* first time for this JPEG object? */
977 cinfo->dest = (struct jpeg_destination_mgr *)
978 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT,
979 sizeof (my_destination_mgr));
980 }
981
982 dest = (my_dest_ptr) cinfo->dest;
983 dest->pub.init_destination = init_destination;
984 dest->pub.empty_output_buffer = empty_output_buffer;
985 dest->pub.term_destination = term_destination;
986 dest->outfile = outfile;
987 }
988
989 #endif /* HAVE_LIBJPEG */
0 /* $Id: gd_png.c,v 1.21.2.2 2007/05/17 14:38:24 pajoye Exp $ */
1 #ifdef HAVE_CONFIG_H
2 #include "config.h"
3 #endif
4
5 #include <stdio.h>
6 #include <math.h>
7 #include <string.h>
8 #include <stdlib.h>
9 #include "gd.h"
10
11 /* JCE: Arrange HAVE_LIBPNG so that it can be set in gd.h */
12 #ifdef HAVE_LIBPNG
13
14 #include "gdhelpers.h"
15 #include "png.h" /* includes zlib.h and setjmp.h */
16
17 #define TRUE 1
18 #define FALSE 0
19
20 /*---------------------------------------------------------------------------
21
22 gd_png.c Copyright 1999 Greg Roelofs and Thomas Boutell
23
24 The routines in this file, gdImagePng*() and gdImageCreateFromPng*(),
25 are drop-in replacements for gdImageGif*() and gdImageCreateFromGif*(),
26 except that these functions are noisier in the case of errors (comment
27 out all fprintf() statements to disable that).
28
29 GD 2.0 supports RGBA truecolor and will read and write truecolor PNGs.
30 GD 2.0 supports 8 bits of color resolution per channel and
31 7 bits of alpha channel resolution. Images with more than 8 bits
32 per channel are reduced to 8 bits. Images with an alpha channel are
33 only able to resolve down to '1/128th opaque' instead of '1/256th',
34 and this conversion is also automatic. I very much doubt you can see it.
35 Both tRNS and true alpha are supported.
36
37 Gamma is ignored, and there is no support for text annotations.
38
39 Last updated: 9 February 2001
40
41 ---------------------------------------------------------------------------*/
42
43 #ifndef PNG_SETJMP_NOT_SUPPORTED
44 typedef struct _jmpbuf_wrapper
45 {
46 jmp_buf jmpbuf;
47 }
48 jmpbuf_wrapper;
49
50 static jmpbuf_wrapper gdPngJmpbufStruct;
51
52 static void
53 gdPngErrorHandler (png_structp png_ptr, png_const_charp msg)
54 {
55 jmpbuf_wrapper *jmpbuf_ptr;
56
57 /* This function, aside from the extra step of retrieving the "error
58 * pointer" (below) and the fact that it exists within the application
59 * rather than within libpng, is essentially identical to libpng's
60 * default error handler. The second point is critical: since both
61 * setjmp() and longjmp() are called from the same code, they are
62 * guaranteed to have compatible notions of how big a jmp_buf is,
63 * regardless of whether _BSD_SOURCE or anything else has (or has not)
64 * been defined. */
65
66 fprintf (stderr, "gd-png: fatal libpng error: %s\n", msg);
67 fflush (stderr);
68
69 jmpbuf_ptr = png_get_error_ptr (png_ptr);
70 if (jmpbuf_ptr == NULL) { /* we are completely hosed now */
71 fprintf (stderr, "gd-png: EXTREMELY fatal error: jmpbuf unrecoverable; terminating.\n");
72 fflush (stderr);
73 exit (99);
74 }
75
76 longjmp (jmpbuf_ptr->jmpbuf, 1);
77 }
78 #endif
79
80 static void
81 gdPngReadData (png_structp png_ptr, png_bytep data, png_size_t length)
82 {
83 int check;
84 check = gdGetBuf (data, length, (gdIOCtx *) png_get_io_ptr (png_ptr));
85 if (check != length) {
86 png_error(png_ptr, "Read Error: truncated data");
87 }
88 }
89
90 static void
91 gdPngWriteData (png_structp png_ptr, png_bytep data, png_size_t length)
92 {
93 gdPutBuf (data, length, (gdIOCtx *) png_get_io_ptr (png_ptr));
94 }
95
96 static void
97 gdPngFlushData (png_structp png_ptr)
98 {
99 }
100
101 BGD_DECLARE(gdImagePtr) gdImageCreateFromPng (FILE * inFile)
102 {
103 gdImagePtr im;
104 gdIOCtx *in = gdNewFileCtx (inFile);
105 im = gdImageCreateFromPngCtx (in);
106 in->gd_free (in);
107 return im;
108 }
109
110 BGD_DECLARE(gdImagePtr) gdImageCreateFromPngPtr (int size, void *data)
111 {
112 gdImagePtr im;
113 gdIOCtx *in = gdNewDynamicCtxEx (size, data, 0);
114 im = gdImageCreateFromPngCtx (in);
115 in->gd_free (in);
116 return im;
117 }
118
119 /* This routine is based in part on the Chapter 13 demo code in "PNG: The
120 * Definitive Guide" (http://www.cdrom.com/pub/png/pngbook.html).
121 */
122 BGD_DECLARE(gdImagePtr) gdImageCreateFromPngCtx (gdIOCtx * infile)
123 {
124 png_byte sig[8];
125 png_structp png_ptr;
126 png_infop info_ptr;
127 png_uint_32 width, height, rowbytes, w, h;
128 int bit_depth, color_type, interlace_type;
129 int num_palette, num_trans;
130 png_colorp palette;
131 png_color_16p trans_gray_rgb;
132 png_color_16p trans_color_rgb;
133 png_bytep trans;
134 png_bytep image_data = NULL;
135 png_bytepp row_pointers = NULL;
136 gdImagePtr im = NULL;
137 int i, j, *open = NULL;
138 volatile int transparent = -1;
139 volatile int palette_allocated = FALSE;
140
141 /* Make sure the signature can't match by dumb luck -- TBB */
142 /* GRR: isn't sizeof(infile) equal to the size of the pointer? */
143 memset (sig, 0, sizeof (sig));
144
145 /* first do a quick check that the file really is a PNG image; could
146 * have used slightly more general png_sig_cmp() function instead */
147 if (gdGetBuf (sig, 8, infile) < 8) {
148 return NULL;
149 }
150
151 if (!png_check_sig (sig, 8)) { /* bad signature */
152 return NULL; /* bad signature */
153 }
154
155 #ifndef PNG_SETJMP_NOT_SUPPORTED
156 png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING, &gdPngJmpbufStruct, gdPngErrorHandler, NULL);
157 #else
158 png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
159 #endif
160 if (png_ptr == NULL) {
161 fprintf (stderr, "gd-png error: cannot allocate libpng main struct\n");
162 return NULL;
163 }
164
165 info_ptr = png_create_info_struct (png_ptr);
166 if (info_ptr == NULL) {
167 fprintf (stderr, "gd-png error: cannot allocate libpng info struct\n");
168 png_destroy_read_struct (&png_ptr, NULL, NULL);
169
170 return NULL;
171 }
172
173 /* we could create a second info struct here (end_info), but it's only
174 * useful if we want to keep pre- and post-IDAT chunk info separated
175 * (mainly for PNG-aware image editors and converters)
176 */
177
178 /* setjmp() must be called in every non-callback function that calls a
179 * PNG-reading libpng function */
180 #ifndef PNG_SETJMP_NOT_SUPPORTED
181 if (setjmp (gdPngJmpbufStruct.jmpbuf)) {
182 fprintf (stderr, "gd-png error: setjmp returns error condition 1\n");
183 png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
184
185 return NULL;
186 }
187 #endif
188
189 png_set_sig_bytes (png_ptr, 8); /* we already read the 8 signature bytes */
190
191 png_set_read_fn (png_ptr, (void *) infile, gdPngReadData);
192 png_read_info (png_ptr, info_ptr); /* read all PNG info up to image data */
193
194 png_get_IHDR (png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, &interlace_type, NULL, NULL);
195 if ((color_type == PNG_COLOR_TYPE_RGB) || (color_type == PNG_COLOR_TYPE_RGB_ALPHA)) {
196 im = gdImageCreateTrueColor ((int) width, (int) height);
197 } else {
198 im = gdImageCreate ((int) width, (int) height);
199 }
200 if (im == NULL) {
201 fprintf (stderr, "gd-png error: cannot allocate gdImage struct\n");
202 png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
203 gdFree (image_data);
204 gdFree (row_pointers);
205
206 return NULL;
207 }
208
209 if (bit_depth == 16) {
210 png_set_strip_16 (png_ptr);
211 } else if (bit_depth < 8) {
212 png_set_packing (png_ptr); /* expand to 1 byte per pixel */
213 }
214
215 /* setjmp() must be called in every non-callback function that calls a
216 * PNG-reading libpng function
217 */
218 #ifndef PNG_SETJMP_NOT_SUPPORTED
219 if (setjmp(gdPngJmpbufStruct.jmpbuf)) {
220 fprintf(stderr, "gd-png error: setjmp returns error condition 2");
221 png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
222 gdFree(image_data);
223 gdFree(row_pointers);
224 if (im) {
225 gdImageDestroy(im);
226 }
227 return NULL;
228 }
229 #endif
230
231 switch (color_type) {
232 case PNG_COLOR_TYPE_PALETTE:
233 png_get_PLTE (png_ptr, info_ptr, &palette, &num_palette);
234 #ifdef DEBUG
235 fprintf (stderr, "gd-png color_type is palette, colors: %d\n", num_palette);
236 #endif /* DEBUG */
237 if (png_get_valid (png_ptr, info_ptr, PNG_INFO_tRNS)) {
238 /* gd 2.0: we support this rather thoroughly now. Grab the
239 * first fully transparent entry, if any, as the value of
240 * the simple-transparency index, mostly for backwards
241 * binary compatibility. The alpha channel is where it's
242 * really at these days.
243 */
244 int firstZero = 1;
245 png_get_tRNS (png_ptr, info_ptr, &trans, &num_trans, NULL);
246 for (i = 0; i < num_trans; ++i) {
247 im->alpha[i] = gdAlphaMax - (trans[i] >> 1);
248 if ((trans[i] == 0) && (firstZero)) {
249 /* 2.0.5: long-forgotten patch from Wez Furlong */
250 transparent = i;
251 firstZero = 0;
252 }
253 }
254 }
255 break;
256
257 case PNG_COLOR_TYPE_GRAY:
258 case PNG_COLOR_TYPE_GRAY_ALPHA:
259 /* create a fake palette and check for single-shade transparency */
260 if ((palette = (png_colorp) gdMalloc (256 * sizeof (png_color))) == NULL) {
261 fprintf (stderr, "gd-png error: cannot allocate gray palette\n");
262 png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
263 return NULL;
264 }
265 palette_allocated = TRUE;
266 if (bit_depth < 8) {
267 num_palette = 1 << bit_depth;
268 for (i = 0; i < 256; ++i) {
269 j = (255 * i) / (num_palette - 1);
270 palette[i].red = palette[i].green = palette[i].blue = j;
271 }
272 } else {
273 num_palette = 256;
274 for (i = 0; i < 256; ++i) {
275 palette[i].red = palette[i].green = palette[i].blue = i;
276 }
277 }
278 if (png_get_valid (png_ptr, info_ptr, PNG_INFO_tRNS)) {
279 png_get_tRNS (png_ptr, info_ptr, NULL, NULL, &trans_gray_rgb);
280 if (bit_depth == 16) { /* png_set_strip_16() not yet in effect */
281 transparent = trans_gray_rgb->gray >> 8;
282 } else {
283 transparent = trans_gray_rgb->gray;
284 }
285 /* Note slight error in 16-bit case: up to 256 16-bit shades
286 * may get mapped to a single 8-bit shade, and only one of them
287 * is supposed to be transparent. IOW, both opaque pixels and
288 * transparent pixels will be mapped into the transparent entry.
289 * There is no particularly good way around this in the case
290 * that all 256 8-bit shades are used, but one could write some
291 * custom 16-bit code to handle the case where there are gdFree
292 * palette entries. This error will be extremely rare in
293 * general, though. (Quite possibly there is only one such
294 * image in existence.) */
295 }
296 break;
297
298 case PNG_COLOR_TYPE_RGB:
299 case PNG_COLOR_TYPE_RGB_ALPHA:
300 /* gd 2.0: we now support truecolor. See the comment above
301 for a rare situation in which the transparent pixel may not
302 work properly with 16-bit channels. */
303 if (png_get_valid (png_ptr, info_ptr, PNG_INFO_tRNS)) {
304 png_get_tRNS (png_ptr, info_ptr, NULL, NULL, &trans_color_rgb);
305 if (bit_depth == 16) { /* png_set_strip_16() not yet in effect */
306 transparent = gdTrueColor (trans_color_rgb->red >> 8,
307 trans_color_rgb->green >> 8,
308 trans_color_rgb->blue >> 8);
309 } else {
310 transparent = gdTrueColor (trans_color_rgb->red,
311 trans_color_rgb->green,
312 trans_color_rgb->blue);
313 }
314 }
315 break;
316 }
317
318 png_read_update_info (png_ptr, info_ptr);
319
320 /* allocate space for the PNG image data */
321 rowbytes = png_get_rowbytes (png_ptr, info_ptr);
322 if (overflow2(rowbytes, height)) {
323 png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
324 return NULL;
325 }
326 image_data = (png_bytep) gdMalloc (rowbytes * height);
327 if (!image_data) {
328 fprintf (stderr, "gd-png error: cannot allocate image data\n");
329 png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
330 if (im) {
331 gdImageDestroy(im);
332 }
333 return NULL;
334 }
335 if (overflow2(height, sizeof (png_bytep))) {
336 png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
337 gdFree (image_data);
338 if (im) {
339 gdImageDestroy(im);
340 }
341 return NULL;
342 }
343
344 row_pointers = (png_bytepp) gdMalloc (height * sizeof (png_bytep));
345 if (!row_pointers) {
346 fprintf (stderr, "gd-png error: cannot allocate row pointers\n");
347 png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
348 if (im) {
349 gdImageDestroy(im);
350 }
351 gdFree (image_data);
352 return NULL;
353 }
354
355 /* set the individual row_pointers to point at the correct offsets */
356 for (h = 0; h < height; ++h) {
357 row_pointers[h] = image_data + h * rowbytes;
358 }
359
360 png_read_image (png_ptr, row_pointers); /* read whole image... */
361 png_read_end (png_ptr, NULL); /* ...done! */
362
363 if (!im->trueColor) {
364 im->colorsTotal = num_palette;
365 /* load the palette and mark all entries "open" (unused) for now */
366 open = im->open;
367 for (i = 0; i < num_palette; ++i) {
368 im->red[i] = palette[i].red;
369 im->green[i] = palette[i].green;
370 im->blue[i] = palette[i].blue;
371 open[i] = 1;
372 }
373 for (i = num_palette; i < gdMaxColors; ++i) {
374 open[i] = 1;
375 }
376 }
377 /* 2.0.12: Slaven Rezic: palette images are not the only images
378 with a simple transparent color setting */
379 im->transparent = transparent;
380 im->interlace = (interlace_type == PNG_INTERLACE_ADAM7);
381
382 /* can't nuke structs until done with palette */
383 png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
384 switch (color_type) {
385 case PNG_COLOR_TYPE_RGB:
386 for (h = 0; h < height; h++) {
387 int boffset = 0;
388 for (w = 0; w < width; w++) {
389 register png_byte r = row_pointers[h][boffset++];
390 register png_byte g = row_pointers[h][boffset++];
391 register png_byte b = row_pointers[h][boffset++];
392 im->tpixels[h][w] = gdTrueColor (r, g, b);
393 }
394 }
395 break;
396 case PNG_COLOR_TYPE_RGB_ALPHA:
397 for (h = 0; h < height; h++) {
398 int boffset = 0;
399 for (w = 0; w < width; w++) {
400 register png_byte r = row_pointers[h][boffset++];
401 register png_byte g = row_pointers[h][boffset++];
402 register png_byte b = row_pointers[h][boffset++];
403
404 /* gd has only 7 bits of alpha channel resolution, and
405 * 127 is transparent, 0 opaque. A moment of convenience,
406 * a lifetime of compatibility.
407 */
408
409 register png_byte a = gdAlphaMax - (row_pointers[h][boffset++] >> 1);
410 im->tpixels[h][w] = gdTrueColorAlpha(r, g, b, a);
411 }
412 }
413 break;
414 default:
415 /* Palette image, or something coerced to be one */
416 for (h = 0; h < height; ++h) {
417 for (w = 0; w < width; ++w) {
418 register png_byte idx = row_pointers[h][w];
419 im->pixels[h][w] = idx;
420 open[idx] = 0;
421 }
422 }
423 }
424 #ifdef DEBUG
425 if (!im->trueColor) {
426 for (i = num_palette; i < gdMaxColors; ++i) {
427 if (!open[i]) {
428 fprintf (stderr,
429 "gd-png warning: image data references out-of-range"
430 " color index (%d)\n", i);
431 }
432 }
433 }
434 #endif
435
436 if (palette_allocated) {
437 gdFree (palette);
438 }
439 gdFree (image_data);
440 gdFree (row_pointers);
441
442 return im;
443 }
444
445
446 BGD_DECLARE(void) gdImagePngEx (gdImagePtr im, FILE * outFile, int level)
447 {
448 gdIOCtx *out = gdNewFileCtx (outFile);
449 gdImagePngCtxEx (im, out, level);
450 out->gd_free (out);
451 }
452
453 BGD_DECLARE(void) gdImagePng (gdImagePtr im, FILE * outFile)
454 {
455 gdIOCtx *out = gdNewFileCtx (outFile);
456 gdImagePngCtxEx (im, out, -1);
457 out->gd_free (out);
458 }
459
460 BGD_DECLARE(void *) gdImagePngPtr (gdImagePtr im, int *size)
461 {
462 void *rv;
463 gdIOCtx *out = gdNewDynamicCtx (2048, NULL);
464 gdImagePngCtxEx (im, out, -1);
465 rv = gdDPExtractData (out, size);
466 out->gd_free (out);
467 return rv;
468 }
469
470 BGD_DECLARE(void *) gdImagePngPtrEx (gdImagePtr im, int *size, int level)
471 {
472 void *rv;
473 gdIOCtx *out = gdNewDynamicCtx (2048, NULL);
474 gdImagePngCtxEx (im, out, level);
475 rv = gdDPExtractData (out, size);
476 out->gd_free (out);
477 return rv;
478 }
479
480 BGD_DECLARE(void) gdImagePngCtx (gdImagePtr im, gdIOCtx * outfile)
481 {
482 /* 2.0.13: 'return' here was an error, thanks to Kevin Smith */
483 gdImagePngCtxEx (im, outfile, -1);
484 }
485
486 /* This routine is based in part on code from Dale Lutz (Safe Software Inc.)
487 * and in part on demo code from Chapter 15 of "PNG: The Definitive Guide"
488 * (http://www.cdrom.com/pub/png/pngbook.html).
489 */
490 BGD_DECLARE(void) gdImagePngCtxEx (gdImagePtr im, gdIOCtx * outfile, int level)
491 {
492 int i, j, bit_depth = 0, interlace_type;
493 int width = im->sx;
494 int height = im->sy;
495 int colors = im->colorsTotal;
496 int *open = im->open;
497 int mapping[gdMaxColors]; /* mapping[gd_index] == png_index */
498 png_byte trans_values[256];
499 png_color_16 trans_rgb_value;
500 png_color palette[gdMaxColors];
501 png_structp png_ptr;
502 png_infop info_ptr;
503 volatile int transparent = im->transparent;
504 volatile int remap = FALSE;
505
506 #ifndef PNG_SETJMP_NOT_SUPPORTED
507 png_ptr = png_create_write_struct (PNG_LIBPNG_VER_STRING,
508 &gdPngJmpbufStruct, gdPngErrorHandler,
509 NULL);
510 #else
511 png_ptr = png_create_write_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
512 #endif
513 if (png_ptr == NULL)
514 {
515 fprintf (stderr, "gd-png error: cannot allocate libpng main struct\n");
516 return;
517 }
518
519 info_ptr = png_create_info_struct (png_ptr);
520 if (info_ptr == NULL)
521 {
522 fprintf (stderr, "gd-png error: cannot allocate libpng info struct\n");
523 png_destroy_write_struct (&png_ptr, (png_infopp) NULL);
524 return;
525 }
526
527 #ifndef PNG_SETJMP_NOT_SUPPORTED
528 if (setjmp (gdPngJmpbufStruct.jmpbuf))
529 {
530 fprintf (stderr, "gd-png error: setjmp returns error condition\n");
531 png_destroy_write_struct (&png_ptr, &info_ptr);
532 return;
533 }
534 #endif
535
536 png_set_write_fn (png_ptr, (void *) outfile, gdPngWriteData,
537 gdPngFlushData);
538
539 /* This is best for palette images, and libpng defaults to it for
540 palette images anyway, so we don't need to do it explicitly.
541 What to ideally do for truecolor images depends, alas, on the image.
542 gd is intentionally imperfect and doesn't spend a lot of time
543 fussing with such things. */
544
545 /* Faster if this is uncommented, but may produce larger truecolor files.
546 Wait for gdImagePngCtxEx. */
547 #if 0
548 png_set_filter (png_ptr, 0, PNG_FILTER_NONE);
549 #endif
550
551 /* 2.0.12: this is finally a parameter */
552 png_set_compression_level (png_ptr, level);
553
554 /* can set this to a smaller value without compromising compression if all
555 * image data is 16K or less; will save some decoder memory [min == 8] */
556 /* png_set_compression_window_bits(png_ptr, 15); */
557
558 if (!im->trueColor)
559 {
560 if (transparent >= im->colorsTotal ||
561 (transparent >= 0 && open[transparent]))
562 transparent = -1;
563 }
564 if (!im->trueColor)
565 {
566 for (i = 0; i < gdMaxColors; ++i)
567 mapping[i] = -1;
568 }
569 if (!im->trueColor)
570 {
571 /* count actual number of colors used (colorsTotal == high-water mark) */
572 colors = 0;
573 for (i = 0; i < im->colorsTotal; ++i)
574 {
575 if (!open[i])
576 {
577 mapping[i] = colors;
578 ++colors;
579 }
580 }
581 if (colors < im->colorsTotal)
582 {
583 remap = TRUE;
584 }
585 if (colors <= 2)
586 bit_depth = 1;
587 else if (colors <= 4)
588 bit_depth = 2;
589 else if (colors <= 16)
590 bit_depth = 4;
591 else
592 bit_depth = 8;
593 }
594 interlace_type = im->interlace ? PNG_INTERLACE_ADAM7 : PNG_INTERLACE_NONE;
595
596 if (im->trueColor)
597 {
598 if (im->saveAlphaFlag)
599 {
600 png_set_IHDR (png_ptr, info_ptr, width, height, 8,
601 PNG_COLOR_TYPE_RGB_ALPHA, interlace_type,
602 PNG_COMPRESSION_TYPE_DEFAULT,
603 PNG_FILTER_TYPE_DEFAULT);
604 }
605 else
606 {
607 png_set_IHDR (png_ptr, info_ptr, width, height, 8,
608 PNG_COLOR_TYPE_RGB, interlace_type,
609 PNG_COMPRESSION_TYPE_DEFAULT,
610 PNG_FILTER_TYPE_DEFAULT);
611 }
612 }
613 else
614 {
615 png_set_IHDR (png_ptr, info_ptr, width, height, bit_depth,
616 PNG_COLOR_TYPE_PALETTE, interlace_type,
617 PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
618 }
619 if (im->trueColor && (!im->saveAlphaFlag) && (transparent >= 0))
620 {
621 /* 2.0.9: fixed by Thomas Winzig */
622 trans_rgb_value.red = gdTrueColorGetRed (im->transparent);
623 trans_rgb_value.green = gdTrueColorGetGreen (im->transparent);
624 trans_rgb_value.blue = gdTrueColorGetBlue (im->transparent);
625 png_set_tRNS (png_ptr, info_ptr, 0, 0, &trans_rgb_value);
626 }
627 if (!im->trueColor)
628 {
629 /* Oy veh. Remap the PNG palette to put the
630 entries with interesting alpha channel
631 values first. This minimizes the size
632 of the tRNS chunk and thus the size
633 of the PNG file as a whole. */
634 int tc = 0;
635 int i;
636 int j;
637 int k;
638 for (i = 0; (i < im->colorsTotal); i++)
639 {
640 if ((!im->open[i]) && (im->alpha[i] != gdAlphaOpaque))
641 {
642 tc++;
643 }
644 }
645 if (tc)
646 {
647 #if 0
648 for (i = 0; (i < im->colorsTotal); i++)
649 {
650 trans_values[i] = 255 -
651 ((im->alpha[i] << 1) + (im->alpha[i] >> 6));
652 }
653 png_set_tRNS (png_ptr, info_ptr, trans_values, 256, NULL);
654 #endif
655 if (!remap)
656 {
657 remap = TRUE;
658 }
659 /* (Semi-)transparent indexes come up from the bottom
660 of the list of real colors; opaque
661 indexes come down from the top */
662 j = 0;
663 k = colors - 1;
664 for (i = 0; (i < im->colorsTotal); i++)
665 {
666 if (!im->open[i])
667 {
668 if (im->alpha[i] != gdAlphaOpaque)
669 {
670 /* Andrew Hull: >> 6, not >> 7! (gd 2.0.5) */
671 trans_values[j] = 255 -
672 ((im->alpha[i] << 1) + (im->alpha[i] >> 6));
673 mapping[i] = j++;
674 }
675 else
676 {
677 mapping[i] = k--;
678 }
679 }
680 }
681 png_set_tRNS (png_ptr, info_ptr, trans_values, tc, NULL);
682 }
683 }
684
685 /* convert palette to libpng layout */
686 if (!im->trueColor)
687 {
688 if (remap)
689 for (i = 0; i < im->colorsTotal; ++i)
690 {
691 if (mapping[i] < 0)
692 continue;
693 palette[mapping[i]].red = im->red[i];
694 palette[mapping[i]].green = im->green[i];
695 palette[mapping[i]].blue = im->blue[i];
696 }
697 else
698 for (i = 0; i < colors; ++i)
699 {
700 palette[i].red = im->red[i];
701 palette[i].green = im->green[i];
702 palette[i].blue = im->blue[i];
703 }
704 png_set_PLTE (png_ptr, info_ptr, palette, colors);
705 }
706
707 /* write out the PNG header info (everything up to first IDAT) */
708 png_write_info (png_ptr, info_ptr);
709
710 /* make sure < 8-bit images are packed into pixels as tightly as possible */
711 png_set_packing (png_ptr);
712
713 /* This code allocates a set of row buffers and copies the gd image data
714 * into them only in the case that remapping is necessary; in gd 1.3 and
715 * later, the im->pixels array is laid out identically to libpng's row
716 * pointers and can be passed to png_write_image() function directly.
717 * The remapping case could be accomplished with less memory for non-
718 * interlaced images, but interlacing causes some serious complications. */
719 if (im->trueColor)
720 {
721 /* performance optimizations by Phong Tran */
722 int channels = im->saveAlphaFlag ? 4 : 3;
723 /* Our little 7-bit alpha channel trick costs us a bit here. */
724 png_bytep *row_pointers;
725 unsigned char *pOutputRow;
726 int **ptpixels = im->tpixels;
727 int *pThisRow;
728 unsigned char a;
729 int thisPixel;
730 png_bytep *prow_pointers;
731 int saveAlphaFlag = im->saveAlphaFlag;
732 if (overflow2(sizeof (png_bytep), height)) {
733 return;
734 }
735 row_pointers = gdMalloc (sizeof (png_bytep) * height);
736 if (row_pointers == NULL)
737 {
738 fprintf (stderr, "gd-png error: unable to allocate row_pointers\n");
739 /* 2.0.29: return was missing */
740 return;
741 }
742 prow_pointers = row_pointers;
743 for (j = 0; j < height; ++j)
744 {
745 if (overflow2(width, channels) || ((*prow_pointers =
746 (png_bytep) gdMalloc (width * channels)) == NULL))
747 {
748 fprintf (stderr, "gd-png error: unable to allocate rows\n");
749 for (i = 0; i < j; ++i)
750 gdFree (row_pointers[i]);
751 /* 2.0.29: memory leak TBB */
752 gdFree(row_pointers);
753 return;
754 }
755 pOutputRow = *prow_pointers++;
756 pThisRow = *ptpixels++;
757 for (i = 0; i < width; ++i)
758 {
759 thisPixel = *pThisRow++;
760 *pOutputRow++ = gdTrueColorGetRed (thisPixel);
761 *pOutputRow++ = gdTrueColorGetGreen (thisPixel);
762 *pOutputRow++ = gdTrueColorGetBlue (thisPixel);
763
764 if (saveAlphaFlag)
765 {
766 /* convert the 7-bit alpha channel to an 8-bit alpha channel.
767 We do a little bit-flipping magic, repeating the MSB
768 as the LSB, to ensure that 0 maps to 0 and
769 127 maps to 255. We also have to invert to match
770 PNG's convention in which 255 is opaque. */
771 a = gdTrueColorGetAlpha (thisPixel);
772 /* Andrew Hull: >> 6, not >> 7! (gd 2.0.5) */
773 *pOutputRow++ = 255 - ((a << 1) + (a >> 6));
774 }
775 }
776 }
777
778 png_write_image (png_ptr, row_pointers);
779 png_write_end (png_ptr, info_ptr);
780
781 for (j = 0; j < height; ++j)
782 gdFree (row_pointers[j]);
783 gdFree (row_pointers);
784 }
785 else
786 {
787 if (remap)
788 {
789 png_bytep *row_pointers;
790 if (overflow2(sizeof (png_bytep), height)) {
791 return;
792 }
793 row_pointers = gdMalloc (sizeof (png_bytep) * height);
794 if (row_pointers == NULL)
795 {
796 fprintf (stderr,
797 "gd-png error: unable to allocate row_pointers\n");
798 /* TBB: return missing */
799 return;
800 }
801 for (j = 0; j < height; ++j)
802 {
803 if ((row_pointers[j] = (png_bytep) gdMalloc (width)) == NULL)
804 {
805 fprintf (stderr, "gd-png error: unable to allocate rows\n");
806 for (i = 0; i < j; ++i)
807 gdFree (row_pointers[i]);
808 /* TBB: memory leak */
809 gdFree (row_pointers);
810 return;
811 }
812 for (i = 0; i < width; ++i)
813 row_pointers[j][i] = mapping[im->pixels[j][i]];
814 }
815
816 png_write_image (png_ptr, row_pointers);
817 png_write_end (png_ptr, info_ptr);
818
819 for (j = 0; j < height; ++j)
820 gdFree (row_pointers[j]);
821 gdFree (row_pointers);
822 }
823 else
824 {
825 png_write_image (png_ptr, im->pixels);
826 png_write_end (png_ptr, info_ptr);
827 }
828 }
829 /* 1.6.3: maybe we should give that memory BACK! TBB */
830 png_destroy_write_struct (&png_ptr, &info_ptr);
831 }
832
833
834 #endif /* HAVE_LIBPNG */
0 /*
1 * gd_security.c
2 *
3 * Implements buffer overflow check routines.
4 *
5 * Written 2004, Phil Knirsch.
6 * Based on netpbm fixes by Alan Cox.
7 *
8 */
9
10 #ifdef HAVE_CONFIG_H
11 #include "config.h"
12 #endif
13
14 #include <stdio.h>
15 #include <stdlib.h>
16 #include <limits.h>
17 #include "gd.h"
18
19 int overflow2(int a, int b)
20 {
21 if(a < 0 || b < 0) {
22 fprintf(stderr, "gd warning: one parameter to a memory allocation multiplication is negative, failing operation gracefully\n");
23 return 1;
24 }
25 if(b == 0)
26 return 0;
27 if(a > INT_MAX / b) {
28 fprintf(stderr, "gd warning: product of memory allocation multiplication would exceed INT_MAX, failing operation gracefully\n");
29 return 1;
30 }
31 return 0;
32 }
0
1 #ifdef HAVE_CONFIG_H
2 #include "config.h"
3 #endif
4
5 #include <stdio.h>
6 #include <math.h>
7 #include <string.h>
8 #include <stdlib.h>
9 #include "gd.h"
10
11 #define TRUE 1
12 #define FALSE 0
13
14 /* Use this for commenting out debug-print statements. */
15 /* Just use the first '#define' to allow all the prints... */
16 /*#define GD_SS_DBG(s) (s) */
17 #define GD_SS_DBG(s)
18
19 #ifdef HAVE_LIBPNG
20 BGD_DECLARE(void) gdImagePngToSink (gdImagePtr im, gdSinkPtr outSink)
21 {
22 gdIOCtx *out = gdNewSSCtx (NULL, outSink);
23 gdImagePngCtx (im, out);
24 out->gd_free (out);
25 }
26
27 BGD_DECLARE(gdImagePtr) gdImageCreateFromPngSource (gdSourcePtr inSource)
28 {
29 gdIOCtx *in = gdNewSSCtx (inSource, NULL);
30 gdImagePtr im;
31
32 im = gdImageCreateFromPngCtx (in);
33
34 in->gd_free (in);
35
36 return im;
37 }
38 #else /* no HAVE_LIBPNG */
39 BGD_DECLARE(void) gdImagePngToSink (gdImagePtr im, gdSinkPtr outSink)
40 {
41 fprintf (stderr, "PNG support is not available\n");
42 }
43
44 BGD_DECLARE(gdImagePtr) gdImageCreateFromPngSource (gdSourcePtr inSource)
45 {
46 fprintf (stderr, "PNG support is not available\n");
47 return NULL;
48 }
49 #endif /* HAVE_LIBPNG */
0 /* TODO: oim and nim in the lower level functions;
1 correct use of stub (sigh). */
2
3 /* 2.0.12: a new adaptation from the same original, this time
4 by Barend Gehrels. My attempt to incorporate alpha channel
5 into the result worked poorly and degraded the quality of
6 palette conversion even when the source contained no
7 alpha channel data. This version does not attempt to produce
8 an output file with transparency in some of the palette
9 indexes, which, in practice, doesn't look so hot anyway. TBB */
10
11 /*
12 * gd_topal, adapted from jquant2.c
13 *
14 * Copyright (C) 1991-1996, Thomas G. Lane.
15 * This file is part of the Independent JPEG Group's software.
16 * For conditions of distribution and use, see the accompanying README file.
17 *
18 * This file contains 2-pass color quantization (color mapping) routines.
19 * These routines provide selection of a custom color map for an image,
20 * followed by mapping of the image to that color map, with optional
21 * Floyd-Steinberg dithering.
22 * It is also possible to use just the second pass to map to an arbitrary
23 * externally-given color map.
24 *
25 * Note: ordered dithering is not supported, since there isn't any fast
26 * way to compute intercolor distances; it's unclear that ordered dither's
27 * fundamental assumptions even hold with an irregularly spaced color map.
28 */
29
30 #ifdef ORIGINAL_LIB_JPEG
31
32 #define JPEG_INTERNALS
33
34 #include "jinclude.h"
35 #include "jpeglib.h"
36
37 #else
38
39 /*
40 * THOMAS BOUTELL & BAREND GEHRELS, february 2003
41 * adapted the code to work within gd rather than within libjpeg.
42 * If it is not working, it's not Thomas G. Lane's fault.
43 */
44
45 /*
46 SETTING THIS ONE CAUSES STRIPED IMAGE
47 to be done: solve this
48 #define ORIGINAL_LIB_JPEG_REVERSE_ODD_ROWS
49 */
50
51 #include <string.h>
52 #include "gd.h"
53 #include "gdhelpers.h"
54
55 /* (Re)define some defines known by libjpeg */
56 #define QUANT_2PASS_SUPPORTED
57
58 #define RGB_RED 0
59 #define RGB_GREEN 1
60 #define RGB_BLUE 2
61
62 #define JSAMPLE unsigned char
63 #define MAXJSAMPLE (gdMaxColors-1)
64 #define BITS_IN_JSAMPLE 8
65
66 #define JSAMPROW int*
67 #define JDIMENSION int
68
69 #define METHODDEF(type) static type
70 #define LOCAL(type) static type
71
72
73 /* We assume that right shift corresponds to signed division by 2 with
74 * rounding towards minus infinity. This is correct for typical "arithmetic
75 * shift" instructions that shift in copies of the sign bit. But some
76 * C compilers implement >> with an unsigned shift. For these machines you
77 * must define RIGHT_SHIFT_IS_UNSIGNED.
78 * RIGHT_SHIFT provides a proper signed right shift of an INT32 quantity.
79 * It is only applied with constant shift counts. SHIFT_TEMPS must be
80 * included in the variables of any routine using RIGHT_SHIFT.
81 */
82
83 #ifdef RIGHT_SHIFT_IS_UNSIGNED
84 #define SHIFT_TEMPS INT32 shift_temp;
85 #define RIGHT_SHIFT(x,shft) \
86 ((shift_temp = (x)) < 0 ? \
87 (shift_temp >> (shft)) | ((~((INT32) 0)) << (32-(shft))) : \
88 (shift_temp >> (shft)))
89 #else
90 #define SHIFT_TEMPS
91 #define RIGHT_SHIFT(x,shft) ((x) >> (shft))
92 #endif
93
94
95 #define range_limit(x) { if(x<0) x=0; if (x>255) x=255; }
96
97
98 #ifndef INT16
99 #define INT16 short
100 #endif
101
102 #ifndef UINT16
103 #define UINT16 unsigned short
104 #endif
105
106 #ifndef INT32
107 #define INT32 int
108 #endif
109
110 #ifndef FAR
111 #define FAR
112 #endif
113
114
115
116 #ifndef boolean
117 #define boolean int
118 #endif
119
120 #ifndef TRUE
121 #define TRUE 1
122 #endif
123
124 #ifndef FALSE
125 #define FALSE 0
126 #endif
127
128
129 #define input_buf (oim->tpixels)
130 #define output_buf (nim->pixels)
131
132 #endif
133
134 #ifdef QUANT_2PASS_SUPPORTED
135
136
137 /*
138 * This module implements the well-known Heckbert paradigm for color
139 * quantization. Most of the ideas used here can be traced back to
140 * Heckbert's seminal paper
141 * Heckbert, Paul. "Color Image Quantization for Frame Buffer Display",
142 * Proc. SIGGRAPH '82, Computer Graphics v.16 #3 (July 1982), pp 297-304.
143 *
144 * In the first pass over the image, we accumulate a histogram showing the
145 * usage count of each possible color. To keep the histogram to a reasonable
146 * size, we reduce the precision of the input; typical practice is to retain
147 * 5 or 6 bits per color, so that 8 or 4 different input values are counted
148 * in the same histogram cell.
149 *
150 * Next, the color-selection step begins with a box representing the whole
151 * color space, and repeatedly splits the "largest" remaining box until we
152 * have as many boxes as desired colors. Then the mean color in each
153 * remaining box becomes one of the possible output colors.
154 *
155 * The second pass over the image maps each input pixel to the closest output
156 * color (optionally after applying a Floyd-Steinberg dithering correction).
157 * This mapping is logically trivial, but making it go fast enough requires
158 * considerable care.
159 *
160 * Heckbert-style quantizers vary a good deal in their policies for choosing
161 * the "largest" box and deciding where to cut it. The particular policies
162 * used here have proved out well in experimental comparisons, but better ones
163 * may yet be found.
164 *
165 * In earlier versions of the IJG code, this module quantized in YCbCr color
166 * space, processing the raw upsampled data without a color conversion step.
167 * This allowed the color conversion math to be done only once per colormap
168 * entry, not once per pixel. However, that optimization precluded other
169 * useful optimizations (such as merging color conversion with upsampling)
170 * and it also interfered with desired capabilities such as quantizing to an
171 * externally-supplied colormap. We have therefore abandoned that approach.
172 * The present code works in the post-conversion color space, typically RGB.
173 *
174 * To improve the visual quality of the results, we actually work in scaled
175 * RGB space, giving G distances more weight than R, and R in turn more than
176 * B. To do everything in integer math, we must use integer scale factors.
177 * The 2/3/1 scale factors used here correspond loosely to the relative
178 * weights of the colors in the NTSC grayscale equation.
179 * If you want to use this code to quantize a non-RGB color space, you'll
180 * probably need to change these scale factors.
181 */
182
183 #define R_SCALE 2 /* scale R distances by this much */
184 #define G_SCALE 3 /* scale G distances by this much */
185 #define B_SCALE 1 /* and B by this much */
186
187 /* Relabel R/G/B as components 0/1/2, respecting the RGB ordering defined
188 * in jmorecfg.h. As the code stands, it will do the right thing for R,G,B
189 * and B,G,R orders. If you define some other weird order in jmorecfg.h,
190 * you'll get compile errors until you extend this logic. In that case
191 * you'll probably want to tweak the histogram sizes too.
192 */
193
194 #if RGB_RED == 0
195 #define C0_SCALE R_SCALE
196 #endif
197 #if RGB_BLUE == 0
198 #define C0_SCALE B_SCALE
199 #endif
200 #if RGB_GREEN == 1
201 #define C1_SCALE G_SCALE
202 #endif
203 #if RGB_RED == 2
204 #define C2_SCALE R_SCALE
205 #endif
206 #if RGB_BLUE == 2
207 #define C2_SCALE B_SCALE
208 #endif
209
210
211 /*
212 * First we have the histogram data structure and routines for creating it.
213 *
214 * The number of bits of precision can be adjusted by changing these symbols.
215 * We recommend keeping 6 bits for G and 5 each for R and B.
216 * If you have plenty of memory and cycles, 6 bits all around gives marginally
217 * better results; if you are short of memory, 5 bits all around will save
218 * some space but degrade the results.
219 * To maintain a fully accurate histogram, we'd need to allocate a "long"
220 * (preferably unsigned long) for each cell. In practice this is overkill;
221 * we can get by with 16 bits per cell. Few of the cell counts will overflow,
222 * and clamping those that do overflow to the maximum value will give close-
223 * enough results. This reduces the recommended histogram size from 256Kb
224 * to 128Kb, which is a useful savings on PC-class machines.
225 * (In the second pass the histogram space is re-used for pixel mapping data;
226 * in that capacity, each cell must be able to store zero to the number of
227 * desired colors. 16 bits/cell is plenty for that too.)
228 * Since the JPEG code is intended to run in small memory model on 80x86
229 * machines, we can't just allocate the histogram in one chunk. Instead
230 * of a true 3-D array, we use a row of pointers to 2-D arrays. Each
231 * pointer corresponds to a C0 value (typically 2^5 = 32 pointers) and
232 * each 2-D array has 2^6*2^5 = 2048 or 2^6*2^6 = 4096 entries. Note that
233 * on 80x86 machines, the pointer row is in near memory but the actual
234 * arrays are in far memory (same arrangement as we use for image arrays).
235 */
236
237 #define MAXNUMCOLORS (MAXJSAMPLE+1) /* maximum size of colormap */
238
239 /* These will do the right thing for either R,G,B or B,G,R color order,
240 * but you may not like the results for other color orders.
241 */
242 #define HIST_C0_BITS 5 /* bits of precision in R/B histogram */
243 #define HIST_C1_BITS 6 /* bits of precision in G histogram */
244 #define HIST_C2_BITS 5 /* bits of precision in B/R histogram */
245
246 /* Number of elements along histogram axes. */
247 #define HIST_C0_ELEMS (1<<HIST_C0_BITS)
248 #define HIST_C1_ELEMS (1<<HIST_C1_BITS)
249 #define HIST_C2_ELEMS (1<<HIST_C2_BITS)
250
251 /* These are the amounts to shift an input value to get a histogram index. */
252 #define C0_SHIFT (BITS_IN_JSAMPLE-HIST_C0_BITS)
253 #define C1_SHIFT (BITS_IN_JSAMPLE-HIST_C1_BITS)
254 #define C2_SHIFT (BITS_IN_JSAMPLE-HIST_C2_BITS)
255
256
257 typedef UINT16 histcell; /* histogram cell; prefer an unsigned type */
258
259 typedef histcell FAR *histptr; /* for pointers to histogram cells */
260
261 typedef histcell hist1d[HIST_C2_ELEMS]; /* typedefs for the array */
262 typedef hist1d FAR *hist2d; /* type for the 2nd-level pointers */
263 typedef hist2d *hist3d; /* type for top-level pointer */
264
265
266 /* Declarations for Floyd-Steinberg dithering.
267 *
268 * Errors are accumulated into the array fserrors[], at a resolution of
269 * 1/16th of a pixel count. The error at a given pixel is propagated
270 * to its not-yet-processed neighbors using the standard F-S fractions,
271 * ... (here) 7/16
272 * 3/16 5/16 1/16
273 * We work left-to-right on even rows, right-to-left on odd rows.
274 *
275 * We can get away with a single array (holding one row's worth of errors)
276 * by using it to store the current row's errors at pixel columns not yet
277 * processed, but the next row's errors at columns already processed. We
278 * need only a few extra variables to hold the errors immediately around the
279 * current column. (If we are lucky, those variables are in registers, but
280 * even if not, they're probably cheaper to access than array elements are.)
281 *
282 * The fserrors[] array has (#columns + 2) entries; the extra entry at
283 * each end saves us from special-casing the first and last pixels.
284 * Each entry is three values long, one value for each color component.
285 *
286 * Note: on a wide image, we might not have enough room in a PC's near data
287 * segment to hold the error array; so it is allocated with alloc_large.
288 */
289
290 #if BITS_IN_JSAMPLE == 8
291 typedef INT16 FSERROR; /* 16 bits should be enough */
292 typedef int LOCFSERROR; /* use 'int' for calculation temps */
293 #else
294 typedef INT32 FSERROR; /* may need more than 16 bits */
295 typedef INT32 LOCFSERROR; /* be sure calculation temps are big enough */
296 #endif
297
298 typedef FSERROR FAR *FSERRPTR; /* pointer to error array (in FAR storage!) */
299
300
301 /* Private subobject */
302
303 typedef struct
304 {
305 #ifdef ORIGINAL_LIB_JPEG
306 struct jpeg_color_quantizer pub; /* public fields */
307
308 /* Space for the eventually created colormap is stashed here */
309 JSAMPARRAY sv_colormap; /* colormap allocated at init time */
310 int desired; /* desired # of colors = size of colormap */
311 boolean needs_zeroed; /* TRUE if next pass must zero histogram */
312 #endif
313
314 /* Variables for accumulating image statistics */
315 hist3d histogram; /* pointer to the histogram */
316
317
318 /* Variables for Floyd-Steinberg dithering */
319 FSERRPTR fserrors; /* accumulated errors */
320
321 boolean on_odd_row; /* flag to remember which row we are on */
322 int *error_limiter; /* table for clamping the applied error */
323 #ifndef ORIGINAL_LIB_JPEG
324 int *error_limiter_storage; /* gdMalloc'd storage for the above */
325 #endif
326 }
327 my_cquantizer;
328
329 typedef my_cquantizer *my_cquantize_ptr;
330
331
332 /*
333 * Prescan some rows of pixels.
334 * In this module the prescan simply updates the histogram, which has been
335 * initialized to zeroes by start_pass.
336 * An output_buf parameter is required by the method signature, but no data
337 * is actually output (in fact the buffer controller is probably passing a
338 * NULL pointer).
339 */
340
341 METHODDEF (void)
342 #ifndef ORIGINAL_LIB_JPEG
343 prescan_quantize (gdImagePtr oim, gdImagePtr nim, my_cquantize_ptr cquantize)
344 {
345 #else
346 prescan_quantize (j_decompress_ptr cinfo, JSAMPARRAY input_buf,
347 JSAMPARRAY output_buf, int num_rows)
348 {
349 my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
350 #endif
351 register JSAMPROW ptr;
352 register histptr histp;
353 register hist3d histogram = cquantize->histogram;
354 int row;
355 JDIMENSION col;
356 #ifdef ORIGINAL_LIB_JPEG
357 JDIMENSION width = cinfo->output_width;
358 #else
359 int width = oim->sx;
360 int num_rows = oim->sy;
361 #endif
362
363 for (row = 0; row < num_rows; row++)
364 {
365 ptr = input_buf[row];
366 for (col = width; col > 0; col--)
367 {
368 #ifdef ORIGINAL_LIB_JPEG
369 int r = GETJSAMPLE (ptr[0]) >> C0_SHIFT;
370 int g = GETJSAMPLE (ptr[1]) >> C1_SHIFT;
371 int b = GETJSAMPLE (ptr[2]) >> C2_SHIFT;
372 #else
373 int r = gdTrueColorGetRed (*ptr) >> C0_SHIFT;
374 int g = gdTrueColorGetGreen (*ptr) >> C1_SHIFT;
375 int b = gdTrueColorGetBlue (*ptr) >> C2_SHIFT;
376 /* 2.0.12: Steven Brown: support a single totally transparent
377 color in the original. */
378 if ((oim->transparent >= 0) && (*ptr == oim->transparent))
379 {
380 ptr++;
381 continue;
382 }
383 #endif
384 /* get pixel value and index into the histogram */
385 histp = &histogram[r][g][b];
386 /* increment, check for overflow and undo increment if so. */
387 if (++(*histp) == 0)
388 (*histp)--;
389 #ifdef ORIGINAL_LIB_JPEG
390 ptr += 3;
391 #else
392 ptr++;
393 #endif
394 }
395 }
396 }
397
398
399 /*
400 * Next we have the really interesting routines: selection of a colormap
401 * given the completed histogram.
402 * These routines work with a list of "boxes", each representing a rectangular
403 * subset of the input color space (to histogram precision).
404 */
405
406 typedef struct
407 {
408 /* The bounds of the box (inclusive); expressed as histogram indexes */
409 int c0min, c0max;
410 int c1min, c1max;
411 int c2min, c2max;
412 /* The volume (actually 2-norm) of the box */
413 INT32 volume;
414 /* The number of nonzero histogram cells within this box */
415 long colorcount;
416 }
417 box;
418
419 typedef box *boxptr;
420
421
422 LOCAL (boxptr) find_biggest_color_pop (boxptr boxlist, int numboxes)
423 /* Find the splittable box with the largest color population */
424 /* Returns NULL if no splittable boxes remain */
425 {
426 register boxptr boxp;
427 register int i;
428 register long maxc = 0;
429 boxptr which = NULL;
430
431 for (i = 0, boxp = boxlist; i < numboxes; i++, boxp++)
432 {
433 if (boxp->colorcount > maxc && boxp->volume > 0)
434 {
435 which = boxp;
436 maxc = boxp->colorcount;
437 }
438 }
439 return which;
440 }
441
442
443 LOCAL (boxptr) find_biggest_volume (boxptr boxlist, int numboxes)
444 /* Find the splittable box with the largest (scaled) volume */
445 /* Returns NULL if no splittable boxes remain */
446 {
447 register boxptr boxp;
448 register int i;
449 register INT32 maxv = 0;
450 boxptr which = NULL;
451
452 for (i = 0, boxp = boxlist; i < numboxes; i++, boxp++)
453 {
454 if (boxp->volume > maxv)
455 {
456 which = boxp;
457 maxv = boxp->volume;
458 }
459 }
460 return which;
461 }
462
463
464 LOCAL (void)
465 #ifndef ORIGINAL_LIB_JPEG
466 update_box (gdImagePtr oim, gdImagePtr nim, my_cquantize_ptr cquantize, boxptr boxp)
467 {
468 #else
469 update_box (j_decompress_ptr cinfo, boxptr boxp)
470 /* Shrink the min/max bounds of a box to enclose only nonzero elements, */
471 /* and recompute its volume and population */
472 {
473 my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
474 #endif
475 hist3d histogram = cquantize->histogram;
476 histptr histp;
477 int c0, c1, c2;
478 int c0min, c0max, c1min, c1max, c2min, c2max;
479 INT32 dist0, dist1, dist2;
480 long ccount;
481
482 c0min = boxp->c0min;
483 c0max = boxp->c0max;
484 c1min = boxp->c1min;
485 c1max = boxp->c1max;
486 c2min = boxp->c2min;
487 c2max = boxp->c2max;
488
489 if (c0max > c0min)
490 for (c0 = c0min; c0 <= c0max; c0++)
491 for (c1 = c1min; c1 <= c1max; c1++)
492 {
493 histp = &histogram[c0][c1][c2min];
494 for (c2 = c2min; c2 <= c2max; c2++)
495 if (*histp++ != 0)
496 {
497 boxp->c0min = c0min = c0;
498 goto have_c0min;
499 }
500 }
501 have_c0min:
502 if (c0max > c0min)
503 for (c0 = c0max; c0 >= c0min; c0--)
504 for (c1 = c1min; c1 <= c1max; c1++)
505 {
506 histp = &histogram[c0][c1][c2min];
507 for (c2 = c2min; c2 <= c2max; c2++)
508 if (*histp++ != 0)
509 {
510 boxp->c0max = c0max = c0;
511 goto have_c0max;
512 }
513 }
514 have_c0max:
515 if (c1max > c1min)
516 for (c1 = c1min; c1 <= c1max; c1++)
517 for (c0 = c0min; c0 <= c0max; c0++)
518 {
519 histp = &histogram[c0][c1][c2min];
520 for (c2 = c2min; c2 <= c2max; c2++)
521 if (*histp++ != 0)
522 {
523 boxp->c1min = c1min = c1;
524 goto have_c1min;
525 }
526 }
527 have_c1min:
528 if (c1max > c1min)
529 for (c1 = c1max; c1 >= c1min; c1--)
530 for (c0 = c0min; c0 <= c0max; c0++)
531 {
532 histp = &histogram[c0][c1][c2min];
533 for (c2 = c2min; c2 <= c2max; c2++)
534 if (*histp++ != 0)
535 {
536 boxp->c1max = c1max = c1;
537 goto have_c1max;
538 }
539 }
540 have_c1max:
541 if (c2max > c2min)
542 for (c2 = c2min; c2 <= c2max; c2++)
543 for (c0 = c0min; c0 <= c0max; c0++)
544 {
545 histp = &histogram[c0][c1min][c2];
546 for (c1 = c1min; c1 <= c1max; c1++, histp += HIST_C2_ELEMS)
547 if (*histp != 0)
548 {
549 boxp->c2min = c2min = c2;
550 goto have_c2min;
551 }
552 }
553 have_c2min:
554 if (c2max > c2min)
555 for (c2 = c2max; c2 >= c2min; c2--)
556 for (c0 = c0min; c0 <= c0max; c0++)
557 {
558 histp = &histogram[c0][c1min][c2];
559 for (c1 = c1min; c1 <= c1max; c1++, histp += HIST_C2_ELEMS)
560 if (*histp != 0)
561 {
562 boxp->c2max = c2max = c2;
563 goto have_c2max;
564 }
565 }
566 have_c2max:
567
568 /* Update box volume.
569 * We use 2-norm rather than real volume here; this biases the method
570 * against making long narrow boxes, and it has the side benefit that
571 * a box is splittable iff norm > 0.
572 * Since the differences are expressed in histogram-cell units,
573 * we have to shift back to JSAMPLE units to get consistent distances;
574 * after which, we scale according to the selected distance scale factors.
575 */
576 dist0 = ((c0max - c0min) << C0_SHIFT) * C0_SCALE;
577 dist1 = ((c1max - c1min) << C1_SHIFT) * C1_SCALE;
578 dist2 = ((c2max - c2min) << C2_SHIFT) * C2_SCALE;
579 boxp->volume = dist0 * dist0 + dist1 * dist1 + dist2 * dist2;
580
581 /* Now scan remaining volume of box and compute population */
582 ccount = 0;
583 for (c0 = c0min; c0 <= c0max; c0++)
584 for (c1 = c1min; c1 <= c1max; c1++)
585 {
586 histp = &histogram[c0][c1][c2min];
587 for (c2 = c2min; c2 <= c2max; c2++, histp++)
588 if (*histp != 0)
589 {
590 ccount++;
591 }
592 }
593 boxp->colorcount = ccount;
594 }
595
596
597 LOCAL (int)
598 #ifdef ORIGINAL_LIB_JPEG
599 median_cut (j_decompress_ptr cinfo, boxptr boxlist, int numboxes,
600 int desired_colors)
601 #else
602 median_cut (gdImagePtr oim, gdImagePtr nim, my_cquantize_ptr cquantize,
603 boxptr boxlist, int numboxes, int desired_colors)
604 #endif
605 /* Repeatedly select and split the largest box until we have enough boxes */
606 {
607 int n, lb;
608 int c0, c1, c2, cmax;
609 register boxptr b1, b2;
610
611 while (numboxes < desired_colors)
612 {
613 /* Select box to split.
614 * Current algorithm: by population for first half, then by volume.
615 */
616 if (numboxes * 2 <= desired_colors)
617 {
618 b1 = find_biggest_color_pop (boxlist, numboxes);
619 }
620 else
621 {
622 b1 = find_biggest_volume (boxlist, numboxes);
623 }
624 if (b1 == NULL) /* no splittable boxes left! */
625 break;
626 b2 = &boxlist[numboxes]; /* where new box will go */
627 /* Copy the color bounds to the new box. */
628 b2->c0max = b1->c0max;
629 b2->c1max = b1->c1max;
630 b2->c2max = b1->c2max;
631 b2->c0min = b1->c0min;
632 b2->c1min = b1->c1min;
633 b2->c2min = b1->c2min;
634 /* Choose which axis to split the box on.
635 * Current algorithm: longest scaled axis.
636 * See notes in update_box about scaling distances.
637 */
638 c0 = ((b1->c0max - b1->c0min) << C0_SHIFT) * C0_SCALE;
639 c1 = ((b1->c1max - b1->c1min) << C1_SHIFT) * C1_SCALE;
640 c2 = ((b1->c2max - b1->c2min) << C2_SHIFT) * C2_SCALE;
641 /* We want to break any ties in favor of green, then red, blue last.
642 * This code does the right thing for R,G,B or B,G,R color orders only.
643 */
644 #if RGB_RED == 0
645 cmax = c1;
646 n = 1;
647 if (c0 > cmax)
648 {
649 cmax = c0;
650 n = 0;
651 }
652 if (c2 > cmax)
653 {
654 n = 2;
655 }
656 #else
657 cmax = c1;
658 n = 1;
659 if (c2 > cmax)
660 {
661 cmax = c2;
662 n = 2;
663 }
664 if (c0 > cmax)
665 {
666 n = 0;
667 }
668 #endif
669 /* Choose split point along selected axis, and update box bounds.
670 * Current algorithm: split at halfway point.
671 * (Since the box has been shrunk to minimum volume,
672 * any split will produce two nonempty subboxes.)
673 * Note that lb value is max for lower box, so must be < old max.
674 */
675 switch (n)
676 {
677 case 0:
678 lb = (b1->c0max + b1->c0min) / 2;
679 b1->c0max = lb;
680 b2->c0min = lb + 1;
681 break;
682 case 1:
683 lb = (b1->c1max + b1->c1min) / 2;
684 b1->c1max = lb;
685 b2->c1min = lb + 1;
686 break;
687 case 2:
688 lb = (b1->c2max + b1->c2min) / 2;
689 b1->c2max = lb;
690 b2->c2min = lb + 1;
691 break;
692 }
693 /* Update stats for boxes */
694 #ifdef ORIGINAL_LIB_JPEG
695 update_box (cinfo, b1);
696 update_box (cinfo, b2);
697 #else
698 update_box (oim, nim, cquantize, b1);
699 update_box (oim, nim, cquantize, b2);
700 #endif
701 numboxes++;
702 }
703 return numboxes;
704 }
705
706
707 LOCAL (void)
708 #ifndef ORIGINAL_LIB_JPEG
709 compute_color (gdImagePtr oim, gdImagePtr nim, my_cquantize_ptr cquantize,
710 boxptr boxp, int icolor)
711 {
712 #else
713 compute_color (j_decompress_ptr cinfo, boxptr boxp, int icolor)
714 /* Compute representative color for a box, put it in colormap[icolor] */
715 {
716 /* Current algorithm: mean weighted by pixels (not colors) */
717 /* Note it is important to get the rounding correct! */
718 my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
719 #endif
720 hist3d histogram = cquantize->histogram;
721 histptr histp;
722 int c0, c1, c2;
723 int c0min, c0max, c1min, c1max, c2min, c2max;
724 long count = 0; /* 2.0.28: = 0 */
725 long total = 0;
726 long c0total = 0;
727 long c1total = 0;
728 long c2total = 0;
729
730 c0min = boxp->c0min;
731 c0max = boxp->c0max;
732 c1min = boxp->c1min;
733 c1max = boxp->c1max;
734 c2min = boxp->c2min;
735 c2max = boxp->c2max;
736
737 for (c0 = c0min; c0 <= c0max; c0++)
738 for (c1 = c1min; c1 <= c1max; c1++)
739 {
740 histp = &histogram[c0][c1][c2min];
741 for (c2 = c2min; c2 <= c2max; c2++)
742 {
743 if ((count = *histp++) != 0)
744 {
745 total += count;
746 c0total +=
747 ((c0 << C0_SHIFT) + ((1 << C0_SHIFT) >> 1)) * count;
748 c1total +=
749 ((c1 << C1_SHIFT) + ((1 << C1_SHIFT) >> 1)) * count;
750 c2total +=
751 ((c2 << C2_SHIFT) + ((1 << C2_SHIFT) >> 1)) * count;
752 }
753 }
754 }
755
756 #ifdef ORIGINAL_LIB_JPEG
757 cinfo->colormap[0][icolor] = (JSAMPLE) ((c0total + (total >> 1)) / total);
758 cinfo->colormap[1][icolor] = (JSAMPLE) ((c1total + (total >> 1)) / total);
759 cinfo->colormap[2][icolor] = (JSAMPLE) ((c2total + (total >> 1)) / total);
760 #else
761 /* 2.0.16: Paul den Dulk found an occasion where total can be 0 */
762 if (count)
763 {
764 nim->red[icolor] = (int) ((c0total + (total >> 1)) / total);
765 nim->green[icolor] = (int) ((c1total + (total >> 1)) / total);
766 nim->blue[icolor] = (int) ((c2total + (total >> 1)) / total);
767 }
768 else
769 {
770 nim->red[icolor] = 255;
771 nim->green[icolor] = 255;
772 nim->blue[icolor] = 255;
773 }
774 nim->open[icolor] = 0;
775 #endif
776 }
777
778
779 LOCAL (void)
780 #ifdef ORIGINAL_LIB_JPEG
781 select_colors (j_decompress_ptr cinfo, int desired_colors)
782 #else
783 select_colors (gdImagePtr oim, gdImagePtr nim, my_cquantize_ptr cquantize, int desired_colors)
784 #endif
785 /* Master routine for color selection */
786 {
787 boxptr boxlist;
788 int numboxes;
789 int i;
790
791 /* Allocate workspace for box list */
792 #ifdef ORIGINAL_LIB_JPEG
793 boxlist = (boxptr) (*cinfo->mem->alloc_small)
794 ((j_common_ptr) cinfo, JPOOL_IMAGE, desired_colors * SIZEOF (box));
795 #else
796 /* This can't happen because we clamp desired_colors at gdMaxColors,
797 but anyway */
798 if (overflow2(desired_colors, sizeof (box))) {
799 return;
800 }
801 boxlist = (boxptr) gdMalloc (desired_colors * sizeof (box));
802 if (!boxlist) {
803 return;
804 }
805 #endif
806 /* Initialize one box containing whole space */
807 numboxes = 1;
808 boxlist[0].c0min = 0;
809 boxlist[0].c0max = MAXJSAMPLE >> C0_SHIFT;
810 boxlist[0].c1min = 0;
811 boxlist[0].c1max = MAXJSAMPLE >> C1_SHIFT;
812 boxlist[0].c2min = 0;
813 boxlist[0].c2max = MAXJSAMPLE >> C2_SHIFT;
814 #ifdef ORIGINAL_LIB_JPEG
815 /* Shrink it to actually-used volume and set its statistics */
816 update_box (cinfo, &boxlist[0]);
817 /* Perform median-cut to produce final box list */
818 numboxes = median_cut (cinfo, boxlist, numboxes, desired_colors);
819 /* Compute the representative color for each box, fill colormap */
820 for (i = 0; i < numboxes; i++)
821 compute_color (cinfo, &boxlist[i], i);
822 cinfo->actual_number_of_colors = numboxes;
823 TRACEMS1 (cinfo, 1, JTRC_QUANT_SELECTED, numboxes);
824 #else
825 /* Shrink it to actually-used volume and set its statistics */
826 update_box (oim, nim, cquantize, &boxlist[0]);
827 /* Perform median-cut to produce final box list */
828 numboxes = median_cut (oim, nim, cquantize, boxlist, numboxes, desired_colors);
829 /* Compute the representative color for each box, fill colormap */
830 for (i = 0; i < numboxes; i++)
831 compute_color (oim, nim, cquantize, &boxlist[i], i);
832 nim->colorsTotal = numboxes;
833
834 /* If we had a pure transparency color, add it as the last palette entry.
835 * Skip incrementing the color count so that the dither / matching phase
836 * won't use it on pixels that shouldn't have been transparent. We'll
837 * increment it after all that finishes. */
838 if (oim->transparent >= 0)
839 {
840 /* Save the transparent color. */
841 nim->red[nim->colorsTotal] = gdTrueColorGetRed (oim->transparent);
842 nim->green[nim->colorsTotal] = gdTrueColorGetGreen (oim->transparent);
843 nim->blue[nim->colorsTotal] = gdTrueColorGetBlue (oim->transparent);
844 nim->alpha[nim->colorsTotal] = gdAlphaTransparent;
845 nim->open[nim->colorsTotal] = 0;
846 }
847
848 gdFree (boxlist);
849 #endif
850 }
851
852
853 /*
854 * These routines are concerned with the time-critical task of mapping input
855 * colors to the nearest color in the selected colormap.
856 *
857 * We re-use the histogram space as an "inverse color map", essentially a
858 * cache for the results of nearest-color searches. All colors within a
859 * histogram cell will be mapped to the same colormap entry, namely the one
860 * closest to the cell's center. This may not be quite the closest entry to
861 * the actual input color, but it's almost as good. A zero in the cache
862 * indicates we haven't found the nearest color for that cell yet; the array
863 * is cleared to zeroes before starting the mapping pass. When we find the
864 * nearest color for a cell, its colormap index plus one is recorded in the
865 * cache for future use. The pass2 scanning routines call fill_inverse_cmap
866 * when they need to use an unfilled entry in the cache.
867 *
868 * Our method of efficiently finding nearest colors is based on the "locally
869 * sorted search" idea described by Heckbert and on the incremental distance
870 * calculation described by Spencer W. Thomas in chapter III.1 of Graphics
871 * Gems II (James Arvo, ed. Academic Press, 1991). Thomas points out that
872 * the distances from a given colormap entry to each cell of the histogram can
873 * be computed quickly using an incremental method: the differences between
874 * distances to adjacent cells themselves differ by a constant. This allows a
875 * fairly fast implementation of the "brute force" approach of computing the
876 * distance from every colormap entry to every histogram cell. Unfortunately,
877 * it needs a work array to hold the best-distance-so-far for each histogram
878 * cell (because the inner loop has to be over cells, not colormap entries).
879 * The work array elements have to be INT32s, so the work array would need
880 * 256Kb at our recommended precision. This is not feasible in DOS machines.
881 *
882 * To get around these problems, we apply Thomas' method to compute the
883 * nearest colors for only the cells within a small subbox of the histogram.
884 * The work array need be only as big as the subbox, so the memory usage
885 * problem is solved. Furthermore, we need not fill subboxes that are never
886 * referenced in pass2; many images use only part of the color gamut, so a
887 * fair amount of work is saved. An additional advantage of this
888 * approach is that we can apply Heckbert's locality criterion to quickly
889 * eliminate colormap entries that are far away from the subbox; typically
890 * three-fourths of the colormap entries are rejected by Heckbert's criterion,
891 * and we need not compute their distances to individual cells in the subbox.
892 * The speed of this approach is heavily influenced by the subbox size: too
893 * small means too much overhead, too big loses because Heckbert's criterion
894 * can't eliminate as many colormap entries. Empirically the best subbox
895 * size seems to be about 1/512th of the histogram (1/8th in each direction).
896 *
897 * Thomas' article also describes a refined method which is asymptotically
898 * faster than the brute-force method, but it is also far more complex and
899 * cannot efficiently be applied to small subboxes. It is therefore not
900 * useful for programs intended to be portable to DOS machines. On machines
901 * with plenty of memory, filling the whole histogram in one shot with Thomas'
902 * refined method might be faster than the present code --- but then again,
903 * it might not be any faster, and it's certainly more complicated.
904 */
905
906
907 /* log2(histogram cells in update box) for each axis; this can be adjusted */
908 #define BOX_C0_LOG (HIST_C0_BITS-3)
909 #define BOX_C1_LOG (HIST_C1_BITS-3)
910 #define BOX_C2_LOG (HIST_C2_BITS-3)
911
912 #define BOX_C0_ELEMS (1<<BOX_C0_LOG) /* # of hist cells in update box */
913 #define BOX_C1_ELEMS (1<<BOX_C1_LOG)
914 #define BOX_C2_ELEMS (1<<BOX_C2_LOG)
915
916 #define BOX_C0_SHIFT (C0_SHIFT + BOX_C0_LOG)
917 #define BOX_C1_SHIFT (C1_SHIFT + BOX_C1_LOG)
918 #define BOX_C2_SHIFT (C2_SHIFT + BOX_C2_LOG)
919
920
921 /*
922 * The next three routines implement inverse colormap filling. They could
923 * all be folded into one big routine, but splitting them up this way saves
924 * some stack space (the mindist[] and bestdist[] arrays need not coexist)
925 * and may allow some compilers to produce better code by registerizing more
926 * inner-loop variables.
927 */
928
929 LOCAL (int)
930 find_nearby_colors (
931 #ifdef ORIGINAL_LIB_JPEG
932 j_decompress_ptr cinfo,
933 #else
934 gdImagePtr oim, gdImagePtr nim, my_cquantize_ptr cquantize,
935 #endif
936 int minc0, int minc1, int minc2, JSAMPLE colorlist[])
937 /* Locate the colormap entries close enough to an update box to be candidates
938 * for the nearest entry to some cell(s) in the update box. The update box
939 * is specified by the center coordinates of its first cell. The number of
940 * candidate colormap entries is returned, and their colormap indexes are
941 * placed in colorlist[].
942 * This routine uses Heckbert's "locally sorted search" criterion to select
943 * the colors that need further consideration.
944 */
945 {
946 #ifdef ORIGINAL_LIB_JPEG
947 int numcolors = cinfo->actual_number_of_colors;
948 #else
949 int numcolors = nim->colorsTotal;
950 #endif
951 int maxc0, maxc1, maxc2;
952 int centerc0, centerc1, centerc2;
953 int i, x, ncolors;
954 INT32 minmaxdist, min_dist, max_dist, tdist;
955 INT32 mindist[MAXNUMCOLORS]; /* min distance to colormap entry i */
956
957 /* Compute true coordinates of update box's upper corner and center.
958 * Actually we compute the coordinates of the center of the upper-corner
959 * histogram cell, which are the upper bounds of the volume we care about.
960 * Note that since ">>" rounds down, the "center" values may be closer to
961 * min than to max; hence comparisons to them must be "<=", not "<".
962 */
963 maxc0 = minc0 + ((1 << BOX_C0_SHIFT) - (1 << C0_SHIFT));
964 centerc0 = (minc0 + maxc0) >> 1;
965 maxc1 = minc1 + ((1 << BOX_C1_SHIFT) - (1 << C1_SHIFT));
966 centerc1 = (minc1 + maxc1) >> 1;
967 maxc2 = minc2 + ((1 << BOX_C2_SHIFT) - (1 << C2_SHIFT));
968 centerc2 = (minc2 + maxc2) >> 1;
969
970 /* For each color in colormap, find:
971 * 1. its minimum squared-distance to any point in the update box
972 * (zero if color is within update box);
973 * 2. its maximum squared-distance to any point in the update box.
974 * Both of these can be found by considering only the corners of the box.
975 * We save the minimum distance for each color in mindist[];
976 * only the smallest maximum distance is of interest.
977 */
978 minmaxdist = 0x7FFFFFFFL;
979
980 for (i = 0; i < numcolors; i++)
981 {
982 /* We compute the squared-c0-distance term, then add in the other two. */
983 #ifdef ORIGINAL_LIB_JPEG
984 x = GETJSAMPLE (cinfo->colormap[0][i]);
985 #else
986 x = nim->red[i];
987 #endif
988 if (x < minc0)
989 {
990 tdist = (x - minc0) * C0_SCALE;
991 min_dist = tdist * tdist;
992 tdist = (x - maxc0) * C0_SCALE;
993 max_dist = tdist * tdist;
994 }
995 else if (x > maxc0)
996 {
997 tdist = (x - maxc0) * C0_SCALE;
998 min_dist = tdist * tdist;
999 tdist = (x - minc0) * C0_SCALE;
1000 max_dist = tdist * tdist;
1001 }
1002 else
1003 {
1004 /* within cell range so no contribution to min_dist */
1005 min_dist = 0;
1006 if (x <= centerc0)
1007 {
1008 tdist = (x - maxc0) * C0_SCALE;
1009 max_dist = tdist * tdist;
1010 }
1011 else
1012 {
1013 tdist = (x - minc0) * C0_SCALE;
1014 max_dist = tdist * tdist;
1015 }
1016 }
1017
1018 #ifdef ORIGINAL_LIB_JPEG
1019 x = GETJSAMPLE (cinfo->colormap[1][i]);
1020 #else
1021 x = nim->green[i];
1022 #endif
1023 if (x < minc1)
1024 {
1025 tdist = (x - minc1) * C1_SCALE;
1026 min_dist += tdist * tdist;
1027 tdist = (x - maxc1) * C1_SCALE;
1028 max_dist += tdist * tdist;
1029 }
1030 else if (x > maxc1)
1031 {
1032 tdist = (x - maxc1) * C1_SCALE;
1033 min_dist += tdist * tdist;
1034 tdist = (x - minc1) * C1_SCALE;
1035 max_dist += tdist * tdist;
1036 }
1037 else
1038 {
1039 /* within cell range so no contribution to min_dist */
1040 if (x <= centerc1)
1041 {
1042 tdist = (x - maxc1) * C1_SCALE;
1043 max_dist += tdist * tdist;
1044 }
1045 else
1046 {
1047 tdist = (x - minc1) * C1_SCALE;
1048 max_dist += tdist * tdist;
1049 }
1050 }
1051
1052 #ifdef ORIGINAL_LIB_JPEG
1053 x = GETJSAMPLE (cinfo->colormap[2][i]);
1054 #else
1055 x = nim->blue[i];
1056 #endif
1057 if (x < minc2)
1058 {
1059 tdist = (x - minc2) * C2_SCALE;
1060 min_dist += tdist * tdist;
1061 tdist = (x - maxc2) * C2_SCALE;
1062 max_dist += tdist * tdist;
1063 }
1064 else if (x > maxc2)
1065 {
1066 tdist = (x - maxc2) * C2_SCALE;
1067 min_dist += tdist * tdist;
1068 tdist = (x - minc2) * C2_SCALE;
1069 max_dist += tdist * tdist;
1070 }
1071 else
1072 {
1073 /* within cell range so no contribution to min_dist */
1074 if (x <= centerc2)
1075 {
1076 tdist = (x - maxc2) * C2_SCALE;
1077 max_dist += tdist * tdist;
1078 }
1079 else
1080 {
1081 tdist = (x - minc2) * C2_SCALE;
1082 max_dist += tdist * tdist;
1083 }
1084 }
1085
1086 mindist[i] = min_dist; /* save away the results */
1087 if (max_dist < minmaxdist)
1088 minmaxdist = max_dist;
1089 }
1090
1091 /* Now we know that no cell in the update box is more than minmaxdist
1092 * away from some colormap entry. Therefore, only colors that are
1093 * within minmaxdist of some part of the box need be considered.
1094 */
1095 ncolors = 0;
1096 for (i = 0; i < numcolors; i++)
1097 {
1098 if (mindist[i] <= minmaxdist)
1099 colorlist[ncolors++] = (JSAMPLE) i;
1100 }
1101 return ncolors;
1102 }
1103
1104
1105 LOCAL (void) find_best_colors (
1106 #ifdef ORIGINAL_LIB_JPEG
1107 j_decompress_ptr cinfo,
1108 #else
1109 gdImagePtr oim, gdImagePtr nim, my_cquantize_ptr cquantize,
1110 #endif
1111 int minc0, int minc1, int minc2,
1112 int numcolors, JSAMPLE colorlist[],
1113 JSAMPLE bestcolor[])
1114 /* Find the closest colormap entry for each cell in the update box,
1115 * given the list of candidate colors prepared by find_nearby_colors.
1116 * Return the indexes of the closest entries in the bestcolor[] array.
1117 * This routine uses Thomas' incremental distance calculation method to
1118 * find the distance from a colormap entry to successive cells in the box.
1119 */
1120 {
1121 int ic0, ic1, ic2;
1122 int i, icolor;
1123 register INT32 *bptr; /* pointer into bestdist[] array */
1124 JSAMPLE *cptr; /* pointer into bestcolor[] array */
1125 INT32 dist0, dist1; /* initial distance values */
1126 register INT32 dist2; /* current distance in inner loop */
1127 INT32 xx0, xx1; /* distance increments */
1128 register INT32 xx2;
1129 INT32 inc0, inc1, inc2; /* initial values for increments */
1130 /* This array holds the distance to the nearest-so-far color for each cell */
1131 INT32 bestdist[BOX_C0_ELEMS * BOX_C1_ELEMS * BOX_C2_ELEMS];
1132
1133 /* Initialize best-distance for each cell of the update box */
1134 bptr = bestdist;
1135 for (i = BOX_C0_ELEMS * BOX_C1_ELEMS * BOX_C2_ELEMS - 1; i >= 0; i--)
1136 *bptr++ = 0x7FFFFFFFL;
1137
1138 /* For each color selected by find_nearby_colors,
1139 * compute its distance to the center of each cell in the box.
1140 * If that's less than best-so-far, update best distance and color number.
1141 */
1142
1143 /* Nominal steps between cell centers ("x" in Thomas article) */
1144 #define STEP_C0 ((1 << C0_SHIFT) * C0_SCALE)
1145 #define STEP_C1 ((1 << C1_SHIFT) * C1_SCALE)
1146 #define STEP_C2 ((1 << C2_SHIFT) * C2_SCALE)
1147
1148 for (i = 0; i < numcolors; i++)
1149 {
1150 int r, g, b;
1151 #ifdef ORIGINAL_LIB_JPEG
1152
1153 icolor = GETJSAMPLE (colorlist[i]);
1154 r = GETJSAMPLE (cinfo->colormap[0][icolor]);
1155 g = GETJSAMPLE (cinfo->colormap[1][icolor]);
1156 b = GETJSAMPLE (cinfo->colormap[2][icolor]);
1157 #else
1158 icolor = colorlist[i];
1159 r = nim->red[icolor];
1160 g = nim->green[icolor];
1161 b = nim->blue[icolor];
1162 #endif
1163
1164 /* Compute (square of) distance from minc0/c1/c2 to this color */
1165 inc0 = (minc0 - r) * C0_SCALE;
1166 dist0 = inc0 * inc0;
1167 inc1 = (minc1 - g) * C1_SCALE;
1168 dist0 += inc1 * inc1;
1169 inc2 = (minc2 - b) * C2_SCALE;
1170 dist0 += inc2 * inc2;
1171 /* Form the initial difference increments */
1172 inc0 = inc0 * (2 * STEP_C0) + STEP_C0 * STEP_C0;
1173 inc1 = inc1 * (2 * STEP_C1) + STEP_C1 * STEP_C1;
1174 inc2 = inc2 * (2 * STEP_C2) + STEP_C2 * STEP_C2;
1175 /* Now loop over all cells in box, updating distance per Thomas method */
1176 bptr = bestdist;
1177 cptr = bestcolor;
1178 xx0 = inc0;
1179 for (ic0 = BOX_C0_ELEMS - 1; ic0 >= 0; ic0--)
1180 {
1181 dist1 = dist0;
1182 xx1 = inc1;
1183 for (ic1 = BOX_C1_ELEMS - 1; ic1 >= 0; ic1--)
1184 {
1185 dist2 = dist1;
1186 xx2 = inc2;
1187 for (ic2 = BOX_C2_ELEMS - 1; ic2 >= 0; ic2--)
1188 {
1189 if (dist2 < *bptr)
1190 {
1191 *bptr = dist2;
1192 *cptr = (JSAMPLE) icolor;
1193 }
1194 dist2 += xx2;
1195 xx2 += 2 * STEP_C2 * STEP_C2;
1196 bptr++;
1197 cptr++;
1198 }
1199 dist1 += xx1;
1200 xx1 += 2 * STEP_C1 * STEP_C1;
1201 }
1202 dist0 += xx0;
1203 xx0 += 2 * STEP_C0 * STEP_C0;
1204 }
1205 }
1206 }
1207
1208
1209 LOCAL (void)
1210 fill_inverse_cmap (
1211 #ifdef ORIGINAL_LIB_JPEG
1212 j_decompress_ptr cinfo,
1213 #else
1214 gdImagePtr oim, gdImagePtr nim, my_cquantize_ptr cquantize,
1215 #endif
1216 int c0, int c1, int c2)
1217 /* Fill the inverse-colormap entries in the update box that contains */
1218 /* histogram cell c0/c1/c2. (Only that one cell MUST be filled, but */
1219 /* we can fill as many others as we wish.) */
1220 {
1221 #ifdef ORIGINAL_LIB_JPEG
1222 my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
1223 #endif
1224 hist3d histogram = cquantize->histogram;
1225 int minc0, minc1, minc2; /* lower left corner of update box */
1226 int ic0, ic1, ic2;
1227 register JSAMPLE *cptr; /* pointer into bestcolor[] array */
1228 register histptr cachep; /* pointer into main cache array */
1229 /* This array lists the candidate colormap indexes. */
1230 JSAMPLE colorlist[MAXNUMCOLORS];
1231 int numcolors; /* number of candidate colors */
1232 /* This array holds the actually closest colormap index for each cell. */
1233 JSAMPLE bestcolor[BOX_C0_ELEMS * BOX_C1_ELEMS * BOX_C2_ELEMS];
1234
1235 /* Convert cell coordinates to update box ID */
1236 c0 >>= BOX_C0_LOG;
1237 c1 >>= BOX_C1_LOG;
1238 c2 >>= BOX_C2_LOG;
1239
1240 /* Compute true coordinates of update box's origin corner.
1241 * Actually we compute the coordinates of the center of the corner
1242 * histogram cell, which are the lower bounds of the volume we care about.
1243 */
1244 minc0 = (c0 << BOX_C0_SHIFT) + ((1 << C0_SHIFT) >> 1);
1245 minc1 = (c1 << BOX_C1_SHIFT) + ((1 << C1_SHIFT) >> 1);
1246 minc2 = (c2 << BOX_C2_SHIFT) + ((1 << C2_SHIFT) >> 1);
1247
1248 /* Determine which colormap entries are close enough to be candidates
1249 * for the nearest entry to some cell in the update box.
1250 */
1251 #ifdef ORIGINAL_LIB_JPEG
1252 numcolors = find_nearby_colors (cinfo, minc0, minc1, minc2, colorlist);
1253
1254 /* Determine the actually nearest colors. */
1255 find_best_colors (cinfo, minc0, minc1, minc2, numcolors, colorlist,
1256 bestcolor);
1257 #else
1258 numcolors =
1259 find_nearby_colors (oim, nim, cquantize, minc0, minc1, minc2, colorlist);
1260 find_best_colors (oim, nim, cquantize, minc0, minc1, minc2, numcolors,
1261 colorlist, bestcolor);
1262 #endif
1263
1264 /* Save the best color numbers (plus 1) in the main cache array */
1265 c0 <<= BOX_C0_LOG; /* convert ID back to base cell indexes */
1266 c1 <<= BOX_C1_LOG;
1267 c2 <<= BOX_C2_LOG;
1268 cptr = bestcolor;
1269 for (ic0 = 0; ic0 < BOX_C0_ELEMS; ic0++)
1270 {
1271 for (ic1 = 0; ic1 < BOX_C1_ELEMS; ic1++)
1272 {
1273 cachep = &histogram[c0 + ic0][c1 + ic1][c2];
1274 for (ic2 = 0; ic2 < BOX_C2_ELEMS; ic2++)
1275 {
1276 #ifdef ORIGINAL_LIB_JPEG
1277 *cachep++ = (histcell) (GETJSAMPLE (*cptr++) + 1);
1278 #else
1279 *cachep++ = (histcell) ((*cptr++) + 1);
1280 #endif
1281 }
1282 }
1283 }
1284 }
1285
1286
1287 /*
1288 * Map some rows of pixels to the output colormapped representation.
1289 */
1290
1291 METHODDEF (void)
1292 #ifndef ORIGINAL_LIB_JPEG
1293 pass2_no_dither (gdImagePtr oim, gdImagePtr nim, my_cquantize_ptr cquantize)
1294 {
1295 register int *inptr;
1296 register unsigned char *outptr;
1297 int width = oim->sx;
1298 int num_rows = oim->sy;
1299 #else
1300 pass2_no_dither (j_decompress_ptr cinfo,
1301 JSAMPARRAY input_buf, JSAMPARRAY output_buf, int num_rows)
1302 /* This version performs no dithering */
1303 {
1304 my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
1305 register JSAMPROW inptr, outptr;
1306 JDIMENSION width = cinfo->output_width;
1307 #endif
1308 hist3d histogram = cquantize->histogram;
1309 register int c0, c1, c2;
1310 int row;
1311 JDIMENSION col;
1312 register histptr cachep;
1313
1314
1315 for (row = 0; row < num_rows; row++)
1316 {
1317 inptr = input_buf[row];
1318 outptr = output_buf[row];
1319 for (col = width; col > 0; col--)
1320 {
1321 /* get pixel value and index into the cache */
1322 int r, g, b;
1323 #ifdef ORIGINAL_LIB_JPEG
1324 r = GETJSAMPLE (*inptr++);
1325 g = GETJSAMPLE (*inptr++);
1326 b = GETJSAMPLE (*inptr++);
1327 #else
1328 r = gdTrueColorGetRed (*inptr);
1329 g = gdTrueColorGetGreen (*inptr);
1330 /*
1331 2.0.24: inptr must not be incremented until after
1332 transparency check, if any. Thanks to "Super Pikeman."
1333 */
1334 b = gdTrueColorGetBlue (*inptr);
1335
1336 /* If the pixel is transparent, we assign it the palette index that
1337 * will later be added at the end of the palette as the transparent
1338 * index. */
1339 if ((oim->transparent >= 0) && (oim->transparent == *inptr))
1340 {
1341 *outptr++ = nim->colorsTotal;
1342 inptr++;
1343 continue;
1344 }
1345 inptr++;
1346 #endif
1347 c0 = r >> C0_SHIFT;
1348 c1 = g >> C1_SHIFT;
1349 c2 = b >> C2_SHIFT;
1350 cachep = &histogram[c0][c1][c2];
1351 /* If we have not seen this color before, find nearest colormap entry */
1352 /* and update the cache */
1353 if (*cachep == 0)
1354 #ifdef ORIGINAL_LIB_JPEG
1355 fill_inverse_cmap (cinfo, c0, c1, c2);
1356 #else
1357 fill_inverse_cmap (oim, nim, cquantize, c0, c1, c2);
1358 #endif
1359 /* Now emit the colormap index for this cell */
1360 #ifdef ORIGINAL_LIB_JPEG
1361 *outptr++ = (JSAMPLE) (*cachep - 1);
1362 #else
1363 *outptr++ = (*cachep - 1);
1364 #endif
1365 }
1366 }
1367 }
1368
1369
1370 METHODDEF (void)
1371 #ifndef ORIGINAL_LIB_JPEG
1372 pass2_fs_dither (gdImagePtr oim, gdImagePtr nim, my_cquantize_ptr cquantize)
1373 {
1374 #else
1375 pass2_fs_dither (j_decompress_ptr cinfo,
1376 JSAMPARRAY input_buf, JSAMPARRAY output_buf, int num_rows)
1377 /* This version performs Floyd-Steinberg dithering */
1378 {
1379 my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
1380 JSAMPROW inptr; /* => current input pixel */
1381 #endif
1382 hist3d histogram = cquantize->histogram;
1383 register LOCFSERROR cur0, cur1, cur2; /* current error or pixel value */
1384 LOCFSERROR belowerr0, belowerr1, belowerr2; /* error for pixel below cur */
1385 LOCFSERROR bpreverr0, bpreverr1, bpreverr2; /* error for below/prev col */
1386 register FSERRPTR errorptr; /* => fserrors[] at column before current */
1387 histptr cachep;
1388 int dir; /* +1 or -1 depending on direction */
1389 int dir3; /* 3*dir, for advancing inptr & errorptr */
1390 int row;
1391 JDIMENSION col;
1392 #ifdef ORIGINAL_LIB_JPEG
1393 JSAMPROW outptr; /* => current output pixel */
1394 JDIMENSION width = cinfo->output_width;
1395 JSAMPLE *range_limit = cinfo->sample_range_limit;
1396 JSAMPROW colormap0 = cinfo->colormap[0];
1397 JSAMPROW colormap1 = cinfo->colormap[1];
1398 JSAMPROW colormap2 = cinfo->colormap[2];
1399 #else
1400 int *inptr; /* => current input pixel */
1401 unsigned char *outptr; /* => current output pixel */
1402 int width = oim->sx;
1403 int num_rows = oim->sy;
1404 int *colormap0 = nim->red;
1405 int *colormap1 = nim->green;
1406 int *colormap2 = nim->blue;
1407 #endif
1408 int *error_limit = cquantize->error_limiter;
1409
1410
1411 SHIFT_TEMPS for (row = 0; row < num_rows; row++)
1412 {
1413 inptr = input_buf[row];
1414 outptr = output_buf[row];
1415 if (cquantize->on_odd_row)
1416 {
1417 /* work right to left in this row */
1418 inptr += (width - 1) * 3; /* so point to rightmost pixel */
1419 outptr += width - 1;
1420 dir = -1;
1421 dir3 = -3;
1422 errorptr = cquantize->fserrors + (width + 1) * 3; /* => entry after last column */
1423 #ifdef ORIGINAL_LIB_JPEG_REVERSE_ODD_ROWS
1424 cquantize->on_odd_row = FALSE; /* flip for next time */
1425 #endif
1426 }
1427 else
1428 {
1429 /* work left to right in this row */
1430 dir = 1;
1431 dir3 = 3;
1432 errorptr = cquantize->fserrors; /* => entry before first real column */
1433 #ifdef ORIGINAL_LIB_JPEG_REVERSE_ODD_ROWS
1434 cquantize->on_odd_row = TRUE; /* flip for next time */
1435 #endif
1436 }
1437 /* Preset error values: no error propagated to first pixel from left */
1438 cur0 = cur1 = cur2 = 0;
1439 /* and no error propagated to row below yet */
1440 belowerr0 = belowerr1 = belowerr2 = 0;
1441 bpreverr0 = bpreverr1 = bpreverr2 = 0;
1442
1443 for (col = width; col > 0; col--)
1444 {
1445
1446 /* If this pixel is transparent, we want to assign it to the special
1447 * transparency color index past the end of the palette rather than
1448 * go through matching / dithering. */
1449 if ((oim->transparent >= 0) && (*inptr == oim->transparent))
1450 {
1451 *outptr = nim->colorsTotal;
1452 errorptr[0] = 0;
1453 errorptr[1] = 0;
1454 errorptr[2] = 0;
1455 errorptr[3] = 0;
1456 inptr += dir;
1457 outptr += dir;
1458 errorptr += dir3;
1459 continue;
1460 }
1461 /* curN holds the error propagated from the previous pixel on the
1462 * current line. Add the error propagated from the previous line
1463 * to form the complete error correction term for this pixel, and
1464 * round the error term (which is expressed * 16) to an integer.
1465 * RIGHT_SHIFT rounds towards minus infinity, so adding 8 is correct
1466 * for either sign of the error value.
1467 * Note: errorptr points to *previous* column's array entry.
1468 */
1469 cur0 = RIGHT_SHIFT (cur0 + errorptr[dir3 + 0] + 8, 4);
1470 cur1 = RIGHT_SHIFT (cur1 + errorptr[dir3 + 1] + 8, 4);
1471 cur2 = RIGHT_SHIFT (cur2 + errorptr[dir3 + 2] + 8, 4);
1472 /* Limit the error using transfer function set by init_error_limit.
1473 * See comments with init_error_limit for rationale.
1474 */
1475 cur0 = error_limit[cur0];
1476 cur1 = error_limit[cur1];
1477 cur2 = error_limit[cur2];
1478 /* Form pixel value + error, and range-limit to 0..MAXJSAMPLE.
1479 * The maximum error is +- MAXJSAMPLE (or less with error limiting);
1480 * this sets the required size of the range_limit array.
1481 */
1482 #ifdef ORIGINAL_LIB_JPEG
1483 cur0 += GETJSAMPLE (inptr[0]);
1484 cur1 += GETJSAMPLE (inptr[1]);
1485 cur2 += GETJSAMPLE (inptr[2]);
1486 cur0 = GETJSAMPLE (range_limit[cur0]);
1487 cur1 = GETJSAMPLE (range_limit[cur1]);
1488 cur2 = GETJSAMPLE (range_limit[cur2]);
1489 #else
1490 cur0 += gdTrueColorGetRed (*inptr);
1491 cur1 += gdTrueColorGetGreen (*inptr);
1492 cur2 += gdTrueColorGetBlue (*inptr);
1493 range_limit (cur0);
1494 range_limit (cur1);
1495 range_limit (cur2);
1496 #endif
1497
1498 /* Index into the cache with adjusted pixel value */
1499 cachep =
1500 &histogram[cur0 >> C0_SHIFT][cur1 >> C1_SHIFT][cur2 >> C2_SHIFT];
1501 /* If we have not seen this color before, find nearest colormap */
1502 /* entry and update the cache */
1503 if (*cachep == 0)
1504 #ifdef ORIGINAL_LIB_JPEG
1505 fill_inverse_cmap (cinfo, cur0 >> C0_SHIFT, cur1 >> C1_SHIFT,
1506 cur2 >> C2_SHIFT);
1507 #else
1508 fill_inverse_cmap (oim, nim, cquantize, cur0 >> C0_SHIFT,
1509 cur1 >> C1_SHIFT, cur2 >> C2_SHIFT);
1510 #endif
1511 /* Now emit the colormap index for this cell */
1512 {
1513 register int pixcode = *cachep - 1;
1514 *outptr = (JSAMPLE) pixcode;
1515 /* Compute representation error for this pixel */
1516 #define GETJSAMPLE
1517 cur0 -= GETJSAMPLE (colormap0[pixcode]);
1518 cur1 -= GETJSAMPLE (colormap1[pixcode]);
1519 cur2 -= GETJSAMPLE (colormap2[pixcode]);
1520 #undef GETJSAMPLE
1521 }
1522 /* Compute error fractions to be propagated to adjacent pixels.
1523 * Add these into the running sums, and simultaneously shift the
1524 * next-line error sums left by 1 column.
1525 */
1526 {
1527 register LOCFSERROR bnexterr, delta;
1528
1529 bnexterr = cur0; /* Process component 0 */
1530 delta = cur0 * 2;
1531 cur0 += delta; /* form error * 3 */
1532 errorptr[0] = (FSERROR) (bpreverr0 + cur0);
1533 cur0 += delta; /* form error * 5 */
1534 bpreverr0 = belowerr0 + cur0;
1535 belowerr0 = bnexterr;
1536 cur0 += delta; /* form error * 7 */
1537 bnexterr = cur1; /* Process component 1 */
1538 delta = cur1 * 2;
1539 cur1 += delta; /* form error * 3 */
1540 errorptr[1] = (FSERROR) (bpreverr1 + cur1);
1541 cur1 += delta; /* form error * 5 */
1542 bpreverr1 = belowerr1 + cur1;
1543 belowerr1 = bnexterr;
1544 cur1 += delta; /* form error * 7 */
1545 bnexterr = cur2; /* Process component 2 */
1546 delta = cur2 * 2;
1547 cur2 += delta; /* form error * 3 */
1548 errorptr[2] = (FSERROR) (bpreverr2 + cur2);
1549 cur2 += delta; /* form error * 5 */
1550 bpreverr2 = belowerr2 + cur2;
1551 belowerr2 = bnexterr;
1552 cur2 += delta; /* form error * 7 */
1553 }
1554 /* At this point curN contains the 7/16 error value to be propagated
1555 * to the next pixel on the current line, and all the errors for the
1556 * next line have been shifted over. We are therefore ready to move on.
1557 */
1558 #ifdef ORIGINAL_LIB_JPEG
1559 inptr += dir3; /* Advance pixel pointers to next column */
1560 #else
1561 inptr += dir; /* Advance pixel pointers to next column */
1562 #endif
1563 outptr += dir;
1564 errorptr += dir3; /* advance errorptr to current column */
1565 }
1566 /* Post-loop cleanup: we must unload the final error values into the
1567 * final fserrors[] entry. Note we need not unload belowerrN because
1568 * it is for the dummy column before or after the actual array.
1569 */
1570 errorptr[0] = (FSERROR) bpreverr0; /* unload prev errs into array */
1571 errorptr[1] = (FSERROR) bpreverr1;
1572 errorptr[2] = (FSERROR) bpreverr2;
1573 }
1574 }
1575
1576
1577 /*
1578 * Initialize the error-limiting transfer function (lookup table).
1579 * The raw F-S error computation can potentially compute error values of up to
1580 * +- MAXJSAMPLE. But we want the maximum correction applied to a pixel to be
1581 * much less, otherwise obviously wrong pixels will be created. (Typical
1582 * effects include weird fringes at color-area boundaries, isolated bright
1583 * pixels in a dark area, etc.) The standard advice for avoiding this problem
1584 * is to ensure that the "corners" of the color cube are allocated as output
1585 * colors; then repeated errors in the same direction cannot cause cascading
1586 * error buildup. However, that only prevents the error from getting
1587 * completely out of hand; Aaron Giles reports that error limiting improves
1588 * the results even with corner colors allocated.
1589 * A simple clamping of the error values to about +- MAXJSAMPLE/8 works pretty
1590 * well, but the smoother transfer function used below is even better. Thanks
1591 * to Aaron Giles for this idea.
1592 */
1593
1594 LOCAL (void)
1595 #ifdef ORIGINAL_LIB_JPEG
1596 init_error_limit (j_decompress_ptr cinfo)
1597 #else
1598 init_error_limit (gdImagePtr oim, gdImagePtr nim, my_cquantize_ptr cquantize)
1599 #endif
1600 /* Allocate and fill in the error_limiter table */
1601 {
1602 int *table;
1603 int in, out;
1604 #ifdef ORIGINAL_LIB_JPEG
1605 my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
1606 table = (int *) (*cinfo->mem->alloc_small)
1607 ((j_common_ptr) cinfo, JPOOL_IMAGE, (MAXJSAMPLE * 2 + 1) * SIZEOF (int));
1608 #else
1609 cquantize->error_limiter_storage =
1610 (int *) gdMalloc ((MAXJSAMPLE * 2 + 1) * sizeof (int));
1611 if (!cquantize->error_limiter_storage)
1612 {
1613 return;
1614 }
1615 table = cquantize->error_limiter_storage;
1616 #endif
1617
1618 table += MAXJSAMPLE; /* so can index -MAXJSAMPLE .. +MAXJSAMPLE */
1619 cquantize->error_limiter = table;
1620
1621 #define STEPSIZE ((MAXJSAMPLE+1)/16)
1622 /* Map errors 1:1 up to +- MAXJSAMPLE/16 */
1623 out = 0;
1624 for (in = 0; in < STEPSIZE; in++, out++)
1625 {
1626 table[in] = out;
1627 table[-in] = -out;
1628 }
1629 /* Map errors 1:2 up to +- 3*MAXJSAMPLE/16 */
1630 for (; in < STEPSIZE * 3; in++, out += (in & 1) ? 0 : 1)
1631 {
1632 table[in] = out;
1633 table[-in] = -out;
1634 }
1635 /* Clamp the rest to final out value (which is (MAXJSAMPLE+1)/8) */
1636 for (; in <= MAXJSAMPLE; in++)
1637 {
1638 table[in] = out;
1639 table[-in] = -out;
1640 }
1641 #undef STEPSIZE
1642 }
1643
1644
1645 /*
1646 * Finish up at the end of each pass.
1647 */
1648
1649 #ifdef ORIGINAL_LIB_JPEG
1650 METHODDEF (void)
1651 finish_pass1 (j_decompress_ptr cinfo)
1652 {
1653 my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
1654
1655 /* Select the representative colors and fill in cinfo->colormap */
1656 cinfo->colormap = cquantize->sv_colormap;
1657 select_colors (cinfo, cquantize->desired);
1658 /* Force next pass to zero the color index table */
1659 cquantize->needs_zeroed = TRUE;
1660 }
1661
1662
1663 METHODDEF (void)
1664 finish_pass2 (j_decompress_ptr cinfo)
1665 {
1666 /* no work */
1667 }
1668
1669 /*
1670 * Initialize for each processing pass.
1671 */
1672
1673 METHODDEF (void)
1674 start_pass_2_quant (j_decompress_ptr cinfo, boolean is_pre_scan)
1675 {
1676 my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
1677 hist3d histogram = cquantize->histogram;
1678 int i;
1679
1680 /* Only F-S dithering or no dithering is supported. */
1681 /* If user asks for ordered dither, give him F-S. */
1682 if (cinfo->dither_mode != JDITHER_NONE)
1683 cinfo->dither_mode = JDITHER_FS;
1684
1685 if (is_pre_scan)
1686 {
1687 /* Set up method pointers */
1688 cquantize->pub.color_quantize = prescan_quantize;
1689 cquantize->pub.finish_pass = finish_pass1;
1690 cquantize->needs_zeroed = TRUE; /* Always zero histogram */
1691 }
1692 else
1693 {
1694 /* Set up method pointers */
1695 if (cinfo->dither_mode == JDITHER_FS)
1696 cquantize->pub.color_quantize = pass2_fs_dither;
1697 else
1698 cquantize->pub.color_quantize = pass2_no_dither;
1699 cquantize->pub.finish_pass = finish_pass2;
1700
1701 /* Make sure color count is acceptable */
1702 i = cinfo->actual_number_of_colors;
1703 if (i < 1)
1704 ERREXIT1 (cinfo, JERR_QUANT_FEW_COLORS, 1);
1705 if (i > MAXNUMCOLORS)
1706 ERREXIT1 (cinfo, JERR_QUANT_MANY_COLORS, MAXNUMCOLORS);
1707
1708 if (cinfo->dither_mode == JDITHER_FS)
1709 {
1710 size_t arraysize = (size_t) ((cinfo->output_width + 2) *
1711 (3 * SIZEOF (FSERROR)));
1712 /* Allocate Floyd-Steinberg workspace if we didn't already. */
1713 if (cquantize->fserrors == NULL)
1714 cquantize->fserrors = (FSERRPTR) (*cinfo->mem->alloc_large)
1715 ((j_common_ptr) cinfo, JPOOL_IMAGE, arraysize);
1716 /* Initialize the propagated errors to zero. */
1717 jzero_far ((void FAR *) cquantize->fserrors, arraysize);
1718 /* Make the error-limit table if we didn't already. */
1719 if (cquantize->error_limiter == NULL)
1720 init_error_limit (cinfo);
1721 cquantize->on_odd_row = FALSE;
1722 }
1723
1724 }
1725 /* Zero the histogram or inverse color map, if necessary */
1726 if (cquantize->needs_zeroed)
1727 {
1728 for (i = 0; i < HIST_C0_ELEMS; i++)
1729 {
1730 jzero_far ((void FAR *) histogram[i],
1731 HIST_C1_ELEMS * HIST_C2_ELEMS * SIZEOF (histcell));
1732 }
1733 cquantize->needs_zeroed = FALSE;
1734 }
1735 }
1736
1737
1738 /*
1739 * Switch to a new external colormap between output passes.
1740 */
1741
1742 METHODDEF (void)
1743 new_color_map_2_quant (j_decompress_ptr cinfo)
1744 {
1745 my_cquantize_ptr cquantize = (my_cquantize_ptr) cinfo->cquantize;
1746
1747 /* Reset the inverse color map */
1748 cquantize->needs_zeroed = TRUE;
1749 }
1750 #else
1751 static void
1752 zeroHistogram (hist3d histogram)
1753 {
1754 int i;
1755 /* Zero the histogram or inverse color map */
1756 for (i = 0; i < HIST_C0_ELEMS; i++)
1757 {
1758 memset (histogram[i],
1759 0, HIST_C1_ELEMS * HIST_C2_ELEMS * sizeof (histcell));
1760 }
1761 }
1762 #endif
1763
1764 static void gdImageTrueColorToPaletteBody (gdImagePtr oim, int dither, int colorsWanted, gdImagePtr *cimP);
1765
1766 BGD_DECLARE(gdImagePtr) gdImageCreatePaletteFromTrueColor (gdImagePtr im, int dither, int colorsWanted)
1767 {
1768 gdImagePtr nim;
1769 gdImageTrueColorToPaletteBody(im, dither, colorsWanted, &nim);
1770 return nim;
1771 }
1772
1773 BGD_DECLARE(void) gdImageTrueColorToPalette (gdImagePtr im, int dither, int colorsWanted)
1774 {
1775 gdImageTrueColorToPaletteBody(im, dither, colorsWanted, 0);
1776 }
1777
1778 /*
1779 * Module initialization routine for 2-pass color quantization.
1780 */
1781
1782 #ifdef ORIGINAL_LIB_JPEG
1783 GLOBAL (void)
1784 jinit_2pass_quantizer (j_decompress_ptr cinfo)
1785 #else
1786 static void gdImageTrueColorToPaletteBody (gdImagePtr oim, int dither, int colorsWanted, gdImagePtr *cimP)
1787 #endif
1788 {
1789 my_cquantize_ptr cquantize = NULL;
1790 int i;
1791
1792 #ifndef ORIGINAL_LIB_JPEG
1793 /* Allocate the JPEG palette-storage */
1794 size_t arraysize;
1795 int maxColors = gdMaxColors;
1796 gdImagePtr nim;
1797 if (cimP) {
1798 nim = gdImageCreate(oim->sx, oim->sy);
1799 *cimP = nim;
1800 if (!nim) {
1801 return;
1802 }
1803 } else {
1804 nim = oim;
1805 }
1806 if (!oim->trueColor)
1807 {
1808 /* (Almost) nothing to do! */
1809 if (cimP) {
1810 gdImageCopy(nim, oim, 0, 0, 0, 0, oim->sx, oim->sy);
1811 *cimP = nim;
1812 }
1813 return;
1814 }
1815
1816 /* If we have a transparent color (the alphaless mode of transparency), we
1817 * must reserve a palette entry for it at the end of the palette. */
1818 if (oim->transparent >= 0)
1819 {
1820 maxColors--;
1821 }
1822 if (colorsWanted > maxColors)
1823 {
1824 colorsWanted = maxColors;
1825 }
1826 if (!cimP) {
1827 nim->pixels = gdCalloc (sizeof (unsigned char *), oim->sy);
1828 if (!nim->pixels)
1829 {
1830 /* No can do */
1831 goto outOfMemory;
1832 }
1833 for (i = 0; (i < nim->sy); i++)
1834 {
1835 nim->pixels[i] = gdCalloc (sizeof (unsigned char *), oim->sx);
1836 if (!nim->pixels[i])
1837 {
1838 goto outOfMemory;
1839 }
1840 }
1841 }
1842 #endif
1843
1844 #ifdef ORIGINAL_LIB_JPEG
1845 cquantize = (my_cquantize_ptr)
1846 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
1847 SIZEOF (my_cquantizer));
1848 cinfo->cquantize = (struct jpeg_color_quantizer *) cquantize;
1849 cquantize->pub.start_pass = start_pass_2_quant;
1850 cquantize->pub.new_color_map = new_color_map_2_quant;
1851 /* Make sure jdmaster didn't give me a case I can't handle */
1852 if (cinfo->out_color_components != 3)
1853 ERREXIT (cinfo, JERR_NOTIMPL);
1854 #else
1855 cquantize = (my_cquantize_ptr) gdCalloc (sizeof (my_cquantizer), 1);
1856 if (!cquantize)
1857 {
1858 /* No can do */
1859 goto outOfMemory;
1860 }
1861 #endif
1862 cquantize->fserrors = NULL; /* flag optional arrays not allocated */
1863 cquantize->error_limiter = NULL;
1864
1865
1866 /* Allocate the histogram/inverse colormap storage */
1867 #ifdef ORIGINAL_LIB_JPEG
1868 cquantize->histogram = (hist3d) (*cinfo->mem->alloc_small)
1869 ((j_common_ptr) cinfo, JPOOL_IMAGE, HIST_C0_ELEMS * SIZEOF (hist2d));
1870 for (i = 0; i < HIST_C0_ELEMS; i++)
1871 {
1872 cquantize->histogram[i] = (hist2d) (*cinfo->mem->alloc_large)
1873 ((j_common_ptr) cinfo, JPOOL_IMAGE,
1874 HIST_C1_ELEMS * HIST_C2_ELEMS * SIZEOF (histcell));
1875 }
1876 cquantize->needs_zeroed = TRUE; /* histogram is garbage now */
1877 #else
1878 cquantize->histogram = (hist3d) gdMalloc (HIST_C0_ELEMS * sizeof (hist2d));
1879 for (i = 0; i < HIST_C0_ELEMS; i++)
1880 {
1881 cquantize->histogram[i] =
1882 (hist2d) gdMalloc (HIST_C1_ELEMS * HIST_C2_ELEMS * sizeof (histcell));
1883 if (!cquantize->histogram[i])
1884 {
1885 goto outOfMemory;
1886 }
1887 }
1888 #endif
1889
1890 #ifdef ORIGINAL_LIB_JPEG
1891 /* Allocate storage for the completed colormap, if required.
1892 * We do this now since it is FAR storage and may affect
1893 * the memory manager's space calculations.
1894 */
1895 if (cinfo->enable_2pass_quant)
1896 {
1897 /* Make sure color count is acceptable */
1898 int desired = cinfo->desired_number_of_colors;
1899 /* Lower bound on # of colors ... somewhat arbitrary as long as > 0 */
1900 if (desired < 8)
1901 ERREXIT1 (cinfo, JERR_QUANT_FEW_COLORS, 8);
1902 /* Make sure colormap indexes can be represented by JSAMPLEs */
1903 if (desired > MAXNUMCOLORS)
1904 ERREXIT1 (cinfo, JERR_QUANT_MANY_COLORS, MAXNUMCOLORS);
1905 cquantize->sv_colormap = (*cinfo->mem->alloc_sarray)
1906 ((j_common_ptr) cinfo, JPOOL_IMAGE, (JDIMENSION) desired,
1907 (JDIMENSION) 3);
1908 cquantize->desired = desired;
1909 }
1910 else
1911 cquantize->sv_colormap = NULL;
1912
1913 /* Only F-S dithering or no dithering is supported. */
1914 /* If user asks for ordered dither, give him F-S. */
1915 if (cinfo->dither_mode != JDITHER_NONE)
1916 cinfo->dither_mode = JDITHER_FS;
1917
1918 /* Allocate Floyd-Steinberg workspace if necessary.
1919 * This isn't really needed until pass 2, but again it is FAR storage.
1920 * Although we will cope with a later change in dither_mode,
1921 * we do not promise to honor max_memory_to_use if dither_mode changes.
1922 */
1923 if (cinfo->dither_mode == JDITHER_FS)
1924 {
1925 cquantize->fserrors = (FSERRPTR) (*cinfo->mem->alloc_large)
1926 ((j_common_ptr) cinfo, JPOOL_IMAGE,
1927 (size_t) ((cinfo->output_width + 2) * (3 * SIZEOF (FSERROR))));
1928 /* Might as well create the error-limiting table too. */
1929 init_error_limit (cinfo);
1930 }
1931 #else
1932
1933 cquantize->fserrors = (FSERRPTR) gdMalloc (3 * sizeof (FSERROR));
1934 init_error_limit (oim, nim, cquantize);
1935 arraysize = (size_t) ((nim->sx + 2) * (3 * sizeof (FSERROR)));
1936 /* Allocate Floyd-Steinberg workspace. */
1937 cquantize->fserrors = gdRealloc(cquantize->fserrors, arraysize);
1938 if (!cquantize->fserrors)
1939 {
1940 goto outOfMemory;
1941 }
1942 memset(cquantize->fserrors, 0, arraysize);
1943 cquantize->on_odd_row = FALSE;
1944
1945 /* Do the work! */
1946 zeroHistogram (cquantize->histogram);
1947 prescan_quantize (oim, nim, cquantize);
1948 /* TBB 2.0.5: pass colorsWanted, not 256! */
1949 select_colors (oim, nim, cquantize, colorsWanted);
1950 zeroHistogram (cquantize->histogram);
1951 if (dither)
1952 {
1953 pass2_fs_dither (oim, nim, cquantize);
1954 }
1955 else
1956 {
1957 pass2_no_dither (oim, nim, cquantize);
1958 }
1959 #if 0 /* 2.0.12; we no longer attempt full alpha in palettes */
1960 if (cquantize->transparentIsPresent)
1961 {
1962 int mt = -1;
1963 int mtIndex = -1;
1964 for (i = 0; (i < im->colorsTotal); i++)
1965 {
1966 if (im->alpha[i] > mt)
1967 {
1968 mtIndex = i;
1969 mt = im->alpha[i];
1970 }
1971 }
1972 for (i = 0; (i < im->colorsTotal); i++)
1973 {
1974 if (im->alpha[i] == mt)
1975 {
1976 im->alpha[i] = gdAlphaTransparent;
1977 }
1978 }
1979 }
1980 if (cquantize->opaqueIsPresent)
1981 {
1982 int mo = 128;
1983 int moIndex = -1;
1984 for (i = 0; (i < im->colorsTotal); i++)
1985 {
1986 if (im->alpha[i] < mo)
1987 {
1988 moIndex = i;
1989 mo = im->alpha[i];
1990 }
1991 }
1992 for (i = 0; (i < im->colorsTotal); i++)
1993 {
1994 if (im->alpha[i] == mo)
1995 {
1996 im->alpha[i] = gdAlphaOpaque;
1997 }
1998 }
1999 }
2000 #endif
2001
2002 /* If we had a 'transparent' color, increment the color count so it's
2003 * officially in the palette and convert the transparent variable to point to
2004 * an index rather than a color (Its data already exists and transparent
2005 * pixels have already been mapped to it by this point, it is done late as to
2006 * avoid color matching / dithering with it). */
2007 if (oim->transparent >= 0)
2008 {
2009 nim->transparent = nim->colorsTotal;
2010 nim->colorsTotal++;
2011 }
2012
2013 /* Success! Get rid of the truecolor image data. */
2014 if (!cimP) {
2015 oim->trueColor = 0;
2016 /* Junk the truecolor pixels */
2017 for (i = 0; i < oim->sy; i++)
2018 {
2019 gdFree (oim->tpixels[i]);
2020 }
2021 gdFree (oim->tpixels);
2022 oim->tpixels = 0;
2023 }
2024 goto success;
2025 /* Tediously free stuff. */
2026 outOfMemory:
2027 if (oim->trueColor)
2028 {
2029 if (!cimP) {
2030 /* On failure only */
2031 for (i = 0; i < nim->sy; i++)
2032 {
2033 if (nim->pixels[i])
2034 {
2035 gdFree (nim->pixels[i]);
2036 }
2037 }
2038 if (nim->pixels)
2039 {
2040 gdFree (nim->pixels);
2041 }
2042 nim->pixels = 0;
2043 } else {
2044 gdImageDestroy(nim);
2045 *cimP = 0;
2046 }
2047 }
2048 success:
2049 for (i = 0; i < HIST_C0_ELEMS; i++)
2050 {
2051 if (cquantize->histogram[i])
2052 {
2053 gdFree (cquantize->histogram[i]);
2054 }
2055 }
2056 if (cquantize->histogram)
2057 {
2058 gdFree (cquantize->histogram);
2059 }
2060 if (cquantize->fserrors)
2061 {
2062 gdFree (cquantize->fserrors);
2063 }
2064 if (cquantize->error_limiter_storage)
2065 {
2066 gdFree (cquantize->error_limiter_storage);
2067 }
2068 if (cquantize)
2069 {
2070 gdFree (cquantize);
2071 }
2072
2073 #endif
2074 }
2075
2076 #endif
0
1
2 /*
3 WBMP: Wireless Bitmap Type 0: B/W, Uncompressed Bitmap
4 Specification of the WBMP format can be found in the file:
5 SPEC-WAESpec-19990524.pdf
6 You can download the WAP specification on: http://www.wapforum.com/
7
8 gd_wbmp.c
9
10 Copyright (C) Johan Van den Brande (johan@vandenbrande.com)
11
12 Fixed: gdImageWBMPPtr, gdImageWBMP
13
14 Recoded: gdImageWBMPCtx for use with my wbmp library
15 (wbmp library included, but you can find the latest distribution
16 at http://www.vandenbrande.com/wbmp)
17
18 Implemented: gdImageCreateFromWBMPCtx, gdImageCreateFromWBMP
19
20 ---------------------------------------------------------------------------
21
22 Parts of this code are from Maurice Smurlo.
23
24
25 ** Copyright (C) Maurice Szmurlo --- T-SIT --- January 2000
26 ** (Maurice.Szmurlo@info.unicaen.fr)
27
28 ** Permission to use, copy, modify, and distribute this software and its
29 ** documentation for any purpose and without fee is hereby granted, provided
30 ** that the above copyright notice appear in all copies and that both that
31 ** copyright notice and this permission notice appear in supporting
32 ** documentation. This software is provided "as is" without express or
33 ** implied warranty.
34
35 ---------------------------------------------------------------------------
36 Parts od this code are inspired by 'pbmtowbmp.c' and 'wbmptopbm.c' by
37 Terje Sannum <terje@looplab.com>.
38 **
39 ** Permission to use, copy, modify, and distribute this software and its
40 ** documentation for any purpose and without fee is hereby granted, provided
41 ** that the above copyright notice appear in all copies and that both that
42 ** copyright notice and this permission notice appear in supporting
43 ** documentation. This software is provided "as is" without express or
44 ** implied warranty.
45 **
46 ---------------------------------------------------------------------------
47
48 Todo:
49
50 gdCreateFromWBMP function for reading WBMP files
51
52 ----------------------------------------------------------------------------
53 */
54
55 #ifdef HAVE_CONFIG_H
56 #include "config.h"
57 #endif
58
59 #include <gd.h>
60 #include <gdfonts.h>
61 #include <stdio.h>
62 #include <stdlib.h>
63 #include <limits.h>
64
65 #include "wbmp.h"
66
67
68 /* gd_putout
69 ** ---------
70 ** Wrapper around gdPutC for use with writewbmp
71 **
72 */
73 void
74 gd_putout (int i, void *out)
75 {
76 gdPutC (i, (gdIOCtx *) out);
77 }
78
79
80 /* gd_getin
81 ** --------
82 ** Wrapper around gdGetC for use with readwbmp
83 **
84 */
85 int
86 gd_getin (void *in)
87 {
88 return (gdGetC ((gdIOCtx *) in));
89 }
90
91
92 /* gdImageWBMPCtx
93 ** --------------
94 ** Write the image as a wbmp file
95 ** Parameters are:
96 ** image: gd image structure;
97 ** fg: the index of the foreground color. any other value will be
98 ** considered as background and will not be written
99 ** out: the stream where to write
100 */
101 BGD_DECLARE(void) gdImageWBMPCtx (gdImagePtr image, int fg, gdIOCtx * out)
102 {
103
104 int x, y, pos;
105 Wbmp *wbmp;
106
107
108 /* create the WBMP */
109 if ((wbmp =
110 createwbmp (gdImageSX (image), gdImageSY (image), WBMP_WHITE)) == NULL)
111 fprintf (stderr, "Could not create WBMP\n");
112
113 /* fill up the WBMP structure */
114 pos = 0;
115 for (y = 0; y < gdImageSY (image); y++)
116 {
117 for (x = 0; x < gdImageSX (image); x++)
118 {
119 if (gdImageGetPixel (image, x, y) == fg)
120 {
121 wbmp->bitmap[pos] = WBMP_BLACK;
122 }
123 pos++;
124 }
125 }
126
127 /* write the WBMP to a gd file descriptor */
128 if (writewbmp (wbmp, &gd_putout, out))
129 fprintf (stderr, "Could not save WBMP\n");
130 /* des submitted this bugfix: gdFree the memory. */
131 freewbmp (wbmp);
132 }
133
134
135 /* gdImageCreateFromWBMPCtx
136 ** ------------------------
137 ** Create a gdImage from a WBMP file input from an gdIOCtx
138 */
139 BGD_DECLARE(gdImagePtr) gdImageCreateFromWBMPCtx (gdIOCtx * infile)
140 {
141 /* FILE *wbmp_file; */
142 Wbmp *wbmp;
143 gdImagePtr im = NULL;
144 int black, white;
145 int col, row, pos;
146
147 if (readwbmp (&gd_getin, infile, &wbmp))
148 return (NULL);
149
150 if (!(im = gdImageCreate (wbmp->width, wbmp->height)))
151 {
152 freewbmp (wbmp);
153 return (NULL);
154 }
155
156 /* create the background color */
157 white = gdImageColorAllocate (im, 255, 255, 255);
158 /* create foreground color */
159 black = gdImageColorAllocate (im, 0, 0, 0);
160
161 /* fill in image (in a wbmp 1 = white/ 0 = black) */
162 pos = 0;
163 for (row = 0; row < wbmp->height; row++)
164 {
165 for (col = 0; col < wbmp->width; col++)
166 {
167 if (wbmp->bitmap[pos++] == WBMP_WHITE)
168 {
169 gdImageSetPixel (im, col, row, white);
170 }
171 else
172 {
173 gdImageSetPixel (im, col, row, black);
174 }
175 }
176 }
177
178 freewbmp (wbmp);
179
180 return (im);
181 }
182
183
184 /* gdImageCreateFromWBMP
185 ** ---------------------
186 */
187 BGD_DECLARE(gdImagePtr) gdImageCreateFromWBMP (FILE * inFile)
188 {
189 gdImagePtr im;
190 gdIOCtx *in = gdNewFileCtx (inFile);
191 im = gdImageCreateFromWBMPCtx (in);
192 in->gd_free (in);
193 return (im);
194 }
195
196 BGD_DECLARE(gdImagePtr) gdImageCreateFromWBMPPtr (int size, void *data)
197 {
198 gdImagePtr im;
199 gdIOCtx *in = gdNewDynamicCtxEx (size, data, 0);
200 im = gdImageCreateFromWBMPCtx (in);
201 in->gd_free (in);
202 return im;
203 }
204
205 /* gdImageWBMP
206 ** -----------
207 */
208 BGD_DECLARE(void) gdImageWBMP (gdImagePtr im, int fg, FILE * outFile)
209 {
210 gdIOCtx *out = gdNewFileCtx (outFile);
211 gdImageWBMPCtx (im, fg, out);
212 out->gd_free (out);
213 }
214
215 /* gdImageWBMPPtr
216 ** --------------
217 */
218 BGD_DECLARE(void *)
219 gdImageWBMPPtr (gdImagePtr im, int *size, int fg)
220 {
221 void *rv;
222 gdIOCtx *out = gdNewDynamicCtx (2048, NULL);
223 gdImageWBMPCtx (im, fg, out);
224 rv = gdDPExtractData (out, size);
225 out->gd_free (out);
226 return rv;
227 }
228
229
0
1 #ifdef HAVE_CONFIG_H
2 #include "config.h"
3 #endif
4
5 #include "gd.h"
6 #include "gdhelpers.h"
7
8 #ifdef HAVE_LIBTTF
9 #define NEED_CACHE 1
10 #else
11 #ifdef HAVE_LIBFREETYPE
12 #define NEED_CACHE 1
13 #endif
14 #endif
15
16 #ifdef NEED_CACHE
17
18 /*
19 * gdcache.c
20 *
21 * Caches of pointers to user structs in which the least-recently-used
22 * element is replaced in the event of a cache miss after the cache has
23 * reached a given size.
24 *
25 * John Ellson (ellson@graphviz.org) Oct 31, 1997
26 *
27 * Test this with:
28 * gcc -o gdcache -g -Wall -DTEST gdcache.c
29 *
30 * The cache is implemented by a singly-linked list of elements
31 * each containing a pointer to a user struct that is being managed by
32 * the cache.
33 *
34 * The head structure has a pointer to the most-recently-used
35 * element, and elements are moved to this position in the list each
36 * time they are used. The head also contains pointers to three
37 * user defined functions:
38 * - a function to test if a cached userdata matches some keydata
39 * - a function to provide a new userdata struct to the cache
40 * if there has been a cache miss.
41 * - a function to release a userdata struct when it is
42 * no longer being managed by the cache
43 *
44 * In the event of a cache miss the cache is allowed to grow up to
45 * a specified maximum size. After the maximum size is reached then
46 * the least-recently-used element is discarded to make room for the
47 * new. The most-recently-returned value is always left at the
48 * beginning of the list after retrieval.
49 *
50 * In the current implementation the cache is traversed by a linear
51 * search from most-recent to least-recent. This linear search
52 * probably limits the usefulness of this implementation to cache
53 * sizes of a few tens of elements.
54 */
55
56 #include "gdcache.h"
57
58 /*********************************************************/
59 /* implementation */
60 /*********************************************************/
61
62
63 /* create a new cache */
64 gdCache_head_t *
65 gdCacheCreate (int size,
66 gdCacheTestFn_t gdCacheTest,
67 gdCacheFetchFn_t gdCacheFetch,
68 gdCacheReleaseFn_t gdCacheRelease)
69 {
70 gdCache_head_t *head;
71
72 head = (gdCache_head_t *) gdMalloc (sizeof (gdCache_head_t));
73 if (!head) {
74 return NULL;
75 }
76
77 head->mru = NULL;
78 head->size = size;
79 head->gdCacheTest = gdCacheTest;
80 head->gdCacheFetch = gdCacheFetch;
81 head->gdCacheRelease = gdCacheRelease;
82 return head;
83 }
84
85 void
86 gdCacheDelete (gdCache_head_t * head)
87 {
88 gdCache_element_t *elem, *prev;
89
90 elem = head->mru;
91 while (elem)
92 {
93 (*(head->gdCacheRelease)) (elem->userdata);
94 prev = elem;
95 elem = elem->next;
96 gdFree ((char *) prev);
97 }
98 gdFree ((char *) head);
99 }
100
101 void *
102 gdCacheGet (gdCache_head_t * head, void *keydata)
103 {
104 int i = 0;
105 gdCache_element_t *elem, *prev = NULL, *prevprev = NULL;
106 void *userdata;
107
108 elem = head->mru;
109 while (elem)
110 {
111 if ((*(head->gdCacheTest)) (elem->userdata, keydata))
112 {
113 if (i)
114 { /* if not already most-recently-used */
115 /* relink to top of list */
116 prev->next = elem->next;
117 elem->next = head->mru;
118 head->mru = elem;
119 }
120 return elem->userdata;
121 }
122 prevprev = prev;
123 prev = elem;
124 elem = elem->next;
125 i++;
126 }
127 userdata = (*(head->gdCacheFetch)) (&(head->error), keydata);
128 if (!userdata)
129 {
130 /* if there was an error in the fetch then don't cache */
131 return NULL;
132 }
133 if (i < head->size)
134 { /* cache still growing - add new elem */
135 elem = (gdCache_element_t *) gdMalloc (sizeof (gdCache_element_t));
136 if (!elem)
137 {
138 (*(head->gdCacheRelease)) (userdata);
139 return NULL;
140 }
141 }
142 else
143 { /* cache full - replace least-recently-used */
144 /* preveprev becomes new end of list */
145 prevprev->next = NULL;
146 elem = prev;
147 (*(head->gdCacheRelease)) (elem->userdata);
148 }
149 /* relink to top of list */
150 elem->next = head->mru;
151 head->mru = elem;
152 elem->userdata = userdata;
153 return userdata;
154 }
155
156
157
158 /*********************************************************/
159 /* test stub */
160 /*********************************************************/
161
162
163 #ifdef TEST
164
165 #include <stdio.h>
166
167 typedef struct
168 {
169 int key;
170 int value;
171 }
172 key_value_t;
173
174 static int
175 cacheTest (void *map, void *key)
176 {
177 return (((key_value_t *) map)->key == *(int *) key);
178 }
179
180 static void *
181 cacheFetch (char **error, void *key)
182 {
183 key_value_t *map;
184
185 map = (key_value_t *) gdMalloc (sizeof (key_value_t));
186 map->key = *(int *) key;
187 map->value = 3;
188
189 *error = NULL;
190 return (void *) map;
191 }
192
193 static void
194 cacheRelease (void *map)
195 {
196 gdFree ((char *) map);
197 }
198
199 int
200 main (char *argv[], int argc)
201 {
202 gdCache_head_t *cacheTable;
203 int elem, key;
204
205 cacheTable = gdCacheCreate (3, cacheTest, cacheFetch, cacheRelease);
206 if (!cacheTable) {
207 exit(1);
208 }
209
210 key = 20;
211 elem = *(int *) gdCacheGet (cacheTable, &key);
212 key = 30;
213 elem = *(int *) gdCacheGet (cacheTable, &key);
214 key = 40;
215 elem = *(int *) gdCacheGet (cacheTable, &key);
216 key = 50;
217 elem = *(int *) gdCacheGet (cacheTable, &key);
218 key = 30;
219 elem = *(int *) gdCacheGet (cacheTable, &key);
220 key = 30;
221 elem = *(int *) gdCacheGet (cacheTable, &key);
222
223 gdCacheDelete (cacheTable);
224
225 return 0;
226 }
227
228 #endif /* TEST */
229 #endif /* HAVE_LIBTTF */
0 #ifdef __cplusplus
1 extern "C" {
2 #endif
3
4 /*
5 * gdcache.h
6 *
7 * Caches of pointers to user structs in which the least-recently-used
8 * element is replaced in the event of a cache miss after the cache has
9 * reached a given size.
10 *
11 * John Ellson (ellson@graphviz.org) Oct 31, 1997
12 *
13 * Test this with:
14 * gcc -o gdcache -g -Wall -DTEST gdcache.c
15 *
16 * The cache is implemented by a singly-linked list of elements
17 * each containing a pointer to a user struct that is being managed by
18 * the cache.
19 *
20 * The head structure has a pointer to the most-recently-used
21 * element, and elements are moved to this position in the list each
22 * time they are used. The head also contains pointers to three
23 * user defined functions:
24 * - a function to test if a cached userdata matches some keydata
25 * - a function to provide a new userdata struct to the cache
26 * if there has been a cache miss.
27 * - a function to release a userdata struct when it is
28 * no longer being managed by the cache
29 *
30 * In the event of a cache miss the cache is allowed to grow up to
31 * a specified maximum size. After the maximum size is reached then
32 * the least-recently-used element is discarded to make room for the
33 * new. The most-recently-returned value is always left at the
34 * beginning of the list after retrieval.
35 *
36 * In the current implementation the cache is traversed by a linear
37 * search from most-recent to least-recent. This linear search
38 * probably limits the usefulness of this implementation to cache
39 * sizes of a few tens of elements.
40 */
41
42 /*********************************************************/
43 /* header */
44 /*********************************************************/
45
46 #ifdef HAVE_CONFIG_H
47 #include "config.h"
48 #endif
49
50 #include <stdlib.h>
51 #ifndef NULL
52 #define NULL (void *)0
53 #endif
54
55 /* user defined function templates */
56 typedef int (*gdCacheTestFn_t) (void *userdata, void *keydata);
57 typedef void *(*gdCacheFetchFn_t) (char **error, void *keydata);
58 typedef void (*gdCacheReleaseFn_t) (void *userdata);
59
60 /* element structure */
61 typedef struct gdCache_element_s gdCache_element_t;
62 struct gdCache_element_s
63 {
64 gdCache_element_t *next;
65 void *userdata;
66 };
67
68 /* head structure */
69 typedef struct gdCache_head_s gdCache_head_t;
70 struct gdCache_head_s
71 {
72 gdCache_element_t *mru;
73 int size;
74 char *error;
75 gdCacheTestFn_t gdCacheTest;
76 gdCacheFetchFn_t gdCacheFetch;
77 gdCacheReleaseFn_t gdCacheRelease;
78 };
79
80 /* function templates */
81 gdCache_head_t *gdCacheCreate (int size,
82 gdCacheTestFn_t gdCacheTest,
83 gdCacheFetchFn_t gdCacheFetch,
84 gdCacheReleaseFn_t gdCacheRelease);
85
86 void gdCacheDelete (gdCache_head_t * head);
87
88 void *gdCacheGet (gdCache_head_t * head, void *keydata);
89
90 #ifdef __cplusplus
91 }
92 #endif
0 #ifdef HAVE_CONFIG_H
1 #include "config.h"
2 #endif
3
4 #include <stdio.h>
5 #include <stdlib.h>
6 #ifndef WIN32
7 #include <unistd.h> /* For unlink function */
8 #endif
9
10 #include "gd.h"
11
12 /* A short program which converts a .png file into a .gd file, for
13 your convenience in creating images on the fly from a
14 basis image that must be loaded quickly. The .gd format
15 is not intended to be a general-purpose format. */
16
17 void CompareImages(char *msg, gdImagePtr im1, gdImagePtr im2);
18
19
20 int main(int argc, char **argv)
21 {
22 gdImagePtr im1, im2;
23 FILE *in;
24
25 if (argc != 3) {
26 fprintf(stderr, "Usage: gdcmpgif filename.gif filename.gif\n");
27 exit(1);
28 }
29 in = fopen(argv[1], "rb");
30 if (!in) {
31 fprintf(stderr, "Input file does not exist!\n");
32 exit(1);
33 }
34 im1 = gdImageCreateFromGif(in);
35 fclose(in);
36
37 if (!im1) {
38 fprintf(stderr, "Input is not in GIF format!\n");
39 exit(1);
40 }
41
42 in = fopen(argv[2], "rb");
43 if (!in) {
44 fprintf(stderr, "Input file 2 does not exist!\n");
45 exit(1);
46 }
47 im2 = gdImageCreateFromGif(in);
48 fclose(in);
49
50 if (!im2) {
51 fprintf(stderr, "Input 2 is not in GIF format!\n");
52 exit(1);
53 }
54
55 CompareImages("gdcmpgif", im1, im2);
56
57 gdImageDestroy(im1);
58 gdImageDestroy(im2);
59
60 return 0;
61 }
62
63 void CompareImages(char *msg, gdImagePtr im1, gdImagePtr im2)
64 {
65 int cmpRes;
66
67 cmpRes = gdImageCompare(im1, im2);
68
69 if (cmpRes & GD_CMP_IMAGE) {
70 printf("%%%s: ERROR images differ: BAD\n",msg);
71 } else if (cmpRes != 0) {
72 printf("%%%s: WARNING images differ: WARNING - Probably OK\n",msg);
73 } else {
74 printf("%%%s: OK\n",msg);
75 return;
76 }
77
78 if (cmpRes & (GD_CMP_SIZE_X + GD_CMP_SIZE_Y)) {
79 printf("-%s: INFO image sizes differ\n",msg);
80 }
81
82 if (cmpRes & GD_CMP_NUM_COLORS) {
83 printf("-%s: INFO number of pallette entries differ %d Vs. %d\n",msg,
84 im1->colorsTotal, im2->colorsTotal);
85 }
86
87 if (cmpRes & GD_CMP_COLOR) {
88 printf("-%s: INFO actual colours of pixels differ\n",msg);
89 }
90 }
91
92
0
1 #ifdef HAVE_CONFIG_H
2 #include "config.h"
3 #endif
4
5 #include <stdio.h>
6 #include <math.h>
7 #include <stdlib.h>
8 #include "gd.h"
9 #include "gdfontt.h"
10 #include "gdfonts.h"
11 #include "gdfontmb.h"
12 #include "gdfontl.h"
13 #include "gdfontg.h"
14
15 int
16 main (void)
17 {
18 #ifdef HAVE_LIBPNG
19 /* Input and output files */
20 FILE *in;
21 FILE *out;
22
23 /* Input and output images */
24 gdImagePtr im_in = 0, im_out = 0;
25
26 /* Brush image */
27 gdImagePtr brush;
28
29 /* Color indexes */
30 int white;
31 int blue;
32 int red;
33 int green;
34
35 /* Points for polygon */
36 gdPoint points[3];
37 int i;
38
39 /* gd fonts for font test */
40 gdFontPtr fonts[5];
41 int y;
42
43 /* Create output image, in true color. */
44 im_out = gdImageCreateTrueColor (256 + 384, 384);
45 /* 2.0.2: first color allocated would automatically be background in a
46 palette based image. Since this is a truecolor image, with an
47 automatic background of black, we must fill it explicitly. */
48 white = gdImageColorAllocate (im_out, 255, 255, 255);
49 gdImageFilledRectangle (im_out, 0, 0, gdImageSX (im_out),
50 gdImageSY (im_out), white);
51
52 /* Set transparent color. */
53 gdImageColorTransparent (im_out, white);
54
55 /* Try to load demoin.png and paste part of it into the
56 output image. */
57 in = fopen ("demoin.png", "rb");
58 if (!in)
59 {
60 fprintf (stderr, "Can't load source image; this demo\n");
61 fprintf (stderr, "is much more impressive if demoin.png\n");
62 fprintf (stderr, "is available.\n");
63 im_in = 0;
64 }
65 else
66 {
67 int a;
68 im_in = gdImageCreateFromPng (in);
69 fclose (in);
70 /* Now copy, and magnify as we do so */
71 gdImageCopyResampled (im_out, im_in, 32, 32, 0, 0, 192, 192, 255, 255);
72 /* Now display variously rotated space shuttles in a circle of our own */
73 for (a = 0; (a < 360); a += 45)
74 {
75 int cx = cos (a * .0174532925) * 128;
76 int cy = -sin (a * .0174532925) * 128;
77 gdImageCopyRotated (im_out, im_in,
78 256 + 192 + cx, 192 + cy,
79 0, 0, gdImageSX (im_in), gdImageSY (im_in), a);
80 }
81 }
82 red = gdImageColorAllocate (im_out, 255, 0, 0);
83 green = gdImageColorAllocate (im_out, 0, 255, 0);
84 blue = gdImageColorAllocate (im_out, 0, 0, 255);
85 /* Fat Rectangle */
86 gdImageSetThickness (im_out, 4);
87 gdImageLine (im_out, 16, 16, 240, 16, green);
88 gdImageLine (im_out, 240, 16, 240, 240, green);
89 gdImageLine (im_out, 240, 240, 16, 240, green);
90 gdImageLine (im_out, 16, 240, 16, 16, green);
91 gdImageSetThickness (im_out, 1);
92 /* Circle */
93 gdImageArc (im_out, 128, 128, 60, 20, 0, 720, blue);
94 /* Arc */
95 gdImageArc (im_out, 128, 128, 40, 40, 90, 270, blue);
96 /* Flood fill: doesn't do much on a continuously
97 variable tone jpeg original. */
98 gdImageFill (im_out, 8, 8, blue);
99 /* Polygon */
100 points[0].x = 64;
101 points[0].y = 0;
102 points[1].x = 0;
103 points[1].y = 128;
104 points[2].x = 128;
105 points[2].y = 128;
106 gdImageFilledPolygon (im_out, points, 3, green);
107 /* 2.0.12: Antialiased Polygon */
108 gdImageSetAntiAliased (im_out, green);
109 for (i = 0; (i < 3); i++)
110 {
111 points[i].x += 128;
112 }
113 gdImageFilledPolygon (im_out, points, 3, gdAntiAliased);
114 /* Brush. A fairly wild example also involving a line style! */
115 if (im_in)
116 {
117 int style[8];
118 brush = gdImageCreateTrueColor (16, 16);
119 gdImageCopyResized (brush, im_in,
120 0, 0, 0, 0,
121 gdImageSX (brush), gdImageSY (brush),
122 gdImageSX (im_in), gdImageSY (im_in));
123 gdImageSetBrush (im_out, brush);
124 /* With a style, so they won't overprint each other.
125 Normally, they would, yielding a fat-brush effect. */
126 style[0] = 0;
127 style[1] = 0;
128 style[2] = 0;
129 style[3] = 0;
130 style[4] = 0;
131 style[5] = 0;
132 style[6] = 0;
133 style[7] = 1;
134 gdImageSetStyle (im_out, style, 8);
135 /* Draw the styled, brushed line */
136 gdImageLine (im_out, 0, 255, 255, 0, gdStyledBrushed);
137 }
138 /* Text (non-truetype; see gdtestft for a freetype demo) */
139 fonts[0] = gdFontGetTiny ();
140 fonts[1] = gdFontGetSmall ();
141 fonts[2] = gdFontGetMediumBold ();
142 fonts[3] = gdFontGetLarge ();
143 fonts[4] = gdFontGetGiant ();
144 y = 0;
145 for (i = 0; (i <= 4); i++)
146 {
147 gdImageString (im_out, fonts[i], 32, 32 + y, (unsigned char *) "hi",
148 red);
149 y += fonts[i]->h;
150 }
151 y = 0;
152 for (i = 0; (i <= 4); i++)
153 {
154 gdImageStringUp (im_out, fonts[i], 64 + y, 64,
155 (unsigned char *) "hi", red);
156 y += fonts[i]->h;
157 }
158 /* Random antialiased lines; coordinates all over the image,
159 but the output will respect a small clipping rectangle */
160 gdImageSetClip (im_out, 0, gdImageSY (im_out) - 100,
161 100, gdImageSY (im_out));
162 /* Fixed seed for reproducibility of results */
163 srand (100);
164 for (i = 0; (i < 100); i++)
165 {
166 int x1 = rand () % gdImageSX (im_out);
167 int y1 = rand () % gdImageSY (im_out);
168 int x2 = rand () % gdImageSX (im_out);
169 int y2 = rand () % gdImageSY (im_out);
170 gdImageSetAntiAliased (im_out, white);
171 gdImageLine (im_out, x1, y1, x2, y2, gdAntiAliased);
172 }
173 /* Make output image interlaced (progressive, in the case of JPEG) */
174 gdImageInterlace (im_out, 1);
175 out = fopen ("demoout.png", "wb");
176 /* Write PNG */
177 gdImagePng (im_out, out);
178 fclose (out);
179 out = fopen ("demoout.gif", "wb");
180 /* Write GIF (2.0.28) */
181 gdImageGif (im_out, out);
182 fclose (out);
183 /* 2.0.12: also write a paletteized png comparable to the gif */
184 out = fopen ("demooutp.png", "wb");
185 gdImageTrueColorToPalette (im_out, 0, 256);
186 gdImagePng (im_out, out);
187 fclose (out);
188 gdImageDestroy (im_out);
189 if (im_in)
190 {
191 gdImageDestroy (im_in);
192 }
193 #else
194 fprintf (stderr, "No PNG library support.\n");
195 #endif /* HAVE_LIBPNG */
196 return 0;
197 }
0
1
2 /*
3 This is a header file for gd font, generated using
4 bdftogd version 0.51 by Jan Pazdziora, adelton@fi.muni.cz
5 from bdf font
6 -Misc-Fixed-Bold-R-Normal-Sans-15-140-75-75-C-90-ISO8859-2
7 at Mon Jan 26 14:45:58 1998.
8 The original bdf was holding following copyright:
9 "Libor Skarvada, libor@informatics.muni.cz"
10 */
11
12
13 #include "gdfontg.h"
14
15 char gdFontGiantData[] = {
16 /* Char 0 */
17 0, 0, 0, 0, 0, 0, 0, 0, 0,
18 0, 0, 0, 0, 0, 0, 0, 0, 0,
19 0, 0, 0, 0, 0, 0, 0, 0, 0,
20 0, 0, 0, 0, 0, 0, 0, 0, 0,
21 0, 0, 0, 0, 0, 0, 0, 0, 0,
22 0, 0, 0, 0, 0, 0, 0, 0, 0,
23 0, 0, 0, 0, 0, 0, 0, 0, 0,
24 0, 0, 0, 0, 0, 0, 0, 0, 0,
25 0, 0, 0, 0, 0, 0, 0, 0, 0,
26 0, 0, 0, 0, 0, 0, 0, 0, 0,
27 0, 0, 0, 0, 0, 0, 0, 0, 0,
28 0, 0, 0, 0, 0, 0, 0, 0, 0,
29 0, 0, 0, 0, 0, 0, 0, 0, 0,
30 0, 0, 0, 0, 0, 0, 0, 0, 0,
31 0, 0, 0, 0, 0, 0, 0, 0, 0,
32
33 /* Char 1 */
34 0, 0, 0, 0, 0, 0, 0, 0, 0,
35 0, 0, 0, 0, 0, 0, 0, 0, 0,
36 0, 0, 0, 0, 0, 0, 0, 0, 0,
37 0, 0, 0, 0, 0, 0, 0, 0, 0,
38 0, 0, 0, 0, 0, 0, 0, 0, 0,
39 0, 0, 0, 1, 1, 0, 0, 0, 0,
40 0, 0, 1, 1, 1, 1, 0, 0, 0,
41 0, 1, 1, 1, 1, 1, 1, 0, 0,
42 1, 1, 1, 1, 1, 1, 1, 1, 0,
43 0, 1, 1, 1, 1, 1, 1, 0, 0,
44 0, 0, 1, 1, 1, 1, 0, 0, 0,
45 0, 0, 0, 1, 1, 0, 0, 0, 0,
46 0, 0, 0, 0, 0, 0, 0, 0, 0,
47 0, 0, 0, 0, 0, 0, 0, 0, 0,
48 0, 0, 0, 0, 0, 0, 0, 0, 0,
49
50 /* Char 2 */
51 0, 0, 0, 0, 0, 0, 0, 0, 0,
52 1, 0, 1, 0, 1, 0, 1, 0, 0,
53 0, 1, 0, 1, 0, 1, 0, 1, 0,
54 1, 0, 1, 0, 1, 0, 1, 0, 0,
55 0, 1, 0, 1, 0, 1, 0, 1, 0,
56 1, 0, 1, 0, 1, 0, 1, 0, 0,
57 0, 1, 0, 1, 0, 1, 0, 1, 0,
58 1, 0, 1, 0, 1, 0, 1, 0, 0,
59 0, 1, 0, 1, 0, 1, 0, 1, 0,
60 1, 0, 1, 0, 1, 0, 1, 0, 0,
61 0, 1, 0, 1, 0, 1, 0, 1, 0,
62 1, 0, 1, 0, 1, 0, 1, 0, 0,
63 0, 1, 0, 1, 0, 1, 0, 1, 0,
64 1, 0, 1, 0, 1, 0, 1, 0, 0,
65 0, 1, 0, 1, 0, 1, 0, 1, 0,
66
67 /* Char 3 */
68 0, 0, 0, 0, 0, 0, 0, 0, 0,
69 0, 0, 0, 0, 0, 0, 0, 0, 0,
70 0, 0, 0, 0, 0, 0, 0, 0, 0,
71 1, 1, 0, 0, 1, 1, 0, 0, 0,
72 1, 1, 0, 0, 1, 1, 0, 0, 0,
73 1, 1, 1, 1, 1, 1, 0, 0, 0,
74 1, 1, 0, 0, 1, 1, 0, 0, 0,
75 1, 1, 0, 0, 1, 1, 0, 0, 0,
76 0, 0, 0, 0, 0, 0, 0, 0, 0,
77 0, 0, 1, 1, 1, 1, 1, 1, 0,
78 0, 0, 0, 0, 1, 1, 0, 0, 0,
79 0, 0, 0, 0, 1, 1, 0, 0, 0,
80 0, 0, 0, 0, 1, 1, 0, 0, 0,
81 0, 0, 0, 0, 1, 1, 0, 0, 0,
82 0, 0, 0, 0, 0, 0, 0, 0, 0,
83
84 /* Char 4 */
85 0, 0, 0, 0, 0, 0, 0, 0, 0,
86 0, 0, 0, 0, 0, 0, 0, 0, 0,
87 0, 0, 0, 0, 0, 0, 0, 0, 0,
88 1, 1, 1, 1, 1, 0, 0, 0, 0,
89 1, 1, 0, 0, 0, 0, 0, 0, 0,
90 1, 1, 1, 1, 0, 0, 0, 0, 0,
91 1, 1, 0, 0, 0, 0, 0, 0, 0,
92 1, 1, 0, 0, 0, 0, 0, 0, 0,
93 0, 0, 0, 0, 0, 0, 0, 0, 0,
94 0, 0, 0, 1, 1, 1, 1, 1, 0,
95 0, 0, 0, 1, 1, 0, 0, 0, 0,
96 0, 0, 0, 1, 1, 1, 1, 0, 0,
97 0, 0, 0, 1, 1, 0, 0, 0, 0,
98 0, 0, 0, 1, 1, 0, 0, 0, 0,
99 0, 0, 0, 0, 0, 0, 0, 0, 0,
100
101 /* Char 5 */
102 0, 0, 0, 0, 0, 0, 0, 0, 0,
103 0, 0, 0, 0, 0, 0, 0, 0, 0,
104 0, 0, 0, 0, 0, 0, 0, 0, 0,
105 0, 1, 1, 1, 1, 1, 0, 0, 0,
106 1, 1, 0, 0, 0, 1, 0, 0, 0,
107 1, 1, 0, 0, 0, 0, 0, 0, 0,
108 1, 1, 0, 0, 0, 1, 0, 0, 0,
109 0, 1, 1, 1, 1, 1, 0, 0, 0,
110 0, 0, 0, 0, 0, 0, 0, 0, 0,
111 0, 0, 1, 1, 1, 1, 1, 0, 0,
112 0, 0, 1, 1, 0, 0, 1, 1, 0,
113 0, 0, 1, 1, 1, 1, 1, 0, 0,
114 0, 0, 1, 1, 0, 0, 1, 1, 0,
115 0, 0, 1, 1, 0, 0, 1, 1, 0,
116 0, 0, 0, 0, 0, 0, 0, 0, 0,
117
118 /* Char 6 */
119 0, 0, 0, 0, 0, 0, 0, 0, 0,
120 0, 0, 0, 0, 0, 0, 0, 0, 0,
121 0, 0, 0, 0, 0, 0, 0, 0, 0,
122 1, 1, 0, 0, 0, 0, 0, 0, 0,
123 1, 1, 0, 0, 0, 0, 0, 0, 0,
124 1, 1, 0, 0, 0, 0, 0, 0, 0,
125 1, 1, 0, 0, 0, 0, 0, 0, 0,
126 1, 1, 1, 1, 1, 0, 0, 0, 0,
127 0, 0, 0, 0, 0, 0, 0, 0, 0,
128 0, 0, 0, 1, 1, 1, 1, 1, 0,
129 0, 0, 0, 1, 1, 0, 0, 0, 0,
130 0, 0, 0, 1, 1, 1, 1, 0, 0,
131 0, 0, 0, 1, 1, 0, 0, 0, 0,
132 0, 0, 0, 1, 1, 0, 0, 0, 0,
133 0, 0, 0, 0, 0, 0, 0, 0, 0,
134
135 /* Char 7 */
136 0, 0, 0, 0, 0, 0, 0, 0, 0,
137 0, 0, 0, 0, 0, 0, 0, 0, 0,
138 0, 0, 1, 1, 1, 1, 0, 0, 0,
139 0, 1, 1, 0, 0, 1, 1, 0, 0,
140 0, 1, 1, 0, 0, 1, 1, 0, 0,
141 0, 0, 1, 1, 1, 1, 0, 0, 0,
142 0, 0, 0, 0, 0, 0, 0, 0, 0,
143 0, 0, 0, 0, 0, 0, 0, 0, 0,
144 0, 0, 0, 0, 0, 0, 0, 0, 0,
145 0, 0, 0, 0, 0, 0, 0, 0, 0,
146 0, 0, 0, 0, 0, 0, 0, 0, 0,
147 0, 0, 0, 0, 0, 0, 0, 0, 0,
148 0, 0, 0, 0, 0, 0, 0, 0, 0,
149 0, 0, 0, 0, 0, 0, 0, 0, 0,
150 0, 0, 0, 0, 0, 0, 0, 0, 0,
151
152 /* Char 8 */
153 0, 0, 0, 0, 0, 0, 0, 0, 0,
154 0, 0, 0, 0, 0, 0, 0, 0, 0,
155 0, 0, 0, 1, 1, 0, 0, 0, 0,
156 0, 0, 0, 1, 1, 0, 0, 0, 0,
157 0, 0, 0, 1, 1, 0, 0, 0, 0,
158 1, 1, 1, 1, 1, 1, 1, 1, 0,
159 1, 1, 1, 1, 1, 1, 1, 1, 0,
160 0, 0, 0, 1, 1, 0, 0, 0, 0,
161 0, 0, 0, 1, 1, 0, 0, 0, 0,
162 0, 0, 0, 1, 1, 0, 0, 0, 0,
163 0, 0, 0, 0, 0, 0, 0, 0, 0,
164 1, 1, 1, 1, 1, 1, 1, 1, 0,
165 1, 1, 1, 1, 1, 1, 1, 1, 0,
166 0, 0, 0, 0, 0, 0, 0, 0, 0,
167 0, 0, 0, 0, 0, 0, 0, 0, 0,
168
169 /* Char 9 */
170 0, 0, 0, 0, 0, 0, 0, 0, 0,
171 0, 0, 0, 0, 0, 0, 0, 0, 0,
172 0, 0, 0, 0, 0, 0, 0, 0, 0,
173 1, 1, 0, 0, 1, 1, 0, 0, 0,
174 1, 1, 1, 0, 1, 1, 0, 0, 0,
175 1, 1, 1, 1, 1, 1, 0, 0, 0,
176 1, 1, 0, 1, 1, 1, 0, 0, 0,
177 1, 1, 0, 0, 1, 1, 0, 0, 0,
178 0, 0, 0, 0, 0, 0, 0, 0, 0,
179 0, 0, 0, 1, 1, 0, 0, 0, 0,
180 0, 0, 0, 1, 1, 0, 0, 0, 0,
181 0, 0, 0, 1, 1, 0, 0, 0, 0,
182 0, 0, 0, 1, 1, 0, 0, 0, 0,
183 0, 0, 0, 1, 1, 1, 1, 1, 0,
184 0, 0, 0, 0, 0, 0, 0, 0, 0,
185
186 /* Char 10 */
187 0, 0, 0, 0, 0, 0, 0, 0, 0,
188 0, 0, 0, 0, 0, 0, 0, 0, 0,
189 0, 0, 0, 0, 0, 0, 0, 0, 0,
190 1, 1, 0, 0, 1, 1, 0, 0, 0,
191 1, 1, 0, 0, 1, 1, 0, 0, 0,
192 1, 1, 0, 0, 1, 1, 0, 0, 0,
193 0, 1, 1, 1, 1, 0, 0, 0, 0,
194 0, 0, 1, 1, 0, 0, 0, 0, 0,
195 0, 0, 0, 0, 0, 0, 0, 0, 0,
196 0, 0, 1, 1, 1, 1, 1, 1, 0,
197 0, 0, 0, 0, 1, 1, 0, 0, 0,
198 0, 0, 0, 0, 1, 1, 0, 0, 0,
199 0, 0, 0, 0, 1, 1, 0, 0, 0,
200 0, 0, 0, 0, 1, 1, 0, 0, 0,
201 0, 0, 0, 0, 0, 0, 0, 0, 0,
202
203 /* Char 11 */
204 0, 0, 0, 1, 1, 0, 0, 0, 0,
205 0, 0, 0, 1, 1, 0, 0, 0, 0,
206 0, 0, 0, 1, 1, 0, 0, 0, 0,
207 0, 0, 0, 1, 1, 0, 0, 0, 0,
208 0, 0, 0, 1, 1, 0, 0, 0, 0,
209 0, 0, 0, 1, 1, 0, 0, 0, 0,
210 0, 0, 0, 1, 1, 0, 0, 0, 0,
211 1, 1, 1, 1, 1, 0, 0, 0, 0,
212 1, 1, 1, 1, 1, 0, 0, 0, 0,
213 0, 0, 0, 0, 0, 0, 0, 0, 0,
214 0, 0, 0, 0, 0, 0, 0, 0, 0,
215 0, 0, 0, 0, 0, 0, 0, 0, 0,
216 0, 0, 0, 0, 0, 0, 0, 0, 0,
217 0, 0, 0, 0, 0, 0, 0, 0, 0,
218 0, 0, 0, 0, 0, 0, 0, 0, 0,
219
220 /* Char 12 */
221 0, 0, 0, 0, 0, 0, 0, 0, 0,
222 0, 0, 0, 0, 0, 0, 0, 0, 0,
223 0, 0, 0, 0, 0, 0, 0, 0, 0,
224 0, 0, 0, 0, 0, 0, 0, 0, 0,
225 0, 0, 0, 0, 0, 0, 0, 0, 0,
226 0, 0, 0, 0, 0, 0, 0, 0, 0,
227 0, 0, 0, 0, 0, 0, 0, 0, 0,
228 1, 1, 1, 1, 1, 0, 0, 0, 0,
229 1, 1, 1, 1, 1, 0, 0, 0, 0,
230 0, 0, 0, 1, 1, 0, 0, 0, 0,
231 0, 0, 0, 1, 1, 0, 0, 0, 0,
232 0, 0, 0, 1, 1, 0, 0, 0, 0,
233 0, 0, 0, 1, 1, 0, 0, 0, 0,
234 0, 0, 0, 1, 1, 0, 0, 0, 0,
235 0, 0, 0, 1, 1, 0, 0, 0, 0,
236
237 /* Char 13 */
238 0, 0, 0, 0, 0, 0, 0, 0, 0,
239 0, 0, 0, 0, 0, 0, 0, 0, 0,
240 0, 0, 0, 0, 0, 0, 0, 0, 0,
241 0, 0, 0, 0, 0, 0, 0, 0, 0,
242 0, 0, 0, 0, 0, 0, 0, 0, 0,
243 0, 0, 0, 0, 0, 0, 0, 0, 0,
244 0, 0, 0, 0, 0, 0, 0, 0, 0,
245 0, 0, 0, 1, 1, 1, 1, 1, 1,
246 0, 0, 0, 1, 1, 1, 1, 1, 1,
247 0, 0, 0, 1, 1, 0, 0, 0, 0,
248 0, 0, 0, 1, 1, 0, 0, 0, 0,
249 0, 0, 0, 1, 1, 0, 0, 0, 0,
250 0, 0, 0, 1, 1, 0, 0, 0, 0,
251 0, 0, 0, 1, 1, 0, 0, 0, 0,
252 0, 0, 0, 1, 1, 0, 0, 0, 0,
253
254 /* Char 14 */
255 0, 0, 0, 1, 1, 0, 0, 0, 0,
256 0, 0, 0, 1, 1, 0, 0, 0, 0,
257 0, 0, 0, 1, 1, 0, 0, 0, 0,
258 0, 0, 0, 1, 1, 0, 0, 0, 0,
259 0, 0, 0, 1, 1, 0, 0, 0, 0,
260 0, 0, 0, 1, 1, 0, 0, 0, 0,
261 0, 0, 0, 1, 1, 0, 0, 0, 0,
262 0, 0, 0, 1, 1, 1, 1, 1, 1,
263 0, 0, 0, 1, 1, 1, 1, 1, 1,
264 0, 0, 0, 0, 0, 0, 0, 0, 0,
265 0, 0, 0, 0, 0, 0, 0, 0, 0,
266 0, 0, 0, 0, 0, 0, 0, 0, 0,
267 0, 0, 0, 0, 0, 0, 0, 0, 0,
268 0, 0, 0, 0, 0, 0, 0, 0, 0,
269 0, 0, 0, 0, 0, 0, 0, 0, 0,
270
271 /* Char 15 */
272 0, 0, 0, 1, 1, 0, 0, 0, 0,
273 0, 0, 0, 1, 1, 0, 0, 0, 0,
274 0, 0, 0, 1, 1, 0, 0, 0, 0,
275 0, 0, 0, 1, 1, 0, 0, 0, 0,
276 0, 0, 0, 1, 1, 0, 0, 0, 0,
277 0, 0, 0, 1, 1, 0, 0, 0, 0,
278 0, 0, 0, 1, 1, 0, 0, 0, 0,
279 1, 1, 1, 1, 1, 1, 1, 1, 1,
280 1, 1, 1, 1, 1, 1, 1, 1, 1,
281 0, 0, 0, 1, 1, 0, 0, 0, 0,
282 0, 0, 0, 1, 1, 0, 0, 0, 0,
283 0, 0, 0, 1, 1, 0, 0, 0, 0,
284 0, 0, 0, 1, 1, 0, 0, 0, 0,
285 0, 0, 0, 1, 1, 0, 0, 0, 0,
286 0, 0, 0, 1, 1, 0, 0, 0, 0,
287
288 /* Char 16 */
289 0, 0, 0, 0, 0, 0, 0, 0, 0,
290 0, 0, 0, 0, 0, 0, 0, 0, 0,
291 0, 0, 0, 0, 0, 0, 0, 0, 0,
292 1, 1, 1, 1, 1, 1, 1, 1, 1,
293 1, 1, 1, 1, 1, 1, 1, 1, 1,
294 0, 0, 0, 0, 0, 0, 0, 0, 0,
295 0, 0, 0, 0, 0, 0, 0, 0, 0,
296 0, 0, 0, 0, 0, 0, 0, 0, 0,
297 0, 0, 0, 0, 0, 0, 0, 0, 0,
298 0, 0, 0, 0, 0, 0, 0, 0, 0,
299 0, 0, 0, 0, 0, 0, 0, 0, 0,
300 0, 0, 0, 0, 0, 0, 0, 0, 0,
301 0, 0, 0, 0, 0, 0, 0, 0, 0,
302 0, 0, 0, 0, 0, 0, 0, 0, 0,
303 0, 0, 0, 0, 0, 0, 0, 0, 0,
304
305 /* Char 17 */
306 0, 0, 0, 0, 0, 0, 0, 0, 0,
307 0, 0, 0, 0, 0, 0, 0, 0, 0,
308 0, 0, 0, 0, 0, 0, 0, 0, 0,
309 0, 0, 0, 0, 0, 0, 0, 0, 0,
310 0, 0, 0, 0, 0, 0, 0, 0, 0,
311 1, 1, 1, 1, 1, 1, 1, 1, 1,
312 1, 1, 1, 1, 1, 1, 1, 1, 1,
313 0, 0, 0, 0, 0, 0, 0, 0, 0,
314 0, 0, 0, 0, 0, 0, 0, 0, 0,
315 0, 0, 0, 0, 0, 0, 0, 0, 0,
316 0, 0, 0, 0, 0, 0, 0, 0, 0,
317 0, 0, 0, 0, 0, 0, 0, 0, 0,
318 0, 0, 0, 0, 0, 0, 0, 0, 0,
319 0, 0, 0, 0, 0, 0, 0, 0, 0,
320 0, 0, 0, 0, 0, 0, 0, 0, 0,
321
322 /* Char 18 */
323 0, 0, 0, 0, 0, 0, 0, 0, 0,
324 0, 0, 0, 0, 0, 0, 0, 0, 0,
325 0, 0, 0, 0, 0, 0, 0, 0, 0,
326 0, 0, 0, 0, 0, 0, 0, 0, 0,
327 0, 0, 0, 0, 0, 0, 0, 0, 0,
328 0, 0, 0, 0, 0, 0, 0, 0, 0,
329 0, 0, 0, 0, 0, 0, 0, 0, 0,
330 1, 1, 1, 1, 1, 1, 1, 1, 1,
331 1, 1, 1, 1, 1, 1, 1, 1, 1,
332 0, 0, 0, 0, 0, 0, 0, 0, 0,
333 0, 0, 0, 0, 0, 0, 0, 0, 0,
334 0, 0, 0, 0, 0, 0, 0, 0, 0,
335 0, 0, 0, 0, 0, 0, 0, 0, 0,
336 0, 0, 0, 0, 0, 0, 0, 0, 0,
337 0, 0, 0, 0, 0, 0, 0, 0, 0,
338
339 /* Char 19 */
340 0, 0, 0, 0, 0, 0, 0, 0, 0,
341 0, 0, 0, 0, 0, 0, 0, 0, 0,
342 0, 0, 0, 0, 0, 0, 0, 0, 0,
343 0, 0, 0, 0, 0, 0, 0, 0, 0,
344 0, 0, 0, 0, 0, 0, 0, 0, 0,
345 0, 0, 0, 0, 0, 0, 0, 0, 0,
346 0, 0, 0, 0, 0, 0, 0, 0, 0,
347 0, 0, 0, 0, 0, 0, 0, 0, 0,
348 0, 0, 0, 0, 0, 0, 0, 0, 0,
349 1, 1, 1, 1, 1, 1, 1, 1, 1,
350 1, 1, 1, 1, 1, 1, 1, 1, 1,
351 0, 0, 0, 0, 0, 0, 0, 0, 0,
352 0, 0, 0, 0, 0, 0, 0, 0, 0,
353 0, 0, 0, 0, 0, 0, 0, 0, 0,
354 0, 0, 0, 0, 0, 0, 0, 0, 0,
355
356 /* Char 20 */
357 0, 0, 0, 0, 0, 0, 0, 0, 0,
358 0, 0, 0, 0, 0, 0, 0, 0, 0,
359 0, 0, 0, 0, 0, 0, 0, 0, 0,
360 0, 0, 0, 0, 0, 0, 0, 0, 0,
361 0, 0, 0, 0, 0, 0, 0, 0, 0,
362 0, 0, 0, 0, 0, 0, 0, 0, 0,
363 0, 0, 0, 0, 0, 0, 0, 0, 0,
364 0, 0, 0, 0, 0, 0, 0, 0, 0,
365 0, 0, 0, 0, 0, 0, 0, 0, 0,
366 0, 0, 0, 0, 0, 0, 0, 0, 0,
367 0, 0, 0, 0, 0, 0, 0, 0, 0,
368 1, 1, 1, 1, 1, 1, 1, 1, 1,
369 1, 1, 1, 1, 1, 1, 1, 1, 1,
370 0, 0, 0, 0, 0, 0, 0, 0, 0,
371 0, 0, 0, 0, 0, 0, 0, 0, 0,
372
373 /* Char 21 */
374 0, 0, 0, 1, 1, 0, 0, 0, 0,
375 0, 0, 0, 1, 1, 0, 0, 0, 0,
376 0, 0, 0, 1, 1, 0, 0, 0, 0,
377 0, 0, 0, 1, 1, 0, 0, 0, 0,
378 0, 0, 0, 1, 1, 0, 0, 0, 0,
379 0, 0, 0, 1, 1, 0, 0, 0, 0,
380 0, 0, 0, 1, 1, 0, 0, 0, 0,
381 0, 0, 0, 1, 1, 1, 1, 1, 1,
382 0, 0, 0, 1, 1, 1, 1, 1, 1,
383 0, 0, 0, 1, 1, 0, 0, 0, 0,
384 0, 0, 0, 1, 1, 0, 0, 0, 0,
385 0, 0, 0, 1, 1, 0, 0, 0, 0,
386 0, 0, 0, 1, 1, 0, 0, 0, 0,
387 0, 0, 0, 1, 1, 0, 0, 0, 0,
388 0, 0, 0, 1, 1, 0, 0, 0, 0,
389
390 /* Char 22 */
391 0, 0, 0, 1, 1, 0, 0, 0, 0,
392 0, 0, 0, 1, 1, 0, 0, 0, 0,
393 0, 0, 0, 1, 1, 0, 0, 0, 0,
394 0, 0, 0, 1, 1, 0, 0, 0, 0,
395 0, 0, 0, 1, 1, 0, 0, 0, 0,
396 0, 0, 0, 1, 1, 0, 0, 0, 0,
397 0, 0, 0, 1, 1, 0, 0, 0, 0,
398 1, 1, 1, 1, 1, 0, 0, 0, 0,
399 1, 1, 1, 1, 1, 0, 0, 0, 0,
400 0, 0, 0, 1, 1, 0, 0, 0, 0,
401 0, 0, 0, 1, 1, 0, 0, 0, 0,
402 0, 0, 0, 1, 1, 0, 0, 0, 0,
403 0, 0, 0, 1, 1, 0, 0, 0, 0,
404 0, 0, 0, 1, 1, 0, 0, 0, 0,
405 0, 0, 0, 1, 1, 0, 0, 0, 0,
406
407 /* Char 23 */
408 0, 0, 0, 1, 1, 0, 0, 0, 0,
409 0, 0, 0, 1, 1, 0, 0, 0, 0,
410 0, 0, 0, 1, 1, 0, 0, 0, 0,
411 0, 0, 0, 1, 1, 0, 0, 0, 0,
412 0, 0, 0, 1, 1, 0, 0, 0, 0,
413 0, 0, 0, 1, 1, 0, 0, 0, 0,
414 0, 0, 0, 1, 1, 0, 0, 0, 0,
415 1, 1, 1, 1, 1, 1, 1, 1, 1,
416 1, 1, 1, 1, 1, 1, 1, 1, 1,
417 0, 0, 0, 0, 0, 0, 0, 0, 0,
418 0, 0, 0, 0, 0, 0, 0, 0, 0,
419 0, 0, 0, 0, 0, 0, 0, 0, 0,
420 0, 0, 0, 0, 0, 0, 0, 0, 0,
421 0, 0, 0, 0, 0, 0, 0, 0, 0,
422 0, 0, 0, 0, 0, 0, 0, 0, 0,
423
424 /* Char 24 */
425 0, 0, 0, 0, 0, 0, 0, 0, 0,
426 0, 0, 0, 0, 0, 0, 0, 0, 0,
427 0, 0, 0, 0, 0, 0, 0, 0, 0,
428 0, 0, 0, 0, 0, 0, 0, 0, 0,
429 0, 0, 0, 0, 0, 0, 0, 0, 0,
430 0, 0, 0, 0, 0, 0, 0, 0, 0,
431 0, 0, 0, 0, 0, 0, 0, 0, 0,
432 1, 1, 1, 1, 1, 1, 1, 1, 1,
433 1, 1, 1, 1, 1, 1, 1, 1, 1,
434 0, 0, 0, 1, 1, 0, 0, 0, 0,
435 0, 0, 0, 1, 1, 0, 0, 0, 0,
436 0, 0, 0, 1, 1, 0, 0, 0, 0,
437 0, 0, 0, 1, 1, 0, 0, 0, 0,
438 0, 0, 0, 1, 1, 0, 0, 0, 0,
439 0, 0, 0, 1, 1, 0, 0, 0, 0,
440
441 /* Char 25 */
442 0, 0, 0, 1, 1, 0, 0, 0, 0,
443 0, 0, 0, 1, 1, 0, 0, 0, 0,
444 0, 0, 0, 1, 1, 0, 0, 0, 0,
445 0, 0, 0, 1, 1, 0, 0, 0, 0,
446 0, 0, 0, 1, 1, 0, 0, 0, 0,
447 0, 0, 0, 1, 1, 0, 0, 0, 0,
448 0, 0, 0, 1, 1, 0, 0, 0, 0,
449 0, 0, 0, 1, 1, 0, 0, 0, 0,
450 0, 0, 0, 1, 1, 0, 0, 0, 0,
451 0, 0, 0, 1, 1, 0, 0, 0, 0,
452 0, 0, 0, 1, 1, 0, 0, 0, 0,
453 0, 0, 0, 1, 1, 0, 0, 0, 0,
454 0, 0, 0, 1, 1, 0, 0, 0, 0,
455 0, 0, 0, 1, 1, 0, 0, 0, 0,
456 0, 0, 0, 1, 1, 0, 0, 0, 0,
457
458 /* Char 26 */
459 0, 0, 0, 0, 0, 0, 0, 0, 0,
460 0, 0, 0, 0, 0, 0, 0, 0, 0,
461 0, 0, 0, 0, 0, 0, 0, 0, 0,
462 0, 0, 0, 0, 0, 1, 1, 1, 0,
463 0, 0, 0, 1, 1, 1, 0, 0, 0,
464 0, 1, 1, 1, 0, 0, 0, 0, 0,
465 1, 1, 0, 0, 0, 0, 0, 0, 0,
466 0, 1, 1, 1, 0, 0, 0, 0, 0,
467 0, 0, 0, 1, 1, 1, 0, 0, 0,
468 0, 0, 0, 0, 0, 1, 1, 1, 0,
469 0, 0, 0, 0, 0, 0, 0, 0, 0,
470 1, 1, 1, 1, 1, 1, 1, 1, 0,
471 1, 1, 1, 1, 1, 1, 1, 1, 0,
472 0, 0, 0, 0, 0, 0, 0, 0, 0,
473 0, 0, 0, 0, 0, 0, 0, 0, 0,
474
475 /* Char 27 */
476 0, 0, 0, 0, 0, 0, 0, 0, 0,
477 0, 0, 0, 0, 0, 0, 0, 0, 0,
478 0, 0, 0, 0, 0, 0, 0, 0, 0,
479 1, 1, 1, 0, 0, 0, 0, 0, 0,
480 0, 0, 1, 1, 1, 0, 0, 0, 0,
481 0, 0, 0, 0, 1, 1, 1, 0, 0,
482 0, 0, 0, 0, 0, 0, 1, 1, 0,
483 0, 0, 0, 0, 1, 1, 1, 0, 0,
484 0, 0, 1, 1, 1, 0, 0, 0, 0,
485 1, 1, 1, 0, 0, 0, 0, 0, 0,
486 0, 0, 0, 0, 0, 0, 0, 0, 0,
487 1, 1, 1, 1, 1, 1, 1, 1, 0,
488 1, 1, 1, 1, 1, 1, 1, 1, 0,
489 0, 0, 0, 0, 0, 0, 0, 0, 0,
490 0, 0, 0, 0, 0, 0, 0, 0, 0,
491
492 /* Char 28 */
493 0, 0, 0, 0, 0, 0, 0, 0, 0,
494 0, 0, 0, 0, 0, 0, 0, 0, 0,
495 0, 0, 0, 0, 0, 0, 0, 0, 0,
496 0, 0, 0, 0, 0, 0, 0, 0, 0,
497 0, 0, 0, 0, 0, 0, 0, 0, 0,
498 0, 0, 0, 0, 0, 0, 0, 0, 0,
499 1, 1, 1, 1, 1, 1, 1, 1, 0,
500 1, 1, 1, 1, 1, 1, 1, 1, 0,
501 0, 0, 1, 0, 0, 1, 1, 0, 0,
502 0, 0, 1, 0, 0, 1, 1, 0, 0,
503 0, 0, 1, 0, 0, 1, 1, 0, 0,
504 0, 1, 1, 0, 0, 1, 1, 0, 0,
505 1, 1, 1, 0, 0, 1, 1, 0, 0,
506 0, 0, 0, 0, 0, 0, 0, 0, 0,
507 0, 0, 0, 0, 0, 0, 0, 0, 0,
508
509 /* Char 29 */
510 0, 0, 0, 0, 0, 0, 0, 0, 0,
511 0, 0, 0, 0, 0, 0, 0, 0, 0,
512 0, 0, 0, 0, 0, 0, 0, 0, 0,
513 0, 0, 0, 0, 0, 0, 0, 0, 0,
514 0, 0, 0, 0, 0, 0, 1, 1, 0,
515 0, 0, 0, 0, 0, 1, 1, 0, 0,
516 1, 1, 1, 1, 1, 1, 1, 1, 0,
517 1, 1, 1, 1, 1, 1, 1, 1, 0,
518 0, 0, 0, 1, 1, 0, 0, 0, 0,
519 1, 1, 1, 1, 1, 1, 1, 1, 0,
520 1, 1, 1, 1, 1, 1, 1, 1, 0,
521 0, 1, 1, 0, 0, 0, 0, 0, 0,
522 1, 1, 0, 0, 0, 0, 0, 0, 0,
523 0, 0, 0, 0, 0, 0, 0, 0, 0,
524 0, 0, 0, 0, 0, 0, 0, 0, 0,
525
526 /* Char 30 */
527 0, 0, 0, 0, 0, 0, 0, 0, 0,
528 0, 0, 0, 0, 0, 0, 0, 0, 0,
529 0, 0, 0, 0, 0, 0, 0, 0, 0,
530 0, 0, 0, 0, 0, 0, 0, 0, 0,
531 0, 0, 0, 1, 1, 1, 1, 0, 0,
532 0, 0, 1, 1, 0, 0, 1, 1, 0,
533 0, 0, 1, 1, 0, 0, 0, 0, 0,
534 0, 0, 1, 1, 0, 0, 0, 0, 0,
535 0, 1, 1, 1, 1, 1, 1, 0, 0,
536 0, 0, 1, 1, 0, 0, 0, 0, 0,
537 0, 0, 1, 1, 0, 0, 0, 0, 0,
538 1, 1, 1, 1, 1, 0, 0, 0, 0,
539 1, 0, 1, 1, 1, 1, 1, 1, 0,
540 1, 1, 1, 0, 0, 0, 0, 0, 0,
541 0, 0, 0, 0, 0, 0, 0, 0, 0,
542
543 /* Char 31 */
544 0, 0, 0, 0, 0, 0, 0, 0, 0,
545 0, 0, 0, 0, 0, 0, 0, 0, 0,
546 0, 0, 0, 0, 0, 0, 0, 0, 0,
547 0, 0, 0, 0, 0, 0, 0, 0, 0,
548 0, 0, 0, 0, 0, 0, 0, 0, 0,
549 0, 0, 0, 0, 0, 0, 0, 0, 0,
550 0, 0, 0, 0, 0, 0, 0, 0, 0,
551 0, 0, 0, 0, 0, 0, 0, 0, 0,
552 0, 0, 0, 1, 1, 0, 0, 0, 0,
553 0, 0, 0, 1, 1, 0, 0, 0, 0,
554 0, 0, 0, 0, 0, 0, 0, 0, 0,
555 0, 0, 0, 0, 0, 0, 0, 0, 0,
556 0, 0, 0, 0, 0, 0, 0, 0, 0,
557 0, 0, 0, 0, 0, 0, 0, 0, 0,
558 0, 0, 0, 0, 0, 0, 0, 0, 0,
559
560 /* Char 32 */
561 0, 0, 0, 0, 0, 0, 0, 0, 0,
562 0, 0, 0, 0, 0, 0, 0, 0, 0,
563 0, 0, 0, 0, 0, 0, 0, 0, 0,
564 0, 0, 0, 0, 0, 0, 0, 0, 0,
565 0, 0, 0, 0, 0, 0, 0, 0, 0,
566 0, 0, 0, 0, 0, 0, 0, 0, 0,
567 0, 0, 0, 0, 0, 0, 0, 0, 0,
568 0, 0, 0, 0, 0, 0, 0, 0, 0,
569 0, 0, 0, 0, 0, 0, 0, 0, 0,
570 0, 0, 0, 0, 0, 0, 0, 0, 0,
571 0, 0, 0, 0, 0, 0, 0, 0, 0,
572 0, 0, 0, 0, 0, 0, 0, 0, 0,
573 0, 0, 0, 0, 0, 0, 0, 0, 0,
574 0, 0, 0, 0, 0, 0, 0, 0, 0,
575 0, 0, 0, 0, 0, 0, 0, 0, 0,
576
577 /* Char 33 */
578 0, 0, 0, 0, 0, 0, 0, 0, 0,
579 0, 0, 0, 0, 0, 0, 0, 0, 0,
580 0, 0, 0, 0, 0, 0, 0, 0, 0,
581 0, 0, 0, 1, 1, 0, 0, 0, 0,
582 0, 0, 0, 1, 1, 0, 0, 0, 0,
583 0, 0, 0, 1, 1, 0, 0, 0, 0,
584 0, 0, 0, 1, 1, 0, 0, 0, 0,
585 0, 0, 0, 1, 1, 0, 0, 0, 0,
586 0, 0, 0, 1, 1, 0, 0, 0, 0,
587 0, 0, 0, 1, 1, 0, 0, 0, 0,
588 0, 0, 0, 1, 1, 0, 0, 0, 0,
589 0, 0, 0, 0, 0, 0, 0, 0, 0,
590 0, 0, 0, 1, 1, 0, 0, 0, 0,
591 0, 0, 0, 0, 0, 0, 0, 0, 0,
592 0, 0, 0, 0, 0, 0, 0, 0, 0,
593
594 /* Char 34 */
595 0, 0, 0, 0, 0, 0, 0, 0, 0,
596 0, 0, 0, 0, 0, 0, 0, 0, 0,
597 0, 0, 0, 0, 0, 0, 0, 0, 0,
598 0, 0, 1, 1, 0, 1, 1, 0, 0,
599 0, 0, 1, 1, 0, 1, 1, 0, 0,
600 0, 0, 1, 1, 0, 1, 1, 0, 0,
601 0, 0, 0, 0, 0, 0, 0, 0, 0,
602 0, 0, 0, 0, 0, 0, 0, 0, 0,
603 0, 0, 0, 0, 0, 0, 0, 0, 0,
604 0, 0, 0, 0, 0, 0, 0, 0, 0,
605 0, 0, 0, 0, 0, 0, 0, 0, 0,
606 0, 0, 0, 0, 0, 0, 0, 0, 0,
607 0, 0, 0, 0, 0, 0, 0, 0, 0,
608 0, 0, 0, 0, 0, 0, 0, 0, 0,
609 0, 0, 0, 0, 0, 0, 0, 0, 0,
610
611 /* Char 35 */
612 0, 0, 0, 0, 0, 0, 0, 0, 0,
613 0, 0, 0, 0, 0, 0, 0, 0, 0,
614 0, 0, 0, 0, 0, 0, 0, 0, 0,
615 0, 0, 0, 0, 0, 0, 0, 0, 0,
616 0, 1, 1, 0, 1, 1, 0, 0, 0,
617 0, 1, 1, 0, 1, 1, 0, 0, 0,
618 1, 1, 1, 1, 1, 1, 1, 0, 0,
619 0, 1, 1, 0, 1, 1, 0, 0, 0,
620 0, 1, 1, 0, 1, 1, 0, 0, 0,
621 1, 1, 1, 1, 1, 1, 1, 0, 0,
622 0, 1, 1, 0, 1, 1, 0, 0, 0,
623 0, 1, 1, 0, 1, 1, 0, 0, 0,
624 0, 0, 0, 0, 0, 0, 0, 0, 0,
625 0, 0, 0, 0, 0, 0, 0, 0, 0,
626 0, 0, 0, 0, 0, 0, 0, 0, 0,
627
628 /* Char 36 */
629 0, 0, 0, 0, 0, 0, 0, 0, 0,
630 0, 0, 0, 0, 0, 0, 0, 0, 0,
631 0, 0, 0, 0, 0, 0, 0, 0, 0,
632 0, 0, 0, 0, 1, 0, 0, 0, 0,
633 0, 0, 1, 1, 1, 1, 1, 0, 0,
634 0, 1, 1, 0, 1, 0, 1, 1, 0,
635 0, 1, 1, 0, 1, 0, 0, 0, 0,
636 0, 1, 1, 1, 1, 0, 0, 0, 0,
637 0, 0, 1, 1, 1, 1, 1, 0, 0,
638 0, 0, 0, 0, 1, 1, 1, 1, 0,
639 0, 0, 0, 0, 1, 0, 1, 1, 0,
640 0, 1, 1, 0, 1, 0, 1, 1, 0,
641 0, 0, 1, 1, 1, 1, 1, 0, 0,
642 0, 0, 0, 0, 1, 0, 0, 0, 0,
643 0, 0, 0, 0, 0, 0, 0, 0, 0,
644
645 /* Char 37 */
646 0, 0, 0, 0, 0, 0, 0, 0, 0,
647 0, 0, 0, 0, 0, 0, 0, 0, 0,
648 0, 0, 0, 0, 0, 0, 0, 0, 0,
649 0, 1, 0, 0, 0, 0, 1, 1, 0,
650 1, 1, 1, 0, 0, 1, 1, 0, 0,
651 1, 1, 1, 0, 0, 1, 1, 0, 0,
652 0, 1, 0, 0, 1, 1, 0, 0, 0,
653 0, 0, 0, 1, 1, 0, 0, 0, 0,
654 0, 0, 0, 1, 1, 0, 0, 0, 0,
655 0, 0, 1, 1, 0, 0, 1, 0, 0,
656 0, 1, 1, 0, 0, 1, 1, 1, 0,
657 0, 1, 1, 0, 0, 1, 1, 1, 0,
658 1, 1, 0, 0, 0, 0, 1, 0, 0,
659 0, 0, 0, 0, 0, 0, 0, 0, 0,
660 0, 0, 0, 0, 0, 0, 0, 0, 0,
661
662 /* Char 38 */
663 0, 0, 0, 0, 0, 0, 0, 0, 0,
664 0, 0, 0, 0, 0, 0, 0, 0, 0,
665 0, 0, 0, 0, 0, 0, 0, 0, 0,
666 0, 0, 1, 1, 1, 0, 0, 0, 0,
667 0, 1, 1, 0, 1, 1, 0, 0, 0,
668 0, 1, 1, 0, 1, 1, 0, 0, 0,
669 0, 1, 1, 1, 1, 0, 0, 0, 0,
670 0, 0, 1, 1, 0, 0, 0, 0, 0,
671 0, 1, 1, 1, 1, 0, 0, 1, 0,
672 1, 1, 0, 0, 1, 1, 1, 1, 0,
673 1, 1, 0, 0, 0, 1, 1, 0, 0,
674 1, 1, 0, 0, 1, 1, 1, 0, 0,
675 0, 1, 1, 1, 1, 0, 1, 1, 0,
676 0, 0, 0, 0, 0, 0, 0, 0, 0,
677 0, 0, 0, 0, 0, 0, 0, 0, 0,
678
679 /* Char 39 */
680 0, 0, 0, 0, 0, 0, 0, 0, 0,
681 0, 0, 0, 0, 0, 0, 0, 0, 0,
682 0, 0, 0, 0, 0, 0, 0, 0, 0,
683 0, 0, 0, 1, 1, 1, 0, 0, 0,
684 0, 0, 0, 1, 1, 1, 0, 0, 0,
685 0, 0, 1, 1, 0, 0, 0, 0, 0,
686 0, 0, 0, 0, 0, 0, 0, 0, 0,
687 0, 0, 0, 0, 0, 0, 0, 0, 0,
688 0, 0, 0, 0, 0, 0, 0, 0, 0,
689 0, 0, 0, 0, 0, 0, 0, 0, 0,
690 0, 0, 0, 0, 0, 0, 0, 0, 0,
691 0, 0, 0, 0, 0, 0, 0, 0, 0,
692 0, 0, 0, 0, 0, 0, 0, 0, 0,
693 0, 0, 0, 0, 0, 0, 0, 0, 0,
694 0, 0, 0, 0, 0, 0, 0, 0, 0,
695
696 /* Char 40 */
697 0, 0, 0, 0, 0, 0, 0, 0, 0,
698 0, 0, 0, 0, 0, 0, 0, 0, 0,
699 0, 0, 0, 0, 0, 1, 1, 0, 0,
700 0, 0, 0, 0, 1, 1, 0, 0, 0,
701 0, 0, 0, 1, 1, 0, 0, 0, 0,
702 0, 0, 0, 1, 1, 0, 0, 0, 0,
703 0, 0, 1, 1, 0, 0, 0, 0, 0,
704 0, 0, 1, 1, 0, 0, 0, 0, 0,
705 0, 0, 1, 1, 0, 0, 0, 0, 0,
706 0, 0, 1, 1, 0, 0, 0, 0, 0,
707 0, 0, 0, 1, 1, 0, 0, 0, 0,
708 0, 0, 0, 1, 1, 0, 0, 0, 0,
709 0, 0, 0, 0, 1, 1, 0, 0, 0,
710 0, 0, 0, 0, 0, 1, 1, 0, 0,
711 0, 0, 0, 0, 0, 0, 0, 0, 0,
712
713 /* Char 41 */
714 0, 0, 0, 0, 0, 0, 0, 0, 0,
715 0, 0, 0, 0, 0, 0, 0, 0, 0,
716 0, 1, 1, 0, 0, 0, 0, 0, 0,
717 0, 0, 1, 1, 0, 0, 0, 0, 0,
718 0, 0, 0, 1, 1, 0, 0, 0, 0,
719 0, 0, 0, 1, 1, 0, 0, 0, 0,
720 0, 0, 0, 0, 1, 1, 0, 0, 0,
721 0, 0, 0, 0, 1, 1, 0, 0, 0,
722 0, 0, 0, 0, 1, 1, 0, 0, 0,
723 0, 0, 0, 0, 1, 1, 0, 0, 0,
724 0, 0, 0, 1, 1, 0, 0, 0, 0,
725 0, 0, 0, 1, 1, 0, 0, 0, 0,
726 0, 0, 1, 1, 0, 0, 0, 0, 0,
727 0, 1, 1, 0, 0, 0, 0, 0, 0,
728 0, 0, 0, 0, 0, 0, 0, 0, 0,
729
730 /* Char 42 */
731 0, 0, 0, 0, 0, 0, 0, 0, 0,
732 0, 0, 0, 0, 0, 0, 0, 0, 0,
733 0, 0, 0, 0, 0, 0, 0, 0, 0,
734 0, 0, 0, 0, 0, 0, 0, 0, 0,
735 0, 0, 0, 0, 0, 0, 0, 0, 0,
736 0, 0, 0, 0, 0, 0, 0, 0, 0,
737 0, 1, 1, 0, 1, 1, 0, 0, 0,
738 0, 0, 1, 1, 1, 0, 0, 0, 0,
739 1, 1, 1, 1, 1, 1, 1, 0, 0,
740 0, 0, 1, 1, 1, 0, 0, 0, 0,
741 0, 1, 1, 0, 1, 1, 0, 0, 0,
742 0, 0, 0, 0, 0, 0, 0, 0, 0,
743 0, 0, 0, 0, 0, 0, 0, 0, 0,
744 0, 0, 0, 0, 0, 0, 0, 0, 0,
745 0, 0, 0, 0, 0, 0, 0, 0, 0,
746
747 /* Char 43 */
748 0, 0, 0, 0, 0, 0, 0, 0, 0,
749 0, 0, 0, 0, 0, 0, 0, 0, 0,
750 0, 0, 0, 0, 0, 0, 0, 0, 0,
751 0, 0, 0, 0, 0, 0, 0, 0, 0,
752 0, 0, 0, 0, 0, 0, 0, 0, 0,
753 0, 0, 0, 1, 1, 0, 0, 0, 0,
754 0, 0, 0, 1, 1, 0, 0, 0, 0,
755 0, 0, 0, 1, 1, 0, 0, 0, 0,
756 1, 1, 1, 1, 1, 1, 1, 1, 0,
757 0, 0, 0, 1, 1, 0, 0, 0, 0,
758 0, 0, 0, 1, 1, 0, 0, 0, 0,
759 0, 0, 0, 1, 1, 0, 0, 0, 0,
760 0, 0, 0, 0, 0, 0, 0, 0, 0,
761 0, 0, 0, 0, 0, 0, 0, 0, 0,
762 0, 0, 0, 0, 0, 0, 0, 0, 0,
763
764 /* Char 44 */
765 0, 0, 0, 0, 0, 0, 0, 0, 0,
766 0, 0, 0, 0, 0, 0, 0, 0, 0,
767 0, 0, 0, 0, 0, 0, 0, 0, 0,
768 0, 0, 0, 0, 0, 0, 0, 0, 0,
769 0, 0, 0, 0, 0, 0, 0, 0, 0,
770 0, 0, 0, 0, 0, 0, 0, 0, 0,
771 0, 0, 0, 0, 0, 0, 0, 0, 0,
772 0, 0, 0, 0, 0, 0, 0, 0, 0,
773 0, 0, 0, 0, 0, 0, 0, 0, 0,
774 0, 0, 0, 0, 0, 0, 0, 0, 0,
775 0, 0, 0, 0, 0, 0, 0, 0, 0,
776 0, 0, 1, 1, 1, 1, 0, 0, 0,
777 0, 0, 1, 1, 1, 0, 0, 0, 0,
778 0, 1, 1, 0, 0, 0, 0, 0, 0,
779 0, 0, 0, 0, 0, 0, 0, 0, 0,
780
781 /* Char 45 */
782 0, 0, 0, 0, 0, 0, 0, 0, 0,
783 0, 0, 0, 0, 0, 0, 0, 0, 0,
784 0, 0, 0, 0, 0, 0, 0, 0, 0,
785 0, 0, 0, 0, 0, 0, 0, 0, 0,
786 0, 0, 0, 0, 0, 0, 0, 0, 0,
787 0, 0, 0, 0, 0, 0, 0, 0, 0,
788 0, 0, 0, 0, 0, 0, 0, 0, 0,
789 0, 0, 0, 0, 0, 0, 0, 0, 0,
790 1, 1, 1, 1, 1, 1, 1, 1, 0,
791 0, 0, 0, 0, 0, 0, 0, 0, 0,
792 0, 0, 0, 0, 0, 0, 0, 0, 0,
793 0, 0, 0, 0, 0, 0, 0, 0, 0,
794 0, 0, 0, 0, 0, 0, 0, 0, 0,
795 0, 0, 0, 0, 0, 0, 0, 0, 0,
796 0, 0, 0, 0, 0, 0, 0, 0, 0,
797
798 /* Char 46 */
799 0, 0, 0, 0, 0, 0, 0, 0, 0,
800 0, 0, 0, 0, 0, 0, 0, 0, 0,
801 0, 0, 0, 0, 0, 0, 0, 0, 0,
802 0, 0, 0, 0, 0, 0, 0, 0, 0,
803 0, 0, 0, 0, 0, 0, 0, 0, 0,
804 0, 0, 0, 0, 0, 0, 0, 0, 0,
805 0, 0, 0, 0, 0, 0, 0, 0, 0,
806 0, 0, 0, 0, 0, 0, 0, 0, 0,
807 0, 0, 0, 0, 0, 0, 0, 0, 0,
808 0, 0, 0, 0, 0, 0, 0, 0, 0,
809 0, 0, 0, 0, 0, 0, 0, 0, 0,
810 0, 0, 0, 1, 1, 0, 0, 0, 0,
811 0, 0, 1, 1, 1, 1, 0, 0, 0,
812 0, 0, 0, 1, 1, 0, 0, 0, 0,
813 0, 0, 0, 0, 0, 0, 0, 0, 0,
814
815 /* Char 47 */
816 0, 0, 0, 0, 0, 0, 0, 0, 0,
817 0, 0, 0, 0, 0, 0, 0, 0, 0,
818 0, 0, 0, 0, 0, 0, 0, 0, 0,
819 0, 0, 0, 0, 0, 0, 1, 1, 0,
820 0, 0, 0, 0, 0, 1, 1, 0, 0,
821 0, 0, 0, 0, 0, 1, 1, 0, 0,
822 0, 0, 0, 0, 1, 1, 0, 0, 0,
823 0, 0, 0, 1, 1, 0, 0, 0, 0,
824 0, 0, 0, 1, 1, 0, 0, 0, 0,
825 0, 0, 1, 1, 0, 0, 0, 0, 0,
826 0, 1, 1, 0, 0, 0, 0, 0, 0,
827 0, 1, 1, 0, 0, 0, 0, 0, 0,
828 1, 1, 0, 0, 0, 0, 0, 0, 0,
829 0, 0, 0, 0, 0, 0, 0, 0, 0,
830 0, 0, 0, 0, 0, 0, 0, 0, 0,
831
832 /* Char 48 */
833 0, 0, 0, 0, 0, 0, 0, 0, 0,
834 0, 0, 0, 0, 0, 0, 0, 0, 0,
835 0, 0, 0, 0, 0, 0, 0, 0, 0,
836 0, 0, 0, 1, 1, 0, 0, 0, 0,
837 0, 0, 1, 1, 1, 1, 0, 0, 0,
838 0, 1, 1, 0, 0, 1, 1, 0, 0,
839 1, 1, 0, 0, 0, 0, 1, 1, 0,
840 1, 1, 0, 0, 0, 0, 1, 1, 0,
841 1, 1, 0, 0, 0, 0, 1, 1, 0,
842 1, 1, 0, 0, 0, 0, 1, 1, 0,
843 0, 1, 1, 0, 0, 1, 1, 0, 0,
844 0, 0, 1, 1, 1, 1, 0, 0, 0,
845 0, 0, 0, 1, 1, 0, 0, 0, 0,
846 0, 0, 0, 0, 0, 0, 0, 0, 0,
847 0, 0, 0, 0, 0, 0, 0, 0, 0,
848
849 /* Char 49 */
850 0, 0, 0, 0, 0, 0, 0, 0, 0,
851 0, 0, 0, 0, 0, 0, 0, 0, 0,
852 0, 0, 0, 0, 0, 0, 0, 0, 0,
853 0, 0, 0, 1, 1, 0, 0, 0, 0,
854 0, 0, 1, 1, 1, 0, 0, 0, 0,
855 0, 1, 1, 1, 1, 0, 0, 0, 0,
856 0, 0, 0, 1, 1, 0, 0, 0, 0,
857 0, 0, 0, 1, 1, 0, 0, 0, 0,
858 0, 0, 0, 1, 1, 0, 0, 0, 0,
859 0, 0, 0, 1, 1, 0, 0, 0, 0,
860 0, 0, 0, 1, 1, 0, 0, 0, 0,
861 0, 0, 0, 1, 1, 0, 0, 0, 0,
862 0, 1, 1, 1, 1, 1, 1, 0, 0,
863 0, 0, 0, 0, 0, 0, 0, 0, 0,
864 0, 0, 0, 0, 0, 0, 0, 0, 0,
865
866 /* Char 50 */
867 0, 0, 0, 0, 0, 0, 0, 0, 0,
868 0, 0, 0, 0, 0, 0, 0, 0, 0,
869 0, 0, 0, 0, 0, 0, 0, 0, 0,
870 0, 0, 1, 1, 1, 1, 0, 0, 0,
871 0, 1, 1, 0, 0, 1, 1, 0, 0,
872 1, 1, 0, 0, 0, 0, 1, 1, 0,
873 0, 0, 0, 0, 0, 0, 1, 1, 0,
874 0, 0, 0, 0, 0, 1, 1, 0, 0,
875 0, 0, 0, 0, 1, 1, 0, 0, 0,
876 0, 0, 0, 1, 1, 0, 0, 0, 0,
877 0, 0, 1, 1, 0, 0, 0, 0, 0,
878 0, 1, 1, 0, 0, 0, 0, 0, 0,
879 1, 1, 1, 1, 1, 1, 1, 1, 0,
880 0, 0, 0, 0, 0, 0, 0, 0, 0,
881 0, 0, 0, 0, 0, 0, 0, 0, 0,
882
883 /* Char 51 */
884 0, 0, 0, 0, 0, 0, 0, 0, 0,
885 0, 0, 0, 0, 0, 0, 0, 0, 0,
886 0, 0, 0, 0, 0, 0, 0, 0, 0,
887 0, 1, 1, 1, 1, 1, 0, 0, 0,
888 1, 1, 0, 0, 0, 1, 1, 0, 0,
889 0, 0, 0, 0, 0, 0, 1, 1, 0,
890 0, 0, 0, 0, 0, 1, 1, 0, 0,
891 0, 0, 0, 1, 1, 1, 0, 0, 0,
892 0, 0, 0, 0, 0, 1, 1, 0, 0,
893 0, 0, 0, 0, 0, 0, 1, 1, 0,
894 0, 0, 0, 0, 0, 0, 1, 1, 0,
895 1, 1, 0, 0, 0, 1, 1, 0, 0,
896 0, 1, 1, 1, 1, 1, 0, 0, 0,
897 0, 0, 0, 0, 0, 0, 0, 0, 0,
898 0, 0, 0, 0, 0, 0, 0, 0, 0,
899
900 /* Char 52 */
901 0, 0, 0, 0, 0, 0, 0, 0, 0,
902 0, 0, 0, 0, 0, 0, 0, 0, 0,
903 0, 0, 0, 0, 0, 0, 0, 0, 0,
904 0, 0, 0, 0, 0, 1, 1, 0, 0,
905 0, 0, 0, 0, 1, 1, 1, 0, 0,
906 0, 0, 0, 1, 1, 1, 1, 0, 0,
907 0, 0, 1, 1, 0, 1, 1, 0, 0,
908 0, 1, 1, 0, 0, 1, 1, 0, 0,
909 1, 1, 0, 0, 0, 1, 1, 0, 0,
910 1, 1, 1, 1, 1, 1, 1, 1, 0,
911 0, 0, 0, 0, 0, 1, 1, 0, 0,
912 0, 0, 0, 0, 0, 1, 1, 0, 0,
913 0, 0, 0, 0, 0, 1, 1, 0, 0,
914 0, 0, 0, 0, 0, 0, 0, 0, 0,
915 0, 0, 0, 0, 0, 0, 0, 0, 0,
916
917 /* Char 53 */
918 0, 0, 0, 0, 0, 0, 0, 0, 0,
919 0, 0, 0, 0, 0, 0, 0, 0, 0,
920 0, 0, 0, 0, 0, 0, 0, 0, 0,
921 1, 1, 1, 1, 1, 1, 1, 0, 0,
922 1, 1, 0, 0, 0, 0, 0, 0, 0,
923 1, 1, 0, 0, 0, 0, 0, 0, 0,
924 1, 1, 0, 1, 1, 1, 0, 0, 0,
925 1, 1, 1, 0, 0, 1, 1, 0, 0,
926 0, 0, 0, 0, 0, 0, 1, 1, 0,
927 0, 0, 0, 0, 0, 0, 1, 1, 0,
928 1, 1, 0, 0, 0, 0, 1, 1, 0,
929 0, 1, 1, 0, 0, 1, 1, 0, 0,
930 0, 0, 1, 1, 1, 1, 0, 0, 0,
931 0, 0, 0, 0, 0, 0, 0, 0, 0,
932 0, 0, 0, 0, 0, 0, 0, 0, 0,
933
934 /* Char 54 */
935 0, 0, 0, 0, 0, 0, 0, 0, 0,
936 0, 0, 0, 0, 0, 0, 0, 0, 0,
937 0, 0, 0, 0, 0, 0, 0, 0, 0,
938 0, 0, 1, 1, 1, 1, 0, 0, 0,
939 0, 1, 1, 0, 0, 1, 1, 0, 0,
940 1, 1, 0, 0, 0, 0, 1, 0, 0,
941 1, 1, 0, 0, 0, 0, 0, 0, 0,
942 1, 1, 0, 1, 1, 1, 0, 0, 0,
943 1, 1, 1, 0, 0, 1, 1, 0, 0,
944 1, 1, 0, 0, 0, 0, 1, 1, 0,
945 1, 1, 0, 0, 0, 0, 1, 1, 0,
946 0, 1, 1, 0, 0, 1, 1, 0, 0,
947 0, 0, 1, 1, 1, 1, 0, 0, 0,
948 0, 0, 0, 0, 0, 0, 0, 0, 0,
949 0, 0, 0, 0, 0, 0, 0, 0, 0,
950
951 /* Char 55 */
952 0, 0, 0, 0, 0, 0, 0, 0, 0,
953 0, 0, 0, 0, 0, 0, 0, 0, 0,
954 0, 0, 0, 0, 0, 0, 0, 0, 0,
955 1, 1, 1, 1, 1, 1, 1, 1, 0,
956 0, 0, 0, 0, 0, 0, 1, 1, 0,
957 0, 0, 0, 0, 0, 0, 1, 1, 0,
958 0, 0, 0, 0, 0, 1, 1, 0, 0,
959 0, 0, 0, 0, 1, 1, 0, 0, 0,
960 0, 0, 0, 1, 1, 0, 0, 0, 0,
961 0, 0, 1, 1, 0, 0, 0, 0, 0,
962 0, 1, 1, 0, 0, 0, 0, 0, 0,
963 1, 1, 0, 0, 0, 0, 0, 0, 0,
964 1, 1, 0, 0, 0, 0, 0, 0, 0,
965 0, 0, 0, 0, 0, 0, 0, 0, 0,
966 0, 0, 0, 0, 0, 0, 0, 0, 0,
967
968 /* Char 56 */
969 0, 0, 0, 0, 0, 0, 0, 0, 0,
970 0, 0, 0, 0, 0, 0, 0, 0, 0,
971 0, 0, 0, 0, 0, 0, 0, 0, 0,
972 0, 0, 1, 1, 1, 1, 0, 0, 0,
973 0, 1, 1, 0, 0, 1, 1, 0, 0,
974 1, 1, 0, 0, 0, 0, 1, 1, 0,
975 0, 1, 1, 0, 0, 1, 1, 0, 0,
976 0, 0, 1, 1, 1, 1, 0, 0, 0,
977 0, 1, 1, 0, 0, 1, 1, 0, 0,
978 1, 1, 0, 0, 0, 0, 1, 1, 0,
979 1, 1, 0, 0, 0, 0, 1, 1, 0,
980 0, 1, 1, 0, 0, 1, 1, 0, 0,
981 0, 0, 1, 1, 1, 1, 0, 0, 0,
982 0, 0, 0, 0, 0, 0, 0, 0, 0,
983 0, 0, 0, 0, 0, 0, 0, 0, 0,
984
985 /* Char 57 */
986 0, 0, 0, 0, 0, 0, 0, 0, 0,
987 0, 0, 0, 0, 0, 0, 0, 0, 0,
988 0, 0, 0, 0, 0, 0, 0, 0, 0,
989 0, 0, 1, 1, 1, 1, 0, 0, 0,
990 0, 1, 1, 0, 0, 1, 1, 0, 0,
991 1, 1, 0, 0, 0, 0, 1, 1, 0,
992 1, 1, 0, 0, 0, 0, 1, 1, 0,
993 0, 1, 1, 0, 0, 1, 1, 1, 0,
994 0, 0, 1, 1, 1, 0, 1, 1, 0,
995 0, 0, 0, 0, 0, 0, 1, 1, 0,
996 0, 1, 0, 0, 0, 0, 1, 1, 0,
997 0, 1, 1, 0, 0, 1, 1, 0, 0,
998 0, 0, 1, 1, 1, 1, 0, 0, 0,
999 0, 0, 0, 0, 0, 0, 0, 0, 0,
1000 0, 0, 0, 0, 0, 0, 0, 0, 0,
1001
1002 /* Char 58 */
1003 0, 0, 0, 0, 0, 0, 0, 0, 0,
1004 0, 0, 0, 0, 0, 0, 0, 0, 0,
1005 0, 0, 0, 0, 0, 0, 0, 0, 0,
1006 0, 0, 0, 0, 0, 0, 0, 0, 0,
1007 0, 0, 0, 0, 0, 0, 0, 0, 0,
1008 0, 0, 0, 0, 0, 0, 0, 0, 0,
1009 0, 0, 0, 1, 1, 0, 0, 0, 0,
1010 0, 0, 1, 1, 1, 1, 0, 0, 0,
1011 0, 0, 0, 1, 1, 0, 0, 0, 0,
1012 0, 0, 0, 0, 0, 0, 0, 0, 0,
1013 0, 0, 0, 0, 0, 0, 0, 0, 0,
1014 0, 0, 0, 1, 1, 0, 0, 0, 0,
1015 0, 0, 1, 1, 1, 1, 0, 0, 0,
1016 0, 0, 0, 1, 1, 0, 0, 0, 0,
1017 0, 0, 0, 0, 0, 0, 0, 0, 0,
1018
1019 /* Char 59 */
1020 0, 0, 0, 0, 0, 0, 0, 0, 0,
1021 0, 0, 0, 0, 0, 0, 0, 0, 0,
1022 0, 0, 0, 0, 0, 0, 0, 0, 0,
1023 0, 0, 0, 0, 0, 0, 0, 0, 0,
1024 0, 0, 0, 0, 0, 0, 0, 0, 0,
1025 0, 0, 0, 0, 0, 0, 0, 0, 0,
1026 0, 0, 0, 1, 1, 0, 0, 0, 0,
1027 0, 0, 1, 1, 1, 1, 0, 0, 0,
1028 0, 0, 0, 1, 1, 0, 0, 0, 0,
1029 0, 0, 0, 0, 0, 0, 0, 0, 0,
1030 0, 0, 0, 0, 0, 0, 0, 0, 0,
1031 0, 0, 1, 1, 1, 1, 0, 0, 0,
1032 0, 0, 1, 1, 1, 0, 0, 0, 0,
1033 0, 1, 1, 0, 0, 0, 0, 0, 0,
1034 0, 0, 0, 0, 0, 0, 0, 0, 0,
1035
1036 /* Char 60 */
1037 0, 0, 0, 0, 0, 0, 0, 0, 0,
1038 0, 0, 0, 0, 0, 0, 0, 0, 0,
1039 0, 0, 0, 0, 0, 0, 0, 0, 0,
1040 0, 0, 0, 0, 0, 1, 1, 0, 0,
1041 0, 0, 0, 0, 1, 1, 0, 0, 0,
1042 0, 0, 0, 1, 1, 0, 0, 0, 0,
1043 0, 0, 1, 1, 0, 0, 0, 0, 0,
1044 0, 1, 1, 0, 0, 0, 0, 0, 0,
1045 0, 1, 1, 0, 0, 0, 0, 0, 0,
1046 0, 0, 1, 1, 0, 0, 0, 0, 0,
1047 0, 0, 0, 1, 1, 0, 0, 0, 0,
1048 0, 0, 0, 0, 1, 1, 0, 0, 0,
1049 0, 0, 0, 0, 0, 1, 1, 0, 0,
1050 0, 0, 0, 0, 0, 0, 0, 0, 0,
1051 0, 0, 0, 0, 0, 0, 0, 0, 0,
1052
1053 /* Char 61 */
1054 0, 0, 0, 0, 0, 0, 0, 0, 0,
1055 0, 0, 0, 0, 0, 0, 0, 0, 0,
1056 0, 0, 0, 0, 0, 0, 0, 0, 0,
1057 0, 0, 0, 0, 0, 0, 0, 0, 0,
1058 0, 0, 0, 0, 0, 0, 0, 0, 0,
1059 0, 0, 0, 0, 0, 0, 0, 0, 0,
1060 0, 0, 0, 0, 0, 0, 0, 0, 0,
1061 1, 1, 1, 1, 1, 1, 1, 1, 0,
1062 0, 0, 0, 0, 0, 0, 0, 0, 0,
1063 0, 0, 0, 0, 0, 0, 0, 0, 0,
1064 1, 1, 1, 1, 1, 1, 1, 1, 0,
1065 0, 0, 0, 0, 0, 0, 0, 0, 0,
1066 0, 0, 0, 0, 0, 0, 0, 0, 0,
1067 0, 0, 0, 0, 0, 0, 0, 0, 0,
1068 0, 0, 0, 0, 0, 0, 0, 0, 0,
1069
1070 /* Char 62 */
1071 0, 0, 0, 0, 0, 0, 0, 0, 0,
1072 0, 0, 0, 0, 0, 0, 0, 0, 0,
1073 0, 0, 0, 0, 0, 0, 0, 0, 0,
1074 1, 1, 0, 0, 0, 0, 0, 0, 0,
1075 0, 1, 1, 0, 0, 0, 0, 0, 0,
1076 0, 0, 1, 1, 0, 0, 0, 0, 0,
1077 0, 0, 0, 1, 1, 0, 0, 0, 0,
1078 0, 0, 0, 0, 1, 1, 0, 0, 0,
1079 0, 0, 0, 0, 1, 1, 0, 0, 0,
1080 0, 0, 0, 1, 1, 0, 0, 0, 0,
1081 0, 0, 1, 1, 0, 0, 0, 0, 0,
1082 0, 1, 1, 0, 0, 0, 0, 0, 0,
1083 1, 1, 0, 0, 0, 0, 0, 0, 0,
1084 0, 0, 0, 0, 0, 0, 0, 0, 0,
1085 0, 0, 0, 0, 0, 0, 0, 0, 0,
1086
1087 /* Char 63 */
1088 0, 0, 0, 0, 0, 0, 0, 0, 0,
1089 0, 0, 0, 0, 0, 0, 0, 0, 0,
1090 0, 0, 0, 0, 0, 0, 0, 0, 0,
1091 0, 0, 1, 1, 1, 1, 1, 0, 0,
1092 0, 1, 1, 0, 0, 0, 1, 1, 0,
1093 0, 1, 1, 0, 0, 0, 1, 1, 0,
1094 0, 0, 0, 0, 0, 0, 1, 1, 0,
1095 0, 0, 0, 0, 0, 1, 1, 0, 0,
1096 0, 0, 0, 0, 1, 1, 0, 0, 0,
1097 0, 0, 0, 1, 1, 0, 0, 0, 0,
1098 0, 0, 0, 0, 0, 0, 0, 0, 0,
1099 0, 0, 0, 1, 1, 0, 0, 0, 0,
1100 0, 0, 0, 1, 1, 0, 0, 0, 0,
1101 0, 0, 0, 0, 0, 0, 0, 0, 0,
1102 0, 0, 0, 0, 0, 0, 0, 0, 0,
1103
1104 /* Char 64 */
1105 0, 0, 0, 0, 0, 0, 0, 0, 0,
1106 0, 0, 0, 0, 0, 0, 0, 0, 0,
1107 0, 0, 0, 0, 0, 0, 0, 0, 0,
1108 0, 0, 1, 1, 1, 1, 0, 0, 0,
1109 0, 1, 1, 0, 0, 1, 1, 0, 0,
1110 1, 1, 0, 0, 0, 0, 1, 1, 0,
1111 1, 1, 0, 0, 1, 1, 1, 1, 0,
1112 1, 1, 0, 1, 1, 0, 1, 1, 0,
1113 1, 1, 0, 1, 1, 0, 1, 1, 0,
1114 1, 1, 0, 0, 1, 1, 1, 0, 0,
1115 1, 1, 0, 0, 0, 0, 0, 0, 0,
1116 0, 1, 1, 0, 0, 0, 1, 1, 0,
1117 0, 0, 1, 1, 1, 1, 1, 0, 0,
1118 0, 0, 0, 0, 0, 0, 0, 0, 0,
1119 0, 0, 0, 0, 0, 0, 0, 0, 0,
1120
1121 /* Char 65 */
1122 0, 0, 0, 0, 0, 0, 0, 0, 0,
1123 0, 0, 0, 0, 0, 0, 0, 0, 0,
1124 0, 0, 0, 0, 0, 0, 0, 0, 0,
1125 0, 0, 0, 1, 1, 0, 0, 0, 0,
1126 0, 0, 1, 1, 1, 1, 0, 0, 0,
1127 0, 1, 1, 0, 0, 1, 1, 0, 0,
1128 1, 1, 0, 0, 0, 0, 1, 1, 0,
1129 1, 1, 0, 0, 0, 0, 1, 1, 0,
1130 1, 1, 0, 0, 0, 0, 1, 1, 0,
1131 1, 1, 1, 1, 1, 1, 1, 1, 0,
1132 1, 1, 0, 0, 0, 0, 1, 1, 0,
1133 1, 1, 0, 0, 0, 0, 1, 1, 0,
1134 1, 1, 0, 0, 0, 0, 1, 1, 0,
1135 0, 0, 0, 0, 0, 0, 0, 0, 0,
1136 0, 0, 0, 0, 0, 0, 0, 0, 0,
1137
1138 /* Char 66 */
1139 0, 0, 0, 0, 0, 0, 0, 0, 0,
1140 0, 0, 0, 0, 0, 0, 0, 0, 0,
1141 0, 0, 0, 0, 0, 0, 0, 0, 0,
1142 1, 1, 1, 1, 1, 1, 0, 0, 0,
1143 1, 1, 0, 0, 0, 1, 1, 0, 0,
1144 1, 1, 0, 0, 0, 0, 1, 1, 0,
1145 1, 1, 0, 0, 0, 1, 1, 0, 0,
1146 1, 1, 1, 1, 1, 1, 0, 0, 0,
1147 1, 1, 0, 0, 0, 1, 1, 0, 0,
1148 1, 1, 0, 0, 0, 0, 1, 1, 0,
1149 1, 1, 0, 0, 0, 0, 1, 1, 0,
1150 1, 1, 0, 0, 0, 1, 1, 0, 0,
1151 1, 1, 1, 1, 1, 1, 0, 0, 0,
1152 0, 0, 0, 0, 0, 0, 0, 0, 0,
1153 0, 0, 0, 0, 0, 0, 0, 0, 0,
1154
1155 /* Char 67 */
1156 0, 0, 0, 0, 0, 0, 0, 0, 0,
1157 0, 0, 0, 0, 0, 0, 0, 0, 0,
1158 0, 0, 0, 0, 0, 0, 0, 0, 0,
1159 0, 0, 1, 1, 1, 1, 1, 0, 0,
1160 0, 1, 1, 0, 0, 0, 1, 1, 0,
1161 1, 1, 0, 0, 0, 0, 0, 1, 0,
1162 1, 1, 0, 0, 0, 0, 0, 0, 0,
1163 1, 1, 0, 0, 0, 0, 0, 0, 0,
1164 1, 1, 0, 0, 0, 0, 0, 0, 0,
1165 1, 1, 0, 0, 0, 0, 0, 0, 0,
1166 1, 1, 0, 0, 0, 0, 0, 1, 0,
1167 0, 1, 1, 0, 0, 0, 1, 1, 0,
1168 0, 0, 1, 1, 1, 1, 1, 0, 0,
1169 0, 0, 0, 0, 0, 0, 0, 0, 0,
1170 0, 0, 0, 0, 0, 0, 0, 0, 0,
1171
1172 /* Char 68 */
1173 0, 0, 0, 0, 0, 0, 0, 0, 0,
1174 0, 0, 0, 0, 0, 0, 0, 0, 0,
1175 0, 0, 0, 0, 0, 0, 0, 0, 0,
1176 1, 1, 1, 1, 1, 1, 0, 0, 0,
1177 1, 1, 0, 0, 0, 1, 1, 0, 0,
1178 1, 1, 0, 0, 0, 0, 1, 1, 0,
1179 1, 1, 0, 0, 0, 0, 1, 1, 0,
1180 1, 1, 0, 0, 0, 0, 1, 1, 0,
1181 1, 1, 0, 0, 0, 0, 1, 1, 0,
1182 1, 1, 0, 0, 0, 0, 1, 1, 0,
1183 1, 1, 0, 0, 0, 0, 1, 1, 0,
1184 1, 1, 0, 0, 0, 1, 1, 0, 0,
1185 1, 1, 1, 1, 1, 1, 0, 0, 0,
1186 0, 0, 0, 0, 0, 0, 0, 0, 0,
1187 0, 0, 0, 0, 0, 0, 0, 0, 0,
1188
1189 /* Char 69 */
1190 0, 0, 0, 0, 0, 0, 0, 0, 0,
1191 0, 0, 0, 0, 0, 0, 0, 0, 0,
1192 0, 0, 0, 0, 0, 0, 0, 0, 0,
1193 1, 1, 1, 1, 1, 1, 1, 0, 0,
1194 1, 1, 0, 0, 0, 0, 0, 0, 0,
1195 1, 1, 0, 0, 0, 0, 0, 0, 0,
1196 1, 1, 0, 0, 0, 0, 0, 0, 0,
1197 1, 1, 1, 1, 1, 1, 0, 0, 0,
1198 1, 1, 0, 0, 0, 0, 0, 0, 0,
1199 1, 1, 0, 0, 0, 0, 0, 0, 0,
1200 1, 1, 0, 0, 0, 0, 0, 0, 0,
1201 1, 1, 0, 0, 0, 0, 0, 0, 0,
1202 1, 1, 1, 1, 1, 1, 1, 0, 0,
1203 0, 0, 0, 0, 0, 0, 0, 0, 0,
1204 0, 0, 0, 0, 0, 0, 0, 0, 0,
1205
1206 /* Char 70 */
1207 0, 0, 0, 0, 0, 0, 0, 0, 0,
1208 0, 0, 0, 0, 0, 0, 0, 0, 0,
1209 0, 0, 0, 0, 0, 0, 0, 0, 0,
1210 1, 1, 1, 1, 1, 1, 1, 1, 0,
1211 1, 1, 0, 0, 0, 0, 0, 0, 0,
1212 1, 1, 0, 0, 0, 0, 0, 0, 0,
1213 1, 1, 0, 0, 0, 0, 0, 0, 0,
1214 1, 1, 1, 1, 1, 1, 0, 0, 0,
1215 1, 1, 0, 0, 0, 0, 0, 0, 0,
1216 1, 1, 0, 0, 0, 0, 0, 0, 0,
1217 1, 1, 0, 0, 0, 0, 0, 0, 0,
1218 1, 1, 0, 0, 0, 0, 0, 0, 0,
1219 1, 1, 0, 0, 0, 0, 0, 0, 0,
1220 0, 0, 0, 0, 0, 0, 0, 0, 0,
1221 0, 0, 0, 0, 0, 0, 0, 0, 0,
1222
1223 /* Char 71 */
1224 0, 0, 0, 0, 0, 0, 0, 0, 0,
1225 0, 0, 0, 0, 0, 0, 0, 0, 0,
1226 0, 0, 0, 0, 0, 0, 0, 0, 0,
1227 0, 0, 1, 1, 1, 1, 1, 0, 0,
1228 0, 1, 1, 0, 0, 0, 1, 1, 0,
1229 1, 1, 0, 0, 0, 0, 0, 0, 0,
1230 1, 1, 0, 0, 0, 0, 0, 0, 0,
1231 1, 1, 0, 0, 0, 0, 0, 0, 0,
1232 1, 1, 0, 0, 0, 1, 1, 1, 0,
1233 1, 1, 0, 0, 0, 0, 1, 1, 0,
1234 1, 1, 0, 0, 0, 0, 1, 1, 0,
1235 0, 1, 1, 0, 0, 0, 1, 1, 0,
1236 0, 0, 1, 1, 1, 1, 1, 0, 0,
1237 0, 0, 0, 0, 0, 0, 0, 0, 0,
1238 0, 0, 0, 0, 0, 0, 0, 0, 0,
1239
1240 /* Char 72 */
1241 0, 0, 0, 0, 0, 0, 0, 0, 0,
1242 0, 0, 0, 0, 0, 0, 0, 0, 0,
1243 0, 0, 0, 0, 0, 0, 0, 0, 0,
1244 1, 1, 0, 0, 0, 0, 1, 1, 0,
1245 1, 1, 0, 0, 0, 0, 1, 1, 0,
1246 1, 1, 0, 0, 0, 0, 1, 1, 0,
1247 1, 1, 0, 0, 0, 0, 1, 1, 0,
1248 1, 1, 1, 1, 1, 1, 1, 1, 0,
1249 1, 1, 0, 0, 0, 0, 1, 1, 0,
1250 1, 1, 0, 0, 0, 0, 1, 1, 0,
1251 1, 1, 0, 0, 0, 0, 1, 1, 0,
1252 1, 1, 0, 0, 0, 0, 1, 1, 0,
1253 1, 1, 0, 0, 0, 0, 1, 1, 0,
1254 0, 0, 0, 0, 0, 0, 0, 0, 0,
1255 0, 0, 0, 0, 0, 0, 0, 0, 0,
1256
1257 /* Char 73 */
1258 0, 0, 0, 0, 0, 0, 0, 0, 0,
1259 0, 0, 0, 0, 0, 0, 0, 0, 0,
1260 0, 0, 0, 0, 0, 0, 0, 0, 0,
1261 0, 1, 1, 1, 1, 1, 1, 0, 0,
1262 0, 0, 0, 1, 1, 0, 0, 0, 0,
1263 0, 0, 0, 1, 1, 0, 0, 0, 0,
1264 0, 0, 0, 1, 1, 0, 0, 0, 0,
1265 0, 0, 0, 1, 1, 0, 0, 0, 0,
1266 0, 0, 0, 1, 1, 0, 0, 0, 0,
1267 0, 0, 0, 1, 1, 0, 0, 0, 0,
1268 0, 0, 0, 1, 1, 0, 0, 0, 0,
1269 0, 0, 0, 1, 1, 0, 0, 0, 0,
1270 0, 1, 1, 1, 1, 1, 1, 0, 0,
1271 0, 0, 0, 0, 0, 0, 0, 0, 0,
1272 0, 0, 0, 0, 0, 0, 0, 0, 0,
1273
1274 /* Char 74 */
1275 0, 0, 0, 0, 0, 0, 0, 0, 0,
1276 0, 0, 0, 0, 0, 0, 0, 0, 0,
1277 0, 0, 0, 0, 0, 0, 0, 0, 0,
1278 0, 0, 0, 1, 1, 1, 1, 0, 0,
1279 0, 0, 0, 0, 0, 1, 1, 0, 0,
1280 0, 0, 0, 0, 0, 1, 1, 0, 0,
1281 0, 0, 0, 0, 0, 1, 1, 0, 0,
1282 0, 0, 0, 0, 0, 1, 1, 0, 0,
1283 0, 0, 0, 0, 0, 1, 1, 0, 0,
1284 0, 0, 0, 0, 0, 1, 1, 0, 0,
1285 0, 1, 0, 0, 0, 1, 1, 0, 0,
1286 0, 1, 1, 0, 1, 1, 0, 0, 0,
1287 0, 0, 1, 1, 1, 0, 0, 0, 0,
1288 0, 0, 0, 0, 0, 0, 0, 0, 0,
1289 0, 0, 0, 0, 0, 0, 0, 0, 0,
1290
1291 /* Char 75 */
1292 0, 0, 0, 0, 0, 0, 0, 0, 0,
1293 0, 0, 0, 0, 0, 0, 0, 0, 0,
1294 0, 0, 0, 0, 0, 0, 0, 0, 0,
1295 1, 1, 0, 0, 0, 0, 1, 1, 0,
1296 1, 1, 0, 0, 0, 1, 1, 0, 0,
1297 1, 1, 0, 0, 1, 1, 0, 0, 0,
1298 1, 1, 0, 1, 1, 0, 0, 0, 0,
1299 1, 1, 1, 1, 0, 0, 0, 0, 0,
1300 1, 1, 1, 1, 0, 0, 0, 0, 0,
1301 1, 1, 0, 1, 1, 0, 0, 0, 0,
1302 1, 1, 0, 0, 1, 1, 0, 0, 0,
1303 1, 1, 0, 0, 0, 1, 1, 0, 0,
1304 1, 1, 0, 0, 0, 0, 1, 1, 0,
1305 0, 0, 0, 0, 0, 0, 0, 0, 0,
1306 0, 0, 0, 0, 0, 0, 0, 0, 0,
1307
1308 /* Char 76 */
1309 0, 0, 0, 0, 0, 0, 0, 0, 0,
1310 0, 0, 0, 0, 0, 0, 0, 0, 0,
1311 0, 0, 0, 0, 0, 0, 0, 0, 0,
1312 1, 1, 0, 0, 0, 0, 0, 0, 0,
1313 1, 1, 0, 0, 0, 0, 0, 0, 0,
1314 1, 1, 0, 0, 0, 0, 0, 0, 0,
1315 1, 1, 0, 0, 0, 0, 0, 0, 0,
1316 1, 1, 0, 0, 0, 0, 0, 0, 0,
1317 1, 1, 0, 0, 0, 0, 0, 0, 0,
1318 1, 1, 0, 0, 0, 0, 0, 0, 0,
1319 1, 1, 0, 0, 0, 0, 0, 0, 0,
1320 1, 1, 0, 0, 0, 0, 0, 0, 0,
1321 1, 1, 1, 1, 1, 1, 1, 0, 0,
1322 0, 0, 0, 0, 0, 0, 0, 0, 0,
1323 0, 0, 0, 0, 0, 0, 0, 0, 0,
1324
1325 /* Char 77 */
1326 0, 0, 0, 0, 0, 0, 0, 0, 0,
1327 0, 0, 0, 0, 0, 0, 0, 0, 0,
1328 0, 0, 0, 0, 0, 0, 0, 0, 0,
1329 1, 1, 0, 0, 0, 0, 1, 1, 0,
1330 1, 1, 1, 0, 0, 1, 1, 1, 0,
1331 1, 1, 1, 1, 1, 1, 1, 1, 0,
1332 1, 1, 0, 1, 1, 0, 1, 1, 0,
1333 1, 1, 0, 1, 1, 0, 1, 1, 0,
1334 1, 1, 0, 1, 1, 0, 1, 1, 0,
1335 1, 1, 0, 0, 0, 0, 1, 1, 0,
1336 1, 1, 0, 0, 0, 0, 1, 1, 0,
1337 1, 1, 0, 0, 0, 0, 1, 1, 0,
1338 1, 1, 0, 0, 0, 0, 1, 1, 0,
1339 0, 0, 0, 0, 0, 0, 0, 0, 0,
1340 0, 0, 0, 0, 0, 0, 0, 0, 0,
1341
1342 /* Char 78 */
1343 0, 0, 0, 0, 0, 0, 0, 0, 0,
1344 0, 0, 0, 0, 0, 0, 0, 0, 0,
1345 0, 0, 0, 0, 0, 0, 0, 0, 0,
1346 1, 1, 0, 0, 0, 0, 1, 1, 0,
1347 1, 1, 1, 0, 0, 0, 1, 1, 0,
1348 1, 1, 1, 1, 0, 0, 1, 1, 0,
1349 1, 1, 1, 1, 0, 0, 1, 1, 0,
1350 1, 1, 0, 1, 1, 0, 1, 1, 0,
1351 1, 1, 0, 1, 1, 0, 1, 1, 0,
1352 1, 1, 0, 0, 1, 1, 1, 1, 0,
1353 1, 1, 0, 0, 0, 1, 1, 1, 0,
1354 1, 1, 0, 0, 0, 1, 1, 1, 0,
1355 1, 1, 0, 0, 0, 0, 1, 1, 0,
1356 0, 0, 0, 0, 0, 0, 0, 0, 0,
1357 0, 0, 0, 0, 0, 0, 0, 0, 0,
1358
1359 /* Char 79 */
1360 0, 0, 0, 0, 0, 0, 0, 0, 0,
1361 0, 0, 0, 0, 0, 0, 0, 0, 0,
1362 0, 0, 0, 0, 0, 0, 0, 0, 0,
1363 0, 0, 1, 1, 1, 1, 0, 0, 0,
1364 0, 1, 1, 0, 0, 1, 1, 0, 0,
1365 1, 1, 0, 0, 0, 0, 1, 1, 0,
1366 1, 1, 0, 0, 0, 0, 1, 1, 0,
1367 1, 1, 0, 0, 0, 0, 1, 1, 0,
1368 1, 1, 0, 0, 0, 0, 1, 1, 0,
1369 1, 1, 0, 0, 0, 0, 1, 1, 0,
1370 1, 1, 0, 0, 0, 0, 1, 1, 0,
1371 0, 1, 1, 0, 0, 1, 1, 0, 0,
1372 0, 0, 1, 1, 1, 1, 0, 0, 0,
1373 0, 0, 0, 0, 0, 0, 0, 0, 0,
1374 0, 0, 0, 0, 0, 0, 0, 0, 0,
1375
1376 /* Char 80 */
1377 0, 0, 0, 0, 0, 0, 0, 0, 0,
1378 0, 0, 0, 0, 0, 0, 0, 0, 0,
1379 0, 0, 0, 0, 0, 0, 0, 0, 0,
1380 1, 1, 1, 1, 1, 1, 1, 0, 0,
1381 1, 1, 0, 0, 0, 0, 1, 1, 0,
1382 1, 1, 0, 0, 0, 0, 1, 1, 0,
1383 1, 1, 0, 0, 0, 0, 1, 1, 0,
1384 1, 1, 1, 1, 1, 1, 1, 0, 0,
1385 1, 1, 0, 0, 0, 0, 0, 0, 0,
1386 1, 1, 0, 0, 0, 0, 0, 0, 0,
1387 1, 1, 0, 0, 0, 0, 0, 0, 0,
1388 1, 1, 0, 0, 0, 0, 0, 0, 0,
1389 1, 1, 0, 0, 0, 0, 0, 0, 0,
1390 0, 0, 0, 0, 0, 0, 0, 0, 0,
1391 0, 0, 0, 0, 0, 0, 0, 0, 0,
1392
1393 /* Char 81 */
1394 0, 0, 0, 0, 0, 0, 0, 0, 0,
1395 0, 0, 0, 0, 0, 0, 0, 0, 0,
1396 0, 0, 0, 0, 0, 0, 0, 0, 0,
1397 0, 0, 1, 1, 1, 1, 0, 0, 0,
1398 0, 1, 1, 0, 0, 1, 1, 0, 0,
1399 1, 1, 0, 0, 0, 0, 1, 1, 0,
1400 1, 1, 0, 0, 0, 0, 1, 1, 0,
1401 1, 1, 0, 0, 0, 0, 1, 1, 0,
1402 1, 1, 0, 0, 0, 0, 1, 1, 0,
1403 1, 1, 0, 1, 1, 0, 1, 1, 0,
1404 1, 1, 0, 0, 1, 1, 1, 1, 0,
1405 0, 1, 1, 0, 0, 1, 1, 0, 0,
1406 0, 0, 1, 1, 1, 1, 0, 1, 0,
1407 0, 0, 0, 0, 0, 0, 0, 0, 0,
1408 0, 0, 0, 0, 0, 0, 0, 0, 0,
1409
1410 /* Char 82 */
1411 0, 0, 0, 0, 0, 0, 0, 0, 0,
1412 0, 0, 0, 0, 0, 0, 0, 0, 0,
1413 0, 0, 0, 0, 0, 0, 0, 0, 0,
1414 1, 1, 1, 1, 1, 1, 1, 0, 0,
1415 1, 1, 0, 0, 0, 0, 1, 1, 0,
1416 1, 1, 0, 0, 0, 0, 1, 1, 0,
1417 1, 1, 0, 0, 0, 0, 1, 1, 0,
1418 1, 1, 1, 1, 1, 1, 1, 0, 0,
1419 1, 1, 1, 1, 1, 0, 0, 0, 0,
1420 1, 1, 0, 0, 1, 1, 0, 0, 0,
1421 1, 1, 0, 0, 0, 1, 1, 0, 0,
1422 1, 1, 0, 0, 0, 0, 1, 1, 0,
1423 1, 1, 0, 0, 0, 0, 1, 1, 0,
1424 0, 0, 0, 0, 0, 0, 0, 0, 0,
1425 0, 0, 0, 0, 0, 0, 0, 0, 0,
1426
1427 /* Char 83 */
1428 0, 0, 0, 0, 0, 0, 0, 0, 0,
1429 0, 0, 0, 0, 0, 0, 0, 0, 0,
1430 0, 0, 0, 0, 0, 0, 0, 0, 0,
1431 0, 1, 1, 1, 1, 1, 1, 0, 0,
1432 1, 1, 0, 0, 0, 0, 1, 1, 0,
1433 1, 1, 0, 0, 0, 0, 0, 0, 0,
1434 1, 1, 0, 0, 0, 0, 0, 0, 0,
1435 0, 1, 1, 1, 1, 1, 1, 0, 0,
1436 0, 0, 0, 0, 0, 0, 1, 1, 0,
1437 0, 0, 0, 0, 0, 0, 1, 1, 0,
1438 0, 0, 0, 0, 0, 0, 1, 1, 0,
1439 1, 1, 0, 0, 0, 0, 1, 1, 0,
1440 0, 1, 1, 1, 1, 1, 1, 0, 0,
1441 0, 0, 0, 0, 0, 0, 0, 0, 0,
1442 0, 0, 0, 0, 0, 0, 0, 0, 0,
1443
1444 /* Char 84 */
1445 0, 0, 0, 0, 0, 0, 0, 0, 0,
1446 0, 0, 0, 0, 0, 0, 0, 0, 0,
1447 0, 0, 0, 0, 0, 0, 0, 0, 0,
1448 1, 1, 1, 1, 1, 1, 1, 1, 0,
1449 0, 0, 0, 1, 1, 0, 0, 0, 0,
1450 0, 0, 0, 1, 1, 0, 0, 0, 0,
1451 0, 0, 0, 1, 1, 0, 0, 0, 0,
1452 0, 0, 0, 1, 1, 0, 0, 0, 0,
1453 0, 0, 0, 1, 1, 0, 0, 0, 0,
1454 0, 0, 0, 1, 1, 0, 0, 0, 0,
1455 0, 0, 0, 1, 1, 0, 0, 0, 0,
1456 0, 0, 0, 1, 1, 0, 0, 0, 0,
1457 0, 0, 0, 1, 1, 0, 0, 0, 0,
1458 0, 0, 0, 0, 0, 0, 0, 0, 0,
1459 0, 0, 0, 0, 0, 0, 0, 0, 0,
1460
1461 /* Char 85 */
1462 0, 0, 0, 0, 0, 0, 0, 0, 0,
1463 0, 0, 0, 0, 0, 0, 0, 0, 0,
1464 0, 0, 0, 0, 0, 0, 0, 0, 0,
1465 1, 1, 0, 0, 0, 0, 1, 1, 0,
1466 1, 1, 0, 0, 0, 0, 1, 1, 0,
1467 1, 1, 0, 0, 0, 0, 1, 1, 0,
1468 1, 1, 0, 0, 0, 0, 1, 1, 0,
1469 1, 1, 0, 0, 0, 0, 1, 1, 0,
1470 1, 1, 0, 0, 0, 0, 1, 1, 0,
1471 1, 1, 0, 0, 0, 0, 1, 1, 0,
1472 1, 1, 0, 0, 0, 0, 1, 1, 0,
1473 0, 1, 1, 0, 0, 1, 1, 0, 0,
1474 0, 0, 1, 1, 1, 1, 0, 0, 0,
1475 0, 0, 0, 0, 0, 0, 0, 0, 0,
1476 0, 0, 0, 0, 0, 0, 0, 0, 0,
1477
1478 /* Char 86 */
1479 0, 0, 0, 0, 0, 0, 0, 0, 0,
1480 0, 0, 0, 0, 0, 0, 0, 0, 0,
1481 0, 0, 0, 0, 0, 0, 0, 0, 0,
1482 1, 1, 0, 0, 0, 0, 1, 1, 0,
1483 1, 1, 0, 0, 0, 0, 1, 1, 0,
1484 1, 1, 0, 0, 0, 0, 1, 1, 0,
1485 0, 1, 1, 0, 0, 1, 1, 0, 0,
1486 0, 1, 1, 0, 0, 1, 1, 0, 0,
1487 0, 1, 1, 0, 0, 1, 1, 0, 0,
1488 0, 0, 1, 1, 1, 1, 0, 0, 0,
1489 0, 0, 1, 1, 1, 1, 0, 0, 0,
1490 0, 0, 0, 1, 1, 0, 0, 0, 0,
1491 0, 0, 0, 1, 1, 0, 0, 0, 0,
1492 0, 0, 0, 0, 0, 0, 0, 0, 0,
1493 0, 0, 0, 0, 0, 0, 0, 0, 0,
1494
1495 /* Char 87 */
1496 0, 0, 0, 0, 0, 0, 0, 0, 0,
1497 0, 0, 0, 0, 0, 0, 0, 0, 0,
1498 0, 0, 0, 0, 0, 0, 0, 0, 0,
1499 1, 1, 0, 0, 0, 0, 1, 1, 0,
1500 1, 1, 0, 0, 0, 0, 1, 1, 0,
1501 1, 1, 0, 0, 0, 0, 1, 1, 0,
1502 1, 1, 0, 0, 0, 0, 1, 1, 0,
1503 1, 1, 0, 1, 1, 0, 1, 1, 0,
1504 1, 1, 0, 1, 1, 0, 1, 1, 0,
1505 1, 1, 0, 1, 1, 0, 1, 1, 0,
1506 1, 1, 1, 1, 1, 1, 1, 1, 0,
1507 1, 1, 1, 0, 0, 1, 1, 1, 0,
1508 1, 1, 0, 0, 0, 0, 1, 1, 0,
1509 0, 0, 0, 0, 0, 0, 0, 0, 0,
1510 0, 0, 0, 0, 0, 0, 0, 0, 0,
1511
1512 /* Char 88 */
1513 0, 0, 0, 0, 0, 0, 0, 0, 0,
1514 0, 0, 0, 0, 0, 0, 0, 0, 0,
1515 0, 0, 0, 0, 0, 0, 0, 0, 0,
1516 1, 1, 0, 0, 0, 0, 1, 1, 0,
1517 1, 1, 0, 0, 0, 0, 1, 1, 0,
1518 0, 1, 1, 0, 0, 1, 1, 0, 0,
1519 0, 0, 1, 1, 1, 1, 0, 0, 0,
1520 0, 0, 0, 1, 1, 0, 0, 0, 0,
1521 0, 0, 0, 1, 1, 0, 0, 0, 0,
1522 0, 0, 1, 1, 1, 1, 0, 0, 0,
1523 0, 1, 1, 0, 0, 1, 1, 0, 0,
1524 1, 1, 0, 0, 0, 0, 1, 1, 0,
1525 1, 1, 0, 0, 0, 0, 1, 1, 0,
1526 0, 0, 0, 0, 0, 0, 0, 0, 0,
1527 0, 0, 0, 0, 0, 0, 0, 0, 0,
1528
1529 /* Char 89 */
1530 0, 0, 0, 0, 0, 0, 0, 0, 0,
1531 0, 0, 0, 0, 0, 0, 0, 0, 0,
1532 0, 0, 0, 0, 0, 0, 0, 0, 0,
1533 1, 1, 0, 0, 0, 0, 1, 1, 0,
1534 1, 1, 0, 0, 0, 0, 1, 1, 0,
1535 0, 1, 1, 0, 0, 1, 1, 0, 0,
1536 0, 0, 1, 1, 1, 1, 0, 0, 0,
1537 0, 0, 0, 1, 1, 0, 0, 0, 0,
1538 0, 0, 0, 1, 1, 0, 0, 0, 0,
1539 0, 0, 0, 1, 1, 0, 0, 0, 0,
1540 0, 0, 0, 1, 1, 0, 0, 0, 0,
1541 0, 0, 0, 1, 1, 0, 0, 0, 0,
1542 0, 0, 0, 1, 1, 0, 0, 0, 0,
1543 0, 0, 0, 0, 0, 0, 0, 0, 0,
1544 0, 0, 0, 0, 0, 0, 0, 0, 0,
1545
1546 /* Char 90 */
1547 0, 0, 0, 0, 0, 0, 0, 0, 0,
1548 0, 0, 0, 0, 0, 0, 0, 0, 0,
1549 0, 0, 0, 0, 0, 0, 0, 0, 0,
1550 1, 1, 1, 1, 1, 1, 1, 0, 0,
1551 0, 0, 0, 0, 0, 1, 1, 0, 0,
1552 0, 0, 0, 0, 0, 1, 1, 0, 0,
1553 0, 0, 0, 0, 1, 1, 0, 0, 0,
1554 0, 0, 0, 1, 1, 0, 0, 0, 0,
1555 0, 0, 1, 1, 0, 0, 0, 0, 0,
1556 0, 1, 1, 0, 0, 0, 0, 0, 0,
1557 1, 1, 0, 0, 0, 0, 0, 0, 0,
1558 1, 1, 0, 0, 0, 0, 0, 0, 0,
1559 1, 1, 1, 1, 1, 1, 1, 0, 0,
1560 0, 0, 0, 0, 0, 0, 0, 0, 0,
1561 0, 0, 0, 0, 0, 0, 0, 0, 0,
1562
1563 /* Char 91 */
1564 0, 0, 0, 0, 0, 0, 0, 0, 0,
1565 0, 0, 0, 0, 0, 0, 0, 0, 0,
1566 0, 0, 0, 0, 0, 0, 0, 0, 0,
1567 0, 0, 1, 1, 1, 1, 1, 0, 0,
1568 0, 0, 1, 1, 0, 0, 0, 0, 0,
1569 0, 0, 1, 1, 0, 0, 0, 0, 0,
1570 0, 0, 1, 1, 0, 0, 0, 0, 0,
1571 0, 0, 1, 1, 0, 0, 0, 0, 0,
1572 0, 0, 1, 1, 0, 0, 0, 0, 0,
1573 0, 0, 1, 1, 0, 0, 0, 0, 0,
1574 0, 0, 1, 1, 0, 0, 0, 0, 0,
1575 0, 0, 1, 1, 0, 0, 0, 0, 0,
1576 0, 0, 1, 1, 1, 1, 1, 0, 0,
1577 0, 0, 0, 0, 0, 0, 0, 0, 0,
1578 0, 0, 0, 0, 0, 0, 0, 0, 0,
1579
1580 /* Char 92 */
1581 0, 0, 0, 0, 0, 0, 0, 0, 0,
1582 0, 0, 0, 0, 0, 0, 0, 0, 0,
1583 0, 0, 0, 0, 0, 0, 0, 0, 0,
1584 1, 1, 0, 0, 0, 0, 0, 0, 0,
1585 0, 1, 1, 0, 0, 0, 0, 0, 0,
1586 0, 1, 1, 0, 0, 0, 0, 0, 0,
1587 0, 0, 1, 1, 0, 0, 0, 0, 0,
1588 0, 0, 0, 1, 1, 0, 0, 0, 0,
1589 0, 0, 0, 1, 1, 0, 0, 0, 0,
1590 0, 0, 0, 0, 1, 1, 0, 0, 0,
1591 0, 0, 0, 0, 0, 1, 1, 0, 0,
1592 0, 0, 0, 0, 0, 1, 1, 0, 0,
1593 0, 0, 0, 0, 0, 0, 1, 1, 0,
1594 0, 0, 0, 0, 0, 0, 0, 0, 0,
1595 0, 0, 0, 0, 0, 0, 0, 0, 0,
1596
1597 /* Char 93 */
1598 0, 0, 0, 0, 0, 0, 0, 0, 0,
1599 0, 0, 0, 0, 0, 0, 0, 0, 0,
1600 0, 0, 0, 0, 0, 0, 0, 0, 0,
1601 0, 1, 1, 1, 1, 1, 0, 0, 0,
1602 0, 0, 0, 0, 1, 1, 0, 0, 0,
1603 0, 0, 0, 0, 1, 1, 0, 0, 0,
1604 0, 0, 0, 0, 1, 1, 0, 0, 0,
1605 0, 0, 0, 0, 1, 1, 0, 0, 0,
1606 0, 0, 0, 0, 1, 1, 0, 0, 0,
1607 0, 0, 0, 0, 1, 1, 0, 0, 0,
1608 0, 0, 0, 0, 1, 1, 0, 0, 0,
1609 0, 0, 0, 0, 1, 1, 0, 0, 0,
1610 0, 1, 1, 1, 1, 1, 0, 0, 0,
1611 0, 0, 0, 0, 0, 0, 0, 0, 0,
1612 0, 0, 0, 0, 0, 0, 0, 0, 0,
1613
1614 /* Char 94 */
1615 0, 0, 0, 0, 0, 0, 0, 0, 0,
1616 0, 0, 0, 0, 0, 0, 0, 0, 0,
1617 0, 0, 0, 1, 1, 0, 0, 0, 0,
1618 0, 0, 1, 1, 1, 1, 0, 0, 0,
1619 0, 1, 1, 0, 0, 1, 1, 0, 0,
1620 0, 1, 0, 0, 0, 0, 1, 0, 0,
1621 0, 0, 0, 0, 0, 0, 0, 0, 0,
1622 0, 0, 0, 0, 0, 0, 0, 0, 0,
1623 0, 0, 0, 0, 0, 0, 0, 0, 0,
1624 0, 0, 0, 0, 0, 0, 0, 0, 0,
1625 0, 0, 0, 0, 0, 0, 0, 0, 0,
1626 0, 0, 0, 0, 0, 0, 0, 0, 0,
1627 0, 0, 0, 0, 0, 0, 0, 0, 0,
1628 0, 0, 0, 0, 0, 0, 0, 0, 0,
1629 0, 0, 0, 0, 0, 0, 0, 0, 0,
1630
1631 /* Char 95 */
1632 0, 0, 0, 0, 0, 0, 0, 0, 0,
1633 0, 0, 0, 0, 0, 0, 0, 0, 0,
1634 0, 0, 0, 0, 0, 0, 0, 0, 0,
1635 0, 0, 0, 0, 0, 0, 0, 0, 0,
1636 0, 0, 0, 0, 0, 0, 0, 0, 0,
1637 0, 0, 0, 0, 0, 0, 0, 0, 0,
1638 0, 0, 0, 0, 0, 0, 0, 0, 0,
1639 0, 0, 0, 0, 0, 0, 0, 0, 0,
1640 0, 0, 0, 0, 0, 0, 0, 0, 0,
1641 0, 0, 0, 0, 0, 0, 0, 0, 0,
1642 0, 0, 0, 0, 0, 0, 0, 0, 0,
1643 0, 0, 0, 0, 0, 0, 0, 0, 0,
1644 0, 0, 0, 0, 0, 0, 0, 0, 0,
1645 1, 1, 1, 1, 1, 1, 1, 1, 0,
1646 0, 0, 0, 0, 0, 0, 0, 0, 0,
1647
1648 /* Char 96 */
1649 0, 0, 0, 0, 0, 0, 0, 0, 0,
1650 0, 0, 0, 0, 0, 0, 0, 0, 0,
1651 0, 0, 0, 0, 0, 0, 0, 0, 0,
1652 0, 0, 1, 1, 1, 0, 0, 0, 0,
1653 0, 0, 1, 1, 1, 0, 0, 0, 0,
1654 0, 0, 0, 0, 1, 1, 0, 0, 0,
1655 0, 0, 0, 0, 0, 0, 0, 0, 0,
1656 0, 0, 0, 0, 0, 0, 0, 0, 0,
1657 0, 0, 0, 0, 0, 0, 0, 0, 0,
1658 0, 0, 0, 0, 0, 0, 0, 0, 0,
1659 0, 0, 0, 0, 0, 0, 0, 0, 0,
1660 0, 0, 0, 0, 0, 0, 0, 0, 0,
1661 0, 0, 0, 0, 0, 0, 0, 0, 0,
1662 0, 0, 0, 0, 0, 0, 0, 0, 0,
1663 0, 0, 0, 0, 0, 0, 0, 0, 0,
1664
1665 /* Char 97 */
1666 0, 0, 0, 0, 0, 0, 0, 0, 0,
1667 0, 0, 0, 0, 0, 0, 0, 0, 0,
1668 0, 0, 0, 0, 0, 0, 0, 0, 0,
1669 0, 0, 0, 0, 0, 0, 0, 0, 0,
1670 0, 0, 0, 0, 0, 0, 0, 0, 0,
1671 0, 0, 0, 0, 0, 0, 0, 0, 0,
1672 0, 0, 1, 1, 1, 1, 1, 0, 0,
1673 0, 1, 1, 0, 0, 0, 1, 1, 0,
1674 0, 0, 0, 0, 0, 0, 1, 1, 0,
1675 0, 1, 1, 1, 1, 1, 1, 1, 0,
1676 1, 1, 0, 0, 0, 0, 1, 1, 0,
1677 1, 1, 0, 0, 0, 1, 1, 1, 0,
1678 0, 1, 1, 1, 1, 0, 1, 1, 0,
1679 0, 0, 0, 0, 0, 0, 0, 0, 0,
1680 0, 0, 0, 0, 0, 0, 0, 0, 0,
1681
1682 /* Char 98 */
1683 0, 0, 0, 0, 0, 0, 0, 0, 0,
1684 0, 0, 0, 0, 0, 0, 0, 0, 0,
1685 0, 0, 0, 0, 0, 0, 0, 0, 0,
1686 1, 1, 0, 0, 0, 0, 0, 0, 0,
1687 1, 1, 0, 0, 0, 0, 0, 0, 0,
1688 1, 1, 0, 0, 0, 0, 0, 0, 0,
1689 1, 1, 0, 1, 1, 1, 0, 0, 0,
1690 1, 1, 1, 0, 0, 1, 1, 0, 0,
1691 1, 1, 0, 0, 0, 0, 1, 1, 0,
1692 1, 1, 0, 0, 0, 0, 1, 1, 0,
1693 1, 1, 0, 0, 0, 0, 1, 1, 0,
1694 1, 1, 1, 0, 0, 1, 1, 0, 0,
1695 1, 1, 0, 1, 1, 1, 0, 0, 0,
1696 0, 0, 0, 0, 0, 0, 0, 0, 0,
1697 0, 0, 0, 0, 0, 0, 0, 0, 0,
1698
1699 /* Char 99 */
1700 0, 0, 0, 0, 0, 0, 0, 0, 0,
1701 0, 0, 0, 0, 0, 0, 0, 0, 0,
1702 0, 0, 0, 0, 0, 0, 0, 0, 0,
1703 0, 0, 0, 0, 0, 0, 0, 0, 0,
1704 0, 0, 0, 0, 0, 0, 0, 0, 0,
1705 0, 0, 0, 0, 0, 0, 0, 0, 0,
1706 0, 0, 1, 1, 1, 1, 1, 0, 0,
1707 0, 1, 1, 0, 0, 0, 1, 1, 0,
1708 1, 1, 0, 0, 0, 0, 0, 0, 0,
1709 1, 1, 0, 0, 0, 0, 0, 0, 0,
1710 1, 1, 0, 0, 0, 0, 0, 0, 0,
1711 0, 1, 1, 0, 0, 0, 1, 1, 0,
1712 0, 0, 1, 1, 1, 1, 1, 0, 0,
1713 0, 0, 0, 0, 0, 0, 0, 0, 0,
1714 0, 0, 0, 0, 0, 0, 0, 0, 0,
1715
1716 /* Char 100 */
1717 0, 0, 0, 0, 0, 0, 0, 0, 0,
1718 0, 0, 0, 0, 0, 0, 0, 0, 0,
1719 0, 0, 0, 0, 0, 0, 0, 0, 0,
1720 0, 0, 0, 0, 0, 0, 1, 1, 0,
1721 0, 0, 0, 0, 0, 0, 1, 1, 0,
1722 0, 0, 0, 0, 0, 0, 1, 1, 0,
1723 0, 0, 1, 1, 1, 0, 1, 1, 0,
1724 0, 1, 1, 0, 0, 1, 1, 1, 0,
1725 1, 1, 0, 0, 0, 0, 1, 1, 0,
1726 1, 1, 0, 0, 0, 0, 1, 1, 0,
1727 1, 1, 0, 0, 0, 0, 1, 1, 0,
1728 0, 1, 1, 0, 0, 1, 1, 1, 0,
1729 0, 0, 1, 1, 1, 0, 1, 1, 0,
1730 0, 0, 0, 0, 0, 0, 0, 0, 0,
1731 0, 0, 0, 0, 0, 0, 0, 0, 0,
1732
1733 /* Char 101 */
1734 0, 0, 0, 0, 0, 0, 0, 0, 0,
1735 0, 0, 0, 0, 0, 0, 0, 0, 0,
1736 0, 0, 0, 0, 0, 0, 0, 0, 0,
1737 0, 0, 0, 0, 0, 0, 0, 0, 0,
1738 0, 0, 0, 0, 0, 0, 0, 0, 0,
1739 0, 0, 0, 0, 0, 0, 0, 0, 0,
1740 0, 0, 1, 1, 1, 1, 0, 0, 0,
1741 0, 1, 1, 0, 0, 1, 1, 0, 0,
1742 1, 1, 0, 0, 0, 0, 1, 1, 0,
1743 1, 1, 1, 1, 1, 1, 1, 1, 0,
1744 1, 1, 0, 0, 0, 0, 0, 0, 0,
1745 0, 1, 1, 0, 0, 0, 1, 1, 0,
1746 0, 0, 1, 1, 1, 1, 1, 0, 0,
1747 0, 0, 0, 0, 0, 0, 0, 0, 0,
1748 0, 0, 0, 0, 0, 0, 0, 0, 0,
1749
1750 /* Char 102 */
1751 0, 0, 0, 0, 0, 0, 0, 0, 0,
1752 0, 0, 0, 0, 0, 0, 0, 0, 0,
1753 0, 0, 0, 0, 0, 0, 0, 0, 0,
1754 0, 0, 0, 1, 1, 1, 1, 0, 0,
1755 0, 0, 1, 1, 0, 0, 1, 1, 0,
1756 0, 0, 1, 1, 0, 0, 1, 1, 0,
1757 0, 0, 1, 1, 0, 0, 0, 0, 0,
1758 0, 0, 1, 1, 0, 0, 0, 0, 0,
1759 1, 1, 1, 1, 1, 1, 0, 0, 0,
1760 0, 0, 1, 1, 0, 0, 0, 0, 0,
1761 0, 0, 1, 1, 0, 0, 0, 0, 0,
1762 0, 0, 1, 1, 0, 0, 0, 0, 0,
1763 0, 0, 1, 1, 0, 0, 0, 0, 0,
1764 0, 0, 0, 0, 0, 0, 0, 0, 0,
1765 0, 0, 0, 0, 0, 0, 0, 0, 0,
1766
1767 /* Char 103 */
1768 0, 0, 0, 0, 0, 0, 0, 0, 0,
1769 0, 0, 0, 0, 0, 0, 0, 0, 0,
1770 0, 0, 0, 0, 0, 0, 0, 0, 0,
1771 0, 0, 0, 0, 0, 0, 0, 0, 0,
1772 0, 0, 0, 0, 0, 0, 0, 0, 0,
1773 0, 0, 0, 0, 0, 0, 0, 0, 0,
1774 0, 1, 1, 1, 1, 1, 0, 1, 0,
1775 1, 1, 0, 0, 0, 1, 1, 1, 0,
1776 1, 1, 0, 0, 0, 1, 1, 0, 0,
1777 1, 1, 0, 0, 0, 1, 1, 0, 0,
1778 0, 1, 1, 1, 1, 1, 0, 0, 0,
1779 1, 1, 0, 0, 0, 0, 0, 0, 0,
1780 0, 1, 1, 1, 1, 1, 1, 0, 0,
1781 1, 1, 0, 0, 0, 0, 1, 1, 0,
1782 0, 1, 1, 1, 1, 1, 1, 0, 0,
1783
1784 /* Char 104 */
1785 0, 0, 0, 0, 0, 0, 0, 0, 0,
1786 0, 0, 0, 0, 0, 0, 0, 0, 0,
1787 0, 0, 0, 0, 0, 0, 0, 0, 0,
1788 1, 1, 0, 0, 0, 0, 0, 0, 0,
1789 1, 1, 0, 0, 0, 0, 0, 0, 0,
1790 1, 1, 0, 0, 0, 0, 0, 0, 0,
1791 1, 1, 0, 1, 1, 1, 0, 0, 0,
1792 1, 1, 1, 0, 0, 1, 1, 0, 0,
1793 1, 1, 0, 0, 0, 0, 1, 1, 0,
1794 1, 1, 0, 0, 0, 0, 1, 1, 0,
1795 1, 1, 0, 0, 0, 0, 1, 1, 0,
1796 1, 1, 0, 0, 0, 0, 1, 1, 0,
1797 1, 1, 0, 0, 0, 0, 1, 1, 0,
1798 0, 0, 0, 0, 0, 0, 0, 0, 0,
1799 0, 0, 0, 0, 0, 0, 0, 0, 0,
1800
1801 /* Char 105 */
1802 0, 0, 0, 0, 0, 0, 0, 0, 0,
1803 0, 0, 0, 0, 0, 0, 0, 0, 0,
1804 0, 0, 0, 0, 0, 0, 0, 0, 0,
1805 0, 0, 0, 1, 1, 0, 0, 0, 0,
1806 0, 0, 0, 1, 1, 0, 0, 0, 0,
1807 0, 0, 0, 0, 0, 0, 0, 0, 0,
1808 0, 0, 1, 1, 1, 0, 0, 0, 0,
1809 0, 0, 0, 1, 1, 0, 0, 0, 0,
1810 0, 0, 0, 1, 1, 0, 0, 0, 0,
1811 0, 0, 0, 1, 1, 0, 0, 0, 0,
1812 0, 0, 0, 1, 1, 0, 0, 0, 0,
1813 0, 0, 0, 1, 1, 0, 0, 0, 0,
1814 0, 1, 1, 1, 1, 1, 1, 0, 0,
1815 0, 0, 0, 0, 0, 0, 0, 0, 0,
1816 0, 0, 0, 0, 0, 0, 0, 0, 0,
1817
1818 /* Char 106 */
1819 0, 0, 0, 0, 0, 0, 0, 0, 0,
1820 0, 0, 0, 0, 0, 0, 0, 0, 0,
1821 0, 0, 0, 0, 0, 0, 0, 0, 0,
1822 0, 0, 0, 0, 0, 1, 1, 0, 0,
1823 0, 0, 0, 0, 0, 1, 1, 0, 0,
1824 0, 0, 0, 0, 0, 0, 0, 0, 0,
1825 0, 0, 0, 0, 1, 1, 1, 0, 0,
1826 0, 0, 0, 0, 0, 1, 1, 0, 0,
1827 0, 0, 0, 0, 0, 1, 1, 0, 0,
1828 0, 0, 0, 0, 0, 1, 1, 0, 0,
1829 0, 0, 0, 0, 0, 1, 1, 0, 0,
1830 0, 0, 0, 0, 0, 1, 1, 0, 0,
1831 1, 1, 0, 0, 0, 1, 1, 0, 0,
1832 1, 1, 0, 0, 0, 1, 1, 0, 0,
1833 0, 1, 1, 1, 1, 1, 0, 0, 0,
1834
1835 /* Char 107 */
1836 0, 0, 0, 0, 0, 0, 0, 0, 0,
1837 0, 0, 0, 0, 0, 0, 0, 0, 0,
1838 0, 0, 0, 0, 0, 0, 0, 0, 0,
1839 0, 1, 1, 0, 0, 0, 0, 0, 0,
1840 0, 1, 1, 0, 0, 0, 0, 0, 0,
1841 0, 1, 1, 0, 0, 0, 0, 0, 0,
1842 0, 1, 1, 0, 0, 1, 1, 0, 0,
1843 0, 1, 1, 0, 1, 1, 0, 0, 0,
1844 0, 1, 1, 1, 1, 0, 0, 0, 0,
1845 0, 1, 1, 1, 1, 0, 0, 0, 0,
1846 0, 1, 1, 0, 1, 1, 0, 0, 0,
1847 0, 1, 1, 0, 0, 1, 1, 0, 0,
1848 0, 1, 1, 0, 0, 0, 1, 1, 0,
1849 0, 0, 0, 0, 0, 0, 0, 0, 0,
1850 0, 0, 0, 0, 0, 0, 0, 0, 0,
1851
1852 /* Char 108 */
1853 0, 0, 0, 0, 0, 0, 0, 0, 0,
1854 0, 0, 0, 0, 0, 0, 0, 0, 0,
1855 0, 0, 0, 0, 0, 0, 0, 0, 0,
1856 0, 0, 1, 1, 1, 0, 0, 0, 0,
1857 0, 0, 0, 1, 1, 0, 0, 0, 0,
1858 0, 0, 0, 1, 1, 0, 0, 0, 0,
1859 0, 0, 0, 1, 1, 0, 0, 0, 0,
1860 0, 0, 0, 1, 1, 0, 0, 0, 0,
1861 0, 0, 0, 1, 1, 0, 0, 0, 0,
1862 0, 0, 0, 1, 1, 0, 0, 0, 0,
1863 0, 0, 0, 1, 1, 0, 0, 0, 0,
1864 0, 0, 0, 1, 1, 0, 0, 0, 0,
1865 0, 0, 1, 1, 1, 1, 0, 0, 0,
1866 0, 0, 0, 0, 0, 0, 0, 0, 0,
1867 0, 0, 0, 0, 0, 0, 0, 0, 0,
1868
1869 /* Char 109 */
1870 0, 0, 0, 0, 0, 0, 0, 0, 0,
1871 0, 0, 0, 0, 0, 0, 0, 0, 0,
1872 0, 0, 0, 0, 0, 0, 0, 0, 0,
1873 0, 0, 0, 0, 0, 0, 0, 0, 0,
1874 0, 0, 0, 0, 0, 0, 0, 0, 0,
1875 0, 0, 0, 0, 0, 0, 0, 0, 0,
1876 1, 0, 1, 1, 0, 1, 1, 0, 0,
1877 1, 1, 0, 1, 1, 0, 1, 1, 0,
1878 1, 1, 0, 1, 1, 0, 1, 1, 0,
1879 1, 1, 0, 1, 1, 0, 1, 1, 0,
1880 1, 1, 0, 1, 1, 0, 1, 1, 0,
1881 1, 1, 0, 1, 1, 0, 1, 1, 0,
1882 1, 1, 0, 1, 1, 0, 1, 1, 0,
1883 0, 0, 0, 0, 0, 0, 0, 0, 0,
1884 0, 0, 0, 0, 0, 0, 0, 0, 0,
1885
1886 /* Char 110 */
1887 0, 0, 0, 0, 0, 0, 0, 0, 0,
1888 0, 0, 0, 0, 0, 0, 0, 0, 0,
1889 0, 0, 0, 0, 0, 0, 0, 0, 0,
1890 0, 0, 0, 0, 0, 0, 0, 0, 0,
1891 0, 0, 0, 0, 0, 0, 0, 0, 0,
1892 0, 0, 0, 0, 0, 0, 0, 0, 0,
1893 1, 1, 0, 1, 1, 1, 0, 0, 0,
1894 1, 1, 1, 0, 0, 1, 1, 0, 0,
1895 1, 1, 0, 0, 0, 0, 1, 1, 0,
1896 1, 1, 0, 0, 0, 0, 1, 1, 0,
1897 1, 1, 0, 0, 0, 0, 1, 1, 0,
1898 1, 1, 0, 0, 0, 0, 1, 1, 0,
1899 1, 1, 0, 0, 0, 0, 1, 1, 0,
1900 0, 0, 0, 0, 0, 0, 0, 0, 0,
1901 0, 0, 0, 0, 0, 0, 0, 0, 0,
1902
1903 /* Char 111 */
1904 0, 0, 0, 0, 0, 0, 0, 0, 0,
1905 0, 0, 0, 0, 0, 0, 0, 0, 0,
1906 0, 0, 0, 0, 0, 0, 0, 0, 0,
1907 0, 0, 0, 0, 0, 0, 0, 0, 0,
1908 0, 0, 0, 0, 0, 0, 0, 0, 0,
1909 0, 0, 0, 0, 0, 0, 0, 0, 0,
1910 0, 0, 1, 1, 1, 1, 0, 0, 0,
1911 0, 1, 1, 0, 0, 1, 1, 0, 0,
1912 1, 1, 0, 0, 0, 0, 1, 1, 0,
1913 1, 1, 0, 0, 0, 0, 1, 1, 0,
1914 1, 1, 0, 0, 0, 0, 1, 1, 0,
1915 0, 1, 1, 0, 0, 1, 1, 0, 0,
1916 0, 0, 1, 1, 1, 1, 0, 0, 0,
1917 0, 0, 0, 0, 0, 0, 0, 0, 0,
1918 0, 0, 0, 0, 0, 0, 0, 0, 0,
1919
1920 /* Char 112 */
1921 0, 0, 0, 0, 0, 0, 0, 0, 0,
1922 0, 0, 0, 0, 0, 0, 0, 0, 0,
1923 0, 0, 0, 0, 0, 0, 0, 0, 0,
1924 0, 0, 0, 0, 0, 0, 0, 0, 0,
1925 0, 0, 0, 0, 0, 0, 0, 0, 0,
1926 0, 0, 0, 0, 0, 0, 0, 0, 0,
1927 1, 1, 0, 1, 1, 1, 0, 0, 0,
1928 1, 1, 1, 0, 0, 1, 1, 0, 0,
1929 1, 1, 0, 0, 0, 0, 1, 1, 0,
1930 1, 1, 0, 0, 0, 0, 1, 1, 0,
1931 1, 1, 0, 0, 0, 0, 1, 1, 0,
1932 1, 1, 1, 0, 0, 1, 1, 0, 0,
1933 1, 1, 0, 1, 1, 1, 0, 0, 0,
1934 1, 1, 0, 0, 0, 0, 0, 0, 0,
1935 1, 1, 0, 0, 0, 0, 0, 0, 0,
1936
1937 /* Char 113 */
1938 0, 0, 0, 0, 0, 0, 0, 0, 0,
1939 0, 0, 0, 0, 0, 0, 0, 0, 0,
1940 0, 0, 0, 0, 0, 0, 0, 0, 0,
1941 0, 0, 0, 0, 0, 0, 0, 0, 0,
1942 0, 0, 0, 0, 0, 0, 0, 0, 0,
1943 0, 0, 0, 0, 0, 0, 0, 0, 0,
1944 0, 0, 1, 1, 1, 0, 1, 1, 0,
1945 0, 1, 1, 0, 0, 1, 1, 1, 0,
1946 1, 1, 0, 0, 0, 0, 1, 1, 0,
1947 1, 1, 0, 0, 0, 0, 1, 1, 0,
1948 1, 1, 0, 0, 0, 0, 1, 1, 0,
1949 0, 1, 1, 0, 0, 1, 1, 1, 0,
1950 0, 0, 1, 1, 1, 0, 1, 1, 0,
1951 0, 0, 0, 0, 0, 0, 1, 1, 0,
1952 0, 0, 0, 0, 0, 0, 1, 1, 0,
1953
1954 /* Char 114 */
1955 0, 0, 0, 0, 0, 0, 0, 0, 0,
1956 0, 0, 0, 0, 0, 0, 0, 0, 0,
1957 0, 0, 0, 0, 0, 0, 0, 0, 0,
1958 0, 0, 0, 0, 0, 0, 0, 0, 0,
1959 0, 0, 0, 0, 0, 0, 0, 0, 0,
1960 0, 0, 0, 0, 0, 0, 0, 0, 0,
1961 1, 1, 0, 1, 1, 1, 1, 0, 0,
1962 0, 1, 1, 1, 0, 0, 1, 1, 0,
1963 0, 1, 1, 0, 0, 0, 0, 0, 0,
1964 0, 1, 1, 0, 0, 0, 0, 0, 0,
1965 0, 1, 1, 0, 0, 0, 0, 0, 0,
1966 0, 1, 1, 0, 0, 0, 0, 0, 0,
1967 0, 1, 1, 0, 0, 0, 0, 0, 0,
1968 0, 0, 0, 0, 0, 0, 0, 0, 0,
1969 0, 0, 0, 0, 0, 0, 0, 0, 0,
1970
1971 /* Char 115 */
1972 0, 0, 0, 0, 0, 0, 0, 0, 0,
1973 0, 0, 0, 0, 0, 0, 0, 0, 0,
1974 0, 0, 0, 0, 0, 0, 0, 0, 0,
1975 0, 0, 0, 0, 0, 0, 0, 0, 0,
1976 0, 0, 0, 0, 0, 0, 0, 0, 0,
1977 0, 0, 0, 0, 0, 0, 0, 0, 0,
1978 0, 1, 1, 1, 1, 1, 1, 0, 0,
1979 1, 1, 0, 0, 0, 0, 1, 1, 0,
1980 1, 1, 0, 0, 0, 0, 0, 0, 0,
1981 0, 1, 1, 1, 1, 1, 1, 0, 0,
1982 0, 0, 0, 0, 0, 0, 1, 1, 0,
1983 1, 1, 0, 0, 0, 0, 1, 1, 0,
1984 0, 1, 1, 1, 1, 1, 1, 0, 0,
1985 0, 0, 0, 0, 0, 0, 0, 0, 0,
1986 0, 0, 0, 0, 0, 0, 0, 0, 0,
1987
1988 /* Char 116 */
1989 0, 0, 0, 0, 0, 0, 0, 0, 0,
1990 0, 0, 0, 0, 0, 0, 0, 0, 0,
1991 0, 0, 0, 0, 0, 0, 0, 0, 0,
1992 0, 0, 0, 0, 0, 0, 0, 0, 0,
1993 0, 0, 1, 1, 0, 0, 0, 0, 0,
1994 0, 0, 1, 1, 0, 0, 0, 0, 0,
1995 1, 1, 1, 1, 1, 1, 0, 0, 0,
1996 0, 0, 1, 1, 0, 0, 0, 0, 0,
1997 0, 0, 1, 1, 0, 0, 0, 0, 0,
1998 0, 0, 1, 1, 0, 0, 0, 0, 0,
1999 0, 0, 1, 1, 0, 0, 0, 0, 0,
2000 0, 0, 1, 1, 0, 0, 1, 1, 0,
2001 0, 0, 0, 1, 1, 1, 1, 0, 0,
2002 0, 0, 0, 0, 0, 0, 0, 0, 0,
2003 0, 0, 0, 0, 0, 0, 0, 0, 0,
2004
2005 /* Char 117 */
2006 0, 0, 0, 0, 0, 0, 0, 0, 0,
2007 0, 0, 0, 0, 0, 0, 0, 0, 0,
2008 0, 0, 0, 0, 0, 0, 0, 0, 0,
2009 0, 0, 0, 0, 0, 0, 0, 0, 0,
2010 0, 0, 0, 0, 0, 0, 0, 0, 0,
2011 0, 0, 0, 0, 0, 0, 0, 0, 0,
2012 1, 1, 0, 0, 0, 0, 1, 1, 0,
2013 1, 1, 0, 0, 0, 0, 1, 1, 0,
2014 1, 1, 0, 0, 0, 0, 1, 1, 0,
2015 1, 1, 0, 0, 0, 0, 1, 1, 0,
2016 1, 1, 0, 0, 0, 0, 1, 1, 0,
2017 0, 1, 1, 0, 0, 1, 1, 1, 0,
2018 0, 0, 1, 1, 1, 0, 1, 1, 0,
2019 0, 0, 0, 0, 0, 0, 0, 0, 0,
2020 0, 0, 0, 0, 0, 0, 0, 0, 0,
2021
2022 /* Char 118 */
2023 0, 0, 0, 0, 0, 0, 0, 0, 0,
2024 0, 0, 0, 0, 0, 0, 0, 0, 0,
2025 0, 0, 0, 0, 0, 0, 0, 0, 0,
2026 0, 0, 0, 0, 0, 0, 0, 0, 0,
2027 0, 0, 0, 0, 0, 0, 0, 0, 0,
2028 0, 0, 0, 0, 0, 0, 0, 0, 0,
2029 1, 1, 0, 0, 0, 0, 1, 1, 0,
2030 1, 1, 0, 0, 0, 0, 1, 1, 0,
2031 0, 1, 1, 0, 0, 1, 1, 0, 0,
2032 0, 1, 1, 0, 0, 1, 1, 0, 0,
2033 0, 0, 1, 1, 1, 1, 0, 0, 0,
2034 0, 0, 1, 1, 1, 1, 0, 0, 0,
2035 0, 0, 0, 1, 1, 0, 0, 0, 0,
2036 0, 0, 0, 0, 0, 0, 0, 0, 0,
2037 0, 0, 0, 0, 0, 0, 0, 0, 0,
2038
2039 /* Char 119 */
2040 0, 0, 0, 0, 0, 0, 0, 0, 0,
2041 0, 0, 0, 0, 0, 0, 0, 0, 0,
2042 0, 0, 0, 0, 0, 0, 0, 0, 0,
2043 0, 0, 0, 0, 0, 0, 0, 0, 0,
2044 0, 0, 0, 0, 0, 0, 0, 0, 0,
2045 0, 0, 0, 0, 0, 0, 0, 0, 0,
2046 1, 1, 0, 0, 0, 0, 1, 1, 0,
2047 1, 1, 0, 0, 0, 0, 1, 1, 0,
2048 1, 1, 0, 1, 1, 0, 1, 1, 0,
2049 1, 1, 0, 1, 1, 0, 1, 1, 0,
2050 1, 1, 0, 1, 1, 0, 1, 1, 0,
2051 1, 1, 1, 1, 1, 1, 1, 1, 0,
2052 0, 1, 1, 0, 0, 1, 1, 0, 0,
2053 0, 0, 0, 0, 0, 0, 0, 0, 0,
2054 0, 0, 0, 0, 0, 0, 0, 0, 0,
2055
2056 /* Char 120 */
2057 0, 0, 0, 0, 0, 0, 0, 0, 0,
2058 0, 0, 0, 0, 0, 0, 0, 0, 0,
2059 0, 0, 0, 0, 0, 0, 0, 0, 0,
2060 0, 0, 0, 0, 0, 0, 0, 0, 0,
2061 0, 0, 0, 0, 0, 0, 0, 0, 0,
2062 0, 0, 0, 0, 0, 0, 0, 0, 0,
2063 1, 1, 0, 0, 0, 0, 1, 1, 0,
2064 0, 1, 1, 0, 0, 1, 1, 0, 0,
2065 0, 0, 1, 1, 1, 1, 0, 0, 0,
2066 0, 0, 0, 1, 1, 0, 0, 0, 0,
2067 0, 0, 1, 1, 1, 1, 0, 0, 0,
2068 0, 1, 1, 0, 0, 1, 1, 0, 0,
2069 1, 1, 0, 0, 0, 0, 1, 1, 0,
2070 0, 0, 0, 0, 0, 0, 0, 0, 0,
2071 0, 0, 0, 0, 0, 0, 0, 0, 0,
2072
2073 /* Char 121 */
2074 0, 0, 0, 0, 0, 0, 0, 0, 0,
2075 0, 0, 0, 0, 0, 0, 0, 0, 0,
2076 0, 0, 0, 0, 0, 0, 0, 0, 0,
2077 0, 0, 0, 0, 0, 0, 0, 0, 0,
2078 0, 0, 0, 0, 0, 0, 0, 0, 0,
2079 0, 0, 0, 0, 0, 0, 0, 0, 0,
2080 1, 1, 0, 0, 0, 0, 1, 1, 0,
2081 1, 1, 0, 0, 0, 0, 1, 1, 0,
2082 1, 1, 0, 0, 0, 0, 1, 1, 0,
2083 1, 1, 0, 0, 0, 0, 1, 1, 0,
2084 1, 1, 0, 0, 0, 0, 1, 1, 0,
2085 0, 1, 1, 0, 0, 1, 1, 1, 0,
2086 0, 0, 1, 1, 1, 0, 1, 1, 0,
2087 1, 0, 0, 0, 0, 0, 1, 1, 0,
2088 0, 1, 1, 1, 1, 1, 1, 0, 0,
2089
2090 /* Char 122 */
2091 0, 0, 0, 0, 0, 0, 0, 0, 0,
2092 0, 0, 0, 0, 0, 0, 0, 0, 0,
2093 0, 0, 0, 0, 0, 0, 0, 0, 0,
2094 0, 0, 0, 0, 0, 0, 0, 0, 0,
2095 0, 0, 0, 0, 0, 0, 0, 0, 0,
2096 0, 0, 0, 0, 0, 0, 0, 0, 0,
2097 0, 1, 1, 1, 1, 1, 1, 0, 0,
2098 0, 0, 0, 0, 0, 1, 1, 0, 0,
2099 0, 0, 0, 0, 1, 1, 0, 0, 0,
2100 0, 0, 0, 1, 1, 0, 0, 0, 0,
2101 0, 0, 1, 1, 0, 0, 0, 0, 0,
2102 0, 1, 1, 0, 0, 0, 0, 0, 0,
2103 0, 1, 1, 1, 1, 1, 1, 0, 0,
2104 0, 0, 0, 0, 0, 0, 0, 0, 0,
2105 0, 0, 0, 0, 0, 0, 0, 0, 0,
2106
2107 /* Char 123 */
2108 0, 0, 0, 0, 0, 0, 0, 0, 0,
2109 0, 0, 0, 0, 0, 0, 0, 0, 0,
2110 0, 0, 0, 0, 0, 0, 0, 0, 0,
2111 0, 0, 0, 0, 1, 1, 1, 0, 0,
2112 0, 0, 0, 1, 1, 0, 0, 0, 0,
2113 0, 0, 0, 1, 1, 0, 0, 0, 0,
2114 0, 0, 0, 1, 1, 0, 0, 0, 0,
2115 0, 0, 1, 1, 0, 0, 0, 0, 0,
2116 0, 0, 1, 1, 0, 0, 0, 0, 0,
2117 0, 0, 0, 1, 1, 0, 0, 0, 0,
2118 0, 0, 0, 1, 1, 0, 0, 0, 0,
2119 0, 0, 0, 1, 1, 0, 0, 0, 0,
2120 0, 0, 0, 0, 1, 1, 1, 0, 0,
2121 0, 0, 0, 0, 0, 0, 0, 0, 0,
2122 0, 0, 0, 0, 0, 0, 0, 0, 0,
2123
2124 /* Char 124 */
2125 0, 0, 0, 0, 0, 0, 0, 0, 0,
2126 0, 0, 0, 0, 0, 0, 0, 0, 0,
2127 0, 0, 0, 0, 0, 0, 0, 0, 0,
2128 0, 0, 0, 1, 1, 0, 0, 0, 0,
2129 0, 0, 0, 1, 1, 0, 0, 0, 0,
2130 0, 0, 0, 1, 1, 0, 0, 0, 0,
2131 0, 0, 0, 1, 1, 0, 0, 0, 0,
2132 0, 0, 0, 1, 1, 0, 0, 0, 0,
2133 0, 0, 0, 1, 1, 0, 0, 0, 0,
2134 0, 0, 0, 1, 1, 0, 0, 0, 0,
2135 0, 0, 0, 1, 1, 0, 0, 0, 0,
2136 0, 0, 0, 1, 1, 0, 0, 0, 0,
2137 0, 0, 0, 1, 1, 0, 0, 0, 0,
2138 0, 0, 0, 0, 0, 0, 0, 0, 0,
2139 0, 0, 0, 0, 0, 0, 0, 0, 0,
2140
2141 /* Char 125 */
2142 0, 0, 0, 0, 0, 0, 0, 0, 0,
2143 0, 0, 0, 0, 0, 0, 0, 0, 0,
2144 0, 0, 0, 0, 0, 0, 0, 0, 0,
2145 0, 1, 1, 1, 0, 0, 0, 0, 0,
2146 0, 0, 0, 1, 1, 0, 0, 0, 0,
2147 0, 0, 0, 1, 1, 0, 0, 0, 0,
2148 0, 0, 0, 1, 1, 0, 0, 0, 0,
2149 0, 0, 0, 0, 1, 1, 0, 0, 0,
2150 0, 0, 0, 0, 1, 1, 0, 0, 0,
2151 0, 0, 0, 1, 1, 0, 0, 0, 0,
2152 0, 0, 0, 1, 1, 0, 0, 0, 0,
2153 0, 0, 0, 1, 1, 0, 0, 0, 0,
2154 0, 1, 1, 1, 0, 0, 0, 0, 0,
2155 0, 0, 0, 0, 0, 0, 0, 0, 0,
2156 0, 0, 0, 0, 0, 0, 0, 0, 0,
2157
2158 /* Char 126 */
2159 0, 0, 0, 0, 0, 0, 0, 0, 0,
2160 0, 0, 0, 0, 0, 0, 0, 0, 0,
2161 0, 1, 1, 1, 0, 0, 1, 1, 0,
2162 1, 1, 0, 1, 1, 0, 1, 1, 0,
2163 1, 1, 0, 0, 1, 1, 1, 0, 0,
2164 0, 0, 0, 0, 0, 0, 0, 0, 0,
2165 0, 0, 0, 0, 0, 0, 0, 0, 0,
2166 0, 0, 0, 0, 0, 0, 0, 0, 0,
2167 0, 0, 0, 0, 0, 0, 0, 0, 0,
2168 0, 0, 0, 0, 0, 0, 0, 0, 0,
2169 0, 0, 0, 0, 0, 0, 0, 0, 0,
2170 0, 0, 0, 0, 0, 0, 0, 0, 0,
2171 0, 0, 0, 0, 0, 0, 0, 0, 0,
2172 0, 0, 0, 0, 0, 0, 0, 0, 0,
2173 0, 0, 0, 0, 0, 0, 0, 0, 0,
2174
2175 /* Char 127 */
2176 0, 0, 0, 0, 0, 0, 0, 0, 0,
2177 0, 0, 0, 0, 0, 0, 0, 0, 0,
2178 0, 0, 0, 0, 0, 0, 0, 0, 0,
2179 0, 0, 0, 0, 0, 0, 0, 0, 0,
2180 0, 0, 0, 0, 0, 0, 0, 0, 0,
2181 0, 0, 0, 0, 0, 0, 0, 0, 0,
2182 0, 0, 0, 0, 0, 0, 0, 0, 0,
2183 0, 0, 0, 0, 0, 0, 0, 0, 0,
2184 0, 0, 0, 0, 0, 0, 0, 0, 0,
2185 0, 0, 0, 0, 0, 0, 0, 0, 0,
2186 0, 0, 0, 0, 0, 0, 0, 0, 0,
2187 0, 0, 0, 0, 0, 0, 0, 0, 0,
2188 0, 0, 0, 0, 0, 0, 0, 0, 0,
2189 0, 0, 0, 0, 0, 0, 0, 0, 0,
2190 0, 0, 0, 0, 0, 0, 0, 0, 0,
2191
2192 /* Char 128 */
2193 0, 0, 0, 0, 0, 0, 0, 0, 0,
2194 0, 0, 0, 0, 0, 0, 0, 0, 0,
2195 0, 0, 0, 0, 0, 0, 0, 0, 0,
2196 0, 0, 0, 0, 0, 0, 0, 0, 0,
2197 0, 0, 0, 0, 0, 0, 0, 0, 0,
2198 0, 0, 0, 0, 0, 0, 0, 0, 0,
2199 0, 0, 0, 0, 0, 0, 0, 0, 0,
2200 0, 0, 0, 0, 0, 0, 0, 0, 0,
2201 0, 0, 0, 0, 0, 0, 0, 0, 0,
2202 0, 0, 0, 0, 0, 0, 0, 0, 0,
2203 0, 0, 0, 0, 0, 0, 0, 0, 0,
2204 0, 0, 0, 0, 0, 0, 0, 0, 0,
2205 0, 0, 0, 0, 0, 0, 0, 0, 0,
2206 0, 0, 0, 0, 0, 0, 0, 0, 0,
2207 0, 0, 0, 0, 0, 0, 0, 0, 0,
2208
2209 /* Char 129 */
2210 0, 0, 0, 0, 0, 0, 0, 0, 0,
2211 0, 0, 0, 0, 0, 0, 0, 0, 0,
2212 0, 0, 0, 0, 0, 0, 0, 0, 0,
2213 0, 0, 0, 0, 0, 0, 0, 0, 0,
2214 0, 0, 0, 0, 0, 0, 0, 0, 0,
2215 0, 0, 0, 0, 0, 0, 0, 0, 0,
2216 0, 0, 0, 0, 0, 0, 0, 0, 0,
2217 0, 0, 0, 0, 0, 0, 0, 0, 0,
2218 0, 0, 0, 0, 0, 0, 0, 0, 0,
2219 0, 0, 0, 0, 0, 0, 0, 0, 0,
2220 0, 0, 0, 0, 0, 0, 0, 0, 0,
2221 0, 0, 0, 0, 0, 0, 0, 0, 0,
2222 0, 0, 0, 0, 0, 0, 0, 0, 0,
2223 0, 0, 0, 0, 0, 0, 0, 0, 0,
2224 0, 0, 0, 0, 0, 0, 0, 0, 0,
2225
2226 /* Char 130 */
2227 0, 0, 0, 0, 0, 0, 0, 0, 0,
2228 0, 0, 0, 0, 0, 0, 0, 0, 0,
2229 0, 0, 0, 0, 0, 0, 0, 0, 0,
2230 0, 0, 0, 0, 0, 0, 0, 0, 0,
2231 0, 0, 0, 0, 0, 0, 0, 0, 0,
2232 0, 0, 0, 0, 0, 0, 0, 0, 0,
2233 0, 0, 0, 0, 0, 0, 0, 0, 0,
2234 0, 0, 0, 0, 0, 0, 0, 0, 0,
2235 0, 0, 0, 0, 0, 0, 0, 0, 0,
2236 0, 0, 0, 0, 0, 0, 0, 0, 0,
2237 0, 0, 0, 0, 0, 0, 0, 0, 0,
2238 0, 0, 0, 0, 0, 0, 0, 0, 0,
2239 0, 0, 0, 0, 0, 0, 0, 0, 0,
2240 0, 0, 0, 0, 0, 0, 0, 0, 0,
2241 0, 0, 0, 0, 0, 0, 0, 0, 0,
2242
2243 /* Char 131 */
2244 0, 0, 0, 0, 0, 0, 0, 0, 0,
2245 0, 0, 0, 0, 0, 0, 0, 0, 0,
2246 0, 0, 0, 0, 0, 0, 0, 0, 0,
2247 0, 0, 0, 0, 0, 0, 0, 0, 0,
2248 0, 0, 0, 0, 0, 0, 0, 0, 0,
2249 0, 0, 0, 0, 0, 0, 0, 0, 0,
2250 0, 0, 0, 0, 0, 0, 0, 0, 0,
2251 0, 0, 0, 0, 0, 0, 0, 0, 0,
2252 0, 0, 0, 0, 0, 0, 0, 0, 0,
2253 0, 0, 0, 0, 0, 0, 0, 0, 0,
2254 0, 0, 0, 0, 0, 0, 0, 0, 0,
2255 0, 0, 0, 0, 0, 0, 0, 0, 0,
2256 0, 0, 0, 0, 0, 0, 0, 0, 0,
2257 0, 0, 0, 0, 0, 0, 0, 0, 0,
2258 0, 0, 0, 0, 0, 0, 0, 0, 0,
2259
2260 /* Char 132 */
2261 0, 0, 0, 0, 0, 0, 0, 0, 0,
2262 0, 0, 0, 0, 0, 0, 0, 0, 0,
2263 0, 0, 0, 0, 0, 0, 0, 0, 0,
2264 0, 0, 0, 0, 0, 0, 0, 0, 0,
2265 0, 0, 0, 0, 0, 0, 0, 0, 0,
2266 0, 0, 0, 0, 0, 0, 0, 0, 0,
2267 0, 0, 0, 0, 0, 0, 0, 0, 0,
2268 0, 0, 0, 0, 0, 0, 0, 0, 0,
2269 0, 0, 0, 0, 0, 0, 0, 0, 0,
2270 0, 0, 0, 0, 0, 0, 0, 0, 0,
2271 0, 0, 0, 0, 0, 0, 0, 0, 0,
2272 0, 0, 0, 0, 0, 0, 0, 0, 0,
2273 0, 0, 0, 0, 0, 0, 0, 0, 0,
2274 0, 0, 0, 0, 0, 0, 0, 0, 0,
2275 0, 0, 0, 0, 0, 0, 0, 0, 0,
2276
2277 /* Char 133 */
2278 0, 0, 0, 0, 0, 0, 0, 0, 0,
2279 0, 0, 0, 0, 0, 0, 0, 0, 0,
2280 0, 0, 0, 0, 0, 0, 0, 0, 0,
2281 0, 0, 0, 0, 0, 0, 0, 0, 0,
2282 0, 0, 0, 0, 0, 0, 0, 0, 0,
2283 0, 0, 0, 0, 0, 0, 0, 0, 0,
2284 0, 0, 0, 0, 0, 0, 0, 0, 0,
2285 0, 0, 0, 0, 0, 0, 0, 0, 0,
2286 0, 0, 0, 0, 0, 0, 0, 0, 0,
2287 0, 0, 0, 0, 0, 0, 0, 0, 0,
2288 0, 0, 0, 0, 0, 0, 0, 0, 0,
2289 0, 0, 0, 0, 0, 0, 0, 0, 0,
2290 0, 0, 0, 0, 0, 0, 0, 0, 0,
2291 0, 0, 0, 0, 0, 0, 0, 0, 0,
2292 0, 0, 0, 0, 0, 0, 0, 0, 0,
2293
2294 /* Char 134 */
2295 0, 0, 0, 0, 0, 0, 0, 0, 0,
2296 0, 0, 0, 0, 0, 0, 0, 0, 0,
2297 0, 0, 0, 0, 0, 0, 0, 0, 0,
2298 0, 0, 0, 0, 0, 0, 0, 0, 0,
2299 0, 0, 0, 0, 0, 0, 0, 0, 0,
2300 0, 0, 0, 0, 0, 0, 0, 0, 0,
2301 0, 0, 0, 0, 0, 0, 0, 0, 0,
2302 0, 0, 0, 0, 0, 0, 0, 0, 0,
2303 0, 0, 0, 0, 0, 0, 0, 0, 0,
2304 0, 0, 0, 0, 0, 0, 0, 0, 0,
2305 0, 0, 0, 0, 0, 0, 0, 0, 0,
2306 0, 0, 0, 0, 0, 0, 0, 0, 0,
2307 0, 0, 0, 0, 0, 0, 0, 0, 0,
2308 0, 0, 0, 0, 0, 0, 0, 0, 0,
2309 0, 0, 0, 0, 0, 0, 0, 0, 0,
2310
2311 /* Char 135 */
2312 0, 0, 0, 0, 0, 0, 0, 0, 0,
2313 0, 0, 0, 0, 0, 0, 0, 0, 0,
2314 0, 0, 0, 0, 0, 0, 0, 0, 0,
2315 0, 0, 0, 0, 0, 0, 0, 0, 0,
2316 0, 0, 0, 0, 0, 0, 0, 0, 0,
2317 0, 0, 0, 0, 0, 0, 0, 0, 0,
2318 0, 0, 0, 0, 0, 0, 0, 0, 0,
2319 0, 0, 0, 0, 0, 0, 0, 0, 0,
2320 0, 0, 0, 0, 0, 0, 0, 0, 0,
2321 0, 0, 0, 0, 0, 0, 0, 0, 0,
2322 0, 0, 0, 0, 0, 0, 0, 0, 0,
2323 0, 0, 0, 0, 0, 0, 0, 0, 0,
2324 0, 0, 0, 0, 0, 0, 0, 0, 0,
2325 0, 0, 0, 0, 0, 0, 0, 0, 0,
2326 0, 0, 0, 0, 0, 0, 0, 0, 0,
2327
2328 /* Char 136 */
2329 0, 0, 0, 0, 0, 0, 0, 0, 0,
2330 0, 0, 0, 0, 0, 0, 0, 0, 0,
2331 0, 0, 0, 0, 0, 0, 0, 0, 0,
2332 0, 0, 0, 0, 0, 0, 0, 0, 0,
2333 0, 0, 0, 0, 0, 0, 0, 0, 0,
2334 0, 0, 0, 0, 0, 0, 0, 0, 0,
2335 0, 0, 0, 0, 0, 0, 0, 0, 0,
2336 0, 0, 0, 0, 0, 0, 0, 0, 0,
2337 0, 0, 0, 0, 0, 0, 0, 0, 0,
2338 0, 0, 0, 0, 0, 0, 0, 0, 0,
2339 0, 0, 0, 0, 0, 0, 0, 0, 0,
2340 0, 0, 0, 0, 0, 0, 0, 0, 0,
2341 0, 0, 0, 0, 0, 0, 0, 0, 0,
2342 0, 0, 0, 0, 0, 0, 0, 0, 0,
2343 0, 0, 0, 0, 0, 0, 0, 0, 0,
2344
2345 /* Char 137 */
2346 0, 0, 0, 0, 0, 0, 0, 0, 0,
2347 0, 0, 0, 0, 0, 0, 0, 0, 0,
2348 0, 0, 0, 0, 0, 0, 0, 0, 0,
2349 0, 0, 0, 0, 0, 0, 0, 0, 0,
2350 0, 0, 0, 0, 0, 0, 0, 0, 0,
2351 0, 0, 0, 0, 0, 0, 0, 0, 0,
2352 0, 0, 0, 0, 0, 0, 0, 0, 0,
2353 0, 0, 0, 0, 0, 0, 0, 0, 0,
2354 0, 0, 0, 0, 0, 0, 0, 0, 0,
2355 0, 0, 0, 0, 0, 0, 0, 0, 0,
2356 0, 0, 0, 0, 0, 0, 0, 0, 0,
2357 0, 0, 0, 0, 0, 0, 0, 0, 0,
2358 0, 0, 0, 0, 0, 0, 0, 0, 0,
2359 0, 0, 0, 0, 0, 0, 0, 0, 0,
2360 0, 0, 0, 0, 0, 0, 0, 0, 0,
2361
2362 /* Char 138 */
2363 0, 0, 0, 0, 0, 0, 0, 0, 0,
2364 0, 0, 0, 0, 0, 0, 0, 0, 0,
2365 0, 0, 0, 0, 0, 0, 0, 0, 0,
2366 0, 0, 0, 0, 0, 0, 0, 0, 0,
2367 0, 0, 0, 0, 0, 0, 0, 0, 0,
2368 0, 0, 0, 0, 0, 0, 0, 0, 0,
2369 0, 0, 0, 0, 0, 0, 0, 0, 0,
2370 0, 0, 0, 0, 0, 0, 0, 0, 0,
2371 0, 0, 0, 0, 0, 0, 0, 0, 0,
2372 0, 0, 0, 0, 0, 0, 0, 0, 0,
2373 0, 0, 0, 0, 0, 0, 0, 0, 0,
2374 0, 0, 0, 0, 0, 0, 0, 0, 0,
2375 0, 0, 0, 0, 0, 0, 0, 0, 0,
2376 0, 0, 0, 0, 0, 0, 0, 0, 0,
2377 0, 0, 0, 0, 0, 0, 0, 0, 0,
2378
2379 /* Char 139 */
2380 0, 0, 0, 0, 0, 0, 0, 0, 0,
2381 0, 0, 0, 0, 0, 0, 0, 0, 0,
2382 0, 0, 0, 0, 0, 0, 0, 0, 0,
2383 0, 0, 0, 0, 0, 0, 0, 0, 0,
2384 0, 0, 0, 0, 0, 0, 0, 0, 0,
2385 0, 0, 0, 0, 0, 0, 0, 0, 0,
2386 0, 0, 0, 0, 0, 0, 0, 0, 0,
2387 0, 0, 0, 0, 0, 0, 0, 0, 0,
2388 0, 0, 0, 0, 0, 0, 0, 0, 0,
2389 0, 0, 0, 0, 0, 0, 0, 0, 0,
2390 0, 0, 0, 0, 0, 0, 0, 0, 0,
2391 0, 0, 0, 0, 0, 0, 0, 0, 0,
2392 0, 0, 0, 0, 0, 0, 0, 0, 0,
2393 0, 0, 0, 0, 0, 0, 0, 0, 0,
2394 0, 0, 0, 0, 0, 0, 0, 0, 0,
2395
2396 /* Char 140 */
2397 0, 0, 0, 0, 0, 0, 0, 0, 0,
2398 0, 0, 0, 0, 0, 0, 0, 0, 0,
2399 0, 0, 0, 0, 0, 0, 0, 0, 0,
2400 0, 0, 0, 0, 0, 0, 0, 0, 0,
2401 0, 0, 0, 0, 0, 0, 0, 0, 0,
2402 0, 0, 0, 0, 0, 0, 0, 0, 0,
2403 0, 0, 0, 0, 0, 0, 0, 0, 0,
2404 0, 0, 0, 0, 0, 0, 0, 0, 0,
2405 0, 0, 0, 0, 0, 0, 0, 0, 0,
2406 0, 0, 0, 0, 0, 0, 0, 0, 0,
2407 0, 0, 0, 0, 0, 0, 0, 0, 0,
2408 0, 0, 0, 0, 0, 0, 0, 0, 0,
2409 0, 0, 0, 0, 0, 0, 0, 0, 0,
2410 0, 0, 0, 0, 0, 0, 0, 0, 0,
2411 0, 0, 0, 0, 0, 0, 0, 0, 0,
2412
2413 /* Char 141 */
2414 0, 0, 0, 0, 0, 0, 0, 0, 0,
2415 0, 0, 0, 0, 0, 0, 0, 0, 0,
2416 0, 0, 0, 0, 0, 0, 0, 0, 0,
2417 0, 0, 0, 0, 0, 0, 0, 0, 0,
2418 0, 0, 0, 0, 0, 0, 0, 0, 0,
2419 0, 0, 0, 0, 0, 0, 0, 0, 0,
2420 0, 0, 0, 0, 0, 0, 0, 0, 0,
2421 0, 0, 0, 0, 0, 0, 0, 0, 0,
2422 0, 0, 0, 0, 0, 0, 0, 0, 0,
2423 0, 0, 0, 0, 0, 0, 0, 0, 0,
2424 0, 0, 0, 0, 0, 0, 0, 0, 0,
2425 0, 0, 0, 0, 0, 0, 0, 0, 0,
2426 0, 0, 0, 0, 0, 0, 0, 0, 0,
2427 0, 0, 0, 0, 0, 0, 0, 0, 0,
2428 0, 0, 0, 0, 0, 0, 0, 0, 0,
2429
2430 /* Char 142 */
2431 0, 0, 0, 0, 0, 0, 0, 0, 0,
2432 0, 0, 0, 0, 0, 0, 0, 0, 0,
2433 0, 0, 0, 0, 0, 0, 0, 0, 0,
2434 0, 0, 0, 0, 0, 0, 0, 0, 0,
2435 0, 0, 0, 0, 0, 0, 0, 0, 0,
2436 0, 0, 0, 0, 0, 0, 0, 0, 0,
2437 0, 0, 0, 0, 0, 0, 0, 0, 0,
2438 0, 0, 0, 0, 0, 0, 0, 0, 0,
2439 0, 0, 0, 0, 0, 0, 0, 0, 0,
2440 0, 0, 0, 0, 0, 0, 0, 0, 0,
2441 0, 0, 0, 0, 0, 0, 0, 0, 0,
2442 0, 0, 0, 0, 0, 0, 0, 0, 0,
2443 0, 0, 0, 0, 0, 0, 0, 0, 0,
2444 0, 0, 0, 0, 0, 0, 0, 0, 0,
2445 0, 0, 0, 0, 0, 0, 0, 0, 0,
2446
2447 /* Char 143 */
2448 0, 0, 0, 0, 0, 0, 0, 0, 0,
2449 0, 0, 0, 0, 0, 0, 0, 0, 0,
2450 0, 0, 0, 0, 0, 0, 0, 0, 0,
2451 0, 0, 0, 0, 0, 0, 0, 0, 0,
2452 0, 0, 0, 0, 0, 0, 0, 0, 0,
2453 0, 0, 0, 0, 0, 0, 0, 0, 0,
2454 0, 0, 0, 0, 0, 0, 0, 0, 0,
2455 0, 0, 0, 0, 0, 0, 0, 0, 0,
2456 0, 0, 0, 0, 0, 0, 0, 0, 0,
2457 0, 0, 0, 0, 0, 0, 0, 0, 0,
2458 0, 0, 0, 0, 0, 0, 0, 0, 0,
2459 0, 0, 0, 0, 0, 0, 0, 0, 0,
2460 0, 0, 0, 0, 0, 0, 0, 0, 0,
2461 0, 0, 0, 0, 0, 0, 0, 0, 0,
2462 0, 0, 0, 0, 0, 0, 0, 0, 0,
2463
2464 /* Char 144 */
2465 0, 0, 0, 0, 0, 0, 0, 0, 0,
2466 0, 0, 0, 0, 0, 0, 0, 0, 0,
2467 0, 0, 0, 0, 0, 0, 0, 0, 0,
2468 0, 0, 0, 0, 0, 0, 0, 0, 0,
2469 0, 0, 0, 0, 0, 0, 0, 0, 0,
2470 0, 0, 0, 0, 0, 0, 0, 0, 0,
2471 0, 0, 0, 0, 0, 0, 0, 0, 0,
2472 0, 0, 0, 0, 0, 0, 0, 0, 0,
2473 0, 0, 0, 0, 0, 0, 0, 0, 0,
2474 0, 0, 0, 0, 0, 0, 0, 0, 0,
2475 0, 0, 0, 0, 0, 0, 0, 0, 0,
2476 0, 0, 0, 0, 0, 0, 0, 0, 0,
2477 0, 0, 0, 0, 0, 0, 0, 0, 0,
2478 0, 0, 0, 0, 0, 0, 0, 0, 0,
2479 0, 0, 0, 0, 0, 0, 0, 0, 0,
2480
2481 /* Char 145 */
2482 0, 0, 0, 0, 0, 0, 0, 0, 0,
2483 0, 0, 0, 0, 0, 0, 0, 0, 0,
2484 0, 0, 0, 0, 0, 0, 0, 0, 0,
2485 0, 0, 0, 0, 0, 0, 0, 0, 0,
2486 0, 0, 0, 0, 0, 0, 0, 0, 0,
2487 0, 0, 0, 0, 0, 0, 0, 0, 0,
2488 0, 0, 0, 0, 0, 0, 0, 0, 0,
2489 0, 0, 0, 0, 0, 0, 0, 0, 0,
2490 0, 0, 0, 0, 0, 0, 0, 0, 0,
2491 0, 0, 0, 0, 0, 0, 0, 0, 0,
2492 0, 0, 0, 0, 0, 0, 0, 0, 0,
2493 0, 0, 0, 0, 0, 0, 0, 0, 0,
2494 0, 0, 0, 0, 0, 0, 0, 0, 0,
2495 0, 0, 0, 0, 0, 0, 0, 0, 0,
2496 0, 0, 0, 0, 0, 0, 0, 0, 0,
2497
2498 /* Char 146 */
2499 0, 0, 0, 0, 0, 0, 0, 0, 0,
2500 0, 0, 0, 0, 0, 0, 0, 0, 0,
2501 0, 0, 0, 0, 0, 0, 0, 0, 0,
2502 0, 0, 0, 0, 0, 0, 0, 0, 0,
2503 0, 0, 0, 0, 0, 0, 0, 0, 0,
2504 0, 0, 0, 0, 0, 0, 0, 0, 0,
2505 0, 0, 0, 0, 0, 0, 0, 0, 0,
2506 0, 0, 0, 0, 0, 0, 0, 0, 0,
2507 0, 0, 0, 0, 0, 0, 0, 0, 0,
2508 0, 0, 0, 0, 0, 0, 0, 0, 0,
2509 0, 0, 0, 0, 0, 0, 0, 0, 0,
2510 0, 0, 0, 0, 0, 0, 0, 0, 0,
2511 0, 0, 0, 0, 0, 0, 0, 0, 0,
2512 0, 0, 0, 0, 0, 0, 0, 0, 0,
2513 0, 0, 0, 0, 0, 0, 0, 0, 0,
2514
2515 /* Char 147 */
2516 0, 0, 0, 0, 0, 0, 0, 0, 0,
2517 0, 0, 0, 0, 0, 0, 0, 0, 0,
2518 0, 0, 0, 0, 0, 0, 0, 0, 0,
2519 0, 0, 0, 0, 0, 0, 0, 0, 0,
2520 0, 0, 0, 0, 0, 0, 0, 0, 0,
2521 0, 0, 0, 0, 0, 0, 0, 0, 0,
2522 0, 0, 0, 0, 0, 0, 0, 0, 0,
2523 0, 0, 0, 0, 0, 0, 0, 0, 0,
2524 0, 0, 0, 0, 0, 0, 0, 0, 0,
2525 0, 0, 0, 0, 0, 0, 0, 0, 0,
2526 0, 0, 0, 0, 0, 0, 0, 0, 0,
2527 0, 0, 0, 0, 0, 0, 0, 0, 0,
2528 0, 0, 0, 0, 0, 0, 0, 0, 0,
2529 0, 0, 0, 0, 0, 0, 0, 0, 0,
2530 0, 0, 0, 0, 0, 0, 0, 0, 0,
2531
2532 /* Char 148 */
2533 0, 0, 0, 0, 0, 0, 0, 0, 0,
2534 0, 0, 0, 0, 0, 0, 0, 0, 0,
2535 0, 0, 0, 0, 0, 0, 0, 0, 0,
2536 0, 0, 0, 0, 0, 0, 0, 0, 0,
2537 0, 0, 0, 0, 0, 0, 0, 0, 0,
2538 0, 0, 0, 0, 0, 0, 0, 0, 0,
2539 0, 0, 0, 0, 0, 0, 0, 0, 0,
2540 0, 0, 0, 0, 0, 0, 0, 0, 0,
2541 0, 0, 0, 0, 0, 0, 0, 0, 0,
2542 0, 0, 0, 0, 0, 0, 0, 0, 0,
2543 0, 0, 0, 0, 0, 0, 0, 0, 0,
2544 0, 0, 0, 0, 0, 0, 0, 0, 0,
2545 0, 0, 0, 0, 0, 0, 0, 0, 0,
2546 0, 0, 0, 0, 0, 0, 0, 0, 0,
2547 0, 0, 0, 0, 0, 0, 0, 0, 0,
2548
2549 /* Char 149 */
2550 0, 0, 0, 0, 0, 0, 0, 0, 0,
2551 0, 0, 0, 0, 0, 0, 0, 0, 0,
2552 0, 0, 0, 0, 0, 0, 0, 0, 0,
2553 0, 0, 0, 0, 0, 0, 0, 0, 0,
2554 0, 0, 0, 0, 0, 0, 0, 0, 0,
2555 0, 0, 0, 0, 0, 0, 0, 0, 0,
2556 0, 0, 0, 0, 0, 0, 0, 0, 0,
2557 0, 0, 0, 0, 0, 0, 0, 0, 0,
2558 0, 0, 0, 0, 0, 0, 0, 0, 0,
2559 0, 0, 0, 0, 0, 0, 0, 0, 0,
2560 0, 0, 0, 0, 0, 0, 0, 0, 0,
2561 0, 0, 0, 0, 0, 0, 0, 0, 0,
2562 0, 0, 0, 0, 0, 0, 0, 0, 0,
2563 0, 0, 0, 0, 0, 0, 0, 0, 0,
2564 0, 0, 0, 0, 0, 0, 0, 0, 0,
2565
2566 /* Char 150 */
2567 0, 0, 0, 0, 0, 0, 0, 0, 0,
2568 0, 0, 0, 0, 0, 0, 0, 0, 0,
2569 0, 0, 0, 0, 0, 0, 0, 0, 0,
2570 0, 0, 0, 0, 0, 0, 0, 0, 0,
2571 0, 0, 0, 0, 0, 0, 0, 0, 0,
2572 0, 0, 0, 0, 0, 0, 0, 0, 0,
2573 0, 0, 0, 0, 0, 0, 0, 0, 0,
2574 0, 0, 0, 0, 0, 0, 0, 0, 0,
2575 0, 0, 0, 0, 0, 0, 0, 0, 0,
2576 0, 0, 0, 0, 0, 0, 0, 0, 0,
2577 0, 0, 0, 0, 0, 0, 0, 0, 0,
2578 0, 0, 0, 0, 0, 0, 0, 0, 0,
2579 0, 0, 0, 0, 0, 0, 0, 0, 0,
2580 0, 0, 0, 0, 0, 0, 0, 0, 0,
2581 0, 0, 0, 0, 0, 0, 0, 0, 0,
2582
2583 /* Char 151 */
2584 0, 0, 0, 0, 0, 0, 0, 0, 0,
2585 0, 0, 0, 0, 0, 0, 0, 0, 0,
2586 0, 0, 0, 0, 0, 0, 0, 0, 0,
2587 0, 0, 0, 0, 0, 0, 0, 0, 0,
2588 0, 0, 0, 0, 0, 0, 0, 0, 0,
2589 0, 0, 0, 0, 0, 0, 0, 0, 0,
2590 0, 0, 0, 0, 0, 0, 0, 0, 0,
2591 0, 0, 0, 0, 0, 0, 0, 0, 0,
2592 0, 0, 0, 0, 0, 0, 0, 0, 0,
2593 0, 0, 0, 0, 0, 0, 0, 0, 0,
2594 0, 0, 0, 0, 0, 0, 0, 0, 0,
2595 0, 0, 0, 0, 0, 0, 0, 0, 0,
2596 0, 0, 0, 0, 0, 0, 0, 0, 0,
2597 0, 0, 0, 0, 0, 0, 0, 0, 0,
2598 0, 0, 0, 0, 0, 0, 0, 0, 0,
2599
2600 /* Char 152 */
2601 0, 0, 0, 0, 0, 0, 0, 0, 0,
2602 0, 0, 0, 0, 0, 0, 0, 0, 0,
2603 0, 0, 0, 0, 0, 0, 0, 0, 0,
2604 0, 0, 0, 0, 0, 0, 0, 0, 0,
2605 0, 0, 0, 0, 0, 0, 0, 0, 0,
2606 0, 0, 0, 0, 0, 0, 0, 0, 0,
2607 0, 0, 0, 0, 0, 0, 0, 0, 0,
2608 0, 0, 0, 0, 0, 0, 0, 0, 0,
2609 0, 0, 0, 0, 0, 0, 0, 0, 0,
2610 0, 0, 0, 0, 0, 0, 0, 0, 0,
2611 0, 0, 0, 0, 0, 0, 0, 0, 0,
2612 0, 0, 0, 0, 0, 0, 0, 0, 0,
2613 0, 0, 0, 0, 0, 0, 0, 0, 0,
2614 0, 0, 0, 0, 0, 0, 0, 0, 0,
2615 0, 0, 0, 0, 0, 0, 0, 0, 0,
2616
2617 /* Char 153 */
2618 0, 0, 0, 0, 0, 0, 0, 0, 0,
2619 0, 0, 0, 0, 0, 0, 0, 0, 0,
2620 0, 0, 0, 0, 0, 0, 0, 0, 0,
2621 0, 0, 0, 0, 0, 0, 0, 0, 0,
2622 0, 0, 0, 0, 0, 0, 0, 0, 0,
2623 0, 0, 0, 0, 0, 0, 0, 0, 0,
2624 0, 0, 0, 0, 0, 0, 0, 0, 0,
2625 0, 0, 0, 0, 0, 0, 0, 0, 0,
2626 0, 0, 0, 0, 0, 0, 0, 0, 0,
2627 0, 0, 0, 0, 0, 0, 0, 0, 0,
2628 0, 0, 0, 0, 0, 0, 0, 0, 0,
2629 0, 0, 0, 0, 0, 0, 0, 0, 0,
2630 0, 0, 0, 0, 0, 0, 0, 0, 0,
2631 0, 0, 0, 0, 0, 0, 0, 0, 0,
2632 0, 0, 0, 0, 0, 0, 0, 0, 0,
2633
2634 /* Char 154 */
2635 0, 0, 0, 0, 0, 0, 0, 0, 0,
2636 0, 0, 0, 0, 0, 0, 0, 0, 0,
2637 0, 0, 0, 0, 0, 0, 0, 0, 0,
2638 0, 0, 0, 0, 0, 0, 0, 0, 0,
2639 0, 0, 0, 0, 0, 0, 0, 0, 0,
2640 0, 0, 0, 0, 0, 0, 0, 0, 0,
2641 0, 0, 0, 0, 0, 0, 0, 0, 0,
2642 0, 0, 0, 0, 0, 0, 0, 0, 0,
2643 0, 0, 0, 0, 0, 0, 0, 0, 0,
2644 0, 0, 0, 0, 0, 0, 0, 0, 0,
2645 0, 0, 0, 0, 0, 0, 0, 0, 0,
2646 0, 0, 0, 0, 0, 0, 0, 0, 0,
2647 0, 0, 0, 0, 0, 0, 0, 0, 0,
2648 0, 0, 0, 0, 0, 0, 0, 0, 0,
2649 0, 0, 0, 0, 0, 0, 0, 0, 0,
2650
2651 /* Char 155 */
2652 0, 0, 0, 0, 0, 0, 0, 0, 0,
2653 0, 0, 0, 0, 0, 0, 0, 0, 0,
2654 0, 0, 0, 0, 0, 0, 0, 0, 0,
2655 0, 0, 0, 0, 0, 0, 0, 0, 0,
2656 0, 0, 0, 0, 0, 0, 0, 0, 0,
2657 0, 0, 0, 0, 0, 0, 0, 0, 0,
2658 0, 0, 0, 0, 0, 0, 0, 0, 0,
2659 0, 0, 0, 0, 0, 0, 0, 0, 0,
2660 0, 0, 0, 0, 0, 0, 0, 0, 0,
2661 0, 0, 0, 0, 0, 0, 0, 0, 0,
2662 0, 0, 0, 0, 0, 0, 0, 0, 0,
2663 0, 0, 0, 0, 0, 0, 0, 0, 0,
2664 0, 0, 0, 0, 0, 0, 0, 0, 0,
2665 0, 0, 0, 0, 0, 0, 0, 0, 0,
2666 0, 0, 0, 0, 0, 0, 0, 0, 0,
2667
2668 /* Char 156 */
2669 0, 0, 0, 0, 0, 0, 0, 0, 0,
2670 0, 0, 0, 0, 0, 0, 0, 0, 0,
2671 0, 0, 0, 0, 0, 0, 0, 0, 0,
2672 0, 0, 0, 0, 0, 0, 0, 0, 0,
2673 0, 0, 0, 0, 0, 0, 0, 0, 0,
2674 0, 0, 0, 0, 0, 0, 0, 0, 0,
2675 0, 0, 0, 0, 0, 0, 0, 0, 0,
2676 0, 0, 0, 0, 0, 0, 0, 0, 0,
2677 0, 0, 0, 0, 0, 0, 0, 0, 0,
2678 0, 0, 0, 0, 0, 0, 0, 0, 0,
2679 0, 0, 0, 0, 0, 0, 0, 0, 0,
2680 0, 0, 0, 0, 0, 0, 0, 0, 0,
2681 0, 0, 0, 0, 0, 0, 0, 0, 0,
2682 0, 0, 0, 0, 0, 0, 0, 0, 0,
2683 0, 0, 0, 0, 0, 0, 0, 0, 0,
2684
2685 /* Char 157 */
2686 0, 0, 0, 0, 0, 0, 0, 0, 0,
2687 0, 0, 0, 0, 0, 0, 0, 0, 0,
2688 0, 0, 0, 0, 0, 0, 0, 0, 0,
2689 0, 0, 0, 0, 0, 0, 0, 0, 0,
2690 0, 0, 0, 0, 0, 0, 0, 0, 0,
2691 0, 0, 0, 0, 0, 0, 0, 0, 0,
2692 0, 0, 0, 0, 0, 0, 0, 0, 0,
2693 0, 0, 0, 0, 0, 0, 0, 0, 0,
2694 0, 0, 0, 0, 0, 0, 0, 0, 0,
2695 0, 0, 0, 0, 0, 0, 0, 0, 0,
2696 0, 0, 0, 0, 0, 0, 0, 0, 0,
2697 0, 0, 0, 0, 0, 0, 0, 0, 0,
2698 0, 0, 0, 0, 0, 0, 0, 0, 0,
2699 0, 0, 0, 0, 0, 0, 0, 0, 0,
2700 0, 0, 0, 0, 0, 0, 0, 0, 0,
2701
2702 /* Char 158 */
2703 0, 0, 0, 0, 0, 0, 0, 0, 0,
2704 0, 0, 0, 0, 0, 0, 0, 0, 0,
2705 0, 0, 0, 0, 0, 0, 0, 0, 0,
2706 0, 0, 0, 0, 0, 0, 0, 0, 0,
2707 0, 0, 0, 0, 0, 0, 0, 0, 0,
2708 0, 0, 0, 0, 0, 0, 0, 0, 0,
2709 0, 0, 0, 0, 0, 0, 0, 0, 0,
2710 0, 0, 0, 0, 0, 0, 0, 0, 0,
2711 0, 0, 0, 0, 0, 0, 0, 0, 0,
2712 0, 0, 0, 0, 0, 0, 0, 0, 0,
2713 0, 0, 0, 0, 0, 0, 0, 0, 0,
2714 0, 0, 0, 0, 0, 0, 0, 0, 0,
2715 0, 0, 0, 0, 0, 0, 0, 0, 0,
2716 0, 0, 0, 0, 0, 0, 0, 0, 0,
2717 0, 0, 0, 0, 0, 0, 0, 0, 0,
2718
2719 /* Char 159 */
2720 0, 0, 0, 0, 0, 0, 0, 0, 0,
2721 0, 0, 0, 0, 0, 0, 0, 0, 0,
2722 0, 0, 0, 0, 0, 0, 0, 0, 0,
2723 0, 0, 0, 0, 0, 0, 0, 0, 0,
2724 0, 0, 0, 0, 0, 0, 0, 0, 0,
2725 0, 0, 0, 0, 0, 0, 0, 0, 0,
2726 0, 0, 0, 0, 0, 0, 0, 0, 0,
2727 0, 0, 0, 0, 0, 0, 0, 0, 0,
2728 0, 0, 0, 0, 0, 0, 0, 0, 0,
2729 0, 0, 0, 0, 0, 0, 0, 0, 0,
2730 0, 0, 0, 0, 0, 0, 0, 0, 0,
2731 0, 0, 0, 0, 0, 0, 0, 0, 0,
2732 0, 0, 0, 0, 0, 0, 0, 0, 0,
2733 0, 0, 0, 0, 0, 0, 0, 0, 0,
2734 0, 0, 0, 0, 0, 0, 0, 0, 0,
2735
2736 /* Char 160 */
2737 0, 0, 0, 0, 0, 0, 0, 0, 0,
2738 0, 0, 0, 0, 0, 0, 0, 0, 0,
2739 0, 0, 0, 0, 0, 0, 0, 0, 0,
2740 0, 0, 0, 0, 0, 0, 0, 0, 0,
2741 0, 0, 0, 0, 0, 0, 0, 0, 0,
2742 0, 0, 0, 0, 0, 0, 0, 0, 0,
2743 0, 0, 0, 0, 0, 0, 0, 0, 0,
2744 0, 0, 0, 0, 0, 0, 0, 0, 0,
2745 0, 0, 0, 0, 0, 0, 0, 0, 0,
2746 0, 0, 0, 0, 0, 0, 0, 0, 0,
2747 0, 0, 0, 0, 0, 0, 0, 0, 0,
2748 0, 0, 0, 0, 0, 0, 0, 0, 0,
2749 0, 0, 0, 0, 0, 0, 0, 0, 0,
2750 0, 0, 0, 0, 0, 0, 0, 0, 0,
2751 0, 0, 0, 0, 0, 0, 0, 0, 0,
2752
2753 /* Char 161 */
2754 0, 0, 0, 0, 0, 0, 0, 0, 0,
2755 0, 0, 0, 0, 0, 0, 0, 0, 0,
2756 0, 0, 0, 0, 0, 0, 0, 0, 0,
2757 0, 0, 0, 1, 1, 0, 0, 0, 0,
2758 0, 0, 1, 1, 1, 1, 0, 0, 0,
2759 0, 1, 1, 0, 0, 1, 1, 0, 0,
2760 1, 1, 0, 0, 0, 0, 1, 1, 0,
2761 1, 1, 0, 0, 0, 0, 1, 1, 0,
2762 1, 1, 0, 0, 0, 0, 1, 1, 0,
2763 1, 1, 1, 1, 1, 1, 1, 1, 0,
2764 1, 1, 0, 0, 0, 0, 1, 1, 0,
2765 1, 1, 0, 0, 0, 0, 1, 1, 0,
2766 1, 1, 0, 0, 0, 0, 1, 1, 0,
2767 0, 0, 0, 0, 0, 1, 0, 0, 0,
2768 0, 0, 0, 0, 0, 0, 1, 1, 0,
2769
2770 /* Char 162 */
2771 0, 0, 0, 0, 0, 0, 0, 0, 0,
2772 0, 0, 0, 0, 0, 0, 0, 0, 0,
2773 1, 1, 0, 0, 0, 0, 1, 1, 0,
2774 0, 1, 1, 1, 1, 1, 1, 0, 0,
2775 0, 0, 0, 1, 1, 0, 0, 0, 0,
2776 0, 0, 0, 0, 0, 0, 0, 0, 0,
2777 0, 0, 0, 0, 0, 0, 0, 0, 0,
2778 0, 0, 0, 0, 0, 0, 0, 0, 0,
2779 0, 0, 0, 0, 0, 0, 0, 0, 0,
2780 0, 0, 0, 0, 0, 0, 0, 0, 0,
2781 0, 0, 0, 0, 0, 0, 0, 0, 0,
2782 0, 0, 0, 0, 0, 0, 0, 0, 0,
2783 0, 0, 0, 0, 0, 0, 0, 0, 0,
2784 0, 0, 0, 0, 0, 0, 0, 0, 0,
2785 0, 0, 0, 0, 0, 0, 0, 0, 0,
2786
2787 /* Char 163 */
2788 0, 0, 0, 0, 0, 0, 0, 0, 0,
2789 0, 0, 0, 0, 0, 0, 0, 0, 0,
2790 0, 0, 0, 0, 0, 0, 0, 0, 0,
2791 0, 1, 1, 0, 0, 0, 0, 0, 0,
2792 0, 1, 1, 0, 0, 0, 0, 0, 0,
2793 0, 1, 1, 0, 0, 1, 0, 0, 0,
2794 0, 1, 1, 0, 1, 1, 0, 0, 0,
2795 0, 1, 1, 1, 1, 0, 0, 0, 0,
2796 0, 1, 1, 1, 0, 0, 0, 0, 0,
2797 1, 1, 1, 0, 0, 0, 0, 0, 0,
2798 1, 1, 1, 0, 0, 0, 0, 0, 0,
2799 0, 1, 1, 0, 0, 0, 0, 0, 0,
2800 0, 1, 1, 1, 1, 1, 1, 0, 0,
2801 0, 0, 0, 0, 0, 0, 0, 0, 0,
2802 0, 0, 0, 0, 0, 0, 0, 0, 0,
2803
2804 /* Char 164 */
2805 0, 0, 0, 0, 0, 0, 0, 0, 0,
2806 0, 0, 0, 0, 0, 0, 0, 0, 0,
2807 0, 0, 0, 0, 0, 0, 0, 0, 0,
2808 0, 0, 0, 0, 0, 0, 0, 0, 0,
2809 0, 1, 1, 0, 0, 0, 1, 1, 0,
2810 0, 1, 1, 1, 1, 1, 1, 1, 0,
2811 0, 0, 1, 1, 0, 1, 1, 0, 0,
2812 0, 0, 1, 0, 0, 0, 1, 0, 0,
2813 0, 0, 1, 1, 0, 1, 1, 0, 0,
2814 0, 1, 1, 1, 1, 1, 1, 1, 0,
2815 0, 1, 1, 0, 0, 0, 1, 1, 0,
2816 0, 0, 0, 0, 0, 0, 0, 0, 0,
2817 0, 0, 0, 0, 0, 0, 0, 0, 0,
2818 0, 0, 0, 0, 0, 0, 0, 0, 0,
2819 0, 0, 0, 0, 0, 0, 0, 0, 0,
2820
2821 /* Char 165 */
2822 0, 0, 0, 0, 0, 0, 0, 0, 0,
2823 0, 0, 0, 1, 1, 1, 0, 0, 0,
2824 0, 0, 0, 0, 1, 1, 0, 0, 0,
2825 1, 1, 0, 0, 1, 1, 0, 0, 0,
2826 1, 1, 0, 1, 1, 0, 0, 0, 0,
2827 1, 1, 0, 0, 0, 0, 0, 0, 0,
2828 1, 1, 0, 0, 0, 0, 0, 0, 0,
2829 1, 1, 0, 0, 0, 0, 0, 0, 0,
2830 1, 1, 0, 0, 0, 0, 0, 0, 0,
2831 1, 1, 0, 0, 0, 0, 0, 0, 0,
2832 1, 1, 0, 0, 0, 0, 0, 0, 0,
2833 1, 1, 0, 0, 0, 0, 0, 0, 0,
2834 1, 1, 1, 1, 1, 1, 1, 0, 0,
2835 0, 0, 0, 0, 0, 0, 0, 0, 0,
2836 0, 0, 0, 0, 0, 0, 0, 0, 0,
2837
2838 /* Char 166 */
2839 0, 0, 0, 0, 1, 1, 1, 0, 0,
2840 0, 0, 1, 1, 1, 0, 0, 0, 0,
2841 0, 0, 0, 0, 0, 0, 0, 0, 0,
2842 0, 1, 1, 1, 1, 1, 1, 0, 0,
2843 1, 1, 0, 0, 0, 0, 1, 1, 0,
2844 1, 1, 0, 0, 0, 0, 0, 0, 0,
2845 1, 1, 0, 0, 0, 0, 0, 0, 0,
2846 0, 1, 1, 1, 1, 1, 1, 0, 0,
2847 0, 0, 0, 0, 0, 0, 1, 1, 0,
2848 0, 0, 0, 0, 0, 0, 1, 1, 0,
2849 0, 0, 0, 0, 0, 0, 1, 1, 0,
2850 1, 1, 0, 0, 0, 0, 1, 1, 0,
2851 0, 1, 1, 1, 1, 1, 1, 0, 0,
2852 0, 0, 0, 0, 0, 0, 0, 0, 0,
2853 0, 0, 0, 0, 0, 0, 0, 0, 0,
2854
2855 /* Char 167 */
2856 0, 0, 0, 0, 0, 0, 0, 0, 0,
2857 0, 0, 0, 0, 0, 0, 0, 0, 0,
2858 0, 0, 0, 0, 0, 0, 0, 0, 0,
2859 0, 0, 1, 1, 1, 1, 0, 0, 0,
2860 0, 1, 1, 0, 0, 1, 1, 0, 0,
2861 0, 1, 1, 0, 0, 0, 0, 0, 0,
2862 0, 0, 1, 1, 1, 1, 0, 0, 0,
2863 0, 1, 1, 0, 0, 1, 1, 0, 0,
2864 0, 1, 1, 0, 0, 1, 1, 0, 0,
2865 0, 1, 1, 0, 0, 1, 1, 0, 0,
2866 0, 0, 1, 1, 1, 1, 0, 0, 0,
2867 0, 0, 0, 0, 0, 1, 1, 0, 0,
2868 0, 1, 1, 0, 0, 1, 1, 0, 0,
2869 0, 0, 1, 1, 1, 1, 0, 0, 0,
2870 0, 0, 0, 0, 0, 0, 0, 0, 0,
2871
2872 /* Char 168 */
2873 0, 0, 0, 0, 0, 0, 0, 0, 0,
2874 0, 1, 1, 0, 0, 1, 1, 0, 0,
2875 0, 1, 1, 0, 0, 1, 1, 0, 0,
2876 0, 0, 0, 0, 0, 0, 0, 0, 0,
2877 0, 0, 0, 0, 0, 0, 0, 0, 0,
2878 0, 0, 0, 0, 0, 0, 0, 0, 0,
2879 0, 0, 0, 0, 0, 0, 0, 0, 0,
2880 0, 0, 0, 0, 0, 0, 0, 0, 0,
2881 0, 0, 0, 0, 0, 0, 0, 0, 0,
2882 0, 0, 0, 0, 0, 0, 0, 0, 0,
2883 0, 0, 0, 0, 0, 0, 0, 0, 0,
2884 0, 0, 0, 0, 0, 0, 0, 0, 0,
2885 0, 0, 0, 0, 0, 0, 0, 0, 0,
2886 0, 0, 0, 0, 0, 0, 0, 0, 0,
2887 0, 0, 0, 0, 0, 0, 0, 0, 0,
2888
2889 /* Char 169 */
2890 0, 1, 1, 0, 0, 1, 1, 0, 0,
2891 0, 0, 1, 1, 1, 1, 0, 0, 0,
2892 0, 0, 0, 0, 0, 0, 0, 0, 0,
2893 0, 1, 1, 1, 1, 1, 1, 0, 0,
2894 1, 1, 0, 0, 0, 0, 1, 1, 0,
2895 1, 1, 0, 0, 0, 0, 0, 0, 0,
2896 1, 1, 0, 0, 0, 0, 0, 0, 0,
2897 0, 1, 1, 1, 1, 1, 1, 0, 0,
2898 0, 0, 0, 0, 0, 0, 1, 1, 0,
2899 0, 0, 0, 0, 0, 0, 1, 1, 0,
2900 0, 0, 0, 0, 0, 0, 1, 1, 0,
2901 1, 1, 0, 0, 0, 0, 1, 1, 0,
2902 0, 1, 1, 1, 1, 1, 1, 0, 0,
2903 0, 0, 0, 0, 0, 0, 0, 0, 0,
2904 0, 0, 0, 0, 0, 0, 0, 0, 0,
2905
2906 /* Char 170 */
2907 0, 0, 0, 0, 0, 0, 0, 0, 0,
2908 0, 0, 0, 0, 0, 0, 0, 0, 0,
2909 0, 0, 0, 0, 0, 0, 0, 0, 0,
2910 0, 1, 1, 1, 1, 1, 1, 0, 0,
2911 1, 1, 0, 0, 0, 0, 1, 1, 0,
2912 1, 1, 0, 0, 0, 0, 0, 0, 0,
2913 1, 1, 0, 0, 0, 0, 0, 0, 0,
2914 0, 1, 1, 1, 1, 1, 1, 0, 0,
2915 0, 0, 0, 0, 0, 0, 1, 1, 0,
2916 0, 0, 0, 0, 0, 0, 1, 1, 0,
2917 0, 0, 0, 0, 0, 0, 1, 1, 0,
2918 1, 1, 0, 0, 0, 0, 1, 1, 0,
2919 0, 1, 1, 1, 1, 1, 1, 0, 0,
2920 0, 0, 0, 1, 1, 0, 0, 0, 0,
2921 0, 1, 1, 1, 0, 0, 0, 0, 0,
2922
2923 /* Char 171 */
2924 0, 1, 1, 0, 0, 1, 1, 0, 0,
2925 0, 0, 1, 1, 1, 1, 0, 0, 0,
2926 0, 0, 0, 0, 0, 0, 0, 0, 0,
2927 1, 1, 1, 1, 1, 1, 1, 1, 0,
2928 0, 0, 0, 1, 1, 0, 0, 0, 0,
2929 0, 0, 0, 1, 1, 0, 0, 0, 0,
2930 0, 0, 0, 1, 1, 0, 0, 0, 0,
2931 0, 0, 0, 1, 1, 0, 0, 0, 0,
2932 0, 0, 0, 1, 1, 0, 0, 0, 0,
2933 0, 0, 0, 1, 1, 0, 0, 0, 0,
2934 0, 0, 0, 1, 1, 0, 0, 0, 0,
2935 0, 0, 0, 1, 1, 0, 0, 0, 0,
2936 0, 0, 0, 1, 1, 0, 0, 0, 0,
2937 0, 0, 0, 0, 0, 0, 0, 0, 0,
2938 0, 0, 0, 0, 0, 0, 0, 0, 0,
2939
2940 /* Char 172 */
2941 0, 0, 0, 0, 1, 1, 1, 0, 0,
2942 0, 0, 1, 1, 1, 0, 0, 0, 0,
2943 0, 0, 0, 0, 0, 0, 0, 0, 0,
2944 1, 1, 1, 1, 1, 1, 1, 0, 0,
2945 0, 0, 0, 0, 0, 1, 1, 0, 0,
2946 0, 0, 0, 0, 0, 1, 1, 0, 0,
2947 0, 0, 0, 0, 1, 1, 0, 0, 0,
2948 0, 0, 0, 1, 1, 0, 0, 0, 0,
2949 0, 0, 1, 1, 0, 0, 0, 0, 0,
2950 0, 1, 1, 0, 0, 0, 0, 0, 0,
2951 1, 1, 0, 0, 0, 0, 0, 0, 0,
2952 1, 1, 0, 0, 0, 0, 0, 0, 0,
2953 1, 1, 1, 1, 1, 1, 1, 0, 0,
2954 0, 0, 0, 0, 0, 0, 0, 0, 0,
2955 0, 0, 0, 0, 0, 0, 0, 0, 0,
2956
2957 /* Char 173 */
2958 0, 0, 0, 0, 0, 0, 0, 0, 0,
2959 0, 0, 0, 0, 0, 0, 0, 0, 0,
2960 0, 0, 0, 0, 0, 0, 0, 0, 0,
2961 0, 0, 0, 0, 0, 0, 0, 0, 0,
2962 0, 0, 0, 0, 0, 0, 0, 0, 0,
2963 0, 0, 0, 0, 0, 0, 0, 0, 0,
2964 0, 0, 0, 0, 0, 0, 0, 0, 0,
2965 0, 1, 1, 1, 1, 1, 1, 0, 0,
2966 0, 1, 1, 1, 1, 1, 1, 0, 0,
2967 0, 0, 0, 0, 0, 0, 0, 0, 0,
2968 0, 0, 0, 0, 0, 0, 0, 0, 0,
2969 0, 0, 0, 0, 0, 0, 0, 0, 0,
2970 0, 0, 0, 0, 0, 0, 0, 0, 0,
2971 0, 0, 0, 0, 0, 0, 0, 0, 0,
2972 0, 0, 0, 0, 0, 0, 0, 0, 0,
2973
2974 /* Char 174 */
2975 0, 1, 1, 0, 1, 1, 0, 0, 0,
2976 0, 0, 1, 1, 1, 0, 0, 0, 0,
2977 0, 0, 0, 0, 0, 0, 0, 0, 0,
2978 1, 1, 1, 1, 1, 1, 1, 0, 0,
2979 0, 0, 0, 0, 0, 1, 1, 0, 0,
2980 0, 0, 0, 0, 0, 1, 1, 0, 0,
2981 0, 0, 0, 0, 1, 1, 0, 0, 0,
2982 0, 0, 0, 1, 1, 0, 0, 0, 0,
2983 0, 0, 1, 1, 0, 0, 0, 0, 0,
2984 0, 1, 1, 0, 0, 0, 0, 0, 0,
2985 1, 1, 0, 0, 0, 0, 0, 0, 0,
2986 1, 1, 0, 0, 0, 0, 0, 0, 0,
2987 1, 1, 1, 1, 1, 1, 1, 0, 0,
2988 0, 0, 0, 0, 0, 0, 0, 0, 0,
2989 0, 0, 0, 0, 0, 0, 0, 0, 0,
2990
2991 /* Char 175 */
2992 0, 0, 0, 1, 1, 0, 0, 0, 0,
2993 0, 0, 0, 1, 1, 0, 0, 0, 0,
2994 0, 0, 0, 0, 0, 0, 0, 0, 0,
2995 1, 1, 1, 1, 1, 1, 1, 0, 0,
2996 0, 0, 0, 0, 0, 1, 1, 0, 0,
2997 0, 0, 0, 0, 0, 1, 1, 0, 0,
2998 0, 0, 0, 0, 1, 1, 0, 0, 0,
2999 0, 0, 0, 1, 1, 0, 0, 0, 0,
3000 0, 0, 1, 1, 0, 0, 0, 0, 0,
3001 0, 1, 1, 0, 0, 0, 0, 0, 0,
3002 1, 1, 0, 0, 0, 0, 0, 0, 0,
3003 1, 1, 0, 0, 0, 0, 0, 0, 0,
3004 1, 1, 1, 1, 1, 1, 1, 0, 0,
3005 0, 0, 0, 0, 0, 0, 0, 0, 0,
3006 0, 0, 0, 0, 0, 0, 0, 0, 0,
3007
3008 /* Char 176 */
3009 0, 0, 0, 0, 0, 0, 0, 0, 0,
3010 0, 0, 0, 0, 0, 0, 0, 0, 0,
3011 0, 0, 1, 1, 1, 1, 0, 0, 0,
3012 0, 1, 1, 0, 0, 1, 1, 0, 0,
3013 0, 1, 1, 0, 0, 1, 1, 0, 0,
3014 0, 0, 1, 1, 1, 1, 0, 0, 0,
3015 0, 0, 0, 0, 0, 0, 0, 0, 0,
3016 0, 0, 0, 0, 0, 0, 0, 0, 0,
3017 0, 0, 0, 0, 0, 0, 0, 0, 0,
3018 0, 0, 0, 0, 0, 0, 0, 0, 0,
3019 0, 0, 0, 0, 0, 0, 0, 0, 0,
3020 0, 0, 0, 0, 0, 0, 0, 0, 0,
3021 0, 0, 0, 0, 0, 0, 0, 0, 0,
3022 0, 0, 0, 0, 0, 0, 0, 0, 0,
3023 0, 0, 0, 0, 0, 0, 0, 0, 0,
3024
3025 /* Char 177 */
3026 0, 0, 0, 0, 0, 0, 0, 0, 0,
3027 0, 0, 0, 0, 0, 0, 0, 0, 0,
3028 0, 0, 0, 0, 0, 0, 0, 0, 0,
3029 0, 0, 0, 0, 0, 0, 0, 0, 0,
3030 0, 0, 0, 0, 0, 0, 0, 0, 0,
3031 0, 0, 0, 0, 0, 0, 0, 0, 0,
3032 0, 0, 1, 1, 1, 1, 1, 0, 0,
3033 0, 1, 1, 0, 0, 0, 1, 1, 0,
3034 0, 0, 0, 0, 0, 0, 1, 1, 0,
3035 0, 1, 1, 1, 1, 1, 1, 1, 0,
3036 1, 1, 0, 0, 0, 0, 1, 1, 0,
3037 1, 1, 0, 0, 0, 1, 1, 1, 0,
3038 0, 1, 1, 1, 1, 0, 1, 1, 0,
3039 0, 0, 0, 0, 0, 1, 1, 0, 0,
3040 0, 0, 0, 0, 0, 0, 1, 1, 1,
3041
3042 /* Char 178 */
3043 0, 0, 0, 0, 0, 0, 0, 0, 0,
3044 0, 0, 0, 0, 0, 0, 0, 0, 0,
3045 0, 0, 0, 0, 0, 0, 0, 0, 0,
3046 0, 0, 0, 0, 0, 0, 0, 0, 0,
3047 0, 0, 0, 0, 0, 0, 0, 0, 0,
3048 0, 0, 0, 0, 0, 0, 0, 0, 0,
3049 0, 0, 0, 0, 0, 0, 0, 0, 0,
3050 0, 0, 0, 0, 0, 0, 0, 0, 0,
3051 0, 0, 0, 0, 0, 0, 0, 0, 0,
3052 0, 0, 0, 0, 0, 0, 0, 0, 0,
3053 0, 0, 0, 0, 0, 0, 0, 0, 0,
3054 0, 0, 0, 0, 0, 0, 0, 0, 0,
3055 0, 0, 0, 1, 1, 0, 0, 0, 0,
3056 0, 0, 0, 1, 1, 0, 1, 1, 0,
3057 0, 0, 0, 0, 1, 1, 1, 0, 0,
3058
3059 /* Char 179 */
3060 0, 0, 0, 0, 0, 0, 0, 0, 0,
3061 0, 0, 0, 0, 0, 0, 0, 0, 0,
3062 0, 0, 0, 0, 0, 0, 0, 0, 0,
3063 0, 0, 1, 1, 1, 0, 0, 0, 0,
3064 0, 0, 0, 1, 1, 0, 1, 0, 0,
3065 0, 0, 0, 1, 1, 1, 1, 0, 0,
3066 0, 0, 0, 1, 1, 1, 0, 0, 0,
3067 0, 0, 0, 1, 1, 0, 0, 0, 0,
3068 0, 0, 1, 1, 1, 0, 0, 0, 0,
3069 0, 1, 1, 1, 1, 0, 0, 0, 0,
3070 0, 1, 0, 1, 1, 0, 0, 0, 0,
3071 0, 0, 0, 1, 1, 0, 0, 0, 0,
3072 0, 1, 1, 1, 1, 1, 1, 0, 0,
3073 0, 0, 0, 0, 0, 0, 0, 0, 0,
3074 0, 0, 0, 0, 0, 0, 0, 0, 0,
3075
3076 /* Char 180 */
3077 0, 0, 0, 0, 0, 0, 0, 0, 0,
3078 0, 0, 0, 0, 0, 1, 1, 0, 0,
3079 0, 0, 0, 0, 1, 1, 0, 0, 0,
3080 0, 0, 0, 1, 1, 0, 0, 0, 0,
3081 0, 0, 0, 0, 0, 0, 0, 0, 0,
3082 0, 0, 0, 0, 0, 0, 0, 0, 0,
3083 0, 0, 0, 0, 0, 0, 0, 0, 0,
3084 0, 0, 0, 0, 0, 0, 0, 0, 0,
3085 0, 0, 0, 0, 0, 0, 0, 0, 0,
3086 0, 0, 0, 0, 0, 0, 0, 0, 0,
3087 0, 0, 0, 0, 0, 0, 0, 0, 0,
3088 0, 0, 0, 0, 0, 0, 0, 0, 0,
3089 0, 0, 0, 0, 0, 0, 0, 0, 0,
3090 0, 0, 0, 0, 0, 0, 0, 0, 0,
3091 0, 0, 0, 0, 0, 0, 0, 0, 0,
3092
3093 /* Char 181 */
3094 0, 0, 0, 0, 0, 0, 0, 0, 0,
3095 0, 0, 0, 0, 0, 1, 1, 1, 0,
3096 0, 0, 0, 0, 0, 0, 1, 1, 0,
3097 0, 1, 1, 1, 0, 0, 1, 1, 0,
3098 0, 0, 1, 1, 0, 1, 1, 0, 0,
3099 0, 0, 1, 1, 0, 0, 0, 0, 0,
3100 0, 0, 1, 1, 0, 0, 0, 0, 0,
3101 0, 0, 1, 1, 0, 0, 0, 0, 0,
3102 0, 0, 1, 1, 0, 0, 0, 0, 0,
3103 0, 0, 1, 1, 0, 0, 0, 0, 0,
3104 0, 0, 1, 1, 0, 0, 0, 0, 0,
3105 0, 0, 1, 1, 0, 0, 0, 0, 0,
3106 1, 1, 1, 1, 1, 1, 0, 0, 0,
3107 0, 0, 0, 0, 0, 0, 0, 0, 0,
3108 0, 0, 0, 0, 0, 0, 0, 0, 0,
3109
3110 /* Char 182 */
3111 0, 0, 0, 0, 0, 0, 0, 0, 0,
3112 0, 0, 0, 0, 0, 0, 0, 0, 0,
3113 0, 0, 0, 0, 0, 1, 1, 0, 0,
3114 0, 0, 0, 0, 1, 1, 0, 0, 0,
3115 0, 0, 0, 1, 1, 0, 0, 0, 0,
3116 0, 0, 0, 0, 0, 0, 0, 0, 0,
3117 0, 1, 1, 1, 1, 1, 1, 0, 0,
3118 1, 1, 0, 0, 0, 0, 1, 1, 0,
3119 1, 1, 0, 0, 0, 0, 0, 0, 0,
3120 0, 1, 1, 1, 1, 1, 1, 0, 0,
3121 0, 0, 0, 0, 0, 0, 1, 1, 0,
3122 1, 1, 0, 0, 0, 0, 1, 1, 0,
3123 0, 1, 1, 1, 1, 1, 1, 0, 0,
3124 0, 0, 0, 0, 0, 0, 0, 0, 0,
3125 0, 0, 0, 0, 0, 0, 0, 0, 0,
3126
3127 /* Char 183 */
3128 0, 0, 0, 0, 0, 0, 0, 0, 0,
3129 0, 0, 0, 0, 0, 0, 0, 0, 0,
3130 0, 1, 1, 0, 0, 1, 1, 0, 0,
3131 0, 0, 1, 1, 1, 1, 0, 0, 0,
3132 0, 0, 0, 1, 1, 0, 0, 0, 0,
3133 0, 0, 0, 0, 0, 0, 0, 0, 0,
3134 0, 0, 0, 0, 0, 0, 0, 0, 0,
3135 0, 0, 0, 0, 0, 0, 0, 0, 0,
3136 0, 0, 0, 0, 0, 0, 0, 0, 0,
3137 0, 0, 0, 0, 0, 0, 0, 0, 0,
3138 0, 0, 0, 0, 0, 0, 0, 0, 0,
3139 0, 0, 0, 0, 0, 0, 0, 0, 0,
3140 0, 0, 0, 0, 0, 0, 0, 0, 0,
3141 0, 0, 0, 0, 0, 0, 0, 0, 0,
3142 0, 0, 0, 0, 0, 0, 0, 0, 0,
3143
3144 /* Char 184 */
3145 0, 0, 0, 0, 0, 0, 0, 0, 0,
3146 0, 0, 0, 0, 0, 0, 0, 0, 0,
3147 0, 0, 0, 0, 0, 0, 0, 0, 0,
3148 0, 0, 0, 0, 0, 0, 0, 0, 0,
3149 0, 0, 0, 0, 0, 0, 0, 0, 0,
3150 0, 0, 0, 0, 0, 0, 0, 0, 0,
3151 0, 0, 0, 0, 0, 0, 0, 0, 0,
3152 0, 0, 0, 0, 0, 0, 0, 0, 0,
3153 0, 0, 0, 0, 0, 0, 0, 0, 0,
3154 0, 0, 0, 0, 0, 0, 0, 0, 0,
3155 0, 0, 0, 0, 0, 0, 0, 0, 0,
3156 0, 0, 0, 0, 0, 0, 0, 0, 0,
3157 0, 0, 0, 0, 1, 1, 0, 0, 0,
3158 0, 1, 1, 0, 1, 1, 0, 0, 0,
3159 0, 0, 1, 1, 1, 0, 0, 0, 0,
3160
3161 /* Char 185 */
3162 0, 0, 0, 0, 0, 0, 0, 0, 0,
3163 0, 0, 0, 0, 0, 0, 0, 0, 0,
3164 0, 1, 1, 0, 0, 1, 1, 0, 0,
3165 0, 0, 1, 1, 1, 1, 0, 0, 0,
3166 0, 0, 0, 1, 1, 0, 0, 0, 0,
3167 0, 0, 0, 0, 0, 0, 0, 0, 0,
3168 0, 1, 1, 1, 1, 1, 1, 0, 0,
3169 1, 1, 0, 0, 0, 0, 1, 1, 0,
3170 1, 1, 0, 0, 0, 0, 0, 0, 0,
3171 0, 1, 1, 1, 1, 1, 1, 0, 0,
3172 0, 0, 0, 0, 0, 0, 1, 1, 0,
3173 1, 1, 0, 0, 0, 0, 1, 1, 0,
3174 0, 1, 1, 1, 1, 1, 1, 0, 0,
3175 0, 0, 0, 0, 0, 0, 0, 0, 0,
3176 0, 0, 0, 0, 0, 0, 0, 0, 0,
3177
3178 /* Char 186 */
3179 0, 0, 0, 0, 0, 0, 0, 0, 0,
3180 0, 0, 0, 0, 0, 0, 0, 0, 0,
3181 0, 0, 0, 0, 0, 0, 0, 0, 0,
3182 0, 0, 0, 0, 0, 0, 0, 0, 0,
3183 0, 0, 0, 0, 0, 0, 0, 0, 0,
3184 0, 0, 0, 0, 0, 0, 0, 0, 0,
3185 0, 1, 1, 1, 1, 1, 1, 0, 0,
3186 1, 1, 0, 0, 0, 0, 1, 1, 0,
3187 1, 1, 0, 0, 0, 0, 0, 0, 0,
3188 0, 1, 1, 1, 1, 1, 1, 0, 0,
3189 0, 0, 0, 0, 0, 0, 1, 1, 0,
3190 1, 1, 0, 0, 0, 0, 1, 1, 0,
3191 0, 1, 1, 1, 1, 1, 1, 0, 0,
3192 0, 0, 0, 1, 1, 0, 0, 0, 0,
3193 0, 1, 1, 1, 0, 0, 0, 0, 0,
3194
3195 /* Char 187 */
3196 0, 0, 0, 0, 0, 0, 0, 0, 0,
3197 0, 0, 0, 0, 0, 0, 0, 0, 0,
3198 0, 0, 0, 0, 0, 1, 1, 1, 0,
3199 0, 0, 0, 0, 0, 0, 1, 1, 0,
3200 0, 0, 1, 1, 0, 0, 1, 1, 0,
3201 0, 0, 1, 1, 0, 1, 1, 0, 0,
3202 1, 1, 1, 1, 1, 0, 0, 0, 0,
3203 0, 0, 1, 1, 0, 0, 0, 0, 0,
3204 0, 0, 1, 1, 0, 0, 0, 0, 0,
3205 0, 0, 1, 1, 0, 0, 0, 0, 0,
3206 0, 0, 1, 1, 0, 0, 0, 0, 0,
3207 0, 0, 1, 1, 0, 0, 1, 1, 0,
3208 0, 0, 0, 1, 1, 1, 1, 0, 0,
3209 0, 0, 0, 0, 0, 0, 0, 0, 0,
3210 0, 0, 0, 0, 0, 0, 0, 0, 0,
3211
3212 /* Char 188 */
3213 0, 0, 0, 0, 0, 0, 0, 0, 0,
3214 0, 0, 0, 0, 0, 0, 0, 0, 0,
3215 0, 0, 0, 0, 0, 1, 1, 0, 0,
3216 0, 0, 0, 0, 1, 1, 0, 0, 0,
3217 0, 0, 0, 1, 1, 0, 0, 0, 0,
3218 0, 0, 0, 0, 0, 0, 0, 0, 0,
3219 0, 1, 1, 1, 1, 1, 1, 0, 0,
3220 0, 0, 0, 0, 0, 1, 1, 0, 0,
3221 0, 0, 0, 0, 1, 1, 0, 0, 0,
3222 0, 0, 0, 1, 1, 0, 0, 0, 0,
3223 0, 0, 1, 1, 0, 0, 0, 0, 0,
3224 0, 1, 1, 0, 0, 0, 0, 0, 0,
3225 0, 1, 1, 1, 1, 1, 1, 0, 0,
3226 0, 0, 0, 0, 0, 0, 0, 0, 0,
3227 0, 0, 0, 0, 0, 0, 0, 0, 0,
3228
3229 /* Char 189 */
3230 0, 0, 0, 0, 0, 0, 0, 0, 0,
3231 0, 0, 0, 0, 0, 0, 0, 0, 0,
3232 0, 0, 1, 1, 0, 0, 1, 1, 0,
3233 0, 1, 1, 0, 0, 1, 1, 0, 0,
3234 1, 1, 0, 0, 1, 1, 0, 0, 0,
3235 0, 0, 0, 0, 0, 0, 0, 0, 0,
3236 0, 0, 0, 0, 0, 0, 0, 0, 0,
3237 0, 0, 0, 0, 0, 0, 0, 0, 0,
3238 0, 0, 0, 0, 0, 0, 0, 0, 0,
3239 0, 0, 0, 0, 0, 0, 0, 0, 0,
3240 0, 0, 0, 0, 0, 0, 0, 0, 0,
3241 0, 0, 0, 0, 0, 0, 0, 0, 0,
3242 0, 0, 0, 0, 0, 0, 0, 0, 0,
3243 0, 0, 0, 0, 0, 0, 0, 0, 0,
3244 0, 0, 0, 0, 0, 0, 0, 0, 0,
3245
3246 /* Char 190 */
3247 0, 0, 0, 0, 0, 0, 0, 0, 0,
3248 0, 0, 0, 0, 0, 0, 0, 0, 0,
3249 0, 1, 1, 0, 0, 1, 1, 0, 0,
3250 0, 0, 1, 1, 1, 1, 0, 0, 0,
3251 0, 0, 0, 1, 1, 0, 0, 0, 0,
3252 0, 0, 0, 0, 0, 0, 0, 0, 0,
3253 0, 1, 1, 1, 1, 1, 1, 0, 0,
3254 0, 0, 0, 0, 0, 1, 1, 0, 0,
3255 0, 0, 0, 0, 1, 1, 0, 0, 0,
3256 0, 0, 0, 1, 1, 0, 0, 0, 0,
3257 0, 0, 1, 1, 0, 0, 0, 0, 0,
3258 0, 1, 1, 0, 0, 0, 0, 0, 0,
3259 0, 1, 1, 1, 1, 1, 1, 0, 0,
3260 0, 0, 0, 0, 0, 0, 0, 0, 0,
3261 0, 0, 0, 0, 0, 0, 0, 0, 0,
3262
3263 /* Char 191 */
3264 0, 0, 0, 0, 0, 0, 0, 0, 0,
3265 0, 0, 0, 0, 0, 0, 0, 0, 0,
3266 0, 0, 0, 1, 1, 0, 0, 0, 0,
3267 0, 0, 0, 1, 1, 0, 0, 0, 0,
3268 0, 0, 0, 0, 0, 0, 0, 0, 0,
3269 0, 0, 0, 0, 0, 0, 0, 0, 0,
3270 0, 1, 1, 1, 1, 1, 1, 0, 0,
3271 0, 0, 0, 0, 0, 1, 1, 0, 0,
3272 0, 0, 0, 0, 1, 1, 0, 0, 0,
3273 0, 0, 0, 1, 1, 0, 0, 0, 0,
3274 0, 0, 1, 1, 0, 0, 0, 0, 0,
3275 0, 1, 1, 0, 0, 0, 0, 0, 0,
3276 0, 1, 1, 1, 1, 1, 1, 0, 0,
3277 0, 0, 0, 0, 0, 0, 0, 0, 0,
3278 0, 0, 0, 0, 0, 0, 0, 0, 0,
3279
3280 /* Char 192 */
3281 0, 0, 0, 0, 1, 1, 1, 0, 0,
3282 0, 0, 1, 1, 1, 0, 0, 0, 0,
3283 0, 0, 0, 0, 0, 0, 0, 0, 0,
3284 1, 1, 1, 1, 1, 1, 1, 0, 0,
3285 1, 1, 0, 0, 0, 0, 1, 1, 0,
3286 1, 1, 0, 0, 0, 0, 1, 1, 0,
3287 1, 1, 0, 0, 0, 0, 1, 1, 0,
3288 1, 1, 1, 1, 1, 1, 1, 0, 0,
3289 1, 1, 1, 1, 1, 0, 0, 0, 0,
3290 1, 1, 0, 0, 1, 1, 0, 0, 0,
3291 1, 1, 0, 0, 0, 1, 1, 0, 0,
3292 1, 1, 0, 0, 0, 0, 1, 1, 0,
3293 1, 1, 0, 0, 0, 0, 1, 1, 0,
3294 0, 0, 0, 0, 0, 0, 0, 0, 0,
3295 0, 0, 0, 0, 0, 0, 0, 0, 0,
3296
3297 /* Char 193 */
3298 0, 0, 0, 0, 1, 1, 1, 0, 0,
3299 0, 0, 1, 1, 1, 0, 0, 0, 0,
3300 0, 0, 0, 0, 0, 0, 0, 0, 0,
3301 0, 0, 0, 1, 1, 0, 0, 0, 0,
3302 0, 0, 1, 1, 1, 1, 0, 0, 0,
3303 0, 1, 1, 0, 0, 1, 1, 0, 0,
3304 1, 1, 0, 0, 0, 0, 1, 1, 0,
3305 1, 1, 0, 0, 0, 0, 1, 1, 0,
3306 1, 1, 0, 0, 0, 0, 1, 1, 0,
3307 1, 1, 1, 1, 1, 1, 1, 1, 0,
3308 1, 1, 0, 0, 0, 0, 1, 1, 0,
3309 1, 1, 0, 0, 0, 0, 1, 1, 0,
3310 1, 1, 0, 0, 0, 0, 1, 1, 0,
3311 0, 0, 0, 0, 0, 0, 0, 0, 0,
3312 0, 0, 0, 0, 0, 0, 0, 0, 0,
3313
3314 /* Char 194 */
3315 0, 0, 1, 1, 1, 1, 0, 0, 0,
3316 0, 1, 1, 0, 0, 1, 1, 0, 0,
3317 0, 0, 0, 0, 0, 0, 0, 0, 0,
3318 0, 0, 0, 1, 1, 0, 0, 0, 0,
3319 0, 0, 1, 1, 1, 1, 0, 0, 0,
3320 0, 1, 1, 0, 0, 1, 1, 0, 0,
3321 1, 1, 0, 0, 0, 0, 1, 1, 0,
3322 1, 1, 0, 0, 0, 0, 1, 1, 0,
3323 1, 1, 0, 0, 0, 0, 1, 1, 0,
3324 1, 1, 1, 1, 1, 1, 1, 1, 0,
3325 1, 1, 0, 0, 0, 0, 1, 1, 0,
3326 1, 1, 0, 0, 0, 0, 1, 1, 0,
3327 1, 1, 0, 0, 0, 0, 1, 1, 0,
3328 0, 0, 0, 0, 0, 0, 0, 0, 0,
3329 0, 0, 0, 0, 0, 0, 0, 0, 0,
3330
3331 /* Char 195 */
3332 1, 1, 0, 0, 0, 0, 1, 1, 0,
3333 0, 1, 1, 1, 1, 1, 1, 0, 0,
3334 0, 0, 0, 0, 0, 0, 0, 0, 0,
3335 0, 0, 0, 1, 1, 0, 0, 0, 0,
3336 0, 0, 1, 1, 1, 1, 0, 0, 0,
3337 0, 1, 1, 0, 0, 1, 1, 0, 0,
3338 1, 1, 0, 0, 0, 0, 1, 1, 0,
3339 1, 1, 0, 0, 0, 0, 1, 1, 0,
3340 1, 1, 0, 0, 0, 0, 1, 1, 0,
3341 1, 1, 1, 1, 1, 1, 1, 1, 0,
3342 1, 1, 0, 0, 0, 0, 1, 1, 0,
3343 1, 1, 0, 0, 0, 0, 1, 1, 0,
3344 1, 1, 0, 0, 0, 0, 1, 1, 0,
3345 0, 0, 0, 0, 0, 0, 0, 0, 0,
3346 0, 0, 0, 0, 0, 0, 0, 0, 0,
3347
3348 /* Char 196 */
3349 0, 1, 1, 0, 0, 1, 1, 0, 0,
3350 0, 1, 1, 0, 0, 1, 1, 0, 0,
3351 0, 0, 0, 0, 0, 0, 0, 0, 0,
3352 0, 0, 0, 1, 1, 0, 0, 0, 0,
3353 0, 0, 1, 1, 1, 1, 0, 0, 0,
3354 0, 1, 1, 0, 0, 1, 1, 0, 0,
3355 1, 1, 0, 0, 0, 0, 1, 1, 0,
3356 1, 1, 0, 0, 0, 0, 1, 1, 0,
3357 1, 1, 0, 0, 0, 0, 1, 1, 0,
3358 1, 1, 1, 1, 1, 1, 1, 1, 0,
3359 1, 1, 0, 0, 0, 0, 1, 1, 0,
3360 1, 1, 0, 0, 0, 0, 1, 1, 0,
3361 1, 1, 0, 0, 0, 0, 1, 1, 0,
3362 0, 0, 0, 0, 0, 0, 0, 0, 0,
3363 0, 0, 0, 0, 0, 0, 0, 0, 0,
3364
3365 /* Char 197 */
3366 0, 0, 0, 1, 1, 1, 0, 0, 0,
3367 0, 1, 1, 1, 0, 0, 0, 0, 0,
3368 0, 0, 0, 0, 0, 0, 0, 0, 0,
3369 1, 1, 0, 0, 0, 0, 0, 0, 0,
3370 1, 1, 0, 0, 0, 0, 0, 0, 0,
3371 1, 1, 0, 0, 0, 0, 0, 0, 0,
3372 1, 1, 0, 0, 0, 0, 0, 0, 0,
3373 1, 1, 0, 0, 0, 0, 0, 0, 0,
3374 1, 1, 0, 0, 0, 0, 0, 0, 0,
3375 1, 1, 0, 0, 0, 0, 0, 0, 0,
3376 1, 1, 0, 0, 0, 0, 0, 0, 0,
3377 1, 1, 0, 0, 0, 0, 0, 0, 0,
3378 1, 1, 1, 1, 1, 1, 1, 0, 0,
3379 0, 0, 0, 0, 0, 0, 0, 0, 0,
3380 0, 0, 0, 0, 0, 0, 0, 0, 0,
3381
3382 /* Char 198 */
3383 0, 0, 0, 0, 0, 1, 1, 1, 0,
3384 0, 0, 0, 1, 1, 1, 0, 0, 0,
3385 0, 0, 0, 0, 0, 0, 0, 0, 0,
3386 0, 0, 1, 1, 1, 1, 1, 0, 0,
3387 0, 1, 1, 0, 0, 0, 1, 1, 0,
3388 1, 1, 0, 0, 0, 0, 0, 1, 0,
3389 1, 1, 0, 0, 0, 0, 0, 0, 0,
3390 1, 1, 0, 0, 0, 0, 0, 0, 0,
3391 1, 1, 0, 0, 0, 0, 0, 0, 0,
3392 1, 1, 0, 0, 0, 0, 0, 0, 0,
3393 1, 1, 0, 0, 0, 0, 0, 1, 0,
3394 0, 1, 1, 0, 0, 0, 1, 1, 0,
3395 0, 0, 1, 1, 1, 1, 1, 0, 0,
3396 0, 0, 0, 0, 0, 0, 0, 0, 0,
3397 0, 0, 0, 0, 0, 0, 0, 0, 0,
3398
3399 /* Char 199 */
3400 0, 0, 0, 0, 0, 0, 0, 0, 0,
3401 0, 0, 0, 0, 0, 0, 0, 0, 0,
3402 0, 0, 0, 0, 0, 0, 0, 0, 0,
3403 0, 0, 1, 1, 1, 1, 1, 0, 0,
3404 0, 1, 1, 0, 0, 0, 1, 1, 0,
3405 1, 1, 0, 0, 0, 0, 0, 1, 0,
3406 1, 1, 0, 0, 0, 0, 0, 0, 0,
3407 1, 1, 0, 0, 0, 0, 0, 0, 0,
3408 1, 1, 0, 0, 0, 0, 0, 0, 0,
3409 1, 1, 0, 0, 0, 0, 0, 0, 0,
3410 1, 1, 0, 0, 0, 0, 0, 1, 0,
3411 0, 1, 1, 0, 0, 0, 1, 1, 0,
3412 0, 0, 1, 1, 1, 1, 1, 0, 0,
3413 0, 0, 0, 0, 1, 1, 0, 0, 0,
3414 0, 0, 1, 1, 1, 0, 0, 0, 0,
3415
3416 /* Char 200 */
3417 0, 0, 1, 1, 0, 1, 1, 0, 0,
3418 0, 0, 0, 1, 1, 1, 0, 0, 0,
3419 0, 0, 0, 0, 0, 0, 0, 0, 0,
3420 0, 0, 1, 1, 1, 1, 1, 0, 0,
3421 0, 1, 1, 0, 0, 0, 1, 1, 0,
3422 1, 1, 0, 0, 0, 0, 0, 1, 0,
3423 1, 1, 0, 0, 0, 0, 0, 0, 0,
3424 1, 1, 0, 0, 0, 0, 0, 0, 0,
3425 1, 1, 0, 0, 0, 0, 0, 0, 0,
3426 1, 1, 0, 0, 0, 0, 0, 0, 0,
3427 1, 1, 0, 0, 0, 0, 0, 1, 0,
3428 0, 1, 1, 0, 0, 0, 1, 1, 0,
3429 0, 0, 1, 1, 1, 1, 1, 0, 0,
3430 0, 0, 0, 0, 0, 0, 0, 0, 0,
3431 0, 0, 0, 0, 0, 0, 0, 0, 0,
3432
3433 /* Char 201 */
3434 0, 0, 0, 0, 0, 1, 1, 1, 0,
3435 0, 0, 0, 1, 1, 1, 0, 0, 0,
3436 0, 0, 0, 0, 0, 0, 0, 0, 0,
3437 1, 1, 1, 1, 1, 1, 1, 0, 0,
3438 1, 1, 0, 0, 0, 0, 0, 0, 0,
3439 1, 1, 0, 0, 0, 0, 0, 0, 0,
3440 1, 1, 0, 0, 0, 0, 0, 0, 0,
3441 1, 1, 1, 1, 1, 1, 0, 0, 0,
3442 1, 1, 0, 0, 0, 0, 0, 0, 0,
3443 1, 1, 0, 0, 0, 0, 0, 0, 0,
3444 1, 1, 0, 0, 0, 0, 0, 0, 0,
3445 1, 1, 0, 0, 0, 0, 0, 0, 0,
3446 1, 1, 1, 1, 1, 1, 1, 0, 0,
3447 0, 0, 0, 0, 0, 0, 0, 0, 0,
3448 0, 0, 0, 0, 0, 0, 0, 0, 0,
3449
3450 /* Char 202 */
3451 0, 0, 0, 0, 0, 0, 0, 0, 0,
3452 0, 0, 0, 0, 0, 0, 0, 0, 0,
3453 0, 0, 0, 0, 0, 0, 0, 0, 0,
3454 1, 1, 1, 1, 1, 1, 1, 0, 0,
3455 1, 1, 0, 0, 0, 0, 0, 0, 0,
3456 1, 1, 0, 0, 0, 0, 0, 0, 0,
3457 1, 1, 0, 0, 0, 0, 0, 0, 0,
3458 1, 1, 1, 1, 1, 1, 0, 0, 0,
3459 1, 1, 0, 0, 0, 0, 0, 0, 0,
3460 1, 1, 0, 0, 0, 0, 0, 0, 0,
3461 1, 1, 0, 0, 0, 0, 0, 0, 0,
3462 1, 1, 0, 0, 0, 0, 0, 0, 0,
3463 1, 1, 1, 1, 1, 1, 1, 0, 0,
3464 0, 0, 0, 0, 1, 1, 0, 0, 0,
3465 0, 0, 0, 0, 0, 1, 1, 1, 0,
3466
3467 /* Char 203 */
3468 0, 1, 1, 0, 0, 1, 1, 0, 0,
3469 0, 1, 1, 0, 0, 1, 1, 0, 0,
3470 0, 0, 0, 0, 0, 0, 0, 0, 0,
3471 1, 1, 1, 1, 1, 1, 1, 0, 0,
3472 1, 1, 0, 0, 0, 0, 0, 0, 0,
3473 1, 1, 0, 0, 0, 0, 0, 0, 0,
3474 1, 1, 0, 0, 0, 0, 0, 0, 0,
3475 1, 1, 1, 1, 1, 1, 0, 0, 0,
3476 1, 1, 0, 0, 0, 0, 0, 0, 0,
3477 1, 1, 0, 0, 0, 0, 0, 0, 0,
3478 1, 1, 0, 0, 0, 0, 0, 0, 0,
3479 1, 1, 0, 0, 0, 0, 0, 0, 0,
3480 1, 1, 1, 1, 1, 1, 1, 0, 0,
3481 0, 0, 0, 0, 0, 0, 0, 0, 0,
3482 0, 0, 0, 0, 0, 0, 0, 0, 0,
3483
3484 /* Char 204 */
3485 0, 1, 1, 0, 0, 1, 1, 0, 0,
3486 0, 0, 1, 1, 1, 1, 0, 0, 0,
3487 0, 0, 0, 0, 0, 0, 0, 0, 0,
3488 1, 1, 1, 1, 1, 1, 1, 0, 0,
3489 1, 1, 0, 0, 0, 0, 0, 0, 0,
3490 1, 1, 0, 0, 0, 0, 0, 0, 0,
3491 1, 1, 0, 0, 0, 0, 0, 0, 0,
3492 1, 1, 1, 1, 1, 1, 0, 0, 0,
3493 1, 1, 0, 0, 0, 0, 0, 0, 0,
3494 1, 1, 0, 0, 0, 0, 0, 0, 0,
3495 1, 1, 0, 0, 0, 0, 0, 0, 0,
3496 1, 1, 0, 0, 0, 0, 0, 0, 0,
3497 1, 1, 1, 1, 1, 1, 1, 0, 0,
3498 0, 0, 0, 0, 0, 0, 0, 0, 0,
3499 0, 0, 0, 0, 0, 0, 0, 0, 0,
3500
3501 /* Char 205 */
3502 0, 0, 0, 0, 1, 1, 1, 0, 0,
3503 0, 0, 1, 1, 1, 0, 0, 0, 0,
3504 0, 0, 0, 0, 0, 0, 0, 0, 0,
3505 0, 1, 1, 1, 1, 1, 1, 0, 0,
3506 0, 0, 0, 1, 1, 0, 0, 0, 0,
3507 0, 0, 0, 1, 1, 0, 0, 0, 0,
3508 0, 0, 0, 1, 1, 0, 0, 0, 0,
3509 0, 0, 0, 1, 1, 0, 0, 0, 0,
3510 0, 0, 0, 1, 1, 0, 0, 0, 0,
3511 0, 0, 0, 1, 1, 0, 0, 0, 0,
3512 0, 0, 0, 1, 1, 0, 0, 0, 0,
3513 0, 0, 0, 1, 1, 0, 0, 0, 0,
3514 0, 1, 1, 1, 1, 1, 1, 0, 0,
3515 0, 0, 0, 0, 0, 0, 0, 0, 0,
3516 0, 0, 0, 0, 0, 0, 0, 0, 0,
3517
3518 /* Char 206 */
3519 0, 0, 1, 1, 1, 1, 0, 0, 0,
3520 0, 1, 1, 0, 0, 1, 1, 0, 0,
3521 0, 0, 0, 0, 0, 0, 0, 0, 0,
3522 0, 1, 1, 1, 1, 1, 1, 0, 0,
3523 0, 0, 0, 1, 1, 0, 0, 0, 0,
3524 0, 0, 0, 1, 1, 0, 0, 0, 0,
3525 0, 0, 0, 1, 1, 0, 0, 0, 0,
3526 0, 0, 0, 1, 1, 0, 0, 0, 0,
3527 0, 0, 0, 1, 1, 0, 0, 0, 0,
3528 0, 0, 0, 1, 1, 0, 0, 0, 0,
3529 0, 0, 0, 1, 1, 0, 0, 0, 0,
3530 0, 0, 0, 1, 1, 0, 0, 0, 0,
3531 0, 1, 1, 1, 1, 1, 1, 0, 0,
3532 0, 0, 0, 0, 0, 0, 0, 0, 0,
3533 0, 0, 0, 0, 0, 0, 0, 0, 0,
3534
3535 /* Char 207 */
3536 0, 1, 1, 0, 1, 1, 0, 0, 0,
3537 0, 0, 1, 1, 1, 0, 0, 0, 0,
3538 0, 0, 0, 0, 0, 0, 0, 0, 0,
3539 1, 1, 1, 1, 1, 1, 0, 0, 0,
3540 1, 1, 0, 0, 0, 1, 1, 0, 0,
3541 1, 1, 0, 0, 0, 0, 1, 1, 0,
3542 1, 1, 0, 0, 0, 0, 1, 1, 0,
3543 1, 1, 0, 0, 0, 0, 1, 1, 0,
3544 1, 1, 0, 0, 0, 0, 1, 1, 0,
3545 1, 1, 0, 0, 0, 0, 1, 1, 0,
3546 1, 1, 0, 0, 0, 0, 1, 1, 0,
3547 1, 1, 0, 0, 0, 1, 1, 0, 0,
3548 1, 1, 1, 1, 1, 1, 0, 0, 0,
3549 0, 0, 0, 0, 0, 0, 0, 0, 0,
3550 0, 0, 0, 0, 0, 0, 0, 0, 0,
3551
3552 /* Char 208 */
3553 0, 0, 0, 0, 0, 0, 0, 0, 0,
3554 0, 0, 0, 0, 0, 0, 0, 0, 0,
3555 0, 0, 0, 0, 0, 0, 0, 0, 0,
3556 1, 1, 1, 1, 1, 1, 0, 0, 0,
3557 0, 1, 1, 0, 0, 1, 1, 0, 0,
3558 0, 1, 1, 0, 0, 0, 1, 1, 0,
3559 0, 1, 1, 0, 0, 0, 1, 1, 0,
3560 1, 1, 1, 1, 0, 0, 1, 1, 0,
3561 1, 1, 1, 1, 0, 0, 1, 1, 0,
3562 0, 1, 1, 0, 0, 0, 1, 1, 0,
3563 0, 1, 1, 0, 0, 0, 1, 1, 0,
3564 0, 1, 1, 0, 0, 1, 1, 0, 0,
3565 1, 1, 1, 1, 1, 1, 0, 0, 0,
3566 0, 0, 0, 0, 0, 0, 0, 0, 0,
3567 0, 0, 0, 0, 0, 0, 0, 0, 0,
3568
3569 /* Char 209 */
3570 0, 0, 0, 0, 1, 1, 1, 0, 0,
3571 0, 0, 1, 1, 1, 0, 0, 0, 0,
3572 0, 0, 0, 0, 0, 0, 0, 0, 0,
3573 1, 1, 0, 0, 0, 0, 1, 1, 0,
3574 1, 1, 1, 0, 0, 0, 1, 1, 0,
3575 1, 1, 1, 1, 0, 0, 1, 1, 0,
3576 1, 1, 1, 1, 0, 0, 1, 1, 0,
3577 1, 1, 0, 1, 1, 0, 1, 1, 0,
3578 1, 1, 0, 1, 1, 0, 1, 1, 0,
3579 1, 1, 0, 0, 1, 1, 1, 1, 0,
3580 1, 1, 0, 0, 0, 1, 1, 1, 0,
3581 1, 1, 0, 0, 0, 1, 1, 1, 0,
3582 1, 1, 0, 0, 0, 0, 1, 1, 0,
3583 0, 0, 0, 0, 0, 0, 0, 0, 0,
3584 0, 0, 0, 0, 0, 0, 0, 0, 0,
3585
3586 /* Char 210 */
3587 0, 1, 1, 0, 0, 1, 1, 0, 0,
3588 0, 0, 1, 1, 1, 1, 0, 0, 0,
3589 0, 0, 0, 0, 0, 0, 0, 0, 0,
3590 1, 1, 0, 0, 0, 0, 1, 1, 0,
3591 1, 1, 1, 0, 0, 0, 1, 1, 0,
3592 1, 1, 1, 1, 0, 0, 1, 1, 0,
3593 1, 1, 1, 1, 0, 0, 1, 1, 0,
3594 1, 1, 0, 1, 1, 0, 1, 1, 0,
3595 1, 1, 0, 1, 1, 0, 1, 1, 0,
3596 1, 1, 0, 0, 1, 1, 1, 1, 0,
3597 1, 1, 0, 0, 0, 1, 1, 1, 0,
3598 1, 1, 0, 0, 0, 1, 1, 1, 0,
3599 1, 1, 0, 0, 0, 0, 1, 1, 0,
3600 0, 0, 0, 0, 0, 0, 0, 0, 0,
3601 0, 0, 0, 0, 0, 0, 0, 0, 0,
3602
3603 /* Char 211 */
3604 0, 0, 0, 0, 1, 1, 1, 0, 0,
3605 0, 0, 1, 1, 1, 0, 0, 0, 0,
3606 0, 0, 0, 0, 0, 0, 0, 0, 0,
3607 0, 0, 1, 1, 1, 1, 0, 0, 0,
3608 0, 1, 1, 0, 0, 1, 1, 0, 0,
3609 1, 1, 0, 0, 0, 0, 1, 1, 0,
3610 1, 1, 0, 0, 0, 0, 1, 1, 0,
3611 1, 1, 0, 0, 0, 0, 1, 1, 0,
3612 1, 1, 0, 0, 0, 0, 1, 1, 0,
3613 1, 1, 0, 0, 0, 0, 1, 1, 0,
3614 1, 1, 0, 0, 0, 0, 1, 1, 0,
3615 0, 1, 1, 0, 0, 1, 1, 0, 0,
3616 0, 0, 1, 1, 1, 1, 0, 0, 0,
3617 0, 0, 0, 0, 0, 0, 0, 0, 0,
3618 0, 0, 0, 0, 0, 0, 0, 0, 0,
3619
3620 /* Char 212 */
3621 0, 0, 1, 1, 1, 1, 0, 0, 0,
3622 0, 1, 1, 0, 0, 1, 1, 0, 0,
3623 0, 0, 0, 0, 0, 0, 0, 0, 0,
3624 0, 0, 1, 1, 1, 1, 0, 0, 0,
3625 0, 1, 1, 0, 0, 1, 1, 0, 0,
3626 1, 1, 0, 0, 0, 0, 1, 1, 0,
3627 1, 1, 0, 0, 0, 0, 1, 1, 0,
3628 1, 1, 0, 0, 0, 0, 1, 1, 0,
3629 1, 1, 0, 0, 0, 0, 1, 1, 0,
3630 1, 1, 0, 0, 0, 0, 1, 1, 0,
3631 1, 1, 0, 0, 0, 0, 1, 1, 0,
3632 0, 1, 1, 0, 0, 1, 1, 0, 0,
3633 0, 0, 1, 1, 1, 1, 0, 0, 0,
3634 0, 0, 0, 0, 0, 0, 0, 0, 0,
3635 0, 0, 0, 0, 0, 0, 0, 0, 0,
3636
3637 /* Char 213 */
3638 0, 0, 1, 1, 0, 0, 1, 1, 0,
3639 0, 1, 1, 0, 0, 1, 1, 0, 0,
3640 0, 0, 0, 0, 0, 0, 0, 0, 0,
3641 0, 0, 1, 1, 1, 1, 0, 0, 0,
3642 0, 1, 1, 0, 0, 1, 1, 0, 0,
3643 1, 1, 0, 0, 0, 0, 1, 1, 0,
3644 1, 1, 0, 0, 0, 0, 1, 1, 0,
3645 1, 1, 0, 0, 0, 0, 1, 1, 0,
3646 1, 1, 0, 0, 0, 0, 1, 1, 0,
3647 1, 1, 0, 0, 0, 0, 1, 1, 0,
3648 1, 1, 0, 0, 0, 0, 1, 1, 0,
3649 0, 1, 1, 0, 0, 1, 1, 0, 0,
3650 0, 0, 1, 1, 1, 1, 0, 0, 0,
3651 0, 0, 0, 0, 0, 0, 0, 0, 0,
3652 0, 0, 0, 0, 0, 0, 0, 0, 0,
3653
3654 /* Char 214 */
3655 0, 1, 1, 0, 0, 1, 1, 0, 0,
3656 0, 1, 1, 0, 0, 1, 1, 0, 0,
3657 0, 0, 0, 0, 0, 0, 0, 0, 0,
3658 0, 0, 1, 1, 1, 1, 0, 0, 0,
3659 0, 1, 1, 0, 0, 1, 1, 0, 0,
3660 1, 1, 0, 0, 0, 0, 1, 1, 0,
3661 1, 1, 0, 0, 0, 0, 1, 1, 0,
3662 1, 1, 0, 0, 0, 0, 1, 1, 0,
3663 1, 1, 0, 0, 0, 0, 1, 1, 0,
3664 1, 1, 0, 0, 0, 0, 1, 1, 0,
3665 1, 1, 0, 0, 0, 0, 1, 1, 0,
3666 0, 1, 1, 0, 0, 1, 1, 0, 0,
3667 0, 0, 1, 1, 1, 1, 0, 0, 0,
3668 0, 0, 0, 0, 0, 0, 0, 0, 0,
3669 0, 0, 0, 0, 0, 0, 0, 0, 0,
3670
3671 /* Char 215 */
3672 0, 0, 0, 0, 0, 0, 0, 0, 0,
3673 0, 0, 0, 0, 0, 0, 0, 0, 0,
3674 0, 0, 0, 0, 0, 0, 0, 0, 0,
3675 0, 0, 0, 0, 0, 0, 0, 0, 0,
3676 0, 1, 0, 0, 0, 0, 0, 1, 0,
3677 0, 1, 1, 0, 0, 0, 1, 1, 0,
3678 0, 0, 1, 1, 0, 1, 1, 0, 0,
3679 0, 0, 0, 1, 1, 1, 0, 0, 0,
3680 0, 0, 0, 1, 1, 1, 0, 0, 0,
3681 0, 0, 1, 1, 0, 1, 1, 0, 0,
3682 0, 1, 1, 0, 0, 0, 1, 1, 0,
3683 0, 1, 0, 0, 0, 0, 0, 1, 0,
3684 0, 0, 0, 0, 0, 0, 0, 0, 0,
3685 0, 0, 0, 0, 0, 0, 0, 0, 0,
3686 0, 0, 0, 0, 0, 0, 0, 0, 0,
3687
3688 /* Char 216 */
3689 0, 1, 1, 0, 0, 1, 1, 0, 0,
3690 0, 0, 1, 1, 1, 1, 0, 0, 0,
3691 0, 0, 0, 0, 0, 0, 0, 0, 0,
3692 1, 1, 1, 1, 1, 1, 1, 0, 0,
3693 1, 1, 0, 0, 0, 0, 1, 1, 0,
3694 1, 1, 0, 0, 0, 0, 1, 1, 0,
3695 1, 1, 0, 0, 0, 0, 1, 1, 0,
3696 1, 1, 1, 1, 1, 1, 1, 0, 0,
3697 1, 1, 1, 1, 1, 0, 0, 0, 0,
3698 1, 1, 0, 0, 1, 1, 0, 0, 0,
3699 1, 1, 0, 0, 0, 1, 1, 0, 0,
3700 1, 1, 0, 0, 0, 0, 1, 1, 0,
3701 1, 1, 0, 0, 0, 0, 1, 1, 0,
3702 0, 0, 0, 0, 0, 0, 0, 0, 0,
3703 0, 0, 0, 0, 0, 0, 0, 0, 0,
3704
3705 /* Char 217 */
3706 0, 0, 0, 1, 1, 0, 0, 0, 0,
3707 0, 0, 1, 0, 0, 1, 0, 0, 0,
3708 0, 0, 0, 1, 1, 0, 0, 0, 0,
3709 1, 1, 0, 0, 0, 0, 1, 1, 0,
3710 1, 1, 0, 0, 0, 0, 1, 1, 0,
3711 1, 1, 0, 0, 0, 0, 1, 1, 0,
3712 1, 1, 0, 0, 0, 0, 1, 1, 0,
3713 1, 1, 0, 0, 0, 0, 1, 1, 0,
3714 1, 1, 0, 0, 0, 0, 1, 1, 0,
3715 1, 1, 0, 0, 0, 0, 1, 1, 0,
3716 1, 1, 0, 0, 0, 0, 1, 1, 0,
3717 0, 1, 1, 0, 0, 1, 1, 0, 0,
3718 0, 0, 1, 1, 1, 1, 0, 0, 0,
3719 0, 0, 0, 0, 0, 0, 0, 0, 0,
3720 0, 0, 0, 0, 0, 0, 0, 0, 0,
3721
3722 /* Char 218 */
3723 0, 0, 0, 0, 1, 1, 1, 0, 0,
3724 0, 0, 1, 1, 1, 0, 0, 0, 0,
3725 0, 0, 0, 0, 0, 0, 0, 0, 0,
3726 1, 1, 0, 0, 0, 0, 1, 1, 0,
3727 1, 1, 0, 0, 0, 0, 1, 1, 0,
3728 1, 1, 0, 0, 0, 0, 1, 1, 0,
3729 1, 1, 0, 0, 0, 0, 1, 1, 0,
3730 1, 1, 0, 0, 0, 0, 1, 1, 0,
3731 1, 1, 0, 0, 0, 0, 1, 1, 0,
3732 1, 1, 0, 0, 0, 0, 1, 1, 0,
3733 1, 1, 0, 0, 0, 0, 1, 1, 0,
3734 0, 1, 1, 0, 0, 1, 1, 0, 0,
3735 0, 0, 1, 1, 1, 1, 0, 0, 0,
3736 0, 0, 0, 0, 0, 0, 0, 0, 0,
3737 0, 0, 0, 0, 0, 0, 0, 0, 0,
3738
3739 /* Char 219 */
3740 0, 0, 1, 1, 0, 0, 1, 1, 0,
3741 0, 1, 1, 0, 0, 1, 1, 0, 0,
3742 0, 0, 0, 0, 0, 0, 0, 0, 0,
3743 1, 1, 0, 0, 0, 0, 1, 1, 0,
3744 1, 1, 0, 0, 0, 0, 1, 1, 0,
3745 1, 1, 0, 0, 0, 0, 1, 1, 0,
3746 1, 1, 0, 0, 0, 0, 1, 1, 0,
3747 1, 1, 0, 0, 0, 0, 1, 1, 0,
3748 1, 1, 0, 0, 0, 0, 1, 1, 0,
3749 1, 1, 0, 0, 0, 0, 1, 1, 0,
3750 1, 1, 0, 0, 0, 0, 1, 1, 0,
3751 0, 1, 1, 0, 0, 1, 1, 0, 0,
3752 0, 0, 1, 1, 1, 1, 0, 0, 0,
3753 0, 0, 0, 0, 0, 0, 0, 0, 0,
3754 0, 0, 0, 0, 0, 0, 0, 0, 0,
3755
3756 /* Char 220 */
3757 0, 1, 1, 0, 0, 1, 1, 0, 0,
3758 0, 1, 1, 0, 0, 1, 1, 0, 0,
3759 0, 0, 0, 0, 0, 0, 0, 0, 0,
3760 1, 1, 0, 0, 0, 0, 1, 1, 0,
3761 1, 1, 0, 0, 0, 0, 1, 1, 0,
3762 1, 1, 0, 0, 0, 0, 1, 1, 0,
3763 1, 1, 0, 0, 0, 0, 1, 1, 0,
3764 1, 1, 0, 0, 0, 0, 1, 1, 0,
3765 1, 1, 0, 0, 0, 0, 1, 1, 0,
3766 1, 1, 0, 0, 0, 0, 1, 1, 0,
3767 1, 1, 0, 0, 0, 0, 1, 1, 0,
3768 0, 1, 1, 0, 0, 1, 1, 0, 0,
3769 0, 0, 1, 1, 1, 1, 0, 0, 0,
3770 0, 0, 0, 0, 0, 0, 0, 0, 0,
3771 0, 0, 0, 0, 0, 0, 0, 0, 0,
3772
3773 /* Char 221 */
3774 0, 0, 0, 0, 1, 1, 1, 0, 0,
3775 0, 0, 1, 1, 1, 0, 0, 0, 0,
3776 0, 0, 0, 0, 0, 0, 0, 0, 0,
3777 1, 1, 0, 0, 0, 0, 1, 1, 0,
3778 1, 1, 0, 0, 0, 0, 1, 1, 0,
3779 0, 1, 1, 0, 0, 1, 1, 0, 0,
3780 0, 0, 1, 1, 1, 1, 0, 0, 0,
3781 0, 0, 0, 1, 1, 0, 0, 0, 0,
3782 0, 0, 0, 1, 1, 0, 0, 0, 0,
3783 0, 0, 0, 1, 1, 0, 0, 0, 0,
3784 0, 0, 0, 1, 1, 0, 0, 0, 0,
3785 0, 0, 0, 1, 1, 0, 0, 0, 0,
3786 0, 0, 0, 1, 1, 0, 0, 0, 0,
3787 0, 0, 0, 0, 0, 0, 0, 0, 0,
3788 0, 0, 0, 0, 0, 0, 0, 0, 0,
3789
3790 /* Char 222 */
3791 0, 0, 0, 0, 0, 0, 0, 0, 0,
3792 0, 0, 0, 0, 0, 0, 0, 0, 0,
3793 0, 0, 0, 0, 0, 0, 0, 0, 0,
3794 1, 1, 1, 1, 1, 1, 1, 1, 0,
3795 0, 0, 0, 1, 1, 0, 0, 0, 0,
3796 0, 0, 0, 1, 1, 0, 0, 0, 0,
3797 0, 0, 0, 1, 1, 0, 0, 0, 0,
3798 0, 0, 0, 1, 1, 0, 0, 0, 0,
3799 0, 0, 0, 1, 1, 0, 0, 0, 0,
3800 0, 0, 0, 1, 1, 0, 0, 0, 0,
3801 0, 0, 0, 1, 1, 0, 0, 0, 0,
3802 0, 0, 0, 1, 1, 0, 0, 0, 0,
3803 0, 0, 0, 1, 1, 0, 0, 0, 0,
3804 0, 0, 0, 0, 1, 1, 0, 0, 0,
3805 0, 0, 1, 1, 1, 0, 0, 0, 0,
3806
3807 /* Char 223 */
3808 0, 0, 0, 0, 0, 0, 0, 0, 0,
3809 0, 0, 0, 0, 0, 0, 0, 0, 0,
3810 0, 0, 0, 1, 1, 1, 1, 0, 0,
3811 0, 0, 1, 1, 0, 0, 1, 1, 0,
3812 0, 1, 1, 0, 0, 0, 1, 1, 0,
3813 0, 1, 1, 0, 0, 1, 1, 0, 0,
3814 1, 1, 1, 0, 1, 1, 0, 0, 0,
3815 0, 1, 1, 0, 0, 1, 1, 0, 0,
3816 0, 1, 1, 0, 0, 0, 1, 1, 0,
3817 0, 1, 1, 0, 0, 0, 1, 1, 0,
3818 0, 1, 1, 1, 0, 0, 1, 1, 0,
3819 1, 1, 0, 0, 1, 1, 1, 0, 0,
3820 0, 0, 0, 0, 0, 0, 0, 0, 0,
3821 0, 0, 0, 0, 0, 0, 0, 0, 0,
3822 0, 0, 0, 0, 0, 0, 0, 0, 0,
3823
3824 /* Char 224 */
3825 0, 0, 0, 0, 0, 0, 0, 0, 0,
3826 0, 0, 0, 0, 0, 0, 0, 0, 0,
3827 0, 0, 0, 0, 0, 1, 1, 0, 0,
3828 0, 0, 0, 0, 1, 1, 0, 0, 0,
3829 0, 0, 0, 1, 1, 0, 0, 0, 0,
3830 0, 0, 0, 0, 0, 0, 0, 0, 0,
3831 1, 1, 0, 1, 1, 1, 1, 0, 0,
3832 0, 1, 1, 1, 0, 0, 1, 1, 0,
3833 0, 1, 1, 0, 0, 0, 0, 0, 0,
3834 0, 1, 1, 0, 0, 0, 0, 0, 0,
3835 0, 1, 1, 0, 0, 0, 0, 0, 0,
3836 0, 1, 1, 0, 0, 0, 0, 0, 0,
3837 0, 1, 1, 0, 0, 0, 0, 0, 0,
3838 0, 0, 0, 0, 0, 0, 0, 0, 0,
3839 0, 0, 0, 0, 0, 0, 0, 0, 0,
3840
3841 /* Char 225 */
3842 0, 0, 0, 0, 0, 0, 0, 0, 0,
3843 0, 0, 0, 0, 0, 0, 0, 0, 0,
3844 0, 0, 0, 0, 0, 1, 1, 0, 0,
3845 0, 0, 0, 0, 1, 1, 0, 0, 0,
3846 0, 0, 0, 1, 1, 0, 0, 0, 0,
3847 0, 0, 0, 0, 0, 0, 0, 0, 0,
3848 0, 0, 1, 1, 1, 1, 1, 0, 0,
3849 0, 1, 1, 0, 0, 0, 1, 1, 0,
3850 0, 0, 0, 0, 0, 0, 1, 1, 0,
3851 0, 1, 1, 1, 1, 1, 1, 1, 0,
3852 1, 1, 0, 0, 0, 0, 1, 1, 0,
3853 1, 1, 0, 0, 0, 1, 1, 1, 0,
3854 0, 1, 1, 1, 1, 0, 1, 1, 0,
3855 0, 0, 0, 0, 0, 0, 0, 0, 0,
3856 0, 0, 0, 0, 0, 0, 0, 0, 0,
3857
3858 /* Char 226 */
3859 0, 0, 0, 0, 0, 0, 0, 0, 0,
3860 0, 0, 0, 0, 0, 0, 0, 0, 0,
3861 0, 0, 0, 1, 1, 0, 0, 0, 0,
3862 0, 0, 1, 1, 1, 1, 0, 0, 0,
3863 0, 1, 1, 0, 0, 1, 1, 0, 0,
3864 0, 0, 0, 0, 0, 0, 0, 0, 0,
3865 0, 0, 1, 1, 1, 1, 1, 0, 0,
3866 0, 1, 1, 0, 0, 0, 1, 1, 0,
3867 0, 0, 0, 0, 0, 0, 1, 1, 0,
3868 0, 1, 1, 1, 1, 1, 1, 1, 0,
3869 1, 1, 0, 0, 0, 0, 1, 1, 0,
3870 1, 1, 0, 0, 0, 1, 1, 1, 0,
3871 0, 1, 1, 1, 1, 0, 1, 1, 0,
3872 0, 0, 0, 0, 0, 0, 0, 0, 0,
3873 0, 0, 0, 0, 0, 0, 0, 0, 0,
3874
3875 /* Char 227 */
3876 0, 0, 0, 0, 0, 0, 0, 0, 0,
3877 0, 0, 0, 0, 0, 0, 0, 0, 0,
3878 0, 1, 1, 0, 0, 1, 1, 0, 0,
3879 0, 1, 1, 0, 0, 1, 1, 0, 0,
3880 0, 0, 1, 1, 1, 1, 0, 0, 0,
3881 0, 0, 0, 0, 0, 0, 0, 0, 0,
3882 0, 0, 1, 1, 1, 1, 1, 0, 0,
3883 0, 1, 1, 0, 0, 0, 1, 1, 0,
3884 0, 0, 0, 0, 0, 0, 1, 1, 0,
3885 0, 1, 1, 1, 1, 1, 1, 1, 0,
3886 1, 1, 0, 0, 0, 0, 1, 1, 0,
3887 1, 1, 0, 0, 0, 1, 1, 1, 0,
3888 0, 1, 1, 1, 1, 0, 1, 1, 0,
3889 0, 0, 0, 0, 0, 0, 0, 0, 0,
3890 0, 0, 0, 0, 0, 0, 0, 0, 0,
3891
3892 /* Char 228 */
3893 0, 0, 0, 0, 0, 0, 0, 0, 0,
3894 0, 0, 0, 0, 0, 0, 0, 0, 0,
3895 0, 1, 1, 0, 0, 1, 1, 0, 0,
3896 0, 1, 1, 0, 0, 1, 1, 0, 0,
3897 0, 0, 0, 0, 0, 0, 0, 0, 0,
3898 0, 0, 0, 0, 0, 0, 0, 0, 0,
3899 0, 0, 1, 1, 1, 1, 1, 0, 0,
3900 0, 1, 1, 0, 0, 0, 1, 1, 0,
3901 0, 0, 0, 0, 0, 0, 1, 1, 0,
3902 0, 1, 1, 1, 1, 1, 1, 1, 0,
3903 1, 1, 0, 0, 0, 0, 1, 1, 0,
3904 1, 1, 0, 0, 0, 1, 1, 1, 0,
3905 0, 1, 1, 1, 1, 0, 1, 1, 0,
3906 0, 0, 0, 0, 0, 0, 0, 0, 0,
3907 0, 0, 0, 0, 0, 0, 0, 0, 0,
3908
3909 /* Char 229 */
3910 0, 0, 0, 0, 1, 1, 1, 0, 0,
3911 0, 0, 1, 1, 1, 0, 0, 0, 0,
3912 0, 0, 0, 0, 0, 0, 0, 0, 0,
3913 0, 0, 1, 1, 1, 0, 0, 0, 0,
3914 0, 0, 0, 1, 1, 0, 0, 0, 0,
3915 0, 0, 0, 1, 1, 0, 0, 0, 0,
3916 0, 0, 0, 1, 1, 0, 0, 0, 0,
3917 0, 0, 0, 1, 1, 0, 0, 0, 0,
3918 0, 0, 0, 1, 1, 0, 0, 0, 0,
3919 0, 0, 0, 1, 1, 0, 0, 0, 0,
3920 0, 0, 0, 1, 1, 0, 0, 0, 0,
3921 0, 0, 0, 1, 1, 0, 0, 0, 0,
3922 0, 1, 1, 1, 1, 1, 1, 0, 0,
3923 0, 0, 0, 0, 0, 0, 0, 0, 0,
3924 0, 0, 0, 0, 0, 0, 0, 0, 0,
3925
3926 /* Char 230 */
3927 0, 0, 0, 0, 0, 0, 0, 0, 0,
3928 0, 0, 0, 0, 0, 0, 0, 0, 0,
3929 0, 0, 0, 0, 0, 1, 1, 0, 0,
3930 0, 0, 0, 0, 1, 1, 0, 0, 0,
3931 0, 0, 0, 1, 1, 0, 0, 0, 0,
3932 0, 0, 0, 0, 0, 0, 0, 0, 0,
3933 0, 0, 1, 1, 1, 1, 1, 0, 0,
3934 0, 1, 1, 0, 0, 0, 1, 1, 0,
3935 1, 1, 0, 0, 0, 0, 0, 0, 0,
3936 1, 1, 0, 0, 0, 0, 0, 0, 0,
3937 1, 1, 0, 0, 0, 0, 0, 0, 0,
3938 0, 1, 1, 0, 0, 0, 1, 1, 0,
3939 0, 0, 1, 1, 1, 1, 1, 0, 0,
3940 0, 0, 0, 0, 0, 0, 0, 0, 0,
3941 0, 0, 0, 0, 0, 0, 0, 0, 0,
3942
3943 /* Char 231 */
3944 0, 0, 0, 0, 0, 0, 0, 0, 0,
3945 0, 0, 0, 0, 0, 0, 0, 0, 0,
3946 0, 0, 0, 0, 0, 0, 0, 0, 0,
3947 0, 0, 0, 0, 0, 0, 0, 0, 0,
3948 0, 0, 0, 0, 0, 0, 0, 0, 0,
3949 0, 0, 0, 0, 0, 0, 0, 0, 0,
3950 0, 0, 1, 1, 1, 1, 1, 0, 0,
3951 0, 1, 1, 0, 0, 0, 1, 1, 0,
3952 1, 1, 0, 0, 0, 0, 0, 0, 0,
3953 1, 1, 0, 0, 0, 0, 0, 0, 0,
3954 1, 1, 0, 0, 0, 0, 0, 0, 0,
3955 0, 1, 1, 0, 0, 0, 1, 1, 0,
3956 0, 0, 1, 1, 1, 1, 1, 0, 0,
3957 0, 0, 0, 0, 1, 1, 0, 0, 0,
3958 0, 0, 1, 1, 1, 0, 0, 0, 0,
3959
3960 /* Char 232 */
3961 0, 0, 0, 0, 0, 0, 0, 0, 0,
3962 0, 0, 0, 0, 0, 0, 0, 0, 0,
3963 0, 0, 1, 1, 0, 1, 1, 0, 0,
3964 0, 0, 0, 1, 1, 1, 0, 0, 0,
3965 0, 0, 0, 0, 1, 0, 0, 0, 0,
3966 0, 0, 0, 0, 0, 0, 0, 0, 0,
3967 0, 0, 1, 1, 1, 1, 1, 0, 0,
3968 0, 1, 1, 0, 0, 0, 1, 1, 0,
3969 1, 1, 0, 0, 0, 0, 0, 0, 0,
3970 1, 1, 0, 0, 0, 0, 0, 0, 0,
3971 1, 1, 0, 0, 0, 0, 0, 0, 0,
3972 0, 1, 1, 0, 0, 0, 1, 1, 0,
3973 0, 0, 1, 1, 1, 1, 1, 0, 0,
3974 0, 0, 0, 0, 0, 0, 0, 0, 0,
3975 0, 0, 0, 0, 0, 0, 0, 0, 0,
3976
3977 /* Char 233 */
3978 0, 0, 0, 0, 0, 0, 0, 0, 0,
3979 0, 0, 0, 0, 0, 0, 0, 0, 0,
3980 0, 0, 0, 0, 0, 1, 1, 0, 0,
3981 0, 0, 0, 0, 1, 1, 0, 0, 0,
3982 0, 0, 0, 1, 1, 0, 0, 0, 0,
3983 0, 0, 0, 0, 0, 0, 0, 0, 0,
3984 0, 0, 1, 1, 1, 1, 0, 0, 0,
3985 0, 1, 1, 0, 0, 1, 1, 0, 0,
3986 1, 1, 0, 0, 0, 0, 1, 1, 0,
3987 1, 1, 1, 1, 1, 1, 1, 1, 0,
3988 1, 1, 0, 0, 0, 0, 0, 0, 0,
3989 0, 1, 1, 0, 0, 0, 1, 1, 0,
3990 0, 0, 1, 1, 1, 1, 1, 0, 0,
3991 0, 0, 0, 0, 0, 0, 0, 0, 0,
3992 0, 0, 0, 0, 0, 0, 0, 0, 0,
3993
3994 /* Char 234 */
3995 0, 0, 0, 0, 0, 0, 0, 0, 0,
3996 0, 0, 0, 0, 0, 0, 0, 0, 0,
3997 0, 0, 0, 0, 0, 0, 0, 0, 0,
3998 0, 0, 0, 0, 0, 0, 0, 0, 0,
3999 0, 0, 0, 0, 0, 0, 0, 0, 0,
4000 0, 0, 0, 0, 0, 0, 0, 0, 0,
4001 0, 0, 1, 1, 1, 1, 0, 0, 0,
4002 0, 1, 1, 0, 0, 1, 1, 0, 0,
4003 1, 1, 0, 0, 0, 0, 1, 1, 0,
4004 1, 1, 1, 1, 1, 1, 1, 1, 0,
4005 1, 1, 0, 0, 0, 0, 0, 0, 0,
4006 0, 1, 1, 0, 0, 0, 1, 1, 0,
4007 0, 0, 1, 1, 1, 1, 1, 0, 0,
4008 0, 0, 0, 0, 1, 1, 0, 0, 0,
4009 0, 0, 0, 0, 0, 1, 1, 1, 0,
4010
4011 /* Char 235 */
4012 0, 0, 0, 0, 0, 0, 0, 0, 0,
4013 0, 0, 0, 0, 0, 0, 0, 0, 0,
4014 0, 0, 0, 0, 0, 0, 0, 0, 0,
4015 0, 1, 1, 0, 0, 1, 1, 0, 0,
4016 0, 1, 1, 0, 0, 1, 1, 0, 0,
4017 0, 0, 0, 0, 0, 0, 0, 0, 0,
4018 0, 0, 1, 1, 1, 1, 0, 0, 0,
4019 0, 1, 1, 0, 0, 1, 1, 0, 0,
4020 1, 1, 0, 0, 0, 0, 1, 1, 0,
4021 1, 1, 1, 1, 1, 1, 1, 1, 0,
4022 1, 1, 0, 0, 0, 0, 0, 0, 0,
4023 0, 1, 1, 0, 0, 0, 1, 1, 0,
4024 0, 0, 1, 1, 1, 1, 1, 0, 0,
4025 0, 0, 0, 0, 0, 0, 0, 0, 0,
4026 0, 0, 0, 0, 0, 0, 0, 0, 0,
4027
4028 /* Char 236 */
4029 0, 0, 0, 0, 0, 0, 0, 0, 0,
4030 0, 0, 0, 0, 0, 0, 0, 0, 0,
4031 0, 1, 1, 0, 0, 1, 1, 0, 0,
4032 0, 0, 1, 1, 1, 1, 0, 0, 0,
4033 0, 0, 0, 1, 1, 0, 0, 0, 0,
4034 0, 0, 0, 0, 0, 0, 0, 0, 0,
4035 0, 0, 1, 1, 1, 1, 0, 0, 0,
4036 0, 1, 1, 0, 0, 1, 1, 0, 0,
4037 1, 1, 0, 0, 0, 0, 1, 1, 0,
4038 1, 1, 1, 1, 1, 1, 1, 1, 0,
4039 1, 1, 0, 0, 0, 0, 0, 0, 0,
4040 0, 1, 1, 0, 0, 0, 1, 1, 0,
4041 0, 0, 1, 1, 1, 1, 1, 0, 0,
4042 0, 0, 0, 0, 0, 0, 0, 0, 0,
4043 0, 0, 0, 0, 0, 0, 0, 0, 0,
4044
4045 /* Char 237 */
4046 0, 0, 0, 0, 0, 0, 0, 0, 0,
4047 0, 0, 0, 0, 0, 0, 0, 0, 0,
4048 0, 0, 0, 0, 0, 1, 1, 0, 0,
4049 0, 0, 0, 0, 1, 1, 0, 0, 0,
4050 0, 0, 0, 1, 1, 0, 0, 0, 0,
4051 0, 0, 0, 0, 0, 0, 0, 0, 0,
4052 0, 0, 1, 1, 1, 0, 0, 0, 0,
4053 0, 0, 0, 1, 1, 0, 0, 0, 0,
4054 0, 0, 0, 1, 1, 0, 0, 0, 0,
4055 0, 0, 0, 1, 1, 0, 0, 0, 0,
4056 0, 0, 0, 1, 1, 0, 0, 0, 0,
4057 0, 0, 0, 1, 1, 0, 0, 0, 0,
4058 0, 1, 1, 1, 1, 1, 1, 0, 0,
4059 0, 0, 0, 0, 0, 0, 0, 0, 0,
4060 0, 0, 0, 0, 0, 0, 0, 0, 0,
4061
4062 /* Char 238 */
4063 0, 0, 0, 0, 0, 0, 0, 0, 0,
4064 0, 0, 0, 0, 0, 0, 0, 0, 0,
4065 0, 0, 0, 1, 1, 0, 0, 0, 0,
4066 0, 0, 1, 1, 1, 1, 0, 0, 0,
4067 0, 1, 1, 0, 0, 1, 1, 0, 0,
4068 0, 0, 0, 0, 0, 0, 0, 0, 0,
4069 0, 0, 1, 1, 1, 0, 0, 0, 0,
4070 0, 0, 0, 1, 1, 0, 0, 0, 0,
4071 0, 0, 0, 1, 1, 0, 0, 0, 0,
4072 0, 0, 0, 1, 1, 0, 0, 0, 0,
4073 0, 0, 0, 1, 1, 0, 0, 0, 0,
4074 0, 0, 0, 1, 1, 0, 0, 0, 0,
4075 0, 1, 1, 1, 1, 1, 1, 0, 0,
4076 0, 0, 0, 0, 0, 0, 0, 0, 0,
4077 0, 0, 0, 0, 0, 0, 0, 0, 0,
4078
4079 /* Char 239 */
4080 0, 0, 0, 0, 0, 0, 0, 0, 0,
4081 0, 0, 0, 0, 0, 0, 1, 1, 1,
4082 0, 0, 0, 0, 0, 0, 0, 1, 1,
4083 0, 0, 0, 0, 0, 1, 1, 1, 1,
4084 0, 0, 0, 0, 0, 1, 1, 1, 0,
4085 0, 0, 0, 0, 0, 1, 1, 0, 0,
4086 0, 0, 1, 1, 0, 1, 1, 0, 0,
4087 0, 1, 1, 0, 1, 1, 1, 0, 0,
4088 1, 1, 0, 0, 0, 1, 1, 0, 0,
4089 1, 1, 0, 0, 0, 1, 1, 0, 0,
4090 1, 1, 0, 0, 0, 1, 1, 0, 0,
4091 0, 1, 1, 0, 1, 1, 1, 0, 0,
4092 0, 0, 1, 1, 0, 1, 1, 0, 0,
4093 0, 0, 0, 0, 0, 0, 0, 0, 0,
4094 0, 0, 0, 0, 0, 0, 0, 0, 0,
4095
4096 /* Char 240 */
4097 0, 0, 0, 0, 0, 0, 0, 0, 0,
4098 0, 0, 0, 0, 0, 0, 0, 0, 0,
4099 0, 0, 0, 0, 0, 0, 0, 0, 0,
4100 0, 0, 0, 0, 0, 1, 1, 0, 0,
4101 0, 0, 0, 0, 1, 1, 1, 1, 0,
4102 0, 0, 0, 0, 0, 1, 1, 0, 0,
4103 0, 0, 1, 1, 0, 1, 1, 0, 0,
4104 0, 1, 1, 0, 1, 1, 1, 0, 0,
4105 1, 1, 0, 0, 0, 1, 1, 0, 0,
4106 1, 1, 0, 0, 0, 1, 1, 0, 0,
4107 1, 1, 0, 0, 0, 1, 1, 0, 0,
4108 0, 1, 1, 0, 1, 1, 1, 0, 0,
4109 0, 0, 1, 1, 0, 1, 1, 0, 0,
4110 0, 0, 0, 0, 0, 0, 0, 0, 0,
4111 0, 0, 0, 0, 0, 0, 0, 0, 0,
4112
4113 /* Char 241 */
4114 0, 0, 0, 0, 0, 0, 0, 0, 0,
4115 0, 0, 0, 0, 0, 0, 0, 0, 0,
4116 0, 0, 0, 0, 0, 1, 1, 0, 0,
4117 0, 0, 0, 0, 1, 1, 0, 0, 0,
4118 0, 0, 0, 1, 1, 0, 0, 0, 0,
4119 0, 0, 0, 0, 0, 0, 0, 0, 0,
4120 1, 1, 0, 1, 1, 1, 0, 0, 0,
4121 1, 1, 1, 0, 0, 1, 1, 0, 0,
4122 1, 1, 0, 0, 0, 0, 1, 1, 0,
4123 1, 1, 0, 0, 0, 0, 1, 1, 0,
4124 1, 1, 0, 0, 0, 0, 1, 1, 0,
4125 1, 1, 0, 0, 0, 0, 1, 1, 0,
4126 1, 1, 0, 0, 0, 0, 1, 1, 0,
4127 0, 0, 0, 0, 0, 0, 0, 0, 0,
4128 0, 0, 0, 0, 0, 0, 0, 0, 0,
4129
4130 /* Char 242 */
4131 0, 0, 0, 0, 0, 0, 0, 0, 0,
4132 0, 0, 0, 0, 0, 0, 0, 0, 0,
4133 0, 1, 1, 0, 0, 1, 1, 0, 0,
4134 0, 0, 1, 1, 1, 1, 0, 0, 0,
4135 0, 0, 0, 1, 1, 0, 0, 0, 0,
4136 0, 0, 0, 0, 0, 0, 0, 0, 0,
4137 1, 1, 0, 1, 1, 1, 0, 0, 0,
4138 1, 1, 1, 0, 0, 1, 1, 0, 0,
4139 1, 1, 0, 0, 0, 0, 1, 1, 0,
4140 1, 1, 0, 0, 0, 0, 1, 1, 0,
4141 1, 1, 0, 0, 0, 0, 1, 1, 0,
4142 1, 1, 0, 0, 0, 0, 1, 1, 0,
4143 1, 1, 0, 0, 0, 0, 1, 1, 0,
4144 0, 0, 0, 0, 0, 0, 0, 0, 0,
4145 0, 0, 0, 0, 0, 0, 0, 0, 0,
4146
4147 /* Char 243 */
4148 0, 0, 0, 0, 0, 0, 0, 0, 0,
4149 0, 0, 0, 0, 0, 0, 0, 0, 0,
4150 0, 0, 0, 0, 0, 1, 1, 0, 0,
4151 0, 0, 0, 0, 1, 1, 0, 0, 0,
4152 0, 0, 0, 1, 1, 0, 0, 0, 0,
4153 0, 0, 0, 0, 0, 0, 0, 0, 0,
4154 0, 0, 1, 1, 1, 1, 0, 0, 0,
4155 0, 1, 1, 0, 0, 1, 1, 0, 0,
4156 1, 1, 0, 0, 0, 0, 1, 1, 0,
4157 1, 1, 0, 0, 0, 0, 1, 1, 0,
4158 1, 1, 0, 0, 0, 0, 1, 1, 0,
4159 0, 1, 1, 0, 0, 1, 1, 0, 0,
4160 0, 0, 1, 1, 1, 1, 0, 0, 0,
4161 0, 0, 0, 0, 0, 0, 0, 0, 0,
4162 0, 0, 0, 0, 0, 0, 0, 0, 0,
4163
4164 /* Char 244 */
4165 0, 0, 0, 0, 0, 0, 0, 0, 0,
4166 0, 0, 0, 0, 0, 0, 0, 0, 0,
4167 0, 0, 0, 1, 1, 0, 0, 0, 0,
4168 0, 0, 1, 1, 1, 1, 0, 0, 0,
4169 0, 1, 1, 0, 0, 1, 1, 0, 0,
4170 0, 0, 0, 0, 0, 0, 0, 0, 0,
4171 0, 0, 1, 1, 1, 1, 0, 0, 0,
4172 0, 1, 1, 0, 0, 1, 1, 0, 0,
4173 1, 1, 0, 0, 0, 0, 1, 1, 0,
4174 1, 1, 0, 0, 0, 0, 1, 1, 0,
4175 1, 1, 0, 0, 0, 0, 1, 1, 0,
4176 0, 1, 1, 0, 0, 1, 1, 0, 0,
4177 0, 0, 1, 1, 1, 1, 0, 0, 0,
4178 0, 0, 0, 0, 0, 0, 0, 0, 0,
4179 0, 0, 0, 0, 0, 0, 0, 0, 0,
4180
4181 /* Char 245 */
4182 0, 0, 0, 0, 0, 0, 0, 0, 0,
4183 0, 0, 0, 0, 0, 0, 0, 0, 0,
4184 0, 0, 0, 1, 1, 0, 1, 1, 0,
4185 0, 0, 1, 1, 0, 1, 1, 0, 0,
4186 0, 1, 1, 0, 1, 1, 0, 0, 0,
4187 0, 0, 0, 0, 0, 0, 0, 0, 0,
4188 0, 0, 1, 1, 1, 1, 0, 0, 0,
4189 0, 1, 1, 0, 0, 1, 1, 0, 0,
4190 1, 1, 0, 0, 0, 0, 1, 1, 0,
4191 1, 1, 0, 0, 0, 0, 1, 1, 0,
4192 1, 1, 0, 0, 0, 0, 1, 1, 0,
4193 0, 1, 1, 0, 0, 1, 1, 0, 0,
4194 0, 0, 1, 1, 1, 1, 0, 0, 0,
4195 0, 0, 0, 0, 0, 0, 0, 0, 0,
4196 0, 0, 0, 0, 0, 0, 0, 0, 0,
4197
4198 /* Char 246 */
4199 0, 0, 0, 0, 0, 0, 0, 0, 0,
4200 0, 0, 0, 0, 0, 0, 0, 0, 0,
4201 0, 1, 1, 0, 0, 1, 1, 0, 0,
4202 0, 1, 1, 0, 0, 1, 1, 0, 0,
4203 0, 0, 0, 0, 0, 0, 0, 0, 0,
4204 0, 0, 0, 0, 0, 0, 0, 0, 0,
4205 0, 0, 1, 1, 1, 1, 0, 0, 0,
4206 0, 1, 1, 0, 0, 1, 1, 0, 0,
4207 1, 1, 0, 0, 0, 0, 1, 1, 0,
4208 1, 1, 0, 0, 0, 0, 1, 1, 0,
4209 1, 1, 0, 0, 0, 0, 1, 1, 0,
4210 0, 1, 1, 0, 0, 1, 1, 0, 0,
4211 0, 0, 1, 1, 1, 1, 0, 0, 0,
4212 0, 0, 0, 0, 0, 0, 0, 0, 0,
4213 0, 0, 0, 0, 0, 0, 0, 0, 0,
4214
4215 /* Char 247 */
4216 0, 0, 0, 0, 0, 0, 0, 0, 0,
4217 0, 0, 0, 0, 0, 0, 0, 0, 0,
4218 0, 0, 0, 0, 0, 0, 0, 0, 0,
4219 0, 0, 0, 1, 1, 0, 0, 0, 0,
4220 0, 0, 0, 1, 1, 0, 0, 0, 0,
4221 0, 0, 0, 0, 0, 0, 0, 0, 0,
4222 0, 0, 0, 0, 0, 0, 0, 0, 0,
4223 1, 1, 1, 1, 1, 1, 1, 1, 0,
4224 1, 1, 1, 1, 1, 1, 1, 1, 0,
4225 0, 0, 0, 0, 0, 0, 0, 0, 0,
4226 0, 0, 0, 0, 0, 0, 0, 0, 0,
4227 0, 0, 0, 1, 1, 0, 0, 0, 0,
4228 0, 0, 0, 1, 1, 0, 0, 0, 0,
4229 0, 0, 0, 0, 0, 0, 0, 0, 0,
4230 0, 0, 0, 0, 0, 0, 0, 0, 0,
4231
4232 /* Char 248 */
4233 0, 0, 0, 0, 0, 0, 0, 0, 0,
4234 0, 0, 0, 0, 0, 0, 0, 0, 0,
4235 0, 0, 1, 1, 0, 1, 1, 0, 0,
4236 0, 0, 0, 1, 1, 1, 0, 0, 0,
4237 0, 0, 0, 0, 1, 0, 0, 0, 0,
4238 0, 0, 0, 0, 0, 0, 0, 0, 0,
4239 1, 1, 0, 1, 1, 1, 1, 0, 0,
4240 0, 1, 1, 1, 0, 0, 1, 1, 0,
4241 0, 1, 1, 0, 0, 0, 0, 0, 0,
4242 0, 1, 1, 0, 0, 0, 0, 0, 0,
4243 0, 1, 1, 0, 0, 0, 0, 0, 0,
4244 0, 1, 1, 0, 0, 0, 0, 0, 0,
4245 0, 1, 1, 0, 0, 0, 0, 0, 0,
4246 0, 0, 0, 0, 0, 0, 0, 0, 0,
4247 0, 0, 0, 0, 0, 0, 0, 0, 0,
4248
4249 /* Char 249 */
4250 0, 0, 0, 0, 0, 0, 0, 0, 0,
4251 0, 0, 0, 1, 1, 0, 0, 0, 0,
4252 0, 0, 1, 0, 0, 1, 0, 0, 0,
4253 0, 0, 1, 0, 0, 1, 0, 0, 0,
4254 0, 0, 0, 1, 1, 0, 0, 0, 0,
4255 0, 0, 0, 0, 0, 0, 0, 0, 0,
4256 1, 1, 0, 0, 0, 0, 1, 1, 0,
4257 1, 1, 0, 0, 0, 0, 1, 1, 0,
4258 1, 1, 0, 0, 0, 0, 1, 1, 0,
4259 1, 1, 0, 0, 0, 0, 1, 1, 0,
4260 1, 1, 0, 0, 0, 0, 1, 1, 0,
4261 0, 1, 1, 0, 0, 1, 1, 1, 0,
4262 0, 0, 1, 1, 1, 0, 1, 1, 0,
4263 0, 0, 0, 0, 0, 0, 0, 0, 0,
4264 0, 0, 0, 0, 0, 0, 0, 0, 0,
4265
4266 /* Char 250 */
4267 0, 0, 0, 0, 0, 0, 0, 0, 0,
4268 0, 0, 0, 0, 0, 0, 0, 0, 0,
4269 0, 0, 0, 0, 0, 1, 1, 0, 0,
4270 0, 0, 0, 0, 1, 1, 0, 0, 0,
4271 0, 0, 0, 1, 1, 0, 0, 0, 0,
4272 0, 0, 0, 0, 0, 0, 0, 0, 0,
4273 1, 1, 0, 0, 0, 0, 1, 1, 0,
4274 1, 1, 0, 0, 0, 0, 1, 1, 0,
4275 1, 1, 0, 0, 0, 0, 1, 1, 0,
4276 1, 1, 0, 0, 0, 0, 1, 1, 0,
4277 1, 1, 0, 0, 0, 0, 1, 1, 0,
4278 0, 1, 1, 0, 0, 1, 1, 1, 0,
4279 0, 0, 1, 1, 1, 0, 1, 1, 0,
4280 0, 0, 0, 0, 0, 0, 0, 0, 0,
4281 0, 0, 0, 0, 0, 0, 0, 0, 0,
4282
4283 /* Char 251 */
4284 0, 0, 0, 0, 0, 0, 0, 0, 0,
4285 0, 0, 0, 0, 0, 0, 0, 0, 0,
4286 0, 0, 0, 1, 1, 0, 1, 1, 0,
4287 0, 0, 1, 1, 0, 1, 1, 0, 0,
4288 0, 1, 1, 0, 1, 1, 0, 0, 0,
4289 0, 0, 0, 0, 0, 0, 0, 0, 0,
4290 1, 1, 0, 0, 0, 0, 1, 1, 0,
4291 1, 1, 0, 0, 0, 0, 1, 1, 0,
4292 1, 1, 0, 0, 0, 0, 1, 1, 0,
4293 1, 1, 0, 0, 0, 0, 1, 1, 0,
4294 1, 1, 0, 0, 0, 0, 1, 1, 0,
4295 0, 1, 1, 0, 0, 1, 1, 1, 0,
4296 0, 0, 1, 1, 1, 0, 1, 1, 0,
4297 0, 0, 0, 0, 0, 0, 0, 0, 0,
4298 0, 0, 0, 0, 0, 0, 0, 0, 0,
4299
4300 /* Char 252 */
4301 0, 0, 0, 0, 0, 0, 0, 0, 0,
4302 0, 0, 0, 0, 0, 0, 0, 0, 0,
4303 0, 1, 1, 0, 0, 1, 1, 0, 0,
4304 0, 1, 1, 0, 0, 1, 1, 0, 0,
4305 0, 0, 0, 0, 0, 0, 0, 0, 0,
4306 0, 0, 0, 0, 0, 0, 0, 0, 0,
4307 1, 1, 0, 0, 0, 0, 1, 1, 0,
4308 1, 1, 0, 0, 0, 0, 1, 1, 0,
4309 1, 1, 0, 0, 0, 0, 1, 1, 0,
4310 1, 1, 0, 0, 0, 0, 1, 1, 0,
4311 1, 1, 0, 0, 0, 0, 1, 1, 0,
4312 0, 1, 1, 0, 0, 1, 1, 1, 0,
4313 0, 0, 1, 1, 1, 0, 1, 1, 0,
4314 0, 0, 0, 0, 0, 0, 0, 0, 0,
4315 0, 0, 0, 0, 0, 0, 0, 0, 0,
4316
4317 /* Char 253 */
4318 0, 0, 0, 0, 0, 0, 0, 0, 0,
4319 0, 0, 0, 0, 0, 0, 0, 0, 0,
4320 0, 0, 0, 0, 0, 1, 1, 0, 0,
4321 0, 0, 0, 0, 1, 1, 0, 0, 0,
4322 0, 0, 0, 1, 1, 0, 0, 0, 0,
4323 0, 0, 0, 0, 0, 0, 0, 0, 0,
4324 1, 1, 0, 0, 0, 0, 1, 1, 0,
4325 1, 1, 0, 0, 0, 0, 1, 1, 0,
4326 1, 1, 0, 0, 0, 0, 1, 1, 0,
4327 1, 1, 0, 0, 0, 0, 1, 1, 0,
4328 1, 1, 0, 0, 0, 0, 1, 1, 0,
4329 0, 1, 1, 0, 0, 1, 1, 1, 0,
4330 0, 0, 1, 1, 1, 0, 1, 1, 0,
4331 1, 0, 0, 0, 0, 0, 1, 1, 0,
4332 0, 1, 1, 1, 1, 1, 1, 0, 0,
4333
4334 /* Char 254 */
4335 0, 0, 0, 0, 0, 0, 0, 0, 0,
4336 0, 0, 0, 0, 0, 0, 0, 0, 0,
4337 0, 0, 0, 0, 0, 0, 0, 0, 0,
4338 0, 0, 0, 0, 0, 0, 0, 0, 0,
4339 0, 0, 1, 1, 0, 0, 0, 0, 0,
4340 0, 0, 1, 1, 0, 0, 0, 0, 0,
4341 1, 1, 1, 1, 1, 1, 0, 0, 0,
4342 0, 0, 1, 1, 0, 0, 0, 0, 0,
4343 0, 0, 1, 1, 0, 0, 0, 0, 0,
4344 0, 0, 1, 1, 0, 0, 0, 0, 0,
4345 0, 0, 1, 1, 0, 0, 0, 0, 0,
4346 0, 0, 1, 1, 0, 0, 1, 1, 0,
4347 0, 0, 0, 1, 1, 1, 1, 0, 0,
4348 0, 0, 0, 0, 1, 1, 0, 0, 0,
4349 0, 0, 1, 1, 1, 0, 0, 0, 0,
4350
4351 /* Char 255 */
4352 0, 0, 0, 0, 0, 0, 0, 0, 0,
4353 0, 0, 0, 0, 0, 0, 0, 0, 0,
4354 0, 0, 0, 1, 1, 0, 0, 0, 0,
4355 0, 0, 0, 1, 1, 0, 0, 0, 0,
4356 0, 0, 0, 0, 0, 0, 0, 0, 0,
4357 0, 0, 0, 0, 0, 0, 0, 0, 0,
4358 0, 0, 0, 0, 0, 0, 0, 0, 0,
4359 0, 0, 0, 0, 0, 0, 0, 0, 0,
4360 0, 0, 0, 0, 0, 0, 0, 0, 0,
4361 0, 0, 0, 0, 0, 0, 0, 0, 0,
4362 0, 0, 0, 0, 0, 0, 0, 0, 0,
4363 0, 0, 0, 0, 0, 0, 0, 0, 0,
4364 0, 0, 0, 0, 0, 0, 0, 0, 0,
4365 0, 0, 0, 0, 0, 0, 0, 0, 0,
4366 0, 0, 0, 0, 0, 0, 0, 0, 0,
4367
4368
4369 };
4370
4371 gdFont gdFontGiantRep = {
4372 256,
4373 0,
4374 9,
4375 15,
4376 gdFontGiantData
4377 };
4378
4379 BGD_EXPORT_DATA_IMPL gdFontPtr gdFontGiant = &gdFontGiantRep;
4380
4381 BGD_DECLARE(gdFontPtr) gdFontGetGiant (void)
4382 {
4383 return gdFontGiant;
4384 }
4385
4386 /* This file has not been truncated. */
0 #ifdef __cplusplus
1 extern "C" {
2 #endif
3
4
5 #ifndef _GDFONTG_H_
6 #define _GDFONTG_H_ 1
7
8 #ifdef __cplusplus
9 extern "C"
10 {
11 #endif
12
13 /*
14 This is a header file for gd font, generated using
15 bdftogd version 0.51 by Jan Pazdziora, adelton@fi.muni.cz
16 from bdf font
17 -Misc-Fixed-Bold-R-Normal-Sans-15-140-75-75-C-90-ISO8859-2
18 at Mon Jan 26 14:45:58 1998.
19 The original bdf was holding following copyright:
20 "Libor Skarvada, libor@informatics.muni.cz"
21 */
22
23
24 #include "gd.h"
25
26 BGD_EXPORT_DATA_PROT gdFontPtr gdFontGiant;
27 BGD_DECLARE(gdFontPtr) gdFontGetGiant(void);
28
29 #ifdef __cplusplus
30 }
31 #endif
32
33 #endif
34
35 #ifdef __cplusplus
36 }
37 #endif
0
1
2 /*
3 This is a header file for gd font, generated using
4 bdftogd version 0.5 by Jan Pazdziora, adelton@fi.muni.cz
5 from bdf font
6 -misc-fixed-medium-r-normal--16-140-75-75-c-80-iso8859-2
7 at Tue Jan 6 19:39:27 1998.
8
9 The original bdf was holding following copyright:
10 "Libor Skarvada, libor@informatics.muni.cz"
11 */
12
13
14 #include "gdfontl.h"
15
16 char gdFontLargeData[] = {
17 /* Char 0 */
18 0, 0, 0, 0, 0, 0, 0, 0,
19 0, 0, 0, 0, 0, 0, 0, 0,
20 0, 0, 0, 0, 0, 0, 0, 0,
21 0, 0, 0, 0, 0, 0, 0, 0,
22 0, 0, 0, 0, 0, 0, 0, 0,
23 0, 0, 0, 0, 0, 0, 0, 0,
24 0, 0, 0, 0, 0, 0, 0, 0,
25 0, 0, 0, 0, 0, 0, 0, 0,
26 0, 0, 0, 0, 0, 0, 0, 0,
27 0, 0, 0, 0, 0, 0, 0, 0,
28 0, 0, 0, 0, 0, 0, 0, 0,
29 0, 0, 0, 0, 0, 0, 0, 0,
30 0, 0, 0, 0, 0, 0, 0, 0,
31 0, 0, 0, 0, 0, 0, 0, 0,
32 0, 0, 0, 0, 0, 0, 0, 0,
33 0, 0, 0, 0, 0, 0, 0, 0,
34
35 /* Char 1 */
36 0, 0, 0, 0, 0, 0, 0, 0,
37 0, 0, 0, 0, 0, 0, 0, 0,
38 0, 0, 0, 0, 0, 0, 0, 0,
39 0, 0, 0, 0, 0, 0, 0, 0,
40 0, 0, 0, 1, 0, 0, 0, 0,
41 0, 0, 1, 1, 1, 0, 0, 0,
42 0, 1, 1, 1, 1, 1, 0, 0,
43 1, 1, 1, 1, 1, 1, 1, 0,
44 1, 1, 1, 1, 1, 1, 1, 0,
45 0, 1, 1, 1, 1, 1, 0, 0,
46 0, 0, 1, 1, 1, 0, 0, 0,
47 0, 0, 0, 1, 0, 0, 0, 0,
48 0, 0, 0, 0, 0, 0, 0, 0,
49 0, 0, 0, 0, 0, 0, 0, 0,
50 0, 0, 0, 0, 0, 0, 0, 0,
51 0, 0, 0, 0, 0, 0, 0, 0,
52
53 /* Char 2 */
54 1, 0, 1, 0, 1, 0, 1, 0,
55 0, 1, 0, 1, 0, 1, 0, 1,
56 1, 0, 1, 0, 1, 0, 1, 0,
57 0, 1, 0, 1, 0, 1, 0, 1,
58 1, 0, 1, 0, 1, 0, 1, 0,
59 0, 1, 0, 1, 0, 1, 0, 1,
60 1, 0, 1, 0, 1, 0, 1, 0,
61 0, 1, 0, 1, 0, 1, 0, 1,
62 1, 0, 1, 0, 1, 0, 1, 0,
63 0, 1, 0, 1, 0, 1, 0, 1,
64 1, 0, 1, 0, 1, 0, 1, 0,
65 0, 1, 0, 1, 0, 1, 0, 1,
66 1, 0, 1, 0, 1, 0, 1, 0,
67 0, 1, 0, 1, 0, 1, 0, 1,
68 1, 0, 1, 0, 1, 0, 1, 0,
69 0, 1, 0, 1, 0, 1, 0, 1,
70
71 /* Char 3 */
72 0, 0, 0, 0, 0, 0, 0, 0,
73 0, 0, 0, 0, 0, 0, 0, 0,
74 0, 0, 0, 0, 0, 0, 0, 0,
75 0, 0, 0, 0, 0, 0, 0, 0,
76 1, 0, 0, 0, 1, 0, 0, 0,
77 1, 0, 0, 0, 1, 0, 0, 0,
78 1, 1, 1, 1, 1, 0, 0, 0,
79 1, 0, 0, 0, 1, 0, 0, 0,
80 1, 0, 0, 0, 1, 0, 0, 0,
81 0, 0, 0, 0, 0, 0, 0, 0,
82 0, 0, 1, 1, 1, 1, 1, 0,
83 0, 0, 0, 0, 1, 0, 0, 0,
84 0, 0, 0, 0, 1, 0, 0, 0,
85 0, 0, 0, 0, 1, 0, 0, 0,
86 0, 0, 0, 0, 1, 0, 0, 0,
87 0, 0, 0, 0, 0, 0, 0, 0,
88
89 /* Char 4 */
90 0, 0, 0, 0, 0, 0, 0, 0,
91 0, 0, 0, 0, 0, 0, 0, 0,
92 0, 0, 0, 0, 0, 0, 0, 0,
93 0, 0, 0, 0, 0, 0, 0, 0,
94 1, 1, 1, 1, 0, 0, 0, 0,
95 1, 0, 0, 0, 0, 0, 0, 0,
96 1, 1, 1, 0, 0, 0, 0, 0,
97 1, 0, 0, 0, 0, 0, 0, 0,
98 1, 0, 0, 0, 0, 0, 0, 0,
99 0, 0, 0, 0, 0, 0, 0, 0,
100 0, 0, 0, 1, 1, 1, 1, 0,
101 0, 0, 0, 1, 0, 0, 0, 0,
102 0, 0, 0, 1, 1, 1, 0, 0,
103 0, 0, 0, 1, 0, 0, 0, 0,
104 0, 0, 0, 1, 0, 0, 0, 0,
105 0, 0, 0, 0, 0, 0, 0, 0,
106
107 /* Char 5 */
108 0, 0, 0, 0, 0, 0, 0, 0,
109 0, 0, 0, 0, 0, 0, 0, 0,
110 0, 0, 0, 0, 0, 0, 0, 0,
111 0, 0, 0, 0, 0, 0, 0, 0,
112 0, 1, 1, 1, 0, 0, 0, 0,
113 1, 0, 0, 0, 0, 0, 0, 0,
114 1, 0, 0, 0, 0, 0, 0, 0,
115 1, 0, 0, 0, 0, 0, 0, 0,
116 0, 1, 1, 1, 0, 0, 0, 0,
117 0, 0, 0, 0, 0, 0, 0, 0,
118 0, 0, 0, 1, 1, 1, 0, 0,
119 0, 0, 0, 1, 0, 0, 1, 0,
120 0, 0, 0, 1, 1, 1, 0, 0,
121 0, 0, 0, 1, 0, 1, 0, 0,
122 0, 0, 0, 1, 0, 0, 1, 0,
123 0, 0, 0, 0, 0, 0, 0, 0,
124
125 /* Char 6 */
126 0, 0, 0, 0, 0, 0, 0, 0,
127 0, 0, 0, 0, 0, 0, 0, 0,
128 0, 0, 0, 0, 0, 0, 0, 0,
129 0, 0, 0, 0, 0, 0, 0, 0,
130 1, 0, 0, 0, 0, 0, 0, 0,
131 1, 0, 0, 0, 0, 0, 0, 0,
132 1, 0, 0, 0, 0, 0, 0, 0,
133 1, 0, 0, 0, 0, 0, 0, 0,
134 1, 1, 1, 1, 0, 0, 0, 0,
135 0, 0, 0, 0, 0, 0, 0, 0,
136 0, 0, 0, 1, 1, 1, 1, 0,
137 0, 0, 0, 1, 0, 0, 0, 0,
138 0, 0, 0, 1, 1, 1, 0, 0,
139 0, 0, 0, 1, 0, 0, 0, 0,
140 0, 0, 0, 1, 0, 0, 0, 0,
141 0, 0, 0, 0, 0, 0, 0, 0,
142
143 /* Char 7 */
144 0, 0, 0, 0, 0, 0, 0, 0,
145 0, 0, 0, 0, 0, 0, 0, 0,
146 0, 0, 0, 0, 0, 0, 0, 0,
147 0, 0, 0, 0, 0, 0, 0, 0,
148 0, 0, 0, 0, 0, 0, 0, 0,
149 0, 0, 0, 0, 0, 0, 0, 0,
150 0, 0, 0, 1, 1, 0, 0, 0,
151 0, 0, 1, 0, 0, 1, 0, 0,
152 0, 0, 1, 0, 0, 1, 0, 0,
153 0, 0, 0, 1, 1, 0, 0, 0,
154 0, 0, 0, 0, 0, 0, 0, 0,
155 0, 0, 0, 0, 0, 0, 0, 0,
156 0, 0, 0, 0, 0, 0, 0, 0,
157 0, 0, 0, 0, 0, 0, 0, 0,
158 0, 0, 0, 0, 0, 0, 0, 0,
159 0, 0, 0, 0, 0, 0, 0, 0,
160
161 /* Char 8 */
162 0, 0, 0, 0, 0, 0, 0, 0,
163 0, 0, 0, 0, 0, 0, 0, 0,
164 0, 0, 0, 0, 0, 0, 0, 0,
165 0, 0, 0, 0, 0, 0, 0, 0,
166 0, 0, 0, 1, 0, 0, 0, 0,
167 0, 0, 0, 1, 0, 0, 0, 0,
168 0, 1, 1, 1, 1, 1, 0, 0,
169 0, 0, 0, 1, 0, 0, 0, 0,
170 0, 0, 0, 1, 0, 0, 0, 0,
171 0, 0, 0, 0, 0, 0, 0, 0,
172 0, 1, 1, 1, 1, 1, 0, 0,
173 0, 0, 0, 0, 0, 0, 0, 0,
174 0, 0, 0, 0, 0, 0, 0, 0,
175 0, 0, 0, 0, 0, 0, 0, 0,
176 0, 0, 0, 0, 0, 0, 0, 0,
177 0, 0, 0, 0, 0, 0, 0, 0,
178
179 /* Char 9 */
180 0, 0, 0, 0, 0, 0, 0, 0,
181 0, 0, 0, 0, 0, 0, 0, 0,
182 0, 0, 0, 0, 0, 0, 0, 0,
183 0, 0, 0, 0, 0, 0, 0, 0,
184 1, 0, 0, 0, 1, 0, 0, 0,
185 1, 1, 0, 0, 1, 0, 0, 0,
186 1, 0, 1, 0, 1, 0, 0, 0,
187 1, 0, 0, 1, 1, 0, 0, 0,
188 1, 0, 0, 0, 1, 0, 0, 0,
189 0, 0, 0, 0, 0, 0, 0, 0,
190 0, 0, 0, 1, 0, 0, 0, 0,
191 0, 0, 0, 1, 0, 0, 0, 0,
192 0, 0, 0, 1, 0, 0, 0, 0,
193 0, 0, 0, 1, 0, 0, 0, 0,
194 0, 0, 0, 1, 1, 1, 1, 0,
195 0, 0, 0, 0, 0, 0, 0, 0,
196
197 /* Char 10 */
198 0, 0, 0, 0, 0, 0, 0, 0,
199 0, 0, 0, 0, 0, 0, 0, 0,
200 0, 0, 0, 0, 0, 0, 0, 0,
201 0, 0, 0, 0, 0, 0, 0, 0,
202 1, 0, 0, 0, 1, 0, 0, 0,
203 1, 0, 0, 0, 1, 0, 0, 0,
204 0, 1, 0, 1, 0, 0, 0, 0,
205 0, 1, 0, 1, 0, 0, 0, 0,
206 0, 0, 1, 0, 0, 0, 0, 0,
207 0, 0, 0, 0, 0, 0, 0, 0,
208 0, 0, 1, 1, 1, 1, 1, 0,
209 0, 0, 0, 0, 1, 0, 0, 0,
210 0, 0, 0, 0, 1, 0, 0, 0,
211 0, 0, 0, 0, 1, 0, 0, 0,
212 0, 0, 0, 0, 1, 0, 0, 0,
213 0, 0, 0, 0, 0, 0, 0, 0,
214
215 /* Char 11 */
216 0, 0, 0, 1, 0, 0, 0, 0,
217 0, 0, 0, 1, 0, 0, 0, 0,
218 0, 0, 0, 1, 0, 0, 0, 0,
219 0, 0, 0, 1, 0, 0, 0, 0,
220 0, 0, 0, 1, 0, 0, 0, 0,
221 0, 0, 0, 1, 0, 0, 0, 0,
222 0, 0, 0, 1, 0, 0, 0, 0,
223 1, 1, 1, 1, 0, 0, 0, 0,
224 0, 0, 0, 0, 0, 0, 0, 0,
225 0, 0, 0, 0, 0, 0, 0, 0,
226 0, 0, 0, 0, 0, 0, 0, 0,
227 0, 0, 0, 0, 0, 0, 0, 0,
228 0, 0, 0, 0, 0, 0, 0, 0,
229 0, 0, 0, 0, 0, 0, 0, 0,
230 0, 0, 0, 0, 0, 0, 0, 0,
231 0, 0, 0, 0, 0, 0, 0, 0,
232
233 /* Char 12 */
234 0, 0, 0, 0, 0, 0, 0, 0,
235 0, 0, 0, 0, 0, 0, 0, 0,
236 0, 0, 0, 0, 0, 0, 0, 0,
237 0, 0, 0, 0, 0, 0, 0, 0,
238 0, 0, 0, 0, 0, 0, 0, 0,
239 0, 0, 0, 0, 0, 0, 0, 0,
240 0, 0, 0, 0, 0, 0, 0, 0,
241 1, 1, 1, 1, 0, 0, 0, 0,
242 0, 0, 0, 1, 0, 0, 0, 0,
243 0, 0, 0, 1, 0, 0, 0, 0,
244 0, 0, 0, 1, 0, 0, 0, 0,
245 0, 0, 0, 1, 0, 0, 0, 0,
246 0, 0, 0, 1, 0, 0, 0, 0,
247 0, 0, 0, 1, 0, 0, 0, 0,
248 0, 0, 0, 1, 0, 0, 0, 0,
249 0, 0, 0, 1, 0, 0, 0, 0,
250
251 /* Char 13 */
252 0, 0, 0, 0, 0, 0, 0, 0,
253 0, 0, 0, 0, 0, 0, 0, 0,
254 0, 0, 0, 0, 0, 0, 0, 0,
255 0, 0, 0, 0, 0, 0, 0, 0,
256 0, 0, 0, 0, 0, 0, 0, 0,
257 0, 0, 0, 0, 0, 0, 0, 0,
258 0, 0, 0, 0, 0, 0, 0, 0,
259 0, 0, 0, 1, 1, 1, 1, 1,
260 0, 0, 0, 1, 0, 0, 0, 0,
261 0, 0, 0, 1, 0, 0, 0, 0,
262 0, 0, 0, 1, 0, 0, 0, 0,
263 0, 0, 0, 1, 0, 0, 0, 0,
264 0, 0, 0, 1, 0, 0, 0, 0,
265 0, 0, 0, 1, 0, 0, 0, 0,
266 0, 0, 0, 1, 0, 0, 0, 0,
267 0, 0, 0, 1, 0, 0, 0, 0,
268
269 /* Char 14 */
270 0, 0, 0, 1, 0, 0, 0, 0,
271 0, 0, 0, 1, 0, 0, 0, 0,
272 0, 0, 0, 1, 0, 0, 0, 0,
273 0, 0, 0, 1, 0, 0, 0, 0,
274 0, 0, 0, 1, 0, 0, 0, 0,
275 0, 0, 0, 1, 0, 0, 0, 0,
276 0, 0, 0, 1, 0, 0, 0, 0,
277 0, 0, 0, 1, 1, 1, 1, 1,
278 0, 0, 0, 0, 0, 0, 0, 0,
279 0, 0, 0, 0, 0, 0, 0, 0,
280 0, 0, 0, 0, 0, 0, 0, 0,
281 0, 0, 0, 0, 0, 0, 0, 0,
282 0, 0, 0, 0, 0, 0, 0, 0,
283 0, 0, 0, 0, 0, 0, 0, 0,
284 0, 0, 0, 0, 0, 0, 0, 0,
285 0, 0, 0, 0, 0, 0, 0, 0,
286
287 /* Char 15 */
288 0, 0, 0, 1, 0, 0, 0, 0,
289 0, 0, 0, 1, 0, 0, 0, 0,
290 0, 0, 0, 1, 0, 0, 0, 0,
291 0, 0, 0, 1, 0, 0, 0, 0,
292 0, 0, 0, 1, 0, 0, 0, 0,
293 0, 0, 0, 1, 0, 0, 0, 0,
294 0, 0, 0, 1, 0, 0, 0, 0,
295 1, 1, 1, 1, 1, 1, 1, 1,
296 0, 0, 0, 1, 0, 0, 0, 0,
297 0, 0, 0, 1, 0, 0, 0, 0,
298 0, 0, 0, 1, 0, 0, 0, 0,
299 0, 0, 0, 1, 0, 0, 0, 0,
300 0, 0, 0, 1, 0, 0, 0, 0,
301 0, 0, 0, 1, 0, 0, 0, 0,
302 0, 0, 0, 1, 0, 0, 0, 0,
303 0, 0, 0, 1, 0, 0, 0, 0,
304
305 /* Char 16 */
306 0, 0, 0, 0, 0, 0, 0, 0,
307 0, 0, 0, 0, 0, 0, 0, 0,
308 0, 0, 0, 0, 0, 0, 0, 0,
309 1, 1, 1, 1, 1, 1, 1, 1,
310 0, 0, 0, 0, 0, 0, 0, 0,
311 0, 0, 0, 0, 0, 0, 0, 0,
312 0, 0, 0, 0, 0, 0, 0, 0,
313 0, 0, 0, 0, 0, 0, 0, 0,
314 0, 0, 0, 0, 0, 0, 0, 0,
315 0, 0, 0, 0, 0, 0, 0, 0,
316 0, 0, 0, 0, 0, 0, 0, 0,
317 0, 0, 0, 0, 0, 0, 0, 0,
318 0, 0, 0, 0, 0, 0, 0, 0,
319 0, 0, 0, 0, 0, 0, 0, 0,
320 0, 0, 0, 0, 0, 0, 0, 0,
321 0, 0, 0, 0, 0, 0, 0, 0,
322
323 /* Char 17 */
324 0, 0, 0, 0, 0, 0, 0, 0,
325 0, 0, 0, 0, 0, 0, 0, 0,
326 0, 0, 0, 0, 0, 0, 0, 0,
327 0, 0, 0, 0, 0, 0, 0, 0,
328 0, 0, 0, 0, 0, 0, 0, 0,
329 1, 1, 1, 1, 1, 1, 1, 1,
330 0, 0, 0, 0, 0, 0, 0, 0,
331 0, 0, 0, 0, 0, 0, 0, 0,
332 0, 0, 0, 0, 0, 0, 0, 0,
333 0, 0, 0, 0, 0, 0, 0, 0,
334 0, 0, 0, 0, 0, 0, 0, 0,
335 0, 0, 0, 0, 0, 0, 0, 0,
336 0, 0, 0, 0, 0, 0, 0, 0,
337 0, 0, 0, 0, 0, 0, 0, 0,
338 0, 0, 0, 0, 0, 0, 0, 0,
339 0, 0, 0, 0, 0, 0, 0, 0,
340
341 /* Char 18 */
342 0, 0, 0, 0, 0, 0, 0, 0,
343 0, 0, 0, 0, 0, 0, 0, 0,
344 0, 0, 0, 0, 0, 0, 0, 0,
345 0, 0, 0, 0, 0, 0, 0, 0,
346 0, 0, 0, 0, 0, 0, 0, 0,
347 0, 0, 0, 0, 0, 0, 0, 0,
348 0, 0, 0, 0, 0, 0, 0, 0,
349 1, 1, 1, 1, 1, 1, 1, 1,
350 0, 0, 0, 0, 0, 0, 0, 0,
351 0, 0, 0, 0, 0, 0, 0, 0,
352 0, 0, 0, 0, 0, 0, 0, 0,
353 0, 0, 0, 0, 0, 0, 0, 0,
354 0, 0, 0, 0, 0, 0, 0, 0,
355 0, 0, 0, 0, 0, 0, 0, 0,
356 0, 0, 0, 0, 0, 0, 0, 0,
357 0, 0, 0, 0, 0, 0, 0, 0,
358
359 /* Char 19 */
360 0, 0, 0, 0, 0, 0, 0, 0,
361 0, 0, 0, 0, 0, 0, 0, 0,
362 0, 0, 0, 0, 0, 0, 0, 0,
363 0, 0, 0, 0, 0, 0, 0, 0,
364 0, 0, 0, 0, 0, 0, 0, 0,
365 0, 0, 0, 0, 0, 0, 0, 0,
366 0, 0, 0, 0, 0, 0, 0, 0,
367 0, 0, 0, 0, 0, 0, 0, 0,
368 0, 0, 0, 0, 0, 0, 0, 0,
369 1, 1, 1, 1, 1, 1, 1, 1,
370 0, 0, 0, 0, 0, 0, 0, 0,
371 0, 0, 0, 0, 0, 0, 0, 0,
372 0, 0, 0, 0, 0, 0, 0, 0,
373 0, 0, 0, 0, 0, 0, 0, 0,
374 0, 0, 0, 0, 0, 0, 0, 0,
375 0, 0, 0, 0, 0, 0, 0, 0,
376
377 /* Char 20 */
378 0, 0, 0, 0, 0, 0, 0, 0,
379 0, 0, 0, 0, 0, 0, 0, 0,
380 0, 0, 0, 0, 0, 0, 0, 0,
381 0, 0, 0, 0, 0, 0, 0, 0,
382 0, 0, 0, 0, 0, 0, 0, 0,
383 0, 0, 0, 0, 0, 0, 0, 0,
384 0, 0, 0, 0, 0, 0, 0, 0,
385 0, 0, 0, 0, 0, 0, 0, 0,
386 0, 0, 0, 0, 0, 0, 0, 0,
387 0, 0, 0, 0, 0, 0, 0, 0,
388 0, 0, 0, 0, 0, 0, 0, 0,
389 1, 1, 1, 1, 1, 1, 1, 1,
390 0, 0, 0, 0, 0, 0, 0, 0,
391 0, 0, 0, 0, 0, 0, 0, 0,
392 0, 0, 0, 0, 0, 0, 0, 0,
393 0, 0, 0, 0, 0, 0, 0, 0,
394
395 /* Char 21 */
396 0, 0, 0, 1, 0, 0, 0, 0,
397 0, 0, 0, 1, 0, 0, 0, 0,
398 0, 0, 0, 1, 0, 0, 0, 0,
399 0, 0, 0, 1, 0, 0, 0, 0,
400 0, 0, 0, 1, 0, 0, 0, 0,
401 0, 0, 0, 1, 0, 0, 0, 0,
402 0, 0, 0, 1, 0, 0, 0, 0,
403 0, 0, 0, 1, 1, 1, 1, 1,
404 0, 0, 0, 1, 0, 0, 0, 0,
405 0, 0, 0, 1, 0, 0, 0, 0,
406 0, 0, 0, 1, 0, 0, 0, 0,
407 0, 0, 0, 1, 0, 0, 0, 0,
408 0, 0, 0, 1, 0, 0, 0, 0,
409 0, 0, 0, 1, 0, 0, 0, 0,
410 0, 0, 0, 1, 0, 0, 0, 0,
411 0, 0, 0, 1, 0, 0, 0, 0,
412
413 /* Char 22 */
414 0, 0, 0, 1, 0, 0, 0, 0,
415 0, 0, 0, 1, 0, 0, 0, 0,
416 0, 0, 0, 1, 0, 0, 0, 0,
417 0, 0, 0, 1, 0, 0, 0, 0,
418 0, 0, 0, 1, 0, 0, 0, 0,
419 0, 0, 0, 1, 0, 0, 0, 0,
420 0, 0, 0, 1, 0, 0, 0, 0,
421 1, 1, 1, 1, 0, 0, 0, 0,
422 0, 0, 0, 1, 0, 0, 0, 0,
423 0, 0, 0, 1, 0, 0, 0, 0,
424 0, 0, 0, 1, 0, 0, 0, 0,
425 0, 0, 0, 1, 0, 0, 0, 0,
426 0, 0, 0, 1, 0, 0, 0, 0,
427 0, 0, 0, 1, 0, 0, 0, 0,
428 0, 0, 0, 1, 0, 0, 0, 0,
429 0, 0, 0, 1, 0, 0, 0, 0,
430
431 /* Char 23 */
432 0, 0, 0, 1, 0, 0, 0, 0,
433 0, 0, 0, 1, 0, 0, 0, 0,
434 0, 0, 0, 1, 0, 0, 0, 0,
435 0, 0, 0, 1, 0, 0, 0, 0,
436 0, 0, 0, 1, 0, 0, 0, 0,
437 0, 0, 0, 1, 0, 0, 0, 0,
438 0, 0, 0, 1, 0, 0, 0, 0,
439 1, 1, 1, 1, 1, 1, 1, 1,
440 0, 0, 0, 0, 0, 0, 0, 0,
441 0, 0, 0, 0, 0, 0, 0, 0,
442 0, 0, 0, 0, 0, 0, 0, 0,
443 0, 0, 0, 0, 0, 0, 0, 0,
444 0, 0, 0, 0, 0, 0, 0, 0,
445 0, 0, 0, 0, 0, 0, 0, 0,
446 0, 0, 0, 0, 0, 0, 0, 0,
447 0, 0, 0, 0, 0, 0, 0, 0,
448
449 /* Char 24 */
450 0, 0, 0, 0, 0, 0, 0, 0,
451 0, 0, 0, 0, 0, 0, 0, 0,
452 0, 0, 0, 0, 0, 0, 0, 0,
453 0, 0, 0, 0, 0, 0, 0, 0,
454 0, 0, 0, 0, 0, 0, 0, 0,
455 0, 0, 0, 0, 0, 0, 0, 0,
456 0, 0, 0, 0, 0, 0, 0, 0,
457 1, 1, 1, 1, 1, 1, 1, 1,
458 0, 0, 0, 1, 0, 0, 0, 0,
459 0, 0, 0, 1, 0, 0, 0, 0,
460 0, 0, 0, 1, 0, 0, 0, 0,
461 0, 0, 0, 1, 0, 0, 0, 0,
462 0, 0, 0, 1, 0, 0, 0, 0,
463 0, 0, 0, 1, 0, 0, 0, 0,
464 0, 0, 0, 1, 0, 0, 0, 0,
465 0, 0, 0, 1, 0, 0, 0, 0,
466
467 /* Char 25 */
468 0, 0, 0, 1, 0, 0, 0, 0,
469 0, 0, 0, 1, 0, 0, 0, 0,
470 0, 0, 0, 1, 0, 0, 0, 0,
471 0, 0, 0, 1, 0, 0, 0, 0,
472 0, 0, 0, 1, 0, 0, 0, 0,
473 0, 0, 0, 1, 0, 0, 0, 0,
474 0, 0, 0, 1, 0, 0, 0, 0,
475 0, 0, 0, 1, 0, 0, 0, 0,
476 0, 0, 0, 1, 0, 0, 0, 0,
477 0, 0, 0, 1, 0, 0, 0, 0,
478 0, 0, 0, 1, 0, 0, 0, 0,
479 0, 0, 0, 1, 0, 0, 0, 0,
480 0, 0, 0, 1, 0, 0, 0, 0,
481 0, 0, 0, 1, 0, 0, 0, 0,
482 0, 0, 0, 1, 0, 0, 0, 0,
483 0, 0, 0, 1, 0, 0, 0, 0,
484
485 /* Char 26 */
486 0, 0, 0, 0, 0, 0, 0, 0,
487 0, 0, 0, 0, 0, 0, 0, 0,
488 0, 0, 0, 0, 0, 0, 0, 0,
489 0, 0, 0, 0, 0, 0, 1, 0,
490 0, 0, 0, 0, 1, 1, 0, 0,
491 0, 0, 1, 1, 0, 0, 0, 0,
492 0, 1, 0, 0, 0, 0, 0, 0,
493 0, 0, 1, 1, 0, 0, 0, 0,
494 0, 0, 0, 0, 1, 1, 0, 0,
495 0, 0, 0, 0, 0, 0, 1, 0,
496 0, 0, 0, 0, 0, 0, 0, 0,
497 0, 1, 1, 1, 1, 1, 1, 0,
498 0, 0, 0, 0, 0, 0, 0, 0,
499 0, 0, 0, 0, 0, 0, 0, 0,
500 0, 0, 0, 0, 0, 0, 0, 0,
501 0, 0, 0, 0, 0, 0, 0, 0,
502
503 /* Char 27 */
504 0, 0, 0, 0, 0, 0, 0, 0,
505 0, 0, 0, 0, 0, 0, 0, 0,
506 0, 0, 0, 0, 0, 0, 0, 0,
507 0, 1, 0, 0, 0, 0, 0, 0,
508 0, 0, 1, 1, 0, 0, 0, 0,
509 0, 0, 0, 0, 1, 1, 0, 0,
510 0, 0, 0, 0, 0, 0, 1, 0,
511 0, 0, 0, 0, 1, 1, 0, 0,
512 0, 0, 1, 1, 0, 0, 0, 0,
513 0, 1, 0, 0, 0, 0, 0, 0,
514 0, 0, 0, 0, 0, 0, 0, 0,
515 0, 1, 1, 1, 1, 1, 1, 0,
516 0, 0, 0, 0, 0, 0, 0, 0,
517 0, 0, 0, 0, 0, 0, 0, 0,
518 0, 0, 0, 0, 0, 0, 0, 0,
519 0, 0, 0, 0, 0, 0, 0, 0,
520
521 /* Char 28 */
522 0, 0, 0, 0, 0, 0, 0, 0,
523 0, 0, 0, 0, 0, 0, 0, 0,
524 0, 0, 0, 0, 0, 0, 0, 0,
525 0, 0, 0, 0, 0, 0, 0, 0,
526 0, 0, 0, 0, 0, 0, 0, 0,
527 0, 0, 0, 0, 0, 0, 0, 0,
528 0, 1, 1, 1, 1, 1, 1, 0,
529 1, 0, 1, 0, 1, 0, 0, 0,
530 0, 0, 1, 0, 1, 0, 0, 0,
531 0, 0, 1, 0, 1, 0, 0, 0,
532 0, 0, 1, 0, 1, 0, 0, 0,
533 0, 0, 1, 0, 1, 0, 0, 0,
534 1, 1, 0, 0, 0, 1, 1, 0,
535 0, 0, 0, 0, 0, 0, 0, 0,
536 0, 0, 0, 0, 0, 0, 0, 0,
537 0, 0, 0, 0, 0, 0, 0, 0,
538
539 /* Char 29 */
540 0, 0, 0, 0, 0, 0, 0, 0,
541 0, 0, 0, 0, 0, 0, 0, 0,
542 0, 0, 0, 0, 0, 0, 0, 0,
543 0, 0, 0, 0, 0, 0, 0, 0,
544 0, 0, 0, 0, 0, 0, 0, 0,
545 0, 0, 0, 0, 0, 0, 1, 0,
546 0, 0, 0, 0, 0, 1, 0, 0,
547 1, 1, 1, 1, 1, 1, 1, 0,
548 0, 0, 0, 1, 1, 0, 0, 0,
549 0, 0, 1, 1, 0, 0, 0, 0,
550 1, 1, 1, 1, 1, 1, 1, 0,
551 0, 1, 0, 0, 0, 0, 0, 0,
552 1, 0, 0, 0, 0, 0, 0, 0,
553 0, 0, 0, 0, 0, 0, 0, 0,
554 0, 0, 0, 0, 0, 0, 0, 0,
555 0, 0, 0, 0, 0, 0, 0, 0,
556
557 /* Char 30 */
558 0, 0, 0, 0, 0, 0, 0, 0,
559 0, 0, 0, 0, 0, 0, 0, 0,
560 0, 0, 0, 0, 0, 0, 0, 0,
561 0, 0, 0, 1, 1, 0, 0, 0,
562 0, 0, 1, 0, 0, 1, 0, 0,
563 0, 0, 1, 0, 0, 0, 0, 0,
564 0, 0, 1, 0, 0, 0, 0, 0,
565 1, 1, 1, 1, 1, 0, 0, 0,
566 0, 0, 1, 0, 0, 0, 0, 0,
567 0, 0, 1, 0, 0, 0, 0, 0,
568 0, 0, 1, 0, 0, 0, 0, 0,
569 0, 1, 1, 0, 0, 0, 1, 0,
570 1, 0, 1, 1, 1, 1, 0, 0,
571 1, 1, 0, 0, 0, 0, 0, 0,
572 0, 0, 0, 0, 0, 0, 0, 0,
573 0, 0, 0, 0, 0, 0, 0, 0,
574
575 /* Char 31 */
576 0, 0, 0, 0, 0, 0, 0, 0,
577 0, 0, 0, 0, 0, 0, 0, 0,
578 0, 0, 0, 0, 0, 0, 0, 0,
579 0, 0, 0, 0, 0, 0, 0, 0,
580 0, 0, 0, 0, 0, 0, 0, 0,
581 0, 0, 0, 0, 0, 0, 0, 0,
582 0, 0, 0, 0, 0, 0, 0, 0,
583 0, 0, 0, 0, 0, 0, 0, 0,
584 0, 0, 0, 0, 0, 0, 0, 0,
585 0, 0, 0, 1, 1, 0, 0, 0,
586 0, 0, 0, 1, 1, 0, 0, 0,
587 0, 0, 0, 0, 0, 0, 0, 0,
588 0, 0, 0, 0, 0, 0, 0, 0,
589 0, 0, 0, 0, 0, 0, 0, 0,
590 0, 0, 0, 0, 0, 0, 0, 0,
591 0, 0, 0, 0, 0, 0, 0, 0,
592
593 /* Char 32 */
594 0, 0, 0, 0, 0, 0, 0, 0,
595 0, 0, 0, 0, 0, 0, 0, 0,
596 0, 0, 0, 0, 0, 0, 0, 0,
597 0, 0, 0, 0, 0, 0, 0, 0,
598 0, 0, 0, 0, 0, 0, 0, 0,
599 0, 0, 0, 0, 0, 0, 0, 0,
600 0, 0, 0, 0, 0, 0, 0, 0,
601 0, 0, 0, 0, 0, 0, 0, 0,
602 0, 0, 0, 0, 0, 0, 0, 0,
603 0, 0, 0, 0, 0, 0, 0, 0,
604 0, 0, 0, 0, 0, 0, 0, 0,
605 0, 0, 0, 0, 0, 0, 0, 0,
606 0, 0, 0, 0, 0, 0, 0, 0,
607 0, 0, 0, 0, 0, 0, 0, 0,
608 0, 0, 0, 0, 0, 0, 0, 0,
609 0, 0, 0, 0, 0, 0, 0, 0,
610
611 /* Char 33 */
612 0, 0, 0, 0, 0, 0, 0, 0,
613 0, 0, 0, 0, 0, 0, 0, 0,
614 0, 0, 0, 0, 0, 0, 0, 0,
615 0, 0, 0, 1, 0, 0, 0, 0,
616 0, 0, 0, 1, 0, 0, 0, 0,
617 0, 0, 0, 1, 0, 0, 0, 0,
618 0, 0, 0, 1, 0, 0, 0, 0,
619 0, 0, 0, 1, 0, 0, 0, 0,
620 0, 0, 0, 1, 0, 0, 0, 0,
621 0, 0, 0, 1, 0, 0, 0, 0,
622 0, 0, 0, 0, 0, 0, 0, 0,
623 0, 0, 0, 1, 0, 0, 0, 0,
624 0, 0, 0, 1, 0, 0, 0, 0,
625 0, 0, 0, 0, 0, 0, 0, 0,
626 0, 0, 0, 0, 0, 0, 0, 0,
627 0, 0, 0, 0, 0, 0, 0, 0,
628
629 /* Char 34 */
630 0, 0, 0, 0, 0, 0, 0, 0,
631 0, 0, 1, 0, 0, 1, 0, 0,
632 0, 0, 1, 0, 0, 1, 0, 0,
633 0, 0, 1, 0, 0, 1, 0, 0,
634 0, 0, 1, 0, 0, 1, 0, 0,
635 0, 0, 0, 0, 0, 0, 0, 0,
636 0, 0, 0, 0, 0, 0, 0, 0,
637 0, 0, 0, 0, 0, 0, 0, 0,
638 0, 0, 0, 0, 0, 0, 0, 0,
639 0, 0, 0, 0, 0, 0, 0, 0,
640 0, 0, 0, 0, 0, 0, 0, 0,
641 0, 0, 0, 0, 0, 0, 0, 0,
642 0, 0, 0, 0, 0, 0, 0, 0,
643 0, 0, 0, 0, 0, 0, 0, 0,
644 0, 0, 0, 0, 0, 0, 0, 0,
645 0, 0, 0, 0, 0, 0, 0, 0,
646
647 /* Char 35 */
648 0, 0, 0, 0, 0, 0, 0, 0,
649 0, 0, 0, 0, 0, 0, 0, 0,
650 0, 0, 0, 0, 0, 0, 0, 0,
651 0, 0, 0, 0, 0, 0, 0, 0,
652 0, 0, 0, 1, 0, 0, 1, 0,
653 0, 0, 0, 1, 0, 0, 1, 0,
654 0, 0, 0, 1, 0, 0, 1, 0,
655 0, 1, 1, 1, 1, 1, 1, 0,
656 0, 0, 1, 0, 0, 1, 0, 0,
657 0, 0, 1, 0, 0, 1, 0, 0,
658 0, 1, 1, 1, 1, 1, 1, 0,
659 0, 1, 0, 0, 1, 0, 0, 0,
660 0, 1, 0, 0, 1, 0, 0, 0,
661 0, 1, 0, 0, 1, 0, 0, 0,
662 0, 0, 0, 0, 0, 0, 0, 0,
663 0, 0, 0, 0, 0, 0, 0, 0,
664
665 /* Char 36 */
666 0, 0, 0, 0, 0, 0, 0, 0,
667 0, 0, 0, 0, 0, 0, 0, 0,
668 0, 0, 0, 0, 0, 0, 0, 0,
669 0, 0, 0, 1, 0, 0, 0, 0,
670 0, 1, 1, 1, 1, 1, 0, 0,
671 1, 0, 0, 1, 0, 0, 1, 0,
672 1, 0, 0, 1, 0, 0, 0, 0,
673 0, 1, 1, 1, 0, 0, 0, 0,
674 0, 0, 0, 1, 1, 1, 0, 0,
675 0, 0, 0, 1, 0, 0, 1, 0,
676 1, 0, 0, 1, 0, 0, 1, 0,
677 0, 1, 1, 1, 1, 1, 0, 0,
678 0, 0, 0, 1, 0, 0, 0, 0,
679 0, 0, 0, 0, 0, 0, 0, 0,
680 0, 0, 0, 0, 0, 0, 0, 0,
681 0, 0, 0, 0, 0, 0, 0, 0,
682
683 /* Char 37 */
684 0, 0, 0, 0, 0, 0, 0, 0,
685 0, 0, 0, 0, 0, 0, 0, 0,
686 0, 0, 0, 0, 0, 0, 0, 0,
687 0, 1, 1, 0, 0, 0, 1, 0,
688 1, 0, 0, 1, 0, 1, 0, 0,
689 1, 0, 0, 1, 0, 1, 0, 0,
690 0, 1, 1, 0, 1, 0, 0, 0,
691 0, 0, 0, 1, 0, 0, 0, 0,
692 0, 0, 0, 1, 0, 0, 0, 0,
693 0, 0, 1, 0, 1, 1, 0, 0,
694 0, 1, 0, 1, 0, 0, 1, 0,
695 0, 1, 0, 1, 0, 0, 1, 0,
696 1, 0, 0, 0, 1, 1, 0, 0,
697 0, 0, 0, 0, 0, 0, 0, 0,
698 0, 0, 0, 0, 0, 0, 0, 0,
699 0, 0, 0, 0, 0, 0, 0, 0,
700
701 /* Char 38 */
702 0, 0, 0, 0, 0, 0, 0, 0,
703 0, 0, 0, 0, 0, 0, 0, 0,
704 0, 0, 0, 0, 0, 0, 0, 0,
705 0, 0, 1, 1, 1, 0, 0, 0,
706 0, 1, 0, 0, 0, 1, 0, 0,
707 0, 1, 0, 0, 0, 1, 0, 0,
708 0, 1, 0, 0, 0, 1, 0, 0,
709 0, 0, 1, 1, 1, 0, 0, 0,
710 0, 1, 1, 1, 0, 0, 1, 0,
711 1, 0, 0, 0, 1, 0, 1, 0,
712 1, 0, 0, 0, 0, 1, 0, 0,
713 1, 0, 0, 0, 1, 1, 0, 0,
714 0, 1, 1, 1, 0, 0, 1, 0,
715 0, 0, 0, 0, 0, 0, 0, 0,
716 0, 0, 0, 0, 0, 0, 0, 0,
717 0, 0, 0, 0, 0, 0, 0, 0,
718
719 /* Char 39 */
720 0, 0, 0, 0, 0, 0, 0, 0,
721 0, 0, 0, 1, 1, 0, 0, 0,
722 0, 0, 0, 0, 1, 0, 0, 0,
723 0, 0, 0, 0, 1, 0, 0, 0,
724 0, 0, 0, 1, 0, 0, 0, 0,
725 0, 0, 0, 0, 0, 0, 0, 0,
726 0, 0, 0, 0, 0, 0, 0, 0,
727 0, 0, 0, 0, 0, 0, 0, 0,
728 0, 0, 0, 0, 0, 0, 0, 0,
729 0, 0, 0, 0, 0, 0, 0, 0,
730 0, 0, 0, 0, 0, 0, 0, 0,
731 0, 0, 0, 0, 0, 0, 0, 0,
732 0, 0, 0, 0, 0, 0, 0, 0,
733 0, 0, 0, 0, 0, 0, 0, 0,
734 0, 0, 0, 0, 0, 0, 0, 0,
735 0, 0, 0, 0, 0, 0, 0, 0,
736
737 /* Char 40 */
738 0, 0, 0, 0, 0, 0, 0, 0,
739 0, 0, 0, 0, 0, 0, 0, 0,
740 0, 0, 0, 0, 0, 1, 0, 0,
741 0, 0, 0, 0, 1, 0, 0, 0,
742 0, 0, 0, 0, 1, 0, 0, 0,
743 0, 0, 0, 1, 0, 0, 0, 0,
744 0, 0, 0, 1, 0, 0, 0, 0,
745 0, 0, 0, 1, 0, 0, 0, 0,
746 0, 0, 0, 1, 0, 0, 0, 0,
747 0, 0, 0, 1, 0, 0, 0, 0,
748 0, 0, 0, 1, 0, 0, 0, 0,
749 0, 0, 0, 0, 1, 0, 0, 0,
750 0, 0, 0, 0, 1, 0, 0, 0,
751 0, 0, 0, 0, 0, 1, 0, 0,
752 0, 0, 0, 0, 0, 0, 0, 0,
753 0, 0, 0, 0, 0, 0, 0, 0,
754
755 /* Char 41 */
756 0, 0, 0, 0, 0, 0, 0, 0,
757 0, 0, 0, 0, 0, 0, 0, 0,
758 0, 0, 1, 0, 0, 0, 0, 0,
759 0, 0, 0, 1, 0, 0, 0, 0,
760 0, 0, 0, 1, 0, 0, 0, 0,
761 0, 0, 0, 0, 1, 0, 0, 0,
762 0, 0, 0, 0, 1, 0, 0, 0,
763 0, 0, 0, 0, 1, 0, 0, 0,
764 0, 0, 0, 0, 1, 0, 0, 0,
765 0, 0, 0, 0, 1, 0, 0, 0,
766 0, 0, 0, 0, 1, 0, 0, 0,
767 0, 0, 0, 1, 0, 0, 0, 0,
768 0, 0, 0, 1, 0, 0, 0, 0,
769 0, 0, 1, 0, 0, 0, 0, 0,
770 0, 0, 0, 0, 0, 0, 0, 0,
771 0, 0, 0, 0, 0, 0, 0, 0,
772
773 /* Char 42 */
774 0, 0, 0, 0, 0, 0, 0, 0,
775 0, 0, 0, 0, 0, 0, 0, 0,
776 0, 0, 0, 0, 0, 0, 0, 0,
777 0, 0, 0, 0, 0, 0, 0, 0,
778 0, 0, 0, 0, 0, 0, 0, 0,
779 0, 0, 0, 1, 0, 0, 0, 0,
780 1, 0, 0, 1, 0, 0, 1, 0,
781 0, 1, 0, 1, 0, 1, 0, 0,
782 0, 0, 1, 1, 1, 0, 0, 0,
783 0, 1, 0, 1, 0, 1, 0, 0,
784 1, 0, 0, 1, 0, 0, 1, 0,
785 0, 0, 0, 1, 0, 0, 0, 0,
786 0, 0, 0, 0, 0, 0, 0, 0,
787 0, 0, 0, 0, 0, 0, 0, 0,
788 0, 0, 0, 0, 0, 0, 0, 0,
789 0, 0, 0, 0, 0, 0, 0, 0,
790
791 /* Char 43 */
792 0, 0, 0, 0, 0, 0, 0, 0,
793 0, 0, 0, 0, 0, 0, 0, 0,
794 0, 0, 0, 0, 0, 0, 0, 0,
795 0, 0, 0, 0, 0, 0, 0, 0,
796 0, 0, 0, 0, 0, 0, 0, 0,
797 0, 0, 0, 1, 0, 0, 0, 0,
798 0, 0, 0, 1, 0, 0, 0, 0,
799 0, 0, 0, 1, 0, 0, 0, 0,
800 1, 1, 1, 1, 1, 1, 1, 0,
801 0, 0, 0, 1, 0, 0, 0, 0,
802 0, 0, 0, 1, 0, 0, 0, 0,
803 0, 0, 0, 1, 0, 0, 0, 0,
804 0, 0, 0, 0, 0, 0, 0, 0,
805 0, 0, 0, 0, 0, 0, 0, 0,
806 0, 0, 0, 0, 0, 0, 0, 0,
807 0, 0, 0, 0, 0, 0, 0, 0,
808
809 /* Char 44 */
810 0, 0, 0, 0, 0, 0, 0, 0,
811 0, 0, 0, 0, 0, 0, 0, 0,
812 0, 0, 0, 0, 0, 0, 0, 0,
813 0, 0, 0, 0, 0, 0, 0, 0,
814 0, 0, 0, 0, 0, 0, 0, 0,
815 0, 0, 0, 0, 0, 0, 0, 0,
816 0, 0, 0, 0, 0, 0, 0, 0,
817 0, 0, 0, 0, 0, 0, 0, 0,
818 0, 0, 0, 0, 0, 0, 0, 0,
819 0, 0, 0, 0, 0, 0, 0, 0,
820 0, 0, 0, 0, 0, 0, 0, 0,
821 0, 0, 1, 1, 0, 0, 0, 0,
822 0, 0, 0, 1, 0, 0, 0, 0,
823 0, 0, 0, 1, 0, 0, 0, 0,
824 0, 0, 1, 0, 0, 0, 0, 0,
825 0, 0, 0, 0, 0, 0, 0, 0,
826
827 /* Char 45 */
828 0, 0, 0, 0, 0, 0, 0, 0,
829 0, 0, 0, 0, 0, 0, 0, 0,
830 0, 0, 0, 0, 0, 0, 0, 0,
831 0, 0, 0, 0, 0, 0, 0, 0,
832 0, 0, 0, 0, 0, 0, 0, 0,
833 0, 0, 0, 0, 0, 0, 0, 0,
834 0, 0, 0, 0, 0, 0, 0, 0,
835 0, 0, 0, 0, 0, 0, 0, 0,
836 0, 1, 1, 1, 1, 1, 1, 0,
837 0, 0, 0, 0, 0, 0, 0, 0,
838 0, 0, 0, 0, 0, 0, 0, 0,
839 0, 0, 0, 0, 0, 0, 0, 0,
840 0, 0, 0, 0, 0, 0, 0, 0,
841 0, 0, 0, 0, 0, 0, 0, 0,
842 0, 0, 0, 0, 0, 0, 0, 0,
843 0, 0, 0, 0, 0, 0, 0, 0,
844
845 /* Char 46 */
846 0, 0, 0, 0, 0, 0, 0, 0,
847 0, 0, 0, 0, 0, 0, 0, 0,
848 0, 0, 0, 0, 0, 0, 0, 0,
849 0, 0, 0, 0, 0, 0, 0, 0,
850 0, 0, 0, 0, 0, 0, 0, 0,
851 0, 0, 0, 0, 0, 0, 0, 0,
852 0, 0, 0, 0, 0, 0, 0, 0,
853 0, 0, 0, 0, 0, 0, 0, 0,
854 0, 0, 0, 0, 0, 0, 0, 0,
855 0, 0, 0, 0, 0, 0, 0, 0,
856 0, 0, 0, 0, 0, 0, 0, 0,
857 0, 0, 0, 1, 1, 0, 0, 0,
858 0, 0, 0, 1, 1, 0, 0, 0,
859 0, 0, 0, 0, 0, 0, 0, 0,
860 0, 0, 0, 0, 0, 0, 0, 0,
861 0, 0, 0, 0, 0, 0, 0, 0,
862
863 /* Char 47 */
864 0, 0, 0, 0, 0, 0, 0, 0,
865 0, 0, 0, 0, 0, 0, 0, 0,
866 0, 0, 0, 0, 0, 0, 0, 0,
867 0, 0, 0, 0, 0, 0, 1, 0,
868 0, 0, 0, 0, 0, 0, 1, 0,
869 0, 0, 0, 0, 0, 1, 0, 0,
870 0, 0, 0, 0, 1, 0, 0, 0,
871 0, 0, 0, 0, 1, 0, 0, 0,
872 0, 0, 0, 1, 0, 0, 0, 0,
873 0, 0, 0, 1, 0, 0, 0, 0,
874 0, 0, 1, 0, 0, 0, 0, 0,
875 0, 1, 0, 0, 0, 0, 0, 0,
876 0, 1, 0, 0, 0, 0, 0, 0,
877 0, 0, 0, 0, 0, 0, 0, 0,
878 0, 0, 0, 0, 0, 0, 0, 0,
879 0, 0, 0, 0, 0, 0, 0, 0,
880
881 /* Char 48 */
882 0, 0, 0, 0, 0, 0, 0, 0,
883 0, 0, 0, 0, 0, 0, 0, 0,
884 0, 0, 0, 0, 0, 0, 0, 0,
885 0, 0, 0, 1, 1, 0, 0, 0,
886 0, 0, 1, 0, 0, 1, 0, 0,
887 0, 1, 0, 0, 0, 0, 1, 0,
888 0, 1, 0, 0, 0, 0, 1, 0,
889 0, 1, 0, 0, 0, 0, 1, 0,
890 0, 1, 0, 0, 0, 0, 1, 0,
891 0, 1, 0, 0, 0, 0, 1, 0,
892 0, 1, 0, 0, 0, 0, 1, 0,
893 0, 0, 1, 0, 0, 1, 0, 0,
894 0, 0, 0, 1, 1, 0, 0, 0,
895 0, 0, 0, 0, 0, 0, 0, 0,
896 0, 0, 0, 0, 0, 0, 0, 0,
897 0, 0, 0, 0, 0, 0, 0, 0,
898
899 /* Char 49 */
900 0, 0, 0, 0, 0, 0, 0, 0,
901 0, 0, 0, 0, 0, 0, 0, 0,
902 0, 0, 0, 0, 0, 0, 0, 0,
903 0, 0, 0, 0, 1, 0, 0, 0,
904 0, 0, 0, 1, 1, 0, 0, 0,
905 0, 0, 1, 0, 1, 0, 0, 0,
906 0, 0, 0, 0, 1, 0, 0, 0,
907 0, 0, 0, 0, 1, 0, 0, 0,
908 0, 0, 0, 0, 1, 0, 0, 0,
909 0, 0, 0, 0, 1, 0, 0, 0,
910 0, 0, 0, 0, 1, 0, 0, 0,
911 0, 0, 0, 0, 1, 0, 0, 0,
912 0, 0, 1, 1, 1, 1, 1, 0,
913 0, 0, 0, 0, 0, 0, 0, 0,
914 0, 0, 0, 0, 0, 0, 0, 0,
915 0, 0, 0, 0, 0, 0, 0, 0,
916
917 /* Char 50 */
918 0, 0, 0, 0, 0, 0, 0, 0,
919 0, 0, 0, 0, 0, 0, 0, 0,
920 0, 0, 0, 0, 0, 0, 0, 0,
921 0, 0, 1, 1, 1, 1, 0, 0,
922 0, 1, 0, 0, 0, 0, 1, 0,
923 0, 1, 0, 0, 0, 0, 1, 0,
924 0, 0, 0, 0, 0, 0, 1, 0,
925 0, 0, 0, 0, 1, 1, 0, 0,
926 0, 0, 0, 1, 0, 0, 0, 0,
927 0, 0, 1, 0, 0, 0, 0, 0,
928 0, 1, 0, 0, 0, 0, 0, 0,
929 0, 1, 0, 0, 0, 0, 0, 0,
930 0, 1, 1, 1, 1, 1, 1, 0,
931 0, 0, 0, 0, 0, 0, 0, 0,
932 0, 0, 0, 0, 0, 0, 0, 0,
933 0, 0, 0, 0, 0, 0, 0, 0,
934
935 /* Char 51 */
936 0, 0, 0, 0, 0, 0, 0, 0,
937 0, 0, 0, 0, 0, 0, 0, 0,
938 0, 0, 0, 0, 0, 0, 0, 0,
939 0, 0, 1, 1, 1, 1, 0, 0,
940 0, 1, 0, 0, 0, 0, 1, 0,
941 0, 1, 0, 0, 0, 0, 1, 0,
942 0, 0, 0, 0, 0, 0, 1, 0,
943 0, 0, 0, 1, 1, 1, 0, 0,
944 0, 0, 0, 0, 0, 0, 1, 0,
945 0, 0, 0, 0, 0, 0, 1, 0,
946 0, 1, 0, 0, 0, 0, 1, 0,
947 0, 1, 0, 0, 0, 0, 1, 0,
948 0, 0, 1, 1, 1, 1, 0, 0,
949 0, 0, 0, 0, 0, 0, 0, 0,
950 0, 0, 0, 0, 0, 0, 0, 0,
951 0, 0, 0, 0, 0, 0, 0, 0,
952
953 /* Char 52 */
954 0, 0, 0, 0, 0, 0, 0, 0,
955 0, 0, 0, 0, 0, 0, 0, 0,
956 0, 0, 0, 0, 0, 0, 0, 0,
957 0, 0, 0, 0, 0, 1, 0, 0,
958 0, 0, 0, 0, 1, 1, 0, 0,
959 0, 0, 0, 1, 0, 1, 0, 0,
960 0, 0, 1, 0, 0, 1, 0, 0,
961 0, 1, 0, 0, 0, 1, 0, 0,
962 0, 1, 0, 0, 0, 1, 0, 0,
963 0, 1, 1, 1, 1, 1, 1, 0,
964 0, 0, 0, 0, 0, 1, 0, 0,
965 0, 0, 0, 0, 0, 1, 0, 0,
966 0, 0, 0, 0, 0, 1, 0, 0,
967 0, 0, 0, 0, 0, 0, 0, 0,
968 0, 0, 0, 0, 0, 0, 0, 0,
969 0, 0, 0, 0, 0, 0, 0, 0,
970
971 /* Char 53 */
972 0, 0, 0, 0, 0, 0, 0, 0,
973 0, 0, 0, 0, 0, 0, 0, 0,
974 0, 0, 0, 0, 0, 0, 0, 0,
975 0, 1, 1, 1, 1, 1, 1, 0,
976 0, 1, 0, 0, 0, 0, 0, 0,
977 0, 1, 0, 0, 0, 0, 0, 0,
978 0, 1, 0, 0, 0, 0, 0, 0,
979 0, 1, 1, 1, 1, 1, 0, 0,
980 0, 0, 0, 0, 0, 0, 1, 0,
981 0, 0, 0, 0, 0, 0, 1, 0,
982 0, 0, 0, 0, 0, 0, 1, 0,
983 0, 1, 0, 0, 0, 0, 1, 0,
984 0, 0, 1, 1, 1, 1, 0, 0,
985 0, 0, 0, 0, 0, 0, 0, 0,
986 0, 0, 0, 0, 0, 0, 0, 0,
987 0, 0, 0, 0, 0, 0, 0, 0,
988
989 /* Char 54 */
990 0, 0, 0, 0, 0, 0, 0, 0,
991 0, 0, 0, 0, 0, 0, 0, 0,
992 0, 0, 0, 0, 0, 0, 0, 0,
993 0, 0, 0, 1, 1, 1, 0, 0,
994 0, 0, 1, 0, 0, 0, 0, 0,
995 0, 1, 0, 0, 0, 0, 0, 0,
996 0, 1, 0, 0, 0, 0, 0, 0,
997 0, 1, 1, 1, 1, 1, 0, 0,
998 0, 1, 0, 0, 0, 0, 1, 0,
999 0, 1, 0, 0, 0, 0, 1, 0,
1000 0, 1, 0, 0, 0, 0, 1, 0,
1001 0, 1, 0, 0, 0, 0, 1, 0,
1002 0, 0, 1, 1, 1, 1, 0, 0,
1003 0, 0, 0, 0, 0, 0, 0, 0,
1004 0, 0, 0, 0, 0, 0, 0, 0,
1005 0, 0, 0, 0, 0, 0, 0, 0,
1006
1007 /* Char 55 */
1008 0, 0, 0, 0, 0, 0, 0, 0,
1009 0, 0, 0, 0, 0, 0, 0, 0,
1010 0, 0, 0, 0, 0, 0, 0, 0,
1011 0, 1, 1, 1, 1, 1, 1, 0,
1012 0, 0, 0, 0, 0, 0, 1, 0,
1013 0, 0, 0, 0, 0, 0, 1, 0,
1014 0, 0, 0, 0, 0, 1, 0, 0,
1015 0, 0, 0, 0, 0, 1, 0, 0,
1016 0, 0, 0, 0, 0, 1, 0, 0,
1017 0, 0, 0, 0, 1, 0, 0, 0,
1018 0, 0, 0, 0, 1, 0, 0, 0,
1019 0, 0, 0, 0, 1, 0, 0, 0,
1020 0, 0, 0, 0, 1, 0, 0, 0,
1021 0, 0, 0, 0, 0, 0, 0, 0,
1022 0, 0, 0, 0, 0, 0, 0, 0,
1023 0, 0, 0, 0, 0, 0, 0, 0,
1024
1025 /* Char 56 */
1026 0, 0, 0, 0, 0, 0, 0, 0,
1027 0, 0, 0, 0, 0, 0, 0, 0,
1028 0, 0, 0, 0, 0, 0, 0, 0,
1029 0, 0, 1, 1, 1, 1, 0, 0,
1030 0, 1, 0, 0, 0, 0, 1, 0,
1031 0, 1, 0, 0, 0, 0, 1, 0,
1032 0, 1, 0, 0, 0, 0, 1, 0,
1033 0, 0, 1, 1, 1, 1, 0, 0,
1034 0, 1, 0, 0, 0, 0, 1, 0,
1035 0, 1, 0, 0, 0, 0, 1, 0,
1036 0, 1, 0, 0, 0, 0, 1, 0,
1037 0, 1, 0, 0, 0, 0, 1, 0,
1038 0, 0, 1, 1, 1, 1, 0, 0,
1039 0, 0, 0, 0, 0, 0, 0, 0,
1040 0, 0, 0, 0, 0, 0, 0, 0,
1041 0, 0, 0, 0, 0, 0, 0, 0,
1042
1043 /* Char 57 */
1044 0, 0, 0, 0, 0, 0, 0, 0,
1045 0, 0, 0, 0, 0, 0, 0, 0,
1046 0, 0, 0, 0, 0, 0, 0, 0,
1047 0, 0, 1, 1, 1, 1, 0, 0,
1048 0, 1, 0, 0, 0, 0, 1, 0,
1049 0, 1, 0, 0, 0, 0, 1, 0,
1050 0, 1, 0, 0, 0, 0, 1, 0,
1051 0, 0, 1, 1, 1, 1, 1, 0,
1052 0, 0, 0, 0, 0, 0, 1, 0,
1053 0, 0, 0, 0, 0, 0, 1, 0,
1054 0, 0, 0, 0, 0, 0, 1, 0,
1055 0, 0, 0, 0, 0, 1, 0, 0,
1056 0, 0, 1, 1, 1, 0, 0, 0,
1057 0, 0, 0, 0, 0, 0, 0, 0,
1058 0, 0, 0, 0, 0, 0, 0, 0,
1059 0, 0, 0, 0, 0, 0, 0, 0,
1060
1061 /* Char 58 */
1062 0, 0, 0, 0, 0, 0, 0, 0,
1063 0, 0, 0, 0, 0, 0, 0, 0,
1064 0, 0, 0, 0, 0, 0, 0, 0,
1065 0, 0, 0, 0, 0, 0, 0, 0,
1066 0, 0, 0, 0, 0, 0, 0, 0,
1067 0, 0, 0, 0, 0, 0, 0, 0,
1068 0, 0, 0, 1, 1, 0, 0, 0,
1069 0, 0, 0, 1, 1, 0, 0, 0,
1070 0, 0, 0, 0, 0, 0, 0, 0,
1071 0, 0, 0, 0, 0, 0, 0, 0,
1072 0, 0, 0, 0, 0, 0, 0, 0,
1073 0, 0, 0, 1, 1, 0, 0, 0,
1074 0, 0, 0, 1, 1, 0, 0, 0,
1075 0, 0, 0, 0, 0, 0, 0, 0,
1076 0, 0, 0, 0, 0, 0, 0, 0,
1077 0, 0, 0, 0, 0, 0, 0, 0,
1078
1079 /* Char 59 */
1080 0, 0, 0, 0, 0, 0, 0, 0,
1081 0, 0, 0, 0, 0, 0, 0, 0,
1082 0, 0, 0, 0, 0, 0, 0, 0,
1083 0, 0, 0, 0, 0, 0, 0, 0,
1084 0, 0, 0, 0, 0, 0, 0, 0,
1085 0, 0, 0, 0, 0, 0, 0, 0,
1086 0, 0, 0, 1, 1, 0, 0, 0,
1087 0, 0, 0, 1, 1, 0, 0, 0,
1088 0, 0, 0, 0, 0, 0, 0, 0,
1089 0, 0, 0, 0, 0, 0, 0, 0,
1090 0, 0, 0, 0, 0, 0, 0, 0,
1091 0, 0, 0, 1, 1, 0, 0, 0,
1092 0, 0, 0, 0, 1, 0, 0, 0,
1093 0, 0, 0, 0, 1, 0, 0, 0,
1094 0, 0, 0, 1, 0, 0, 0, 0,
1095 0, 0, 0, 0, 0, 0, 0, 0,
1096
1097 /* Char 60 */
1098 0, 0, 0, 0, 0, 0, 0, 0,
1099 0, 0, 0, 0, 0, 0, 0, 0,
1100 0, 0, 0, 0, 0, 0, 0, 0,
1101 0, 0, 0, 0, 0, 0, 0, 0,
1102 0, 0, 0, 0, 0, 1, 0, 0,
1103 0, 0, 0, 0, 1, 0, 0, 0,
1104 0, 0, 0, 1, 0, 0, 0, 0,
1105 0, 0, 1, 0, 0, 0, 0, 0,
1106 0, 1, 0, 0, 0, 0, 0, 0,
1107 0, 0, 1, 0, 0, 0, 0, 0,
1108 0, 0, 0, 1, 0, 0, 0, 0,
1109 0, 0, 0, 0, 1, 0, 0, 0,
1110 0, 0, 0, 0, 0, 1, 0, 0,
1111 0, 0, 0, 0, 0, 0, 0, 0,
1112 0, 0, 0, 0, 0, 0, 0, 0,
1113 0, 0, 0, 0, 0, 0, 0, 0,
1114
1115 /* Char 61 */
1116 0, 0, 0, 0, 0, 0, 0, 0,
1117 0, 0, 0, 0, 0, 0, 0, 0,
1118 0, 0, 0, 0, 0, 0, 0, 0,
1119 0, 0, 0, 0, 0, 0, 0, 0,
1120 0, 0, 0, 0, 0, 0, 0, 0,
1121 0, 0, 0, 0, 0, 0, 0, 0,
1122 0, 1, 1, 1, 1, 1, 1, 0,
1123 0, 0, 0, 0, 0, 0, 0, 0,
1124 0, 0, 0, 0, 0, 0, 0, 0,
1125 0, 0, 0, 0, 0, 0, 0, 0,
1126 0, 1, 1, 1, 1, 1, 1, 0,
1127 0, 0, 0, 0, 0, 0, 0, 0,
1128 0, 0, 0, 0, 0, 0, 0, 0,
1129 0, 0, 0, 0, 0, 0, 0, 0,
1130 0, 0, 0, 0, 0, 0, 0, 0,
1131 0, 0, 0, 0, 0, 0, 0, 0,
1132
1133 /* Char 62 */
1134 0, 0, 0, 0, 0, 0, 0, 0,
1135 0, 0, 0, 0, 0, 0, 0, 0,
1136 0, 0, 0, 0, 0, 0, 0, 0,
1137 0, 0, 0, 0, 0, 0, 0, 0,
1138 0, 1, 0, 0, 0, 0, 0, 0,
1139 0, 0, 1, 0, 0, 0, 0, 0,
1140 0, 0, 0, 1, 0, 0, 0, 0,
1141 0, 0, 0, 0, 1, 0, 0, 0,
1142 0, 0, 0, 0, 0, 1, 0, 0,
1143 0, 0, 0, 0, 1, 0, 0, 0,
1144 0, 0, 0, 1, 0, 0, 0, 0,
1145 0, 0, 1, 0, 0, 0, 0, 0,
1146 0, 1, 0, 0, 0, 0, 0, 0,
1147 0, 0, 0, 0, 0, 0, 0, 0,
1148 0, 0, 0, 0, 0, 0, 0, 0,
1149 0, 0, 0, 0, 0, 0, 0, 0,
1150
1151 /* Char 63 */
1152 0, 0, 0, 0, 0, 0, 0, 0,
1153 0, 0, 0, 0, 0, 0, 0, 0,
1154 0, 0, 0, 0, 0, 0, 0, 0,
1155 0, 0, 1, 1, 1, 1, 0, 0,
1156 0, 1, 0, 0, 0, 0, 1, 0,
1157 0, 1, 0, 0, 0, 0, 1, 0,
1158 0, 0, 0, 0, 0, 0, 1, 0,
1159 0, 0, 0, 0, 0, 1, 0, 0,
1160 0, 0, 0, 0, 1, 0, 0, 0,
1161 0, 0, 0, 0, 1, 0, 0, 0,
1162 0, 0, 0, 0, 0, 0, 0, 0,
1163 0, 0, 0, 0, 1, 0, 0, 0,
1164 0, 0, 0, 0, 1, 0, 0, 0,
1165 0, 0, 0, 0, 0, 0, 0, 0,
1166 0, 0, 0, 0, 0, 0, 0, 0,
1167 0, 0, 0, 0, 0, 0, 0, 0,
1168
1169 /* Char 64 */
1170 0, 0, 0, 0, 0, 0, 0, 0,
1171 0, 0, 0, 0, 0, 0, 0, 0,
1172 0, 0, 0, 0, 0, 0, 0, 0,
1173 0, 0, 0, 1, 1, 1, 0, 0,
1174 0, 0, 1, 0, 0, 0, 1, 0,
1175 0, 1, 0, 0, 1, 0, 1, 0,
1176 0, 1, 0, 1, 0, 1, 1, 0,
1177 0, 1, 0, 1, 0, 0, 1, 0,
1178 0, 1, 0, 1, 0, 0, 1, 0,
1179 0, 1, 0, 1, 0, 0, 1, 0,
1180 0, 1, 0, 0, 1, 1, 1, 0,
1181 0, 0, 1, 0, 0, 0, 0, 0,
1182 0, 0, 0, 1, 1, 1, 1, 0,
1183 0, 0, 0, 0, 0, 0, 0, 0,
1184 0, 0, 0, 0, 0, 0, 0, 0,
1185 0, 0, 0, 0, 0, 0, 0, 0,
1186
1187 /* Char 65 */
1188 0, 0, 0, 0, 0, 0, 0, 0,
1189 0, 0, 0, 0, 0, 0, 0, 0,
1190 0, 0, 0, 0, 0, 0, 0, 0,
1191 0, 0, 0, 1, 1, 0, 0, 0,
1192 0, 0, 1, 0, 0, 1, 0, 0,
1193 0, 1, 0, 0, 0, 0, 1, 0,
1194 0, 1, 0, 0, 0, 0, 1, 0,
1195 0, 1, 0, 0, 0, 0, 1, 0,
1196 0, 1, 1, 1, 1, 1, 1, 0,
1197 0, 1, 0, 0, 0, 0, 1, 0,
1198 0, 1, 0, 0, 0, 0, 1, 0,
1199 0, 1, 0, 0, 0, 0, 1, 0,
1200 0, 1, 0, 0, 0, 0, 1, 0,
1201 0, 0, 0, 0, 0, 0, 0, 0,
1202 0, 0, 0, 0, 0, 0, 0, 0,
1203 0, 0, 0, 0, 0, 0, 0, 0,
1204
1205 /* Char 66 */
1206 0, 0, 0, 0, 0, 0, 0, 0,
1207 0, 0, 0, 0, 0, 0, 0, 0,
1208 0, 0, 0, 0, 0, 0, 0, 0,
1209 0, 1, 1, 1, 1, 1, 0, 0,
1210 0, 1, 0, 0, 0, 0, 1, 0,
1211 0, 1, 0, 0, 0, 0, 1, 0,
1212 0, 1, 0, 0, 0, 0, 1, 0,
1213 0, 1, 1, 1, 1, 1, 0, 0,
1214 0, 1, 0, 0, 0, 0, 1, 0,
1215 0, 1, 0, 0, 0, 0, 1, 0,
1216 0, 1, 0, 0, 0, 0, 1, 0,
1217 0, 1, 0, 0, 0, 0, 1, 0,
1218 0, 1, 1, 1, 1, 1, 0, 0,
1219 0, 0, 0, 0, 0, 0, 0, 0,
1220 0, 0, 0, 0, 0, 0, 0, 0,
1221 0, 0, 0, 0, 0, 0, 0, 0,
1222
1223 /* Char 67 */
1224 0, 0, 0, 0, 0, 0, 0, 0,
1225 0, 0, 0, 0, 0, 0, 0, 0,
1226 0, 0, 0, 0, 0, 0, 0, 0,
1227 0, 0, 1, 1, 1, 1, 0, 0,
1228 0, 1, 0, 0, 0, 0, 1, 0,
1229 0, 1, 0, 0, 0, 0, 0, 0,
1230 0, 1, 0, 0, 0, 0, 0, 0,
1231 0, 1, 0, 0, 0, 0, 0, 0,
1232 0, 1, 0, 0, 0, 0, 0, 0,
1233 0, 1, 0, 0, 0, 0, 0, 0,
1234 0, 1, 0, 0, 0, 0, 0, 0,
1235 0, 1, 0, 0, 0, 0, 1, 0,
1236 0, 0, 1, 1, 1, 1, 0, 0,
1237 0, 0, 0, 0, 0, 0, 0, 0,
1238 0, 0, 0, 0, 0, 0, 0, 0,
1239 0, 0, 0, 0, 0, 0, 0, 0,
1240
1241 /* Char 68 */
1242 0, 0, 0, 0, 0, 0, 0, 0,
1243 0, 0, 0, 0, 0, 0, 0, 0,
1244 0, 0, 0, 0, 0, 0, 0, 0,
1245 0, 1, 1, 1, 1, 0, 0, 0,
1246 0, 1, 0, 0, 0, 1, 0, 0,
1247 0, 1, 0, 0, 0, 0, 1, 0,
1248 0, 1, 0, 0, 0, 0, 1, 0,
1249 0, 1, 0, 0, 0, 0, 1, 0,
1250 0, 1, 0, 0, 0, 0, 1, 0,
1251 0, 1, 0, 0, 0, 0, 1, 0,
1252 0, 1, 0, 0, 0, 0, 1, 0,
1253 0, 1, 0, 0, 0, 1, 0, 0,
1254 0, 1, 1, 1, 1, 0, 0, 0,
1255 0, 0, 0, 0, 0, 0, 0, 0,
1256 0, 0, 0, 0, 0, 0, 0, 0,
1257 0, 0, 0, 0, 0, 0, 0, 0,
1258
1259 /* Char 69 */
1260 0, 0, 0, 0, 0, 0, 0, 0,
1261 0, 0, 0, 0, 0, 0, 0, 0,
1262 0, 0, 0, 0, 0, 0, 0, 0,
1263 0, 1, 1, 1, 1, 1, 1, 0,
1264 0, 1, 0, 0, 0, 0, 0, 0,
1265 0, 1, 0, 0, 0, 0, 0, 0,
1266 0, 1, 0, 0, 0, 0, 0, 0,
1267 0, 1, 1, 1, 1, 1, 0, 0,
1268 0, 1, 0, 0, 0, 0, 0, 0,
1269 0, 1, 0, 0, 0, 0, 0, 0,
1270 0, 1, 0, 0, 0, 0, 0, 0,
1271 0, 1, 0, 0, 0, 0, 0, 0,
1272 0, 1, 1, 1, 1, 1, 1, 0,
1273 0, 0, 0, 0, 0, 0, 0, 0,
1274 0, 0, 0, 0, 0, 0, 0, 0,
1275 0, 0, 0, 0, 0, 0, 0, 0,
1276
1277 /* Char 70 */
1278 0, 0, 0, 0, 0, 0, 0, 0,
1279 0, 0, 0, 0, 0, 0, 0, 0,
1280 0, 0, 0, 0, 0, 0, 0, 0,
1281 0, 1, 1, 1, 1, 1, 1, 0,
1282 0, 1, 0, 0, 0, 0, 0, 0,
1283 0, 1, 0, 0, 0, 0, 0, 0,
1284 0, 1, 0, 0, 0, 0, 0, 0,
1285 0, 1, 1, 1, 1, 1, 0, 0,
1286 0, 1, 0, 0, 0, 0, 0, 0,
1287 0, 1, 0, 0, 0, 0, 0, 0,
1288 0, 1, 0, 0, 0, 0, 0, 0,
1289 0, 1, 0, 0, 0, 0, 0, 0,
1290 0, 1, 0, 0, 0, 0, 0, 0,
1291 0, 0, 0, 0, 0, 0, 0, 0,
1292 0, 0, 0, 0, 0, 0, 0, 0,
1293 0, 0, 0, 0, 0, 0, 0, 0,
1294
1295 /* Char 71 */
1296 0, 0, 0, 0, 0, 0, 0, 0,
1297 0, 0, 0, 0, 0, 0, 0, 0,
1298 0, 0, 0, 0, 0, 0, 0, 0,
1299 0, 0, 1, 1, 1, 1, 0, 0,
1300 0, 1, 0, 0, 0, 0, 1, 0,
1301 0, 1, 0, 0, 0, 0, 0, 0,
1302 0, 1, 0, 0, 0, 0, 0, 0,
1303 0, 1, 0, 0, 0, 0, 0, 0,
1304 0, 1, 0, 0, 1, 1, 1, 0,
1305 0, 1, 0, 0, 0, 0, 1, 0,
1306 0, 1, 0, 0, 0, 0, 1, 0,
1307 0, 1, 0, 0, 0, 1, 1, 0,
1308 0, 0, 1, 1, 1, 0, 1, 0,
1309 0, 0, 0, 0, 0, 0, 0, 0,
1310 0, 0, 0, 0, 0, 0, 0, 0,
1311 0, 0, 0, 0, 0, 0, 0, 0,
1312
1313 /* Char 72 */
1314 0, 0, 0, 0, 0, 0, 0, 0,
1315 0, 0, 0, 0, 0, 0, 0, 0,
1316 0, 0, 0, 0, 0, 0, 0, 0,
1317 0, 1, 0, 0, 0, 0, 1, 0,
1318 0, 1, 0, 0, 0, 0, 1, 0,
1319 0, 1, 0, 0, 0, 0, 1, 0,
1320 0, 1, 0, 0, 0, 0, 1, 0,
1321 0, 1, 1, 1, 1, 1, 1, 0,
1322 0, 1, 0, 0, 0, 0, 1, 0,
1323 0, 1, 0, 0, 0, 0, 1, 0,
1324 0, 1, 0, 0, 0, 0, 1, 0,
1325 0, 1, 0, 0, 0, 0, 1, 0,
1326 0, 1, 0, 0, 0, 0, 1, 0,
1327 0, 0, 0, 0, 0, 0, 0, 0,
1328 0, 0, 0, 0, 0, 0, 0, 0,
1329 0, 0, 0, 0, 0, 0, 0, 0,
1330
1331 /* Char 73 */
1332 0, 0, 0, 0, 0, 0, 0, 0,
1333 0, 0, 0, 0, 0, 0, 0, 0,
1334 0, 0, 0, 0, 0, 0, 0, 0,
1335 0, 1, 1, 1, 1, 1, 0, 0,
1336 0, 0, 0, 1, 0, 0, 0, 0,
1337 0, 0, 0, 1, 0, 0, 0, 0,
1338 0, 0, 0, 1, 0, 0, 0, 0,
1339 0, 0, 0, 1, 0, 0, 0, 0,
1340 0, 0, 0, 1, 0, 0, 0, 0,
1341 0, 0, 0, 1, 0, 0, 0, 0,
1342 0, 0, 0, 1, 0, 0, 0, 0,
1343 0, 0, 0, 1, 0, 0, 0, 0,
1344 0, 1, 1, 1, 1, 1, 0, 0,
1345 0, 0, 0, 0, 0, 0, 0, 0,
1346 0, 0, 0, 0, 0, 0, 0, 0,
1347 0, 0, 0, 0, 0, 0, 0, 0,
1348
1349 /* Char 74 */
1350 0, 0, 0, 0, 0, 0, 0, 0,
1351 0, 0, 0, 0, 0, 0, 0, 0,
1352 0, 0, 0, 0, 0, 0, 0, 0,
1353 0, 0, 0, 0, 1, 1, 1, 0,
1354 0, 0, 0, 0, 0, 1, 0, 0,
1355 0, 0, 0, 0, 0, 1, 0, 0,
1356 0, 0, 0, 0, 0, 1, 0, 0,
1357 0, 0, 0, 0, 0, 1, 0, 0,
1358 0, 0, 0, 0, 0, 1, 0, 0,
1359 0, 0, 0, 0, 0, 1, 0, 0,
1360 0, 1, 0, 0, 0, 1, 0, 0,
1361 0, 1, 0, 0, 0, 1, 0, 0,
1362 0, 0, 1, 1, 1, 0, 0, 0,
1363 0, 0, 0, 0, 0, 0, 0, 0,
1364 0, 0, 0, 0, 0, 0, 0, 0,
1365 0, 0, 0, 0, 0, 0, 0, 0,
1366
1367 /* Char 75 */
1368 0, 0, 0, 0, 0, 0, 0, 0,
1369 0, 0, 0, 0, 0, 0, 0, 0,
1370 0, 0, 0, 0, 0, 0, 0, 0,
1371 0, 1, 0, 0, 0, 0, 1, 0,
1372 0, 1, 0, 0, 0, 1, 0, 0,
1373 0, 1, 0, 0, 1, 0, 0, 0,
1374 0, 1, 0, 1, 0, 0, 0, 0,
1375 0, 1, 1, 0, 0, 0, 0, 0,
1376 0, 1, 1, 0, 0, 0, 0, 0,
1377 0, 1, 0, 1, 0, 0, 0, 0,
1378 0, 1, 0, 0, 1, 0, 0, 0,
1379 0, 1, 0, 0, 0, 1, 0, 0,
1380 0, 1, 0, 0, 0, 0, 1, 0,
1381 0, 0, 0, 0, 0, 0, 0, 0,
1382 0, 0, 0, 0, 0, 0, 0, 0,
1383 0, 0, 0, 0, 0, 0, 0, 0,
1384
1385 /* Char 76 */
1386 0, 0, 0, 0, 0, 0, 0, 0,
1387 0, 0, 0, 0, 0, 0, 0, 0,
1388 0, 0, 0, 0, 0, 0, 0, 0,
1389 0, 1, 0, 0, 0, 0, 0, 0,
1390 0, 1, 0, 0, 0, 0, 0, 0,
1391 0, 1, 0, 0, 0, 0, 0, 0,
1392 0, 1, 0, 0, 0, 0, 0, 0,
1393 0, 1, 0, 0, 0, 0, 0, 0,
1394 0, 1, 0, 0, 0, 0, 0, 0,
1395 0, 1, 0, 0, 0, 0, 0, 0,
1396 0, 1, 0, 0, 0, 0, 0, 0,
1397 0, 1, 0, 0, 0, 0, 0, 0,
1398 0, 1, 1, 1, 1, 1, 1, 0,
1399 0, 0, 0, 0, 0, 0, 0, 0,
1400 0, 0, 0, 0, 0, 0, 0, 0,
1401 0, 0, 0, 0, 0, 0, 0, 0,
1402
1403 /* Char 77 */
1404 0, 0, 0, 0, 0, 0, 0, 0,
1405 0, 0, 0, 0, 0, 0, 0, 0,
1406 0, 0, 0, 0, 0, 0, 0, 0,
1407 1, 0, 0, 0, 0, 0, 1, 0,
1408 1, 1, 0, 0, 0, 1, 1, 0,
1409 1, 1, 0, 0, 0, 1, 1, 0,
1410 1, 0, 1, 0, 1, 0, 1, 0,
1411 1, 0, 1, 0, 1, 0, 1, 0,
1412 1, 0, 0, 1, 0, 0, 1, 0,
1413 1, 0, 0, 1, 0, 0, 1, 0,
1414 1, 0, 0, 0, 0, 0, 1, 0,
1415 1, 0, 0, 0, 0, 0, 1, 0,
1416 1, 0, 0, 0, 0, 0, 1, 0,
1417 0, 0, 0, 0, 0, 0, 0, 0,
1418 0, 0, 0, 0, 0, 0, 0, 0,
1419 0, 0, 0, 0, 0, 0, 0, 0,
1420
1421 /* Char 78 */
1422 0, 0, 0, 0, 0, 0, 0, 0,
1423 0, 0, 0, 0, 0, 0, 0, 0,
1424 0, 0, 0, 0, 0, 0, 0, 0,
1425 0, 1, 0, 0, 0, 0, 1, 0,
1426 0, 1, 1, 0, 0, 0, 1, 0,
1427 0, 1, 1, 0, 0, 0, 1, 0,
1428 0, 1, 0, 1, 0, 0, 1, 0,
1429 0, 1, 0, 1, 0, 0, 1, 0,
1430 0, 1, 0, 0, 1, 0, 1, 0,
1431 0, 1, 0, 0, 1, 0, 1, 0,
1432 0, 1, 0, 0, 0, 1, 1, 0,
1433 0, 1, 0, 0, 0, 1, 1, 0,
1434 0, 1, 0, 0, 0, 0, 1, 0,
1435 0, 0, 0, 0, 0, 0, 0, 0,
1436 0, 0, 0, 0, 0, 0, 0, 0,
1437 0, 0, 0, 0, 0, 0, 0, 0,
1438
1439 /* Char 79 */
1440 0, 0, 0, 0, 0, 0, 0, 0,
1441 0, 0, 0, 0, 0, 0, 0, 0,
1442 0, 0, 0, 0, 0, 0, 0, 0,
1443 0, 0, 1, 1, 1, 1, 0, 0,
1444 0, 1, 0, 0, 0, 0, 1, 0,
1445 0, 1, 0, 0, 0, 0, 1, 0,
1446 0, 1, 0, 0, 0, 0, 1, 0,
1447 0, 1, 0, 0, 0, 0, 1, 0,
1448 0, 1, 0, 0, 0, 0, 1, 0,
1449 0, 1, 0, 0, 0, 0, 1, 0,
1450 0, 1, 0, 0, 0, 0, 1, 0,
1451 0, 1, 0, 0, 0, 0, 1, 0,
1452 0, 0, 1, 1, 1, 1, 0, 0,
1453 0, 0, 0, 0, 0, 0, 0, 0,
1454 0, 0, 0, 0, 0, 0, 0, 0,
1455 0, 0, 0, 0, 0, 0, 0, 0,
1456
1457 /* Char 80 */
1458 0, 0, 0, 0, 0, 0, 0, 0,
1459 0, 0, 0, 0, 0, 0, 0, 0,
1460 0, 0, 0, 0, 0, 0, 0, 0,
1461 0, 1, 1, 1, 1, 1, 0, 0,
1462 0, 1, 0, 0, 0, 0, 1, 0,
1463 0, 1, 0, 0, 0, 0, 1, 0,
1464 0, 1, 0, 0, 0, 0, 1, 0,
1465 0, 1, 1, 1, 1, 1, 0, 0,
1466 0, 1, 0, 0, 0, 0, 0, 0,
1467 0, 1, 0, 0, 0, 0, 0, 0,
1468 0, 1, 0, 0, 0, 0, 0, 0,
1469 0, 1, 0, 0, 0, 0, 0, 0,
1470 0, 1, 0, 0, 0, 0, 0, 0,
1471 0, 0, 0, 0, 0, 0, 0, 0,
1472 0, 0, 0, 0, 0, 0, 0, 0,
1473 0, 0, 0, 0, 0, 0, 0, 0,
1474
1475 /* Char 81 */
1476 0, 0, 0, 0, 0, 0, 0, 0,
1477 0, 0, 0, 0, 0, 0, 0, 0,
1478 0, 0, 0, 0, 0, 0, 0, 0,
1479 0, 0, 1, 1, 1, 1, 0, 0,
1480 0, 1, 0, 0, 0, 0, 1, 0,
1481 0, 1, 0, 0, 0, 0, 1, 0,
1482 0, 1, 0, 0, 0, 0, 1, 0,
1483 0, 1, 0, 0, 0, 0, 1, 0,
1484 0, 1, 0, 0, 0, 0, 1, 0,
1485 0, 1, 0, 0, 0, 0, 1, 0,
1486 0, 1, 0, 1, 1, 0, 1, 0,
1487 0, 1, 1, 0, 0, 1, 1, 0,
1488 0, 0, 1, 1, 1, 1, 0, 0,
1489 0, 0, 0, 0, 0, 0, 1, 1,
1490 0, 0, 0, 0, 0, 0, 0, 0,
1491 0, 0, 0, 0, 0, 0, 0, 0,
1492
1493 /* Char 82 */
1494 0, 0, 0, 0, 0, 0, 0, 0,
1495 0, 0, 0, 0, 0, 0, 0, 0,
1496 0, 0, 0, 0, 0, 0, 0, 0,
1497 0, 1, 1, 1, 1, 1, 0, 0,
1498 0, 1, 0, 0, 0, 0, 1, 0,
1499 0, 1, 0, 0, 0, 0, 1, 0,
1500 0, 1, 0, 0, 0, 0, 1, 0,
1501 0, 1, 1, 1, 1, 1, 0, 0,
1502 0, 1, 0, 0, 1, 0, 0, 0,
1503 0, 1, 0, 0, 0, 1, 0, 0,
1504 0, 1, 0, 0, 0, 1, 0, 0,
1505 0, 1, 0, 0, 0, 0, 1, 0,
1506 0, 1, 0, 0, 0, 0, 1, 0,
1507 0, 0, 0, 0, 0, 0, 0, 0,
1508 0, 0, 0, 0, 0, 0, 0, 0,
1509 0, 0, 0, 0, 0, 0, 0, 0,
1510
1511 /* Char 83 */
1512 0, 0, 0, 0, 0, 0, 0, 0,
1513 0, 0, 0, 0, 0, 0, 0, 0,
1514 0, 0, 0, 0, 0, 0, 0, 0,
1515 0, 0, 1, 1, 1, 1, 0, 0,
1516 0, 1, 0, 0, 0, 0, 1, 0,
1517 0, 1, 0, 0, 0, 0, 1, 0,
1518 0, 1, 0, 0, 0, 0, 0, 0,
1519 0, 0, 1, 1, 0, 0, 0, 0,
1520 0, 0, 0, 0, 1, 1, 0, 0,
1521 0, 0, 0, 0, 0, 0, 1, 0,
1522 0, 1, 0, 0, 0, 0, 1, 0,
1523 0, 1, 0, 0, 0, 0, 1, 0,
1524 0, 0, 1, 1, 1, 1, 0, 0,
1525 0, 0, 0, 0, 0, 0, 0, 0,
1526 0, 0, 0, 0, 0, 0, 0, 0,
1527 0, 0, 0, 0, 0, 0, 0, 0,
1528
1529 /* Char 84 */
1530 0, 0, 0, 0, 0, 0, 0, 0,
1531 0, 0, 0, 0, 0, 0, 0, 0,
1532 0, 0, 0, 0, 0, 0, 0, 0,
1533 1, 1, 1, 1, 1, 1, 1, 0,
1534 0, 0, 0, 1, 0, 0, 0, 0,
1535 0, 0, 0, 1, 0, 0, 0, 0,
1536 0, 0, 0, 1, 0, 0, 0, 0,
1537 0, 0, 0, 1, 0, 0, 0, 0,
1538 0, 0, 0, 1, 0, 0, 0, 0,
1539 0, 0, 0, 1, 0, 0, 0, 0,
1540 0, 0, 0, 1, 0, 0, 0, 0,
1541 0, 0, 0, 1, 0, 0, 0, 0,
1542 0, 0, 0, 1, 0, 0, 0, 0,
1543 0, 0, 0, 0, 0, 0, 0, 0,
1544 0, 0, 0, 0, 0, 0, 0, 0,
1545 0, 0, 0, 0, 0, 0, 0, 0,
1546
1547 /* Char 85 */
1548 0, 0, 0, 0, 0, 0, 0, 0,
1549 0, 0, 0, 0, 0, 0, 0, 0,
1550 0, 0, 0, 0, 0, 0, 0, 0,
1551 0, 1, 0, 0, 0, 0, 1, 0,
1552 0, 1, 0, 0, 0, 0, 1, 0,
1553 0, 1, 0, 0, 0, 0, 1, 0,
1554 0, 1, 0, 0, 0, 0, 1, 0,
1555 0, 1, 0, 0, 0, 0, 1, 0,
1556 0, 1, 0, 0, 0, 0, 1, 0,
1557 0, 1, 0, 0, 0, 0, 1, 0,
1558 0, 1, 0, 0, 0, 0, 1, 0,
1559 0, 1, 0, 0, 0, 0, 1, 0,
1560 0, 0, 1, 1, 1, 1, 0, 0,
1561 0, 0, 0, 0, 0, 0, 0, 0,
1562 0, 0, 0, 0, 0, 0, 0, 0,
1563 0, 0, 0, 0, 0, 0, 0, 0,
1564
1565 /* Char 86 */
1566 0, 0, 0, 0, 0, 0, 0, 0,
1567 0, 0, 0, 0, 0, 0, 0, 0,
1568 0, 0, 0, 0, 0, 0, 0, 0,
1569 1, 0, 0, 0, 0, 0, 1, 0,
1570 1, 0, 0, 0, 0, 0, 1, 0,
1571 1, 0, 0, 0, 0, 0, 1, 0,
1572 0, 1, 0, 0, 0, 1, 0, 0,
1573 0, 1, 0, 0, 0, 1, 0, 0,
1574 0, 1, 0, 0, 0, 1, 0, 0,
1575 0, 0, 1, 0, 1, 0, 0, 0,
1576 0, 0, 1, 0, 1, 0, 0, 0,
1577 0, 0, 0, 1, 0, 0, 0, 0,
1578 0, 0, 0, 1, 0, 0, 0, 0,
1579 0, 0, 0, 0, 0, 0, 0, 0,
1580 0, 0, 0, 0, 0, 0, 0, 0,
1581 0, 0, 0, 0, 0, 0, 0, 0,
1582
1583 /* Char 87 */
1584 0, 0, 0, 0, 0, 0, 0, 0,
1585 0, 0, 0, 0, 0, 0, 0, 0,
1586 0, 0, 0, 0, 0, 0, 0, 0,
1587 1, 0, 0, 0, 0, 0, 1, 0,
1588 1, 0, 0, 0, 0, 0, 1, 0,
1589 1, 0, 0, 0, 0, 0, 1, 0,
1590 1, 0, 0, 1, 0, 0, 1, 0,
1591 1, 0, 0, 1, 0, 0, 1, 0,
1592 1, 0, 0, 1, 0, 0, 1, 0,
1593 1, 0, 0, 1, 0, 0, 1, 0,
1594 1, 0, 1, 0, 1, 0, 1, 0,
1595 1, 0, 1, 0, 1, 0, 1, 0,
1596 0, 1, 0, 0, 0, 1, 0, 0,
1597 0, 0, 0, 0, 0, 0, 0, 0,
1598 0, 0, 0, 0, 0, 0, 0, 0,
1599 0, 0, 0, 0, 0, 0, 0, 0,
1600
1601 /* Char 88 */
1602 0, 0, 0, 0, 0, 0, 0, 0,
1603 0, 0, 0, 0, 0, 0, 0, 0,
1604 0, 0, 0, 0, 0, 0, 0, 0,
1605 0, 1, 0, 0, 0, 0, 1, 0,
1606 0, 1, 0, 0, 0, 0, 1, 0,
1607 0, 0, 1, 0, 0, 1, 0, 0,
1608 0, 0, 1, 0, 0, 1, 0, 0,
1609 0, 0, 0, 1, 1, 0, 0, 0,
1610 0, 0, 0, 1, 1, 0, 0, 0,
1611 0, 0, 1, 0, 0, 1, 0, 0,
1612 0, 0, 1, 0, 0, 1, 0, 0,
1613 0, 1, 0, 0, 0, 0, 1, 0,
1614 0, 1, 0, 0, 0, 0, 1, 0,
1615 0, 0, 0, 0, 0, 0, 0, 0,
1616 0, 0, 0, 0, 0, 0, 0, 0,
1617 0, 0, 0, 0, 0, 0, 0, 0,
1618
1619 /* Char 89 */
1620 0, 0, 0, 0, 0, 0, 0, 0,
1621 0, 0, 0, 0, 0, 0, 0, 0,
1622 0, 0, 0, 0, 0, 0, 0, 0,
1623 1, 0, 0, 0, 0, 0, 1, 0,
1624 1, 0, 0, 0, 0, 0, 1, 0,
1625 0, 1, 0, 0, 0, 1, 0, 0,
1626 0, 1, 0, 0, 0, 1, 0, 0,
1627 0, 0, 1, 0, 1, 0, 0, 0,
1628 0, 0, 0, 1, 0, 0, 0, 0,
1629 0, 0, 0, 1, 0, 0, 0, 0,
1630 0, 0, 0, 1, 0, 0, 0, 0,
1631 0, 0, 0, 1, 0, 0, 0, 0,
1632 0, 0, 0, 1, 0, 0, 0, 0,
1633 0, 0, 0, 0, 0, 0, 0, 0,
1634 0, 0, 0, 0, 0, 0, 0, 0,
1635 0, 0, 0, 0, 0, 0, 0, 0,
1636
1637 /* Char 90 */
1638 0, 0, 0, 0, 0, 0, 0, 0,
1639 0, 0, 0, 0, 0, 0, 0, 0,
1640 0, 0, 0, 0, 0, 0, 0, 0,
1641 0, 1, 1, 1, 1, 1, 1, 0,
1642 0, 0, 0, 0, 0, 0, 1, 0,
1643 0, 0, 0, 0, 0, 0, 1, 0,
1644 0, 0, 0, 0, 0, 1, 0, 0,
1645 0, 0, 0, 0, 1, 0, 0, 0,
1646 0, 0, 0, 1, 0, 0, 0, 0,
1647 0, 0, 1, 0, 0, 0, 0, 0,
1648 0, 1, 0, 0, 0, 0, 0, 0,
1649 0, 1, 0, 0, 0, 0, 0, 0,
1650 0, 1, 1, 1, 1, 1, 1, 0,
1651 0, 0, 0, 0, 0, 0, 0, 0,
1652 0, 0, 0, 0, 0, 0, 0, 0,
1653 0, 0, 0, 0, 0, 0, 0, 0,
1654
1655 /* Char 91 */
1656 0, 0, 0, 0, 0, 0, 0, 0,
1657 0, 0, 0, 0, 0, 0, 0, 0,
1658 0, 0, 0, 1, 1, 1, 0, 0,
1659 0, 0, 0, 1, 0, 0, 0, 0,
1660 0, 0, 0, 1, 0, 0, 0, 0,
1661 0, 0, 0, 1, 0, 0, 0, 0,
1662 0, 0, 0, 1, 0, 0, 0, 0,
1663 0, 0, 0, 1, 0, 0, 0, 0,
1664 0, 0, 0, 1, 0, 0, 0, 0,
1665 0, 0, 0, 1, 0, 0, 0, 0,
1666 0, 0, 0, 1, 0, 0, 0, 0,
1667 0, 0, 0, 1, 0, 0, 0, 0,
1668 0, 0, 0, 1, 0, 0, 0, 0,
1669 0, 0, 0, 1, 1, 1, 0, 0,
1670 0, 0, 0, 0, 0, 0, 0, 0,
1671 0, 0, 0, 0, 0, 0, 0, 0,
1672
1673 /* Char 92 */
1674 0, 0, 0, 0, 0, 0, 0, 0,
1675 0, 0, 0, 0, 0, 0, 0, 0,
1676 0, 0, 0, 0, 0, 0, 0, 0,
1677 0, 1, 0, 0, 0, 0, 0, 0,
1678 0, 1, 0, 0, 0, 0, 0, 0,
1679 0, 0, 1, 0, 0, 0, 0, 0,
1680 0, 0, 0, 1, 0, 0, 0, 0,
1681 0, 0, 0, 1, 0, 0, 0, 0,
1682 0, 0, 0, 0, 1, 0, 0, 0,
1683 0, 0, 0, 0, 1, 0, 0, 0,
1684 0, 0, 0, 0, 0, 1, 0, 0,
1685 0, 0, 0, 0, 0, 0, 1, 0,
1686 0, 0, 0, 0, 0, 0, 1, 0,
1687 0, 0, 0, 0, 0, 0, 0, 0,
1688 0, 0, 0, 0, 0, 0, 0, 0,
1689 0, 0, 0, 0, 0, 0, 0, 0,
1690
1691 /* Char 93 */
1692 0, 0, 0, 0, 0, 0, 0, 0,
1693 0, 0, 0, 0, 0, 0, 0, 0,
1694 0, 1, 1, 1, 0, 0, 0, 0,
1695 0, 0, 0, 1, 0, 0, 0, 0,
1696 0, 0, 0, 1, 0, 0, 0, 0,
1697 0, 0, 0, 1, 0, 0, 0, 0,
1698 0, 0, 0, 1, 0, 0, 0, 0,
1699 0, 0, 0, 1, 0, 0, 0, 0,
1700 0, 0, 0, 1, 0, 0, 0, 0,
1701 0, 0, 0, 1, 0, 0, 0, 0,
1702 0, 0, 0, 1, 0, 0, 0, 0,
1703 0, 0, 0, 1, 0, 0, 0, 0,
1704 0, 0, 0, 1, 0, 0, 0, 0,
1705 0, 1, 1, 1, 0, 0, 0, 0,
1706 0, 0, 0, 0, 0, 0, 0, 0,
1707 0, 0, 0, 0, 0, 0, 0, 0,
1708
1709 /* Char 94 */
1710 0, 0, 0, 0, 0, 0, 0, 0,
1711 0, 0, 0, 1, 1, 0, 0, 0,
1712 0, 0, 1, 0, 0, 1, 0, 0,
1713 0, 1, 0, 0, 0, 0, 1, 0,
1714 0, 0, 0, 0, 0, 0, 0, 0,
1715 0, 0, 0, 0, 0, 0, 0, 0,
1716 0, 0, 0, 0, 0, 0, 0, 0,
1717 0, 0, 0, 0, 0, 0, 0, 0,
1718 0, 0, 0, 0, 0, 0, 0, 0,
1719 0, 0, 0, 0, 0, 0, 0, 0,
1720 0, 0, 0, 0, 0, 0, 0, 0,
1721 0, 0, 0, 0, 0, 0, 0, 0,
1722 0, 0, 0, 0, 0, 0, 0, 0,
1723 0, 0, 0, 0, 0, 0, 0, 0,
1724 0, 0, 0, 0, 0, 0, 0, 0,
1725 0, 0, 0, 0, 0, 0, 0, 0,
1726
1727 /* Char 95 */
1728 0, 0, 0, 0, 0, 0, 0, 0,
1729 0, 0, 0, 0, 0, 0, 0, 0,
1730 0, 0, 0, 0, 0, 0, 0, 0,
1731 0, 0, 0, 0, 0, 0, 0, 0,
1732 0, 0, 0, 0, 0, 0, 0, 0,
1733 0, 0, 0, 0, 0, 0, 0, 0,
1734 0, 0, 0, 0, 0, 0, 0, 0,
1735 0, 0, 0, 0, 0, 0, 0, 0,
1736 0, 0, 0, 0, 0, 0, 0, 0,
1737 0, 0, 0, 0, 0, 0, 0, 0,
1738 0, 0, 0, 0, 0, 0, 0, 0,
1739 0, 0, 0, 0, 0, 0, 0, 0,
1740 0, 0, 0, 0, 0, 0, 0, 0,
1741 0, 0, 0, 0, 0, 0, 0, 0,
1742 1, 1, 1, 1, 1, 1, 1, 0,
1743 0, 0, 0, 0, 0, 0, 0, 0,
1744
1745 /* Char 96 */
1746 0, 0, 0, 0, 0, 0, 0, 0,
1747 0, 0, 0, 1, 1, 0, 0, 0,
1748 0, 0, 0, 1, 0, 0, 0, 0,
1749 0, 0, 0, 1, 0, 0, 0, 0,
1750 0, 0, 0, 0, 1, 0, 0, 0,
1751 0, 0, 0, 0, 0, 0, 0, 0,
1752 0, 0, 0, 0, 0, 0, 0, 0,
1753 0, 0, 0, 0, 0, 0, 0, 0,
1754 0, 0, 0, 0, 0, 0, 0, 0,
1755 0, 0, 0, 0, 0, 0, 0, 0,
1756 0, 0, 0, 0, 0, 0, 0, 0,
1757 0, 0, 0, 0, 0, 0, 0, 0,
1758 0, 0, 0, 0, 0, 0, 0, 0,
1759 0, 0, 0, 0, 0, 0, 0, 0,
1760 0, 0, 0, 0, 0, 0, 0, 0,
1761 0, 0, 0, 0, 0, 0, 0, 0,
1762
1763 /* Char 97 */
1764 0, 0, 0, 0, 0, 0, 0, 0,
1765 0, 0, 0, 0, 0, 0, 0, 0,
1766 0, 0, 0, 0, 0, 0, 0, 0,
1767 0, 0, 0, 0, 0, 0, 0, 0,
1768 0, 0, 0, 0, 0, 0, 0, 0,
1769 0, 0, 0, 0, 0, 0, 0, 0,
1770 0, 0, 1, 1, 1, 1, 0, 0,
1771 0, 1, 0, 0, 0, 0, 1, 0,
1772 0, 0, 0, 0, 1, 1, 1, 0,
1773 0, 0, 1, 1, 0, 0, 1, 0,
1774 0, 1, 0, 0, 0, 0, 1, 0,
1775 0, 1, 0, 0, 0, 1, 1, 0,
1776 0, 0, 1, 1, 1, 0, 1, 0,
1777 0, 0, 0, 0, 0, 0, 0, 0,
1778 0, 0, 0, 0, 0, 0, 0, 0,
1779 0, 0, 0, 0, 0, 0, 0, 0,
1780
1781 /* Char 98 */
1782 0, 0, 0, 0, 0, 0, 0, 0,
1783 0, 0, 0, 0, 0, 0, 0, 0,
1784 0, 0, 0, 0, 0, 0, 0, 0,
1785 0, 1, 0, 0, 0, 0, 0, 0,
1786 0, 1, 0, 0, 0, 0, 0, 0,
1787 0, 1, 0, 0, 0, 0, 0, 0,
1788 0, 1, 0, 1, 1, 1, 0, 0,
1789 0, 1, 1, 0, 0, 0, 1, 0,
1790 0, 1, 0, 0, 0, 0, 1, 0,
1791 0, 1, 0, 0, 0, 0, 1, 0,
1792 0, 1, 0, 0, 0, 0, 1, 0,
1793 0, 1, 1, 0, 0, 0, 1, 0,
1794 0, 1, 0, 1, 1, 1, 0, 0,
1795 0, 0, 0, 0, 0, 0, 0, 0,
1796 0, 0, 0, 0, 0, 0, 0, 0,
1797 0, 0, 0, 0, 0, 0, 0, 0,
1798
1799 /* Char 99 */
1800 0, 0, 0, 0, 0, 0, 0, 0,
1801 0, 0, 0, 0, 0, 0, 0, 0,
1802 0, 0, 0, 0, 0, 0, 0, 0,
1803 0, 0, 0, 0, 0, 0, 0, 0,
1804 0, 0, 0, 0, 0, 0, 0, 0,
1805 0, 0, 0, 0, 0, 0, 0, 0,
1806 0, 0, 1, 1, 1, 1, 0, 0,
1807 0, 1, 0, 0, 0, 0, 1, 0,
1808 0, 1, 0, 0, 0, 0, 0, 0,
1809 0, 1, 0, 0, 0, 0, 0, 0,
1810 0, 1, 0, 0, 0, 0, 0, 0,
1811 0, 1, 0, 0, 0, 0, 1, 0,
1812 0, 0, 1, 1, 1, 1, 0, 0,
1813 0, 0, 0, 0, 0, 0, 0, 0,
1814 0, 0, 0, 0, 0, 0, 0, 0,
1815 0, 0, 0, 0, 0, 0, 0, 0,
1816
1817 /* Char 100 */
1818 0, 0, 0, 0, 0, 0, 0, 0,
1819 0, 0, 0, 0, 0, 0, 0, 0,
1820 0, 0, 0, 0, 0, 0, 0, 0,
1821 0, 0, 0, 0, 0, 0, 1, 0,
1822 0, 0, 0, 0, 0, 0, 1, 0,
1823 0, 0, 0, 0, 0, 0, 1, 0,
1824 0, 0, 1, 1, 1, 0, 1, 0,
1825 0, 1, 0, 0, 0, 1, 1, 0,
1826 0, 1, 0, 0, 0, 0, 1, 0,
1827 0, 1, 0, 0, 0, 0, 1, 0,
1828 0, 1, 0, 0, 0, 0, 1, 0,
1829 0, 1, 0, 0, 0, 1, 1, 0,
1830 0, 0, 1, 1, 1, 0, 1, 0,
1831 0, 0, 0, 0, 0, 0, 0, 0,
1832 0, 0, 0, 0, 0, 0, 0, 0,
1833 0, 0, 0, 0, 0, 0, 0, 0,
1834
1835 /* Char 101 */
1836 0, 0, 0, 0, 0, 0, 0, 0,
1837 0, 0, 0, 0, 0, 0, 0, 0,
1838 0, 0, 0, 0, 0, 0, 0, 0,
1839 0, 0, 0, 0, 0, 0, 0, 0,
1840 0, 0, 0, 0, 0, 0, 0, 0,
1841 0, 0, 0, 0, 0, 0, 0, 0,
1842 0, 0, 1, 1, 1, 1, 0, 0,
1843 0, 1, 0, 0, 0, 0, 1, 0,
1844 0, 1, 0, 0, 0, 0, 1, 0,
1845 0, 1, 1, 1, 1, 1, 1, 0,
1846 0, 1, 0, 0, 0, 0, 0, 0,
1847 0, 1, 0, 0, 0, 0, 0, 0,
1848 0, 0, 1, 1, 1, 1, 0, 0,
1849 0, 0, 0, 0, 0, 0, 0, 0,
1850 0, 0, 0, 0, 0, 0, 0, 0,
1851 0, 0, 0, 0, 0, 0, 0, 0,
1852
1853 /* Char 102 */
1854 0, 0, 0, 0, 0, 0, 0, 0,
1855 0, 0, 0, 0, 0, 0, 0, 0,
1856 0, 0, 0, 0, 0, 0, 0, 0,
1857 0, 0, 0, 1, 1, 1, 0, 0,
1858 0, 0, 1, 0, 0, 0, 1, 0,
1859 0, 0, 1, 0, 0, 0, 0, 0,
1860 0, 0, 1, 0, 0, 0, 0, 0,
1861 0, 1, 1, 1, 1, 1, 0, 0,
1862 0, 0, 1, 0, 0, 0, 0, 0,
1863 0, 0, 1, 0, 0, 0, 0, 0,
1864 0, 0, 1, 0, 0, 0, 0, 0,
1865 0, 0, 1, 0, 0, 0, 0, 0,
1866 0, 0, 1, 0, 0, 0, 0, 0,
1867 0, 0, 0, 0, 0, 0, 0, 0,
1868 0, 0, 0, 0, 0, 0, 0, 0,
1869 0, 0, 0, 0, 0, 0, 0, 0,
1870
1871 /* Char 103 */
1872 0, 0, 0, 0, 0, 0, 0, 0,
1873 0, 0, 0, 0, 0, 0, 0, 0,
1874 0, 0, 0, 0, 0, 0, 0, 0,
1875 0, 0, 0, 0, 0, 0, 0, 0,
1876 0, 0, 0, 0, 0, 0, 0, 0,
1877 0, 0, 0, 0, 0, 0, 1, 0,
1878 0, 0, 1, 1, 1, 0, 1, 0,
1879 0, 1, 0, 0, 0, 1, 0, 0,
1880 0, 1, 0, 0, 0, 1, 0, 0,
1881 0, 1, 0, 0, 0, 1, 0, 0,
1882 0, 0, 1, 1, 1, 0, 0, 0,
1883 0, 0, 1, 0, 0, 0, 0, 0,
1884 0, 0, 1, 1, 1, 1, 0, 0,
1885 0, 1, 0, 0, 0, 0, 1, 0,
1886 0, 1, 0, 0, 0, 0, 1, 0,
1887 0, 0, 1, 1, 1, 1, 0, 0,
1888
1889 /* Char 104 */
1890 0, 0, 0, 0, 0, 0, 0, 0,
1891 0, 0, 0, 0, 0, 0, 0, 0,
1892 0, 0, 0, 0, 0, 0, 0, 0,
1893 0, 1, 0, 0, 0, 0, 0, 0,
1894 0, 1, 0, 0, 0, 0, 0, 0,
1895 0, 1, 0, 0, 0, 0, 0, 0,
1896 0, 1, 0, 1, 1, 1, 0, 0,
1897 0, 1, 1, 0, 0, 0, 1, 0,
1898 0, 1, 0, 0, 0, 0, 1, 0,
1899 0, 1, 0, 0, 0, 0, 1, 0,
1900 0, 1, 0, 0, 0, 0, 1, 0,
1901 0, 1, 0, 0, 0, 0, 1, 0,
1902 0, 1, 0, 0, 0, 0, 1, 0,
1903 0, 0, 0, 0, 0, 0, 0, 0,
1904 0, 0, 0, 0, 0, 0, 0, 0,
1905 0, 0, 0, 0, 0, 0, 0, 0,
1906
1907 /* Char 105 */
1908 0, 0, 0, 0, 0, 0, 0, 0,
1909 0, 0, 0, 0, 0, 0, 0, 0,
1910 0, 0, 0, 0, 0, 0, 0, 0,
1911 0, 0, 0, 1, 0, 0, 0, 0,
1912 0, 0, 0, 1, 0, 0, 0, 0,
1913 0, 0, 0, 0, 0, 0, 0, 0,
1914 0, 0, 1, 1, 0, 0, 0, 0,
1915 0, 0, 0, 1, 0, 0, 0, 0,
1916 0, 0, 0, 1, 0, 0, 0, 0,
1917 0, 0, 0, 1, 0, 0, 0, 0,
1918 0, 0, 0, 1, 0, 0, 0, 0,
1919 0, 0, 0, 1, 0, 0, 0, 0,
1920 0, 1, 1, 1, 1, 1, 0, 0,
1921 0, 0, 0, 0, 0, 0, 0, 0,
1922 0, 0, 0, 0, 0, 0, 0, 0,
1923 0, 0, 0, 0, 0, 0, 0, 0,
1924
1925 /* Char 106 */
1926 0, 0, 0, 0, 0, 0, 0, 0,
1927 0, 0, 0, 0, 0, 0, 0, 0,
1928 0, 0, 0, 0, 0, 0, 0, 0,
1929 0, 0, 0, 0, 0, 1, 0, 0,
1930 0, 0, 0, 0, 0, 1, 0, 0,
1931 0, 0, 0, 0, 0, 0, 0, 0,
1932 0, 0, 0, 0, 1, 1, 0, 0,
1933 0, 0, 0, 0, 0, 1, 0, 0,
1934 0, 0, 0, 0, 0, 1, 0, 0,
1935 0, 0, 0, 0, 0, 1, 0, 0,
1936 0, 0, 0, 0, 0, 1, 0, 0,
1937 0, 0, 0, 0, 0, 1, 0, 0,
1938 0, 0, 0, 0, 0, 1, 0, 0,
1939 0, 0, 0, 0, 0, 1, 0, 0,
1940 0, 1, 0, 0, 1, 0, 0, 0,
1941 0, 0, 1, 1, 0, 0, 0, 0,
1942
1943 /* Char 107 */
1944 0, 0, 0, 0, 0, 0, 0, 0,
1945 0, 0, 0, 0, 0, 0, 0, 0,
1946 0, 0, 0, 0, 0, 0, 0, 0,
1947 0, 1, 0, 0, 0, 0, 0, 0,
1948 0, 1, 0, 0, 0, 0, 0, 0,
1949 0, 1, 0, 0, 0, 0, 0, 0,
1950 0, 1, 0, 0, 0, 1, 0, 0,
1951 0, 1, 0, 0, 1, 0, 0, 0,
1952 0, 1, 0, 1, 0, 0, 0, 0,
1953 0, 1, 1, 1, 0, 0, 0, 0,
1954 0, 1, 0, 0, 1, 0, 0, 0,
1955 0, 1, 0, 0, 0, 1, 0, 0,
1956 0, 1, 0, 0, 0, 0, 1, 0,
1957 0, 0, 0, 0, 0, 0, 0, 0,
1958 0, 0, 0, 0, 0, 0, 0, 0,
1959 0, 0, 0, 0, 0, 0, 0, 0,
1960
1961 /* Char 108 */
1962 0, 0, 0, 0, 0, 0, 0, 0,
1963 0, 0, 0, 0, 0, 0, 0, 0,
1964 0, 0, 0, 0, 0, 0, 0, 0,
1965 0, 0, 1, 1, 0, 0, 0, 0,
1966 0, 0, 0, 1, 0, 0, 0, 0,
1967 0, 0, 0, 1, 0, 0, 0, 0,
1968 0, 0, 0, 1, 0, 0, 0, 0,
1969 0, 0, 0, 1, 0, 0, 0, 0,
1970 0, 0, 0, 1, 0, 0, 0, 0,
1971 0, 0, 0, 1, 0, 0, 0, 0,
1972 0, 0, 0, 1, 0, 0, 0, 0,
1973 0, 0, 0, 1, 0, 0, 0, 0,
1974 0, 1, 1, 1, 1, 1, 0, 0,
1975 0, 0, 0, 0, 0, 0, 0, 0,
1976 0, 0, 0, 0, 0, 0, 0, 0,
1977 0, 0, 0, 0, 0, 0, 0, 0,
1978
1979 /* Char 109 */
1980 0, 0, 0, 0, 0, 0, 0, 0,
1981 0, 0, 0, 0, 0, 0, 0, 0,
1982 0, 0, 0, 0, 0, 0, 0, 0,
1983 0, 0, 0, 0, 0, 0, 0, 0,
1984 0, 0, 0, 0, 0, 0, 0, 0,
1985 0, 0, 0, 0, 0, 0, 0, 0,
1986 1, 1, 1, 0, 1, 1, 0, 0,
1987 1, 0, 0, 1, 0, 0, 1, 0,
1988 1, 0, 0, 1, 0, 0, 1, 0,
1989 1, 0, 0, 1, 0, 0, 1, 0,
1990 1, 0, 0, 1, 0, 0, 1, 0,
1991 1, 0, 0, 1, 0, 0, 1, 0,
1992 1, 0, 0, 1, 0, 0, 1, 0,
1993 0, 0, 0, 0, 0, 0, 0, 0,
1994 0, 0, 0, 0, 0, 0, 0, 0,
1995 0, 0, 0, 0, 0, 0, 0, 0,
1996
1997 /* Char 110 */
1998 0, 0, 0, 0, 0, 0, 0, 0,
1999 0, 0, 0, 0, 0, 0, 0, 0,
2000 0, 0, 0, 0, 0, 0, 0, 0,
2001 0, 0, 0, 0, 0, 0, 0, 0,
2002 0, 0, 0, 0, 0, 0, 0, 0,
2003 0, 0, 0, 0, 0, 0, 0, 0,
2004 0, 1, 0, 1, 1, 1, 0, 0,
2005 0, 1, 1, 0, 0, 0, 1, 0,
2006 0, 1, 0, 0, 0, 0, 1, 0,
2007 0, 1, 0, 0, 0, 0, 1, 0,
2008 0, 1, 0, 0, 0, 0, 1, 0,
2009 0, 1, 0, 0, 0, 0, 1, 0,
2010 0, 1, 0, 0, 0, 0, 1, 0,
2011 0, 0, 0, 0, 0, 0, 0, 0,
2012 0, 0, 0, 0, 0, 0, 0, 0,
2013 0, 0, 0, 0, 0, 0, 0, 0,
2014
2015 /* Char 111 */
2016 0, 0, 0, 0, 0, 0, 0, 0,
2017 0, 0, 0, 0, 0, 0, 0, 0,
2018 0, 0, 0, 0, 0, 0, 0, 0,
2019 0, 0, 0, 0, 0, 0, 0, 0,
2020 0, 0, 0, 0, 0, 0, 0, 0,
2021 0, 0, 0, 0, 0, 0, 0, 0,
2022 0, 0, 1, 1, 1, 1, 0, 0,
2023 0, 1, 0, 0, 0, 0, 1, 0,
2024 0, 1, 0, 0, 0, 0, 1, 0,
2025 0, 1, 0, 0, 0, 0, 1, 0,
2026 0, 1, 0, 0, 0, 0, 1, 0,
2027 0, 1, 0, 0, 0, 0, 1, 0,
2028 0, 0, 1, 1, 1, 1, 0, 0,
2029 0, 0, 0, 0, 0, 0, 0, 0,
2030 0, 0, 0, 0, 0, 0, 0, 0,
2031 0, 0, 0, 0, 0, 0, 0, 0,
2032
2033 /* Char 112 */
2034 0, 0, 0, 0, 0, 0, 0, 0,
2035 0, 0, 0, 0, 0, 0, 0, 0,
2036 0, 0, 0, 0, 0, 0, 0, 0,
2037 0, 0, 0, 0, 0, 0, 0, 0,
2038 0, 0, 0, 0, 0, 0, 0, 0,
2039 0, 0, 0, 0, 0, 0, 0, 0,
2040 0, 1, 0, 1, 1, 1, 0, 0,
2041 0, 1, 1, 0, 0, 0, 1, 0,
2042 0, 1, 0, 0, 0, 0, 1, 0,
2043 0, 1, 0, 0, 0, 0, 1, 0,
2044 0, 1, 0, 0, 0, 0, 1, 0,
2045 0, 1, 1, 0, 0, 0, 1, 0,
2046 0, 1, 0, 1, 1, 1, 0, 0,
2047 0, 1, 0, 0, 0, 0, 0, 0,
2048 0, 1, 0, 0, 0, 0, 0, 0,
2049 0, 1, 0, 0, 0, 0, 0, 0,
2050
2051 /* Char 113 */
2052 0, 0, 0, 0, 0, 0, 0, 0,
2053 0, 0, 0, 0, 0, 0, 0, 0,
2054 0, 0, 0, 0, 0, 0, 0, 0,
2055 0, 0, 0, 0, 0, 0, 0, 0,
2056 0, 0, 0, 0, 0, 0, 0, 0,
2057 0, 0, 0, 0, 0, 0, 0, 0,
2058 0, 0, 1, 1, 1, 0, 1, 0,
2059 0, 1, 0, 0, 0, 1, 1, 0,
2060 0, 1, 0, 0, 0, 0, 1, 0,
2061 0, 1, 0, 0, 0, 0, 1, 0,
2062 0, 1, 0, 0, 0, 0, 1, 0,
2063 0, 1, 0, 0, 0, 1, 1, 0,
2064 0, 0, 1, 1, 1, 0, 1, 0,
2065 0, 0, 0, 0, 0, 0, 1, 0,
2066 0, 0, 0, 0, 0, 0, 1, 0,
2067 0, 0, 0, 0, 0, 0, 1, 0,
2068
2069 /* Char 114 */
2070 0, 0, 0, 0, 0, 0, 0, 0,
2071 0, 0, 0, 0, 0, 0, 0, 0,
2072 0, 0, 0, 0, 0, 0, 0, 0,
2073 0, 0, 0, 0, 0, 0, 0, 0,
2074 0, 0, 0, 0, 0, 0, 0, 0,
2075 0, 0, 0, 0, 0, 0, 0, 0,
2076 0, 1, 0, 1, 1, 1, 0, 0,
2077 0, 1, 1, 0, 0, 0, 1, 0,
2078 0, 1, 0, 0, 0, 0, 0, 0,
2079 0, 1, 0, 0, 0, 0, 0, 0,
2080 0, 1, 0, 0, 0, 0, 0, 0,
2081 0, 1, 0, 0, 0, 0, 0, 0,
2082 0, 1, 0, 0, 0, 0, 0, 0,
2083 0, 0, 0, 0, 0, 0, 0, 0,
2084 0, 0, 0, 0, 0, 0, 0, 0,
2085 0, 0, 0, 0, 0, 0, 0, 0,
2086
2087 /* Char 115 */
2088 0, 0, 0, 0, 0, 0, 0, 0,
2089 0, 0, 0, 0, 0, 0, 0, 0,
2090 0, 0, 0, 0, 0, 0, 0, 0,
2091 0, 0, 0, 0, 0, 0, 0, 0,
2092 0, 0, 0, 0, 0, 0, 0, 0,
2093 0, 0, 0, 0, 0, 0, 0, 0,
2094 0, 0, 1, 1, 1, 1, 0, 0,
2095 0, 1, 0, 0, 0, 0, 1, 0,
2096 0, 1, 0, 0, 0, 0, 0, 0,
2097 0, 0, 1, 1, 1, 1, 0, 0,
2098 0, 0, 0, 0, 0, 0, 1, 0,
2099 0, 1, 0, 0, 0, 0, 1, 0,
2100 0, 0, 1, 1, 1, 1, 0, 0,
2101 0, 0, 0, 0, 0, 0, 0, 0,
2102 0, 0, 0, 0, 0, 0, 0, 0,
2103 0, 0, 0, 0, 0, 0, 0, 0,
2104
2105 /* Char 116 */
2106 0, 0, 0, 0, 0, 0, 0, 0,
2107 0, 0, 0, 0, 0, 0, 0, 0,
2108 0, 0, 0, 0, 0, 0, 0, 0,
2109 0, 0, 0, 1, 0, 0, 0, 0,
2110 0, 0, 0, 1, 0, 0, 0, 0,
2111 0, 1, 1, 1, 1, 1, 0, 0,
2112 0, 0, 0, 1, 0, 0, 0, 0,
2113 0, 0, 0, 1, 0, 0, 0, 0,
2114 0, 0, 0, 1, 0, 0, 0, 0,
2115 0, 0, 0, 1, 0, 0, 0, 0,
2116 0, 0, 0, 1, 0, 0, 0, 0,
2117 0, 0, 0, 1, 0, 0, 1, 0,
2118 0, 0, 0, 0, 1, 1, 0, 0,
2119 0, 0, 0, 0, 0, 0, 0, 0,
2120 0, 0, 0, 0, 0, 0, 0, 0,
2121 0, 0, 0, 0, 0, 0, 0, 0,
2122
2123 /* Char 117 */
2124 0, 0, 0, 0, 0, 0, 0, 0,
2125 0, 0, 0, 0, 0, 0, 0, 0,
2126 0, 0, 0, 0, 0, 0, 0, 0,
2127 0, 0, 0, 0, 0, 0, 0, 0,
2128 0, 0, 0, 0, 0, 0, 0, 0,
2129 0, 0, 0, 0, 0, 0, 0, 0,
2130 0, 1, 0, 0, 0, 0, 1, 0,
2131 0, 1, 0, 0, 0, 0, 1, 0,
2132 0, 1, 0, 0, 0, 0, 1, 0,
2133 0, 1, 0, 0, 0, 0, 1, 0,
2134 0, 1, 0, 0, 0, 0, 1, 0,
2135 0, 1, 0, 0, 0, 1, 1, 0,
2136 0, 0, 1, 1, 1, 0, 1, 0,
2137 0, 0, 0, 0, 0, 0, 0, 0,
2138 0, 0, 0, 0, 0, 0, 0, 0,
2139 0, 0, 0, 0, 0, 0, 0, 0,
2140
2141 /* Char 118 */
2142 0, 0, 0, 0, 0, 0, 0, 0,
2143 0, 0, 0, 0, 0, 0, 0, 0,
2144 0, 0, 0, 0, 0, 0, 0, 0,
2145 0, 0, 0, 0, 0, 0, 0, 0,
2146 0, 0, 0, 0, 0, 0, 0, 0,
2147 0, 0, 0, 0, 0, 0, 0, 0,
2148 0, 1, 0, 0, 0, 0, 1, 0,
2149 0, 1, 0, 0, 0, 0, 1, 0,
2150 0, 1, 0, 0, 0, 0, 1, 0,
2151 0, 0, 1, 0, 0, 1, 0, 0,
2152 0, 0, 1, 0, 0, 1, 0, 0,
2153 0, 0, 0, 1, 1, 0, 0, 0,
2154 0, 0, 0, 1, 1, 0, 0, 0,
2155 0, 0, 0, 0, 0, 0, 0, 0,
2156 0, 0, 0, 0, 0, 0, 0, 0,
2157 0, 0, 0, 0, 0, 0, 0, 0,
2158
2159 /* Char 119 */
2160 0, 0, 0, 0, 0, 0, 0, 0,
2161 0, 0, 0, 0, 0, 0, 0, 0,
2162 0, 0, 0, 0, 0, 0, 0, 0,
2163 0, 0, 0, 0, 0, 0, 0, 0,
2164 0, 0, 0, 0, 0, 0, 0, 0,
2165 0, 0, 0, 0, 0, 0, 0, 0,
2166 1, 0, 0, 0, 0, 0, 1, 0,
2167 1, 0, 0, 1, 0, 0, 1, 0,
2168 1, 0, 0, 1, 0, 0, 1, 0,
2169 1, 0, 0, 1, 0, 0, 1, 0,
2170 1, 0, 0, 1, 0, 0, 1, 0,
2171 1, 0, 1, 0, 1, 0, 1, 0,
2172 0, 1, 0, 0, 0, 1, 0, 0,
2173 0, 0, 0, 0, 0, 0, 0, 0,
2174 0, 0, 0, 0, 0, 0, 0, 0,
2175 0, 0, 0, 0, 0, 0, 0, 0,
2176
2177 /* Char 120 */
2178 0, 0, 0, 0, 0, 0, 0, 0,
2179 0, 0, 0, 0, 0, 0, 0, 0,
2180 0, 0, 0, 0, 0, 0, 0, 0,
2181 0, 0, 0, 0, 0, 0, 0, 0,
2182 0, 0, 0, 0, 0, 0, 0, 0,
2183 0, 0, 0, 0, 0, 0, 0, 0,
2184 0, 1, 0, 0, 0, 0, 1, 0,
2185 0, 1, 0, 0, 0, 0, 1, 0,
2186 0, 0, 1, 0, 0, 1, 0, 0,
2187 0, 0, 0, 1, 1, 0, 0, 0,
2188 0, 0, 1, 0, 0, 1, 0, 0,
2189 0, 1, 0, 0, 0, 0, 1, 0,
2190 0, 1, 0, 0, 0, 0, 1, 0,
2191 0, 0, 0, 0, 0, 0, 0, 0,
2192 0, 0, 0, 0, 0, 0, 0, 0,
2193 0, 0, 0, 0, 0, 0, 0, 0,
2194
2195 /* Char 121 */
2196 0, 0, 0, 0, 0, 0, 0, 0,
2197 0, 0, 0, 0, 0, 0, 0, 0,
2198 0, 0, 0, 0, 0, 0, 0, 0,
2199 0, 0, 0, 0, 0, 0, 0, 0,
2200 0, 0, 0, 0, 0, 0, 0, 0,
2201 0, 0, 0, 0, 0, 0, 0, 0,
2202 0, 1, 0, 0, 0, 0, 1, 0,
2203 0, 1, 0, 0, 0, 0, 1, 0,
2204 0, 1, 0, 0, 0, 0, 1, 0,
2205 0, 1, 0, 0, 0, 0, 1, 0,
2206 0, 1, 0, 0, 0, 0, 1, 0,
2207 0, 0, 1, 0, 0, 1, 1, 0,
2208 0, 0, 0, 1, 1, 0, 1, 0,
2209 0, 0, 0, 0, 0, 0, 1, 0,
2210 0, 0, 0, 0, 0, 1, 0, 0,
2211 0, 0, 1, 1, 1, 0, 0, 0,
2212
2213 /* Char 122 */
2214 0, 0, 0, 0, 0, 0, 0, 0,
2215 0, 0, 0, 0, 0, 0, 0, 0,
2216 0, 0, 0, 0, 0, 0, 0, 0,
2217 0, 0, 0, 0, 0, 0, 0, 0,
2218 0, 0, 0, 0, 0, 0, 0, 0,
2219 0, 0, 0, 0, 0, 0, 0, 0,
2220 0, 1, 1, 1, 1, 1, 1, 0,
2221 0, 0, 0, 0, 0, 1, 0, 0,
2222 0, 0, 0, 0, 1, 0, 0, 0,
2223 0, 0, 0, 1, 0, 0, 0, 0,
2224 0, 0, 1, 0, 0, 0, 0, 0,
2225 0, 1, 0, 0, 0, 0, 0, 0,
2226 0, 1, 1, 1, 1, 1, 1, 0,
2227 0, 0, 0, 0, 0, 0, 0, 0,
2228 0, 0, 0, 0, 0, 0, 0, 0,
2229 0, 0, 0, 0, 0, 0, 0, 0,
2230
2231 /* Char 123 */
2232 0, 0, 0, 0, 0, 0, 0, 0,
2233 0, 0, 0, 0, 0, 0, 0, 0,
2234 0, 0, 0, 1, 1, 0, 0, 0,
2235 0, 0, 1, 0, 0, 0, 0, 0,
2236 0, 0, 1, 0, 0, 0, 0, 0,
2237 0, 0, 0, 1, 0, 0, 0, 0,
2238 0, 0, 0, 1, 0, 0, 0, 0,
2239 0, 0, 1, 0, 0, 0, 0, 0,
2240 0, 0, 1, 0, 0, 0, 0, 0,
2241 0, 0, 0, 1, 0, 0, 0, 0,
2242 0, 0, 0, 1, 0, 0, 0, 0,
2243 0, 0, 1, 0, 0, 0, 0, 0,
2244 0, 0, 1, 0, 0, 0, 0, 0,
2245 0, 0, 0, 1, 1, 0, 0, 0,
2246 0, 0, 0, 0, 0, 0, 0, 0,
2247 0, 0, 0, 0, 0, 0, 0, 0,
2248
2249 /* Char 124 */
2250 0, 0, 0, 0, 0, 0, 0, 0,
2251 0, 0, 0, 1, 0, 0, 0, 0,
2252 0, 0, 0, 1, 0, 0, 0, 0,
2253 0, 0, 0, 1, 0, 0, 0, 0,
2254 0, 0, 0, 1, 0, 0, 0, 0,
2255 0, 0, 0, 1, 0, 0, 0, 0,
2256 0, 0, 0, 1, 0, 0, 0, 0,
2257 0, 0, 0, 1, 0, 0, 0, 0,
2258 0, 0, 0, 1, 0, 0, 0, 0,
2259 0, 0, 0, 1, 0, 0, 0, 0,
2260 0, 0, 0, 1, 0, 0, 0, 0,
2261 0, 0, 0, 1, 0, 0, 0, 0,
2262 0, 0, 0, 1, 0, 0, 0, 0,
2263 0, 0, 0, 1, 0, 0, 0, 0,
2264 0, 0, 0, 1, 0, 0, 0, 0,
2265 0, 0, 0, 0, 0, 0, 0, 0,
2266
2267 /* Char 125 */
2268 0, 0, 0, 0, 0, 0, 0, 0,
2269 0, 0, 0, 0, 0, 0, 0, 0,
2270 0, 0, 1, 1, 0, 0, 0, 0,
2271 0, 0, 0, 0, 1, 0, 0, 0,
2272 0, 0, 0, 0, 1, 0, 0, 0,
2273 0, 0, 0, 1, 0, 0, 0, 0,
2274 0, 0, 0, 1, 0, 0, 0, 0,
2275 0, 0, 0, 0, 1, 0, 0, 0,
2276 0, 0, 0, 0, 1, 0, 0, 0,
2277 0, 0, 0, 1, 0, 0, 0, 0,
2278 0, 0, 0, 1, 0, 0, 0, 0,
2279 0, 0, 0, 0, 1, 0, 0, 0,
2280 0, 0, 0, 0, 1, 0, 0, 0,
2281 0, 0, 1, 1, 0, 0, 0, 0,
2282 0, 0, 0, 0, 0, 0, 0, 0,
2283 0, 0, 0, 0, 0, 0, 0, 0,
2284
2285 /* Char 126 */
2286 0, 0, 0, 0, 0, 0, 0, 0,
2287 0, 0, 0, 0, 0, 0, 0, 0,
2288 0, 1, 1, 0, 0, 0, 1, 0,
2289 1, 0, 0, 1, 0, 0, 1, 0,
2290 1, 0, 0, 0, 1, 1, 0, 0,
2291 0, 0, 0, 0, 0, 0, 0, 0,
2292 0, 0, 0, 0, 0, 0, 0, 0,
2293 0, 0, 0, 0, 0, 0, 0, 0,
2294 0, 0, 0, 0, 0, 0, 0, 0,
2295 0, 0, 0, 0, 0, 0, 0, 0,
2296 0, 0, 0, 0, 0, 0, 0, 0,
2297 0, 0, 0, 0, 0, 0, 0, 0,
2298 0, 0, 0, 0, 0, 0, 0, 0,
2299 0, 0, 0, 0, 0, 0, 0, 0,
2300 0, 0, 0, 0, 0, 0, 0, 0,
2301 0, 0, 0, 0, 0, 0, 0, 0,
2302
2303 /* Char 127 */
2304 0, 0, 0, 0, 0, 0, 0, 0,
2305 0, 0, 0, 0, 0, 0, 0, 0,
2306 0, 0, 0, 0, 0, 0, 0, 0,
2307 0, 0, 0, 0, 0, 0, 0, 0,
2308 0, 0, 0, 0, 0, 0, 0, 0,
2309 0, 0, 0, 0, 0, 0, 0, 0,
2310 0, 0, 0, 0, 0, 0, 0, 0,
2311 0, 0, 0, 0, 0, 0, 0, 0,
2312 0, 0, 0, 0, 0, 0, 0, 0,
2313 0, 0, 0, 0, 0, 0, 0, 0,
2314 0, 0, 0, 0, 0, 0, 0, 0,
2315 0, 0, 0, 0, 0, 0, 0, 0,
2316 0, 0, 0, 0, 0, 0, 0, 0,
2317 0, 0, 0, 0, 0, 0, 0, 0,
2318 0, 0, 0, 0, 0, 0, 0, 0,
2319 0, 0, 0, 0, 0, 0, 0, 0,
2320
2321 /* Char 128 */
2322 0, 0, 0, 0, 0, 0, 0, 0,
2323 0, 0, 0, 0, 0, 0, 0, 0,
2324 0, 0, 0, 0, 0, 0, 0, 0,
2325 0, 0, 0, 0, 0, 0, 0, 0,
2326 0, 0, 0, 0, 0, 0, 0, 0,
2327 0, 0, 0, 0, 0, 0, 0, 0,
2328 0, 0, 0, 0, 0, 0, 0, 0,
2329 0, 0, 0, 0, 0, 0, 0, 0,
2330 0, 0, 0, 0, 0, 0, 0, 0,
2331 0, 0, 0, 0, 0, 0, 0, 0,
2332 0, 0, 0, 0, 0, 0, 0, 0,
2333 0, 0, 0, 0, 0, 0, 0, 0,
2334 0, 0, 0, 0, 0, 0, 0, 0,
2335 0, 0, 0, 0, 0, 0, 0, 0,
2336 0, 0, 0, 0, 0, 0, 0, 0,
2337 0, 0, 0, 0, 0, 0, 0, 0,
2338
2339 /* Char 129 */
2340 0, 0, 0, 0, 0, 0, 0, 0,
2341 0, 0, 0, 0, 0, 0, 0, 0,
2342 0, 0, 0, 0, 0, 0, 0, 0,
2343 0, 0, 0, 0, 0, 0, 0, 0,
2344 0, 0, 0, 0, 0, 0, 0, 0,
2345 0, 0, 0, 0, 0, 0, 0, 0,
2346 0, 0, 0, 0, 0, 0, 0, 0,
2347 0, 0, 0, 0, 0, 0, 0, 0,
2348 0, 0, 0, 0, 0, 0, 0, 0,
2349 0, 0, 0, 0, 0, 0, 0, 0,
2350 0, 0, 0, 0, 0, 0, 0, 0,
2351 0, 0, 0, 0, 0, 0, 0, 0,
2352 0, 0, 0, 0, 0, 0, 0, 0,
2353 0, 0, 0, 0, 0, 0, 0, 0,
2354 0, 0, 0, 0, 0, 0, 0, 0,
2355 0, 0, 0, 0, 0, 0, 0, 0,
2356
2357 /* Char 130 */
2358 0, 0, 0, 0, 0, 0, 0, 0,
2359 0, 0, 0, 0, 0, 0, 0, 0,
2360 0, 0, 0, 0, 0, 0, 0, 0,
2361 0, 0, 0, 0, 0, 0, 0, 0,
2362 0, 0, 0, 0, 0, 0, 0, 0,
2363 0, 0, 0, 0, 0, 0, 0, 0,
2364 0, 0, 0, 0, 0, 0, 0, 0,
2365 0, 0, 0, 0, 0, 0, 0, 0,
2366 0, 0, 0, 0, 0, 0, 0, 0,
2367 0, 0, 0, 0, 0, 0, 0, 0,
2368 0, 0, 0, 0, 0, 0, 0, 0,
2369 0, 0, 0, 0, 0, 0, 0, 0,
2370 0, 0, 0, 0, 0, 0, 0, 0,
2371 0, 0, 0, 0, 0, 0, 0, 0,
2372 0, 0, 0, 0, 0, 0, 0, 0,
2373 0, 0, 0, 0, 0, 0, 0, 0,
2374
2375 /* Char 131 */
2376 0, 0, 0, 0, 0, 0, 0, 0,
2377 0, 0, 0, 0, 0, 0, 0, 0,
2378 0, 0, 0, 0, 0, 0, 0, 0,
2379 0, 0, 0, 0, 0, 0, 0, 0,
2380 0, 0, 0, 0, 0, 0, 0, 0,
2381 0, 0, 0, 0, 0, 0, 0, 0,
2382 0, 0, 0, 0, 0, 0, 0, 0,
2383 0, 0, 0, 0, 0, 0, 0, 0,
2384 0, 0, 0, 0, 0, 0, 0, 0,
2385 0, 0, 0, 0, 0, 0, 0, 0,
2386 0, 0, 0, 0, 0, 0, 0, 0,
2387 0, 0, 0, 0, 0, 0, 0, 0,
2388 0, 0, 0, 0, 0, 0, 0, 0,
2389 0, 0, 0, 0, 0, 0, 0, 0,
2390 0, 0, 0, 0, 0, 0, 0, 0,
2391 0, 0, 0, 0, 0, 0, 0, 0,
2392
2393 /* Char 132 */
2394 0, 0, 0, 0, 0, 0, 0, 0,
2395 0, 0, 0, 0, 0, 0, 0, 0,
2396 0, 0, 0, 0, 0, 0, 0, 0,
2397 0, 0, 0, 0, 0, 0, 0, 0,
2398 0, 0, 0, 0, 0, 0, 0, 0,
2399 0, 0, 0, 0, 0, 0, 0, 0,
2400 0, 0, 0, 0, 0, 0, 0, 0,
2401 0, 0, 0, 0, 0, 0, 0, 0,
2402 0, 0, 0, 0, 0, 0, 0, 0,
2403 0, 0, 0, 0, 0, 0, 0, 0,
2404 0, 0, 0, 0, 0, 0, 0, 0,
2405 0, 0, 0, 0, 0, 0, 0, 0,
2406 0, 0, 0, 0, 0, 0, 0, 0,
2407 0, 0, 0, 0, 0, 0, 0, 0,
2408 0, 0, 0, 0, 0, 0, 0, 0,
2409 0, 0, 0, 0, 0, 0, 0, 0,
2410
2411 /* Char 133 */
2412 0, 0, 0, 0, 0, 0, 0, 0,
2413 0, 0, 0, 0, 0, 0, 0, 0,
2414 0, 0, 0, 0, 0, 0, 0, 0,
2415 0, 0, 0, 0, 0, 0, 0, 0,
2416 0, 0, 0, 0, 0, 0, 0, 0,
2417 0, 0, 0, 0, 0, 0, 0, 0,
2418 0, 0, 0, 0, 0, 0, 0, 0,
2419 0, 0, 0, 0, 0, 0, 0, 0,
2420 0, 0, 0, 0, 0, 0, 0, 0,
2421 0, 0, 0, 0, 0, 0, 0, 0,
2422 0, 0, 0, 0, 0, 0, 0, 0,
2423 0, 0, 0, 0, 0, 0, 0, 0,
2424 0, 0, 0, 0, 0, 0, 0, 0,
2425 0, 0, 0, 0, 0, 0, 0, 0,
2426 0, 0, 0, 0, 0, 0, 0, 0,
2427 0, 0, 0, 0, 0, 0, 0, 0,
2428
2429 /* Char 134 */
2430 0, 0, 0, 0, 0, 0, 0, 0,
2431 0, 0, 0, 0, 0, 0, 0, 0,
2432 0, 0, 0, 0, 0, 0, 0, 0,
2433 0, 0, 0, 0, 0, 0, 0, 0,
2434 0, 0, 0, 0, 0, 0, 0, 0,
2435 0, 0, 0, 0, 0, 0, 0, 0,
2436 0, 0, 0, 0, 0, 0, 0, 0,
2437 0, 0, 0, 0, 0, 0, 0, 0,
2438 0, 0, 0, 0, 0, 0, 0, 0,
2439 0, 0, 0, 0, 0, 0, 0, 0,
2440 0, 0, 0, 0, 0, 0, 0, 0,
2441 0, 0, 0, 0, 0, 0, 0, 0,
2442 0, 0, 0, 0, 0, 0, 0, 0,
2443 0, 0, 0, 0, 0, 0, 0, 0,
2444 0, 0, 0, 0, 0, 0, 0, 0,
2445 0, 0, 0, 0, 0, 0, 0, 0,
2446
2447 /* Char 135 */
2448 0, 0, 0, 0, 0, 0, 0, 0,
2449 0, 0, 0, 0, 0, 0, 0, 0,
2450 0, 0, 0, 0, 0, 0, 0, 0,
2451 0, 0, 0, 0, 0, 0, 0, 0,
2452 0, 0, 0, 0, 0, 0, 0, 0,
2453 0, 0, 0, 0, 0, 0, 0, 0,
2454 0, 0, 0, 0, 0, 0, 0, 0,
2455 0, 0, 0, 0, 0, 0, 0, 0,
2456 0, 0, 0, 0, 0, 0, 0, 0,
2457 0, 0, 0, 0, 0, 0, 0, 0,
2458 0, 0, 0, 0, 0, 0, 0, 0,
2459 0, 0, 0, 0, 0, 0, 0, 0,
2460 0, 0, 0, 0, 0, 0, 0, 0,
2461 0, 0, 0, 0, 0, 0, 0, 0,
2462 0, 0, 0, 0, 0, 0, 0, 0,
2463 0, 0, 0, 0, 0, 0, 0, 0,
2464
2465 /* Char 136 */
2466 0, 0, 0, 0, 0, 0, 0, 0,
2467 0, 0, 0, 0, 0, 0, 0, 0,
2468 0, 0, 0, 0, 0, 0, 0, 0,
2469 0, 0, 0, 0, 0, 0, 0, 0,
2470 0, 0, 0, 0, 0, 0, 0, 0,
2471 0, 0, 0, 0, 0, 0, 0, 0,
2472 0, 0, 0, 0, 0, 0, 0, 0,
2473 0, 0, 0, 0, 0, 0, 0, 0,
2474 0, 0, 0, 0, 0, 0, 0, 0,
2475 0, 0, 0, 0, 0, 0, 0, 0,
2476 0, 0, 0, 0, 0, 0, 0, 0,
2477 0, 0, 0, 0, 0, 0, 0, 0,
2478 0, 0, 0, 0, 0, 0, 0, 0,
2479 0, 0, 0, 0, 0, 0, 0, 0,
2480 0, 0, 0, 0, 0, 0, 0, 0,
2481 0, 0, 0, 0, 0, 0, 0, 0,
2482
2483 /* Char 137 */
2484 0, 0, 0, 0, 0, 0, 0, 0,
2485 0, 0, 0, 0, 0, 0, 0, 0,
2486 0, 0, 0, 0, 0, 0, 0, 0,
2487 0, 0, 0, 0, 0, 0, 0, 0,
2488 0, 0, 0, 0, 0, 0, 0, 0,
2489 0, 0, 0, 0, 0, 0, 0, 0,
2490 0, 0, 0, 0, 0, 0, 0, 0,
2491 0, 0, 0, 0, 0, 0, 0, 0,
2492 0, 0, 0, 0, 0, 0, 0, 0,
2493 0, 0, 0, 0, 0, 0, 0, 0,
2494 0, 0, 0, 0, 0, 0, 0, 0,
2495 0, 0, 0, 0, 0, 0, 0, 0,
2496 0, 0, 0, 0, 0, 0, 0, 0,
2497 0, 0, 0, 0, 0, 0, 0, 0,
2498 0, 0, 0, 0, 0, 0, 0, 0,
2499 0, 0, 0, 0, 0, 0, 0, 0,
2500
2501 /* Char 138 */
2502 0, 0, 0, 0, 0, 0, 0, 0,
2503 0, 0, 0, 0, 0, 0, 0, 0,
2504 0, 0, 0, 0, 0, 0, 0, 0,
2505 0, 0, 0, 0, 0, 0, 0, 0,
2506 0, 0, 0, 0, 0, 0, 0, 0,
2507 0, 0, 0, 0, 0, 0, 0, 0,
2508 0, 0, 0, 0, 0, 0, 0, 0,
2509 0, 0, 0, 0, 0, 0, 0, 0,
2510 0, 0, 0, 0, 0, 0, 0, 0,
2511 0, 0, 0, 0, 0, 0, 0, 0,
2512 0, 0, 0, 0, 0, 0, 0, 0,
2513 0, 0, 0, 0, 0, 0, 0, 0,
2514 0, 0, 0, 0, 0, 0, 0, 0,
2515 0, 0, 0, 0, 0, 0, 0, 0,
2516 0, 0, 0, 0, 0, 0, 0, 0,
2517 0, 0, 0, 0, 0, 0, 0, 0,
2518
2519 /* Char 139 */
2520 0, 0, 0, 0, 0, 0, 0, 0,
2521 0, 0, 0, 0, 0, 0, 0, 0,
2522 0, 0, 0, 0, 0, 0, 0, 0,
2523 0, 0, 0, 0, 0, 0, 0, 0,
2524 0, 0, 0, 0, 0, 0, 0, 0,
2525 0, 0, 0, 0, 0, 0, 0, 0,
2526 0, 0, 0, 0, 0, 0, 0, 0,
2527 0, 0, 0, 0, 0, 0, 0, 0,
2528 0, 0, 0, 0, 0, 0, 0, 0,
2529 0, 0, 0, 0, 0, 0, 0, 0,
2530 0, 0, 0, 0, 0, 0, 0, 0,
2531 0, 0, 0, 0, 0, 0, 0, 0,
2532 0, 0, 0, 0, 0, 0, 0, 0,
2533 0, 0, 0, 0, 0, 0, 0, 0,
2534 0, 0, 0, 0, 0, 0, 0, 0,
2535 0, 0, 0, 0, 0, 0, 0, 0,
2536
2537 /* Char 140 */
2538 0, 0, 0, 0, 0, 0, 0, 0,
2539 0, 0, 0, 0, 0, 0, 0, 0,
2540 0, 0, 0, 0, 0, 0, 0, 0,
2541 0, 0, 0, 0, 0, 0, 0, 0,
2542 0, 0, 0, 0, 0, 0, 0, 0,
2543 0, 0, 0, 0, 0, 0, 0, 0,
2544 0, 0, 0, 0, 0, 0, 0, 0,
2545 0, 0, 0, 0, 0, 0, 0, 0,
2546 0, 0, 0, 0, 0, 0, 0, 0,
2547 0, 0, 0, 0, 0, 0, 0, 0,
2548 0, 0, 0, 0, 0, 0, 0, 0,
2549 0, 0, 0, 0, 0, 0, 0, 0,
2550 0, 0, 0, 0, 0, 0, 0, 0,
2551 0, 0, 0, 0, 0, 0, 0, 0,
2552 0, 0, 0, 0, 0, 0, 0, 0,
2553 0, 0, 0, 0, 0, 0, 0, 0,
2554
2555 /* Char 141 */
2556 0, 0, 0, 0, 0, 0, 0, 0,
2557 0, 0, 0, 0, 0, 0, 0, 0,
2558 0, 0, 0, 0, 0, 0, 0, 0,
2559 0, 0, 0, 0, 0, 0, 0, 0,
2560 0, 0, 0, 0, 0, 0, 0, 0,
2561 0, 0, 0, 0, 0, 0, 0, 0,
2562 0, 0, 0, 0, 0, 0, 0, 0,
2563 0, 0, 0, 0, 0, 0, 0, 0,
2564 0, 0, 0, 0, 0, 0, 0, 0,
2565 0, 0, 0, 0, 0, 0, 0, 0,
2566 0, 0, 0, 0, 0, 0, 0, 0,
2567 0, 0, 0, 0, 0, 0, 0, 0,
2568 0, 0, 0, 0, 0, 0, 0, 0,
2569 0, 0, 0, 0, 0, 0, 0, 0,
2570 0, 0, 0, 0, 0, 0, 0, 0,
2571 0, 0, 0, 0, 0, 0, 0, 0,
2572
2573 /* Char 142 */
2574 0, 0, 0, 0, 0, 0, 0, 0,
2575 0, 0, 0, 0, 0, 0, 0, 0,
2576 0, 0, 0, 0, 0, 0, 0, 0,
2577 0, 0, 0, 0, 0, 0, 0, 0,
2578 0, 0, 0, 0, 0, 0, 0, 0,
2579 0, 0, 0, 0, 0, 0, 0, 0,
2580 0, 0, 0, 0, 0, 0, 0, 0,
2581 0, 0, 0, 0, 0, 0, 0, 0,
2582 0, 0, 0, 0, 0, 0, 0, 0,
2583 0, 0, 0, 0, 0, 0, 0, 0,
2584 0, 0, 0, 0, 0, 0, 0, 0,
2585 0, 0, 0, 0, 0, 0, 0, 0,
2586 0, 0, 0, 0, 0, 0, 0, 0,
2587 0, 0, 0, 0, 0, 0, 0, 0,
2588 0, 0, 0, 0, 0, 0, 0, 0,
2589 0, 0, 0, 0, 0, 0, 0, 0,
2590
2591 /* Char 143 */
2592 0, 0, 0, 0, 0, 0, 0, 0,
2593 0, 0, 0, 0, 0, 0, 0, 0,
2594 0, 0, 0, 0, 0, 0, 0, 0,
2595 0, 0, 0, 0, 0, 0, 0, 0,
2596 0, 0, 0, 0, 0, 0, 0, 0,
2597 0, 0, 0, 0, 0, 0, 0, 0,
2598 0, 0, 0, 0, 0, 0, 0, 0,
2599 0, 0, 0, 0, 0, 0, 0, 0,
2600 0, 0, 0, 0, 0, 0, 0, 0,
2601 0, 0, 0, 0, 0, 0, 0, 0,
2602 0, 0, 0, 0, 0, 0, 0, 0,
2603 0, 0, 0, 0, 0, 0, 0, 0,
2604 0, 0, 0, 0, 0, 0, 0, 0,
2605 0, 0, 0, 0, 0, 0, 0, 0,
2606 0, 0, 0, 0, 0, 0, 0, 0,
2607 0, 0, 0, 0, 0, 0, 0, 0,
2608
2609 /* Char 144 */
2610 0, 0, 0, 0, 0, 0, 0, 0,
2611 0, 0, 0, 0, 0, 0, 0, 0,
2612 0, 0, 0, 0, 0, 0, 0, 0,
2613 0, 0, 0, 0, 0, 0, 0, 0,
2614 0, 0, 0, 0, 0, 0, 0, 0,
2615 0, 0, 0, 0, 0, 0, 0, 0,
2616 0, 0, 0, 0, 0, 0, 0, 0,
2617 0, 0, 0, 0, 0, 0, 0, 0,
2618 0, 0, 0, 0, 0, 0, 0, 0,
2619 0, 0, 0, 0, 0, 0, 0, 0,
2620 0, 0, 0, 0, 0, 0, 0, 0,
2621 0, 0, 0, 0, 0, 0, 0, 0,
2622 0, 0, 0, 0, 0, 0, 0, 0,
2623 0, 0, 0, 0, 0, 0, 0, 0,
2624 0, 0, 0, 0, 0, 0, 0, 0,
2625 0, 0, 0, 0, 0, 0, 0, 0,
2626
2627 /* Char 145 */
2628 0, 0, 0, 0, 0, 0, 0, 0,
2629 0, 0, 0, 0, 0, 0, 0, 0,
2630 0, 0, 0, 0, 0, 0, 0, 0,
2631 0, 0, 0, 0, 0, 0, 0, 0,
2632 0, 0, 0, 0, 0, 0, 0, 0,
2633 0, 0, 0, 0, 0, 0, 0, 0,
2634 0, 0, 0, 0, 0, 0, 0, 0,
2635 0, 0, 0, 0, 0, 0, 0, 0,
2636 0, 0, 0, 0, 0, 0, 0, 0,
2637 0, 0, 0, 0, 0, 0, 0, 0,
2638 0, 0, 0, 0, 0, 0, 0, 0,
2639 0, 0, 0, 0, 0, 0, 0, 0,
2640 0, 0, 0, 0, 0, 0, 0, 0,
2641 0, 0, 0, 0, 0, 0, 0, 0,
2642 0, 0, 0, 0, 0, 0, 0, 0,
2643 0, 0, 0, 0, 0, 0, 0, 0,
2644
2645 /* Char 146 */
2646 0, 0, 0, 0, 0, 0, 0, 0,
2647 0, 0, 0, 0, 0, 0, 0, 0,
2648 0, 0, 0, 0, 0, 0, 0, 0,
2649 0, 0, 0, 0, 0, 0, 0, 0,
2650 0, 0, 0, 0, 0, 0, 0, 0,
2651 0, 0, 0, 0, 0, 0, 0, 0,
2652 0, 0, 0, 0, 0, 0, 0, 0,
2653 0, 0, 0, 0, 0, 0, 0, 0,
2654 0, 0, 0, 0, 0, 0, 0, 0,
2655 0, 0, 0, 0, 0, 0, 0, 0,
2656 0, 0, 0, 0, 0, 0, 0, 0,
2657 0, 0, 0, 0, 0, 0, 0, 0,
2658 0, 0, 0, 0, 0, 0, 0, 0,
2659 0, 0, 0, 0, 0, 0, 0, 0,
2660 0, 0, 0, 0, 0, 0, 0, 0,
2661 0, 0, 0, 0, 0, 0, 0, 0,
2662
2663 /* Char 147 */
2664 0, 0, 0, 0, 0, 0, 0, 0,
2665 0, 0, 0, 0, 0, 0, 0, 0,
2666 0, 0, 0, 0, 0, 0, 0, 0,
2667 0, 0, 0, 0, 0, 0, 0, 0,
2668 0, 0, 0, 0, 0, 0, 0, 0,
2669 0, 0, 0, 0, 0, 0, 0, 0,
2670 0, 0, 0, 0, 0, 0, 0, 0,
2671 0, 0, 0, 0, 0, 0, 0, 0,
2672 0, 0, 0, 0, 0, 0, 0, 0,
2673 0, 0, 0, 0, 0, 0, 0, 0,
2674 0, 0, 0, 0, 0, 0, 0, 0,
2675 0, 0, 0, 0, 0, 0, 0, 0,
2676 0, 0, 0, 0, 0, 0, 0, 0,
2677 0, 0, 0, 0, 0, 0, 0, 0,
2678 0, 0, 0, 0, 0, 0, 0, 0,
2679 0, 0, 0, 0, 0, 0, 0, 0,
2680
2681 /* Char 148 */
2682 0, 0, 0, 0, 0, 0, 0, 0,
2683 0, 0, 0, 0, 0, 0, 0, 0,
2684 0, 0, 0, 0, 0, 0, 0, 0,
2685 0, 0, 0, 0, 0, 0, 0, 0,
2686 0, 0, 0, 0, 0, 0, 0, 0,
2687 0, 0, 0, 0, 0, 0, 0, 0,
2688 0, 0, 0, 0, 0, 0, 0, 0,
2689 0, 0, 0, 0, 0, 0, 0, 0,
2690 0, 0, 0, 0, 0, 0, 0, 0,
2691 0, 0, 0, 0, 0, 0, 0, 0,
2692 0, 0, 0, 0, 0, 0, 0, 0,
2693 0, 0, 0, 0, 0, 0, 0, 0,
2694 0, 0, 0, 0, 0, 0, 0, 0,
2695 0, 0, 0, 0, 0, 0, 0, 0,
2696 0, 0, 0, 0, 0, 0, 0, 0,
2697 0, 0, 0, 0, 0, 0, 0, 0,
2698
2699 /* Char 149 */
2700 0, 0, 0, 0, 0, 0, 0, 0,
2701 0, 0, 0, 0, 0, 0, 0, 0,
2702 0, 0, 0, 0, 0, 0, 0, 0,
2703 0, 0, 0, 0, 0, 0, 0, 0,
2704 0, 0, 0, 0, 0, 0, 0, 0,
2705 0, 0, 0, 0, 0, 0, 0, 0,
2706 0, 0, 0, 0, 0, 0, 0, 0,
2707 0, 0, 0, 0, 0, 0, 0, 0,
2708 0, 0, 0, 0, 0, 0, 0, 0,
2709 0, 0, 0, 0, 0, 0, 0, 0,
2710 0, 0, 0, 0, 0, 0, 0, 0,
2711 0, 0, 0, 0, 0, 0, 0, 0,
2712 0, 0, 0, 0, 0, 0, 0, 0,
2713 0, 0, 0, 0, 0, 0, 0, 0,
2714 0, 0, 0, 0, 0, 0, 0, 0,
2715 0, 0, 0, 0, 0, 0, 0, 0,
2716
2717 /* Char 150 */
2718 0, 0, 0, 0, 0, 0, 0, 0,
2719 0, 0, 0, 0, 0, 0, 0, 0,
2720 0, 0, 0, 0, 0, 0, 0, 0,
2721 0, 0, 0, 0, 0, 0, 0, 0,
2722 0, 0, 0, 0, 0, 0, 0, 0,
2723 0, 0, 0, 0, 0, 0, 0, 0,
2724 0, 0, 0, 0, 0, 0, 0, 0,
2725 0, 0, 0, 0, 0, 0, 0, 0,
2726 0, 0, 0, 0, 0, 0, 0, 0,
2727 0, 0, 0, 0, 0, 0, 0, 0,
2728 0, 0, 0, 0, 0, 0, 0, 0,
2729 0, 0, 0, 0, 0, 0, 0, 0,
2730 0, 0, 0, 0, 0, 0, 0, 0,
2731 0, 0, 0, 0, 0, 0, 0, 0,
2732 0, 0, 0, 0, 0, 0, 0, 0,
2733 0, 0, 0, 0, 0, 0, 0, 0,
2734
2735 /* Char 151 */
2736 0, 0, 0, 0, 0, 0, 0, 0,
2737 0, 0, 0, 0, 0, 0, 0, 0,
2738 0, 0, 0, 0, 0, 0, 0, 0,
2739 0, 0, 0, 0, 0, 0, 0, 0,
2740 0, 0, 0, 0, 0, 0, 0, 0,
2741 0, 0, 0, 0, 0, 0, 0, 0,
2742 0, 0, 0, 0, 0, 0, 0, 0,
2743 0, 0, 0, 0, 0, 0, 0, 0,
2744 0, 0, 0, 0, 0, 0, 0, 0,
2745 0, 0, 0, 0, 0, 0, 0, 0,
2746 0, 0, 0, 0, 0, 0, 0, 0,
2747 0, 0, 0, 0, 0, 0, 0, 0,
2748 0, 0, 0, 0, 0, 0, 0, 0,
2749 0, 0, 0, 0, 0, 0, 0, 0,
2750 0, 0, 0, 0, 0, 0, 0, 0,
2751 0, 0, 0, 0, 0, 0, 0, 0,
2752
2753 /* Char 152 */
2754 0, 0, 0, 0, 0, 0, 0, 0,
2755 0, 0, 0, 0, 0, 0, 0, 0,
2756 0, 0, 0, 0, 0, 0, 0, 0,
2757 0, 0, 0, 0, 0, 0, 0, 0,
2758 0, 0, 0, 0, 0, 0, 0, 0,
2759 0, 0, 0, 0, 0, 0, 0, 0,
2760 0, 0, 0, 0, 0, 0, 0, 0,
2761 0, 0, 0, 0, 0, 0, 0, 0,
2762 0, 0, 0, 0, 0, 0, 0, 0,
2763 0, 0, 0, 0, 0, 0, 0, 0,
2764 0, 0, 0, 0, 0, 0, 0, 0,
2765 0, 0, 0, 0, 0, 0, 0, 0,
2766 0, 0, 0, 0, 0, 0, 0, 0,
2767 0, 0, 0, 0, 0, 0, 0, 0,
2768 0, 0, 0, 0, 0, 0, 0, 0,
2769 0, 0, 0, 0, 0, 0, 0, 0,
2770
2771 /* Char 153 */
2772 0, 0, 0, 0, 0, 0, 0, 0,
2773 0, 0, 0, 0, 0, 0, 0, 0,
2774 0, 0, 0, 0, 0, 0, 0, 0,
2775 0, 0, 0, 0, 0, 0, 0, 0,
2776 0, 0, 0, 0, 0, 0, 0, 0,
2777 0, 0, 0, 0, 0, 0, 0, 0,
2778 0, 0, 0, 0, 0, 0, 0, 0,
2779 0, 0, 0, 0, 0, 0, 0, 0,
2780 0, 0, 0, 0, 0, 0, 0, 0,
2781 0, 0, 0, 0, 0, 0, 0, 0,
2782 0, 0, 0, 0, 0, 0, 0, 0,
2783 0, 0, 0, 0, 0, 0, 0, 0,
2784 0, 0, 0, 0, 0, 0, 0, 0,
2785 0, 0, 0, 0, 0, 0, 0, 0,
2786 0, 0, 0, 0, 0, 0, 0, 0,
2787 0, 0, 0, 0, 0, 0, 0, 0,
2788
2789 /* Char 154 */
2790 0, 0, 0, 0, 0, 0, 0, 0,
2791 0, 0, 0, 0, 0, 0, 0, 0,
2792 0, 0, 0, 0, 0, 0, 0, 0,
2793 0, 0, 0, 0, 0, 0, 0, 0,
2794 0, 0, 0, 0, 0, 0, 0, 0,
2795 0, 0, 0, 0, 0, 0, 0, 0,
2796 0, 0, 0, 0, 0, 0, 0, 0,
2797 0, 0, 0, 0, 0, 0, 0, 0,
2798 0, 0, 0, 0, 0, 0, 0, 0,
2799 0, 0, 0, 0, 0, 0, 0, 0,
2800 0, 0, 0, 0, 0, 0, 0, 0,
2801 0, 0, 0, 0, 0, 0, 0, 0,
2802 0, 0, 0, 0, 0, 0, 0, 0,
2803 0, 0, 0, 0, 0, 0, 0, 0,
2804 0, 0, 0, 0, 0, 0, 0, 0,
2805 0, 0, 0, 0, 0, 0, 0, 0,
2806
2807 /* Char 155 */
2808 0, 0, 0, 0, 0, 0, 0, 0,
2809 0, 0, 0, 0, 0, 0, 0, 0,
2810 0, 0, 0, 0, 0, 0, 0, 0,
2811 0, 0, 0, 0, 0, 0, 0, 0,
2812 0, 0, 0, 0, 0, 0, 0, 0,
2813 0, 0, 0, 0, 0, 0, 0, 0,
2814 0, 0, 0, 0, 0, 0, 0, 0,
2815 0, 0, 0, 0, 0, 0, 0, 0,
2816 0, 0, 0, 0, 0, 0, 0, 0,
2817 0, 0, 0, 0, 0, 0, 0, 0,
2818 0, 0, 0, 0, 0, 0, 0, 0,
2819 0, 0, 0, 0, 0, 0, 0, 0,
2820 0, 0, 0, 0, 0, 0, 0, 0,
2821 0, 0, 0, 0, 0, 0, 0, 0,
2822 0, 0, 0, 0, 0, 0, 0, 0,
2823 0, 0, 0, 0, 0, 0, 0, 0,
2824
2825 /* Char 156 */
2826 0, 0, 0, 0, 0, 0, 0, 0,
2827 0, 0, 0, 0, 0, 0, 0, 0,
2828 0, 0, 0, 0, 0, 0, 0, 0,
2829 0, 0, 0, 0, 0, 0, 0, 0,
2830 0, 0, 0, 0, 0, 0, 0, 0,
2831 0, 0, 0, 0, 0, 0, 0, 0,
2832 0, 0, 0, 0, 0, 0, 0, 0,
2833 0, 0, 0, 0, 0, 0, 0, 0,
2834 0, 0, 0, 0, 0, 0, 0, 0,
2835 0, 0, 0, 0, 0, 0, 0, 0,
2836 0, 0, 0, 0, 0, 0, 0, 0,
2837 0, 0, 0, 0, 0, 0, 0, 0,
2838 0, 0, 0, 0, 0, 0, 0, 0,
2839 0, 0, 0, 0, 0, 0, 0, 0,
2840 0, 0, 0, 0, 0, 0, 0, 0,
2841 0, 0, 0, 0, 0, 0, 0, 0,
2842
2843 /* Char 157 */
2844 0, 0, 0, 0, 0, 0, 0, 0,
2845 0, 0, 0, 0, 0, 0, 0, 0,
2846 0, 0, 0, 0, 0, 0, 0, 0,
2847 0, 0, 0, 0, 0, 0, 0, 0,
2848 0, 0, 0, 0, 0, 0, 0, 0,
2849 0, 0, 0, 0, 0, 0, 0, 0,
2850 0, 0, 0, 0, 0, 0, 0, 0,
2851 0, 0, 0, 0, 0, 0, 0, 0,
2852 0, 0, 0, 0, 0, 0, 0, 0,
2853 0, 0, 0, 0, 0, 0, 0, 0,
2854 0, 0, 0, 0, 0, 0, 0, 0,
2855 0, 0, 0, 0, 0, 0, 0, 0,
2856 0, 0, 0, 0, 0, 0, 0, 0,
2857 0, 0, 0, 0, 0, 0, 0, 0,
2858 0, 0, 0, 0, 0, 0, 0, 0,
2859 0, 0, 0, 0, 0, 0, 0, 0,
2860
2861 /* Char 158 */
2862 0, 0, 0, 0, 0, 0, 0, 0,
2863 0, 0, 0, 0, 0, 0, 0, 0,
2864 0, 0, 0, 0, 0, 0, 0, 0,
2865 0, 0, 0, 0, 0, 0, 0, 0,
2866 0, 0, 0, 0, 0, 0, 0, 0,
2867 0, 0, 0, 0, 0, 0, 0, 0,
2868 0, 0, 0, 0, 0, 0, 0, 0,
2869 0, 0, 0, 0, 0, 0, 0, 0,
2870 0, 0, 0, 0, 0, 0, 0, 0,
2871 0, 0, 0, 0, 0, 0, 0, 0,
2872 0, 0, 0, 0, 0, 0, 0, 0,
2873 0, 0, 0, 0, 0, 0, 0, 0,
2874 0, 0, 0, 0, 0, 0, 0, 0,
2875 0, 0, 0, 0, 0, 0, 0, 0,
2876 0, 0, 0, 0, 0, 0, 0, 0,
2877 0, 0, 0, 0, 0, 0, 0, 0,
2878
2879 /* Char 159 */
2880 0, 0, 0, 0, 0, 0, 0, 0,
2881 0, 0, 0, 0, 0, 0, 0, 0,
2882 0, 0, 0, 0, 0, 0, 0, 0,
2883 0, 0, 0, 0, 0, 0, 0, 0,
2884 0, 0, 0, 0, 0, 0, 0, 0,
2885 0, 0, 0, 0, 0, 0, 0, 0,
2886 0, 0, 0, 0, 0, 0, 0, 0,
2887 0, 0, 0, 0, 0, 0, 0, 0,
2888 0, 0, 0, 0, 0, 0, 0, 0,
2889 0, 0, 0, 0, 0, 0, 0, 0,
2890 0, 0, 0, 0, 0, 0, 0, 0,
2891 0, 0, 0, 0, 0, 0, 0, 0,
2892 0, 0, 0, 0, 0, 0, 0, 0,
2893 0, 0, 0, 0, 0, 0, 0, 0,
2894 0, 0, 0, 0, 0, 0, 0, 0,
2895 0, 0, 0, 0, 0, 0, 0, 0,
2896
2897 /* Char 160 */
2898 0, 0, 0, 0, 0, 0, 0, 0,
2899 0, 0, 0, 0, 0, 0, 0, 0,
2900 0, 0, 0, 0, 0, 0, 0, 0,
2901 0, 0, 0, 0, 0, 0, 0, 0,
2902 0, 0, 0, 0, 0, 0, 0, 0,
2903 0, 0, 0, 0, 0, 0, 0, 0,
2904 0, 0, 0, 0, 0, 0, 0, 0,
2905 0, 0, 0, 0, 0, 0, 0, 0,
2906 0, 0, 0, 0, 0, 0, 0, 0,
2907 0, 0, 0, 0, 0, 0, 0, 0,
2908 0, 0, 0, 0, 0, 0, 0, 0,
2909 0, 0, 0, 0, 0, 0, 0, 0,
2910 0, 0, 0, 0, 0, 0, 0, 0,
2911 0, 0, 0, 0, 0, 0, 0, 0,
2912 0, 0, 0, 0, 0, 0, 0, 0,
2913 0, 0, 0, 0, 0, 0, 0, 0,
2914
2915 /* Char 161 */
2916 0, 0, 0, 0, 0, 0, 0, 0,
2917 0, 0, 0, 0, 0, 0, 0, 0,
2918 0, 0, 0, 0, 0, 0, 0, 0,
2919 0, 0, 0, 1, 1, 0, 0, 0,
2920 0, 0, 1, 0, 0, 1, 0, 0,
2921 0, 1, 0, 0, 0, 0, 1, 0,
2922 0, 1, 0, 0, 0, 0, 1, 0,
2923 0, 1, 0, 0, 0, 0, 1, 0,
2924 0, 1, 1, 1, 1, 1, 1, 0,
2925 0, 1, 0, 0, 0, 0, 1, 0,
2926 0, 1, 0, 0, 0, 0, 1, 0,
2927 0, 1, 0, 0, 0, 0, 1, 0,
2928 0, 1, 0, 0, 0, 0, 1, 0,
2929 0, 0, 0, 0, 0, 1, 0, 0,
2930 0, 0, 0, 0, 1, 0, 0, 0,
2931 0, 0, 0, 0, 0, 1, 1, 0,
2932
2933 /* Char 162 */
2934 0, 0, 0, 0, 0, 0, 0, 0,
2935 0, 1, 0, 0, 0, 0, 1, 0,
2936 0, 1, 0, 0, 0, 0, 1, 0,
2937 0, 0, 1, 1, 1, 1, 0, 0,
2938 0, 0, 0, 0, 0, 0, 0, 0,
2939 0, 0, 0, 0, 0, 0, 0, 0,
2940 0, 0, 0, 0, 0, 0, 0, 0,
2941 0, 0, 0, 0, 0, 0, 0, 0,
2942 0, 0, 0, 0, 0, 0, 0, 0,
2943 0, 0, 0, 0, 0, 0, 0, 0,
2944 0, 0, 0, 0, 0, 0, 0, 0,
2945 0, 0, 0, 0, 0, 0, 0, 0,
2946 0, 0, 0, 0, 0, 0, 0, 0,
2947 0, 0, 0, 0, 0, 0, 0, 0,
2948 0, 0, 0, 0, 0, 0, 0, 0,
2949 0, 0, 0, 0, 0, 0, 0, 0,
2950
2951 /* Char 163 */
2952 0, 0, 0, 0, 0, 0, 0, 0,
2953 0, 0, 0, 0, 0, 0, 0, 0,
2954 0, 0, 0, 0, 0, 0, 0, 0,
2955 0, 1, 0, 0, 0, 0, 0, 0,
2956 0, 1, 0, 0, 0, 0, 0, 0,
2957 0, 1, 0, 0, 0, 0, 0, 0,
2958 0, 1, 0, 1, 0, 0, 0, 0,
2959 0, 1, 1, 0, 0, 0, 0, 0,
2960 0, 1, 0, 0, 0, 0, 0, 0,
2961 1, 1, 0, 0, 0, 0, 0, 0,
2962 0, 1, 0, 0, 0, 0, 0, 0,
2963 0, 1, 0, 0, 0, 0, 0, 0,
2964 0, 1, 1, 1, 1, 1, 1, 0,
2965 0, 0, 0, 0, 0, 0, 0, 0,
2966 0, 0, 0, 0, 0, 0, 0, 0,
2967 0, 0, 0, 0, 0, 0, 0, 0,
2968
2969 /* Char 164 */
2970 0, 0, 0, 0, 0, 0, 0, 0,
2971 0, 0, 0, 0, 0, 0, 0, 0,
2972 0, 0, 0, 0, 0, 0, 0, 0,
2973 0, 0, 0, 0, 0, 0, 0, 0,
2974 1, 0, 0, 0, 0, 0, 1, 0,
2975 0, 1, 0, 0, 0, 1, 0, 0,
2976 0, 0, 1, 1, 1, 0, 0, 0,
2977 0, 1, 0, 0, 0, 1, 0, 0,
2978 0, 1, 0, 0, 0, 1, 0, 0,
2979 0, 0, 1, 1, 1, 0, 0, 0,
2980 0, 1, 0, 0, 0, 1, 0, 0,
2981 1, 0, 0, 0, 0, 0, 1, 0,
2982 0, 0, 0, 0, 0, 0, 0, 0,
2983 0, 0, 0, 0, 0, 0, 0, 0,
2984 0, 0, 0, 0, 0, 0, 0, 0,
2985 0, 0, 0, 0, 0, 0, 0, 0,
2986
2987 /* Char 165 */
2988 0, 0, 0, 0, 0, 0, 0, 0,
2989 0, 0, 0, 1, 1, 0, 0, 0,
2990 0, 0, 0, 0, 1, 0, 0, 0,
2991 0, 1, 0, 0, 1, 0, 0, 0,
2992 0, 1, 0, 1, 0, 0, 0, 0,
2993 0, 1, 0, 0, 0, 0, 0, 0,
2994 0, 1, 0, 0, 0, 0, 0, 0,
2995 0, 1, 0, 0, 0, 0, 0, 0,
2996 0, 1, 0, 0, 0, 0, 0, 0,
2997 0, 1, 0, 0, 0, 0, 0, 0,
2998 0, 1, 0, 0, 0, 0, 0, 0,
2999 0, 1, 0, 0, 0, 0, 0, 0,
3000 0, 1, 1, 1, 1, 1, 1, 0,
3001 0, 0, 0, 0, 0, 0, 0, 0,
3002 0, 0, 0, 0, 0, 0, 0, 0,
3003 0, 0, 0, 0, 0, 0, 0, 0,
3004
3005 /* Char 166 */
3006 0, 0, 0, 0, 0, 1, 1, 0,
3007 0, 0, 0, 1, 1, 0, 0, 0,
3008 0, 0, 0, 0, 0, 0, 0, 0,
3009 0, 0, 1, 1, 1, 1, 0, 0,
3010 0, 1, 0, 0, 0, 0, 1, 0,
3011 0, 1, 0, 0, 0, 0, 1, 0,
3012 0, 1, 0, 0, 0, 0, 0, 0,
3013 0, 0, 1, 1, 0, 0, 0, 0,
3014 0, 0, 0, 0, 1, 1, 0, 0,
3015 0, 0, 0, 0, 0, 0, 1, 0,
3016 0, 1, 0, 0, 0, 0, 1, 0,
3017 0, 1, 0, 0, 0, 0, 1, 0,
3018 0, 0, 1, 1, 1, 1, 0, 0,
3019 0, 0, 0, 0, 0, 0, 0, 0,
3020 0, 0, 0, 0, 0, 0, 0, 0,
3021 0, 0, 0, 0, 0, 0, 0, 0,
3022
3023 /* Char 167 */
3024 0, 0, 0, 0, 0, 0, 0, 0,
3025 0, 0, 0, 0, 0, 0, 0, 0,
3026 0, 0, 0, 0, 0, 0, 0, 0,
3027 0, 0, 0, 0, 0, 0, 0, 0,
3028 0, 0, 1, 1, 1, 1, 0, 0,
3029 0, 1, 0, 0, 0, 0, 1, 0,
3030 0, 1, 0, 0, 0, 0, 0, 0,
3031 0, 0, 1, 1, 1, 1, 0, 0,
3032 0, 1, 0, 0, 0, 0, 1, 0,
3033 0, 1, 0, 0, 0, 0, 1, 0,
3034 0, 0, 1, 1, 1, 1, 0, 0,
3035 0, 0, 0, 0, 0, 0, 1, 0,
3036 0, 1, 0, 0, 0, 0, 1, 0,
3037 0, 0, 1, 1, 1, 1, 0, 0,
3038 0, 0, 0, 0, 0, 0, 0, 0,
3039 0, 0, 0, 0, 0, 0, 0, 0,
3040
3041 /* Char 168 */
3042 0, 0, 0, 0, 0, 0, 0, 0,
3043 0, 0, 1, 0, 0, 1, 0, 0,
3044 0, 0, 1, 0, 0, 1, 0, 0,
3045 0, 0, 0, 0, 0, 0, 0, 0,
3046 0, 0, 0, 0, 0, 0, 0, 0,
3047 0, 0, 0, 0, 0, 0, 0, 0,
3048 0, 0, 0, 0, 0, 0, 0, 0,
3049 0, 0, 0, 0, 0, 0, 0, 0,
3050 0, 0, 0, 0, 0, 0, 0, 0,
3051 0, 0, 0, 0, 0, 0, 0, 0,
3052 0, 0, 0, 0, 0, 0, 0, 0,
3053 0, 0, 0, 0, 0, 0, 0, 0,
3054 0, 0, 0, 0, 0, 0, 0, 0,
3055 0, 0, 0, 0, 0, 0, 0, 0,
3056 0, 0, 0, 0, 0, 0, 0, 0,
3057 0, 0, 0, 0, 0, 0, 0, 0,
3058
3059 /* Char 169 */
3060 0, 0, 1, 0, 0, 1, 0, 0,
3061 0, 0, 0, 1, 1, 0, 0, 0,
3062 0, 0, 0, 0, 0, 0, 0, 0,
3063 0, 0, 1, 1, 1, 1, 0, 0,
3064 0, 1, 0, 0, 0, 0, 1, 0,
3065 0, 1, 0, 0, 0, 0, 1, 0,
3066 0, 1, 0, 0, 0, 0, 0, 0,
3067 0, 0, 1, 1, 0, 0, 0, 0,
3068 0, 0, 0, 0, 1, 1, 0, 0,
3069 0, 0, 0, 0, 0, 0, 1, 0,
3070 0, 1, 0, 0, 0, 0, 1, 0,
3071 0, 1, 0, 0, 0, 0, 1, 0,
3072 0, 0, 1, 1, 1, 1, 0, 0,
3073 0, 0, 0, 0, 0, 0, 0, 0,
3074 0, 0, 0, 0, 0, 0, 0, 0,
3075 0, 0, 0, 0, 0, 0, 0, 0,
3076
3077 /* Char 170 */
3078 0, 0, 0, 0, 0, 0, 0, 0,
3079 0, 0, 0, 0, 0, 0, 0, 0,
3080 0, 0, 0, 0, 0, 0, 0, 0,
3081 0, 0, 1, 1, 1, 1, 0, 0,
3082 0, 1, 0, 0, 0, 0, 1, 0,
3083 0, 1, 0, 0, 0, 0, 1, 0,
3084 0, 1, 0, 0, 0, 0, 0, 0,
3085 0, 0, 1, 1, 0, 0, 0, 0,
3086 0, 0, 0, 0, 1, 1, 0, 0,
3087 0, 0, 0, 0, 0, 0, 1, 0,
3088 0, 1, 0, 0, 0, 0, 1, 0,
3089 0, 1, 0, 0, 0, 0, 1, 0,
3090 0, 0, 1, 1, 1, 1, 0, 0,
3091 0, 0, 0, 0, 1, 0, 0, 0,
3092 0, 0, 0, 0, 1, 0, 0, 0,
3093 0, 0, 0, 1, 0, 0, 0, 0,
3094
3095 /* Char 171 */
3096 0, 0, 1, 0, 1, 0, 0, 0,
3097 0, 0, 0, 1, 0, 0, 0, 0,
3098 0, 0, 0, 0, 0, 0, 0, 0,
3099 1, 1, 1, 1, 1, 1, 1, 0,
3100 0, 0, 0, 1, 0, 0, 0, 0,
3101 0, 0, 0, 1, 0, 0, 0, 0,
3102 0, 0, 0, 1, 0, 0, 0, 0,
3103 0, 0, 0, 1, 0, 0, 0, 0,
3104 0, 0, 0, 1, 0, 0, 0, 0,
3105 0, 0, 0, 1, 0, 0, 0, 0,
3106 0, 0, 0, 1, 0, 0, 0, 0,
3107 0, 0, 0, 1, 0, 0, 0, 0,
3108 0, 0, 0, 1, 0, 0, 0, 0,
3109 0, 0, 0, 0, 0, 0, 0, 0,
3110 0, 0, 0, 0, 0, 0, 0, 0,
3111 0, 0, 0, 0, 0, 0, 0, 0,
3112
3113 /* Char 172 */
3114 0, 0, 0, 0, 0, 1, 1, 0,
3115 0, 0, 0, 1, 1, 0, 0, 0,
3116 0, 0, 0, 0, 0, 0, 0, 0,
3117 0, 1, 1, 1, 1, 1, 1, 0,
3118 0, 0, 0, 0, 0, 0, 1, 0,
3119 0, 0, 0, 0, 0, 0, 1, 0,
3120 0, 0, 0, 0, 0, 1, 0, 0,
3121 0, 0, 0, 0, 1, 0, 0, 0,
3122 0, 0, 0, 1, 0, 0, 0, 0,
3123 0, 0, 1, 0, 0, 0, 0, 0,
3124 0, 1, 0, 0, 0, 0, 0, 0,
3125 0, 1, 0, 0, 0, 0, 0, 0,
3126 0, 1, 1, 1, 1, 1, 1, 0,
3127 0, 0, 0, 0, 0, 0, 0, 0,
3128 0, 0, 0, 0, 0, 0, 0, 0,
3129 0, 0, 0, 0, 0, 0, 0, 0,
3130
3131 /* Char 173 */
3132 0, 0, 0, 0, 0, 0, 0, 0,
3133 0, 0, 0, 0, 0, 0, 0, 0,
3134 0, 0, 0, 0, 0, 0, 0, 0,
3135 0, 0, 0, 0, 0, 0, 0, 0,
3136 0, 0, 0, 0, 0, 0, 0, 0,
3137 0, 0, 0, 0, 0, 0, 0, 0,
3138 0, 0, 0, 0, 0, 0, 0, 0,
3139 0, 0, 0, 0, 0, 0, 0, 0,
3140 0, 1, 1, 1, 1, 1, 1, 0,
3141 0, 0, 0, 0, 0, 0, 0, 0,
3142 0, 0, 0, 0, 0, 0, 0, 0,
3143 0, 0, 0, 0, 0, 0, 0, 0,
3144 0, 0, 0, 0, 0, 0, 0, 0,
3145 0, 0, 0, 0, 0, 0, 0, 0,
3146 0, 0, 0, 0, 0, 0, 0, 0,
3147 0, 0, 0, 0, 0, 0, 0, 0,
3148
3149 /* Char 174 */
3150 0, 0, 1, 0, 0, 1, 0, 0,
3151 0, 0, 0, 1, 1, 0, 0, 0,
3152 0, 0, 0, 0, 0, 0, 0, 0,
3153 0, 1, 1, 1, 1, 1, 1, 0,
3154 0, 0, 0, 0, 0, 0, 1, 0,
3155 0, 0, 0, 0, 0, 0, 1, 0,
3156 0, 0, 0, 0, 0, 1, 0, 0,
3157 0, 0, 0, 0, 1, 0, 0, 0,
3158 0, 0, 0, 1, 0, 0, 0, 0,
3159 0, 0, 1, 0, 0, 0, 0, 0,
3160 0, 1, 0, 0, 0, 0, 0, 0,
3161 0, 1, 0, 0, 0, 0, 0, 0,
3162 0, 1, 1, 1, 1, 1, 1, 0,
3163 0, 0, 0, 0, 0, 0, 0, 0,
3164 0, 0, 0, 0, 0, 0, 0, 0,
3165 0, 0, 0, 0, 0, 0, 0, 0,
3166
3167 /* Char 175 */
3168 0, 0, 0, 1, 1, 0, 0, 0,
3169 0, 0, 0, 1, 1, 0, 0, 0,
3170 0, 0, 0, 0, 0, 0, 0, 0,
3171 0, 1, 1, 1, 1, 1, 1, 0,
3172 0, 0, 0, 0, 0, 0, 1, 0,
3173 0, 0, 0, 0, 0, 0, 1, 0,
3174 0, 0, 0, 0, 0, 1, 0, 0,
3175 0, 0, 0, 0, 1, 0, 0, 0,
3176 0, 0, 0, 1, 0, 0, 0, 0,
3177 0, 0, 1, 0, 0, 0, 0, 0,
3178 0, 1, 0, 0, 0, 0, 0, 0,
3179 0, 1, 0, 0, 0, 0, 0, 0,
3180 0, 1, 1, 1, 1, 1, 1, 0,
3181 0, 0, 0, 0, 0, 0, 0, 0,
3182 0, 0, 0, 0, 0, 0, 0, 0,
3183 0, 0, 0, 0, 0, 0, 0, 0,
3184
3185 /* Char 176 */
3186 0, 0, 0, 0, 0, 0, 0, 0,
3187 0, 0, 0, 1, 1, 0, 0, 0,
3188 0, 0, 1, 0, 0, 1, 0, 0,
3189 0, 0, 0, 1, 1, 0, 0, 0,
3190 0, 0, 0, 0, 0, 0, 0, 0,
3191 0, 0, 0, 0, 0, 0, 0, 0,
3192 0, 0, 0, 0, 0, 0, 0, 0,
3193 0, 0, 0, 0, 0, 0, 0, 0,
3194 0, 0, 0, 0, 0, 0, 0, 0,
3195 0, 0, 0, 0, 0, 0, 0, 0,
3196 0, 0, 0, 0, 0, 0, 0, 0,
3197 0, 0, 0, 0, 0, 0, 0, 0,
3198 0, 0, 0, 0, 0, 0, 0, 0,
3199 0, 0, 0, 0, 0, 0, 0, 0,
3200 0, 0, 0, 0, 0, 0, 0, 0,
3201 0, 0, 0, 0, 0, 0, 0, 0,
3202
3203 /* Char 177 */
3204 0, 0, 0, 0, 0, 0, 0, 0,
3205 0, 0, 0, 0, 0, 0, 0, 0,
3206 0, 0, 0, 0, 0, 0, 0, 0,
3207 0, 0, 0, 0, 0, 0, 0, 0,
3208 0, 0, 0, 0, 0, 0, 0, 0,
3209 0, 0, 0, 0, 0, 0, 0, 0,
3210 0, 0, 1, 1, 1, 1, 0, 0,
3211 0, 1, 0, 0, 0, 0, 1, 0,
3212 0, 0, 0, 0, 1, 1, 1, 0,
3213 0, 0, 1, 1, 0, 0, 1, 0,
3214 0, 1, 0, 0, 0, 0, 1, 0,
3215 0, 1, 0, 0, 0, 1, 1, 0,
3216 0, 0, 1, 1, 1, 0, 1, 0,
3217 0, 0, 0, 0, 0, 1, 0, 0,
3218 0, 0, 0, 0, 1, 0, 0, 0,
3219 0, 0, 0, 0, 0, 1, 1, 0,
3220
3221 /* Char 178 */
3222 0, 0, 0, 0, 0, 0, 0, 0,
3223 0, 0, 0, 0, 0, 0, 0, 0,
3224 0, 0, 0, 0, 0, 0, 0, 0,
3225 0, 0, 0, 0, 0, 0, 0, 0,
3226 0, 0, 0, 0, 0, 0, 0, 0,
3227 0, 0, 0, 0, 0, 0, 0, 0,
3228 0, 0, 0, 0, 0, 0, 0, 0,
3229 0, 0, 0, 0, 0, 0, 0, 0,
3230 0, 0, 0, 0, 0, 0, 0, 0,
3231 0, 0, 0, 0, 0, 0, 0, 0,
3232 0, 0, 0, 0, 0, 0, 0, 0,
3233 0, 0, 0, 0, 0, 0, 0, 0,
3234 0, 0, 0, 0, 0, 0, 0, 0,
3235 0, 0, 0, 0, 1, 0, 0, 0,
3236 0, 0, 0, 1, 0, 0, 0, 0,
3237 0, 0, 0, 0, 1, 1, 1, 0,
3238
3239 /* Char 179 */
3240 0, 0, 0, 0, 0, 0, 0, 0,
3241 0, 0, 0, 0, 0, 0, 0, 0,
3242 0, 0, 0, 0, 0, 0, 0, 0,
3243 0, 0, 1, 1, 0, 0, 0, 0,
3244 0, 0, 0, 1, 0, 0, 0, 0,
3245 0, 0, 0, 1, 0, 1, 0, 0,
3246 0, 0, 0, 1, 1, 0, 0, 0,
3247 0, 0, 0, 1, 0, 0, 0, 0,
3248 0, 0, 1, 1, 0, 0, 0, 0,
3249 0, 1, 0, 1, 0, 0, 0, 0,
3250 0, 0, 0, 1, 0, 0, 0, 0,
3251 0, 0, 0, 1, 0, 0, 0, 0,
3252 0, 1, 1, 1, 1, 1, 0, 0,
3253 0, 0, 0, 0, 0, 0, 0, 0,
3254 0, 0, 0, 0, 0, 0, 0, 0,
3255 0, 0, 0, 0, 0, 0, 0, 0,
3256
3257 /* Char 180 */
3258 0, 0, 0, 0, 0, 0, 0, 0,
3259 0, 0, 0, 0, 1, 1, 0, 0,
3260 0, 0, 1, 1, 0, 0, 0, 0,
3261 0, 0, 0, 0, 0, 0, 0, 0,
3262 0, 0, 0, 0, 0, 0, 0, 0,
3263 0, 0, 0, 0, 0, 0, 0, 0,
3264 0, 0, 0, 0, 0, 0, 0, 0,
3265 0, 0, 0, 0, 0, 0, 0, 0,
3266 0, 0, 0, 0, 0, 0, 0, 0,
3267 0, 0, 0, 0, 0, 0, 0, 0,
3268 0, 0, 0, 0, 0, 0, 0, 0,
3269 0, 0, 0, 0, 0, 0, 0, 0,
3270 0, 0, 0, 0, 0, 0, 0, 0,
3271 0, 0, 0, 0, 0, 0, 0, 0,
3272 0, 0, 0, 0, 0, 0, 0, 0,
3273 0, 0, 0, 0, 0, 0, 0, 0,
3274
3275 /* Char 181 */
3276 0, 0, 0, 0, 0, 0, 0, 0,
3277 0, 0, 0, 0, 0, 0, 0, 0,
3278 0, 0, 0, 0, 0, 1, 1, 0,
3279 0, 0, 1, 1, 0, 0, 1, 0,
3280 0, 0, 0, 1, 0, 0, 1, 0,
3281 0, 0, 0, 1, 0, 1, 0, 0,
3282 0, 0, 0, 1, 0, 0, 0, 0,
3283 0, 0, 0, 1, 0, 0, 0, 0,
3284 0, 0, 0, 1, 0, 0, 0, 0,
3285 0, 0, 0, 1, 0, 0, 0, 0,
3286 0, 0, 0, 1, 0, 0, 0, 0,
3287 0, 0, 0, 1, 0, 0, 0, 0,
3288 0, 1, 1, 1, 1, 1, 0, 0,
3289 0, 0, 0, 0, 0, 0, 0, 0,
3290 0, 0, 0, 0, 0, 0, 0, 0,
3291 0, 0, 0, 0, 0, 0, 0, 0,
3292
3293 /* Char 182 */
3294 0, 0, 0, 0, 0, 0, 0, 0,
3295 0, 0, 0, 0, 0, 0, 0, 0,
3296 0, 0, 0, 0, 0, 1, 0, 0,
3297 0, 0, 0, 0, 1, 0, 0, 0,
3298 0, 0, 0, 1, 0, 0, 0, 0,
3299 0, 0, 0, 0, 0, 0, 0, 0,
3300 0, 0, 1, 1, 1, 1, 0, 0,
3301 0, 1, 0, 0, 0, 0, 1, 0,
3302 0, 1, 0, 0, 0, 0, 0, 0,
3303 0, 0, 1, 1, 1, 1, 0, 0,
3304 0, 0, 0, 0, 0, 0, 1, 0,
3305 0, 1, 0, 0, 0, 0, 1, 0,
3306 0, 0, 1, 1, 1, 1, 0, 0,
3307 0, 0, 0, 0, 0, 0, 0, 0,
3308 0, 0, 0, 0, 0, 0, 0, 0,
3309 0, 0, 0, 0, 0, 0, 0, 0,
3310
3311 /* Char 183 */
3312 0, 0, 0, 0, 0, 0, 0, 0,
3313 0, 1, 0, 0, 0, 1, 0, 0,
3314 0, 0, 1, 0, 1, 0, 0, 0,
3315 0, 0, 0, 1, 0, 0, 0, 0,
3316 0, 0, 0, 0, 0, 0, 0, 0,
3317 0, 0, 0, 0, 0, 0, 0, 0,
3318 0, 0, 0, 0, 0, 0, 0, 0,
3319 0, 0, 0, 0, 0, 0, 0, 0,
3320 0, 0, 0, 0, 0, 0, 0, 0,
3321 0, 0, 0, 0, 0, 0, 0, 0,
3322 0, 0, 0, 0, 0, 0, 0, 0,
3323 0, 0, 0, 0, 0, 0, 0, 0,
3324 0, 0, 0, 0, 0, 0, 0, 0,
3325 0, 0, 0, 0, 0, 0, 0, 0,
3326 0, 0, 0, 0, 0, 0, 0, 0,
3327 0, 0, 0, 0, 0, 0, 0, 0,
3328
3329 /* Char 184 */
3330 0, 0, 0, 0, 0, 0, 0, 0,
3331 0, 0, 0, 0, 0, 0, 0, 0,
3332 0, 0, 0, 0, 0, 0, 0, 0,
3333 0, 0, 0, 0, 0, 0, 0, 0,
3334 0, 0, 0, 0, 0, 0, 0, 0,
3335 0, 0, 0, 0, 0, 0, 0, 0,
3336 0, 0, 0, 0, 0, 0, 0, 0,
3337 0, 0, 0, 0, 0, 0, 0, 0,
3338 0, 0, 0, 0, 0, 0, 0, 0,
3339 0, 0, 0, 0, 0, 0, 0, 0,
3340 0, 0, 0, 0, 0, 0, 0, 0,
3341 0, 0, 0, 0, 0, 0, 0, 0,
3342 0, 0, 0, 0, 0, 0, 0, 0,
3343 0, 0, 0, 0, 1, 0, 0, 0,
3344 0, 0, 0, 0, 0, 1, 0, 0,
3345 0, 0, 1, 1, 1, 0, 0, 0,
3346
3347 /* Char 185 */
3348 0, 0, 0, 0, 0, 0, 0, 0,
3349 0, 0, 0, 0, 0, 0, 0, 0,
3350 0, 0, 0, 0, 0, 0, 0, 0,
3351 0, 0, 1, 0, 0, 1, 0, 0,
3352 0, 0, 0, 1, 1, 0, 0, 0,
3353 0, 0, 0, 0, 0, 0, 0, 0,
3354 0, 0, 1, 1, 1, 1, 0, 0,
3355 0, 1, 0, 0, 0, 0, 1, 0,
3356 0, 1, 0, 0, 0, 0, 0, 0,
3357 0, 0, 1, 1, 1, 1, 0, 0,
3358 0, 0, 0, 0, 0, 0, 1, 0,
3359 0, 1, 0, 0, 0, 0, 1, 0,
3360 0, 0, 1, 1, 1, 1, 0, 0,
3361 0, 0, 0, 0, 0, 0, 0, 0,
3362 0, 0, 0, 0, 0, 0, 0, 0,
3363 0, 0, 0, 0, 0, 0, 0, 0,
3364
3365 /* Char 186 */
3366 0, 0, 0, 0, 0, 0, 0, 0,
3367 0, 0, 0, 0, 0, 0, 0, 0,
3368 0, 0, 0, 0, 0, 0, 0, 0,
3369 0, 0, 0, 0, 0, 0, 0, 0,
3370 0, 0, 0, 0, 0, 0, 0, 0,
3371 0, 0, 0, 0, 0, 0, 0, 0,
3372 0, 0, 1, 1, 1, 1, 0, 0,
3373 0, 1, 0, 0, 0, 0, 1, 0,
3374 0, 1, 0, 0, 0, 0, 0, 0,
3375 0, 0, 1, 1, 1, 1, 0, 0,
3376 0, 0, 0, 0, 0, 0, 1, 0,
3377 0, 1, 0, 0, 0, 0, 1, 0,
3378 0, 0, 1, 1, 1, 1, 0, 0,
3379 0, 0, 0, 0, 1, 0, 0, 0,
3380 0, 0, 0, 0, 1, 0, 0, 0,
3381 0, 0, 0, 1, 0, 0, 0, 0,
3382
3383 /* Char 187 */
3384 0, 0, 0, 0, 0, 0, 0, 0,
3385 0, 0, 0, 0, 0, 0, 0, 0,
3386 0, 0, 0, 0, 0, 0, 0, 0,
3387 0, 0, 0, 0, 0, 1, 1, 0,
3388 0, 0, 1, 0, 0, 0, 1, 0,
3389 0, 0, 1, 0, 0, 0, 1, 0,
3390 1, 1, 1, 1, 0, 1, 0, 0,
3391 0, 0, 1, 0, 0, 0, 0, 0,
3392 0, 0, 1, 0, 0, 0, 0, 0,
3393 0, 0, 1, 0, 0, 0, 0, 0,
3394 0, 0, 1, 0, 0, 0, 0, 0,
3395 0, 0, 1, 0, 0, 1, 0, 0,
3396 0, 0, 0, 1, 1, 0, 0, 0,
3397 0, 0, 0, 0, 0, 0, 0, 0,
3398 0, 0, 0, 0, 0, 0, 0, 0,
3399 0, 0, 0, 0, 0, 0, 0, 0,
3400
3401 /* Char 188 */
3402 0, 0, 0, 0, 0, 0, 0, 0,
3403 0, 0, 0, 0, 0, 0, 0, 0,
3404 0, 0, 0, 0, 0, 1, 0, 0,
3405 0, 0, 0, 0, 1, 0, 0, 0,
3406 0, 0, 0, 1, 0, 0, 0, 0,
3407 0, 0, 0, 0, 0, 0, 0, 0,
3408 0, 1, 1, 1, 1, 1, 1, 0,
3409 0, 0, 0, 0, 0, 1, 0, 0,
3410 0, 0, 0, 0, 1, 0, 0, 0,
3411 0, 0, 0, 1, 0, 0, 0, 0,
3412 0, 0, 1, 0, 0, 0, 0, 0,
3413 0, 1, 0, 0, 0, 0, 0, 0,
3414 0, 1, 1, 1, 1, 1, 1, 0,
3415 0, 0, 0, 0, 0, 0, 0, 0,
3416 0, 0, 0, 0, 0, 0, 0, 0,
3417 0, 0, 0, 0, 0, 0, 0, 0,
3418
3419 /* Char 189 */
3420 0, 0, 0, 0, 0, 0, 0, 0,
3421 0, 0, 0, 1, 0, 0, 1, 0,
3422 0, 0, 1, 0, 0, 1, 0, 0,
3423 0, 1, 0, 0, 1, 0, 0, 0,
3424 0, 0, 0, 0, 0, 0, 0, 0,
3425 0, 0, 0, 0, 0, 0, 0, 0,
3426 0, 0, 0, 0, 0, 0, 0, 0,
3427 0, 0, 0, 0, 0, 0, 0, 0,
3428 0, 0, 0, 0, 0, 0, 0, 0,
3429 0, 0, 0, 0, 0, 0, 0, 0,
3430 0, 0, 0, 0, 0, 0, 0, 0,
3431 0, 0, 0, 0, 0, 0, 0, 0,
3432 0, 0, 0, 0, 0, 0, 0, 0,
3433 0, 0, 0, 0, 0, 0, 0, 0,
3434 0, 0, 0, 0, 0, 0, 0, 0,
3435 0, 0, 0, 0, 0, 0, 0, 0,
3436
3437 /* Char 190 */
3438 0, 0, 0, 0, 0, 0, 0, 0,
3439 0, 0, 0, 0, 0, 0, 0, 0,
3440 0, 0, 0, 0, 0, 0, 0, 0,
3441 0, 0, 1, 0, 0, 1, 0, 0,
3442 0, 0, 0, 1, 1, 0, 0, 0,
3443 0, 0, 0, 0, 0, 0, 0, 0,
3444 0, 1, 1, 1, 1, 1, 1, 0,
3445 0, 0, 0, 0, 0, 1, 0, 0,
3446 0, 0, 0, 0, 1, 0, 0, 0,
3447 0, 0, 0, 1, 0, 0, 0, 0,
3448 0, 0, 1, 0, 0, 0, 0, 0,
3449 0, 1, 0, 0, 0, 0, 0, 0,
3450 0, 1, 1, 1, 1, 1, 1, 0,
3451 0, 0, 0, 0, 0, 0, 0, 0,
3452 0, 0, 0, 0, 0, 0, 0, 0,
3453 0, 0, 0, 0, 0, 0, 0, 0,
3454
3455 /* Char 191 */
3456 0, 0, 0, 0, 0, 0, 0, 0,
3457 0, 0, 0, 0, 0, 0, 0, 0,
3458 0, 0, 0, 0, 0, 0, 0, 0,
3459 0, 0, 0, 1, 1, 0, 0, 0,
3460 0, 0, 0, 1, 1, 0, 0, 0,
3461 0, 0, 0, 0, 0, 0, 0, 0,
3462 0, 1, 1, 1, 1, 1, 1, 0,
3463 0, 0, 0, 0, 0, 1, 0, 0,
3464 0, 0, 0, 0, 1, 0, 0, 0,
3465 0, 0, 0, 1, 0, 0, 0, 0,
3466 0, 0, 1, 0, 0, 0, 0, 0,
3467 0, 1, 0, 0, 0, 0, 0, 0,
3468 0, 1, 1, 1, 1, 1, 1, 0,
3469 0, 0, 0, 0, 0, 0, 0, 0,
3470 0, 0, 0, 0, 0, 0, 0, 0,
3471 0, 0, 0, 0, 0, 0, 0, 0,
3472
3473 /* Char 192 */
3474 0, 0, 0, 0, 0, 1, 1, 0,
3475 0, 0, 0, 1, 1, 0, 0, 0,
3476 0, 0, 0, 0, 0, 0, 0, 0,
3477 0, 1, 1, 1, 1, 1, 0, 0,
3478 0, 1, 0, 0, 0, 0, 1, 0,
3479 0, 1, 0, 0, 0, 0, 1, 0,
3480 0, 1, 0, 0, 0, 0, 1, 0,
3481 0, 1, 1, 1, 1, 1, 0, 0,
3482 0, 1, 0, 0, 1, 0, 0, 0,
3483 0, 1, 0, 0, 0, 1, 0, 0,
3484 0, 1, 0, 0, 0, 1, 0, 0,
3485 0, 1, 0, 0, 0, 0, 1, 0,
3486 0, 1, 0, 0, 0, 0, 1, 0,
3487 0, 0, 0, 0, 0, 0, 0, 0,
3488 0, 0, 0, 0, 0, 0, 0, 0,
3489 0, 0, 0, 0, 0, 0, 0, 0,
3490
3491 /* Char 193 */
3492 0, 0, 0, 0, 0, 1, 1, 0,
3493 0, 0, 0, 1, 1, 0, 0, 0,
3494 0, 0, 0, 0, 0, 0, 0, 0,
3495 0, 0, 0, 1, 1, 0, 0, 0,
3496 0, 0, 1, 0, 0, 1, 0, 0,
3497 0, 1, 0, 0, 0, 0, 1, 0,
3498 0, 1, 0, 0, 0, 0, 1, 0,
3499 0, 1, 0, 0, 0, 0, 1, 0,
3500 0, 1, 1, 1, 1, 1, 1, 0,
3501 0, 1, 0, 0, 0, 0, 1, 0,
3502 0, 1, 0, 0, 0, 0, 1, 0,
3503 0, 1, 0, 0, 0, 0, 1, 0,
3504 0, 1, 0, 0, 0, 0, 1, 0,
3505 0, 0, 0, 0, 0, 0, 0, 0,
3506 0, 0, 0, 0, 0, 0, 0, 0,
3507 0, 0, 0, 0, 0, 0, 0, 0,
3508
3509 /* Char 194 */
3510 0, 0, 0, 1, 1, 0, 0, 0,
3511 0, 0, 1, 0, 0, 1, 0, 0,
3512 0, 0, 0, 0, 0, 0, 0, 0,
3513 0, 0, 0, 1, 1, 0, 0, 0,
3514 0, 0, 1, 0, 0, 1, 0, 0,
3515 0, 1, 0, 0, 0, 0, 1, 0,
3516 0, 1, 0, 0, 0, 0, 1, 0,
3517 0, 1, 0, 0, 0, 0, 1, 0,
3518 0, 1, 1, 1, 1, 1, 1, 0,
3519 0, 1, 0, 0, 0, 0, 1, 0,
3520 0, 1, 0, 0, 0, 0, 1, 0,
3521 0, 1, 0, 0, 0, 0, 1, 0,
3522 0, 1, 0, 0, 0, 0, 1, 0,
3523 0, 0, 0, 0, 0, 0, 0, 0,
3524 0, 0, 0, 0, 0, 0, 0, 0,
3525 0, 0, 0, 0, 0, 0, 0, 0,
3526
3527 /* Char 195 */
3528 0, 1, 0, 0, 0, 0, 1, 0,
3529 0, 0, 1, 1, 1, 1, 0, 0,
3530 0, 0, 0, 0, 0, 0, 0, 0,
3531 0, 0, 0, 1, 1, 0, 0, 0,
3532 0, 0, 1, 0, 0, 1, 0, 0,
3533 0, 1, 0, 0, 0, 0, 1, 0,
3534 0, 1, 0, 0, 0, 0, 1, 0,
3535 0, 1, 0, 0, 0, 0, 1, 0,
3536 0, 1, 1, 1, 1, 1, 1, 0,
3537 0, 1, 0, 0, 0, 0, 1, 0,
3538 0, 1, 0, 0, 0, 0, 1, 0,
3539 0, 1, 0, 0, 0, 0, 1, 0,
3540 0, 1, 0, 0, 0, 0, 1, 0,
3541 0, 0, 0, 0, 0, 0, 0, 0,
3542 0, 0, 0, 0, 0, 0, 0, 0,
3543 0, 0, 0, 0, 0, 0, 0, 0,
3544
3545 /* Char 196 */
3546 0, 0, 1, 0, 0, 1, 0, 0,
3547 0, 0, 1, 0, 0, 1, 0, 0,
3548 0, 0, 0, 0, 0, 0, 0, 0,
3549 0, 0, 0, 1, 1, 0, 0, 0,
3550 0, 0, 1, 0, 0, 1, 0, 0,
3551 0, 1, 0, 0, 0, 0, 1, 0,
3552 0, 1, 0, 0, 0, 0, 1, 0,
3553 0, 1, 0, 0, 0, 0, 1, 0,
3554 0, 1, 1, 1, 1, 1, 1, 0,
3555 0, 1, 0, 0, 0, 0, 1, 0,
3556 0, 1, 0, 0, 0, 0, 1, 0,
3557 0, 1, 0, 0, 0, 0, 1, 0,
3558 0, 1, 0, 0, 0, 0, 1, 0,
3559 0, 0, 0, 0, 0, 0, 0, 0,
3560 0, 0, 0, 0, 0, 0, 0, 0,
3561 0, 0, 0, 0, 0, 0, 0, 0,
3562
3563 /* Char 197 */
3564 0, 0, 0, 0, 1, 1, 0, 0,
3565 0, 0, 1, 1, 0, 0, 0, 0,
3566 0, 0, 0, 0, 0, 0, 0, 0,
3567 0, 1, 0, 0, 0, 0, 0, 0,
3568 0, 1, 0, 0, 0, 0, 0, 0,
3569 0, 1, 0, 0, 0, 0, 0, 0,
3570 0, 1, 0, 0, 0, 0, 0, 0,
3571 0, 1, 0, 0, 0, 0, 0, 0,
3572 0, 1, 0, 0, 0, 0, 0, 0,
3573 0, 1, 0, 0, 0, 0, 0, 0,
3574 0, 1, 0, 0, 0, 0, 0, 0,
3575 0, 1, 0, 0, 0, 0, 0, 0,
3576 0, 1, 1, 1, 1, 1, 1, 0,
3577 0, 0, 0, 0, 0, 0, 0, 0,
3578 0, 0, 0, 0, 0, 0, 0, 0,
3579 0, 0, 0, 0, 0, 0, 0, 0,
3580
3581 /* Char 198 */
3582 0, 0, 0, 0, 0, 1, 1, 0,
3583 0, 0, 0, 1, 1, 0, 0, 0,
3584 0, 0, 0, 0, 0, 0, 0, 0,
3585 0, 0, 1, 1, 1, 1, 0, 0,
3586 0, 1, 0, 0, 0, 0, 1, 0,
3587 0, 1, 0, 0, 0, 0, 0, 0,
3588 0, 1, 0, 0, 0, 0, 0, 0,
3589 0, 1, 0, 0, 0, 0, 0, 0,
3590 0, 1, 0, 0, 0, 0, 0, 0,
3591 0, 1, 0, 0, 0, 0, 0, 0,
3592 0, 1, 0, 0, 0, 0, 0, 0,
3593 0, 1, 0, 0, 0, 0, 1, 0,
3594 0, 0, 1, 1, 1, 1, 0, 0,
3595 0, 0, 0, 0, 0, 0, 0, 0,
3596 0, 0, 0, 0, 0, 0, 0, 0,
3597 0, 0, 0, 0, 0, 0, 0, 0,
3598
3599 /* Char 199 */
3600 0, 0, 0, 0, 0, 0, 0, 0,
3601 0, 0, 0, 0, 0, 0, 0, 0,
3602 0, 0, 0, 0, 0, 0, 0, 0,
3603 0, 0, 1, 1, 1, 1, 0, 0,
3604 0, 1, 0, 0, 0, 0, 1, 0,
3605 0, 1, 0, 0, 0, 0, 0, 0,
3606 0, 1, 0, 0, 0, 0, 0, 0,
3607 0, 1, 0, 0, 0, 0, 0, 0,
3608 0, 1, 0, 0, 0, 0, 0, 0,
3609 0, 1, 0, 0, 0, 0, 0, 0,
3610 0, 1, 0, 0, 0, 0, 0, 0,
3611 0, 1, 0, 0, 0, 0, 1, 0,
3612 0, 0, 1, 1, 1, 1, 0, 0,
3613 0, 0, 0, 0, 1, 0, 0, 0,
3614 0, 0, 0, 0, 0, 1, 0, 0,
3615 0, 0, 1, 1, 1, 0, 0, 0,
3616
3617 /* Char 200 */
3618 0, 0, 1, 0, 0, 1, 0, 0,
3619 0, 0, 0, 1, 1, 0, 0, 0,
3620 0, 0, 0, 0, 0, 0, 0, 0,
3621 0, 0, 1, 1, 1, 1, 0, 0,
3622 0, 1, 0, 0, 0, 0, 1, 0,
3623 0, 1, 0, 0, 0, 0, 0, 0,
3624 0, 1, 0, 0, 0, 0, 0, 0,
3625 0, 1, 0, 0, 0, 0, 0, 0,
3626 0, 1, 0, 0, 0, 0, 0, 0,
3627 0, 1, 0, 0, 0, 0, 0, 0,
3628 0, 1, 0, 0, 0, 0, 0, 0,
3629 0, 1, 0, 0, 0, 0, 1, 0,
3630 0, 0, 1, 1, 1, 1, 0, 0,
3631 0, 0, 0, 0, 0, 0, 0, 0,
3632 0, 0, 0, 0, 0, 0, 0, 0,
3633 0, 0, 0, 0, 0, 0, 0, 0,
3634
3635 /* Char 201 */
3636 0, 0, 0, 0, 0, 1, 1, 0,
3637 0, 0, 0, 1, 1, 0, 0, 0,
3638 0, 0, 0, 0, 0, 0, 0, 0,
3639 0, 1, 1, 1, 1, 1, 1, 0,
3640 0, 1, 0, 0, 0, 0, 0, 0,
3641 0, 1, 0, 0, 0, 0, 0, 0,
3642 0, 1, 0, 0, 0, 0, 0, 0,
3643 0, 1, 1, 1, 1, 1, 0, 0,
3644 0, 1, 0, 0, 0, 0, 0, 0,
3645 0, 1, 0, 0, 0, 0, 0, 0,
3646 0, 1, 0, 0, 0, 0, 0, 0,
3647 0, 1, 0, 0, 0, 0, 0, 0,
3648 0, 1, 1, 1, 1, 1, 1, 0,
3649 0, 0, 0, 0, 0, 0, 0, 0,
3650 0, 0, 0, 0, 0, 0, 0, 0,
3651 0, 0, 0, 0, 0, 0, 0, 0,
3652
3653 /* Char 202 */
3654 0, 0, 0, 0, 0, 0, 0, 0,
3655 0, 0, 0, 0, 0, 0, 0, 0,
3656 0, 0, 0, 0, 0, 0, 0, 0,
3657 0, 1, 1, 1, 1, 1, 1, 0,
3658 0, 1, 0, 0, 0, 0, 0, 0,
3659 0, 1, 0, 0, 0, 0, 0, 0,
3660 0, 1, 0, 0, 0, 0, 0, 0,
3661 0, 1, 1, 1, 1, 1, 0, 0,
3662 0, 1, 0, 0, 0, 0, 0, 0,
3663 0, 1, 0, 0, 0, 0, 0, 0,
3664 0, 1, 0, 0, 0, 0, 0, 0,
3665 0, 1, 0, 0, 0, 0, 0, 0,
3666 0, 1, 1, 1, 1, 1, 1, 0,
3667 0, 0, 0, 0, 0, 1, 0, 0,
3668 0, 0, 0, 0, 1, 0, 0, 0,
3669 0, 0, 0, 0, 0, 1, 1, 0,
3670
3671 /* Char 203 */
3672 0, 0, 1, 0, 0, 1, 0, 0,
3673 0, 0, 1, 0, 0, 1, 0, 0,
3674 0, 0, 0, 0, 0, 0, 0, 0,
3675 0, 1, 1, 1, 1, 1, 1, 0,
3676 0, 1, 0, 0, 0, 0, 0, 0,
3677 0, 1, 0, 0, 0, 0, 0, 0,
3678 0, 1, 0, 0, 0, 0, 0, 0,
3679 0, 1, 1, 1, 1, 1, 0, 0,
3680 0, 1, 0, 0, 0, 0, 0, 0,
3681 0, 1, 0, 0, 0, 0, 0, 0,
3682 0, 1, 0, 0, 0, 0, 0, 0,
3683 0, 1, 0, 0, 0, 0, 0, 0,
3684 0, 1, 1, 1, 1, 1, 1, 0,
3685 0, 0, 0, 0, 0, 0, 0, 0,
3686 0, 0, 0, 0, 0, 0, 0, 0,
3687 0, 0, 0, 0, 0, 0, 0, 0,
3688
3689 /* Char 204 */
3690 0, 0, 1, 0, 0, 1, 0, 0,
3691 0, 0, 0, 1, 1, 0, 0, 0,
3692 0, 0, 0, 0, 0, 0, 0, 0,
3693 0, 1, 1, 1, 1, 1, 1, 0,
3694 0, 1, 0, 0, 0, 0, 0, 0,
3695 0, 1, 0, 0, 0, 0, 0, 0,
3696 0, 1, 0, 0, 0, 0, 0, 0,
3697 0, 1, 1, 1, 1, 1, 0, 0,
3698 0, 1, 0, 0, 0, 0, 0, 0,
3699 0, 1, 0, 0, 0, 0, 0, 0,
3700 0, 1, 0, 0, 0, 0, 0, 0,
3701 0, 1, 0, 0, 0, 0, 0, 0,
3702 0, 1, 1, 1, 1, 1, 1, 0,
3703 0, 0, 0, 0, 0, 0, 0, 0,
3704 0, 0, 0, 0, 0, 0, 0, 0,
3705 0, 0, 0, 0, 0, 0, 0, 0,
3706
3707 /* Char 205 */
3708 0, 0, 0, 0, 1, 1, 0, 0,
3709 0, 0, 1, 1, 0, 0, 0, 0,
3710 0, 0, 0, 0, 0, 0, 0, 0,
3711 0, 1, 1, 1, 1, 1, 0, 0,
3712 0, 0, 0, 1, 0, 0, 0, 0,
3713 0, 0, 0, 1, 0, 0, 0, 0,
3714 0, 0, 0, 1, 0, 0, 0, 0,
3715 0, 0, 0, 1, 0, 0, 0, 0,
3716 0, 0, 0, 1, 0, 0, 0, 0,
3717 0, 0, 0, 1, 0, 0, 0, 0,
3718 0, 0, 0, 1, 0, 0, 0, 0,
3719 0, 0, 0, 1, 0, 0, 0, 0,
3720 0, 1, 1, 1, 1, 1, 0, 0,
3721 0, 0, 0, 0, 0, 0, 0, 0,
3722 0, 0, 0, 0, 0, 0, 0, 0,
3723 0, 0, 0, 0, 0, 0, 0, 0,
3724
3725 /* Char 206 */
3726 0, 0, 1, 1, 1, 0, 0, 0,
3727 0, 1, 0, 0, 0, 1, 0, 0,
3728 0, 0, 0, 0, 0, 0, 0, 0,
3729 0, 1, 1, 1, 1, 1, 0, 0,
3730 0, 0, 0, 1, 0, 0, 0, 0,
3731 0, 0, 0, 1, 0, 0, 0, 0,
3732 0, 0, 0, 1, 0, 0, 0, 0,
3733 0, 0, 0, 1, 0, 0, 0, 0,
3734 0, 0, 0, 1, 0, 0, 0, 0,
3735 0, 0, 0, 1, 0, 0, 0, 0,
3736 0, 0, 0, 1, 0, 0, 0, 0,
3737 0, 0, 0, 1, 0, 0, 0, 0,
3738 0, 1, 1, 1, 1, 1, 0, 0,
3739 0, 0, 0, 0, 0, 0, 0, 0,
3740 0, 0, 0, 0, 0, 0, 0, 0,
3741 0, 0, 0, 0, 0, 0, 0, 0,
3742
3743 /* Char 207 */
3744 0, 0, 1, 0, 0, 1, 0, 0,
3745 0, 0, 0, 1, 1, 0, 0, 0,
3746 0, 0, 0, 0, 0, 0, 0, 0,
3747 0, 1, 1, 1, 1, 0, 0, 0,
3748 0, 1, 0, 0, 0, 1, 0, 0,
3749 0, 1, 0, 0, 0, 0, 1, 0,
3750 0, 1, 0, 0, 0, 0, 1, 0,
3751 0, 1, 0, 0, 0, 0, 1, 0,
3752 0, 1, 0, 0, 0, 0, 1, 0,
3753 0, 1, 0, 0, 0, 0, 1, 0,
3754 0, 1, 0, 0, 0, 0, 1, 0,
3755 0, 1, 0, 0, 0, 1, 0, 0,
3756 0, 1, 1, 1, 1, 0, 0, 0,
3757 0, 0, 0, 0, 0, 0, 0, 0,
3758 0, 0, 0, 0, 0, 0, 0, 0,
3759 0, 0, 0, 0, 0, 0, 0, 0,
3760
3761 /* Char 208 */
3762 0, 0, 0, 0, 0, 0, 0, 0,
3763 0, 0, 0, 0, 0, 0, 0, 0,
3764 0, 0, 0, 0, 0, 0, 0, 0,
3765 0, 1, 1, 1, 1, 0, 0, 0,
3766 0, 1, 0, 0, 0, 1, 0, 0,
3767 0, 1, 0, 0, 0, 0, 1, 0,
3768 0, 1, 0, 0, 0, 0, 1, 0,
3769 1, 1, 1, 1, 0, 0, 1, 0,
3770 0, 1, 0, 0, 0, 0, 1, 0,
3771 0, 1, 0, 0, 0, 0, 1, 0,
3772 0, 1, 0, 0, 0, 0, 1, 0,
3773 0, 1, 0, 0, 0, 1, 0, 0,
3774 0, 1, 1, 1, 1, 0, 0, 0,
3775 0, 0, 0, 0, 0, 0, 0, 0,
3776 0, 0, 0, 0, 0, 0, 0, 0,
3777 0, 0, 0, 0, 0, 0, 0, 0,
3778
3779 /* Char 209 */
3780 0, 0, 0, 0, 0, 1, 1, 0,
3781 0, 0, 0, 1, 1, 0, 0, 0,
3782 0, 0, 0, 0, 0, 0, 0, 0,
3783 0, 1, 0, 0, 0, 0, 1, 0,
3784 0, 1, 1, 0, 0, 0, 1, 0,
3785 0, 1, 1, 0, 0, 0, 1, 0,
3786 0, 1, 0, 1, 0, 0, 1, 0,
3787 0, 1, 0, 1, 0, 0, 1, 0,
3788 0, 1, 0, 0, 1, 0, 1, 0,
3789 0, 1, 0, 0, 1, 0, 1, 0,
3790 0, 1, 0, 0, 0, 1, 1, 0,
3791 0, 1, 0, 0, 0, 1, 1, 0,
3792 0, 1, 0, 0, 0, 0, 1, 0,
3793 0, 0, 0, 0, 0, 0, 0, 0,
3794 0, 0, 0, 0, 0, 0, 0, 0,
3795 0, 0, 0, 0, 0, 0, 0, 0,
3796
3797 /* Char 210 */
3798 0, 0, 1, 0, 0, 1, 0, 0,
3799 0, 0, 0, 1, 1, 0, 0, 0,
3800 0, 0, 0, 0, 0, 0, 0, 0,
3801 0, 1, 0, 0, 0, 0, 1, 0,
3802 0, 1, 1, 0, 0, 0, 1, 0,
3803 0, 1, 1, 0, 0, 0, 1, 0,
3804 0, 1, 0, 1, 0, 0, 1, 0,
3805 0, 1, 0, 1, 0, 0, 1, 0,
3806 0, 1, 0, 0, 1, 0, 1, 0,
3807 0, 1, 0, 0, 1, 0, 1, 0,
3808 0, 1, 0, 0, 0, 1, 1, 0,
3809 0, 1, 0, 0, 0, 1, 1, 0,
3810 0, 1, 0, 0, 0, 0, 1, 0,
3811 0, 0, 0, 0, 0, 0, 0, 0,
3812 0, 0, 0, 0, 0, 0, 0, 0,
3813 0, 0, 0, 0, 0, 0, 0, 0,
3814
3815 /* Char 211 */
3816 0, 0, 0, 0, 0, 1, 1, 0,
3817 0, 0, 0, 1, 1, 0, 0, 0,
3818 0, 0, 0, 0, 0, 0, 0, 0,
3819 0, 0, 1, 1, 1, 1, 0, 0,
3820 0, 1, 0, 0, 0, 0, 1, 0,
3821 0, 1, 0, 0, 0, 0, 1, 0,
3822 0, 1, 0, 0, 0, 0, 1, 0,
3823 0, 1, 0, 0, 0, 0, 1, 0,
3824 0, 1, 0, 0, 0, 0, 1, 0,
3825 0, 1, 0, 0, 0, 0, 1, 0,
3826 0, 1, 0, 0, 0, 0, 1, 0,
3827 0, 1, 0, 0, 0, 0, 1, 0,
3828 0, 0, 1, 1, 1, 1, 0, 0,
3829 0, 0, 0, 0, 0, 0, 0, 0,
3830 0, 0, 0, 0, 0, 0, 0, 0,
3831 0, 0, 0, 0, 0, 0, 0, 0,
3832
3833 /* Char 212 */
3834 0, 0, 0, 1, 1, 0, 0, 0,
3835 0, 0, 1, 0, 0, 1, 0, 0,
3836 0, 0, 0, 0, 0, 0, 0, 0,
3837 0, 0, 1, 1, 1, 1, 0, 0,
3838 0, 1, 0, 0, 0, 0, 1, 0,
3839 0, 1, 0, 0, 0, 0, 1, 0,
3840 0, 1, 0, 0, 0, 0, 1, 0,
3841 0, 1, 0, 0, 0, 0, 1, 0,
3842 0, 1, 0, 0, 0, 0, 1, 0,
3843 0, 1, 0, 0, 0, 0, 1, 0,
3844 0, 1, 0, 0, 0, 0, 1, 0,
3845 0, 1, 0, 0, 0, 0, 1, 0,
3846 0, 0, 1, 1, 1, 1, 0, 0,
3847 0, 0, 0, 0, 0, 0, 0, 0,
3848 0, 0, 0, 0, 0, 0, 0, 0,
3849 0, 0, 0, 0, 0, 0, 0, 0,
3850
3851 /* Char 213 */
3852 0, 0, 0, 1, 0, 0, 1, 0,
3853 0, 0, 1, 0, 0, 1, 0, 0,
3854 0, 0, 0, 0, 0, 0, 0, 0,
3855 0, 0, 1, 1, 1, 1, 0, 0,
3856 0, 1, 0, 0, 0, 0, 1, 0,
3857 0, 1, 0, 0, 0, 0, 1, 0,
3858 0, 1, 0, 0, 0, 0, 1, 0,
3859 0, 1, 0, 0, 0, 0, 1, 0,
3860 0, 1, 0, 0, 0, 0, 1, 0,
3861 0, 1, 0, 0, 0, 0, 1, 0,
3862 0, 1, 0, 0, 0, 0, 1, 0,
3863 0, 1, 0, 0, 0, 0, 1, 0,
3864 0, 0, 1, 1, 1, 1, 0, 0,
3865 0, 0, 0, 0, 0, 0, 0, 0,
3866 0, 0, 0, 0, 0, 0, 0, 0,
3867 0, 0, 0, 0, 0, 0, 0, 0,
3868
3869 /* Char 214 */
3870 0, 0, 1, 0, 0, 1, 0, 0,
3871 0, 0, 1, 0, 0, 1, 0, 0,
3872 0, 0, 0, 0, 0, 0, 0, 0,
3873 0, 0, 1, 1, 1, 1, 0, 0,
3874 0, 1, 0, 0, 0, 0, 1, 0,
3875 0, 1, 0, 0, 0, 0, 1, 0,
3876 0, 1, 0, 0, 0, 0, 1, 0,
3877 0, 1, 0, 0, 0, 0, 1, 0,
3878 0, 1, 0, 0, 0, 0, 1, 0,
3879 0, 1, 0, 0, 0, 0, 1, 0,
3880 0, 1, 0, 0, 0, 0, 1, 0,
3881 0, 1, 0, 0, 0, 0, 1, 0,
3882 0, 0, 1, 1, 1, 1, 0, 0,
3883 0, 0, 0, 0, 0, 0, 0, 0,
3884 0, 0, 0, 0, 0, 0, 0, 0,
3885 0, 0, 0, 0, 0, 0, 0, 0,
3886
3887 /* Char 215 */
3888 0, 0, 0, 0, 0, 0, 0, 0,
3889 0, 0, 0, 0, 0, 0, 0, 0,
3890 0, 0, 0, 0, 0, 0, 0, 0,
3891 0, 0, 0, 0, 0, 0, 0, 0,
3892 0, 0, 0, 0, 0, 0, 0, 0,
3893 0, 0, 0, 0, 0, 0, 0, 0,
3894 0, 1, 0, 0, 0, 0, 1, 0,
3895 0, 0, 1, 0, 0, 1, 0, 0,
3896 0, 0, 0, 1, 1, 0, 0, 0,
3897 0, 0, 0, 1, 1, 0, 0, 0,
3898 0, 0, 1, 0, 0, 1, 0, 0,
3899 0, 1, 0, 0, 0, 0, 1, 0,
3900 0, 0, 0, 0, 0, 0, 0, 0,
3901 0, 0, 0, 0, 0, 0, 0, 0,
3902 0, 0, 0, 0, 0, 0, 0, 0,
3903 0, 0, 0, 0, 0, 0, 0, 0,
3904
3905 /* Char 216 */
3906 0, 0, 1, 0, 0, 1, 0, 0,
3907 0, 0, 0, 1, 1, 0, 0, 0,
3908 0, 0, 0, 0, 0, 0, 0, 0,
3909 0, 1, 1, 1, 1, 1, 0, 0,
3910 0, 1, 0, 0, 0, 0, 1, 0,
3911 0, 1, 0, 0, 0, 0, 1, 0,
3912 0, 1, 0, 0, 0, 0, 1, 0,
3913 0, 1, 1, 1, 1, 1, 0, 0,
3914 0, 1, 0, 0, 1, 0, 0, 0,
3915 0, 1, 0, 0, 0, 1, 0, 0,
3916 0, 1, 0, 0, 0, 1, 0, 0,
3917 0, 1, 0, 0, 0, 0, 1, 0,
3918 0, 1, 0, 0, 0, 0, 1, 0,
3919 0, 0, 0, 0, 0, 0, 0, 0,
3920 0, 0, 0, 0, 0, 0, 0, 0,
3921 0, 0, 0, 0, 0, 0, 0, 0,
3922
3923 /* Char 217 */
3924 0, 0, 0, 1, 1, 0, 0, 0,
3925 0, 0, 1, 0, 0, 1, 0, 0,
3926 0, 0, 0, 1, 1, 0, 0, 0,
3927 0, 1, 0, 0, 0, 0, 1, 0,
3928 0, 1, 0, 0, 0, 0, 1, 0,
3929 0, 1, 0, 0, 0, 0, 1, 0,
3930 0, 1, 0, 0, 0, 0, 1, 0,
3931 0, 1, 0, 0, 0, 0, 1, 0,
3932 0, 1, 0, 0, 0, 0, 1, 0,
3933 0, 1, 0, 0, 0, 0, 1, 0,
3934 0, 1, 0, 0, 0, 0, 1, 0,
3935 0, 1, 0, 0, 0, 0, 1, 0,
3936 0, 0, 1, 1, 1, 1, 0, 0,
3937 0, 0, 0, 0, 0, 0, 0, 0,
3938 0, 0, 0, 0, 0, 0, 0, 0,
3939 0, 0, 0, 0, 0, 0, 0, 0,
3940
3941 /* Char 218 */
3942 0, 0, 0, 0, 0, 1, 1, 0,
3943 0, 0, 0, 1, 1, 0, 0, 0,
3944 0, 0, 0, 0, 0, 0, 0, 0,
3945 0, 1, 0, 0, 0, 0, 1, 0,
3946 0, 1, 0, 0, 0, 0, 1, 0,
3947 0, 1, 0, 0, 0, 0, 1, 0,
3948 0, 1, 0, 0, 0, 0, 1, 0,
3949 0, 1, 0, 0, 0, 0, 1, 0,
3950 0, 1, 0, 0, 0, 0, 1, 0,
3951 0, 1, 0, 0, 0, 0, 1, 0,
3952 0, 1, 0, 0, 0, 0, 1, 0,
3953 0, 1, 0, 0, 0, 0, 1, 0,
3954 0, 0, 1, 1, 1, 1, 0, 0,
3955 0, 0, 0, 0, 0, 0, 0, 0,
3956 0, 0, 0, 0, 0, 0, 0, 0,
3957 0, 0, 0, 0, 0, 0, 0, 0,
3958
3959 /* Char 219 */
3960 0, 0, 0, 1, 0, 0, 1, 0,
3961 0, 0, 1, 0, 0, 1, 0, 0,
3962 0, 0, 0, 0, 0, 0, 0, 0,
3963 0, 1, 0, 0, 0, 0, 1, 0,
3964 0, 1, 0, 0, 0, 0, 1, 0,
3965 0, 1, 0, 0, 0, 0, 1, 0,
3966 0, 1, 0, 0, 0, 0, 1, 0,
3967 0, 1, 0, 0, 0, 0, 1, 0,
3968 0, 1, 0, 0, 0, 0, 1, 0,
3969 0, 1, 0, 0, 0, 0, 1, 0,
3970 0, 1, 0, 0, 0, 0, 1, 0,
3971 0, 1, 0, 0, 0, 0, 1, 0,
3972 0, 0, 1, 1, 1, 1, 0, 0,
3973 0, 0, 0, 0, 0, 0, 0, 0,
3974 0, 0, 0, 0, 0, 0, 0, 0,
3975 0, 0, 0, 0, 0, 0, 0, 0,
3976
3977 /* Char 220 */
3978 0, 0, 1, 0, 0, 1, 0, 0,
3979 0, 0, 1, 0, 0, 1, 0, 0,
3980 0, 0, 0, 0, 0, 0, 0, 0,
3981 0, 1, 0, 0, 0, 0, 1, 0,
3982 0, 1, 0, 0, 0, 0, 1, 0,
3983 0, 1, 0, 0, 0, 0, 1, 0,
3984 0, 1, 0, 0, 0, 0, 1, 0,
3985 0, 1, 0, 0, 0, 0, 1, 0,
3986 0, 1, 0, 0, 0, 0, 1, 0,
3987 0, 1, 0, 0, 0, 0, 1, 0,
3988 0, 1, 0, 0, 0, 0, 1, 0,
3989 0, 1, 0, 0, 0, 0, 1, 0,
3990 0, 0, 1, 1, 1, 1, 0, 0,
3991 0, 0, 0, 0, 0, 0, 0, 0,
3992 0, 0, 0, 0, 0, 0, 0, 0,
3993 0, 0, 0, 0, 0, 0, 0, 0,
3994
3995 /* Char 221 */
3996 0, 0, 0, 0, 0, 1, 1, 0,
3997 0, 0, 0, 1, 1, 0, 0, 0,
3998 0, 0, 0, 0, 0, 0, 0, 0,
3999 1, 0, 0, 0, 0, 0, 1, 0,
4000 1, 0, 0, 0, 0, 0, 1, 0,
4001 0, 1, 0, 0, 0, 1, 0, 0,
4002 0, 1, 0, 0, 0, 1, 0, 0,
4003 0, 0, 1, 0, 1, 0, 0, 0,
4004 0, 0, 0, 1, 0, 0, 0, 0,
4005 0, 0, 0, 1, 0, 0, 0, 0,
4006 0, 0, 0, 1, 0, 0, 0, 0,
4007 0, 0, 0, 1, 0, 0, 0, 0,
4008 0, 0, 0, 1, 0, 0, 0, 0,
4009 0, 0, 0, 0, 0, 0, 0, 0,
4010 0, 0, 0, 0, 0, 0, 0, 0,
4011 0, 0, 0, 0, 0, 0, 0, 0,
4012
4013 /* Char 222 */
4014 0, 0, 0, 0, 0, 0, 0, 0,
4015 0, 0, 0, 0, 0, 0, 0, 0,
4016 0, 0, 0, 0, 0, 0, 0, 0,
4017 1, 1, 1, 1, 1, 1, 1, 0,
4018 0, 0, 0, 1, 0, 0, 0, 0,
4019 0, 0, 0, 1, 0, 0, 0, 0,
4020 0, 0, 0, 1, 0, 0, 0, 0,
4021 0, 0, 0, 1, 0, 0, 0, 0,
4022 0, 0, 0, 1, 0, 0, 0, 0,
4023 0, 0, 0, 1, 0, 0, 0, 0,
4024 0, 0, 0, 1, 0, 0, 0, 0,
4025 0, 0, 0, 1, 0, 0, 0, 0,
4026 0, 0, 0, 1, 0, 0, 0, 0,
4027 0, 0, 0, 0, 1, 0, 0, 0,
4028 0, 0, 0, 0, 1, 0, 0, 0,
4029 0, 0, 0, 1, 0, 0, 0, 0,
4030
4031 /* Char 223 */
4032 0, 0, 0, 0, 0, 0, 0, 0,
4033 0, 0, 0, 0, 0, 0, 0, 0,
4034 0, 0, 0, 0, 0, 0, 0, 0,
4035 0, 0, 0, 0, 0, 0, 0, 0,
4036 0, 0, 1, 1, 1, 0, 0, 0,
4037 0, 1, 0, 0, 0, 1, 0, 0,
4038 0, 1, 0, 0, 0, 1, 0, 0,
4039 0, 1, 0, 0, 0, 1, 0, 0,
4040 1, 1, 0, 0, 1, 0, 0, 0,
4041 0, 1, 0, 0, 0, 1, 0, 0,
4042 0, 1, 0, 0, 0, 0, 1, 0,
4043 0, 1, 0, 0, 0, 0, 1, 0,
4044 0, 1, 1, 0, 0, 0, 1, 0,
4045 0, 1, 0, 1, 1, 1, 0, 0,
4046 1, 0, 0, 0, 0, 0, 0, 0,
4047 0, 0, 0, 0, 0, 0, 0, 0,
4048
4049 /* Char 224 */
4050 0, 0, 0, 0, 0, 0, 0, 0,
4051 0, 0, 0, 0, 0, 0, 0, 0,
4052 0, 0, 0, 0, 0, 1, 0, 0,
4053 0, 0, 0, 0, 1, 0, 0, 0,
4054 0, 0, 0, 1, 0, 0, 0, 0,
4055 0, 0, 0, 0, 0, 0, 0, 0,
4056 0, 1, 0, 1, 1, 1, 0, 0,
4057 0, 1, 1, 0, 0, 0, 1, 0,
4058 0, 1, 0, 0, 0, 0, 0, 0,
4059 0, 1, 0, 0, 0, 0, 0, 0,
4060 0, 1, 0, 0, 0, 0, 0, 0,
4061 0, 1, 0, 0, 0, 0, 0, 0,
4062 0, 1, 0, 0, 0, 0, 0, 0,
4063 0, 0, 0, 0, 0, 0, 0, 0,
4064 0, 0, 0, 0, 0, 0, 0, 0,
4065 0, 0, 0, 0, 0, 0, 0, 0,
4066
4067 /* Char 225 */
4068 0, 0, 0, 0, 0, 0, 0, 0,
4069 0, 0, 0, 0, 0, 0, 0, 0,
4070 0, 0, 0, 0, 0, 1, 0, 0,
4071 0, 0, 0, 0, 1, 0, 0, 0,
4072 0, 0, 0, 1, 0, 0, 0, 0,
4073 0, 0, 0, 0, 0, 0, 0, 0,
4074 0, 0, 1, 1, 1, 1, 0, 0,
4075 0, 1, 0, 0, 0, 0, 1, 0,
4076 0, 0, 0, 0, 1, 1, 1, 0,
4077 0, 0, 1, 1, 0, 0, 1, 0,
4078 0, 1, 0, 0, 0, 0, 1, 0,
4079 0, 1, 0, 0, 0, 1, 1, 0,
4080 0, 0, 1, 1, 1, 0, 1, 0,
4081 0, 0, 0, 0, 0, 0, 0, 0,
4082 0, 0, 0, 0, 0, 0, 0, 0,
4083 0, 0, 0, 0, 0, 0, 0, 0,
4084
4085 /* Char 226 */
4086 0, 0, 0, 0, 0, 0, 0, 0,
4087 0, 0, 0, 0, 0, 0, 0, 0,
4088 0, 0, 0, 0, 1, 0, 0, 0,
4089 0, 0, 0, 1, 0, 1, 0, 0,
4090 0, 0, 1, 0, 0, 0, 1, 0,
4091 0, 0, 0, 0, 0, 0, 0, 0,
4092 0, 0, 1, 1, 1, 1, 0, 0,
4093 0, 1, 0, 0, 0, 0, 1, 0,
4094 0, 0, 0, 0, 1, 1, 1, 0,
4095 0, 0, 1, 1, 0, 0, 1, 0,
4096 0, 1, 0, 0, 0, 0, 1, 0,
4097 0, 1, 0, 0, 0, 1, 1, 0,
4098 0, 0, 1, 1, 1, 0, 1, 0,
4099 0, 0, 0, 0, 0, 0, 0, 0,
4100 0, 0, 0, 0, 0, 0, 0, 0,
4101 0, 0, 0, 0, 0, 0, 0, 0,
4102
4103 /* Char 227 */
4104 0, 0, 0, 0, 0, 0, 0, 0,
4105 0, 0, 0, 0, 0, 0, 0, 0,
4106 0, 0, 0, 0, 0, 0, 0, 0,
4107 0, 1, 0, 0, 0, 0, 1, 0,
4108 0, 0, 1, 1, 1, 1, 0, 0,
4109 0, 0, 0, 0, 0, 0, 0, 0,
4110 0, 0, 1, 1, 1, 1, 0, 0,
4111 0, 1, 0, 0, 0, 0, 1, 0,
4112 0, 0, 0, 0, 1, 1, 1, 0,
4113 0, 0, 1, 1, 0, 0, 1, 0,
4114 0, 1, 0, 0, 0, 0, 1, 0,
4115 0, 1, 0, 0, 0, 1, 1, 0,
4116 0, 0, 1, 1, 1, 0, 1, 0,
4117 0, 0, 0, 0, 0, 0, 0, 0,
4118 0, 0, 0, 0, 0, 0, 0, 0,
4119 0, 0, 0, 0, 0, 0, 0, 0,
4120
4121 /* Char 228 */
4122 0, 0, 0, 0, 0, 0, 0, 0,
4123 0, 0, 0, 0, 0, 0, 0, 0,
4124 0, 0, 1, 0, 0, 1, 0, 0,
4125 0, 0, 1, 0, 0, 1, 0, 0,
4126 0, 0, 0, 0, 0, 0, 0, 0,
4127 0, 0, 0, 0, 0, 0, 0, 0,
4128 0, 0, 1, 1, 1, 1, 0, 0,
4129 0, 1, 0, 0, 0, 0, 1, 0,
4130 0, 0, 0, 0, 1, 1, 1, 0,
4131 0, 0, 1, 1, 0, 0, 1, 0,
4132 0, 1, 0, 0, 0, 0, 1, 0,
4133 0, 1, 0, 0, 0, 1, 1, 0,
4134 0, 0, 1, 1, 1, 0, 1, 0,
4135 0, 0, 0, 0, 0, 0, 0, 0,
4136 0, 0, 0, 0, 0, 0, 0, 0,
4137 0, 0, 0, 0, 0, 0, 0, 0,
4138
4139 /* Char 229 */
4140 0, 0, 0, 0, 1, 1, 0, 0,
4141 0, 0, 1, 1, 0, 0, 0, 0,
4142 0, 0, 0, 0, 0, 0, 0, 0,
4143 0, 0, 1, 1, 0, 0, 0, 0,
4144 0, 0, 0, 1, 0, 0, 0, 0,
4145 0, 0, 0, 1, 0, 0, 0, 0,
4146 0, 0, 0, 1, 0, 0, 0, 0,
4147 0, 0, 0, 1, 0, 0, 0, 0,
4148 0, 0, 0, 1, 0, 0, 0, 0,
4149 0, 0, 0, 1, 0, 0, 0, 0,
4150 0, 0, 0, 1, 0, 0, 0, 0,
4151 0, 0, 0, 1, 0, 0, 0, 0,
4152 0, 1, 1, 1, 1, 1, 0, 0,
4153 0, 0, 0, 0, 0, 0, 0, 0,
4154 0, 0, 0, 0, 0, 0, 0, 0,
4155 0, 0, 0, 0, 0, 0, 0, 0,
4156
4157 /* Char 230 */
4158 0, 0, 0, 0, 0, 0, 0, 0,
4159 0, 0, 0, 0, 0, 0, 0, 0,
4160 0, 0, 0, 0, 0, 1, 0, 0,
4161 0, 0, 0, 0, 1, 0, 0, 0,
4162 0, 0, 0, 1, 0, 0, 0, 0,
4163 0, 0, 0, 0, 0, 0, 0, 0,
4164 0, 0, 1, 1, 1, 1, 0, 0,
4165 0, 1, 0, 0, 0, 0, 1, 0,
4166 0, 1, 0, 0, 0, 0, 0, 0,
4167 0, 1, 0, 0, 0, 0, 0, 0,
4168 0, 1, 0, 0, 0, 0, 0, 0,
4169 0, 1, 0, 0, 0, 0, 1, 0,
4170 0, 0, 1, 1, 1, 1, 0, 0,
4171 0, 0, 0, 0, 0, 0, 0, 0,
4172 0, 0, 0, 0, 0, 0, 0, 0,
4173 0, 0, 0, 0, 0, 0, 0, 0,
4174
4175 /* Char 231 */
4176 0, 0, 0, 0, 0, 0, 0, 0,
4177 0, 0, 0, 0, 0, 0, 0, 0,
4178 0, 0, 0, 0, 0, 0, 0, 0,
4179 0, 0, 0, 0, 0, 0, 0, 0,
4180 0, 0, 0, 0, 0, 0, 0, 0,
4181 0, 0, 0, 0, 0, 0, 0, 0,
4182 0, 0, 1, 1, 1, 1, 0, 0,
4183 0, 1, 0, 0, 0, 0, 1, 0,
4184 0, 1, 0, 0, 0, 0, 0, 0,
4185 0, 1, 0, 0, 0, 0, 0, 0,
4186 0, 1, 0, 0, 0, 0, 0, 0,
4187 0, 1, 0, 0, 0, 0, 1, 0,
4188 0, 0, 1, 1, 1, 1, 0, 0,
4189 0, 0, 0, 0, 1, 0, 0, 0,
4190 0, 0, 0, 0, 0, 1, 0, 0,
4191 0, 0, 1, 1, 1, 0, 0, 0,
4192
4193 /* Char 232 */
4194 0, 0, 0, 0, 0, 0, 0, 0,
4195 0, 0, 0, 0, 0, 0, 0, 0,
4196 0, 0, 0, 0, 0, 0, 0, 0,
4197 0, 0, 1, 0, 0, 1, 0, 0,
4198 0, 0, 0, 1, 1, 0, 0, 0,
4199 0, 0, 0, 0, 0, 0, 0, 0,
4200 0, 0, 1, 1, 1, 1, 0, 0,
4201 0, 1, 0, 0, 0, 0, 1, 0,
4202 0, 1, 0, 0, 0, 0, 0, 0,
4203 0, 1, 0, 0, 0, 0, 0, 0,
4204 0, 1, 0, 0, 0, 0, 0, 0,
4205 0, 1, 0, 0, 0, 0, 1, 0,
4206 0, 0, 1, 1, 1, 1, 0, 0,
4207 0, 0, 0, 0, 0, 0, 0, 0,
4208 0, 0, 0, 0, 0, 0, 0, 0,
4209 0, 0, 0, 0, 0, 0, 0, 0,
4210
4211 /* Char 233 */
4212 0, 0, 0, 0, 0, 0, 0, 0,
4213 0, 0, 0, 0, 0, 0, 0, 0,
4214 0, 0, 0, 0, 0, 1, 0, 0,
4215 0, 0, 0, 0, 1, 0, 0, 0,
4216 0, 0, 0, 1, 0, 0, 0, 0,
4217 0, 0, 0, 0, 0, 0, 0, 0,
4218 0, 0, 1, 1, 1, 1, 0, 0,
4219 0, 1, 0, 0, 0, 0, 1, 0,
4220 0, 1, 0, 0, 0, 0, 1, 0,
4221 0, 1, 1, 1, 1, 1, 1, 0,
4222 0, 1, 0, 0, 0, 0, 0, 0,
4223 0, 1, 0, 0, 0, 0, 0, 0,
4224 0, 0, 1, 1, 1, 1, 0, 0,
4225 0, 0, 0, 0, 0, 0, 0, 0,
4226 0, 0, 0, 0, 0, 0, 0, 0,
4227 0, 0, 0, 0, 0, 0, 0, 0,
4228
4229 /* Char 234 */
4230 0, 0, 0, 0, 0, 0, 0, 0,
4231 0, 0, 0, 0, 0, 0, 0, 0,
4232 0, 0, 0, 0, 0, 0, 0, 0,
4233 0, 0, 0, 0, 0, 0, 0, 0,
4234 0, 0, 0, 0, 0, 0, 0, 0,
4235 0, 0, 0, 0, 0, 0, 0, 0,
4236 0, 0, 1, 1, 1, 1, 0, 0,
4237 0, 1, 0, 0, 0, 0, 1, 0,
4238 0, 1, 0, 0, 0, 0, 1, 0,
4239 0, 1, 1, 1, 1, 1, 1, 0,
4240 0, 1, 0, 0, 0, 0, 0, 0,
4241 0, 1, 0, 0, 0, 0, 0, 0,
4242 0, 0, 1, 1, 1, 1, 0, 0,
4243 0, 0, 0, 0, 1, 0, 0, 0,
4244 0, 0, 0, 1, 0, 0, 0, 0,
4245 0, 0, 0, 0, 1, 1, 0, 0,
4246
4247 /* Char 235 */
4248 0, 0, 0, 0, 0, 0, 0, 0,
4249 0, 0, 0, 0, 0, 0, 0, 0,
4250 0, 0, 0, 0, 0, 0, 0, 0,
4251 0, 0, 1, 0, 0, 1, 0, 0,
4252 0, 0, 1, 0, 0, 1, 0, 0,
4253 0, 0, 0, 0, 0, 0, 0, 0,
4254 0, 0, 1, 1, 1, 1, 0, 0,
4255 0, 1, 0, 0, 0, 0, 1, 0,
4256 0, 1, 0, 0, 0, 0, 1, 0,
4257 0, 1, 1, 1, 1, 1, 1, 0,
4258 0, 1, 0, 0, 0, 0, 0, 0,
4259 0, 1, 0, 0, 0, 0, 0, 0,
4260 0, 0, 1, 1, 1, 1, 0, 0,
4261 0, 0, 0, 0, 0, 0, 0, 0,
4262 0, 0, 0, 0, 0, 0, 0, 0,
4263 0, 0, 0, 0, 0, 0, 0, 0,
4264
4265 /* Char 236 */
4266 0, 0, 0, 0, 0, 0, 0, 0,
4267 0, 0, 0, 0, 0, 0, 0, 0,
4268 0, 0, 0, 0, 0, 0, 0, 0,
4269 0, 0, 1, 0, 0, 1, 0, 0,
4270 0, 0, 0, 1, 1, 0, 0, 0,
4271 0, 0, 0, 0, 0, 0, 0, 0,
4272 0, 0, 1, 1, 1, 1, 0, 0,
4273 0, 1, 0, 0, 0, 0, 1, 0,
4274 0, 1, 0, 0, 0, 0, 1, 0,
4275 0, 1, 1, 1, 1, 1, 1, 0,
4276 0, 1, 0, 0, 0, 0, 0, 0,
4277 0, 1, 0, 0, 0, 0, 0, 0,
4278 0, 0, 1, 1, 1, 1, 0, 0,
4279 0, 0, 0, 0, 0, 0, 0, 0,
4280 0, 0, 0, 0, 0, 0, 0, 0,
4281 0, 0, 0, 0, 0, 0, 0, 0,
4282
4283 /* Char 237 */
4284 0, 0, 0, 0, 0, 0, 0, 0,
4285 0, 0, 0, 0, 0, 0, 0, 0,
4286 0, 0, 0, 0, 1, 0, 0, 0,
4287 0, 0, 0, 1, 0, 0, 0, 0,
4288 0, 0, 1, 0, 0, 0, 0, 0,
4289 0, 0, 0, 0, 0, 0, 0, 0,
4290 0, 0, 1, 1, 0, 0, 0, 0,
4291 0, 0, 0, 1, 0, 0, 0, 0,
4292 0, 0, 0, 1, 0, 0, 0, 0,
4293 0, 0, 0, 1, 0, 0, 0, 0,
4294 0, 0, 0, 1, 0, 0, 0, 0,
4295 0, 0, 0, 1, 0, 0, 0, 0,
4296 0, 1, 1, 1, 1, 1, 0, 0,
4297 0, 0, 0, 0, 0, 0, 0, 0,
4298 0, 0, 0, 0, 0, 0, 0, 0,
4299 0, 0, 0, 0, 0, 0, 0, 0,
4300
4301 /* Char 238 */
4302 0, 0, 0, 0, 0, 0, 0, 0,
4303 0, 0, 0, 0, 0, 0, 0, 0,
4304 0, 0, 0, 1, 0, 0, 0, 0,
4305 0, 0, 1, 0, 1, 0, 0, 0,
4306 0, 1, 0, 0, 0, 1, 0, 0,
4307 0, 0, 0, 0, 0, 0, 0, 0,
4308 0, 0, 1, 1, 0, 0, 0, 0,
4309 0, 0, 0, 1, 0, 0, 0, 0,
4310 0, 0, 0, 1, 0, 0, 0, 0,
4311 0, 0, 0, 1, 0, 0, 0, 0,
4312 0, 0, 0, 1, 0, 0, 0, 0,
4313 0, 0, 0, 1, 0, 0, 0, 0,
4314 0, 1, 1, 1, 1, 1, 0, 0,
4315 0, 0, 0, 0, 0, 0, 0, 0,
4316 0, 0, 0, 0, 0, 0, 0, 0,
4317 0, 0, 0, 0, 0, 0, 0, 0,
4318
4319 /* Char 239 */
4320 0, 0, 0, 0, 0, 0, 0, 0,
4321 0, 0, 0, 0, 0, 0, 1, 1,
4322 0, 0, 0, 0, 0, 0, 0, 1,
4323 0, 0, 0, 0, 0, 1, 0, 1,
4324 0, 0, 0, 0, 0, 1, 1, 0,
4325 0, 0, 0, 0, 0, 1, 0, 0,
4326 0, 1, 1, 1, 0, 1, 0, 0,
4327 1, 0, 0, 0, 1, 1, 0, 0,
4328 1, 0, 0, 0, 0, 1, 0, 0,
4329 1, 0, 0, 0, 0, 1, 0, 0,
4330 1, 0, 0, 0, 0, 1, 0, 0,
4331 1, 0, 0, 0, 1, 1, 0, 0,
4332 0, 1, 1, 1, 0, 1, 0, 0,
4333 0, 0, 0, 0, 0, 0, 0, 0,
4334 0, 0, 0, 0, 0, 0, 0, 0,
4335 0, 0, 0, 0, 0, 0, 0, 0,
4336
4337 /* Char 240 */
4338 0, 0, 0, 0, 0, 0, 0, 0,
4339 0, 0, 0, 0, 0, 0, 0, 0,
4340 0, 0, 0, 0, 0, 0, 0, 0,
4341 0, 0, 0, 0, 0, 1, 0, 0,
4342 0, 0, 0, 1, 1, 1, 1, 0,
4343 0, 0, 0, 0, 0, 1, 0, 0,
4344 0, 1, 1, 1, 0, 1, 0, 0,
4345 1, 0, 0, 0, 1, 1, 0, 0,
4346 1, 0, 0, 0, 0, 1, 0, 0,
4347 1, 0, 0, 0, 0, 1, 0, 0,
4348 1, 0, 0, 0, 0, 1, 0, 0,
4349 1, 0, 0, 0, 1, 1, 0, 0,
4350 0, 1, 1, 1, 0, 1, 0, 0,
4351 0, 0, 0, 0, 0, 0, 0, 0,
4352 0, 0, 0, 0, 0, 0, 0, 0,
4353 0, 0, 0, 0, 0, 0, 0, 0,
4354
4355 /* Char 241 */
4356 0, 0, 0, 0, 0, 0, 0, 0,
4357 0, 0, 0, 0, 0, 0, 0, 0,
4358 0, 0, 0, 0, 0, 1, 0, 0,
4359 0, 0, 0, 0, 1, 0, 0, 0,
4360 0, 0, 0, 1, 0, 0, 0, 0,
4361 0, 0, 0, 0, 0, 0, 0, 0,
4362 0, 1, 0, 1, 1, 1, 0, 0,
4363 0, 1, 1, 0, 0, 0, 1, 0,
4364 0, 1, 0, 0, 0, 0, 1, 0,
4365 0, 1, 0, 0, 0, 0, 1, 0,
4366 0, 1, 0, 0, 0, 0, 1, 0,
4367 0, 1, 0, 0, 0, 0, 1, 0,
4368 0, 1, 0, 0, 0, 0, 1, 0,
4369 0, 0, 0, 0, 0, 0, 0, 0,
4370 0, 0, 0, 0, 0, 0, 0, 0,
4371 0, 0, 0, 0, 0, 0, 0, 0,
4372
4373 /* Char 242 */
4374 0, 0, 0, 0, 0, 0, 0, 0,
4375 0, 0, 0, 0, 0, 0, 0, 0,
4376 0, 0, 0, 0, 0, 0, 0, 0,
4377 0, 0, 1, 0, 0, 1, 0, 0,
4378 0, 0, 0, 1, 1, 0, 0, 0,
4379 0, 0, 0, 0, 0, 0, 0, 0,
4380 0, 1, 0, 1, 1, 1, 0, 0,
4381 0, 1, 1, 0, 0, 0, 1, 0,
4382 0, 1, 0, 0, 0, 0, 1, 0,
4383 0, 1, 0, 0, 0, 0, 1, 0,
4384 0, 1, 0, 0, 0, 0, 1, 0,
4385 0, 1, 0, 0, 0, 0, 1, 0,
4386 0, 1, 0, 0, 0, 0, 1, 0,
4387 0, 0, 0, 0, 0, 0, 0, 0,
4388 0, 0, 0, 0, 0, 0, 0, 0,
4389 0, 0, 0, 0, 0, 0, 0, 0,
4390
4391 /* Char 243 */
4392 0, 0, 0, 0, 0, 0, 0, 0,
4393 0, 0, 0, 0, 0, 0, 0, 0,
4394 0, 0, 0, 0, 0, 1, 0, 0,
4395 0, 0, 0, 0, 1, 0, 0, 0,
4396 0, 0, 0, 1, 0, 0, 0, 0,
4397 0, 0, 0, 0, 0, 0, 0, 0,
4398 0, 0, 1, 1, 1, 1, 0, 0,
4399 0, 1, 0, 0, 0, 0, 1, 0,
4400 0, 1, 0, 0, 0, 0, 1, 0,
4401 0, 1, 0, 0, 0, 0, 1, 0,
4402 0, 1, 0, 0, 0, 0, 1, 0,
4403 0, 1, 0, 0, 0, 0, 1, 0,
4404 0, 0, 1, 1, 1, 1, 0, 0,
4405 0, 0, 0, 0, 0, 0, 0, 0,
4406 0, 0, 0, 0, 0, 0, 0, 0,
4407 0, 0, 0, 0, 0, 0, 0, 0,
4408
4409 /* Char 244 */
4410 0, 0, 0, 0, 0, 0, 0, 0,
4411 0, 0, 0, 0, 0, 0, 0, 0,
4412 0, 0, 0, 0, 0, 0, 0, 0,
4413 0, 0, 0, 1, 1, 0, 0, 0,
4414 0, 0, 1, 0, 0, 1, 0, 0,
4415 0, 0, 0, 0, 0, 0, 0, 0,
4416 0, 0, 1, 1, 1, 1, 0, 0,
4417 0, 1, 0, 0, 0, 0, 1, 0,
4418 0, 1, 0, 0, 0, 0, 1, 0,
4419 0, 1, 0, 0, 0, 0, 1, 0,
4420 0, 1, 0, 0, 0, 0, 1, 0,
4421 0, 1, 0, 0, 0, 0, 1, 0,
4422 0, 0, 1, 1, 1, 1, 0, 0,
4423 0, 0, 0, 0, 0, 0, 0, 0,
4424 0, 0, 0, 0, 0, 0, 0, 0,
4425 0, 0, 0, 0, 0, 0, 0, 0,
4426
4427 /* Char 245 */
4428 0, 0, 0, 0, 0, 0, 0, 0,
4429 0, 0, 0, 0, 0, 0, 0, 0,
4430 0, 0, 0, 0, 1, 0, 0, 1,
4431 0, 0, 0, 1, 0, 0, 1, 0,
4432 0, 0, 1, 0, 0, 1, 0, 0,
4433 0, 0, 0, 0, 0, 0, 0, 0,
4434 0, 0, 1, 1, 1, 1, 0, 0,
4435 0, 1, 0, 0, 0, 0, 1, 0,
4436 0, 1, 0, 0, 0, 0, 1, 0,
4437 0, 1, 0, 0, 0, 0, 1, 0,
4438 0, 1, 0, 0, 0, 0, 1, 0,
4439 0, 1, 0, 0, 0, 0, 1, 0,
4440 0, 0, 1, 1, 1, 1, 0, 0,
4441 0, 0, 0, 0, 0, 0, 0, 0,
4442 0, 0, 0, 0, 0, 0, 0, 0,
4443 0, 0, 0, 0, 0, 0, 0, 0,
4444
4445 /* Char 246 */
4446 0, 0, 0, 0, 0, 0, 0, 0,
4447 0, 0, 0, 0, 0, 0, 0, 0,
4448 0, 0, 1, 0, 0, 1, 0, 0,
4449 0, 0, 1, 0, 0, 1, 0, 0,
4450 0, 0, 0, 0, 0, 0, 0, 0,
4451 0, 0, 0, 0, 0, 0, 0, 0,
4452 0, 0, 1, 1, 1, 1, 0, 0,
4453 0, 1, 0, 0, 0, 0, 1, 0,
4454 0, 1, 0, 0, 0, 0, 1, 0,
4455 0, 1, 0, 0, 0, 0, 1, 0,
4456 0, 1, 0, 0, 0, 0, 1, 0,
4457 0, 1, 0, 0, 0, 0, 1, 0,
4458 0, 0, 1, 1, 1, 1, 0, 0,
4459 0, 0, 0, 0, 0, 0, 0, 0,
4460 0, 0, 0, 0, 0, 0, 0, 0,
4461 0, 0, 0, 0, 0, 0, 0, 0,
4462
4463 /* Char 247 */
4464 0, 0, 0, 0, 0, 0, 0, 0,
4465 0, 0, 0, 0, 0, 0, 0, 0,
4466 0, 0, 0, 0, 0, 0, 0, 0,
4467 0, 0, 0, 0, 0, 0, 0, 0,
4468 0, 0, 0, 0, 0, 0, 0, 0,
4469 0, 0, 0, 1, 1, 0, 0, 0,
4470 0, 0, 0, 0, 0, 0, 0, 0,
4471 0, 0, 0, 0, 0, 0, 0, 0,
4472 0, 1, 1, 1, 1, 1, 1, 0,
4473 0, 0, 0, 0, 0, 0, 0, 0,
4474 0, 0, 0, 0, 0, 0, 0, 0,
4475 0, 0, 0, 1, 1, 0, 0, 0,
4476 0, 0, 0, 0, 0, 0, 0, 0,
4477 0, 0, 0, 0, 0, 0, 0, 0,
4478 0, 0, 0, 0, 0, 0, 0, 0,
4479 0, 0, 0, 0, 0, 0, 0, 0,
4480
4481 /* Char 248 */
4482 0, 0, 0, 0, 0, 0, 0, 0,
4483 0, 0, 0, 0, 0, 0, 0, 0,
4484 0, 0, 0, 0, 0, 0, 0, 0,
4485 0, 0, 1, 0, 0, 1, 0, 0,
4486 0, 0, 0, 1, 1, 0, 0, 0,
4487 0, 0, 0, 0, 0, 0, 0, 0,
4488 0, 1, 0, 1, 1, 1, 0, 0,
4489 0, 1, 1, 0, 0, 0, 1, 0,
4490 0, 1, 0, 0, 0, 0, 0, 0,
4491 0, 1, 0, 0, 0, 0, 0, 0,
4492 0, 1, 0, 0, 0, 0, 0, 0,
4493 0, 1, 0, 0, 0, 0, 0, 0,
4494 0, 1, 0, 0, 0, 0, 0, 0,
4495 0, 0, 0, 0, 0, 0, 0, 0,
4496 0, 0, 0, 0, 0, 0, 0, 0,
4497 0, 0, 0, 0, 0, 0, 0, 0,
4498
4499 /* Char 249 */
4500 0, 0, 0, 0, 0, 0, 0, 0,
4501 0, 0, 0, 0, 0, 0, 0, 0,
4502 0, 0, 0, 1, 1, 0, 0, 0,
4503 0, 0, 1, 0, 0, 1, 0, 0,
4504 0, 0, 0, 1, 1, 0, 0, 0,
4505 0, 0, 0, 0, 0, 0, 0, 0,
4506 0, 1, 0, 0, 0, 0, 1, 0,
4507 0, 1, 0, 0, 0, 0, 1, 0,
4508 0, 1, 0, 0, 0, 0, 1, 0,
4509 0, 1, 0, 0, 0, 0, 1, 0,
4510 0, 1, 0, 0, 0, 0, 1, 0,
4511 0, 1, 0, 0, 0, 1, 1, 0,
4512 0, 0, 1, 1, 1, 0, 1, 0,
4513 0, 0, 0, 0, 0, 0, 0, 0,
4514 0, 0, 0, 0, 0, 0, 0, 0,
4515 0, 0, 0, 0, 0, 0, 0, 0,
4516
4517 /* Char 250 */
4518 0, 0, 0, 0, 0, 0, 0, 0,
4519 0, 0, 0, 0, 0, 0, 0, 0,
4520 0, 0, 0, 0, 0, 1, 0, 0,
4521 0, 0, 0, 0, 1, 0, 0, 0,
4522 0, 0, 0, 1, 0, 0, 0, 0,
4523 0, 0, 0, 0, 0, 0, 0, 0,
4524 0, 1, 0, 0, 0, 0, 1, 0,
4525 0, 1, 0, 0, 0, 0, 1, 0,
4526 0, 1, 0, 0, 0, 0, 1, 0,
4527 0, 1, 0, 0, 0, 0, 1, 0,
4528 0, 1, 0, 0, 0, 0, 1, 0,
4529 0, 1, 0, 0, 0, 1, 1, 0,
4530 0, 0, 1, 1, 1, 0, 1, 0,
4531 0, 0, 0, 0, 0, 0, 0, 0,
4532 0, 0, 0, 0, 0, 0, 0, 0,
4533 0, 0, 0, 0, 0, 0, 0, 0,
4534
4535 /* Char 251 */
4536 0, 0, 0, 0, 0, 0, 0, 0,
4537 0, 0, 0, 0, 0, 0, 0, 0,
4538 0, 0, 0, 0, 1, 0, 0, 1,
4539 0, 0, 0, 1, 0, 0, 1, 0,
4540 0, 0, 1, 0, 0, 1, 0, 0,
4541 0, 0, 0, 0, 0, 0, 0, 0,
4542 0, 1, 0, 0, 0, 0, 1, 0,
4543 0, 1, 0, 0, 0, 0, 1, 0,
4544 0, 1, 0, 0, 0, 0, 1, 0,
4545 0, 1, 0, 0, 0, 0, 1, 0,
4546 0, 1, 0, 0, 0, 0, 1, 0,
4547 0, 1, 0, 0, 0, 1, 1, 0,
4548 0, 0, 1, 1, 1, 0, 1, 0,
4549 0, 0, 0, 0, 0, 0, 0, 0,
4550 0, 0, 0, 0, 0, 0, 0, 0,
4551 0, 0, 0, 0, 0, 0, 0, 0,
4552
4553 /* Char 252 */
4554 0, 0, 0, 0, 0, 0, 0, 0,
4555 0, 0, 0, 0, 0, 0, 0, 0,
4556 0, 0, 1, 0, 0, 1, 0, 0,
4557 0, 0, 1, 0, 0, 1, 0, 0,
4558 0, 0, 0, 0, 0, 0, 0, 0,
4559 0, 0, 0, 0, 0, 0, 0, 0,
4560 0, 1, 0, 0, 0, 0, 1, 0,
4561 0, 1, 0, 0, 0, 0, 1, 0,
4562 0, 1, 0, 0, 0, 0, 1, 0,
4563 0, 1, 0, 0, 0, 0, 1, 0,
4564 0, 1, 0, 0, 0, 0, 1, 0,
4565 0, 1, 0, 0, 0, 1, 1, 0,
4566 0, 0, 1, 1, 1, 0, 1, 0,
4567 0, 0, 0, 0, 0, 0, 0, 0,
4568 0, 0, 0, 0, 0, 0, 0, 0,
4569 0, 0, 0, 0, 0, 0, 0, 0,
4570
4571 /* Char 253 */
4572 0, 0, 0, 0, 0, 0, 0, 0,
4573 0, 0, 0, 0, 0, 0, 0, 0,
4574 0, 0, 0, 0, 0, 1, 0, 0,
4575 0, 0, 0, 0, 1, 0, 0, 0,
4576 0, 0, 0, 1, 0, 0, 0, 0,
4577 0, 0, 0, 0, 0, 0, 0, 0,
4578 0, 1, 0, 0, 0, 0, 1, 0,
4579 0, 1, 0, 0, 0, 0, 1, 0,
4580 0, 1, 0, 0, 0, 0, 1, 0,
4581 0, 1, 0, 0, 0, 0, 1, 0,
4582 0, 1, 0, 0, 0, 0, 1, 0,
4583 0, 0, 1, 0, 0, 1, 1, 0,
4584 0, 0, 0, 1, 1, 0, 1, 0,
4585 0, 0, 0, 0, 0, 0, 1, 0,
4586 0, 0, 0, 0, 0, 1, 0, 0,
4587 0, 0, 1, 1, 1, 0, 0, 0,
4588
4589 /* Char 254 */
4590 0, 0, 0, 0, 0, 0, 0, 0,
4591 0, 0, 0, 0, 0, 0, 0, 0,
4592 0, 0, 0, 0, 0, 0, 0, 0,
4593 0, 0, 0, 0, 0, 0, 0, 0,
4594 0, 0, 0, 1, 0, 0, 0, 0,
4595 0, 0, 0, 1, 0, 0, 0, 0,
4596 0, 1, 1, 1, 1, 1, 0, 0,
4597 0, 0, 0, 1, 0, 0, 0, 0,
4598 0, 0, 0, 1, 0, 0, 0, 0,
4599 0, 0, 0, 1, 0, 0, 0, 0,
4600 0, 0, 0, 1, 0, 0, 0, 0,
4601 0, 0, 0, 1, 0, 0, 1, 0,
4602 0, 0, 0, 0, 1, 1, 0, 0,
4603 0, 0, 0, 0, 1, 0, 0, 0,
4604 0, 0, 0, 0, 1, 0, 0, 0,
4605 0, 0, 0, 1, 0, 0, 0, 0,
4606
4607 /* Char 255 */
4608 0, 0, 0, 0, 0, 0, 0, 0,
4609 0, 0, 0, 0, 0, 0, 0, 0,
4610 0, 0, 0, 1, 1, 0, 0, 0,
4611 0, 0, 0, 1, 1, 0, 0, 0,
4612 0, 0, 0, 0, 0, 0, 0, 0,
4613 0, 0, 0, 0, 0, 0, 0, 0,
4614 0, 0, 0, 0, 0, 0, 0, 0,
4615 0, 0, 0, 0, 0, 0, 0, 0,
4616 0, 0, 0, 0, 0, 0, 0, 0,
4617 0, 0, 0, 0, 0, 0, 0, 0,
4618 0, 0, 0, 0, 0, 0, 0, 0,
4619 0, 0, 0, 0, 0, 0, 0, 0,
4620 0, 0, 0, 0, 0, 0, 0, 0,
4621 0, 0, 0, 0, 0, 0, 0, 0,
4622 0, 0, 0, 0, 0, 0, 0, 0,
4623 0, 0, 0, 0, 0, 0, 0, 0,
4624
4625
4626 };
4627
4628 gdFont gdFontLargeRep = {
4629 256,
4630 0,
4631 8,
4632 16,
4633 gdFontLargeData
4634 };
4635
4636 BGD_EXPORT_DATA_IMPL gdFontPtr gdFontLarge = &gdFontLargeRep;
4637
4638 BGD_DECLARE(gdFontPtr)
4639 gdFontGetLarge (void)
4640 {
4641 return gdFontLarge;
4642 }
4643
4644 /* This file has not been truncated. */
0 #ifdef __cplusplus
1 extern "C" {
2 #endif
3
4
5 #ifndef _GDFONTL_H_
6 #define _GDFONTL_H_ 1
7
8 #ifdef __cplusplus
9 extern "C"
10 {
11 #endif
12
13 /*
14 This is a header file for gd font, generated using
15 bdftogd version 0.5 by Jan Pazdziora, adelton@fi.muni.cz
16 from bdf font
17 -misc-fixed-medium-r-normal--16-140-75-75-c-80-iso8859-2
18 at Tue Jan 6 19:39:27 1998.
19
20 The original bdf was holding following copyright:
21 "Libor Skarvada, libor@informatics.muni.cz"
22 */
23
24
25 #include "gd.h"
26
27 BGD_EXPORT_DATA_PROT gdFontPtr gdFontLarge;
28 BGD_DECLARE(gdFontPtr) gdFontGetLarge(void);
29
30 #ifdef __cplusplus
31 }
32 #endif
33
34 #endif
35
36 #ifdef __cplusplus
37 }
38 #endif
0
1
2 /*
3 This is a header file for gd font, generated using
4 bdftogd version 0.5 by Jan Pazdziora, adelton@fi.muni.cz
5 from bdf font
6 -misc-fixed-bold-r-normal-sans-13-94-100-100-c-70-iso8859-2
7 at Thu Jan 8 13:54:57 1998.
8 No copyright info was found in the original bdf.
9 */
10
11
12 #include "gdfontmb.h"
13
14 char gdFontMediumBoldData[] = {
15 /* Char 0 */
16 0, 0, 0, 0, 0, 0, 0,
17 0, 0, 0, 0, 0, 0, 0,
18 0, 0, 0, 0, 0, 0, 0,
19 0, 0, 0, 0, 0, 0, 0,
20 0, 0, 0, 0, 0, 0, 0,
21 0, 0, 0, 0, 0, 0, 0,
22 0, 0, 0, 0, 0, 0, 0,
23 0, 0, 0, 0, 0, 0, 0,
24 0, 0, 0, 0, 0, 0, 0,
25 0, 0, 0, 0, 0, 0, 0,
26 0, 0, 0, 0, 0, 0, 0,
27 0, 0, 0, 0, 0, 0, 0,
28 0, 0, 0, 0, 0, 0, 0,
29
30 /* Char 1 */
31 0, 0, 0, 0, 0, 0, 0,
32 0, 0, 0, 0, 0, 0, 0,
33 0, 0, 0, 0, 0, 0, 0,
34 0, 0, 0, 0, 0, 0, 0,
35 0, 0, 0, 0, 0, 0, 0,
36 0, 0, 1, 1, 0, 0, 0,
37 0, 1, 1, 1, 1, 0, 0,
38 1, 1, 1, 1, 1, 1, 0,
39 0, 1, 1, 1, 1, 0, 0,
40 0, 0, 1, 1, 0, 0, 0,
41 0, 0, 0, 0, 0, 0, 0,
42 0, 0, 0, 0, 0, 0, 0,
43 0, 0, 0, 0, 0, 0, 0,
44
45 /* Char 2 */
46 0, 0, 0, 0, 0, 0, 0,
47 1, 1, 0, 0, 1, 1, 0,
48 0, 0, 1, 1, 0, 0, 0,
49 1, 1, 0, 0, 1, 1, 0,
50 0, 0, 1, 1, 0, 0, 0,
51 1, 1, 0, 0, 1, 1, 0,
52 0, 0, 1, 1, 0, 0, 0,
53 1, 1, 0, 0, 1, 1, 0,
54 0, 0, 1, 1, 0, 0, 0,
55 1, 1, 0, 0, 1, 1, 0,
56 0, 0, 1, 1, 0, 0, 0,
57 1, 1, 0, 0, 1, 1, 0,
58 0, 0, 0, 0, 0, 0, 0,
59
60 /* Char 3 */
61 0, 0, 0, 0, 0, 0, 0,
62 1, 1, 0, 1, 1, 0, 0,
63 1, 1, 0, 1, 1, 0, 0,
64 1, 1, 1, 1, 1, 0, 0,
65 1, 1, 0, 1, 1, 0, 0,
66 1, 1, 0, 1, 1, 0, 0,
67 0, 0, 0, 0, 0, 0, 0,
68 0, 0, 1, 1, 1, 1, 0,
69 0, 0, 0, 1, 1, 0, 0,
70 0, 0, 0, 1, 1, 0, 0,
71 0, 0, 0, 1, 1, 0, 0,
72 0, 0, 0, 1, 1, 0, 0,
73 0, 0, 0, 0, 0, 0, 0,
74
75 /* Char 4 */
76 0, 0, 0, 0, 0, 0, 0,
77 1, 1, 1, 1, 0, 0, 0,
78 1, 1, 0, 0, 0, 0, 0,
79 1, 1, 1, 0, 0, 0, 0,
80 1, 1, 0, 0, 0, 0, 0,
81 1, 1, 0, 0, 0, 0, 0,
82 0, 0, 0, 0, 0, 0, 0,
83 0, 0, 1, 1, 1, 1, 0,
84 0, 0, 1, 1, 0, 0, 0,
85 0, 0, 1, 1, 1, 0, 0,
86 0, 0, 1, 1, 0, 0, 0,
87 0, 0, 1, 1, 0, 0, 0,
88 0, 0, 0, 0, 0, 0, 0,
89
90 /* Char 5 */
91 0, 0, 0, 0, 0, 0, 0,
92 0, 1, 1, 1, 0, 0, 0,
93 1, 1, 0, 0, 0, 0, 0,
94 1, 1, 0, 0, 0, 0, 0,
95 1, 1, 0, 0, 0, 0, 0,
96 0, 1, 1, 1, 0, 0, 0,
97 0, 0, 0, 0, 0, 0, 0,
98 0, 0, 1, 1, 1, 0, 0,
99 0, 0, 1, 1, 0, 1, 0,
100 0, 0, 1, 1, 1, 0, 0,
101 0, 0, 1, 1, 0, 1, 0,
102 0, 0, 1, 1, 0, 1, 0,
103 0, 0, 0, 0, 0, 0, 0,
104
105 /* Char 6 */
106 0, 0, 0, 0, 0, 0, 0,
107 1, 1, 0, 0, 0, 0, 0,
108 1, 1, 0, 0, 0, 0, 0,
109 1, 1, 0, 0, 0, 0, 0,
110 1, 1, 0, 0, 0, 0, 0,
111 1, 1, 1, 1, 0, 0, 0,
112 0, 0, 0, 0, 0, 0, 0,
113 0, 0, 1, 1, 1, 1, 0,
114 0, 0, 1, 1, 0, 0, 0,
115 0, 0, 1, 1, 1, 0, 0,
116 0, 0, 1, 1, 0, 0, 0,
117 0, 0, 1, 1, 0, 0, 0,
118 0, 0, 0, 0, 0, 0, 0,
119
120 /* Char 7 */
121 0, 0, 0, 0, 0, 0, 0,
122 0, 0, 0, 0, 0, 0, 0,
123 0, 1, 1, 1, 1, 0, 0,
124 1, 1, 0, 0, 1, 1, 0,
125 1, 1, 0, 0, 1, 1, 0,
126 0, 1, 1, 1, 1, 0, 0,
127 0, 0, 0, 0, 0, 0, 0,
128 0, 0, 0, 0, 0, 0, 0,
129 0, 0, 0, 0, 0, 0, 0,
130 0, 0, 0, 0, 0, 0, 0,
131 0, 0, 0, 0, 0, 0, 0,
132 0, 0, 0, 0, 0, 0, 0,
133 0, 0, 0, 0, 0, 0, 0,
134
135 /* Char 8 */
136 0, 0, 0, 0, 0, 0, 0,
137 0, 0, 0, 0, 0, 0, 0,
138 0, 0, 1, 1, 0, 0, 0,
139 0, 0, 1, 1, 0, 0, 0,
140 1, 1, 1, 1, 1, 1, 0,
141 1, 1, 1, 1, 1, 1, 0,
142 0, 0, 1, 1, 0, 0, 0,
143 0, 0, 1, 1, 0, 0, 0,
144 0, 0, 0, 0, 0, 0, 0,
145 1, 1, 1, 1, 1, 1, 0,
146 1, 1, 1, 1, 1, 1, 0,
147 0, 0, 0, 0, 0, 0, 0,
148 0, 0, 0, 0, 0, 0, 0,
149
150 /* Char 9 */
151 0, 0, 0, 0, 0, 0, 0,
152 1, 1, 0, 0, 1, 1, 0,
153 1, 1, 1, 0, 1, 1, 0,
154 1, 1, 1, 1, 1, 1, 0,
155 1, 1, 0, 1, 1, 1, 0,
156 1, 1, 0, 0, 1, 1, 0,
157 0, 0, 0, 0, 0, 0, 0,
158 0, 0, 1, 1, 0, 0, 0,
159 0, 0, 1, 1, 0, 0, 0,
160 0, 0, 1, 1, 0, 0, 0,
161 0, 0, 1, 1, 0, 0, 0,
162 0, 0, 1, 1, 1, 1, 0,
163 0, 0, 0, 0, 0, 0, 0,
164
165 /* Char 10 */
166 0, 0, 0, 0, 0, 0, 0,
167 1, 1, 0, 0, 1, 1, 0,
168 1, 1, 0, 0, 1, 1, 0,
169 0, 1, 0, 0, 1, 0, 0,
170 0, 1, 1, 1, 1, 0, 0,
171 0, 0, 1, 1, 0, 0, 0,
172 0, 0, 0, 0, 0, 0, 0,
173 0, 0, 1, 1, 1, 1, 0,
174 0, 0, 0, 1, 1, 0, 0,
175 0, 0, 0, 1, 1, 0, 0,
176 0, 0, 0, 1, 1, 0, 0,
177 0, 0, 0, 1, 1, 0, 0,
178 0, 0, 0, 0, 0, 0, 0,
179
180 /* Char 11 */
181 0, 0, 1, 1, 0, 0, 0,
182 0, 0, 1, 1, 0, 0, 0,
183 0, 0, 1, 1, 0, 0, 0,
184 0, 0, 1, 1, 0, 0, 0,
185 0, 0, 1, 1, 0, 0, 0,
186 0, 0, 1, 1, 0, 0, 0,
187 1, 1, 1, 1, 0, 0, 0,
188 1, 1, 1, 1, 0, 0, 0,
189 0, 0, 0, 0, 0, 0, 0,
190 0, 0, 0, 0, 0, 0, 0,
191 0, 0, 0, 0, 0, 0, 0,
192 0, 0, 0, 0, 0, 0, 0,
193 0, 0, 0, 0, 0, 0, 0,
194
195 /* Char 12 */
196 0, 0, 0, 0, 0, 0, 0,
197 0, 0, 0, 0, 0, 0, 0,
198 0, 0, 0, 0, 0, 0, 0,
199 0, 0, 0, 0, 0, 0, 0,
200 0, 0, 0, 0, 0, 0, 0,
201 0, 0, 0, 0, 0, 0, 0,
202 1, 1, 1, 1, 0, 0, 0,
203 1, 1, 1, 1, 0, 0, 0,
204 0, 0, 1, 1, 0, 0, 0,
205 0, 0, 1, 1, 0, 0, 0,
206 0, 0, 1, 1, 0, 0, 0,
207 0, 0, 1, 1, 0, 0, 0,
208 0, 0, 1, 1, 0, 0, 0,
209
210 /* Char 13 */
211 0, 0, 0, 0, 0, 0, 0,
212 0, 0, 0, 0, 0, 0, 0,
213 0, 0, 0, 0, 0, 0, 0,
214 0, 0, 0, 0, 0, 0, 0,
215 0, 0, 0, 0, 0, 0, 0,
216 0, 0, 0, 0, 0, 0, 0,
217 0, 0, 1, 1, 1, 1, 1,
218 0, 0, 1, 1, 1, 1, 1,
219 0, 0, 1, 1, 0, 0, 0,
220 0, 0, 1, 1, 0, 0, 0,
221 0, 0, 1, 1, 0, 0, 0,
222 0, 0, 1, 1, 0, 0, 0,
223 0, 0, 1, 1, 0, 0, 0,
224
225 /* Char 14 */
226 0, 0, 1, 1, 0, 0, 0,
227 0, 0, 1, 1, 0, 0, 0,
228 0, 0, 1, 1, 0, 0, 0,
229 0, 0, 1, 1, 0, 0, 0,
230 0, 0, 1, 1, 0, 0, 0,
231 0, 0, 1, 1, 0, 0, 0,
232 0, 0, 1, 1, 1, 1, 1,
233 0, 0, 1, 1, 1, 1, 1,
234 0, 0, 0, 0, 0, 0, 0,
235 0, 0, 0, 0, 0, 0, 0,
236 0, 0, 0, 0, 0, 0, 0,
237 0, 0, 0, 0, 0, 0, 0,
238 0, 0, 0, 0, 0, 0, 0,
239
240 /* Char 15 */
241 0, 0, 1, 1, 0, 0, 0,
242 0, 0, 1, 1, 0, 0, 0,
243 0, 0, 1, 1, 0, 0, 0,
244 0, 0, 1, 1, 0, 0, 0,
245 0, 0, 1, 1, 0, 0, 0,
246 0, 0, 1, 1, 0, 0, 0,
247 1, 1, 1, 1, 1, 1, 1,
248 1, 1, 1, 1, 1, 1, 1,
249 0, 0, 1, 1, 0, 0, 0,
250 0, 0, 1, 1, 0, 0, 0,
251 0, 0, 1, 1, 0, 0, 0,
252 0, 0, 1, 1, 0, 0, 0,
253 0, 0, 1, 1, 0, 0, 0,
254
255 /* Char 16 */
256 0, 0, 0, 0, 0, 0, 0,
257 0, 0, 0, 0, 0, 0, 0,
258 1, 1, 1, 1, 1, 1, 1,
259 1, 1, 1, 1, 1, 1, 1,
260 0, 0, 0, 0, 0, 0, 0,
261 0, 0, 0, 0, 0, 0, 0,
262 0, 0, 0, 0, 0, 0, 0,
263 0, 0, 0, 0, 0, 0, 0,
264 0, 0, 0, 0, 0, 0, 0,
265 0, 0, 0, 0, 0, 0, 0,
266 0, 0, 0, 0, 0, 0, 0,
267 0, 0, 0, 0, 0, 0, 0,
268 0, 0, 0, 0, 0, 0, 0,
269
270 /* Char 17 */
271 0, 0, 0, 0, 0, 0, 0,
272 0, 0, 0, 0, 0, 0, 0,
273 0, 0, 0, 0, 0, 0, 0,
274 0, 0, 0, 0, 0, 0, 0,
275 1, 1, 1, 1, 1, 1, 1,
276 1, 1, 1, 1, 1, 1, 1,
277 0, 0, 0, 0, 0, 0, 0,
278 0, 0, 0, 0, 0, 0, 0,
279 0, 0, 0, 0, 0, 0, 0,
280 0, 0, 0, 0, 0, 0, 0,
281 0, 0, 0, 0, 0, 0, 0,
282 0, 0, 0, 0, 0, 0, 0,
283 0, 0, 0, 0, 0, 0, 0,
284
285 /* Char 18 */
286 0, 0, 0, 0, 0, 0, 0,
287 0, 0, 0, 0, 0, 0, 0,
288 0, 0, 0, 0, 0, 0, 0,
289 0, 0, 0, 0, 0, 0, 0,
290 0, 0, 0, 0, 0, 0, 0,
291 0, 0, 0, 0, 0, 0, 0,
292 1, 1, 1, 1, 1, 1, 1,
293 1, 1, 1, 1, 1, 1, 1,
294 0, 0, 0, 0, 0, 0, 0,
295 0, 0, 0, 0, 0, 0, 0,
296 0, 0, 0, 0, 0, 0, 0,
297 0, 0, 0, 0, 0, 0, 0,
298 0, 0, 0, 0, 0, 0, 0,
299
300 /* Char 19 */
301 0, 0, 0, 0, 0, 0, 0,
302 0, 0, 0, 0, 0, 0, 0,
303 0, 0, 0, 0, 0, 0, 0,
304 0, 0, 0, 0, 0, 0, 0,
305 0, 0, 0, 0, 0, 0, 0,
306 0, 0, 0, 0, 0, 0, 0,
307 0, 0, 0, 0, 0, 0, 0,
308 0, 0, 0, 0, 0, 0, 0,
309 1, 1, 1, 1, 1, 1, 1,
310 1, 1, 1, 1, 1, 1, 1,
311 0, 0, 0, 0, 0, 0, 0,
312 0, 0, 0, 0, 0, 0, 0,
313 0, 0, 0, 0, 0, 0, 0,
314
315 /* Char 20 */
316 0, 0, 0, 0, 0, 0, 0,
317 0, 0, 0, 0, 0, 0, 0,
318 0, 0, 0, 0, 0, 0, 0,
319 0, 0, 0, 0, 0, 0, 0,
320 0, 0, 0, 0, 0, 0, 0,
321 0, 0, 0, 0, 0, 0, 0,
322 0, 0, 0, 0, 0, 0, 0,
323 0, 0, 0, 0, 0, 0, 0,
324 0, 0, 0, 0, 0, 0, 0,
325 0, 0, 0, 0, 0, 0, 0,
326 1, 1, 1, 1, 1, 1, 1,
327 1, 1, 1, 1, 1, 1, 1,
328 0, 0, 0, 0, 0, 0, 0,
329
330 /* Char 21 */
331 0, 0, 1, 1, 0, 0, 0,
332 0, 0, 1, 1, 0, 0, 0,
333 0, 0, 1, 1, 0, 0, 0,
334 0, 0, 1, 1, 0, 0, 0,
335 0, 0, 1, 1, 0, 0, 0,
336 0, 0, 1, 1, 0, 0, 0,
337 0, 0, 1, 1, 1, 1, 1,
338 0, 0, 1, 1, 1, 1, 1,
339 0, 0, 1, 1, 0, 0, 0,
340 0, 0, 1, 1, 0, 0, 0,
341 0, 0, 1, 1, 0, 0, 0,
342 0, 0, 1, 1, 0, 0, 0,
343 0, 0, 1, 1, 0, 0, 0,
344
345 /* Char 22 */
346 0, 0, 1, 1, 0, 0, 0,
347 0, 0, 1, 1, 0, 0, 0,
348 0, 0, 1, 1, 0, 0, 0,
349 0, 0, 1, 1, 0, 0, 0,
350 0, 0, 1, 1, 0, 0, 0,
351 0, 0, 1, 1, 0, 0, 0,
352 1, 1, 1, 1, 0, 0, 0,
353 1, 1, 1, 1, 0, 0, 0,
354 0, 0, 1, 1, 0, 0, 0,
355 0, 0, 1, 1, 0, 0, 0,
356 0, 0, 1, 1, 0, 0, 0,
357 0, 0, 1, 1, 0, 0, 0,
358 0, 0, 1, 1, 0, 0, 0,
359
360 /* Char 23 */
361 0, 0, 1, 1, 0, 0, 0,
362 0, 0, 1, 1, 0, 0, 0,
363 0, 0, 1, 1, 0, 0, 0,
364 0, 0, 1, 1, 0, 0, 0,
365 0, 0, 1, 1, 0, 0, 0,
366 0, 0, 1, 1, 0, 0, 0,
367 1, 1, 1, 1, 1, 1, 1,
368 1, 1, 1, 1, 1, 1, 1,
369 0, 0, 0, 0, 0, 0, 0,
370 0, 0, 0, 0, 0, 0, 0,
371 0, 0, 0, 0, 0, 0, 0,
372 0, 0, 0, 0, 0, 0, 0,
373 0, 0, 0, 0, 0, 0, 0,
374
375 /* Char 24 */
376 0, 0, 0, 0, 0, 0, 0,
377 0, 0, 0, 0, 0, 0, 0,
378 0, 0, 0, 0, 0, 0, 0,
379 0, 0, 0, 0, 0, 0, 0,
380 0, 0, 0, 0, 0, 0, 0,
381 0, 0, 0, 0, 0, 0, 0,
382 1, 1, 1, 1, 1, 1, 1,
383 1, 1, 1, 1, 1, 1, 1,
384 0, 0, 1, 1, 0, 0, 0,
385 0, 0, 1, 1, 0, 0, 0,
386 0, 0, 1, 1, 0, 0, 0,
387 0, 0, 1, 1, 0, 0, 0,
388 0, 0, 1, 1, 0, 0, 0,
389
390 /* Char 25 */
391 0, 0, 1, 1, 0, 0, 0,
392 0, 0, 1, 1, 0, 0, 0,
393 0, 0, 1, 1, 0, 0, 0,
394 0, 0, 1, 1, 0, 0, 0,
395 0, 0, 1, 1, 0, 0, 0,
396 0, 0, 1, 1, 0, 0, 0,
397 0, 0, 1, 1, 0, 0, 0,
398 0, 0, 1, 1, 0, 0, 0,
399 0, 0, 1, 1, 0, 0, 0,
400 0, 0, 1, 1, 0, 0, 0,
401 0, 0, 1, 1, 0, 0, 0,
402 0, 0, 1, 1, 0, 0, 0,
403 0, 0, 1, 1, 0, 0, 0,
404
405 /* Char 26 */
406 0, 0, 0, 0, 0, 0, 0,
407 0, 0, 0, 0, 0, 0, 0,
408 0, 0, 0, 0, 1, 1, 0,
409 0, 0, 0, 1, 1, 0, 0,
410 0, 1, 1, 0, 0, 0, 0,
411 1, 1, 0, 0, 0, 0, 0,
412 0, 1, 1, 0, 0, 0, 0,
413 0, 0, 0, 1, 1, 0, 0,
414 0, 0, 0, 0, 1, 1, 0,
415 1, 1, 1, 1, 1, 1, 0,
416 1, 1, 1, 1, 1, 1, 0,
417 0, 0, 0, 0, 0, 0, 0,
418 0, 0, 0, 0, 0, 0, 0,
419
420 /* Char 27 */
421 0, 0, 0, 0, 0, 0, 0,
422 0, 0, 0, 0, 0, 0, 0,
423 1, 1, 0, 0, 0, 0, 0,
424 0, 1, 1, 0, 0, 0, 0,
425 0, 0, 0, 1, 1, 0, 0,
426 0, 0, 0, 0, 1, 1, 0,
427 0, 0, 0, 1, 1, 0, 0,
428 0, 1, 1, 0, 0, 0, 0,
429 1, 1, 0, 0, 0, 0, 0,
430 1, 1, 1, 1, 1, 1, 0,
431 1, 1, 1, 1, 1, 1, 0,
432 0, 0, 0, 0, 0, 0, 0,
433 0, 0, 0, 0, 0, 0, 0,
434
435 /* Char 28 */
436 0, 0, 0, 0, 0, 0, 0,
437 0, 0, 0, 0, 0, 0, 0,
438 0, 0, 0, 0, 0, 0, 0,
439 0, 0, 0, 0, 0, 0, 0,
440 0, 0, 0, 0, 0, 0, 0,
441 1, 1, 1, 1, 1, 1, 0,
442 0, 1, 1, 0, 1, 1, 0,
443 0, 1, 1, 0, 1, 1, 0,
444 0, 1, 1, 0, 1, 1, 0,
445 1, 1, 1, 0, 1, 1, 0,
446 1, 1, 0, 0, 1, 1, 0,
447 0, 0, 0, 0, 0, 0, 0,
448 0, 0, 0, 0, 0, 0, 0,
449
450 /* Char 29 */
451 0, 0, 0, 0, 0, 0, 0,
452 0, 0, 0, 0, 0, 0, 0,
453 0, 0, 0, 0, 0, 1, 0,
454 0, 0, 0, 0, 1, 1, 0,
455 1, 1, 1, 1, 1, 1, 0,
456 1, 1, 1, 1, 1, 1, 0,
457 0, 0, 1, 1, 0, 0, 0,
458 1, 1, 1, 1, 1, 1, 0,
459 1, 1, 1, 1, 1, 1, 0,
460 1, 1, 0, 0, 0, 0, 0,
461 1, 0, 0, 0, 0, 0, 0,
462 0, 0, 0, 0, 0, 0, 0,
463 0, 0, 0, 0, 0, 0, 0,
464
465 /* Char 30 */
466 0, 0, 0, 0, 0, 0, 0,
467 0, 0, 0, 0, 0, 0, 0,
468 0, 0, 1, 1, 1, 0, 0,
469 0, 1, 1, 0, 1, 1, 0,
470 0, 1, 1, 0, 0, 0, 0,
471 0, 1, 1, 0, 0, 0, 0,
472 1, 1, 1, 1, 1, 0, 0,
473 0, 1, 1, 0, 0, 0, 0,
474 0, 1, 1, 0, 0, 0, 0,
475 0, 1, 1, 0, 1, 1, 0,
476 1, 0, 1, 1, 1, 0, 0,
477 0, 0, 0, 0, 0, 0, 0,
478 0, 0, 0, 0, 0, 0, 0,
479
480 /* Char 31 */
481 0, 0, 0, 0, 0, 0, 0,
482 0, 0, 0, 0, 0, 0, 0,
483 0, 0, 0, 0, 0, 0, 0,
484 0, 0, 0, 0, 0, 0, 0,
485 0, 0, 0, 0, 0, 0, 0,
486 0, 0, 0, 0, 0, 0, 0,
487 0, 0, 1, 1, 0, 0, 0,
488 0, 0, 1, 1, 0, 0, 0,
489 0, 0, 0, 0, 0, 0, 0,
490 0, 0, 0, 0, 0, 0, 0,
491 0, 0, 0, 0, 0, 0, 0,
492 0, 0, 0, 0, 0, 0, 0,
493 0, 0, 0, 0, 0, 0, 0,
494
495 /* Char 32 */
496 0, 0, 0, 0, 0, 0, 0,
497 0, 0, 0, 0, 0, 0, 0,
498 0, 0, 0, 0, 0, 0, 0,
499 0, 0, 0, 0, 0, 0, 0,
500 0, 0, 0, 0, 0, 0, 0,
501 0, 0, 0, 0, 0, 0, 0,
502 0, 0, 0, 0, 0, 0, 0,
503 0, 0, 0, 0, 0, 0, 0,
504 0, 0, 0, 0, 0, 0, 0,
505 0, 0, 0, 0, 0, 0, 0,
506 0, 0, 0, 0, 0, 0, 0,
507 0, 0, 0, 0, 0, 0, 0,
508 0, 0, 0, 0, 0, 0, 0,
509
510 /* Char 33 */
511 0, 0, 0, 0, 0, 0, 0,
512 0, 0, 0, 0, 0, 0, 0,
513 0, 0, 0, 0, 0, 0, 0,
514 0, 0, 1, 1, 0, 0, 0,
515 0, 0, 1, 1, 0, 0, 0,
516 0, 0, 1, 1, 0, 0, 0,
517 0, 0, 1, 1, 0, 0, 0,
518 0, 0, 1, 1, 0, 0, 0,
519 0, 0, 0, 0, 0, 0, 0,
520 0, 0, 1, 1, 0, 0, 0,
521 0, 0, 1, 1, 0, 0, 0,
522 0, 0, 0, 0, 0, 0, 0,
523 0, 0, 0, 0, 0, 0, 0,
524
525 /* Char 34 */
526 0, 0, 0, 0, 0, 0, 0,
527 0, 0, 0, 0, 0, 0, 0,
528 0, 1, 1, 0, 1, 1, 0,
529 0, 1, 1, 0, 1, 1, 0,
530 0, 1, 1, 0, 1, 1, 0,
531 0, 0, 0, 0, 0, 0, 0,
532 0, 0, 0, 0, 0, 0, 0,
533 0, 0, 0, 0, 0, 0, 0,
534 0, 0, 0, 0, 0, 0, 0,
535 0, 0, 0, 0, 0, 0, 0,
536 0, 0, 0, 0, 0, 0, 0,
537 0, 0, 0, 0, 0, 0, 0,
538 0, 0, 0, 0, 0, 0, 0,
539
540 /* Char 35 */
541 0, 0, 0, 0, 0, 0, 0,
542 0, 0, 0, 0, 0, 0, 0,
543 0, 0, 1, 0, 1, 0, 0,
544 0, 0, 1, 0, 1, 0, 0,
545 0, 1, 1, 1, 1, 1, 0,
546 0, 1, 1, 1, 1, 1, 0,
547 0, 0, 1, 0, 1, 0, 0,
548 0, 1, 1, 1, 1, 1, 0,
549 0, 1, 1, 1, 1, 1, 0,
550 0, 0, 1, 0, 1, 0, 0,
551 0, 0, 1, 0, 1, 0, 0,
552 0, 0, 0, 0, 0, 0, 0,
553 0, 0, 0, 0, 0, 0, 0,
554
555 /* Char 36 */
556 0, 0, 0, 0, 0, 0, 0,
557 0, 0, 0, 0, 0, 0, 0,
558 0, 0, 1, 1, 0, 0, 0,
559 0, 1, 1, 1, 1, 0, 0,
560 1, 0, 1, 1, 0, 1, 0,
561 1, 0, 1, 1, 0, 0, 0,
562 0, 1, 1, 1, 1, 0, 0,
563 0, 0, 1, 1, 0, 1, 0,
564 1, 0, 1, 1, 0, 1, 0,
565 0, 1, 1, 1, 1, 0, 0,
566 0, 0, 1, 1, 0, 0, 0,
567 0, 0, 0, 0, 0, 0, 0,
568 0, 0, 0, 0, 0, 0, 0,
569
570 /* Char 37 */
571 0, 0, 0, 0, 0, 0, 0,
572 0, 0, 0, 0, 0, 0, 0,
573 1, 1, 1, 0, 0, 1, 0,
574 1, 0, 1, 0, 1, 1, 0,
575 1, 1, 1, 0, 1, 0, 0,
576 0, 0, 0, 1, 1, 0, 0,
577 0, 0, 1, 1, 0, 0, 0,
578 0, 1, 1, 0, 0, 0, 0,
579 0, 1, 0, 1, 1, 1, 0,
580 1, 1, 0, 1, 0, 1, 0,
581 1, 0, 0, 1, 1, 1, 0,
582 0, 0, 0, 0, 0, 0, 0,
583 0, 0, 0, 0, 0, 0, 0,
584
585 /* Char 38 */
586 0, 0, 0, 0, 0, 0, 0,
587 0, 0, 0, 0, 0, 0, 0,
588 0, 0, 0, 0, 0, 0, 0,
589 0, 1, 1, 1, 0, 0, 0,
590 1, 1, 0, 1, 1, 0, 0,
591 1, 1, 0, 1, 1, 0, 0,
592 0, 1, 1, 1, 0, 0, 0,
593 1, 1, 0, 1, 0, 1, 0,
594 1, 1, 0, 1, 1, 1, 0,
595 1, 1, 0, 1, 1, 0, 0,
596 0, 1, 1, 1, 0, 1, 0,
597 0, 0, 0, 0, 0, 0, 0,
598 0, 0, 0, 0, 0, 0, 0,
599
600 /* Char 39 */
601 0, 0, 0, 0, 0, 0, 0,
602 0, 0, 0, 0, 0, 0, 0,
603 0, 0, 1, 1, 1, 0, 0,
604 0, 0, 1, 1, 1, 0, 0,
605 0, 0, 1, 1, 0, 0, 0,
606 0, 1, 1, 0, 0, 0, 0,
607 0, 0, 0, 0, 0, 0, 0,
608 0, 0, 0, 0, 0, 0, 0,
609 0, 0, 0, 0, 0, 0, 0,
610 0, 0, 0, 0, 0, 0, 0,
611 0, 0, 0, 0, 0, 0, 0,
612 0, 0, 0, 0, 0, 0, 0,
613 0, 0, 0, 0, 0, 0, 0,
614
615 /* Char 40 */
616 0, 0, 0, 0, 0, 0, 0,
617 0, 0, 0, 0, 0, 0, 0,
618 0, 0, 0, 1, 1, 0, 0,
619 0, 0, 1, 1, 0, 0, 0,
620 0, 0, 1, 1, 0, 0, 0,
621 0, 1, 1, 0, 0, 0, 0,
622 0, 1, 1, 0, 0, 0, 0,
623 0, 1, 1, 0, 0, 0, 0,
624 0, 0, 1, 1, 0, 0, 0,
625 0, 0, 1, 1, 0, 0, 0,
626 0, 0, 0, 1, 1, 0, 0,
627 0, 0, 0, 0, 0, 0, 0,
628 0, 0, 0, 0, 0, 0, 0,
629
630 /* Char 41 */
631 0, 0, 0, 0, 0, 0, 0,
632 0, 0, 0, 0, 0, 0, 0,
633 0, 1, 1, 0, 0, 0, 0,
634 0, 0, 1, 1, 0, 0, 0,
635 0, 0, 1, 1, 0, 0, 0,
636 0, 0, 0, 1, 1, 0, 0,
637 0, 0, 0, 1, 1, 0, 0,
638 0, 0, 0, 1, 1, 0, 0,
639 0, 0, 1, 1, 0, 0, 0,
640 0, 0, 1, 1, 0, 0, 0,
641 0, 1, 1, 0, 0, 0, 0,
642 0, 0, 0, 0, 0, 0, 0,
643 0, 0, 0, 0, 0, 0, 0,
644
645 /* Char 42 */
646 0, 0, 0, 0, 0, 0, 0,
647 0, 0, 0, 0, 0, 0, 0,
648 0, 0, 0, 0, 0, 0, 0,
649 0, 0, 0, 0, 0, 0, 0,
650 0, 1, 0, 0, 1, 0, 0,
651 0, 0, 1, 1, 0, 0, 0,
652 1, 1, 1, 1, 1, 1, 0,
653 1, 1, 1, 1, 1, 1, 0,
654 0, 0, 1, 1, 0, 0, 0,
655 0, 1, 0, 0, 1, 0, 0,
656 0, 0, 0, 0, 0, 0, 0,
657 0, 0, 0, 0, 0, 0, 0,
658 0, 0, 0, 0, 0, 0, 0,
659
660 /* Char 43 */
661 0, 0, 0, 0, 0, 0, 0,
662 0, 0, 0, 0, 0, 0, 0,
663 0, 0, 0, 0, 0, 0, 0,
664 0, 0, 0, 0, 0, 0, 0,
665 0, 0, 1, 1, 0, 0, 0,
666 0, 0, 1, 1, 0, 0, 0,
667 1, 1, 1, 1, 1, 1, 0,
668 1, 1, 1, 1, 1, 1, 0,
669 0, 0, 1, 1, 0, 0, 0,
670 0, 0, 1, 1, 0, 0, 0,
671 0, 0, 0, 0, 0, 0, 0,
672 0, 0, 0, 0, 0, 0, 0,
673 0, 0, 0, 0, 0, 0, 0,
674
675 /* Char 44 */
676 0, 0, 0, 0, 0, 0, 0,
677 0, 0, 0, 0, 0, 0, 0,
678 0, 0, 0, 0, 0, 0, 0,
679 0, 0, 0, 0, 0, 0, 0,
680 0, 0, 0, 0, 0, 0, 0,
681 0, 0, 0, 0, 0, 0, 0,
682 0, 0, 0, 0, 0, 0, 0,
683 0, 0, 0, 0, 0, 0, 0,
684 0, 0, 1, 1, 1, 0, 0,
685 0, 0, 1, 1, 1, 0, 0,
686 0, 0, 1, 1, 0, 0, 0,
687 0, 1, 1, 0, 0, 0, 0,
688 0, 0, 0, 0, 0, 0, 0,
689
690 /* Char 45 */
691 0, 0, 0, 0, 0, 0, 0,
692 0, 0, 0, 0, 0, 0, 0,
693 0, 0, 0, 0, 0, 0, 0,
694 0, 0, 0, 0, 0, 0, 0,
695 0, 0, 0, 0, 0, 0, 0,
696 0, 0, 0, 0, 0, 0, 0,
697 1, 1, 1, 1, 1, 1, 0,
698 1, 1, 1, 1, 1, 1, 0,
699 0, 0, 0, 0, 0, 0, 0,
700 0, 0, 0, 0, 0, 0, 0,
701 0, 0, 0, 0, 0, 0, 0,
702 0, 0, 0, 0, 0, 0, 0,
703 0, 0, 0, 0, 0, 0, 0,
704
705 /* Char 46 */
706 0, 0, 0, 0, 0, 0, 0,
707 0, 0, 0, 0, 0, 0, 0,
708 0, 0, 0, 0, 0, 0, 0,
709 0, 0, 0, 0, 0, 0, 0,
710 0, 0, 0, 0, 0, 0, 0,
711 0, 0, 0, 0, 0, 0, 0,
712 0, 0, 0, 0, 0, 0, 0,
713 0, 0, 0, 0, 0, 0, 0,
714 0, 0, 0, 0, 0, 0, 0,
715 0, 0, 1, 1, 0, 0, 0,
716 0, 1, 1, 1, 1, 0, 0,
717 0, 0, 1, 1, 0, 0, 0,
718 0, 0, 0, 0, 0, 0, 0,
719
720 /* Char 47 */
721 0, 0, 0, 0, 0, 0, 0,
722 0, 0, 0, 0, 0, 0, 0,
723 0, 0, 0, 0, 1, 1, 0,
724 0, 0, 0, 0, 1, 1, 0,
725 0, 0, 0, 1, 1, 0, 0,
726 0, 0, 0, 1, 1, 0, 0,
727 0, 0, 1, 1, 0, 0, 0,
728 0, 1, 1, 0, 0, 0, 0,
729 0, 1, 1, 0, 0, 0, 0,
730 1, 1, 0, 0, 0, 0, 0,
731 1, 1, 0, 0, 0, 0, 0,
732 0, 0, 0, 0, 0, 0, 0,
733 0, 0, 0, 0, 0, 0, 0,
734
735 /* Char 48 */
736 0, 0, 0, 0, 0, 0, 0,
737 0, 0, 0, 0, 0, 0, 0,
738 0, 0, 0, 0, 0, 0, 0,
739 0, 1, 1, 1, 1, 0, 0,
740 1, 1, 0, 0, 1, 1, 0,
741 1, 1, 0, 0, 1, 1, 0,
742 1, 1, 0, 1, 1, 1, 0,
743 1, 1, 1, 0, 1, 1, 0,
744 1, 1, 0, 0, 1, 1, 0,
745 1, 1, 0, 0, 1, 1, 0,
746 0, 1, 1, 1, 1, 0, 0,
747 0, 0, 0, 0, 0, 0, 0,
748 0, 0, 0, 0, 0, 0, 0,
749
750 /* Char 49 */
751 0, 0, 0, 0, 0, 0, 0,
752 0, 0, 0, 0, 0, 0, 0,
753 0, 0, 0, 0, 0, 0, 0,
754 0, 0, 1, 1, 0, 0, 0,
755 0, 1, 1, 1, 0, 0, 0,
756 1, 0, 1, 1, 0, 0, 0,
757 0, 0, 1, 1, 0, 0, 0,
758 0, 0, 1, 1, 0, 0, 0,
759 0, 0, 1, 1, 0, 0, 0,
760 0, 0, 1, 1, 0, 0, 0,
761 1, 1, 1, 1, 1, 1, 0,
762 0, 0, 0, 0, 0, 0, 0,
763 0, 0, 0, 0, 0, 0, 0,
764
765 /* Char 50 */
766 0, 0, 0, 0, 0, 0, 0,
767 0, 0, 0, 0, 0, 0, 0,
768 0, 0, 0, 0, 0, 0, 0,
769 0, 1, 1, 1, 1, 0, 0,
770 1, 1, 0, 0, 1, 1, 0,
771 1, 1, 0, 0, 1, 1, 0,
772 0, 0, 0, 0, 1, 1, 0,
773 0, 0, 1, 1, 1, 0, 0,
774 0, 1, 1, 0, 0, 0, 0,
775 1, 1, 0, 0, 0, 0, 0,
776 1, 1, 1, 1, 1, 1, 0,
777 0, 0, 0, 0, 0, 0, 0,
778 0, 0, 0, 0, 0, 0, 0,
779
780 /* Char 51 */
781 0, 0, 0, 0, 0, 0, 0,
782 0, 0, 0, 0, 0, 0, 0,
783 0, 0, 0, 0, 0, 0, 0,
784 0, 1, 1, 1, 1, 0, 0,
785 1, 1, 0, 0, 1, 1, 0,
786 0, 0, 0, 0, 1, 1, 0,
787 0, 1, 1, 1, 1, 0, 0,
788 0, 0, 0, 0, 1, 1, 0,
789 0, 0, 0, 0, 1, 1, 0,
790 1, 1, 0, 0, 1, 1, 0,
791 0, 1, 1, 1, 1, 0, 0,
792 0, 0, 0, 0, 0, 0, 0,
793 0, 0, 0, 0, 0, 0, 0,
794
795 /* Char 52 */
796 0, 0, 0, 0, 0, 0, 0,
797 0, 0, 0, 0, 0, 0, 0,
798 0, 0, 0, 0, 0, 0, 0,
799 0, 0, 0, 0, 1, 1, 0,
800 0, 0, 0, 1, 1, 1, 0,
801 0, 0, 1, 1, 1, 1, 0,
802 0, 1, 1, 0, 1, 1, 0,
803 1, 1, 0, 0, 1, 1, 0,
804 1, 1, 1, 1, 1, 1, 0,
805 0, 0, 0, 0, 1, 1, 0,
806 0, 0, 0, 0, 1, 1, 0,
807 0, 0, 0, 0, 0, 0, 0,
808 0, 0, 0, 0, 0, 0, 0,
809
810 /* Char 53 */
811 0, 0, 0, 0, 0, 0, 0,
812 0, 0, 0, 0, 0, 0, 0,
813 0, 0, 0, 0, 0, 0, 0,
814 1, 1, 1, 1, 1, 1, 0,
815 1, 1, 0, 0, 0, 0, 0,
816 1, 1, 1, 1, 1, 0, 0,
817 1, 1, 0, 0, 1, 1, 0,
818 0, 0, 0, 0, 1, 1, 0,
819 0, 0, 0, 0, 1, 1, 0,
820 1, 1, 0, 0, 1, 1, 0,
821 0, 1, 1, 1, 1, 0, 0,
822 0, 0, 0, 0, 0, 0, 0,
823 0, 0, 0, 0, 0, 0, 0,
824
825 /* Char 54 */
826 0, 0, 0, 0, 0, 0, 0,
827 0, 0, 0, 0, 0, 0, 0,
828 0, 0, 0, 0, 0, 0, 0,
829 0, 1, 1, 1, 1, 0, 0,
830 1, 1, 0, 0, 1, 1, 0,
831 1, 1, 0, 0, 0, 0, 0,
832 1, 1, 1, 1, 1, 0, 0,
833 1, 1, 0, 0, 1, 1, 0,
834 1, 1, 0, 0, 1, 1, 0,
835 1, 1, 0, 0, 1, 1, 0,
836 0, 1, 1, 1, 1, 0, 0,
837 0, 0, 0, 0, 0, 0, 0,
838 0, 0, 0, 0, 0, 0, 0,
839
840 /* Char 55 */
841 0, 0, 0, 0, 0, 0, 0,
842 0, 0, 0, 0, 0, 0, 0,
843 0, 0, 0, 0, 0, 0, 0,
844 1, 1, 1, 1, 1, 1, 0,
845 0, 0, 0, 0, 1, 1, 0,
846 0, 0, 0, 1, 1, 0, 0,
847 0, 0, 0, 1, 1, 0, 0,
848 0, 0, 1, 1, 0, 0, 0,
849 0, 0, 1, 1, 0, 0, 0,
850 0, 1, 1, 0, 0, 0, 0,
851 0, 1, 1, 0, 0, 0, 0,
852 0, 0, 0, 0, 0, 0, 0,
853 0, 0, 0, 0, 0, 0, 0,
854
855 /* Char 56 */
856 0, 0, 0, 0, 0, 0, 0,
857 0, 0, 0, 0, 0, 0, 0,
858 0, 0, 0, 0, 0, 0, 0,
859 0, 1, 1, 1, 1, 0, 0,
860 1, 1, 0, 0, 1, 1, 0,
861 1, 1, 0, 0, 1, 1, 0,
862 0, 1, 1, 1, 1, 0, 0,
863 1, 1, 0, 0, 1, 1, 0,
864 1, 1, 0, 0, 1, 1, 0,
865 1, 1, 0, 0, 1, 1, 0,
866 0, 1, 1, 1, 1, 0, 0,
867 0, 0, 0, 0, 0, 0, 0,
868 0, 0, 0, 0, 0, 0, 0,
869
870 /* Char 57 */
871 0, 0, 0, 0, 0, 0, 0,
872 0, 0, 0, 0, 0, 0, 0,
873 0, 0, 0, 0, 0, 0, 0,
874 0, 1, 1, 1, 1, 0, 0,
875 1, 1, 0, 0, 1, 1, 0,
876 1, 1, 0, 0, 1, 1, 0,
877 1, 1, 0, 0, 1, 1, 0,
878 0, 1, 1, 1, 1, 1, 0,
879 0, 0, 0, 0, 1, 1, 0,
880 1, 1, 0, 0, 1, 1, 0,
881 0, 1, 1, 1, 1, 0, 0,
882 0, 0, 0, 0, 0, 0, 0,
883 0, 0, 0, 0, 0, 0, 0,
884
885 /* Char 58 */
886 0, 0, 0, 0, 0, 0, 0,
887 0, 0, 0, 0, 0, 0, 0,
888 0, 0, 0, 0, 0, 0, 0,
889 0, 0, 0, 0, 0, 0, 0,
890 0, 0, 1, 1, 0, 0, 0,
891 0, 1, 1, 1, 1, 0, 0,
892 0, 0, 1, 1, 0, 0, 0,
893 0, 0, 0, 0, 0, 0, 0,
894 0, 0, 0, 0, 0, 0, 0,
895 0, 0, 1, 1, 0, 0, 0,
896 0, 1, 1, 1, 1, 0, 0,
897 0, 0, 1, 1, 0, 0, 0,
898 0, 0, 0, 0, 0, 0, 0,
899
900 /* Char 59 */
901 0, 0, 0, 0, 0, 0, 0,
902 0, 0, 0, 0, 0, 0, 0,
903 0, 0, 0, 0, 0, 0, 0,
904 0, 0, 0, 0, 0, 0, 0,
905 0, 0, 1, 1, 0, 0, 0,
906 0, 1, 1, 1, 1, 0, 0,
907 0, 0, 1, 1, 0, 0, 0,
908 0, 0, 0, 0, 0, 0, 0,
909 0, 0, 1, 1, 1, 0, 0,
910 0, 0, 1, 1, 1, 0, 0,
911 0, 0, 1, 1, 0, 0, 0,
912 0, 1, 1, 0, 0, 0, 0,
913 0, 0, 0, 0, 0, 0, 0,
914
915 /* Char 60 */
916 0, 0, 0, 0, 0, 0, 0,
917 0, 0, 0, 0, 0, 0, 0,
918 0, 0, 0, 0, 1, 1, 0,
919 0, 0, 0, 1, 1, 0, 0,
920 0, 0, 1, 1, 0, 0, 0,
921 0, 1, 1, 0, 0, 0, 0,
922 1, 1, 0, 0, 0, 0, 0,
923 0, 1, 1, 0, 0, 0, 0,
924 0, 0, 1, 1, 0, 0, 0,
925 0, 0, 0, 1, 1, 0, 0,
926 0, 0, 0, 0, 1, 1, 0,
927 0, 0, 0, 0, 0, 0, 0,
928 0, 0, 0, 0, 0, 0, 0,
929
930 /* Char 61 */
931 0, 0, 0, 0, 0, 0, 0,
932 0, 0, 0, 0, 0, 0, 0,
933 0, 0, 0, 0, 0, 0, 0,
934 0, 0, 0, 0, 0, 0, 0,
935 1, 1, 1, 1, 1, 1, 0,
936 1, 1, 1, 1, 1, 1, 0,
937 0, 0, 0, 0, 0, 0, 0,
938 1, 1, 1, 1, 1, 1, 0,
939 1, 1, 1, 1, 1, 1, 0,
940 0, 0, 0, 0, 0, 0, 0,
941 0, 0, 0, 0, 0, 0, 0,
942 0, 0, 0, 0, 0, 0, 0,
943 0, 0, 0, 0, 0, 0, 0,
944
945 /* Char 62 */
946 0, 0, 0, 0, 0, 0, 0,
947 0, 0, 0, 0, 0, 0, 0,
948 1, 1, 0, 0, 0, 0, 0,
949 0, 1, 1, 0, 0, 0, 0,
950 0, 0, 1, 1, 0, 0, 0,
951 0, 0, 0, 1, 1, 0, 0,
952 0, 0, 0, 0, 1, 1, 0,
953 0, 0, 0, 1, 1, 0, 0,
954 0, 0, 1, 1, 0, 0, 0,
955 0, 1, 1, 0, 0, 0, 0,
956 1, 1, 0, 0, 0, 0, 0,
957 0, 0, 0, 0, 0, 0, 0,
958 0, 0, 0, 0, 0, 0, 0,
959
960 /* Char 63 */
961 0, 0, 0, 0, 0, 0, 0,
962 0, 0, 0, 0, 0, 0, 0,
963 0, 0, 0, 0, 0, 0, 0,
964 0, 1, 1, 1, 1, 0, 0,
965 1, 1, 0, 0, 1, 1, 0,
966 0, 0, 0, 0, 1, 1, 0,
967 0, 0, 1, 1, 1, 0, 0,
968 0, 0, 1, 1, 0, 0, 0,
969 0, 0, 0, 0, 0, 0, 0,
970 0, 0, 1, 1, 0, 0, 0,
971 0, 0, 1, 1, 0, 0, 0,
972 0, 0, 0, 0, 0, 0, 0,
973 0, 0, 0, 0, 0, 0, 0,
974
975 /* Char 64 */
976 0, 0, 0, 0, 0, 0, 0,
977 0, 0, 0, 0, 0, 0, 0,
978 0, 0, 0, 0, 0, 0, 0,
979 0, 1, 1, 1, 1, 0, 0,
980 1, 0, 0, 0, 1, 1, 0,
981 1, 0, 1, 1, 1, 1, 0,
982 1, 0, 1, 0, 1, 1, 0,
983 1, 0, 1, 1, 1, 1, 0,
984 1, 0, 0, 0, 0, 0, 0,
985 1, 0, 0, 0, 1, 1, 0,
986 0, 1, 1, 1, 1, 0, 0,
987 0, 0, 0, 0, 0, 0, 0,
988 0, 0, 0, 0, 0, 0, 0,
989
990 /* Char 65 */
991 0, 0, 0, 0, 0, 0, 0,
992 0, 0, 0, 0, 0, 0, 0,
993 0, 0, 0, 0, 0, 0, 0,
994 0, 1, 1, 1, 1, 0, 0,
995 1, 1, 0, 0, 1, 1, 0,
996 1, 1, 0, 0, 1, 1, 0,
997 1, 1, 0, 0, 1, 1, 0,
998 1, 1, 1, 1, 1, 1, 0,
999 1, 1, 0, 0, 1, 1, 0,
1000 1, 1, 0, 0, 1, 1, 0,
1001 1, 1, 0, 0, 1, 1, 0,
1002 0, 0, 0, 0, 0, 0, 0,
1003 0, 0, 0, 0, 0, 0, 0,
1004
1005 /* Char 66 */
1006 0, 0, 0, 0, 0, 0, 0,
1007 0, 0, 0, 0, 0, 0, 0,
1008 0, 0, 0, 0, 0, 0, 0,
1009 1, 1, 1, 1, 1, 0, 0,
1010 1, 1, 0, 0, 1, 1, 0,
1011 1, 1, 0, 0, 1, 1, 0,
1012 1, 1, 1, 1, 1, 0, 0,
1013 1, 1, 0, 0, 1, 1, 0,
1014 1, 1, 0, 0, 1, 1, 0,
1015 1, 1, 0, 0, 1, 1, 0,
1016 1, 1, 1, 1, 1, 0, 0,
1017 0, 0, 0, 0, 0, 0, 0,
1018 0, 0, 0, 0, 0, 0, 0,
1019
1020 /* Char 67 */
1021 0, 0, 0, 0, 0, 0, 0,
1022 0, 0, 0, 0, 0, 0, 0,
1023 0, 0, 0, 0, 0, 0, 0,
1024 0, 1, 1, 1, 1, 0, 0,
1025 1, 1, 0, 0, 1, 1, 0,
1026 1, 1, 0, 0, 0, 0, 0,
1027 1, 1, 0, 0, 0, 0, 0,
1028 1, 1, 0, 0, 0, 0, 0,
1029 1, 1, 0, 0, 0, 0, 0,
1030 1, 1, 0, 0, 1, 1, 0,
1031 0, 1, 1, 1, 1, 0, 0,
1032 0, 0, 0, 0, 0, 0, 0,
1033 0, 0, 0, 0, 0, 0, 0,
1034
1035 /* Char 68 */
1036 0, 0, 0, 0, 0, 0, 0,
1037 0, 0, 0, 0, 0, 0, 0,
1038 0, 0, 0, 0, 0, 0, 0,
1039 1, 1, 1, 1, 1, 0, 0,
1040 1, 1, 0, 0, 1, 1, 0,
1041 1, 1, 0, 0, 1, 1, 0,
1042 1, 1, 0, 0, 1, 1, 0,
1043 1, 1, 0, 0, 1, 1, 0,
1044 1, 1, 0, 0, 1, 1, 0,
1045 1, 1, 0, 0, 1, 1, 0,
1046 1, 1, 1, 1, 1, 0, 0,
1047 0, 0, 0, 0, 0, 0, 0,
1048 0, 0, 0, 0, 0, 0, 0,
1049
1050 /* Char 69 */
1051 0, 0, 0, 0, 0, 0, 0,
1052 0, 0, 0, 0, 0, 0, 0,
1053 0, 0, 0, 0, 0, 0, 0,
1054 1, 1, 1, 1, 1, 1, 0,
1055 1, 1, 0, 0, 0, 0, 0,
1056 1, 1, 0, 0, 0, 0, 0,
1057 1, 1, 1, 1, 1, 0, 0,
1058 1, 1, 0, 0, 0, 0, 0,
1059 1, 1, 0, 0, 0, 0, 0,
1060 1, 1, 0, 0, 0, 0, 0,
1061 1, 1, 1, 1, 1, 1, 0,
1062 0, 0, 0, 0, 0, 0, 0,
1063 0, 0, 0, 0, 0, 0, 0,
1064
1065 /* Char 70 */
1066 0, 0, 0, 0, 0, 0, 0,
1067 0, 0, 0, 0, 0, 0, 0,
1068 0, 0, 0, 0, 0, 0, 0,
1069 1, 1, 1, 1, 1, 1, 0,
1070 1, 1, 0, 0, 0, 0, 0,
1071 1, 1, 0, 0, 0, 0, 0,
1072 1, 1, 1, 1, 1, 0, 0,
1073 1, 1, 0, 0, 0, 0, 0,
1074 1, 1, 0, 0, 0, 0, 0,
1075 1, 1, 0, 0, 0, 0, 0,
1076 1, 1, 0, 0, 0, 0, 0,
1077 0, 0, 0, 0, 0, 0, 0,
1078 0, 0, 0, 0, 0, 0, 0,
1079
1080 /* Char 71 */
1081 0, 0, 0, 0, 0, 0, 0,
1082 0, 0, 0, 0, 0, 0, 0,
1083 0, 0, 0, 0, 0, 0, 0,
1084 0, 1, 1, 1, 1, 0, 0,
1085 1, 1, 0, 0, 1, 1, 0,
1086 1, 1, 0, 0, 0, 0, 0,
1087 1, 1, 0, 0, 0, 0, 0,
1088 1, 1, 0, 1, 1, 1, 0,
1089 1, 1, 0, 0, 1, 1, 0,
1090 1, 1, 0, 0, 1, 1, 0,
1091 0, 1, 1, 1, 1, 1, 0,
1092 0, 0, 0, 0, 0, 0, 0,
1093 0, 0, 0, 0, 0, 0, 0,
1094
1095 /* Char 72 */
1096 0, 0, 0, 0, 0, 0, 0,
1097 0, 0, 0, 0, 0, 0, 0,
1098 0, 0, 0, 0, 0, 0, 0,
1099 1, 1, 0, 0, 1, 1, 0,
1100 1, 1, 0, 0, 1, 1, 0,
1101 1, 1, 0, 0, 1, 1, 0,
1102 1, 1, 1, 1, 1, 1, 0,
1103 1, 1, 0, 0, 1, 1, 0,
1104 1, 1, 0, 0, 1, 1, 0,
1105 1, 1, 0, 0, 1, 1, 0,
1106 1, 1, 0, 0, 1, 1, 0,
1107 0, 0, 0, 0, 0, 0, 0,
1108 0, 0, 0, 0, 0, 0, 0,
1109
1110 /* Char 73 */
1111 0, 0, 0, 0, 0, 0, 0,
1112 0, 0, 0, 0, 0, 0, 0,
1113 0, 0, 0, 0, 0, 0, 0,
1114 1, 1, 1, 1, 1, 1, 0,
1115 0, 0, 1, 1, 0, 0, 0,
1116 0, 0, 1, 1, 0, 0, 0,
1117 0, 0, 1, 1, 0, 0, 0,
1118 0, 0, 1, 1, 0, 0, 0,
1119 0, 0, 1, 1, 0, 0, 0,
1120 0, 0, 1, 1, 0, 0, 0,
1121 1, 1, 1, 1, 1, 1, 0,
1122 0, 0, 0, 0, 0, 0, 0,
1123 0, 0, 0, 0, 0, 0, 0,
1124
1125 /* Char 74 */
1126 0, 0, 0, 0, 0, 0, 0,
1127 0, 0, 0, 0, 0, 0, 0,
1128 0, 0, 0, 0, 0, 0, 0,
1129 0, 0, 0, 0, 1, 1, 0,
1130 0, 0, 0, 0, 1, 1, 0,
1131 0, 0, 0, 0, 1, 1, 0,
1132 0, 0, 0, 0, 1, 1, 0,
1133 0, 0, 0, 0, 1, 1, 0,
1134 0, 0, 0, 0, 1, 1, 0,
1135 1, 1, 0, 0, 1, 1, 0,
1136 0, 1, 1, 1, 1, 0, 0,
1137 0, 0, 0, 0, 0, 0, 0,
1138 0, 0, 0, 0, 0, 0, 0,
1139
1140 /* Char 75 */
1141 0, 0, 0, 0, 0, 0, 0,
1142 0, 0, 0, 0, 0, 0, 0,
1143 0, 0, 0, 0, 0, 0, 0,
1144 1, 1, 0, 0, 1, 1, 0,
1145 1, 1, 0, 1, 1, 0, 0,
1146 1, 1, 1, 1, 0, 0, 0,
1147 1, 1, 1, 0, 0, 0, 0,
1148 1, 1, 1, 0, 0, 0, 0,
1149 1, 1, 1, 1, 0, 0, 0,
1150 1, 1, 0, 1, 1, 0, 0,
1151 1, 1, 0, 0, 1, 1, 0,
1152 0, 0, 0, 0, 0, 0, 0,
1153 0, 0, 0, 0, 0, 0, 0,
1154
1155 /* Char 76 */
1156 0, 0, 0, 0, 0, 0, 0,
1157 0, 0, 0, 0, 0, 0, 0,
1158 0, 0, 0, 0, 0, 0, 0,
1159 1, 1, 0, 0, 0, 0, 0,
1160 1, 1, 0, 0, 0, 0, 0,
1161 1, 1, 0, 0, 0, 0, 0,
1162 1, 1, 0, 0, 0, 0, 0,
1163 1, 1, 0, 0, 0, 0, 0,
1164 1, 1, 0, 0, 0, 0, 0,
1165 1, 1, 0, 0, 0, 0, 0,
1166 1, 1, 1, 1, 1, 1, 0,
1167 0, 0, 0, 0, 0, 0, 0,
1168 0, 0, 0, 0, 0, 0, 0,
1169
1170 /* Char 77 */
1171 0, 0, 0, 0, 0, 0, 0,
1172 0, 0, 0, 0, 0, 0, 0,
1173 0, 0, 0, 0, 0, 0, 0,
1174 1, 0, 0, 0, 0, 1, 0,
1175 1, 1, 0, 0, 1, 1, 0,
1176 1, 1, 1, 1, 1, 1, 0,
1177 1, 1, 1, 1, 1, 1, 0,
1178 1, 1, 0, 0, 1, 1, 0,
1179 1, 1, 0, 0, 1, 1, 0,
1180 1, 1, 0, 0, 1, 1, 0,
1181 1, 1, 0, 0, 1, 1, 0,
1182 0, 0, 0, 0, 0, 0, 0,
1183 0, 0, 0, 0, 0, 0, 0,
1184
1185 /* Char 78 */
1186 0, 0, 0, 0, 0, 0, 0,
1187 0, 0, 0, 0, 0, 0, 0,
1188 0, 0, 0, 0, 0, 0, 0,
1189 1, 1, 0, 0, 1, 1, 0,
1190 1, 1, 1, 0, 1, 1, 0,
1191 1, 1, 1, 0, 1, 1, 0,
1192 1, 1, 1, 1, 1, 1, 0,
1193 1, 1, 0, 1, 1, 1, 0,
1194 1, 1, 0, 1, 1, 1, 0,
1195 1, 1, 0, 0, 1, 1, 0,
1196 1, 1, 0, 0, 1, 1, 0,
1197 0, 0, 0, 0, 0, 0, 0,
1198 0, 0, 0, 0, 0, 0, 0,
1199
1200 /* Char 79 */
1201 0, 0, 0, 0, 0, 0, 0,
1202 0, 0, 0, 0, 0, 0, 0,
1203 0, 0, 0, 0, 0, 0, 0,
1204 0, 1, 1, 1, 1, 0, 0,
1205 1, 1, 0, 0, 1, 1, 0,
1206 1, 1, 0, 0, 1, 1, 0,
1207 1, 1, 0, 0, 1, 1, 0,
1208 1, 1, 0, 0, 1, 1, 0,
1209 1, 1, 0, 0, 1, 1, 0,
1210 1, 1, 0, 0, 1, 1, 0,
1211 0, 1, 1, 1, 1, 0, 0,
1212 0, 0, 0, 0, 0, 0, 0,
1213 0, 0, 0, 0, 0, 0, 0,
1214
1215 /* Char 80 */
1216 0, 0, 0, 0, 0, 0, 0,
1217 0, 0, 0, 0, 0, 0, 0,
1218 0, 0, 0, 0, 0, 0, 0,
1219 1, 1, 1, 1, 1, 0, 0,
1220 1, 1, 0, 0, 1, 1, 0,
1221 1, 1, 0, 0, 1, 1, 0,
1222 1, 1, 1, 1, 1, 0, 0,
1223 1, 1, 0, 0, 0, 0, 0,
1224 1, 1, 0, 0, 0, 0, 0,
1225 1, 1, 0, 0, 0, 0, 0,
1226 1, 1, 0, 0, 0, 0, 0,
1227 0, 0, 0, 0, 0, 0, 0,
1228 0, 0, 0, 0, 0, 0, 0,
1229
1230 /* Char 81 */
1231 0, 0, 0, 0, 0, 0, 0,
1232 0, 0, 0, 0, 0, 0, 0,
1233 0, 0, 0, 0, 0, 0, 0,
1234 0, 1, 1, 1, 1, 0, 0,
1235 1, 1, 0, 0, 1, 1, 0,
1236 1, 1, 0, 0, 1, 1, 0,
1237 1, 1, 0, 0, 1, 1, 0,
1238 1, 1, 0, 0, 1, 1, 0,
1239 1, 1, 1, 0, 1, 1, 0,
1240 1, 1, 0, 1, 1, 1, 0,
1241 0, 1, 1, 1, 1, 0, 0,
1242 0, 0, 0, 0, 1, 1, 0,
1243 0, 0, 0, 0, 0, 0, 0,
1244
1245 /* Char 82 */
1246 0, 0, 0, 0, 0, 0, 0,
1247 0, 0, 0, 0, 0, 0, 0,
1248 0, 0, 0, 0, 0, 0, 0,
1249 1, 1, 1, 1, 1, 0, 0,
1250 1, 1, 0, 0, 1, 1, 0,
1251 1, 1, 0, 0, 1, 1, 0,
1252 1, 1, 1, 1, 1, 0, 0,
1253 1, 1, 1, 1, 0, 0, 0,
1254 1, 1, 0, 1, 1, 0, 0,
1255 1, 1, 0, 0, 1, 1, 0,
1256 1, 1, 0, 0, 1, 1, 0,
1257 0, 0, 0, 0, 0, 0, 0,
1258 0, 0, 0, 0, 0, 0, 0,
1259
1260 /* Char 83 */
1261 0, 0, 0, 0, 0, 0, 0,
1262 0, 0, 0, 0, 0, 0, 0,
1263 0, 0, 0, 0, 0, 0, 0,
1264 0, 1, 1, 1, 1, 0, 0,
1265 1, 1, 0, 0, 1, 1, 0,
1266 1, 1, 0, 0, 0, 0, 0,
1267 0, 1, 1, 1, 1, 0, 0,
1268 0, 0, 0, 0, 1, 1, 0,
1269 0, 0, 0, 0, 1, 1, 0,
1270 1, 1, 0, 0, 1, 1, 0,
1271 0, 1, 1, 1, 1, 0, 0,
1272 0, 0, 0, 0, 0, 0, 0,
1273 0, 0, 0, 0, 0, 0, 0,
1274
1275 /* Char 84 */
1276 0, 0, 0, 0, 0, 0, 0,
1277 0, 0, 0, 0, 0, 0, 0,
1278 0, 0, 0, 0, 0, 0, 0,
1279 1, 1, 1, 1, 1, 1, 0,
1280 0, 0, 1, 1, 0, 0, 0,
1281 0, 0, 1, 1, 0, 0, 0,
1282 0, 0, 1, 1, 0, 0, 0,
1283 0, 0, 1, 1, 0, 0, 0,
1284 0, 0, 1, 1, 0, 0, 0,
1285 0, 0, 1, 1, 0, 0, 0,
1286 0, 0, 1, 1, 0, 0, 0,
1287 0, 0, 0, 0, 0, 0, 0,
1288 0, 0, 0, 0, 0, 0, 0,
1289
1290 /* Char 85 */
1291 0, 0, 0, 0, 0, 0, 0,
1292 0, 0, 0, 0, 0, 0, 0,
1293 0, 0, 0, 0, 0, 0, 0,
1294 1, 1, 0, 0, 1, 1, 0,
1295 1, 1, 0, 0, 1, 1, 0,
1296 1, 1, 0, 0, 1, 1, 0,
1297 1, 1, 0, 0, 1, 1, 0,
1298 1, 1, 0, 0, 1, 1, 0,
1299 1, 1, 0, 0, 1, 1, 0,
1300 1, 1, 0, 0, 1, 1, 0,
1301 0, 1, 1, 1, 1, 0, 0,
1302 0, 0, 0, 0, 0, 0, 0,
1303 0, 0, 0, 0, 0, 0, 0,
1304
1305 /* Char 86 */
1306 0, 0, 0, 0, 0, 0, 0,
1307 0, 0, 0, 0, 0, 0, 0,
1308 0, 0, 0, 0, 0, 0, 0,
1309 1, 1, 0, 0, 1, 1, 0,
1310 1, 1, 0, 0, 1, 1, 0,
1311 1, 1, 0, 0, 1, 1, 0,
1312 0, 1, 0, 0, 1, 0, 0,
1313 0, 1, 0, 0, 1, 0, 0,
1314 0, 1, 1, 1, 1, 0, 0,
1315 0, 0, 1, 1, 0, 0, 0,
1316 0, 0, 1, 1, 0, 0, 0,
1317 0, 0, 0, 0, 0, 0, 0,
1318 0, 0, 0, 0, 0, 0, 0,
1319
1320 /* Char 87 */
1321 0, 0, 0, 0, 0, 0, 0,
1322 0, 0, 0, 0, 0, 0, 0,
1323 0, 0, 0, 0, 0, 0, 0,
1324 1, 1, 0, 0, 1, 1, 0,
1325 1, 1, 0, 0, 1, 1, 0,
1326 1, 1, 0, 0, 1, 1, 0,
1327 1, 1, 0, 0, 1, 1, 0,
1328 1, 1, 1, 1, 1, 1, 0,
1329 1, 1, 1, 1, 1, 1, 0,
1330 1, 1, 0, 0, 1, 1, 0,
1331 1, 0, 0, 0, 0, 1, 0,
1332 0, 0, 0, 0, 0, 0, 0,
1333 0, 0, 0, 0, 0, 0, 0,
1334
1335 /* Char 88 */
1336 0, 0, 0, 0, 0, 0, 0,
1337 0, 0, 0, 0, 0, 0, 0,
1338 0, 0, 0, 0, 0, 0, 0,
1339 1, 0, 0, 0, 0, 1, 0,
1340 1, 1, 0, 0, 1, 1, 0,
1341 0, 1, 0, 0, 1, 0, 0,
1342 0, 0, 1, 1, 0, 0, 0,
1343 0, 1, 1, 1, 1, 0, 0,
1344 0, 1, 0, 0, 1, 0, 0,
1345 1, 1, 0, 0, 1, 1, 0,
1346 1, 0, 0, 0, 0, 1, 0,
1347 0, 0, 0, 0, 0, 0, 0,
1348 0, 0, 0, 0, 0, 0, 0,
1349
1350 /* Char 89 */
1351 0, 0, 0, 0, 0, 0, 0,
1352 0, 0, 0, 0, 0, 0, 0,
1353 0, 0, 0, 0, 0, 0, 0,
1354 1, 1, 0, 0, 1, 1, 0,
1355 1, 1, 0, 0, 1, 1, 0,
1356 0, 1, 1, 1, 1, 0, 0,
1357 0, 1, 1, 1, 1, 0, 0,
1358 0, 0, 1, 1, 0, 0, 0,
1359 0, 0, 1, 1, 0, 0, 0,
1360 0, 0, 1, 1, 0, 0, 0,
1361 0, 0, 1, 1, 0, 0, 0,
1362 0, 0, 0, 0, 0, 0, 0,
1363 0, 0, 0, 0, 0, 0, 0,
1364
1365 /* Char 90 */
1366 0, 0, 0, 0, 0, 0, 0,
1367 0, 0, 0, 0, 0, 0, 0,
1368 0, 0, 0, 0, 0, 0, 0,
1369 1, 1, 1, 1, 1, 1, 0,
1370 0, 0, 0, 0, 1, 1, 0,
1371 0, 0, 0, 1, 1, 0, 0,
1372 0, 0, 1, 1, 0, 0, 0,
1373 0, 1, 1, 0, 0, 0, 0,
1374 1, 1, 0, 0, 0, 0, 0,
1375 1, 1, 0, 0, 0, 0, 0,
1376 1, 1, 1, 1, 1, 1, 0,
1377 0, 0, 0, 0, 0, 0, 0,
1378 0, 0, 0, 0, 0, 0, 0,
1379
1380 /* Char 91 */
1381 0, 0, 0, 0, 0, 0, 0,
1382 0, 0, 0, 0, 0, 0, 0,
1383 0, 1, 1, 1, 1, 0, 0,
1384 0, 1, 1, 0, 0, 0, 0,
1385 0, 1, 1, 0, 0, 0, 0,
1386 0, 1, 1, 0, 0, 0, 0,
1387 0, 1, 1, 0, 0, 0, 0,
1388 0, 1, 1, 0, 0, 0, 0,
1389 0, 1, 1, 0, 0, 0, 0,
1390 0, 1, 1, 0, 0, 0, 0,
1391 0, 1, 1, 1, 1, 0, 0,
1392 0, 0, 0, 0, 0, 0, 0,
1393 0, 0, 0, 0, 0, 0, 0,
1394
1395 /* Char 92 */
1396 0, 0, 0, 0, 0, 0, 0,
1397 0, 0, 0, 0, 0, 0, 0,
1398 1, 1, 0, 0, 0, 0, 0,
1399 1, 1, 0, 0, 0, 0, 0,
1400 0, 1, 1, 0, 0, 0, 0,
1401 0, 1, 1, 0, 0, 0, 0,
1402 0, 0, 1, 1, 0, 0, 0,
1403 0, 0, 0, 1, 1, 0, 0,
1404 0, 0, 0, 1, 1, 0, 0,
1405 0, 0, 0, 0, 1, 1, 0,
1406 0, 0, 0, 0, 1, 1, 0,
1407 0, 0, 0, 0, 0, 0, 0,
1408 0, 0, 0, 0, 0, 0, 0,
1409
1410 /* Char 93 */
1411 0, 0, 0, 0, 0, 0, 0,
1412 0, 0, 0, 0, 0, 0, 0,
1413 0, 1, 1, 1, 1, 0, 0,
1414 0, 0, 0, 1, 1, 0, 0,
1415 0, 0, 0, 1, 1, 0, 0,
1416 0, 0, 0, 1, 1, 0, 0,
1417 0, 0, 0, 1, 1, 0, 0,
1418 0, 0, 0, 1, 1, 0, 0,
1419 0, 0, 0, 1, 1, 0, 0,
1420 0, 0, 0, 1, 1, 0, 0,
1421 0, 1, 1, 1, 1, 0, 0,
1422 0, 0, 0, 0, 0, 0, 0,
1423 0, 0, 0, 0, 0, 0, 0,
1424
1425 /* Char 94 */
1426 0, 0, 0, 0, 0, 0, 0,
1427 0, 0, 0, 0, 0, 0, 0,
1428 0, 0, 1, 1, 0, 0, 0,
1429 0, 1, 1, 1, 1, 0, 0,
1430 1, 1, 0, 0, 1, 1, 0,
1431 1, 0, 0, 0, 0, 1, 0,
1432 0, 0, 0, 0, 0, 0, 0,
1433 0, 0, 0, 0, 0, 0, 0,
1434 0, 0, 0, 0, 0, 0, 0,
1435 0, 0, 0, 0, 0, 0, 0,
1436 0, 0, 0, 0, 0, 0, 0,
1437 0, 0, 0, 0, 0, 0, 0,
1438 0, 0, 0, 0, 0, 0, 0,
1439
1440 /* Char 95 */
1441 0, 0, 0, 0, 0, 0, 0,
1442 0, 0, 0, 0, 0, 0, 0,
1443 0, 0, 0, 0, 0, 0, 0,
1444 0, 0, 0, 0, 0, 0, 0,
1445 0, 0, 0, 0, 0, 0, 0,
1446 0, 0, 0, 0, 0, 0, 0,
1447 0, 0, 0, 0, 0, 0, 0,
1448 0, 0, 0, 0, 0, 0, 0,
1449 0, 0, 0, 0, 0, 0, 0,
1450 0, 0, 0, 0, 0, 0, 0,
1451 1, 1, 1, 1, 1, 1, 0,
1452 1, 1, 1, 1, 1, 1, 0,
1453 0, 0, 0, 0, 0, 0, 0,
1454
1455 /* Char 96 */
1456 0, 0, 0, 0, 0, 0, 0,
1457 0, 0, 0, 0, 0, 0, 0,
1458 0, 1, 1, 1, 0, 0, 0,
1459 0, 1, 1, 1, 0, 0, 0,
1460 0, 0, 1, 1, 0, 0, 0,
1461 0, 0, 0, 1, 1, 0, 0,
1462 0, 0, 0, 0, 0, 0, 0,
1463 0, 0, 0, 0, 0, 0, 0,
1464 0, 0, 0, 0, 0, 0, 0,
1465 0, 0, 0, 0, 0, 0, 0,
1466 0, 0, 0, 0, 0, 0, 0,
1467 0, 0, 0, 0, 0, 0, 0,
1468 0, 0, 0, 0, 0, 0, 0,
1469
1470 /* Char 97 */
1471 0, 0, 0, 0, 0, 0, 0,
1472 0, 0, 0, 0, 0, 0, 0,
1473 0, 0, 0, 0, 0, 0, 0,
1474 0, 0, 0, 0, 0, 0, 0,
1475 0, 0, 0, 0, 0, 0, 0,
1476 0, 1, 1, 1, 1, 0, 0,
1477 0, 0, 0, 0, 1, 1, 0,
1478 0, 1, 1, 1, 1, 1, 0,
1479 1, 1, 0, 0, 1, 1, 0,
1480 1, 1, 0, 0, 1, 1, 0,
1481 0, 1, 1, 1, 1, 1, 0,
1482 0, 0, 0, 0, 0, 0, 0,
1483 0, 0, 0, 0, 0, 0, 0,
1484
1485 /* Char 98 */
1486 0, 0, 0, 0, 0, 0, 0,
1487 0, 0, 0, 0, 0, 0, 0,
1488 1, 1, 0, 0, 0, 0, 0,
1489 1, 1, 0, 0, 0, 0, 0,
1490 1, 1, 0, 0, 0, 0, 0,
1491 1, 1, 1, 1, 1, 0, 0,
1492 1, 1, 0, 0, 1, 1, 0,
1493 1, 1, 0, 0, 1, 1, 0,
1494 1, 1, 0, 0, 1, 1, 0,
1495 1, 1, 0, 0, 1, 1, 0,
1496 1, 1, 1, 1, 1, 0, 0,
1497 0, 0, 0, 0, 0, 0, 0,
1498 0, 0, 0, 0, 0, 0, 0,
1499
1500 /* Char 99 */
1501 0, 0, 0, 0, 0, 0, 0,
1502 0, 0, 0, 0, 0, 0, 0,
1503 0, 0, 0, 0, 0, 0, 0,
1504 0, 0, 0, 0, 0, 0, 0,
1505 0, 0, 0, 0, 0, 0, 0,
1506 0, 1, 1, 1, 1, 0, 0,
1507 1, 1, 0, 0, 1, 1, 0,
1508 1, 1, 0, 0, 0, 0, 0,
1509 1, 1, 0, 0, 0, 0, 0,
1510 1, 1, 0, 0, 1, 1, 0,
1511 0, 1, 1, 1, 1, 0, 0,
1512 0, 0, 0, 0, 0, 0, 0,
1513 0, 0, 0, 0, 0, 0, 0,
1514
1515 /* Char 100 */
1516 0, 0, 0, 0, 0, 0, 0,
1517 0, 0, 0, 0, 0, 0, 0,
1518 0, 0, 0, 0, 1, 1, 0,
1519 0, 0, 0, 0, 1, 1, 0,
1520 0, 0, 0, 0, 1, 1, 0,
1521 0, 1, 1, 1, 1, 1, 0,
1522 1, 1, 0, 0, 1, 1, 0,
1523 1, 1, 0, 0, 1, 1, 0,
1524 1, 1, 0, 0, 1, 1, 0,
1525 1, 1, 0, 0, 1, 1, 0,
1526 0, 1, 1, 1, 1, 1, 0,
1527 0, 0, 0, 0, 0, 0, 0,
1528 0, 0, 0, 0, 0, 0, 0,
1529
1530 /* Char 101 */
1531 0, 0, 0, 0, 0, 0, 0,
1532 0, 0, 0, 0, 0, 0, 0,
1533 0, 0, 0, 0, 0, 0, 0,
1534 0, 0, 0, 0, 0, 0, 0,
1535 0, 0, 0, 0, 0, 0, 0,
1536 0, 1, 1, 1, 1, 0, 0,
1537 1, 1, 0, 0, 1, 1, 0,
1538 1, 1, 1, 1, 1, 1, 0,
1539 1, 1, 0, 0, 0, 0, 0,
1540 1, 1, 0, 0, 1, 1, 0,
1541 0, 1, 1, 1, 1, 0, 0,
1542 0, 0, 0, 0, 0, 0, 0,
1543 0, 0, 0, 0, 0, 0, 0,
1544
1545 /* Char 102 */
1546 0, 0, 0, 0, 0, 0, 0,
1547 0, 0, 0, 0, 0, 0, 0,
1548 0, 0, 1, 1, 1, 0, 0,
1549 0, 1, 1, 0, 1, 1, 0,
1550 0, 1, 1, 0, 0, 0, 0,
1551 0, 1, 1, 0, 0, 0, 0,
1552 1, 1, 1, 1, 0, 0, 0,
1553 0, 1, 1, 0, 0, 0, 0,
1554 0, 1, 1, 0, 0, 0, 0,
1555 0, 1, 1, 0, 0, 0, 0,
1556 0, 1, 1, 0, 0, 0, 0,
1557 0, 0, 0, 0, 0, 0, 0,
1558 0, 0, 0, 0, 0, 0, 0,
1559
1560 /* Char 103 */
1561 0, 0, 0, 0, 0, 0, 0,
1562 0, 0, 0, 0, 0, 0, 0,
1563 0, 0, 0, 0, 0, 0, 0,
1564 0, 0, 0, 0, 0, 0, 0,
1565 0, 0, 0, 0, 0, 0, 0,
1566 0, 1, 1, 1, 0, 1, 0,
1567 1, 1, 0, 0, 1, 1, 0,
1568 1, 1, 0, 0, 1, 1, 0,
1569 0, 1, 1, 1, 1, 0, 0,
1570 1, 1, 0, 0, 0, 0, 0,
1571 0, 1, 1, 1, 1, 0, 0,
1572 1, 1, 0, 0, 1, 1, 0,
1573 0, 1, 1, 1, 1, 0, 0,
1574
1575 /* Char 104 */
1576 0, 0, 0, 0, 0, 0, 0,
1577 0, 0, 0, 0, 0, 0, 0,
1578 1, 1, 0, 0, 0, 0, 0,
1579 1, 1, 0, 0, 0, 0, 0,
1580 1, 1, 0, 0, 0, 0, 0,
1581 1, 1, 1, 1, 1, 0, 0,
1582 1, 1, 0, 0, 1, 1, 0,
1583 1, 1, 0, 0, 1, 1, 0,
1584 1, 1, 0, 0, 1, 1, 0,
1585 1, 1, 0, 0, 1, 1, 0,
1586 1, 1, 0, 0, 1, 1, 0,
1587 0, 0, 0, 0, 0, 0, 0,
1588 0, 0, 0, 0, 0, 0, 0,
1589
1590 /* Char 105 */
1591 0, 0, 0, 0, 0, 0, 0,
1592 0, 0, 0, 0, 0, 0, 0,
1593 0, 0, 1, 1, 0, 0, 0,
1594 0, 0, 1, 1, 0, 0, 0,
1595 0, 0, 0, 0, 0, 0, 0,
1596 0, 1, 1, 1, 0, 0, 0,
1597 0, 0, 1, 1, 0, 0, 0,
1598 0, 0, 1, 1, 0, 0, 0,
1599 0, 0, 1, 1, 0, 0, 0,
1600 0, 0, 1, 1, 0, 0, 0,
1601 1, 1, 1, 1, 1, 1, 0,
1602 0, 0, 0, 0, 0, 0, 0,
1603 0, 0, 0, 0, 0, 0, 0,
1604
1605 /* Char 106 */
1606 0, 0, 0, 0, 0, 0, 0,
1607 0, 0, 0, 0, 0, 0, 0,
1608 0, 0, 0, 0, 1, 1, 0,
1609 0, 0, 0, 0, 1, 1, 0,
1610 0, 0, 0, 0, 0, 0, 0,
1611 0, 0, 0, 0, 1, 1, 0,
1612 0, 0, 0, 0, 1, 1, 0,
1613 0, 0, 0, 0, 1, 1, 0,
1614 0, 0, 0, 0, 1, 1, 0,
1615 0, 0, 0, 0, 1, 1, 0,
1616 0, 0, 0, 0, 1, 1, 0,
1617 1, 1, 0, 0, 1, 1, 0,
1618 0, 1, 1, 1, 1, 0, 0,
1619
1620 /* Char 107 */
1621 0, 0, 0, 0, 0, 0, 0,
1622 0, 0, 0, 0, 0, 0, 0,
1623 1, 1, 0, 0, 0, 0, 0,
1624 1, 1, 0, 0, 0, 0, 0,
1625 1, 1, 0, 0, 0, 0, 0,
1626 1, 1, 0, 0, 1, 1, 0,
1627 1, 1, 0, 1, 1, 0, 0,
1628 1, 1, 1, 1, 0, 0, 0,
1629 1, 1, 1, 1, 0, 0, 0,
1630 1, 1, 0, 1, 1, 0, 0,
1631 1, 1, 0, 0, 1, 1, 0,
1632 0, 0, 0, 0, 0, 0, 0,
1633 0, 0, 0, 0, 0, 0, 0,
1634
1635 /* Char 108 */
1636 0, 0, 0, 0, 0, 0, 0,
1637 0, 0, 0, 0, 0, 0, 0,
1638 0, 1, 1, 1, 0, 0, 0,
1639 0, 0, 1, 1, 0, 0, 0,
1640 0, 0, 1, 1, 0, 0, 0,
1641 0, 0, 1, 1, 0, 0, 0,
1642 0, 0, 1, 1, 0, 0, 0,
1643 0, 0, 1, 1, 0, 0, 0,
1644 0, 0, 1, 1, 0, 0, 0,
1645 0, 0, 1, 1, 0, 0, 0,
1646 1, 1, 1, 1, 1, 1, 0,
1647 0, 0, 0, 0, 0, 0, 0,
1648 0, 0, 0, 0, 0, 0, 0,
1649
1650 /* Char 109 */
1651 0, 0, 0, 0, 0, 0, 0,
1652 0, 0, 0, 0, 0, 0, 0,
1653 0, 0, 0, 0, 0, 0, 0,
1654 0, 0, 0, 0, 0, 0, 0,
1655 0, 0, 0, 0, 0, 0, 0,
1656 1, 1, 0, 1, 1, 0, 0,
1657 1, 1, 1, 1, 1, 1, 0,
1658 1, 1, 1, 1, 1, 1, 0,
1659 1, 1, 0, 0, 1, 1, 0,
1660 1, 1, 0, 0, 1, 1, 0,
1661 1, 1, 0, 0, 1, 1, 0,
1662 0, 0, 0, 0, 0, 0, 0,
1663 0, 0, 0, 0, 0, 0, 0,
1664
1665 /* Char 110 */
1666 0, 0, 0, 0, 0, 0, 0,
1667 0, 0, 0, 0, 0, 0, 0,
1668 0, 0, 0, 0, 0, 0, 0,
1669 0, 0, 0, 0, 0, 0, 0,
1670 0, 0, 0, 0, 0, 0, 0,
1671 1, 1, 1, 1, 1, 0, 0,
1672 1, 1, 0, 0, 1, 1, 0,
1673 1, 1, 0, 0, 1, 1, 0,
1674 1, 1, 0, 0, 1, 1, 0,
1675 1, 1, 0, 0, 1, 1, 0,
1676 1, 1, 0, 0, 1, 1, 0,
1677 0, 0, 0, 0, 0, 0, 0,
1678 0, 0, 0, 0, 0, 0, 0,
1679
1680 /* Char 111 */
1681 0, 0, 0, 0, 0, 0, 0,
1682 0, 0, 0, 0, 0, 0, 0,
1683 0, 0, 0, 0, 0, 0, 0,
1684 0, 0, 0, 0, 0, 0, 0,
1685 0, 0, 0, 0, 0, 0, 0,
1686 0, 1, 1, 1, 1, 0, 0,
1687 1, 1, 0, 0, 1, 1, 0,
1688 1, 1, 0, 0, 1, 1, 0,
1689 1, 1, 0, 0, 1, 1, 0,
1690 1, 1, 0, 0, 1, 1, 0,
1691 0, 1, 1, 1, 1, 0, 0,
1692 0, 0, 0, 0, 0, 0, 0,
1693 0, 0, 0, 0, 0, 0, 0,
1694
1695 /* Char 112 */
1696 0, 0, 0, 0, 0, 0, 0,
1697 0, 0, 0, 0, 0, 0, 0,
1698 0, 0, 0, 0, 0, 0, 0,
1699 0, 0, 0, 0, 0, 0, 0,
1700 0, 0, 0, 0, 0, 0, 0,
1701 1, 1, 1, 1, 1, 0, 0,
1702 1, 1, 0, 0, 1, 1, 0,
1703 1, 1, 0, 0, 1, 1, 0,
1704 1, 1, 0, 0, 1, 1, 0,
1705 1, 1, 1, 1, 1, 0, 0,
1706 1, 1, 0, 0, 0, 0, 0,
1707 1, 1, 0, 0, 0, 0, 0,
1708 1, 1, 0, 0, 0, 0, 0,
1709
1710 /* Char 113 */
1711 0, 0, 0, 0, 0, 0, 0,
1712 0, 0, 0, 0, 0, 0, 0,
1713 0, 0, 0, 0, 0, 0, 0,
1714 0, 0, 0, 0, 0, 0, 0,
1715 0, 0, 0, 0, 0, 0, 0,
1716 0, 1, 1, 1, 1, 1, 0,
1717 1, 1, 0, 0, 1, 1, 0,
1718 1, 1, 0, 0, 1, 1, 0,
1719 1, 1, 0, 0, 1, 1, 0,
1720 0, 1, 1, 1, 1, 1, 0,
1721 0, 0, 0, 0, 1, 1, 0,
1722 0, 0, 0, 0, 1, 1, 0,
1723 0, 0, 0, 0, 1, 1, 0,
1724
1725 /* Char 114 */
1726 0, 0, 0, 0, 0, 0, 0,
1727 0, 0, 0, 0, 0, 0, 0,
1728 0, 0, 0, 0, 0, 0, 0,
1729 0, 0, 0, 0, 0, 0, 0,
1730 0, 0, 0, 0, 0, 0, 0,
1731 1, 1, 1, 1, 1, 0, 0,
1732 1, 1, 0, 0, 1, 1, 0,
1733 1, 1, 0, 0, 0, 0, 0,
1734 1, 1, 0, 0, 0, 0, 0,
1735 1, 1, 0, 0, 0, 0, 0,
1736 1, 1, 0, 0, 0, 0, 0,
1737 0, 0, 0, 0, 0, 0, 0,
1738 0, 0, 0, 0, 0, 0, 0,
1739
1740 /* Char 115 */
1741 0, 0, 0, 0, 0, 0, 0,
1742 0, 0, 0, 0, 0, 0, 0,
1743 0, 0, 0, 0, 0, 0, 0,
1744 0, 0, 0, 0, 0, 0, 0,
1745 0, 0, 0, 0, 0, 0, 0,
1746 0, 1, 1, 1, 1, 0, 0,
1747 1, 1, 0, 0, 1, 1, 0,
1748 0, 1, 1, 0, 0, 0, 0,
1749 0, 0, 0, 1, 1, 0, 0,
1750 1, 1, 0, 0, 1, 1, 0,
1751 0, 1, 1, 1, 1, 0, 0,
1752 0, 0, 0, 0, 0, 0, 0,
1753 0, 0, 0, 0, 0, 0, 0,
1754
1755 /* Char 116 */
1756 0, 0, 0, 0, 0, 0, 0,
1757 0, 0, 0, 0, 0, 0, 0,
1758 0, 0, 0, 0, 0, 0, 0,
1759 0, 1, 1, 0, 0, 0, 0,
1760 0, 1, 1, 0, 0, 0, 0,
1761 1, 1, 1, 1, 1, 0, 0,
1762 0, 1, 1, 0, 0, 0, 0,
1763 0, 1, 1, 0, 0, 0, 0,
1764 0, 1, 1, 0, 0, 0, 0,
1765 0, 1, 1, 0, 1, 1, 0,
1766 0, 0, 1, 1, 1, 0, 0,
1767 0, 0, 0, 0, 0, 0, 0,
1768 0, 0, 0, 0, 0, 0, 0,
1769
1770 /* Char 117 */
1771 0, 0, 0, 0, 0, 0, 0,
1772 0, 0, 0, 0, 0, 0, 0,
1773 0, 0, 0, 0, 0, 0, 0,
1774 0, 0, 0, 0, 0, 0, 0,
1775 0, 0, 0, 0, 0, 0, 0,
1776 1, 1, 0, 0, 1, 1, 0,
1777 1, 1, 0, 0, 1, 1, 0,
1778 1, 1, 0, 0, 1, 1, 0,
1779 1, 1, 0, 0, 1, 1, 0,
1780 1, 1, 0, 0, 1, 1, 0,
1781 0, 1, 1, 1, 1, 1, 0,
1782 0, 0, 0, 0, 0, 0, 0,
1783 0, 0, 0, 0, 0, 0, 0,
1784
1785 /* Char 118 */
1786 0, 0, 0, 0, 0, 0, 0,
1787 0, 0, 0, 0, 0, 0, 0,
1788 0, 0, 0, 0, 0, 0, 0,
1789 0, 0, 0, 0, 0, 0, 0,
1790 0, 0, 0, 0, 0, 0, 0,
1791 1, 1, 0, 0, 1, 1, 0,
1792 1, 1, 0, 0, 1, 1, 0,
1793 1, 1, 0, 0, 1, 1, 0,
1794 0, 1, 1, 1, 1, 0, 0,
1795 0, 1, 1, 1, 1, 0, 0,
1796 0, 0, 1, 1, 0, 0, 0,
1797 0, 0, 0, 0, 0, 0, 0,
1798 0, 0, 0, 0, 0, 0, 0,
1799
1800 /* Char 119 */
1801 0, 0, 0, 0, 0, 0, 0,
1802 0, 0, 0, 0, 0, 0, 0,
1803 0, 0, 0, 0, 0, 0, 0,
1804 0, 0, 0, 0, 0, 0, 0,
1805 0, 0, 0, 0, 0, 0, 0,
1806 1, 1, 0, 0, 1, 1, 0,
1807 1, 1, 0, 0, 1, 1, 0,
1808 1, 1, 0, 0, 1, 1, 0,
1809 1, 1, 1, 1, 1, 1, 0,
1810 1, 1, 1, 1, 1, 1, 0,
1811 0, 1, 0, 0, 1, 0, 0,
1812 0, 0, 0, 0, 0, 0, 0,
1813 0, 0, 0, 0, 0, 0, 0,
1814
1815 /* Char 120 */
1816 0, 0, 0, 0, 0, 0, 0,
1817 0, 0, 0, 0, 0, 0, 0,
1818 0, 0, 0, 0, 0, 0, 0,
1819 0, 0, 0, 0, 0, 0, 0,
1820 0, 0, 0, 0, 0, 0, 0,
1821 1, 1, 0, 0, 1, 1, 0,
1822 1, 1, 0, 0, 1, 1, 0,
1823 0, 1, 1, 1, 1, 0, 0,
1824 0, 1, 1, 1, 1, 0, 0,
1825 1, 1, 0, 0, 1, 1, 0,
1826 1, 1, 0, 0, 1, 1, 0,
1827 0, 0, 0, 0, 0, 0, 0,
1828 0, 0, 0, 0, 0, 0, 0,
1829
1830 /* Char 121 */
1831 0, 0, 0, 0, 0, 0, 0,
1832 0, 0, 0, 0, 0, 0, 0,
1833 0, 0, 0, 0, 0, 0, 0,
1834 0, 0, 0, 0, 0, 0, 0,
1835 0, 0, 0, 0, 0, 0, 0,
1836 1, 1, 0, 0, 1, 1, 0,
1837 1, 1, 0, 0, 1, 1, 0,
1838 1, 1, 0, 0, 1, 1, 0,
1839 1, 1, 0, 0, 1, 1, 0,
1840 0, 1, 1, 1, 1, 1, 0,
1841 0, 0, 0, 0, 1, 1, 0,
1842 0, 0, 0, 0, 1, 1, 0,
1843 0, 1, 1, 1, 1, 0, 0,
1844
1845 /* Char 122 */
1846 0, 0, 0, 0, 0, 0, 0,
1847 0, 0, 0, 0, 0, 0, 0,
1848 0, 0, 0, 0, 0, 0, 0,
1849 0, 0, 0, 0, 0, 0, 0,
1850 0, 0, 0, 0, 0, 0, 0,
1851 1, 1, 1, 1, 1, 1, 0,
1852 0, 0, 0, 0, 1, 1, 0,
1853 0, 0, 0, 1, 1, 0, 0,
1854 0, 1, 1, 0, 0, 0, 0,
1855 1, 1, 0, 0, 0, 0, 0,
1856 1, 1, 1, 1, 1, 1, 0,
1857 0, 0, 0, 0, 0, 0, 0,
1858 0, 0, 0, 0, 0, 0, 0,
1859
1860 /* Char 123 */
1861 0, 0, 0, 0, 0, 0, 0,
1862 0, 0, 0, 0, 0, 0, 0,
1863 0, 0, 1, 1, 1, 0, 0,
1864 0, 1, 1, 0, 0, 0, 0,
1865 0, 1, 1, 0, 0, 0, 0,
1866 0, 0, 1, 1, 0, 0, 0,
1867 0, 1, 1, 0, 0, 0, 0,
1868 0, 0, 1, 1, 0, 0, 0,
1869 0, 1, 1, 0, 0, 0, 0,
1870 0, 1, 1, 0, 0, 0, 0,
1871 0, 0, 1, 1, 1, 0, 0,
1872 0, 0, 0, 0, 0, 0, 0,
1873 0, 0, 0, 0, 0, 0, 0,
1874
1875 /* Char 124 */
1876 0, 0, 0, 0, 0, 0, 0,
1877 0, 0, 0, 0, 0, 0, 0,
1878 0, 0, 1, 1, 0, 0, 0,
1879 0, 0, 1, 1, 0, 0, 0,
1880 0, 0, 1, 1, 0, 0, 0,
1881 0, 0, 1, 1, 0, 0, 0,
1882 0, 0, 1, 1, 0, 0, 0,
1883 0, 0, 1, 1, 0, 0, 0,
1884 0, 0, 1, 1, 0, 0, 0,
1885 0, 0, 1, 1, 0, 0, 0,
1886 0, 0, 1, 1, 0, 0, 0,
1887 0, 0, 0, 0, 0, 0, 0,
1888 0, 0, 0, 0, 0, 0, 0,
1889
1890 /* Char 125 */
1891 0, 0, 0, 0, 0, 0, 0,
1892 0, 0, 0, 0, 0, 0, 0,
1893 0, 1, 1, 1, 0, 0, 0,
1894 0, 0, 0, 1, 1, 0, 0,
1895 0, 0, 0, 1, 1, 0, 0,
1896 0, 0, 1, 1, 0, 0, 0,
1897 0, 0, 0, 1, 1, 0, 0,
1898 0, 0, 1, 1, 0, 0, 0,
1899 0, 0, 0, 1, 1, 0, 0,
1900 0, 0, 0, 1, 1, 0, 0,
1901 0, 1, 1, 1, 0, 0, 0,
1902 0, 0, 0, 0, 0, 0, 0,
1903 0, 0, 0, 0, 0, 0, 0,
1904
1905 /* Char 126 */
1906 0, 0, 0, 0, 0, 0, 0,
1907 0, 0, 0, 0, 0, 0, 0,
1908 0, 1, 1, 0, 0, 1, 0,
1909 1, 1, 1, 1, 1, 1, 0,
1910 1, 0, 0, 1, 1, 0, 0,
1911 0, 0, 0, 0, 0, 0, 0,
1912 0, 0, 0, 0, 0, 0, 0,
1913 0, 0, 0, 0, 0, 0, 0,
1914 0, 0, 0, 0, 0, 0, 0,
1915 0, 0, 0, 0, 0, 0, 0,
1916 0, 0, 0, 0, 0, 0, 0,
1917 0, 0, 0, 0, 0, 0, 0,
1918 0, 0, 0, 0, 0, 0, 0,
1919
1920 /* Char 127 */
1921 0, 0, 0, 0, 0, 0, 0,
1922 0, 0, 0, 0, 0, 0, 0,
1923 0, 0, 0, 0, 0, 0, 0,
1924 0, 0, 0, 0, 0, 0, 0,
1925 0, 0, 0, 0, 0, 0, 0,
1926 0, 0, 0, 0, 0, 0, 0,
1927 0, 0, 0, 0, 0, 0, 0,
1928 0, 0, 0, 0, 0, 0, 0,
1929 0, 0, 0, 0, 0, 0, 0,
1930 0, 0, 0, 0, 0, 0, 0,
1931 0, 0, 0, 0, 0, 0, 0,
1932 0, 0, 0, 0, 0, 0, 0,
1933 0, 0, 0, 0, 0, 0, 0,
1934
1935 /* Char 128 */
1936 0, 0, 0, 0, 0, 0, 0,
1937 0, 0, 0, 0, 0, 0, 0,
1938 0, 0, 0, 0, 0, 0, 0,
1939 0, 0, 0, 0, 0, 0, 0,
1940 0, 0, 0, 0, 0, 0, 0,
1941 0, 0, 0, 0, 0, 0, 0,
1942 0, 0, 0, 0, 0, 0, 0,
1943 0, 0, 0, 0, 0, 0, 0,
1944 0, 0, 0, 0, 0, 0, 0,
1945 0, 0, 0, 0, 0, 0, 0,
1946 0, 0, 0, 0, 0, 0, 0,
1947 0, 0, 0, 0, 0, 0, 0,
1948 0, 0, 0, 0, 0, 0, 0,
1949
1950 /* Char 129 */
1951 0, 0, 0, 0, 0, 0, 0,
1952 0, 0, 0, 0, 0, 0, 0,
1953 0, 0, 0, 0, 0, 0, 0,
1954 0, 0, 0, 0, 0, 0, 0,
1955 0, 0, 0, 0, 0, 0, 0,
1956 0, 0, 0, 0, 0, 0, 0,
1957 0, 0, 0, 0, 0, 0, 0,
1958 0, 0, 0, 0, 0, 0, 0,
1959 0, 0, 0, 0, 0, 0, 0,
1960 0, 0, 0, 0, 0, 0, 0,
1961 0, 0, 0, 0, 0, 0, 0,
1962 0, 0, 0, 0, 0, 0, 0,
1963 0, 0, 0, 0, 0, 0, 0,
1964
1965 /* Char 130 */
1966 0, 0, 0, 0, 0, 0, 0,
1967 0, 0, 0, 0, 0, 0, 0,
1968 0, 0, 0, 0, 0, 0, 0,
1969 0, 0, 0, 0, 0, 0, 0,
1970 0, 0, 0, 0, 0, 0, 0,
1971 0, 0, 0, 0, 0, 0, 0,
1972 0, 0, 0, 0, 0, 0, 0,
1973 0, 0, 0, 0, 0, 0, 0,
1974 0, 0, 0, 0, 0, 0, 0,
1975 0, 0, 0, 0, 0, 0, 0,
1976 0, 0, 0, 0, 0, 0, 0,
1977 0, 0, 0, 0, 0, 0, 0,
1978 0, 0, 0, 0, 0, 0, 0,
1979
1980 /* Char 131 */
1981 0, 0, 0, 0, 0, 0, 0,
1982 0, 0, 0, 0, 0, 0, 0,
1983 0, 0, 0, 0, 0, 0, 0,
1984 0, 0, 0, 0, 0, 0, 0,
1985 0, 0, 0, 0, 0, 0, 0,
1986 0, 0, 0, 0, 0, 0, 0,
1987 0, 0, 0, 0, 0, 0, 0,
1988 0, 0, 0, 0, 0, 0, 0,
1989 0, 0, 0, 0, 0, 0, 0,
1990 0, 0, 0, 0, 0, 0, 0,
1991 0, 0, 0, 0, 0, 0, 0,
1992 0, 0, 0, 0, 0, 0, 0,
1993 0, 0, 0, 0, 0, 0, 0,
1994
1995 /* Char 132 */
1996 0, 0, 0, 0, 0, 0, 0,
1997 0, 0, 0, 0, 0, 0, 0,
1998 0, 0, 0, 0, 0, 0, 0,
1999 0, 0, 0, 0, 0, 0, 0,
2000 0, 0, 0, 0, 0, 0, 0,
2001 0, 0, 0, 0, 0, 0, 0,
2002 0, 0, 0, 0, 0, 0, 0,
2003 0, 0, 0, 0, 0, 0, 0,
2004 0, 0, 0, 0, 0, 0, 0,
2005 0, 0, 0, 0, 0, 0, 0,
2006 0, 0, 0, 0, 0, 0, 0,
2007 0, 0, 0, 0, 0, 0, 0,
2008 0, 0, 0, 0, 0, 0, 0,
2009
2010 /* Char 133 */
2011 0, 0, 0, 0, 0, 0, 0,
2012 0, 0, 0, 0, 0, 0, 0,
2013 0, 0, 0, 0, 0, 0, 0,
2014 0, 0, 0, 0, 0, 0, 0,
2015 0, 0, 0, 0, 0, 0, 0,
2016 0, 0, 0, 0, 0, 0, 0,
2017 0, 0, 0, 0, 0, 0, 0,
2018 0, 0, 0, 0, 0, 0, 0,
2019 0, 0, 0, 0, 0, 0, 0,
2020 0, 0, 0, 0, 0, 0, 0,
2021 0, 0, 0, 0, 0, 0, 0,
2022 0, 0, 0, 0, 0, 0, 0,
2023 0, 0, 0, 0, 0, 0, 0,
2024
2025 /* Char 134 */
2026 0, 0, 0, 0, 0, 0, 0,
2027 0, 0, 0, 0, 0, 0, 0,
2028 0, 0, 0, 0, 0, 0, 0,
2029 0, 0, 0, 0, 0, 0, 0,
2030 0, 0, 0, 0, 0, 0, 0,
2031 0, 0, 0, 0, 0, 0, 0,
2032 0, 0, 0, 0, 0, 0, 0,
2033 0, 0, 0, 0, 0, 0, 0,
2034 0, 0, 0, 0, 0, 0, 0,
2035 0, 0, 0, 0, 0, 0, 0,
2036 0, 0, 0, 0, 0, 0, 0,
2037 0, 0, 0, 0, 0, 0, 0,
2038 0, 0, 0, 0, 0, 0, 0,
2039
2040 /* Char 135 */
2041 0, 0, 0, 0, 0, 0, 0,
2042 0, 0, 0, 0, 0, 0, 0,
2043 0, 0, 0, 0, 0, 0, 0,
2044 0, 0, 0, 0, 0, 0, 0,
2045 0, 0, 0, 0, 0, 0, 0,
2046 0, 0, 0, 0, 0, 0, 0,
2047 0, 0, 0, 0, 0, 0, 0,
2048 0, 0, 0, 0, 0, 0, 0,
2049 0, 0, 0, 0, 0, 0, 0,
2050 0, 0, 0, 0, 0, 0, 0,
2051 0, 0, 0, 0, 0, 0, 0,
2052 0, 0, 0, 0, 0, 0, 0,
2053 0, 0, 0, 0, 0, 0, 0,
2054
2055 /* Char 136 */
2056 0, 0, 0, 0, 0, 0, 0,
2057 0, 0, 0, 0, 0, 0, 0,
2058 0, 0, 0, 0, 0, 0, 0,
2059 0, 0, 0, 0, 0, 0, 0,
2060 0, 0, 0, 0, 0, 0, 0,
2061 0, 0, 0, 0, 0, 0, 0,
2062 0, 0, 0, 0, 0, 0, 0,
2063 0, 0, 0, 0, 0, 0, 0,
2064 0, 0, 0, 0, 0, 0, 0,
2065 0, 0, 0, 0, 0, 0, 0,
2066 0, 0, 0, 0, 0, 0, 0,
2067 0, 0, 0, 0, 0, 0, 0,
2068 0, 0, 0, 0, 0, 0, 0,
2069
2070 /* Char 137 */
2071 0, 0, 0, 0, 0, 0, 0,
2072 0, 0, 0, 0, 0, 0, 0,
2073 0, 0, 0, 0, 0, 0, 0,
2074 0, 0, 0, 0, 0, 0, 0,
2075 0, 0, 0, 0, 0, 0, 0,
2076 0, 0, 0, 0, 0, 0, 0,
2077 0, 0, 0, 0, 0, 0, 0,
2078 0, 0, 0, 0, 0, 0, 0,
2079 0, 0, 0, 0, 0, 0, 0,
2080 0, 0, 0, 0, 0, 0, 0,
2081 0, 0, 0, 0, 0, 0, 0,
2082 0, 0, 0, 0, 0, 0, 0,
2083 0, 0, 0, 0, 0, 0, 0,
2084
2085 /* Char 138 */
2086 0, 0, 0, 0, 0, 0, 0,
2087 0, 0, 0, 0, 0, 0, 0,
2088 0, 0, 0, 0, 0, 0, 0,
2089 0, 0, 0, 0, 0, 0, 0,
2090 0, 0, 0, 0, 0, 0, 0,
2091 0, 0, 0, 0, 0, 0, 0,
2092 0, 0, 0, 0, 0, 0, 0,
2093 0, 0, 0, 0, 0, 0, 0,
2094 0, 0, 0, 0, 0, 0, 0,
2095 0, 0, 0, 0, 0, 0, 0,
2096 0, 0, 0, 0, 0, 0, 0,
2097 0, 0, 0, 0, 0, 0, 0,
2098 0, 0, 0, 0, 0, 0, 0,
2099
2100 /* Char 139 */
2101 0, 0, 0, 0, 0, 0, 0,
2102 0, 0, 0, 0, 0, 0, 0,
2103 0, 0, 0, 0, 0, 0, 0,
2104 0, 0, 0, 0, 0, 0, 0,
2105 0, 0, 0, 0, 0, 0, 0,
2106 0, 0, 0, 0, 0, 0, 0,
2107 0, 0, 0, 0, 0, 0, 0,
2108 0, 0, 0, 0, 0, 0, 0,
2109 0, 0, 0, 0, 0, 0, 0,
2110 0, 0, 0, 0, 0, 0, 0,
2111 0, 0, 0, 0, 0, 0, 0,
2112 0, 0, 0, 0, 0, 0, 0,
2113 0, 0, 0, 0, 0, 0, 0,
2114
2115 /* Char 140 */
2116 0, 0, 0, 0, 0, 0, 0,
2117 0, 0, 0, 0, 0, 0, 0,
2118 0, 0, 0, 0, 0, 0, 0,
2119 0, 0, 0, 0, 0, 0, 0,
2120 0, 0, 0, 0, 0, 0, 0,
2121 0, 0, 0, 0, 0, 0, 0,
2122 0, 0, 0, 0, 0, 0, 0,
2123 0, 0, 0, 0, 0, 0, 0,
2124 0, 0, 0, 0, 0, 0, 0,
2125 0, 0, 0, 0, 0, 0, 0,
2126 0, 0, 0, 0, 0, 0, 0,
2127 0, 0, 0, 0, 0, 0, 0,
2128 0, 0, 0, 0, 0, 0, 0,
2129
2130 /* Char 141 */
2131 0, 0, 0, 0, 0, 0, 0,
2132 0, 0, 0, 0, 0, 0, 0,
2133 0, 0, 0, 0, 0, 0, 0,
2134 0, 0, 0, 0, 0, 0, 0,
2135 0, 0, 0, 0, 0, 0, 0,
2136 0, 0, 0, 0, 0, 0, 0,
2137 0, 0, 0, 0, 0, 0, 0,
2138 0, 0, 0, 0, 0, 0, 0,
2139 0, 0, 0, 0, 0, 0, 0,
2140 0, 0, 0, 0, 0, 0, 0,
2141 0, 0, 0, 0, 0, 0, 0,
2142 0, 0, 0, 0, 0, 0, 0,
2143 0, 0, 0, 0, 0, 0, 0,
2144
2145 /* Char 142 */
2146 0, 0, 0, 0, 0, 0, 0,
2147 0, 0, 0, 0, 0, 0, 0,
2148 0, 0, 0, 0, 0, 0, 0,
2149 0, 0, 0, 0, 0, 0, 0,
2150 0, 0, 0, 0, 0, 0, 0,
2151 0, 0, 0, 0, 0, 0, 0,
2152 0, 0, 0, 0, 0, 0, 0,
2153 0, 0, 0, 0, 0, 0, 0,
2154 0, 0, 0, 0, 0, 0, 0,
2155 0, 0, 0, 0, 0, 0, 0,
2156 0, 0, 0, 0, 0, 0, 0,
2157 0, 0, 0, 0, 0, 0, 0,
2158 0, 0, 0, 0, 0, 0, 0,
2159
2160 /* Char 143 */
2161 0, 0, 0, 0, 0, 0, 0,
2162 0, 0, 0, 0, 0, 0, 0,
2163 0, 0, 0, 0, 0, 0, 0,
2164 0, 0, 0, 0, 0, 0, 0,
2165 0, 0, 0, 0, 0, 0, 0,
2166 0, 0, 0, 0, 0, 0, 0,
2167 0, 0, 0, 0, 0, 0, 0,
2168 0, 0, 0, 0, 0, 0, 0,
2169 0, 0, 0, 0, 0, 0, 0,
2170 0, 0, 0, 0, 0, 0, 0,
2171 0, 0, 0, 0, 0, 0, 0,
2172 0, 0, 0, 0, 0, 0, 0,
2173 0, 0, 0, 0, 0, 0, 0,
2174
2175 /* Char 144 */
2176 0, 0, 0, 0, 0, 0, 0,
2177 0, 0, 0, 0, 0, 0, 0,
2178 0, 0, 0, 0, 0, 0, 0,
2179 0, 0, 0, 0, 0, 0, 0,
2180 0, 0, 0, 0, 0, 0, 0,
2181 0, 0, 0, 0, 0, 0, 0,
2182 0, 0, 0, 0, 0, 0, 0,
2183 0, 0, 0, 0, 0, 0, 0,
2184 0, 0, 0, 0, 0, 0, 0,
2185 0, 0, 0, 0, 0, 0, 0,
2186 0, 0, 0, 0, 0, 0, 0,
2187 0, 0, 0, 0, 0, 0, 0,
2188 0, 0, 0, 0, 0, 0, 0,
2189
2190 /* Char 145 */
2191 0, 0, 0, 0, 0, 0, 0,
2192 0, 0, 0, 0, 0, 0, 0,
2193 0, 0, 0, 0, 0, 0, 0,
2194 0, 0, 0, 0, 0, 0, 0,
2195 0, 0, 0, 0, 0, 0, 0,
2196 0, 0, 0, 0, 0, 0, 0,
2197 0, 0, 0, 0, 0, 0, 0,
2198 0, 0, 0, 0, 0, 0, 0,
2199 0, 0, 0, 0, 0, 0, 0,
2200 0, 0, 0, 0, 0, 0, 0,
2201 0, 0, 0, 0, 0, 0, 0,
2202 0, 0, 0, 0, 0, 0, 0,
2203 0, 0, 0, 0, 0, 0, 0,
2204
2205 /* Char 146 */
2206 0, 0, 0, 0, 0, 0, 0,
2207 0, 0, 0, 0, 0, 0, 0,
2208 0, 0, 0, 0, 0, 0, 0,
2209 0, 0, 0, 0, 0, 0, 0,
2210 0, 0, 0, 0, 0, 0, 0,
2211 0, 0, 0, 0, 0, 0, 0,
2212 0, 0, 0, 0, 0, 0, 0,
2213 0, 0, 0, 0, 0, 0, 0,
2214 0, 0, 0, 0, 0, 0, 0,
2215 0, 0, 0, 0, 0, 0, 0,
2216 0, 0, 0, 0, 0, 0, 0,
2217 0, 0, 0, 0, 0, 0, 0,
2218 0, 0, 0, 0, 0, 0, 0,
2219
2220 /* Char 147 */
2221 0, 0, 0, 0, 0, 0, 0,
2222 0, 0, 0, 0, 0, 0, 0,
2223 0, 0, 0, 0, 0, 0, 0,
2224 0, 0, 0, 0, 0, 0, 0,
2225 0, 0, 0, 0, 0, 0, 0,
2226 0, 0, 0, 0, 0, 0, 0,
2227 0, 0, 0, 0, 0, 0, 0,
2228 0, 0, 0, 0, 0, 0, 0,
2229 0, 0, 0, 0, 0, 0, 0,
2230 0, 0, 0, 0, 0, 0, 0,
2231 0, 0, 0, 0, 0, 0, 0,
2232 0, 0, 0, 0, 0, 0, 0,
2233 0, 0, 0, 0, 0, 0, 0,
2234
2235 /* Char 148 */
2236 0, 0, 0, 0, 0, 0, 0,
2237 0, 0, 0, 0, 0, 0, 0,
2238 0, 0, 0, 0, 0, 0, 0,
2239 0, 0, 0, 0, 0, 0, 0,
2240 0, 0, 0, 0, 0, 0, 0,
2241 0, 0, 0, 0, 0, 0, 0,
2242 0, 0, 0, 0, 0, 0, 0,
2243 0, 0, 0, 0, 0, 0, 0,
2244 0, 0, 0, 0, 0, 0, 0,
2245 0, 0, 0, 0, 0, 0, 0,
2246 0, 0, 0, 0, 0, 0, 0,
2247 0, 0, 0, 0, 0, 0, 0,
2248 0, 0, 0, 0, 0, 0, 0,
2249
2250 /* Char 149 */
2251 0, 0, 0, 0, 0, 0, 0,
2252 0, 0, 0, 0, 0, 0, 0,
2253 0, 0, 0, 0, 0, 0, 0,
2254 0, 0, 0, 0, 0, 0, 0,
2255 0, 0, 0, 0, 0, 0, 0,
2256 0, 0, 0, 0, 0, 0, 0,
2257 0, 0, 0, 0, 0, 0, 0,
2258 0, 0, 0, 0, 0, 0, 0,
2259 0, 0, 0, 0, 0, 0, 0,
2260 0, 0, 0, 0, 0, 0, 0,
2261 0, 0, 0, 0, 0, 0, 0,
2262 0, 0, 0, 0, 0, 0, 0,
2263 0, 0, 0, 0, 0, 0, 0,
2264
2265 /* Char 150 */
2266 0, 0, 0, 0, 0, 0, 0,
2267 0, 0, 0, 0, 0, 0, 0,
2268 0, 0, 0, 0, 0, 0, 0,
2269 0, 0, 0, 0, 0, 0, 0,
2270 0, 0, 0, 0, 0, 0, 0,
2271 0, 0, 0, 0, 0, 0, 0,
2272 0, 0, 0, 0, 0, 0, 0,
2273 0, 0, 0, 0, 0, 0, 0,
2274 0, 0, 0, 0, 0, 0, 0,
2275 0, 0, 0, 0, 0, 0, 0,
2276 0, 0, 0, 0, 0, 0, 0,
2277 0, 0, 0, 0, 0, 0, 0,
2278 0, 0, 0, 0, 0, 0, 0,
2279
2280 /* Char 151 */
2281 0, 0, 0, 0, 0, 0, 0,
2282 0, 0, 0, 0, 0, 0, 0,
2283 0, 0, 0, 0, 0, 0, 0,
2284 0, 0, 0, 0, 0, 0, 0,
2285 0, 0, 0, 0, 0, 0, 0,
2286 0, 0, 0, 0, 0, 0, 0,
2287 0, 0, 0, 0, 0, 0, 0,
2288 0, 0, 0, 0, 0, 0, 0,
2289 0, 0, 0, 0, 0, 0, 0,
2290 0, 0, 0, 0, 0, 0, 0,
2291 0, 0, 0, 0, 0, 0, 0,
2292 0, 0, 0, 0, 0, 0, 0,
2293 0, 0, 0, 0, 0, 0, 0,
2294
2295 /* Char 152 */
2296 0, 0, 0, 0, 0, 0, 0,
2297 0, 0, 0, 0, 0, 0, 0,
2298 0, 0, 0, 0, 0, 0, 0,
2299 0, 0, 0, 0, 0, 0, 0,
2300 0, 0, 0, 0, 0, 0, 0,
2301 0, 0, 0, 0, 0, 0, 0,
2302 0, 0, 0, 0, 0, 0, 0,
2303 0, 0, 0, 0, 0, 0, 0,
2304 0, 0, 0, 0, 0, 0, 0,
2305 0, 0, 0, 0, 0, 0, 0,
2306 0, 0, 0, 0, 0, 0, 0,
2307 0, 0, 0, 0, 0, 0, 0,
2308 0, 0, 0, 0, 0, 0, 0,
2309
2310 /* Char 153 */
2311 0, 0, 0, 0, 0, 0, 0,
2312 0, 0, 0, 0, 0, 0, 0,
2313 0, 0, 0, 0, 0, 0, 0,
2314 0, 0, 0, 0, 0, 0, 0,
2315 0, 0, 0, 0, 0, 0, 0,
2316 0, 0, 0, 0, 0, 0, 0,
2317 0, 0, 0, 0, 0, 0, 0,
2318 0, 0, 0, 0, 0, 0, 0,
2319 0, 0, 0, 0, 0, 0, 0,
2320 0, 0, 0, 0, 0, 0, 0,
2321 0, 0, 0, 0, 0, 0, 0,
2322 0, 0, 0, 0, 0, 0, 0,
2323 0, 0, 0, 0, 0, 0, 0,
2324
2325 /* Char 154 */
2326 0, 0, 0, 0, 0, 0, 0,
2327 0, 0, 0, 0, 0, 0, 0,
2328 0, 0, 0, 0, 0, 0, 0,
2329 0, 0, 0, 0, 0, 0, 0,
2330 0, 0, 0, 0, 0, 0, 0,
2331 0, 0, 0, 0, 0, 0, 0,
2332 0, 0, 0, 0, 0, 0, 0,
2333 0, 0, 0, 0, 0, 0, 0,
2334 0, 0, 0, 0, 0, 0, 0,
2335 0, 0, 0, 0, 0, 0, 0,
2336 0, 0, 0, 0, 0, 0, 0,
2337 0, 0, 0, 0, 0, 0, 0,
2338 0, 0, 0, 0, 0, 0, 0,
2339
2340 /* Char 155 */
2341 0, 0, 0, 0, 0, 0, 0,
2342 0, 0, 0, 0, 0, 0, 0,
2343 0, 0, 0, 0, 0, 0, 0,
2344 0, 0, 0, 0, 0, 0, 0,
2345 0, 0, 0, 0, 0, 0, 0,
2346 0, 0, 0, 0, 0, 0, 0,
2347 0, 0, 0, 0, 0, 0, 0,
2348 0, 0, 0, 0, 0, 0, 0,
2349 0, 0, 0, 0, 0, 0, 0,
2350 0, 0, 0, 0, 0, 0, 0,
2351 0, 0, 0, 0, 0, 0, 0,
2352 0, 0, 0, 0, 0, 0, 0,
2353 0, 0, 0, 0, 0, 0, 0,
2354
2355 /* Char 156 */
2356 0, 0, 0, 0, 0, 0, 0,
2357 0, 0, 0, 0, 0, 0, 0,
2358 0, 0, 0, 0, 0, 0, 0,
2359 0, 0, 0, 0, 0, 0, 0,
2360 0, 0, 0, 0, 0, 0, 0,
2361 0, 0, 0, 0, 0, 0, 0,
2362 0, 0, 0, 0, 0, 0, 0,
2363 0, 0, 0, 0, 0, 0, 0,
2364 0, 0, 0, 0, 0, 0, 0,
2365 0, 0, 0, 0, 0, 0, 0,
2366 0, 0, 0, 0, 0, 0, 0,
2367 0, 0, 0, 0, 0, 0, 0,
2368 0, 0, 0, 0, 0, 0, 0,
2369
2370 /* Char 157 */
2371 0, 0, 0, 0, 0, 0, 0,
2372 0, 0, 0, 0, 0, 0, 0,
2373 0, 0, 0, 0, 0, 0, 0,
2374 0, 0, 0, 0, 0, 0, 0,
2375 0, 0, 0, 0, 0, 0, 0,
2376 0, 0, 0, 0, 0, 0, 0,
2377 0, 0, 0, 0, 0, 0, 0,
2378 0, 0, 0, 0, 0, 0, 0,
2379 0, 0, 0, 0, 0, 0, 0,
2380 0, 0, 0, 0, 0, 0, 0,
2381 0, 0, 0, 0, 0, 0, 0,
2382 0, 0, 0, 0, 0, 0, 0,
2383 0, 0, 0, 0, 0, 0, 0,
2384
2385 /* Char 158 */
2386 0, 0, 0, 0, 0, 0, 0,
2387 0, 0, 0, 0, 0, 0, 0,
2388 0, 0, 0, 0, 0, 0, 0,
2389 0, 0, 0, 0, 0, 0, 0,
2390 0, 0, 0, 0, 0, 0, 0,
2391 0, 0, 0, 0, 0, 0, 0,
2392 0, 0, 0, 0, 0, 0, 0,
2393 0, 0, 0, 0, 0, 0, 0,
2394 0, 0, 0, 0, 0, 0, 0,
2395 0, 0, 0, 0, 0, 0, 0,
2396 0, 0, 0, 0, 0, 0, 0,
2397 0, 0, 0, 0, 0, 0, 0,
2398 0, 0, 0, 0, 0, 0, 0,
2399
2400 /* Char 159 */
2401 0, 0, 0, 0, 0, 0, 0,
2402 0, 0, 0, 0, 0, 0, 0,
2403 0, 0, 0, 0, 0, 0, 0,
2404 0, 0, 0, 0, 0, 0, 0,
2405 0, 0, 0, 0, 0, 0, 0,
2406 0, 0, 0, 0, 0, 0, 0,
2407 0, 0, 0, 0, 0, 0, 0,
2408 0, 0, 0, 0, 0, 0, 0,
2409 0, 0, 0, 0, 0, 0, 0,
2410 0, 0, 0, 0, 0, 0, 0,
2411 0, 0, 0, 0, 0, 0, 0,
2412 0, 0, 0, 0, 0, 0, 0,
2413 0, 0, 0, 0, 0, 0, 0,
2414
2415 /* Char 160 */
2416 0, 0, 0, 0, 0, 0, 0,
2417 0, 0, 0, 0, 0, 0, 0,
2418 0, 0, 0, 0, 0, 0, 0,
2419 0, 0, 0, 0, 0, 0, 0,
2420 0, 0, 0, 0, 0, 0, 0,
2421 0, 0, 0, 0, 0, 0, 0,
2422 0, 0, 0, 0, 0, 0, 0,
2423 0, 0, 0, 0, 0, 0, 0,
2424 0, 0, 0, 0, 0, 0, 0,
2425 0, 0, 0, 0, 0, 0, 0,
2426 0, 0, 0, 0, 0, 0, 0,
2427 0, 0, 0, 0, 0, 0, 0,
2428 0, 0, 0, 0, 0, 0, 0,
2429
2430 /* Char 161 */
2431 0, 0, 0, 0, 0, 0, 0,
2432 0, 0, 0, 0, 0, 0, 0,
2433 0, 0, 0, 0, 0, 0, 0,
2434 0, 1, 1, 1, 1, 0, 0,
2435 1, 1, 0, 0, 1, 1, 0,
2436 1, 1, 0, 0, 1, 1, 0,
2437 1, 1, 0, 0, 1, 1, 0,
2438 1, 1, 1, 1, 1, 1, 0,
2439 1, 1, 0, 0, 1, 1, 0,
2440 1, 1, 0, 0, 1, 1, 0,
2441 1, 1, 0, 0, 1, 1, 0,
2442 0, 0, 0, 1, 1, 0, 0,
2443 0, 0, 0, 0, 1, 1, 0,
2444
2445 /* Char 162 */
2446 0, 0, 0, 0, 0, 0, 0,
2447 1, 1, 0, 0, 1, 1, 0,
2448 0, 1, 1, 1, 1, 0, 0,
2449 0, 0, 0, 0, 0, 0, 0,
2450 0, 0, 0, 0, 0, 0, 0,
2451 0, 0, 0, 0, 0, 0, 0,
2452 0, 0, 0, 0, 0, 0, 0,
2453 0, 0, 0, 0, 0, 0, 0,
2454 0, 0, 0, 0, 0, 0, 0,
2455 0, 0, 0, 0, 0, 0, 0,
2456 0, 0, 0, 0, 0, 0, 0,
2457 0, 0, 0, 0, 0, 0, 0,
2458 0, 0, 0, 0, 0, 0, 0,
2459
2460 /* Char 163 */
2461 0, 0, 0, 0, 0, 0, 0,
2462 0, 0, 0, 0, 0, 0, 0,
2463 0, 0, 0, 0, 0, 0, 0,
2464 0, 1, 1, 0, 1, 0, 0,
2465 0, 1, 1, 1, 1, 0, 0,
2466 0, 1, 1, 1, 0, 0, 0,
2467 0, 1, 1, 0, 0, 0, 0,
2468 1, 1, 1, 0, 0, 0, 0,
2469 1, 1, 1, 0, 0, 0, 0,
2470 0, 1, 1, 0, 0, 0, 0,
2471 0, 1, 1, 1, 1, 1, 0,
2472 0, 0, 0, 0, 0, 0, 0,
2473 0, 0, 0, 0, 0, 0, 0,
2474
2475 /* Char 164 */
2476 0, 0, 0, 0, 0, 0, 0,
2477 0, 0, 0, 0, 0, 0, 0,
2478 0, 0, 0, 0, 0, 0, 0,
2479 0, 0, 0, 0, 0, 0, 0,
2480 1, 1, 0, 0, 1, 1, 0,
2481 1, 1, 1, 1, 1, 1, 0,
2482 0, 1, 0, 0, 1, 0, 0,
2483 0, 1, 0, 0, 1, 0, 0,
2484 1, 1, 1, 1, 1, 1, 0,
2485 1, 1, 0, 0, 1, 1, 0,
2486 0, 0, 0, 0, 0, 0, 0,
2487 0, 0, 0, 0, 0, 0, 0,
2488 0, 0, 0, 0, 0, 0, 0,
2489
2490 /* Char 165 */
2491 0, 0, 0, 0, 0, 0, 0,
2492 0, 0, 0, 0, 0, 0, 0,
2493 0, 0, 0, 1, 1, 1, 0,
2494 1, 1, 0, 0, 1, 1, 0,
2495 1, 1, 0, 1, 1, 0, 0,
2496 1, 1, 0, 0, 0, 0, 0,
2497 1, 1, 0, 0, 0, 0, 0,
2498 1, 1, 0, 0, 0, 0, 0,
2499 1, 1, 0, 0, 0, 0, 0,
2500 1, 1, 0, 0, 0, 0, 0,
2501 1, 1, 1, 1, 1, 1, 0,
2502 0, 0, 0, 0, 0, 0, 0,
2503 0, 0, 0, 0, 0, 0, 0,
2504
2505 /* Char 166 */
2506 0, 0, 0, 1, 1, 1, 0,
2507 0, 1, 1, 1, 0, 0, 0,
2508 0, 0, 0, 0, 0, 0, 0,
2509 0, 1, 1, 1, 1, 0, 0,
2510 1, 1, 0, 0, 1, 1, 0,
2511 1, 1, 0, 0, 0, 0, 0,
2512 0, 1, 1, 1, 1, 0, 0,
2513 0, 0, 0, 0, 1, 1, 0,
2514 0, 0, 0, 0, 1, 1, 0,
2515 1, 1, 0, 0, 1, 1, 0,
2516 0, 1, 1, 1, 1, 0, 0,
2517 0, 0, 0, 0, 0, 0, 0,
2518 0, 0, 0, 0, 0, 0, 0,
2519
2520 /* Char 167 */
2521 0, 0, 0, 0, 0, 0, 0,
2522 0, 1, 1, 1, 1, 0, 0,
2523 1, 1, 0, 0, 1, 1, 0,
2524 1, 1, 0, 0, 0, 0, 0,
2525 0, 1, 1, 1, 1, 0, 0,
2526 1, 1, 0, 0, 1, 1, 0,
2527 1, 1, 0, 0, 1, 1, 0,
2528 0, 1, 1, 1, 1, 0, 0,
2529 0, 0, 0, 0, 1, 1, 0,
2530 1, 1, 0, 0, 1, 1, 0,
2531 0, 1, 1, 1, 1, 0, 0,
2532 0, 0, 0, 0, 0, 0, 0,
2533 0, 0, 0, 0, 0, 0, 0,
2534
2535 /* Char 168 */
2536 0, 0, 0, 0, 0, 0, 0,
2537 0, 1, 1, 0, 1, 1, 0,
2538 0, 1, 1, 0, 1, 1, 0,
2539 0, 0, 0, 0, 0, 0, 0,
2540 0, 0, 0, 0, 0, 0, 0,
2541 0, 0, 0, 0, 0, 0, 0,
2542 0, 0, 0, 0, 0, 0, 0,
2543 0, 0, 0, 0, 0, 0, 0,
2544 0, 0, 0, 0, 0, 0, 0,
2545 0, 0, 0, 0, 0, 0, 0,
2546 0, 0, 0, 0, 0, 0, 0,
2547 0, 0, 0, 0, 0, 0, 0,
2548 0, 0, 0, 0, 0, 0, 0,
2549
2550 /* Char 169 */
2551 0, 1, 1, 0, 1, 1, 0,
2552 0, 0, 1, 1, 1, 0, 0,
2553 0, 0, 0, 0, 0, 0, 0,
2554 0, 1, 1, 1, 1, 0, 0,
2555 1, 1, 0, 0, 1, 1, 0,
2556 1, 1, 0, 0, 0, 0, 0,
2557 0, 1, 1, 1, 1, 0, 0,
2558 0, 0, 0, 0, 1, 1, 0,
2559 0, 0, 0, 0, 1, 1, 0,
2560 1, 1, 0, 0, 1, 1, 0,
2561 0, 1, 1, 1, 1, 0, 0,
2562 0, 0, 0, 0, 0, 0, 0,
2563 0, 0, 0, 0, 0, 0, 0,
2564
2565 /* Char 170 */
2566 0, 0, 0, 0, 0, 0, 0,
2567 0, 0, 0, 0, 0, 0, 0,
2568 0, 0, 0, 0, 0, 0, 0,
2569 0, 1, 1, 1, 1, 0, 0,
2570 1, 1, 0, 0, 1, 1, 0,
2571 1, 1, 0, 0, 0, 0, 0,
2572 0, 1, 1, 1, 1, 0, 0,
2573 0, 0, 0, 0, 1, 1, 0,
2574 0, 0, 0, 0, 1, 1, 0,
2575 1, 1, 0, 0, 1, 1, 0,
2576 0, 1, 1, 1, 1, 0, 0,
2577 0, 0, 1, 1, 0, 0, 0,
2578 0, 1, 1, 0, 0, 0, 0,
2579
2580 /* Char 171 */
2581 0, 1, 1, 0, 1, 1, 0,
2582 0, 0, 1, 1, 1, 0, 0,
2583 0, 0, 0, 0, 0, 0, 0,
2584 1, 1, 1, 1, 1, 1, 0,
2585 0, 0, 1, 1, 0, 0, 0,
2586 0, 0, 1, 1, 0, 0, 0,
2587 0, 0, 1, 1, 0, 0, 0,
2588 0, 0, 1, 1, 0, 0, 0,
2589 0, 0, 1, 1, 0, 0, 0,
2590 0, 0, 1, 1, 0, 0, 0,
2591 0, 0, 1, 1, 0, 0, 0,
2592 0, 0, 0, 0, 0, 0, 0,
2593 0, 0, 0, 0, 0, 0, 0,
2594
2595 /* Char 172 */
2596 0, 0, 0, 1, 1, 1, 0,
2597 0, 1, 1, 1, 0, 0, 0,
2598 0, 0, 0, 0, 0, 0, 0,
2599 1, 1, 1, 1, 1, 1, 0,
2600 0, 0, 0, 0, 1, 1, 0,
2601 0, 0, 0, 1, 1, 0, 0,
2602 0, 0, 1, 1, 0, 0, 0,
2603 0, 1, 1, 0, 0, 0, 0,
2604 1, 1, 0, 0, 0, 0, 0,
2605 1, 1, 0, 0, 0, 0, 0,
2606 1, 1, 1, 1, 1, 1, 0,
2607 0, 0, 0, 0, 0, 0, 0,
2608 0, 0, 0, 0, 0, 0, 0,
2609
2610 /* Char 173 */
2611 0, 0, 0, 0, 0, 0, 0,
2612 0, 0, 0, 0, 0, 0, 0,
2613 0, 0, 0, 0, 0, 0, 0,
2614 0, 0, 0, 0, 0, 0, 0,
2615 0, 0, 0, 0, 0, 0, 0,
2616 0, 1, 1, 1, 1, 1, 0,
2617 0, 1, 1, 1, 1, 1, 0,
2618 0, 0, 0, 0, 0, 0, 0,
2619 0, 0, 0, 0, 0, 0, 0,
2620 0, 0, 0, 0, 0, 0, 0,
2621 0, 0, 0, 0, 0, 0, 0,
2622 0, 0, 0, 0, 0, 0, 0,
2623 0, 0, 0, 0, 0, 0, 0,
2624
2625 /* Char 174 */
2626 0, 1, 1, 0, 1, 1, 0,
2627 0, 0, 1, 1, 1, 0, 0,
2628 0, 0, 0, 0, 0, 0, 0,
2629 1, 1, 1, 1, 1, 1, 0,
2630 0, 0, 0, 0, 1, 1, 0,
2631 0, 0, 0, 1, 1, 0, 0,
2632 0, 0, 1, 1, 0, 0, 0,
2633 0, 1, 1, 0, 0, 0, 0,
2634 1, 1, 0, 0, 0, 0, 0,
2635 1, 1, 0, 0, 0, 0, 0,
2636 1, 1, 1, 1, 1, 1, 0,
2637 0, 0, 0, 0, 0, 0, 0,
2638 0, 0, 0, 0, 0, 0, 0,
2639
2640 /* Char 175 */
2641 0, 0, 0, 0, 0, 0, 0,
2642 0, 0, 1, 1, 0, 0, 0,
2643 0, 0, 0, 0, 0, 0, 0,
2644 1, 1, 1, 1, 1, 1, 0,
2645 0, 0, 0, 0, 1, 1, 0,
2646 0, 0, 0, 1, 1, 0, 0,
2647 0, 0, 1, 1, 0, 0, 0,
2648 0, 1, 1, 0, 0, 0, 0,
2649 1, 1, 0, 0, 0, 0, 0,
2650 1, 1, 0, 0, 0, 0, 0,
2651 1, 1, 1, 1, 1, 1, 0,
2652 0, 0, 0, 0, 0, 0, 0,
2653 0, 0, 0, 0, 0, 0, 0,
2654
2655 /* Char 176 */
2656 0, 0, 0, 0, 0, 0, 0,
2657 0, 0, 0, 0, 0, 0, 0,
2658 0, 1, 1, 1, 1, 0, 0,
2659 1, 1, 0, 0, 1, 1, 0,
2660 1, 1, 0, 0, 1, 1, 0,
2661 0, 1, 1, 1, 1, 0, 0,
2662 0, 0, 0, 0, 0, 0, 0,
2663 0, 0, 0, 0, 0, 0, 0,
2664 0, 0, 0, 0, 0, 0, 0,
2665 0, 0, 0, 0, 0, 0, 0,
2666 0, 0, 0, 0, 0, 0, 0,
2667 0, 0, 0, 0, 0, 0, 0,
2668 0, 0, 0, 0, 0, 0, 0,
2669
2670 /* Char 177 */
2671 0, 0, 0, 0, 0, 0, 0,
2672 0, 0, 0, 0, 0, 0, 0,
2673 0, 0, 0, 0, 0, 0, 0,
2674 0, 0, 0, 0, 0, 0, 0,
2675 0, 0, 0, 0, 0, 0, 0,
2676 0, 1, 1, 1, 1, 0, 0,
2677 0, 0, 0, 0, 1, 1, 0,
2678 0, 1, 1, 1, 1, 1, 0,
2679 1, 1, 0, 0, 1, 1, 0,
2680 1, 1, 0, 0, 1, 1, 0,
2681 0, 1, 1, 1, 1, 1, 0,
2682 0, 0, 0, 1, 1, 0, 0,
2683 0, 0, 0, 0, 1, 1, 0,
2684
2685 /* Char 178 */
2686 0, 0, 0, 0, 0, 0, 0,
2687 0, 0, 0, 0, 0, 0, 0,
2688 0, 0, 0, 0, 0, 0, 0,
2689 0, 0, 0, 0, 0, 0, 0,
2690 0, 0, 0, 0, 0, 0, 0,
2691 0, 0, 0, 0, 0, 0, 0,
2692 0, 0, 0, 0, 0, 0, 0,
2693 0, 0, 0, 0, 0, 0, 0,
2694 0, 0, 0, 0, 0, 0, 0,
2695 0, 0, 0, 0, 0, 0, 0,
2696 0, 0, 0, 0, 0, 0, 0,
2697 0, 0, 1, 1, 0, 0, 0,
2698 0, 0, 0, 1, 1, 1, 0,
2699
2700 /* Char 179 */
2701 0, 0, 0, 0, 0, 0, 0,
2702 0, 0, 0, 0, 0, 0, 0,
2703 0, 1, 1, 1, 0, 0, 0,
2704 0, 0, 1, 1, 0, 1, 0,
2705 0, 0, 1, 1, 1, 1, 0,
2706 0, 0, 1, 1, 1, 0, 0,
2707 0, 1, 1, 1, 0, 0, 0,
2708 1, 1, 1, 1, 0, 0, 0,
2709 1, 0, 1, 1, 0, 0, 0,
2710 0, 0, 1, 1, 0, 0, 0,
2711 1, 1, 1, 1, 1, 1, 0,
2712 0, 0, 0, 0, 0, 0, 0,
2713 0, 0, 0, 0, 0, 0, 0,
2714
2715 /* Char 180 */
2716 0, 0, 0, 0, 0, 0, 0,
2717 0, 0, 0, 1, 1, 1, 0,
2718 0, 1, 1, 1, 0, 0, 0,
2719 0, 0, 0, 0, 0, 0, 0,
2720 0, 0, 0, 0, 0, 0, 0,
2721 0, 0, 0, 0, 0, 0, 0,
2722 0, 0, 0, 0, 0, 0, 0,
2723 0, 0, 0, 0, 0, 0, 0,
2724 0, 0, 0, 0, 0, 0, 0,
2725 0, 0, 0, 0, 0, 0, 0,
2726 0, 0, 0, 0, 0, 0, 0,
2727 0, 0, 0, 0, 0, 0, 0,
2728 0, 0, 0, 0, 0, 0, 0,
2729
2730 /* Char 181 */
2731 0, 0, 0, 0, 0, 0, 0,
2732 0, 0, 0, 1, 1, 1, 0,
2733 1, 1, 1, 0, 1, 1, 0,
2734 0, 1, 1, 0, 1, 0, 0,
2735 0, 1, 1, 0, 0, 0, 0,
2736 0, 1, 1, 0, 0, 0, 0,
2737 0, 1, 1, 0, 0, 0, 0,
2738 0, 1, 1, 0, 0, 0, 0,
2739 0, 1, 1, 0, 0, 0, 0,
2740 0, 1, 1, 0, 0, 0, 0,
2741 1, 1, 1, 1, 1, 0, 0,
2742 0, 0, 0, 0, 0, 0, 0,
2743 0, 0, 0, 0, 0, 0, 0,
2744
2745 /* Char 182 */
2746 0, 0, 0, 0, 0, 0, 0,
2747 0, 0, 0, 0, 0, 0, 0,
2748 0, 0, 0, 1, 1, 1, 0,
2749 0, 1, 1, 1, 0, 0, 0,
2750 0, 0, 0, 0, 0, 0, 0,
2751 0, 1, 1, 1, 1, 0, 0,
2752 1, 1, 0, 0, 1, 1, 0,
2753 0, 1, 1, 0, 0, 0, 0,
2754 0, 0, 0, 1, 1, 0, 0,
2755 1, 1, 0, 0, 1, 1, 0,
2756 0, 1, 1, 1, 1, 0, 0,
2757 0, 0, 0, 0, 0, 0, 0,
2758 0, 0, 0, 0, 0, 0, 0,
2759
2760 /* Char 183 */
2761 0, 0, 0, 0, 0, 0, 0,
2762 0, 1, 1, 0, 1, 1, 0,
2763 0, 0, 1, 1, 1, 0, 0,
2764 0, 0, 0, 0, 0, 0, 0,
2765 0, 0, 0, 0, 0, 0, 0,
2766 0, 0, 0, 0, 0, 0, 0,
2767 0, 0, 0, 0, 0, 0, 0,
2768 0, 0, 0, 0, 0, 0, 0,
2769 0, 0, 0, 0, 0, 0, 0,
2770 0, 0, 0, 0, 0, 0, 0,
2771 0, 0, 0, 0, 0, 0, 0,
2772 0, 0, 0, 0, 0, 0, 0,
2773 0, 0, 0, 0, 0, 0, 0,
2774
2775 /* Char 184 */
2776 0, 0, 0, 0, 0, 0, 0,
2777 0, 0, 0, 0, 0, 0, 0,
2778 0, 0, 0, 0, 0, 0, 0,
2779 0, 0, 0, 0, 0, 0, 0,
2780 0, 0, 0, 0, 0, 0, 0,
2781 0, 0, 0, 0, 0, 0, 0,
2782 0, 0, 0, 0, 0, 0, 0,
2783 0, 0, 0, 0, 0, 0, 0,
2784 0, 0, 0, 0, 0, 0, 0,
2785 0, 0, 0, 0, 0, 0, 0,
2786 0, 0, 0, 0, 0, 0, 0,
2787 0, 0, 0, 1, 1, 0, 0,
2788 0, 1, 1, 1, 0, 0, 0,
2789
2790 /* Char 185 */
2791 0, 0, 0, 0, 0, 0, 0,
2792 0, 0, 0, 0, 0, 0, 0,
2793 0, 1, 1, 0, 1, 1, 0,
2794 0, 0, 1, 1, 1, 0, 0,
2795 0, 0, 0, 0, 0, 0, 0,
2796 0, 1, 1, 1, 1, 0, 0,
2797 1, 1, 0, 0, 1, 1, 0,
2798 0, 1, 1, 0, 0, 0, 0,
2799 0, 0, 0, 1, 1, 0, 0,
2800 1, 1, 0, 0, 1, 1, 0,
2801 0, 1, 1, 1, 1, 0, 0,
2802 0, 0, 0, 0, 0, 0, 0,
2803 0, 0, 0, 0, 0, 0, 0,
2804
2805 /* Char 186 */
2806 0, 0, 0, 0, 0, 0, 0,
2807 0, 0, 0, 0, 0, 0, 0,
2808 0, 0, 0, 0, 0, 0, 0,
2809 0, 0, 0, 0, 0, 0, 0,
2810 0, 0, 0, 0, 0, 0, 0,
2811 0, 1, 1, 1, 1, 0, 0,
2812 1, 1, 0, 0, 1, 1, 0,
2813 0, 1, 1, 0, 0, 0, 0,
2814 0, 0, 0, 1, 1, 0, 0,
2815 1, 1, 0, 0, 1, 1, 0,
2816 0, 1, 1, 1, 1, 0, 0,
2817 0, 0, 1, 1, 0, 0, 0,
2818 0, 1, 1, 0, 0, 0, 0,
2819
2820 /* Char 187 */
2821 0, 0, 0, 0, 0, 0, 0,
2822 0, 0, 0, 1, 1, 1, 0,
2823 0, 0, 0, 0, 1, 1, 0,
2824 0, 1, 1, 0, 1, 0, 0,
2825 0, 1, 1, 0, 0, 0, 0,
2826 1, 1, 1, 1, 1, 0, 0,
2827 0, 1, 1, 0, 0, 0, 0,
2828 0, 1, 1, 0, 0, 0, 0,
2829 0, 1, 1, 0, 0, 0, 0,
2830 0, 1, 1, 0, 1, 1, 0,
2831 0, 0, 1, 1, 1, 0, 0,
2832 0, 0, 0, 0, 0, 0, 0,
2833 0, 0, 0, 0, 0, 0, 0,
2834
2835 /* Char 188 */
2836 0, 0, 0, 0, 0, 0, 0,
2837 0, 0, 0, 0, 0, 0, 0,
2838 0, 0, 0, 1, 1, 1, 0,
2839 0, 1, 1, 1, 0, 0, 0,
2840 0, 0, 0, 0, 0, 0, 0,
2841 1, 1, 1, 1, 1, 1, 0,
2842 0, 0, 0, 0, 1, 1, 0,
2843 0, 0, 0, 1, 1, 0, 0,
2844 0, 1, 1, 0, 0, 0, 0,
2845 1, 1, 0, 0, 0, 0, 0,
2846 1, 1, 1, 1, 1, 1, 0,
2847 0, 0, 0, 0, 0, 0, 0,
2848 0, 0, 0, 0, 0, 0, 0,
2849
2850 /* Char 189 */
2851 0, 0, 0, 0, 0, 0, 0,
2852 0, 1, 1, 0, 0, 1, 1,
2853 1, 1, 0, 0, 1, 1, 0,
2854 0, 0, 0, 0, 0, 0, 0,
2855 0, 0, 0, 0, 0, 0, 0,
2856 0, 0, 0, 0, 0, 0, 0,
2857 0, 0, 0, 0, 0, 0, 0,
2858 0, 0, 0, 0, 0, 0, 0,
2859 0, 0, 0, 0, 0, 0, 0,
2860 0, 0, 0, 0, 0, 0, 0,
2861 0, 0, 0, 0, 0, 0, 0,
2862 0, 0, 0, 0, 0, 0, 0,
2863 0, 0, 0, 0, 0, 0, 0,
2864
2865 /* Char 190 */
2866 0, 0, 0, 0, 0, 0, 0,
2867 0, 0, 0, 0, 0, 0, 0,
2868 0, 1, 1, 0, 1, 1, 0,
2869 0, 0, 1, 1, 1, 0, 0,
2870 0, 0, 0, 0, 0, 0, 0,
2871 1, 1, 1, 1, 1, 1, 0,
2872 0, 0, 0, 0, 1, 1, 0,
2873 0, 0, 0, 1, 1, 0, 0,
2874 0, 1, 1, 0, 0, 0, 0,
2875 1, 1, 0, 0, 0, 0, 0,
2876 1, 1, 1, 1, 1, 1, 0,
2877 0, 0, 0, 0, 0, 0, 0,
2878 0, 0, 0, 0, 0, 0, 0,
2879
2880 /* Char 191 */
2881 0, 0, 0, 0, 0, 0, 0,
2882 0, 0, 0, 0, 0, 0, 0,
2883 0, 0, 0, 0, 0, 0, 0,
2884 0, 0, 1, 1, 0, 0, 0,
2885 0, 0, 0, 0, 0, 0, 0,
2886 1, 1, 1, 1, 1, 1, 0,
2887 0, 0, 0, 0, 1, 1, 0,
2888 0, 0, 0, 1, 1, 0, 0,
2889 0, 1, 1, 0, 0, 0, 0,
2890 1, 1, 0, 0, 0, 0, 0,
2891 1, 1, 1, 1, 1, 1, 0,
2892 0, 0, 0, 0, 0, 0, 0,
2893 0, 0, 0, 0, 0, 0, 0,
2894
2895 /* Char 192 */
2896 0, 0, 0, 1, 1, 1, 0,
2897 0, 1, 1, 1, 0, 0, 0,
2898 0, 0, 0, 0, 0, 0, 0,
2899 1, 1, 1, 1, 1, 0, 0,
2900 1, 1, 0, 0, 1, 1, 0,
2901 1, 1, 0, 0, 1, 1, 0,
2902 1, 1, 1, 1, 1, 0, 0,
2903 1, 1, 1, 1, 0, 0, 0,
2904 1, 1, 0, 1, 1, 0, 0,
2905 1, 1, 0, 0, 1, 1, 0,
2906 1, 1, 0, 0, 1, 1, 0,
2907 0, 0, 0, 0, 0, 0, 0,
2908 0, 0, 0, 0, 0, 0, 0,
2909
2910 /* Char 193 */
2911 0, 0, 0, 1, 1, 1, 0,
2912 0, 1, 1, 1, 0, 0, 0,
2913 0, 0, 0, 0, 0, 0, 0,
2914 0, 1, 1, 1, 1, 0, 0,
2915 1, 1, 0, 0, 1, 1, 0,
2916 1, 1, 0, 0, 1, 1, 0,
2917 1, 1, 0, 0, 1, 1, 0,
2918 1, 1, 1, 1, 1, 1, 0,
2919 1, 1, 0, 0, 1, 1, 0,
2920 1, 1, 0, 0, 1, 1, 0,
2921 1, 1, 0, 0, 1, 1, 0,
2922 0, 0, 0, 0, 0, 0, 0,
2923 0, 0, 0, 0, 0, 0, 0,
2924
2925 /* Char 194 */
2926 0, 0, 1, 1, 0, 0, 0,
2927 1, 1, 0, 0, 1, 1, 0,
2928 0, 0, 0, 0, 0, 0, 0,
2929 0, 1, 1, 1, 1, 0, 0,
2930 1, 1, 0, 0, 1, 1, 0,
2931 1, 1, 0, 0, 1, 1, 0,
2932 1, 1, 0, 0, 1, 1, 0,
2933 1, 1, 1, 1, 1, 1, 0,
2934 1, 1, 0, 0, 1, 1, 0,
2935 1, 1, 0, 0, 1, 1, 0,
2936 1, 1, 0, 0, 1, 1, 0,
2937 0, 0, 0, 0, 0, 0, 0,
2938 0, 0, 0, 0, 0, 0, 0,
2939
2940 /* Char 195 */
2941 1, 1, 0, 0, 1, 1, 0,
2942 0, 1, 1, 1, 1, 0, 0,
2943 0, 0, 0, 0, 0, 0, 0,
2944 0, 1, 1, 1, 1, 0, 0,
2945 1, 1, 0, 0, 1, 1, 0,
2946 1, 1, 0, 0, 1, 1, 0,
2947 1, 1, 0, 0, 1, 1, 0,
2948 1, 1, 1, 1, 1, 1, 0,
2949 1, 1, 0, 0, 1, 1, 0,
2950 1, 1, 0, 0, 1, 1, 0,
2951 1, 1, 0, 0, 1, 1, 0,
2952 0, 0, 0, 0, 0, 0, 0,
2953 0, 0, 0, 0, 0, 0, 0,
2954
2955 /* Char 196 */
2956 0, 0, 0, 0, 0, 0, 0,
2957 1, 1, 0, 0, 1, 1, 0,
2958 0, 0, 0, 0, 0, 0, 0,
2959 0, 1, 1, 1, 1, 0, 0,
2960 1, 1, 0, 0, 1, 1, 0,
2961 1, 1, 0, 0, 1, 1, 0,
2962 1, 1, 0, 0, 1, 1, 0,
2963 1, 1, 1, 1, 1, 1, 0,
2964 1, 1, 0, 0, 1, 1, 0,
2965 1, 1, 0, 0, 1, 1, 0,
2966 1, 1, 0, 0, 1, 1, 0,
2967 0, 0, 0, 0, 0, 0, 0,
2968 0, 0, 0, 0, 0, 0, 0,
2969
2970 /* Char 197 */
2971 0, 0, 0, 1, 1, 1, 0,
2972 0, 1, 1, 1, 0, 0, 0,
2973 0, 0, 0, 0, 0, 0, 0,
2974 1, 1, 0, 0, 0, 0, 0,
2975 1, 1, 0, 0, 0, 0, 0,
2976 1, 1, 0, 0, 0, 0, 0,
2977 1, 1, 0, 0, 0, 0, 0,
2978 1, 1, 0, 0, 0, 0, 0,
2979 1, 1, 0, 0, 0, 0, 0,
2980 1, 1, 0, 0, 0, 0, 0,
2981 1, 1, 1, 1, 1, 1, 0,
2982 0, 0, 0, 0, 0, 0, 0,
2983 0, 0, 0, 0, 0, 0, 0,
2984
2985 /* Char 198 */
2986 0, 0, 0, 1, 1, 1, 0,
2987 0, 1, 1, 1, 0, 0, 0,
2988 0, 0, 0, 0, 0, 0, 0,
2989 0, 1, 1, 1, 1, 0, 0,
2990 1, 1, 0, 0, 1, 1, 0,
2991 1, 1, 0, 0, 0, 0, 0,
2992 1, 1, 0, 0, 0, 0, 0,
2993 1, 1, 0, 0, 0, 0, 0,
2994 1, 1, 0, 0, 0, 0, 0,
2995 1, 1, 0, 0, 1, 1, 0,
2996 0, 1, 1, 1, 1, 0, 0,
2997 0, 0, 0, 0, 0, 0, 0,
2998 0, 0, 0, 0, 0, 0, 0,
2999
3000 /* Char 199 */
3001 0, 0, 0, 0, 0, 0, 0,
3002 0, 0, 0, 0, 0, 0, 0,
3003 0, 0, 0, 0, 0, 0, 0,
3004 0, 1, 1, 1, 1, 0, 0,
3005 1, 1, 0, 0, 1, 1, 0,
3006 1, 1, 0, 0, 0, 0, 0,
3007 1, 1, 0, 0, 0, 0, 0,
3008 1, 1, 0, 0, 0, 0, 0,
3009 1, 1, 0, 0, 0, 0, 0,
3010 1, 1, 0, 0, 1, 1, 0,
3011 0, 1, 1, 1, 1, 0, 0,
3012 0, 0, 1, 1, 0, 0, 0,
3013 0, 1, 1, 0, 0, 0, 0,
3014
3015 /* Char 200 */
3016 0, 1, 1, 0, 1, 1, 0,
3017 0, 0, 1, 1, 1, 0, 0,
3018 0, 0, 0, 0, 0, 0, 0,
3019 0, 1, 1, 1, 1, 0, 0,
3020 1, 1, 0, 0, 1, 1, 0,
3021 1, 1, 0, 0, 0, 0, 0,
3022 1, 1, 0, 0, 0, 0, 0,
3023 1, 1, 0, 0, 0, 0, 0,
3024 1, 1, 0, 0, 0, 0, 0,
3025 1, 1, 0, 0, 1, 1, 0,
3026 0, 1, 1, 1, 1, 0, 0,
3027 0, 0, 0, 0, 0, 0, 0,
3028 0, 0, 0, 0, 0, 0, 0,
3029
3030 /* Char 201 */
3031 0, 0, 0, 1, 1, 1, 0,
3032 0, 1, 1, 1, 0, 0, 0,
3033 0, 0, 0, 0, 0, 0, 0,
3034 1, 1, 1, 1, 1, 1, 0,
3035 1, 1, 0, 0, 0, 0, 0,
3036 1, 1, 0, 0, 0, 0, 0,
3037 1, 1, 1, 1, 1, 0, 0,
3038 1, 1, 0, 0, 0, 0, 0,
3039 1, 1, 0, 0, 0, 0, 0,
3040 1, 1, 0, 0, 0, 0, 0,
3041 1, 1, 1, 1, 1, 1, 0,
3042 0, 0, 0, 0, 0, 0, 0,
3043 0, 0, 0, 0, 0, 0, 0,
3044
3045 /* Char 202 */
3046 0, 0, 0, 0, 0, 0, 0,
3047 0, 0, 0, 0, 0, 0, 0,
3048 0, 0, 0, 0, 0, 0, 0,
3049 1, 1, 1, 1, 1, 1, 0,
3050 1, 1, 0, 0, 0, 0, 0,
3051 1, 1, 0, 0, 0, 0, 0,
3052 1, 1, 1, 1, 1, 0, 0,
3053 1, 1, 0, 0, 0, 0, 0,
3054 1, 1, 0, 0, 0, 0, 0,
3055 1, 1, 0, 0, 0, 0, 0,
3056 1, 1, 1, 1, 1, 1, 0,
3057 0, 0, 0, 1, 1, 0, 0,
3058 0, 0, 0, 0, 1, 1, 0,
3059
3060 /* Char 203 */
3061 0, 0, 0, 0, 0, 0, 0,
3062 1, 1, 0, 0, 1, 1, 0,
3063 0, 0, 0, 0, 0, 0, 0,
3064 1, 1, 1, 1, 1, 1, 0,
3065 1, 1, 0, 0, 0, 0, 0,
3066 1, 1, 0, 0, 0, 0, 0,
3067 1, 1, 1, 1, 1, 0, 0,
3068 1, 1, 0, 0, 0, 0, 0,
3069 1, 1, 0, 0, 0, 0, 0,
3070 1, 1, 0, 0, 0, 0, 0,
3071 1, 1, 1, 1, 1, 1, 0,
3072 0, 0, 0, 0, 0, 0, 0,
3073 0, 0, 0, 0, 0, 0, 0,
3074
3075 /* Char 204 */
3076 0, 1, 1, 0, 1, 1, 0,
3077 0, 0, 1, 1, 1, 0, 0,
3078 0, 0, 0, 0, 0, 0, 0,
3079 1, 1, 1, 1, 1, 1, 0,
3080 1, 1, 0, 0, 0, 0, 0,
3081 1, 1, 0, 0, 0, 0, 0,
3082 1, 1, 1, 1, 1, 0, 0,
3083 1, 1, 0, 0, 0, 0, 0,
3084 1, 1, 0, 0, 0, 0, 0,
3085 1, 1, 0, 0, 0, 0, 0,
3086 1, 1, 1, 1, 1, 1, 0,
3087 0, 0, 0, 0, 0, 0, 0,
3088 0, 0, 0, 0, 0, 0, 0,
3089
3090 /* Char 205 */
3091 0, 0, 0, 1, 1, 1, 0,
3092 0, 1, 1, 1, 0, 0, 0,
3093 0, 0, 0, 0, 0, 0, 0,
3094 1, 1, 1, 1, 1, 1, 0,
3095 0, 0, 1, 1, 0, 0, 0,
3096 0, 0, 1, 1, 0, 0, 0,
3097 0, 0, 1, 1, 0, 0, 0,
3098 0, 0, 1, 1, 0, 0, 0,
3099 0, 0, 1, 1, 0, 0, 0,
3100 0, 0, 1, 1, 0, 0, 0,
3101 1, 1, 1, 1, 1, 1, 0,
3102 0, 0, 0, 0, 0, 0, 0,
3103 0, 0, 0, 0, 0, 0, 0,
3104
3105 /* Char 206 */
3106 0, 1, 1, 1, 1, 0, 0,
3107 1, 1, 0, 0, 1, 1, 0,
3108 0, 0, 0, 0, 0, 0, 0,
3109 1, 1, 1, 1, 1, 1, 0,
3110 0, 0, 1, 1, 0, 0, 0,
3111 0, 0, 1, 1, 0, 0, 0,
3112 0, 0, 1, 1, 0, 0, 0,
3113 0, 0, 1, 1, 0, 0, 0,
3114 0, 0, 1, 1, 0, 0, 0,
3115 0, 0, 1, 1, 0, 0, 0,
3116 1, 1, 1, 1, 1, 1, 0,
3117 0, 0, 0, 0, 0, 0, 0,
3118 0, 0, 0, 0, 0, 0, 0,
3119
3120 /* Char 207 */
3121 0, 1, 1, 0, 1, 1, 0,
3122 0, 0, 1, 1, 1, 0, 0,
3123 0, 0, 0, 0, 0, 0, 0,
3124 1, 1, 1, 1, 1, 0, 0,
3125 1, 1, 0, 0, 1, 1, 0,
3126 1, 1, 0, 0, 1, 1, 0,
3127 1, 1, 0, 0, 1, 1, 0,
3128 1, 1, 0, 0, 1, 1, 0,
3129 1, 1, 0, 0, 1, 1, 0,
3130 1, 1, 0, 0, 1, 1, 0,
3131 1, 1, 1, 1, 1, 0, 0,
3132 0, 0, 0, 0, 0, 0, 0,
3133 0, 0, 0, 0, 0, 0, 0,
3134
3135 /* Char 208 */
3136 0, 0, 0, 0, 0, 0, 0,
3137 0, 0, 0, 0, 0, 0, 0,
3138 0, 0, 0, 0, 0, 0, 0,
3139 1, 1, 1, 1, 1, 0, 0,
3140 0, 1, 1, 0, 1, 1, 0,
3141 0, 1, 1, 0, 1, 1, 0,
3142 1, 1, 1, 0, 1, 1, 0,
3143 0, 1, 1, 0, 1, 1, 0,
3144 0, 1, 1, 0, 1, 1, 0,
3145 0, 1, 1, 0, 1, 1, 0,
3146 1, 1, 1, 1, 1, 0, 0,
3147 0, 0, 0, 0, 0, 0, 0,
3148 0, 0, 0, 0, 0, 0, 0,
3149
3150 /* Char 209 */
3151 0, 0, 0, 1, 1, 1, 0,
3152 0, 1, 1, 1, 0, 0, 0,
3153 0, 0, 0, 0, 0, 0, 0,
3154 1, 1, 0, 0, 1, 1, 0,
3155 1, 1, 1, 0, 1, 1, 0,
3156 1, 1, 1, 0, 1, 1, 0,
3157 1, 1, 1, 1, 1, 1, 0,
3158 1, 1, 0, 1, 1, 1, 0,
3159 1, 1, 0, 1, 1, 1, 0,
3160 1, 1, 0, 0, 1, 1, 0,
3161 1, 1, 0, 0, 1, 1, 0,
3162 0, 0, 0, 0, 0, 0, 0,
3163 0, 0, 0, 0, 0, 0, 0,
3164
3165 /* Char 210 */
3166 0, 1, 1, 0, 1, 1, 0,
3167 0, 0, 1, 1, 1, 0, 0,
3168 0, 0, 0, 0, 0, 0, 0,
3169 1, 1, 0, 0, 1, 1, 0,
3170 1, 1, 1, 0, 1, 1, 0,
3171 1, 1, 1, 0, 1, 1, 0,
3172 1, 1, 1, 1, 1, 1, 0,
3173 1, 1, 0, 1, 1, 1, 0,
3174 1, 1, 0, 1, 1, 1, 0,
3175 1, 1, 0, 0, 1, 1, 0,
3176 1, 1, 0, 0, 1, 1, 0,
3177 0, 0, 0, 0, 0, 0, 0,
3178 0, 0, 0, 0, 0, 0, 0,
3179
3180 /* Char 211 */
3181 0, 0, 0, 1, 1, 1, 0,
3182 0, 1, 1, 1, 0, 0, 0,
3183 0, 0, 0, 0, 0, 0, 0,
3184 0, 1, 1, 1, 1, 0, 0,
3185 1, 1, 0, 0, 1, 1, 0,
3186 1, 1, 0, 0, 1, 1, 0,
3187 1, 1, 0, 0, 1, 1, 0,
3188 1, 1, 0, 0, 1, 1, 0,
3189 1, 1, 0, 0, 1, 1, 0,
3190 1, 1, 0, 0, 1, 1, 0,
3191 0, 1, 1, 1, 1, 0, 0,
3192 0, 0, 0, 0, 0, 0, 0,
3193 0, 0, 0, 0, 0, 0, 0,
3194
3195 /* Char 212 */
3196 0, 1, 1, 1, 1, 0, 0,
3197 1, 1, 0, 0, 1, 1, 0,
3198 0, 0, 0, 0, 0, 0, 0,
3199 0, 1, 1, 1, 1, 0, 0,
3200 1, 1, 0, 0, 1, 1, 0,
3201 1, 1, 0, 0, 1, 1, 0,
3202 1, 1, 0, 0, 1, 1, 0,
3203 1, 1, 0, 0, 1, 1, 0,
3204 1, 1, 0, 0, 1, 1, 0,
3205 1, 1, 0, 0, 1, 1, 0,
3206 0, 1, 1, 1, 1, 0, 0,
3207 0, 0, 0, 0, 0, 0, 0,
3208 0, 0, 0, 0, 0, 0, 0,
3209
3210 /* Char 213 */
3211 0, 1, 1, 0, 0, 1, 1,
3212 1, 1, 0, 0, 1, 1, 0,
3213 0, 0, 0, 0, 0, 0, 0,
3214 0, 1, 1, 1, 1, 0, 0,
3215 1, 1, 0, 0, 1, 1, 0,
3216 1, 1, 0, 0, 1, 1, 0,
3217 1, 1, 0, 0, 1, 1, 0,
3218 1, 1, 0, 0, 1, 1, 0,
3219 1, 1, 0, 0, 1, 1, 0,
3220 1, 1, 0, 0, 1, 1, 0,
3221 0, 1, 1, 1, 1, 0, 0,
3222 0, 0, 0, 0, 0, 0, 0,
3223 0, 0, 0, 0, 0, 0, 0,
3224
3225 /* Char 214 */
3226 0, 0, 0, 0, 0, 0, 0,
3227 1, 1, 0, 0, 1, 1, 0,
3228 0, 0, 0, 0, 0, 0, 0,
3229 0, 1, 1, 1, 1, 0, 0,
3230 1, 1, 0, 0, 1, 1, 0,
3231 1, 1, 0, 0, 1, 1, 0,
3232 1, 1, 0, 0, 1, 1, 0,
3233 1, 1, 0, 0, 1, 1, 0,
3234 1, 1, 0, 0, 1, 1, 0,
3235 1, 1, 0, 0, 1, 1, 0,
3236 0, 1, 1, 1, 1, 0, 0,
3237 0, 0, 0, 0, 0, 0, 0,
3238 0, 0, 0, 0, 0, 0, 0,
3239
3240 /* Char 215 */
3241 0, 0, 0, 0, 0, 0, 0,
3242 0, 0, 0, 0, 0, 0, 0,
3243 0, 0, 0, 0, 0, 0, 0,
3244 0, 0, 0, 0, 0, 0, 0,
3245 0, 0, 0, 0, 0, 0, 0,
3246 1, 1, 0, 0, 1, 1, 0,
3247 0, 1, 1, 1, 1, 0, 0,
3248 0, 0, 1, 1, 0, 0, 0,
3249 0, 1, 1, 1, 1, 0, 0,
3250 1, 1, 0, 0, 1, 1, 0,
3251 0, 0, 0, 0, 0, 0, 0,
3252 0, 0, 0, 0, 0, 0, 0,
3253 0, 0, 0, 0, 0, 0, 0,
3254
3255 /* Char 216 */
3256 0, 1, 1, 0, 1, 1, 0,
3257 0, 0, 1, 1, 1, 0, 0,
3258 0, 0, 0, 0, 0, 0, 0,
3259 1, 1, 1, 1, 1, 0, 0,
3260 1, 1, 0, 0, 1, 1, 0,
3261 1, 1, 0, 0, 1, 1, 0,
3262 1, 1, 1, 1, 1, 0, 0,
3263 1, 1, 1, 1, 0, 0, 0,
3264 1, 1, 0, 1, 1, 0, 0,
3265 1, 1, 0, 0, 1, 1, 0,
3266 1, 1, 0, 0, 1, 1, 0,
3267 0, 0, 0, 0, 0, 0, 0,
3268 0, 0, 0, 0, 0, 0, 0,
3269
3270 /* Char 217 */
3271 0, 0, 1, 1, 0, 0, 0,
3272 0, 1, 0, 0, 1, 0, 0,
3273 0, 0, 1, 1, 0, 0, 0,
3274 1, 1, 0, 0, 1, 1, 0,
3275 1, 1, 0, 0, 1, 1, 0,
3276 1, 1, 0, 0, 1, 1, 0,
3277 1, 1, 0, 0, 1, 1, 0,
3278 1, 1, 0, 0, 1, 1, 0,
3279 1, 1, 0, 0, 1, 1, 0,
3280 1, 1, 0, 0, 1, 1, 0,
3281 0, 1, 1, 1, 1, 0, 0,
3282 0, 0, 0, 0, 0, 0, 0,
3283 0, 0, 0, 0, 0, 0, 0,
3284
3285 /* Char 218 */
3286 0, 0, 0, 1, 1, 1, 0,
3287 0, 1, 1, 1, 0, 0, 0,
3288 0, 0, 0, 0, 0, 0, 0,
3289 1, 1, 0, 0, 1, 1, 0,
3290 1, 1, 0, 0, 1, 1, 0,
3291 1, 1, 0, 0, 1, 1, 0,
3292 1, 1, 0, 0, 1, 1, 0,
3293 1, 1, 0, 0, 1, 1, 0,
3294 1, 1, 0, 0, 1, 1, 0,
3295 1, 1, 0, 0, 1, 1, 0,
3296 0, 1, 1, 1, 1, 0, 0,
3297 0, 0, 0, 0, 0, 0, 0,
3298 0, 0, 0, 0, 0, 0, 0,
3299
3300 /* Char 219 */
3301 0, 1, 1, 0, 0, 1, 1,
3302 1, 1, 0, 0, 1, 1, 0,
3303 0, 0, 0, 0, 0, 0, 0,
3304 1, 1, 0, 0, 1, 1, 0,
3305 1, 1, 0, 0, 1, 1, 0,
3306 1, 1, 0, 0, 1, 1, 0,
3307 1, 1, 0, 0, 1, 1, 0,
3308 1, 1, 0, 0, 1, 1, 0,
3309 1, 1, 0, 0, 1, 1, 0,
3310 1, 1, 0, 0, 1, 1, 0,
3311 0, 1, 1, 1, 1, 0, 0,
3312 0, 0, 0, 0, 0, 0, 0,
3313 0, 0, 0, 0, 0, 0, 0,
3314
3315 /* Char 220 */
3316 0, 0, 0, 0, 0, 0, 0,
3317 1, 1, 0, 0, 1, 1, 0,
3318 0, 0, 0, 0, 0, 0, 0,
3319 1, 1, 0, 0, 1, 1, 0,
3320 1, 1, 0, 0, 1, 1, 0,
3321 1, 1, 0, 0, 1, 1, 0,
3322 1, 1, 0, 0, 1, 1, 0,
3323 1, 1, 0, 0, 1, 1, 0,
3324 1, 1, 0, 0, 1, 1, 0,
3325 1, 1, 0, 0, 1, 1, 0,
3326 0, 1, 1, 1, 1, 0, 0,
3327 0, 0, 0, 0, 0, 0, 0,
3328 0, 0, 0, 0, 0, 0, 0,
3329
3330 /* Char 221 */
3331 0, 0, 0, 1, 1, 1, 0,
3332 0, 1, 1, 1, 0, 0, 0,
3333 0, 0, 0, 0, 0, 0, 0,
3334 1, 1, 0, 0, 1, 1, 0,
3335 1, 1, 0, 0, 1, 1, 0,
3336 0, 1, 1, 1, 1, 0, 0,
3337 0, 1, 1, 1, 1, 0, 0,
3338 0, 0, 1, 1, 0, 0, 0,
3339 0, 0, 1, 1, 0, 0, 0,
3340 0, 0, 1, 1, 0, 0, 0,
3341 0, 0, 1, 1, 0, 0, 0,
3342 0, 0, 0, 0, 0, 0, 0,
3343 0, 0, 0, 0, 0, 0, 0,
3344
3345 /* Char 222 */
3346 0, 0, 0, 0, 0, 0, 0,
3347 0, 0, 0, 0, 0, 0, 0,
3348 0, 0, 0, 0, 0, 0, 0,
3349 1, 1, 1, 1, 1, 1, 0,
3350 0, 0, 1, 1, 0, 0, 0,
3351 0, 0, 1, 1, 0, 0, 0,
3352 0, 0, 1, 1, 0, 0, 0,
3353 0, 0, 1, 1, 0, 0, 0,
3354 0, 0, 1, 1, 0, 0, 0,
3355 0, 0, 1, 1, 0, 0, 0,
3356 0, 0, 1, 1, 0, 0, 0,
3357 0, 0, 0, 1, 1, 0, 0,
3358 0, 0, 1, 1, 0, 0, 0,
3359
3360 /* Char 223 */
3361 0, 0, 0, 0, 0, 0, 0,
3362 0, 0, 0, 0, 0, 0, 0,
3363 0, 0, 0, 0, 0, 0, 0,
3364 0, 1, 1, 1, 1, 0, 0,
3365 1, 1, 0, 0, 1, 1, 0,
3366 1, 1, 0, 0, 1, 1, 0,
3367 1, 1, 1, 1, 1, 0, 0,
3368 1, 1, 0, 0, 1, 1, 0,
3369 1, 1, 0, 0, 1, 1, 0,
3370 1, 1, 1, 0, 1, 1, 0,
3371 1, 1, 0, 1, 1, 0, 0,
3372 1, 0, 0, 0, 0, 0, 0,
3373 0, 0, 0, 0, 0, 0, 0,
3374
3375 /* Char 224 */
3376 0, 0, 0, 0, 0, 0, 0,
3377 0, 0, 0, 0, 0, 0, 0,
3378 0, 0, 0, 1, 1, 1, 0,
3379 0, 1, 1, 1, 0, 0, 0,
3380 0, 0, 0, 0, 0, 0, 0,
3381 1, 1, 1, 1, 1, 0, 0,
3382 1, 1, 0, 0, 1, 1, 0,
3383 1, 1, 0, 0, 0, 0, 0,
3384 1, 1, 0, 0, 0, 0, 0,
3385 1, 1, 0, 0, 0, 0, 0,
3386 1, 1, 0, 0, 0, 0, 0,
3387 0, 0, 0, 0, 0, 0, 0,
3388 0, 0, 0, 0, 0, 0, 0,
3389
3390 /* Char 225 */
3391 0, 0, 0, 0, 0, 0, 0,
3392 0, 0, 0, 0, 0, 0, 0,
3393 0, 0, 0, 1, 1, 1, 0,
3394 0, 1, 1, 1, 0, 0, 0,
3395 0, 0, 0, 0, 0, 0, 0,
3396 0, 1, 1, 1, 1, 0, 0,
3397 0, 0, 0, 0, 1, 1, 0,
3398 0, 1, 1, 1, 1, 1, 0,
3399 1, 1, 0, 0, 1, 1, 0,
3400 1, 1, 0, 0, 1, 1, 0,
3401 0, 1, 1, 1, 1, 1, 0,
3402 0, 0, 0, 0, 0, 0, 0,
3403 0, 0, 0, 0, 0, 0, 0,
3404
3405 /* Char 226 */
3406 0, 0, 0, 0, 0, 0, 0,
3407 0, 0, 0, 0, 0, 0, 0,
3408 0, 0, 1, 1, 1, 0, 0,
3409 0, 1, 1, 0, 1, 1, 0,
3410 0, 0, 0, 0, 0, 0, 0,
3411 0, 1, 1, 1, 1, 0, 0,
3412 0, 0, 0, 0, 1, 1, 0,
3413 0, 1, 1, 1, 1, 1, 0,
3414 1, 1, 0, 0, 1, 1, 0,
3415 1, 1, 0, 0, 1, 1, 0,
3416 0, 1, 1, 1, 1, 1, 0,
3417 0, 0, 0, 0, 0, 0, 0,
3418 0, 0, 0, 0, 0, 0, 0,
3419
3420 /* Char 227 */
3421 0, 0, 0, 0, 0, 0, 0,
3422 0, 0, 0, 0, 0, 0, 0,
3423 1, 1, 0, 0, 1, 1, 0,
3424 0, 1, 1, 1, 1, 0, 0,
3425 0, 0, 0, 0, 0, 0, 0,
3426 0, 1, 1, 1, 1, 0, 0,
3427 0, 0, 0, 0, 1, 1, 0,
3428 0, 1, 1, 1, 1, 1, 0,
3429 1, 1, 0, 0, 1, 1, 0,
3430 1, 1, 0, 0, 1, 1, 0,
3431 0, 1, 1, 1, 1, 1, 0,
3432 0, 0, 0, 0, 0, 0, 0,
3433 0, 0, 0, 0, 0, 0, 0,
3434
3435 /* Char 228 */
3436 0, 0, 0, 0, 0, 0, 0,
3437 0, 0, 0, 0, 0, 0, 0,
3438 0, 1, 1, 0, 1, 1, 0,
3439 0, 0, 0, 0, 0, 0, 0,
3440 0, 0, 0, 0, 0, 0, 0,
3441 0, 1, 1, 1, 1, 0, 0,
3442 0, 0, 0, 0, 1, 1, 0,
3443 0, 1, 1, 1, 1, 1, 0,
3444 1, 1, 0, 0, 1, 1, 0,
3445 1, 1, 0, 0, 1, 1, 0,
3446 0, 1, 1, 1, 1, 1, 0,
3447 0, 0, 0, 0, 0, 0, 0,
3448 0, 0, 0, 0, 0, 0, 0,
3449
3450 /* Char 229 */
3451 0, 0, 0, 1, 1, 1, 0,
3452 0, 1, 1, 1, 0, 0, 0,
3453 0, 0, 0, 0, 0, 0, 0,
3454 0, 1, 1, 1, 0, 0, 0,
3455 0, 0, 1, 1, 0, 0, 0,
3456 0, 0, 1, 1, 0, 0, 0,
3457 0, 0, 1, 1, 0, 0, 0,
3458 0, 0, 1, 1, 0, 0, 0,
3459 0, 0, 1, 1, 0, 0, 0,
3460 0, 0, 1, 1, 0, 0, 0,
3461 1, 1, 1, 1, 1, 1, 0,
3462 0, 0, 0, 0, 0, 0, 0,
3463 0, 0, 0, 0, 0, 0, 0,
3464
3465 /* Char 230 */
3466 0, 0, 0, 0, 0, 0, 0,
3467 0, 0, 0, 0, 0, 0, 0,
3468 0, 0, 0, 1, 1, 1, 0,
3469 0, 1, 1, 1, 0, 0, 0,
3470 0, 0, 0, 0, 0, 0, 0,
3471 0, 1, 1, 1, 1, 0, 0,
3472 1, 1, 0, 0, 1, 1, 0,
3473 1, 1, 0, 0, 0, 0, 0,
3474 1, 1, 0, 0, 0, 0, 0,
3475 1, 1, 0, 0, 1, 1, 0,
3476 0, 1, 1, 1, 1, 0, 0,
3477 0, 0, 0, 0, 0, 0, 0,
3478 0, 0, 0, 0, 0, 0, 0,
3479
3480 /* Char 231 */
3481 0, 0, 0, 0, 0, 0, 0,
3482 0, 0, 0, 0, 0, 0, 0,
3483 0, 0, 0, 0, 0, 0, 0,
3484 0, 0, 0, 0, 0, 0, 0,
3485 0, 0, 0, 0, 0, 0, 0,
3486 0, 1, 1, 1, 1, 0, 0,
3487 1, 1, 0, 0, 1, 1, 0,
3488 1, 1, 0, 0, 0, 0, 0,
3489 1, 1, 0, 0, 0, 0, 0,
3490 1, 1, 0, 0, 1, 1, 0,
3491 0, 1, 1, 1, 1, 0, 0,
3492 0, 0, 1, 1, 0, 0, 0,
3493 0, 1, 1, 0, 0, 0, 0,
3494
3495 /* Char 232 */
3496 0, 0, 0, 0, 0, 0, 0,
3497 0, 0, 0, 0, 0, 0, 0,
3498 0, 1, 1, 0, 1, 1, 0,
3499 0, 0, 1, 1, 1, 0, 0,
3500 0, 0, 0, 0, 0, 0, 0,
3501 0, 1, 1, 1, 1, 0, 0,
3502 1, 1, 0, 0, 1, 1, 0,
3503 1, 1, 0, 0, 0, 0, 0,
3504 1, 1, 0, 0, 0, 0, 0,
3505 1, 1, 0, 0, 1, 1, 0,
3506 0, 1, 1, 1, 1, 0, 0,
3507 0, 0, 0, 0, 0, 0, 0,
3508 0, 0, 0, 0, 0, 0, 0,
3509
3510 /* Char 233 */
3511 0, 0, 0, 0, 0, 0, 0,
3512 0, 0, 0, 0, 0, 0, 0,
3513 0, 0, 0, 1, 1, 1, 0,
3514 0, 1, 1, 1, 0, 0, 0,
3515 0, 0, 0, 0, 0, 0, 0,
3516 0, 1, 1, 1, 1, 0, 0,
3517 1, 1, 0, 0, 1, 1, 0,
3518 1, 1, 1, 1, 1, 1, 0,
3519 1, 1, 0, 0, 0, 0, 0,
3520 1, 1, 0, 0, 1, 1, 0,
3521 0, 1, 1, 1, 1, 0, 0,
3522 0, 0, 0, 0, 0, 0, 0,
3523 0, 0, 0, 0, 0, 0, 0,
3524
3525 /* Char 234 */
3526 0, 0, 0, 0, 0, 0, 0,
3527 0, 0, 0, 0, 0, 0, 0,
3528 0, 0, 0, 0, 0, 0, 0,
3529 0, 0, 0, 0, 0, 0, 0,
3530 0, 0, 0, 0, 0, 0, 0,
3531 0, 1, 1, 1, 1, 0, 0,
3532 1, 1, 0, 0, 1, 1, 0,
3533 1, 1, 1, 1, 1, 1, 0,
3534 1, 1, 0, 0, 0, 0, 0,
3535 1, 1, 0, 0, 1, 1, 0,
3536 0, 1, 1, 1, 1, 0, 0,
3537 0, 0, 1, 1, 0, 0, 0,
3538 0, 0, 0, 1, 1, 0, 0,
3539
3540 /* Char 235 */
3541 0, 0, 0, 0, 0, 0, 0,
3542 0, 0, 0, 0, 0, 0, 0,
3543 0, 0, 0, 0, 0, 0, 0,
3544 1, 1, 0, 0, 1, 1, 0,
3545 0, 0, 0, 0, 0, 0, 0,
3546 0, 1, 1, 1, 1, 0, 0,
3547 1, 1, 0, 0, 1, 1, 0,
3548 1, 1, 1, 1, 1, 1, 0,
3549 1, 1, 0, 0, 0, 0, 0,
3550 1, 1, 0, 0, 1, 1, 0,
3551 0, 1, 1, 1, 1, 0, 0,
3552 0, 0, 0, 0, 0, 0, 0,
3553 0, 0, 0, 0, 0, 0, 0,
3554
3555 /* Char 236 */
3556 0, 0, 0, 0, 0, 0, 0,
3557 0, 0, 0, 0, 0, 0, 0,
3558 0, 1, 1, 0, 1, 1, 0,
3559 0, 0, 1, 1, 1, 0, 0,
3560 0, 0, 0, 0, 0, 0, 0,
3561 0, 1, 1, 1, 1, 0, 0,
3562 1, 1, 0, 0, 1, 1, 0,
3563 1, 1, 1, 1, 1, 1, 0,
3564 1, 1, 0, 0, 0, 0, 0,
3565 1, 1, 0, 0, 1, 1, 0,
3566 0, 1, 1, 1, 1, 0, 0,
3567 0, 0, 0, 0, 0, 0, 0,
3568 0, 0, 0, 0, 0, 0, 0,
3569
3570 /* Char 237 */
3571 0, 0, 0, 0, 0, 0, 0,
3572 0, 0, 0, 0, 0, 0, 0,
3573 0, 0, 0, 1, 1, 1, 0,
3574 0, 1, 1, 1, 0, 0, 0,
3575 0, 0, 0, 0, 0, 0, 0,
3576 0, 1, 1, 1, 0, 0, 0,
3577 0, 0, 1, 1, 0, 0, 0,
3578 0, 0, 1, 1, 0, 0, 0,
3579 0, 0, 1, 1, 0, 0, 0,
3580 0, 0, 1, 1, 0, 0, 0,
3581 1, 1, 1, 1, 1, 1, 0,
3582 0, 0, 0, 0, 0, 0, 0,
3583 0, 0, 0, 0, 0, 0, 0,
3584
3585 /* Char 238 */
3586 0, 0, 0, 0, 0, 0, 0,
3587 0, 0, 0, 0, 0, 0, 0,
3588 0, 1, 1, 1, 0, 0, 0,
3589 1, 1, 0, 1, 1, 0, 0,
3590 0, 0, 0, 0, 0, 0, 0,
3591 0, 1, 1, 1, 0, 0, 0,
3592 0, 0, 1, 1, 0, 0, 0,
3593 0, 0, 1, 1, 0, 0, 0,
3594 0, 0, 1, 1, 0, 0, 0,
3595 0, 0, 1, 1, 0, 0, 0,
3596 1, 1, 1, 1, 1, 1, 0,
3597 0, 0, 0, 0, 0, 0, 0,
3598 0, 0, 0, 0, 0, 0, 0,
3599
3600 /* Char 239 */
3601 0, 0, 0, 0, 0, 0, 0,
3602 0, 0, 0, 0, 0, 1, 1,
3603 0, 0, 0, 1, 1, 0, 1,
3604 0, 0, 0, 1, 1, 1, 0,
3605 0, 0, 0, 1, 1, 0, 0,
3606 0, 1, 1, 1, 1, 0, 0,
3607 1, 1, 0, 1, 1, 0, 0,
3608 1, 1, 0, 1, 1, 0, 0,
3609 1, 1, 0, 1, 1, 0, 0,
3610 1, 1, 0, 1, 1, 0, 0,
3611 0, 1, 1, 1, 1, 0, 0,
3612 0, 0, 0, 0, 0, 0, 0,
3613 0, 0, 0, 0, 0, 0, 0,
3614
3615 /* Char 240 */
3616 0, 0, 0, 0, 0, 0, 0,
3617 0, 0, 0, 0, 0, 0, 0,
3618 0, 0, 0, 0, 1, 1, 0,
3619 0, 0, 0, 1, 1, 1, 1,
3620 0, 0, 0, 0, 1, 1, 0,
3621 0, 1, 1, 1, 1, 1, 0,
3622 1, 1, 0, 0, 1, 1, 0,
3623 1, 1, 0, 0, 1, 1, 0,
3624 1, 1, 0, 0, 1, 1, 0,
3625 1, 1, 0, 0, 1, 1, 0,
3626 0, 1, 1, 1, 1, 1, 0,
3627 0, 0, 0, 0, 0, 0, 0,
3628 0, 0, 0, 0, 0, 0, 0,
3629
3630 /* Char 241 */
3631 0, 0, 0, 0, 0, 0, 0,
3632 0, 0, 0, 0, 0, 0, 0,
3633 0, 0, 0, 1, 1, 1, 0,
3634 0, 1, 1, 1, 0, 0, 0,
3635 0, 0, 0, 0, 0, 0, 0,
3636 1, 1, 1, 1, 1, 0, 0,
3637 1, 1, 0, 0, 1, 1, 0,
3638 1, 1, 0, 0, 1, 1, 0,
3639 1, 1, 0, 0, 1, 1, 0,
3640 1, 1, 0, 0, 1, 1, 0,
3641 1, 1, 0, 0, 1, 1, 0,
3642 0, 0, 0, 0, 0, 0, 0,
3643 0, 0, 0, 0, 0, 0, 0,
3644
3645 /* Char 242 */
3646 0, 0, 0, 0, 0, 0, 0,
3647 0, 0, 0, 0, 0, 0, 0,
3648 0, 1, 1, 0, 1, 1, 0,
3649 0, 0, 1, 1, 1, 0, 0,
3650 0, 0, 0, 0, 0, 0, 0,
3651 1, 1, 1, 1, 1, 0, 0,
3652 1, 1, 0, 0, 1, 1, 0,
3653 1, 1, 0, 0, 1, 1, 0,
3654 1, 1, 0, 0, 1, 1, 0,
3655 1, 1, 0, 0, 1, 1, 0,
3656 1, 1, 0, 0, 1, 1, 0,
3657 0, 0, 0, 0, 0, 0, 0,
3658 0, 0, 0, 0, 0, 0, 0,
3659
3660 /* Char 243 */
3661 0, 0, 0, 0, 0, 0, 0,
3662 0, 0, 0, 0, 0, 0, 0,
3663 0, 0, 0, 1, 1, 1, 0,
3664 0, 1, 1, 1, 0, 0, 0,
3665 0, 0, 0, 0, 0, 0, 0,
3666 0, 1, 1, 1, 1, 0, 0,
3667 1, 1, 0, 0, 1, 1, 0,
3668 1, 1, 0, 0, 1, 1, 0,
3669 1, 1, 0, 0, 1, 1, 0,
3670 1, 1, 0, 0, 1, 1, 0,
3671 0, 1, 1, 1, 1, 0, 0,
3672 0, 0, 0, 0, 0, 0, 0,
3673 0, 0, 0, 0, 0, 0, 0,
3674
3675 /* Char 244 */
3676 0, 0, 0, 0, 0, 0, 0,
3677 0, 0, 0, 0, 0, 0, 0,
3678 0, 0, 1, 1, 1, 0, 0,
3679 0, 1, 1, 0, 1, 1, 0,
3680 0, 0, 0, 0, 0, 0, 0,
3681 0, 1, 1, 1, 1, 0, 0,
3682 1, 1, 0, 0, 1, 1, 0,
3683 1, 1, 0, 0, 1, 1, 0,
3684 1, 1, 0, 0, 1, 1, 0,
3685 1, 1, 0, 0, 1, 1, 0,
3686 0, 1, 1, 1, 1, 0, 0,
3687 0, 0, 0, 0, 0, 0, 0,
3688 0, 0, 0, 0, 0, 0, 0,
3689
3690 /* Char 245 */
3691 0, 0, 0, 0, 0, 0, 0,
3692 0, 0, 0, 0, 0, 0, 0,
3693 0, 1, 1, 0, 0, 1, 1,
3694 1, 1, 0, 0, 1, 1, 0,
3695 0, 0, 0, 0, 0, 0, 0,
3696 0, 1, 1, 1, 1, 0, 0,
3697 1, 1, 0, 0, 1, 1, 0,
3698 1, 1, 0, 0, 1, 1, 0,
3699 1, 1, 0, 0, 1, 1, 0,
3700 1, 1, 0, 0, 1, 1, 0,
3701 0, 1, 1, 1, 1, 0, 0,
3702 0, 0, 0, 0, 0, 0, 0,
3703 0, 0, 0, 0, 0, 0, 0,
3704
3705 /* Char 246 */
3706 0, 0, 0, 0, 0, 0, 0,
3707 0, 0, 0, 0, 0, 0, 0,
3708 0, 1, 1, 0, 1, 1, 0,
3709 0, 0, 0, 0, 0, 0, 0,
3710 0, 0, 0, 0, 0, 0, 0,
3711 0, 1, 1, 1, 1, 0, 0,
3712 1, 1, 0, 0, 1, 1, 0,
3713 1, 1, 0, 0, 1, 1, 0,
3714 1, 1, 0, 0, 1, 1, 0,
3715 1, 1, 0, 0, 1, 1, 0,
3716 0, 1, 1, 1, 1, 0, 0,
3717 0, 0, 0, 0, 0, 0, 0,
3718 0, 0, 0, 0, 0, 0, 0,
3719
3720 /* Char 247 */
3721 0, 0, 0, 0, 0, 0, 0,
3722 0, 0, 0, 0, 0, 0, 0,
3723 0, 0, 0, 0, 0, 0, 0,
3724 0, 0, 1, 1, 0, 0, 0,
3725 0, 0, 1, 1, 0, 0, 0,
3726 0, 0, 0, 0, 0, 0, 0,
3727 1, 1, 1, 1, 1, 1, 0,
3728 0, 0, 0, 0, 0, 0, 0,
3729 0, 0, 1, 1, 0, 0, 0,
3730 0, 0, 1, 1, 0, 0, 0,
3731 0, 0, 0, 0, 0, 0, 0,
3732 0, 0, 0, 0, 0, 0, 0,
3733 0, 0, 0, 0, 0, 0, 0,
3734
3735 /* Char 248 */
3736 0, 0, 0, 0, 0, 0, 0,
3737 0, 0, 0, 0, 0, 0, 0,
3738 0, 1, 1, 0, 1, 1, 0,
3739 0, 0, 1, 1, 1, 0, 0,
3740 0, 0, 0, 0, 0, 0, 0,
3741 1, 1, 1, 1, 1, 0, 0,
3742 1, 1, 0, 0, 1, 1, 0,
3743 1, 1, 0, 0, 0, 0, 0,
3744 1, 1, 0, 0, 0, 0, 0,
3745 1, 1, 0, 0, 0, 0, 0,
3746 1, 1, 0, 0, 0, 0, 0,
3747 0, 0, 0, 0, 0, 0, 0,
3748 0, 0, 0, 0, 0, 0, 0,
3749
3750 /* Char 249 */
3751 0, 0, 0, 0, 0, 0, 0,
3752 0, 0, 1, 1, 0, 0, 0,
3753 0, 1, 0, 0, 1, 0, 0,
3754 0, 0, 1, 1, 0, 0, 0,
3755 0, 0, 0, 0, 0, 0, 0,
3756 1, 1, 0, 0, 1, 1, 0,
3757 1, 1, 0, 0, 1, 1, 0,
3758 1, 1, 0, 0, 1, 1, 0,
3759 1, 1, 0, 0, 1, 1, 0,
3760 1, 1, 0, 0, 1, 1, 0,
3761 0, 1, 1, 1, 1, 1, 0,
3762 0, 0, 0, 0, 0, 0, 0,
3763 0, 0, 0, 0, 0, 0, 0,
3764
3765 /* Char 250 */
3766 0, 0, 0, 0, 0, 0, 0,
3767 0, 0, 0, 0, 0, 0, 0,
3768 0, 0, 0, 1, 1, 1, 0,
3769 0, 1, 1, 1, 0, 0, 0,
3770 0, 0, 0, 0, 0, 0, 0,
3771 1, 1, 0, 0, 1, 1, 0,
3772 1, 1, 0, 0, 1, 1, 0,
3773 1, 1, 0, 0, 1, 1, 0,
3774 1, 1, 0, 0, 1, 1, 0,
3775 1, 1, 0, 0, 1, 1, 0,
3776 0, 1, 1, 1, 1, 1, 0,
3777 0, 0, 0, 0, 0, 0, 0,
3778 0, 0, 0, 0, 0, 0, 0,
3779
3780 /* Char 251 */
3781 0, 0, 0, 0, 0, 0, 0,
3782 0, 0, 0, 0, 0, 0, 0,
3783 0, 1, 1, 0, 0, 1, 1,
3784 1, 1, 0, 0, 1, 1, 0,
3785 0, 0, 0, 0, 0, 0, 0,
3786 1, 1, 0, 0, 1, 1, 0,
3787 1, 1, 0, 0, 1, 1, 0,
3788 1, 1, 0, 0, 1, 1, 0,
3789 1, 1, 0, 0, 1, 1, 0,
3790 1, 1, 0, 0, 1, 1, 0,
3791 0, 1, 1, 1, 1, 1, 0,
3792 0, 0, 0, 0, 0, 0, 0,
3793 0, 0, 0, 0, 0, 0, 0,
3794
3795 /* Char 252 */
3796 0, 0, 0, 0, 0, 0, 0,
3797 0, 0, 0, 0, 0, 0, 0,
3798 1, 1, 0, 0, 1, 1, 0,
3799 0, 0, 0, 0, 0, 0, 0,
3800 0, 0, 0, 0, 0, 0, 0,
3801 1, 1, 0, 0, 1, 1, 0,
3802 1, 1, 0, 0, 1, 1, 0,
3803 1, 1, 0, 0, 1, 1, 0,
3804 1, 1, 0, 0, 1, 1, 0,
3805 1, 1, 0, 0, 1, 1, 0,
3806 0, 1, 1, 1, 1, 1, 0,
3807 0, 0, 0, 0, 0, 0, 0,
3808 0, 0, 0, 0, 0, 0, 0,
3809
3810 /* Char 253 */
3811 0, 0, 0, 0, 0, 0, 0,
3812 0, 0, 0, 0, 0, 0, 0,
3813 0, 0, 0, 1, 1, 1, 0,
3814 0, 1, 1, 1, 0, 0, 0,
3815 0, 0, 0, 0, 0, 0, 0,
3816 1, 1, 0, 0, 1, 1, 0,
3817 1, 1, 0, 0, 1, 1, 0,
3818 1, 1, 0, 0, 1, 1, 0,
3819 1, 1, 0, 0, 1, 1, 0,
3820 0, 1, 1, 1, 1, 1, 0,
3821 0, 0, 0, 0, 1, 1, 0,
3822 0, 0, 0, 0, 1, 1, 0,
3823 0, 1, 1, 1, 1, 0, 0,
3824
3825 /* Char 254 */
3826 0, 0, 0, 0, 0, 0, 0,
3827 0, 0, 0, 0, 0, 0, 0,
3828 0, 0, 0, 0, 0, 0, 0,
3829 0, 1, 1, 0, 0, 0, 0,
3830 0, 1, 1, 0, 0, 0, 0,
3831 1, 1, 1, 1, 1, 0, 0,
3832 0, 1, 1, 0, 0, 0, 0,
3833 0, 1, 1, 0, 0, 0, 0,
3834 0, 1, 1, 0, 0, 0, 0,
3835 0, 1, 1, 0, 1, 1, 0,
3836 0, 0, 1, 1, 1, 0, 0,
3837 0, 0, 1, 1, 0, 0, 0,
3838 0, 1, 1, 0, 0, 0, 0,
3839
3840 /* Char 255 */
3841 0, 0, 0, 0, 0, 0, 0,
3842 0, 0, 0, 0, 0, 0, 0,
3843 0, 0, 1, 1, 0, 0, 0,
3844 0, 0, 1, 1, 0, 0, 0,
3845 0, 0, 0, 0, 0, 0, 0,
3846 0, 0, 0, 0, 0, 0, 0,
3847 0, 0, 0, 0, 0, 0, 0,
3848 0, 0, 0, 0, 0, 0, 0,
3849 0, 0, 0, 0, 0, 0, 0,
3850 0, 0, 0, 0, 0, 0, 0,
3851 0, 0, 0, 0, 0, 0, 0,
3852 0, 0, 0, 0, 0, 0, 0,
3853 0, 0, 0, 0, 0, 0, 0,
3854
3855
3856 };
3857
3858 gdFont gdFontMediumBoldRep = {
3859 256,
3860 0,
3861 7,
3862 13,
3863 gdFontMediumBoldData
3864 };
3865
3866 BGD_EXPORT_DATA_IMPL gdFontPtr gdFontMediumBold = &gdFontMediumBoldRep;
3867
3868 BGD_DECLARE(gdFontPtr)
3869 gdFontGetMediumBold (void)
3870 {
3871 return gdFontMediumBold;
3872 }
3873
3874 /* This file has not been truncated. */
0 #ifdef __cplusplus
1 extern "C" {
2 #endif
3
4
5 #ifndef _GDFONTMB_H_
6 #define _GDFONTMB_H_ 1
7
8 #ifdef __cplusplus
9 extern "C"
10 {
11 #endif
12
13 /*
14 This is a header file for gd font, generated using
15 bdftogd version 0.5 by Jan Pazdziora, adelton@fi.muni.cz
16 from bdf font
17 -misc-fixed-bold-r-normal-sans-13-94-100-100-c-70-iso8859-2
18 at Thu Jan 8 13:54:57 1998.
19 No copyright info was found in the original bdf.
20 */
21
22
23 #include "gd.h"
24
25 BGD_EXPORT_DATA_PROT gdFontPtr gdFontMediumBold;
26 BGD_DECLARE(gdFontPtr) gdFontGetMediumBold(void);
27
28 #ifdef __cplusplus
29 }
30 #endif
31
32 #endif
33
34 #ifdef __cplusplus
35 }
36 #endif
0 /*
1 This is a header file for gd font, generated using
2 bdftogd version 0.5 by Jan Pazdziora, adelton@fi.muni.cz
3 from bdf font
4 -misc-fixed-medium-r-semicondensed-sans-12-116-75-75-c-60-iso8859-2
5 at Thu Jan 8 14:13:20 1998.
6 No copyright info was found in the original bdf.
7 */
8
9
10 #include "gdfonts.h"
11
12 char gdFontSmallData[] = {
13 /* Char 0 */
14 0, 0, 0, 0, 0, 0,
15 0, 0, 0, 0, 0, 0,
16 0, 0, 0, 0, 0, 0,
17 0, 0, 0, 0, 0, 0,
18 0, 0, 0, 0, 0, 0,
19 0, 0, 0, 0, 0, 0,
20 0, 0, 0, 0, 0, 0,
21 0, 0, 0, 0, 0, 0,
22 0, 0, 0, 0, 0, 0,
23 0, 0, 0, 0, 0, 0,
24 0, 0, 0, 0, 0, 0,
25 0, 0, 0, 0, 0, 0,
26 0, 0, 0, 0, 0, 0,
27
28 /* Char 1 */
29 0, 0, 0, 0, 0, 0,
30 0, 0, 0, 0, 0, 0,
31 0, 0, 0, 0, 0, 0,
32 0, 0, 0, 0, 0, 0,
33 0, 0, 1, 0, 0, 0,
34 0, 1, 1, 1, 0, 0,
35 1, 1, 1, 1, 1, 0,
36 0, 1, 1, 1, 0, 0,
37 0, 0, 1, 0, 0, 0,
38 0, 0, 0, 0, 0, 0,
39 0, 0, 0, 0, 0, 0,
40 0, 0, 0, 0, 0, 0,
41 0, 0, 0, 0, 0, 0,
42
43 /* Char 2 */
44 0, 0, 0, 0, 0, 0,
45 0, 1, 0, 1, 0, 1,
46 1, 0, 1, 0, 1, 0,
47 0, 1, 0, 1, 0, 1,
48 1, 0, 1, 0, 1, 0,
49 0, 1, 0, 1, 0, 1,
50 1, 0, 1, 0, 1, 0,
51 0, 1, 0, 1, 0, 1,
52 1, 0, 1, 0, 1, 0,
53 0, 1, 0, 1, 0, 1,
54 1, 0, 1, 0, 1, 0,
55 0, 1, 0, 1, 0, 1,
56 1, 0, 1, 0, 1, 0,
57
58 /* Char 3 */
59 0, 0, 0, 0, 0, 0,
60 0, 0, 0, 0, 0, 0,
61 0, 0, 0, 0, 0, 0,
62 1, 0, 1, 0, 0, 0,
63 1, 0, 1, 0, 0, 0,
64 1, 1, 1, 0, 0, 0,
65 1, 0, 1, 0, 0, 0,
66 1, 0, 1, 0, 0, 0,
67 0, 0, 1, 1, 1, 0,
68 0, 0, 0, 1, 0, 0,
69 0, 0, 0, 1, 0, 0,
70 0, 0, 0, 1, 0, 0,
71 0, 0, 0, 0, 0, 0,
72
73 /* Char 4 */
74 0, 0, 0, 0, 0, 0,
75 0, 0, 0, 0, 0, 0,
76 0, 0, 0, 0, 0, 0,
77 1, 1, 1, 0, 0, 0,
78 1, 0, 0, 0, 0, 0,
79 1, 1, 0, 0, 0, 0,
80 1, 0, 0, 0, 0, 0,
81 1, 0, 1, 1, 1, 0,
82 0, 0, 1, 0, 0, 0,
83 0, 0, 1, 1, 0, 0,
84 0, 0, 1, 0, 0, 0,
85 0, 0, 1, 0, 0, 0,
86 0, 0, 0, 0, 0, 0,
87
88 /* Char 5 */
89 0, 0, 0, 0, 0, 0,
90 0, 0, 0, 0, 0, 0,
91 0, 0, 0, 0, 0, 0,
92 0, 1, 1, 1, 0, 0,
93 1, 0, 0, 0, 0, 0,
94 1, 0, 0, 0, 0, 0,
95 0, 1, 1, 1, 0, 0,
96 0, 1, 1, 1, 0, 0,
97 0, 1, 0, 0, 1, 0,
98 0, 1, 1, 1, 0, 0,
99 0, 1, 0, 1, 0, 0,
100 0, 1, 0, 0, 1, 0,
101 0, 0, 0, 0, 0, 0,
102
103 /* Char 6 */
104 0, 0, 0, 0, 0, 0,
105 0, 0, 0, 0, 0, 0,
106 0, 0, 0, 0, 0, 0,
107 1, 0, 0, 0, 0, 0,
108 1, 0, 0, 0, 0, 0,
109 1, 0, 0, 0, 0, 0,
110 1, 1, 1, 0, 0, 0,
111 0, 0, 1, 1, 1, 0,
112 0, 0, 1, 0, 0, 0,
113 0, 0, 1, 1, 0, 0,
114 0, 0, 1, 0, 0, 0,
115 0, 0, 1, 0, 0, 0,
116 0, 0, 0, 0, 0, 0,
117
118 /* Char 7 */
119 0, 0, 0, 0, 0, 0,
120 0, 0, 0, 0, 0, 0,
121 0, 1, 1, 0, 0, 0,
122 1, 0, 0, 1, 0, 0,
123 1, 0, 0, 1, 0, 0,
124 0, 1, 1, 0, 0, 0,
125 0, 0, 0, 0, 0, 0,
126 0, 0, 0, 0, 0, 0,
127 0, 0, 0, 0, 0, 0,
128 0, 0, 0, 0, 0, 0,
129 0, 0, 0, 0, 0, 0,
130 0, 0, 0, 0, 0, 0,
131 0, 0, 0, 0, 0, 0,
132
133 /* Char 8 */
134 0, 0, 0, 0, 0, 0,
135 0, 0, 0, 0, 0, 0,
136 0, 0, 0, 0, 0, 0,
137 0, 0, 0, 0, 0, 0,
138 0, 0, 1, 0, 0, 0,
139 0, 0, 1, 0, 0, 0,
140 1, 1, 1, 1, 1, 0,
141 0, 0, 1, 0, 0, 0,
142 0, 0, 1, 0, 0, 0,
143 0, 0, 0, 0, 0, 0,
144 1, 1, 1, 1, 1, 0,
145 0, 0, 0, 0, 0, 0,
146 0, 0, 0, 0, 0, 0,
147
148 /* Char 9 */
149 0, 0, 0, 0, 0, 0,
150 0, 0, 0, 0, 0, 0,
151 0, 0, 0, 0, 0, 0,
152 1, 0, 0, 0, 1, 0,
153 1, 1, 0, 0, 1, 0,
154 1, 0, 1, 0, 1, 0,
155 1, 0, 0, 1, 1, 0,
156 1, 0, 0, 0, 1, 0,
157 0, 0, 1, 0, 0, 0,
158 0, 0, 1, 0, 0, 0,
159 0, 0, 1, 0, 0, 0,
160 0, 0, 1, 1, 1, 1,
161 0, 0, 0, 0, 0, 0,
162
163 /* Char 10 */
164 0, 0, 0, 0, 0, 0,
165 0, 0, 0, 0, 0, 0,
166 0, 0, 0, 0, 0, 0,
167 1, 0, 0, 0, 1, 0,
168 1, 0, 0, 0, 1, 0,
169 0, 1, 0, 1, 0, 0,
170 0, 0, 1, 0, 0, 0,
171 0, 0, 0, 0, 0, 0,
172 1, 1, 1, 1, 1, 0,
173 0, 0, 1, 0, 0, 0,
174 0, 0, 1, 0, 0, 0,
175 0, 0, 1, 0, 0, 0,
176 0, 0, 0, 0, 0, 0,
177
178 /* Char 11 */
179 0, 0, 1, 0, 0, 0,
180 0, 0, 1, 0, 0, 0,
181 0, 0, 1, 0, 0, 0,
182 0, 0, 1, 0, 0, 0,
183 0, 0, 1, 0, 0, 0,
184 0, 0, 1, 0, 0, 0,
185 1, 1, 1, 0, 0, 0,
186 0, 0, 0, 0, 0, 0,
187 0, 0, 0, 0, 0, 0,
188 0, 0, 0, 0, 0, 0,
189 0, 0, 0, 0, 0, 0,
190 0, 0, 0, 0, 0, 0,
191 0, 0, 0, 0, 0, 0,
192
193 /* Char 12 */
194 0, 0, 0, 0, 0, 0,
195 0, 0, 0, 0, 0, 0,
196 0, 0, 0, 0, 0, 0,
197 0, 0, 0, 0, 0, 0,
198 0, 0, 0, 0, 0, 0,
199 0, 0, 0, 0, 0, 0,
200 1, 1, 1, 0, 0, 0,
201 0, 0, 1, 0, 0, 0,
202 0, 0, 1, 0, 0, 0,
203 0, 0, 1, 0, 0, 0,
204 0, 0, 1, 0, 0, 0,
205 0, 0, 1, 0, 0, 0,
206 0, 0, 1, 0, 0, 0,
207
208 /* Char 13 */
209 0, 0, 0, 0, 0, 0,
210 0, 0, 0, 0, 0, 0,
211 0, 0, 0, 0, 0, 0,
212 0, 0, 0, 0, 0, 0,
213 0, 0, 0, 0, 0, 0,
214 0, 0, 0, 0, 0, 0,
215 0, 0, 1, 1, 1, 1,
216 0, 0, 1, 0, 0, 0,
217 0, 0, 1, 0, 0, 0,
218 0, 0, 1, 0, 0, 0,
219 0, 0, 1, 0, 0, 0,
220 0, 0, 1, 0, 0, 0,
221 0, 0, 1, 0, 0, 0,
222
223 /* Char 14 */
224 0, 0, 1, 0, 0, 0,
225 0, 0, 1, 0, 0, 0,
226 0, 0, 1, 0, 0, 0,
227 0, 0, 1, 0, 0, 0,
228 0, 0, 1, 0, 0, 0,
229 0, 0, 1, 0, 0, 0,
230 0, 0, 1, 1, 1, 1,
231 0, 0, 0, 0, 0, 0,
232 0, 0, 0, 0, 0, 0,
233 0, 0, 0, 0, 0, 0,
234 0, 0, 0, 0, 0, 0,
235 0, 0, 0, 0, 0, 0,
236 0, 0, 0, 0, 0, 0,
237
238 /* Char 15 */
239 0, 0, 1, 0, 0, 0,
240 0, 0, 1, 0, 0, 0,
241 0, 0, 1, 0, 0, 0,
242 0, 0, 1, 0, 0, 0,
243 0, 0, 1, 0, 0, 0,
244 0, 0, 1, 0, 0, 0,
245 1, 1, 1, 1, 1, 1,
246 0, 0, 1, 0, 0, 0,
247 0, 0, 1, 0, 0, 0,
248 0, 0, 1, 0, 0, 0,
249 0, 0, 1, 0, 0, 0,
250 0, 0, 1, 0, 0, 0,
251 0, 0, 1, 0, 0, 0,
252
253 /* Char 16 */
254 0, 0, 0, 0, 0, 0,
255 0, 0, 0, 0, 0, 0,
256 1, 1, 1, 1, 1, 1,
257 0, 0, 0, 0, 0, 0,
258 0, 0, 0, 0, 0, 0,
259 0, 0, 0, 0, 0, 0,
260 0, 0, 0, 0, 0, 0,
261 0, 0, 0, 0, 0, 0,
262 0, 0, 0, 0, 0, 0,
263 0, 0, 0, 0, 0, 0,
264 0, 0, 0, 0, 0, 0,
265 0, 0, 0, 0, 0, 0,
266 0, 0, 0, 0, 0, 0,
267
268 /* Char 17 */
269 0, 0, 0, 0, 0, 0,
270 0, 0, 0, 0, 0, 0,
271 0, 0, 0, 0, 0, 0,
272 0, 0, 0, 0, 0, 0,
273 1, 1, 1, 1, 1, 1,
274 0, 0, 0, 0, 0, 0,
275 0, 0, 0, 0, 0, 0,
276 0, 0, 0, 0, 0, 0,
277 0, 0, 0, 0, 0, 0,
278 0, 0, 0, 0, 0, 0,
279 0, 0, 0, 0, 0, 0,
280 0, 0, 0, 0, 0, 0,
281 0, 0, 0, 0, 0, 0,
282
283 /* Char 18 */
284 0, 0, 0, 0, 0, 0,
285 0, 0, 0, 0, 0, 0,
286 0, 0, 0, 0, 0, 0,
287 0, 0, 0, 0, 0, 0,
288 0, 0, 0, 0, 0, 0,
289 0, 0, 0, 0, 0, 0,
290 1, 1, 1, 1, 1, 1,
291 0, 0, 0, 0, 0, 0,
292 0, 0, 0, 0, 0, 0,
293 0, 0, 0, 0, 0, 0,
294 0, 0, 0, 0, 0, 0,
295 0, 0, 0, 0, 0, 0,
296 0, 0, 0, 0, 0, 0,
297
298 /* Char 19 */
299 0, 0, 0, 0, 0, 0,
300 0, 0, 0, 0, 0, 0,
301 0, 0, 0, 0, 0, 0,
302 0, 0, 0, 0, 0, 0,
303 0, 0, 0, 0, 0, 0,
304 0, 0, 0, 0, 0, 0,
305 0, 0, 0, 0, 0, 0,
306 0, 0, 0, 0, 0, 0,
307 1, 1, 1, 1, 1, 1,
308 0, 0, 0, 0, 0, 0,
309 0, 0, 0, 0, 0, 0,
310 0, 0, 0, 0, 0, 0,
311 0, 0, 0, 0, 0, 0,
312
313 /* Char 20 */
314 0, 0, 0, 0, 0, 0,
315 0, 0, 0, 0, 0, 0,
316 0, 0, 0, 0, 0, 0,
317 0, 0, 0, 0, 0, 0,
318 0, 0, 0, 0, 0, 0,
319 0, 0, 0, 0, 0, 0,
320 0, 0, 0, 0, 0, 0,
321 0, 0, 0, 0, 0, 0,
322 0, 0, 0, 0, 0, 0,
323 0, 0, 0, 0, 0, 0,
324 1, 1, 1, 1, 1, 1,
325 0, 0, 0, 0, 0, 0,
326 0, 0, 0, 0, 0, 0,
327
328 /* Char 21 */
329 0, 0, 1, 0, 0, 0,
330 0, 0, 1, 0, 0, 0,
331 0, 0, 1, 0, 0, 0,
332 0, 0, 1, 0, 0, 0,
333 0, 0, 1, 0, 0, 0,
334 0, 0, 1, 0, 0, 0,
335 0, 0, 1, 1, 1, 1,
336 0, 0, 1, 0, 0, 0,
337 0, 0, 1, 0, 0, 0,
338 0, 0, 1, 0, 0, 0,
339 0, 0, 1, 0, 0, 0,
340 0, 0, 1, 0, 0, 0,
341 0, 0, 1, 0, 0, 0,
342
343 /* Char 22 */
344 0, 0, 1, 0, 0, 0,
345 0, 0, 1, 0, 0, 0,
346 0, 0, 1, 0, 0, 0,
347 0, 0, 1, 0, 0, 0,
348 0, 0, 1, 0, 0, 0,
349 0, 0, 1, 0, 0, 0,
350 1, 1, 1, 0, 0, 0,
351 0, 0, 1, 0, 0, 0,
352 0, 0, 1, 0, 0, 0,
353 0, 0, 1, 0, 0, 0,
354 0, 0, 1, 0, 0, 0,
355 0, 0, 1, 0, 0, 0,
356 0, 0, 1, 0, 0, 0,
357
358 /* Char 23 */
359 0, 0, 1, 0, 0, 0,
360 0, 0, 1, 0, 0, 0,
361 0, 0, 1, 0, 0, 0,
362 0, 0, 1, 0, 0, 0,
363 0, 0, 1, 0, 0, 0,
364 0, 0, 1, 0, 0, 0,
365 1, 1, 1, 1, 1, 1,
366 0, 0, 0, 0, 0, 0,
367 0, 0, 0, 0, 0, 0,
368 0, 0, 0, 0, 0, 0,
369 0, 0, 0, 0, 0, 0,
370 0, 0, 0, 0, 0, 0,
371 0, 0, 0, 0, 0, 0,
372
373 /* Char 24 */
374 0, 0, 0, 0, 0, 0,
375 0, 0, 0, 0, 0, 0,
376 0, 0, 0, 0, 0, 0,
377 0, 0, 0, 0, 0, 0,
378 0, 0, 0, 0, 0, 0,
379 0, 0, 0, 0, 0, 0,
380 1, 1, 1, 1, 1, 1,
381 0, 0, 1, 0, 0, 0,
382 0, 0, 1, 0, 0, 0,
383 0, 0, 1, 0, 0, 0,
384 0, 0, 1, 0, 0, 0,
385 0, 0, 1, 0, 0, 0,
386 0, 0, 1, 0, 0, 0,
387
388 /* Char 25 */
389 0, 0, 1, 0, 0, 0,
390 0, 0, 1, 0, 0, 0,
391 0, 0, 1, 0, 0, 0,
392 0, 0, 1, 0, 0, 0,
393 0, 0, 1, 0, 0, 0,
394 0, 0, 1, 0, 0, 0,
395 0, 0, 1, 0, 0, 0,
396 0, 0, 1, 0, 0, 0,
397 0, 0, 1, 0, 0, 0,
398 0, 0, 1, 0, 0, 0,
399 0, 0, 1, 0, 0, 0,
400 0, 0, 1, 0, 0, 0,
401 0, 0, 1, 0, 0, 0,
402
403 /* Char 26 */
404 0, 0, 0, 0, 0, 0,
405 0, 0, 0, 0, 0, 0,
406 0, 0, 0, 0, 0, 0,
407 0, 0, 0, 0, 1, 0,
408 0, 0, 0, 1, 0, 0,
409 0, 0, 1, 0, 0, 0,
410 0, 1, 0, 0, 0, 0,
411 0, 0, 1, 0, 0, 0,
412 0, 0, 0, 1, 0, 0,
413 0, 0, 0, 0, 1, 0,
414 0, 1, 1, 1, 1, 0,
415 0, 0, 0, 0, 0, 0,
416 0, 0, 0, 0, 0, 0,
417
418 /* Char 27 */
419 0, 0, 0, 0, 0, 0,
420 0, 0, 0, 0, 0, 0,
421 0, 0, 0, 0, 0, 0,
422 1, 0, 0, 0, 0, 0,
423 0, 1, 0, 0, 0, 0,
424 0, 0, 1, 0, 0, 0,
425 0, 0, 0, 1, 0, 0,
426 0, 0, 1, 0, 0, 0,
427 0, 1, 0, 0, 0, 0,
428 1, 0, 0, 0, 0, 0,
429 1, 1, 1, 1, 0, 0,
430 0, 0, 0, 0, 0, 0,
431 0, 0, 0, 0, 0, 0,
432
433 /* Char 28 */
434 0, 0, 0, 0, 0, 0,
435 0, 0, 0, 0, 0, 0,
436 0, 0, 0, 0, 0, 0,
437 0, 0, 0, 0, 0, 0,
438 0, 0, 0, 0, 0, 0,
439 1, 1, 1, 1, 1, 0,
440 0, 1, 0, 1, 0, 0,
441 0, 1, 0, 1, 0, 0,
442 0, 1, 0, 1, 0, 0,
443 0, 1, 0, 1, 0, 0,
444 1, 0, 0, 1, 0, 0,
445 0, 0, 0, 0, 0, 0,
446 0, 0, 0, 0, 0, 0,
447
448 /* Char 29 */
449 0, 0, 0, 0, 0, 0,
450 0, 0, 0, 0, 0, 0,
451 0, 0, 0, 0, 0, 0,
452 0, 0, 0, 0, 0, 0,
453 0, 0, 0, 0, 0, 0,
454 0, 0, 0, 0, 1, 0,
455 1, 1, 1, 1, 1, 0,
456 0, 0, 1, 0, 0, 0,
457 1, 1, 1, 1, 1, 0,
458 1, 0, 0, 0, 0, 0,
459 0, 0, 0, 0, 0, 0,
460 0, 0, 0, 0, 0, 0,
461 0, 0, 0, 0, 0, 0,
462
463 /* Char 30 */
464 0, 0, 0, 0, 0, 0,
465 0, 0, 0, 0, 0, 0,
466 0, 0, 0, 0, 0, 0,
467 0, 0, 1, 1, 0, 0,
468 0, 1, 0, 0, 1, 0,
469 0, 1, 0, 0, 0, 0,
470 1, 1, 1, 0, 0, 0,
471 0, 1, 0, 0, 0, 0,
472 0, 1, 0, 0, 0, 0,
473 0, 1, 0, 0, 1, 0,
474 1, 0, 1, 1, 0, 0,
475 0, 0, 0, 0, 0, 0,
476 0, 0, 0, 0, 0, 0,
477
478 /* Char 31 */
479 0, 0, 0, 0, 0, 0,
480 0, 0, 0, 0, 0, 0,
481 0, 0, 0, 0, 0, 0,
482 0, 0, 0, 0, 0, 0,
483 0, 0, 0, 0, 0, 0,
484 0, 0, 0, 0, 0, 0,
485 0, 0, 1, 0, 0, 0,
486 0, 0, 0, 0, 0, 0,
487 0, 0, 0, 0, 0, 0,
488 0, 0, 0, 0, 0, 0,
489 0, 0, 0, 0, 0, 0,
490 0, 0, 0, 0, 0, 0,
491 0, 0, 0, 0, 0, 0,
492
493 /* Char 32 */
494 0, 0, 0, 0, 0, 0,
495 0, 0, 0, 0, 0, 0,
496 0, 0, 0, 0, 0, 0,
497 0, 0, 0, 0, 0, 0,
498 0, 0, 0, 0, 0, 0,
499 0, 0, 0, 0, 0, 0,
500 0, 0, 0, 0, 0, 0,
501 0, 0, 0, 0, 0, 0,
502 0, 0, 0, 0, 0, 0,
503 0, 0, 0, 0, 0, 0,
504 0, 0, 0, 0, 0, 0,
505 0, 0, 0, 0, 0, 0,
506 0, 0, 0, 0, 0, 0,
507
508 /* Char 33 */
509 0, 0, 0, 0, 0, 0,
510 0, 0, 0, 0, 0, 0,
511 0, 0, 0, 0, 0, 0,
512 0, 0, 1, 0, 0, 0,
513 0, 0, 1, 0, 0, 0,
514 0, 0, 1, 0, 0, 0,
515 0, 0, 1, 0, 0, 0,
516 0, 0, 1, 0, 0, 0,
517 0, 0, 1, 0, 0, 0,
518 0, 0, 0, 0, 0, 0,
519 0, 0, 1, 0, 0, 0,
520 0, 0, 0, 0, 0, 0,
521 0, 0, 0, 0, 0, 0,
522
523 /* Char 34 */
524 0, 0, 0, 0, 0, 0,
525 0, 0, 0, 0, 0, 0,
526 0, 0, 0, 0, 0, 0,
527 0, 1, 0, 1, 0, 0,
528 0, 1, 0, 1, 0, 0,
529 0, 1, 0, 1, 0, 0,
530 0, 0, 0, 0, 0, 0,
531 0, 0, 0, 0, 0, 0,
532 0, 0, 0, 0, 0, 0,
533 0, 0, 0, 0, 0, 0,
534 0, 0, 0, 0, 0, 0,
535 0, 0, 0, 0, 0, 0,
536 0, 0, 0, 0, 0, 0,
537
538 /* Char 35 */
539 0, 0, 0, 0, 0, 0,
540 0, 0, 0, 0, 0, 0,
541 0, 0, 0, 0, 0, 0,
542 0, 0, 0, 0, 0, 0,
543 0, 1, 0, 1, 0, 0,
544 0, 1, 0, 1, 0, 0,
545 1, 1, 1, 1, 1, 0,
546 0, 1, 0, 1, 0, 0,
547 1, 1, 1, 1, 1, 0,
548 0, 1, 0, 1, 0, 0,
549 0, 1, 0, 1, 0, 0,
550 0, 0, 0, 0, 0, 0,
551 0, 0, 0, 0, 0, 0,
552
553 /* Char 36 */
554 0, 0, 0, 0, 0, 0,
555 0, 0, 0, 0, 0, 0,
556 0, 0, 0, 0, 0, 0,
557 0, 0, 1, 0, 0, 0,
558 0, 1, 1, 1, 1, 0,
559 1, 0, 1, 0, 0, 0,
560 1, 0, 1, 0, 0, 0,
561 0, 1, 1, 1, 0, 0,
562 0, 0, 1, 0, 1, 0,
563 0, 0, 1, 0, 1, 0,
564 1, 1, 1, 1, 0, 0,
565 0, 0, 1, 0, 0, 0,
566 0, 0, 0, 0, 0, 0,
567
568 /* Char 37 */
569 0, 0, 0, 0, 0, 0,
570 0, 0, 0, 0, 0, 0,
571 0, 1, 0, 0, 1, 0,
572 1, 0, 1, 0, 1, 0,
573 0, 1, 0, 1, 0, 0,
574 0, 0, 0, 1, 0, 0,
575 0, 0, 1, 0, 0, 0,
576 0, 1, 0, 0, 0, 0,
577 0, 1, 0, 1, 0, 0,
578 1, 0, 1, 0, 1, 0,
579 1, 0, 0, 1, 0, 0,
580 0, 0, 0, 0, 0, 0,
581 0, 0, 0, 0, 0, 0,
582
583 /* Char 38 */
584 0, 0, 0, 0, 0, 0,
585 0, 0, 0, 0, 0, 0,
586 0, 0, 0, 0, 0, 0,
587 0, 1, 0, 0, 0, 0,
588 1, 0, 1, 0, 0, 0,
589 1, 0, 1, 0, 0, 0,
590 0, 1, 0, 0, 0, 0,
591 1, 0, 1, 0, 0, 0,
592 1, 0, 0, 1, 1, 0,
593 1, 0, 0, 1, 0, 0,
594 0, 1, 1, 0, 1, 0,
595 0, 0, 0, 0, 0, 0,
596 0, 0, 0, 0, 0, 0,
597
598 /* Char 39 */
599 0, 0, 0, 0, 0, 0,
600 0, 0, 0, 0, 0, 0,
601 0, 0, 0, 0, 0, 0,
602 0, 0, 1, 1, 0, 0,
603 0, 0, 1, 0, 0, 0,
604 0, 1, 0, 0, 0, 0,
605 0, 0, 0, 0, 0, 0,
606 0, 0, 0, 0, 0, 0,
607 0, 0, 0, 0, 0, 0,
608 0, 0, 0, 0, 0, 0,
609 0, 0, 0, 0, 0, 0,
610 0, 0, 0, 0, 0, 0,
611 0, 0, 0, 0, 0, 0,
612
613 /* Char 40 */
614 0, 0, 0, 0, 0, 0,
615 0, 0, 0, 0, 0, 0,
616 0, 0, 0, 0, 0, 0,
617 0, 0, 0, 1, 0, 0,
618 0, 0, 1, 0, 0, 0,
619 0, 1, 0, 0, 0, 0,
620 0, 1, 0, 0, 0, 0,
621 0, 1, 0, 0, 0, 0,
622 0, 1, 0, 0, 0, 0,
623 0, 0, 1, 0, 0, 0,
624 0, 0, 0, 1, 0, 0,
625 0, 0, 0, 0, 0, 0,
626 0, 0, 0, 0, 0, 0,
627
628 /* Char 41 */
629 0, 0, 0, 0, 0, 0,
630 0, 0, 0, 0, 0, 0,
631 0, 0, 0, 0, 0, 0,
632 0, 1, 0, 0, 0, 0,
633 0, 0, 1, 0, 0, 0,
634 0, 0, 0, 1, 0, 0,
635 0, 0, 0, 1, 0, 0,
636 0, 0, 0, 1, 0, 0,
637 0, 0, 0, 1, 0, 0,
638 0, 0, 1, 0, 0, 0,
639 0, 1, 0, 0, 0, 0,
640 0, 0, 0, 0, 0, 0,
641 0, 0, 0, 0, 0, 0,
642
643 /* Char 42 */
644 0, 0, 0, 0, 0, 0,
645 0, 0, 0, 0, 0, 0,
646 0, 0, 0, 0, 0, 0,
647 0, 0, 1, 0, 0, 0,
648 1, 0, 1, 0, 1, 0,
649 0, 1, 1, 1, 0, 0,
650 0, 0, 1, 0, 0, 0,
651 0, 1, 1, 1, 0, 0,
652 1, 0, 1, 0, 1, 0,
653 0, 0, 1, 0, 0, 0,
654 0, 0, 0, 0, 0, 0,
655 0, 0, 0, 0, 0, 0,
656 0, 0, 0, 0, 0, 0,
657
658 /* Char 43 */
659 0, 0, 0, 0, 0, 0,
660 0, 0, 0, 0, 0, 0,
661 0, 0, 0, 0, 0, 0,
662 0, 0, 0, 0, 0, 0,
663 0, 0, 1, 0, 0, 0,
664 0, 0, 1, 0, 0, 0,
665 1, 1, 1, 1, 1, 0,
666 0, 0, 1, 0, 0, 0,
667 0, 0, 1, 0, 0, 0,
668 0, 0, 0, 0, 0, 0,
669 0, 0, 0, 0, 0, 0,
670 0, 0, 0, 0, 0, 0,
671 0, 0, 0, 0, 0, 0,
672
673 /* Char 44 */
674 0, 0, 0, 0, 0, 0,
675 0, 0, 0, 0, 0, 0,
676 0, 0, 0, 0, 0, 0,
677 0, 0, 0, 0, 0, 0,
678 0, 0, 0, 0, 0, 0,
679 0, 0, 0, 0, 0, 0,
680 0, 0, 0, 0, 0, 0,
681 0, 0, 0, 0, 0, 0,
682 0, 0, 0, 0, 0, 0,
683 0, 0, 1, 1, 0, 0,
684 0, 0, 1, 0, 0, 0,
685 0, 1, 0, 0, 0, 0,
686 0, 0, 0, 0, 0, 0,
687
688 /* Char 45 */
689 0, 0, 0, 0, 0, 0,
690 0, 0, 0, 0, 0, 0,
691 0, 0, 0, 0, 0, 0,
692 0, 0, 0, 0, 0, 0,
693 0, 0, 0, 0, 0, 0,
694 0, 0, 0, 0, 0, 0,
695 0, 0, 0, 0, 0, 0,
696 1, 1, 1, 1, 1, 0,
697 0, 0, 0, 0, 0, 0,
698 0, 0, 0, 0, 0, 0,
699 0, 0, 0, 0, 0, 0,
700 0, 0, 0, 0, 0, 0,
701 0, 0, 0, 0, 0, 0,
702
703 /* Char 46 */
704 0, 0, 0, 0, 0, 0,
705 0, 0, 0, 0, 0, 0,
706 0, 0, 0, 0, 0, 0,
707 0, 0, 0, 0, 0, 0,
708 0, 0, 0, 0, 0, 0,
709 0, 0, 0, 0, 0, 0,
710 0, 0, 0, 0, 0, 0,
711 0, 0, 0, 0, 0, 0,
712 0, 0, 0, 0, 0, 0,
713 0, 0, 1, 1, 0, 0,
714 0, 0, 1, 1, 0, 0,
715 0, 0, 0, 0, 0, 0,
716 0, 0, 0, 0, 0, 0,
717
718 /* Char 47 */
719 0, 0, 0, 0, 0, 0,
720 0, 0, 0, 0, 0, 0,
721 0, 0, 0, 0, 0, 0,
722 0, 0, 0, 0, 1, 0,
723 0, 0, 0, 0, 1, 0,
724 0, 0, 0, 1, 0, 0,
725 0, 0, 0, 1, 0, 0,
726 0, 0, 1, 0, 0, 0,
727 0, 1, 0, 0, 0, 0,
728 0, 1, 0, 0, 0, 0,
729 1, 0, 0, 0, 0, 0,
730 1, 0, 0, 0, 0, 0,
731 0, 0, 0, 0, 0, 0,
732
733 /* Char 48 */
734 0, 0, 0, 0, 0, 0,
735 0, 0, 0, 0, 0, 0,
736 0, 0, 0, 0, 0, 0,
737 0, 0, 1, 0, 0, 0,
738 0, 1, 0, 1, 0, 0,
739 1, 0, 0, 0, 1, 0,
740 1, 0, 0, 0, 1, 0,
741 1, 0, 0, 0, 1, 0,
742 1, 0, 0, 0, 1, 0,
743 0, 1, 0, 1, 0, 0,
744 0, 0, 1, 0, 0, 0,
745 0, 0, 0, 0, 0, 0,
746 0, 0, 0, 0, 0, 0,
747
748 /* Char 49 */
749 0, 0, 0, 0, 0, 0,
750 0, 0, 0, 0, 0, 0,
751 0, 0, 0, 0, 0, 0,
752 0, 0, 1, 0, 0, 0,
753 0, 1, 1, 0, 0, 0,
754 1, 0, 1, 0, 0, 0,
755 0, 0, 1, 0, 0, 0,
756 0, 0, 1, 0, 0, 0,
757 0, 0, 1, 0, 0, 0,
758 0, 0, 1, 0, 0, 0,
759 1, 1, 1, 1, 1, 0,
760 0, 0, 0, 0, 0, 0,
761 0, 0, 0, 0, 0, 0,
762
763 /* Char 50 */
764 0, 0, 0, 0, 0, 0,
765 0, 0, 0, 0, 0, 0,
766 0, 0, 0, 0, 0, 0,
767 0, 1, 1, 1, 0, 0,
768 1, 0, 0, 0, 1, 0,
769 0, 0, 0, 0, 1, 0,
770 0, 0, 0, 1, 0, 0,
771 0, 0, 1, 0, 0, 0,
772 0, 1, 0, 0, 0, 0,
773 1, 0, 0, 0, 0, 0,
774 1, 1, 1, 1, 1, 0,
775 0, 0, 0, 0, 0, 0,
776 0, 0, 0, 0, 0, 0,
777
778 /* Char 51 */
779 0, 0, 0, 0, 0, 0,
780 0, 0, 0, 0, 0, 0,
781 0, 0, 0, 0, 0, 0,
782 0, 1, 1, 1, 0, 0,
783 1, 0, 0, 0, 1, 0,
784 0, 0, 0, 0, 1, 0,
785 0, 0, 1, 1, 0, 0,
786 0, 0, 0, 0, 1, 0,
787 0, 0, 0, 0, 1, 0,
788 1, 0, 0, 0, 1, 0,
789 0, 1, 1, 1, 0, 0,
790 0, 0, 0, 0, 0, 0,
791 0, 0, 0, 0, 0, 0,
792
793 /* Char 52 */
794 0, 0, 0, 0, 0, 0,
795 0, 0, 0, 0, 0, 0,
796 0, 0, 0, 0, 0, 0,
797 0, 0, 0, 1, 0, 0,
798 0, 0, 1, 1, 0, 0,
799 0, 1, 0, 1, 0, 0,
800 1, 0, 0, 1, 0, 0,
801 1, 0, 0, 1, 0, 0,
802 1, 1, 1, 1, 1, 0,
803 0, 0, 0, 1, 0, 0,
804 0, 0, 0, 1, 0, 0,
805 0, 0, 0, 0, 0, 0,
806 0, 0, 0, 0, 0, 0,
807
808 /* Char 53 */
809 0, 0, 0, 0, 0, 0,
810 0, 0, 0, 0, 0, 0,
811 0, 0, 0, 0, 0, 0,
812 1, 1, 1, 1, 1, 0,
813 1, 0, 0, 0, 0, 0,
814 1, 1, 1, 1, 0, 0,
815 1, 0, 0, 0, 1, 0,
816 0, 0, 0, 0, 1, 0,
817 0, 0, 0, 0, 1, 0,
818 1, 0, 0, 0, 1, 0,
819 0, 1, 1, 1, 0, 0,
820 0, 0, 0, 0, 0, 0,
821 0, 0, 0, 0, 0, 0,
822
823 /* Char 54 */
824 0, 0, 0, 0, 0, 0,
825 0, 0, 0, 0, 0, 0,
826 0, 0, 0, 0, 0, 0,
827 0, 0, 1, 1, 1, 0,
828 0, 1, 0, 0, 0, 0,
829 1, 0, 0, 0, 0, 0,
830 1, 1, 1, 1, 0, 0,
831 1, 0, 0, 0, 1, 0,
832 1, 0, 0, 0, 1, 0,
833 1, 0, 0, 0, 1, 0,
834 0, 1, 1, 1, 0, 0,
835 0, 0, 0, 0, 0, 0,
836 0, 0, 0, 0, 0, 0,
837
838 /* Char 55 */
839 0, 0, 0, 0, 0, 0,
840 0, 0, 0, 0, 0, 0,
841 0, 0, 0, 0, 0, 0,
842 1, 1, 1, 1, 1, 0,
843 0, 0, 0, 0, 1, 0,
844 0, 0, 0, 1, 0, 0,
845 0, 0, 0, 1, 0, 0,
846 0, 0, 1, 0, 0, 0,
847 0, 0, 1, 0, 0, 0,
848 0, 1, 0, 0, 0, 0,
849 0, 1, 0, 0, 0, 0,
850 0, 0, 0, 0, 0, 0,
851 0, 0, 0, 0, 0, 0,
852
853 /* Char 56 */
854 0, 0, 0, 0, 0, 0,
855 0, 0, 0, 0, 0, 0,
856 0, 0, 0, 0, 0, 0,
857 0, 1, 1, 1, 0, 0,
858 1, 0, 0, 0, 1, 0,
859 1, 0, 0, 0, 1, 0,
860 0, 1, 1, 1, 0, 0,
861 1, 0, 0, 0, 1, 0,
862 1, 0, 0, 0, 1, 0,
863 1, 0, 0, 0, 1, 0,
864 0, 1, 1, 1, 0, 0,
865 0, 0, 0, 0, 0, 0,
866 0, 0, 0, 0, 0, 0,
867
868 /* Char 57 */
869 0, 0, 0, 0, 0, 0,
870 0, 0, 0, 0, 0, 0,
871 0, 0, 0, 0, 0, 0,
872 0, 1, 1, 1, 0, 0,
873 1, 0, 0, 0, 1, 0,
874 1, 0, 0, 0, 1, 0,
875 1, 0, 0, 0, 1, 0,
876 0, 1, 1, 1, 1, 0,
877 0, 0, 0, 0, 1, 0,
878 0, 0, 0, 1, 0, 0,
879 1, 1, 1, 0, 0, 0,
880 0, 0, 0, 0, 0, 0,
881 0, 0, 0, 0, 0, 0,
882
883 /* Char 58 */
884 0, 0, 0, 0, 0, 0,
885 0, 0, 0, 0, 0, 0,
886 0, 0, 0, 0, 0, 0,
887 0, 0, 0, 0, 0, 0,
888 0, 0, 0, 0, 0, 0,
889 0, 0, 1, 1, 0, 0,
890 0, 0, 1, 1, 0, 0,
891 0, 0, 0, 0, 0, 0,
892 0, 0, 0, 0, 0, 0,
893 0, 0, 1, 1, 0, 0,
894 0, 0, 1, 1, 0, 0,
895 0, 0, 0, 0, 0, 0,
896 0, 0, 0, 0, 0, 0,
897
898 /* Char 59 */
899 0, 0, 0, 0, 0, 0,
900 0, 0, 0, 0, 0, 0,
901 0, 0, 0, 0, 0, 0,
902 0, 0, 0, 0, 0, 0,
903 0, 0, 0, 0, 0, 0,
904 0, 0, 1, 1, 0, 0,
905 0, 0, 1, 1, 0, 0,
906 0, 0, 0, 0, 0, 0,
907 0, 0, 0, 0, 0, 0,
908 0, 0, 1, 1, 0, 0,
909 0, 0, 1, 0, 0, 0,
910 0, 1, 0, 0, 0, 0,
911 0, 0, 0, 0, 0, 0,
912
913 /* Char 60 */
914 0, 0, 0, 0, 0, 0,
915 0, 0, 0, 0, 0, 0,
916 0, 0, 0, 0, 1, 0,
917 0, 0, 0, 1, 0, 0,
918 0, 0, 1, 0, 0, 0,
919 0, 1, 0, 0, 0, 0,
920 1, 0, 0, 0, 0, 0,
921 0, 1, 0, 0, 0, 0,
922 0, 0, 1, 0, 0, 0,
923 0, 0, 0, 1, 0, 0,
924 0, 0, 0, 0, 1, 0,
925 0, 0, 0, 0, 0, 0,
926 0, 0, 0, 0, 0, 0,
927
928 /* Char 61 */
929 0, 0, 0, 0, 0, 0,
930 0, 0, 0, 0, 0, 0,
931 0, 0, 0, 0, 0, 0,
932 0, 0, 0, 0, 0, 0,
933 0, 0, 0, 0, 0, 0,
934 1, 1, 1, 1, 1, 0,
935 0, 0, 0, 0, 0, 0,
936 0, 0, 0, 0, 0, 0,
937 1, 1, 1, 1, 1, 0,
938 0, 0, 0, 0, 0, 0,
939 0, 0, 0, 0, 0, 0,
940 0, 0, 0, 0, 0, 0,
941 0, 0, 0, 0, 0, 0,
942
943 /* Char 62 */
944 0, 0, 0, 0, 0, 0,
945 0, 0, 0, 0, 0, 0,
946 1, 0, 0, 0, 0, 0,
947 0, 1, 0, 0, 0, 0,
948 0, 0, 1, 0, 0, 0,
949 0, 0, 0, 1, 0, 0,
950 0, 0, 0, 0, 1, 0,
951 0, 0, 0, 1, 0, 0,
952 0, 0, 1, 0, 0, 0,
953 0, 1, 0, 0, 0, 0,
954 1, 0, 0, 0, 0, 0,
955 0, 0, 0, 0, 0, 0,
956 0, 0, 0, 0, 0, 0,
957
958 /* Char 63 */
959 0, 0, 0, 0, 0, 0,
960 0, 0, 0, 0, 0, 0,
961 0, 0, 0, 0, 0, 0,
962 0, 1, 1, 1, 0, 0,
963 1, 0, 0, 0, 1, 0,
964 0, 0, 0, 0, 1, 0,
965 0, 0, 0, 1, 0, 0,
966 0, 0, 1, 0, 0, 0,
967 0, 0, 1, 0, 0, 0,
968 0, 0, 0, 0, 0, 0,
969 0, 0, 1, 0, 0, 0,
970 0, 0, 0, 0, 0, 0,
971 0, 0, 0, 0, 0, 0,
972
973 /* Char 64 */
974 0, 0, 0, 0, 0, 0,
975 0, 0, 0, 0, 0, 0,
976 0, 0, 0, 0, 0, 0,
977 0, 1, 1, 1, 0, 0,
978 1, 0, 0, 0, 1, 0,
979 1, 0, 0, 1, 1, 0,
980 1, 0, 1, 0, 1, 0,
981 1, 0, 1, 0, 1, 0,
982 1, 0, 1, 1, 0, 0,
983 1, 0, 0, 0, 0, 0,
984 0, 1, 1, 1, 1, 0,
985 0, 0, 0, 0, 0, 0,
986 0, 0, 0, 0, 0, 0,
987
988 /* Char 65 */
989 0, 0, 0, 0, 0, 0,
990 0, 0, 0, 0, 0, 0,
991 0, 0, 0, 0, 0, 0,
992 0, 0, 1, 0, 0, 0,
993 0, 1, 0, 1, 0, 0,
994 1, 0, 0, 0, 1, 0,
995 1, 0, 0, 0, 1, 0,
996 1, 1, 1, 1, 1, 0,
997 1, 0, 0, 0, 1, 0,
998 1, 0, 0, 0, 1, 0,
999 1, 0, 0, 0, 1, 0,
1000 0, 0, 0, 0, 0, 0,
1001 0, 0, 0, 0, 0, 0,
1002
1003 /* Char 66 */
1004 0, 0, 0, 0, 0, 0,
1005 0, 0, 0, 0, 0, 0,
1006 0, 0, 0, 0, 0, 0,
1007 1, 1, 1, 1, 0, 0,
1008 1, 0, 0, 0, 1, 0,
1009 1, 0, 0, 0, 1, 0,
1010 1, 1, 1, 1, 0, 0,
1011 1, 0, 0, 0, 1, 0,
1012 1, 0, 0, 0, 1, 0,
1013 1, 0, 0, 0, 1, 0,
1014 1, 1, 1, 1, 0, 0,
1015 0, 0, 0, 0, 0, 0,
1016 0, 0, 0, 0, 0, 0,
1017
1018 /* Char 67 */
1019 0, 0, 0, 0, 0, 0,
1020 0, 0, 0, 0, 0, 0,
1021 0, 0, 0, 0, 0, 0,
1022 0, 1, 1, 1, 0, 0,
1023 1, 0, 0, 0, 1, 0,
1024 1, 0, 0, 0, 0, 0,
1025 1, 0, 0, 0, 0, 0,
1026 1, 0, 0, 0, 0, 0,
1027 1, 0, 0, 0, 0, 0,
1028 1, 0, 0, 0, 1, 0,
1029 0, 1, 1, 1, 0, 0,
1030 0, 0, 0, 0, 0, 0,
1031 0, 0, 0, 0, 0, 0,
1032
1033 /* Char 68 */
1034 0, 0, 0, 0, 0, 0,
1035 0, 0, 0, 0, 0, 0,
1036 0, 0, 0, 0, 0, 0,
1037 1, 1, 1, 1, 0, 0,
1038 1, 0, 0, 0, 1, 0,
1039 1, 0, 0, 0, 1, 0,
1040 1, 0, 0, 0, 1, 0,
1041 1, 0, 0, 0, 1, 0,
1042 1, 0, 0, 0, 1, 0,
1043 1, 0, 0, 0, 1, 0,
1044 1, 1, 1, 1, 0, 0,
1045 0, 0, 0, 0, 0, 0,
1046 0, 0, 0, 0, 0, 0,
1047
1048 /* Char 69 */
1049 0, 0, 0, 0, 0, 0,
1050 0, 0, 0, 0, 0, 0,
1051 0, 0, 0, 0, 0, 0,
1052 1, 1, 1, 1, 1, 0,
1053 1, 0, 0, 0, 0, 0,
1054 1, 0, 0, 0, 0, 0,
1055 1, 1, 1, 1, 0, 0,
1056 1, 0, 0, 0, 0, 0,
1057 1, 0, 0, 0, 0, 0,
1058 1, 0, 0, 0, 0, 0,
1059 1, 1, 1, 1, 1, 0,
1060 0, 0, 0, 0, 0, 0,
1061 0, 0, 0, 0, 0, 0,
1062
1063 /* Char 70 */
1064 0, 0, 0, 0, 0, 0,
1065 0, 0, 0, 0, 0, 0,
1066 0, 0, 0, 0, 0, 0,
1067 1, 1, 1, 1, 1, 0,
1068 1, 0, 0, 0, 0, 0,
1069 1, 0, 0, 0, 0, 0,
1070 1, 1, 1, 1, 0, 0,
1071 1, 0, 0, 0, 0, 0,
1072 1, 0, 0, 0, 0, 0,
1073 1, 0, 0, 0, 0, 0,
1074 1, 0, 0, 0, 0, 0,
1075 0, 0, 0, 0, 0, 0,
1076 0, 0, 0, 0, 0, 0,
1077
1078 /* Char 71 */
1079 0, 0, 0, 0, 0, 0,
1080 0, 0, 0, 0, 0, 0,
1081 0, 0, 0, 0, 0, 0,
1082 0, 1, 1, 1, 0, 0,
1083 1, 0, 0, 0, 1, 0,
1084 1, 0, 0, 0, 0, 0,
1085 1, 0, 0, 0, 0, 0,
1086 1, 0, 0, 1, 1, 0,
1087 1, 0, 0, 0, 1, 0,
1088 1, 0, 0, 0, 1, 0,
1089 0, 1, 1, 1, 0, 0,
1090 0, 0, 0, 0, 0, 0,
1091 0, 0, 0, 0, 0, 0,
1092
1093 /* Char 72 */
1094 0, 0, 0, 0, 0, 0,
1095 0, 0, 0, 0, 0, 0,
1096 0, 0, 0, 0, 0, 0,
1097 1, 0, 0, 0, 1, 0,
1098 1, 0, 0, 0, 1, 0,
1099 1, 0, 0, 0, 1, 0,
1100 1, 1, 1, 1, 1, 0,
1101 1, 0, 0, 0, 1, 0,
1102 1, 0, 0, 0, 1, 0,
1103 1, 0, 0, 0, 1, 0,
1104 1, 0, 0, 0, 1, 0,
1105 0, 0, 0, 0, 0, 0,
1106 0, 0, 0, 0, 0, 0,
1107
1108 /* Char 73 */
1109 0, 0, 0, 0, 0, 0,
1110 0, 0, 0, 0, 0, 0,
1111 0, 0, 0, 0, 0, 0,
1112 0, 1, 1, 1, 0, 0,
1113 0, 0, 1, 0, 0, 0,
1114 0, 0, 1, 0, 0, 0,
1115 0, 0, 1, 0, 0, 0,
1116 0, 0, 1, 0, 0, 0,
1117 0, 0, 1, 0, 0, 0,
1118 0, 0, 1, 0, 0, 0,
1119 0, 1, 1, 1, 0, 0,
1120 0, 0, 0, 0, 0, 0,
1121 0, 0, 0, 0, 0, 0,
1122
1123 /* Char 74 */
1124 0, 0, 0, 0, 0, 0,
1125 0, 0, 0, 0, 0, 0,
1126 0, 0, 0, 0, 0, 0,
1127 0, 0, 0, 1, 0, 0,
1128 0, 0, 0, 1, 0, 0,
1129 0, 0, 0, 1, 0, 0,
1130 0, 0, 0, 1, 0, 0,
1131 0, 0, 0, 1, 0, 0,
1132 0, 0, 0, 1, 0, 0,
1133 1, 0, 0, 1, 0, 0,
1134 0, 1, 1, 0, 0, 0,
1135 0, 0, 0, 0, 0, 0,
1136 0, 0, 0, 0, 0, 0,
1137
1138 /* Char 75 */
1139 0, 0, 0, 0, 0, 0,
1140 0, 0, 0, 0, 0, 0,
1141 0, 0, 0, 0, 0, 0,
1142 1, 0, 0, 0, 1, 0,
1143 1, 0, 0, 0, 1, 0,
1144 1, 0, 0, 1, 0, 0,
1145 1, 0, 1, 0, 0, 0,
1146 1, 1, 1, 0, 0, 0,
1147 1, 0, 0, 1, 0, 0,
1148 1, 0, 0, 0, 1, 0,
1149 1, 0, 0, 0, 1, 0,
1150 0, 0, 0, 0, 0, 0,
1151 0, 0, 0, 0, 0, 0,
1152
1153 /* Char 76 */
1154 0, 0, 0, 0, 0, 0,
1155 0, 0, 0, 0, 0, 0,
1156 0, 0, 0, 0, 0, 0,
1157 1, 0, 0, 0, 0, 0,
1158 1, 0, 0, 0, 0, 0,
1159 1, 0, 0, 0, 0, 0,
1160 1, 0, 0, 0, 0, 0,
1161 1, 0, 0, 0, 0, 0,
1162 1, 0, 0, 0, 0, 0,
1163 1, 0, 0, 0, 0, 0,
1164 1, 1, 1, 1, 1, 0,
1165 0, 0, 0, 0, 0, 0,
1166 0, 0, 0, 0, 0, 0,
1167
1168 /* Char 77 */
1169 0, 0, 0, 0, 0, 0,
1170 0, 0, 0, 0, 0, 0,
1171 0, 0, 0, 0, 0, 0,
1172 1, 0, 0, 0, 1, 0,
1173 1, 1, 0, 1, 1, 0,
1174 1, 0, 1, 0, 1, 0,
1175 1, 0, 1, 0, 1, 0,
1176 1, 0, 0, 0, 1, 0,
1177 1, 0, 0, 0, 1, 0,
1178 1, 0, 0, 0, 1, 0,
1179 1, 0, 0, 0, 1, 0,
1180 0, 0, 0, 0, 0, 0,
1181 0, 0, 0, 0, 0, 0,
1182
1183 /* Char 78 */
1184 0, 0, 0, 0, 0, 0,
1185 0, 0, 0, 0, 0, 0,
1186 0, 0, 0, 0, 0, 0,
1187 1, 0, 0, 0, 1, 0,
1188 1, 1, 0, 0, 1, 0,
1189 1, 1, 0, 0, 1, 0,
1190 1, 0, 1, 0, 1, 0,
1191 1, 0, 1, 0, 1, 0,
1192 1, 0, 0, 1, 1, 0,
1193 1, 0, 0, 1, 1, 0,
1194 1, 0, 0, 0, 1, 0,
1195 0, 0, 0, 0, 0, 0,
1196 0, 0, 0, 0, 0, 0,
1197
1198 /* Char 79 */
1199 0, 0, 0, 0, 0, 0,
1200 0, 0, 0, 0, 0, 0,
1201 0, 0, 0, 0, 0, 0,
1202 0, 1, 1, 1, 0, 0,
1203 1, 0, 0, 0, 1, 0,
1204 1, 0, 0, 0, 1, 0,
1205 1, 0, 0, 0, 1, 0,
1206 1, 0, 0, 0, 1, 0,
1207 1, 0, 0, 0, 1, 0,
1208 1, 0, 0, 0, 1, 0,
1209 0, 1, 1, 1, 0, 0,
1210 0, 0, 0, 0, 0, 0,
1211 0, 0, 0, 0, 0, 0,
1212
1213 /* Char 80 */
1214 0, 0, 0, 0, 0, 0,
1215 0, 0, 0, 0, 0, 0,
1216 0, 0, 0, 0, 0, 0,
1217 1, 1, 1, 1, 0, 0,
1218 1, 0, 0, 0, 1, 0,
1219 1, 0, 0, 0, 1, 0,
1220 1, 0, 0, 0, 1, 0,
1221 1, 1, 1, 1, 0, 0,
1222 1, 0, 0, 0, 0, 0,
1223 1, 0, 0, 0, 0, 0,
1224 1, 0, 0, 0, 0, 0,
1225 0, 0, 0, 0, 0, 0,
1226 0, 0, 0, 0, 0, 0,
1227
1228 /* Char 81 */
1229 0, 0, 0, 0, 0, 0,
1230 0, 0, 0, 0, 0, 0,
1231 0, 0, 0, 0, 0, 0,
1232 0, 1, 1, 1, 0, 0,
1233 1, 0, 0, 0, 1, 0,
1234 1, 0, 0, 0, 1, 0,
1235 1, 0, 0, 0, 1, 0,
1236 1, 0, 0, 0, 1, 0,
1237 1, 0, 0, 0, 1, 0,
1238 1, 0, 1, 0, 1, 0,
1239 0, 1, 1, 1, 0, 0,
1240 0, 0, 0, 0, 1, 0,
1241 0, 0, 0, 0, 0, 0,
1242
1243 /* Char 82 */
1244 0, 0, 0, 0, 0, 0,
1245 0, 0, 0, 0, 0, 0,
1246 0, 0, 0, 0, 0, 0,
1247 1, 1, 1, 1, 0, 0,
1248 1, 0, 0, 0, 1, 0,
1249 1, 0, 0, 0, 1, 0,
1250 1, 0, 0, 0, 1, 0,
1251 1, 1, 1, 1, 0, 0,
1252 1, 0, 1, 0, 0, 0,
1253 1, 0, 0, 1, 0, 0,
1254 1, 0, 0, 0, 1, 0,
1255 0, 0, 0, 0, 0, 0,
1256 0, 0, 0, 0, 0, 0,
1257
1258 /* Char 83 */
1259 0, 0, 0, 0, 0, 0,
1260 0, 0, 0, 0, 0, 0,
1261 0, 0, 0, 0, 0, 0,
1262 0, 1, 1, 1, 0, 0,
1263 1, 0, 0, 0, 1, 0,
1264 1, 0, 0, 0, 0, 0,
1265 0, 1, 1, 0, 0, 0,
1266 0, 0, 0, 1, 0, 0,
1267 0, 0, 0, 0, 1, 0,
1268 1, 0, 0, 0, 1, 0,
1269 0, 1, 1, 1, 0, 0,
1270 0, 0, 0, 0, 0, 0,
1271 0, 0, 0, 0, 0, 0,
1272
1273 /* Char 84 */
1274 0, 0, 0, 0, 0, 0,
1275 0, 0, 0, 0, 0, 0,
1276 0, 0, 0, 0, 0, 0,
1277 1, 1, 1, 1, 1, 0,
1278 0, 0, 1, 0, 0, 0,
1279 0, 0, 1, 0, 0, 0,
1280 0, 0, 1, 0, 0, 0,
1281 0, 0, 1, 0, 0, 0,
1282 0, 0, 1, 0, 0, 0,
1283 0, 0, 1, 0, 0, 0,
1284 0, 0, 1, 0, 0, 0,
1285 0, 0, 0, 0, 0, 0,
1286 0, 0, 0, 0, 0, 0,
1287
1288 /* Char 85 */
1289 0, 0, 0, 0, 0, 0,
1290 0, 0, 0, 0, 0, 0,
1291 0, 0, 0, 0, 0, 0,
1292 1, 0, 0, 0, 1, 0,
1293 1, 0, 0, 0, 1, 0,
1294 1, 0, 0, 0, 1, 0,
1295 1, 0, 0, 0, 1, 0,
1296 1, 0, 0, 0, 1, 0,
1297 1, 0, 0, 0, 1, 0,
1298 1, 0, 0, 0, 1, 0,
1299 0, 1, 1, 1, 0, 0,
1300 0, 0, 0, 0, 0, 0,
1301 0, 0, 0, 0, 0, 0,
1302
1303 /* Char 86 */
1304 0, 0, 0, 0, 0, 0,
1305 0, 0, 0, 0, 0, 0,
1306 0, 0, 0, 0, 0, 0,
1307 1, 0, 0, 0, 1, 0,
1308 1, 0, 0, 0, 1, 0,
1309 1, 0, 0, 0, 1, 0,
1310 0, 1, 0, 1, 0, 0,
1311 0, 1, 0, 1, 0, 0,
1312 0, 1, 0, 1, 0, 0,
1313 0, 0, 1, 0, 0, 0,
1314 0, 0, 1, 0, 0, 0,
1315 0, 0, 0, 0, 0, 0,
1316 0, 0, 0, 0, 0, 0,
1317
1318 /* Char 87 */
1319 0, 0, 0, 0, 0, 0,
1320 0, 0, 0, 0, 0, 0,
1321 0, 0, 0, 0, 0, 0,
1322 1, 0, 0, 0, 1, 0,
1323 1, 0, 0, 0, 1, 0,
1324 1, 0, 1, 0, 1, 0,
1325 1, 0, 1, 0, 1, 0,
1326 1, 0, 1, 0, 1, 0,
1327 1, 0, 1, 0, 1, 0,
1328 1, 1, 0, 1, 1, 0,
1329 0, 1, 0, 1, 0, 0,
1330 0, 0, 0, 0, 0, 0,
1331 0, 0, 0, 0, 0, 0,
1332
1333 /* Char 88 */
1334 0, 0, 0, 0, 0, 0,
1335 0, 0, 0, 0, 0, 0,
1336 0, 0, 0, 0, 0, 0,
1337 1, 0, 0, 0, 1, 0,
1338 1, 0, 0, 0, 1, 0,
1339 0, 1, 0, 1, 0, 0,
1340 0, 0, 1, 0, 0, 0,
1341 0, 0, 1, 0, 0, 0,
1342 0, 1, 0, 1, 0, 0,
1343 1, 0, 0, 0, 1, 0,
1344 1, 0, 0, 0, 1, 0,
1345 0, 0, 0, 0, 0, 0,
1346 0, 0, 0, 0, 0, 0,
1347
1348 /* Char 89 */
1349 0, 0, 0, 0, 0, 0,
1350 0, 0, 0, 0, 0, 0,
1351 0, 0, 0, 0, 0, 0,
1352 1, 0, 0, 0, 1, 0,
1353 1, 0, 0, 0, 1, 0,
1354 0, 1, 0, 1, 0, 0,
1355 0, 1, 0, 1, 0, 0,
1356 0, 0, 1, 0, 0, 0,
1357 0, 0, 1, 0, 0, 0,
1358 0, 0, 1, 0, 0, 0,
1359 0, 0, 1, 0, 0, 0,
1360 0, 0, 0, 0, 0, 0,
1361 0, 0, 0, 0, 0, 0,
1362
1363 /* Char 90 */
1364 0, 0, 0, 0, 0, 0,
1365 0, 0, 0, 0, 0, 0,
1366 0, 0, 0, 0, 0, 0,
1367 1, 1, 1, 1, 1, 0,
1368 0, 0, 0, 0, 1, 0,
1369 0, 0, 0, 1, 0, 0,
1370 0, 0, 1, 0, 0, 0,
1371 0, 0, 1, 0, 0, 0,
1372 0, 1, 0, 0, 0, 0,
1373 1, 0, 0, 0, 0, 0,
1374 1, 1, 1, 1, 1, 0,
1375 0, 0, 0, 0, 0, 0,
1376 0, 0, 0, 0, 0, 0,
1377
1378 /* Char 91 */
1379 0, 0, 0, 0, 0, 0,
1380 0, 0, 0, 0, 0, 0,
1381 0, 0, 0, 0, 0, 0,
1382 0, 1, 1, 1, 0, 0,
1383 0, 1, 0, 0, 0, 0,
1384 0, 1, 0, 0, 0, 0,
1385 0, 1, 0, 0, 0, 0,
1386 0, 1, 0, 0, 0, 0,
1387 0, 1, 0, 0, 0, 0,
1388 0, 1, 0, 0, 0, 0,
1389 0, 1, 1, 1, 0, 0,
1390 0, 0, 0, 0, 0, 0,
1391 0, 0, 0, 0, 0, 0,
1392
1393 /* Char 92 */
1394 0, 0, 0, 0, 0, 0,
1395 0, 0, 0, 0, 0, 0,
1396 0, 0, 0, 0, 0, 0,
1397 1, 0, 0, 0, 0, 0,
1398 1, 0, 0, 0, 0, 0,
1399 0, 1, 0, 0, 0, 0,
1400 0, 1, 0, 0, 0, 0,
1401 0, 0, 1, 0, 0, 0,
1402 0, 0, 0, 1, 0, 0,
1403 0, 0, 0, 1, 0, 0,
1404 0, 0, 0, 0, 1, 0,
1405 0, 0, 0, 0, 1, 0,
1406 0, 0, 0, 0, 0, 0,
1407
1408 /* Char 93 */
1409 0, 0, 0, 0, 0, 0,
1410 0, 0, 0, 0, 0, 0,
1411 0, 0, 0, 0, 0, 0,
1412 0, 1, 1, 1, 0, 0,
1413 0, 0, 0, 1, 0, 0,
1414 0, 0, 0, 1, 0, 0,
1415 0, 0, 0, 1, 0, 0,
1416 0, 0, 0, 1, 0, 0,
1417 0, 0, 0, 1, 0, 0,
1418 0, 0, 0, 1, 0, 0,
1419 0, 1, 1, 1, 0, 0,
1420 0, 0, 0, 0, 0, 0,
1421 0, 0, 0, 0, 0, 0,
1422
1423 /* Char 94 */
1424 0, 0, 0, 0, 0, 0,
1425 0, 0, 0, 0, 0, 0,
1426 0, 0, 1, 0, 0, 0,
1427 0, 1, 0, 1, 0, 0,
1428 1, 0, 0, 0, 1, 0,
1429 0, 0, 0, 0, 0, 0,
1430 0, 0, 0, 0, 0, 0,
1431 0, 0, 0, 0, 0, 0,
1432 0, 0, 0, 0, 0, 0,
1433 0, 0, 0, 0, 0, 0,
1434 0, 0, 0, 0, 0, 0,
1435 0, 0, 0, 0, 0, 0,
1436 0, 0, 0, 0, 0, 0,
1437
1438 /* Char 95 */
1439 0, 0, 0, 0, 0, 0,
1440 0, 0, 0, 0, 0, 0,
1441 0, 0, 0, 0, 0, 0,
1442 0, 0, 0, 0, 0, 0,
1443 0, 0, 0, 0, 0, 0,
1444 0, 0, 0, 0, 0, 0,
1445 0, 0, 0, 0, 0, 0,
1446 0, 0, 0, 0, 0, 0,
1447 0, 0, 0, 0, 0, 0,
1448 0, 0, 0, 0, 0, 0,
1449 0, 0, 0, 0, 0, 0,
1450 1, 1, 1, 1, 1, 0,
1451 0, 0, 0, 0, 0, 0,
1452
1453 /* Char 96 */
1454 0, 0, 0, 0, 0, 0,
1455 0, 0, 0, 0, 0, 0,
1456 0, 0, 0, 0, 0, 0,
1457 0, 1, 1, 0, 0, 0,
1458 0, 0, 1, 0, 0, 0,
1459 0, 0, 0, 1, 0, 0,
1460 0, 0, 0, 0, 0, 0,
1461 0, 0, 0, 0, 0, 0,
1462 0, 0, 0, 0, 0, 0,
1463 0, 0, 0, 0, 0, 0,
1464 0, 0, 0, 0, 0, 0,
1465 0, 0, 0, 0, 0, 0,
1466 0, 0, 0, 0, 0, 0,
1467
1468 /* Char 97 */
1469 0, 0, 0, 0, 0, 0,
1470 0, 0, 0, 0, 0, 0,
1471 0, 0, 0, 0, 0, 0,
1472 0, 0, 0, 0, 0, 0,
1473 0, 0, 0, 0, 0, 0,
1474 0, 1, 1, 1, 0, 0,
1475 0, 0, 0, 0, 1, 0,
1476 0, 1, 1, 1, 1, 0,
1477 1, 0, 0, 0, 1, 0,
1478 1, 0, 0, 1, 1, 0,
1479 0, 1, 1, 0, 1, 0,
1480 0, 0, 0, 0, 0, 0,
1481 0, 0, 0, 0, 0, 0,
1482
1483 /* Char 98 */
1484 0, 0, 0, 0, 0, 0,
1485 0, 0, 0, 0, 0, 0,
1486 0, 0, 0, 0, 0, 0,
1487 1, 0, 0, 0, 0, 0,
1488 1, 0, 0, 0, 0, 0,
1489 1, 0, 1, 1, 0, 0,
1490 1, 1, 0, 0, 1, 0,
1491 1, 0, 0, 0, 1, 0,
1492 1, 0, 0, 0, 1, 0,
1493 1, 1, 0, 0, 1, 0,
1494 1, 0, 1, 1, 0, 0,
1495 0, 0, 0, 0, 0, 0,
1496 0, 0, 0, 0, 0, 0,
1497
1498 /* Char 99 */
1499 0, 0, 0, 0, 0, 0,
1500 0, 0, 0, 0, 0, 0,
1501 0, 0, 0, 0, 0, 0,
1502 0, 0, 0, 0, 0, 0,
1503 0, 0, 0, 0, 0, 0,
1504 0, 1, 1, 1, 0, 0,
1505 1, 0, 0, 0, 1, 0,
1506 1, 0, 0, 0, 0, 0,
1507 1, 0, 0, 0, 0, 0,
1508 1, 0, 0, 0, 1, 0,
1509 0, 1, 1, 1, 0, 0,
1510 0, 0, 0, 0, 0, 0,
1511 0, 0, 0, 0, 0, 0,
1512
1513 /* Char 100 */
1514 0, 0, 0, 0, 0, 0,
1515 0, 0, 0, 0, 0, 0,
1516 0, 0, 0, 0, 0, 0,
1517 0, 0, 0, 0, 1, 0,
1518 0, 0, 0, 0, 1, 0,
1519 0, 1, 1, 0, 1, 0,
1520 1, 0, 0, 1, 1, 0,
1521 1, 0, 0, 0, 1, 0,
1522 1, 0, 0, 0, 1, 0,
1523 1, 0, 0, 1, 1, 0,
1524 0, 1, 1, 0, 1, 0,
1525 0, 0, 0, 0, 0, 0,
1526 0, 0, 0, 0, 0, 0,
1527
1528 /* Char 101 */
1529 0, 0, 0, 0, 0, 0,
1530 0, 0, 0, 0, 0, 0,
1531 0, 0, 0, 0, 0, 0,
1532 0, 0, 0, 0, 0, 0,
1533 0, 0, 0, 0, 0, 0,
1534 0, 1, 1, 1, 0, 0,
1535 1, 0, 0, 0, 1, 0,
1536 1, 1, 1, 1, 1, 0,
1537 1, 0, 0, 0, 0, 0,
1538 1, 0, 0, 0, 0, 0,
1539 0, 1, 1, 1, 0, 0,
1540 0, 0, 0, 0, 0, 0,
1541 0, 0, 0, 0, 0, 0,
1542
1543 /* Char 102 */
1544 0, 0, 0, 0, 0, 0,
1545 0, 0, 0, 0, 0, 0,
1546 0, 0, 0, 0, 0, 0,
1547 0, 0, 1, 1, 0, 0,
1548 0, 1, 0, 0, 1, 0,
1549 0, 1, 0, 0, 0, 0,
1550 0, 1, 0, 0, 0, 0,
1551 1, 1, 1, 1, 0, 0,
1552 0, 1, 0, 0, 0, 0,
1553 0, 1, 0, 0, 0, 0,
1554 0, 1, 0, 0, 0, 0,
1555 0, 0, 0, 0, 0, 0,
1556 0, 0, 0, 0, 0, 0,
1557
1558 /* Char 103 */
1559 0, 0, 0, 0, 0, 0,
1560 0, 0, 0, 0, 0, 0,
1561 0, 0, 0, 0, 0, 0,
1562 0, 0, 0, 0, 0, 0,
1563 0, 0, 0, 0, 1, 0,
1564 0, 1, 1, 1, 0, 0,
1565 1, 0, 0, 0, 1, 0,
1566 1, 0, 0, 0, 1, 0,
1567 0, 1, 1, 1, 0, 0,
1568 1, 0, 0, 0, 0, 0,
1569 0, 1, 1, 1, 0, 0,
1570 1, 0, 0, 0, 1, 0,
1571 0, 1, 1, 1, 0, 0,
1572
1573 /* Char 104 */
1574 0, 0, 0, 0, 0, 0,
1575 0, 0, 0, 0, 0, 0,
1576 0, 0, 0, 0, 0, 0,
1577 1, 0, 0, 0, 0, 0,
1578 1, 0, 0, 0, 0, 0,
1579 1, 0, 1, 1, 0, 0,
1580 1, 1, 0, 0, 1, 0,
1581 1, 0, 0, 0, 1, 0,
1582 1, 0, 0, 0, 1, 0,
1583 1, 0, 0, 0, 1, 0,
1584 1, 0, 0, 0, 1, 0,
1585 0, 0, 0, 0, 0, 0,
1586 0, 0, 0, 0, 0, 0,
1587
1588 /* Char 105 */
1589 0, 0, 0, 0, 0, 0,
1590 0, 0, 0, 0, 0, 0,
1591 0, 0, 0, 0, 0, 0,
1592 0, 0, 1, 0, 0, 0,
1593 0, 0, 0, 0, 0, 0,
1594 0, 1, 1, 0, 0, 0,
1595 0, 0, 1, 0, 0, 0,
1596 0, 0, 1, 0, 0, 0,
1597 0, 0, 1, 0, 0, 0,
1598 0, 0, 1, 0, 0, 0,
1599 0, 1, 1, 1, 0, 0,
1600 0, 0, 0, 0, 0, 0,
1601 0, 0, 0, 0, 0, 0,
1602
1603 /* Char 106 */
1604 0, 0, 0, 0, 0, 0,
1605 0, 0, 0, 0, 0, 0,
1606 0, 0, 0, 0, 0, 0,
1607 0, 0, 0, 1, 0, 0,
1608 0, 0, 0, 0, 0, 0,
1609 0, 0, 1, 1, 0, 0,
1610 0, 0, 0, 1, 0, 0,
1611 0, 0, 0, 1, 0, 0,
1612 0, 0, 0, 1, 0, 0,
1613 0, 0, 0, 1, 0, 0,
1614 1, 0, 0, 1, 0, 0,
1615 1, 0, 0, 1, 0, 0,
1616 0, 1, 1, 0, 0, 0,
1617
1618 /* Char 107 */
1619 0, 0, 0, 0, 0, 0,
1620 0, 0, 0, 0, 0, 0,
1621 0, 0, 0, 0, 0, 0,
1622 1, 0, 0, 0, 0, 0,
1623 1, 0, 0, 0, 0, 0,
1624 1, 0, 0, 1, 0, 0,
1625 1, 0, 1, 0, 0, 0,
1626 1, 1, 0, 0, 0, 0,
1627 1, 0, 1, 0, 0, 0,
1628 1, 0, 0, 1, 0, 0,
1629 1, 0, 0, 0, 1, 0,
1630 0, 0, 0, 0, 0, 0,
1631 0, 0, 0, 0, 0, 0,
1632
1633 /* Char 108 */
1634 0, 0, 0, 0, 0, 0,
1635 0, 0, 0, 0, 0, 0,
1636 0, 0, 0, 0, 0, 0,
1637 0, 1, 1, 0, 0, 0,
1638 0, 0, 1, 0, 0, 0,
1639 0, 0, 1, 0, 0, 0,
1640 0, 0, 1, 0, 0, 0,
1641 0, 0, 1, 0, 0, 0,
1642 0, 0, 1, 0, 0, 0,
1643 0, 0, 1, 0, 0, 0,
1644 0, 1, 1, 1, 0, 0,
1645 0, 0, 0, 0, 0, 0,
1646 0, 0, 0, 0, 0, 0,
1647
1648 /* Char 109 */
1649 0, 0, 0, 0, 0, 0,
1650 0, 0, 0, 0, 0, 0,
1651 0, 0, 0, 0, 0, 0,
1652 0, 0, 0, 0, 0, 0,
1653 0, 0, 0, 0, 0, 0,
1654 1, 1, 0, 1, 0, 0,
1655 1, 0, 1, 0, 1, 0,
1656 1, 0, 1, 0, 1, 0,
1657 1, 0, 1, 0, 1, 0,
1658 1, 0, 1, 0, 1, 0,
1659 1, 0, 0, 0, 1, 0,
1660 0, 0, 0, 0, 0, 0,
1661 0, 0, 0, 0, 0, 0,
1662
1663 /* Char 110 */
1664 0, 0, 0, 0, 0, 0,
1665 0, 0, 0, 0, 0, 0,
1666 0, 0, 0, 0, 0, 0,
1667 0, 0, 0, 0, 0, 0,
1668 0, 0, 0, 0, 0, 0,
1669 1, 0, 1, 1, 0, 0,
1670 1, 1, 0, 0, 1, 0,
1671 1, 0, 0, 0, 1, 0,
1672 1, 0, 0, 0, 1, 0,
1673 1, 0, 0, 0, 1, 0,
1674 1, 0, 0, 0, 1, 0,
1675 0, 0, 0, 0, 0, 0,
1676 0, 0, 0, 0, 0, 0,
1677
1678 /* Char 111 */
1679 0, 0, 0, 0, 0, 0,
1680 0, 0, 0, 0, 0, 0,
1681 0, 0, 0, 0, 0, 0,
1682 0, 0, 0, 0, 0, 0,
1683 0, 0, 0, 0, 0, 0,
1684 0, 1, 1, 1, 0, 0,
1685 1, 0, 0, 0, 1, 0,
1686 1, 0, 0, 0, 1, 0,
1687 1, 0, 0, 0, 1, 0,
1688 1, 0, 0, 0, 1, 0,
1689 0, 1, 1, 1, 0, 0,
1690 0, 0, 0, 0, 0, 0,
1691 0, 0, 0, 0, 0, 0,
1692
1693 /* Char 112 */
1694 0, 0, 0, 0, 0, 0,
1695 0, 0, 0, 0, 0, 0,
1696 0, 0, 0, 0, 0, 0,
1697 0, 0, 0, 0, 0, 0,
1698 0, 0, 0, 0, 0, 0,
1699 1, 0, 1, 1, 0, 0,
1700 1, 1, 0, 0, 1, 0,
1701 1, 0, 0, 0, 1, 0,
1702 1, 0, 0, 0, 1, 0,
1703 1, 1, 0, 0, 1, 0,
1704 1, 0, 1, 1, 0, 0,
1705 1, 0, 0, 0, 0, 0,
1706 1, 0, 0, 0, 0, 0,
1707
1708 /* Char 113 */
1709 0, 0, 0, 0, 0, 0,
1710 0, 0, 0, 0, 0, 0,
1711 0, 0, 0, 0, 0, 0,
1712 0, 0, 0, 0, 0, 0,
1713 0, 0, 0, 0, 0, 0,
1714 0, 1, 1, 0, 1, 0,
1715 1, 0, 0, 1, 1, 0,
1716 1, 0, 0, 0, 1, 0,
1717 1, 0, 0, 0, 1, 0,
1718 1, 0, 0, 1, 1, 0,
1719 0, 1, 1, 0, 1, 0,
1720 0, 0, 0, 0, 1, 0,
1721 0, 0, 0, 0, 1, 0,
1722
1723 /* Char 114 */
1724 0, 0, 0, 0, 0, 0,
1725 0, 0, 0, 0, 0, 0,
1726 0, 0, 0, 0, 0, 0,
1727 0, 0, 0, 0, 0, 0,
1728 0, 0, 0, 0, 0, 0,
1729 1, 0, 1, 1, 0, 0,
1730 1, 1, 0, 0, 1, 0,
1731 1, 0, 0, 0, 0, 0,
1732 1, 0, 0, 0, 0, 0,
1733 1, 0, 0, 0, 0, 0,
1734 1, 0, 0, 0, 0, 0,
1735 0, 0, 0, 0, 0, 0,
1736 0, 0, 0, 0, 0, 0,
1737
1738 /* Char 115 */
1739 0, 0, 0, 0, 0, 0,
1740 0, 0, 0, 0, 0, 0,
1741 0, 0, 0, 0, 0, 0,
1742 0, 0, 0, 0, 0, 0,
1743 0, 0, 0, 0, 0, 0,
1744 0, 1, 1, 1, 0, 0,
1745 1, 0, 0, 0, 1, 0,
1746 0, 1, 1, 0, 0, 0,
1747 0, 0, 0, 1, 0, 0,
1748 1, 0, 0, 0, 1, 0,
1749 0, 1, 1, 1, 0, 0,
1750 0, 0, 0, 0, 0, 0,
1751 0, 0, 0, 0, 0, 0,
1752
1753 /* Char 116 */
1754 0, 0, 0, 0, 0, 0,
1755 0, 0, 0, 0, 0, 0,
1756 0, 0, 0, 0, 0, 0,
1757 0, 1, 0, 0, 0, 0,
1758 0, 1, 0, 0, 0, 0,
1759 1, 1, 1, 1, 0, 0,
1760 0, 1, 0, 0, 0, 0,
1761 0, 1, 0, 0, 0, 0,
1762 0, 1, 0, 0, 0, 0,
1763 0, 1, 0, 0, 1, 0,
1764 0, 0, 1, 1, 0, 0,
1765 0, 0, 0, 0, 0, 0,
1766 0, 0, 0, 0, 0, 0,
1767
1768 /* Char 117 */
1769 0, 0, 0, 0, 0, 0,
1770 0, 0, 0, 0, 0, 0,
1771 0, 0, 0, 0, 0, 0,
1772 0, 0, 0, 0, 0, 0,
1773 0, 0, 0, 0, 0, 0,
1774 1, 0, 0, 0, 1, 0,
1775 1, 0, 0, 0, 1, 0,
1776 1, 0, 0, 0, 1, 0,
1777 1, 0, 0, 0, 1, 0,
1778 1, 0, 0, 1, 1, 0,
1779 0, 1, 1, 0, 1, 0,
1780 0, 0, 0, 0, 0, 0,
1781 0, 0, 0, 0, 0, 0,
1782
1783 /* Char 118 */
1784 0, 0, 0, 0, 0, 0,
1785 0, 0, 0, 0, 0, 0,
1786 0, 0, 0, 0, 0, 0,
1787 0, 0, 0, 0, 0, 0,
1788 0, 0, 0, 0, 0, 0,
1789 1, 0, 0, 0, 1, 0,
1790 1, 0, 0, 0, 1, 0,
1791 1, 0, 0, 0, 1, 0,
1792 0, 1, 0, 1, 0, 0,
1793 0, 1, 0, 1, 0, 0,
1794 0, 0, 1, 0, 0, 0,
1795 0, 0, 0, 0, 0, 0,
1796 0, 0, 0, 0, 0, 0,
1797
1798 /* Char 119 */
1799 0, 0, 0, 0, 0, 0,
1800 0, 0, 0, 0, 0, 0,
1801 0, 0, 0, 0, 0, 0,
1802 0, 0, 0, 0, 0, 0,
1803 0, 0, 0, 0, 0, 0,
1804 1, 0, 0, 0, 1, 0,
1805 1, 0, 0, 0, 1, 0,
1806 1, 0, 1, 0, 1, 0,
1807 1, 0, 1, 0, 1, 0,
1808 1, 0, 1, 0, 1, 0,
1809 0, 1, 0, 1, 0, 0,
1810 0, 0, 0, 0, 0, 0,
1811 0, 0, 0, 0, 0, 0,
1812
1813 /* Char 120 */
1814 0, 0, 0, 0, 0, 0,
1815 0, 0, 0, 0, 0, 0,
1816 0, 0, 0, 0, 0, 0,
1817 0, 0, 0, 0, 0, 0,
1818 0, 0, 0, 0, 0, 0,
1819 1, 0, 0, 0, 1, 0,
1820 0, 1, 0, 1, 0, 0,
1821 0, 0, 1, 0, 0, 0,
1822 0, 0, 1, 0, 0, 0,
1823 0, 1, 0, 1, 0, 0,
1824 1, 0, 0, 0, 1, 0,
1825 0, 0, 0, 0, 0, 0,
1826 0, 0, 0, 0, 0, 0,
1827
1828 /* Char 121 */
1829 0, 0, 0, 0, 0, 0,
1830 0, 0, 0, 0, 0, 0,
1831 0, 0, 0, 0, 0, 0,
1832 0, 0, 0, 0, 0, 0,
1833 0, 0, 0, 0, 0, 0,
1834 1, 0, 0, 0, 1, 0,
1835 1, 0, 0, 0, 1, 0,
1836 1, 0, 0, 0, 1, 0,
1837 1, 0, 0, 1, 1, 0,
1838 0, 1, 1, 0, 1, 0,
1839 0, 0, 0, 0, 1, 0,
1840 0, 0, 0, 1, 0, 0,
1841 1, 1, 1, 0, 0, 0,
1842
1843 /* Char 122 */
1844 0, 0, 0, 0, 0, 0,
1845 0, 0, 0, 0, 0, 0,
1846 0, 0, 0, 0, 0, 0,
1847 0, 0, 0, 0, 0, 0,
1848 0, 0, 0, 0, 0, 0,
1849 1, 1, 1, 1, 1, 0,
1850 0, 0, 0, 1, 0, 0,
1851 0, 0, 1, 0, 0, 0,
1852 0, 1, 0, 0, 0, 0,
1853 1, 0, 0, 0, 0, 0,
1854 1, 1, 1, 1, 1, 0,
1855 0, 0, 0, 0, 0, 0,
1856 0, 0, 0, 0, 0, 0,
1857
1858 /* Char 123 */
1859 0, 0, 0, 0, 0, 0,
1860 0, 0, 0, 0, 0, 0,
1861 0, 0, 0, 0, 0, 0,
1862 0, 0, 0, 1, 1, 0,
1863 0, 0, 1, 0, 0, 0,
1864 0, 0, 1, 0, 0, 0,
1865 0, 0, 1, 0, 0, 0,
1866 1, 1, 0, 0, 0, 0,
1867 0, 0, 1, 0, 0, 0,
1868 0, 0, 1, 0, 0, 0,
1869 0, 0, 1, 0, 0, 0,
1870 0, 0, 0, 1, 1, 0,
1871 0, 0, 0, 0, 0, 0,
1872
1873 /* Char 124 */
1874 0, 0, 0, 0, 0, 0,
1875 0, 0, 0, 0, 0, 0,
1876 0, 0, 0, 0, 0, 0,
1877 0, 0, 1, 0, 0, 0,
1878 0, 0, 1, 0, 0, 0,
1879 0, 0, 1, 0, 0, 0,
1880 0, 0, 1, 0, 0, 0,
1881 0, 0, 1, 0, 0, 0,
1882 0, 0, 1, 0, 0, 0,
1883 0, 0, 1, 0, 0, 0,
1884 0, 0, 1, 0, 0, 0,
1885 0, 0, 1, 0, 0, 0,
1886 0, 0, 0, 0, 0, 0,
1887
1888 /* Char 125 */
1889 0, 0, 0, 0, 0, 0,
1890 0, 0, 0, 0, 0, 0,
1891 0, 0, 0, 0, 0, 0,
1892 1, 1, 0, 0, 0, 0,
1893 0, 0, 1, 0, 0, 0,
1894 0, 0, 1, 0, 0, 0,
1895 0, 0, 1, 0, 0, 0,
1896 0, 0, 0, 1, 1, 0,
1897 0, 0, 1, 0, 0, 0,
1898 0, 0, 1, 0, 0, 0,
1899 0, 0, 1, 0, 0, 0,
1900 1, 1, 0, 0, 0, 0,
1901 0, 0, 0, 0, 0, 0,
1902
1903 /* Char 126 */
1904 0, 0, 0, 0, 0, 0,
1905 0, 0, 0, 0, 0, 0,
1906 0, 1, 0, 0, 1, 0,
1907 1, 0, 1, 0, 1, 0,
1908 1, 0, 0, 1, 0, 0,
1909 0, 0, 0, 0, 0, 0,
1910 0, 0, 0, 0, 0, 0,
1911 0, 0, 0, 0, 0, 0,
1912 0, 0, 0, 0, 0, 0,
1913 0, 0, 0, 0, 0, 0,
1914 0, 0, 0, 0, 0, 0,
1915 0, 0, 0, 0, 0, 0,
1916 0, 0, 0, 0, 0, 0,
1917
1918 /* Char 127 */
1919 0, 0, 0, 0, 0, 0,
1920 0, 0, 0, 0, 0, 0,
1921 0, 0, 0, 0, 0, 0,
1922 0, 0, 0, 0, 0, 0,
1923 0, 0, 0, 0, 0, 0,
1924 0, 0, 0, 0, 0, 0,
1925 0, 0, 0, 0, 0, 0,
1926 0, 0, 0, 0, 0, 0,
1927 0, 0, 0, 0, 0, 0,
1928 0, 0, 0, 0, 0, 0,
1929 0, 0, 0, 0, 0, 0,
1930 0, 0, 0, 0, 0, 0,
1931 0, 0, 0, 0, 0, 0,
1932
1933 /* Char 128 */
1934 0, 0, 0, 0, 0, 0,
1935 0, 0, 0, 0, 0, 0,
1936 0, 0, 0, 0, 0, 0,
1937 0, 0, 0, 0, 0, 0,
1938 0, 0, 0, 0, 0, 0,
1939 0, 0, 0, 0, 0, 0,
1940 0, 0, 0, 0, 0, 0,
1941 0, 0, 0, 0, 0, 0,
1942 0, 0, 0, 0, 0, 0,
1943 0, 0, 0, 0, 0, 0,
1944 0, 0, 0, 0, 0, 0,
1945 0, 0, 0, 0, 0, 0,
1946 0, 0, 0, 0, 0, 0,
1947
1948 /* Char 129 */
1949 0, 0, 0, 0, 0, 0,
1950 0, 0, 0, 0, 0, 0,
1951 0, 0, 0, 0, 0, 0,
1952 0, 0, 0, 0, 0, 0,
1953 0, 0, 0, 0, 0, 0,
1954 0, 0, 0, 0, 0, 0,
1955 0, 0, 0, 0, 0, 0,
1956 0, 0, 0, 0, 0, 0,
1957 0, 0, 0, 0, 0, 0,
1958 0, 0, 0, 0, 0, 0,
1959 0, 0, 0, 0, 0, 0,
1960 0, 0, 0, 0, 0, 0,
1961 0, 0, 0, 0, 0, 0,
1962
1963 /* Char 130 */
1964 0, 0, 0, 0, 0, 0,
1965 0, 0, 0, 0, 0, 0,
1966 0, 0, 0, 0, 0, 0,
1967 0, 0, 0, 0, 0, 0,
1968 0, 0, 0, 0, 0, 0,
1969 0, 0, 0, 0, 0, 0,
1970 0, 0, 0, 0, 0, 0,
1971 0, 0, 0, 0, 0, 0,
1972 0, 0, 0, 0, 0, 0,
1973 0, 0, 0, 0, 0, 0,
1974 0, 0, 0, 0, 0, 0,
1975 0, 0, 0, 0, 0, 0,
1976 0, 0, 0, 0, 0, 0,
1977
1978 /* Char 131 */
1979 0, 0, 0, 0, 0, 0,
1980 0, 0, 0, 0, 0, 0,
1981 0, 0, 0, 0, 0, 0,
1982 0, 0, 0, 0, 0, 0,
1983 0, 0, 0, 0, 0, 0,
1984 0, 0, 0, 0, 0, 0,
1985 0, 0, 0, 0, 0, 0,
1986 0, 0, 0, 0, 0, 0,
1987 0, 0, 0, 0, 0, 0,
1988 0, 0, 0, 0, 0, 0,
1989 0, 0, 0, 0, 0, 0,
1990 0, 0, 0, 0, 0, 0,
1991 0, 0, 0, 0, 0, 0,
1992
1993 /* Char 132 */
1994 0, 0, 0, 0, 0, 0,
1995 0, 0, 0, 0, 0, 0,
1996 0, 0, 0, 0, 0, 0,
1997 0, 0, 0, 0, 0, 0,
1998 0, 0, 0, 0, 0, 0,
1999 0, 0, 0, 0, 0, 0,
2000 0, 0, 0, 0, 0, 0,
2001 0, 0, 0, 0, 0, 0,
2002 0, 0, 0, 0, 0, 0,
2003 0, 0, 0, 0, 0, 0,
2004 0, 0, 0, 0, 0, 0,
2005 0, 0, 0, 0, 0, 0,
2006 0, 0, 0, 0, 0, 0,
2007
2008 /* Char 133 */
2009 0, 0, 0, 0, 0, 0,
2010 0, 0, 0, 0, 0, 0,
2011 0, 0, 0, 0, 0, 0,
2012 0, 0, 0, 0, 0, 0,
2013 0, 0, 0, 0, 0, 0,
2014 0, 0, 0, 0, 0, 0,
2015 0, 0, 0, 0, 0, 0,
2016 0, 0, 0, 0, 0, 0,
2017 0, 0, 0, 0, 0, 0,
2018 0, 0, 0, 0, 0, 0,
2019 0, 0, 0, 0, 0, 0,
2020 0, 0, 0, 0, 0, 0,
2021 0, 0, 0, 0, 0, 0,
2022
2023 /* Char 134 */
2024 0, 0, 0, 0, 0, 0,
2025 0, 0, 0, 0, 0, 0,
2026 0, 0, 0, 0, 0, 0,
2027 0, 0, 0, 0, 0, 0,
2028 0, 0, 0, 0, 0, 0,
2029 0, 0, 0, 0, 0, 0,
2030 0, 0, 0, 0, 0, 0,
2031 0, 0, 0, 0, 0, 0,
2032 0, 0, 0, 0, 0, 0,
2033 0, 0, 0, 0, 0, 0,
2034 0, 0, 0, 0, 0, 0,
2035 0, 0, 0, 0, 0, 0,
2036 0, 0, 0, 0, 0, 0,
2037
2038 /* Char 135 */
2039 0, 0, 0, 0, 0, 0,
2040 0, 0, 0, 0, 0, 0,
2041 0, 0, 0, 0, 0, 0,
2042 0, 0, 0, 0, 0, 0,
2043 0, 0, 0, 0, 0, 0,
2044 0, 0, 0, 0, 0, 0,
2045 0, 0, 0, 0, 0, 0,
2046 0, 0, 0, 0, 0, 0,
2047 0, 0, 0, 0, 0, 0,
2048 0, 0, 0, 0, 0, 0,
2049 0, 0, 0, 0, 0, 0,
2050 0, 0, 0, 0, 0, 0,
2051 0, 0, 0, 0, 0, 0,
2052
2053 /* Char 136 */
2054 0, 0, 0, 0, 0, 0,
2055 0, 0, 0, 0, 0, 0,
2056 0, 0, 0, 0, 0, 0,
2057 0, 0, 0, 0, 0, 0,
2058 0, 0, 0, 0, 0, 0,
2059 0, 0, 0, 0, 0, 0,
2060 0, 0, 0, 0, 0, 0,
2061 0, 0, 0, 0, 0, 0,
2062 0, 0, 0, 0, 0, 0,
2063 0, 0, 0, 0, 0, 0,
2064 0, 0, 0, 0, 0, 0,
2065 0, 0, 0, 0, 0, 0,
2066 0, 0, 0, 0, 0, 0,
2067
2068 /* Char 137 */
2069 0, 0, 0, 0, 0, 0,
2070 0, 0, 0, 0, 0, 0,
2071 0, 0, 0, 0, 0, 0,
2072 0, 0, 0, 0, 0, 0,
2073 0, 0, 0, 0, 0, 0,
2074 0, 0, 0, 0, 0, 0,
2075 0, 0, 0, 0, 0, 0,
2076 0, 0, 0, 0, 0, 0,
2077 0, 0, 0, 0, 0, 0,
2078 0, 0, 0, 0, 0, 0,
2079 0, 0, 0, 0, 0, 0,
2080 0, 0, 0, 0, 0, 0,
2081 0, 0, 0, 0, 0, 0,
2082
2083 /* Char 138 */
2084 0, 0, 0, 0, 0, 0,
2085 0, 0, 0, 0, 0, 0,
2086 0, 0, 0, 0, 0, 0,
2087 0, 0, 0, 0, 0, 0,
2088 0, 0, 0, 0, 0, 0,
2089 0, 0, 0, 0, 0, 0,
2090 0, 0, 0, 0, 0, 0,
2091 0, 0, 0, 0, 0, 0,
2092 0, 0, 0, 0, 0, 0,
2093 0, 0, 0, 0, 0, 0,
2094 0, 0, 0, 0, 0, 0,
2095 0, 0, 0, 0, 0, 0,
2096 0, 0, 0, 0, 0, 0,
2097
2098 /* Char 139 */
2099 0, 0, 0, 0, 0, 0,
2100 0, 0, 0, 0, 0, 0,
2101 0, 0, 0, 0, 0, 0,
2102 0, 0, 0, 0, 0, 0,
2103 0, 0, 0, 0, 0, 0,
2104 0, 0, 0, 0, 0, 0,
2105 0, 0, 0, 0, 0, 0,
2106 0, 0, 0, 0, 0, 0,
2107 0, 0, 0, 0, 0, 0,
2108 0, 0, 0, 0, 0, 0,
2109 0, 0, 0, 0, 0, 0,
2110 0, 0, 0, 0, 0, 0,
2111 0, 0, 0, 0, 0, 0,
2112
2113 /* Char 140 */
2114 0, 0, 0, 0, 0, 0,
2115 0, 0, 0, 0, 0, 0,
2116 0, 0, 0, 0, 0, 0,
2117 0, 0, 0, 0, 0, 0,
2118 0, 0, 0, 0, 0, 0,
2119 0, 0, 0, 0, 0, 0,
2120 0, 0, 0, 0, 0, 0,
2121 0, 0, 0, 0, 0, 0,
2122 0, 0, 0, 0, 0, 0,
2123 0, 0, 0, 0, 0, 0,
2124 0, 0, 0, 0, 0, 0,
2125 0, 0, 0, 0, 0, 0,
2126 0, 0, 0, 0, 0, 0,
2127
2128 /* Char 141 */
2129 0, 0, 0, 0, 0, 0,
2130 0, 0, 0, 0, 0, 0,
2131 0, 0, 0, 0, 0, 0,
2132 0, 0, 0, 0, 0, 0,
2133 0, 0, 0, 0, 0, 0,
2134 0, 0, 0, 0, 0, 0,
2135 0, 0, 0, 0, 0, 0,
2136 0, 0, 0, 0, 0, 0,
2137 0, 0, 0, 0, 0, 0,
2138 0, 0, 0, 0, 0, 0,
2139 0, 0, 0, 0, 0, 0,
2140 0, 0, 0, 0, 0, 0,
2141 0, 0, 0, 0, 0, 0,
2142
2143 /* Char 142 */
2144 0, 0, 0, 0, 0, 0,
2145 0, 0, 0, 0, 0, 0,
2146 0, 0, 0, 0, 0, 0,
2147 0, 0, 0, 0, 0, 0,
2148 0, 0, 0, 0, 0, 0,
2149 0, 0, 0, 0, 0, 0,
2150 0, 0, 0, 0, 0, 0,
2151 0, 0, 0, 0, 0, 0,
2152 0, 0, 0, 0, 0, 0,
2153 0, 0, 0, 0, 0, 0,
2154 0, 0, 0, 0, 0, 0,
2155 0, 0, 0, 0, 0, 0,
2156 0, 0, 0, 0, 0, 0,
2157
2158 /* Char 143 */
2159 0, 0, 0, 0, 0, 0,
2160 0, 0, 0, 0, 0, 0,
2161 0, 0, 0, 0, 0, 0,
2162 0, 0, 0, 0, 0, 0,
2163 0, 0, 0, 0, 0, 0,
2164 0, 0, 0, 0, 0, 0,
2165 0, 0, 0, 0, 0, 0,
2166 0, 0, 0, 0, 0, 0,
2167 0, 0, 0, 0, 0, 0,
2168 0, 0, 0, 0, 0, 0,
2169 0, 0, 0, 0, 0, 0,
2170 0, 0, 0, 0, 0, 0,
2171 0, 0, 0, 0, 0, 0,
2172
2173 /* Char 144 */
2174 0, 0, 0, 0, 0, 0,
2175 0, 0, 0, 0, 0, 0,
2176 0, 0, 0, 0, 0, 0,
2177 0, 0, 0, 0, 0, 0,
2178 0, 0, 0, 0, 0, 0,
2179 0, 0, 0, 0, 0, 0,
2180 0, 0, 0, 0, 0, 0,
2181 0, 0, 0, 0, 0, 0,
2182 0, 0, 0, 0, 0, 0,
2183 0, 0, 0, 0, 0, 0,
2184 0, 0, 0, 0, 0, 0,
2185 0, 0, 0, 0, 0, 0,
2186 0, 0, 0, 0, 0, 0,
2187
2188 /* Char 145 */
2189 0, 0, 0, 0, 0, 0,
2190 0, 0, 0, 0, 0, 0,
2191 0, 0, 0, 0, 0, 0,
2192 0, 0, 0, 0, 0, 0,
2193 0, 0, 0, 0, 0, 0,
2194 0, 0, 0, 0, 0, 0,
2195 0, 0, 0, 0, 0, 0,
2196 0, 0, 0, 0, 0, 0,
2197 0, 0, 0, 0, 0, 0,
2198 0, 0, 0, 0, 0, 0,
2199 0, 0, 0, 0, 0, 0,
2200 0, 0, 0, 0, 0, 0,
2201 0, 0, 0, 0, 0, 0,
2202
2203 /* Char 146 */
2204 0, 0, 0, 0, 0, 0,
2205 0, 0, 0, 0, 0, 0,
2206 0, 0, 0, 0, 0, 0,
2207 0, 0, 0, 0, 0, 0,
2208 0, 0, 0, 0, 0, 0,
2209 0, 0, 0, 0, 0, 0,
2210 0, 0, 0, 0, 0, 0,
2211 0, 0, 0, 0, 0, 0,
2212 0, 0, 0, 0, 0, 0,
2213 0, 0, 0, 0, 0, 0,
2214 0, 0, 0, 0, 0, 0,
2215 0, 0, 0, 0, 0, 0,
2216 0, 0, 0, 0, 0, 0,
2217
2218 /* Char 147 */
2219 0, 0, 0, 0, 0, 0,
2220 0, 0, 0, 0, 0, 0,
2221 0, 0, 0, 0, 0, 0,
2222 0, 0, 0, 0, 0, 0,
2223 0, 0, 0, 0, 0, 0,
2224 0, 0, 0, 0, 0, 0,
2225 0, 0, 0, 0, 0, 0,
2226 0, 0, 0, 0, 0, 0,
2227 0, 0, 0, 0, 0, 0,
2228 0, 0, 0, 0, 0, 0,
2229 0, 0, 0, 0, 0, 0,
2230 0, 0, 0, 0, 0, 0,
2231 0, 0, 0, 0, 0, 0,
2232
2233 /* Char 148 */
2234 0, 0, 0, 0, 0, 0,
2235 0, 0, 0, 0, 0, 0,
2236 0, 0, 0, 0, 0, 0,
2237 0, 0, 0, 0, 0, 0,
2238 0, 0, 0, 0, 0, 0,
2239 0, 0, 0, 0, 0, 0,
2240 0, 0, 0, 0, 0, 0,
2241 0, 0, 0, 0, 0, 0,
2242 0, 0, 0, 0, 0, 0,
2243 0, 0, 0, 0, 0, 0,
2244 0, 0, 0, 0, 0, 0,
2245 0, 0, 0, 0, 0, 0,
2246 0, 0, 0, 0, 0, 0,
2247
2248 /* Char 149 */
2249 0, 0, 0, 0, 0, 0,
2250 0, 0, 0, 0, 0, 0,
2251 0, 0, 0, 0, 0, 0,
2252 0, 0, 0, 0, 0, 0,
2253 0, 0, 0, 0, 0, 0,
2254 0, 0, 0, 0, 0, 0,
2255 0, 0, 0, 0, 0, 0,
2256 0, 0, 0, 0, 0, 0,
2257 0, 0, 0, 0, 0, 0,
2258 0, 0, 0, 0, 0, 0,
2259 0, 0, 0, 0, 0, 0,
2260 0, 0, 0, 0, 0, 0,
2261 0, 0, 0, 0, 0, 0,
2262
2263 /* Char 150 */
2264 0, 0, 0, 0, 0, 0,
2265 0, 0, 0, 0, 0, 0,
2266 0, 0, 0, 0, 0, 0,
2267 0, 0, 0, 0, 0, 0,
2268 0, 0, 0, 0, 0, 0,
2269 0, 0, 0, 0, 0, 0,
2270 0, 0, 0, 0, 0, 0,
2271 0, 0, 0, 0, 0, 0,
2272 0, 0, 0, 0, 0, 0,
2273 0, 0, 0, 0, 0, 0,
2274 0, 0, 0, 0, 0, 0,
2275 0, 0, 0, 0, 0, 0,
2276 0, 0, 0, 0, 0, 0,
2277
2278 /* Char 151 */
2279 0, 0, 0, 0, 0, 0,
2280 0, 0, 0, 0, 0, 0,
2281 0, 0, 0, 0, 0, 0,
2282 0, 0, 0, 0, 0, 0,
2283 0, 0, 0, 0, 0, 0,
2284 0, 0, 0, 0, 0, 0,
2285 0, 0, 0, 0, 0, 0,
2286 0, 0, 0, 0, 0, 0,
2287 0, 0, 0, 0, 0, 0,
2288 0, 0, 0, 0, 0, 0,
2289 0, 0, 0, 0, 0, 0,
2290 0, 0, 0, 0, 0, 0,
2291 0, 0, 0, 0, 0, 0,
2292
2293 /* Char 152 */
2294 0, 0, 0, 0, 0, 0,
2295 0, 0, 0, 0, 0, 0,
2296 0, 0, 0, 0, 0, 0,
2297 0, 0, 0, 0, 0, 0,
2298 0, 0, 0, 0, 0, 0,
2299 0, 0, 0, 0, 0, 0,
2300 0, 0, 0, 0, 0, 0,
2301 0, 0, 0, 0, 0, 0,
2302 0, 0, 0, 0, 0, 0,
2303 0, 0, 0, 0, 0, 0,
2304 0, 0, 0, 0, 0, 0,
2305 0, 0, 0, 0, 0, 0,
2306 0, 0, 0, 0, 0, 0,
2307
2308 /* Char 153 */
2309 0, 0, 0, 0, 0, 0,
2310 0, 0, 0, 0, 0, 0,
2311 0, 0, 0, 0, 0, 0,
2312 0, 0, 0, 0, 0, 0,
2313 0, 0, 0, 0, 0, 0,
2314 0, 0, 0, 0, 0, 0,
2315 0, 0, 0, 0, 0, 0,
2316 0, 0, 0, 0, 0, 0,
2317 0, 0, 0, 0, 0, 0,
2318 0, 0, 0, 0, 0, 0,
2319 0, 0, 0, 0, 0, 0,
2320 0, 0, 0, 0, 0, 0,
2321 0, 0, 0, 0, 0, 0,
2322
2323 /* Char 154 */
2324 0, 0, 0, 0, 0, 0,
2325 0, 0, 0, 0, 0, 0,
2326 0, 0, 0, 0, 0, 0,
2327 0, 0, 0, 0, 0, 0,
2328 0, 0, 0, 0, 0, 0,
2329 0, 0, 0, 0, 0, 0,
2330 0, 0, 0, 0, 0, 0,
2331 0, 0, 0, 0, 0, 0,
2332 0, 0, 0, 0, 0, 0,
2333 0, 0, 0, 0, 0, 0,
2334 0, 0, 0, 0, 0, 0,
2335 0, 0, 0, 0, 0, 0,
2336 0, 0, 0, 0, 0, 0,
2337
2338 /* Char 155 */
2339 0, 0, 0, 0, 0, 0,
2340 0, 0, 0, 0, 0, 0,
2341 0, 0, 0, 0, 0, 0,
2342 0, 0, 0, 0, 0, 0,
2343 0, 0, 0, 0, 0, 0,
2344 0, 0, 0, 0, 0, 0,
2345 0, 0, 0, 0, 0, 0,
2346 0, 0, 0, 0, 0, 0,
2347 0, 0, 0, 0, 0, 0,
2348 0, 0, 0, 0, 0, 0,
2349 0, 0, 0, 0, 0, 0,
2350 0, 0, 0, 0, 0, 0,
2351 0, 0, 0, 0, 0, 0,
2352
2353 /* Char 156 */
2354 0, 0, 0, 0, 0, 0,
2355 0, 0, 0, 0, 0, 0,
2356 0, 0, 0, 0, 0, 0,
2357 0, 0, 0, 0, 0, 0,
2358 0, 0, 0, 0, 0, 0,
2359 0, 0, 0, 0, 0, 0,
2360 0, 0, 0, 0, 0, 0,
2361 0, 0, 0, 0, 0, 0,
2362 0, 0, 0, 0, 0, 0,
2363 0, 0, 0, 0, 0, 0,
2364 0, 0, 0, 0, 0, 0,
2365 0, 0, 0, 0, 0, 0,
2366 0, 0, 0, 0, 0, 0,
2367
2368 /* Char 157 */
2369 0, 0, 0, 0, 0, 0,
2370 0, 0, 0, 0, 0, 0,
2371 0, 0, 0, 0, 0, 0,
2372 0, 0, 0, 0, 0, 0,
2373 0, 0, 0, 0, 0, 0,
2374 0, 0, 0, 0, 0, 0,
2375 0, 0, 0, 0, 0, 0,
2376 0, 0, 0, 0, 0, 0,
2377 0, 0, 0, 0, 0, 0,
2378 0, 0, 0, 0, 0, 0,
2379 0, 0, 0, 0, 0, 0,
2380 0, 0, 0, 0, 0, 0,
2381 0, 0, 0, 0, 0, 0,
2382
2383 /* Char 158 */
2384 0, 0, 0, 0, 0, 0,
2385 0, 0, 0, 0, 0, 0,
2386 0, 0, 0, 0, 0, 0,
2387 0, 0, 0, 0, 0, 0,
2388 0, 0, 0, 0, 0, 0,
2389 0, 0, 0, 0, 0, 0,
2390 0, 0, 0, 0, 0, 0,
2391 0, 0, 0, 0, 0, 0,
2392 0, 0, 0, 0, 0, 0,
2393 0, 0, 0, 0, 0, 0,
2394 0, 0, 0, 0, 0, 0,
2395 0, 0, 0, 0, 0, 0,
2396 0, 0, 0, 0, 0, 0,
2397
2398 /* Char 159 */
2399 0, 0, 0, 0, 0, 0,
2400 0, 0, 0, 0, 0, 0,
2401 0, 0, 0, 0, 0, 0,
2402 0, 0, 0, 0, 0, 0,
2403 0, 0, 0, 0, 0, 0,
2404 0, 0, 0, 0, 0, 0,
2405 0, 0, 0, 0, 0, 0,
2406 0, 0, 0, 0, 0, 0,
2407 0, 0, 0, 0, 0, 0,
2408 0, 0, 0, 0, 0, 0,
2409 0, 0, 0, 0, 0, 0,
2410 0, 0, 0, 0, 0, 0,
2411 0, 0, 0, 0, 0, 0,
2412
2413 /* Char 160 */
2414 0, 0, 0, 0, 0, 0,
2415 0, 0, 0, 0, 0, 0,
2416 0, 0, 0, 0, 0, 0,
2417 0, 0, 0, 0, 0, 0,
2418 0, 0, 0, 0, 0, 0,
2419 0, 0, 0, 0, 0, 0,
2420 0, 0, 0, 0, 0, 0,
2421 0, 0, 0, 0, 0, 0,
2422 0, 0, 0, 0, 0, 0,
2423 0, 0, 0, 0, 0, 0,
2424 0, 0, 0, 0, 0, 0,
2425 0, 0, 0, 0, 0, 0,
2426 0, 0, 0, 0, 0, 0,
2427
2428 /* Char 161 */
2429 0, 0, 0, 0, 0, 0,
2430 0, 0, 0, 0, 0, 0,
2431 0, 0, 0, 0, 0, 0,
2432 0, 0, 1, 0, 0, 0,
2433 0, 1, 0, 1, 0, 0,
2434 1, 0, 0, 0, 1, 0,
2435 1, 0, 0, 0, 1, 0,
2436 1, 1, 1, 1, 1, 0,
2437 1, 0, 0, 0, 1, 0,
2438 1, 0, 0, 0, 1, 0,
2439 1, 0, 0, 0, 1, 0,
2440 0, 0, 0, 1, 0, 0,
2441 0, 0, 0, 0, 1, 1,
2442
2443 /* Char 162 */
2444 0, 0, 0, 0, 0, 0,
2445 1, 0, 0, 0, 1, 0,
2446 0, 1, 1, 1, 0, 0,
2447 0, 0, 0, 0, 0, 0,
2448 0, 0, 0, 0, 0, 0,
2449 0, 0, 0, 0, 0, 0,
2450 0, 0, 0, 0, 0, 0,
2451 0, 0, 0, 0, 0, 0,
2452 0, 0, 0, 0, 0, 0,
2453 0, 0, 0, 0, 0, 0,
2454 0, 0, 0, 0, 0, 0,
2455 0, 0, 0, 0, 0, 0,
2456 0, 0, 0, 0, 0, 0,
2457
2458 /* Char 163 */
2459 0, 0, 0, 0, 0, 0,
2460 0, 0, 0, 0, 0, 0,
2461 0, 0, 0, 0, 0, 0,
2462 0, 1, 0, 0, 0, 0,
2463 0, 1, 0, 0, 0, 0,
2464 0, 1, 1, 0, 0, 0,
2465 0, 1, 0, 0, 0, 0,
2466 1, 1, 0, 0, 0, 0,
2467 0, 1, 0, 0, 0, 0,
2468 0, 1, 0, 0, 0, 0,
2469 0, 1, 1, 1, 1, 0,
2470 0, 0, 0, 0, 0, 0,
2471 0, 0, 0, 0, 0, 0,
2472
2473 /* Char 164 */
2474 0, 0, 0, 0, 0, 0,
2475 0, 0, 0, 0, 0, 0,
2476 0, 0, 0, 0, 0, 0,
2477 1, 0, 0, 0, 1, 0,
2478 0, 1, 1, 1, 0, 0,
2479 0, 1, 0, 1, 0, 0,
2480 0, 1, 0, 1, 0, 0,
2481 0, 1, 1, 1, 0, 0,
2482 1, 0, 0, 0, 1, 0,
2483 0, 0, 0, 0, 0, 0,
2484 0, 0, 0, 0, 0, 0,
2485 0, 0, 0, 0, 0, 0,
2486 0, 0, 0, 0, 0, 0,
2487
2488 /* Char 165 */
2489 0, 0, 0, 0, 0, 0,
2490 0, 0, 0, 0, 0, 0,
2491 0, 0, 1, 1, 0, 0,
2492 1, 0, 0, 1, 0, 0,
2493 1, 0, 1, 0, 0, 0,
2494 1, 0, 0, 0, 0, 0,
2495 1, 0, 0, 0, 0, 0,
2496 1, 0, 0, 0, 0, 0,
2497 1, 0, 0, 0, 0, 0,
2498 1, 0, 0, 0, 0, 0,
2499 1, 1, 1, 1, 1, 0,
2500 0, 0, 0, 0, 0, 0,
2501 0, 0, 0, 0, 0, 0,
2502
2503 /* Char 166 */
2504 0, 0, 0, 1, 1, 0,
2505 0, 1, 1, 0, 0, 0,
2506 0, 0, 0, 0, 0, 0,
2507 0, 1, 1, 1, 0, 0,
2508 1, 0, 0, 0, 1, 0,
2509 1, 0, 0, 0, 0, 0,
2510 0, 1, 1, 0, 0, 0,
2511 0, 0, 0, 1, 0, 0,
2512 0, 0, 0, 0, 1, 0,
2513 1, 0, 0, 0, 1, 0,
2514 0, 1, 1, 1, 0, 0,
2515 0, 0, 0, 0, 0, 0,
2516 0, 0, 0, 0, 0, 0,
2517
2518 /* Char 167 */
2519 0, 0, 0, 0, 0, 0,
2520 0, 0, 0, 0, 0, 0,
2521 0, 0, 1, 1, 0, 0,
2522 0, 1, 0, 0, 1, 0,
2523 0, 1, 0, 0, 0, 0,
2524 0, 0, 1, 1, 0, 0,
2525 0, 1, 0, 0, 1, 0,
2526 0, 1, 0, 0, 1, 0,
2527 0, 0, 1, 1, 0, 0,
2528 0, 0, 0, 0, 1, 0,
2529 0, 1, 0, 0, 1, 0,
2530 0, 0, 1, 1, 0, 0,
2531 0, 0, 0, 0, 0, 0,
2532
2533 /* Char 168 */
2534 0, 0, 0, 0, 0, 0,
2535 0, 0, 0, 0, 0, 0,
2536 1, 1, 0, 1, 1, 0,
2537 0, 0, 0, 0, 0, 0,
2538 0, 0, 0, 0, 0, 0,
2539 0, 0, 0, 0, 0, 0,
2540 0, 0, 0, 0, 0, 0,
2541 0, 0, 0, 0, 0, 0,
2542 0, 0, 0, 0, 0, 0,
2543 0, 0, 0, 0, 0, 0,
2544 0, 0, 0, 0, 0, 0,
2545 0, 0, 0, 0, 0, 0,
2546 0, 0, 0, 0, 0, 0,
2547
2548 /* Char 169 */
2549 0, 1, 0, 1, 0, 0,
2550 0, 0, 1, 0, 0, 0,
2551 0, 0, 0, 0, 0, 0,
2552 0, 1, 1, 1, 0, 0,
2553 1, 0, 0, 0, 1, 0,
2554 1, 0, 0, 0, 0, 0,
2555 0, 1, 1, 0, 0, 0,
2556 0, 0, 0, 1, 0, 0,
2557 0, 0, 0, 0, 1, 0,
2558 1, 0, 0, 0, 1, 0,
2559 0, 1, 1, 1, 0, 0,
2560 0, 0, 0, 0, 0, 0,
2561 0, 0, 0, 0, 0, 0,
2562
2563 /* Char 170 */
2564 0, 0, 0, 0, 0, 0,
2565 0, 0, 0, 0, 0, 0,
2566 0, 0, 0, 0, 0, 0,
2567 0, 1, 1, 1, 0, 0,
2568 1, 0, 0, 0, 1, 0,
2569 1, 0, 0, 0, 0, 0,
2570 0, 1, 1, 0, 0, 0,
2571 0, 0, 0, 1, 0, 0,
2572 0, 0, 0, 0, 1, 0,
2573 1, 0, 0, 0, 1, 0,
2574 0, 1, 1, 1, 0, 0,
2575 0, 0, 1, 0, 0, 0,
2576 0, 1, 0, 0, 0, 0,
2577
2578 /* Char 171 */
2579 0, 1, 0, 1, 0, 0,
2580 0, 0, 1, 0, 0, 0,
2581 0, 0, 0, 0, 0, 0,
2582 1, 1, 1, 1, 1, 0,
2583 0, 0, 1, 0, 0, 0,
2584 0, 0, 1, 0, 0, 0,
2585 0, 0, 1, 0, 0, 0,
2586 0, 0, 1, 0, 0, 0,
2587 0, 0, 1, 0, 0, 0,
2588 0, 0, 1, 0, 0, 0,
2589 0, 0, 1, 0, 0, 0,
2590 0, 0, 0, 0, 0, 0,
2591 0, 0, 0, 0, 0, 0,
2592
2593 /* Char 172 */
2594 0, 0, 0, 1, 1, 0,
2595 0, 1, 1, 0, 0, 0,
2596 0, 0, 0, 0, 0, 0,
2597 1, 1, 1, 1, 1, 0,
2598 0, 0, 0, 0, 1, 0,
2599 0, 0, 0, 1, 0, 0,
2600 0, 0, 1, 0, 0, 0,
2601 0, 0, 1, 0, 0, 0,
2602 0, 1, 0, 0, 0, 0,
2603 1, 0, 0, 0, 0, 0,
2604 1, 1, 1, 1, 1, 0,
2605 0, 0, 0, 0, 0, 0,
2606 0, 0, 0, 0, 0, 0,
2607
2608 /* Char 173 */
2609 0, 0, 0, 0, 0, 0,
2610 0, 0, 0, 0, 0, 0,
2611 0, 0, 0, 0, 0, 0,
2612 0, 0, 0, 0, 0, 0,
2613 0, 0, 0, 0, 0, 0,
2614 0, 0, 0, 0, 0, 0,
2615 1, 1, 1, 1, 1, 0,
2616 0, 0, 0, 0, 0, 0,
2617 0, 0, 0, 0, 0, 0,
2618 0, 0, 0, 0, 0, 0,
2619 0, 0, 0, 0, 0, 0,
2620 0, 0, 0, 0, 0, 0,
2621 0, 0, 0, 0, 0, 0,
2622
2623 /* Char 174 */
2624 0, 1, 0, 1, 0, 0,
2625 0, 0, 1, 0, 0, 0,
2626 0, 0, 0, 0, 0, 0,
2627 1, 1, 1, 1, 1, 0,
2628 0, 0, 0, 0, 1, 0,
2629 0, 0, 0, 1, 0, 0,
2630 0, 0, 1, 0, 0, 0,
2631 0, 0, 1, 0, 0, 0,
2632 0, 1, 0, 0, 0, 0,
2633 1, 0, 0, 0, 0, 0,
2634 1, 1, 1, 1, 1, 0,
2635 0, 0, 0, 0, 0, 0,
2636 0, 0, 0, 0, 0, 0,
2637
2638 /* Char 175 */
2639 0, 0, 1, 0, 0, 0,
2640 0, 0, 1, 0, 0, 0,
2641 0, 0, 0, 0, 0, 0,
2642 1, 1, 1, 1, 1, 0,
2643 0, 0, 0, 0, 1, 0,
2644 0, 0, 0, 1, 0, 0,
2645 0, 0, 1, 0, 0, 0,
2646 0, 0, 1, 0, 0, 0,
2647 0, 1, 0, 0, 0, 0,
2648 1, 0, 0, 0, 0, 0,
2649 1, 1, 1, 1, 1, 0,
2650 0, 0, 0, 0, 0, 0,
2651 0, 0, 0, 0, 0, 0,
2652
2653 /* Char 176 */
2654 0, 0, 0, 0, 0, 0,
2655 0, 0, 0, 0, 0, 0,
2656 0, 0, 1, 1, 0, 0,
2657 0, 1, 0, 0, 1, 0,
2658 0, 1, 0, 0, 1, 0,
2659 0, 0, 1, 1, 0, 0,
2660 0, 0, 0, 0, 0, 0,
2661 0, 0, 0, 0, 0, 0,
2662 0, 0, 0, 0, 0, 0,
2663 0, 0, 0, 0, 0, 0,
2664 0, 0, 0, 0, 0, 0,
2665 0, 0, 0, 0, 0, 0,
2666 0, 0, 0, 0, 0, 0,
2667
2668 /* Char 177 */
2669 0, 0, 0, 0, 0, 0,
2670 0, 0, 0, 0, 0, 0,
2671 0, 0, 0, 0, 0, 0,
2672 0, 0, 0, 0, 0, 0,
2673 0, 0, 0, 0, 0, 0,
2674 0, 1, 1, 1, 0, 0,
2675 0, 0, 0, 0, 1, 0,
2676 0, 1, 1, 1, 1, 0,
2677 1, 0, 0, 0, 1, 0,
2678 1, 0, 0, 1, 1, 0,
2679 0, 1, 1, 0, 1, 0,
2680 0, 0, 0, 1, 0, 0,
2681 0, 0, 0, 0, 1, 1,
2682
2683 /* Char 178 */
2684 0, 0, 0, 0, 0, 0,
2685 0, 0, 0, 0, 0, 0,
2686 0, 0, 0, 0, 0, 0,
2687 0, 0, 0, 0, 0, 0,
2688 0, 0, 0, 0, 0, 0,
2689 0, 0, 0, 0, 0, 0,
2690 0, 0, 0, 0, 0, 0,
2691 0, 0, 0, 0, 0, 0,
2692 0, 0, 0, 0, 0, 0,
2693 0, 0, 0, 0, 0, 0,
2694 0, 0, 0, 1, 0, 0,
2695 0, 0, 1, 0, 0, 0,
2696 0, 0, 0, 1, 1, 0,
2697
2698 /* Char 179 */
2699 0, 0, 0, 0, 0, 0,
2700 0, 0, 0, 0, 0, 0,
2701 0, 0, 0, 0, 0, 0,
2702 0, 1, 1, 0, 0, 0,
2703 0, 0, 1, 0, 0, 0,
2704 0, 0, 1, 1, 0, 0,
2705 0, 0, 1, 0, 0, 0,
2706 0, 1, 1, 0, 0, 0,
2707 0, 0, 1, 0, 0, 0,
2708 0, 0, 1, 0, 0, 0,
2709 0, 1, 1, 1, 0, 0,
2710 0, 0, 0, 0, 0, 0,
2711 0, 0, 0, 0, 0, 0,
2712
2713 /* Char 180 */
2714 0, 0, 0, 0, 0, 0,
2715 0, 0, 0, 1, 0, 0,
2716 0, 0, 1, 0, 0, 0,
2717 0, 1, 0, 0, 0, 0,
2718 0, 0, 0, 0, 0, 0,
2719 0, 0, 0, 0, 0, 0,
2720 0, 0, 0, 0, 0, 0,
2721 0, 0, 0, 0, 0, 0,
2722 0, 0, 0, 0, 0, 0,
2723 0, 0, 0, 0, 0, 0,
2724 0, 0, 0, 0, 0, 0,
2725 0, 0, 0, 0, 0, 0,
2726 0, 0, 0, 0, 0, 0,
2727
2728 /* Char 181 */
2729 0, 0, 0, 0, 0, 0,
2730 0, 0, 0, 0, 0, 0,
2731 0, 0, 0, 0, 1, 1,
2732 0, 1, 1, 0, 0, 1,
2733 0, 0, 1, 0, 1, 0,
2734 0, 0, 1, 0, 0, 0,
2735 0, 0, 1, 0, 0, 0,
2736 0, 0, 1, 0, 0, 0,
2737 0, 0, 1, 0, 0, 0,
2738 0, 0, 1, 0, 0, 0,
2739 0, 1, 1, 1, 0, 0,
2740 0, 0, 0, 0, 0, 0,
2741 0, 0, 0, 0, 0, 0,
2742
2743 /* Char 182 */
2744 0, 0, 0, 0, 0, 0,
2745 0, 0, 0, 0, 0, 0,
2746 0, 0, 0, 1, 1, 0,
2747 0, 1, 1, 0, 0, 0,
2748 0, 0, 0, 0, 0, 0,
2749 0, 1, 1, 1, 0, 0,
2750 1, 0, 0, 0, 1, 0,
2751 0, 1, 1, 0, 0, 0,
2752 0, 0, 0, 1, 0, 0,
2753 1, 0, 0, 0, 1, 0,
2754 0, 1, 1, 1, 0, 0,
2755 0, 0, 0, 0, 0, 0,
2756 0, 0, 0, 0, 0, 0,
2757
2758 /* Char 183 */
2759 0, 0, 0, 0, 0, 0,
2760 1, 0, 0, 0, 1, 0,
2761 0, 1, 0, 1, 0, 0,
2762 0, 0, 1, 0, 0, 0,
2763 0, 0, 0, 0, 0, 0,
2764 0, 0, 0, 0, 0, 0,
2765 0, 0, 0, 0, 0, 0,
2766 0, 0, 0, 0, 0, 0,
2767 0, 0, 0, 0, 0, 0,
2768 0, 0, 0, 0, 0, 0,
2769 0, 0, 0, 0, 0, 0,
2770 0, 0, 0, 0, 0, 0,
2771 0, 0, 0, 0, 0, 0,
2772
2773 /* Char 184 */
2774 0, 0, 0, 0, 0, 0,
2775 0, 0, 0, 0, 0, 0,
2776 0, 0, 0, 0, 0, 0,
2777 0, 0, 0, 0, 0, 0,
2778 0, 0, 0, 0, 0, 0,
2779 0, 0, 0, 0, 0, 0,
2780 0, 0, 0, 0, 0, 0,
2781 0, 0, 0, 0, 0, 0,
2782 0, 0, 0, 0, 0, 0,
2783 0, 0, 0, 0, 0, 0,
2784 0, 0, 1, 0, 0, 0,
2785 0, 0, 0, 1, 0, 0,
2786 0, 1, 1, 0, 0, 0,
2787
2788 /* Char 185 */
2789 0, 0, 0, 0, 0, 0,
2790 0, 0, 0, 0, 0, 0,
2791 0, 1, 0, 1, 0, 0,
2792 0, 0, 1, 0, 0, 0,
2793 0, 0, 0, 0, 0, 0,
2794 0, 1, 1, 1, 0, 0,
2795 1, 0, 0, 0, 1, 0,
2796 0, 1, 1, 0, 0, 0,
2797 0, 0, 0, 1, 0, 0,
2798 1, 0, 0, 0, 1, 0,
2799 0, 1, 1, 1, 0, 0,
2800 0, 0, 0, 0, 0, 0,
2801 0, 0, 0, 0, 0, 0,
2802
2803 /* Char 186 */
2804 0, 0, 0, 0, 0, 0,
2805 0, 0, 0, 0, 0, 0,
2806 0, 0, 0, 0, 0, 0,
2807 0, 0, 0, 0, 0, 0,
2808 0, 0, 0, 0, 0, 0,
2809 0, 1, 1, 1, 0, 0,
2810 1, 0, 0, 0, 1, 0,
2811 0, 1, 1, 0, 0, 0,
2812 0, 0, 0, 1, 0, 0,
2813 1, 0, 0, 0, 1, 0,
2814 0, 1, 1, 1, 0, 0,
2815 0, 0, 1, 0, 0, 0,
2816 0, 1, 0, 0, 0, 0,
2817
2818 /* Char 187 */
2819 0, 0, 0, 0, 0, 0,
2820 0, 0, 0, 1, 1, 0,
2821 0, 0, 0, 0, 1, 0,
2822 0, 1, 0, 1, 0, 0,
2823 0, 1, 0, 0, 0, 0,
2824 1, 1, 1, 1, 0, 0,
2825 0, 1, 0, 0, 0, 0,
2826 0, 1, 0, 0, 0, 0,
2827 0, 1, 0, 0, 0, 0,
2828 0, 1, 0, 0, 1, 0,
2829 0, 0, 1, 1, 0, 0,
2830 0, 0, 0, 0, 0, 0,
2831 0, 0, 0, 0, 0, 0,
2832
2833 /* Char 188 */
2834 0, 0, 0, 0, 0, 0,
2835 0, 0, 0, 0, 0, 0,
2836 0, 0, 0, 1, 1, 0,
2837 0, 1, 1, 0, 0, 0,
2838 0, 0, 0, 0, 0, 0,
2839 1, 1, 1, 1, 1, 0,
2840 0, 0, 0, 1, 0, 0,
2841 0, 0, 1, 0, 0, 0,
2842 0, 1, 0, 0, 0, 0,
2843 1, 0, 0, 0, 0, 0,
2844 1, 1, 1, 1, 1, 0,
2845 0, 0, 0, 0, 0, 0,
2846 0, 0, 0, 0, 0, 0,
2847
2848 /* Char 189 */
2849 0, 0, 0, 0, 0, 0,
2850 0, 0, 1, 0, 0, 1,
2851 0, 1, 0, 0, 1, 0,
2852 1, 0, 0, 1, 0, 0,
2853 0, 0, 0, 0, 0, 0,
2854 0, 0, 0, 0, 0, 0,
2855 0, 0, 0, 0, 0, 0,
2856 0, 0, 0, 0, 0, 0,
2857 0, 0, 0, 0, 0, 0,
2858 0, 0, 0, 0, 0, 0,
2859 0, 0, 0, 0, 0, 0,
2860 0, 0, 0, 0, 0, 0,
2861 0, 0, 0, 0, 0, 0,
2862
2863 /* Char 190 */
2864 0, 0, 0, 0, 0, 0,
2865 0, 0, 0, 0, 0, 0,
2866 0, 1, 0, 1, 0, 0,
2867 0, 0, 1, 0, 0, 0,
2868 0, 0, 0, 0, 0, 0,
2869 1, 1, 1, 1, 1, 0,
2870 0, 0, 0, 1, 0, 0,
2871 0, 0, 1, 0, 0, 0,
2872 0, 1, 0, 0, 0, 0,
2873 1, 0, 0, 0, 0, 0,
2874 1, 1, 1, 1, 1, 0,
2875 0, 0, 0, 0, 0, 0,
2876 0, 0, 0, 0, 0, 0,
2877
2878 /* Char 191 */
2879 0, 0, 0, 0, 0, 0,
2880 0, 0, 0, 0, 0, 0,
2881 0, 0, 1, 0, 0, 0,
2882 0, 0, 1, 0, 0, 0,
2883 0, 0, 0, 0, 0, 0,
2884 1, 1, 1, 1, 1, 0,
2885 0, 0, 0, 1, 0, 0,
2886 0, 0, 1, 0, 0, 0,
2887 0, 1, 0, 0, 0, 0,
2888 1, 0, 0, 0, 0, 0,
2889 1, 1, 1, 1, 1, 0,
2890 0, 0, 0, 0, 0, 0,
2891 0, 0, 0, 0, 0, 0,
2892
2893 /* Char 192 */
2894 0, 0, 0, 1, 1, 0,
2895 0, 1, 1, 0, 0, 0,
2896 0, 0, 0, 0, 0, 0,
2897 1, 1, 1, 1, 0, 0,
2898 1, 0, 0, 0, 1, 0,
2899 1, 0, 0, 0, 1, 0,
2900 1, 0, 0, 0, 1, 0,
2901 1, 1, 1, 1, 0, 0,
2902 1, 0, 1, 0, 0, 0,
2903 1, 0, 0, 1, 0, 0,
2904 1, 0, 0, 0, 1, 0,
2905 0, 0, 0, 0, 0, 0,
2906 0, 0, 0, 0, 0, 0,
2907
2908 /* Char 193 */
2909 0, 0, 0, 1, 1, 0,
2910 0, 1, 1, 0, 0, 0,
2911 0, 0, 0, 0, 0, 0,
2912 0, 0, 1, 0, 0, 0,
2913 0, 1, 0, 1, 0, 0,
2914 1, 0, 0, 0, 1, 0,
2915 1, 0, 0, 0, 1, 0,
2916 1, 1, 1, 1, 1, 0,
2917 1, 0, 0, 0, 1, 0,
2918 1, 0, 0, 0, 1, 0,
2919 1, 0, 0, 0, 1, 0,
2920 0, 0, 0, 0, 0, 0,
2921 0, 0, 0, 0, 0, 0,
2922
2923 /* Char 194 */
2924 0, 0, 1, 0, 0, 0,
2925 0, 1, 0, 1, 0, 0,
2926 1, 0, 0, 0, 1, 0,
2927 0, 0, 1, 0, 0, 0,
2928 0, 1, 0, 1, 0, 0,
2929 1, 0, 0, 0, 1, 0,
2930 1, 0, 0, 0, 1, 0,
2931 1, 1, 1, 1, 1, 0,
2932 1, 0, 0, 0, 1, 0,
2933 1, 0, 0, 0, 1, 0,
2934 1, 0, 0, 0, 1, 0,
2935 0, 0, 0, 0, 0, 0,
2936 0, 0, 0, 0, 0, 0,
2937
2938 /* Char 195 */
2939 1, 0, 0, 0, 1, 0,
2940 0, 1, 1, 1, 0, 0,
2941 0, 0, 0, 0, 0, 0,
2942 0, 0, 1, 0, 0, 0,
2943 0, 1, 0, 1, 0, 0,
2944 1, 0, 0, 0, 1, 0,
2945 1, 0, 0, 0, 1, 0,
2946 1, 1, 1, 1, 1, 0,
2947 1, 0, 0, 0, 1, 0,
2948 1, 0, 0, 0, 1, 0,
2949 1, 0, 0, 0, 1, 0,
2950 0, 0, 0, 0, 0, 0,
2951 0, 0, 0, 0, 0, 0,
2952
2953 /* Char 196 */
2954 1, 0, 0, 0, 1, 0,
2955 1, 0, 0, 0, 1, 0,
2956 0, 0, 0, 0, 0, 0,
2957 0, 0, 1, 0, 0, 0,
2958 0, 1, 0, 1, 0, 0,
2959 1, 0, 0, 0, 1, 0,
2960 1, 0, 0, 0, 1, 0,
2961 1, 1, 1, 1, 1, 0,
2962 1, 0, 0, 0, 1, 0,
2963 1, 0, 0, 0, 1, 0,
2964 1, 0, 0, 0, 1, 0,
2965 0, 0, 0, 0, 0, 0,
2966 0, 0, 0, 0, 0, 0,
2967
2968 /* Char 197 */
2969 0, 0, 0, 1, 1, 0,
2970 0, 1, 1, 0, 0, 0,
2971 0, 0, 0, 0, 0, 0,
2972 1, 0, 0, 0, 0, 0,
2973 1, 0, 0, 0, 0, 0,
2974 1, 0, 0, 0, 0, 0,
2975 1, 0, 0, 0, 0, 0,
2976 1, 0, 0, 0, 0, 0,
2977 1, 0, 0, 0, 0, 0,
2978 1, 0, 0, 0, 0, 0,
2979 1, 1, 1, 1, 1, 0,
2980 0, 0, 0, 0, 0, 0,
2981 0, 0, 0, 0, 0, 0,
2982
2983 /* Char 198 */
2984 0, 0, 0, 1, 1, 0,
2985 0, 1, 1, 0, 0, 0,
2986 0, 0, 0, 0, 0, 0,
2987 0, 1, 1, 1, 0, 0,
2988 1, 0, 0, 0, 1, 0,
2989 1, 0, 0, 0, 0, 0,
2990 1, 0, 0, 0, 0, 0,
2991 1, 0, 0, 0, 0, 0,
2992 1, 0, 0, 0, 0, 0,
2993 1, 0, 0, 0, 1, 0,
2994 0, 1, 1, 1, 0, 0,
2995 0, 0, 0, 0, 0, 0,
2996 0, 0, 0, 0, 0, 0,
2997
2998 /* Char 199 */
2999 0, 0, 0, 0, 0, 0,
3000 0, 0, 0, 0, 0, 0,
3001 0, 0, 0, 0, 0, 0,
3002 0, 1, 1, 1, 0, 0,
3003 1, 0, 0, 0, 1, 0,
3004 1, 0, 0, 0, 0, 0,
3005 1, 0, 0, 0, 0, 0,
3006 1, 0, 0, 0, 0, 0,
3007 1, 0, 0, 0, 0, 0,
3008 1, 0, 0, 0, 1, 0,
3009 0, 1, 1, 1, 0, 0,
3010 0, 0, 0, 1, 0, 0,
3011 0, 1, 1, 0, 0, 0,
3012
3013 /* Char 200 */
3014 0, 1, 0, 1, 0, 0,
3015 0, 0, 1, 0, 0, 0,
3016 0, 0, 0, 0, 0, 0,
3017 0, 1, 1, 1, 0, 0,
3018 1, 0, 0, 0, 1, 0,
3019 1, 0, 0, 0, 0, 0,
3020 1, 0, 0, 0, 0, 0,
3021 1, 0, 0, 0, 0, 0,
3022 1, 0, 0, 0, 0, 0,
3023 1, 0, 0, 0, 1, 0,
3024 0, 1, 1, 1, 0, 0,
3025 0, 0, 0, 0, 0, 0,
3026 0, 0, 0, 0, 0, 0,
3027
3028 /* Char 201 */
3029 0, 0, 0, 1, 1, 0,
3030 0, 1, 1, 0, 0, 0,
3031 0, 0, 0, 0, 0, 0,
3032 1, 1, 1, 1, 1, 0,
3033 1, 0, 0, 0, 0, 0,
3034 1, 0, 0, 0, 0, 0,
3035 1, 1, 1, 1, 0, 0,
3036 1, 0, 0, 0, 0, 0,
3037 1, 0, 0, 0, 0, 0,
3038 1, 0, 0, 0, 0, 0,
3039 1, 1, 1, 1, 1, 0,
3040 0, 0, 0, 0, 0, 0,
3041 0, 0, 0, 0, 0, 0,
3042
3043 /* Char 202 */
3044 0, 0, 0, 0, 0, 0,
3045 0, 0, 0, 0, 0, 0,
3046 0, 0, 0, 0, 0, 0,
3047 1, 1, 1, 1, 1, 0,
3048 1, 0, 0, 0, 0, 0,
3049 1, 0, 0, 0, 0, 0,
3050 1, 1, 1, 1, 0, 0,
3051 1, 0, 0, 0, 0, 0,
3052 1, 0, 0, 0, 0, 0,
3053 1, 0, 0, 0, 0, 0,
3054 1, 1, 1, 1, 1, 0,
3055 0, 0, 1, 0, 0, 0,
3056 0, 0, 0, 1, 1, 0,
3057
3058 /* Char 203 */
3059 0, 1, 0, 1, 0, 0,
3060 0, 1, 0, 1, 0, 0,
3061 0, 0, 0, 0, 0, 0,
3062 1, 1, 1, 1, 1, 0,
3063 1, 0, 0, 0, 0, 0,
3064 1, 0, 0, 0, 0, 0,
3065 1, 1, 1, 1, 0, 0,
3066 1, 0, 0, 0, 0, 0,
3067 1, 0, 0, 0, 0, 0,
3068 1, 0, 0, 0, 0, 0,
3069 1, 1, 1, 1, 1, 0,
3070 0, 0, 0, 0, 0, 0,
3071 0, 0, 0, 0, 0, 0,
3072
3073 /* Char 204 */
3074 0, 1, 0, 1, 0, 0,
3075 0, 0, 1, 0, 0, 0,
3076 0, 0, 0, 0, 0, 0,
3077 1, 1, 1, 1, 1, 0,
3078 1, 0, 0, 0, 0, 0,
3079 1, 0, 0, 0, 0, 0,
3080 1, 1, 1, 1, 0, 0,
3081 1, 0, 0, 0, 0, 0,
3082 1, 0, 0, 0, 0, 0,
3083 1, 0, 0, 0, 0, 0,
3084 1, 1, 1, 1, 1, 0,
3085 0, 0, 0, 0, 0, 0,
3086 0, 0, 0, 0, 0, 0,
3087
3088 /* Char 205 */
3089 0, 0, 0, 1, 1, 0,
3090 0, 1, 1, 0, 0, 0,
3091 0, 0, 0, 0, 0, 0,
3092 0, 1, 1, 1, 0, 0,
3093 0, 0, 1, 0, 0, 0,
3094 0, 0, 1, 0, 0, 0,
3095 0, 0, 1, 0, 0, 0,
3096 0, 0, 1, 0, 0, 0,
3097 0, 0, 1, 0, 0, 0,
3098 0, 0, 1, 0, 0, 0,
3099 0, 1, 1, 1, 0, 0,
3100 0, 0, 0, 0, 0, 0,
3101 0, 0, 0, 0, 0, 0,
3102
3103 /* Char 206 */
3104 0, 0, 1, 0, 0, 0,
3105 0, 1, 0, 1, 0, 0,
3106 0, 0, 0, 0, 0, 0,
3107 0, 1, 1, 1, 0, 0,
3108 0, 0, 1, 0, 0, 0,
3109 0, 0, 1, 0, 0, 0,
3110 0, 0, 1, 0, 0, 0,
3111 0, 0, 1, 0, 0, 0,
3112 0, 0, 1, 0, 0, 0,
3113 0, 0, 1, 0, 0, 0,
3114 0, 1, 1, 1, 0, 0,
3115 0, 0, 0, 0, 0, 0,
3116 0, 0, 0, 0, 0, 0,
3117
3118 /* Char 207 */
3119 0, 1, 0, 1, 0, 0,
3120 0, 0, 1, 0, 0, 0,
3121 0, 0, 0, 0, 0, 0,
3122 1, 1, 1, 1, 0, 0,
3123 1, 0, 0, 0, 1, 0,
3124 1, 0, 0, 0, 1, 0,
3125 1, 0, 0, 0, 1, 0,
3126 1, 0, 0, 0, 1, 0,
3127 1, 0, 0, 0, 1, 0,
3128 1, 0, 0, 0, 1, 0,
3129 1, 1, 1, 1, 0, 0,
3130 0, 0, 0, 0, 0, 0,
3131 0, 0, 0, 0, 0, 0,
3132
3133 /* Char 208 */
3134 0, 0, 0, 0, 0, 0,
3135 0, 0, 0, 0, 0, 0,
3136 0, 0, 0, 0, 0, 0,
3137 1, 1, 1, 1, 0, 0,
3138 0, 1, 0, 0, 1, 0,
3139 0, 1, 0, 0, 1, 0,
3140 1, 1, 1, 0, 1, 0,
3141 0, 1, 0, 0, 1, 0,
3142 0, 1, 0, 0, 1, 0,
3143 0, 1, 0, 0, 1, 0,
3144 1, 1, 1, 1, 0, 0,
3145 0, 0, 0, 0, 0, 0,
3146 0, 0, 0, 0, 0, 0,
3147
3148 /* Char 209 */
3149 0, 0, 0, 1, 1, 0,
3150 0, 1, 1, 0, 0, 0,
3151 0, 0, 0, 0, 0, 0,
3152 1, 0, 0, 0, 1, 0,
3153 1, 1, 0, 0, 1, 0,
3154 1, 1, 0, 0, 1, 0,
3155 1, 0, 1, 0, 1, 0,
3156 1, 0, 1, 0, 1, 0,
3157 1, 0, 0, 1, 1, 0,
3158 1, 0, 0, 1, 1, 0,
3159 1, 0, 0, 0, 1, 0,
3160 0, 0, 0, 0, 0, 0,
3161 0, 0, 0, 0, 0, 0,
3162
3163 /* Char 210 */
3164 0, 1, 0, 1, 0, 0,
3165 0, 0, 1, 0, 0, 0,
3166 0, 0, 0, 0, 0, 0,
3167 1, 0, 0, 0, 1, 0,
3168 1, 1, 0, 0, 1, 0,
3169 1, 1, 0, 0, 1, 0,
3170 1, 0, 1, 0, 1, 0,
3171 1, 0, 1, 0, 1, 0,
3172 1, 0, 0, 1, 1, 0,
3173 1, 0, 0, 1, 1, 0,
3174 1, 0, 0, 0, 1, 0,
3175 0, 0, 0, 0, 0, 0,
3176 0, 0, 0, 0, 0, 0,
3177
3178 /* Char 211 */
3179 0, 0, 0, 1, 1, 0,
3180 0, 1, 1, 0, 0, 0,
3181 0, 0, 0, 0, 0, 0,
3182 0, 1, 1, 1, 0, 0,
3183 1, 0, 0, 0, 1, 0,
3184 1, 0, 0, 0, 1, 0,
3185 1, 0, 0, 0, 1, 0,
3186 1, 0, 0, 0, 1, 0,
3187 1, 0, 0, 0, 1, 0,
3188 1, 0, 0, 0, 1, 0,
3189 0, 1, 1, 1, 0, 0,
3190 0, 0, 0, 0, 0, 0,
3191 0, 0, 0, 0, 0, 0,
3192
3193 /* Char 212 */
3194 0, 0, 1, 0, 0, 0,
3195 0, 1, 0, 1, 0, 0,
3196 0, 0, 0, 0, 0, 0,
3197 0, 1, 1, 1, 0, 0,
3198 1, 0, 0, 0, 1, 0,
3199 1, 0, 0, 0, 1, 0,
3200 1, 0, 0, 0, 1, 0,
3201 1, 0, 0, 0, 1, 0,
3202 1, 0, 0, 0, 1, 0,
3203 1, 0, 0, 0, 1, 0,
3204 0, 1, 1, 1, 0, 0,
3205 0, 0, 0, 0, 0, 0,
3206 0, 0, 0, 0, 0, 0,
3207
3208 /* Char 213 */
3209 0, 0, 1, 0, 0, 1,
3210 0, 1, 0, 0, 1, 0,
3211 0, 0, 0, 0, 0, 0,
3212 0, 1, 1, 1, 0, 0,
3213 1, 0, 0, 0, 1, 0,
3214 1, 0, 0, 0, 1, 0,
3215 1, 0, 0, 0, 1, 0,
3216 1, 0, 0, 0, 1, 0,
3217 1, 0, 0, 0, 1, 0,
3218 1, 0, 0, 0, 1, 0,
3219 0, 1, 1, 1, 0, 0,
3220 0, 0, 0, 0, 0, 0,
3221 0, 0, 0, 0, 0, 0,
3222
3223 /* Char 214 */
3224 0, 1, 0, 1, 0, 0,
3225 0, 1, 0, 1, 0, 0,
3226 0, 0, 0, 0, 0, 0,
3227 0, 1, 1, 1, 0, 0,
3228 1, 0, 0, 0, 1, 0,
3229 1, 0, 0, 0, 1, 0,
3230 1, 0, 0, 0, 1, 0,
3231 1, 0, 0, 0, 1, 0,
3232 1, 0, 0, 0, 1, 0,
3233 1, 0, 0, 0, 1, 0,
3234 0, 1, 1, 1, 0, 0,
3235 0, 0, 0, 0, 0, 0,
3236 0, 0, 0, 0, 0, 0,
3237
3238 /* Char 215 */
3239 0, 0, 0, 0, 0, 0,
3240 0, 0, 0, 0, 0, 0,
3241 0, 0, 0, 0, 0, 0,
3242 0, 0, 0, 0, 0, 0,
3243 0, 0, 0, 0, 0, 0,
3244 1, 0, 0, 0, 1, 0,
3245 0, 1, 0, 1, 0, 0,
3246 0, 0, 1, 0, 0, 0,
3247 0, 1, 0, 1, 0, 0,
3248 1, 0, 0, 0, 1, 0,
3249 0, 0, 0, 0, 0, 0,
3250 0, 0, 0, 0, 0, 0,
3251 0, 0, 0, 0, 0, 0,
3252
3253 /* Char 216 */
3254 0, 1, 0, 1, 0, 0,
3255 0, 0, 1, 0, 0, 0,
3256 0, 0, 0, 0, 0, 0,
3257 1, 1, 1, 1, 0, 0,
3258 1, 0, 0, 0, 1, 0,
3259 1, 0, 0, 0, 1, 0,
3260 1, 0, 0, 0, 1, 0,
3261 1, 1, 1, 1, 0, 0,
3262 1, 0, 1, 0, 0, 0,
3263 1, 0, 0, 1, 0, 0,
3264 1, 0, 0, 0, 1, 0,
3265 0, 0, 0, 0, 0, 0,
3266 0, 0, 0, 0, 0, 0,
3267
3268 /* Char 217 */
3269 0, 0, 1, 0, 0, 0,
3270 0, 1, 0, 1, 0, 0,
3271 0, 0, 1, 0, 0, 0,
3272 1, 0, 0, 0, 1, 0,
3273 1, 0, 0, 0, 1, 0,
3274 1, 0, 0, 0, 1, 0,
3275 1, 0, 0, 0, 1, 0,
3276 1, 0, 0, 0, 1, 0,
3277 1, 0, 0, 0, 1, 0,
3278 1, 0, 0, 0, 1, 0,
3279 0, 1, 1, 1, 0, 0,
3280 0, 0, 0, 0, 0, 0,
3281 0, 0, 0, 0, 0, 0,
3282
3283 /* Char 218 */
3284 0, 0, 0, 1, 1, 0,
3285 0, 1, 1, 0, 0, 0,
3286 0, 0, 0, 0, 0, 0,
3287 1, 0, 0, 0, 1, 0,
3288 1, 0, 0, 0, 1, 0,
3289 1, 0, 0, 0, 1, 0,
3290 1, 0, 0, 0, 1, 0,
3291 1, 0, 0, 0, 1, 0,
3292 1, 0, 0, 0, 1, 0,
3293 1, 0, 0, 0, 1, 0,
3294 0, 1, 1, 1, 0, 0,
3295 0, 0, 0, 0, 0, 0,
3296 0, 0, 0, 0, 0, 0,
3297
3298 /* Char 219 */
3299 0, 0, 1, 0, 0, 1,
3300 0, 1, 0, 0, 1, 0,
3301 0, 0, 0, 0, 0, 0,
3302 1, 0, 0, 0, 1, 0,
3303 1, 0, 0, 0, 1, 0,
3304 1, 0, 0, 0, 1, 0,
3305 1, 0, 0, 0, 1, 0,
3306 1, 0, 0, 0, 1, 0,
3307 1, 0, 0, 0, 1, 0,
3308 1, 0, 0, 0, 1, 0,
3309 0, 1, 1, 1, 0, 0,
3310 0, 0, 0, 0, 0, 0,
3311 0, 0, 0, 0, 0, 0,
3312
3313 /* Char 220 */
3314 0, 1, 0, 1, 0, 0,
3315 0, 1, 0, 1, 0, 0,
3316 0, 0, 0, 0, 0, 0,
3317 1, 0, 0, 0, 1, 0,
3318 1, 0, 0, 0, 1, 0,
3319 1, 0, 0, 0, 1, 0,
3320 1, 0, 0, 0, 1, 0,
3321 1, 0, 0, 0, 1, 0,
3322 1, 0, 0, 0, 1, 0,
3323 1, 0, 0, 0, 1, 0,
3324 0, 1, 1, 1, 0, 0,
3325 0, 0, 0, 0, 0, 0,
3326 0, 0, 0, 0, 0, 0,
3327
3328 /* Char 221 */
3329 0, 0, 0, 1, 1, 0,
3330 0, 1, 1, 0, 0, 0,
3331 0, 0, 0, 0, 0, 0,
3332 1, 0, 0, 0, 1, 0,
3333 1, 0, 0, 0, 1, 0,
3334 0, 1, 0, 1, 0, 0,
3335 0, 1, 0, 1, 0, 0,
3336 0, 0, 1, 0, 0, 0,
3337 0, 0, 1, 0, 0, 0,
3338 0, 0, 1, 0, 0, 0,
3339 0, 0, 1, 0, 0, 0,
3340 0, 0, 0, 0, 0, 0,
3341 0, 0, 0, 0, 0, 0,
3342
3343 /* Char 222 */
3344 0, 0, 0, 0, 0, 0,
3345 0, 0, 0, 0, 0, 0,
3346 0, 0, 0, 0, 0, 0,
3347 1, 1, 1, 1, 1, 0,
3348 0, 0, 1, 0, 0, 0,
3349 0, 0, 1, 0, 0, 0,
3350 0, 0, 1, 0, 0, 0,
3351 0, 0, 1, 0, 0, 0,
3352 0, 0, 1, 0, 0, 0,
3353 0, 0, 1, 0, 0, 0,
3354 0, 0, 1, 0, 0, 0,
3355 0, 0, 0, 1, 0, 0,
3356 0, 0, 1, 0, 0, 0,
3357
3358 /* Char 223 */
3359 0, 0, 0, 0, 0, 0,
3360 0, 0, 0, 0, 0, 0,
3361 0, 0, 0, 0, 0, 0,
3362 0, 1, 1, 1, 0, 0,
3363 1, 0, 0, 0, 1, 0,
3364 1, 0, 0, 0, 1, 0,
3365 1, 1, 1, 1, 0, 0,
3366 1, 0, 0, 0, 1, 0,
3367 1, 0, 0, 0, 1, 0,
3368 1, 1, 0, 0, 1, 0,
3369 1, 0, 1, 1, 0, 0,
3370 1, 0, 0, 0, 0, 0,
3371 0, 0, 0, 0, 0, 0,
3372
3373 /* Char 224 */
3374 0, 0, 0, 0, 0, 0,
3375 0, 0, 0, 0, 0, 0,
3376 0, 0, 0, 1, 1, 0,
3377 0, 1, 1, 0, 0, 0,
3378 0, 0, 0, 0, 0, 0,
3379 1, 0, 1, 1, 0, 0,
3380 1, 1, 0, 0, 1, 0,
3381 1, 0, 0, 0, 0, 0,
3382 1, 0, 0, 0, 0, 0,
3383 1, 0, 0, 0, 0, 0,
3384 1, 0, 0, 0, 0, 0,
3385 0, 0, 0, 0, 0, 0,
3386 0, 0, 0, 0, 0, 0,
3387
3388 /* Char 225 */
3389 0, 0, 0, 0, 0, 0,
3390 0, 0, 0, 0, 0, 0,
3391 0, 0, 0, 1, 1, 0,
3392 0, 1, 1, 0, 0, 0,
3393 0, 0, 0, 0, 0, 0,
3394 0, 1, 1, 1, 0, 0,
3395 0, 0, 0, 0, 1, 0,
3396 0, 1, 1, 1, 1, 0,
3397 1, 0, 0, 0, 1, 0,
3398 1, 0, 0, 1, 1, 0,
3399 0, 1, 1, 0, 1, 0,
3400 0, 0, 0, 0, 0, 0,
3401 0, 0, 0, 0, 0, 0,
3402
3403 /* Char 226 */
3404 0, 0, 0, 0, 0, 0,
3405 0, 0, 0, 0, 0, 0,
3406 0, 0, 1, 0, 0, 0,
3407 0, 1, 0, 1, 0, 0,
3408 0, 0, 0, 0, 0, 0,
3409 0, 1, 1, 1, 0, 0,
3410 0, 0, 0, 0, 1, 0,
3411 0, 1, 1, 1, 1, 0,
3412 1, 0, 0, 0, 1, 0,
3413 1, 0, 0, 1, 1, 0,
3414 0, 1, 1, 0, 1, 0,
3415 0, 0, 0, 0, 0, 0,
3416 0, 0, 0, 0, 0, 0,
3417
3418 /* Char 227 */
3419 0, 0, 0, 0, 0, 0,
3420 0, 0, 0, 0, 0, 0,
3421 1, 0, 0, 0, 1, 0,
3422 0, 1, 1, 1, 0, 0,
3423 0, 0, 0, 0, 0, 0,
3424 0, 1, 1, 1, 0, 0,
3425 0, 0, 0, 0, 1, 0,
3426 0, 1, 1, 1, 1, 0,
3427 1, 0, 0, 0, 1, 0,
3428 1, 0, 0, 1, 1, 0,
3429 0, 1, 1, 0, 1, 0,
3430 0, 0, 0, 0, 0, 0,
3431 0, 0, 0, 0, 0, 0,
3432
3433 /* Char 228 */
3434 0, 0, 0, 0, 0, 0,
3435 0, 0, 0, 0, 0, 0,
3436 0, 1, 0, 0, 1, 0,
3437 0, 1, 0, 0, 1, 0,
3438 0, 0, 0, 0, 0, 0,
3439 0, 1, 1, 1, 0, 0,
3440 0, 0, 0, 0, 1, 0,
3441 0, 1, 1, 1, 1, 0,
3442 1, 0, 0, 0, 1, 0,
3443 1, 0, 0, 1, 1, 0,
3444 0, 1, 1, 0, 1, 0,
3445 0, 0, 0, 0, 0, 0,
3446 0, 0, 0, 0, 0, 0,
3447
3448 /* Char 229 */
3449 0, 0, 0, 1, 1, 0,
3450 0, 1, 1, 0, 0, 0,
3451 0, 0, 0, 0, 0, 0,
3452 0, 1, 1, 0, 0, 0,
3453 0, 0, 1, 0, 0, 0,
3454 0, 0, 1, 0, 0, 0,
3455 0, 0, 1, 0, 0, 0,
3456 0, 0, 1, 0, 0, 0,
3457 0, 0, 1, 0, 0, 0,
3458 0, 0, 1, 0, 0, 0,
3459 0, 1, 1, 1, 0, 0,
3460 0, 0, 0, 0, 0, 0,
3461 0, 0, 0, 0, 0, 0,
3462
3463 /* Char 230 */
3464 0, 0, 0, 0, 0, 0,
3465 0, 0, 0, 0, 0, 0,
3466 0, 0, 0, 1, 1, 0,
3467 0, 1, 1, 0, 0, 0,
3468 0, 0, 0, 0, 0, 0,
3469 0, 1, 1, 1, 0, 0,
3470 1, 0, 0, 0, 1, 0,
3471 1, 0, 0, 0, 0, 0,
3472 1, 0, 0, 0, 0, 0,
3473 1, 0, 0, 0, 1, 0,
3474 0, 1, 1, 1, 0, 0,
3475 0, 0, 0, 0, 0, 0,
3476 0, 0, 0, 0, 0, 0,
3477
3478 /* Char 231 */
3479 0, 0, 0, 0, 0, 0,
3480 0, 0, 0, 0, 0, 0,
3481 0, 0, 0, 0, 0, 0,
3482 0, 0, 0, 0, 0, 0,
3483 0, 0, 0, 0, 0, 0,
3484 0, 1, 1, 1, 0, 0,
3485 1, 0, 0, 0, 1, 0,
3486 1, 0, 0, 0, 0, 0,
3487 1, 0, 0, 0, 0, 0,
3488 1, 0, 0, 0, 1, 0,
3489 0, 1, 1, 1, 0, 0,
3490 0, 0, 0, 1, 0, 0,
3491 0, 1, 1, 0, 0, 0,
3492
3493 /* Char 232 */
3494 0, 0, 0, 0, 0, 0,
3495 0, 0, 0, 0, 0, 0,
3496 0, 1, 0, 1, 0, 0,
3497 0, 0, 1, 0, 0, 0,
3498 0, 0, 0, 0, 0, 0,
3499 0, 1, 1, 1, 0, 0,
3500 1, 0, 0, 0, 1, 0,
3501 1, 0, 0, 0, 0, 0,
3502 1, 0, 0, 0, 0, 0,
3503 1, 0, 0, 0, 1, 0,
3504 0, 1, 1, 1, 0, 0,
3505 0, 0, 0, 0, 0, 0,
3506 0, 0, 0, 0, 0, 0,
3507
3508 /* Char 233 */
3509 0, 0, 0, 0, 0, 0,
3510 0, 0, 0, 0, 0, 0,
3511 0, 0, 0, 1, 1, 0,
3512 0, 1, 1, 0, 0, 0,
3513 0, 0, 0, 0, 0, 0,
3514 0, 1, 1, 1, 0, 0,
3515 1, 0, 0, 0, 1, 0,
3516 1, 1, 1, 1, 1, 0,
3517 1, 0, 0, 0, 0, 0,
3518 1, 0, 0, 0, 0, 0,
3519 0, 1, 1, 1, 0, 0,
3520 0, 0, 0, 0, 0, 0,
3521 0, 0, 0, 0, 0, 0,
3522
3523 /* Char 234 */
3524 0, 0, 0, 0, 0, 0,
3525 0, 0, 0, 0, 0, 0,
3526 0, 0, 0, 0, 0, 0,
3527 0, 0, 0, 0, 0, 0,
3528 0, 0, 0, 0, 0, 0,
3529 0, 1, 1, 1, 0, 0,
3530 1, 0, 0, 0, 1, 0,
3531 1, 1, 1, 1, 1, 0,
3532 1, 0, 0, 0, 0, 0,
3533 1, 0, 0, 0, 0, 0,
3534 0, 1, 1, 1, 0, 0,
3535 0, 0, 1, 0, 0, 0,
3536 0, 0, 0, 1, 1, 0,
3537
3538 /* Char 235 */
3539 0, 0, 0, 0, 0, 0,
3540 0, 0, 0, 0, 0, 0,
3541 0, 1, 0, 1, 0, 0,
3542 0, 1, 0, 1, 0, 0,
3543 0, 0, 0, 0, 0, 0,
3544 0, 1, 1, 1, 0, 0,
3545 1, 0, 0, 0, 1, 0,
3546 1, 1, 1, 1, 1, 0,
3547 1, 0, 0, 0, 0, 0,
3548 1, 0, 0, 0, 0, 0,
3549 0, 1, 1, 1, 0, 0,
3550 0, 0, 0, 0, 0, 0,
3551 0, 0, 0, 0, 0, 0,
3552
3553 /* Char 236 */
3554 0, 0, 0, 0, 0, 0,
3555 0, 0, 0, 0, 0, 0,
3556 0, 1, 0, 1, 0, 0,
3557 0, 0, 1, 0, 0, 0,
3558 0, 0, 0, 0, 0, 0,
3559 0, 1, 1, 1, 0, 0,
3560 1, 0, 0, 0, 1, 0,
3561 1, 1, 1, 1, 1, 0,
3562 1, 0, 0, 0, 0, 0,
3563 1, 0, 0, 0, 0, 0,
3564 0, 1, 1, 1, 0, 0,
3565 0, 0, 0, 0, 0, 0,
3566 0, 0, 0, 0, 0, 0,
3567
3568 /* Char 237 */
3569 0, 0, 0, 0, 0, 0,
3570 0, 0, 0, 0, 0, 0,
3571 0, 0, 0, 1, 1, 0,
3572 0, 1, 1, 0, 0, 0,
3573 0, 0, 0, 0, 0, 0,
3574 0, 1, 1, 0, 0, 0,
3575 0, 0, 1, 0, 0, 0,
3576 0, 0, 1, 0, 0, 0,
3577 0, 0, 1, 0, 0, 0,
3578 0, 0, 1, 0, 0, 0,
3579 0, 1, 1, 1, 0, 0,
3580 0, 0, 0, 0, 0, 0,
3581 0, 0, 0, 0, 0, 0,
3582
3583 /* Char 238 */
3584 0, 0, 0, 0, 0, 0,
3585 0, 0, 0, 0, 0, 0,
3586 0, 0, 1, 0, 0, 0,
3587 0, 1, 0, 1, 0, 0,
3588 0, 0, 0, 0, 0, 0,
3589 0, 1, 1, 0, 0, 0,
3590 0, 0, 1, 0, 0, 0,
3591 0, 0, 1, 0, 0, 0,
3592 0, 0, 1, 0, 0, 0,
3593 0, 0, 1, 0, 0, 0,
3594 0, 1, 1, 1, 0, 0,
3595 0, 0, 0, 0, 0, 0,
3596 0, 0, 0, 0, 0, 0,
3597
3598 /* Char 239 */
3599 0, 0, 0, 0, 0, 0,
3600 0, 0, 0, 0, 1, 1,
3601 0, 0, 0, 0, 0, 1,
3602 0, 0, 0, 1, 1, 0,
3603 0, 0, 0, 1, 0, 0,
3604 0, 1, 0, 1, 0, 0,
3605 1, 0, 1, 1, 0, 0,
3606 1, 0, 0, 1, 0, 0,
3607 1, 0, 0, 1, 0, 0,
3608 1, 0, 0, 1, 0, 0,
3609 0, 1, 1, 0, 1, 0,
3610 0, 0, 0, 0, 0, 0,
3611 0, 0, 0, 0, 0, 0,
3612
3613 /* Char 240 */
3614 0, 0, 0, 0, 0, 0,
3615 0, 0, 0, 0, 0, 0,
3616 0, 0, 0, 0, 1, 0,
3617 0, 0, 0, 1, 1, 1,
3618 0, 0, 0, 0, 1, 0,
3619 0, 1, 1, 0, 1, 0,
3620 1, 0, 0, 1, 1, 0,
3621 1, 0, 0, 0, 1, 0,
3622 1, 0, 0, 0, 1, 0,
3623 1, 0, 0, 1, 1, 0,
3624 0, 1, 1, 0, 1, 0,
3625 0, 0, 0, 0, 0, 0,
3626 0, 0, 0, 0, 0, 0,
3627
3628 /* Char 241 */
3629 0, 0, 0, 0, 0, 0,
3630 0, 0, 0, 0, 0, 0,
3631 0, 0, 0, 1, 1, 0,
3632 0, 1, 1, 0, 0, 0,
3633 0, 0, 0, 0, 0, 0,
3634 1, 0, 1, 1, 0, 0,
3635 1, 1, 0, 0, 1, 0,
3636 1, 0, 0, 0, 1, 0,
3637 1, 0, 0, 0, 1, 0,
3638 1, 0, 0, 0, 1, 0,
3639 1, 0, 0, 0, 1, 0,
3640 0, 0, 0, 0, 0, 0,
3641 0, 0, 0, 0, 0, 0,
3642
3643 /* Char 242 */
3644 0, 0, 0, 0, 0, 0,
3645 0, 0, 0, 0, 0, 0,
3646 0, 1, 0, 1, 0, 0,
3647 0, 0, 1, 0, 0, 0,
3648 0, 0, 0, 0, 0, 0,
3649 1, 0, 1, 1, 0, 0,
3650 1, 1, 0, 0, 1, 0,
3651 1, 0, 0, 0, 1, 0,
3652 1, 0, 0, 0, 1, 0,
3653 1, 0, 0, 0, 1, 0,
3654 1, 0, 0, 0, 1, 0,
3655 0, 0, 0, 0, 0, 0,
3656 0, 0, 0, 0, 0, 0,
3657
3658 /* Char 243 */
3659 0, 0, 0, 0, 0, 0,
3660 0, 0, 0, 0, 0, 0,
3661 0, 0, 0, 1, 1, 0,
3662 0, 1, 1, 0, 0, 0,
3663 0, 0, 0, 0, 0, 0,
3664 0, 1, 1, 1, 0, 0,
3665 1, 0, 0, 0, 1, 0,
3666 1, 0, 0, 0, 1, 0,
3667 1, 0, 0, 0, 1, 0,
3668 1, 0, 0, 0, 1, 0,
3669 0, 1, 1, 1, 0, 0,
3670 0, 0, 0, 0, 0, 0,
3671 0, 0, 0, 0, 0, 0,
3672
3673 /* Char 244 */
3674 0, 0, 0, 0, 0, 0,
3675 0, 0, 0, 0, 0, 0,
3676 0, 0, 1, 0, 0, 0,
3677 0, 1, 0, 1, 0, 0,
3678 0, 0, 0, 0, 0, 0,
3679 0, 1, 1, 1, 0, 0,
3680 1, 0, 0, 0, 1, 0,
3681 1, 0, 0, 0, 1, 0,
3682 1, 0, 0, 0, 1, 0,
3683 1, 0, 0, 0, 1, 0,
3684 0, 1, 1, 1, 0, 0,
3685 0, 0, 0, 0, 0, 0,
3686 0, 0, 0, 0, 0, 0,
3687
3688 /* Char 245 */
3689 0, 0, 0, 0, 0, 0,
3690 0, 0, 0, 0, 0, 0,
3691 0, 1, 0, 0, 1, 0,
3692 1, 0, 0, 1, 0, 0,
3693 0, 0, 0, 0, 0, 0,
3694 0, 1, 1, 1, 0, 0,
3695 1, 0, 0, 0, 1, 0,
3696 1, 0, 0, 0, 1, 0,
3697 1, 0, 0, 0, 1, 0,
3698 1, 0, 0, 0, 1, 0,
3699 0, 1, 1, 1, 0, 0,
3700 0, 0, 0, 0, 0, 0,
3701 0, 0, 0, 0, 0, 0,
3702
3703 /* Char 246 */
3704 0, 0, 0, 0, 0, 0,
3705 0, 0, 0, 0, 0, 0,
3706 0, 1, 0, 1, 0, 0,
3707 0, 1, 0, 1, 0, 0,
3708 0, 0, 0, 0, 0, 0,
3709 0, 1, 1, 1, 0, 0,
3710 1, 0, 0, 0, 1, 0,
3711 1, 0, 0, 0, 1, 0,
3712 1, 0, 0, 0, 1, 0,
3713 1, 0, 0, 0, 1, 0,
3714 0, 1, 1, 1, 0, 0,
3715 0, 0, 0, 0, 0, 0,
3716 0, 0, 0, 0, 0, 0,
3717
3718 /* Char 247 */
3719 0, 0, 0, 0, 0, 0,
3720 0, 0, 0, 0, 0, 0,
3721 0, 0, 0, 0, 0, 0,
3722 0, 0, 1, 0, 0, 0,
3723 0, 0, 1, 0, 0, 0,
3724 0, 0, 0, 0, 0, 0,
3725 1, 1, 1, 1, 1, 0,
3726 0, 0, 0, 0, 0, 0,
3727 0, 0, 1, 0, 0, 0,
3728 0, 0, 1, 0, 0, 0,
3729 0, 0, 0, 0, 0, 0,
3730 0, 0, 0, 0, 0, 0,
3731 0, 0, 0, 0, 0, 0,
3732
3733 /* Char 248 */
3734 0, 0, 0, 0, 0, 0,
3735 0, 0, 0, 0, 0, 0,
3736 0, 1, 0, 1, 0, 0,
3737 0, 0, 1, 0, 0, 0,
3738 0, 0, 0, 0, 0, 0,
3739 1, 0, 1, 1, 0, 0,
3740 1, 1, 0, 0, 1, 0,
3741 1, 0, 0, 0, 0, 0,
3742 1, 0, 0, 0, 0, 0,
3743 1, 0, 0, 0, 0, 0,
3744 1, 0, 0, 0, 0, 0,
3745 0, 0, 0, 0, 0, 0,
3746 0, 0, 0, 0, 0, 0,
3747
3748 /* Char 249 */
3749 0, 0, 0, 0, 0, 0,
3750 0, 0, 0, 0, 0, 0,
3751 0, 0, 1, 0, 0, 0,
3752 0, 1, 0, 1, 0, 0,
3753 0, 0, 1, 0, 0, 0,
3754 1, 0, 0, 0, 1, 0,
3755 1, 0, 0, 0, 1, 0,
3756 1, 0, 0, 0, 1, 0,
3757 1, 0, 0, 0, 1, 0,
3758 1, 0, 0, 1, 1, 0,
3759 0, 1, 1, 0, 1, 0,
3760 0, 0, 0, 0, 0, 0,
3761 0, 0, 0, 0, 0, 0,
3762
3763 /* Char 250 */
3764 0, 0, 0, 0, 0, 0,
3765 0, 0, 0, 0, 0, 0,
3766 0, 0, 0, 1, 1, 0,
3767 0, 1, 1, 0, 0, 0,
3768 0, 0, 0, 0, 0, 0,
3769 1, 0, 0, 0, 1, 0,
3770 1, 0, 0, 0, 1, 0,
3771 1, 0, 0, 0, 1, 0,
3772 1, 0, 0, 0, 1, 0,
3773 1, 0, 0, 1, 1, 0,
3774 0, 1, 1, 0, 1, 0,
3775 0, 0, 0, 0, 0, 0,
3776 0, 0, 0, 0, 0, 0,
3777
3778 /* Char 251 */
3779 0, 0, 0, 0, 0, 0,
3780 0, 0, 0, 0, 0, 0,
3781 0, 1, 0, 0, 1, 0,
3782 1, 0, 0, 1, 0, 0,
3783 0, 0, 0, 0, 0, 0,
3784 1, 0, 0, 0, 1, 0,
3785 1, 0, 0, 0, 1, 0,
3786 1, 0, 0, 0, 1, 0,
3787 1, 0, 0, 0, 1, 0,
3788 1, 0, 0, 1, 1, 0,
3789 0, 1, 1, 0, 1, 0,
3790 0, 0, 0, 0, 0, 0,
3791 0, 0, 0, 0, 0, 0,
3792
3793 /* Char 252 */
3794 0, 0, 0, 0, 0, 0,
3795 0, 0, 0, 0, 0, 0,
3796 0, 1, 0, 1, 0, 0,
3797 0, 1, 0, 1, 0, 0,
3798 0, 0, 0, 0, 0, 0,
3799 1, 0, 0, 0, 1, 0,
3800 1, 0, 0, 0, 1, 0,
3801 1, 0, 0, 0, 1, 0,
3802 1, 0, 0, 0, 1, 0,
3803 1, 0, 0, 1, 1, 0,
3804 0, 1, 1, 0, 1, 0,
3805 0, 0, 0, 0, 0, 0,
3806 0, 0, 0, 0, 0, 0,
3807
3808 /* Char 253 */
3809 0, 0, 0, 0, 0, 0,
3810 0, 0, 0, 0, 0, 0,
3811 0, 0, 0, 1, 1, 0,
3812 0, 1, 1, 0, 0, 0,
3813 0, 0, 0, 0, 0, 0,
3814 1, 0, 0, 0, 1, 0,
3815 1, 0, 0, 0, 1, 0,
3816 1, 0, 0, 0, 1, 0,
3817 1, 0, 0, 1, 1, 0,
3818 0, 1, 1, 0, 1, 0,
3819 0, 0, 0, 0, 1, 0,
3820 0, 0, 0, 1, 0, 0,
3821 1, 1, 1, 0, 0, 0,
3822
3823 /* Char 254 */
3824 0, 0, 0, 0, 0, 0,
3825 0, 0, 0, 0, 0, 0,
3826 0, 0, 0, 0, 0, 0,
3827 0, 1, 0, 0, 0, 0,
3828 0, 1, 0, 0, 0, 0,
3829 1, 1, 1, 1, 0, 0,
3830 0, 1, 0, 0, 0, 0,
3831 0, 1, 0, 0, 0, 0,
3832 0, 1, 0, 0, 0, 0,
3833 0, 1, 0, 0, 1, 0,
3834 0, 0, 1, 1, 0, 0,
3835 0, 0, 0, 1, 0, 0,
3836 0, 0, 1, 0, 0, 0,
3837
3838 /* Char 255 */
3839 0, 0, 0, 0, 0, 0,
3840 0, 0, 0, 0, 0, 0,
3841 0, 0, 1, 0, 0, 0,
3842 0, 0, 1, 0, 0, 0,
3843 0, 0, 0, 0, 0, 0,
3844 0, 0, 0, 0, 0, 0,
3845 0, 0, 0, 0, 0, 0,
3846 0, 0, 0, 0, 0, 0,
3847 0, 0, 0, 0, 0, 0,
3848 0, 0, 0, 0, 0, 0,
3849 0, 0, 0, 0, 0, 0,
3850 0, 0, 0, 0, 0, 0,
3851 0, 0, 0, 0, 0, 0,
3852
3853
3854 };
3855
3856 gdFont gdFontSmallRep = {
3857 256,
3858 0,
3859 6,
3860 13,
3861 gdFontSmallData
3862 };
3863
3864 BGD_EXPORT_DATA_IMPL gdFontPtr gdFontSmall = &gdFontSmallRep;
3865
3866 BGD_DECLARE(gdFontPtr)
3867 gdFontGetSmall (void)
3868 {
3869 return gdFontSmall;
3870 }
3871
3872 /* This file has not been truncated. */
0 #ifdef __cplusplus
1 extern "C" {
2 #endif
3
4
5 #ifndef _GDFONTS_H_
6 #define _GDFONTS_H_ 1
7
8 #ifdef __cplusplus
9 extern "C"
10 {
11 #endif
12
13 /*
14 This is a header file for gd font, generated using
15 bdftogd version 0.5 by Jan Pazdziora, adelton@fi.muni.cz
16 from bdf font
17 -misc-fixed-medium-r-semicondensed-sans-12-116-75-75-c-60-iso8859-2
18 at Thu Jan 8 14:13:20 1998.
19 No copyright info was found in the original bdf.
20 */
21
22
23 #include "gd.h"
24
25 BGD_EXPORT_DATA_PROT gdFontPtr gdFontSmall;
26 BGD_DECLARE(gdFontPtr) gdFontGetSmall(void);
27
28 #ifdef __cplusplus
29 }
30 #endif
31
32 #endif
33
34 #ifdef __cplusplus
35 }
36 #endif
0
1
2 /*
3 This is a header file for gd font, generated using
4 bdftogd version 0.5 by Jan Pazdziora, adelton@fi.muni.cz
5 from bdf font
6 -Misc-Fixed-Medium-R-Normal--8-80-75-75-C-50-ISO8859-2
7 at Thu Jan 8 13:49:54 1998.
8 The original bdf was holding following copyright:
9 "Libor Skarvada, libor@informatics.muni.cz"
10 */
11
12
13 #include "gdfontt.h"
14
15 char gdFontTinyData[] = {
16 /* Char 0 */
17 0, 0, 0, 0, 0,
18 0, 0, 0, 0, 0,
19 0, 0, 0, 0, 0,
20 0, 0, 0, 0, 0,
21 0, 0, 0, 0, 0,
22 0, 0, 0, 0, 0,
23 0, 0, 0, 0, 0,
24 0, 0, 0, 0, 0,
25
26 /* Char 1 */
27 0, 0, 0, 0, 0,
28 0, 0, 1, 0, 0,
29 0, 1, 1, 1, 0,
30 1, 1, 1, 1, 1,
31 0, 1, 1, 1, 0,
32 0, 0, 1, 0, 0,
33 0, 0, 0, 0, 0,
34 0, 0, 0, 0, 0,
35
36 /* Char 2 */
37 0, 1, 0, 1, 0,
38 1, 0, 1, 0, 0,
39 0, 1, 0, 1, 0,
40 1, 0, 1, 0, 0,
41 0, 1, 0, 1, 0,
42 1, 0, 1, 0, 0,
43 0, 1, 0, 1, 0,
44 1, 0, 1, 0, 0,
45
46 /* Char 3 */
47 0, 1, 0, 1, 0,
48 0, 1, 0, 1, 0,
49 0, 1, 1, 1, 0,
50 0, 1, 0, 1, 0,
51 0, 1, 0, 1, 0,
52 0, 0, 1, 1, 1,
53 0, 0, 0, 1, 0,
54 0, 0, 0, 1, 0,
55
56 /* Char 4 */
57 1, 1, 1, 0, 0,
58 1, 0, 0, 0, 0,
59 1, 1, 0, 0, 0,
60 1, 0, 1, 1, 1,
61 1, 0, 1, 0, 0,
62 0, 0, 1, 1, 0,
63 0, 0, 1, 0, 0,
64 0, 0, 1, 0, 0,
65
66 /* Char 5 */
67 0, 1, 1, 0, 0,
68 1, 0, 0, 0, 0,
69 0, 1, 1, 0, 0,
70 0, 0, 0, 0, 0,
71 0, 0, 1, 1, 0,
72 0, 0, 1, 0, 1,
73 0, 0, 1, 1, 0,
74 0, 0, 1, 0, 1,
75
76 /* Char 6 */
77 1, 0, 0, 0, 0,
78 1, 0, 0, 0, 0,
79 1, 0, 0, 0, 0,
80 1, 1, 1, 0, 0,
81 0, 0, 1, 1, 1,
82 0, 0, 1, 0, 0,
83 0, 0, 1, 1, 0,
84 0, 0, 1, 0, 0,
85
86 /* Char 7 */
87 0, 0, 0, 0, 0,
88 0, 1, 0, 0, 0,
89 1, 0, 1, 0, 0,
90 0, 1, 0, 0, 0,
91 0, 0, 0, 0, 0,
92 0, 0, 0, 0, 0,
93 0, 0, 0, 0, 0,
94 0, 0, 0, 0, 0,
95
96 /* Char 8 */
97 0, 0, 0, 0, 0,
98 0, 0, 1, 0, 0,
99 0, 1, 1, 1, 0,
100 0, 0, 1, 0, 0,
101 0, 0, 0, 0, 0,
102 0, 1, 1, 1, 0,
103 0, 0, 0, 0, 0,
104 0, 0, 0, 0, 0,
105
106 /* Char 9 */
107 1, 0, 0, 1, 0,
108 1, 1, 0, 1, 0,
109 1, 0, 1, 1, 0,
110 1, 0, 0, 1, 0,
111 0, 0, 1, 0, 0,
112 0, 0, 1, 0, 0,
113 0, 0, 1, 0, 0,
114 0, 0, 1, 1, 1,
115
116 /* Char 10 */
117 1, 0, 1, 0, 0,
118 1, 0, 1, 0, 0,
119 1, 0, 1, 0, 0,
120 0, 1, 0, 0, 0,
121 0, 0, 1, 1, 1,
122 0, 0, 0, 1, 0,
123 0, 0, 0, 1, 0,
124 0, 0, 0, 1, 0,
125
126 /* Char 11 */
127 0, 0, 1, 0, 0,
128 0, 0, 1, 0, 0,
129 0, 0, 1, 0, 0,
130 1, 1, 1, 0, 0,
131 0, 0, 0, 0, 0,
132 0, 0, 0, 0, 0,
133 0, 0, 0, 0, 0,
134 0, 0, 0, 0, 0,
135
136 /* Char 12 */
137 0, 0, 0, 0, 0,
138 0, 0, 0, 0, 0,
139 0, 0, 0, 0, 0,
140 1, 1, 1, 0, 0,
141 0, 0, 1, 0, 0,
142 0, 0, 1, 0, 0,
143 0, 0, 1, 0, 0,
144 0, 0, 1, 0, 0,
145
146 /* Char 13 */
147 0, 0, 0, 0, 0,
148 0, 0, 0, 0, 0,
149 0, 0, 0, 0, 0,
150 0, 0, 1, 1, 1,
151 0, 0, 1, 0, 0,
152 0, 0, 1, 0, 0,
153 0, 0, 1, 0, 0,
154 0, 0, 1, 0, 0,
155
156 /* Char 14 */
157 0, 0, 1, 0, 0,
158 0, 0, 1, 0, 0,
159 0, 0, 1, 0, 0,
160 0, 0, 1, 1, 1,
161 0, 0, 0, 0, 0,
162 0, 0, 0, 0, 0,
163 0, 0, 0, 0, 0,
164 0, 0, 0, 0, 0,
165
166 /* Char 15 */
167 0, 0, 1, 0, 0,
168 0, 0, 1, 0, 0,
169 0, 0, 1, 0, 0,
170 1, 1, 1, 1, 1,
171 0, 0, 1, 0, 0,
172 0, 0, 1, 0, 0,
173 0, 0, 1, 0, 0,
174 0, 0, 1, 0, 0,
175
176 /* Char 16 */
177 0, 0, 0, 0, 0,
178 1, 1, 1, 1, 1,
179 0, 0, 0, 0, 0,
180 0, 0, 0, 0, 0,
181 0, 0, 0, 0, 0,
182 0, 0, 0, 0, 0,
183 0, 0, 0, 0, 0,
184 0, 0, 0, 0, 0,
185
186 /* Char 17 */
187 0, 0, 0, 0, 0,
188 0, 0, 0, 0, 0,
189 1, 1, 1, 1, 1,
190 0, 0, 0, 0, 0,
191 0, 0, 0, 0, 0,
192 0, 0, 0, 0, 0,
193 0, 0, 0, 0, 0,
194 0, 0, 0, 0, 0,
195
196 /* Char 18 */
197 0, 0, 0, 0, 0,
198 0, 0, 0, 0, 0,
199 0, 0, 0, 0, 0,
200 1, 1, 1, 1, 1,
201 0, 0, 0, 0, 0,
202 0, 0, 0, 0, 0,
203 0, 0, 0, 0, 0,
204 0, 0, 0, 0, 0,
205
206 /* Char 19 */
207 0, 0, 0, 0, 0,
208 0, 0, 0, 0, 0,
209 0, 0, 0, 0, 0,
210 0, 0, 0, 0, 0,
211 1, 1, 1, 1, 1,
212 0, 0, 0, 0, 0,
213 0, 0, 0, 0, 0,
214 0, 0, 0, 0, 0,
215
216 /* Char 20 */
217 0, 0, 0, 0, 0,
218 0, 0, 0, 0, 0,
219 0, 0, 0, 0, 0,
220 0, 0, 0, 0, 0,
221 0, 0, 0, 0, 0,
222 1, 1, 1, 1, 1,
223 0, 0, 0, 0, 0,
224 0, 0, 0, 0, 0,
225
226 /* Char 21 */
227 0, 0, 1, 0, 0,
228 0, 0, 1, 0, 0,
229 0, 0, 1, 0, 0,
230 0, 0, 1, 1, 1,
231 0, 0, 1, 0, 0,
232 0, 0, 1, 0, 0,
233 0, 0, 1, 0, 0,
234 0, 0, 1, 0, 0,
235
236 /* Char 22 */
237 0, 0, 1, 0, 0,
238 0, 0, 1, 0, 0,
239 0, 0, 1, 0, 0,
240 1, 1, 1, 0, 0,
241 0, 0, 1, 0, 0,
242 0, 0, 1, 0, 0,
243 0, 0, 1, 0, 0,
244 0, 0, 1, 0, 0,
245
246 /* Char 23 */
247 0, 0, 1, 0, 0,
248 0, 0, 1, 0, 0,
249 0, 0, 1, 0, 0,
250 1, 1, 1, 1, 1,
251 0, 0, 0, 0, 0,
252 0, 0, 0, 0, 0,
253 0, 0, 0, 0, 0,
254 0, 0, 0, 0, 0,
255
256 /* Char 24 */
257 0, 0, 0, 0, 0,
258 0, 0, 0, 0, 0,
259 0, 0, 0, 0, 0,
260 1, 1, 1, 1, 1,
261 0, 0, 1, 0, 0,
262 0, 0, 1, 0, 0,
263 0, 0, 1, 0, 0,
264 0, 0, 1, 0, 0,
265
266 /* Char 25 */
267 0, 0, 1, 0, 0,
268 0, 0, 1, 0, 0,
269 0, 0, 1, 0, 0,
270 0, 0, 1, 0, 0,
271 0, 0, 1, 0, 0,
272 0, 0, 1, 0, 0,
273 0, 0, 1, 0, 0,
274 0, 0, 1, 0, 0,
275
276 /* Char 26 */
277 0, 0, 0, 0, 0,
278 0, 0, 0, 1, 0,
279 0, 0, 1, 0, 0,
280 0, 1, 0, 0, 0,
281 0, 0, 1, 0, 0,
282 0, 0, 0, 1, 0,
283 0, 1, 1, 1, 0,
284 0, 0, 0, 0, 0,
285
286 /* Char 27 */
287 0, 0, 0, 0, 0,
288 0, 1, 0, 0, 0,
289 0, 0, 1, 0, 0,
290 0, 0, 0, 1, 0,
291 0, 0, 1, 0, 0,
292 0, 1, 0, 0, 0,
293 0, 1, 1, 1, 0,
294 0, 0, 0, 0, 0,
295
296 /* Char 28 */
297 0, 0, 0, 0, 0,
298 0, 0, 0, 0, 0,
299 0, 0, 0, 0, 0,
300 1, 1, 1, 1, 1,
301 0, 1, 0, 1, 0,
302 0, 1, 0, 1, 0,
303 0, 1, 0, 1, 0,
304 0, 0, 0, 0, 0,
305
306 /* Char 29 */
307 0, 0, 0, 0, 0,
308 0, 0, 0, 0, 0,
309 0, 0, 0, 1, 0,
310 1, 1, 1, 1, 1,
311 0, 0, 1, 0, 0,
312 1, 1, 1, 1, 1,
313 0, 1, 0, 0, 0,
314 0, 0, 0, 0, 0,
315
316 /* Char 30 */
317 0, 0, 0, 0, 0,
318 0, 0, 1, 1, 0,
319 0, 1, 0, 0, 1,
320 1, 1, 1, 0, 0,
321 0, 1, 0, 0, 0,
322 0, 1, 0, 0, 1,
323 1, 0, 1, 1, 0,
324 0, 0, 0, 0, 0,
325
326 /* Char 31 */
327 0, 0, 0, 0, 0,
328 0, 0, 0, 0, 0,
329 0, 0, 0, 0, 0,
330 0, 0, 1, 0, 0,
331 0, 0, 0, 0, 0,
332 0, 0, 0, 0, 0,
333 0, 0, 0, 0, 0,
334 0, 0, 0, 0, 0,
335
336 /* Char 32 */
337 0, 0, 0, 0, 0,
338 0, 0, 0, 0, 0,
339 0, 0, 0, 0, 0,
340 0, 0, 0, 0, 0,
341 0, 0, 0, 0, 0,
342 0, 0, 0, 0, 0,
343 0, 0, 0, 0, 0,
344 0, 0, 0, 0, 0,
345
346 /* Char 33 */
347 0, 0, 0, 0, 0,
348 0, 0, 0, 0, 0,
349 0, 0, 1, 0, 0,
350 0, 0, 1, 0, 0,
351 0, 0, 1, 0, 0,
352 0, 0, 0, 0, 0,
353 0, 0, 1, 0, 0,
354 0, 0, 0, 0, 0,
355
356 /* Char 34 */
357 0, 0, 0, 0, 0,
358 0, 1, 0, 1, 0,
359 0, 1, 0, 1, 0,
360 0, 0, 0, 0, 0,
361 0, 0, 0, 0, 0,
362 0, 0, 0, 0, 0,
363 0, 0, 0, 0, 0,
364 0, 0, 0, 0, 0,
365
366 /* Char 35 */
367 0, 1, 0, 1, 0,
368 0, 1, 0, 1, 0,
369 1, 1, 1, 1, 1,
370 0, 1, 0, 1, 0,
371 1, 1, 1, 1, 1,
372 0, 1, 0, 1, 0,
373 0, 1, 0, 1, 0,
374 0, 0, 0, 0, 0,
375
376 /* Char 36 */
377 0, 0, 1, 0, 0,
378 0, 1, 1, 1, 0,
379 1, 0, 1, 0, 0,
380 0, 1, 1, 1, 0,
381 0, 0, 1, 0, 1,
382 0, 1, 1, 1, 0,
383 0, 0, 1, 0, 0,
384 0, 0, 0, 0, 0,
385
386 /* Char 37 */
387 0, 0, 0, 0, 0,
388 0, 0, 0, 0, 0,
389 1, 1, 0, 0, 1,
390 1, 1, 0, 1, 0,
391 0, 0, 1, 0, 0,
392 0, 1, 0, 1, 1,
393 1, 0, 0, 1, 1,
394 0, 0, 0, 0, 0,
395
396 /* Char 38 */
397 0, 0, 0, 0, 0,
398 0, 0, 1, 0, 0,
399 0, 1, 0, 1, 0,
400 0, 0, 1, 0, 0,
401 0, 1, 0, 1, 0,
402 0, 1, 0, 1, 0,
403 0, 0, 1, 0, 1,
404 0, 0, 0, 0, 0,
405
406 /* Char 39 */
407 0, 0, 0, 0, 0,
408 0, 1, 1, 0, 0,
409 0, 0, 1, 0, 0,
410 0, 1, 0, 0, 0,
411 0, 0, 0, 0, 0,
412 0, 0, 0, 0, 0,
413 0, 0, 0, 0, 0,
414 0, 0, 0, 0, 0,
415
416 /* Char 40 */
417 0, 0, 0, 0, 0,
418 0, 0, 1, 0, 0,
419 0, 1, 0, 0, 0,
420 0, 1, 0, 0, 0,
421 0, 1, 0, 0, 0,
422 0, 0, 1, 0, 0,
423 0, 0, 0, 0, 0,
424 0, 0, 0, 0, 0,
425
426 /* Char 41 */
427 0, 0, 0, 0, 0,
428 0, 1, 0, 0, 0,
429 0, 0, 1, 0, 0,
430 0, 0, 1, 0, 0,
431 0, 0, 1, 0, 0,
432 0, 1, 0, 0, 0,
433 0, 0, 0, 0, 0,
434 0, 0, 0, 0, 0,
435
436 /* Char 42 */
437 0, 0, 0, 0, 0,
438 1, 0, 0, 1, 0,
439 0, 1, 1, 0, 0,
440 1, 1, 1, 1, 0,
441 0, 1, 1, 0, 0,
442 1, 0, 0, 1, 0,
443 0, 0, 0, 0, 0,
444 0, 0, 0, 0, 0,
445
446 /* Char 43 */
447 0, 0, 0, 0, 0,
448 0, 0, 1, 0, 0,
449 0, 0, 1, 0, 0,
450 1, 1, 1, 1, 1,
451 0, 0, 1, 0, 0,
452 0, 0, 1, 0, 0,
453 0, 0, 0, 0, 0,
454 0, 0, 0, 0, 0,
455
456 /* Char 44 */
457 0, 0, 0, 0, 0,
458 0, 0, 0, 0, 0,
459 0, 0, 0, 0, 0,
460 0, 0, 0, 0, 0,
461 0, 0, 1, 1, 0,
462 0, 0, 1, 0, 0,
463 0, 1, 0, 0, 0,
464 0, 0, 0, 0, 0,
465
466 /* Char 45 */
467 0, 0, 0, 0, 0,
468 0, 0, 0, 0, 0,
469 0, 0, 0, 0, 0,
470 0, 0, 0, 0, 0,
471 1, 1, 1, 1, 0,
472 0, 0, 0, 0, 0,
473 0, 0, 0, 0, 0,
474 0, 0, 0, 0, 0,
475
476 /* Char 46 */
477 0, 0, 0, 0, 0,
478 0, 0, 0, 0, 0,
479 0, 0, 0, 0, 0,
480 0, 0, 0, 0, 0,
481 0, 0, 0, 0, 0,
482 0, 1, 1, 0, 0,
483 0, 1, 1, 0, 0,
484 0, 0, 0, 0, 0,
485
486 /* Char 47 */
487 0, 0, 0, 0, 0,
488 0, 0, 0, 0, 0,
489 0, 0, 0, 0, 1,
490 0, 0, 0, 1, 0,
491 0, 0, 1, 0, 0,
492 0, 1, 0, 0, 0,
493 1, 0, 0, 0, 0,
494 0, 0, 0, 0, 0,
495
496 /* Char 48 */
497 0, 0, 0, 0, 0,
498 0, 0, 1, 0, 0,
499 0, 1, 0, 1, 0,
500 0, 1, 0, 1, 0,
501 0, 1, 0, 1, 0,
502 0, 1, 0, 1, 0,
503 0, 0, 1, 0, 0,
504 0, 0, 0, 0, 0,
505
506 /* Char 49 */
507 0, 0, 0, 0, 0,
508 0, 0, 1, 0, 0,
509 0, 1, 1, 0, 0,
510 0, 0, 1, 0, 0,
511 0, 0, 1, 0, 0,
512 0, 0, 1, 0, 0,
513 0, 1, 1, 1, 0,
514 0, 0, 0, 0, 0,
515
516 /* Char 50 */
517 0, 0, 0, 0, 0,
518 0, 1, 1, 0, 0,
519 1, 0, 0, 1, 0,
520 0, 0, 0, 1, 0,
521 0, 0, 1, 0, 0,
522 0, 1, 0, 0, 0,
523 1, 1, 1, 1, 0,
524 0, 0, 0, 0, 0,
525
526 /* Char 51 */
527 0, 0, 0, 0, 0,
528 0, 1, 1, 0, 0,
529 1, 0, 0, 1, 0,
530 0, 0, 1, 0, 0,
531 0, 0, 0, 1, 0,
532 1, 0, 0, 1, 0,
533 0, 1, 1, 0, 0,
534 0, 0, 0, 0, 0,
535
536 /* Char 52 */
537 0, 0, 0, 0, 0,
538 0, 0, 1, 0, 0,
539 0, 1, 1, 0, 0,
540 1, 0, 1, 0, 0,
541 1, 1, 1, 1, 0,
542 0, 0, 1, 0, 0,
543 0, 0, 1, 0, 0,
544 0, 0, 0, 0, 0,
545
546 /* Char 53 */
547 0, 0, 0, 0, 0,
548 1, 1, 1, 1, 0,
549 1, 0, 0, 0, 0,
550 1, 1, 1, 0, 0,
551 0, 0, 0, 1, 0,
552 1, 0, 0, 1, 0,
553 0, 1, 1, 0, 0,
554 0, 0, 0, 0, 0,
555
556 /* Char 54 */
557 0, 0, 0, 0, 0,
558 0, 1, 1, 0, 0,
559 1, 0, 0, 0, 0,
560 1, 0, 1, 0, 0,
561 1, 1, 0, 1, 0,
562 1, 0, 0, 1, 0,
563 0, 1, 1, 0, 0,
564 0, 0, 0, 0, 0,
565
566 /* Char 55 */
567 0, 0, 0, 0, 0,
568 1, 1, 1, 1, 0,
569 0, 0, 0, 1, 0,
570 0, 0, 1, 0, 0,
571 0, 0, 1, 0, 0,
572 0, 1, 0, 0, 0,
573 0, 1, 0, 0, 0,
574 0, 0, 0, 0, 0,
575
576 /* Char 56 */
577 0, 0, 0, 0, 0,
578 0, 1, 1, 0, 0,
579 1, 0, 0, 1, 0,
580 0, 1, 1, 0, 0,
581 1, 0, 0, 1, 0,
582 1, 0, 0, 1, 0,
583 0, 1, 1, 0, 0,
584 0, 0, 0, 0, 0,
585
586 /* Char 57 */
587 0, 0, 0, 0, 0,
588 0, 1, 1, 0, 0,
589 1, 0, 0, 1, 0,
590 1, 0, 1, 1, 0,
591 0, 1, 0, 1, 0,
592 0, 0, 0, 1, 0,
593 0, 1, 1, 0, 0,
594 0, 0, 0, 0, 0,
595
596 /* Char 58 */
597 0, 0, 0, 0, 0,
598 0, 0, 0, 0, 0,
599 0, 1, 1, 0, 0,
600 0, 1, 1, 0, 0,
601 0, 0, 0, 0, 0,
602 0, 1, 1, 0, 0,
603 0, 1, 1, 0, 0,
604 0, 0, 0, 0, 0,
605
606 /* Char 59 */
607 0, 0, 0, 0, 0,
608 0, 0, 0, 0, 0,
609 0, 0, 1, 1, 0,
610 0, 0, 1, 1, 0,
611 0, 0, 0, 0, 0,
612 0, 0, 1, 1, 0,
613 0, 0, 1, 0, 0,
614 0, 1, 0, 0, 0,
615
616 /* Char 60 */
617 0, 0, 0, 0, 0,
618 0, 0, 0, 0, 0,
619 0, 0, 0, 1, 0,
620 0, 0, 1, 0, 0,
621 0, 1, 0, 0, 0,
622 0, 0, 1, 0, 0,
623 0, 0, 0, 1, 0,
624 0, 0, 0, 0, 0,
625
626 /* Char 61 */
627 0, 0, 0, 0, 0,
628 0, 0, 0, 0, 0,
629 0, 0, 0, 0, 0,
630 1, 1, 1, 1, 0,
631 0, 0, 0, 0, 0,
632 1, 1, 1, 1, 0,
633 0, 0, 0, 0, 0,
634 0, 0, 0, 0, 0,
635
636 /* Char 62 */
637 0, 0, 0, 0, 0,
638 0, 0, 0, 0, 0,
639 0, 1, 0, 0, 0,
640 0, 0, 1, 0, 0,
641 0, 0, 0, 1, 0,
642 0, 0, 1, 0, 0,
643 0, 1, 0, 0, 0,
644 0, 0, 0, 0, 0,
645
646 /* Char 63 */
647 0, 0, 0, 0, 0,
648 0, 0, 1, 0, 0,
649 0, 1, 0, 1, 0,
650 0, 0, 0, 1, 0,
651 0, 0, 1, 0, 0,
652 0, 0, 0, 0, 0,
653 0, 0, 1, 0, 0,
654 0, 0, 0, 0, 0,
655
656 /* Char 64 */
657 0, 0, 1, 1, 0,
658 0, 1, 0, 0, 1,
659 1, 0, 0, 1, 1,
660 1, 0, 1, 0, 1,
661 1, 0, 1, 0, 1,
662 1, 0, 0, 1, 0,
663 0, 1, 0, 0, 0,
664 0, 0, 1, 1, 0,
665
666 /* Char 65 */
667 0, 0, 0, 0, 0,
668 0, 1, 1, 0, 0,
669 1, 0, 0, 1, 0,
670 1, 0, 0, 1, 0,
671 1, 1, 1, 1, 0,
672 1, 0, 0, 1, 0,
673 1, 0, 0, 1, 0,
674 0, 0, 0, 0, 0,
675
676 /* Char 66 */
677 0, 0, 0, 0, 0,
678 1, 1, 1, 0, 0,
679 1, 0, 0, 1, 0,
680 1, 1, 1, 0, 0,
681 1, 0, 0, 1, 0,
682 1, 0, 0, 1, 0,
683 1, 1, 1, 0, 0,
684 0, 0, 0, 0, 0,
685
686 /* Char 67 */
687 0, 0, 0, 0, 0,
688 0, 1, 1, 0, 0,
689 1, 0, 0, 1, 0,
690 1, 0, 0, 0, 0,
691 1, 0, 0, 0, 0,
692 1, 0, 0, 1, 0,
693 0, 1, 1, 0, 0,
694 0, 0, 0, 0, 0,
695
696 /* Char 68 */
697 0, 0, 0, 0, 0,
698 1, 1, 1, 0, 0,
699 1, 0, 0, 1, 0,
700 1, 0, 0, 1, 0,
701 1, 0, 0, 1, 0,
702 1, 0, 0, 1, 0,
703 1, 1, 1, 0, 0,
704 0, 0, 0, 0, 0,
705
706 /* Char 69 */
707 0, 0, 0, 0, 0,
708 1, 1, 1, 1, 0,
709 1, 0, 0, 0, 0,
710 1, 1, 1, 0, 0,
711 1, 0, 0, 0, 0,
712 1, 0, 0, 0, 0,
713 1, 1, 1, 1, 0,
714 0, 0, 0, 0, 0,
715
716 /* Char 70 */
717 0, 0, 0, 0, 0,
718 1, 1, 1, 1, 0,
719 1, 0, 0, 0, 0,
720 1, 1, 1, 0, 0,
721 1, 0, 0, 0, 0,
722 1, 0, 0, 0, 0,
723 1, 0, 0, 0, 0,
724 0, 0, 0, 0, 0,
725
726 /* Char 71 */
727 0, 0, 0, 0, 0,
728 0, 1, 1, 0, 0,
729 1, 0, 0, 1, 0,
730 1, 0, 0, 0, 0,
731 1, 0, 1, 1, 0,
732 1, 0, 0, 1, 0,
733 0, 1, 1, 1, 0,
734 0, 0, 0, 0, 0,
735
736 /* Char 72 */
737 0, 0, 0, 0, 0,
738 1, 0, 0, 1, 0,
739 1, 0, 0, 1, 0,
740 1, 1, 1, 1, 0,
741 1, 0, 0, 1, 0,
742 1, 0, 0, 1, 0,
743 1, 0, 0, 1, 0,
744 0, 0, 0, 0, 0,
745
746 /* Char 73 */
747 0, 0, 0, 0, 0,
748 0, 1, 1, 1, 0,
749 0, 0, 1, 0, 0,
750 0, 0, 1, 0, 0,
751 0, 0, 1, 0, 0,
752 0, 0, 1, 0, 0,
753 0, 1, 1, 1, 0,
754 0, 0, 0, 0, 0,
755
756 /* Char 74 */
757 0, 0, 0, 0, 0,
758 0, 0, 1, 1, 0,
759 0, 0, 0, 1, 0,
760 0, 0, 0, 1, 0,
761 0, 0, 0, 1, 0,
762 1, 0, 0, 1, 0,
763 0, 1, 1, 0, 0,
764 0, 0, 0, 0, 0,
765
766 /* Char 75 */
767 0, 0, 0, 0, 0,
768 1, 0, 0, 1, 0,
769 1, 0, 1, 0, 0,
770 1, 1, 0, 0, 0,
771 1, 0, 1, 0, 0,
772 1, 0, 1, 0, 0,
773 1, 0, 0, 1, 0,
774 0, 0, 0, 0, 0,
775
776 /* Char 76 */
777 0, 0, 0, 0, 0,
778 1, 0, 0, 0, 0,
779 1, 0, 0, 0, 0,
780 1, 0, 0, 0, 0,
781 1, 0, 0, 0, 0,
782 1, 0, 0, 0, 0,
783 1, 1, 1, 1, 0,
784 0, 0, 0, 0, 0,
785
786 /* Char 77 */
787 0, 0, 0, 0, 0,
788 1, 0, 0, 1, 0,
789 1, 1, 1, 1, 0,
790 1, 1, 1, 1, 0,
791 1, 0, 0, 1, 0,
792 1, 0, 0, 1, 0,
793 1, 0, 0, 1, 0,
794 0, 0, 0, 0, 0,
795
796 /* Char 78 */
797 0, 0, 0, 0, 0,
798 1, 0, 0, 1, 0,
799 1, 1, 0, 1, 0,
800 1, 1, 1, 1, 0,
801 1, 0, 1, 1, 0,
802 1, 0, 1, 1, 0,
803 1, 0, 0, 1, 0,
804 0, 0, 0, 0, 0,
805
806 /* Char 79 */
807 0, 0, 0, 0, 0,
808 0, 1, 1, 0, 0,
809 1, 0, 0, 1, 0,
810 1, 0, 0, 1, 0,
811 1, 0, 0, 1, 0,
812 1, 0, 0, 1, 0,
813 0, 1, 1, 0, 0,
814 0, 0, 0, 0, 0,
815
816 /* Char 80 */
817 0, 0, 0, 0, 0,
818 1, 1, 1, 0, 0,
819 1, 0, 0, 1, 0,
820 1, 0, 0, 1, 0,
821 1, 1, 1, 0, 0,
822 1, 0, 0, 0, 0,
823 1, 0, 0, 0, 0,
824 0, 0, 0, 0, 0,
825
826 /* Char 81 */
827 0, 0, 0, 0, 0,
828 0, 1, 1, 0, 0,
829 1, 0, 0, 1, 0,
830 1, 0, 0, 1, 0,
831 1, 1, 0, 1, 0,
832 1, 0, 1, 1, 0,
833 0, 1, 1, 0, 0,
834 0, 0, 0, 1, 0,
835
836 /* Char 82 */
837 0, 0, 0, 0, 0,
838 1, 1, 1, 0, 0,
839 1, 0, 0, 1, 0,
840 1, 0, 0, 1, 0,
841 1, 1, 1, 0, 0,
842 1, 0, 1, 0, 0,
843 1, 0, 0, 1, 0,
844 0, 0, 0, 0, 0,
845
846 /* Char 83 */
847 0, 0, 0, 0, 0,
848 0, 1, 1, 1, 0,
849 1, 0, 0, 0, 0,
850 1, 0, 0, 0, 0,
851 0, 1, 1, 0, 0,
852 0, 0, 0, 1, 0,
853 1, 1, 1, 0, 0,
854 0, 0, 0, 0, 0,
855
856 /* Char 84 */
857 0, 0, 0, 0, 0,
858 1, 1, 1, 1, 1,
859 0, 0, 1, 0, 0,
860 0, 0, 1, 0, 0,
861 0, 0, 1, 0, 0,
862 0, 0, 1, 0, 0,
863 0, 0, 1, 0, 0,
864 0, 0, 0, 0, 0,
865
866 /* Char 85 */
867 0, 0, 0, 0, 0,
868 1, 0, 0, 1, 0,
869 1, 0, 0, 1, 0,
870 1, 0, 0, 1, 0,
871 1, 0, 0, 1, 0,
872 1, 0, 0, 1, 0,
873 0, 1, 1, 0, 0,
874 0, 0, 0, 0, 0,
875
876 /* Char 86 */
877 0, 0, 0, 0, 0,
878 1, 0, 0, 1, 0,
879 1, 0, 0, 1, 0,
880 1, 0, 0, 1, 0,
881 1, 0, 0, 1, 0,
882 0, 1, 1, 0, 0,
883 0, 1, 1, 0, 0,
884 0, 0, 0, 0, 0,
885
886 /* Char 87 */
887 0, 0, 0, 0, 0,
888 1, 0, 0, 1, 0,
889 1, 0, 0, 1, 0,
890 1, 0, 0, 1, 0,
891 1, 1, 1, 1, 0,
892 1, 1, 1, 1, 0,
893 1, 0, 0, 1, 0,
894 0, 0, 0, 0, 0,
895
896 /* Char 88 */
897 0, 0, 0, 0, 0,
898 1, 0, 0, 1, 0,
899 1, 0, 0, 1, 0,
900 0, 1, 1, 0, 0,
901 0, 1, 1, 0, 0,
902 1, 0, 0, 1, 0,
903 1, 0, 0, 1, 0,
904 0, 0, 0, 0, 0,
905
906 /* Char 89 */
907 0, 0, 0, 0, 0,
908 1, 0, 0, 0, 1,
909 1, 0, 0, 0, 1,
910 0, 1, 0, 1, 0,
911 0, 0, 1, 0, 0,
912 0, 0, 1, 0, 0,
913 0, 0, 1, 0, 0,
914 0, 0, 0, 0, 0,
915
916 /* Char 90 */
917 0, 0, 0, 0, 0,
918 1, 1, 1, 1, 0,
919 0, 0, 0, 1, 0,
920 0, 0, 1, 0, 0,
921 0, 1, 0, 0, 0,
922 1, 0, 0, 0, 0,
923 1, 1, 1, 1, 0,
924 0, 0, 0, 0, 0,
925
926 /* Char 91 */
927 0, 0, 0, 0, 0,
928 0, 1, 1, 1, 0,
929 0, 1, 0, 0, 0,
930 0, 1, 0, 0, 0,
931 0, 1, 0, 0, 0,
932 0, 1, 0, 0, 0,
933 0, 1, 1, 1, 0,
934 0, 0, 0, 0, 0,
935
936 /* Char 92 */
937 0, 0, 0, 0, 0,
938 0, 0, 0, 0, 0,
939 1, 0, 0, 0, 0,
940 0, 1, 0, 0, 0,
941 0, 0, 1, 0, 0,
942 0, 0, 0, 1, 0,
943 0, 0, 0, 0, 1,
944 0, 0, 0, 0, 0,
945
946 /* Char 93 */
947 0, 0, 0, 0, 0,
948 0, 1, 1, 1, 0,
949 0, 0, 0, 1, 0,
950 0, 0, 0, 1, 0,
951 0, 0, 0, 1, 0,
952 0, 0, 0, 1, 0,
953 0, 1, 1, 1, 0,
954 0, 0, 0, 0, 0,
955
956 /* Char 94 */
957 0, 0, 0, 0, 0,
958 0, 0, 1, 0, 0,
959 0, 1, 0, 1, 0,
960 0, 0, 0, 0, 0,
961 0, 0, 0, 0, 0,
962 0, 0, 0, 0, 0,
963 0, 0, 0, 0, 0,
964 0, 0, 0, 0, 0,
965
966 /* Char 95 */
967 0, 0, 0, 0, 0,
968 0, 0, 0, 0, 0,
969 0, 0, 0, 0, 0,
970 0, 0, 0, 0, 0,
971 0, 0, 0, 0, 0,
972 0, 0, 0, 0, 0,
973 0, 0, 0, 0, 0,
974 1, 1, 1, 1, 1,
975
976 /* Char 96 */
977 0, 0, 0, 0, 0,
978 0, 1, 1, 0, 0,
979 0, 1, 0, 0, 0,
980 0, 0, 1, 0, 0,
981 0, 0, 0, 0, 0,
982 0, 0, 0, 0, 0,
983 0, 0, 0, 0, 0,
984 0, 0, 0, 0, 0,
985
986 /* Char 97 */
987 0, 0, 0, 0, 0,
988 0, 0, 0, 0, 0,
989 0, 0, 0, 0, 0,
990 0, 1, 1, 1, 0,
991 1, 0, 0, 1, 0,
992 1, 0, 1, 1, 0,
993 0, 1, 0, 1, 0,
994 0, 0, 0, 0, 0,
995
996 /* Char 98 */
997 0, 0, 0, 0, 0,
998 1, 0, 0, 0, 0,
999 1, 0, 0, 0, 0,
1000 1, 1, 1, 0, 0,
1001 1, 0, 0, 1, 0,
1002 1, 0, 0, 1, 0,
1003 1, 1, 1, 0, 0,
1004 0, 0, 0, 0, 0,
1005
1006 /* Char 99 */
1007 0, 0, 0, 0, 0,
1008 0, 0, 0, 0, 0,
1009 0, 0, 0, 0, 0,
1010 0, 1, 1, 1, 0,
1011 1, 0, 0, 0, 0,
1012 1, 0, 0, 0, 0,
1013 0, 1, 1, 1, 0,
1014 0, 0, 0, 0, 0,
1015
1016 /* Char 100 */
1017 0, 0, 0, 0, 0,
1018 0, 0, 0, 1, 0,
1019 0, 0, 0, 1, 0,
1020 0, 1, 1, 1, 0,
1021 1, 0, 0, 1, 0,
1022 1, 0, 1, 1, 0,
1023 0, 1, 0, 1, 0,
1024 0, 0, 0, 0, 0,
1025
1026 /* Char 101 */
1027 0, 0, 0, 0, 0,
1028 0, 0, 0, 0, 0,
1029 0, 0, 0, 0, 0,
1030 0, 1, 1, 0, 0,
1031 1, 0, 1, 1, 0,
1032 1, 1, 0, 0, 0,
1033 0, 1, 1, 1, 0,
1034 0, 0, 0, 0, 0,
1035
1036 /* Char 102 */
1037 0, 0, 0, 0, 0,
1038 0, 0, 1, 0, 0,
1039 0, 1, 0, 1, 0,
1040 0, 1, 0, 0, 0,
1041 1, 1, 1, 0, 0,
1042 0, 1, 0, 0, 0,
1043 0, 1, 0, 0, 0,
1044 0, 0, 0, 0, 0,
1045
1046 /* Char 103 */
1047 0, 0, 0, 0, 0,
1048 0, 0, 0, 0, 0,
1049 0, 0, 0, 0, 0,
1050 0, 1, 1, 1, 0,
1051 1, 0, 0, 1, 0,
1052 0, 1, 1, 1, 0,
1053 0, 0, 0, 1, 0,
1054 0, 1, 1, 0, 0,
1055
1056 /* Char 104 */
1057 0, 0, 0, 0, 0,
1058 1, 0, 0, 0, 0,
1059 1, 0, 0, 0, 0,
1060 1, 1, 1, 0, 0,
1061 1, 0, 0, 1, 0,
1062 1, 0, 0, 1, 0,
1063 1, 0, 0, 1, 0,
1064 0, 0, 0, 0, 0,
1065
1066 /* Char 105 */
1067 0, 0, 0, 0, 0,
1068 0, 0, 1, 0, 0,
1069 0, 0, 0, 0, 0,
1070 0, 1, 1, 0, 0,
1071 0, 0, 1, 0, 0,
1072 0, 0, 1, 0, 0,
1073 0, 1, 1, 1, 0,
1074 0, 0, 0, 0, 0,
1075
1076 /* Char 106 */
1077 0, 0, 0, 0, 0,
1078 0, 0, 0, 1, 0,
1079 0, 0, 0, 0, 0,
1080 0, 0, 0, 1, 0,
1081 0, 0, 0, 1, 0,
1082 0, 0, 0, 1, 0,
1083 0, 1, 0, 1, 0,
1084 0, 0, 1, 0, 0,
1085
1086 /* Char 107 */
1087 0, 0, 0, 0, 0,
1088 1, 0, 0, 0, 0,
1089 1, 0, 0, 0, 0,
1090 1, 0, 0, 1, 0,
1091 1, 1, 1, 0, 0,
1092 1, 0, 0, 1, 0,
1093 1, 0, 0, 1, 0,
1094 0, 0, 0, 0, 0,
1095
1096 /* Char 108 */
1097 0, 0, 0, 0, 0,
1098 0, 1, 1, 0, 0,
1099 0, 0, 1, 0, 0,
1100 0, 0, 1, 0, 0,
1101 0, 0, 1, 0, 0,
1102 0, 0, 1, 0, 0,
1103 0, 1, 1, 1, 0,
1104 0, 0, 0, 0, 0,
1105
1106 /* Char 109 */
1107 0, 0, 0, 0, 0,
1108 0, 0, 0, 0, 0,
1109 0, 0, 0, 0, 0,
1110 1, 1, 0, 1, 0,
1111 1, 0, 1, 0, 1,
1112 1, 0, 1, 0, 1,
1113 1, 0, 0, 0, 1,
1114 0, 0, 0, 0, 0,
1115
1116 /* Char 110 */
1117 0, 0, 0, 0, 0,
1118 0, 0, 0, 0, 0,
1119 0, 0, 0, 0, 0,
1120 1, 0, 1, 0, 0,
1121 1, 1, 0, 1, 0,
1122 1, 0, 0, 1, 0,
1123 1, 0, 0, 1, 0,
1124 0, 0, 0, 0, 0,
1125
1126 /* Char 111 */
1127 0, 0, 0, 0, 0,
1128 0, 0, 0, 0, 0,
1129 0, 0, 0, 0, 0,
1130 0, 1, 1, 0, 0,
1131 1, 0, 0, 1, 0,
1132 1, 0, 0, 1, 0,
1133 0, 1, 1, 0, 0,
1134 0, 0, 0, 0, 0,
1135
1136 /* Char 112 */
1137 0, 0, 0, 0, 0,
1138 0, 0, 0, 0, 0,
1139 0, 0, 0, 0, 0,
1140 1, 1, 1, 0, 0,
1141 1, 0, 0, 1, 0,
1142 1, 1, 1, 0, 0,
1143 1, 0, 0, 0, 0,
1144 1, 0, 0, 0, 0,
1145
1146 /* Char 113 */
1147 0, 0, 0, 0, 0,
1148 0, 0, 0, 0, 0,
1149 0, 0, 0, 0, 0,
1150 0, 1, 1, 1, 0,
1151 1, 0, 0, 1, 0,
1152 0, 1, 1, 1, 0,
1153 0, 0, 0, 1, 0,
1154 0, 0, 0, 1, 0,
1155
1156 /* Char 114 */
1157 0, 0, 0, 0, 0,
1158 0, 0, 0, 0, 0,
1159 0, 0, 0, 0, 0,
1160 1, 0, 1, 0, 0,
1161 1, 1, 0, 1, 0,
1162 1, 0, 0, 0, 0,
1163 1, 0, 0, 0, 0,
1164 0, 0, 0, 0, 0,
1165
1166 /* Char 115 */
1167 0, 0, 0, 0, 0,
1168 0, 0, 0, 0, 0,
1169 0, 0, 0, 0, 0,
1170 0, 1, 1, 1, 0,
1171 1, 1, 0, 0, 0,
1172 0, 0, 1, 1, 0,
1173 1, 1, 1, 0, 0,
1174 0, 0, 0, 0, 0,
1175
1176 /* Char 116 */
1177 0, 0, 0, 0, 0,
1178 0, 1, 0, 0, 0,
1179 0, 1, 0, 0, 0,
1180 1, 1, 1, 0, 0,
1181 0, 1, 0, 0, 0,
1182 0, 1, 0, 1, 0,
1183 0, 0, 1, 0, 0,
1184 0, 0, 0, 0, 0,
1185
1186 /* Char 117 */
1187 0, 0, 0, 0, 0,
1188 0, 0, 0, 0, 0,
1189 0, 0, 0, 0, 0,
1190 1, 0, 0, 1, 0,
1191 1, 0, 0, 1, 0,
1192 1, 0, 1, 1, 0,
1193 0, 1, 0, 1, 0,
1194 0, 0, 0, 0, 0,
1195
1196 /* Char 118 */
1197 0, 0, 0, 0, 0,
1198 0, 0, 0, 0, 0,
1199 0, 0, 0, 0, 0,
1200 0, 1, 0, 1, 0,
1201 0, 1, 0, 1, 0,
1202 0, 1, 0, 1, 0,
1203 0, 0, 1, 0, 0,
1204 0, 0, 0, 0, 0,
1205
1206 /* Char 119 */
1207 0, 0, 0, 0, 0,
1208 0, 0, 0, 0, 0,
1209 0, 0, 0, 0, 0,
1210 1, 0, 0, 0, 1,
1211 1, 0, 1, 0, 1,
1212 1, 0, 1, 0, 1,
1213 0, 1, 1, 1, 0,
1214 0, 0, 0, 0, 0,
1215
1216 /* Char 120 */
1217 0, 0, 0, 0, 0,
1218 0, 0, 0, 0, 0,
1219 0, 0, 0, 0, 0,
1220 1, 0, 0, 1, 0,
1221 0, 1, 1, 0, 0,
1222 0, 1, 1, 0, 0,
1223 1, 0, 0, 1, 0,
1224 0, 0, 0, 0, 0,
1225
1226 /* Char 121 */
1227 0, 0, 0, 0, 0,
1228 0, 0, 0, 0, 0,
1229 0, 0, 0, 0, 0,
1230 1, 0, 0, 1, 0,
1231 1, 0, 0, 1, 0,
1232 0, 1, 1, 1, 0,
1233 0, 0, 0, 1, 0,
1234 0, 1, 1, 0, 0,
1235
1236 /* Char 122 */
1237 0, 0, 0, 0, 0,
1238 0, 0, 0, 0, 0,
1239 0, 0, 0, 0, 0,
1240 1, 1, 1, 1, 0,
1241 0, 0, 1, 0, 0,
1242 0, 1, 0, 0, 0,
1243 1, 1, 1, 1, 0,
1244 0, 0, 0, 0, 0,
1245
1246 /* Char 123 */
1247 0, 0, 1, 1, 0,
1248 0, 1, 0, 0, 0,
1249 0, 0, 1, 0, 0,
1250 1, 1, 0, 0, 0,
1251 0, 0, 1, 0, 0,
1252 0, 1, 0, 0, 0,
1253 0, 0, 1, 1, 0,
1254 0, 0, 0, 0, 0,
1255
1256 /* Char 124 */
1257 0, 0, 0, 0, 0,
1258 0, 0, 1, 0, 0,
1259 0, 0, 1, 0, 0,
1260 0, 0, 1, 0, 0,
1261 0, 0, 1, 0, 0,
1262 0, 0, 1, 0, 0,
1263 0, 0, 1, 0, 0,
1264 0, 0, 0, 0, 0,
1265
1266 /* Char 125 */
1267 0, 1, 1, 0, 0,
1268 0, 0, 0, 1, 0,
1269 0, 0, 1, 0, 0,
1270 0, 0, 0, 1, 1,
1271 0, 0, 1, 0, 0,
1272 0, 0, 0, 1, 0,
1273 0, 1, 1, 0, 0,
1274 0, 0, 0, 0, 0,
1275
1276 /* Char 126 */
1277 0, 0, 0, 0, 0,
1278 0, 1, 0, 1, 0,
1279 1, 0, 1, 0, 0,
1280 0, 0, 0, 0, 0,
1281 0, 0, 0, 0, 0,
1282 0, 0, 0, 0, 0,
1283 0, 0, 0, 0, 0,
1284 0, 0, 0, 0, 0,
1285
1286 /* Char 127 */
1287 0, 0, 0, 0, 0,
1288 0, 0, 0, 0, 0,
1289 0, 0, 0, 0, 0,
1290 0, 0, 0, 0, 0,
1291 0, 0, 0, 0, 0,
1292 0, 0, 0, 0, 0,
1293 0, 0, 0, 0, 0,
1294 0, 0, 0, 0, 0,
1295
1296 /* Char 128 */
1297 0, 0, 0, 0, 0,
1298 0, 0, 0, 0, 0,
1299 0, 0, 0, 0, 0,
1300 0, 0, 0, 0, 0,
1301 0, 0, 0, 0, 0,
1302 0, 0, 0, 0, 0,
1303 0, 0, 0, 0, 0,
1304 0, 0, 0, 0, 0,
1305
1306 /* Char 129 */
1307 0, 0, 0, 0, 0,
1308 0, 0, 0, 0, 0,
1309 0, 0, 0, 0, 0,
1310 0, 0, 0, 0, 0,
1311 0, 0, 0, 0, 0,
1312 0, 0, 0, 0, 0,
1313 0, 0, 0, 0, 0,
1314 0, 0, 0, 0, 0,
1315
1316 /* Char 130 */
1317 0, 0, 0, 0, 0,
1318 0, 0, 0, 0, 0,
1319 0, 0, 0, 0, 0,
1320 0, 0, 0, 0, 0,
1321 0, 0, 0, 0, 0,
1322 0, 0, 0, 0, 0,
1323 0, 0, 0, 0, 0,
1324 0, 0, 0, 0, 0,
1325
1326 /* Char 131 */
1327 0, 0, 0, 0, 0,
1328 0, 0, 0, 0, 0,
1329 0, 0, 0, 0, 0,
1330 0, 0, 0, 0, 0,
1331 0, 0, 0, 0, 0,
1332 0, 0, 0, 0, 0,
1333 0, 0, 0, 0, 0,
1334 0, 0, 0, 0, 0,
1335
1336 /* Char 132 */
1337 0, 0, 0, 0, 0,
1338 0, 0, 0, 0, 0,
1339 0, 0, 0, 0, 0,
1340 0, 0, 0, 0, 0,
1341 0, 0, 0, 0, 0,
1342 0, 0, 0, 0, 0,
1343 0, 0, 0, 0, 0,
1344 0, 0, 0, 0, 0,
1345
1346 /* Char 133 */
1347 0, 0, 0, 0, 0,
1348 0, 0, 0, 0, 0,
1349 0, 0, 0, 0, 0,
1350 0, 0, 0, 0, 0,
1351 0, 0, 0, 0, 0,
1352 0, 0, 0, 0, 0,
1353 0, 0, 0, 0, 0,
1354 0, 0, 0, 0, 0,
1355
1356 /* Char 134 */
1357 0, 0, 0, 0, 0,
1358 0, 0, 0, 0, 0,
1359 0, 0, 0, 0, 0,
1360 0, 0, 0, 0, 0,
1361 0, 0, 0, 0, 0,
1362 0, 0, 0, 0, 0,
1363 0, 0, 0, 0, 0,
1364 0, 0, 0, 0, 0,
1365
1366 /* Char 135 */
1367 0, 0, 0, 0, 0,
1368 0, 0, 0, 0, 0,
1369 0, 0, 0, 0, 0,
1370 0, 0, 0, 0, 0,
1371 0, 0, 0, 0, 0,
1372 0, 0, 0, 0, 0,
1373 0, 0, 0, 0, 0,
1374 0, 0, 0, 0, 0,
1375
1376 /* Char 136 */
1377 0, 0, 0, 0, 0,
1378 0, 0, 0, 0, 0,
1379 0, 0, 0, 0, 0,
1380 0, 0, 0, 0, 0,
1381 0, 0, 0, 0, 0,
1382 0, 0, 0, 0, 0,
1383 0, 0, 0, 0, 0,
1384 0, 0, 0, 0, 0,
1385
1386 /* Char 137 */
1387 0, 0, 0, 0, 0,
1388 0, 0, 0, 0, 0,
1389 0, 0, 0, 0, 0,
1390 0, 0, 0, 0, 0,
1391 0, 0, 0, 0, 0,
1392 0, 0, 0, 0, 0,
1393 0, 0, 0, 0, 0,
1394 0, 0, 0, 0, 0,
1395
1396 /* Char 138 */
1397 0, 0, 0, 0, 0,
1398 0, 0, 0, 0, 0,
1399 0, 0, 0, 0, 0,
1400 0, 0, 0, 0, 0,
1401 0, 0, 0, 0, 0,
1402 0, 0, 0, 0, 0,
1403 0, 0, 0, 0, 0,
1404 0, 0, 0, 0, 0,
1405
1406 /* Char 139 */
1407 0, 0, 0, 0, 0,
1408 0, 0, 0, 0, 0,
1409 0, 0, 0, 0, 0,
1410 0, 0, 0, 0, 0,
1411 0, 0, 0, 0, 0,
1412 0, 0, 0, 0, 0,
1413 0, 0, 0, 0, 0,
1414 0, 0, 0, 0, 0,
1415
1416 /* Char 140 */
1417 0, 0, 0, 0, 0,
1418 0, 0, 0, 0, 0,
1419 0, 0, 0, 0, 0,
1420 0, 0, 0, 0, 0,
1421 0, 0, 0, 0, 0,
1422 0, 0, 0, 0, 0,
1423 0, 0, 0, 0, 0,
1424 0, 0, 0, 0, 0,
1425
1426 /* Char 141 */
1427 0, 0, 0, 0, 0,
1428 0, 0, 0, 0, 0,
1429 0, 0, 0, 0, 0,
1430 0, 0, 0, 0, 0,
1431 0, 0, 0, 0, 0,
1432 0, 0, 0, 0, 0,
1433 0, 0, 0, 0, 0,
1434 0, 0, 0, 0, 0,
1435
1436 /* Char 142 */
1437 0, 0, 0, 0, 0,
1438 0, 0, 0, 0, 0,
1439 0, 0, 0, 0, 0,
1440 0, 0, 0, 0, 0,
1441 0, 0, 0, 0, 0,
1442 0, 0, 0, 0, 0,
1443 0, 0, 0, 0, 0,
1444 0, 0, 0, 0, 0,
1445
1446 /* Char 143 */
1447 0, 0, 0, 0, 0,
1448 0, 0, 0, 0, 0,
1449 0, 0, 0, 0, 0,
1450 0, 0, 0, 0, 0,
1451 0, 0, 0, 0, 0,
1452 0, 0, 0, 0, 0,
1453 0, 0, 0, 0, 0,
1454 0, 0, 0, 0, 0,
1455
1456 /* Char 144 */
1457 0, 0, 0, 0, 0,
1458 0, 0, 0, 0, 0,
1459 0, 0, 0, 0, 0,
1460 0, 0, 0, 0, 0,
1461 0, 0, 0, 0, 0,
1462 0, 0, 0, 0, 0,
1463 0, 0, 0, 0, 0,
1464 0, 0, 0, 0, 0,
1465
1466 /* Char 145 */
1467 0, 0, 0, 0, 0,
1468 0, 0, 0, 0, 0,
1469 0, 0, 0, 0, 0,
1470 0, 0, 0, 0, 0,
1471 0, 0, 0, 0, 0,
1472 0, 0, 0, 0, 0,
1473 0, 0, 0, 0, 0,
1474 0, 0, 0, 0, 0,
1475
1476 /* Char 146 */
1477 0, 0, 0, 0, 0,
1478 0, 0, 0, 0, 0,
1479 0, 0, 0, 0, 0,
1480 0, 0, 0, 0, 0,
1481 0, 0, 0, 0, 0,
1482 0, 0, 0, 0, 0,
1483 0, 0, 0, 0, 0,
1484 0, 0, 0, 0, 0,
1485
1486 /* Char 147 */
1487 0, 0, 0, 0, 0,
1488 0, 0, 0, 0, 0,
1489 0, 0, 0, 0, 0,
1490 0, 0, 0, 0, 0,
1491 0, 0, 0, 0, 0,
1492 0, 0, 0, 0, 0,
1493 0, 0, 0, 0, 0,
1494 0, 0, 0, 0, 0,
1495
1496 /* Char 148 */
1497 0, 0, 0, 0, 0,
1498 0, 0, 0, 0, 0,
1499 0, 0, 0, 0, 0,
1500 0, 0, 0, 0, 0,
1501 0, 0, 0, 0, 0,
1502 0, 0, 0, 0, 0,
1503 0, 0, 0, 0, 0,
1504 0, 0, 0, 0, 0,
1505
1506 /* Char 149 */
1507 0, 0, 0, 0, 0,
1508 0, 0, 0, 0, 0,
1509 0, 0, 0, 0, 0,
1510 0, 0, 0, 0, 0,
1511 0, 0, 0, 0, 0,
1512 0, 0, 0, 0, 0,
1513 0, 0, 0, 0, 0,
1514 0, 0, 0, 0, 0,
1515
1516 /* Char 150 */
1517 0, 0, 0, 0, 0,
1518 0, 0, 0, 0, 0,
1519 0, 0, 0, 0, 0,
1520 0, 0, 0, 0, 0,
1521 0, 0, 0, 0, 0,
1522 0, 0, 0, 0, 0,
1523 0, 0, 0, 0, 0,
1524 0, 0, 0, 0, 0,
1525
1526 /* Char 151 */
1527 0, 0, 0, 0, 0,
1528 0, 0, 0, 0, 0,
1529 0, 0, 0, 0, 0,
1530 0, 0, 0, 0, 0,
1531 0, 0, 0, 0, 0,
1532 0, 0, 0, 0, 0,
1533 0, 0, 0, 0, 0,
1534 0, 0, 0, 0, 0,
1535
1536 /* Char 152 */
1537 0, 0, 0, 0, 0,
1538 0, 0, 0, 0, 0,
1539 0, 0, 0, 0, 0,
1540 0, 0, 0, 0, 0,
1541 0, 0, 0, 0, 0,
1542 0, 0, 0, 0, 0,
1543 0, 0, 0, 0, 0,
1544 0, 0, 0, 0, 0,
1545
1546 /* Char 153 */
1547 0, 0, 0, 0, 0,
1548 0, 0, 0, 0, 0,
1549 0, 0, 0, 0, 0,
1550 0, 0, 0, 0, 0,
1551 0, 0, 0, 0, 0,
1552 0, 0, 0, 0, 0,
1553 0, 0, 0, 0, 0,
1554 0, 0, 0, 0, 0,
1555
1556 /* Char 154 */
1557 0, 0, 0, 0, 0,
1558 0, 0, 0, 0, 0,
1559 0, 0, 0, 0, 0,
1560 0, 0, 0, 0, 0,
1561 0, 0, 0, 0, 0,
1562 0, 0, 0, 0, 0,
1563 0, 0, 0, 0, 0,
1564 0, 0, 0, 0, 0,
1565
1566 /* Char 155 */
1567 0, 0, 0, 0, 0,
1568 0, 0, 0, 0, 0,
1569 0, 0, 0, 0, 0,
1570 0, 0, 0, 0, 0,
1571 0, 0, 0, 0, 0,
1572 0, 0, 0, 0, 0,
1573 0, 0, 0, 0, 0,
1574 0, 0, 0, 0, 0,
1575
1576 /* Char 156 */
1577 0, 0, 0, 0, 0,
1578 0, 0, 0, 0, 0,
1579 0, 0, 0, 0, 0,
1580 0, 0, 0, 0, 0,
1581 0, 0, 0, 0, 0,
1582 0, 0, 0, 0, 0,
1583 0, 0, 0, 0, 0,
1584 0, 0, 0, 0, 0,
1585
1586 /* Char 157 */
1587 0, 0, 0, 0, 0,
1588 0, 0, 0, 0, 0,
1589 0, 0, 0, 0, 0,
1590 0, 0, 0, 0, 0,
1591 0, 0, 0, 0, 0,
1592 0, 0, 0, 0, 0,
1593 0, 0, 0, 0, 0,
1594 0, 0, 0, 0, 0,
1595
1596 /* Char 158 */
1597 0, 0, 0, 0, 0,
1598 0, 0, 0, 0, 0,
1599 0, 0, 0, 0, 0,
1600 0, 0, 0, 0, 0,
1601 0, 0, 0, 0, 0,
1602 0, 0, 0, 0, 0,
1603 0, 0, 0, 0, 0,
1604 0, 0, 0, 0, 0,
1605
1606 /* Char 159 */
1607 0, 0, 0, 0, 0,
1608 0, 0, 0, 0, 0,
1609 0, 0, 0, 0, 0,
1610 0, 0, 0, 0, 0,
1611 0, 0, 0, 0, 0,
1612 0, 0, 0, 0, 0,
1613 0, 0, 0, 0, 0,
1614 0, 0, 0, 0, 0,
1615
1616 /* Char 160 */
1617 0, 0, 0, 0, 0,
1618 0, 0, 0, 0, 0,
1619 0, 0, 0, 0, 0,
1620 0, 0, 0, 0, 0,
1621 0, 0, 0, 0, 0,
1622 0, 0, 0, 0, 0,
1623 0, 0, 0, 0, 0,
1624 0, 0, 0, 0, 0,
1625
1626 /* Char 161 */
1627 0, 0, 0, 0, 0,
1628 0, 1, 1, 0, 0,
1629 1, 0, 0, 1, 0,
1630 1, 0, 0, 1, 0,
1631 1, 1, 1, 1, 0,
1632 1, 0, 0, 1, 0,
1633 1, 0, 1, 1, 0,
1634 0, 0, 0, 1, 1,
1635
1636 /* Char 162 */
1637 1, 0, 0, 0, 1,
1638 0, 1, 1, 1, 0,
1639 0, 0, 0, 0, 0,
1640 0, 0, 0, 0, 0,
1641 0, 0, 0, 0, 0,
1642 0, 0, 0, 0, 0,
1643 0, 0, 0, 0, 0,
1644 0, 0, 0, 0, 0,
1645
1646 /* Char 163 */
1647 0, 0, 0, 0, 0,
1648 0, 1, 0, 0, 0,
1649 0, 1, 0, 1, 0,
1650 0, 1, 1, 0, 0,
1651 0, 1, 0, 0, 0,
1652 1, 1, 0, 0, 0,
1653 0, 1, 1, 1, 1,
1654 0, 0, 0, 0, 0,
1655
1656 /* Char 164 */
1657 0, 0, 0, 0, 0,
1658 1, 0, 0, 0, 1,
1659 0, 1, 1, 1, 0,
1660 0, 1, 0, 1, 0,
1661 0, 1, 1, 1, 0,
1662 1, 0, 0, 0, 1,
1663 0, 0, 0, 0, 0,
1664 0, 0, 0, 0, 0,
1665
1666 /* Char 165 */
1667 0, 0, 1, 1, 0,
1668 1, 0, 0, 1, 0,
1669 1, 0, 1, 0, 0,
1670 1, 0, 0, 0, 0,
1671 1, 0, 0, 0, 0,
1672 1, 0, 0, 0, 0,
1673 1, 1, 1, 1, 0,
1674 0, 0, 0, 0, 0,
1675
1676 /* Char 166 */
1677 0, 0, 0, 1, 0,
1678 0, 0, 1, 0, 0,
1679 0, 1, 1, 1, 0,
1680 1, 0, 0, 0, 0,
1681 0, 1, 1, 0, 0,
1682 0, 0, 0, 1, 0,
1683 1, 1, 1, 0, 0,
1684 0, 0, 0, 0, 0,
1685
1686 /* Char 167 */
1687 0, 0, 0, 0, 0,
1688 0, 0, 1, 1, 0,
1689 0, 1, 0, 0, 0,
1690 0, 0, 1, 0, 0,
1691 0, 1, 0, 1, 0,
1692 0, 0, 1, 0, 0,
1693 0, 0, 0, 1, 0,
1694 0, 1, 1, 0, 0,
1695
1696 /* Char 168 */
1697 0, 1, 0, 1, 0,
1698 0, 0, 0, 0, 0,
1699 0, 0, 0, 0, 0,
1700 0, 0, 0, 0, 0,
1701 0, 0, 0, 0, 0,
1702 0, 0, 0, 0, 0,
1703 0, 0, 0, 0, 0,
1704 0, 0, 0, 0, 0,
1705
1706 /* Char 169 */
1707 0, 1, 0, 1, 0,
1708 0, 0, 1, 0, 0,
1709 0, 1, 1, 1, 0,
1710 1, 0, 0, 0, 0,
1711 0, 1, 1, 0, 0,
1712 0, 0, 0, 1, 0,
1713 1, 1, 1, 0, 0,
1714 0, 0, 0, 0, 0,
1715
1716 /* Char 170 */
1717 0, 0, 0, 0, 0,
1718 0, 1, 1, 1, 0,
1719 1, 0, 0, 0, 0,
1720 1, 0, 0, 0, 0,
1721 0, 1, 1, 0, 0,
1722 0, 0, 0, 1, 0,
1723 1, 1, 1, 0, 0,
1724 0, 1, 0, 0, 0,
1725
1726 /* Char 171 */
1727 0, 1, 0, 1, 0,
1728 0, 0, 1, 0, 0,
1729 1, 1, 1, 1, 1,
1730 0, 0, 1, 0, 0,
1731 0, 0, 1, 0, 0,
1732 0, 0, 1, 0, 0,
1733 0, 0, 1, 0, 0,
1734 0, 0, 0, 0, 0,
1735
1736 /* Char 172 */
1737 0, 0, 0, 1, 0,
1738 0, 0, 1, 0, 0,
1739 1, 1, 1, 1, 0,
1740 0, 0, 1, 0, 0,
1741 0, 1, 0, 0, 0,
1742 1, 0, 0, 0, 0,
1743 1, 1, 1, 1, 0,
1744 0, 0, 0, 0, 0,
1745
1746 /* Char 173 */
1747 0, 0, 0, 0, 0,
1748 0, 0, 0, 0, 0,
1749 0, 0, 0, 0, 0,
1750 0, 0, 0, 0, 0,
1751 1, 1, 1, 0, 0,
1752 0, 0, 0, 0, 0,
1753 0, 0, 0, 0, 0,
1754 0, 0, 0, 0, 0,
1755
1756 /* Char 174 */
1757 0, 1, 0, 1, 0,
1758 0, 0, 1, 0, 0,
1759 1, 1, 1, 1, 0,
1760 0, 0, 1, 0, 0,
1761 0, 1, 0, 0, 0,
1762 1, 0, 0, 0, 0,
1763 1, 1, 1, 1, 0,
1764 0, 0, 0, 0, 0,
1765
1766 /* Char 175 */
1767 0, 1, 1, 0, 0,
1768 0, 0, 0, 0, 0,
1769 1, 1, 1, 1, 0,
1770 0, 0, 1, 0, 0,
1771 0, 1, 0, 0, 0,
1772 1, 0, 0, 0, 0,
1773 1, 1, 1, 1, 0,
1774 0, 0, 0, 0, 0,
1775
1776 /* Char 176 */
1777 0, 0, 1, 0, 0,
1778 0, 1, 0, 1, 0,
1779 0, 0, 1, 0, 0,
1780 0, 0, 0, 0, 0,
1781 0, 0, 0, 0, 0,
1782 0, 0, 0, 0, 0,
1783 0, 0, 0, 0, 0,
1784 0, 0, 0, 0, 0,
1785
1786 /* Char 177 */
1787 0, 0, 0, 0, 0,
1788 0, 0, 0, 0, 0,
1789 0, 0, 0, 0, 0,
1790 0, 1, 1, 1, 0,
1791 1, 0, 0, 1, 0,
1792 1, 0, 1, 1, 0,
1793 0, 1, 0, 1, 0,
1794 0, 0, 0, 1, 1,
1795
1796 /* Char 178 */
1797 0, 0, 0, 0, 0,
1798 0, 0, 0, 0, 0,
1799 0, 0, 0, 0, 0,
1800 0, 0, 0, 0, 0,
1801 0, 0, 0, 0, 0,
1802 0, 0, 0, 0, 0,
1803 0, 0, 1, 0, 0,
1804 0, 0, 0, 1, 1,
1805
1806 /* Char 179 */
1807 0, 0, 0, 0, 0,
1808 0, 1, 1, 0, 0,
1809 0, 0, 1, 1, 0,
1810 0, 0, 1, 0, 0,
1811 0, 1, 1, 0, 0,
1812 0, 0, 1, 0, 0,
1813 0, 1, 1, 1, 0,
1814 0, 0, 0, 0, 0,
1815
1816 /* Char 180 */
1817 0, 0, 0, 1, 0,
1818 0, 0, 1, 0, 0,
1819 0, 0, 0, 0, 0,
1820 0, 0, 0, 0, 0,
1821 0, 0, 0, 0, 0,
1822 0, 0, 0, 0, 0,
1823 0, 0, 0, 0, 0,
1824 0, 0, 0, 0, 0,
1825
1826 /* Char 181 */
1827 0, 0, 0, 1, 1,
1828 1, 1, 0, 0, 1,
1829 0, 1, 0, 1, 0,
1830 0, 1, 0, 0, 0,
1831 0, 1, 0, 0, 0,
1832 0, 1, 0, 0, 0,
1833 1, 1, 1, 0, 0,
1834 0, 0, 0, 0, 0,
1835
1836 /* Char 182 */
1837 0, 0, 0, 1, 0,
1838 0, 0, 1, 0, 0,
1839 0, 0, 0, 0, 0,
1840 0, 1, 1, 1, 0,
1841 1, 1, 0, 0, 0,
1842 0, 0, 1, 1, 0,
1843 1, 1, 1, 0, 0,
1844 0, 0, 0, 0, 0,
1845
1846 /* Char 183 */
1847 0, 1, 0, 1, 0,
1848 0, 0, 1, 0, 0,
1849 0, 0, 0, 0, 0,
1850 0, 0, 0, 0, 0,
1851 0, 0, 0, 0, 0,
1852 0, 0, 0, 0, 0,
1853 0, 0, 0, 0, 0,
1854 0, 0, 0, 0, 0,
1855
1856 /* Char 184 */
1857 0, 0, 0, 0, 0,
1858 0, 0, 0, 0, 0,
1859 0, 0, 0, 0, 0,
1860 0, 0, 0, 0, 0,
1861 0, 0, 0, 0, 0,
1862 0, 0, 0, 0, 0,
1863 0, 0, 0, 1, 0,
1864 0, 1, 1, 0, 0,
1865
1866 /* Char 185 */
1867 0, 1, 0, 1, 0,
1868 0, 0, 1, 0, 0,
1869 0, 0, 0, 0, 0,
1870 0, 1, 1, 1, 0,
1871 1, 1, 0, 0, 0,
1872 0, 0, 1, 1, 0,
1873 1, 1, 1, 0, 0,
1874 0, 0, 0, 0, 0,
1875
1876 /* Char 186 */
1877 0, 0, 0, 0, 0,
1878 0, 0, 0, 0, 0,
1879 0, 0, 0, 0, 0,
1880 0, 1, 1, 1, 0,
1881 1, 1, 0, 0, 0,
1882 0, 0, 1, 1, 0,
1883 1, 1, 1, 0, 0,
1884 0, 1, 0, 0, 0,
1885
1886 /* Char 187 */
1887 0, 0, 0, 1, 1,
1888 0, 1, 0, 0, 1,
1889 0, 1, 0, 1, 0,
1890 1, 1, 1, 0, 0,
1891 0, 1, 0, 0, 0,
1892 0, 1, 0, 1, 0,
1893 0, 0, 1, 0, 0,
1894 0, 0, 0, 0, 0,
1895
1896 /* Char 188 */
1897 0, 0, 0, 1, 0,
1898 0, 0, 1, 0, 0,
1899 0, 0, 0, 0, 0,
1900 1, 1, 1, 1, 0,
1901 0, 0, 1, 0, 0,
1902 0, 1, 0, 0, 0,
1903 1, 1, 1, 1, 0,
1904 0, 0, 0, 0, 0,
1905
1906 /* Char 189 */
1907 0, 1, 0, 0, 1,
1908 1, 0, 0, 1, 0,
1909 0, 0, 0, 0, 0,
1910 0, 0, 0, 0, 0,
1911 0, 0, 0, 0, 0,
1912 0, 0, 0, 0, 0,
1913 0, 0, 0, 0, 0,
1914 0, 0, 0, 0, 0,
1915
1916 /* Char 190 */
1917 0, 1, 0, 1, 0,
1918 0, 0, 1, 0, 0,
1919 0, 0, 0, 0, 0,
1920 1, 1, 1, 1, 0,
1921 0, 0, 1, 0, 0,
1922 0, 1, 0, 0, 0,
1923 1, 1, 1, 1, 0,
1924 0, 0, 0, 0, 0,
1925
1926 /* Char 191 */
1927 0, 0, 0, 0, 0,
1928 0, 1, 1, 0, 0,
1929 0, 0, 0, 0, 0,
1930 1, 1, 1, 1, 0,
1931 0, 0, 1, 0, 0,
1932 0, 1, 0, 0, 0,
1933 1, 1, 1, 1, 0,
1934 0, 0, 0, 0, 0,
1935
1936 /* Char 192 */
1937 0, 0, 1, 0, 0,
1938 0, 1, 0, 0, 0,
1939 1, 1, 1, 0, 0,
1940 1, 0, 0, 1, 0,
1941 1, 1, 1, 0, 0,
1942 1, 0, 1, 0, 0,
1943 1, 0, 0, 1, 0,
1944 0, 0, 0, 0, 0,
1945
1946 /* Char 193 */
1947 0, 0, 0, 1, 0,
1948 0, 0, 1, 0, 0,
1949 0, 1, 1, 0, 0,
1950 1, 0, 0, 1, 0,
1951 1, 1, 1, 1, 0,
1952 1, 0, 0, 1, 0,
1953 1, 0, 0, 1, 0,
1954 0, 0, 0, 0, 0,
1955
1956 /* Char 194 */
1957 0, 1, 1, 0, 0,
1958 1, 0, 0, 1, 0,
1959 0, 1, 1, 0, 0,
1960 1, 0, 0, 1, 0,
1961 1, 1, 1, 1, 0,
1962 1, 0, 0, 1, 0,
1963 1, 0, 0, 1, 0,
1964 0, 0, 0, 0, 0,
1965
1966 /* Char 195 */
1967 1, 0, 0, 1, 0,
1968 0, 1, 1, 0, 0,
1969 0, 1, 1, 0, 0,
1970 1, 0, 0, 1, 0,
1971 1, 1, 1, 1, 0,
1972 1, 0, 0, 1, 0,
1973 1, 0, 0, 1, 0,
1974 0, 0, 0, 0, 0,
1975
1976 /* Char 196 */
1977 1, 0, 0, 1, 0,
1978 0, 0, 0, 0, 0,
1979 0, 1, 1, 0, 0,
1980 1, 0, 0, 1, 0,
1981 1, 1, 1, 1, 0,
1982 1, 0, 0, 1, 0,
1983 1, 0, 0, 1, 0,
1984 0, 0, 0, 0, 0,
1985
1986 /* Char 197 */
1987 0, 0, 0, 1, 0,
1988 0, 0, 1, 0, 0,
1989 1, 0, 0, 0, 0,
1990 1, 0, 0, 0, 0,
1991 1, 0, 0, 0, 0,
1992 1, 0, 0, 0, 0,
1993 1, 1, 1, 1, 0,
1994 0, 0, 0, 0, 0,
1995
1996 /* Char 198 */
1997 0, 0, 0, 1, 0,
1998 0, 0, 1, 0, 0,
1999 0, 1, 1, 0, 0,
2000 1, 0, 0, 1, 0,
2001 1, 0, 0, 0, 0,
2002 1, 0, 0, 1, 0,
2003 0, 1, 1, 0, 0,
2004 0, 0, 0, 0, 0,
2005
2006 /* Char 199 */
2007 0, 0, 0, 0, 0,
2008 0, 1, 1, 0, 0,
2009 1, 0, 0, 1, 0,
2010 1, 0, 0, 0, 0,
2011 1, 0, 0, 0, 0,
2012 1, 0, 0, 1, 0,
2013 0, 1, 1, 0, 0,
2014 1, 1, 0, 0, 0,
2015
2016 /* Char 200 */
2017 0, 0, 0, 1, 0,
2018 0, 0, 1, 0, 0,
2019 0, 1, 1, 0, 0,
2020 1, 0, 0, 1, 0,
2021 1, 0, 0, 0, 0,
2022 1, 0, 0, 1, 0,
2023 0, 1, 1, 0, 0,
2024 0, 0, 0, 0, 0,
2025
2026 /* Char 201 */
2027 0, 0, 0, 1, 0,
2028 0, 0, 1, 0, 0,
2029 1, 1, 1, 1, 0,
2030 1, 0, 0, 0, 0,
2031 1, 1, 1, 0, 0,
2032 1, 0, 0, 0, 0,
2033 1, 1, 1, 1, 0,
2034 0, 0, 0, 0, 0,
2035
2036 /* Char 202 */
2037 0, 0, 0, 0, 0,
2038 1, 1, 1, 1, 0,
2039 1, 0, 0, 0, 0,
2040 1, 1, 1, 0, 0,
2041 1, 0, 0, 0, 0,
2042 1, 0, 0, 0, 0,
2043 1, 1, 1, 1, 0,
2044 0, 0, 0, 1, 1,
2045
2046 /* Char 203 */
2047 1, 0, 0, 1, 0,
2048 0, 0, 0, 0, 0,
2049 1, 1, 1, 1, 0,
2050 1, 0, 0, 0, 0,
2051 1, 1, 1, 0, 0,
2052 1, 0, 0, 0, 0,
2053 1, 1, 1, 1, 0,
2054 0, 0, 0, 0, 0,
2055
2056 /* Char 204 */
2057 0, 1, 0, 1, 0,
2058 0, 0, 1, 0, 0,
2059 1, 1, 1, 1, 0,
2060 1, 0, 0, 0, 0,
2061 1, 1, 1, 0, 0,
2062 1, 0, 0, 0, 0,
2063 1, 1, 1, 1, 0,
2064 0, 0, 0, 0, 0,
2065
2066 /* Char 205 */
2067 0, 0, 0, 1, 0,
2068 0, 0, 1, 0, 0,
2069 0, 1, 1, 1, 0,
2070 0, 0, 1, 0, 0,
2071 0, 0, 1, 0, 0,
2072 0, 0, 1, 0, 0,
2073 0, 1, 1, 1, 0,
2074 0, 0, 0, 0, 0,
2075
2076 /* Char 206 */
2077 0, 0, 1, 0, 0,
2078 0, 1, 0, 1, 0,
2079 0, 0, 0, 0, 0,
2080 0, 1, 1, 1, 0,
2081 0, 0, 1, 0, 0,
2082 0, 0, 1, 0, 0,
2083 0, 1, 1, 1, 0,
2084 0, 0, 0, 0, 0,
2085
2086 /* Char 207 */
2087 0, 1, 0, 1, 0,
2088 0, 0, 1, 0, 0,
2089 1, 1, 1, 0, 0,
2090 1, 0, 0, 1, 0,
2091 1, 0, 0, 1, 0,
2092 1, 0, 0, 1, 0,
2093 1, 1, 1, 0, 0,
2094 0, 0, 0, 0, 0,
2095
2096 /* Char 208 */
2097 0, 0, 0, 0, 0,
2098 1, 1, 1, 0, 0,
2099 0, 1, 0, 1, 0,
2100 1, 1, 0, 1, 0,
2101 0, 1, 0, 1, 0,
2102 0, 1, 0, 1, 0,
2103 1, 1, 1, 0, 0,
2104 0, 0, 0, 0, 0,
2105
2106 /* Char 209 */
2107 0, 0, 0, 1, 0,
2108 0, 0, 1, 0, 0,
2109 1, 0, 0, 1, 0,
2110 1, 1, 0, 1, 0,
2111 1, 1, 1, 1, 0,
2112 1, 0, 1, 1, 0,
2113 1, 0, 0, 1, 0,
2114 0, 0, 0, 0, 0,
2115
2116 /* Char 210 */
2117 0, 1, 0, 1, 0,
2118 0, 0, 1, 0, 0,
2119 1, 0, 0, 1, 0,
2120 1, 1, 0, 1, 0,
2121 1, 1, 1, 1, 0,
2122 1, 0, 1, 1, 0,
2123 1, 0, 0, 1, 0,
2124 0, 0, 0, 0, 0,
2125
2126 /* Char 211 */
2127 0, 0, 0, 1, 0,
2128 0, 0, 1, 0, 0,
2129 0, 1, 1, 0, 0,
2130 1, 0, 0, 1, 0,
2131 1, 0, 0, 1, 0,
2132 1, 0, 0, 1, 0,
2133 0, 1, 1, 0, 0,
2134 0, 0, 0, 0, 0,
2135
2136 /* Char 212 */
2137 0, 1, 1, 0, 0,
2138 1, 0, 0, 1, 0,
2139 0, 1, 1, 0, 0,
2140 1, 0, 0, 1, 0,
2141 1, 0, 0, 1, 0,
2142 1, 0, 0, 1, 0,
2143 0, 1, 1, 0, 0,
2144 0, 0, 0, 0, 0,
2145
2146 /* Char 213 */
2147 0, 1, 0, 0, 1,
2148 1, 0, 0, 1, 0,
2149 0, 1, 1, 0, 0,
2150 1, 0, 0, 1, 0,
2151 1, 0, 0, 1, 0,
2152 1, 0, 0, 1, 0,
2153 0, 1, 1, 0, 0,
2154 0, 0, 0, 0, 0,
2155
2156 /* Char 214 */
2157 1, 0, 0, 1, 0,
2158 0, 0, 0, 0, 0,
2159 0, 1, 1, 0, 0,
2160 1, 0, 0, 1, 0,
2161 1, 0, 0, 1, 0,
2162 1, 0, 0, 1, 0,
2163 0, 1, 1, 0, 0,
2164 0, 0, 0, 0, 0,
2165
2166 /* Char 215 */
2167 0, 0, 0, 0, 0,
2168 0, 0, 0, 0, 0,
2169 1, 0, 0, 1, 0,
2170 0, 1, 1, 0, 0,
2171 0, 1, 1, 0, 0,
2172 1, 0, 0, 1, 0,
2173 0, 0, 0, 0, 0,
2174 0, 0, 0, 0, 0,
2175
2176 /* Char 216 */
2177 0, 1, 0, 1, 0,
2178 0, 0, 1, 0, 0,
2179 1, 1, 1, 0, 0,
2180 1, 0, 0, 1, 0,
2181 1, 1, 1, 0, 0,
2182 1, 0, 1, 0, 0,
2183 1, 0, 0, 1, 0,
2184 0, 0, 0, 0, 0,
2185
2186 /* Char 217 */
2187 0, 1, 1, 0, 0,
2188 0, 1, 1, 0, 0,
2189 1, 0, 0, 1, 0,
2190 1, 0, 0, 1, 0,
2191 1, 0, 0, 1, 0,
2192 1, 0, 0, 1, 0,
2193 0, 1, 1, 0, 0,
2194 0, 0, 0, 0, 0,
2195
2196 /* Char 218 */
2197 0, 0, 0, 1, 0,
2198 0, 0, 1, 0, 0,
2199 1, 0, 0, 1, 0,
2200 1, 0, 0, 1, 0,
2201 1, 0, 0, 1, 0,
2202 1, 0, 0, 1, 0,
2203 0, 1, 1, 0, 0,
2204 0, 0, 0, 0, 0,
2205
2206 /* Char 219 */
2207 0, 1, 0, 0, 1,
2208 1, 0, 0, 1, 0,
2209 1, 0, 0, 1, 0,
2210 1, 0, 0, 1, 0,
2211 1, 0, 0, 1, 0,
2212 1, 0, 0, 1, 0,
2213 0, 1, 1, 0, 0,
2214 0, 0, 0, 0, 0,
2215
2216 /* Char 220 */
2217 1, 0, 0, 1, 0,
2218 0, 0, 0, 0, 0,
2219 1, 0, 0, 1, 0,
2220 1, 0, 0, 1, 0,
2221 1, 0, 0, 1, 0,
2222 1, 0, 0, 1, 0,
2223 0, 1, 1, 0, 0,
2224 0, 0, 0, 0, 0,
2225
2226 /* Char 221 */
2227 0, 0, 0, 1, 0,
2228 0, 0, 1, 0, 0,
2229 1, 0, 0, 0, 1,
2230 0, 1, 0, 1, 0,
2231 0, 0, 1, 0, 0,
2232 0, 0, 1, 0, 0,
2233 0, 0, 1, 0, 0,
2234 0, 0, 0, 0, 0,
2235
2236 /* Char 222 */
2237 0, 0, 0, 0, 0,
2238 1, 1, 1, 1, 1,
2239 0, 0, 1, 0, 0,
2240 0, 0, 1, 0, 0,
2241 0, 0, 1, 0, 0,
2242 0, 0, 1, 0, 0,
2243 0, 0, 1, 0, 0,
2244 0, 1, 0, 0, 0,
2245
2246 /* Char 223 */
2247 0, 0, 0, 0, 0,
2248 0, 1, 1, 0, 0,
2249 1, 0, 0, 1, 0,
2250 1, 1, 1, 0, 0,
2251 1, 0, 0, 1, 0,
2252 1, 1, 0, 1, 0,
2253 1, 0, 1, 0, 0,
2254 1, 0, 0, 0, 0,
2255
2256 /* Char 224 */
2257 0, 0, 0, 1, 0,
2258 0, 0, 1, 0, 0,
2259 0, 0, 0, 0, 0,
2260 1, 0, 1, 0, 0,
2261 1, 1, 0, 1, 0,
2262 1, 0, 0, 0, 0,
2263 1, 0, 0, 0, 0,
2264 0, 0, 0, 0, 0,
2265
2266 /* Char 225 */
2267 0, 0, 0, 1, 0,
2268 0, 0, 1, 0, 0,
2269 0, 0, 0, 0, 0,
2270 0, 1, 1, 1, 0,
2271 1, 0, 0, 1, 0,
2272 1, 0, 1, 1, 0,
2273 0, 1, 0, 1, 0,
2274 0, 0, 0, 0, 0,
2275
2276 /* Char 226 */
2277 0, 0, 1, 0, 0,
2278 0, 1, 0, 1, 0,
2279 0, 0, 0, 0, 0,
2280 0, 1, 1, 1, 0,
2281 1, 0, 0, 1, 0,
2282 1, 0, 1, 1, 0,
2283 0, 1, 0, 1, 0,
2284 0, 0, 0, 0, 0,
2285
2286 /* Char 227 */
2287 1, 0, 0, 1, 0,
2288 0, 1, 1, 0, 0,
2289 0, 0, 0, 0, 0,
2290 0, 1, 1, 1, 0,
2291 1, 0, 0, 1, 0,
2292 1, 0, 1, 1, 0,
2293 0, 1, 0, 1, 0,
2294 0, 0, 0, 0, 0,
2295
2296 /* Char 228 */
2297 1, 0, 0, 1, 0,
2298 0, 0, 0, 0, 0,
2299 0, 0, 0, 0, 0,
2300 0, 1, 1, 1, 0,
2301 1, 0, 0, 1, 0,
2302 1, 0, 1, 1, 0,
2303 0, 1, 0, 1, 0,
2304 0, 0, 0, 0, 0,
2305
2306 /* Char 229 */
2307 0, 0, 0, 0, 1,
2308 0, 0, 0, 1, 0,
2309 0, 1, 1, 0, 0,
2310 0, 0, 1, 0, 0,
2311 0, 0, 1, 0, 0,
2312 0, 0, 1, 0, 0,
2313 0, 1, 1, 1, 0,
2314 0, 0, 0, 0, 0,
2315
2316 /* Char 230 */
2317 0, 0, 0, 1, 0,
2318 0, 0, 1, 0, 0,
2319 0, 0, 0, 0, 0,
2320 0, 1, 1, 1, 0,
2321 1, 0, 0, 0, 0,
2322 1, 0, 0, 0, 0,
2323 0, 1, 1, 1, 0,
2324 0, 0, 0, 0, 0,
2325
2326 /* Char 231 */
2327 0, 0, 0, 0, 0,
2328 0, 0, 0, 0, 0,
2329 0, 0, 0, 0, 0,
2330 0, 1, 1, 1, 0,
2331 1, 0, 0, 0, 0,
2332 1, 0, 0, 0, 0,
2333 0, 1, 1, 1, 0,
2334 1, 1, 1, 0, 0,
2335
2336 /* Char 232 */
2337 0, 1, 0, 1, 0,
2338 0, 0, 1, 0, 0,
2339 0, 0, 0, 0, 0,
2340 0, 1, 1, 1, 0,
2341 1, 0, 0, 0, 0,
2342 1, 0, 0, 0, 0,
2343 0, 1, 1, 1, 0,
2344 0, 0, 0, 0, 0,
2345
2346 /* Char 233 */
2347 0, 0, 0, 1, 0,
2348 0, 0, 1, 0, 0,
2349 0, 0, 0, 0, 0,
2350 0, 1, 1, 0, 0,
2351 1, 0, 1, 1, 0,
2352 1, 1, 0, 0, 0,
2353 0, 1, 1, 1, 0,
2354 0, 0, 0, 0, 0,
2355
2356 /* Char 234 */
2357 0, 0, 0, 0, 0,
2358 0, 0, 0, 0, 0,
2359 0, 0, 0, 0, 0,
2360 0, 1, 1, 0, 0,
2361 1, 0, 1, 1, 0,
2362 1, 1, 0, 0, 0,
2363 0, 1, 1, 1, 0,
2364 0, 0, 0, 1, 1,
2365
2366 /* Char 235 */
2367 0, 0, 0, 0, 0,
2368 1, 0, 0, 1, 0,
2369 0, 0, 0, 0, 0,
2370 0, 1, 1, 0, 0,
2371 1, 0, 1, 1, 0,
2372 1, 1, 0, 0, 0,
2373 0, 1, 1, 1, 0,
2374 0, 0, 0, 0, 0,
2375
2376 /* Char 236 */
2377 0, 1, 0, 1, 0,
2378 0, 0, 1, 0, 0,
2379 0, 0, 0, 0, 0,
2380 0, 1, 1, 0, 0,
2381 1, 0, 1, 1, 0,
2382 1, 1, 0, 0, 0,
2383 0, 1, 1, 1, 0,
2384 0, 0, 0, 0, 0,
2385
2386 /* Char 237 */
2387 0, 0, 0, 1, 0,
2388 0, 0, 1, 0, 0,
2389 0, 0, 0, 0, 0,
2390 0, 1, 1, 0, 0,
2391 0, 0, 1, 0, 0,
2392 0, 0, 1, 0, 0,
2393 0, 1, 1, 1, 0,
2394 0, 0, 0, 0, 0,
2395
2396 /* Char 238 */
2397 0, 0, 1, 0, 0,
2398 0, 1, 0, 1, 0,
2399 0, 0, 0, 0, 0,
2400 0, 1, 1, 0, 0,
2401 0, 0, 1, 0, 0,
2402 0, 0, 1, 0, 0,
2403 0, 1, 1, 1, 0,
2404 0, 0, 0, 0, 0,
2405
2406 /* Char 239 */
2407 0, 0, 0, 1, 1,
2408 0, 0, 1, 0, 1,
2409 0, 0, 1, 0, 1,
2410 0, 1, 1, 0, 0,
2411 1, 0, 1, 0, 0,
2412 1, 0, 1, 0, 0,
2413 0, 1, 1, 0, 0,
2414 0, 0, 0, 0, 0,
2415
2416 /* Char 240 */
2417 0, 0, 0, 1, 0,
2418 0, 0, 1, 1, 1,
2419 0, 0, 0, 1, 0,
2420 0, 1, 1, 1, 0,
2421 1, 0, 0, 1, 0,
2422 1, 0, 1, 1, 0,
2423 0, 1, 0, 1, 0,
2424 0, 0, 0, 0, 0,
2425
2426 /* Char 241 */
2427 0, 0, 0, 1, 0,
2428 0, 0, 1, 0, 0,
2429 0, 0, 0, 0, 0,
2430 1, 0, 1, 0, 0,
2431 1, 1, 0, 1, 0,
2432 1, 0, 0, 1, 0,
2433 1, 0, 0, 1, 0,
2434 0, 0, 0, 0, 0,
2435
2436 /* Char 242 */
2437 0, 1, 0, 1, 0,
2438 0, 0, 1, 0, 0,
2439 0, 0, 0, 0, 0,
2440 1, 0, 1, 0, 0,
2441 1, 1, 0, 1, 0,
2442 1, 0, 0, 1, 0,
2443 1, 0, 0, 1, 0,
2444 0, 0, 0, 0, 0,
2445
2446 /* Char 243 */
2447 0, 0, 0, 1, 0,
2448 0, 0, 1, 0, 0,
2449 0, 0, 0, 0, 0,
2450 0, 1, 1, 0, 0,
2451 1, 0, 0, 1, 0,
2452 1, 0, 0, 1, 0,
2453 0, 1, 1, 0, 0,
2454 0, 0, 0, 0, 0,
2455
2456 /* Char 244 */
2457 0, 1, 1, 0, 0,
2458 1, 0, 0, 1, 0,
2459 0, 0, 0, 0, 0,
2460 0, 1, 1, 0, 0,
2461 1, 0, 0, 1, 0,
2462 1, 0, 0, 1, 0,
2463 0, 1, 1, 0, 0,
2464 0, 0, 0, 0, 0,
2465
2466 /* Char 245 */
2467 0, 1, 0, 0, 1,
2468 1, 0, 0, 1, 0,
2469 0, 0, 0, 0, 0,
2470 0, 1, 1, 0, 0,
2471 1, 0, 0, 1, 0,
2472 1, 0, 0, 1, 0,
2473 0, 1, 1, 0, 0,
2474 0, 0, 0, 0, 0,
2475
2476 /* Char 246 */
2477 1, 0, 0, 1, 0,
2478 0, 0, 0, 0, 0,
2479 0, 0, 0, 0, 0,
2480 0, 1, 1, 0, 0,
2481 1, 0, 0, 1, 0,
2482 1, 0, 0, 1, 0,
2483 0, 1, 1, 0, 0,
2484 0, 0, 0, 0, 0,
2485
2486 /* Char 247 */
2487 0, 0, 0, 0, 0,
2488 0, 0, 0, 0, 0,
2489 0, 1, 1, 0, 0,
2490 0, 0, 0, 0, 0,
2491 1, 1, 1, 1, 0,
2492 0, 0, 0, 0, 0,
2493 0, 1, 1, 0, 0,
2494 0, 0, 0, 0, 0,
2495
2496 /* Char 248 */
2497 0, 1, 0, 1, 0,
2498 0, 0, 1, 0, 0,
2499 0, 0, 0, 0, 0,
2500 1, 0, 1, 0, 0,
2501 1, 1, 0, 1, 0,
2502 1, 0, 0, 0, 0,
2503 1, 0, 0, 0, 0,
2504 0, 0, 0, 0, 0,
2505
2506 /* Char 249 */
2507 0, 1, 1, 0, 0,
2508 0, 1, 1, 0, 0,
2509 0, 0, 0, 0, 0,
2510 1, 0, 0, 1, 0,
2511 1, 0, 0, 1, 0,
2512 1, 0, 1, 1, 0,
2513 0, 1, 0, 1, 0,
2514 0, 0, 0, 0, 0,
2515
2516 /* Char 250 */
2517 0, 0, 0, 1, 0,
2518 0, 0, 1, 0, 0,
2519 0, 0, 0, 0, 0,
2520 1, 0, 0, 1, 0,
2521 1, 0, 0, 1, 0,
2522 1, 0, 1, 1, 0,
2523 0, 1, 0, 1, 0,
2524 0, 0, 0, 0, 0,
2525
2526 /* Char 251 */
2527 0, 1, 0, 0, 1,
2528 1, 0, 0, 1, 0,
2529 0, 0, 0, 0, 0,
2530 1, 0, 0, 1, 0,
2531 1, 0, 0, 1, 0,
2532 1, 0, 1, 1, 0,
2533 0, 1, 0, 1, 0,
2534 0, 0, 0, 0, 0,
2535
2536 /* Char 252 */
2537 1, 0, 0, 1, 0,
2538 0, 0, 0, 0, 0,
2539 0, 0, 0, 0, 0,
2540 1, 0, 0, 1, 0,
2541 1, 0, 0, 1, 0,
2542 1, 0, 1, 1, 0,
2543 0, 1, 0, 1, 0,
2544 0, 0, 0, 0, 0,
2545
2546 /* Char 253 */
2547 0, 0, 0, 1, 0,
2548 0, 0, 1, 0, 0,
2549 0, 0, 0, 0, 0,
2550 1, 0, 0, 1, 0,
2551 1, 0, 0, 1, 0,
2552 0, 1, 1, 1, 0,
2553 0, 0, 0, 1, 0,
2554 0, 1, 1, 0, 0,
2555
2556 /* Char 254 */
2557 0, 0, 0, 0, 0,
2558 0, 1, 0, 0, 0,
2559 0, 1, 0, 0, 0,
2560 1, 1, 1, 0, 0,
2561 0, 1, 0, 0, 0,
2562 0, 1, 0, 1, 0,
2563 0, 0, 1, 0, 0,
2564 0, 1, 1, 0, 0,
2565
2566 /* Char 255 */
2567 0, 0, 0, 0, 0,
2568 0, 0, 1, 0, 0,
2569 0, 0, 0, 0, 0,
2570 0, 0, 0, 0, 0,
2571 0, 0, 0, 0, 0,
2572 0, 0, 0, 0, 0,
2573 0, 0, 0, 0, 0,
2574 0, 0, 0, 0, 0,
2575
2576
2577 };
2578
2579 gdFont gdFontTinyRep = {
2580 256,
2581 0,
2582 5,
2583 8,
2584 gdFontTinyData
2585 };
2586
2587 BGD_EXPORT_DATA_IMPL gdFontPtr gdFontTiny = &gdFontTinyRep;
2588
2589 BGD_DECLARE(gdFontPtr)
2590 gdFontGetTiny (void)
2591 {
2592 return gdFontTiny;
2593 }
2594
2595 /* This file has not been truncated. */
0 #ifdef __cplusplus
1 extern "C" {
2 #endif
3
4
5 #ifndef _GDFONTT_H_
6 #define _GDFONTT_H_ 1
7
8 #ifdef __cplusplus
9 extern "C"
10 {
11 #endif
12
13 /*
14 This is a header file for gd font, generated using
15 bdftogd version 0.5 by Jan Pazdziora, adelton@fi.muni.cz
16 from bdf font
17 -Misc-Fixed-Medium-R-Normal--8-80-75-75-C-50-ISO8859-2
18 at Thu Jan 8 13:49:54 1998.
19 The original bdf was holding following copyright:
20 "Libor Skarvada, libor@informatics.muni.cz"
21 */
22
23
24 #include "gd.h"
25
26 BGD_EXPORT_DATA_PROT gdFontPtr gdFontTiny;
27 BGD_DECLARE(gdFontPtr) gdFontGetTiny(void);
28
29 #ifdef __cplusplus
30 }
31 #endif
32
33 #endif
34
35 #ifdef __cplusplus
36 }
37 #endif
0
1 /********************************************/
2 /* gd interface to freetype library */
3 /* */
4 /* John Ellson ellson@graphviz.org */
5 /********************************************/
6
7 #ifdef HAVE_CONFIG_H
8 #include "config.h"
9 #endif
10
11 #include <stdio.h>
12 #include <stdlib.h>
13 #include <string.h>
14 #include <math.h>
15 #include "gd.h"
16 #include "gdhelpers.h"
17 #include "entities.h"
18
19 /* 2.0.10: WIN32, not MSWIN32 */
20 #ifndef WIN32
21 #include <unistd.h>
22 #else
23 #include <io.h>
24 #ifndef R_OK
25 #define R_OK 04 /* Needed in Windows */
26 #endif
27 #endif
28
29 /* number of antialised colors for indexed bitmaps */
30 #define gd_NUMCOLORS 8
31
32 static int fontConfigFlag = 0;
33
34 static char *font_path(char **fontpath, char *name_list);
35 /* translate a fontconfig fontpattern into a fontpath.
36 return NULL if OK, else return error string */
37 static char *font_pattern(char **fontpath, char *fontpattern);
38
39 /* 2.0.30: move these up here so we can build correctly without freetype
40 but with fontconfig */
41
42 /*
43 * The character (space) used to separate alternate fonts in the
44 * fontlist parameter to gdImageStringFT. 2.0.18: space was a
45 * poor choice for this.
46 */
47 #define LISTSEPARATOR ";"
48
49 /*
50 * DEFAULT_FONTPATH and PATHSEPARATOR are host type dependent and
51 * are normally set by configure in config.h. These are just
52 * some last resort values that might match some Un*x system
53 * if building this version of gd separate from graphviz.
54 */
55 #ifndef DEFAULT_FONTPATH
56 #if defined(__APPLE__) || (defined(__MWERKS__) && defined(macintosh))
57 #define DEFAULT_FONTPATH "/usr/share/fonts/truetype:/System/Library/Fonts:/Library/Fonts"
58 #else
59 #define DEFAULT_FONTPATH "/usr/share/fonts/truetype"
60 #endif
61 #endif
62 #ifndef PATHSEPARATOR
63 #define PATHSEPARATOR ":"
64 #endif
65
66 #ifndef TRUE
67 #define FALSE 0
68 #define TRUE !FALSE
69 #endif
70
71 #define MAX(a,b) ((a)>(b)?(a):(b))
72 #define MIN(a,b) ((a)<(b)?(a):(b))
73
74
75 BGD_DECLARE(char *) gdImageStringTTF (gdImage * im, int *brect, int fg, char *fontlist,
76 double ptsize, double angle, int x, int y, char *string)
77 {
78 /* 2.0.6: valid return */
79 return gdImageStringFT (im, brect, fg, fontlist, ptsize,
80 angle, x, y, string);
81 }
82
83 #ifndef HAVE_LIBFREETYPE
84 BGD_DECLARE(char *) gdImageStringFTEx (gdImage * im, int *brect, int fg, char *fontlist,
85 double ptsize, double angle, int x, int y, char *string,
86 gdFTStringExtraPtr strex)
87 {
88 return "libgd was not built with FreeType font support\n";
89 }
90
91 BGD_DECLARE(char *) gdImageStringFT (gdImage * im, int *brect, int fg, char *fontlist,
92 double ptsize, double angle, int x, int y, char *string)
93 {
94 return "libgd was not built with FreeType font support\n";
95 }
96 #else
97
98 #ifndef HAVE_LIBFONTCONFIG
99 static char * font_pattern(char **fontpath, char *fontpattern)
100 {
101 return "libgd was not built with FontConfig support\n";
102 }
103 #endif /* HAVE_LIBFONTCONFIG */
104
105 #include "gdcache.h"
106 /* 2.0.16 Christophe Thomas: starting with FreeType 2.1.6, this is
107 mandatory, and it has been supported for a long while. */
108 #ifdef HAVE_FT2BUILD_H
109 #include <ft2build.h>
110 #include FT_FREETYPE_H
111 #include FT_GLYPH_H
112 #include FT_SIZES_H
113 #else
114 #include <freetype/freetype.h>
115 #include <freetype/ftglyph.h>
116 #include <freetype/ftsizes.h>
117 #endif
118
119 /* number of fonts cached before least recently used is replaced */
120 #define FONTCACHESIZE 6
121
122 /* number of antialias color lookups cached */
123 #define TWEENCOLORCACHESIZE 32
124
125 /*
126 * Line separation as a factor of font height.
127 * No space between if LINESPACE = 1.00
128 * Line separation will be rounded up to next pixel row.
129 */
130 #define LINESPACE 1.05
131
132 typedef struct
133 {
134 char *fontlist; /* key */
135 int flags; /* key */
136 char *fontpath;
137 FT_Library *library;
138 FT_Face face;
139 }
140 font_t;
141
142 typedef struct
143 {
144 char *fontlist; /* key */
145 int flags; /* key */
146 FT_Library *library;
147 }
148 fontkey_t;
149
150 typedef struct
151 {
152 int pixel; /* key */
153 int bgcolor; /* key */
154 int fgcolor; /* key *//* -ve means no antialias */
155 gdImagePtr im; /* key */
156 int tweencolor;
157 }
158 tweencolor_t;
159
160 typedef struct
161 {
162 int pixel; /* key */
163 int bgcolor; /* key */
164 int fgcolor; /* key *//* -ve means no antialias */
165 gdImagePtr im; /* key */
166 }
167 tweencolorkey_t;
168
169 /********************************************************************
170 * gdTcl_UtfToUniChar is borrowed from Tcl ...
171 */
172 /*
173 * tclUtf.c --
174 *
175 * Routines for manipulating UTF-8 strings.
176 *
177 * Copyright (c) 1997-1998 Sun Microsystems, Inc.
178 *
179 * See the file "license.terms" for information on usage and redistribution
180 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
181 *
182 * SCCS: @(#) tclUtf.c 1.25 98/01/28 18:02:43
183 */
184
185 /*
186 *---------------------------------------------------------------------------
187 *
188 * gdTcl_UtfToUniChar --
189 *
190 * Extract the Tcl_UniChar represented by the UTF-8 string. Bad
191 * UTF-8 sequences are converted to valid Tcl_UniChars and processing
192 * continues. Equivalent to Plan 9 chartorune().
193 *
194 * The caller must ensure that the source buffer is long enough that
195 * this routine does not run off the end and dereference non-existent
196 * memory looking for trail bytes. If the source buffer is known to
197 * be '\0' terminated, this cannot happen. Otherwise, the caller
198 * should call Tcl_UtfCharComplete() before calling this routine to
199 * ensure that enough bytes remain in the string.
200 *
201 * Results:
202 * *chPtr is filled with the Tcl_UniChar, and the return value is the
203 * number of bytes from the UTF-8 string that were consumed.
204 *
205 * Side effects:
206 * None.
207 *
208 *---------------------------------------------------------------------------
209 */
210
211 #ifdef JISX0208
212 #include "jisx0208.h"
213 #endif
214
215 static int comp_entities(const void *e1, const void *e2) {
216 struct entities_s *en1 = (struct entities_s *) e1;
217 struct entities_s *en2 = (struct entities_s *) e2;
218 return strcmp(en1->name, en2->name);
219 }
220
221 extern int any2eucjp (char *, char *, unsigned int);
222
223 /* Persistent font cache until explicitly cleared */
224 /* Fonts can be used across multiple images */
225
226 /* 2.0.16: thread safety (the font cache is shared) */
227 gdMutexDeclare (gdFontCacheMutex);
228 static gdCache_head_t *fontCache;
229 static FT_Library library;
230
231 #define Tcl_UniChar int
232 #define TCL_UTF_MAX 3
233 static int
234 gdTcl_UtfToUniChar (char *str, Tcl_UniChar * chPtr)
235 /* str is the UTF8 next character pointer */
236 /* chPtr is the int for the result */
237 {
238 int byte;
239 char entity_name_buf[ENTITY_NAME_LENGTH_MAX+1];
240 char *p;
241 struct entities_s key, *res;
242
243 /* HTML4.0 entities in decimal form, e.g. &#197; */
244 /* or in hexadecimal form, e.g. &#x6C34; */
245 byte = *((unsigned char *) str);
246 if (byte == '&')
247 {
248 int i, n = 0;
249
250 byte = *((unsigned char *) (str + 1));
251 if (byte == '#')
252 {
253 byte = *((unsigned char *) (str + 2));
254 if (byte == 'x' || byte == 'X')
255 {
256 for (i = 3; i < 8; i++)
257 {
258 byte = *((unsigned char *) (str + i));
259 if (byte >= 'A' && byte <= 'F')
260 byte = byte - 'A' + 10;
261 else if (byte >= 'a' && byte <= 'f')
262 byte = byte - 'a' + 10;
263 else if (byte >= '0' && byte <= '9')
264 byte = byte - '0';
265 else
266 break;
267 n = (n * 16) + byte;
268 }
269 }
270 else
271 {
272 for (i = 2; i < 8; i++)
273 {
274 byte = *((unsigned char *) (str + i));
275 if (byte >= '0' && byte <= '9')
276 n = (n * 10) + (byte - '0');
277 else
278 break;
279 }
280 }
281 if (byte == ';')
282 {
283 *chPtr = (Tcl_UniChar) n;
284 return ++i;
285 }
286 }
287 else
288 {
289 key.name = p = entity_name_buf;
290 for (i = 1; i < 1 + ENTITY_NAME_LENGTH_MAX; i++)
291 {
292 byte = *((unsigned char *) (str + i));
293 if (byte == '\0')
294 break;
295 if (byte == ';')
296 {
297 *p++ = '\0';
298 res = bsearch(&key, entities, NR_OF_ENTITIES,
299 sizeof(entities[0]), *comp_entities);
300 if (res)
301 {
302 *chPtr = (Tcl_UniChar) res->value;
303 return ++i;
304 }
305 break;
306 }
307 *p++ = byte;
308 }
309 }
310 }
311
312 /*
313 * Unroll 1 to 3 byte UTF-8 sequences, use loop to handle longer ones.
314 */
315
316 byte = *((unsigned char *) str);
317 #ifdef JISX0208
318 if (0xA1 <= byte && byte <= 0xFE)
319 {
320 int ku, ten;
321
322 ku = (byte & 0x7F) - 0x20;
323 ten = (str[1] & 0x7F) - 0x20;
324 if ((ku < 1 || ku > 92) || (ten < 1 || ten > 94))
325 {
326 *chPtr = (Tcl_UniChar) byte;
327 return 1;
328 }
329
330 *chPtr = (Tcl_UniChar) UnicodeTbl[ku - 1][ten - 1];
331 return 2;
332 }
333 else
334 #endif /* JISX0208 */
335 if (byte < 0xC0)
336 {
337 /*
338 * Handles properly formed UTF-8 characters between
339 * 0x01 and 0x7F. Also treats \0 and naked trail
340 * bytes 0x80 to 0xBF as valid characters representing
341 * themselves.
342 */
343
344 *chPtr = (Tcl_UniChar) byte;
345 return 1;
346 }
347 else if (byte < 0xE0)
348 {
349 if ((str[1] & 0xC0) == 0x80)
350 {
351 /*
352 * Two-byte-character lead-byte followed
353 * by a trail-byte.
354 */
355
356 *chPtr = (Tcl_UniChar) (((byte & 0x1F) << 6) | (str[1] & 0x3F));
357 return 2;
358 }
359 /*
360 * A two-byte-character lead-byte not followed by trail-byte
361 * represents itself.
362 */
363
364 *chPtr = (Tcl_UniChar) byte;
365 return 1;
366 }
367 else if (byte < 0xF0)
368 {
369 if (((str[1] & 0xC0) == 0x80) && ((str[2] & 0xC0) == 0x80))
370 {
371 /*
372 * Three-byte-character lead byte followed by
373 * two trail bytes.
374 */
375
376 *chPtr = (Tcl_UniChar) (((byte & 0x0F) << 12)
377 | ((str[1] & 0x3F) << 6) | (str[2] & 0x3F));
378 return 3;
379 }
380 /*
381 * A three-byte-character lead-byte not followed by
382 * two trail-bytes represents itself.
383 */
384
385 *chPtr = (Tcl_UniChar) byte;
386 return 1;
387 }
388 #if TCL_UTF_MAX > 3
389 else
390 {
391 int ch, total, trail;
392
393 total = totalBytes[byte];
394 trail = total - 1;
395 if (trail > 0)
396 {
397 ch = byte & (0x3F >> trail);
398 do
399 {
400 str++;
401 if ((*str & 0xC0) != 0x80)
402 {
403 *chPtr = byte;
404 return 1;
405 }
406 ch <<= 6;
407 ch |= (*str & 0x3F);
408 trail--;
409 }
410 while (trail > 0);
411 *chPtr = ch;
412 return total;
413 }
414 }
415 #endif
416
417 *chPtr = (Tcl_UniChar) byte;
418 return 1;
419 }
420
421 /********************************************************************/
422 /* font cache functions */
423
424 static int
425 fontTest (void *element, void *key)
426 {
427 font_t *a = (font_t *) element;
428 fontkey_t *b = (fontkey_t *) key;
429
430 return (strcmp (a->fontlist, b->fontlist) == 0 && a->flags == b->flags);
431 }
432
433 static int useFontConfig(int flag)
434 {
435 if (fontConfigFlag) {
436 return (!(flag & gdFTEX_FONTPATHNAME));
437 } else {
438 return flag & gdFTEX_FONTCONFIG;
439 }
440 }
441
442 static void *
443 fontFetch (char **error, void *key)
444 {
445 font_t *a;
446 fontkey_t *b = (fontkey_t *) key;
447 char *suffix;
448 FT_Error err;
449
450 *error = NULL;
451
452 a = (font_t *) gdMalloc (sizeof (font_t));
453 if (!a) {
454 return NULL;
455 }
456
457 a->fontlist = strdup (b->fontlist);
458 a->flags = b->flags;
459 a->library = b->library;
460 a->fontpath = NULL;
461
462 #ifdef HAVE_LIBFONTCONFIG
463 if (!useFontConfig(b->flags))
464 *error = font_path(&(a->fontpath), a->fontlist);
465 else
466 *error = font_pattern(&(a->fontpath), a->fontlist);
467 #else
468 *error = font_path(&(a->fontpath), a->fontlist);
469 #endif /* HAVE_LIBFONTCONFIG */
470 if (*error || !a->fontpath || !a->fontpath[0])
471 {
472 /* 2.0.12: TBB: free these. Thanks to Frank Faubert. */
473 free (a->fontlist);
474 if (a->fontpath)
475 free (a->fontpath);
476 gdFree (a);
477
478 if (! *error)
479 *error = "font_path() returned an empty font pathname";
480
481 return NULL;
482 }
483
484 #if 0
485 fprintf(stderr,"fontpathname=%s\n",fullname);
486 #endif
487
488 err = FT_New_Face(*b->library, a->fontpath, 0, &a->face);
489
490 /* Read kerning metrics for Postscript fonts. */
491 if (!err
492 && ((suffix = strstr(a->fontpath, ".pfa"))
493 || (suffix = strstr(a->fontpath, ".pfb")))
494 && ((strcpy(suffix, ".afm") && (access(a->fontpath, R_OK) == 0))
495 || (strcpy(suffix, ".pfm") && (access(a->fontpath, R_OK) == 0))))
496 {
497 err = FT_Attach_File(a->face, a->fontpath);
498 }
499
500 if (err)
501 {
502 /* 2.0.12: TBB: free these. Thanks to Frank Faubert. */
503 free (a->fontlist);
504 free (a->fontpath);
505 gdFree (a);
506 *error = "Could not read font";
507 return NULL;
508 }
509
510 return (void *) a;
511 }
512
513 static void
514 fontRelease (void *element)
515 {
516 font_t *a = (font_t *) element;
517
518 FT_Done_Face (a->face);
519 gdFree (a->fontlist);
520 gdFree (a->fontpath);
521 gdFree ((char *) element);
522 }
523
524 /********************************************************************/
525 /* tweencolor cache functions */
526
527 static int
528 tweenColorTest (void *element, void *key)
529 {
530 tweencolor_t *a = (tweencolor_t *) element;
531 tweencolorkey_t *b = (tweencolorkey_t *) key;
532
533 return (a->pixel == b->pixel
534 && a->bgcolor == b->bgcolor
535 && a->fgcolor == b->fgcolor && a->im == b->im);
536 }
537
538 /*
539 * Computes a color in im's color table that is part way between
540 * the background and foreground colors proportional to the gray
541 * pixel value in the range 0-gd_NUMCOLORS. The fg and bg colors must already
542 * be in the color table for palette images. For truecolor images the
543 * returned value simply has an alpha component and gdImageAlphaBlend
544 * does the work so that text can be alpha blended across a complex
545 * background (TBB; and for real in 2.0.2).
546 */
547 static void *
548 tweenColorFetch (char **error, void *key)
549 {
550 tweencolor_t *a;
551 tweencolorkey_t *b = (tweencolorkey_t *) key;
552 int pixel, npixel, bg, fg;
553 gdImagePtr im;
554
555 a = (tweencolor_t *) gdMalloc (sizeof (tweencolor_t));
556 if (!a) {
557 return NULL;
558 }
559
560 pixel = a->pixel = b->pixel;
561 bg = a->bgcolor = b->bgcolor;
562 fg = a->fgcolor = b->fgcolor;
563 im = a->im = b->im;
564
565 /* if fg is specified by a negative color idx, then don't antialias */
566 if (fg < 0)
567 {
568 if ((pixel + pixel) >= gd_NUMCOLORS)
569 a->tweencolor = -fg;
570 else
571 a->tweencolor = bg;
572 }
573 else
574 {
575 npixel = gd_NUMCOLORS - pixel;
576 if (im->trueColor)
577 {
578 /* 2.0.1: use gdImageSetPixel to do the alpha blending work,
579 or to just store the alpha level. All we have to do here
580 is incorporate our knowledge of the percentage of this
581 pixel that is really "lit" by pushing the alpha value
582 up toward transparency in edge regions. */
583 a->tweencolor = gdTrueColorAlpha (gdTrueColorGetRed (fg),
584 gdTrueColorGetGreen (fg),
585 gdTrueColorGetBlue (fg),
586 gdAlphaMax -
587 (gdTrueColorGetAlpha (fg) *
588 pixel / gd_NUMCOLORS));
589 }
590 else
591 {
592 a->tweencolor = gdImageColorResolve (im,
593 (pixel * im->red[fg] +
594 npixel * im->red[bg]) /
595 gd_NUMCOLORS,
596 (pixel * im->green[fg] +
597 npixel * im->green[bg]) /
598 gd_NUMCOLORS,
599 (pixel * im->blue[fg] +
600 npixel * im->blue[bg]) /
601 gd_NUMCOLORS);
602 }
603 }
604 return (void *) a;
605 }
606
607 static void
608 tweenColorRelease (void *element)
609 {
610 gdFree ((char *) element);
611 }
612
613 /* draw_bitmap - transfers glyph bitmap to GD image */
614 static char *
615 gdft_draw_bitmap (gdCache_head_t * tc_cache, gdImage * im, int fg,
616 FT_Bitmap bitmap, int pen_x, int pen_y)
617 {
618 unsigned char *pixel = NULL;
619 int *tpixel = NULL;
620 int opixel;
621 int x, y, row, col, pc, pcr;
622
623 tweencolor_t *tc_elem;
624 tweencolorkey_t tc_key;
625
626 /* copy to image, mapping colors */
627 tc_key.fgcolor = fg;
628 tc_key.im = im;
629 /* Truecolor version; does not require the cache */
630 if (im->trueColor)
631 {
632 for (row = 0; row < bitmap.rows; row++)
633 {
634 pc = row * bitmap.pitch;
635 pcr = pc;
636 y = pen_y + row;
637 /* clip if out of bounds */
638 /* 2.0.16: clipping rectangle, not image bounds */
639 if ((y > im->cy2) || (y < im->cy1))
640 continue;
641 for (col = 0; col < bitmap.width; col++, pc++)
642 {
643 int level;
644 if (bitmap.pixel_mode == ft_pixel_mode_grays)
645 {
646 /*
647 * Scale to 128 levels of alpha for gd use.
648 * alpha 0 is opacity, so be sure to invert at the end
649 */
650 level = (bitmap.buffer[pc] * gdAlphaMax /
651 (bitmap.num_grays - 1));
652 }
653 else if (bitmap.pixel_mode == ft_pixel_mode_mono)
654 {
655 /* 2.0.5: mode_mono fix from Giuliano Pochini */
656 level =
657 ((bitmap.
658 buffer[(col >> 3) +
659 pcr]) & (1 << (~col & 0x07))) ?
660 gdAlphaTransparent : gdAlphaOpaque;
661 }
662 else
663 {
664 return "Unsupported ft_pixel_mode";
665 }
666 if (level == 0) /* if background */
667 continue;
668
669 if ((fg >= 0) && (im->trueColor))
670 {
671 /* Consider alpha in the foreground color itself to be an
672 upper bound on how opaque things get, when truecolor is
673 available. Without truecolor this results in far too many
674 color indexes. */
675 level =
676 level * (gdAlphaMax -
677 gdTrueColorGetAlpha (fg)) / gdAlphaMax;
678 }
679 level = gdAlphaMax - level; /* inverting to get alpha */
680 x = pen_x + col;
681 /* clip if out of bounds */
682 /* 2.0.16: clip to clipping rectangle, Matt McNabb */
683 if ((x > im->cx2) || (x < im->cx1))
684 continue;
685 /* get pixel location in gd buffer */
686 tpixel = &im->tpixels[y][x];
687 if (fg < 0)
688 {
689 if (level < (gdAlphaMax / 2))
690 {
691 *tpixel = -fg;
692 }
693 }
694 else
695 {
696 if (im->alphaBlendingFlag)
697 {
698 opixel = *tpixel;
699 if (gdTrueColorGetAlpha(opixel) != gdAlphaTransparent)
700 {
701 *tpixel = gdAlphaBlend (opixel,
702 (level << 24) + (fg & 0xFFFFFF));
703 }
704 else
705 {
706 *tpixel = (level << 24) + (fg & 0xFFFFFF);
707 }
708 }
709 else
710 {
711 *tpixel = (level << 24) + (fg & 0xFFFFFF);
712 }
713 }
714 }
715 }
716 return (char *) NULL;
717 }
718 /* Non-truecolor case, restored to its more or less original form */
719 for (row = 0; row < bitmap.rows; row++)
720 {
721 int pcr;
722 pc = row * bitmap.pitch;
723 pcr = pc;
724 if (bitmap.pixel_mode == ft_pixel_mode_mono)
725 pc *= 8; /* pc is measured in bits for monochrome images */
726
727 y = pen_y + row;
728
729 /* clip if out of bounds */
730 if (y > im->cy2 || y < im->cy1)
731 continue;
732
733 for (col = 0; col < bitmap.width; col++, pc++)
734 {
735 if (bitmap.pixel_mode == ft_pixel_mode_grays)
736 {
737 /*
738 * Round to gd_NUMCOLORS levels of antialiasing for
739 * index color images since only 256 colors are
740 * available.
741 */
742 tc_key.pixel = ((bitmap.buffer[pc] * gd_NUMCOLORS)
743 + bitmap.num_grays / 2)
744 / (bitmap.num_grays - 1);
745 }
746 else if (bitmap.pixel_mode == ft_pixel_mode_mono)
747 {
748 tc_key.pixel = ((bitmap.buffer[pc / 8]
749 << (pc % 8)) & 128) ? gd_NUMCOLORS : 0;
750 /* 2.0.5: mode_mono fix from Giuliano Pochini */
751 tc_key.pixel =
752 ((bitmap.
753 buffer[(col >> 3) +
754 pcr]) & (1 << (~col & 0x07))) ? gd_NUMCOLORS : 0;
755 }
756 else
757 {
758 return "Unsupported ft_pixel_mode";
759 }
760 if (tc_key.pixel == 0) /* if background */
761 continue;
762
763 x = pen_x + col;
764
765 /* clip if out of bounds */
766 if (x > im->cx2 || x < im->cx1)
767 continue;
768 /* get pixel location in gd buffer */
769 pixel = &im->pixels[y][x];
770 if (tc_key.pixel == gd_NUMCOLORS)
771 {
772 /* use fg color directly. gd 2.0.2: watch out for
773 negative indexes (thanks to David Marwood). */
774 *pixel = (fg < 0) ? -fg : fg;
775 }
776 else
777 {
778 /* find antialised color */
779
780 tc_key.bgcolor = *pixel;
781 tc_elem = (tweencolor_t *) gdCacheGet (tc_cache, &tc_key);
782 *pixel = tc_elem->tweencolor;
783 }
784 }
785 }
786 return (char *) NULL;
787 }
788
789 BGD_DECLARE(void) gdFreeFontCache ()
790 {
791 gdFontCacheShutdown ();
792 }
793
794 BGD_DECLARE(void) gdFontCacheShutdown ()
795 {
796 if (fontCache)
797 {
798 gdMutexLock(gdFontCacheMutex);
799 gdCacheDelete (fontCache);
800 /* 2.0.16: Gustavo Scotti: make sure we don't free this twice */
801 fontCache = 0;
802 gdMutexUnlock(gdFontCacheMutex);
803 gdMutexShutdown (gdFontCacheMutex);
804 FT_Done_FreeType (library);
805 }
806 }
807
808 /********************************************************************/
809 /* gdImageStringFT - render a utf8 string onto a gd image */
810
811 BGD_DECLARE(char *) gdImageStringFT (gdImage * im, int *brect, int fg, char *fontlist,
812 double ptsize, double angle, int x, int y, char *string)
813 {
814 return gdImageStringFTEx (im, brect, fg, fontlist,
815 ptsize, angle, x, y, string, 0);
816 }
817
818 BGD_DECLARE(int) gdFontCacheSetup (void)
819 {
820 if (fontCache)
821 {
822 /* Already set up */
823 return 0;
824 }
825 gdMutexSetup (gdFontCacheMutex);
826 if (FT_Init_FreeType (&library))
827 {
828 gdMutexShutdown (gdFontCacheMutex);
829 return -1;
830 }
831 fontCache = gdCacheCreate (FONTCACHESIZE, fontTest, fontFetch, fontRelease);
832 if (!fontCache) {
833 return -2;
834 }
835 return 0;
836 }
837
838 /* the platform-independent resolution used for size and position calculations */
839 /* the size of the error introduced by rounding is affected by this number */
840 #define METRIC_RES 300
841
842 BGD_DECLARE(char *) gdImageStringFTEx (gdImage * im, int *brect, int fg, char *fontlist,
843 double ptsize, double angle, int x, int y, char *string,
844 gdFTStringExtraPtr strex)
845 {
846 FT_Matrix matrix;
847 FT_Vector penf, oldpenf, delta, total_min = {0,0}, total_max = {0,0}, glyph_min, glyph_max;
848 FT_Face face;
849 FT_CharMap charmap = NULL;
850 FT_Glyph image;
851 FT_GlyphSlot slot;
852 FT_Error err;
853 FT_UInt glyph_index, previous;
854 double sin_a = sin (angle);
855 double cos_a = cos (angle);
856 int len, i, ch;
857 font_t *font;
858 fontkey_t fontkey;
859 char *next;
860 char *tmpstr = 0;
861 int render = (im && (im->trueColor || (fg <= 255 && fg >= -255)));
862 FT_BitmapGlyph bm;
863 /* 2.0.13: Bob Ostermann: don't force autohint, that's just for testing
864 freetype and doesn't look as good */
865 int render_mode = FT_LOAD_DEFAULT;
866 int encoding, encodingfound;
867 /* Now tuneable thanks to Wez Furlong */
868 double linespace = LINESPACE;
869 /* 2.0.6: put this declaration with the other declarations! */
870 /*
871 * make a new tweenColorCache on every call
872 * because caching colormappings between calls
873 * is not safe. If the im-pointer points to a
874 * brand new image, the cache gives out bogus
875 * colorindexes. -- 27.06.2001 <krisku@arrak.fi>
876 */
877 gdCache_head_t *tc_cache;
878 /* Tuneable horizontal and vertical resolution in dots per inch */
879 int hdpi, vdpi, horiAdvance, xshow_alloc = 0, xshow_pos = 0;
880 FT_Size platform_specific, platform_independent;
881
882 if (strex)
883 {
884 if ((strex->flags & gdFTEX_LINESPACE) == gdFTEX_LINESPACE)
885 {
886 linespace = strex->linespacing;
887 }
888 }
889 tc_cache = gdCacheCreate (TWEENCOLORCACHESIZE,
890 tweenColorTest, tweenColorFetch,
891 tweenColorRelease);
892
893 /***** initialize font library and font cache on first call ******/
894 if (!fontCache)
895 {
896 if (gdFontCacheSetup () != 0)
897 {
898 gdCacheDelete (tc_cache);
899 return "Failure to initialize font library";
900 }
901 }
902 /*****/
903 gdMutexLock (gdFontCacheMutex);
904 /* get the font (via font cache) */
905 fontkey.fontlist = fontlist;
906 if (strex)
907 fontkey.flags = strex->flags & (gdFTEX_FONTPATHNAME |
908 gdFTEX_FONTCONFIG);
909 else
910 fontkey.flags = 0;
911 fontkey.library = &library;
912 font = (font_t *) gdCacheGet (fontCache, &fontkey);
913 if (!font)
914 {
915 gdCacheDelete (tc_cache);
916 gdMutexUnlock (gdFontCacheMutex);
917 return fontCache->error;
918 }
919 face = font->face; /* shortcut */
920 slot = face->glyph; /* shortcut */
921
922 if (brect)
923 {
924 total_min.x = total_min.y = 0;
925 total_max.x = total_max.y = 0;
926 }
927
928 /*
929 * Added hdpi and vdpi to support images at non-screen resolutions, i.e. 300 dpi TIFF,
930 * or 100h x 50v dpi FAX format. 2.0.23.
931 * 2004/02/27 Mark Shackelford, mark.shackelford@acs-inc.com
932 */
933 hdpi = GD_RESOLUTION;
934 vdpi = GD_RESOLUTION;
935 encoding = gdFTEX_Unicode;
936 if (strex)
937 {
938 if (strex->flags & gdFTEX_RESOLUTION)
939 {
940 hdpi = strex->hdpi;
941 vdpi = strex->vdpi;
942 }
943 if (strex->flags & gdFTEX_XSHOW)
944 {
945 strex->xshow = NULL;
946 }
947 /* 2.0.12: allow explicit specification of the preferred map;
948 but we still fall back if it is not available. */
949 if (strex->flags & gdFTEX_CHARMAP)
950 {
951 encoding = strex->charmap;
952 }
953 /* 2.0.29: we can return the font path if desired */
954 if (strex->flags & gdFTEX_RETURNFONTPATHNAME)
955 strex->fontpath = strdup(font->fontpath);
956 else
957 strex->fontpath = 0;
958 }
959
960 matrix.xx = (FT_Fixed) (cos_a * (1 << 16));
961 matrix.yx = (FT_Fixed) (sin_a * (1 << 16));
962 matrix.xy = -matrix.yx;
963 matrix.yy = matrix.xx;
964
965 /* set rotation transform */
966 FT_Set_Transform (face, &matrix, NULL);
967
968 FT_New_Size (face, &platform_independent);
969 FT_Activate_Size (platform_independent);
970 if (FT_Set_Char_Size (face, 0, (FT_F26Dot6)(ptsize*64), METRIC_RES, METRIC_RES))
971 {
972 gdCacheDelete (tc_cache);
973 gdMutexUnlock (gdFontCacheMutex);
974 return "Could not set character size";
975 }
976
977 if (render)
978 {
979 FT_New_Size (face, &platform_specific);
980 FT_Activate_Size (platform_specific);
981 if (FT_Set_Char_Size (face, 0, (FT_F26Dot6)(ptsize*64), hdpi, vdpi))
982 {
983 gdCacheDelete (tc_cache);
984 gdMutexUnlock (gdFontCacheMutex);
985 return "Could not set character size";
986 }
987 }
988
989 if (fg < 0)
990 render_mode |= FT_LOAD_MONOCHROME;
991
992 /* find requested charmap */
993 encodingfound = 0;
994 for (i = 0; i < face->num_charmaps; i++)
995 {
996 charmap = face->charmaps[i];
997
998 #if ((defined(FREETYPE_MAJOR)) && (((FREETYPE_MAJOR == 2) && (((FREETYPE_MINOR == 1) && (FREETYPE_PATCH >= 3)) || (FREETYPE_MINOR > 1))) || (FREETYPE_MAJOR > 2)))
999 if (encoding == gdFTEX_Unicode)
1000 {
1001 if (charmap->encoding == FT_ENCODING_MS_SYMBOL
1002 || charmap->encoding == FT_ENCODING_UNICODE
1003 || charmap->encoding == FT_ENCODING_ADOBE_CUSTOM
1004 || charmap->encoding == FT_ENCODING_ADOBE_STANDARD)
1005 {
1006 encodingfound++;
1007 break;
1008 }
1009 }
1010 else if (encoding == gdFTEX_Adobe_Custom)
1011 {
1012 if (charmap->encoding == FT_ENCODING_ADOBE_CUSTOM)
1013 {
1014 encodingfound++;
1015 break;
1016 }
1017 }
1018 else if (encoding == gdFTEX_Big5)
1019 {
1020 /* renamed sometime after freetype-2.1.4 */
1021 #ifndef FT_ENCODING_BIG5
1022 #define FT_ENCODING_BIG5 FT_ENCODING_MS_BIG5
1023 #endif
1024 if (charmap->encoding == FT_ENCODING_BIG5)
1025 {
1026 encodingfound++;
1027 break;
1028 }
1029 }
1030 else if (encoding == gdFTEX_Shift_JIS)
1031 {
1032 /* renamed sometime after freetype-2.1.4 */
1033 #ifndef FT_ENCODING_SJIS
1034 #define FT_ENCODING_SJIS FT_ENCODING_MS_SJIS
1035 #endif
1036 if (charmap->encoding == FT_ENCODING_SJIS)
1037 {
1038 encodingfound++;
1039 break;
1040 }
1041 }
1042 #else
1043 if (encoding == gdFTEX_Unicode)
1044 {
1045 if ((charmap->platform_id = 3 && charmap->encoding_id == 1) /* Windows Unicode */
1046 || (charmap->platform_id == 3 && charmap->encoding_id == 0) /* Windows Symbol */
1047 || (charmap->platform_id == 2 && charmap->encoding_id == 1) /* ISO Unicode */
1048 || (charmap->platform_id == 0)) /* Apple Unicode */
1049 {
1050 encodingfound++;
1051 break;
1052 }
1053 }
1054 else if (encoding == gdFTEX_Big5)
1055 {
1056 if (charmap->platform_id == 3 && charmap->encoding_id == 4) /* Windows Big5 */
1057 {
1058 encodingfound++;
1059 break;
1060 }
1061 }
1062 else if (encoding == gdFTEX_Shift_JIS)
1063 {
1064 if (charmap->platform_id == 3 && charmap->encoding_id == 2) /* Windows Sjis */
1065 {
1066 encodingfound++;
1067 break;
1068 }
1069 }
1070 #endif
1071 }
1072 if (encodingfound)
1073 {
1074 FT_Set_Charmap(face, charmap);
1075 }
1076 else
1077 {
1078 /* No character set found! */
1079 gdMutexUnlock (gdFontCacheMutex);
1080 return "No character set found";
1081 }
1082
1083 #ifndef JISX0208
1084 if (encoding == gdFTEX_Shift_JIS)
1085 {
1086 #endif
1087 if ((tmpstr = (char *) gdMalloc (BUFSIZ)))
1088 {
1089 any2eucjp (tmpstr, string, BUFSIZ);
1090 next = tmpstr;
1091 }
1092 else
1093 {
1094 next = string;
1095 }
1096 #ifndef JISX0208
1097 }
1098 else
1099 {
1100 next = string;
1101 }
1102 #endif
1103
1104 #if 0
1105 fprintf(stderr,"dpi=%d,%d metric_res=%d ptsize=%g\n",hdpi,vdpi,METRIC_RES,ptsize);
1106 #endif
1107
1108 oldpenf.x = oldpenf.y = 0; /* for postscript xshow operator */
1109 penf.x = penf.y = 0; /* running position of non-rotated glyphs */
1110 previous = 0; /* index of previous glyph for kerning calculations */
1111 for (i=0; *next; i++)
1112 {
1113 FT_Activate_Size (platform_independent);
1114
1115 ch = *next;
1116
1117 /* carriage returns */
1118 if (ch == '\r')
1119 {
1120 penf.x = 0;
1121 previous = 0; /* clear kerning flag */
1122 next++;
1123 continue;
1124 }
1125 /* newlines */
1126 if (ch == '\n')
1127 {
1128 /* 2.0.13: reset penf.x. Christopher J. Grayce */
1129 penf.x = 0;
1130 penf.y += linespace * ptsize * 64 * METRIC_RES / 72;
1131 penf.y &= ~63; /* round down to 1/METRIC_RES */
1132 previous = 0; /* clear kerning flag */
1133 next++;
1134 continue;
1135 }
1136
1137
1138 switch (encoding)
1139 {
1140 case gdFTEX_Unicode:
1141 {
1142 /* use UTF-8 mapping from ASCII */
1143 len = gdTcl_UtfToUniChar (next, &ch);
1144 /* EAM DEBUG */
1145 /* TBB: get this exactly right: 2.1.3 *or better*, all possible cases. */
1146 /* 2.0.24: David R. Morrison: use the more complete ifdef here. */
1147 #if ((defined(FREETYPE_MAJOR)) && (((FREETYPE_MAJOR == 2) && (((FREETYPE_MINOR == 1) && (FREETYPE_PATCH >= 3)) || (FREETYPE_MINOR > 1))) || (FREETYPE_MAJOR > 2)))
1148 if (charmap->encoding == FT_ENCODING_MS_SYMBOL)
1149 #else
1150 if (charmap->platform_id == 3 && charmap->encoding_id == 0)
1151 #endif /* Freetype 2.1 or better */
1152 {
1153 /* I do not know the significance of the constant 0xf000. */
1154 /* It was determined by inspection of the character codes */
1155 /* stored in Microsoft font symbol.ttf */
1156 ch |= 0xf000;
1157 }
1158 /* EAM DEBUG */
1159 next += len;
1160 }
1161 break;
1162 case gdFTEX_Shift_JIS:
1163 {
1164 unsigned char c;
1165 int jiscode;
1166 c = *next;
1167 if (0xA1 <= c && c <= 0xFE)
1168 {
1169 next++;
1170 jiscode = 0x100 * (c & 0x7F) + ((*next) & 0x7F);
1171
1172 ch = (jiscode >> 8) & 0xFF;
1173 jiscode &= 0xFF;
1174
1175 if (ch & 1)
1176 jiscode += 0x40 - 0x21;
1177 else
1178 jiscode += 0x9E - 0x21;
1179
1180 if (jiscode >= 0x7F)
1181 jiscode++;
1182 ch = (ch - 0x21) / 2 + 0x81;
1183 if (ch >= 0xA0)
1184 ch += 0x40;
1185
1186 ch = (ch << 8) + jiscode;
1187 }
1188 else
1189 {
1190 ch = c & 0xFF; /* don't extend sign */
1191 }
1192 if (*next) next++;
1193 }
1194 break;
1195 case gdFTEX_Big5:
1196 {
1197 /*
1198 * Big 5 mapping:
1199 * use "JIS-8 half-width katakana" coding from 8-bit characters. Ref:
1200 * ftp://ftp.ora.com/pub/examples/nutshell/ujip/doc/japan.inf-032092.sjs
1201 */
1202 ch = (*next) & 0xFF; /* don't extend sign */
1203 next++;
1204 if (ch >= 161 /* first code of JIS-8 pair */
1205 && *next)
1206 { /* don't advance past '\0' */
1207 /* TBB: Fix from Kwok Wah On: & 255 needed */
1208 ch = (ch * 256) + ((*next) & 255);
1209 next++;
1210 }
1211 }
1212 break;
1213
1214 case gdFTEX_Adobe_Custom:
1215 default:
1216 ch &= 0xFF;
1217 next++;
1218 break;
1219 }
1220
1221 /* Convert character code to glyph index */
1222 glyph_index = FT_Get_Char_Index (face, ch);
1223
1224 /* retrieve kerning distance */
1225 if ( ! (strex && (strex->flags & gdFTEX_DISABLE_KERNING))
1226 && ! FT_IS_FIXED_WIDTH(face)
1227 && FT_HAS_KERNING(face)
1228 && previous
1229 && glyph_index)
1230 FT_Get_Kerning (face, previous, glyph_index, ft_kerning_default, &delta);
1231 else
1232 delta.x = delta.y = 0;
1233
1234 penf.x += delta.x;
1235
1236 /* When we know the position of the second or subsequent character,
1237 save the (kerned) advance from the preceeding character in the
1238 xshow vector */
1239 if (i && strex && (strex->flags & gdFTEX_XSHOW))
1240 {
1241 /* make sure we have enough allocation for two numbers
1242 so we don't have to recheck for the terminating number */
1243 if (! xshow_alloc) {
1244 xshow_alloc = 100;
1245 strex->xshow = gdMalloc(xshow_alloc);
1246 if (!strex->xshow) {
1247 return 0;
1248 }
1249 xshow_pos = 0;
1250 }
1251 else if (xshow_pos + 20 > xshow_alloc) {
1252 xshow_alloc += 100;
1253 strex->xshow = gdRealloc(strex->xshow, xshow_alloc);
1254 if (!strex->xshow) {
1255 return 0;
1256 }
1257 }
1258 xshow_pos += sprintf(strex->xshow + xshow_pos, "%g ",
1259 (double)(penf.x - oldpenf.x) * hdpi / (64 * METRIC_RES));
1260 }
1261 oldpenf.x = penf.x;
1262
1263 /* load glyph image into the slot (erase previous one) */
1264 err = FT_Load_Glyph (face, glyph_index, render_mode);
1265 if (err)
1266 {
1267 gdCacheDelete (tc_cache);
1268 gdMutexUnlock (gdFontCacheMutex);
1269 return "Problem loading glyph";
1270 }
1271
1272 horiAdvance = slot->metrics.horiAdvance;
1273
1274 if (brect)
1275 { /* only if need brect */
1276
1277 glyph_min.x = penf.x + slot->metrics.horiBearingX;
1278 glyph_min.y = penf.y - slot->metrics.horiBearingY;
1279
1280 #if 0
1281 if (ch == ' ') /* special case for trailing space */
1282 {
1283 glyph_max.x = penf.x + horiAdvance;
1284 }
1285 else
1286 {
1287 glyph_max.x = glyph_min.x + slot->metrics.width;
1288 }
1289 #else
1290 glyph_max.x = penf.x + horiAdvance;
1291 #endif
1292 glyph_max.y = glyph_min.y + slot->metrics.height;
1293
1294 if (i==0)
1295 {
1296 total_min = glyph_min;
1297 total_max = glyph_max;
1298 }
1299 else
1300 {
1301 if (glyph_min.x < total_min.x)
1302 total_min.x = glyph_min.x;
1303 if (glyph_min.y < total_min.y)
1304 total_min.y = glyph_min.y;
1305 if (glyph_max.x > total_max.x)
1306 total_max.x = glyph_max.x;
1307 if (glyph_max.y > total_max.y)
1308 total_max.y = glyph_max.y;
1309 }
1310 }
1311
1312 if (render)
1313 {
1314 FT_Activate_Size (platform_specific);
1315
1316 /* load glyph again into the slot (erase previous one) - this time with scaling */
1317 err = FT_Load_Glyph (face, glyph_index, render_mode);
1318 if (err)
1319 {
1320 gdCacheDelete (tc_cache);
1321 gdMutexUnlock (gdFontCacheMutex);
1322 return "Problem loading glyph";
1323 }
1324
1325 /* load and transform glyph image */
1326 FT_Get_Glyph (slot, &image);
1327
1328 if (image->format != ft_glyph_format_bitmap)
1329 {
1330 err = FT_Glyph_To_Bitmap (&image, ft_render_mode_normal, 0, 1);
1331 if (err)
1332 {
1333 gdCacheDelete (tc_cache);
1334 gdMutexUnlock (gdFontCacheMutex);
1335 return "Problem rendering glyph";
1336 }
1337 }
1338
1339 /* now, draw to our target surface */
1340 bm = (FT_BitmapGlyph) image;
1341 /* position rounded down to nearest pixel at current dpi
1342 (the estimate was rounded up to next 1/METRIC_RES, so this should fit) */
1343 gdft_draw_bitmap (tc_cache, im, fg, bm->bitmap,
1344 x + (penf.x * cos_a + penf.y * sin_a)*hdpi/(METRIC_RES*64) + bm->left,
1345 y - (penf.x * sin_a - penf.y * cos_a)*vdpi/(METRIC_RES*64) - bm->top);
1346
1347 FT_Done_Glyph (image);
1348 }
1349
1350 /* record current glyph index for kerning */
1351 previous = glyph_index;
1352
1353 penf.x += horiAdvance;
1354 }
1355
1356 /* Save the (unkerned) advance from the last character in the xshow vector */
1357 if (strex && (strex->flags & gdFTEX_XSHOW) && strex->xshow)
1358 {
1359 sprintf(strex->xshow + xshow_pos, "%g",
1360 (double)(penf.x - oldpenf.x) * hdpi / (64 * METRIC_RES) );
1361 }
1362
1363 if (brect)
1364 { /* only if need brect */
1365 double scalex = (double)hdpi / (64 * METRIC_RES);
1366 double scaley = (double)vdpi / (64 * METRIC_RES);
1367
1368 /* increase by 1 pixel to allow for rounding */
1369 total_min.x -= METRIC_RES;
1370 total_min.y -= METRIC_RES;
1371 total_max.x += METRIC_RES;
1372 total_max.y += METRIC_RES;
1373
1374 /* rotate bounding rectangle, scale and round to int pixels, and translate */
1375 brect[0] = x + (total_min.x * cos_a + total_max.y * sin_a)*scalex;
1376 brect[1] = y - (total_min.x * sin_a - total_max.y * cos_a)*scaley;
1377 brect[2] = x + (total_max.x * cos_a + total_max.y * sin_a)*scalex;
1378 brect[3] = y - (total_max.x * sin_a - total_max.y * cos_a)*scaley;
1379 brect[4] = x + (total_max.x * cos_a + total_min.y * sin_a)*scalex;
1380 brect[5] = y - (total_max.x * sin_a - total_min.y * cos_a)*scaley;
1381 brect[6] = x + (total_min.x * cos_a + total_min.y * sin_a)*scalex;
1382 brect[7] = y - (total_min.x * sin_a - total_min.y * cos_a)*scaley;
1383 }
1384
1385 FT_Done_Size (platform_independent);
1386 if (render)
1387 FT_Done_Size (platform_specific);
1388
1389 if (tmpstr)
1390 gdFree (tmpstr);
1391 gdCacheDelete (tc_cache);
1392 gdMutexUnlock (gdFontCacheMutex);
1393 return (char *) NULL;
1394 }
1395
1396 #endif /* HAVE_LIBFREETYPE */
1397
1398 #ifdef HAVE_LIBFONTCONFIG
1399 /* Code to find font path, with special mapping for Postscript font names.
1400 *
1401 * Dag Lem <dag@nimrod.no>
1402 */
1403
1404 #include <fontconfig/fontconfig.h>
1405
1406 /* #define NO_POSTSCRIPT_ALIAS 1 */
1407 #ifndef NO_POSTSCRIPT_ALIAS
1408 typedef struct _PostscriptAlias {
1409 char* name;
1410 char* family;
1411 char* style;
1412 } PostscriptAlias;
1413
1414 /* This table maps standard Postscript font names to URW Type 1 fonts.
1415 The mapping is converted from Ghostscript (Fontmap.GS)
1416 for use with fontconfig. */
1417 static PostscriptAlias postscript_alias[] = {
1418 { "AvantGarde-Book", "URW Gothic L", "Book" },
1419 { "AvantGarde-BookOblique", "URW Gothic L", "Book Oblique" },
1420 { "AvantGarde-Demi", "URW Gothic L", "Demi" },
1421 { "AvantGarde-DemiOblique", "URW Gothic L", "Demi Oblique" },
1422
1423 { "Bookman-Demi", "URW Bookman L", "Demi Bold" },
1424 { "Bookman-DemiItalic", "URW Bookman L", "Demi Bold Italic" },
1425 { "Bookman-Light", "URW Bookman L", "Light" },
1426 { "Bookman-LightItalic", "URW Bookman L", "Light Italic" },
1427
1428 { "Courier", "Nimbus Mono L", "Regular" },
1429 { "Courier-Oblique", "Nimbus Mono L", "Regular Oblique" },
1430 { "Courier-Bold", "Nimbus Mono L", "Bold" },
1431 { "Courier-BoldOblique", "Nimbus Mono L", "Bold Oblique" },
1432
1433 { "Helvetica", "Nimbus Sans L", "Regular" },
1434 { "Helvetica-Oblique", "Nimbus Sans L", "Regular Italic" },
1435 { "Helvetica-Bold", "Nimbus Sans L", "Bold" },
1436 { "Helvetica-BoldOblique", "Nimbus Sans L", "Bold Italic" },
1437
1438 { "Helvetica-Narrow", "Nimbus Sans L", "Regular Condensed" },
1439 { "Helvetica-Narrow-Oblique", "Nimbus Sans L", "Regular Condensed Italic" },
1440 { "Helvetica-Narrow-Bold", "Nimbus Sans L", "Bold Condensed" },
1441 { "Helvetica-Narrow-BoldOblique", "Nimbus Sans L", "Bold Condensed Italic" },
1442
1443 { "NewCenturySchlbk-Roman", "Century Schoolbook L", "Roman" },
1444 { "NewCenturySchlbk-Italic", "Century Schoolbook L", "Italic" },
1445 { "NewCenturySchlbk-Bold", "Century Schoolbook L", "Bold" },
1446 { "NewCenturySchlbk-BoldItalic", "Century Schoolbook L", "Bold Italic" },
1447
1448 { "Palatino-Roman", "URW Palladio L", "Roman" },
1449 { "Palatino-Italic", "URW Palladio L", "Italic" },
1450 { "Palatino-Bold", "URW Palladio L", "Bold" },
1451 { "Palatino-BoldItalic", "URW Palladio L", "Bold Italic" },
1452
1453 { "Symbol", "Standard Symbols L", "Regular" },
1454
1455 { "Times-Roman", "Nimbus Roman No9 L", "Regular" },
1456 { "Times-Italic", "Nimbus Roman No9 L", "Regular Italic" },
1457 { "Times-Bold", "Nimbus Roman No9 L", "Medium" },
1458 { "Times-BoldItalic", "Nimbus Roman No9 L", "Medium Italic" },
1459
1460 { "ZapfChancery-MediumItalic", "URW Chancery L", "Medium Italic" },
1461
1462 { "ZapfDingbats", "Dingbats", "" },
1463 };
1464 #endif
1465
1466
1467 static FcPattern* find_font(FcPattern* pattern)
1468 {
1469 FcResult result;
1470
1471 FcConfigSubstitute(0, pattern, FcMatchPattern);
1472 FcConfigSubstitute(0, pattern, FcMatchFont);
1473 FcDefaultSubstitute(pattern);
1474
1475 return FcFontMatch(0, pattern, &result);
1476 }
1477
1478
1479 #ifndef NO_POSTSCRIPT_ALIAS
1480 static char* find_postscript_font(FcPattern **fontpattern, char* fontname)
1481 {
1482 FcPattern* font = NULL;
1483 int i;
1484
1485 *fontpattern = NULL;
1486 for (i = 0; i < sizeof(postscript_alias)/sizeof(*postscript_alias); i++) {
1487 if (strcmp(fontname, postscript_alias[i].name) == 0) {
1488 FcChar8* family;
1489
1490 FcPattern* pattern =
1491 FcPatternBuild(0,
1492 FC_FAMILY, FcTypeString, postscript_alias[i].family,
1493 FC_STYLE, FcTypeString, postscript_alias[i].style,
1494 (char*)0);
1495 font = find_font(pattern);
1496 FcPatternDestroy(pattern);
1497
1498 if (!font || FcPatternGetString(font, FC_FAMILY, 0, &family) != FcResultMatch)
1499 return "fontconfig: Couldn't retrieve font family name.";
1500
1501 /* Check whether we got the font family we wanted. */
1502 if (strcmp((const char *)family, postscript_alias[i].family) != 0) {
1503 FcPatternDestroy(font);
1504 return "fontconfig: Didn't find expected font family. Perhaps URW Type 1 fonts need installing?";
1505 }
1506 break;
1507 }
1508 }
1509
1510 *fontpattern = font;
1511 return NULL;
1512 }
1513 #endif
1514
1515 static char * font_pattern(char **fontpath, char *fontpattern)
1516 {
1517 FcPattern* font = NULL;
1518 FcChar8* file;
1519 FcPattern* pattern;
1520 #ifndef NO_POSTSCRIPT_ALIAS
1521 char *error;
1522 #endif
1523
1524 *fontpath = NULL;
1525 #ifndef NO_POSTSCRIPT_ALIAS
1526 error = find_postscript_font(&font, fontpattern);
1527
1528 if (!font) {
1529 if (error)
1530 return error;
1531 #endif
1532 pattern = FcNameParse((const FcChar8 *)fontpattern);
1533 font = find_font(pattern);
1534 FcPatternDestroy(pattern);
1535 #ifndef NO_POSTSCRIPT_ALIAS
1536 }
1537 #endif
1538
1539 if (!font || FcPatternGetString(font, FC_FILE, 0, &file) != FcResultMatch)
1540 return "fontconfig: Couldn't retrieve font file name.";
1541
1542 *fontpath = strdup((const char *)file);
1543
1544 FcPatternDestroy(font);
1545
1546 return NULL;
1547 }
1548
1549 #endif /* HAVE_LIBFONTCONFIG */
1550
1551 /* Look up font using font names as file names. */
1552 static char * font_path(char **fontpath, char *name_list)
1553 {
1554 int font_found = 0;
1555 char *fontsearchpath, *fontlist;
1556 char *fullname = NULL;
1557 char *name, *path, *dir;
1558 char *strtok_ptr;
1559
1560 /*
1561 * Search the pathlist for any of a list of font names.
1562 */
1563 *fontpath = NULL;
1564 fontsearchpath = getenv ("GDFONTPATH");
1565 #ifdef WIN32
1566 if (!fontsearchpath) {
1567 char *ffptr = getenv ("SYSTEMROOT");
1568 if (ffptr) {
1569 fontsearchpath = malloc (strlen(ffptr) + strlen("\\fonts") + 1);
1570 strcpy(fontsearchpath, ffptr);
1571 strcat(fontsearchpath, "\\fonts");
1572 }
1573 }
1574 #endif
1575 if (!fontsearchpath)
1576 fontsearchpath = DEFAULT_FONTPATH;
1577 fontlist = strdup (name_list);
1578
1579 /*
1580 * Must use gd_strtok_r else pointer corrupted by strtok in nested loop.
1581 */
1582 for (name = gd_strtok_r (fontlist, LISTSEPARATOR, &strtok_ptr); name;
1583 name = gd_strtok_r (0, LISTSEPARATOR, &strtok_ptr))
1584 {
1585
1586 /* make a fresh copy each time - strtok corrupts it. */
1587 path = strdup (fontsearchpath);
1588 /*
1589 * Allocate an oversized buffer that is guaranteed to be
1590 * big enough for all paths to be tested.
1591 */
1592 /* 2.0.22: Thorben Kundinger: +8 is needed, not +6. */
1593 fullname = gdRealloc (fullname,
1594 strlen (fontsearchpath) + strlen (name) + 8);
1595 /* if name is an absolute or relative pathname then test directly */
1596 #ifdef NETWARE
1597 /* netware uses the format "volume:/path" or the standard "/path" */
1598 if (name[0] != 0 && (strstr(name, ":/") || name[0] == '/'))
1599 #else
1600 if (strchr (name, '/')
1601 || (name[0] != 0 && name[1] == ':'
1602 && (name[2] == '/' || name[2] == '\\')))
1603 #endif
1604 {
1605 sprintf (fullname, "%s", name);
1606 if (access (fullname, R_OK) == 0)
1607 {
1608 font_found++;
1609 /* 2.0.16: memory leak fixed, Gustavo Scotti */
1610 gdFree (path);
1611 break;
1612 }
1613 }
1614 for (dir = strtok (path, PATHSEPARATOR); dir;
1615 dir = strtok (0, PATHSEPARATOR))
1616 {
1617 if (strchr (name, '.'))
1618 {
1619 sprintf (fullname, "%s/%s", dir, name);
1620 if (access (fullname, R_OK) == 0)
1621 {
1622 font_found++;
1623 break;
1624 }
1625 else
1626 {
1627 continue;
1628 }
1629 }
1630 sprintf (fullname, "%s/%s.ttf", dir, name);
1631 if (access (fullname, R_OK) == 0)
1632 {
1633 font_found++;
1634 break;
1635 }
1636 sprintf (fullname, "%s/%s.pfa", dir, name);
1637 if (access (fullname, R_OK) == 0)
1638 {
1639 font_found++;
1640 break;
1641 }
1642 sprintf (fullname, "%s/%s.pfb", dir, name);
1643 if (access (fullname, R_OK) == 0)
1644 {
1645 font_found++;
1646 break;
1647 }
1648 sprintf (fullname, "%s/%s.dfont", dir, name);
1649 if (access (fullname, R_OK) == 0)
1650 {
1651 font_found++;
1652 break;
1653 }
1654 }
1655 gdFree (path);
1656 if (font_found)
1657 break;
1658 }
1659 gdFree (fontlist);
1660 if (!font_found)
1661 {
1662 gdFree (fullname);
1663 return "Could not find/open font";
1664 }
1665
1666 *fontpath = fullname;
1667 return NULL;
1668 }
1669
1670 BGD_DECLARE(int) gdFTUseFontConfig(int flag)
1671 {
1672 #ifdef HAVE_LIBFONTCONFIG
1673 fontConfigFlag = 1;
1674 return 1;
1675 #else
1676 return 0;
1677 #endif /* HAVE_LIBFONTCONFIG */
1678 }
1679
0 #include "gd.h"
1 #include <math.h>
2
3 /* In tests this is sufficient to prevent obvious artifacts */
4 #define MAG 4
5
6 #define PI 3.141592
7 #define DEG2RAD(x) ((x)*PI/180.)
8
9 #define MAX(x,y) ((x) > (y) ? (x) : (y))
10 #define MIN(x,y) ((x) < (y) ? (x) : (y))
11
12 #define MAX4(x,y,z,w) \
13 ((MAX((x),(y))) > (MAX((z),(w))) ? (MAX((x),(y))) : (MAX((z),(w))))
14 #define MIN4(x,y,z,w) \
15 ((MIN((x),(y))) < (MIN((z),(w))) ? (MIN((x),(y))) : (MIN((z),(w))))
16
17 #define MAXX(x) MAX4(x[0],x[2],x[4],x[6])
18 #define MINX(x) MIN4(x[0],x[2],x[4],x[6])
19 #define MAXY(x) MAX4(x[1],x[3],x[5],x[7])
20 #define MINY(x) MIN4(x[1],x[3],x[5],x[7])
21
22 BGD_DECLARE(char *)
23 gdImageStringFTCircle (gdImagePtr im,
24 int cx,
25 int cy,
26 double radius,
27 double textRadius,
28 double fillPortion,
29 char *font,
30 double points, char *top, char *bottom, int fgcolor)
31 {
32 char *err;
33 int w;
34 int brect[8];
35 int sx1, sx2, sy1, sy2, sx, sy;
36 int x, y;
37 int fr, fg, fb, fa;
38 int ox, oy;
39 double prop;
40 gdImagePtr im1;
41 gdImagePtr im2;
42 gdImagePtr im3;
43 /* obtain brect so that we can size the image */
44 err = gdImageStringFT ((gdImagePtr) NULL,
45 &brect[0], 0, font, points * MAG, 0, 0, 0, bottom);
46 if (err)
47 {
48 return err;
49 }
50 sx1 = MAXX (brect) - MINX (brect) + 6;
51 sy1 = MAXY (brect) - MINY (brect) + 6;
52 err = gdImageStringFT ((gdImagePtr) NULL,
53 &brect[0], 0, font, points * MAG, 0, 0, 0, top);
54 if (err)
55 {
56 return err;
57 }
58 sx2 = MAXX (brect) - MINX (brect) + 6;
59 sy2 = MAXY (brect) - MINY (brect) + 6;
60 /* Pad by 4 pixels to allow for slight errors
61 observed in the bounding box returned by freetype */
62 if (sx1 > sx2)
63 {
64 sx = sx1 * 2 + 4;
65 }
66 else
67 {
68 sx = sx2 * 2 + 4;
69 }
70 if (sy1 > sy2)
71 {
72 sy = sy1;
73 }
74 else
75 {
76 sy = sy2;
77 }
78 im1 = gdImageCreateTrueColor (sx, sy);
79 if (!im1)
80 {
81 return "could not create first image";
82 }
83 err = gdImageStringFT (im1, 0, gdTrueColor (255, 255, 255),
84 font, points * MAG,
85 0, ((sx / 2) - sx1) / 2, points * MAG, bottom);
86 if (err)
87 {
88 gdImageDestroy (im1);
89 return err;
90 }
91 /* We don't know the descent, which would be needed to do this
92 with the angle parameter. Instead, implement a simple
93 flip operation ourselves. */
94 err = gdImageStringFT (im1, 0, gdTrueColor (255, 255, 255),
95 font, points * MAG,
96 0, sx / 2 + ((sx / 2) - sx2) / 2, points * MAG, top);
97 if (err)
98 {
99 gdImageDestroy (im1);
100 return err;
101 }
102 /* Flip in place is tricky, be careful not to double-swap things */
103 if (sy & 1)
104 {
105 for (y = 0; (y <= (sy / 2)); y++)
106 {
107 int xlimit = sx - 2;
108 if (y == (sy / 2))
109 {
110 /* If there is a "middle" row, be careful
111 not to swap twice! */
112 xlimit -= (sx / 4);
113 }
114 for (x = (sx / 2) + 2; (x < xlimit); x++)
115 {
116 int t;
117 int ox = sx - x + (sx / 2) - 1;
118 int oy = sy - y - 1;
119 t = im1->tpixels[oy][ox];
120 im1->tpixels[oy][ox] = im1->tpixels[y][x];
121 im1->tpixels[y][x] = t;
122 }
123 }
124 }
125 else
126 {
127 for (y = 0; (y < (sy / 2)); y++)
128 {
129 int xlimit = sx - 2;
130 for (x = (sx / 2) + 2; (x < xlimit); x++)
131 {
132 int t;
133 int ox = sx - x + (sx / 2) - 1;
134 int oy = sy - y - 1;
135 t = im1->tpixels[oy][ox];
136 im1->tpixels[oy][ox] = im1->tpixels[y][x];
137 im1->tpixels[y][x] = t;
138 }
139 }
140 }
141 #if STEP_PNGS
142 {
143 FILE *out = fopen ("gdfx1.png", "wb");
144 gdImagePng (im1, out);
145 fclose (out);
146 }
147 #endif /* STEP_PNGS */
148 /* Resample taller; the exact proportions of the text depend on the
149 ratio of textRadius to radius, and the value of fillPortion */
150 if (sx > sy * 10)
151 {
152 w = sx;
153 }
154 else
155 {
156 w = sy * 10;
157 }
158 im2 = gdImageCreateTrueColor (w, w);
159 if (!im2)
160 {
161 gdImageDestroy (im1);
162 return "could not create resampled image";
163 }
164 prop = textRadius / radius;
165 gdImageCopyResampled (im2, im1,
166 gdImageSX (im2) * (1.0 - fillPortion) / 4,
167 sy * 10 * (1.0 - prop),
168 0, 0,
169 gdImageSX (im2) * fillPortion / 2, sy * 10 * prop,
170 gdImageSX (im1) / 2, gdImageSY (im1));
171 gdImageCopyResampled (im2, im1,
172 (gdImageSX (im2) / 2) +
173 gdImageSX (im2) * (1.0 - fillPortion) / 4,
174 sy * 10 * (1.0 - prop),
175 gdImageSX (im1) / 2, 0,
176 gdImageSX (im2) * fillPortion / 2, sy * 10 * prop,
177 gdImageSX (im1) / 2, gdImageSY (im1));
178 #if STEP_PNGS
179 {
180 FILE *out = fopen ("gdfx2.png", "wb");
181 gdImagePng (im2, out);
182 fclose (out);
183 }
184 #endif /* STEP_PNGS */
185 /* Ready to produce a circle */
186 im3 = gdImageSquareToCircle (im2, radius);
187 gdImageDestroy (im1);
188 gdImageDestroy (im2);
189 /* Now blend im3 with the destination. Cheat a little. The
190 source (im3) is white-on-black, so we can use the
191 red component as a basis for alpha as long as we're
192 careful to shift off the extra bit and invert
193 (alpha ranges from 0 to 127 where 0 is OPAQUE).
194 Also be careful to allow for an alpha component
195 in the fgcolor parameter itself (gug!) */
196 fr = gdTrueColorGetRed (fgcolor);
197 fg = gdTrueColorGetGreen (fgcolor);
198 fb = gdTrueColorGetBlue (fgcolor);
199 fa = gdTrueColorGetAlpha (fgcolor);
200 ox = cx - (im3->sx / 2);
201 oy = cy - (im3->sy / 2);
202 for (y = 0; (y < im3->sy); y++)
203 {
204 for (x = 0; (x < im3->sx); x++)
205 {
206 int a = gdTrueColorGetRed (im3->tpixels[y][x]) >> 1;
207 a *= (127 - fa);
208 a /= 127;
209 a = 127 - a;
210 gdImageSetPixel (im, x + ox, y + oy,
211 gdTrueColorAlpha (fr, fg, fb, a));
212 }
213 }
214 gdImageDestroy (im3);
215 return 0;
216 }
217
218 #if GDFX_MAIN
219
220 int
221 main (int argc, char *argv[])
222 {
223 FILE *in;
224 FILE *out;
225 gdImagePtr im;
226 int radius;
227 /* Create an image of text on a circle, with an
228 alpha channel so that we can copy it onto a
229 background */
230 in = fopen ("eleanor.jpg", "rb");
231 if (!in)
232 {
233 im = gdImageCreateTrueColor (300, 300);
234 }
235 else
236 {
237 im = gdImageCreateFromJpeg (in);
238 fclose (in);
239 }
240 if (gdImageSX (im) < gdImageSY (im))
241 {
242 radius = gdImageSX (im) / 2;
243 }
244 else
245 {
246 radius = gdImageSY (im) / 2;
247 }
248 gdStringFTCircle (im,
249 gdImageSX (im) / 2,
250 gdImageSY (im) / 2,
251 radius,
252 radius / 2,
253 0.8,
254 "arial",
255 24,
256 "top text",
257 "bottom text", gdTrueColorAlpha (240, 240, 255, 32));
258 out = fopen ("gdfx.png", "wb");
259 if (!out)
260 {
261 fprintf (stderr, "Can't create gdfx.png\n");
262 return 1;
263 }
264 gdImagePng (im, out);
265 fclose (out);
266 gdImageDestroy (im);
267 return 0;
268 }
269
270 #endif /* GDFX_MAIN */
271
272 /* Note: don't change these */
273 #define SUPER 2
274 #define SUPERBITS1 1
275 #define SUPERBITS2 2
276
277 BGD_DECLARE(gdImagePtr)
278 gdImageSquareToCircle (gdImagePtr im, int radius)
279 {
280 int x, y;
281 double c;
282 gdImagePtr im2;
283 if (im->sx != im->sy)
284 {
285 /* Source image must be square */
286 return 0;
287 }
288 im2 = gdImageCreateTrueColor (radius * 2, radius * 2);
289 /* Supersampling for a nicer result */
290 c = (im2->sx / 2) * SUPER;
291 for (y = 0; (y < im2->sy * SUPER); y++)
292 {
293 for (x = 0; (x < im2->sx * SUPER); x++)
294 {
295 double rho = sqrt ((x - c) * (x - c) + (y - c) * (y - c));
296 int pix;
297 int cpix;
298 double theta;
299 double ox;
300 double oy;
301 int red, green, blue, alpha;
302 if (rho > c)
303 {
304 continue;
305 }
306 theta = atan2 (x - c, y - c) + PI / 2;
307 if (theta < 0)
308 {
309 theta += 2 * PI;
310 }
311 /* Undo supersampling */
312 oy = (rho * im->sx) / (im2->sx * SUPER / 2);
313 ox = theta * im->sx / (3.141592653 * 2);
314 pix = gdImageGetPixel (im, ox, oy);
315 cpix = im2->tpixels[y >> SUPERBITS1][x >> SUPERBITS1];
316 red =
317 (gdImageRed (im, pix) >> SUPERBITS2) + gdTrueColorGetRed (cpix);
318 green =
319 (gdImageGreen (im, pix) >> SUPERBITS2) +
320 gdTrueColorGetGreen (cpix);
321 blue =
322 (gdImageBlue (im, pix) >> SUPERBITS2) + gdTrueColorGetBlue (cpix);
323 alpha =
324 (gdImageAlpha (im, pix) >> SUPERBITS2) +
325 gdTrueColorGetAlpha (cpix);
326 im2->tpixels[y >> SUPERBITS1][x >> SUPERBITS1] =
327 gdTrueColorAlpha (red, green, blue, alpha);
328 }
329 }
330 /* Restore full dynamic range, 0-63 yields 0-252. Replication of
331 first 2 bits in last 2 bits has the desired effect. Note
332 slightly different arithmetic for alpha which is 7-bit.
333 NOTE: only correct for SUPER == 2 */
334 for (y = 0; (y < im2->sy); y++)
335 {
336 for (x = 0; (x < im2->sx); x++)
337 {
338 /* Copy first 2 bits to last 2 bits, matching the
339 dynamic range of the original cheaply */
340 int cpix = im2->tpixels[y][x];
341
342 im2->tpixels[y][x] = gdTrueColorAlpha ((gdTrueColorGetRed (cpix) &
343 0xFC) +
344 ((gdTrueColorGetRed (cpix) &
345 0xC0) >> 6),
346 (gdTrueColorGetGreen (cpix) &
347 0xFC) +
348 ((gdTrueColorGetGreen (cpix)
349 & 0xC0) >> 6),
350 (gdTrueColorGetBlue (cpix) &
351 0xFC) +
352 ((gdTrueColorGetBlue (cpix) &
353 0xC0) >> 6),
354 (gdTrueColorGetAlpha (cpix) &
355 0x7C) +
356 ((gdTrueColorGetAlpha (cpix)
357 & 0x60) >> 6));
358 }
359 }
360 return im2;
361 }
362
363 /* 2.0.16: Called by gdImageSharpen to avoid excessive code repetition
364 Added on 2003-11-19 by
365 Paul Troughton (paul<dot>troughton<at>ieee<dot>org)
366 Given filter coefficents and colours of three adjacent pixels,
367 returns new colour for centre pixel
368 */
369
370 int
371 gdImageSubSharpen (int pc, int c, int nc, float inner_coeff, float
372 outer_coeff)
373 {
374 float red, green, blue, alpha;
375
376 red = inner_coeff * gdTrueColorGetRed (c) + outer_coeff *
377 (gdTrueColorGetRed (pc) + gdTrueColorGetRed (nc));
378 green = inner_coeff * gdTrueColorGetGreen (c) + outer_coeff *
379 (gdTrueColorGetGreen (pc) + gdTrueColorGetGreen (nc));
380 blue = inner_coeff * gdTrueColorGetBlue (c) + outer_coeff *
381 (gdTrueColorGetBlue (pc) + gdTrueColorGetBlue (nc));
382 alpha = gdTrueColorGetAlpha (c);
383
384 /* Clamping, as can overshoot bounds in either direction */
385 if (red > 255.0f)
386 {
387 red = 255.0f;
388 }
389 if (green > 255.0f)
390 {
391 green = 255.0f;
392 }
393 if (blue > 255.0f)
394 {
395 blue = 255.0f;
396 }
397 if (red < 0.0f)
398 {
399 red = 0.0f;
400 }
401 if (green < 0.0f)
402 {
403 green = 0.0f;
404 }
405 if (blue < 0.0f)
406 {
407 blue = 0.0f;
408 }
409
410 return gdTrueColorAlpha ((int) red, (int) green, (int) blue, (int) alpha);
411 }
412
413 /*
414 * Sharpen function added on 2003-11-19
415 * by Paul Troughton (paul<dot>troughton<at>ieee<dot>org)
416 * Simple 3x3 convolution kernel
417 * Makes use of seperability
418 * Faster, but less flexible, than full-blown unsharp masking
419 * pct is sharpening percentage, and can be greater than 100
420 * Silently does nothing to non-truecolor images
421 * Silently does nothing for pct<0, as not a useful blurring function
422 * Leaves transparency/alpha-channel untouched
423 */
424 BGD_DECLARE(void)
425 gdImageSharpen (gdImagePtr im, int pct)
426 {
427 int x, y;
428 int sx, sy;
429 float inner_coeff, outer_coeff;
430
431 sx = im->sx;
432 sy = im->sy;
433
434 /* Must sum to 1 to avoid overall change in brightness.
435 * Scaling chosen so that pct=100 gives 1-D filter [-1 6 -1]/4,
436 * resulting in a 2-D filter [1 -6 1; -6 36 -6; 1 -6 1]/16,
437 * which gives noticeable, but not excessive, sharpening
438 */
439
440 outer_coeff = -pct / 400.0;
441 inner_coeff = 1 - 2 * outer_coeff;
442
443 /* Don't try to do anything with non-truecolor images, as
444 pointless,
445 * nor for pct<=0, as small kernel size leads to nasty
446 artefacts when blurring
447 */
448 if ((im->trueColor) && (pct > 0))
449 {
450
451 /* First pass, 1-D convolution column-wise */
452 for (x = 0; x < sx; x++)
453 {
454
455 /* pc is colour of previous pixel; c of the
456 current pixel and nc of the next */
457 int pc, c, nc;
458
459 /* Replicate edge pixel at image boundary */
460 pc = gdImageGetPixel (im, x, 0);
461
462 /* Stop looping before last pixel to avoid
463 conditional within loop */
464 for (y = 0; y < sy - 1; y++)
465 {
466
467 c = gdImageGetPixel (im, x, y);
468
469 nc = gdImageGetTrueColorPixel (im, x, y + 1);
470
471 /* Update centre pixel to new colour */
472 gdImageSetPixel (im, x, y,
473 gdImageSubSharpen (pc, c, nc, inner_coeff,
474 outer_coeff));
475
476 /* Save original colour of current
477 pixel for next time round */
478 pc = c;
479 }
480
481 /* Deal with last pixel, replicating current
482 pixel at image boundary */
483 c = gdImageGetPixel (im, x, y);
484 gdImageSetPixel (im, x, y, gdImageSubSharpen
485 (pc, c, c, inner_coeff, outer_coeff));
486 }
487
488 /* Second pass, 1-D convolution row-wise */
489 for (y = 0; y < sy; y++)
490 {
491 int pc, c;
492 pc = gdImageGetPixel (im, 0, y);
493 for (x = 0; x < sx - 1; x++)
494 {
495 int c, nc;
496 c = gdImageGetPixel (im, x, y);
497 nc = gdImageGetTrueColorPixel (im, x + 1, y);
498 gdImageSetPixel (im, x, y,
499 gdImageSubSharpen (pc, c, nc, inner_coeff,
500 outer_coeff));
501 pc = c;
502 }
503 c = gdImageGetPixel (im, x, y);
504 gdImageSetPixel (im, x, y, gdImageSubSharpen
505 (pc, c, c, inner_coeff, outer_coeff));
506 }
507 }
508 }
509
0 #ifdef __cplusplus
1 extern "C" {
2 #endif
3
4 #ifndef GDFX_H
5 #define GDFX_H 1
6
7 #include "gd.h"
8
9 /* im MUST be square, but can have any size. Returns a new image
10 of width and height radius * 2, in which the X axis of
11 the original has been remapped to theta (angle) and the Y axis
12 of the original has been remapped to rho (distance from center).
13 This is known as a "polar coordinate transform." */
14
15 BGD_DECLARE(gdImagePtr) gdImageSquareToCircle(gdImagePtr im, int radius);
16
17 /* Draws the text 'top' and 'bottom' on 'im', curved along the
18 edge of a circle of radius 'radius', with its
19 center at 'cx' and 'cy'. 'top' is written clockwise
20 along the top; 'bottom' is written counterclockwise
21 along the bottom. 'textRadius' determines the 'height'
22 of each character; if 'textRadius' is 1/2 of 'radius',
23 characters extend halfway from the edge to the center.
24 'fillPortion' varies from 0 to 1.0, with useful values
25 from about 0.4 to 0.9, and determines how much of the
26 180 degrees of arc assigned to each section of text
27 is actually occupied by text; 0.9 looks better than
28 1.0 which is rather crowded. 'font' is a freetype
29 font; see gdImageStringFT. 'points' is passed to the
30 freetype engine and has an effect on hinting; although
31 the size of the text is determined by radius, textRadius,
32 and fillPortion, you should pass a point size that
33 'hints' appropriately -- if you know the text will be
34 large, pass a large point size such as 24.0 to get the
35 best results. 'fgcolor' can be any color, and may have
36 an alpha component, do blending, etc.
37
38 Returns 0 on success, or an error string. */
39
40 BGD_DECLARE(char *) gdImageStringFTCircle(
41 gdImagePtr im,
42 int cx,
43 int cy,
44 double radius,
45 double textRadius,
46 double fillPortion,
47 char *font,
48 double points,
49 char *top,
50 char *bottom,
51 int fgcolor);
52
53 /* 2.0.16:
54 * Sharpen function added on 2003-11-19
55 * by Paul Troughton (paul<dot>troughton<at>ieee<dot>org)
56 * Simple 3x3 convolution kernel
57 * Makes use of seperability
58 * Faster, but less flexible, than full-blown unsharp masking
59 * pct is sharpening percentage, and can be greater than 100
60 * Silently does nothing to non-truecolor images
61 * Silently does nothing for pct<0, as not a useful blurring function
62 * Leaves transparency/alpha-channel untouched
63 */
64
65 BGD_DECLARE(void) gdImageSharpen (gdImagePtr im, int pct);
66
67 #endif /* GDFX_H */
68
69
70 #ifdef __cplusplus
71 }
72 #endif
0 #ifdef HAVE_CONFIG_H
1 #include "config.h"
2 #endif
3
4 #include "gd.h"
5 #include "gdhelpers.h"
6 #include <stdlib.h>
7 #include <string.h>
8
9 /* TBB: gd_strtok_r is not portable; provide an implementation */
10
11 #define SEP_TEST (separators[*((unsigned char *) s)])
12
13 char *
14 gd_strtok_r (char *s, char *sep, char **state)
15 {
16 char separators[256];
17 char *result = 0;
18 memset (separators, 0, sizeof (separators));
19 while (*sep)
20 {
21 separators[*((unsigned char *) sep)] = 1;
22 sep++;
23 }
24 if (!s)
25 {
26 /* Pick up where we left off */
27 s = *state;
28 }
29 /* 1. EOS */
30 if (!(*s))
31 {
32 *state = s;
33 return 0;
34 }
35 /* 2. Leading separators, if any */
36 if (SEP_TEST)
37 {
38 do
39 {
40 s++;
41 }
42 while (SEP_TEST);
43 /* 2a. EOS after separators only */
44 if (!(*s))
45 {
46 *state = s;
47 return 0;
48 }
49 }
50 /* 3. A token */
51 result = s;
52 do
53 {
54 /* 3a. Token at end of string */
55 if (!(*s))
56 {
57 *state = s;
58 return result;
59 }
60 s++;
61 }
62 while (!SEP_TEST);
63 /* 4. Terminate token and skip trailing separators */
64 *s = '\0';
65 do
66 {
67 s++;
68 }
69 while (SEP_TEST);
70 /* 5. Return token */
71 *state = s;
72 return result;
73 }
74
75 void *
76 gdCalloc (size_t nmemb, size_t size)
77 {
78 return calloc (nmemb, size);
79 }
80
81 void *
82 gdMalloc (size_t size)
83 {
84 return malloc (size);
85 }
86
87 void *
88 gdRealloc (void *ptr, size_t size)
89 {
90 return realloc (ptr, size);
91 }
92
93 BGD_DECLARE(void) gdFree (void *ptr)
94 {
95 free (ptr);
96 }
0 #ifdef __cplusplus
1 extern "C" {
2 #endif
3
4 #ifndef GDHELPERS_H
5 #define GDHELPERS_H 1
6
7 /* sys/types.h is needed for size_t on Sparc-SunOS-4.1 */
8 #include <sys/types.h>
9
10 /* TBB: strtok_r is not universal; provide an implementation of it. */
11
12 char * gd_strtok_r (char *s, char *sep, char **state);
13
14 /* These functions wrap memory management. gdFree is
15 in gd.h, where callers can utilize it to correctly
16 free memory allocated by these functions with the
17 right version of free(). */
18 void *gdCalloc (size_t nmemb, size_t size);
19 void *gdMalloc (size_t size);
20 void *gdRealloc (void *ptr, size_t size);
21
22 /* Returns nonzero if multiplying the two quantities will
23 result in integer overflow. Also returns nonzero if
24 either quantity is negative. By Phil Knirsch based on
25 netpbm fixes by Alan Cox. */
26
27 int overflow2(int a, int b);
28
29 /* 2.0.16: portable mutex support for thread safety. */
30
31 #ifdef WIN32
32 /* 2.0.18: must include windows.h to get CRITICAL_SECTION. */
33 #include <windows.h>
34 #define gdMutexDeclare(x) CRITICAL_SECTION x
35 #define gdMutexSetup(x) InitializeCriticalSection(&x)
36 #define gdMutexShutdown(x) DeleteCriticalSection(&x)
37 #define gdMutexLock(x) EnterCriticalSection(&x)
38 #define gdMutexUnlock(x) LeaveCriticalSection(&x)
39 #else
40 #ifdef HAVE_PTHREAD
41 #include <pthread.h>
42 #define gdMutexDeclare(x) pthread_mutex_t x
43 #define gdMutexSetup(x) pthread_mutex_init(&x, 0)
44 #define gdMutexShutdown(x) pthread_mutex_destroy(&x)
45 #define gdMutexLock(x) pthread_mutex_lock(&x)
46 #define gdMutexUnlock(x) pthread_mutex_unlock(&x)
47 #else
48 #define gdMutexDeclare(x)
49 #define gdMutexSetup(x)
50 #define gdMutexShutdown(x)
51 #define gdMutexLock(x)
52 #define gdMutexUnlock(x)
53 #endif /* HAVE_PTHREAD */
54 #endif /* WIN32 */
55
56 #endif /* GDHELPERS_H */
57
58 #ifdef __cplusplus
59 }
60 #endif
0 /* gdkanji.c (Kanji code converter) */
1 /* written by Masahito Yamaga (ma@yama-ga.com) */
2
3 #ifdef HAVE_CONFIG_H
4 #include "config.h"
5 #endif
6
7 #include <stdio.h>
8 #include <stdlib.h>
9 #include <string.h>
10 #include "gd.h"
11 #include "gdhelpers.h"
12
13 #ifdef HAVE_ERRNO_H
14 #include <errno.h>
15 #endif
16
17 #include <stdarg.h>
18 #if defined(HAVE_ICONV_H)
19 #include <iconv.h>
20 #endif
21
22 #ifndef HAVE_ICONV_T_DEF
23 typedef void *iconv_t;
24 #endif
25
26 #ifndef HAVE_ICONV
27 #define ICONV_CONST /**/
28 iconv_t iconv_open (const char *, const char *);
29 size_t iconv (iconv_t, ICONV_CONST char **, size_t *, char **, size_t *);
30 int iconv_close (iconv_t);
31
32 iconv_t
33 iconv_open (const char *tocode, const char *fromcode)
34 {
35 return (iconv_t) (-1);
36 }
37
38 size_t
39 iconv (iconv_t cd, ICONV_CONST char **inbuf, size_t * inbytesleft,
40 char **outbuf, size_t * outbytesleft)
41 {
42 return 0;
43 }
44
45 int
46 iconv_close (iconv_t cd)
47 {
48 return 0;
49 }
50
51 #endif /* !HAVE_ICONV */
52
53 #define LIBNAME "any2eucjp()"
54
55 #if defined(__MSC__) || defined(__BORLANDC__) || defined(__TURBOC__) || defined(_Windows) || defined(MSDOS)
56 #ifndef SJISPRE
57 #define SJISPRE 1
58 #endif
59 #endif
60
61 #ifdef TRUE
62 #undef TRUE
63 #endif
64 #ifdef FALSE
65 #undef FALSE
66 #endif
67
68 #define TRUE 1
69 #define FALSE 0
70
71 #define NEW 1
72 #define OLD 2
73 #define ESCI 3
74 #define NEC 4
75 #define EUC 5
76 #define SJIS 6
77 #define EUCORSJIS 7
78 #define ASCII 8
79
80 #define NEWJISSTR "JIS7"
81 #define OLDJISSTR "jis"
82 #define EUCSTR "eucJP"
83 #define SJISSTR "SJIS"
84
85 #define ESC 27
86 #define SS2 142
87
88 static void
89 debug (const char *format, ...)
90 {
91 #ifdef DEBUG
92 va_list args;
93
94 va_start (args, format);
95 fprintf (stdout, "%s: ", LIBNAME);
96 vfprintf (stdout, format, args);
97 fprintf (stdout, "\n");
98 va_end (args);
99 #endif
100 }
101
102 static void
103 error (const char *format, ...)
104 {
105 va_list args;
106
107 va_start (args, format);
108 fprintf (stderr, "%s: ", LIBNAME);
109 vfprintf (stderr, format, args);
110 fprintf (stderr, "\n");
111 va_end (args);
112 }
113
114 /* DetectKanjiCode() derived from DetectCodeType() by Ken Lunde. */
115
116 static int
117 DetectKanjiCode (unsigned char *str)
118 {
119 static int whatcode = ASCII;
120 int oldcode = ASCII;
121 int c, i;
122 char *lang = NULL;
123
124 c = '\1';
125 i = 0;
126
127 if (whatcode != EUCORSJIS && whatcode != ASCII)
128 {
129 oldcode = whatcode;
130 whatcode = ASCII;
131 }
132
133 while ((whatcode == EUCORSJIS || whatcode == ASCII) && c != '\0')
134 {
135 if ((c = str[i++]) != '\0')
136 {
137 if (c == ESC)
138 {
139 c = str[i++];
140 if (c == '$')
141 {
142 c = str[i++];
143 if (c == 'B')
144 whatcode = NEW;
145 else if (c == '@')
146 whatcode = OLD;
147 }
148 else if (c == '(')
149 {
150 c = str[i++];
151 if (c == 'I')
152 whatcode = ESCI;
153 }
154 else if (c == 'K')
155 whatcode = NEC;
156 }
157 else if ((c >= 129 && c <= 141) || (c >= 143 && c <= 159))
158 whatcode = SJIS;
159 else if (c == SS2)
160 {
161 c = str[i++];
162 if ((c >= 64 && c <= 126) || (c >= 128 && c <= 160)
163 || (c >= 224 && c <= 252))
164 whatcode = SJIS;
165 else if (c >= 161 && c <= 223)
166 whatcode = EUCORSJIS;
167 }
168 else if (c >= 161 && c <= 223)
169 {
170 c = str[i++];
171 if (c >= 240 && c <= 254)
172 whatcode = EUC;
173 else if (c >= 161 && c <= 223)
174 whatcode = EUCORSJIS;
175 else if (c >= 224 && c <= 239)
176 {
177 whatcode = EUCORSJIS;
178 while (c >= 64 && c != '\0' && whatcode == EUCORSJIS)
179 {
180 if (c >= 129)
181 {
182 if (c <= 141 || (c >= 143 && c <= 159))
183 whatcode = SJIS;
184 else if (c >= 253 && c <= 254)
185 whatcode = EUC;
186 }
187 c = str[i++];
188 }
189 }
190 else if (c <= 159)
191 whatcode = SJIS;
192 }
193 else if (c >= 240 && c <= 254)
194 whatcode = EUC;
195 else if (c >= 224 && c <= 239)
196 {
197 c = str[i++];
198 if ((c >= 64 && c <= 126) || (c >= 128 && c <= 160))
199 whatcode = SJIS;
200 else if (c >= 253 && c <= 254)
201 whatcode = EUC;
202 else if (c >= 161 && c <= 252)
203 whatcode = EUCORSJIS;
204 }
205 }
206 }
207
208 #ifdef DEBUG
209 if (whatcode == ASCII)
210 debug ("Kanji code not included.");
211 else if (whatcode == EUCORSJIS)
212 debug ("Kanji code not detected.");
213 else
214 debug ("Kanji code detected at %d byte.", i);
215 #endif
216
217 if (whatcode == EUCORSJIS && oldcode != ASCII)
218 whatcode = oldcode;
219
220 if (whatcode == EUCORSJIS)
221 {
222 if (getenv ("LC_ALL"))
223 lang = getenv ("LC_ALL");
224 else if (getenv ("LC_CTYPE"))
225 lang = getenv ("LC_CTYPE");
226 else if (getenv ("LANG"))
227 lang = getenv ("LANG");
228
229 if (lang)
230 {
231 if (strcmp (lang, "ja_JP.SJIS") == 0 ||
232 #ifdef hpux
233 strcmp (lang, "japanese") == 0 ||
234 #endif
235 strcmp (lang, "ja_JP.mscode") == 0 ||
236 strcmp (lang, "ja_JP.PCK") == 0)
237 whatcode = SJIS;
238 else if (strncmp (lang, "ja", 2) == 0)
239 #ifdef SJISPRE
240 whatcode = SJIS;
241 #else
242 whatcode = EUC;
243 #endif
244 }
245 }
246
247 if (whatcode == EUCORSJIS)
248 #ifdef SJISPRE
249 whatcode = SJIS;
250 #else
251 whatcode = EUC;
252 #endif
253
254 return whatcode;
255 }
256
257 /* SJIStoJIS() is sjis2jis() by Ken Lunde. */
258
259 static void
260 SJIStoJIS (int *p1, int *p2)
261 {
262 register unsigned char c1 = *p1;
263 register unsigned char c2 = *p2;
264 register int adjust = c2 < 159;
265 register int rowOffset = c1 < 160 ? 112 : 176;
266 register int cellOffset = adjust ? (31 + (c2 > 127)) : 126;
267
268 *p1 = ((c1 - rowOffset) << 1) - adjust;
269 *p2 -= cellOffset;
270 }
271
272 /* han2zen() was derived from han2zen() written by Ken Lunde. */
273
274 #define IS_DAKU(c) ((c >= 182 && c <= 196) || (c >= 202 && c <= 206) || (c == 179))
275 #define IS_HANDAKU(c) (c >= 202 && c <= 206)
276
277 static void
278 han2zen (int *p1, int *p2)
279 {
280 int c = *p1;
281 int daku = FALSE;
282 int handaku = FALSE;
283 int mtable[][2] = {
284 {129, 66},
285 {129, 117},
286 {129, 118},
287 {129, 65},
288 {129, 69},
289 {131, 146},
290 {131, 64},
291 {131, 66},
292 {131, 68},
293 {131, 70},
294 {131, 72},
295 {131, 131},
296 {131, 133},
297 {131, 135},
298 {131, 98},
299 {129, 91},
300 {131, 65},
301 {131, 67},
302 {131, 69},
303 {131, 71},
304 {131, 73},
305 {131, 74},
306 {131, 76},
307 {131, 78},
308 {131, 80},
309 {131, 82},
310 {131, 84},
311 {131, 86},
312 {131, 88},
313 {131, 90},
314 {131, 92},
315 {131, 94},
316 {131, 96},
317 {131, 99},
318 {131, 101},
319 {131, 103},
320 {131, 105},
321 {131, 106},
322 {131, 107},
323 {131, 108},
324 {131, 109},
325 {131, 110},
326 {131, 113},
327 {131, 116},
328 {131, 119},
329 {131, 122},
330 {131, 125},
331 {131, 126},
332 {131, 128},
333 {131, 129},
334 {131, 130},
335 {131, 132},
336 {131, 134},
337 {131, 136},
338 {131, 137},
339 {131, 138},
340 {131, 139},
341 {131, 140},
342 {131, 141},
343 {131, 143},
344 {131, 147},
345 {129, 74},
346 {129, 75}
347 };
348
349 if (*p2 == 222 && IS_DAKU (*p1))
350 daku = TRUE; /* Daku-ten */
351 else if (*p2 == 223 && IS_HANDAKU (*p1))
352 handaku = TRUE; /* Han-daku-ten */
353
354 *p1 = mtable[c - 161][0];
355 *p2 = mtable[c - 161][1];
356
357 if (daku)
358 {
359 if ((*p2 >= 74 && *p2 <= 103) || (*p2 >= 110 && *p2 <= 122))
360 (*p2)++;
361 else if (*p2 == 131 && *p2 == 69)
362 *p2 = 148;
363 }
364 else if (handaku && *p2 >= 110 && *p2 <= 122)
365 (*p2) += 2;
366 }
367
368 /* Recast strcpy to handle unsigned chars used below. */
369 #define ustrcpy(A,B) (strcpy((char*)(A),(const char*)(B)))
370
371 static void
372 do_convert (unsigned char **to_p, unsigned char **from_p, const char *code)
373 {
374 unsigned char *to = *to_p;
375 unsigned char *from = *from_p;
376 #ifdef HAVE_ICONV
377 iconv_t cd;
378 size_t from_len, to_len;
379
380 if ((cd = iconv_open (EUCSTR, code)) == (iconv_t) - 1)
381 {
382 error ("iconv_open() error");
383 #ifdef HAVE_ERRNO_H
384 if (errno == EINVAL)
385 error ("invalid code specification: \"%s\" or \"%s\"", EUCSTR, code);
386 #endif
387 ustrcpy (to, from);
388 return;
389 }
390
391 from_len = strlen ((const char *)from) + 1;
392 to_len = BUFSIZ;
393
394 if ((int) (iconv (cd, (char **)from_p, &from_len, (char **)to_p, &to_len))
395 == -1)
396 {
397 #ifdef HAVE_ERRNO_H
398 if (errno == EINVAL)
399 error ("invalid end of input string");
400 else if (errno == EILSEQ)
401 error ("invalid code in input string");
402 else if (errno == E2BIG)
403 error ("output buffer overflow at do_convert()");
404 else
405 #endif
406 error ("something happen");
407 ustrcpy (to, from);
408 return;
409 }
410
411 if (iconv_close (cd) != 0)
412 {
413 error ("iconv_close() error");
414 }
415 #else
416 int p1, p2, i, j;
417 int jisx0208 = FALSE;
418 int hankaku = FALSE;
419
420 j = 0;
421 if (strcmp (code, NEWJISSTR) == 0 || strcmp (code, OLDJISSTR) == 0)
422 {
423 for (i = 0; from[i] != '\0' && j < BUFSIZ; i++)
424 {
425 if (from[i] == ESC)
426 {
427 i++;
428 if (from[i] == '$')
429 {
430 jisx0208 = TRUE;
431 hankaku = FALSE;
432 i++;
433 }
434 else if (from[i] == '(')
435 {
436 jisx0208 = FALSE;
437 i++;
438 if (from[i] == 'I') /* Hankaku Kana */
439 hankaku = TRUE;
440 else
441 hankaku = FALSE;
442 }
443 }
444 else
445 {
446 if (jisx0208)
447 to[j++] = from[i] + 128;
448 else if (hankaku)
449 {
450 to[j++] = SS2;
451 to[j++] = from[i] + 128;
452 }
453 else
454 to[j++] = from[i];
455 }
456 }
457 }
458 else if (strcmp (code, SJISSTR) == 0)
459 {
460 for (i = 0; from[i] != '\0' && j < BUFSIZ; i++)
461 {
462 p1 = from[i];
463 if (p1 < 127)
464 to[j++] = p1;
465 else if ((p1 >= 161) && (p1 <= 223))
466 { /* Hankaku Kana */
467 to[j++] = SS2;
468 to[j++] = p1;
469 }
470 else
471 {
472 p2 = from[++i];
473 SJIStoJIS (&p1, &p2);
474 to[j++] = p1 + 128;
475 to[j++] = p2 + 128;
476 }
477 }
478 }
479 else
480 {
481 error ("invalid code specification: \"%s\"", code);
482 return;
483 }
484
485 if (j >= BUFSIZ)
486 {
487 error ("output buffer overflow at do_convert()");
488 ustrcpy (to, from);
489 }
490 else
491 to[j] = '\0';
492 #endif /* HAVE_ICONV */
493 }
494
495 static int
496 do_check_and_conv (unsigned char *to, unsigned char *from)
497 {
498 static unsigned char tmp[BUFSIZ];
499 unsigned char *tmp_p = &tmp[0];
500 int p1, p2, i, j;
501 int kanji = TRUE;
502
503 switch (DetectKanjiCode (from))
504 {
505 case NEW:
506 debug ("Kanji code is New JIS.");
507 do_convert (&tmp_p, &from, NEWJISSTR);
508 break;
509 case OLD:
510 debug ("Kanji code is Old JIS.");
511 do_convert (&tmp_p, &from, OLDJISSTR);
512 break;
513 case ESCI:
514 debug
515 ("This string includes Hankaku-Kana (jisx0201) escape sequence [ESC] + ( + I.");
516 do_convert (&tmp_p, &from, NEWJISSTR);
517 break;
518 case NEC:
519 debug ("Kanji code is NEC Kanji.");
520 error ("cannot convert NEC Kanji.");
521 ustrcpy (tmp, from);
522 kanji = FALSE;
523 break;
524 case EUC:
525 debug ("Kanji code is EUC.");
526 ustrcpy (tmp, from);
527 break;
528 case SJIS:
529 debug ("Kanji code is SJIS.");
530 do_convert (&tmp_p, &from, SJISSTR);
531 break;
532 case EUCORSJIS:
533 debug ("Kanji code is EUC or SJIS.");
534 ustrcpy (tmp, from);
535 kanji = FALSE;
536 break;
537 case ASCII:
538 debug ("This is ASCII string.");
539 ustrcpy (tmp, from);
540 kanji = FALSE;
541 break;
542 default:
543 debug ("This string includes unknown code.");
544 ustrcpy (tmp, from);
545 kanji = FALSE;
546 break;
547 }
548
549 /* Hankaku Kana ---> Zenkaku Kana */
550 if (kanji)
551 {
552 j = 0;
553 for (i = 0; tmp[i] != '\0' && j < BUFSIZ; i++)
554 {
555 if (tmp[i] == SS2)
556 {
557 p1 = tmp[++i];
558 if (tmp[i + 1] == SS2)
559 {
560 p2 = tmp[i + 2];
561 if (p2 == 222 || p2 == 223)
562 i += 2;
563 else
564 p2 = 0;
565 }
566 else
567 p2 = 0;
568 han2zen (&p1, &p2);
569 SJIStoJIS (&p1, &p2);
570 to[j++] = p1 + 128;
571 to[j++] = p2 + 128;
572 }
573 else
574 to[j++] = tmp[i];
575 }
576
577 if (j >= BUFSIZ)
578 {
579 error ("output buffer overflow at Hankaku --> Zenkaku");
580 ustrcpy (to, tmp);
581 }
582 else
583 to[j] = '\0';
584 }
585 else
586 ustrcpy (to, tmp);
587
588 return kanji;
589 }
590
591 int
592 any2eucjp (unsigned char *dest, unsigned char *src, unsigned int dest_max)
593 {
594 static unsigned char tmp_dest[BUFSIZ];
595 int ret;
596
597 if (strlen ((const char *) src) >= BUFSIZ)
598 {
599 error ("input string too large");
600 return -1;
601 }
602 if (dest_max > BUFSIZ)
603 {
604 error
605 ("invalid maximum size of destination\nit should be less than %d.",
606 BUFSIZ);
607 return -1;
608 }
609 ret = do_check_and_conv (tmp_dest, src);
610 if (strlen ((const char *) tmp_dest) >= dest_max)
611 {
612 error ("output buffer overflow");
613 ustrcpy (dest, src);
614 return -1;
615 }
616 ustrcpy (dest, tmp_dest);
617 return ret;
618 }
619
620 #if 0
621 unsigned int
622 strwidth (unsigned char *s)
623 {
624 unsigned char *t;
625 unsigned int i;
626
627 t = (unsigned char *) gdMalloc (BUFSIZ);
628 any2eucjp (t, s, BUFSIZ);
629 i = strlen (t);
630 gdFree (t);
631 return i;
632 }
633
634 #ifdef DEBUG
635 int
636 main ()
637 {
638 unsigned char input[BUFSIZ];
639 unsigned char *output;
640 unsigned char *str;
641 int c, i = 0;
642
643 while ((c = fgetc (stdin)) != '\n' && i < BUFSIZ)
644 input[i++] = c;
645 input[i] = '\0';
646
647 printf ("input : %d bytes\n", strlen ((const char *) input));
648 printf ("output: %d bytes\n", strwidth (input));
649
650 output = (unsigned char *) gdMalloc (BUFSIZ);
651 any2eucjp (output, input, BUFSIZ);
652 str = output;
653 while (*str != '\0')
654 putchar (*(str++));
655 putchar ('\n');
656 gdFree (output);
657
658 return 0;
659 }
660 #endif
661 #endif
0
1 #ifdef HAVE_CONFIG_H
2 #include "config.h"
3 #endif
4
5 #include <stdio.h>
6 #include <stdlib.h> /* For atoi */
7 #include "gd.h"
8
9 /* A short program which converts a .png file into a .gd file, for
10 your convenience in creating images on the fly from a
11 basis image that must be loaded quickly. The .gd format
12 is not intended to be a general-purpose format. */
13
14 int
15 main (int argc, char **argv)
16 {
17 gdImagePtr im;
18 FILE *in, *out;
19 int x, y, w, h;
20
21 if (argc != 7)
22 {
23 fprintf (stderr,
24 "Usage: gdparttopng filename.gd filename.png x y w h\n");
25 exit (1);
26 }
27 in = fopen (argv[1], "rb");
28 if (!in)
29 {
30 fprintf (stderr, "Input file does not exist!\n");
31 exit (1);
32 }
33
34 x = atoi (argv[3]);
35 y = atoi (argv[4]);
36 w = atoi (argv[5]);
37 h = atoi (argv[6]);
38
39 printf ("Extracting from (%d, %d), size is %dx%d\n", x, y, w, h);
40
41 im = gdImageCreateFromGd2Part (in, x, y, w, h);
42 fclose (in);
43 if (!im)
44 {
45 fprintf (stderr, "Input is not in PNG format!\n");
46 exit (1);
47 }
48 out = fopen (argv[2], "wb");
49 if (!out)
50 {
51 fprintf (stderr, "Output file cannot be written to!\n");
52 gdImageDestroy (im);
53 exit (1);
54 }
55 #ifdef HAVE_LIBPNG
56 gdImagePng (im, out);
57 #else
58 fprintf (stderr, "No PNG library support.\n");
59 #endif
60 fclose (out);
61 gdImageDestroy (im);
62
63 return 0;
64 }
0
1 int gdCosT[] = {
2 1024,
3 1023,
4 1023,
5 1022,
6 1021,
7 1020,
8 1018,
9 1016,
10 1014,
11 1011,
12 1008,
13 1005,
14 1001,
15 997,
16 993,
17 989,
18 984,
19 979,
20 973,
21 968,
22 962,
23 955,
24 949,
25 942,
26 935,
27 928,
28 920,
29 912,
30 904,
31 895,
32 886,
33 877,
34 868,
35 858,
36 848,
37 838,
38 828,
39 817,
40 806,
41 795,
42 784,
43 772,
44 760,
45 748,
46 736,
47 724,
48 711,
49 698,
50 685,
51 671,
52 658,
53 644,
54 630,
55 616,
56 601,
57 587,
58 572,
59 557,
60 542,
61 527,
62 512,
63 496,
64 480,
65 464,
66 448,
67 432,
68 416,
69 400,
70 383,
71 366,
72 350,
73 333,
74 316,
75 299,
76 282,
77 265,
78 247,
79 230,
80 212,
81 195,
82 177,
83 160,
84 142,
85 124,
86 107,
87 89,
88 71,
89 53,
90 35,
91 17,
92 0,
93 -17,
94 -35,
95 -53,
96 -71,
97 -89,
98 -107,
99 -124,
100 -142,
101 -160,
102 -177,
103 -195,
104 -212,
105 -230,
106 -247,
107 -265,
108 -282,
109 -299,
110 -316,
111 -333,
112 -350,
113 -366,
114 -383,
115 -400,
116 -416,
117 -432,
118 -448,
119 -464,
120 -480,
121 -496,
122 -512,
123 -527,
124 -542,
125 -557,
126 -572,
127 -587,
128 -601,
129 -616,
130 -630,
131 -644,
132 -658,
133 -671,
134 -685,
135 -698,
136 -711,
137 -724,
138 -736,
139 -748,
140 -760,
141 -772,
142 -784,
143 -795,
144 -806,
145 -817,
146 -828,
147 -838,
148 -848,
149 -858,
150 -868,
151 -877,
152 -886,
153 -895,
154 -904,
155 -912,
156 -920,
157 -928,
158 -935,
159 -942,
160 -949,
161 -955,
162 -962,
163 -968,
164 -973,
165 -979,
166 -984,
167 -989,
168 -993,
169 -997,
170 -1001,
171 -1005,
172 -1008,
173 -1011,
174 -1014,
175 -1016,
176 -1018,
177 -1020,
178 -1021,
179 -1022,
180 -1023,
181 -1023,
182 -1024,
183 -1023,
184 -1023,
185 -1022,
186 -1021,
187 -1020,
188 -1018,
189 -1016,
190 -1014,
191 -1011,
192 -1008,
193 -1005,
194 -1001,
195 -997,
196 -993,
197 -989,
198 -984,
199 -979,
200 -973,
201 -968,
202 -962,
203 -955,
204 -949,
205 -942,
206 -935,
207 -928,
208 -920,
209 -912,
210 -904,
211 -895,
212 -886,
213 -877,
214 -868,
215 -858,
216 -848,
217 -838,
218 -828,
219 -817,
220 -806,
221 -795,
222 -784,
223 -772,
224 -760,
225 -748,
226 -736,
227 -724,
228 -711,
229 -698,
230 -685,
231 -671,
232 -658,
233 -644,
234 -630,
235 -616,
236 -601,
237 -587,
238 -572,
239 -557,
240 -542,
241 -527,
242 -512,
243 -496,
244 -480,
245 -464,
246 -448,
247 -432,
248 -416,
249 -400,
250 -383,
251 -366,
252 -350,
253 -333,
254 -316,
255 -299,
256 -282,
257 -265,
258 -247,
259 -230,
260 -212,
261 -195,
262 -177,
263 -160,
264 -142,
265 -124,
266 -107,
267 -89,
268 -71,
269 -53,
270 -35,
271 -17,
272 0,
273 17,
274 35,
275 53,
276 71,
277 89,
278 107,
279 124,
280 142,
281 160,
282 177,
283 195,
284 212,
285 230,
286 247,
287 265,
288 282,
289 299,
290 316,
291 333,
292 350,
293 366,
294 383,
295 400,
296 416,
297 432,
298 448,
299 464,
300 480,
301 496,
302 512,
303 527,
304 542,
305 557,
306 572,
307 587,
308 601,
309 616,
310 630,
311 644,
312 658,
313 671,
314 685,
315 698,
316 711,
317 724,
318 736,
319 748,
320 760,
321 772,
322 784,
323 795,
324 806,
325 817,
326 828,
327 838,
328 848,
329 858,
330 868,
331 877,
332 886,
333 895,
334 904,
335 912,
336 920,
337 928,
338 935,
339 942,
340 949,
341 955,
342 962,
343 968,
344 973,
345 979,
346 984,
347 989,
348 993,
349 997,
350 1001,
351 1005,
352 1008,
353 1011,
354 1014,
355 1016,
356 1018,
357 1020,
358 1021,
359 1022,
360 1023,
361 1023
362 };
363
364 int gdSinT[] = {
365 0,
366 17,
367 35,
368 53,
369 71,
370 89,
371 107,
372 124,
373 142,
374 160,
375 177,
376 195,
377 212,
378 230,
379 247,
380 265,
381 282,
382 299,
383 316,
384 333,
385 350,
386 366,
387 383,
388 400,
389 416,
390 432,
391 448,
392 464,
393 480,
394 496,
395 512,
396 527,
397 542,
398 557,
399 572,
400 587,
401 601,
402 616,
403 630,
404 644,
405 658,
406 671,
407 685,
408 698,
409 711,
410 724,
411 736,
412 748,
413 760,
414 772,
415 784,
416 795,
417 806,
418 817,
419 828,
420 838,
421 848,
422 858,
423 868,
424 877,
425 886,
426 895,
427 904,
428 912,
429 920,
430 928,
431 935,
432 942,
433 949,
434 955,
435 962,
436 968,
437 973,
438 979,
439 984,
440 989,
441 993,
442 997,
443 1001,
444 1005,
445 1008,
446 1011,
447 1014,
448 1016,
449 1018,
450 1020,
451 1021,
452 1022,
453 1023,
454 1023,
455 1024,
456 1023,
457 1023,
458 1022,
459 1021,
460 1020,
461 1018,
462 1016,
463 1014,
464 1011,
465 1008,
466 1005,
467 1001,
468 997,
469 993,
470 989,
471 984,
472 979,
473 973,
474 968,
475 962,
476 955,
477 949,
478 942,
479 935,
480 928,
481 920,
482 912,
483 904,
484 895,
485 886,
486 877,
487 868,
488 858,
489 848,
490 838,
491 828,
492 817,
493 806,
494 795,
495 784,
496 772,
497 760,
498 748,
499 736,
500 724,
501 711,
502 698,
503 685,
504 671,
505 658,
506 644,
507 630,
508 616,
509 601,
510 587,
511 572,
512 557,
513 542,
514 527,
515 512,
516 496,
517 480,
518 464,
519 448,
520 432,
521 416,
522 400,
523 383,
524 366,
525 350,
526 333,
527 316,
528 299,
529 282,
530 265,
531 247,
532 230,
533 212,
534 195,
535 177,
536 160,
537 142,
538 124,
539 107,
540 89,
541 71,
542 53,
543 35,
544 17,
545 0,
546 -17,
547 -35,
548 -53,
549 -71,
550 -89,
551 -107,
552 -124,
553 -142,
554 -160,
555 -177,
556 -195,
557 -212,
558 -230,
559 -247,
560 -265,
561 -282,
562 -299,
563 -316,
564 -333,
565 -350,
566 -366,
567 -383,
568 -400,
569 -416,
570 -432,
571 -448,
572 -464,
573 -480,
574 -496,
575 -512,
576 -527,
577 -542,
578 -557,
579 -572,
580 -587,
581 -601,
582 -616,
583 -630,
584 -644,
585 -658,
586 -671,
587 -685,
588 -698,
589 -711,
590 -724,
591 -736,
592 -748,
593 -760,
594 -772,
595 -784,
596 -795,
597 -806,
598 -817,
599 -828,
600 -838,
601 -848,
602 -858,
603 -868,
604 -877,
605 -886,
606 -895,
607 -904,
608 -912,
609 -920,
610 -928,
611 -935,
612 -942,
613 -949,
614 -955,
615 -962,
616 -968,
617 -973,
618 -979,
619 -984,
620 -989,
621 -993,
622 -997,
623 -1001,
624 -1005,
625 -1008,
626 -1011,
627 -1014,
628 -1016,
629 -1018,
630 -1020,
631 -1021,
632 -1022,
633 -1023,
634 -1023,
635 -1024,
636 -1023,
637 -1023,
638 -1022,
639 -1021,
640 -1020,
641 -1018,
642 -1016,
643 -1014,
644 -1011,
645 -1008,
646 -1005,
647 -1001,
648 -997,
649 -993,
650 -989,
651 -984,
652 -979,
653 -973,
654 -968,
655 -962,
656 -955,
657 -949,
658 -942,
659 -935,
660 -928,
661 -920,
662 -912,
663 -904,
664 -895,
665 -886,
666 -877,
667 -868,
668 -858,
669 -848,
670 -838,
671 -828,
672 -817,
673 -806,
674 -795,
675 -784,
676 -772,
677 -760,
678 -748,
679 -736,
680 -724,
681 -711,
682 -698,
683 -685,
684 -671,
685 -658,
686 -644,
687 -630,
688 -616,
689 -601,
690 -587,
691 -572,
692 -557,
693 -542,
694 -527,
695 -512,
696 -496,
697 -480,
698 -464,
699 -448,
700 -432,
701 -416,
702 -400,
703 -383,
704 -366,
705 -350,
706 -333,
707 -316,
708 -299,
709 -282,
710 -265,
711 -247,
712 -230,
713 -212,
714 -195,
715 -177,
716 -160,
717 -142,
718 -124,
719 -107,
720 -89,
721 -71,
722 -53,
723 -35,
724 -17
725 };
0
1 #ifdef HAVE_CONFIG_H
2 #include "config.h"
3 #endif
4
5 #include <stdio.h>
6 #include <stdlib.h>
7 #ifdef _WIN32
8 #include <process.h>
9 int
10 unlink (const char *filename)
11 {
12 return _unlink (filename);
13 }
14 #else
15 #include <unistd.h> /* for getpid(), unlink() */
16 #endif
17 #include "gd.h"
18
19 void CompareImages (char *msg, gdImagePtr im1, gdImagePtr im2);
20
21 static int freadWrapper (void *context, char *buf, int len);
22 static int fwriteWrapper (void *context, const char *buffer, int len);
23
24 int
25 main (int argc, char **argv)
26 {
27 #ifdef HAVE_LIBPNG
28 gdImagePtr im, ref, im2, im3;
29 FILE *in, *out;
30 void *iptr;
31 int sz;
32 char of[256];
33 int colRed, colBlu;
34 gdSource imgsrc;
35 gdSink imgsnk;
36 int foreground;
37 int i;
38 if (argc != 2)
39 {
40 fprintf (stderr, "Usage: gdtest filename.png\n");
41 exit (1);
42 }
43 in = fopen (argv[1], "rb");
44 if (!in)
45 {
46 fprintf (stderr, "Input file does not exist!\n");
47 exit (1);
48 }
49 im = gdImageCreateFromPng (in);
50
51 rewind (in);
52 ref = gdImageCreateFromPng (in);
53
54 fclose (in);
55
56 printf ("Reference File has %d Palette entries\n", ref->colorsTotal);
57
58 CompareImages ("Initial Versions", ref, im);
59
60
61 /* */
62 /* Send to PNG File then Ptr */
63 /* */
64 #ifdef VMS
65 sprintf (of, "%s-png", argv[1]);
66 #else
67 sprintf (of, "%s.png", argv[1]);
68 #endif
69 out = fopen (of, "wb");
70 gdImagePng (im, out);
71 fclose (out);
72
73 in = fopen (of, "rb");
74 if (!in)
75 {
76 fprintf (stderr, "PNG Output file does not exist!\n");
77 exit (1);
78 }
79 im2 = gdImageCreateFromPng (in);
80 fclose (in);
81
82 CompareImages ("GD->PNG File->GD", ref, im2);
83
84 unlink (of);
85 gdImageDestroy (im2);
86
87 /* 2.0.21: use the new From*Ptr functions */
88 iptr = gdImagePngPtr (im, &sz);
89 im2 = gdImageCreateFromPngPtr (sz, iptr);
90 gdFree (iptr);
91 CompareImages ("GD->PNG ptr->GD", ref, im2);
92
93 gdImageDestroy (im2);
94
95 /* */
96 /* Send to GD2 File then Ptr */
97 /* */
98 #ifdef VMS
99 sprintf (of, "%s-gd2", argv[1]);
100 #else
101 sprintf (of, "%s.gd2", argv[1]);
102 #endif
103 out = fopen (of, "wb");
104 gdImageGd2 (im, out, 128, 2);
105 fclose (out);
106
107 in = fopen (of, "rb");
108 if (!in)
109 {
110 fprintf (stderr, "GD2 Output file does not exist!\n");
111 exit (1);
112 }
113 im2 = gdImageCreateFromGd2 (in);
114 fclose (in);
115
116 CompareImages ("GD->GD2 File->GD", ref, im2);
117
118 unlink (of);
119 gdImageDestroy (im2);
120
121 iptr = gdImageGd2Ptr (im, 128, 2, &sz);
122 /*printf("Got ptr %d (size %d)\n",iptr, sz); */
123 im2 = gdImageCreateFromGd2Ptr (sz, iptr);
124 gdFree (iptr);
125 /*printf("Got img2 %d\n",im2); */
126
127 CompareImages ("GD->GD2 ptr->GD", ref, im2);
128
129 gdImageDestroy (im2);
130
131 /* */
132 /* Send to GD File then Ptr */
133 /* */
134 #ifdef VMS
135 sprintf (of, "%s-gd", argv[1]);
136 #else
137 sprintf (of, "%s.gd", argv[1]);
138 #endif
139 out = fopen (of, "wb");
140 gdImageGd (im, out);
141 fclose (out);
142
143 in = fopen (of, "rb");
144 if (!in)
145 {
146 fprintf (stderr, "GD Output file does not exist!\n");
147 exit (1);
148 }
149 im2 = gdImageCreateFromGd (in);
150 fclose (in);
151
152 CompareImages ("GD->GD File->GD", ref, im2);
153
154 unlink (of);
155 gdImageDestroy (im2);
156
157 iptr = gdImageGdPtr (im, &sz);
158 /*printf("Got ptr %d (size %d)\n",iptr, sz); */
159 im2 = gdImageCreateFromGdPtr (sz, iptr);
160 gdFree (iptr);
161 /*printf("Got img2 %d\n",im2); */
162
163 CompareImages ("GD->GD ptr->GD", ref, im2);
164
165 gdImageDestroy (im2);
166
167 /*
168 ** Test gdImageCreateFromPngSource'
169 * */
170
171 in = fopen (argv[1], "rb");
172
173 imgsrc.source = freadWrapper;
174 imgsrc.context = in;
175 im2 = gdImageCreateFromPngSource (&imgsrc);
176 fclose (in);
177
178 if (im2 == NULL)
179 {
180 printf
181 ("GD Source: ERROR Null returned by gdImageCreateFromPngSource\n");
182 }
183 else
184 {
185 CompareImages ("GD Source", ref, im2);
186 gdImageDestroy (im2);
187 };
188
189
190 /*
191 ** Test gdImagePngToSink'
192 * */
193 #ifdef VMS
194 sprintf (of, "%s-snk", argv[1]);
195 #else
196 sprintf (of, "%s.snk", argv[1]);
197 #endif
198 out = fopen (of, "wb");
199 imgsnk.sink = fwriteWrapper;
200 imgsnk.context = out;
201 gdImagePngToSink (im, &imgsnk);
202 fclose (out);
203 in = fopen (of, "rb");
204 if (!in)
205 {
206 fprintf (stderr,
207 "GD Sink: ERROR - GD Sink Output file does not exist!\n");
208 }
209 else
210 {
211 im2 = gdImageCreateFromPng (in);
212 fclose (in);
213
214 CompareImages ("GD Sink", ref, im2);
215 gdImageDestroy (im2);
216 };
217
218 unlink (of);
219
220 /* */
221 /* Test Extraction */
222 /* */
223 in = fopen ("test/gdtest_200_300_150_100.png", "rb");
224 if (!in)
225 {
226 fprintf (stderr, "gdtest_200_300_150_100.png does not exist!\n");
227 exit (1);
228 }
229 im2 = gdImageCreateFromPng (in);
230 fclose (in);
231
232
233 in = fopen ("test/gdtest.gd2", "rb");
234 if (!in)
235 {
236 fprintf (stderr, "gdtest.gd2 does not exist!\n");
237 exit (1);
238 }
239 im3 = gdImageCreateFromGd2Part (in, 200, 300, 150, 100);
240 fclose (in);
241
242 CompareImages ("GD2Part (gdtest_200_300_150_100.png, gdtest.gd2(part))",
243 im2, im3);
244
245 gdImageDestroy (im2);
246 gdImageDestroy (im3);
247
248 /* */
249 /* Copy Blend */
250 /* */
251 in = fopen ("test/gdtest.png", "rb");
252 if (!in)
253 {
254 fprintf (stderr, "gdtest.png does not exist!\n");
255 exit (1);
256 }
257 im2 = gdImageCreateFromPng (in);
258 fclose (in);
259
260 im3 = gdImageCreate (100, 60);
261 colRed = gdImageColorAllocate (im3, 255, 0, 0);
262 colBlu = gdImageColorAllocate (im3, 0, 0, 255);
263 gdImageFilledRectangle (im3, 0, 0, 49, 30, colRed);
264 gdImageFilledRectangle (im3, 50, 30, 99, 59, colBlu);
265
266 gdImageCopyMerge (im2, im3, 150, 200, 10, 10, 90, 50, 50);
267 gdImageCopyMerge (im2, im3, 180, 70, 10, 10, 90, 50, 50);
268
269 gdImageCopyMergeGray (im2, im3, 250, 160, 10, 10, 90, 50, 50);
270 gdImageCopyMergeGray (im2, im3, 80, 70, 10, 10, 90, 50, 50);
271
272 gdImageDestroy (im3);
273
274 in = fopen ("test/gdtest_merge.png", "rb");
275 if (!in)
276 {
277 fprintf (stderr, "gdtest_merge.png does not exist!\n");
278 exit (1);
279 }
280 im3 = gdImageCreateFromPng (in);
281 fclose (in);
282
283 printf ("[Merged Image has %d colours]\n", im2->colorsTotal);
284 CompareImages ("Merged (gdtest.png, gdtest_merge.png)", im2, im3);
285
286 gdImageDestroy (im2);
287 gdImageDestroy (im3);
288
289 #ifdef HAVE_LIBJPEG
290 out = fopen ("test/gdtest.jpg", "wb");
291 if (!out)
292 {
293 fprintf (stderr, "Can't create file test/gdtest.jpg.\n");
294 exit (1);
295 }
296 gdImageJpeg (im, out, -1);
297 fclose (out);
298 in = fopen ("test/gdtest.jpg", "rb");
299 if (!in)
300 {
301 fprintf (stderr, "Can't open file test/gdtest.jpg.\n");
302 exit (1);
303 }
304 im2 = gdImageCreateFromJpeg (in);
305 fclose (in);
306 if (!im2)
307 {
308 fprintf (stderr, "gdImageCreateFromJpeg failed.\n");
309 exit (1);
310 }
311 gdImageDestroy (im2);
312 printf ("Created test/gdtest.jpg successfully. Compare this image\n"
313 "to the input image manually. Some difference must be\n"
314 "expected as JPEG is a lossy file format.\n");
315 #endif /* HAVE_LIBJPEG */
316 /* Assume the color closest to black is the foreground
317 color for the B&W wbmp image. */
318 fprintf (stderr,
319 "NOTE: the WBMP output image will NOT match the original unless the original\n"
320 "is also black and white. This is OK!\n");
321 foreground = gdImageColorClosest (im, 0, 0, 0);
322 fprintf (stderr, "Foreground index is %d\n", foreground);
323 if (foreground == -1)
324 {
325 fprintf (stderr, "Source image has no colors, skipping wbmp test.\n");
326 }
327 else
328 {
329 out = fopen ("test/gdtest.wbmp", "wb");
330 if (!out)
331 {
332 fprintf (stderr, "Can't create file test/gdtest.wbmp.\n");
333 exit (1);
334 }
335 gdImageWBMP (im, foreground, out);
336 fclose (out);
337 in = fopen ("test/gdtest.wbmp", "rb");
338 if (!in)
339 {
340 fprintf (stderr, "Can't open file test/gdtest.wbmp.\n");
341 exit (1);
342 }
343 im2 = gdImageCreateFromWBMP (in);
344 fprintf (stderr, "WBMP has %d colors\n", gdImageColorsTotal (im2));
345 fprintf (stderr, "WBMP colors are:\n");
346 for (i = 0; (i < gdImageColorsTotal (im2)); i++)
347 {
348 fprintf (stderr, "%02X%02X%02X\n",
349 gdImageRed (im2, i),
350 gdImageGreen (im2, i), gdImageBlue (im2, i));
351 }
352 fclose (in);
353 if (!im2)
354 {
355 fprintf (stderr, "gdImageCreateFromWBMP failed.\n");
356 exit (1);
357 }
358 CompareImages ("WBMP test (gdtest.png, gdtest.wbmp)", ref, im2);
359 out = fopen ("test/gdtest_wbmp_to_png.png", "wb");
360 if (!out)
361 {
362 fprintf (stderr,
363 "Can't create file test/gdtest_wbmp_to_png.png.\n");
364 exit (1);
365 }
366 gdImagePng (im2, out);
367 fclose (out);
368 gdImageDestroy (im2);
369 }
370 gdImageDestroy (im);
371 gdImageDestroy (ref);
372 #else
373 fprintf (stderr, "No PNG library support.\n");
374 #endif /* HAVE_LIBPNG */
375
376 return 0;
377 }
378
379 void
380 CompareImages (char *msg, gdImagePtr im1, gdImagePtr im2)
381 {
382 int cmpRes;
383
384 cmpRes = gdImageCompare (im1, im2);
385
386 if (cmpRes & GD_CMP_IMAGE)
387 {
388 printf ("%%%s: ERROR images differ: BAD\n", msg);
389 }
390 else if (cmpRes != 0)
391 {
392 printf ("%%%s: WARNING images differ: WARNING - Probably OK\n", msg);
393 }
394 else
395 {
396 printf ("%%%s: OK\n", msg);
397 return;
398 }
399
400 if (cmpRes & (GD_CMP_SIZE_X + GD_CMP_SIZE_Y))
401 {
402 printf ("-%s: INFO image sizes differ\n", msg);
403 }
404
405 if (cmpRes & GD_CMP_NUM_COLORS)
406 {
407 printf ("-%s: INFO number of pallette entries differ %d Vs. %d\n", msg,
408 im1->colorsTotal, im2->colorsTotal);
409 }
410
411 if (cmpRes & GD_CMP_COLOR)
412 {
413 printf ("-%s: INFO actual colours of pixels differ\n", msg);
414 }
415 }
416
417
418 static int
419 freadWrapper (void *context, char *buf, int len)
420 {
421 int got = fread (buf, 1, len, (FILE *) context);
422 return got;
423 }
424
425 static int
426 fwriteWrapper (void *context, const char *buffer, int len)
427 {
428 return fwrite (buffer, 1, len, (FILE *) context);
429 }
0
1 #ifdef HAVE_CONFIG_H
2 #include "config.h"
3 #endif
4
5 #include "gd.h"
6 #include <string.h>
7 #include <stdlib.h>
8
9 #define PI 3.141592
10 #define DEG2RAD(x) ((x)*PI/180.)
11
12 #define MAX(x,y) ((x) > (y) ? (x) : (y))
13 #define MIN(x,y) ((x) < (y) ? (x) : (y))
14
15 #define MAX4(x,y,z,w) \
16 ((MAX((x),(y))) > (MAX((z),(w))) ? (MAX((x),(y))) : (MAX((z),(w))))
17 #define MIN4(x,y,z,w) \
18 ((MIN((x),(y))) < (MIN((z),(w))) ? (MIN((x),(y))) : (MIN((z),(w))))
19
20 #define MAXX(x) MAX4(x[0],x[2],x[4],x[6])
21 #define MINX(x) MIN4(x[0],x[2],x[4],x[6])
22 #define MAXY(x) MAX4(x[1],x[3],x[5],x[7])
23 #define MINY(x) MIN4(x[1],x[3],x[5],x[7])
24
25 int
26 main (int argc, char *argv[])
27 {
28 #ifndef HAVE_LIBFREETYPE
29 fprintf (stderr, "gd was not compiled with HAVE_LIBFREETYPE defined.\n");
30 fprintf (stderr, "Install the FreeType library, including the\n");
31 fprintf (stderr, "header files. Then edit the gd Makefile, type\n");
32 fprintf (stderr, "make clean, and type make again.\n");
33 return 1;
34 #else
35 gdImagePtr im;
36 int blue;
37 int blueAlpha;
38 int white;
39 int brect[8];
40 int x, y, sx, sy;
41 char *err;
42 FILE *out;
43 #ifdef JISX0208
44 char *s = "Hello. ‚±‚ñ‚É‚¿‚Í Qyjpqg,"; /* String to draw. */
45 #else
46 char *s = "Hello. הצ� Qyjpqg,"; /* String to draw. */
47 #endif
48
49 double sz = 40.;
50
51 #if 0
52 double angle = 0.;
53 #else
54 double angle = DEG2RAD (90);
55 #endif
56 char *f;
57 if (argc == 2)
58 {
59 f = argv[1];
60 }
61 else
62 {
63 /* 2.02: usage message. Defaulting to Times wasn't working well for the
64 many people with no /usr/share/fonts/truetype. */
65 fprintf (stderr, "Usage: gdtestft fontfilename\n");
66 fprintf (stderr,
67 "If fontfilename is not a full or relative path, GDFONTPATH is searched for\n"
68 "it. If GDFONTPATH is not set, /usr/share/fonts/truetype is searched.\n");
69 exit (1);
70 }
71 /* obtain brect so that we can size the image */
72 err =
73 gdImageStringFT ((gdImagePtr) NULL, &brect[0], 0, f, sz, angle, 0, 0, s);
74 if (err)
75 {
76 fprintf (stderr, err);
77 return 1;
78 }
79
80 /* create an image just big enough for the string (x3) */
81 sx = MAXX (brect) - MINX (brect) + 6;
82 sy = MAXY (brect) - MINY (brect) + 6;
83 #if 0
84 /* Would be palette color 8-bit (which of course is still allowed,
85 but not impressive when used with a JPEG background and antialiasing
86 and alpha channel and so on!) */
87 im = gdImageCreate (sx * 3, sy);
88 #else
89 /* gd 2.0: true color images can use freetype too,
90 and they can do antialiasing against arbitrary
91 complex backgrounds. */
92 im = gdImageCreateTrueColor (sx * 3, sy);
93 #endif
94 /* Background color. gd 2.0: fill the image with it; truecolor
95 images have a black background otherwise. */
96 white = gdImageColorResolve (im, 255, 255, 255);
97 /* Load a pretty background and resample it to cover the entire image */
98 {
99 FILE *in = fopen ("eleanor.jpg", "rb");
100 gdImagePtr imb;
101 if (in)
102 {
103 #ifdef HAVE_LIBJPEG
104 imb = gdImageCreateFromJpeg (in);
105 #else
106 fprintf (stderr, "No JPEG library support.\n");
107 #endif
108 if (!imb)
109 {
110 fprintf (stderr, "gdImageCreateFromJpeg failed\n");
111 exit (1);
112 }
113 if (!im->trueColor)
114 {
115 /* If destination is not truecolor, convert the JPEG to a
116 reasonably high-quality palette version. This is not as good
117 as creating a truecolor output file, of course. Leave many
118 colors for text smoothing. */
119 #if 1
120 gdImageTrueColorToPalette (imb, 0, 128);
121 #endif
122 }
123 /* Resample background image to cover new image exactly */
124 gdImageCopyResampled (im, imb, 0, 0, 0, 0, sx * 3, sy,
125 gdImageSX (imb), gdImageSY (imb));
126 }
127 else
128 {
129 /* Can't get background, so paint a simple one */
130 /* Truecolor images start out black, so paint it white */
131 gdImageFilledRectangle (im, 0, 0, sx * 3, sy, white);
132 }
133 }
134 /* TBB 2.0.2: only black was working, and I didn't know it because
135 the test program used black. Funny, huh? Let's do a more interesting
136 color this time. */
137 blue = gdImageColorResolve (im, 128, 192, 255);
138 /* Almost-transparent blue (alpha blending), with antialiasing */
139 blueAlpha = gdImageColorResolveAlpha (im, 128, 192, 255, gdAlphaMax / 2);
140 /* render the string, offset origin to center string */
141 x = 0 - MINX (brect) + 3;
142 y = 0 - MINY (brect) + 3;
143
144 /* With antialiasing (positive color value) */
145 err = gdImageStringFT (im, NULL, blue, f, sz, angle, x, y, s);
146 if (err)
147 {
148 fprintf (stderr, err);
149 return 1;
150 }
151 /* Without antialiasing (negative color value) */
152 err = gdImageStringFT (im, NULL, -blue, f, sz, angle, sx + x, y, s);
153 if (err)
154 {
155 fprintf (stderr, err);
156 return 1;
157 }
158 /* With antialiasing, and 50% alpha blending (truecolor only) */
159 err = gdImageStringFT (im, NULL, blueAlpha, f, sz, angle, sx * 2 + x, y, s);
160 if (err)
161 {
162 fprintf (stderr, err);
163 return 1;
164 }
165 /* TBB: Write img to test/fttest.jpg or test/fttest.png */
166 if (im->trueColor)
167 {
168 out = fopen ("test/fttest.jpg", "wb");
169 if (!out)
170 {
171 fprintf (stderr, "Can't create test/fttest.jpg\n");
172 exit (1);
173 }
174 /* Fairly high JPEG quality setting */
175 #ifdef HAVE_LIBJPEG
176 gdImageJpeg (im, out, 90);
177 #else
178 fprintf (stderr, "No JPEG library support.\n");
179 #endif
180 fclose (out);
181 fprintf (stderr, "Test image written to test/fttest.jpg\n");
182 }
183 else
184 {
185 out = fopen ("test/fttest.png", "wb");
186 if (!out)
187 {
188 fprintf (stderr, "Can't create test/fttest.png\n");
189 exit (1);
190 }
191 /* 2.0.10: correct ifdef, thanks to Gabriele Verzeletti */
192 #ifdef HAVE_LIBPNG
193 gdImagePng (im, out);
194 #else
195 fprintf (stderr, "No PNG library support.\n");
196 #endif
197 fclose (out);
198 fprintf (stderr, "Test image written to test/fttest.png\n");
199 }
200 /* Destroy it */
201 gdImageDestroy (im);
202
203 return 0;
204 #endif /* HAVE_LIBFREETYPE */
205 }
0
1 #ifdef HAVE_CONFIG_H
2 #include "config.h"
3 #endif
4
5 #include <stdio.h>
6 #include <stdlib.h>
7 #include "gd.h"
8
9 /* A short program which converts a .png file into a .gd file, for
10 your convenience in creating images on the fly from a
11 basis image that must be loaded quickly. The .gd format
12 is not intended to be a general-purpose format. */
13
14 int
15 main (int argc, char **argv)
16 {
17 gdImagePtr im;
18 FILE *in, *out;
19 if (argc != 3)
20 {
21 fprintf (stderr, "Usage: gdtopng filename.gd filename.png\n");
22 exit (1);
23 }
24 in = fopen (argv[1], "rb");
25 if (!in)
26 {
27 fprintf (stderr, "Input file does not exist!\n");
28 exit (1);
29 }
30 im = gdImageCreateFromGd (in);
31 fclose (in);
32 if (!im)
33 {
34 fprintf (stderr, "Input is not in PNG format!\n");
35 exit (1);
36 }
37 out = fopen (argv[2], "wb");
38 if (!out)
39 {
40 fprintf (stderr, "Output file cannot be written to!\n");
41 gdImageDestroy (im);
42 exit (1);
43 }
44 #ifdef HAVE_LIBPNG
45 gdImagePng (im, out);
46 #else
47 fprintf (stderr, "No PNG library support.\n");
48 #endif
49 fclose (out);
50 gdImageDestroy (im);
51
52 return 0;
53 }
0
1 /*
2 add ability to load xpm files to gd, requires the xpm
3 library.
4 Caolan.McNamara@ul.ie
5 http://www.csn.ul.ie/~caolan
6 */
7
8 #ifdef HAVE_CONFIG_H
9 #include "config.h"
10 #endif
11
12 #include <stdio.h>
13 #include <stdlib.h>
14 #include <string.h>
15 #include "gd.h"
16 #include "gdhelpers.h"
17
18 #ifndef HAVE_LIBXPM
19 BGD_DECLARE(gdImagePtr) gdImageCreateFromXpm (char *filename)
20 {
21 fprintf (stderr, "libgd was not built with xpm support\n");
22 return (NULL);
23 }
24
25 #else
26
27 #include <X11/xpm.h>
28
29 BGD_DECLARE(gdImagePtr) gdImageCreateFromXpm (char *filename)
30 {
31 XpmInfo info;
32 XpmImage image;
33 int i, j, k, number;
34 char buf[5];
35 gdImagePtr im = 0;
36 int *pointer;
37 int red = 0, green = 0, blue = 0;
38 int *colors;
39 int ret;
40
41 ret = XpmReadFileToXpmImage (filename, &image, &info);
42 if (ret != XpmSuccess)
43 return 0;
44
45 if (!(im = gdImageCreate (image.width, image.height)))
46 return 0;
47
48 number = image.ncolors;
49 if (overflow2(sizeof (int), number)) {
50 return 0;
51 }
52 colors = (int *) gdMalloc (sizeof (int) * number);
53 if (colors == NULL)
54 return (0);
55 for (i = 0; i < number; i++)
56 {
57 switch (strlen (image.colorTable[i].c_color))
58 {
59 case 4:
60 buf[1] = '\0';
61 buf[0] = image.colorTable[i].c_color[1];
62 red = strtol (buf, NULL, 16);
63
64 buf[0] = image.colorTable[i].c_color[3];
65 green = strtol (buf, NULL, 16);
66
67 buf[0] = image.colorTable[i].c_color[5];
68 blue = strtol (buf, NULL, 16);
69 break;
70 case 7:
71 buf[2] = '\0';
72 buf[0] = image.colorTable[i].c_color[1];
73 buf[1] = image.colorTable[i].c_color[2];
74 red = strtol (buf, NULL, 16);
75
76 buf[0] = image.colorTable[i].c_color[3];
77 buf[1] = image.colorTable[i].c_color[4];
78 green = strtol (buf, NULL, 16);
79
80 buf[0] = image.colorTable[i].c_color[5];
81 buf[1] = image.colorTable[i].c_color[6];
82 blue = strtol (buf, NULL, 16);
83 break;
84 case 10:
85 buf[3] = '\0';
86 buf[0] = image.colorTable[i].c_color[1];
87 buf[1] = image.colorTable[i].c_color[2];
88 buf[2] = image.colorTable[i].c_color[3];
89 red = strtol (buf, NULL, 16);
90 red /= 64;
91
92 buf[0] = image.colorTable[i].c_color[4];
93 buf[1] = image.colorTable[i].c_color[5];
94 buf[2] = image.colorTable[i].c_color[6];
95 green = strtol (buf, NULL, 16);
96 green /= 64;
97
98 buf[0] = image.colorTable[i].c_color[7];
99 buf[1] = image.colorTable[i].c_color[8];
100 buf[2] = image.colorTable[i].c_color[9];
101 blue = strtol (buf, NULL, 16);
102 blue /= 64;
103 break;
104 case 13:
105 buf[4] = '\0';
106 buf[0] = image.colorTable[i].c_color[1];
107 buf[1] = image.colorTable[i].c_color[2];
108 buf[2] = image.colorTable[i].c_color[3];
109 buf[3] = image.colorTable[i].c_color[4];
110 red = strtol (buf, NULL, 16);
111 red /= 256;
112
113 buf[0] = image.colorTable[i].c_color[5];
114 buf[1] = image.colorTable[i].c_color[6];
115 buf[2] = image.colorTable[i].c_color[7];
116 buf[3] = image.colorTable[i].c_color[8];
117 green = strtol (buf, NULL, 16);
118 green /= 256;
119
120 buf[0] = image.colorTable[i].c_color[9];
121 buf[1] = image.colorTable[i].c_color[10];
122 buf[2] = image.colorTable[i].c_color[11];
123 buf[3] = image.colorTable[i].c_color[12];
124 blue = strtol (buf, NULL, 16);
125 blue /= 256;
126 break;
127 }
128
129
130 colors[i] = gdImageColorResolve (im, red, green, blue);
131 if (colors[i] == -1)
132 fprintf (stderr, "ARRRGH\n");
133 }
134
135 pointer = (int *) image.data;
136 for (i = 0; i < image.height; i++)
137 {
138 for (j = 0; j < image.width; j++)
139 {
140 k = *pointer++;
141 gdImageSetPixel (im, j, i, colors[k]);
142 }
143 }
144 gdFree (colors);
145 return (im);
146 }
147 #endif /* HAVE_LIBXPM */
0 #ifdef HAVE_CONFIG_H
1 #include "config.h"
2 #endif
3
4 #include "gd.h"
5
6 int main (int argc, char *argv[])
7 {
8 gdImagePtr im;
9 gdImagePtr last, cim;
10 int black;
11 int blue;
12 FILE *out;
13 int i;
14 im = gdImageCreate(100, 100);
15 black = gdImageColorAllocate(im, 0, 0, 0);
16 blue = gdImageColorAllocate(im, 0, 0, 255);
17 out = fopen("gifanim.gif", "wb");
18 gdImageGifAnimBegin(im, out, 1, 10);
19 last = 0;
20 for (i = 0; (i <= 100); i += 2) {
21 cim = gdImageCreate(100, 100);
22 gdImagePaletteCopy(cim, im);
23 gdImageArc(cim, 50, 50, i, i, 0, 360, blue);
24 gdImageGifAnimAdd(cim, out, 0, 0, 0, 10, gdDisposalNone, last);
25 if (last) {
26 gdImageDestroy(last);
27 }
28 last = cim;
29 }
30 gdImageDestroy(last);
31 gdImageGifAnimEnd(out);
32 fclose(out);
33 gdImageDestroy(im);
34 return 0;
35 }
36
0 #include <stdio.h>
1 #include <stdlib.h>
2
3 #include "gd.h"
4
5 /* A short program which converts a .gif file into a .gd file, for
6 your convenience in creating images on the fly from a
7 basis image that must be loaded quickly. The .gd format
8 is not intended to be a general-purpose format. */
9
10 int main(int argc, char **argv)
11 {
12 gdImagePtr im;
13 FILE *in, *out;
14 int cs, fmt;
15
16 if (argc != 5) {
17 fprintf(stderr, "Usage: giftogd2 filename.gif filename.gd2 cs fmt\n");
18 fprintf(stderr, " where cs is the chunk size\n");
19 fprintf(stderr, " fmt is 1 for raw, 2 for compressed\n");
20 exit(1);
21 }
22 in = fopen(argv[1], "rb");
23 if (!in) {
24 fprintf(stderr, "Input file does not exist!\n");
25 exit(1);
26 }
27 im = gdImageCreateFromGif(in);
28 fclose(in);
29 if (!im) {
30 fprintf(stderr, "Input is not in GIF format!\n");
31 exit(1);
32 }
33 out = fopen(argv[2], "wb");
34 if (!out) {
35 fprintf(stderr, "Output file cannot be written to!\n");
36 gdImageDestroy(im);
37 exit(1);
38 }
39 cs = atoi(argv[3]);
40 fmt = atoi(argv[4]);
41 gdImageGd2(im, out, cs, fmt);
42 fclose(out);
43 gdImageDestroy(im);
44
45 return 0;
46 }
47
0 <!-- REMEMBER TO EDIT index.html.source -->
1 <head>
2 <TITLE>gd 2.0.34</TITLE>
3 </head>
4 <body bgcolor="#FFFFFF">
5 <!-- BANNER HERE -->
6 <H2>gd 2.0.33</H2>
7 <H3>A graphics library for fast image creation</H3>
8 <H3>Follow this link to the
9 <A HREF="http://libgd.org">latest version
10 of this document</A>.</H3>
11 <blockquote>
12 <strong>UPGRADING UNIX USERS: READ THIS FIRST!</strong>
13 Modern versions of gd install by default to /usr/local/lib and
14 /usr/local/include. If you already have an older version of gd
15 in /usr/lib and /usr/include, you may wish to use:
16 <pre>
17 ./configure --prefix=/usr</pre>
18 To ensure that your
19 new installation overwrites the old.
20 <p>
21 <strong>GIF support has been restored in gd 2.0.28 and above.</strong>
22 The well-known patents on LZW compression held by Unisys
23 have expired in all countries. British Telecom and IBM may hold related
24 patents but have never chosen to require royalties for GIF applications,
25 to the best of my knowledge. I am not a lawyer and cannot give
26 legal advice regarding this issue. PNG remains a superior format especially
27 if lossless truecolor images are needed.
28 <p>
29 When building from soruce, gd 2.0.33 <strong>requires</strong> that the
30 following libraries also be installed, in order to produce the related
31 image formats. The win32 binary release (bgd) already contains the
32 appropriate libraries.
33 You may skip libraries associated with formats you do not use:
34 <p>
35 libpng (see the <a href="http://www.libpng.org/pub/png/">libpng home page</a>), if you want PNG
36 <p>
37 zlib (see the <a href="http://www.info-zip.org/pub/infozip/zlib/">info-zip home page</a>), if you want PNG
38 <p>
39 jpeg-6b or later, if desired (see the <a href="http://www.ijg.org/">Independent JPEG Group home page</a>), if you want JPEG
40 <p>
41 If you want to use the TrueType font support, you must also
42 install the <strong>FreeType 2.x library</strong>, including
43 the header files. See the <a href="http://www.freetype.org/">Freetype
44 Home Page</a>, or <a href="http://freetype.sourceforge.net/">SourceForge</a>.
45 No, I cannot explain why that site is down on a particular day, and no, I
46 can't send you a copy.
47 <p>
48 If you want to use the Xpm color bitmap loading support, you must also
49 have the X Window System and the Xpm library installed (Xpm is often
50 included in modern X distributions). Most of the time you won't
51 need Xpm.
52 <p>
53 Please read the documentation and install the required libraries.
54 Do not send email asking why <code>png.h</code> is not found.
55 Do not send email asking why <code>libgd.so</code> is not found, either.
56 See the <a href="#required">requirements section</a> for more
57 information. Thank you!
58 </blockquote>
59 <H3>Table of Contents</H3>
60 <UL>
61 <LI><A HREF="#notice">Credits and license terms</A>
62 <LI><A HREF="#whatsnew2.0.34">What's new in version "XYZ" of GD?</A>
63 <LI><A HREF="#whatis">What is gd?</A>
64 <LI><A HREF="#gdother">What if I want to use another programming language?</A>
65 <LI><A HREF="#required">What else do I need to use gd?</A>
66 <LI><A HREF="#getgd">How do I get gd?</A>
67 <LI><A HREF="#buildgd">How do I build gd?</A>
68 <LI><A HREF="#basics">gd basics: using gd in your program</A>
69 <LI><A HREF="#webpng">webpng: a useful example</A>
70 <LI><A HREF="#reference">Function and type reference by category</A>
71 <LI><A HREF="#gdformat">About the additional .gd image file format</A>
72 <LI><A HREF="#informing"><strong>Please</strong>
73 tell us you're using gd!</A>
74 <LI><A HREF="#support">How do I get support?</A>
75 <LI><A HREF="#issues">How do I report issues, bugs or features request?</A>
76 <LI><A HREF="#index">Alphabetical quick index</A>
77 </UL>
78 <P><A HREF="http://www.libgd.org/">
79 Up to the <EM>LibGD Homepage</EM></A>
80 <A NAME="notice"><H3>Credits and license terms</A></H3>
81 <P>
82 In order to resolve any possible confusion regarding the authorship
83 of gd, the following copyright statement covers all of the authors
84 who have required such a statement. <strong>If you are aware of any oversights
85 in this copyright notice, please contact <A HREF="http://libgd.org/Contact">Pierre-A. Joye</A> who will be
86 pleased to correct them.</strong>
87 <pre>
88 COPYRIGHT STATEMENT FOLLOWS THIS LINE
89 </pre>
90 <blockquote>
91
92 Portions copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 by Cold Spring
93 Harbor Laboratory. Funded under Grant P41-RR02188 by the National
94 Institutes of Health.
95 <P>
96 Portions copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 by Boutell.Com, Inc.
97 <p>
98 Portions relating to GD2 format copyright 1999, 2000, 2001, 2002, 2003, 2004 Philip Warner.
99 <p>
100 Portions relating to PNG copyright 1999, 2000, 2001, 2002, 2003, 2004 Greg Roelofs.
101 <p>
102 Portions relating to gdttf.c copyright 1999, 2000, 2001, 2002, 2003, 2004 John Ellson (ellson@graphviz.org).
103 <p>
104 Portions relating to gdft.c copyright 2001, 2002, 2003, 2004 John Ellson (ellson@graphviz.org).
105 <p>
106 Portions copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Pierre-Alain Joye (pierre@libgd.org).
107
108 <p>
109 Portions relating to JPEG and to color quantization copyright 2000, 2001, 2002, 2003, 2004, Doug Becker and copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Thomas G. Lane. This software is based
110 in part on the work of the Independent JPEG Group. See the file
111 README-JPEG.TXT for more information.
112 <p>
113 Portions relating to GIF compression copyright 1989 by Jef
114 Poskanzer and David Rowley, with modifications for thread safety
115 by Thomas Boutell.
116 <p>
117 Portions relating to GIF decompression copyright 1990, 1991, 1993
118 by David Koblas, with modifications for thread safety by
119 Thomas Boutell.
120 <p>
121 Portions relating to WBMP copyright 2000, 2001, 2002, 2003, 2004 Maurice Szmurlo and Johan Van
122 den Brande.
123 <p>
124 Portions relating to GIF animations copyright 2004 Jaakko Hyv&auml;tti (jaakko.hyvatti@iki.fi)
125 <p>
126 <strong>Permission has been granted to copy, distribute and modify gd in any
127 context without fee, including a commercial application, provided that this notice
128 is present in user-accessible supporting documentation.</strong>
129 <p>
130 This does not affect your ownership of the derived work itself, and the intent
131 is to assure proper credit for the authors of gd, not to interfere
132 with your productive use of gd. If you have questions, ask.
133 "Derived works" includes all programs that utilize the library.
134 Credit must be given in user-accessible documentation.
135 <p>
136 <strong>This software is provided "AS IS."</strong>
137 The copyright holders disclaim all warranties, either express or implied,
138 including but not limited to implied warranties of merchantability and
139 fitness for a particular purpose, with respect to this code and accompanying
140 documentation.
141 <p>
142 Although their code does not appear in the current release, the authors
143 also wish to thank Hutchison Avenue Software Corporation for their
144 prior contributions.
145 </blockquote>
146 <pre>
147 END OF COPYRIGHT STATEMENT
148 </pre>
149 <A NAME="whatis"><H3>What is gd?</H3></A>
150 <P>
151 gd is a graphics library. It allows your code to quickly
152 draw images complete with lines, arcs, text, multiple
153 colors, cut and paste from other images, and flood fills, and
154 write out the result as a PNG or JPEG file. This is particularly
155 useful in World Wide Web applications, where PNG and JPEG are two
156 of the formats accepted for inline images by most browsers.
157 <P>
158 gd is not a paint program.
159 If you are looking for a paint program, you are looking in
160 the wrong place. If you are not a programmer, you are looking
161 in the wrong place, unless you are installing a required
162 library in order to run an application.
163 <P>
164 gd does not provide for every possible desirable graphics
165 operation. It is not necessary or desirable for gd to become
166 a kitchen-sink graphics package, but version 2.0 does include
167 most frequently requested features, including both truecolor and
168 palette images, resampling (smooth resizing of truecolor images)
169 and so forth.
170 <P>
171 <A NAME="gdother"><H3>What if I want to use another programming
172 language?</h3></A>
173 Not all of these tools are necessarily up to date and fully compatible
174 with 2.0.33.
175 <h4>PHP</h4>
176 A variant of gd 2.x is included in PHP 4.3.0. It is also possible
177 to patch PHP 4.2.3 for use with gd 2.0.33; see the
178 <a href="http://www.libgd.org/">gd home page</a> for a link to
179 that information. It would be a Good Idea to merge all of the things
180 that are better in mainstream gd and all of the things that are
181 better in PHP gd at some point in the near future.
182 <h4>Perl</h4>
183 gd can also be used from Perl, courtesy of
184 Lincoln Stein's
185 <a href="http://stein.cshl.org/WWW/software/GD/">
186 GD.pm</a> library, which uses gd as the basis for a set of
187 Perl 5.x classes. Highly recommended.
188 <h4>OCaml</h4>
189 gd can be used from OCaml, thanks to
190 <a href="http://gd4o.sourceforge.net/">Matt Gushee's GD4O project</a>.
191 <h4>Tcl</h4>
192 gd can be used from Tcl with John Ellson's
193 <a href=http://www.graphviz.org/pub/>Gdtclft</a>
194 dynamically loaded extension package.
195 <h4>Pascal</h4>
196 Pascal enthusiasts should look into the
197 <a href="http://www.freepascal.org/">freepascal</a> project, a
198 free Pascal compiler that includes gd support.
199 <h4>REXX</h4>
200 A
201 <a href="http://www.lightlink.com/hessling/RexxGd/index.html">gd interface
202 for the REXX language</a> is available.
203 <h4>Any Language</h4>
204 The "fly" interpreter performs gd operations specified in a text file.
205 You can output the desired commands to a simple
206 text file from whatever scripting language you prefer to use, then
207 invoke the interpreter.
208 <p>
209 <ul>
210 <li><a href="http://martin.gleeson.com/fly/">fly</a>, by Martin Gleeson
211 </ul>
212 <p>
213 <A NAME="whatsnew2.0.34"><h3>What's new in version 2.0.34?</h3></a>
214 <p>
215 From 2.0.34 and later, please check the ISSUES and ChangeLog as well as
216 the releases announcements.
217 <p>
218 <A NAME="whatsnew2.0.33"><h3>What's new in version 2.0.33?</h3></a>
219 <p>
220 Version 2.0.33 restores compatibility with older releases
221 of Freetype 2.x in addition to the latest release. Thanks to
222 John Ellson and the graphviz project.
223 <p>
224 <A NAME="whatsnew2.0.32"><h3>What's new in version 2.0.32?</h3></a>
225 <p>
226 Version 2.0.32 restores correct detection of Unicode character sets
227 for freetype fonts, which repairs a bug that prevented umlauts from
228 displaying properly. Thanks to John Ellson and the graphviz project.
229 Also, version 2.0.32 builds all test programs
230 smoothly in the absence of libpng.
231 <p>
232 <A NAME="whatsnew2.0.31"><h3>What's new in version 2.0.31?</h3></a>
233 <p>
234 A minor type naming conflict prevented bgd.dll from compiling, and it
235 was left out of the distribution as a result. This has been corrected.
236 <p>
237 <A NAME="whatsnew2.0.30"><h3>What's new in version 2.0.30?</h3></a>
238 <p>
239 2.0.29 did not compile correctly when freetype was not available.
240 This has been corrected. Thanks to Alessandro Ranellucci.
241 <p>
242 <A NAME="whatsnew2.0.29"><h3>What's new in version 2.0.29?</h3></a>
243 <p>
244 <ul>
245 <li>A 32-bit multiplication overflow vulnerability reported on
246 the Bugtraq mailing list has been corrected, along with a number
247 of similar issues. These bugs come into play only when attempting
248 to deal with images with <i>extremely large</i> dimensions.
249 The relevant functions now fail gracefully when such extreme
250 parameters are specified. The code in question is also
251 correct for systems with larger bit depths. Thanks to Phil Knirsch,
252 Alan Cox and infamous41md.
253 Since exploits are theoretically possible, upgrading is recommended.
254 <li>Support for the fontconfig library, when available.
255 When fontconfig is available and gdFTUseFontConfig(1) has been invoked
256 or the gdFTEX_FONTCONFIG flag has been set for a particular call, fontconfig
257 patterns can be used to fetch the best available font.
258 For instance, "arial:bold:italic" does the right thing (or as close as
259 the available fonts permit). Also, standard
260 PostScript font names can be mapped to an appropriate font by
261 gdImageStringFTEx and relatives.
262 When fontconfig is available <tt>gdlib-config --features</tt> will list
263 the GD_FONTCONFIG feature. For more information about fontconfig, see the
264 <a href="http://freedesktop.org/software/fontconfig">fontconfig pages</a>.
265 <p>
266 The actual resolved font filename can be returned in the gdFTStringExtra
267 structure as the fontpath element if the gdFTEX_RETURNFONTPATHNAME flag
268 is set. Also, a
269 vector of character position advances can be retrieved if gdFTEX_XSHOW is set
270 in the flags element. .afm files (font metrics) are now used to adjust size
271 calculations
272 when available. When fontconfig is not available, gd falls back to its
273 usual behavior and requires a specific font file name. One can
274 still fetch fonts by filename when gdFTUseFontConfig(1) is in effect, by
275 setting the gdFTEX_FONTPATHNAME flag
276 in the flag element of the gdFTStringExtra structure. Thanks to
277 Dag Lem and John Ellson.
278 <li>Additional freetype fixes: fixed width fonts are now the right
279 size, horizontal advance calculations now better match the
280 PostScript equivalent, and various compiler warning fixes. Also,
281 a fix to the encoding table selection in the was made, addressing a problem
282 with latin1 font encodings. Thanks to Dag Lem and John Ellson.
283 <li>Improved tolerance when reading JPEG files containing some garbage as well
284 as valid image data.
285 <li>Easier compilation on Windows: no errno.h in gd_gd2.c.
286 <li>Support for creating optimized GIF animations has been added
287 by Jaakko Hyv&auml;tti. See
288 <A HREF="#gdImageGifAnimAdd">gdImageGifAnimAdd</A>,
289 <A HREF="#gdImageGifAnimAddCtx">gdImageGifAnimAddCtx</A>,
290 <A HREF="#gdImageGifAnimAddPtr">gdImageGifAnimAddPtr</A>,
291 <A HREF="#gdImageGifAnimBegin">gdImageGifAnimBegin</A>,
292 <A HREF="#gdImageGifAnimBeginCtx">gdImageGifAnimBeginCtx</A>,
293 <A HREF="#gdImageGifAnimBeginPtr">gdImageGifAnimBeginPtr</A>,
294 <A HREF="#gdImageGifAnimEnd">gdImageGifAnimEnd</A>,
295 <A HREF="#gdImageGifAnimEndCtx">gdImageGifAnimEndCtx</A>, and
296 <A HREF="#gdImageGifAnimEndPtr">gdImageGifAnimEndPtr</A>.
297 <li><A HREF="#gdImageOpenPolygon">gdImageOpenPolygon</A> has been
298 added to allow consecutive line segments to be drawn without
299 connecting the end points to form a closed polygon. Thanks to
300 Jaakko Hyv&auml;tti.
301 <li>Better alpha channel blending when the destination color
302 contains an alpha channel. Also, quicker handling of the
303 most common cases. Thanks to Frank Warmerdam.
304 </ul>
305 <P>
306 <A NAME="whatsnew2.0.28"><H3>What's new in version 2.0.28?</H3></A>
307 <P>
308 <ul>
309 <li>GIF support has been restored. See
310 <a href="#gdImageGif">gdImageGif</a>,
311 <a href="#gdImageGifCtx">gdImageGifCtx</a>,
312 <a href="#gdImageGifPtr">gdImageGifPtr</a>,
313 <a href="#gdImageCreateFromGif">gdImageCreateFromGif</a>,
314 <a href="#gdImageCreateFromGifCtx">gdImageCreateFromGifCtx</a>,
315 and <a href="#gdImageCreateFromGifPtr">gdImageCreateFromGifPtr</a>.
316 These functions are now thread-safe, similar to the PNG and JPEG
317 manipulation functions.
318 <li>The new <a href="#gdImageCreatePaletteFromTrueColor">gdImageCreatePaletteFromTrueColor</a> function is identical to <a href="#gdImageTrueColorToPalette">gdImageTrueColorToPalette</a>, except that it returns a new image rather than permanently modifying the original.
319 </ul>
320 <P>
321 <A NAME="whatsnew2.0.27"><H3>What's new in version 2.0.27?</H3></A>
322 <P>
323 <ul>
324 <li>In gd 2.0.26, there was potential for out of bounds fills, and therefore
325 crashes, in the horizontalLine function used by gdImageFilledPolygon.
326 Fixed by John Ellson.
327 <li>The order of the points returned in the bounding rectangle by
328 gdImageStringFT was incorrect in version 2.0.26. This has been
329 corrected in version 2.0.27. Thanks to Riccardo Cohen for pointing
330 this out, and to John Ellson for verifying and fixing it.
331 </ul>
332 <P>
333 <A NAME="whatsnew2.0.26"><H3>What's new in version 2.0.26?</H3></A>
334 <P>
335 The following enhancements and fixes:
336 <ul>
337 <li>Drastically faster, less memory-intensive antialiased drawing, thanks to
338 Pierre-Alain Joye. This code was imported from the PHP "fork"
339 of gd. The API for antialiased drawing has not changed, however the
340 implementation has been completely replaced.
341 Antialiased line drawing does not support widths other
342 than 1, however this did not work properly with the other
343 implementation of antialiasing either. Support has been included
344 for the "non-blending color" option introduced by the previous
345 implementation of antialiased drawing.
346 <li><code>gdlib-config</code>, which has been installed by
347 <code>make install</code> for some time now, has gained
348 a <code>--features</code> option. This option produces a space-separated
349 list of optional features with which the gd library was compiled.
350 Typical usage looks like this:
351 <pre>
352 % gdlib-config --features
353 GD_XPM GD_JPEG GD_FREETYPE GD_PNG GD_GIF
354 </pre>
355 Other <code>configure</code> scripts can conveniently define
356 preprocessor symbols based on this list in order to conditionally
357 compile code. For instance, if
358 GD_PNG is not reported by --features, then gdImagePng is not
359 included in the library.
360 <p>
361 Thanks to Lars Hecking and Lincoln Stein for their advice on
362 implementing this feature. Any blame for the actual implementation
363 is entirely due to me (TBB).
364 <li>Fixes to the behavior of the bounding rectangle returned by
365 gdImageStringFT and relatives when the string is rotated.
366 See fontwheeltest.c. Thanks to John Ellson.
367 <li>Previously, gdImageStringFT and friends accepted either
368 a full path to a font file, or the name of a font with no
369 extension, in which case the GDFONTPATH environment variable
370 and then the compiled-in DEFAULT_FONTPATH was searched. In addition,
371 a font filename with an extension but no full path can now be
372 automatically searched for in the same fashion. Thanks to John Ellson.
373
374 <li>Fixes to freetype antialiased text against a transparent
375 background. See testtr.c. Thanks to John Ellson.
376
377 <li>Support for named entities like &amp;amp; and hex-coded
378 entities such as &amp;#x6C34; in text
379 strings passed to gdImageStringFT and relatives, adding to the
380 previous support for decimal-coded entities like &amp;#197;.
381 These were extracted from entities.html (from the W3C) via
382 the script entities.tcl, which is included for the curious and
383 those with other entities they need support for. Thanks to John Ellson.
384
385 <li>Optimization: gdImageSetPixel no longer calls gdImageAlphaBlend
386 when either the source or the destination pixel is 100% transparent.
387 Thanks to John Ellson.
388
389 <li>Optimization: gdImageLine is potentially faster now in the most
390 common cases.
391 Thanks to John Ellson.
392 <li>Documentation of the entities feature of gdImageStringFT.
393 <li>autoconf/configure fixes. Thanks to many who pointed out an oversight
394 in handling libpng flags.
395 </ul>
396 <P>
397 <A NAME="whatsnew2.0.25"><H3>What's new in version 2.0.25?</H3></A>
398 <P>
399 Owing to an oversight while making changes to better accommodate the use
400 of gd as a DLL, the <b>extern</b> qualifier was dropped from the
401 declarations of font pointers in 2.0.24. This has been corrected.
402 Thanks to Richard ("OpenMacNews").
403 <P>
404 <A NAME="whatsnew2.0.24"><H3>What's new in version 2.0.24?</H3></A>
405 <P>
406 <b>Windows DLL now uses __stdcall calling convention.</b> Existing
407 applications will require a recompile, using the new version of gd.h,
408 in order to use this version of the DLL. However, Visual BASIC and other
409 non-C programmers will now be able to use the DLL, which is an enormous
410 benefit and justifies the one-time inconvenience to existing DLL users.
411 <p>
412 The elaborate #ifdef test for older versions of Freetype without
413 FT_ENCODING_MS_SYMBOL was needed in a second place also. Thanks to
414 David R. Morrison.
415 <p>
416 An off-by-one error in gdImageToPalette caused transparency to be applied
417 to the wrong pixels. Thanks to "Super Pikeman."
418 <P>
419 <A NAME="whatsnew2.0.23"><H3>What's new in version 2.0.23?</H3></A>
420 <P>
421 Output dpi specification option added to the
422 <code>gdFTStringExtra</code> structure, thanks to
423 Mark Shackelford. See <a href="#gdImageStringFTEx">gdImageStringFTEx</a>.
424 <P>
425 <A NAME="whatsnew2.0.22"><H3>What's new in version 2.0.22?</H3></A>
426 <P>
427 <ul>
428 <li>Win32 DLL users: working with pointers exported by DLLs is
429 difficult and causes unexpected results. gd 2.0.22 exports new
430 functions for retrieving the basic gd fonts:
431 <a href="#gdFontGetTiny">gdFontGetTiny()</a>,
432 <a href="#gdFontGetSmall">gdFontGetSmall()</a>,
433 <a href="#gdFontGetMediumBold">gdFontGetMediumBold()</a>,
434 <a href="#gdFontGetLarge">gdFontGetLarge()</a>, and
435 <a href="#gdFontGetHuge">gdFontGetHuge()</a>. You may safely assign the
436 return values from these functions to a local <code>gdFontPtr</code>.
437 Direct use of <code>gdFontLarge</code>, etc. is strongly deprecated
438 for users of <code>bgd.dll</code>; use these new functions instead.
439 <li>Basic support for loading CMYK-colorspace JPEG images. They are
440 of course converted to RGB which is a lossy process, however the
441 results do look quite good and are certainly fine for thumbnails and
442 web previews of DTP work.
443 <li>"make" no longer fails on <code>circletexttest</code> if
444 PNG support is missing.
445 <li>Small performance improvements to gdImageCopyResampled; larger
446 improvements are forthcoming.
447 </ul>
448 <P>
449 <A NAME="whatsnew2.0.21"><H3>What's new in version 2.0.21?</H3></A>
450 <P>
451 <ul>
452 <li>Version 2.0.21 adds a <code>gdImageCreateFrom*Ptr</code> family
453 of functions which make it convenient to load an image in any
454 GD-supported format directly from memory.
455 <li>The new <code>gdNewDynamicCtxEx</code> function was added to
456 support the easy implementation of the above functions and to
457 correct a design problem which made life unpleasant for those passing
458 in memory not originally allocated by gd to the
459 <code>gdNewDynamicCtx</code> function by provoding a way to specify
460 that gd should never free or reallocate a particular block of memory.
461 The <code>gdNewDynamicCtx</code> function and its relatives, although
462 still exported for ABI compatibility, are now <b>deprecated</b> except
463 for internal use, in favor of <a href="#gdImageCreateFromPngPtr"><code>gdImageCreateFromPngPtr</code></a>
464 and its relatives.
465 <li>Version 2.0.21 includes a new patch from Ethan A. Merritt to
466 correct a bug in the conditional compilation of support for
467 symbol fonts in gdft.c. Symbol fonts should now work correctly.
468 Thanks to Mr. Merritt.
469 <li>Version 2.0.20 restores the <code>gdFreeFontCache</code> function,
470 an undocumented function added in an earlier release which now simply
471 calls <code>gdFontCacheShutdown</code> for backwards compatibility.
472 This repairs build problems when compiling PHP against the latest gd.
473 <li>Documentation improvements.
474 </ul>
475 <P>
476 <A NAME="whatsnew2.0.20"><H3>What's new in version 2.0.20?</H3></A>
477 <P>
478 <ul>
479 <li>Version 2.0.20 restores the <code>gdFreeFontCache</code> function,
480 an undocumented function added in an earlier release which now simply
481 calls <code>gdFontCacheShutdown</code> for backwards compatibility.
482 This repairs build problems when compiling PHP against the latest gd.
483 </ul>
484 <P>
485 <A NAME="whatsnew2.0.19"><H3>What's new in version 2.0.19?</H3></A>
486 <P>
487 <ul>
488 <li>Version 2.0.19 restored <code>extern</code> declarations for the
489 gd font pointers inadvertently removed in 2.0.18.
490 </ul>
491 <P>
492 <A NAME="whatsnew2.0.18"><H3>What's new in version 2.0.18?</H3></A>
493 <P>
494 <ul>
495 <li>A Win32 binary distribution of "bgd.dll," built with mingw32 and
496 tested with win32 versions of the demo programs as console applications,
497 is now available.
498 <li>Semicolon rather than space used as the default separator of
499 alternative font file paths in <a href="#gdImageStringFT">gdImageStringFT</a>,
500 for better compatibility with Windows and other environments where
501 spaces are common in paths.
502 <li>The circletexttest demo no longer fails to compile when JPEG
503 support happens to be absent.
504 </ul>
505 <P>
506 <A NAME="whatsnew2.0.17"><H3>What's new in version 2.0.17?</H3></A>
507 <P>
508 Minor compilation and packaging problems with 2.0.16 were corrected.
509 If 2.0.16 compiled without errors for you, then you don't need
510 to upgrade to 2.0.17.
511 <P>
512 <A NAME="whatsnew2.0.16"><H3>What's new in version 2.0.16?</H3></A>
513 <P>
514 <ul>
515 <li>Thread safety for freetype text output. Background: all gd functions
516 were already thread safe, as long as only one thread manipulates each
517 image -- except for gdImageStringFT and gdImageStringFTEx. This is because
518 of a shared freetype font cache. Sharing the cache between images
519 is worthwhile, so "configure" now detects pthreads and uses it to
520 wrap freetype text output in a critical section if available. There is
521 also critical section support under WIN32. Those who wish to be
522 strictly thread-safe should call the new function
523 <a href="#gdFontCacheSetup">gdFontCacheSetup</a> before allowing any
524 thread to use freetype text calls. Otherwise this function is automatically
525 invoked on the first use of freetype, with a very small but real chance
526 of a race condition.
527 <li><a href="#gdImageSquareToCircle">gdImageSquareToCircle</a> performs
528 a "polar coordinate transform," returning a new image in which the
529 X axis of the original has been remapped to theta (angle) and the
530 Y axis of the original has been remapped to rho (distance from center).
531 <li><a href="#gdImageStringFTCircle">gdImageStringFTCircle</a> wraps
532 text in a circle around a specified center point. This function
533 takes advantage of <a href="#gdImageSquareToCircle">gdImageSquareToCircle</a>.
534 The result is very smooth, although it takes some time to compute.
535 Thanks to Steve Bassi for sponsoring this work.
536 <li><a href="#gdImageSharpen">gdImageSharpen</a>, contributed by
537 Paul Troughton. Thank you.
538 <li>Christophe Thomas corrected gdft.c to include freetype header
539 files in the way that is now mandatory in freetype 2.1.6 and above.
540 <li>Gustavo Scotti fixed a memory leak in gdft.c.
541 <li>Clipping rectangle respected in freetype text output. Thanks to Matt
542 McNabb.
543 <li>Paul den Dulk found a degenerate case that crashes
544 gdImageToPalette. Fixed.
545 <li>Optimization by Ilia Chipitsine to avoid wasting time with
546 offscreen scanlines during polygon rasterization.
547 <li>Optimized PNG saving by Phong Tran. Speeds up saves a
548 little bit.
549 <li>Bug in gdImageCopyResized fixed by Mao Morimoto.
550 </ul>
551 <P>
552 <A NAME="whatsnew2.0.15"><H3>What's new in version 2.0.15?</H3></A>
553 <P>
554 <ul>
555 <li>gd.c in 2.0.14 contained an instance of declaring variables
556 after the first line of executable code appears. This is of course
557 not allowed by ANSI C, although many compilers accept it.
558 My apologies. Thanks to Jeff Vendetti for reporting this quickly.
559 </ul>
560 <P>
561 <A NAME="whatsnew2.0.14"><H3>What's new in version 2.0.14?</H3></A>
562 <P>
563 <ul>
564 <li>2.0.13 was available for mere minutes due to a typo
565 in the new bounds-checking code for antialiased line drawing. Fixed.
566 <li>Not all platforms -- notably msys/mingw -- have an ssize_t type.
567 We now call an int an int in gd_jpeg.c, with good results.
568 (Note: ssize_t is signed, unlike size_t, and it needs to be here.)
569 </ul>
570 <P>
571 <A NAME="whatsnew2.0.13"><H3>What's new in version 2.0.13?</H3></A>
572 <P>
573 <ul>
574 <li>The <code>main()</code> function of one of the test programs
575 was accidentally included in the gd shared library, causing problems
576 on some platforms. This has been corrected. Thanks to many people
577 who pointed this out.
578 <li>The antialiased drawing functions now have proper bounds
579 checking. Thanks to Arne Jorgensen.
580 <li>A void function returned a value in gd_png.c, causing warnings
581 and, on some platforms, compilation errors but no reported runtime problems.
582 Thanks to Kevin Smith, among others.
583 <li>Autohinting was being forced ON for freetype text output. This is
584 apparently meant only for testing freetype and does not look as good
585 as the default behavior (FT_LOAD_DEFAULT). Thanks to Bob Ostermann.
586 <li>penf.x is properly reset when newlines are encountered in freetype
587 text output. Thanks to Christopher J. Grayce.
588 </ul>
589 <P>
590 <A NAME="whatsnew2.0.12"><H3>What's new in version 2.0.12?</H3></A>
591 <P>
592 <ul>
593 <li>Small but numerous code cleanups by Dr. Martin Zinser.
594 <li><a href="#gdImageSetClip">gdImageSetClip</a> and
595 <a href="#gdImageGetClip">gdImageGetClip</a> have been added. All
596 drawing routines now stay within the specified clipping rectangle.
597 Note that the <a href="#gdImageBoundsSafe">gdImageBoundsSafe</a> function
598 now returns true only if the specified location is within the
599 clipping rectangle. Of course, the default clipping area is the
600 entire image. The behavior of existing gd applications does not change.
601 <li>Support for fast drawing of antialiased lines and polygons,
602 by Bright Fulton and Frank Faubert. To learn more about this feature,
603 read about the <a href="#gdImageSetAntiAliased">gdImageSetAntiAliased</a>
604 function, which is used to set the foreground color for antialiasing,
605 as well as the <a href="#gdAntiAliased">gdAntiAliased</a> constant, which
606 is passed to line- and polygon-drawing functions in place of a color.
607 This code does not currently support an alpha channel component in the
608 specified foreground color, or in the existing background image,
609 but <em>does</em> perform alpha blending against an opaque background.
610 Also see the
611 <a href="#gdImageSetAntiAliasedDontBlend">gdImageSetAntiAliasedDontBlend</a>
612 function, which allows the specification of a special background
613 color that should never be blended with the foreground.
614 <li>Fixes to color mapping in <a href="#gdImageCopyMergeGray">gdImageCopyMergeGray</a>. Thanks to Philip Warner.
615 <li><a href="#gdImageStringFTEx">gdImageStringFTEx</a> now supports
616 explicit specification of the desired character mapping.
617 This is useful when a font offers more than one of Unicode,
618 Shift_JIS, and Big5.
619 <li>The PNG compression level can now be specified when writing PNG
620 images. See the new <a href="#gdImagePngEx">gdImagePngEx</a>,
621 <a href="#gdImagePngEx">gdImagePngEx</a>,
622 <a href="#gdImagePngCtxEx">gdImagePngCtxEx</a>, and
623 <a href="#gdImagePngPtrEx">gdImagePngPtrEx</a> functions.
624 <li>The annotate utility builds without error in the absence of
625 freetype, although of course it is not useful without freetype.
626 <li>Thorben Kundinger fixed a bug relating to the use of palette-based
627 images as brushes when drawing on truecolor images.
628 <li>Michael Schwartz corrected a problem with his code for drawing
629 thick lines.
630 <li>Prior to 2.0.12, any alpha channel component in the
631 <em>destination</em> image was ignored when drawing with
632 alpha blending in effect (see
633 <a href="#gdImageAlphaBlending">gdImageAlphaBlending</a>). 2.0.12
634 correctly preserves an appropriate proportion of the alpha component
635 of the destination, just as it preserves an appropriate proportion
636 of the red, green and blue components, depending on the opacity
637 of the foreground. Thanks to Frank Warmerdam for pointing out the issue.
638 <li>Memory leaks on failed attempts to load fonts
639 in <a href="#gdImageStringFTEx">gdImageStringFTEx</a> were corrected.
640 Thanks to Frank Faubert.
641 <li>The impact of kerning is now correctly included in the calculation
642 of the bounding box returned by the freetype text routines. This issue
643 was pointed out by several individuals.
644 <li>Color problems with the <code>gd2</code> file format routines
645 were fixed by Steven Brown. These problems were due to the
646 incorrect use of a signed integer.
647 <li>Version 2.0.12 supports the <code>gd</code> file format correctly
648 for truecolor images. Truecolor <code>gd</code> files created with
649 earlier releases in the 2.0 series must be written again. The <code>gd</code>
650 file format is used to quickly load an entire uncompressed image, typically
651 an existing background to which additional material will be added; it is not a
652 general purpose file format. More advanced capabilities are also available
653 via the <code>gd2</code> format. Thanks to Andreas Pfaller for reporting
654 the problem.
655 <li>Signed vs. unsigned problem caused misbehavior when attempting to
656 load a bad JPEG image. Thanks to Geert Jansen.
657 <li>Existing truecolor PNG images with simple single-color transparency are
658 now loaded properly, thanks to Slaven Rezic.
659 <li>The <a href="#gdImageTrueColorToPalette">gdImageTrueColorToPalette</a>
660 function no longer attempts to preserve an alpha channel in the original.
661 My attempt to do so resulted in significantly inferior output even if no
662 alpha channel was present in the original. Thanks to Barend Gehrels for
663 submitting a new adaptation of Tom Lane's jquant2.c which does a very
664 high-quality job of palette conversion. Thanks also to Steven Brown, who
665 submitted patches allowing a single 100% transparent color in the
666 original truecolor image to be preserved. In practice, more complex
667 alpha channels in palettes are ill-supported and difficult to
668 allocate skillfully.
669 </ul>
670 <P>
671 <A NAME="whatsnew2.0.11"><H3>What's new in version 2.0.11?</H3></A>
672 <P>
673 <ul>
674 <li>Support for the "gd2" file format, which allows fast loading of all or
675 only part of an existing image, has been properly debugged for use with
676 truecolor images. (Palette images already worked properly, except for a
677 bug when loading from a regular file with gdImageCreateFromGd2Part, which
678 has also been fixed.) .gd2 files can be either compressed or uncompressed,
679 and they allow useful tricks such as fast loading of a 500x500 pixel
680 region of a 6000x3000 pixel image, without uncompressing <em>all</em> of the
681 image. .gd2 is NOT a general purpose file format and should only be used
682 where quick loading of a background image or subset of a larger image
683 is required. For more information, see
684 <a href="#gdImageGd2">gdImageGd2</a>,
685 <a href="#gdImageCreateFromGd2">gdImageCreateFromGd2</a>,
686 and
687 <a href="#gdImageCreateFromGd2Part">gdImageCreateFromGd2Part</a>.
688 <li>The gd2topng utility has been extended to support extraction of
689 only part of an image from a .gd2 file. This is both a demonstration and
690 a practical tool.
691 <li>Additional <code>configure</code> improvements by Lars Hecking.
692 </ul>
693 <P>
694 <A NAME="whatsnew2.0.10"><H3>What's new in version 2.0.10?</H3></A>
695 <P>
696 <ul>
697 <li>gdImageLine now clips to the edges of the image before drawing
698 lines, which greatly improves performance when many lines extend
699 outside or are entirely outside the actual image. Thanks to
700 Nick Atty for this code.
701 <li>gdImageBoundsSafe is replaced with a macro when called internally;
702 this improves the performance of gdImageSetPixel and gdImageGetPixel
703 a little bit, and therefore everything else as well. Thanks to
704 Nicky Atty for the idea.
705 <li>Transparent indexes are handled properly with non-truecolor
706 source images in gdImageCopy. Thanks to Frank Warmerdam.
707 <li>floor() replaced with a cast to long in gdImageCopyResampled,
708 for a roughly 35% performance boost. Thanks to John Buckman.
709 <li>gdft.c builds correctly on WIN32 without patches.
710 <li>Much faster gdImageCreateFromJpeg routines, thanks to Christian
711 Aberger for more efficient pointer arithmetic.
712 <li>gdtestft correctly builds without PNG tests if PNG support is not present.
713 Thanks to Gabriele Verzeletti.
714 </ul>
715 <P>
716 <A NAME="whatsnew2.0.9"><H3>What's new in version 2.0.9?</H3></A>
717 <P>
718 <ul>
719 <li>Version 2.0.9 contains a fix to gdImageCopyResized which allows
720 correct results when copying a palette-based image with a single
721 transparent index into a truecolor image. Thanks to Thorben
722 Kundinger.
723 <li>More <code>configure</code> fixes from Lars Hecking. Thanks, Lars.
724 </ul>
725 <P>
726 <A NAME="whatsnew2.0.8"><H3>What's new in version 2.0.8?</H3></A>
727 <P>
728 <ul>
729 <li>Version 2.0.8 contains additional fixes to the 'configure' script,
730 allowing a clean out-of-the-box build on more systems.
731 <li>Version 2.0.8 adds the new
732 <a href="#gdImageCopyRotated">gdImageCopyRotated</a> function, which
733 can rotate any rectangular image region by an arbitrary number of degrees.
734 </ul>
735 <P>
736 <A NAME="whatsnew2.0.7"><H3>What's new in version 2.0.7?</H3></A>
737 <P>
738 Version 2.0.7 corrects a problem which caused 'configure' to complain
739 that the directory NONE was not found, in various places, causing
740 the configuration process to stop. There are no code changes.
741 <P>
742 <A NAME="whatsnew2.0.6"><H3>What's new in version 2.0.6?</H3></A>
743 <P>
744 <ul>
745 <li>
746 Fixed a compilation problem with gdft.c. A declaration appeared
747 after executable code, and gcc let it slide by, so it made it
748 out the door. My apologies!
749 <li>As penance, I have seen to it that the entire library
750 now compiles cleanly with the <code>-Wall</code>, <code>-ansi</code>
751 and <code>-pedantic</code> options enabled.
752 </ul>
753 <p>
754 <A NAME="whatsnew2.0.5"><H3>What's new in version 2.0.5?</H3></A>
755 <ul>
756 <li>libgd 2.0.5 INSTALLS IN /usr/local/lib BY DEFAULT. IF YOU WANT
757 IT TO INSTALL IN /usr/lib, YOU MUST SPECIFY THIS at
758 <code>configure</code> time using this syntax:
759 <p>
760 <code>./configure --prefix=/usr</code>
761 <li>gd now uses GNU autoconf. This means that the provided
762 <code>configure</code> script should be compatible with all standard
763 GNU configure options and will figure out the correct settings for a
764 much wider range of operating systems. Many, many thanks to
765 Lars Hecking for taking care of this.
766 <li>The <a href="#gdImageStringFTEx">gdImageStringFTEx</a> function
767 is now included, thanks to Wez Furlong. My apologies to Wez for the
768 unreasonable amount of time this patch has sat in my queue.
769 <li>Additional fixes from Wez Furlong.
770 <li>Arithmetic cleanup by Doug Claar.
771 <li>Corrections to loading and saving of alpha channel
772 information in PNG files, by Andrew Hull.
773 <li>gdImageTrueColorToPalette does not contain
774 unneeded test code.
775 <li>gdImageCopyResized works properly again when copying
776 from a non-truecolor source.
777 </ul>
778 <P>
779 <A NAME="whatsnew2.0.4"><H3>What's new in version 2.0.4?</H3></A>
780 The following contributions from John Ellson:
781 <ul>
782 <li>Various test programs now compile in the absence
783 of PNG support
784 <li>gdIOCtx correctly calls gdFree rather than free
785 <li>Various cleanups to pass -Wall without warnings
786 <li>Support for Adobe-style Type 1 fonts (.pfa and .pfb files)
787 via freetype
788 <li>gdImageColorResolve and gdImageColorResolveAlpha will not
789 attempt to resolve a color request to the transparent color index
790 (for palette-based images)
791 <li>Improved font search path support
792 <li>Antialiased freetype text on palette images works properly
793 when more than one image is created in a single program lifetime
794 with different color indexes
795 <li>Better threshold for two-color "mono" images
796 <li>Memory leak fixes
797 <li>Text rotation fix
798 <li>More extensive default font path
799 <li>fontwheeltest and fontsizetest test programs for freetype
800 </ul>
801 And the following additional fixes:
802 <ul>
803 <li><code>configure</code> now correctly detects and provides
804 support for the Xpm library and its dependencies (Len Makin)
805 </ul>
806 <A NAME="whatsnew2.0.3"><H3>What's new in version 2.0.3?</H3></A>
807 <ul>
808 <li>The <code>configure</code> script has been extensively modified
809 to work properly in tests with both Solaris and Linux. Other platforms
810 should also work based on feedback received and integrated to date.
811 <li>The <code>--prefix</code> option to <code>configure</code>
812 works properly.
813 <li>The <code>annotate</code> utility has been added. This is a
814 very handy tool for adding freetype text to existing JPEGs. After
815 <code>make install</code>, type <code>annotate -h</code> for more
816 information. Thanks to Joel Dubiner.
817 </ul>
818 <P>
819 <A NAME="whatsnew2.0.2"><H3>What's new in version 2.0.2?</H3></A>
820 <ul>
821 <li>A "configure" script has been added. After wrestling with GNU
822 autoconf for a while, I got tired of trying to make it detect libraries
823 but accept their absence gracefully, and so on. Instead, I wrote a short
824 Perl script which does the job and builds a reasonable Makefile. Those
825 who find it doesn't detect their system's needs properly are welcome
826 to contribute patches or the necessary commands.
827 <li>Antialiased freetype text output now works properly in both
828 truecolor and non-truecolor contexts! Hurrah! On a truecolor image
829 it is possible, for instance, to draw antialiased text on an arbitrarily
830 complex background with 50% alpha blending (transparency), and get the
831 expected pretty results. Thanks to Joel Dubiner for his support of this work.
832 <li><strong>By default, alpha blending is now done within the library.</strong>
833 Also, by default, alpha channel is not saved with PNG images. This means
834 that programmers who try loading a JPEG, scribbling some pretty antialiased
835 text on it, and saving the JPEG again will now get the results they
836 expected. It also means that, by default, users will not run afoul of
837 the fact that many web browsers don't properly support full PNG alpha
838 channel.
839 <li>Various submitted bug fixes have been incorporated.
840 <li>Various other submitted changes have not been incorporated. Sorry.
841 The interval between 2.0.1 and 2.0.2 was simply too long, and changes
842 accumulated which were not mutually compatible. I'll do better in
843 the future, especially with bug fixes.
844 </ul>
845 <P><A NAME="whatsnew2.0.1"><H3>What's new in version 2.0.1?</H3></A>
846 <ul>
847 <li>Workaround for a bug in gcc, apparently found in gcc 2.7.2 and up.
848 I reproduced and fixed it while using gcc 2.9.5.2. The bug occurred only
849 when the -g option was in use. This problem caused gcc to spew
850 internal error messages unrelated to the correctness of the code
851 in gd_gd2.c. Howard Jones was first to report it.
852 <li><a href="#gdImageFilledEllipse">gdImageFilledEllipse</a> documented
853 and altered; no longer requires a superfluous style argument. Thanks to
854 Francis James Franklin.
855 <li>The Makefile now offers the correct syntax for
856 optionally creating a static library. Thanks to Jean-Lous Regez,
857 among others.
858 <li>A nested comment, an attempt to return the value of a void function,
859 and a potentially significant error in gdImageCopyResampled were fixed
860 thanks to Joseph Shirley.
861 <li>A bug preventing proper truecolor text rendering was fixed,
862 thanks to Jason Gallagher.
863 <li><a href="#gdImageStringFT">gdImageStringFT</a> (FreeType) should
864 now work better against a transparent or semitransparent background,
865 and should act in a manner consistent with the most recent
866 <a href="#gdImageAlphaBlending">gdImageAlphaBlending</a> setting.
867 Antialiasing is now done via the alpha channel mechanism if the
868 image is a truecolor image.
869 <li>Bugs in the output of gdImageArc and gdImageFilledArc were reported
870 by Bruce Verderaime. A simple and correct but inefficient implementation
871 has been substituted until fixes are contributed for the faster code,
872 which is in gd_arc_f_buggy.c along with the test program that reproduces
873 the bug(s).
874 <li><a href="#gdImageFilledArc">gdImageFilledArc</a> now offers additional
875 style options, which can be combined to produce various effects.
876 <li>Masahito Yamaga (ma@yama-ga.com) sent a patch to improve
877 support for Japanese output via <a href="#gdImageStringFT">gdImageStringFT</a>.
878 He also added a new <code>readme.jpn</code> file.
879 <li>Zillions of documentation fixes.
880 </ul>
881 <P><A NAME="whatsnew2.0"><H3>What's new in version 2.0?</H3></A>
882 <ul>
883 <li><strong>Support for truecolor images!</strong> Version 2.0 can
884 load truecolor PNGs with no loss of color information, and almost
885 no loss of alpha channel information. Version 2.0 can also load
886 truecolor JPEGs with as little loss as possible; however, bear in
887 mind that JPEG is a lossy format, so repeated load/save cycles
888 always reduce image quality. This is not a bug. To create
889 a truecolor image from scratch, call the new
890 <a href="#gdImageCreateTrueColor">gdImageCreateTrueColor</a>
891 function. The <a href="#gdImageCreate">gdImageCreate</a> function
892 is still available to create palette images, and may also be
893 referred to as <a href="#gdImageCreatePalette">gdImageCreatePalette</a>.
894 <li><strong>Support for alpha channels!</strong> In addition to
895 24 bits of color information for each pixel (eight bits of
896 red, green, and blue respectively), version 2.0 supports
897 7 bits of "alpha channel" information. This is used to determine
898 exactly how transparent the pixel should be. There is also support
899 for a full 7 bits of transparency for each individual palette index
900 in a palette-based image. Please note that, as of this writing,
901 only Macintosh Internet Explorer 5.x and Mozilla/Netscape 6.x
902 display partial transparency properly.
903 <li>The new <a href="#gdImageAlphaBlending">gdImageAlphaBlending</a>
904 function allows for two different modes of drawing. In blending mode,
905 the alpha channel component of the color supplied to all drawing
906 functions, such as <a href="#gdImageSetPixel">gdImageSetPixel</a>,
907 determines how much of the underlying color should be allowed to
908 shine through. The resulting image is not transparent. In non-blending
909 mode, drawing color is copied literally with the alpha channel
910 information, resulting in a transparent image. Blending mode is
911 not available when drawing on palette images.
912 <li>The <a href="#gdImageCopyResampled">gdImageCopyResampled</a>
913 function provides "smooth" copying from a large image to a smaller
914 one, using a weighted average of the pixels of the source area rather
915 than selecting one representative pixel. This function is identical
916 to <a href="#gdImageCopyResized">gdImageCopyResized</a> when the
917 destination image is a palette image.
918 <li>The <a href="#gdImageTrueColorToPalette">gdImageTrueColorToPalette</a>
919 function converts a truecolor image to a palette image. The code for
920 this function was originally drawn from the Independent JPEG Group library
921 code, which is excellent. The code has been modified to preserve as much
922 alpha channel information as possible in the resulting palette, in addition
923 to preserving colors as well as possible. This does not work as well as
924 might be hoped. It is usually best to simply produce a truecolor
925 output image instead, which guarantees the highest output quality.
926 <li>A very high degree of backwards compatibility with existing
927 gd 1.x code has been maintained, at both the source code and binary
928 level. <strong>Code which directly accesses the <code>pixels</code> array
929 will fail only if it encounters an existing truecolor image</strong>, which may
930 happen if the code attempts to open and modify an existing JPEG or
931 truecolor PNG. Such code should be modified to check the
932 <code>trueColor</code> flag of the <code>gdImage</code> structure, and
933 refer to the <code>tpixels</code> array instead when it is set.
934 <li>gd is now compiled and installed as a shared library. However,
935 gd still does not use autoconf, because I (TBB) have very limited
936 patience with autoconf. These days, most Unix systems provide a fairly
937 POSIX-standard environment, and the provided Makefile is likely to work well
938 if users read it and follow the instructions at the top.
939 <li>Support for line thickness was added by Michael Schwartz. My apologies
940 to him for sitting on his patches for so long. See the new
941 <a href="#gdImageSetThickness">gdImageSetThickness</a> function, which
942 affects all standard gd functions that draw lines and curves. In addition,
943 Michael added a convenient <a href="#gdImageEllipse">gdImageEllipse</a>
944 function.
945 <li>The new <a href="#gdImageFilledArc">gdImageFilledArc</a> function
946 provides a straightforward way to draw filled arcs. Also,
947 <a href="#gdImageFilledEllipse">gdImageFilledEllipse</a> is a
948 convenient way to fill an ellipse without specifying starting
949 and ending angles. Thanks go out to F J Franklin.
950 <li>To put an end to the confusion, TrueType 1.x support has been
951 removed in favor of TrueType 2.x support. The old
952 gdImageStringTTF function simply invokes gdImageStringFT.
953 <li>The specialized .gd and .gd2 file formats have been upgraded to support
954 truecolor. New images written by the versions of these functions
955 found in 2.0 will be rejected, with varying degrees of grace, by
956 older versions of gd. THIS AFFECTS THE .GD and .GD2 FORMATS ONLY. IF YOU
957 ARE CONFUSED BY THIS PARAGRAPH, IT PROBABLY DOESN'T APPLY TO ANYTHING
958 YOU WILL EVER ENCOUNTER. Since these file formats are absolutely,
959 positively *not* designed for distributing images, just for
960 preprocessing them, this should not be a big problem. gd 2.0 should
961 read old .gd and .gd2 files correctly.
962 </ul>
963 <P><A NAME="whatsnew1.8.4"><H3>What's new in version 1.8.4?</H3></A>
964 <ul>
965 <li>Add support for FreeType2 (John Ellson ellson@graphviz.org)
966 <li>Add support for finding in fonts in a builtin DEFAULT_FONTPATH,
967 or in a path from the GDFONTPATH environment variable.
968 <li>remove some unused symbols to reduce compiler warnings
969 <li>bugfix in size comparisons in gdImageCompare
970 <li>REXX now mentioned
971 <li>All memory allocation functions are now wrapped within the
972 library; gdFree is exported and recommended for freeing memory
973 returned by the gdImage(Something)Ptr family of functions.
974 </ul>
975 <P><A NAME="whatsnew1.8.3"><H3>What's new in version 1.8.3?</H3></A>
976 <ul>
977 <li>WBMP output memory leak fixed
978 <li><code>#include &lt;gd.h&gt;</code> corrected to <code>#include "gd.h"</code> in gd_wbmp.c
979 <li>Documented the fact that the source and output images shouldn't
980 match in the WBMP test except for black and white source images
981 </ul>
982 <P>
983 <A NAME="whatsnew1.8.2"><H3>What's new in version 1.8.2?</H3></A>
984 <ul>
985 <li>WBMP support debugged and improved by Johann Van den Brande
986 <li>WBMP tests added to gdtest.c by Thomas Boutell
987 <li>Use of platform-dependent 'install' command removed by Thomas Boutell
988 <li>Comments added to Makefile warning users to juggle the order of the
989 libraries if the linker complains; is there any portable way to do this
990 automatically, short of using autoconf?
991 <li>Documentation of <a href="#gdImageCreateFromXpm">gdImageCreateFromXpm</a>
992 corrected
993 <li>Updated links to fast-moving, always dodging libpng and zlib web sites
994 </ul>
995 <P><A NAME="whatsnew1.8.1"><H3>What's new in version 1.8.1?</H3></A>
996 <ul>
997 <li>Optional components no longer built by default (following the
998 documentation)
999 <li>JPEG code no longer requires inappropriate header files
1000 <li>Win32 patches from Joe Gregorio
1001 <li>16-bit font support for bdftogd, from Honza Pazdziora
1002 </ul>
1003 <P><A NAME="whatsnew1.8"><H3>What's new in version 1.8?</H3></A>
1004 <ul>
1005 <li>Support for JPEG output, courtesy of Doug Becker
1006 <li>A link to Michael Bradbery's Pascal wrapper
1007 <li>Support for WBMP output, courtesy of Maurice Szmurlo
1008 <li>gdImageColorClosestHWB function based on hue, whiteness, blackness,
1009 superior to the regular gdImageColorClosest function, courtesy
1010 of Philip Warner
1011 <li>License clarification: yes, you can modify gd
1012 </ul>
1013 <h4>Additional JPEG Information</h4>
1014 Support for reading and writing JPEG-format images is courtesy
1015 of Doug Becker and the Independent JPEG Group / Thomas G. Lane. You
1016 can get the latest version of the IJG JPEG software from <A
1017 HREF="ftp://ftp.uu.net/graphics/jpeg/">ftp://ftp.uu.net/graphics/jpeg/</A>
1018 (e.g., the <A
1019 HREF="ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz">jpegsrc.v6b.tar.gz</A>
1020 file). You <strong>must</strong> use
1021 version 6b or later of the IJG JPEG software. You might also consult
1022 the <A HREF="http://www.faqs.org/faqs/jpeg-faq/">JPEG FAQ</A> at
1023 <A HREF="http://www.faqs.org/faqs/jpeg-faq/">http://www.faqs.org/faqs/jpeg-faq/</A>.
1024 <P><A NAME="whatsnew1.7.3"><H3>What's new in version 1.7.3?</H3></A>
1025 Another attempt at Makefile fixes to permit
1026 linking with all libraries required on platforms with order-
1027 dependent linkers. Perhaps it will work this time.
1028 <P><A NAME="whatsnew1.7.2"><H3>What's new in version 1.7.2?</H3></A>
1029 An uninitialized-pointer bug in <code>gdtestttf.c</code> was corrected.
1030 This bug caused crashes at the end of each call to gdImageStringTTF on
1031 some platforms. Thanks to Wolfgang Haefelinger.
1032 <p>
1033 Documentation fixes. Thanks to Dohn Arms.
1034 <p>
1035 Makefile fixes to permit
1036 linking with all libraries required on platforms with order-
1037 dependent linkers.
1038 <P><A NAME="whatsnew1.7.1"><H3>What's new in version 1.7.1?</H3></A>
1039 A minor buglet in the Makefile was corrected, as well as an inaccurate
1040 error message in <code>gdtestttf.c</code>. Thanks to Masahito Yamaga.
1041 <P><A NAME="whatsnew1.7"><H3>What's new in version 1.7?</H3></A>
1042 Version 1.7 contains the following changes:
1043 <ul>
1044 <li>Japanese language support for the TrueType functions.
1045 Thanks to Masahito Yamaga.
1046 <li><code>autoconf</code> and <code>configure</code> have been removed, in favor of a
1047 carefully designed Makefile which produces and properly installs
1048 the library and the binaries. System-dependent variables are
1049 at the top of the Makefile for easy modification. I'm sorry,
1050 folks, but autoconf generated <strong>many, many confused email
1051 messages</strong> from people who didn't have things where autoconf
1052 expected to find them. I am not an autoconf/automake wizard, and
1053 gd is a simple, very compact library which does not need to
1054 be a shared library. I <strong>did</strong> make many improvements
1055 over the old gd 1.3 Makefile, which were directly inspired by the
1056 autoconf version found in the 1.6 series (thanks to John Ellson).
1057 <li>Completely ANSI C compliant, according to the <code>-pedantic-errors</code>
1058 flag of gcc. Several pieces of not-quite-ANSI-C code were causing problems
1059 for those with non-gcc compilers.
1060 <li><code>gdttf.c</code> patched to allow the use of Windows symbol
1061 fonts, when present (thanks to Joseph Peppin).
1062 <li><code>extern "C"</code> wrappers added to <code>gd.h</code> and the
1063 font header files for the convenience of C++ programmers.
1064 <code>bdftogd</code> was also modified to automatically insert these
1065 wrappers into future font header files. Thanks to John Lindal.
1066 <li>Compiles correctly on platforms that don't define <code>SEEK_SET</code>.
1067 Thanks to Robert Bonomi.
1068 <li>Loads Xpm images via the
1069 <a href="#gdImageCreateFromXpm"><code>gdImageCreateFromXpm</code></a>
1070 function, if the Xpm library is available. Thanks to Caolan McNamara.
1071 </ul>
1072 <P><A NAME="whatsnew1.6.3"><H3>What's new in version 1.6.3?</H3></A>
1073 Version 1.6.3 corrects a memory leak in gd_png.c. This leak caused
1074 a significant amount of memory to be allocated and not freed when
1075 writing a PNG image.
1076 <P><A NAME="whatsnew1.6.2"><H3>What's new in version 1.6.2?</H3></A>
1077 Version 1.6.2 from John Ellson <ellson@graphviz.org> adds two new functions:
1078 <ul>
1079 <li>gdImageStringTTF - scalable, rotatable, anti-aliased, TrueType strings using
1080 the FreeType library, but only if libttf is found by configure.
1081 <strong>We do not provide TrueType fonts. Obtaining them
1082 is entirely up to you.</strong>
1083 <li>gdImageColorResolve - an efficient alternative for the
1084 common code fragment:
1085 <pre>
1086
1087 if ((color=gdImageColorExact(im,R,G,B)) < 0)
1088 if ((color=gdImageColorAllocate(im,R,G,B)) < 0)
1089 color=gdImageColorClosest(im,R,G,B);
1090 </pre>
1091 </ul>
1092 <p>
1093 Also in this release the build process has been converted to
1094 GNU autoconf/automake/libtool conventions so that both (or either)
1095 static and shared libraries can be built.
1096 <P><A NAME="whatsnew1.6.1"><H3>What's new in version 1.6.1?</H3></A>
1097 Version 1.6.1 incorporates superior PNG reading and writing code
1098 from Greg Roelofs, with minor modifications by Tom Boutell.
1099 Specifically, I altered his code to read non-palette images
1100 (converting them to palette images badly, by dithering them),
1101 and to tolerate palette images with types of transparency that
1102 gd doesn't actually support (it just ignores the advanced
1103 transparency features). Any bugs in this area are therefore my
1104 fault, not Greg's.
1105 <p>
1106 Unlike gd 1.6, users should have no trouble linking with
1107 gd 1.6.1 if they follow the instructions and install all of
1108 the pieces. However, <strong>If you get undefined symbol errors,
1109 be sure to check for older versions of libpng in your
1110 library directories!</strong>
1111 <P><A NAME="whatsnew1.6"><H3>What's new in version 1.6?</H3></A>
1112 Version 1.6 features the following changes:
1113 <p>
1114 <strong>Support for 8-bit palette PNG images has been added.
1115 Support for GIF has been removed.</strong> This step was taken
1116 to completely avoid the legal controversy regarding the LZW
1117 compression algorithm used in GIF. Unisys holds a patent which
1118 is relevant to LZW compression. PNG is a superior image format
1119 in any case. Now that PNG is supported by both Microsoft
1120 Internet Explorer and Netscape (in their recent releases),
1121 we highly recommend that GD users upgrade in order to get
1122 well-compressed images in a format which is legally unemcumbered.
1123
1124 <P><A NAME="whatsnew1.5"><H3>What's new in version 1.5?</H3></A>
1125
1126 Version 1.5 featured the following changes:
1127
1128 <dl>
1129 <dt><b>New GD2 format</b>
1130 <dd> An improvement over the GD format, the GD2 format uses the zlib
1131 compression library to compress the image in chunks. This results
1132 in file sizes comparable to GIFs, with the ability to access parts
1133 of large images without having to read the entire image into memory.
1134 <p>
1135 This format also supports version numbers and rudimentary validity
1136 checks, so it should be more 'supportable' than the previous GD format.
1137 <p>
1138 <dt><b>Re-arranged source files</b>
1139 <dd> gd.c has been broken into constituant parts: io, gif, gd, gd2 and
1140 graphics functions are now in separate files.
1141 <p>
1142 <dt><b>Extended I/O capabilities.</b>
1143 <dd> The source/sink feature has been extended to support GD2 file formats (which
1144 require seek/tell functions; seek must return 1 for success, 0 for failure), and to allow more general non-file I/O.
1145 <p>
1146 <dt><b>Better support for Lincoln Stein's Perl Module</b>
1147 <dd> The new gdImage*Ptr function returns the chosen format stored in a block of memory.
1148 This can be directly used by the GD perl module.
1149 <p>
1150 <dt><b>Added functions</b>
1151 <dd>gdImageCreateFromGd2Part - allows retrieval of part of an image (good for huge images, like maps),
1152 <br>gdImagePaletteCopy - Copies a palette from one image to another, doing it's best to match the colors in the target image to the colors in the source palette.
1153 <br>gdImageGd2, gdImageCreateFromGd2 - Support for new format
1154 <br>gdImageCopyMerge - Merges two images (useful to highlight part of an image)
1155 <br>gdImageCopyMergeGray - Similar to gdImageCopyMerge, but tries to preserve source image hue.
1156 <br>gdImagePngPtr, gdImageJpegPtr, gdImageWBMPPtr, gdImageGdPtr, gdImageGd2Ptr - return memory blocks for each type of image.
1157 <br>gdImageCreateFromPngCtx, gdImageCreateFromGdCtx, gdImageCreateFromGd2Ctx, gdImageCreateFromGd2PartCtx - Support for new I/O context.
1158
1159 </dl>
1160
1161 <b>NOTE:</b> In fairness to Thomas Boutell, any bug/problems with any of the above features should
1162 probably be reported to <a href=mailto:pjw@rhyme.com.au>Philip Warner</a>.
1163
1164 <P><A NAME="whatsnew1.4"><H3>What's new in version 1.4?</H3></A>
1165
1166 Version 1.4 features the following changes:
1167 <dl>
1168 <dt>Fixed polygon fill routine (again)
1169 <dd>Thanks to Kirsten Schulz, version 1.4 is able to fill
1170 numerous types of polygons that caused problems with
1171 previous releases, including version 1.3.
1172 <dt>Support for alternate data sources
1173 <dd>Programmers who wish to load a GIF from something other
1174 than a stdio FILE * stream can use the new
1175 <a href="#gdImageCreateFromPngSource">gdImageCreateFromPngSource</a> function.
1176 <dt>Support for alternate data destinations
1177 <dd>Programmers who wish to write a GIF to something other
1178 than a stdio FILE * stream can use the new
1179 <a href="#gdImagePngToSink">gdImagePngToSink</a> function.
1180 <dt>More tolerant when reading GIFs
1181 <dd>
1182 Version 1.4 does not crash when reading certain animated GIFs,
1183 although it still only reads the first frame. Version 1.4 also has
1184 overflow testing code to prevent crashes when reading
1185 damaged GIFs.
1186 </dl>
1187 <P><A NAME="whatsnew1.3"><H3>What's new in version 1.3?</H3></A>
1188 Version 1.3 features the following changes:
1189 <dl>
1190 <dt>Non-LZW-based GIF compression code
1191 <dd>
1192 Version 1.3 contained GIF compression code that uses simple Run Length
1193 Encoding instead of LZW compression, while still retaining compatibility
1194 with normal LZW-based GIF decoders (your browser will still like your GIFs).
1195 <strong>LZW compression is patented by Unisys. We are currently reevaluating
1196 the approach taken by gd 1.3. The current release of gd does not support
1197 this approach. We recommend that you use the current release, and generate
1198 PNG images.</strong> Thanks to
1199 Hutchison Avenue Software Corporation for contributing
1200 the RLE GIF code.
1201 <dt>8-bit fonts, and 8-bit font support
1202 <dd>This improves support for European languages. Thanks are due
1203 to Honza Pazdziora <adelton@informatics.muni.cz> and also to
1204 Jan Pazdziora <adelton@fi.muni.cz>. Also see the provided bdftogd
1205 Perl script if you wish to convert fixed-width X11 fonts
1206 to gd fonts.
1207 <dt>16-bit font support (no fonts provided)
1208 <dd>Although no such fonts are provided in the distribution,
1209 fonts containing more than 256 characters should work if the
1210 gdImageString16 and gdImageStringUp16 routines are used.
1211 <dt>Improvements to the "webpng" example/utility
1212 <dd>The "webpng" utility is now a slightly more useful application. Thanks to
1213 Brian Dowling for this code.
1214 <dt>Corrections to the color resolution field of GIF output
1215 <dd>Thanks to Bruno Aureli.
1216 <dt>Fixed polygon fills
1217 <dd>A one-line patch for the infamous polygon fill bug, courtesy
1218 of Jim Mason. I believe this fix is sufficient. However, if you
1219 find a situation where polygon fills still fail to behave properly,
1220 please send code that demonstrates the problem, <em>and</em> a fix if
1221 you have one. Verifying the fix is important.
1222 <dt>Row-major, not column-major
1223 <dd>Internally, gd now represents the array of pixels as
1224 an array of rows of pixels, rather than an array of columns
1225 of pixels. This improves the performance of compression and
1226 decompression routines slightly, because horizontally adjacent
1227 pixels are now next to each other in memory. <strong>This should
1228 not affect properly written gd applications, but applications that
1229 directly manipulate the <code>pixels</code> array will require
1230 changes.</strong>
1231 </dl>
1232 <A NAME="required"><H3>What else do I need to use gd?</H3></A>
1233 <P>
1234 To use gd, you will need an ANSI C compiler. <strong>All popular
1235 Windows 95 and NT C compilers are ANSI C compliant.</strong> Any
1236 full-ANSI-standard C compiler should be adequate. <strong>The cc
1237 compiler released with SunOS 4.1.3 is not an ANSI C compiler.
1238 Most Unix users who do not already have gcc should get it.
1239 gcc is free, ANSI compliant and a de facto industry standard.
1240 Ask your ISP why it is missing.</strong>
1241 <P>
1242 As of version 1.6, you also need the zlib compression library,
1243 and the libpng library. As of version 1.6.2, you can draw text
1244 using antialiased TrueType fonts if you also have the libttf
1245 library installed, but this is not mandatory.
1246 zlib is available for a variety of platforms from
1247 <a href="http://www.freesoftware.com/pub/infozip/index.html">the zlib web site</a>.
1248 libpng is available for a variety of platforms from
1249 <a href="http://www.cdrom.com/pub/png/">the PNG web site</a>.
1250
1251 <P>
1252 You will also want a PNG viewer, if you do not already have
1253 one for your system, since you will need a good way to check the
1254 results of your work. Netscape 4.04 and higher, and Microsoft
1255 Internet Explorer 4.0 or higher, both support PNG.
1256 <strong>Not every PNG-compatible viewer supports alpha channel
1257 transparency,</strong> which is why gd 2.0.2 and above do alpha
1258 blending in the library by default; it is possible to turn on the
1259 saving of alpha channel information to the file instead.
1260 <P>
1261 <A NAME="getgd"><H3>How do I get gd?</H3></A>
1262 <h4>Binaries (DLL for Windows programmers):</h4>
1263 <ul>
1264 <li><a href="http://www.libgd.org/Downloads">.ZIP File of DLL, Headers, Et Cetera</a>
1265 <p>
1266 </ul>
1267 <h4>Source Code:</h4>
1268 <ul>
1269 <li><a href="http://www.libgd.org/Downloads">Gzipped Tar File (Unix)</a>
1270 <li><a href="http://www.boutell.com/gd/http/gd-2.0.33.tar.gz">.ZIP File of SOURCE CODE (Windows)</a>
1271 </ul>
1272 <P>
1273 <A NAME="buildgd"><H3>How do I build gd?</H3></A>
1274 <blockquote>
1275 Win32 DLL users: if you are using MSVC, use the provided batch file
1276 <code>makemsvcimport.bat</code> to make a bgd.lib import library
1277 corresponding to the provided bgd.dll. Copy bgd.dll to your
1278 application directory, or to your Windows sytem directory. In the
1279 settings of your MSVC project, you <b>MUST</b> choose the
1280 "multithreaded DLL" library option under "code generation."
1281 mingw32 and cygwin users can simply link with the provided libbgd.a
1282 stub library in order to use the DLL.
1283 </blockquote>
1284 Building gd From the Source
1285 <p>
1286 In order to build gd, you must first unpack the archive you have
1287 downloaded. If you are not familiar with <code>tar</code> and
1288 <code>gunzip</code> (Unix) or <code>ZIP</code> (Windows), please
1289 consult with an experienced user of your system. Sorry, we cannot
1290 answer questions about basic Internet skills.
1291 <p>
1292 Unpacking the archive will produce a directory called "gd-2.0.33".
1293 <p>
1294 <h4>For Unix</h4>
1295 <code>cd</code> to the 2.0.33 directory and type:
1296 <p>
1297 <code>./configure</code>
1298 <P>
1299 <blockquote>
1300 <STRONG>NOTE: BY DEFAULT, THE LIBRARY IS INSTALLED IN
1301 <code>/usr/local/lib</code></strong> and the include files are
1302 installed in <code>/usr/local/include</code>. IF YOU ARE
1303 UPGRADING, you may wish to use:
1304 <pre>
1305 ./configure --prefix=/usr
1306 </pre>
1307 Rather than just <code>./configure</code>, before typing
1308 <code>make</code> and <code>make install</code>.
1309 </blockquote>
1310 <p>
1311 If all goes well, this will create a Makefile. If all does not go well --
1312 for instance, if neither the the JPEG nor the PNG and ZLIB libraries
1313 are found -- you will need to install those libraries, then come back
1314 and run <code>configure</code> again.
1315 <p>
1316 If necessary, make changes to the resulting Makefile. Then,
1317 type "make". If there are no errors, follow this with "make install".
1318 Because gd 2.0 and above installs as a shared library, it is necessary to
1319 install the library properly before running gd-based programs.
1320 <p>
1321 If you get errors, type <code>./configure --help</code> for more
1322 information about the available options. In the unlikely event
1323 that the GNU autoconf-produced configure script does not work well
1324 for you, you may wish to try <code>configure.pl</code>, a
1325 simple Perl script with similar but less complete capabilities.
1326 If all else fails, try renaming <code>makefile.sample</code>
1327 to <code>Makefile</code>. However, <code>./configure</code> is
1328 almost always your best bet.
1329 <blockquote>
1330 <h4>For Windows</h4>
1331 Use the DLL version! See the paragraph at the beginning of this sectino.
1332 If you really want to compile it yourself for some strange reason, read on.
1333 <p>
1334 Create a project using your favorite programming environment.
1335 Copy all of the gd files to the project directory. Add <code>gd.c</code>
1336 to your project. Add other source files as appropriate. Learning the
1337 basic skills of creating projects with your chosen C environment
1338 is up to you. Alternatively, use the free <code>mingw32</code>
1339 or <code>cygwin</code> tools, which may prove to be compatible
1340 with the provided <code>configure</code> script.
1341 </blockquote>
1342 <P>
1343 If you wish to test the library, type "make test" AFTER you have
1344 successfully executed "make install". This will build
1345 several test programs, including "gddemo". (Not all of these
1346 programs are expected to print completely successful messages,
1347 depending on the nature of the image formats with which some of
1348 the tests are tried; for instance, WBMP is a black and white
1349 format, so loss of color information is expected there.)
1350 Run gddemo to see some of the capabilities of gd. Run
1351 gdtestft to play with the freetype support, if you have built
1352 gd with it and have access to truetype fonts.
1353 <P>
1354 gddemo should execute without incident, creating the file
1355 demoout.png. (Note there is also a file named demoin.png,
1356 which is provided in the package as part of the demonstration.)
1357 <P>
1358 Display demoout.png in your PNG viewer. The image should
1359 be 128x128 pixels and should contain an image of the
1360 space shuttle with quite a lot of graphical elements drawn
1361 on top of it.
1362 <P>
1363 (If you are missing the demoin.png file, the other items
1364 should appear anyway.)
1365 <P>
1366 Look at demoin.png to see the original space shuttle
1367 image which was scaled and copied into the output image.
1368 <P>
1369 <A NAME="basics"><H3>gd basics: using gd in your program</H3></A>
1370 gd lets you create PNG or JPEG images on the fly. To use gd in your
1371 program, include the file gd.h, and link with the gd
1372 library and the other required libraries; the syntax for
1373 most Unix flavors is:
1374 <pre>
1375 -lgd -lpng -lz -ljpeg -lfreetype -lm
1376 </pre>
1377 Assuming that all of these libraries are available.
1378 <P>
1379 If you want to use the provided simple fonts, include
1380 gdfontt.h, gdfonts.h, gdfontmb.h, gdfontl.h and/or gdfontg.h. For
1381 more impressive results, install FreeType 2.x and use the
1382 <a href="#gdImageStringFT">gdImageStringFT</a>
1383 function. If you are not using the provided Makefile and/or a
1384 library-based approach, be sure to include the source modules as well in your
1385 project. (They may be too large for 16-bit memory models,
1386 that is, 16-bit DOS and Windows.)
1387 <P>
1388 Here is a short example program. <strong>(For a more advanced example,
1389 see gddemo.c, included in the distribution. gddemo.c is NOT the same program;
1390 it demonstrates additional features!)</strong>
1391 <P>
1392 <PRE>
1393 /* Bring in gd library functions */
1394 #include "gd.h"
1395
1396 /* Bring in standard I/O so we can output the PNG to a file */
1397 #include &lt;stdio.h&gt;
1398
1399 int main() {
1400 /* Declare the image */
1401 <A HREF="#gdImagePtr">gdImagePtr</A> im;
1402 /* Declare output files */
1403 FILE *pngout, *jpegout;
1404 /* Declare color indexes */
1405 int black;
1406 int white;
1407
1408 /* Allocate the image: 64 pixels across by 64 pixels tall */
1409 im = <A HREF="#gdImageCreate">gdImageCreate</A>(64, 64);
1410
1411 /* Allocate the color black (red, green and blue all minimum).
1412 Since this is the first color in a new image, it will
1413 be the background color. */
1414 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
1415
1416 /* Allocate the color white (red, green and blue all maximum). */
1417 white = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 255, 255);
1418
1419 /* Draw a line from the upper left to the lower right,
1420 using white color index. */
1421 <A HREF="#gdImageLine">gdImageLine</A>(im, 0, 0, 63, 63, white);
1422
1423 /* Open a file for writing. "wb" means "write binary", important
1424 under MSDOS, harmless under Unix. */
1425 pngout = fopen("test.png", "wb");
1426
1427 /* Do the same for a JPEG-format file. */
1428 jpegout = fopen("test.jpg", "wb");
1429
1430 /* Output the image to the disk file in PNG format. */
1431 <A HREF="#gdImagePng">gdImagePng</A>(im, pngout);
1432
1433 /* Output the same image in JPEG format, using the default
1434 JPEG quality setting. */
1435 <A HREF="#gdImageJpeg">gdImageJpeg</A>(im, jpegout, -1);
1436
1437 /* Close the files. */
1438 fclose(pngout);
1439 fclose(jpegout);
1440
1441 /* Destroy the image in memory. */
1442 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
1443 }
1444 </PRE>
1445 When executed, this program creates an image, allocates
1446 two colors (the first color allocated becomes the background
1447 color), draws a diagonal line (note that 0, 0 is the upper
1448 left corner), writes the image to PNG and JPEG files, and
1449 destroys the image.
1450 <P>
1451 The above example program should
1452 give you an idea of how the package works.
1453 gd provides many additional functions, which are listed
1454 in the following reference chapters, complete with code
1455 snippets demonstrating each. There is also an
1456 <A HREF="#index">alphabetical index</A>.
1457 <H3><A NAME="webpng">Webpng: a more powerful gd example</A></H3>
1458 Webpng is a simple utility program to manipulate PNGs from the
1459 command line. It is written for Unix and similar command-line
1460 systems, but should be easily adapted for other environments.
1461 Webpng allows you to set transparency and interlacing and
1462 output interesting information about the PNG in question.
1463 <P>
1464 webpng.c is provided in the distribution. Unix users can
1465 simply type "make webpng" to compile the program. Type
1466 "webpng" with no arguments to see the available options.
1467 <H2><A NAME="reference">Function and type reference</A></H2>
1468 <UL>
1469 <LI><A HREF="#types">Types</A></LI>
1470 <LI><A HREF="#creating">Image creation, destruction, loading and saving</A></LI>
1471 <LI><A HREF="#drawing">Drawing, styling, brushing, tiling and
1472 filling functions</A></LI>
1473 <LI><A HREF="#query">Query functions (not color-related)</A></LI>
1474 <LI><A HREF="#fonts">Font and text-handling functions</A></LI>
1475 <LI><A HREF="#colors">Color handling functions</A></LI>
1476 <LI><A HREF="#copying">Copying, resizing, rotating, deformation and filter
1477 functions</A></LI>
1478 <LI><A HREF="#misc">Miscellaneous Functions</A></LI>
1479 <LI><A HREF="#constants">Constants</A></LI>
1480 </UL>
1481 <H3><A NAME="types">Types</A></H3>
1482 <DL>
1483 <DT><A NAME="gdImage"><code>gdImage</code><strong>(TYPE)</strong></A>
1484 <DD>
1485 The data structure in which gd stores images. <A HREF="#gdImageCreate">
1486 gdImageCreate</A>, <a href="#gdImageCreateTrueColor">gdImageCreateTrueColor</a>
1487 and the various image file-loading functions return
1488 a pointer to this type, and the other functions expect to receive
1489 a pointer to this type as their first argument. It is reasonably safe to
1490 examine any of the members of this structure. It is also reasonably
1491 safe to modify individual pixels within the <code>pixels</code>
1492 or <code>tpixels</code> arrays. If the <code>trueColor</code> flag
1493 is set, the <code>tpixels</code> array is valid; otherwise the
1494 <code>pixels</code> array is valid.
1495 <p>
1496 The <code>colorsTotal</code>, <code>red</code>, <code>green</code>,
1497 <code>blue</code>, <code>alpha</code> and <code>open</code> arrays
1498 manage the palette. They are valid only when the <code>trueColor</code>
1499 flag is not set.
1500 The <code>transparent</code> value contains the palette index of the first
1501 transparent color as read-only information for backwards compatibility;
1502 gd 2.0 stores this information in the <code>alpha</code> array so that
1503 variable transparency can be supported for each palette entry. However,
1504 for truecolor images, <code>transparent</code> represents a single
1505 RGB color which is <strong>always 100% transparent</strong>, and this
1506 feature is generally supported by browsers which do not support
1507 full alpha channels.
1508 <PRE>
1509 typedef struct {
1510 /* Palette-based image pixels */
1511 unsigned char ** pixels;
1512 int sx;
1513 int sy;
1514 /* These are valid in palette images only. See also
1515 /* 'alpha', which appears later in the structure to
1516 preserve binary backwards compatibility */
1517 int colorsTotal;
1518 int red[gdMaxColors];
1519 int green[gdMaxColors];
1520 int blue[gdMaxColors];
1521 int open[gdMaxColors];
1522 /* For backwards compatibility, this is set to the
1523 first palette entry with 100% transparency,
1524 and is also set and reset by the
1525 gdImageColorTransparent function. Newer
1526 applications can allocate palette entries
1527 with any desired level of transparency; however,
1528 bear in mind that many viewers, notably
1529 many web browsers, fail to implement
1530 full alpha channel for PNG and provide
1531 support for full opacity or transparency only. */
1532 int transparent;
1533 int *polyInts;
1534 int polyAllocated;
1535 struct gdImageStruct *brush;
1536 struct gdImageStruct *tile;
1537 int brushColorMap[gdMaxColors];
1538 int tileColorMap[gdMaxColors];
1539 int styleLength;
1540 int stylePos;
1541 int *style;
1542 int interlace;
1543 /* New in 2.0: alpha channel for palettes. Note that only
1544 Macintosh Internet Explorer and (possibly) Netscape 6
1545 really support multiple levels of transparency in
1546 palettes, to my knowledge, as of 2/15/01. Most
1547 common browsers will display 100% opaque and
1548 100% transparent correctly, and do something
1549 unpredictable and/or undesirable for levels
1550 in between. TBB */
1551 int alpha[gdMaxColors];
1552 /* Truecolor flag and pixels. New 2.0 fields appear here at the
1553 end to minimize breakage of existing object code. */
1554 int trueColor;
1555 int ** tpixels;
1556 /* Should alpha channel be copied, or applied, each time a
1557 pixel is drawn? This applies to truecolor images only.
1558 No attempt is made to alpha-blend in palette images,
1559 even if semitransparent palette entries exist.
1560 To do that, build your image as a truecolor image,
1561 then quantize down to 8 bits. */
1562 int alphaBlendingFlag;
1563 /* Should the alpha channel of the image be saved? This affects
1564 PNG at the moment; other future formats may also
1565 have that capability. JPEG doesn't. */
1566 int saveAlphaFlag;
1567 } gdImage;
1568 </PRE>
1569 <p>
1570 The order of the structure members may appear confusing, but was chosen
1571 deliberately to increase backwards compatibility with existing gd 1.x-based
1572 binary code that references particular structure members.
1573 <DT><A NAME="gdImagePtr">gdImagePtr</A> <strong>(TYPE)</strong>
1574 <DD>
1575 A pointer to an image structure. <A HREF="#gdImageCreate">gdImageCreate</A>
1576 returns this type, and the other functions expect it as the first
1577 argument.
1578 <DT><A NAME="gdIoCtx">gdIOCtx</a> <strong>(TYPE)</strong>
1579 <DD>
1580 Most of the gd functions that read and write files, such as
1581 <a href="#gdImagePng">gdImagePng</a> and <a href="#gdImageCreateFromJpeg"></a>,
1582 also have variants that accept a gdIOCtx structure; see
1583 <a href="#gdImagePngCtx">gdImagePngCtx</a> and
1584 <a href="#gdImageCreateFromJpegCtx">gdImageCreateFromJpegCtx</a>. Those who wish to provide
1585 their own custom routines to read and write images can populate a
1586 gdIOCtx structure with functions of their own devising to
1587 to read and write data. For image reading, the only mandatory
1588 functions are getC and getBuf, which must return the number of
1589 characters actually read, or a negative value on error or EOF.
1590 These functions must read the number of characters requested
1591 unless at the end of the file. For image writing, the only mandatory
1592 functions are putC and putBuf, which return the number of
1593 characters written; these functions must write the number of
1594 characters requested except in the event of an error. The seek
1595 and tell functions are only required in conjunction with the
1596 <code>gd2</code> file format, which supports quick loading of
1597 partial images. The gd_free function will not be invoked when
1598 calling the standard Ctx functions; it is an implementation
1599 convenience when adding new data types to gd. For examples,
1600 see gd_png.c, gd_gd2.c, gd_jpeg.c, etc., all of which rely
1601 on gdIOCtx to implement the standard image read and write functions.
1602
1603 <pre>
1604 typedef struct gdIOCtx
1605 {
1606 int (*getC) (struct gdIOCtx *);
1607 int (*getBuf) (struct gdIOCtx *, void *, int wanted);
1608
1609 void (*putC) (struct gdIOCtx *, int);
1610 int (*putBuf) (struct gdIOCtx *, const void *, int wanted);
1611
1612 /* seek must return 1 on SUCCESS, 0 on FAILURE. Unlike fseek! */
1613 int (*seek) (struct gdIOCtx *, const int);
1614
1615 long (*tell) (struct gdIOCtx *);
1616
1617 void (*gd_free) (struct gdIOCtx *);
1618
1619 } gdIOCtx;
1620 </pre>
1621
1622
1623 <DT><A NAME="gdFont">gdFont</A> <strong>(TYPE)</strong>
1624 <DD>
1625 A font structure. Used to declare the characteristics of a font.
1626 Please see the files gdfontl.c and gdfontl.h for an example of the
1627 proper declaration of this structure. You can provide your
1628 own font data by providing such a structure and the associated
1629 pixel array. You can determine the width and height of a single
1630 character in a font by examining the w and h members of the
1631 structure. If you will not be creating your own fonts, you will
1632 not need to concern yourself with the rest of the components of this
1633 structure.
1634 <PRE>
1635 typedef struct {
1636 /* # of characters in font */
1637 int nchars;
1638 /* First character is numbered... (usually 32 = space) */
1639 int offset;
1640 /* Character width and height */
1641 int w;
1642 int h;
1643 /* Font data; array of characters, one row after another.
1644 Easily included in code, also easily loaded from
1645 data files. */
1646 char *data;
1647 } gdFont;
1648 </PRE>
1649 <DT><A NAME="gdFontPtr">gdFontPtr</A> <strong>(TYPE)</strong>
1650 <DD>
1651 A pointer to a font structure. Text-output functions expect these
1652 as their second argument, following the <A HREF="#gdImagePtr">
1653 gdImagePtr</A> argument. Two such pointers are declared in the
1654 provided include files gdfonts.h and gdfontl.h.
1655 <DT><A NAME="gdPoint">gdPoint</A> <strong>(TYPE)</strong>
1656 <DD>
1657 Represents a point in the coordinate space of the image; used
1658 by <A HREF="#gdImagePolygon">gdImagePolygon</A>,
1659 <A HREF="#gdImageOpenPolygon">gdImageOpenPolygon</A> and
1660 <A HREF="#gdImageFilledPolygon">gdImageFilledPolygon</A>.
1661 <PRE>
1662 typedef struct {
1663 int x, y;
1664 } gdPoint, *gdPointPtr;
1665 </PRE>
1666 <DT><A NAME="gdPointPtr">gdPointPtr</A> <strong>(TYPE)</strong>
1667 <DD>
1668 A pointer to a <A HREF="#gdPoint">gdPoint</A> structure; passed
1669 as an argument to <A HREF="#gdImagePolygon">gdImagePolygon</A>,
1670 <A HREF="#gdImageOpenPolygon">gdImageOpenPolygon</A>
1671 and <A HREF="#gdImageFilledPolygon">gdImageFilledPolygon</A>.
1672 </DL>
1673 <DT><A NAME="gdFTStringExtra">gdFTStringExtra</a> <strong>(TYPE)</strong>
1674 <DD>
1675 A structure used to pass additional parameters to the
1676 <a href="#gdImageStringFTEx">gdImageStringFTEx</a> function. See
1677 <a href="#gdImageStringFTEx">gdImageStringFTEx</a> for the
1678 structure definition.
1679 </DD>
1680 <DT><A NAME="gdFTStringExtraPtr">gdFTStringExtraPtr</a> <strong>(TYPE)</strong>
1681 <DD>
1682 A pointer to a structure used to pass additional parameters to the
1683 <a href="#gdImageStringFTEx">gdImageStringFTEx</a> function. See
1684 <a href="#gdImageStringFTEx">gdImageStringFTEx</a> for the
1685 structure definition.
1686 </DD>
1687 <DT><A NAME="gdSource">gdSource</A> <strong>(TYPE)</strong>
1688 <DD>
1689 <pre>
1690 typedef struct {
1691 int (*source) (void *context, char *buffer, int len);
1692 void *context;
1693 } gdSource, *gdSourcePtr;
1694 </pre>
1695 Represents a source from which a PNG can be read.
1696 Programmers who do not wish to read PNGs from a file can provide
1697 their own alternate input mechanism, using the
1698 <a href="#gdImageCreateFromPngSource">gdImageCreateFromPngSource</a> function.
1699 See the documentation of that function for an example of the
1700 proper use of this type.
1701 <DT><A NAME="gdSink">gdSink</A> <strong>(TYPE)</strong>
1702 <DD>
1703 <PRE>
1704 typedef struct {
1705 int (*sink) (void *context, char *buffer, int len);
1706 void *context;
1707 } gdSink, *gdSinkPtr;
1708 </PRE>
1709 Represents a "sink" (destination) to which a PNG can be written.
1710 Programmers who do not wish to write PNGs to a file can provide
1711 their own alternate output mechanism, using the
1712 <a href="#gdImagePngToSink">gdImagePngToSink</a> function.
1713 See the documentation of that function for an example of the
1714 proper use of this type.
1715 <H3><A NAME="creating">Image creation, destruction, loading and saving</A></H3>
1716 <DL>
1717 <DT><A NAME="gdImageCreate">gdImageCreate(sx, sy)</A>
1718 <strong>(FUNCTION)</strong>
1719 <DD>
1720 gdImageCreate is called to create palette-based images, with no
1721 more than 256 colors. Invoke gdImageCreate
1722 with the x and y dimensions of the desired image. gdImageCreate
1723 returns a <A HREF="#gdImagePtr">gdImagePtr</A> to the new image, or
1724 NULL if unable to
1725 allocate the image. The image must eventually be destroyed
1726 using <A HREF="#gdImageDestroy">gdImageDestroy()</A>.
1727 <PRE>
1728 ... inside a function ...
1729 <A HREF="#gdImagePtr">gdImagePtr</A> im;
1730 im = gdImageCreate(64, 64);
1731 /* ... Use the image ... */
1732 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
1733 </PRE>
1734 <DT><A NAME="gdImageCreateTrueColor">gdImageCreateTrueColor(sx, sy)</A>
1735 <strong>(FUNCTION)</strong>
1736 <DD>
1737 gdImageCreateTrueColor is called to create truecolor images, with
1738 an essentially unlimited number of colors. Invoke gdImageCreateTrueColor
1739 with the x and y dimensions of the desired image. gdImageCreateTrueColor
1740 returns a <A HREF="#gdImagePtr">gdImagePtr</A> to the new image, or
1741 NULL if unable to
1742 allocate the image. The image must eventually be destroyed
1743 using <A HREF="#gdImageDestroy">gdImageDestroy()</A>.
1744 <p>
1745 Truecolor images are always filled with black at creation time.
1746 There is no concept of a "background" color index.
1747 <PRE>
1748 ... inside a function ...
1749 <A HREF="#gdImagePtr">gdImagePtr</A> im;
1750 im = gdImageCreateTrueColor(64, 64);
1751 /* ... Use the image ... */
1752 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
1753 </PRE>
1754 <DT><A NAME="gdImageCreateFromJpeg">gdImageCreateFromJpeg(FILE *in)</A>
1755 <strong>(FUNCTION)</strong>
1756 <br>
1757 <A NAME="gdImageCreateFromJpegPtr">gdImageCreateFromJpegPtr(int size, void *data)</A>
1758 <strong>(FUNCTION)</strong>
1759 <br>
1760 <A NAME="gdImageCreateFromJpegCtx">gdImageCreateFromJpegCtx(gdIOCtx *in)</A>
1761 <strong>(FUNCTION)</strong>
1762 <p>
1763 <DD>
1764 gdImageCreateFromJpeg is called to load truecolor images from JPEG format files.
1765 Invoke gdImageCreateFromJpeg with an already opened pointer to a file
1766 containing the desired image.
1767 gdImageCreateFromJpeg
1768 returns a <A HREF="#gdImagePtr">gdImagePtr</A> to the new
1769 truecolor image, or NULL
1770 if unable to load the image (most often because the file is corrupt or
1771 does not contain a JPEG image). gdImageCreateFromJpeg does <em>not</em>
1772 close the file. You can inspect the sx and sy members of the
1773 image to determine its size. The image must eventually be destroyed
1774 using <A HREF="#gdImageDestroy">gdImageDestroy()</A>. <strong>The
1775 returned image is always a truecolor image.</strong>
1776 <p>
1777 If you already have the
1778 image file in memory, pass the size of the file and a pointer to the
1779 file's data to gdImageCreateFromJpegPtr, which is otherwise identical
1780 to gdImageCreateFromJpeg.
1781 <p>
1782 <PRE>
1783 <A HREF="#gdImagePtr">gdImagePtr</A> im;
1784 ... inside a function ...
1785 FILE *in;
1786 in = fopen("myjpeg.jpg", "rb");
1787 im = gdImageCreateFromJpeg(in);
1788 fclose(in);
1789 /* ... Use the image ... */
1790 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
1791 </PRE>
1792 <DT><A NAME="gdImageCreateFromPng">gdImageCreateFromPng(FILE *in)</A>
1793 <strong>(FUNCTION)</strong>
1794 <BR><A NAME="gdImageCreateFromPngPtr">gdImageCreateFromPngPtr(int size, void *data)</A>
1795 <strong>(FUNCTION)</strong>
1796 <BR><A NAME="gdImageCreateFromPngCtx">gdImageCreateFromPngCtx(<a href=#gdioctx>gdIOCtx</a> *in)</A>
1797 <strong>(FUNCTION)</strong>
1798 <p>
1799 <DD>
1800 gdImageCreateFromPng is called to load images from PNG format files.
1801 Invoke gdImageCreateFromPng with an already opened pointer to a file
1802 containing the desired image.
1803 gdImageCreateFromPng
1804 returns a <A HREF="#gdImagePtr">gdImagePtr</A> to the new image, or NULL
1805 if unable to load the image (most often because the file is corrupt or
1806 does not contain a PNG image). gdImageCreateFromPng does <em>not</em>
1807 close the file. You can inspect the sx and sy members of the
1808 image to determine its size. The image must eventually be destroyed
1809 using <A HREF="#gdImageDestroy">gdImageDestroy()</A>.
1810 <p>
1811 If you already have the
1812 image file in memory, pass the size of the file and a pointer to the
1813 file's data to gdImageCreateFromPngPtr, which is otherwise identical
1814 to gdImageCreateFromPng.
1815 <p>
1816 If the PNG image being loaded is a truecolor image, the resulting
1817 gdImagePtr will refer to a truecolor image. If the PNG image
1818 being loaded is a palette or grayscale image, the resulting
1819 gdImagePtr will refer to a palette image. gd retains only 8 bits
1820 of resolution for each of the red, green and blue channels, and
1821 only 7 bits of resolution for the alpha channel. The former
1822 restriction affects only a handful of very rare 48-bit color
1823 and 16-bit grayscale PNG images. The second restriction affects
1824 all semitransparent PNG images, but the difference is essentially
1825 invisible to the eye. 7 bits of alpha channel resolution is,
1826 in practice, quite a lot.
1827 <PRE>
1828 <A HREF="#gdImagePtr">gdImagePtr</A> im;
1829 ... inside a function ...
1830 FILE *in;
1831 in = fopen("mypng.png", "rb");
1832 im = gdImageCreateFromPng(in);
1833 fclose(in);
1834 /* ... Use the image ... */
1835 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
1836 </PRE>
1837 <DT><A NAME="gdImageCreateFromPngSource">gdImageCreateFromPngSource(gdSourcePtr in)</A>
1838 <strong>(FUNCTION)</strong>
1839 <dd>
1840 <b>Deprecated</b> in favor of
1841 <a href="#gdImageCreateFromPngCtx">gdImageCreateFromPngCtx</a>. Should
1842 not be used in new applications.
1843 <p>
1844 gdImageCreateFromPngSource is called to load a PNG from
1845 a data source other than a file. Usage is very similar to
1846 the <a href="#gdImageCreateFromPng">gdImageCreateFromPng</a> function,
1847 except that the programmer provides a custom data source.
1848 <p>
1849 The programmer must write an input function which accepts
1850 a context pointer, a buffer, and a number of bytes to be
1851 read as arguments. This function must read the number of
1852 bytes requested, unless the end of the file has been reached,
1853 in which case the function should return zero, or an error
1854 has occurred, in which case the function should return
1855 <code>-1</code>. The programmer then creates a
1856 <a href="#gdSource">gdSource</a> structure and sets
1857 the <code>source</code> pointer to the input function and
1858 the context pointer to any value which is useful to the
1859 programmer.
1860 <p>
1861 The example below
1862 implements <a href="#gdImageCreateFromPng">gdImageCreateFromPng</a>
1863 by creating a custom data source and invoking gdImageCreateFromPngSource.
1864 <pre>
1865 static int freadWrapper(void *context, char *buf, int len);
1866
1867 gdImagePtr gdImageCreateFromPng(FILE *in)
1868 {
1869 gdSource s;
1870 s.source = freadWrapper;
1871 s.context = in;
1872 return gdImageCreateFromPngSource(&s);
1873 }
1874
1875 static int freadWrapper(void *context, char *buf, int len)
1876 {
1877 int got = fread(buf, 1, len, (FILE *) context);
1878 return got;
1879 }
1880 </pre>
1881 <DT><A NAME="gdImageCreateFromGif">gdImageCreateFromGif(FILE *in)</A>
1882 <strong>(FUNCTION)</strong>
1883 <BR><A NAME="gdImageCreateFromGifPtr">gdImageCreateFromGifPtr(int size, void *data)</A>
1884 <strong>(FUNCTION)</strong>
1885 <BR><A NAME="gdImageCreateFromGifCtx">gdImageCreateFromGifCtx(<a href=#gdioctx>gdIOCtx</a> *in)</A>
1886 <strong>(FUNCTION)</strong>
1887 <p>
1888 <DD>
1889 gdImageCreateFromGif is called to load images from GIF format files.
1890 Invoke gdImageCreateFromGif with an already opened pointer to a file
1891 containing the desired image.
1892 gdImageCreateFromGif
1893 returns a <A HREF="#gdImagePtr">gdImagePtr</A> to the new image, or NULL
1894 if unable to load the image (most often because the file is corrupt or
1895 does not contain a GIF image). gdImageCreateFromGif does <em>not</em>
1896 close the file. You can inspect the sx and sy members of the
1897 image to determine its size. The image must eventually be destroyed
1898 using <A HREF="#gdImageDestroy">gdImageDestroy()</A>.
1899 <p>
1900 If you already have the
1901 image file in memory, pass the size of the file and a pointer to the
1902 file's data to gdImageCreateFromGifPtr, which is otherwise identical
1903 to gdImageCreateFromGif.
1904 <PRE>
1905 <A HREF="#gdImagePtr">gdImagePtr</A> im;
1906 ... inside a function ...
1907 FILE *in;
1908 in = fopen("mygif.gif", "rb");
1909 im = gdImageCreateFromGif(in);
1910 fclose(in);
1911 /* ... Use the image ... */
1912 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
1913 </PRE>
1914 <DT><A NAME="gdImageCreateFromGd">gdImageCreateFromGd(FILE *in)</A>
1915 <strong>(FUNCTION)</strong>
1916 <br><DT><A NAME="gdImageCreateFromGdPtr">gdImageCreateFromGdPtr(int size, void *data)</A>
1917 <strong>(FUNCTION)</strong>
1918 <BR><A NAME="gdImageCreateFromGdCtx">gdImageCreateFromGdCtx(<a href=#gdioctx>gdIOCtx</a> *in)</A>
1919 <strong>(FUNCTION)</strong>
1920 <p>
1921 <DD>
1922 gdImageCreateFromGd is called to load images from gd format files.
1923 Invoke gdImageCreateFromGd
1924 with an already opened pointer to a file containing the desired image
1925 in the <A HREF="#gdformat">gd file format</A>, which is specific to
1926 gd and intended for very fast loading. (It is <em>not</em> intended for
1927 compression; for compression, use PNG or JPEG.)
1928 <p>
1929 If you already have the
1930 image file in memory, pass the size of the file and a pointer to the
1931 file's data to gdImageCreateFromGdPtr, which is otherwise identical
1932 to gdImageCreateFromGd.
1933 <p>
1934 gdImageCreateFromGd
1935 returns a <A HREF="#gdImagePtr">gdImagePtr</A> to the new image, or NULL
1936 if unable to load the image (most often because the file is corrupt or
1937 does not contain a gd format image). gdImageCreateFromGd does <em>not</em>
1938 close the file. You can inspect the sx and sy members of the
1939 image to determine its size. The image must eventually be destroyed
1940 using <A HREF="#gdImageDestroy">gdImageDestroy()</A>.
1941 <PRE>
1942 ... inside a function ...
1943 <A HREF="#gdImagePtr">gdImagePtr</A> im;
1944 FILE *in;
1945 in = fopen("mygd.gd", "rb");
1946 im = gdImageCreateFromGd(in);
1947 fclose(in);
1948 /* ... Use the image ... */
1949 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
1950 </PRE>
1951
1952 <DT><A NAME="gdImageCreateFromGd2">gdImageCreateFromGd2(FILE *in)</A>
1953 <strong>(FUNCTION)</strong>
1954 <br><A NAME="gdImageCreateFromGd2Ptr">gdImageCreateFromGd2Ptr(int size, void *data)</A>
1955 <strong>(FUNCTION)</strong>
1956 <BR><A NAME="gdImageCreateFromGd2Ctx">gdImageCreateFromGd2Ctx(<a href=#gdioctx>gdIOCtx</a> *in)</A>
1957 <strong>(FUNCTION)</strong>
1958 <p>
1959
1960 <DD>
1961 gdImageCreateFromGd2 is called to load images from gd2 format files.
1962 Invoke gdImageCreateFromGd2
1963 with an already opened pointer to a file containing the desired image
1964 in the <A HREF="#gdformat">gd2 file format</A>, which is specific to
1965 gd2 and intended for fast loading of parts of large images.
1966 (It is a compressed format, but generally not as good as maximum
1967 compression of the entire image would be.)
1968 <p>
1969 If you already have the
1970 image file in memory, pass the size of the file and a pointer to the
1971 file's data to gdImageCreateFromGd2Ptr, which is otherwise identical
1972 to gdImageCreateFromGd2.
1973 <p>
1974 gdImageCreateFromGd2
1975 returns a <A HREF="#gdImagePtr">gdImagePtr</A> to the new image, or NULL
1976 if unable to load the image (most often because the file is corrupt or
1977 does not contain a gd format image). gdImageCreateFromGd2 does <em>not</em>
1978 close the file. You can inspect the sx and sy members of the
1979 image to determine its size. The image must eventually be destroyed
1980 using <A HREF="#gdImageDestroy">gdImageDestroy()</A>.
1981 <PRE>
1982 ... inside a function ...
1983 <A HREF="#gdImagePtr">gdImagePtr</A> im;
1984 FILE *in;
1985 in = fopen("mygd.gd2", "rb");
1986 im = gdImageCreateFromGd2(in);
1987 fclose(in);
1988 /* ... Use the image ... */
1989 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
1990 </PRE>
1991
1992 <DT><A NAME="gdImageCreateFromGd2Part">gdImageCreateFromGd2Part(FILE *in, int srcX, int srcY, int w, int h)</A>
1993 <strong>(FUNCTION)</strong>
1994 <br><A NAME="gdImageCreateFromGd2PartPtr">gdImageCreateFromGd2PartPtr(int size, void *data, int srcX, int srcY, int w, int h)</A>
1995 <strong>(FUNCTION)</strong>
1996 <BR><A NAME="gdImageCreateFromGd2PartCtx">gdImageCreateFromGd2PartCtx(<a href=#gdioctx>gdIOCtx</a> *in)</A>
1997 <strong>(FUNCTION)</strong>
1998 <p>
1999
2000 <DD>
2001 gdImageCreateFromGd2Part is called to load parts of images from <A HREF="#gdformat">gd2 format files</a>.
2002 Invoked in the same way as <a href=#gdImageCreateFromGd2>gdImageCreateFromGd2</a>,
2003 but with extra parameters
2004 indicating the source (x, y) and width/height of the desired image.
2005 gdImageCreateFromGd2Part returns a <A HREF="#gdImagePtr">gdImagePtr</A> to the
2006 new image, or NULL if unable to load the image.
2007 The image must eventually be destroyed using <A HREF="#gdImageDestroy">gdImageDestroy()</A>.
2008 <p>
2009 If you already have the image file in memory, you may use
2010 gdImageCreateFromGd2PartPtr. Pass the size of the image file,
2011 in bytes, as the first argument and the pointer to the image file data
2012 as the second argument.
2013 <p>
2014 <DT><A NAME="gdImageCreateFromWBMP">gdImageCreateFromWBMP(FILE *in)</A>
2015 <strong>(FUNCTION)</strong>
2016 <BR><A NAME="gdImageCreateFromWBMPPtr">gdImageCreateFromWBMPPtr(int size, void *data)</A>
2017 <strong>(FUNCTION)</strong>
2018 <BR><A NAME="gdImageCreateFromWBMPCtx">gdImageCreateFromWBMPCtx(<a href=#gdioctx>gdIOCtx</a> *in)</A>
2019 <strong>(FUNCTION)</strong>
2020 <p>
2021 <DD>
2022 gdImageCreateFromWBMP is called to load images from WBMP format files.
2023 Invoke gdImageCreateFromWBMP with an already opened pointer to a file
2024 containing the desired image.
2025 gdImageCreateFromWBMP
2026 returns a <A HREF="#gdImagePtr">gdImagePtr</A> to the new image, or NULL
2027 if unable to load the image (most often because the file is corrupt or
2028 does not contain a PNG image). gdImageCreateFromWBMP does <em>not</em>
2029 close the file. You can inspect the sx and sy members of the
2030 image to determine its size. The image must eventually be destroyed
2031 using <A HREF="#gdImageDestroy">gdImageDestroy()</A>.
2032 <p>
2033 If you already have the
2034 image file in memory, pass the size of the file and a pointer to the
2035 file's data to gdImageCreateFromWBMPPtr, which is otherwise identical
2036 to gdImageCreateFromWBMP.
2037 <PRE>
2038 <A HREF="#gdImagePtr">gdImagePtr</A> im;
2039 ... inside a function ...
2040 FILE *in;
2041 in = fopen("mywbmp.wbmp", "rb");
2042 im = gdImageCreateFromWBMP(in);
2043 fclose(in);
2044 /* ... Use the image ... */
2045 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
2046 </PRE>
2047 <p>
2048 <DT><A NAME="gdImageCreateFromXbm">gdImageCreateFromXbm(FILE *in)</A>
2049 <strong>(FUNCTION)</strong>
2050 <DD>
2051 gdImageCreateFromXbm is called to load images from X bitmap format
2052 files. Invoke gdImageCreateFromXbm
2053 with an already opened pointer to a file containing the desired image.
2054 gdImageCreateFromXbm
2055 returns a <A HREF="#gdImagePtr">gdImagePtr</A> to the new image, or NULL
2056 if unable to load the image (most often because the file is corrupt or
2057 does not contain an X bitmap format image). gdImageCreateFromXbm does
2058 <em>not</em> close the file. You can inspect the sx and sy members of the
2059 image to determine its size. The image must eventually be destroyed
2060 using <A HREF="#gdImageDestroy">gdImageDestroy()</A>.
2061 <PRE>
2062 ... inside a function ...
2063 <A HREF="#gdImagePtr">gdImagePtr</A> im;
2064 FILE *in;
2065 in = fopen("myxbm.xbm", "rb");
2066 im = gdImageCreateFromXbm(in);
2067 fclose(in);
2068 /* ... Use the image ... */
2069 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
2070 </PRE>
2071 <DT><A NAME="gdImageCreateFromXpm">gdImageCreateFromXpm(char *filename)</A>
2072 <strong>(FUNCTION)</strong>
2073 <DD>
2074 gdImageCreateFromXbm is called to load images from XPM X Window System
2075 color bitmap format files. This function is available only if HAVE_XPM
2076 is selected in the Makefile and the Xpm library is linked with the
2077 application. Unlike most gd file functions, the Xpm functions require
2078 filenames, not file pointers.
2079 gdImageCreateFromXpm
2080 returns a <A HREF="#gdImagePtr">gdImagePtr</A> to the new image, or NULL
2081 if unable to load the image (most often because the file is corrupt or
2082 does not contain an XPM bitmap format image). You can inspect the sx and sy members of the
2083 image to determine its size. The image must eventually be destroyed
2084 using <A HREF="#gdImageDestroy">gdImageDestroy()</A>.
2085 <PRE>
2086 ... inside a function ...
2087 <A HREF="#gdImagePtr">gdImagePtr</A> im;
2088 FILE *in;
2089 in = fopen("myxpm.xpm", "rb");
2090 im = gdImageCreateFromXpm(in);
2091 fclose(in);
2092 /* ... Use the image ... */
2093 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
2094 </PRE>
2095 <DT><A NAME="gdImageDestroy">gdImageDestroy(gdImagePtr im)</A> <STRONG>(FUNCTION)</STRONG>
2096 <DD>gdImageDestroy is used to free the memory associated with
2097 an image. It is important to invoke gdImageDestroy before
2098 exiting your program or assigning a new image to
2099 a <A HREF="#gdImagePtr">gdImagePtr</A> variable.
2100 <PRE>
2101 ... inside a function ...
2102 <A HREF="#gdImagePtr">gdImagePtr</A> im;
2103 im = <A HREF="#gdImageCreate">gdImageCreate</A>(10, 10);
2104 /* ... Use the image ... */
2105 /* Now destroy it */
2106 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
2107 </PRE>
2108 <DT><A NAME="gdImageJpeg">
2109 void gdImageJpeg(gdImagePtr im, FILE *out, int quality)</A>
2110 <STRONG>(FUNCTION)</STRONG><BR>
2111 <a name="gdImageJpegCtx">void gdImageJpegCtx(gdImagePtr im, gdIOCtx *out, int quality)</A>
2112 <STRONG>(FUNCTION)</STRONG><BR>
2113 <DD>
2114 gdImageJpeg outputs the specified image to the specified
2115 file in JPEG format. The file must be open for writing. Under MSDOS
2116 and all versions of Windows, it is important to use "wb" as opposed
2117 to simply "w" as the mode when opening the file, and under Unix there
2118 is no penalty for doing so. gdImageJpeg does <em>not</em>
2119 close the file; your code must do so.
2120 <P>
2121 If quality is negative, the default IJG JPEG quality value (which
2122 should yield a good general quality / size tradeoff for most
2123 situations) is used. Otherwise, for practical purposes, quality
2124 should be a value in the range 0-95, higher quality values usually
2125 implying both higher quality and larger image sizes.
2126 <P>
2127 If you have set image interlacing using
2128 <A HREF="#gdImageInterlace">gdImageInterlace</A>, this function will
2129 interpret that to mean you wish to output a progressive JPEG. Some
2130 programs (e.g., Web browsers) can display progressive JPEGs
2131 incrementally; this can be useful when browsing over a relatively slow
2132 communications link, for example. Progressive JPEGs can also be
2133 slightly smaller than sequential (non-progressive) JPEGs.
2134 <PRE>
2135 ... inside a function ...
2136 <A HREF="#gdImagePtr">gdImagePtr</A> im;
2137 int black, white;
2138 FILE *out;
2139 /* Create the image */
2140 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 100);
2141 /* Allocate background */
2142 white = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 255, 255);
2143 /* Allocate drawing color */
2144 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
2145 /* Draw rectangle */
2146 <A HREF="#gdImageRectangle">gdImageRectangle</A>(im, 0, 0, 99, 99, black);
2147 /* Open output file in binary mode */
2148 out = fopen("rect.jpg", "wb");
2149 /* Write JPEG using default quality */
2150 gdImageJpeg(im, out, -1);
2151 /* Close file */
2152 fclose(out);
2153 /* Destroy image */
2154 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
2155 </PRE>
2156 <DT><A NAME="gdImageJpegPtr">
2157 void* gdImageJpegPtr(gdImagePtr im, int *size, int quality)</A>
2158 <STRONG>(FUNCTION)</STRONG>
2159 <DD>Identical to gdImageJpeg except that it returns a pointer to a memory
2160 area with the JPEG data. This memory must be freed by the caller when it is
2161 no longer needed. <strong>The caller must invoke gdFree(), not free(),
2162 unless the caller is absolutely certain that the same implementations of
2163 malloc, free, etc. are used both at library build time and at application
2164 build time.</strong> The 'size' parameter receives the total size of the block
2165 of memory.
2166 <DT><A NAME="gdImageGif">
2167 void gdImageGif(gdImagePtr im, FILE *out)</A>
2168 <br>
2169 <A NAME="gdImageGifCtx">
2170 void gdImageGifCtx(gdImagePtr im, gdIOCtx *out)</A>
2171
2172 <STRONG>(FUNCTION)</STRONG>
2173 <DD>
2174 gdImageGif outputs the specified image to the specified
2175 file in GIF format. The file must be open for writing. Under MSDOS
2176 and all versions of Windows, it is important to use "wb" as opposed
2177 to simply "w" as the mode when opening the file, and under Unix there
2178 is no penalty for doing so. gdImageGif does <em>not</em>
2179 close the file; your code must do so.
2180 <p>
2181 GIF does not support true color; GIF images can contain a maximum
2182 of 256 colors. If the image to be written is a
2183 truecolor image, such as those created with
2184 <a href="#gdImageCreateTrueColor">gdImageCreateTrueColor</a> or loaded
2185 from a JPEG or a truecolor PNG image file, a palette-based
2186 temporary image will automatically be created internally using the
2187 <a href="#gdImageCreatePaletteFromTrueColor">gdImageCreatePaletteFromTrueColor</a> function. The original image pixels are not modified. This conversion
2188 produces high quality palettes but does require some CPU time. If you are
2189 regularly converting truecolor to palette in this way, you should consider
2190 creating your image as a palette-based image in the first place.
2191 <PRE>
2192 ... inside a function ...
2193 <A HREF="#gdImagePtr">gdImagePtr</A> im;
2194 int black, white;
2195 FILE *out;
2196 /* Create the image */
2197 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 100);
2198 /* Allocate background */
2199 white = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 255, 255);
2200 /* Allocate drawing color */
2201 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
2202 /* Draw rectangle */
2203 <A HREF="#gdImageRectangle">gdImageRectangle</A>(im, 0, 0, 99, 99, black);
2204 /* Open output file in binary mode */
2205 out = fopen("rect.gif", "wb");
2206 /* Write GIF */
2207 gdImageGif(im, out);
2208 /* Close file */
2209 fclose(out);
2210 /* Destroy image */
2211 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
2212 </PRE>
2213 <DT><A NAME="gdImageGifPtr">
2214 void* gdImageGifPtr(gdImagePtr im, int *size)</A>
2215 <STRONG>(FUNCTION)</STRONG>
2216 <DD>Identical to gdImageGif except that it returns a pointer to a memory
2217 area with the GIF data. This memory must be freed by the caller when it is
2218 no longer needed. <strong>The caller must invoke gdFree(), not free(),
2219 unless the caller is absolutely certain that the same implementations of
2220 malloc, free, etc. are used both at library build time and at application
2221 build time.</strong> The 'size' parameter receives the total size of the block
2222 of memory.
2223
2224 <DT><A NAME="gdImageGifAnimBegin">
2225 void gdImageGifAnimBegin(gdImagePtr im, FILE *out, int GlobalCM, int Loops)</A>
2226 <br>
2227 <A NAME="gdImageGifAnimBeginCtx">
2228 void gdImageGifAnimBeginCtx(gdImagePtr im, gdIOCtx *out, int GlobalCM, int Loops)</A>
2229
2230 <STRONG>(FUNCTION)</STRONG>
2231
2232 <DD>This function must be called as the first function when creating a
2233 GIF animation. It writes the correct GIF file headers to selected
2234 file output, and prepares for frames to be added for the animation.
2235 The image argument is not used to produce an image frame to the file,
2236 it is only used to establish the GIF animation frame size, interlacing
2237 options and the color palette. gdImageGifAnimAdd is used to
2238 add the first and subsequent frames to the animation, and the animation
2239 must be terminated by writing a semicolon character (;) to it or by using
2240 gdImageGifAnimEnd to do that.
2241 <p>
2242
2243 The GlobalCM flag indicates if a global color map (or palette) is used
2244 in the GIF89A header. A nonzero value specifies that a global color
2245 map should be used to reduce the size of the animation.
2246 Of course, if the color maps of
2247 individual frames differ greatly, a global color map may not be a good idea.
2248 GlobalCM=1 means write global color map, GlobalCM=0 means do not, and
2249 GlobalCM=-1 means to do the default, which currently is to use a global
2250 color map.
2251
2252 <p>
2253
2254 If Loops is 0 or greater, the Netscape 2.0 extension for animation
2255 loop count is written. 0 means infinite loop count. -1 means that
2256 the extension is not added which results in no looping. -1 is the
2257 default.
2258
2259 <DT><A NAME="gdImageGifAnimBeginPtr">
2260 void* gdImageGifAnimBeginPtr(gdImagePtr im, int *size, int GlobalCM, int Loops)</A>
2261 <STRONG>(FUNCTION)</STRONG>
2262 <DD>Identical to gdImageGifAnimBegin except that it returns a pointer
2263 to a memory area with the GIF data. This memory must be freed by the
2264 caller when it is no longer needed. <strong>The caller must invoke
2265 gdFree(), not free(), unless the caller is absolutely certain that the
2266 same implementations of malloc, free, etc. are used both at library
2267 build time and at application build time.</strong> The 'size'
2268 parameter receives the total size of the block of memory.
2269
2270 <DT><A NAME="gdImageGifAnimAdd">
2271 void gdImageGifAnimAdd(gdImagePtr im, FILE *out, int LocalCM, int LeftOfs, int TopOfs, int Delay, int Disposal, gdImagePtr previm)</A>
2272 <br>
2273 <A NAME="gdImageGifAnimAddCtx">
2274 void gdImageGifAnimAddCtx(gdImagePtr im, gdIOCtx *out, int LocalCM, int LeftOfs, int TopOfs, int Delay, int Disposal, gdImagePtr previm)</A>
2275
2276 <STRONG>(FUNCTION)</STRONG>
2277
2278 <DD> This function writes GIF animation frames to GIF animation, which
2279 was initialized with <a
2280 href="#gdImageGifAnimBegin">gdImageGifAnimBegin</a>. With LeftOfs and
2281 TopOfs you can place this frame in different offset than (0,0) inside
2282 the image screen as defined in gdImageGifAnimBegin. Delay between the
2283 previous frame and this frame is in 1/100s units. Disposal is usually
2284 <code>gdDisposalNone</code>, meaning that the pixels changed by this
2285 frame should remain on the display when the next frame begins to render, but
2286 can also be <code>gdDisposalUnknown</code> (not recommended),
2287 <code>gdDisposalRestoreBackground</code> (restores the first
2288 allocated color of the global palette), or
2289 <code>gdDisposalRestorePrevious</code> (restores the appearance of the
2290 affected area before the frame was rendered). Only
2291 <code>gdDisposalNone</code> is a sensible choice for the first frame.
2292 If <code>previm</code> is
2293 passed, the built-in GIF optimizer will always use <code>gdDisposalNone</code>
2294 regardless of the Disposal parameter.
2295 <p>
2296 Setting the LocalCM flag to 1 adds a local palette for this image to the
2297 animation. Otherwise the global palette is assumed and the user must make
2298 sure the palettes match. Use <A HREF="#gdImagePaletteCopy">gdImagePaletteCopy</A> to do that.
2299
2300 <p>
2301
2302 Automatic optimization is activated by giving the previous image as a
2303 parameter. This function then compares the images and only writes the changed
2304 pixels to the new frame in animation. The Disposal parameter for
2305 optimized animations must be set to 1, also for the first frame.
2306 LeftOfs and TopOfs parameters are ignored for optimized frames. To
2307 achieve good optimization, it is usually best to use a single global
2308 color map. To allow gdImageGifAnimAdd to compress unchanged pixels via
2309 the use of a transparent color, the image must include a transparent color.
2310
2311 <PRE>
2312 ... inside a function ...
2313 gdImagePtr im, im2, im3;
2314 int black, white, trans;
2315 FILE *out;
2316 /* Create the image */
2317 im = gdImageCreate(100, 100);
2318 /* Allocate background */
2319 white = gdImageColorAllocate(im, 255, 255, 255);
2320 /* Allocate drawing color */
2321 black = gdImageColorAllocate(im, 0, 0, 0);
2322 /* Allocate transparent color for animation compression */
2323 trans = gdImageColorAllocate(im, 1, 1, 1);
2324 /* Draw rectangle */
2325 gdImageRectangle(im, 0, 0, 10, 10, black);
2326 /* Open output file in binary mode */
2327 out = fopen("anim.gif", "wb");
2328 /* Write GIF header. Use global color map. Loop a few times */
2329 gdImageGifAnimBegin(im, out, 1, 3);
2330 /* Write the first frame. No local color map. Delay = 1s */
2331 gdImageGifAnimAdd(im, out, 0, 0, 0, 100, 1, NULL);
2332 /* construct the second frame */
2333 im2 = gdImageCreate(100, 100);
2334 /* Allocate background to make it white */
2335 (void)gdImageColorAllocate(im2, 255, 255, 255);
2336 /* Make sure the palette is identical */
2337 gdImagePaletteCopy (im2, im);
2338 /* Draw something */
2339 gdImageRectangle(im2, 0, 0, 15, 15, black);
2340 /* Allow animation compression with transparent pixels */
2341 gdImageColorTransparent (im2, trans);
2342 /* Add the second frame */
2343 gdImageGifAnimAdd(im2, out, 0, 0, 0, 100, 1, im);
2344 /* construct the second frame */
2345 im3 = gdImageCreate(100, 100);
2346 /* Allocate background to make it white */
2347 (void)gdImageColorAllocate(im3, 255, 255, 255);
2348 /* Make sure the palette is identical */
2349 gdImagePaletteCopy (im3, im);
2350 /* Draw something */
2351 gdImageRectangle(im3, 0, 0, 15, 20, black);
2352 /* Allow animation compression with transparent pixels */
2353 gdImageColorTransparent (im3, trans);
2354 /* Add the third frame, compressing against the second one */
2355 gdImageGifAnimAdd(im3, out, 0, 0, 0, 100, 1, im2);
2356 /* Write the end marker */
2357 /* gdImageGifAnimEnd(out); is the same as the following: */
2358 putc (';', out);
2359 /* Close file */
2360 fclose(out);
2361 /* Destroy images */
2362 gdImageDestroy(im);
2363 gdImageDestroy(im2);
2364 gdImageDestroy(im3);
2365 </PRE>
2366
2367 <DT><A NAME="gdImageGifAnimAddPtr">
2368 void* gdImageGifAnimAddPtr(gdImagePtr im, int *size, int LocalCM, int LeftOfs, int TopOfs, int Delay, int Disposal, gdImagePtr previm)</A>
2369 <STRONG>(FUNCTION)</STRONG>
2370 <DD>Identical to gdImageGifAnimAdd except that it returns a pointer
2371 to a memory area with the GIF data. This memory must be freed by the
2372 caller when it is no longer needed. <strong>The caller must invoke
2373 gdFree(), not free(), unless the caller is absolutely certain that the
2374 same implementations of malloc, free, etc. are used both at library
2375 build time and at application build time.</strong> The 'size'
2376 parameter receives the total size of the block of memory.
2377
2378 <DT><A NAME="gdImageGifAnimEnd">
2379 void gdImageGifAnimEnd(FILE *out)</A>
2380 <br>
2381 <A NAME="gdImageGifAnimEndCtx">
2382 void gdImageGifAnimEndCtx(gdIOCtx *out)</A>
2383
2384 <STRONG>(FUNCTION)</STRONG>
2385
2386 <DD>Writes semicolon character (;) to the output file. This
2387 terminates the GIF file properly. You can omit the call to
2388 gdImageGifAnimEnd and just print out the semicolon.
2389
2390 <DT><A NAME="gdImageGifAnimEndPtr">
2391 void* gdImageGifAnimEndPtr(int *size)</A>
2392 <STRONG>(FUNCTION)</STRONG>
2393
2394 <DD>Returns a one byte string containing the semicolon character (;).
2395 Returns a pointer to a memory area with that string. This memory must
2396 be freed by the caller when it is no longer needed. <strong>The caller
2397 must invoke gdFree(), not free(), unless the caller is absolutely
2398 certain that the same implementations of malloc, free, etc. are used
2399 both at library build time and at application build time.</strong> The
2400 'size' parameter receives the total size of the block of memory. The
2401 string ";" can be used in place of this function.
2402
2403 <DT><A NAME="gdImagePng">
2404 void gdImagePng(gdImagePtr im, FILE *out)</A>
2405 <br>
2406 <A NAME="gdImagePngCtx">
2407 void gdImagePngCtx(gdImagePtr im, gdIOCtx *out)</A>
2408
2409 <STRONG>(FUNCTION)</STRONG>
2410 <DD>
2411 gdImagePng outputs the specified image to the specified
2412 file in PNG format. The file must be open for writing. Under MSDOS
2413 and all versions of Windows, it is important to use "wb" as opposed
2414 to simply "w" as the mode when opening the file, and under Unix there
2415 is no penalty for doing so. gdImagePng does <em>not</em>
2416 close the file; your code must do so.
2417 <PRE>
2418 ... inside a function ...
2419 <A HREF="#gdImagePtr">gdImagePtr</A> im;
2420 int black, white;
2421 FILE *out;
2422 /* Create the image */
2423 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 100);
2424 /* Allocate background */
2425 white = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 255, 255);
2426 /* Allocate drawing color */
2427 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
2428 /* Draw rectangle */
2429 <A HREF="#gdImageRectangle">gdImageRectangle</A>(im, 0, 0, 99, 99, black);
2430 /* Open output file in binary mode */
2431 out = fopen("rect.png", "wb");
2432 /* Write PNG */
2433 gdImagePng(im, out);
2434 /* Close file */
2435 fclose(out);
2436 /* Destroy image */
2437 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
2438 </PRE>
2439 <DT><A NAME="gdImagePngEx">
2440 void gdImagePngEx(gdImagePtr im, FILE *out, int level)</A>
2441 <br>
2442 <A NAME="gdImagePngCtxEx">
2443 void gdImagePngCtxEx(gdImagePtr im, gdIOCtx *out, int level)</A>
2444
2445 <STRONG>(FUNCTION)</STRONG>
2446 <DD>
2447 Like <a href="#gdImagePng">gdImagePng</a>, gdImagePngEx outputs the
2448 specified image to the specified file in PNG format. In addition,
2449 gdImagePngEx allows the level of compression to be specified. A compression
2450 level of 0 means "no compression." A compression level of 1 means
2451 "compressed, but as quickly as possible." A compression level of 9
2452 means "compressed as much as possible to produce the smallest possible
2453 file." A compression level of -1 will use the default compression level
2454 at the time zlib was compiled on your system.
2455 <p>
2456 For more information, see <a href="#gdImagePng">gdImagePng</a>.
2457 <DT><A NAME="gdImagePngPtr">
2458 void* gdImagePngPtr(gdImagePtr im, int *size)</A>
2459 <STRONG>(FUNCTION)</STRONG>
2460 <DD>Identical to gdImagePng except that it returns a pointer to a memory
2461 area with the PNG data. This memory must be freed by the caller when it is
2462 no longer needed. <strong>The caller must invoke gdFree(), not free(),
2463 unless the caller is absolutely certain that the same implementations of
2464 malloc, free, etc. are used both at library build time and at application
2465 build time.</strong> The 'size' parameter receives the total size of the block
2466 of memory.
2467 <DT><A NAME="gdImagePngPtrEx">
2468 void* gdImagePngPtrEx(gdImagePtr im, int *size, int level)</A>
2469 <STRONG>(FUNCTION)</STRONG>
2470 <DD>
2471 Like <a href="#gdImagePngPtr">gdImagePngPtr</a>, gdImagePngPtrEx returns a
2472 pointer to a PNG image in allocated memory.
2473 In addition, gdImagePngPtrEx allows the level of compression to be
2474 specified. A compression level of 0 means "no compression." A compression level of 1 means
2475 "compressed, but as quickly as possible." A compression level of 9
2476 means "compressed as much as possible to produce the smallest possible
2477 file." A compression level of -1 will use the default compression level
2478 at the time zlib was compiled on your system.
2479 <p>
2480 For more information, see <a href="#gdImagePngPtr">gdImagePngPtr</a>.
2481 <DT><A NAME="gdImagePngToSink">gdImagePngToSink(gdImagePtr im, gdSinkPtr out)</A>
2482 <strong>(FUNCTION)</strong>
2483 <dd>
2484 gdImagePngToSink is called to write a PNG to
2485 a data "sink" (destination) other than a file. Usage is very similar to
2486 the <a href="#gdImagePng">gdImagePng</a> function,
2487 except that the programmer provides a custom data sink.
2488 <p>
2489 The programmer must write an output function which accepts
2490 a context pointer, a buffer, and a number of bytes to be
2491 written as arguments. This function must write the number of
2492 bytes requested and return that number, unless an error
2493 has occurred, in which case the function should return
2494 <code>-1</code>. The programmer then creates a
2495 <a href="#gdSink">gdSink</a> structure and sets
2496 the <code>sink</code> pointer to the output function and
2497 the context pointer to any value which is useful to the
2498 programmer.
2499 <p>
2500 The example below
2501 implements <a href="#gdImagePng">gdImagePng</a>
2502 by creating a custom data source and invoking gdImagePngFromSink.
2503 <pre>
2504 static int stdioSink(void *context, char *buffer, int len)
2505 {
2506 return fwrite(buffer, 1, len, (FILE *) context);
2507 }
2508
2509 void gdImagePng(gdImagePtr im, FILE *out)
2510 {
2511 gdSink mySink;
2512 mySink.context = (void *) out;
2513 mySink.sink = stdioSink;
2514 gdImagePngToSink(im, &mySink);
2515 }
2516 </pre>
2517 <DT><A NAME="gdImageWBMP">
2518 void gdImageWBMP(gdImagePtr im, int fg, FILE *out)</A>
2519 <BR><A NAME="gdImageWBMPCtx">gdImageWBMPCtx(<a href=#gdioctx>gdIOCtx</a> *out)</A>
2520 <strong>(FUNCTION)</strong><STRONG>(FUNCTION)</STRONG>
2521 <DD>
2522 gdImageWBMP outputs the specified image to the specified
2523 file in WBMP format. The file must be open for writing. Under MSDOS
2524 and all versions of Windows, it is important to use "wb" as opposed
2525 to simply "w" as the mode when opening the file, and under Unix there
2526 is no penalty for doing so. gdImageWBMP does <em>not</em>
2527 close the file; your code must do so.
2528 <p>
2529 <strong>WBMP file support is black and white only. The color index
2530 specified by the fg argument is the "foreground," and only pixels
2531 of this color will be set in the WBMP file.</strong> All other pixels
2532 will be considered "background."
2533 <PRE>
2534 ... inside a function ...
2535 <A HREF="#gdImagePtr">gdImagePtr</A> im;
2536 int black, white;
2537 FILE *out;
2538 /* Create the image */
2539 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 100);
2540 /* Allocate background */
2541 white = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 255, 255);
2542 /* Allocate drawing color */
2543 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
2544 /* Draw rectangle */
2545 <A HREF="#gdImageRectangle">gdImageRectangle</A>(im, 0, 0, 99, 99, black);
2546 /* Open output file in binary mode */
2547 out = fopen("rect.wbmp", "wb");
2548 /* Write WBMP, with black as foreground */
2549 gdImageWBMP(im, black, out);
2550 /* Close file */
2551 fclose(out);
2552 /* Destroy image */
2553 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
2554 </PRE>
2555 <DT><A NAME="gdImageWBMPPtr">
2556 void* gdImageWBMPPtr(gdImagePtr im, int *size)</A>
2557 <STRONG>(FUNCTION)</STRONG>
2558 <DD>Identical to gdImageWBMP except that it returns a pointer to a memory
2559 area with the WBMP data. This memory must be freed by the caller when it is
2560 no longer needed. <strong>The caller must invoke gdFree(), not free(),
2561 unless the caller is absolutely certain that the same implementations of
2562 malloc, free, etc. are used both at library build time and at application
2563 build time.</strong> The 'size' parameter receives the total size of the block
2564 of memory.
2565 <DT><A NAME="gdImageGd">
2566 void gdImageGd(gdImagePtr im, FILE *out)</A>
2567 <STRONG>(FUNCTION)</STRONG>
2568 <DD>
2569 gdImageGd outputs the specified image to the specified
2570 file in the <A HREF="#gdformat">gd image format</A>. The file must
2571 be open for writing. Under MSDOS and all versions of Windows, it is
2572 important to use "wb" as
2573 opposed to simply "w" as the mode when opening the file, and under
2574 Unix there is no penalty for doing so. gdImagePng does <em>not</em>
2575 close the file; your code must do so.
2576 <P>
2577 The gd image format is intended for fast reads and writes of
2578 images your program will need frequently to build other
2579 images. It is <em>not</em> a compressed format, and is not intended
2580 for general use.
2581 <PRE>
2582 ... inside a function ...
2583 <A HREF="#gdImagePtr">gdImagePtr</A> im;
2584 int black, white;
2585 FILE *out;
2586 /* Create the image */
2587 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 100);
2588 /* Allocate background */
2589 white = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 255, 255);
2590 /* Allocate drawing color */
2591 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
2592 /* Draw rectangle */
2593 <A HREF="#gdImageRectangle">gdImageRectangle</A>(im, 0, 0, 99, 99, black);
2594 /* Open output file in binary mode */
2595 out = fopen("rect.gd", "wb");
2596 /* Write gd format file */
2597 gdImageGd(im, out);
2598 /* Close file */
2599 fclose(out);
2600 /* Destroy image */
2601 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
2602 </PRE>
2603
2604 <DT><A NAME="gdImageGdPtr">
2605 void* gdImageGdPtr(gdImagePtr im, int *size)</A>
2606 <STRONG>(FUNCTION)</STRONG>
2607 <DD>Identical to gdImageGd except that it returns a pointer to a memory
2608 area with the GD data. This memory must be freed by the caller when it is
2609 no longer needed. <strong>The caller must invoke gdFree(), not free(),
2610 unless the caller is absolutely certain that the same implementations of
2611 malloc, free, etc. are used both at library build time and at application
2612 build time.</strong> The 'size' parameter receives the total size of the block
2613 of memory.
2614
2615 <DT><A NAME="gdImageGd2">
2616 void gdImageGd2(gdImagePtr im, FILE *out, int chunkSize, int fmt)</A>
2617 <br>
2618 <A NAME="gdImageGd2Ctx">
2619 void gdImageGd2Ctx(gdImagePtr im, gdIOCtx *out, int chunkSize, int fmt)</A>
2620 <STRONG>(FUNCTION)</STRONG>
2621 <DD>
2622 gdImageGd2 outputs the specified image to the specified
2623 file in the <A HREF="#gd2format">gd2 image format</A>. The file must
2624 be open for writing. Under MSDOS and all versions of Windows, it is
2625 important to use "wb" as
2626 opposed to simply "w" as the mode when opening the file, and under
2627 Unix there is no penalty for doing so. gdImageGd2 does <em>not</em>
2628 close the file; your code must do so.
2629 <P>
2630 The gd2 image format is intended for fast reads and writes of
2631 parts of images.
2632 It is a compressed format, and well suited to retrieving smll sections of
2633 much larger images.
2634
2635 The third and fourth parameters are the 'chunk size' and format resposectively.
2636 <p>
2637 The file is stored as a series of compressed subimages, and the
2638 <strong>Chunk Size</strong> determines the sub-image size - a value of
2639 zero causes the GD library to use the default.
2640 <p>
2641 It is also possible to store GD2 files in an uncompressed format, in which case the
2642 fourth parameter should be GD2_FMT_RAW.
2643
2644 <PRE>
2645 ... inside a function ...
2646 <A HREF="#gdImagePtr">gdImagePtr</A> im;
2647 int black, white;
2648 FILE *out;
2649 /* Create the image */
2650 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 100);
2651 /* Allocate background */
2652 white = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 255, 255);
2653 /* Allocate drawing color */
2654 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
2655 /* Draw rectangle */
2656 <A HREF="#gdImageRectangle">gdImageRectangle</A>(im, 0, 0, 99, 99, black);
2657 /* Open output file in binary mode */
2658 out = fopen("rect.gd", "wb");
2659 /* Write gd2 format file */
2660 gdImageGd2(im, out, 0, GD2_FMT_COMPRESSED);
2661 /* Close file */
2662 fclose(out);
2663 /* Destroy image */
2664 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
2665 </PRE>
2666
2667 <DT><A NAME="gdImageGd2Ptr">
2668 void* gdImageGd2Ptr(gdImagePtr im, int chunkSize, int fmt, int *size)</A>
2669 <STRONG>(FUNCTION)</STRONG>
2670 <DD>Identical to gdImageGd2 except that it returns a pointer to a memory
2671 area with the GD2 data. This memory must be freed by the caller when it is
2672 no longer needed. <strong>The caller must invoke gdFree(), not free(),
2673 unless the caller is absolutely certain that the same implementations of
2674 malloc, free, etc. are used both at library build time and at application
2675 build time.</strong> The 'size' parameter receives the total size of the block
2676 of memory.
2677 <DT><A NAME="gdImageTrueColorToPalette">
2678 void gdImageTrueColorToPalette(gdImagePtr im, int ditherFlag, int colorsWanted)</A>
2679 <br>
2680 <A NAME="gdImageCreatePaletteFromTrueColor">
2681 gdImagePtr gdImageCreatePaletteFromTrueColor(gdImagePtr im, int ditherFlag, int colorsWanted)</A>
2682
2683 <STRONG>(FUNCTION)</STRONG>
2684 <DD>
2685 <blockquote>
2686 gdImageCreatePaletteFromTrueColor returns a <b>new</b>
2687 image. gdImageTrueColorToPalette permanently converts the
2688 <b>existing</b> image. The two functions are otherwise identical.
2689 </blockquote>
2690 <p>
2691 The function converts a truecolor image to a palette-based image,
2692 using a high-quality two-pass quantization routine.
2693 If ditherFlag is set, the image will be
2694 dithered to approximate colors better, at the expense
2695 of some obvious "speckling." colorsWanted can be
2696 anything up to 256. If the original source image
2697 includes photographic information or anything that
2698 came out of a JPEG, 256 is strongly recommended.
2699 100% transparency of a single transparent color in the
2700 original truecolor image will be preserved. There is no other
2701 support for preservation of alpha channel or transparency in
2702 the destination image.
2703 <p>
2704 For best results, don't use this function -- write real
2705 truecolor PNGs and JPEGs. The disk space gain of
2706 conversion to palette is not great (for small images
2707 it can be negative) and the quality loss is ugly. However,
2708 the version of this function included in version 2.0.12 and later does
2709 do a better job than the version included prior to 2.0.12.
2710 </DL>
2711 <H3><A NAME="drawing">Drawing Functions</A></H3>
2712 <DL>
2713 <DT><A NAME="gdImageSetPixel">void gdImageSetPixel(gdImagePtr im, int x, int y, int color)</A> <STRONG>(FUNCTION)</STRONG>
2714 <DD>gdImageSetPixel sets a pixel to a particular color index. Always use
2715 this function or one of the other drawing functions to access pixels;
2716 do not access the pixels of the <A HREF="#gdImage">gdImage</A> structure
2717 directly.
2718 <PRE>
2719 ... inside a function ...
2720 <A HREF="#gdImagePtr">gdImagePtr</A> im;
2721 int black;
2722 int white;
2723 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 100);
2724 /* Background color (first allocated) */
2725 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
2726 /* Allocate the color white (red, green and blue all maximum). */
2727 white = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 255, 255);
2728 /* Set a pixel near the center. */
2729 gdImageSetPixel(im, 50, 50, white);
2730 /* ... Do something with the image, such as
2731 saving it to a file... */
2732 /* Destroy it */
2733 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
2734 </PRE>
2735 <DT><A NAME="gdImageLine">void gdImageLine(gdImagePtr im, int x1, int y1, int x2, int y2, int color)</A>
2736 <STRONG>(FUNCTION)</STRONG>
2737 <DD>
2738 gdImageLine is used to draw a line between two endpoints (x1,y1 and x2, y2).
2739 The line is drawn using the color index specified. Note that the color
2740 index can be an actual color returned by <A HREF="#gdImageColorAllocate">
2741 gdImageColorAllocate</A> or one of <A HREF="#gdStyled">gdStyled</A>,
2742 <A HREF="#gdBrushed">gdBrushed</A> or <A HREF="#gdStyledBrushed">
2743 gdStyledBrushed</A>.
2744 <PRE>
2745 ... inside a function ...
2746 <A HREF="#gdImagePtr">gdImagePtr</A> im;
2747 int black;
2748 int white;
2749 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 100);
2750 /* Background color (first allocated) */
2751 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
2752 /* Allocate the color white (red, green
2753 and blue all maximum). */
2754 white = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 255, 255);
2755 /* Draw a line from the upper left corner to the
2756 lower right corner. */
2757 gdImageLine(im, 0, 0, 99, 99, white);
2758 /* ... Do something with the image, such as
2759 saving it to a file... */
2760 /* Destroy it */
2761 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
2762 </PRE>
2763 <DT><A NAME="gdImageDashedLine">void gdImageDashedLine(gdImagePtr im, int x1, int y1, int x2, int y2, int color)</A>
2764 <STRONG>(FUNCTION)</STRONG>
2765 <DD>
2766 gdImageDashedLine is provided <strong>solely for backwards compatibility
2767 </strong> with gd 1.0. New programs should draw dashed lines using
2768 the normal <A HREF="#gdImageLine">gdImageLine</A> function and the
2769 new <A HREF="#gdImageSetStyle">gdImageSetStyle</A> function.
2770 <P>
2771 gdImageDashedLine is used to draw a dashed line between two endpoints
2772 (x1,y1 and x2, y2).
2773 The line is drawn using the color index specified. The portions of the line
2774 that are not drawn are left transparent so the background is visible.
2775 <PRE>
2776 ... inside a function ...
2777 <A HREF="#gdImagePtr">gdImagePtr</A> im;
2778 int black;
2779 int white;
2780 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 100);
2781 /* Background color (first allocated) */
2782 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
2783 /* Allocate the color white (red, green and blue
2784 all maximum). */
2785 white = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 255, 255);
2786 /* Draw a dashed line from the upper left corner
2787 to the lower right corner. */
2788 gdImageDashedLine(im, 0, 0, 99, 99);
2789 /* ... Do something with the image, such as
2790 saving it to a file... */
2791 /* Destroy it */
2792 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
2793 </PRE>
2794 <DT><A NAME="gdImagePolygon">void gdImagePolygon(gdImagePtr im, gdPointPtr points, int pointsTotal, int color)</A>
2795 <STRONG>(FUNCTION)</STRONG>
2796 <DD>
2797 gdImagePolygon is used to draw a polygon with the verticies
2798 (at least 3) specified, using the color index specified.
2799 See also <A HREF="#gdImageFilledPolygon">gdImageFilledPolygon</A>.
2800 <PRE>
2801 ... inside a function ...
2802 <A HREF="#gdImagePtr">gdImagePtr</A> im;
2803 int black;
2804 int white;
2805 /* Points of polygon */
2806 <A HREF="#gdPoint">gdPoint</A> points[3];
2807 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 100);
2808 /* Background color (first allocated) */
2809 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
2810 /* Allocate the color white (red, green and
2811 blue all maximum). */
2812 white = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 255, 255);
2813 /* Draw a triangle. */
2814 points[0].x = 50;
2815 points[0].y = 0;
2816 points[1].x = 99;
2817 points[1].y = 99;
2818 points[2].x = 0;
2819 points[2].y = 99;
2820 gdImagePolygon(im, points, 3, white);
2821 /* ... Do something with the image, such as
2822 saving it to a file... */
2823 /* Destroy it */
2824 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
2825 </PRE>
2826 <DT><A NAME="gdImageOpenPolygon">void gdImageOpenPolygon(gdImagePtr im, gdPointPtr points, int pointsTotal, int color)</A>
2827 <STRONG>(FUNCTION)</STRONG>
2828 <DD>
2829 gdImageOpenPolygon is used to draw a sequence of lines with the verticies
2830 (at least 3) specified, using the color index specified. Unlike
2831 <A HREF="#gdImagePolygon">gdImagePolygon</A>, the enpoints of the line
2832 sequence are not connected to a closed polygon.
2833 <DT><A NAME="gdImageRectangle">void gdImageRectangle(gdImagePtr im, int x1, int y1, int x2, int y2, int color)</A>
2834 <STRONG>(FUNCTION)</STRONG>
2835 <DD>
2836 gdImageRectangle is used to draw a rectangle with the two corners
2837 (upper left first, then lower right) specified, using the
2838 color index specified.
2839 <PRE>
2840 ... inside a function ...
2841 <A HREF="#gdImagePtr">gdImagePtr</A> im;
2842 int black;
2843 int white;
2844 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 100);
2845 /* Background color (first allocated) */
2846 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
2847 /* Allocate the color white (red, green and blue all maximum). */
2848 white = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 255, 255);
2849 /* Draw a rectangle occupying the central area. */
2850 gdImageRectangle(im, 25, 25, 74, 74, white);
2851 /* ... Do something with the image, such as
2852 saving it to a file... */
2853 /* Destroy it */
2854 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
2855 </PRE>
2856 <DT><A NAME="gdImageFilledPolygon">void gdImageFilledPolygon(gdImagePtr im, gdPointPtr points, int pointsTotal, int color)</A>
2857 <STRONG>(FUNCTION)</STRONG>
2858 <DD>
2859 gdImageFilledPolygon is used to fill a polygon with the verticies
2860 (at least 3) specified, using the color index specified.
2861 See also <A HREF="#gdImageFilledPolygon">gdImagePolygon</A>.
2862 <PRE>
2863 ... inside a function ...
2864 <A HREF="#gdImagePtr">gdImagePtr</A> im;
2865 int black;
2866 int white;
2867 int red;
2868 /* Points of polygon */
2869 <A HREF="#gdPoint">gdPoint</A> points[3];
2870 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 100);
2871 /* Background color (first allocated) */
2872 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
2873 /* Allocate the color white (red, green and blue all maximum). */
2874 white = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 255, 255);
2875 /* Allocate the color red. */
2876 red = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 0, 0);
2877 /* Draw a triangle. */
2878 points[0].x = 50;
2879 points[0].y = 0;
2880 points[1].x = 99;
2881 points[1].y = 99;
2882 points[2].x = 0;
2883 points[2].y = 99;
2884 /* Paint it in white */
2885 gdImageFilledPolygon(im, points, 3, white);
2886 /* Outline it in red; must be done second */
2887 <A HREF="#gdImagePolygon">gdImagePolygon</A>(im, points, 3, red);
2888 /* ... Do something with the image, such as
2889 saving it to a file... */
2890 /* Destroy it */
2891 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
2892 </PRE>
2893 <DT><A NAME="gdImageFilledRectangle">void gdImageFilledRectangle(gdImagePtr im, int x1, int y1, int x2, int y2, int color)</A>
2894 <STRONG>(FUNCTION)</STRONG>
2895 <DD>
2896 gdImageFilledRectangle is used to draw a solid rectangle with the two corners
2897 (upper left first, then lower right) specified, using the
2898 color index specified.
2899 <PRE>
2900 ... inside a function ...
2901 <A HREF="#gdImagePtr">gdImagePtr</A> im;
2902 int black;
2903 int white;
2904 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 100);
2905 /* Background color (first allocated) */
2906 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
2907 /* Allocate the color white (red, green and blue all maximum). */
2908 white = <A HREF="#gdImageColorAllocate">int gdImageColorAllocate</A>(im, 255, 255, 255);
2909 /* Draw a filled rectangle occupying the central area. */
2910 gdImageFilledRectangle(im, 25, 25, 74, 74, white);
2911 /* ... Do something with the image, such as
2912 saving it to a file... */
2913 /* Destroy it */
2914 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
2915 </PRE>
2916 <DT><A NAME="gdImageArc">void gdImageArc(gdImagePtr im, int cx, int cy, int w, int h, int s, int e, int color)</A>
2917 <STRONG> (FUNCTION)</STRONG>
2918 <DD>
2919 gdImageArc is used to draw a partial ellipse centered at the given point,
2920 with the specified width and height in pixels. The arc begins at
2921 the position in degrees specified by <code>s</code> and ends at
2922 the position specified by <code>e</code>. The arc is drawn in
2923 the color specified by the last argument. A circle can be drawn
2924 by beginning from 0 degrees and ending at 360 degrees, with
2925 width and height being equal. e must be greater than s. Values greater
2926 than 360 are interpreted modulo 360.
2927 <PRE>
2928 ... inside a function ...
2929 <A HREF="#gdImagePtr">gdImagePtr</A> im;
2930 int black;
2931 int white;
2932 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 50);
2933 /* Background color (first allocated) */
2934 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
2935 /* Allocate the color white (red, green and blue all maximum). */
2936 white = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 255, 255);
2937 /* Inscribe an ellipse in the image. */
2938 gdImageArc(im, 50, 25, 98, 48, 0, 360, white);
2939 /* ... Do something with the image, such as
2940 saving it to a file... */
2941 /* Destroy it */
2942 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
2943 </PRE>
2944 <DT><A NAME="gdImageFilledArc">void gdImageFilledArc(gdImagePtr im, int cx, int cy, int w, int h, int s, int e, int color, int style)</A>
2945 <STRONG> (FUNCTION)</STRONG>
2946 <DD>
2947 gdImageFilledArc is used to draw a partial ellipse centered at the given point,
2948 with the specified width and height in pixels. The arc begins at
2949 the position in degrees specified by <code>s</code> and ends at
2950 the position specified by <code>e</code>. The arc is filled in
2951 the color specified by the second to last argument. A circle can be drawn
2952 by beginning from 0 degrees and ending at 360 degrees, with
2953 width and height being equal. e must be greater than s. Values greater
2954 than 360 are interpreted modulo 360. The last argument is a bitwise
2955 OR of the following possibilities:
2956 <ul>
2957 <li>gdArc
2958 <li>gdChord
2959 <li>gdPie (synonym for gdChord)
2960 <li>gdNoFill
2961 <li>gdEdged
2962 </ul>
2963 gdArc and gdChord are mutually exclusive;
2964 gdChord just connects the starting and ending
2965 angles with a straight line, while gdArc produces
2966 a rounded edge. gdPie is a synonym for gdArc.
2967 gdNoFill indicates that the arc or chord should be
2968 outlined, not filled. gdEdged, used together with
2969 gdNoFill, indicates that the beginning and ending
2970 angles should be connected to the center; this is
2971 a good way to outline (rather than fill) a
2972 'pie slice'.
2973
2974 <PRE>
2975 ... inside a function ...
2976 <A HREF="#gdImagePtr">gdImagePtr</A> im;
2977 int black;
2978 int white;
2979 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 50);
2980 /* Background color (first allocated) */
2981 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
2982 /* Allocate the color white (red, green and blue all maximum). */
2983 white = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 255, 255);
2984 /* Inscribe a filled pie slice in the image. */
2985 gdImageFilledArc(im, 50, 25, 98, 48, 0, 45, white, gdArc);
2986 /* ... Do something with the image, such as
2987 saving it to a file... */
2988 /* Destroy it */
2989 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
2990 </PRE>
2991 <DT><A NAME="gdImageFilledEllipse">void gdImageFilledEllipse(gdImagePtr im, int cx, int cy, int w, int h, int color)</A>
2992 <STRONG> (FUNCTION)</STRONG>
2993 <DD>
2994 gdImageFilledEllipse is used to draw an ellipse centered at the given point,
2995 with the specified width and height in pixels. The ellipse is filled in
2996 the color specified by the last argument.
2997 <PRE>
2998 ... inside a function ...
2999 <A HREF="#gdImagePtr">gdImagePtr</A> im;
3000 int black;
3001 int white;
3002 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 50);
3003 /* Background color (first allocated) */
3004 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
3005 /* Allocate the color white (red, green and blue all maximum). */
3006 white = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 255, 255);
3007 /* Inscribe a filled ellipse in the image. */
3008 gdImageFilledEllipse(im, 50, 25, 98, 48, white);
3009 /* ... Do something with the image, such as
3010 saving it to a file... */
3011 /* Destroy it */
3012 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
3013 </PRE>
3014 <DT><A NAME="gdImageFillToBorder">void gdImageFillToBorder(gdImagePtr im, int x, int y, int border, int color)
3015 <STRONG> (FUNCTION)</STRONG>
3016 <DD>
3017 gdImageFillToBorder floods a portion of the image with the specified
3018 <code>color</code>, beginning at the specified point and stopping at
3019 the specified <code>border</code> color. For a way of flooding an
3020 area defined by the color of the starting point, see
3021 <A HREF="#gdImageFill">gdImageFill</A>.
3022 <P>
3023 The border color <em>cannot</em> be a special color
3024 such as <A HREF="#gdTiled">gdTiled</A>; it must be a proper
3025 solid color. The fill color can be, however.
3026 <P>
3027 Note that gdImageFillToBorder is recursive. It is not the most
3028 naive implementation possible, and the implementation is
3029 expected to improve, but there will always be degenerate
3030 cases in which the stack can become very deep. This can be
3031 a problem in MSDOS and MS Windows 3.1 environments. (Of course,
3032 in a Unix or Windows 95/98/NT environment with a proper stack, this is
3033 not a problem at all.)
3034 <PRE>
3035 ... inside a function ...
3036 <A HREF="#gdImagePtr">gdImagePtr</A> im;
3037 int black;
3038 int white;
3039 int red;
3040 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 50);
3041 /* Background color (first allocated) */
3042 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
3043 /* Allocate the color white (red, green and blue all maximum). */
3044 white = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 255, 255);
3045 /* Allocate the color red. */
3046 red = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 0, 0);
3047 /* Inscribe an ellipse in the image. */
3048 gdImageArc(im, 50, 25, 98, 48, 0, 360, white);
3049 /* Flood-fill the ellipse. Fill color is red, border color is
3050 white (ellipse). */
3051 gdImageFillToBorder(im, 50, 50, white, red);
3052 /* ... Do something with the image, such as
3053 saving it to a file... */
3054 /* Destroy it */
3055 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
3056 </PRE>
3057 <DT><A NAME="gdImageFill">void gdImageFill(gdImagePtr im, int x, int y, int color)
3058 <STRONG> (FUNCTION)</STRONG>
3059 <DD>
3060 gdImageFill floods a portion of the image with the specified
3061 <code>color</code>, beginning at the specified point and flooding the
3062 surrounding region of the same color as the starting point.
3063 For a way of flooding a region defined by a specific border
3064 color rather than by its interior color, see
3065 <A HREF="#gdImageFillToBorder">gdImageFillToBorder</A>.
3066 <P>
3067 The fill color can be <A HREF="#gdTiled">gdTiled</A>, resulting
3068 in a tile fill using another image as the tile. However,
3069 the tile image cannot be transparent. If the image you wish
3070 to fill with has a transparent color index, call
3071 <A HREF="#gdImageTransparent">gdImageTransparent</A> on the
3072 tile image and set the transparent color index to -1
3073 to turn off its transparency.
3074 <P>
3075 Note that gdImageFill is recursive. It is not the most
3076 naive implementation possible, and the implementation is
3077 expected to improve, but there will always be degenerate
3078 cases in which the stack can become very deep. This can be
3079 a problem in MSDOS and MS Windows environments. (Of course,
3080 in a Unix or Windows 95/98/NT environment with a proper stack, this is
3081 not a problem at all.)
3082 <PRE>
3083 ... inside a function ...
3084 <A HREF="#gdImagePtr">gdImagePtr</A> im;
3085 int black;
3086 int white;
3087 int red;
3088 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 50);
3089 /* Background color (first allocated) */
3090 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
3091 /* Allocate the color white (red, green and blue all maximum). */
3092 white = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 255, 255);
3093 /* Allocate the color red. */
3094 red = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 0, 0);
3095 /* Inscribe an ellipse in the image. */
3096 gdImageArc(im, 50, 25, 98, 48, 0, 360, white);
3097 /* Flood-fill the ellipse. Fill color is red, and will replace the
3098 black interior of the ellipse. */
3099 gdImageFill(im, 50, 50, red);
3100 /* ... Do something with the image, such as
3101 saving it to a file... */
3102 /* Destroy it */
3103 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
3104 </PRE>
3105 <DT><A NAME="gdImageSetAntiAliased">void gdImageSetAntiAliased(gdImagePtr im, int c)</A>
3106 <STRONG>(FUNCTION)</STRONG>
3107 <DD>
3108 "Antialiasing" is a process by which jagged edges associated with line
3109 drawing can be reduced by blending the foreground color with an appropriate
3110 percentage of the background, depending on how much of the pixel in question
3111 is actually within the boundaries of the line being drawn.
3112 All line-drawing functions,
3113 such as <A HREF="#gdImageLine">gdImageLine</A>,
3114 <A HREF="#gdImageOpenPolygon">gdImageOpenPolygon</A> and
3115 <A HREF="#gdImagePolygon">gdImagePolygon</A>, will draw antialiased lines
3116 if the special "color" <A HREF="#gdAntiAliased">
3117 gdAntiAliased</A> is used when calling them.
3118 <P>
3119 gdImageSetAntiAliased is used to specify the actual foreground color
3120 to be used when drawing antialiased lines. You may set any color to
3121 be the foreground, however as of version 2.0.12 an alpha channel
3122 component is not supported.
3123 <p>
3124 Antialiased lines can be drawn on both truecolor and palette-based
3125 images. However, attempts to draw antialiased lines on
3126 highly complex palette-based backgrounds may not give satisfactory
3127 results, due to the limited number of colors available in the
3128 palette. Antialiased line-drawing on simple backgrounds should
3129 work well with palette-based images; otherwise create or fetch
3130 a truecolor image instead.
3131 <P>
3132 You need not take any special action when you are finished
3133 with antialised line drawing.
3134 <PRE>
3135 ... inside a function ...
3136 <A HREF="#gdImagePtr">gdImagePtr</A> im, brush;
3137 int black;
3138 int blue;
3139 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 100);
3140 /* Background color (first allocated) */
3141 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
3142 blue = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 255);
3143 gdImageSetAntiAliased(im, blue);
3144 /* Draw a smooth line from the upper left corner to the
3145 lower right corner. */
3146 <A HREF="#gdImageLine">gdImageLine</A>(im, 0, 0, 99, 99, <A HREF="#gdBrushed">gdAntiAliased</A>);
3147 /* ... Do something with the image, such as
3148 saving it to a file... */
3149 /* Destroy it */
3150 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
3151 </PRE>
3152 See also <a href="#gdAntiAliased">gdAntiAliased</a> and
3153 <a href="#gdSetAntiAliasedDontBlend">gdSetAntiAliasedDontBlend</a>.
3154 <DT><A NAME="gdImageSetAntiAliasedDontBlend">void gdImageSetAntiAliasedDontBlend(gdImagePtr im, int c)</A>
3155 <STRONG>(FUNCTION)</STRONG>
3156 <DD>
3157 Normally, when drawing lines with the special
3158 <a href="#gdAntiAliased">gdAntiAliased</a> "color," blending with the
3159 background to reduce jagged edges is the desired behavior. However, when
3160 it is desired that lines not be blended with one particular color when
3161 it is encountered in the background, the
3162 gdImageSetAntiAliasedDontBlend function can be used to indicate the
3163 special color that the foreground should stand out more clearly against.
3164 <PRE>
3165 ... inside a function ...
3166 <A HREF="#gdImagePtr">gdImagePtr</A> im, brush;
3167 int black;
3168 int blue;
3169 int white;
3170 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 100);
3171 /* Background color (first allocated) */
3172 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
3173 blue = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 255);
3174 white = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 255, 255);
3175
3176 gdImageSetAntiAliased(im, blue);
3177 /* The portion of the line that crosses this white rectangle will
3178 not be blended smoothly */
3179 gdImageSetAntiAliasedDontBlend(im, white);
3180 gdImageFilledRectangle(im, 25, 25, 75, 75, white);
3181 /* Draw a smooth line from the upper left corner
3182 to the lower right corner. */
3183 <A HREF="#gdImageLine">gdImageLine</A>(im, 0, 0, 99, 99, <A HREF="#gdBrushed">gdAntiAliased</A>);
3184 /* ... Do something with the image, such as
3185 saving it to a file... */
3186 /* Destroy it */
3187 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
3188 </PRE>
3189 See also <a href="#gdAntiAliased">gdAntiAliased</a> and
3190 <a href="#gdSetAntiAliased">gdSetAntiAliased</a>.
3191 <DT><A NAME="gdImageSetBrush">void gdImageSetBrush(gdImagePtr im, gdImagePtr brush)</A>
3192 <STRONG>(FUNCTION)</STRONG>
3193 <DD>
3194 A "brush" is an image used to draw wide, shaped strokes in another image. Just
3195 as a paintbrush is not a single point, a brush image need not be
3196 a single pixel. <em>Any</em> gd image can be used as a brush, and by
3197 setting the transparent color index of the brush image with
3198 <A HREF="#gdImageColorTransparent">gdImageColorTransparent</A>,
3199 a brush of any shape can be created. All line-drawing functions,
3200 such as <A HREF="#gdImageLine">gdImageLine</A>,
3201 <A HREF="#gdImageOpenPolygon">gdImageOpenPolygon</A> and
3202 <A HREF="#gdImagePolygon">gdImagePolygon</A>, will use the
3203 current brush if the special "color" <A HREF="#gdBrushed">
3204 gdBrushed</A> or <A HREF="#gdStyledBrushed">gdStyledBrushed</A>
3205 is used when calling them.
3206 <P>
3207 gdImageSetBrush is used to specify the brush to be used in a
3208 particular image. You can set any image to be the brush.
3209 If the brush image does not have the same color map as the
3210 first image, any colors missing from the first image
3211 will be allocated. If not enough colors can be allocated,
3212 the closest colors already available will be used. This
3213 allows arbitrary PNGs to be used as brush images. It also
3214 means, however, that you should not set a brush unless you
3215 will actually use it; if you set a rapid succession of
3216 different brush images, you can quickly fill your color map,
3217 and the results will not be optimal.
3218 <P>
3219 You need not take any special action when you are finished
3220 with a brush. As for any other image, if you will not
3221 be using the brush image for any further purpose,
3222 you should call <A HREF="#gdImageDestroy">gdImageDestroy</A>.
3223 You must not use the color <A HREF="#gdBrushed">gdBrushed</A>
3224 if the current brush has been destroyed; you can of
3225 course set a new brush to replace it.
3226 <PRE>
3227 ... inside a function ...
3228 <A HREF="#gdImagePtr">gdImagePtr</A> im, brush;
3229 FILE *in;
3230 int black;
3231 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 100);
3232 /* Open the brush PNG. For best results, portions of the
3233 brush that should be transparent (ie, not part of the
3234 brush shape) should have the transparent color index. */
3235 in = fopen("star.png", "rb");
3236 brush = <A HREF="#gdImageCreateFromPng">gdImageCreateFromPng</A>(in);
3237 /* Background color (first allocated) */
3238 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
3239 gdImageSetBrush(im, brush);
3240 /* Draw a line from the upper left corner to the lower right corner
3241 using the brush. */
3242 <A HREF="#gdImageLine">gdImageLine</A>(im, 0, 0, 99, 99, <A HREF="#gdBrushed">gdBrushed</A>);
3243 /* ... Do something with the image, such as
3244 saving it to a file... */
3245 /* Destroy it */
3246 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
3247 /* Destroy the brush image */
3248 <A HREF="#gdImageDestroy">gdImageDestroy</A>(brush);
3249 </PRE>
3250 <DT><A NAME="gdImageSetTile">void gdImageSetTile(gdImagePtr im, gdImagePtr tile)</A>
3251 <STRONG>(FUNCTION)</STRONG>
3252 <DD>
3253 A "tile" is an image used to fill an area with a repeated pattern.
3254 <em>Any</em> gd image can be used as a tile, and by
3255 setting the transparent color index of the tile image with
3256 <A HREF="#gdImageColorTransparent">gdImageColorTransparent</A>,
3257 a tile that allows certain parts of the underlying area to shine
3258 through can be created. All region-filling functions,
3259 such as <A HREF="#gdImageFill">gdImageFill</A> and
3260 <A HREF="#gdImageFilledPolygon">gdImageFilledPolygon</A>, will use the
3261 current tile if the special "color" <A HREF="#gdTiled">
3262 gdTiled</A> is used when calling them.
3263 <P>
3264 gdImageSetTile is used to specify the tile to be used in a
3265 particular image. You can set any image to be the tile.
3266 If the tile image does not have the same color map as the
3267 first image, any colors missing from the first image
3268 will be allocated. If not enough colors can be allocated,
3269 the closest colors already available will be used. This
3270 allows arbitrary PNGs to be used as tile images. It also
3271 means, however, that you should not set a tile unless you
3272 will actually use it; if you set a rapid succession of
3273 different tile images, you can quickly fill your color map,
3274 and the results will not be optimal.
3275 <P>
3276 You need not take any special action when you are finished
3277 with a tile. As for any other image, if you will not
3278 be using the tile image for any further purpose,
3279 you should call <A HREF="#gdImageDestroy">gdImageDestroy</A>.
3280 You must not use the color <A HREF="#gdBrushed">gdTiled</A>
3281 if the current tile has been destroyed; you can of
3282 course set a new tile to replace it.
3283 <PRE>
3284 ... inside a function ...
3285 <A HREF="#gdImagePtr">gdImagePtr</A> im, tile;
3286 FILE *in;
3287 int black;
3288 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 100);
3289 /* Open the tile PNG. For best results, portions of the
3290 tile that should be transparent (ie, allowing the
3291 background to shine through) should have the transparent
3292 color index. */
3293 in = fopen("star.png", "rb");
3294 tile = <A HREF="#gdImageCreateFromPng">gdImageCreateFromPng</A>(in);
3295 /* Background color (first allocated) */
3296 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
3297 gdImageSetTile(im, tile);
3298 /* Fill an area using the tile. */
3299 <A HREF="#gdImageFilledRectangle">gdImageFilledRectangle</A>(im, 25, 25, 75, 75, <A HREF="#gdTiled">gdTiled</A>);
3300 /* ... Do something with the image, such as
3301 saving it to a file... */
3302 /* Destroy it */
3303 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
3304 /* Destroy the tile image */
3305 <A HREF="#gdImageDestroy">gdImageDestroy</A>(tile);
3306 </PRE>
3307 <DT><A NAME="gdImageSetStyle">void gdImageSetStyle(gdImagePtr im, int *style, int styleLength)</A>
3308 <STRONG>(FUNCTION)</STRONG>
3309 <DD>
3310 It is often desirable to draw dashed lines, dotted lines, and other
3311 variations on a broken line. gdImageSetStyle can be used to set
3312 any desired series of colors, including a special color that
3313 leaves the background intact, to be repeated during the drawing
3314 of a line.
3315 <P>
3316 To use gdImageSetStyle, create an array of integers and assign
3317 them the desired series of color values to be repeated.
3318 You can assign the special color value <A HREF="#gdTransparent">
3319 gdTransparent</A> to indicate that the existing color should
3320 be left unchanged for that particular pixel (allowing a dashed
3321 line to be attractively drawn over an existing image).
3322 <P>
3323 Then, to draw a line using the style, use the normal
3324 <A HREF="#gdImageLine">gdImageLine</A> function with the
3325 special color value <A HREF="#gdStyled">gdStyled</A>.
3326 <P>
3327 As of <A HREF="#whatsnew1.1.1">version 1.1.1</A>, the style
3328 array is copied when you set the style, so you need not
3329 be concerned with keeping the array around indefinitely.
3330 This should not break existing code that assumes styles
3331 are not copied.
3332 <P>
3333 You can also combine styles and brushes to draw the brush
3334 image at intervals instead of in a continuous stroke.
3335 When creating a style for use with a brush, the
3336 style values are interpreted differently: zero (0) indicates
3337 pixels at which the brush should not be drawn, while one (1)
3338 indicates pixels at which the brush should be drawn.
3339 To draw a styled, brushed line, you must use the
3340 special color value <A HREF="#gdStyledBrushed">
3341 gdStyledBrushed</A>. For an example of this feature
3342 in use, see gddemo.c (provided in the distribution).
3343 <PRE>
3344 <A HREF="#gdImagePtr">gdImagePtr</A> im;
3345 int styleDotted[2], styleDashed[6];
3346 FILE *in;
3347 int black;
3348 int red;
3349 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 100);
3350 /* Background color (first allocated) */
3351 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
3352 red = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 0, 0);
3353 /* Set up dotted style. Leave every other pixel alone. */
3354 styleDotted[0] = red;
3355 styleDotted[1] = gdTransparent;
3356 /* Set up dashed style. Three on, three off. */
3357 styleDashed[0] = red;
3358 styleDashed[1] = red;
3359 styleDashed[2] = red;
3360 styleDashed[3] = gdTransparent;
3361 styleDashed[4] = gdTransparent;
3362 styleDashed[5] = gdTransparent;
3363 /* Set dotted style. Note that we have to specify how many pixels are
3364 in the style! */
3365 gdImageSetStyle(im, styleDotted, 2);
3366 /* Draw a line from the upper left corner to the lower right corner. */
3367 <A HREF="#gdImageLine">gdImageLine</A>(im, 0, 0, 99, 99, <A HREF="#gdStyled">gdStyled</A>);
3368 /* Now the dashed line. */
3369 gdImageSetStyle(im, styleDashed, 6);
3370 <A HREF="#gdImageLine">gdImageLine</A>(im, 0, 99, 0, 99, <A HREF="#gdStyled">gdStyled</A>);
3371
3372 /* ... Do something with the image, such as
3373 saving it to a file ... */
3374
3375 /* Destroy it */
3376 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
3377 </PRE>
3378 <DT><A NAME="gdImageSetThickness">void gdImageSetThickness(gdImagePtr im, int thickness)</A> <STRONG>(FUNCTION)</STRONG>
3379 <DD>gdImageSetThickness determines the width of lines drawn by the
3380 <a href="#gdImageLine">gdImageLine</a>, <a href="#gdImagePolygon">gdImagePolygon</a>, <a href="#gdImageOpenPolygon">gdImageOpenPolygon</a>
3381 and related functions, in pixels.
3382 <PRE>
3383 ... inside a function ...
3384 <A HREF="#gdImagePtr">gdImagePtr</A> im;
3385 int black;
3386 int white;
3387 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 100);
3388 /* Background color (first allocated) */
3389 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
3390 /* Allocate the color white (red, green and blue all maximum). */
3391 white = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 255, 255);
3392 /* Set thickness. */
3393 gdImageSetThickness(im, 4);
3394 /* Draw a fat line from the upper left corner to the lower right corner. */
3395 gdImageLine(im, 0, 0, 99, 99, white);
3396 /* ... Do something with the image, such as
3397 saving it to a file... */
3398 /* Destroy it */
3399 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
3400 </PRE>
3401 <DT><A NAME="gdImageAlphaBlending">void gdImageAlphaBlending(gdImagePtr im, int blending)</A>
3402 <STRONG>(FUNCTION)</STRONG>
3403 <DD>
3404 The <a href="#gdImageAlphaBlending">gdImageAlphaBlending</a>
3405 function allows for two different modes of drawing on truecolor
3406 images. In blending mode, which is <strong>on by default (gd 2.0.2
3407 and above)</strong>, the alpha channel component of the color
3408 supplied to all drawing functions, such as
3409 <a href="#gdImageSetPixel">gdImageSetPixel</a>, determines how much of
3410 the underlying color should be allowed to shine through. As a result,
3411 gd automatically blends the existing color at that point with the
3412 drawing color, and stores the result in the image. The resulting pixel
3413 is opaque. In non-blending mode, the drawing color is copied literally
3414 with its alpha channel information, replacing the destination pixel.
3415 Blending mode is not available when drawing on palette images.
3416 <PRE>
3417 <A HREF="#gdImagePtr">gdImagePtr</A> im;
3418 int red, blue;
3419 im = <A HREF="#gdImageCreate">gdImageCreateTrueColor</A>(100, 100);
3420 /* Background color */
3421 red = <A HREF="#gdTrueColor">gdTrueColor</A>(255, 0, 0);
3422 gdImageFilledRectangle(im, 0, 0, 100, 100, red);
3423 /* Drawing color. Full transparency would be an alpha channel value
3424 of 127 (gd has a 7 bit alpha chnanel). 0 is opaque,
3425 127 is transparent. So cut gdAlphaTransparent in half to get
3426 50% blending. */
3427 blue = <A HREF="#gdTrueColor">gdTrueColorAlpha</A>(0, 0, 255, gdAlphaTransparent / 2);
3428 /* Draw with blending. Result will be 50% red, 50% blue: yellow
3429 (emitted light, remember, not reflected light. What you learned
3430 in Kindergarten is wrong here). */
3431 gdImageAlphaBlending(im, 1);
3432 <a href="#gdImageFilledRectangle">gdImageFilledRectangle</a>(im, 0, 0, 25, 25, blue);
3433 /* Draw without blending. Result will be 50% blue, 50%
3434 the background color of the image viewer or web browser
3435 used; results in browsers that don't support
3436 semi-transparent pixels are unpredictable! */
3437 gdImageAlphaBlending(im, 0);
3438 <a href="#gdImageFilledRectangle">gdImageFilledRectangle</a>(im, 75, 75, 25, 25, blue);
3439 /* Write the image to disk, etc. */
3440 </pre>
3441 <DT><A NAME="gdImageSaveAlpha">
3442 void gdImageSaveAlpha(gdImagePtr im, int saveFlag)</A>
3443 <STRONG>(FUNCTION)</STRONG>
3444 <DD>
3445 By default, gd 2.0.2 and above do not attempt to save full alpha channel information
3446 (as opposed to single-color transparency) when saving PNG images. (PNG
3447 is currently the only output format supported by gd which can accommodate
3448 alpa channel information.) This saves space in the output file. If you wish
3449 to create an image with alpha channel information for use with tools that
3450 support it, call gdImageSaveAlpha(im, 1) to turn on saving of such
3451 information, and call <a href="#gdImageAlphaBlending">gdImageAlphaBlending(im, 0)</a>
3452 to turn off alpha blending within the library so that alpha channel
3453 information is actually stored in the image rather than being composited
3454 immediately at the time that drawing functions are invoked.
3455 <DT><A NAME="gdImageSetClip">
3456 void gdImageSetClip(gdImagePtr im, int x1, int y1, int x2, int y2)</A>
3457 <STRONG>(FUNCTION)</STRONG>
3458 <DD>
3459 Establishes a clipping rectangle. Once gdImageSetClip has been called,
3460 all future drawing operations will remain within the specified clipping
3461 area, until a new gdImageSetClip call takes place. For instance,
3462 if a clipping rectangle of 25, 25, 75, 75 has been set within a
3463 100x100 image, a diagonal line from 0,0 to 99,99 will appear only
3464 between 25,25 and 75,75.
3465 <p>
3466 If gdImageSetClip is never called, the clipping area will be the
3467 entire image.
3468 <p>
3469 The parameters passed to gdImageSetClip are checked against the dimensions
3470 of the image and limited to "safe" values.
3471 <PRE>
3472 ... inside a function ...
3473 <A HREF="#gdImagePtr">gdImagePtr</A> im;
3474 int black;
3475 int white;
3476 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 100);
3477 /* Background color (first allocated) */
3478 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
3479 /* Allocate the color white (red, green and blue all maximum). */
3480 white = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 255, 255);
3481 /* Set the clipping rectangle. */
3482 gdImageSetClip(im, 25, 25, 75, 75);
3483 /* Draw a line from the upper left corner to the lower right corner.
3484 Only the part within the clipping rectangle will appear. */
3485 <a href="#gdImageLine">gdImageLine</a>(im, 0, 0, 99, 99, white);
3486 /* ... Do something with the image, such as
3487 saving it to a file ... */
3488 /* Destroy it */
3489 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
3490 </PRE>
3491 See also <a href="#gdImageGetClip">gdImageGetClip</a>.
3492 <DT><A NAME="gdImageGetClip">
3493 void gdImageGetClip(gdImagePtr im, int *x1P, int *y1P, int *x2P, int *y2P)</A>
3494 <STRONG>(FUNCTION)</STRONG>
3495 <DD>
3496 Fetches the boundaries of the current clipping rectangle.
3497 <pre>
3498 ... Inside a function ...
3499 gdImagePtr im = <a href="#gdImageCreateTrueColor">gdImageCreateTrueColor</a>(100, 100);
3500 int x1, y1, x2, y2;
3501 gdImageSetClip(im, 25, 25, 75, 75);
3502 gdImageGetClip(im, &x1, &y1, &x2, &y2);
3503 printf("%d %d %d %d\n", x1, y1, x2, y2);
3504 </pre>
3505 The above code would print:
3506 <pre>
3507 25 25 75 75
3508 </pre>
3509 See also <a href="#gdImageSetClip">gdImageSetClip</a>.
3510 </DL>
3511 <H3><A NAME="query">Query Functions</A></H3>
3512 <DL>
3513 <DT><A NAME="gdImageBlue">
3514 int gdImageAlpha(gdImagePtr im, int color)</A>
3515 <STRONG>(MACRO)</STRONG>
3516 <DD>
3517 gdImageAlpha is a macro which returns the alpha channel component of
3518 the specified color index. Alpha channel values vary between
3519 0 (gdAlphaOpaque), which does not blend at all with the background,
3520 through 127 (gdAlphaTransparent), which allows the background to
3521 shine through 100%. Use this macro rather than accessing the
3522 structure members directly.
3523 int gdImageBlue(gdImagePtr im, int color)</A>
3524 <STRONG>(MACRO)</STRONG>
3525 <DD>
3526 gdImageBlue is a macro which returns the blue component of
3527 the specified color index. Use this macro rather than accessing the
3528 structure members directly.
3529 <DT><A NAME="gdImageGetPixel">int gdImageGetPixel(gdImagePtr im, int x, int y)</A>
3530 <STRONG>(FUNCTION)</STRONG>
3531 <DD>
3532 gdImageGetPixel() retrieves the color index of a particular
3533 pixel. Always use this function to query pixels;
3534 do not access the pixels of the <A HREF="#gdImage">gdImage</A> structure
3535 directly.
3536 <PRE>
3537 ... inside a function ...
3538 FILE *in;
3539 gdImagePtr im;
3540 int c;
3541 in = fopen("mypng.png", "rb");
3542 im = <A HREF="#gdImageCreateFromPng">gdImageCreateFromPng</A>(in);
3543 fclose(in);
3544 c = gdImageGetPixel(im, gdImageSX(im) / 2, gdImageSY(im) / 2);
3545 printf("The value of the center pixel is %d; RGB values are %d,%d,%d\n",
3546 c, im->red[c], im->green[c], im->blue[c]);
3547 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
3548 </PRE>
3549 <DT><A NAME="gdImageBoundsSafe">
3550 int gdImageBoundsSafe(gdImagePtr im, int x, int y)</A>
3551 <STRONG>(FUNCTION)</STRONG>
3552 <DD>
3553 gdImageBoundsSafe returns true (1) if the specified point is within the
3554 current clipping rectangle, false (0) if not. The clipping rectangle is
3555 set by <a href="#gdImageSetClip">gdImageSetClip</a> and defaults
3556 to the entire image. This function is intended primarily for
3557 use by those who wish to add functions to gd. All of the gd drawing
3558 functions already clip safely using this function or its macro
3559 equivalent in gd.c, gdImageBoundsSafeMacro.
3560 <PRE>
3561 ... inside a function ...
3562 <A HREF="#gdImagePtr">gdImagePtr</A> im;
3563 int black;
3564 int white;
3565 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 100);
3566 if (gdImageBoundsSafe(im, 50, 50)) {
3567 printf("50, 50 is within the image bounds\n");
3568 } else {
3569 printf("50, 50 is outside the image bounds\n");
3570 }
3571 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
3572 </PRE>
3573 <DT><A NAME="gdImageGreen">
3574 int gdImageGreen(gdImagePtr im, int color)</A>
3575 <STRONG>(MACRO)</STRONG>
3576 <DD>
3577 gdImageGreen is a macro which returns the green component of
3578 the specified color index. Use this macro rather than accessing the
3579 structure members directly.
3580 <DT><A NAME="gdImageRed">
3581 int gdImageRed(gdImagePtr im, int color)</A>
3582 <STRONG>(MACRO)</STRONG>
3583 <DD>
3584 gdImageRed is a macro which returns the red component of
3585 the specified color index. Use this macro rather than accessing the
3586 structure members directly.
3587 <DT><A NAME="gdImageSX">
3588 int gdImageSX(gdImagePtr im)</A>
3589 <STRONG>(MACRO)</STRONG>
3590 <DD>
3591 gdImageSX is a macro which returns the width of the image
3592 in pixels. Use this macro rather than accessing the
3593 structure members directly.
3594 <DT><A NAME="gdImageSY">
3595 int gdImageSY(gdImagePtr im)</A>
3596 <STRONG>(MACRO)</STRONG>
3597 <DD>
3598 gdImageSY is a macro which returns the height of the image
3599 in pixels. Use this macro rather than accessing the
3600 structure members directly.
3601 </DL>
3602 <H3><A NAME="fonts">Fonts and text-handling functions</A></H3>
3603 <DL>
3604 <DT><A NAME="gdFontGetSmall">
3605 gdFontPtr gdFontGetSmall(void)</a>
3606 <STRONG>(FUNCTION)</STRONG>
3607 <DD>
3608 Returns a font pointer for the "small" gd font. Your code must
3609 include the header file <code>gdfonts.h</code> before
3610 calling this function. Under Windows, due to the nature of DLLs,
3611 the use of this function is strongly recommended rather than attempting
3612 to use the <code>gdFontSmall</code> pointer directly. (You may
3613 safely assign the result to a local <code>gdFontPtr</code> variable
3614 in your own code.)
3615 <p>
3616 See <a href="#gdImageString">gdImageString</a> for more information
3617 and examples, or <a href="#gdImageStringFT">gdImageStringFT</a> for a
3618 freetype-based alternative that supports truetype fonts.
3619 <DT><A NAME="gdFontGetLarge">
3620 gdFontPtr gdFontGetLarge(void)</a>
3621 <STRONG>(FUNCTION)</STRONG>
3622 <DD>
3623 Returns a font pointer for the "large" gd font. Your code must
3624 include the header file <code>gdfontl.h</code> before
3625 calling this function. Under Windows, due to the nature of DLLs,
3626 the use of this function is strongly recommended rather than attempting
3627 to use the <code>gdFontLarge</code> pointer directly. (You may
3628 safely assign the result to a local <code>gdFontPtr</code> variable
3629 in your own code.)
3630 <p>
3631 See <a href="#gdImageString">gdImageString</a> for more information
3632 and examples, or <a href="#gdImageStringFT">gdImageStringFT</a> for a
3633 freetype-based alternative that supports truetype fonts.
3634 <DT><A NAME="gdFontGetMediumBold">
3635 gdFontPtr gdFontGetMediumBold(void)</a>
3636 <STRONG>(FUNCTION)</STRONG>
3637 <DD>
3638 Returns a font pointer for the "medium bold" gd font. Your code must
3639 include the header file <code>gdfontmb.h</code> before
3640 calling this function. Under Windows, due to the nature of DLLs,
3641 the use of this function is strongly recommended rather than attempting
3642 to use the <code>gdFontMediumBold</code> pointer directly. (You may
3643 safely assign the result to a local <code>gdFontPtr</code> variable
3644 in your own code.)
3645 <p>
3646 See <a href="#gdImageString">gdImageString</a> for more information
3647 and examples, or <a href="#gdImageStringFT">gdImageStringFT</a> for a
3648 freetype-based alternative that supports truetype fonts.
3649 <DT><A NAME="gdFontGetGiant">
3650 gdFontPtr gdFontGetGiant(void)</a>
3651 <STRONG>(FUNCTION)</STRONG>
3652 <DD>
3653 Returns a font pointer for the "giant" gd font. Your code must
3654 include the header file <code>gdfontg.h</code> before
3655 calling this function. Under Windows, due to the nature of DLLs,
3656 the use of this function is strongly recommended rather than attempting
3657 to use the <code>gdFontGiant</code> pointer directly. (You may
3658 safely assign the result to a local <code>gdFontPtr</code> variable
3659 in your own code.)
3660 <p>
3661 See <a href="#gdImageString">gdImageString</a> for more information
3662 and examples, or <a href="#gdImageStringFT">gdImageStringFT</a> for a
3663 freetype-based alternative that supports truetype fonts.
3664 <DT><A NAME="gdFontGetTiny">
3665 gdFontPtr gdFontGetTiny(void)</a>
3666 <STRONG>(FUNCTION)</STRONG>
3667 <DD>
3668 Returns a font pointer for the "tiny" gd font. Your code must
3669 include the header file <code>gdfontt.h</code> before
3670 calling this function. Under Windows, due to the nature of DLLs,
3671 the use of this function is strongly recommended rather than attempting
3672 to use the <code>gdFontTiny</code> pointer directly. (You may
3673 safely assign the result to a local <code>gdFontPtr</code> variable
3674 in your own code.)
3675 <p>
3676 See <a href="#gdImageString">gdImageString</a> for more information
3677 and examples, or <a href="#gdImageStringFT">gdImageStringFT</a> for a
3678 freetype-based alternative that supports truetype fonts.
3679 <DT><A NAME="gdImageChar">
3680 void gdImageChar(gdImagePtr im, gdFontPtr font, int x, int y,
3681 int c, int color)</A>
3682 <STRONG>(FUNCTION)</STRONG>
3683 <DD>
3684 gdImageChar is used to draw single characters on the image.
3685 (To draw multiple characters, use <A HREF="#gdImageString">
3686 gdImageString</A> or <A HREF="#gdImageString16">
3687 gdImageString16</A>.
3688 See also <A HREF="#gdImageStringFT">gdImageStringFT</A> for a high quality
3689 solution.)
3690 The second argument is a pointer to a font definition structure; five fonts are
3691 provided with gd, gdFontTiny, gdFontSmall, gdFontMediumBold,
3692 gdFontLarge, and gdFontGiant.
3693 <p>
3694 You must include the files "gdfontt.h", "gdfonts.h", "gdfontmb.h",
3695 "gdfontl.h" and "gdfontg.h" respectively
3696 and (if you are not using a library-based approach) link with the
3697 corresponding .c files to use the provided fonts.
3698 <p>
3699 <blockquote>
3700 <b>Windows DLL users:</b> although you can use
3701 these DLL-exported pointers directly, you cannot easily assign them to other
3702 pointers. This will cause hard-to-debug problems. To avoid such troubles, you
3703 should call the functions gdFontGetTiny(), gdFontGetSmall(),
3704 gdFontGetMediumBold(), gdFontGetLarge(), and gdFontGetGiant() in order to
3705 obtain pointers to the fonts under Windows.
3706 </blockquote>
3707 <p>
3708 The character specified by the fifth
3709 argument is drawn from left to right in the specified
3710 color. (See <A HREF="#gdImageCharUp">gdImageCharUp</A> for a way
3711 of drawing vertical text.) Pixels not
3712 set by a particular character retain their previous color.
3713 <PRE>
3714 #include "gd.h"
3715 #include "gdfontl.h"
3716 ... inside a function ...
3717 <A HREF="#gdImagePtr">gdImagePtr</A> im;
3718 int black;
3719 int white;
3720 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 100);
3721 /* Background color (first allocated) */
3722 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
3723 /* Allocate the color white (red, green and blue all maximum). */
3724 white = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 255, 255);
3725 /* Draw a character. */
3726 gdImageChar(im, gdFontGetLarge(), 0, 0, 'Q', white);
3727 /* ... Do something with the image, such as
3728 saving it to a file... */
3729 /* Destroy it */
3730 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
3731 </PRE>
3732 <DT><A NAME="gdImageCharUp">
3733 void gdImageCharUp(gdImagePtr im, gdFontPtr font, int x, int y,
3734 int c, int color)</A>
3735 <STRONG>(FUNCTION)</STRONG>
3736 <DD>
3737 gdImageCharUp is used to draw single characters on the image,
3738 rotated 90 degrees.
3739 (To draw multiple characters, use <A HREF="#gdImageStringUp">
3740 gdImageStringUp</A> or <A HREF="#gdImageStringUp16">
3741 gdImageStringUp16</A>.) The second argument is a
3742 pointer to a font definition structure; five fonts are
3743 provided with gd, gdFontTiny, gdFontSmall, gdFontMediumBold,
3744 gdFontLarge, and gdFontGiant. You must
3745 include the files "gdfontt.h", "gdfonts.h", "gdfontmb.h",
3746 "gdfontl.h" and "gdfontg.h" respectively
3747 and (if you are not using a library-based approach) link with the
3748 corresponding .c files to use the provided fonts.
3749 <p>
3750 <blockquote>
3751 <b>Windows DLL users:</b> although you can use
3752 these DLL-exported pointers directly, you cannot easily assign them to other
3753 pointers. This will cause hard-to-debug problems. To avoid such troubles, you
3754 should call the functions gdFontGetTiny(), gdFontGetSmall(),
3755 gdFontGetMediumBold(), gdFontGetLarge(), and gdFontGetGiant() in order to
3756 obtain pointers to the fonts under Windows.
3757 </blockquote>
3758 <p>
3759 The character specified by
3760 the fifth argument is drawn
3761 from bottom to top, rotated at a 90-degree angle, in the specified
3762 color. (See <A HREF="#gdImageChar">gdImageChar</A> for a way
3763 of drawing horizontal text.) Pixels not
3764 set by a particular character retain their previous color.
3765 <PRE>
3766 #include "gd.h"
3767 #include "gdfontl.h"
3768 ... inside a function ...
3769 <A HREF="#gdImagePtr">gdImagePtr</A> im;
3770 int black;
3771 int white;
3772 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 100);
3773 /* Background color (first allocated) */
3774 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
3775 /* Allocate the color white (red, green and blue all maximum). */
3776 white = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 255, 255);
3777 /* Draw a character upwards so it rests against the top of the image. */
3778 gdImageCharUp(im, gdFontGetLarge(),
3779 0, gdFontGetLarge()->h, 'Q', white);
3780 /* ... Do something with the image, such as
3781 saving it to a file... */
3782 /* Destroy it */
3783 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
3784 </PRE>
3785 <DT><A NAME="gdImageString">
3786 void gdImageString(gdImagePtr im, gdFontPtr font, int x, int y,
3787 unsigned char *s, int color)</A>
3788 <STRONG>(FUNCTION)</STRONG>
3789 <DD>
3790 gdImageString is used to draw multiple characters on the image.
3791 (To draw single characters, use <A HREF="#gdImageChar">
3792 gdImageChar</A>.) The second argument is a
3793 pointer to a font definition structure; five fonts are
3794 provided with gd, gdFontTiny, gdFontSmall, gdFontMediumBold,
3795 gdFontLarge, and gdFontGiant. You must
3796 include the files "gdfontt.h", "gdfonts.h", "gdfontmb.h",
3797 "gdfontl.h" and "gdfontg.h" respectively
3798 and (if you are not using a library-based approach) link with the
3799 corresponding .c files to use the provided fonts.
3800 <p>
3801 <blockquote>
3802 <b>Windows DLL users:</b> although you can use
3803 these DLL-exported pointers directly, you cannot easily assign them to other
3804 pointers. This will cause hard-to-debug problems. To avoid such troubles, you
3805 should call the functions gdFontGetTiny(), gdFontGetSmall(),
3806 gdFontGetMediumBold(), gdFontGetLarge(), and gdFontGetGiant() in order to
3807 obtain pointers to the fonts under Windows.
3808 </blockquote>
3809 The null-terminated C string specified
3810 by the fifth argument is drawn from left to right in the specified
3811 color. (See <A HREF="#gdImageStringUp">gdImageStringUp</A> for a way
3812 of drawing vertical text.
3813 See also <A HREF="#gdImageStringFT">gdImageStringFT</A> for a high
3814 quality solution.)
3815 Pixels not set by a particular character retain their previous color.
3816 <PRE>
3817 #include "gd.h"
3818 #include "gdfontl.h"
3819 #include &lt;string.h&gt;
3820 ... inside a function ...
3821 <A HREF="#gdImagePtr">gdImagePtr</A> im;
3822 int black;
3823 int white;
3824 /* String to draw. */
3825 char *s = "Hello.";
3826 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 100);
3827 /* Background color (first allocated) */
3828 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
3829 /* Allocate the color white (red, green and blue all maximum). */
3830 white = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 255, 255);
3831 /* Draw a centered string. */
3832 gdImageString(im, gdFontGetLarge(),
3833 im->sx / 2 - (strlen(s) * gdFontGetLarge()->w / 2),
3834 im->sy / 2 - gdFontGetLarge()->h / 2,
3835 s, white);
3836 /* ... Do something with the image, such as
3837 saving it to a file... */
3838 /* Destroy it */
3839 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
3840 </PRE>
3841 <DT><A NAME="gdImageString16">
3842 void gdImageString16(gdImagePtr im, gdFontPtr font, int x, int y,
3843 unsigned short *s, int color)</A>
3844 <STRONG>(FUNCTION)</STRONG>
3845 <DD>
3846 gdImageString16 is used to draw multiple 16-bit characters on the image.
3847 (To draw single characters, use <A HREF="#gdImageChar">
3848 gdImageChar16</A>.) The second argument is a
3849 pointer to a font definition structure; no 16-bit fonts are
3850 provided with gd as standard equipment and there does not seem to be
3851 much momentum to create them although the bdftogd script can do so. The
3852 preferred solution is <a href="#gdImageStringFT">gdImageStringFT</a>, which
3853 uses freetype to provide truetype font support.
3854 <p>
3855 <blockquote>
3856 <b>Windows DLL users:</b> although you can use
3857 these DLL-exported pointers directly, you cannot easily assign them to other
3858 pointers. This will cause hard-to-debug problems. To avoid such troubles, you
3859 should call the functions gdFontGetTiny(), gdFontGetSmall(),
3860 gdFontGetMediumBold(), gdFontGetLarge(), and gdFontGetGiant() in order to
3861 obtain pointers to the fonts under Windows.
3862 </blockquote>
3863 The null-terminated string of characters represented as 16-bit unsigned
3864 short integers specified by the fifth argument is drawn from left to right
3865 in the specified
3866 color. (See <A HREF="#gdImageStringUp16">gdImageStringUp16</A> for a way
3867 of drawing vertical text.) Pixels not
3868 set by a particular character retain their previous color.
3869 <p>
3870 This function was added in gd1.3 to provide a means of rendering
3871 fonts with more than 256 characters for those who have them. A
3872 more frequently used routine is <a href="#gdImageString">gdImageString</a>.
3873 <DT><A NAME="gdImageStringUp">
3874 void gdImageStringUp(gdImagePtr im, gdFontPtr font, int x, int y,
3875 unsigned char *s, int color)</A>
3876 <STRONG>(FUNCTION)</STRONG>
3877 <DD>
3878 gdImageStringUp is used to draw multiple characters on the image,
3879 rotated 90 degrees.
3880 (To draw single characters, use <A HREF="#gdImageCharUp">
3881 gdImageCharUp</A>.) The second argument is a
3882 pointer to a font definition structure; five fonts are
3883 provided with gd, gdFontTiny, gdFontSmall, gdFontMediumBold,
3884 gdFontLarge, and gdFontGiant. You must
3885 include the files "gdfontt.h", "gdfonts.h", "gdfontmb.h",
3886 "gdfontl.h" and "gdfontg.h" respectively
3887 and (if you are not using a library-based approach) link with the
3888 corresponding .c files to use the provided fonts.
3889 <blockquote>
3890 <b>Windows DLL users:</b> although you can use
3891 these DLL-exported pointers directly, you cannot easily assign them to other
3892 pointers. This will cause hard-to-debug problems. To avoid such troubles, you
3893 should call the functions gdFontGetTiny(), gdFontGetSmall(),
3894 gdFontGetMediumBold(), gdFontGetLarge(), and gdFontGetGiant() in order to
3895 obtain pointers to the fonts under Windows.
3896 </blockquote>
3897
3898 The null-terminated C string specified
3899 by the fifth argument is drawn from bottom to top (rotated
3900 90 degrees) in the specified color. (See
3901 <A HREF="#gdImageString">gdImageString</A> for a way
3902 of drawing horizontal text.) Pixels not
3903 set by a particular character retain their previous color.
3904 <PRE>
3905 #include "gd.h"
3906 #include "gdfontl.h"
3907 #include &lt;string.h&gt;
3908 ... inside a function ...
3909 <A HREF="#gdImagePtr">gdImagePtr</A> im;
3910 int black;
3911 int white;
3912 /* String to draw. */
3913 char *s = "Hello.";
3914 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 100);
3915 /* Background color (first allocated) */
3916 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
3917 /* Allocate the color white (red, green and blue all maximum). */
3918 white = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 255, 255);
3919 /* Draw a centered string going upwards. Axes are reversed,
3920 and Y axis is decreasing as the string is drawn. */
3921 gdImageStringUp(im, gdFontGetLarge(),
3922 im->w / 2 - gdFontGetLarge()->h / 2,
3923 im->h / 2 + (strlen(s) * gdFontGetLarge()->w / 2),
3924 s, white);
3925 /* ... Do something with the image, such as
3926 saving it to a file... */
3927 /* Destroy it */
3928 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
3929 </PRE>
3930 <DT><A NAME="gdImageStringUp16">
3931 void gdImageStringUp16(gdImagePtr im, gdFontPtr font, int x, int y,
3932 unsigned short *s, int color)</A>
3933 <STRONG>(FUNCTION)</STRONG>
3934 <DD>
3935 gdImageString is used to draw multiple 16-bit characters vertically on
3936 the image. (To draw single characters, use <A HREF="#gdImageChar">
3937 gdImageChar</A>.) The second argument is a
3938 pointer to a font definition structure; five fonts are
3939 provided with gd, gdFontTiny, gdFontSmall, gdFontMediumBold,
3940 gdFontLarge, and gdFontGiant. You must
3941 include the files "gdfontt.h", "gdfonts.h", "gdfontmb.h",
3942 "gdfontl.h" and "gdfontg.h" respectively
3943 and (if you are not using a library-based approach) link with the
3944 corresponding .c files to use the provided fonts.
3945 <blockquote>
3946 <b>Windows DLL users:</b> although you can use
3947 these DLL-exported pointers directly, you cannot easily assign them to other
3948 pointers. This will cause hard-to-debug problems. To avoid such troubles, you
3949 should call the functions gdFontGetTiny(), gdFontGetSmall(),
3950 gdFontGetMediumBold(), gdFontGetLarge(), and gdFontGetGiant() in order to
3951 obtain pointers to the fonts under Windows.
3952 </blockquote>
3953 The null-terminated string of characters represented as 16-bit unsigned
3954 short integers specified by the fifth argument is drawn from bottom to top
3955 in the specified color.
3956 (See <A HREF="#gdImageStringUp16">gdImageStringUp16</A> for a way
3957 of drawing horizontal text.) Pixels not
3958 set by a particular character retain their previous color.
3959 <p>
3960 This function was added in gd1.3 to provide a means of rendering
3961 fonts with more than 256 characters for those who have them. A
3962 more frequently used routine is <a href="#gdImageStringUp">gdImageStringUp</a>.
3963 <DT><A NAME="gdFTUseFontConfig">int gdFTUseFontConfig(int flag)</a>
3964 <STRONG>(FUNCTION)</STRONG>
3965 <DD>
3966 GD 2.0.29 introduced the ability to use
3967 <a href="http://freedesktop.org/software/fontconfig">fontconfig patterns</a>
3968 rather than font file names as parameters to
3969 <a href="#gdImageStringFT">gdImageStringFT</a>,
3970 <a href="#gdImageStringFTEx">gdImageStringFTEx</a> and
3971 <a href="#gdImageStringFTEx">gdImageStringFTCircle</a>.
3972 For backwards compatibility reasons, the fontlist parameter to those
3973 functions is still expected to be a full or partial font file path name
3974 or list thereof by default. However, as a convenience, a single call
3975 to gdFTUseFontConfig with a nonzero parameter configures gd to expect
3976 the fontlist parameter to be a fontconfig pattern. Regardless of whether
3977 the flag argument is nonzero, this function returns true when the
3978 fontconfig library is available and false when it is not. When fontconfig
3979 is not available, the fontlist parameter always behaves as in previous
3980 versions of GD.
3981 <pre>
3982 #include "gd.h"
3983 #include &lt;string.h&gt;
3984 ... inside a function ...
3985 <A HREF="#gdImagePtr">gdImagePtr</A> im;
3986 int black;
3987 int white;
3988 int brect[8];
3989 int x, y;
3990 char *err;
3991
3992 char *s = "Hello."; /* String to draw. */
3993 double sz = 40.;
3994 char *fc = "times:bold:italic"; /* fontconfig pattern */
3995
3996 /* Signal that all freetype font calls in this program will receive
3997 fontconfig patterns rather than filenames of font files */
3998 gdUseFontConfig(1);
3999
4000 /* obtain brect so that we can size the image */
4001 err = <A HREF="#gdImageStringFT">gdImageStringFT</A>(NULL,&brect[0],0,fc,sz,0.,0,0,s);
4002 if (err) {fprintf(stderr,err); return 1;}
4003
4004 /* create an image big enough for the string plus a little whitespace */
4005 x = brect[2]-brect[6] + 6;
4006 y = brect[3]-brect[7] + 6;
4007 im = <A HREF="#gdImageCreate">gdImageCreate</A>(x,y);
4008
4009 /* Background color (first allocated) */
4010 white = <A HREF="#gdImageColorResolve">gdImageColorResolve</A>(im, 255, 255, 255);
4011 black = <A HREF="#gdImageColorResolve">gdImageColorResolve</A>(im, 0, 0, 0);
4012
4013 /* render the string, offset origin to center string*/
4014 /* note that we use top-left coordinate for adjustment
4015 * since gd origin is in top-left with y increasing downwards. */
4016 x = 3 - brect[6];
4017 y = 3 - brect[7];
4018 err = <A HREF="#gdImageStringFT">gdImageStringFT</A>(im,&brect[0],black,fc,sz,0.0,x,y,s);
4019 if (err) {fprintf(stderr,err); return 1;}
4020 </pre>
4021 <DT><A NAME="gdImageStringFT">
4022 char *gdImageStringFT(gdImagePtr im, int *brect,
4023 int fg, char *fontname, double ptsize, double angle,
4024 int x, int y, char *string)</A>
4025 <STRONG>(FUNCTION)</STRONG>
4026 <DD>
4027 <strong>RECOMMENDED. New in 1.8.4.</strong> gdImageStringFT draws text using the
4028 FreeType 2.x library.
4029 <p>
4030 gdImageStringFT draws a string of anti-aliased characters on the image using
4031 the <A HREF=http://www.freetype.org/>FreeType</A>
4032 library to render user-supplied TrueType fonts. <strong>We do not provide
4033 TrueType fonts (.ttf and .ttc files). Obtaining them is entirely up to
4034 you.</strong> The string is anti-aliased, meaning that there should be
4035 fewer "jaggies" visible. The fontname is the full pathname to a TrueType
4036 font file, or a font face name if the GDFONTPATH environment variable
4037 or the compiled-in DEFAULT_FONTPATH macro of gdft.c have been set intelligently. In the absence of a full path, the font face name may be presented with or without extension (2.0.26).
4038 <p>
4039 The null-terminated <b>string</b> argument is considered to be encoded via the UTF_8
4040 standard; also, HTML entities are supported, including decimal,
4041 hexadecimal, and named entities (2.0.26). Those who are passing
4042 ordinary ASCII strings may have difficulty with the &amp;
4043 character unless encoded correctly as &amp; but should have no
4044 other difficulties.
4045 <p>
4046 The string may be arbitrarily scaled (ptsize) and rotated (angle in radians).
4047 The direction of rotation is counter-clockwise, with 0 radians (0 degrees)
4048 at 3 o'clock and PI/2 radians (90 degrees) at 12 o'clock.
4049
4050 <p>
4051 The user-supplied int brect[8] array is filled on return from gdImageStringFT
4052 with the 8 elements representing the 4 corner coordinates of the
4053 bounding rectangle (the smallest rectangle that completely surrounds the
4054 rendered string and does not intersect any pixel of the rendered string).
4055
4056 <TABLE BORDER="1">
4057 <TR><TD ALIGN="LEFT" VALIGN="TOP">0</TD><TD ALIGN="LEFT" VALIGN="TOP">
4058 lower left corner, X position</TD></TR>
4059 <TR><TD ALIGN="LEFT" VALIGN="TOP">1</TD><TD ALIGN="LEFT" VALIGN="TOP">
4060 lower left corner, Y position</TD></TR>
4061 <TR><TD ALIGN="LEFT" VALIGN="TOP">2</TD><TD ALIGN="LEFT" VALIGN="TOP">
4062 lower right corner, X position</TD></TR>
4063 <TR><TD ALIGN="LEFT" VALIGN="TOP">3</TD><TD ALIGN="LEFT" VALIGN="TOP">
4064 lower right corner, Y position</TD></TR>
4065 <TR><TD ALIGN="LEFT" VALIGN="TOP">4</TD><TD ALIGN="LEFT" VALIGN="TOP">
4066 upper right corner, X position</TD></TR>
4067 <TR><TD ALIGN="LEFT" VALIGN="TOP">5</TD><TD ALIGN="LEFT" VALIGN="TOP">
4068 upper right corner, Y position</TD></TR>
4069 <TR><TD ALIGN="LEFT" VALIGN="TOP">6</TD><TD ALIGN="LEFT" VALIGN="TOP">
4070 upper left corner, X position</TD></TR>
4071 <TR><TD ALIGN="LEFT" VALIGN="TOP">7</TD><TD ALIGN="LEFT" VALIGN="TOP">
4072 upper left corner, Y position</TD></TR>
4073 </TABLE>
4074 <p>
4075 The points are relative to the text regardless of the angle, so "upper left"
4076 means in the top left-hand corner seeing the text horizontally.
4077 <p>
4078 Use a NULL gdImagePtr to get the bounding rectangle without rendering.
4079 This is a relatively cheap operation if followed by a rendering of the same
4080 string, because of the caching of the partial rendering during bounding
4081 rectangle calculation.
4082 <p>
4083 The string is rendered in the color indicated by the gf color index.
4084 <strong>Use the negative of the desired color index to
4085 disable anti-aliasing.</strong>
4086 <p>
4087 The string may contain UTF-8 sequences like: "&amp;#192;"
4088 <p>
4089 gdImageStringFT will return a null char* on success, or an error
4090 string on failure.
4091 <PRE>
4092 #include "gd.h"
4093 #include &lt;string.h&gt;
4094 ... inside a function ...
4095 <A HREF="#gdImagePtr">gdImagePtr</A> im;
4096 int black;
4097 int white;
4098 int brect[8];
4099 int x, y;
4100 char *err;
4101
4102 char *s = "Hello."; /* String to draw. */
4103 double sz = 40.;
4104 char *f = "/usr/local/share/ttf/Times.ttf"; /* User supplied font */
4105
4106 /* obtain brect so that we can size the image */
4107 err = <A HREF="#gdImageStringFT">gdImageStringFT</A>(NULL,&brect[0],0,f,sz,0.,0,0,s);
4108 if (err) {fprintf(stderr,err); return 1;}
4109
4110 /* create an image big enough for the string plus a little whitespace */
4111 x = brect[2]-brect[6] + 6;
4112 y = brect[3]-brect[7] + 6;
4113 im = <A HREF="#gdImageCreate">gdImageCreate</A>(x,y);
4114
4115 /* Background color (first allocated) */
4116 white = <A HREF="#gdImageColorResolve">gdImageColorResolve</A>(im, 255, 255, 255);
4117 black = <A HREF="#gdImageColorResolve">gdImageColorResolve</A>(im, 0, 0, 0);
4118
4119 /* render the string, offset origin to center string*/
4120 /* note that we use top-left coordinate for adjustment
4121 * since gd origin is in top-left with y increasing downwards. */
4122 x = 3 - brect[6];
4123 y = 3 - brect[7];
4124 err = <A HREF="#gdImageStringFT">gdImageStringFT</A>(im,&brect[0],black,f,sz,0.0,x,y,s);
4125 if (err) {fprintf(stderr,err); return 1;}
4126
4127 /* Write img to stdout */
4128 <A HREF="#gdImagePng">gdImagePng</A>(im, stdout);
4129
4130 /* Destroy it */
4131 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
4132 </PRE>
4133 See also <a href="#gdImageStringFTEx">gdImageStringFTEx</a>.
4134 <DT><A NAME="gdImageStringFTEx">
4135 char *gdImageStringFTEx(gdImagePtr im, int *brect,
4136 int fg, char *fontname, double ptsize, double angle,
4137 int x, int y, char *string, gdFTStringExtraPtr strex)</A>
4138 <STRONG>(FUNCTION)</STRONG>
4139 <DD>
4140 <strong>New in 2.0.5,</strong> also found in common third-party versions
4141 of gd. gdImageStringFTEx extends the capabilities of
4142 <a href="#gdImageStringFT">gdImageStringFT</a> by providing a
4143 way to pass additional parameters.
4144 <p>
4145 If the <code>strex</code> parameter is not null, it must point to a
4146 <code>gdFTStringExtra</code> structure. As of gd 2.0.5, this structure
4147 is defined as follows:
4148 <pre>
4149 typedef struct {
4150 /* logical OR of gdFTEX_ values */
4151 int flags;
4152 /* fine tune line spacing for '\n' */
4153 double linespacing;
4154 /* Preferred character mapping */
4155 int charmap;
4156 /* Rendering resolution */
4157 int hdpi;
4158 int vdpi;
4159 char *xshow;
4160 char *fontpath;
4161 } gdFTStringExtra, *gdFTStringExtraPtr;
4162 </pre>
4163 To output multiline text with a specific line spacing,
4164 include <code>gdFTEX_LINESPACE</code> in the setting of
4165 <code>flags</code>:
4166 <pre>
4167 flags |= gdFTEX_LINESPACE;
4168 </pre>
4169 And also set <code>linespacing</code> to the desired spacing, expressed as a
4170 multiple of the font height. Thus a line spacing of 1.0 is the
4171 minimum to guarantee that lines of text do not collide.
4172 <p>
4173 If <code>gdFTEX_LINESPACE</code> is not present, or
4174 <code>strex</code> is null, or <a href="#gdImageStringFT">gdImageStringFT</a>
4175 is called, <code>linespacing</code> defaults to 1.05.
4176 <p>
4177 To specify a preference for Unicode, Shift_JIS Big5 character encoding,
4178 set or To output multiline text with a specific line spacing,
4179 include <code>gdFTEX_CHARMAP</code> in the setting of
4180 <code>flags</code>:
4181 <pre>
4182 flags |= gdFTEX_CHARMAP;
4183 </pre>
4184 And set <code>charmap</code> to the desired value, which can be
4185 any of gdFTEX_Unicode, gdFTEX_Shift_JIS, gdFTEX_Big5, or gdFTEX_Adobe_Custom.
4186 If you do not specify a preference, Unicode will be tried first. If the preferred
4187 character mapping is not found in the font, other character mappings
4188 are attempted.
4189 <p>
4190 GD operates on the assumption that the output image will be
4191 rendered to a computer screen. By default, gd passes a
4192 resolution of 96 dpi to the freetype text rendering engine.
4193 This influences the "hinting" decisions made by the renderer. To
4194 specify a different resolution, set hdpi and vdpi accordingly
4195 (in dots per inch) and add <code>gdFTEX_RESOLUTION</code> to <code>flags</code>:
4196 <pre>
4197 flags | gdFTEX_RESOLUTION;
4198 </pre>
4199 GD 2.0.29 and later will normally attempt to apply kerning tables, if
4200 fontconfig is available, to adjust the relative positions of consecutive
4201 characters more ideally for that pair of characters. This can be turn off by
4202 specifying the gdFTEX_DISABLE_KERNING flag:
4203 <pre>
4204 flags | gdFTEX_DISABLE_KERNING;
4205 </pre>
4206 GD 2.0.29 and later can return a vector of individual character
4207 position advances, occasionally useful in applications that must know
4208 exactly where each character begins. This is returned in the xshow
4209 element of the gdFTStringExtra structure if the gdFTEX_XSHOW
4210 flag is set:
4211 <pre>
4212 flags | gdFTEX_XSHOW;
4213 </pre>
4214 <b>The caller is responsible for calling gdFree() on the xshow
4215 element after the call</b> if gdFTEX_XSHOW is set.
4216 <p>
4217 GD 2.0.29 and later can also return the path to the actual font file
4218 used if the gdFTEX_RETURNFONTPATHNAME flag is set. This is useful because
4219 GD 2.0.29 and above are capable of
4220 selecting a font automatically based on a fontconfig font pattern
4221 when fontconfig is available. This information is returned in the
4222 fontpath element of the gdFTStringExtra structure.
4223 <pre>
4224 flags | gdFTEX_RETURNFONTPATHNAME;
4225 </pre>
4226 <b>The caller is responsible for calling gdFree() on the fontpath
4227 element after the call</b> if gdFTEX_RETURNFONTPATHNAME is set.
4228 <p>
4229 GD 2.0.29 and later can use fontconfig to resolve
4230 font names, including fontconfig patterns, if the gdFTEX_FONTCONFIG
4231 flag is set. As a convenience, this behavior can be made the default
4232 by calling <a href="#gdFTUseFontConfig">gdFTUseFontConfig</a> with
4233 a nonzero value. In that situation it is not necessary to set the
4234 gdFTEX_FONTCONFIG flag on every call; however explicit font path names
4235 can still be used if the gdFTEX_FONTPATHNAME flag is set:
4236 <pre>
4237 flags | gdFTEX_FONTPATHNAME;
4238 </pre>
4239 <p>
4240 Unless <a href="#gdFTUseFontConfig">gdFTUseFontConfig</a> has been
4241 called with a nonzero value, GD 2.0.29 and later will still expect
4242 the fontlist argument to the freetype text output functions to be
4243 a font file name or list thereof as in previous versions. If you do
4244 not wish to make fontconfig the default, it is
4245 still possible to force the use of fontconfig for a single call to
4246 the freetype text output functions by setting the gdFTEX_FONTCONFIG
4247 flag:
4248 <pre>
4249 flags | gdFTEX_FONTCONFIG;
4250 </pre>
4251 GD 2.0.29 and above can use fontconfig to resolve
4252 font names, including fontconfig patterns, if the gdFTEX_FONTCONFIG
4253 flag is set. As a convenience, this behavior can be made the default
4254 by calling <a href="#gdFTUseFontConfig">gdFTUseFontConfig</a> with
4255 a nonzero value. In that situation it is not necessary to set the
4256 gdFTEX_FONTCONFIG flag on every call; however explicit font path names
4257 can still be used if the gdFTEX_FONTPATHNAME flag is set:
4258 <pre>
4259 flags | gdFTEX_FONTPATHNAME;
4260 </pre>
4261 For more information, see <a href="#gdImageStringFT">gdImageStringFT</a>.
4262 <DT><A NAME="gdImageStringFTCircle">
4263 char *gdImageStringFTCircle(gdImagePtr im,
4264 int cx,
4265 int cy,
4266 double radius,
4267 double textRadius,
4268 double fillPortion,
4269 char *font,
4270 double points,
4271 char *top,
4272 char *bottom,
4273 int fgcolor)</A>
4274 <STRONG>(FUNCTION)</STRONG>
4275 <DD>
4276 Draws the text strings specified by <code>top</code> and <code>bottom</code>
4277 on <code>im</code>, curved along the edge of a circle of radius
4278 <code>radius</code>, with its center at <code>cx</code> and <code>cy</code>.
4279 <code>top</code> is written clockwise
4280 along the top; <code>bottom</code> is written counterclockwise
4281 along the bottom. <code>textRadius</code> determines the "height"
4282 of each character; if <code>textRadius</code> is 1/2 of
4283 <code>radius</code>,
4284 characters extend halfway from the edge to the center.
4285 <code>fillPortion</code> varies from 0 to 1.0, with useful values
4286 from about 0.4 to 0.9, and determines how much of the
4287 180 degrees of arc assigned to each section of text
4288 is actually occupied by text; 0.9 looks better than
4289 1.0 which is rather crowded. <code>font</code> is a freetype
4290 font; see gdImageStringFT. <code>points</code> is passed to the
4291 freetype engine and has an effect on hinting; although
4292 the size of the text is determined by <code>radius</code>,
4293 <code>textRadius</code>, and <code>fillPortion</code>, you should
4294 pass a point size that
4295 "hints" appropriately -- if you know the text will be
4296 large, pass a large point size such as 24.0 to get the
4297 best results. <code>fgcolor</code> can be any color, and may have
4298 an alpha component, do blending, etc.
4299 <p>
4300 Returns 0 on success, or an error string otherwise.
4301 <pre>
4302 #include &lt;stdio.h&gt;
4303 #include &lt;gd.h&gt;
4304
4305 int main (int argc, char *argv[])
4306 {
4307 FILE *in;
4308 FILE *out;
4309 gdImagePtr im;
4310 int radius;
4311 /* Create an image of text on a circle, with an
4312 alpha channel so that we can copy it onto a
4313 background */
4314 in = fopen("mypicture.jpg", "rb");
4315 if (!in) {
4316 im = gdImageCreateTrueColor(300, 300);
4317 } else {
4318 im = gdImageCreateFromJpeg(in);
4319 fclose(in);
4320 }
4321 if (gdImageSX(im) &lt; gdImageSY(im)) {
4322 radius = gdImageSX(im) / 2;
4323 } else {
4324 radius = gdImageSY(im) / 2;
4325 }
4326 gdStringFTCircle(
4327 im,
4328 gdImageSX(im) / 2,
4329 gdImageSY(im) / 2,
4330 radius,
4331 radius / 2,
4332 0.8,
4333 "arial",
4334 24,
4335 "top text",
4336 "bottom text",
4337 gdTrueColorAlpha(240, 240, 255, 32));
4338 out = fopen("gdfx.png", "wb");
4339 if (!out) {
4340 fprintf(stderr, "Can't create gdfx.png\n");
4341 return 1;
4342 }
4343 gdImagePng(im, out);
4344 fclose(out);
4345 gdImageDestroy(im);
4346 return 0;
4347 }
4348 </pre>
4349
4350 <p>
4351 For more information, see <a href="#gdImageStringFTEx">gdImageStringFTEx</a>
4352 and <a href="#gdImageSquareToCircle">gdImageSquareToCircle</a>.
4353 <DT><A NAME="gdImageStringTTF">
4354 char *gdImageStringTTF(gdImagePtr im, int *brect,
4355 int fg, char *fontname, double ptsize, double angle,
4356 int x, int y, char *string)</A>
4357 <STRONG>(FUNCTION)</STRONG>
4358 <DD>
4359 <strong>DEPRECATED.</strong> This function simply invokes
4360 <a href="#gdImageStringFT">gdImageStringFT</a> for backwards
4361 compatibility with old code that was written with FreeType 1.x.
4362 <DT><A NAME="gdFontCacheSetup">
4363 int gdFontCacheSetup(void)</A>
4364 <STRONG>(FUNCTION)</STRONG>
4365 <DD>
4366 This function initializes the font cache for freetype text output
4367 functions such as <a href="#gdImageStringFTEx">gdImageStringFTEx</a>.
4368 If this function is not called by the programmer, it is invoked
4369 automatically on the first truetype text output call, which is
4370 perfectly safe <b>unless</b> the application is multithreaded.
4371 Multithreaded applications should directly invoke this function before
4372 allowing any thread to use freetype text output. Returns 0 on success,
4373 nonzero if the freetype library fails to initialize.
4374 <DT><A NAME="gdFontCacheShutdown">
4375 void gdFontCacheShutdown(void)</A>
4376 <STRONG>(FUNCTION)</STRONG>
4377 <DD>
4378 This function releases the memory used by the freetype font cache
4379 and the text output mutex. Applications that use gd for their
4380 entire lifetime, then exit, need not call this function.
4381 </DL>
4382 <H3><A NAME="colors">Color-handling functions</A></H3>
4383 <DL>
4384 <DT><A NAME="gdImageColorAllocate">
4385 int gdImageColorAllocate(gdImagePtr im, int r, int g, int b)</A>
4386 <STRONG>(FUNCTION)</STRONG>
4387 <DD>
4388 gdImageColorAllocate finds the first available color index in
4389 the image specified, sets its RGB values to those requested
4390 (255 is the maximum for each),
4391 and returns the index of the new color table entry, or an RGBA
4392 value in the case of a truecolor image; in either case you can
4393 then use the returned value as a parameter to drawing functions. When
4394 creating a new palette-based image, the first time you invoke this function,
4395 you are setting the background color for that image.
4396 <P>
4397 In the event that all <A HREF="#gdMaxColors">gdMaxColors</A> colors
4398 (256) have already been allocated, gdImageColorAllocate will
4399 return -1 to indicate failure. (This is not uncommon when
4400 working with existing PNG files that already use 256 colors.)
4401 Note that gdImageColorAllocate
4402 does not check for existing colors that match your request;
4403 see <A HREF="#gdImageColorExact">gdImageColorExact</A>,
4404 <A HREF="#gdImageColorClosest">gdImageColorClosest</A> and
4405 <A HREF="#gdImageColorClosestHWB">gdImageColorClosestHWB</A>
4406 for ways to locate existing colors that approximate the
4407 color desired in situations where a new color is not available.
4408 Also see <A HREF="#gdImageColorResolve">gdImageColorResolve</A>,
4409 new in gd-1.6.2.
4410 <PRE>
4411 ... inside a function ...
4412 <A HREF="#gdImagePtr">gdImagePtr</A> im;
4413 int black;
4414 int red;
4415 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 100);
4416 /* Background color (first allocated) */
4417 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
4418 /* Allocate the color red. */
4419 red = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 0, 0);
4420 /* Draw a dashed line from the upper left corner
4421 to the lower right corner. */
4422 gdImageDashedLine(im, 0, 0, 99, 99, red);
4423 /* ... Do something with the image, such as saving
4424 it to a file... */
4425 /* Destroy it */
4426 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
4427 </PRE>
4428 <DT><A NAME="gdImageColorAllocateAlpha">
4429 int gdImageColorAllocateAlpha(gdImagePtr im, int r, int g, int b, int a)</A>
4430 <STRONG>(FUNCTION)</STRONG>
4431 <DD>
4432 gdImageColorAllocateAlpha finds the first available color index in
4433 the image specified, sets its RGBA values to those requested
4434 (255 is the maximum for red, green and blue, and 127 represents
4435 full transparency for alpha),
4436 and returns the index of the new color table entry, or an RGBA
4437 value in the case of a truecolor image; in either case you can
4438 then use the returned value as a parameter to drawing functions. When
4439 creating a new palette-based image, the first time you invoke this function,
4440 you are setting the background color for that image.
4441 <P>
4442 In the event that all <A HREF="#gdMaxColors">gdMaxColors</A> colors
4443 (256) have already been allocated, gdImageColorAllocate will
4444 return -1 to indicate failure. (This is not uncommon when
4445 working with existing palette-based PNG files that already use 256 colors.)
4446 Note that gdImageColorAllocateAlpha
4447 does not check for existing colors that match your request;
4448 see <A HREF="#gdImageColorExactAlpha">gdImageColorExactAlpha</A> and
4449 <A HREF="#gdImageColorClosestAlpha">gdImageColorClosestAlpha</A>
4450 for ways to locate existing colors that approximate the
4451 color desired in situations where a new color is not available.
4452 Also see <A HREF="#gdImageColorResolveAlpha">gdImageColorResolveAlpha</A>.
4453 <PRE>
4454 ... inside a function ...
4455 <A HREF="#gdImagePtr">gdImagePtr</A> im;
4456 int black;
4457 int red;
4458 im = <A HREF="#gdImageCreate">gdImageCreate</A>(100, 100);
4459 /* Background color (first allocated) */
4460 black = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 0, 0, 0);
4461 /* Allocate the color red, 50% transparent. */
4462 red = <A HREF="#gdImageColorAllocateAlpha">gdImageColorAllocateAlpha</A>(im, 255, 0, 0, 64);
4463 /* Draw a dashed line from the upper left corner to the lower right corner. */
4464 gdImageDashedLine(im, 0, 0, 99, 99, red);
4465 /* ... Do something with the image, such as
4466 saving it to a file... */
4467 /* Destroy it */
4468 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
4469 </PRE>
4470 <DT><A NAME="gdImageColorClosest">
4471 int gdImageColorClosest(gdImagePtr im, int r, int g, int b)</A>
4472 <STRONG>(FUNCTION)</STRONG>
4473 <DD>
4474 gdImageColorClosest searches the colors which have been
4475 defined thus far in the image specified and returns the
4476 index of the color with RGB values closest to those of the
4477 request. (Closeness is determined by Euclidian distance,
4478 which is used to determine the distance in three-dimensional color
4479 space between colors.)
4480 <P>
4481 If no colors have yet been allocated in the image,
4482 gdImageColorClosest returns -1.
4483 <p>
4484 When applied to a truecolor image, this function always
4485 succeeds in returning the desired color.
4486 <P>
4487 This function is most useful as a backup method for choosing
4488 a drawing color when an image already contains
4489 <A HREF="#gdMaxColors">gdMaxColors</A> (256) colors and
4490 no more can be allocated. (This is not uncommon when
4491 working with existing PNG files that already use many colors.)
4492 See <A HREF="#gdImageColorExact">gdImageColorExact</A>
4493 for a method of locating exact matches only.
4494 <PRE>
4495 ... inside a function ...
4496 <A HREF="#gdImagePtr">gdImagePtr</A> im;
4497 FILE *in;
4498 int red;
4499 /* Let's suppose that photo.png is a scanned photograph with
4500 many colors. */
4501 in = fopen("photo.png", "rb");
4502 im = <A HREF="#gdImageCreateFromPng">gdImageCreateFromPng</A>(in);
4503 fclose(in);
4504 /* Try to allocate red directly */
4505 red = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 0, 0);
4506 /* If we fail to allocate red... */
4507 if (red == (-1)) {
4508 /* Find the <em>closest</em> color instead. */
4509 red = gdImageColorClosest(im, 255, 0, 0);
4510 }
4511 /* Draw a dashed line from the upper left corner to the lower right corner */
4512 gdImageDashedLine(im, 0, 0, 99, 99, red);
4513 /* ... Do something with the image, such as
4514 saving it to a file... */
4515 /* Destroy it */
4516 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
4517 </PRE>
4518 <DT><A NAME="gdImageColorClosestAlpha">
4519 int gdImageColorClosestAlpha(gdImagePtr im, int r, int g, int b, int a)</A>
4520 <STRONG>(FUNCTION)</STRONG>
4521 <DD>
4522 gdImageColorClosest searches the colors which have been
4523 defined thus far in the image specified and returns the
4524 index of the color with RGBA values closest to those of the
4525 request. (Closeness is determined by Euclidian distance,
4526 which is used to determine the distance in four-dimensional color/alpha
4527 space between colors.)
4528 <P>
4529 If no colors have yet been allocated in the image,
4530 gdImageColorClosestAlpha returns -1.
4531 <p>
4532 When applied to a truecolor image, this function always
4533 succeeds in returning the desired color.
4534 <P>
4535 This function is most useful as a backup method for choosing
4536 a drawing color when a palette-based image already contains
4537 <A HREF="#gdMaxColors">gdMaxColors</A> (256) colors and
4538 no more can be allocated. (This is not uncommon when
4539 working with existing palette-based PNG files that already use many colors.)
4540 See <A HREF="#gdImageColorExactAlpha">gdImageColorExactAlpha</A>
4541 for a method of locating exact matches only.
4542 <PRE>
4543 ... inside a function ...
4544 <A HREF="#gdImagePtr">gdImagePtr</A> im;
4545 FILE *in;
4546 int red;
4547 /* Let's suppose that photo.png is a scanned photograph with
4548 many colors. */
4549 in = fopen("photo.png", "rb");
4550 im = <A HREF="#gdImageCreateFromPng">gdImageCreateFromPng</A>(in);
4551 fclose(in);
4552 /* Try to allocate red, 50% transparent, directly */
4553 red = <A HREF="#gdImageColorAllocateAlpha">gdImageColorAllocateAlpha</A>(im, 255, 0, 0, 64);
4554 /* If we fail to allocate red... */
4555 if (red == (-1)) {
4556 /* Find the <em>closest</em> color instead. */
4557 red = gdImageColorClosestAlpha(im, 255, 0, 0, 64);
4558 }
4559 /* Draw a dashed line from the upper left corner to the lower right corner */
4560 gdImageDashedLine(im, 0, 0, 99, 99, red);
4561 /* ... Do something with the image, such as
4562 saving it to a file... */
4563 /* Destroy it */
4564 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
4565 </PRE>
4566 <DT><A NAME="gdImageColorClosestHWB">
4567 int gdImageColorClosestHWB(gdImagePtr im, int r, int g, int b)</A>
4568 <STRONG>(FUNCTION)</STRONG>
4569 <DD>
4570 gdImageColorClosestHWB searches the colors which have been
4571 defined thus far in the image specified and returns the
4572 index of the color with hue, whiteness and blackness closest to the
4573 requested color. This scheme is typically superior to the
4574 Euclidian distance scheme used by
4575 <a href="#gdImageColorClosest">gdImageColorClosest</a>.
4576 <P>
4577 If no colors have yet been allocated in the image,
4578 gdImageColorClosestHWB returns -1.
4579 <p>
4580 When applied to a truecolor image, this function always
4581 succeeds in returning the desired color.
4582 <P>
4583 This function is most useful as a backup method for choosing
4584 a drawing color when an image already contains
4585 <A HREF="#gdMaxColors">gdMaxColors</A> (256) colors and
4586 no more can be allocated. (This is not uncommon when
4587 working with existing PNG files that already use many colors.)
4588 See <A HREF="#gdImageColorExact">gdImageColorExact</A>
4589 for a method of locating exact matches only.
4590 <PRE>
4591 ... inside a function ...
4592 <A HREF="#gdImagePtr">gdImagePtr</A> im;
4593 FILE *in;
4594 int red;
4595 /* Let's suppose that photo.png is a scanned photograph with
4596 many colors. */
4597 in = fopen("photo.png", "rb");
4598 im = <A HREF="#gdImageCreateFromPng">gdImageCreateFromPng</A>(in);
4599 fclose(in);
4600 /* Try to allocate red directly */
4601 red = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 0, 0);
4602 /* If we fail to allocate red... */
4603 if (red == (-1)) {
4604 /* Find the <em>closest</em> color instead. */
4605 red = gdImageColorClosestHWB(im, 255, 0, 0);
4606 }
4607 /* Draw a dashed line from the upper left corner to the lower right corner */
4608 gdImageDashedLine(im, 0, 0, 99, 99, red);
4609 /* ... Do something with the image, such as
4610 saving it to a file... */
4611 /* Destroy it */
4612 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
4613 </PRE>
4614 <DT><A NAME="gdImageColorExact">
4615 int gdImageColorExact(gdImagePtr im, int r, int g, int b)</A>
4616 <STRONG>(FUNCTION)</STRONG>
4617 <DD>
4618 gdImageColorExact searches the colors which have been
4619 defined thus far in the image specified and returns the
4620 index of the first color with RGB values which exactly
4621 match those of the request. If no allocated color matches the
4622 request precisely, gdImageColorExact returns -1.
4623 See <A HREF="#gdImageColorClosest">gdImageColorClosest</A>
4624 for a way to find the color closest to the color requested.
4625 <p>
4626 When applied to a truecolor image, this function always
4627 succeeds in returning the desired color.
4628 <PRE>
4629 ... inside a function ...
4630 <A HREF="#gdImagePtr">gdImagePtr</A> im;
4631 int red;
4632 in = fopen("photo.png", "rb");
4633 im = <A HREF="#gdImageCreateFromPng">gdImageCreateFromPng</A>(in);
4634 fclose(in);
4635 /* The image may already contain red; if it does, we'll save a slot
4636 in the color table by using that color. */
4637 /* Try to allocate red directly */
4638 red = gdImageColorExact(im, 255, 0, 0);
4639 /* If red isn't already present... */
4640 if (red == (-1)) {
4641 /* Second best: try to allocate it directly. */
4642 red = <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>(im, 255, 0, 0);
4643 /* Out of colors, so find the <em>closest</em> color instead. */
4644 red = gdImageColorClosest(im, 255, 0, 0);
4645 }
4646 /* Draw a dashed line from the upper left corner to the lower right corner */
4647 gdImageDashedLine(im, 0, 0, 99, 99, red);
4648 /* ... Do something with the image, such as
4649 saving it to a file... */
4650 /* Destroy it */
4651 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
4652 </PRE>
4653 <DT><A NAME="gdImageColorResolve">
4654 int gdImageColorResolve(gdImagePtr im, int r, int g, int b)</A>
4655 <STRONG>(FUNCTION)</STRONG>
4656 <DD>
4657 gdImageColorResolve searches the colors which have been
4658 defined thus far in the image specified and returns the
4659 index of the first color with RGB values which exactly
4660 match those of the request. If no allocated color matches the
4661 request precisely, then gdImageColorResolve tries to allocate the
4662 exact color. If there is no space left in the color table then
4663 gdImageColorResolve returns the closest color (as in gdImageColorClosest).
4664 This function always returns an index of a color.
4665 <p>
4666 When applied to a truecolor image, this function always
4667 succeeds in returning the desired color.
4668 <PRE>
4669 ... inside a function ...
4670 <A HREF="#gdImagePtr">gdImagePtr</A> im;
4671 int red;
4672 in = fopen("photo.png", "rb");
4673 im = <A HREF="#gdImageCreateFromPng">gdImageCreateFromPng</A>(in);
4674 fclose(in);
4675 /* The image may already contain red; if it does, we'll save a slot
4676 in the color table by using that color. */
4677 /* Get index of red, or color closest to red */
4678 red = gdImageColorResolve(im, 255, 0, 0);
4679 /* Draw a dashed line from the upper left corner to the lower right corner */
4680 gdImageDashedLine(im, 0, 0, 99, 99, red);
4681 /* ... Do something with the image, such as
4682 saving it to a file... */
4683 /* Destroy it */
4684 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
4685 </PRE>
4686 <DT><A NAME="gdImageColorResolveAlpha">
4687 int gdImageColorResolveAlpha(gdImagePtr im, int r, int g, int b, int a)</A>
4688 <STRONG>(FUNCTION)</STRONG>
4689 <DD>
4690 gdImageColorResolveAlpha searches the colors which have been
4691 defined thus far in the image specified and returns the
4692 index of the first color with RGBA values which exactly
4693 match those of the request. If no allocated color matches the
4694 request precisely, then gdImageColorResolveAlpha tries to allocate the
4695 exact color. If there is no space left in the color table then
4696 gdImageColorResolveAlpha returns the closest color (as in gdImageColorClosestAlpha).
4697 This function always returns an index of a color.
4698 <p>
4699 When applied to a truecolor image, this function always
4700 succeeds in returning the desired color.
4701 <PRE>
4702 ... inside a function ...
4703 <A HREF="#gdImagePtr">gdImagePtr</A> im;
4704 int red;
4705 in = fopen("photo.png", "rb");
4706 im = <A HREF="#gdImageCreateFromPng">gdImageCreateFromPng</A>(in);
4707 fclose(in);
4708 /* The image may already contain red; if it does,
4709 we'll save a slot in the color table by using that color. */
4710 /* Get index of red, 50% transparent, or the next best thing */
4711 red = gdImageColorResolveAlpha(im, 255, 0, 0, 64);
4712 /* Draw a dashed line from the upper left corner to the lower right corner */
4713 gdImageDashedLine(im, 0, 0, 99, 99, red);
4714 /* ... Do something with the image, such as saving
4715 it to a file... */
4716 /* Destroy it */
4717 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
4718 </PRE>
4719 <DT><A NAME="gdImageColorsTotal">
4720 int gdImageColorsTotal(gdImagePtr im)</A>
4721 <STRONG>(MACRO)</STRONG>
4722 <DD>
4723 gdImageColorsTotal is a macro which returns the number of
4724 colors currently allocated in a palette image. For truecolor
4725 images, the result of this call is undefined and should not
4726 be used.
4727 <DT><A NAME="gdImageRed">
4728 int gdImageRed(gdImagePtr im, int c)</A>
4729 <STRONG>(MACRO)</STRONG>
4730 <DD>
4731 gdImageRed is a macro which returns the red portion
4732 of the specified color in the image. This macro works
4733 for both palette and truecolor images.
4734 <DT><A NAME="gdImageGreen">
4735 int gdImageGreen(gdImagePtr im, int c)</A>
4736 <STRONG>(MACRO)</STRONG>
4737 <DD>
4738 gdImageGreen is a macro which returns the green portion
4739 of the specified color in the image. This macro works
4740 for both palette and truecolor images.
4741 <DT><A NAME="gdImageBlue">
4742 int gdImageBlue(gdImagePtr im, int c)</A>
4743 <STRONG>(MACRO)</STRONG>
4744 <DD>
4745 gdImageBlue is a macro which returns the blue portion
4746 of the specified color in the image. This macro works
4747 for both palette and truecolor images.
4748 <DT><A NAME="gdImageGetInterlaced">
4749 int gdImageGetInterlaced(gdImagePtr im)</A>
4750 <STRONG>(MACRO)</STRONG>
4751 <DD>
4752 gdImageGetInterlaced is a macro which returns true (1)
4753 if the image is interlaced, false (0) if not.
4754 Use this macro to obtain this information; do not
4755 access the structure directly.
4756 See <A HREF="#gdImageInterlace">gdImageInterlace</A> for
4757 a means of interlacing images.
4758 <DT><A NAME="gdImageGetTransparent">
4759 int gdImageGetTransparent(gdImagePtr im)</A>
4760 <STRONG>(MACRO)</STRONG>
4761 <DD>
4762 gdImageGetTransparent is a macro which returns the
4763 current transparent color index in the image.
4764 If there is no transparent color, gdImageGetTransparent
4765 returns -1. Use this macro to obtain this information; do not
4766 access the structure directly.
4767 <DT><A NAME="gdImageColorDeallocate">
4768 void gdImageColorDeallocate(gdImagePtr im, int color)</A>
4769 <STRONG>(FUNCTION)</STRONG>
4770 <DD>
4771 gdImageColorDeallocate marks the specified color as being
4772 available for reuse. It does not attempt to determine whether
4773 the color index is still in use in the image. After a call
4774 to this function, the next call to
4775 <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>
4776 for the same image will set new RGB values for that
4777 color index, changing the color of any pixels which
4778 have that index as a result. If multiple calls to
4779 gdImageColorDeallocate are made consecutively, the lowest-numbered
4780 index among them will be reused by the next
4781 <A HREF="#gdImageColorAllocate"> gdImageColorAllocate</A> call.
4782 <PRE>
4783 ... inside a function ...
4784 <A HREF="#gdImagePtr">gdImagePtr</A> im;
4785 int red, blue;
4786 in = fopen("photo.png", "rb");
4787 im = <A HREF="#gdImageCreateFromPng">gdImageCreateFromPng</A>(in);
4788 fclose(in);
4789 /* Look for red in the color table. */
4790 red = gdImageColorExact(im, 255, 0, 0);
4791 /* If red is present... */
4792 if (red != (-1)) {
4793 /* Deallocate it. */
4794 gdImageColorDeallocate(im, red);
4795 /* Allocate blue, reusing slot in table.
4796 Existing red pixels will change color. */
4797 blue = gdImageColorAllocate(im, 0, 0, 255);
4798 }
4799 /* ... Do something with the image, such as
4800 saving it to a file... */
4801 /* Destroy it */
4802 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
4803 </PRE>
4804 <DT><A NAME="gdImageColorTransparent">
4805 void gdImageColorTransparent(gdImagePtr im, int color)</A>
4806 <STRONG>(FUNCTION)</STRONG>
4807 <DD>
4808 gdImageColorTransparent sets the transparent color index
4809 for the specified image to the specified index. To indicate
4810 that there should be <em>no</em> transparent color, invoke
4811 gdImageColorTransparent with a color index of -1. Note that
4812 JPEG images do not support transparency, so this setting has no effect
4813 when writing JPEG images.
4814 <P>
4815 The color index used should be an index
4816 allocated by <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A>,
4817 whether explicitly invoked by your code or implicitly
4818 invoked by loading an image.
4819 In order to ensure that your image has a reasonable appearance
4820 when viewed by users who do not have transparent background
4821 capabilities (or when you are writing a JPEG-format file, which does
4822 not support transparency), be sure to give reasonable RGB values to the
4823 color you allocate for use as a transparent color,
4824 <em>even though it will be transparent on systems
4825 that support PNG transparency</em>.
4826 <PRE>
4827 ... inside a function ...
4828 <A HREF="#gdImagePtr">gdImagePtr</A> im;
4829 int black;
4830 FILE *in, *out;
4831 in = fopen("photo.png", "rb");
4832 im = <A HREF="#gdImageCreateFromPng">gdImageCreateFromPng</A>(in);
4833 fclose(in);
4834 /* Look for black in the color table and make it transparent. */
4835 black = <A HREF="#gdImageColorExact">gdImageColorExact</A>(im, 0, 0, 0);
4836 /* If black is present... */
4837 if (black != (-1)) {
4838 /* Make it transparent */
4839 gdImageColorTransparent(im, black);
4840 }
4841 /* Save the newly-transparent image back to the file */
4842 out = fopen("photo.png", "wb");
4843 <A HREF="#gdImagePng">gdImagePng</A>(im, out);
4844 fclose(out);
4845 /* Destroy it */
4846 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
4847 </PRE>
4848 <DT><A NAME="gdImageTrueColor">
4849 void gdImageTrueColor(int red, int green, int blue)</A>
4850 <STRONG>(MACRO)</STRONG>
4851 <DD>
4852 gdImageTrueColor returns an RGBA color value for use when
4853 drawing on a truecolor image. Red, green, and blue are all
4854 in the range between 0 (off) and 255 (maximum). This macro should
4855 not be used with palette-based images. If you need to write
4856 code which is compatible with both palette-based and
4857 truecolor images, use <a href="#gdImageColorResolve">gdImageColorResolve</a>.
4858 <DT><A NAME="gdTrueColorAlpha">
4859 void gdTrueColorAlpha(int red, int green, int blue, int alpha)</A>
4860 <STRONG>(MACRO)</STRONG>
4861 <DD>
4862 gdTrueColorAlpha returns an RGBA color value for use when
4863 drawing on a truecolor image with alpha channel transparency. Red,
4864 green, and blue are all
4865 in the range between 0 (off) and 255 (maximum). Alpha is in the
4866 range between 0 (opaque) and 127 (fully transparent). This macro should
4867 not be used with palette-based images. If you need to write
4868 code which is compatible with both palette-based and
4869 truecolor images, use <a href="#gdImageColorResolveAlpha">gdImageColorResolveAlpha</a>.</DL>
4870 <H3><A NAME="copying">Copying and resizing functions</A></H3>
4871 <DL>
4872
4873 <DT><A NAME="gdImageCopy">void gdImageCopy(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int w, int h)
4874 <STRONG> (FUNCTION)</STRONG>
4875 <DD>
4876 gdImageCopy is used to copy a rectangular portion of one image to
4877 another image. (For a way of stretching or shrinking the image
4878 in the process, see <A HREF="#gdImageCopyResized">
4879 gdImageCopyResized</A>.)
4880 <P>
4881 The <code>dst</code> argument is the destination image to which the
4882 region will be copied. The <code>src</code> argument is the source
4883 image from which the region is copied. The <code>dstX</code>
4884 and <code>dstY</code> arguments specify the point in the destination
4885 image to which the region will be copied. The <code>srcX</code>
4886 and <code>srcY</code> arguments specify the upper left corner
4887 of the region in the source image. The <code>w</code>
4888 and <code>h</code> arguments specify the width and height
4889 of the region.
4890 <P>
4891 When you copy a region from one location in an image to another
4892 location in the same image, gdImageCopy will perform as expected
4893 unless the regions overlap, in which case the result is
4894 unpredictable.
4895 <P>
4896 <strong>Important note on copying between images:</strong> since
4897 different images do
4898 not necessarily have the same color tables, pixels are not simply set to the
4899 same color index values to copy them. gdImageCopy will attempt
4900 to find an identical RGB value in the destination image for
4901 each pixel in the copied portion of the source image by
4902 invoking <A HREF="#gdImageColorExact">gdImageColorExact</A>. If
4903 such a value is not found, gdImageCopy will attempt to
4904 allocate colors as needed using <A HREF="#gdImageColorAllocate">
4905 gdImageColorAllocate</A>. If both of these methods fail,
4906 gdImageCopy will invoke <A HREF="#gdImageColorClosest">
4907 gdImageColorClosest</A> to find the color in the destination
4908 image which most closely approximates the color of the
4909 pixel being copied.
4910 <PRE>
4911 ... Inside a function ...
4912 <A HREF="#gdImagePtr">gdImagePtr</A> im_in;
4913 <A HREF="#gdImagePtr">gdImagePtr</A> im_out;
4914 int x, y;
4915 FILE *in;
4916 FILE *out;
4917 /* Load a small png to tile the larger one with */
4918 in = fopen("small.png", "rb");
4919 im_in = <A HREF="#gdImageCreateFromPng">gdImageCreateFromPng</A>(in);
4920 fclose(in);
4921 /* Make the output image four times as large on both axes */
4922 im_out = <A HREF="#gdImageCreate">gdImageCreate</A>(im_in->sx * 4, im_in->sy * 4);
4923 /* Now tile the larger image using the smaller one */
4924 for (y = 0; (y < 4); y++) {
4925 for (x = 0; (x < 4); x++) {
4926 gdImageCopy(im_out, im_in,
4927 x * im_in->sx, y * im_in->sy,
4928 0, 0,
4929 im_in->sx, im_in->sy);
4930 }
4931 }
4932 out = fopen("tiled.png", "wb");
4933 <A HREF="#gdImagePng">gdImagePng</A>(im_out, out);
4934 fclose(out);
4935 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im_in);
4936 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im_out);
4937 </PRE>
4938 <DT><A NAME="gdImageCopyResized">void gdImageCopyResized(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int destW, int destH, int srcW, int srcH)
4939 <STRONG> (FUNCTION)</STRONG>
4940 <DD>
4941 gdImageCopyResized is used to copy a rectangular portion of one image to
4942 another image. The X and Y dimensions of the original region and the
4943 destination region can vary, resulting in stretching or shrinking of
4944 the region as appropriate. (For a simpler version of this function
4945 which does not deal with resizing, see <A HREF="#gdImageCopy">
4946 gdImageCopy</A>.)
4947 <P>
4948 The <code>dst</code> argument is the destination image to which the
4949 region will be copied. The <code>src</code> argument is the source
4950 image from which the region is copied. The <code>dstX</code>
4951 and <code>dstY</code> arguments specify the point in the destination
4952 image to which the region will be copied. The <code>srcX</code>
4953 and <code>srcY</code> arguments specify the upper left corner
4954 of the region in the source image. The <code>dstW</code>
4955 and <code>dstH</code> arguments specify the width and height
4956 of the destination region. The <code>srcW</code>
4957 and <code>srcH</code> arguments specify the width and height
4958 of the source region and can differ from the destination size,
4959 allowing a region to be scaled during the copying process.
4960 <P>
4961 When you copy a region from one location in an image to another
4962 location in the same image, gdImageCopy will perform as expected
4963 unless the regions overlap, in which case the result is
4964 unpredictable. If this presents a problem, create a scratch image
4965 in which to keep intermediate results.
4966 <P>
4967 <strong>Important note on copying between images:</strong> since images
4968 do not necessarily have the same color tables, pixels are not simply set
4969 to the same color index values to copy them. gdImageCopy will attempt
4970 to find an identical RGB value in the destination image for
4971 each pixel in the copied portion of the source image by
4972 invoking <A HREF="#gdImageColorExact">gdImageColorExact</A>. If
4973 such a value is not found, gdImageCopy will attempt to
4974 allocate colors as needed using <A HREF="#gdImageColorAllocate">
4975 gdImageColorAllocate</A>. If both of these methods fail,
4976 gdImageCopy will invoke <A HREF="#gdImageColorClosest">
4977 gdImageColorClosest</A> to find the color in the destination
4978 image which most closely approximates the color of the
4979 pixel being copied.
4980 <PRE>
4981 ... Inside a function ...
4982 <A HREF="#gdImagePtr">gdImagePtr</A> im_in;
4983 <A HREF="#gdImagePtr">gdImagePtr</A> im_out;
4984 int x, y;
4985 FILE *in;
4986 FILE *out;
4987 /* Load a small png to expand in the larger one */
4988 in = fopen("small.png", "rb");
4989 im_in = <A HREF="#gdImageCreateFromPng">gdImageCreateFromPng</A>(in);
4990 fclose(in);
4991 /* Make the output image four times as large on both axes */
4992 im_out = <A HREF="#gdImageCreate">gdImageCreate</A>(im_in->sx * 4, im_in->sy * 4);
4993 /* Now copy the smaller image, but four times larger */
4994 gdImageCopyResized(im_out, im_in, 0, 0, 0, 0,
4995 im_out->sx, im_out->sy,
4996 im_in->sx, im_in->sy);
4997 out = fopen("large.png", "wb");
4998 <A HREF="#gdImagePng">gdImagePng</A>(im_out, out);
4999 fclose(out);
5000 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im_in);
5001 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im_out);
5002 </PRE>
5003 <DT><A NAME="gdImageCopyResampled">void gdImageCopyResampled(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int destW, int destH, int srcW, int srcH)
5004 <STRONG> (FUNCTION)</STRONG>
5005 <DD>
5006 gdImageCopyResampled is used to copy a rectangular portion of one image to
5007 another image, smoothly interpolating pixel values so that, in particular,
5008 reducing the size of an image still retains a great deal of clarity. The
5009 X and Y dimensions of the original region and the
5010 destination region can vary, resulting in stretching or shrinking of
5011 the region as appropriate. (For a simpler version of this function
5012 which does not deal with resizing, see <A HREF="#gdImageCopy">
5013 gdImageCopy</A>. For a version which does not interpolate pixel values,
5014 see <A HREF="#gdImageCopyResized">gdImageCopyResized</A>.
5015 <p>
5016 Pixel values are only interpolated if the destination image is a
5017 truecolor image. Otherwise,
5018 <a href="#gdImageCopyResized">gdImageCopyResized</a> is
5019 automatically invoked.
5020 <P>
5021 The <code>dst</code> argument is the destination image to which the
5022 region will be copied. The <code>src</code> argument is the source
5023 image from which the region is copied. The <code>dstX</code>
5024 and <code>dstY</code> arguments specify the point in the destination
5025 image to which the region will be copied. The <code>srcX</code>
5026 and <code>srcY</code> arguments specify the upper left corner
5027 of the region in the source image. The <code>dstW</code>
5028 and <code>dstH</code> arguments specify the width and height
5029 of the destination region. The <code>srcW</code>
5030 and <code>srcH</code> arguments specify the width and height
5031 of the source region and can differ from the destination size,
5032 allowing a region to be scaled during the copying process.
5033 <P>
5034 When you copy a region from one location in an image to another
5035 location in the same image, gdImageCopy will perform as expected
5036 unless the regions overlap, in which case the result is
5037 unpredictable. If this presents a problem, create a scratch image
5038 in which to keep intermediate results.
5039 <P>
5040 <strong>Important note on copying between images:</strong> since images
5041 do not necessarily have the same color tables, pixels are not simply set
5042 to the same color index values to copy them. If the destination image
5043 is a palette image, gd will use the
5044 <a href="#gdImageColorResolve">gdImageColorResolve</a> function to
5045 determine the best color available.
5046 <PRE>
5047 ... Inside a function ...
5048 <A HREF="#gdImagePtr">gdImagePtr</A> im_in;
5049 <A HREF="#gdImagePtr">gdImagePtr</A> im_out;
5050 int x, y;
5051 FILE *in;
5052 FILE *out;
5053 /* Load a large png to shrink in the smaller one */
5054 in = fopen("large.png", "rb");
5055 im_in = <A HREF="#gdImageCreateFromPng">gdImageCreateFromPng</A>(in);
5056 fclose(in);
5057 /* Make the output image four times as small on both axes. Use
5058 a true color image so that we can interpolate colors. */
5059 im_out = <A HREF="#gdImageCreate">gdImageCreateTrueColor</A>(im_in->sx / 4, im_in->sy / 4);
5060 /* Now copy the large image, but four times smaller */
5061 gdImageCopyResampled(im_out, im_in, 0, 0, 0, 0,
5062 im_out->sx, im_out->sy,
5063 im_in->sx, im_in->sy);
5064 out = fopen("large.png", "wb");
5065 <A HREF="#gdImagePng">gdImagePng</A>(im_out, out);
5066 fclose(out);
5067 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im_in);
5068 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im_out);
5069 </PRE>
5070 <DT><A NAME="gdImageCopyRotated">void gdImageCopyRotated(gdImagePtr dst, gdImagePtr src, double dstX, double dstY, int srcX, int srcY, int srcW, int srcH, int angle)
5071 <STRONG> (FUNCTION)</STRONG>
5072 <DD>
5073 gdImageCopyRotated is used to copy a rectangular portion of one image to
5074 another image, or to another region of the same image. <strong>The srcX and
5075 srcY coordinates specify the upper left corner of the source area; however,
5076 the dstX and dstY coordinates specify the CENTER of the destination area.
5077 </strong> This important distinction is made because the rotated rectangle may
5078 may or may not be parallel to the X and Y axes. The destination coordinates
5079 may be floating point, as the center of the desired destination area may lie
5080 at the center of a pixel (0.5 pixels) rather than its upper left corner.
5081 The angle specified is an integer number of degrees, between 0 and 360,
5082 with 0 degrees causing no change, and counterclockwise rotation as
5083 the angle increases.
5084 <P>
5085 When you copy a region from one location in an image to another
5086 location in the same image, gdImageCopyRotated will perform as expected
5087 unless the regions overlap, in which case the result is
5088 unpredictable. If this presents a problem, create a scratch image
5089 in which to keep intermediate results.
5090 <P>
5091 <strong>Important note on copying between images:</strong> since
5092 palette-based images do not necessarily have the same color tables, pixels
5093 are not simply set to the same color index values to copy them.
5094 If the destination image is not a truecolor image,
5095 <a href="#gdImageColorResolveAlpha">gdImageColorResolveAlpha</a> is
5096 used to choose the destination pixel.
5097 <PRE>
5098 ... Inside a function ...
5099 <A HREF="#gdImagePtr">gdImagePtr</A> im_in;
5100 <A HREF="#gdImagePtr">gdImagePtr</A> im_out;
5101 int x, y;
5102 int a;
5103 FILE *in;
5104 FILE *out;
5105 /* Load a small png to rotate in the larger one */
5106 in = fopen("small.png", "rb");
5107 im_in = <A HREF="#gdImageCreateFromPng">gdImageCreateFromPng</A>(in);
5108 fclose(in);
5109 /* Make the output image four times as large on both axes */
5110 im_out = <A HREF="#gdImageCreate">gdImageCreate</A>(im_in->sx * 4, im_in->sy * 4);
5111 /* Now rotate the smaller image */
5112 for (a = 0; (a < 360); a += 45) {
5113 double x = cos(a * .0174532925) * gdImageSX(im_out) / 2;
5114 double y = -sin(a * .0174532925) * gdImageSY(im_out) / 2;
5115 gdImageCopyRotated(im_out, im_in,
5116 gdImageSX(im_out) / 2 + x,
5117 gdImageSY(im_out) / 2 + y,
5118 0, 0,
5119 gdImageSX(im_in),
5120 gdImageSY(im_in),
5121 a);
5122 }
5123 out = fopen("large.png", "wb");
5124 <A HREF="#gdImagePng">gdImagePng</A>(im_out, out);
5125 fclose(out);
5126 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im_in);
5127 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im_out);
5128 </PRE>
5129
5130 <DT><A NAME="gdImageCopyMerge">void gdImageCopyMerge(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int w, int h, int pct)
5131 <STRONG> (FUNCTION)</STRONG>
5132 <DD>
5133 gdImageCopyMerge is almost identical to <a href=#gdImageCopy>gdImageCopy</a>, except that
5134 it 'merges' the two images by an amount specified in the last parameter. If the last
5135 parameter is 100, then it will function identically to gdImageCopy - the source image replaces
5136 the pixels in the destination.
5137 <p>
5138 If, however, the <strong>pct</strong> parameter is less than 100, then the two images are merged.
5139 With pct = 0, no action is taken.
5140 <p>This feature is most useful to 'highlight' sections of an image by merging a solid color with
5141 pct = 50:
5142 <PRE>
5143 ... Inside a function ...
5144 gdImageCopyMerge(im_out, im_in, 100, 200, 0, 0, 30, 50, 50);
5145 </PRE>
5146
5147 <DT><A NAME="gdImageCopyMergeGray">void gdImageCopyMergeGray(gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int
5148 w, int h, int pct)
5149 <STRONG> (FUNCTION)</STRONG>
5150 <DD>
5151 gdImageCopyMergeGray is almost identical to <a href=#gdImageCopyMerge>gdImageCopyMerge</a>,
5152 except that when merging images it preserves the hue of the source by converting the destination
5153 pixels to grey scale before the copy operation.
5154 <PRE>
5155 ... Inside a function ...
5156 gdImageCopyMergeGray(im_out, im_in, 100, 200, 0, 0, 30, 50, 50);
5157 </PRE>
5158
5159 <DT><A NAME="gdImagePaletteCopy">void gdImagePaletteCopy(gdImagePtr dst, gdImagePtr src)
5160 <STRONG> (FUNCTION)</STRONG>
5161 <DD>
5162 Copies a palette from one image to another, attempting to match the colors in the target image
5163 to the colors
5164 in the source palette.
5165 <DT><A NAME="gdImageSquareToCircle">void gdImageSquareToCircle(gdImagePtr im, int radius)</a>
5166 <STRONG> (FUNCTION)</STRONG>
5167 <DD>
5168 <b>im MUST be square, but can have any size.</b> Returns a new image
5169 of width and height radius * 2, in which the X axis of
5170 the original has been remapped to theta (angle) and the Y axis
5171 of the original has been remapped to rho (distance from center).
5172 This is known as a "polar coordinate transform."
5173 See also <a href="#gdImageStringFTCircle">gdImageStringFTCircle</a>, which
5174 uses this function internally.
5175 <DT><A NAME="gdImageSharpen">void gdImageSharpen(gdImagePtr im, int pct)</a>
5176 <STRONG> (FUNCTION)</STRONG>
5177 <DD>
5178 Sharpens the specified image. pct is a sharpening percentage, and
5179 can be greater than 100. Silently does nothing to non-truecolor images.
5180 Silently does nothing for pct<0. Transparency/alpha channel are not
5181 altered.
5182 </DL>
5183 <H3><A NAME="misc">Miscellaneous Functions</A></H3>
5184 <DL>
5185
5186 <DT><A NAME="gdImageCompare">int gdImageCompare(gdImagePtr im1, gdImagePtr im2)
5187 <STRONG> (FUNCTION)</STRONG>
5188 <DD>
5189 gdImageCompare returns a bitmap indicating if the two images are different. The members of the
5190 bitmap are defined in gd.h, but the most important is GD_CMP_IMAGE, which indicated that the images
5191 will actually appear different when displayed. Other, less important, differences relate to pallette
5192 entries. Any difference in the transparent colour is assumed to make images display differently,
5193 even if the transparent colour is not used.
5194 <PRE>
5195 ... Inside a function ...
5196 cmpMask = gdImageCompare(im1, im2);
5197 </PRE>
5198
5199 <DT><A NAME="gdImageInterlace">gdImageInterlace(gdImagePtr im, int interlace)</A> <strong>(FUNCTION)</strong>
5200 <DD>
5201 gdImageInterlace is used to determine whether an image should be stored
5202 in a linear fashion, in which lines will appear on the display from
5203 first to last, or in an interlaced fashion, in which the image
5204 will "fade in" over several passes. By default, images are not
5205 interlaced. (When writing JPEG images, interlacing implies generating
5206 progressive JPEG files, which are represented as a series of scans of
5207 increasing quality. Noninterlaced gd images result in regular
5208 [sequential] JPEG data streams.)
5209 <P>
5210 A nonzero value for the interlace argument turns on interlace;
5211 a zero value turns it off. Note that interlace has no effect
5212 on other functions, and has no meaning unless you save the
5213 image in PNG or JPEG format; the gd and xbm formats do not support
5214 interlace.
5215 <P>
5216 When a PNG is loaded with
5217 <A HREF="#gdImageCreateFromPng">gdImageCreateFromPng</A> or a JPEG is
5218 loaded with
5219 <A HREF="#gdImageCreateFromJpeg">gdImageCreateFromJpeg</A>, interlace
5220 will be set according to the setting in the PNG or JPEG file.
5221 <P>
5222 Note that many PNG and JPEG viewers and web browsers do <em>not</em>
5223 support interlace or the incremental display of progressive
5224 JPEGs. However, the interlaced PNG or progressive JPEG should still
5225 display; it will simply appear all at once, just as other images do.
5226 <PRE>
5227 gdImagePtr im;
5228 FILE *out;
5229 /* ... Create or load the image... */
5230
5231 /* Now turn on interlace */
5232 gdImageInterlace(im, 1);
5233 /* And open an output file */
5234 out = fopen("test.png", "wb");
5235 /* And save the image -- could also use <A HREF="#gdImageJpeg">gdImageJpeg</A> */
5236 <A HREF="#gdImagePng">gdImagePng</A>(im, out);
5237 fclose(out);
5238 <A HREF="#gdImageDestroy">gdImageDestroy</A>(im);
5239 </PRE>
5240 <DT><A NAME="gdFree">gdFree(void *ptr)</A> <strong>(FUNCTION)</strong>
5241 <DD>
5242 gdFree provides a reliable way to free memory allocated by functions
5243 such as <a href="#gdImagePngPtr">gdImagePngPtr</a> which return
5244 blocks of memory. Use of this function guarantees that the
5245 version of <code>free()</code> that is ultimately called will
5246 be intended for use with the version of <code>malloc()</code> that
5247 originally allocated the block.
5248 </DL>
5249 <H3><A NAME="constants">Constants</A></H3>
5250 <DL>
5251 <DT><A NAME="gdAntiAliased">gdAntiAliased</A> <strong>(CONSTANT)</strong>
5252 <DD>
5253 Used in place of a color when invoking a line-drawing
5254 function such as <A HREF="#gdImageLine">gdImageLine</A>
5255 or <A HREF="#gdImageRectangle">gdImageRectangle</A>.
5256 When gdAntiAliased is used as the color, the foreground color
5257 set with <a href="#gdImageSetAntiAliased">gdImageSetAntiAliased</a>
5258 is used, with antialiasing mechanisms to minimize any
5259 "jagged" appearance.
5260 For more information, see
5261 <a href="#gdImageSetAntiAliased">gdImageSetAntiAliased</a>.
5262 <DT><A NAME="gdBrushed">gdBrushed</A> <strong>(CONSTANT)</strong>
5263 <DD>
5264 Used in place of a color when invoking a line-drawing
5265 function such as <A HREF="#gdImageLine">gdImageLine</A>
5266 or <A HREF="#gdImageRectangle">gdImageRectangle</A>.
5267 When gdBrushed is used as the color, the brush
5268 image set with <A HREF="#gdImageSetBrush">gdImageSetBrush</A>
5269 is drawn in place of each pixel of the line (the brush is
5270 usually larger than one pixel, creating the effect
5271 of a wide paintbrush). See also
5272 <A HREF="#gdStyledBrushed">gdStyledBrushed</A> for a way
5273 to draw broken lines with a series of distinct copies of an image.
5274 <DT><A NAME="gdMaxColors"><code>gdMaxColors</code><strong>(CONSTANT)</strong>
5275 <DD>
5276 The constant 256. This is the maximum number of colors in a palette-based
5277 PNG file according to the PNG standard, and is also the maximum number of
5278 colors in a palette-based gd image. This of course does not apply to
5279 truecolor images.
5280 <DT><A NAME="gdStyled">gdStyled</A> <strong>(CONSTANT)</strong>
5281 <DD>
5282 Used in place of a color when invoking a line-drawing
5283 function such as <A HREF="#gdImageLine">gdImageLine</A>
5284 or <A HREF="#gdImageRectangle">gdImageRectangle</A>.
5285 When gdStyled is used as the color, the colors of the pixels are
5286 drawn successively from the style that has been
5287 set with <A HREF="#gdImageSetStyle">gdImageSetStyle</A>.
5288 If the color of a pixel is equal to
5289 <A HREF="#gdTransparent">gdTransparent</A>, that pixel
5290 is not altered. (This mechanism is completely unrelated
5291 to the "transparent color" of the image itself; see
5292 <A HREF="#gdImageColorTransparent">gdImageColorTransparent</A>
5293 gdImageColorTransparent for that mechanism.) See also
5294 <A NAME="#gdStyledBrushed"> gdStyledBrushed</A>.
5295 <DT><A NAME="gdStyledBrushed">gdStyledBrushed</A> <strong>(CONSTANT)</strong>
5296 <DD>
5297 Used in place of a color when invoking a line-drawing
5298 function such as <A HREF="#gdImageLine">gdImageLine</A>
5299 or <A HREF="#gdImageRectangle">gdImageRectangle</A>.
5300 When gdStyledBrushed is used as the color, the brush
5301 image set with <A HREF="#gdImageSetBrush">gdImageSetBrush</A>
5302 is drawn at each pixel of the line, providing that the
5303 style set with <A HREF="#gdImageSetStyle">gdImageSetStyle</A>
5304 contains a nonzero value (OR gdTransparent, which
5305 does not equal zero but is supported for consistency)
5306 for the current pixel. (Pixels are drawn successively from the style as the
5307 line is drawn, returning to the beginning when the
5308 available pixels in the style are exhausted.) Note that
5309 this differs from the behavior of <A HREF="#gdStyled">gdStyled</A>,
5310 in which the values in the style are used as actual
5311 pixel colors, except for gdTransparent.
5312 <DT><A NAME="gdDashSize">gdDashSize</A> <strong>(CONSTANT)</strong>
5313 <DD>
5314 The length of a dash in a dashed line. Defined to be 4 for
5315 backwards compatibility with programs that use
5316 <A NAME="gdImageDashedLine">gdImageDashedLine</A>. New
5317 programs should use <A NAME="gdImageSetStyle">
5318 gdImageSetStyle</A> and call the standard
5319 <A NAME="gdImageLine">gdImageLine</A> function
5320 with the special "color" <A NAME="gdStyled">
5321 gdStyled</A> or <A NAME="gdStyledBrushed">gdStyledBrushed</A>.
5322 <DT><A NAME="gdTiled">gdTiled</A> <strong>(CONSTANT)</strong>
5323 <DD>
5324 Used in place of a normal color in <A HREF="#gdImageFilledRectangle">
5325 gdImageFilledRectangle</A>, <A HREF="#gdImageFilledPolygon">
5326 gdImageFilledPolygon</A>,
5327 <A HREF="#gdImageFill">gdImageFill</A>, and <A HREF="#gdImageFillToBorder">
5328 gdImageFillToBorder</A>. gdTiled selects a pixel from the
5329 tile image set with <A HREF="#gdImageSetTile">gdImageSetTile</A>
5330 in such a way as to ensure that the filled area will be
5331 tiled with copies of the tile image. See the discussions of
5332 <A HREF="#gdImageFill">gdImageFill</A> and
5333 <A HREF="#gdImageFillToBorder">gdImageFillToBorder</A> for special
5334 restrictions regarding those functions.
5335 <DT><A NAME="gdTransparent">gdTransparent</A> <strong>(CONSTANT)</strong>
5336 <DD>
5337 Used in place of a normal color in a style to be set with
5338 <A HREF="#gdImageSetStyle">gdImageSetStyle</A>.
5339 gdTransparent is <strong>not</strong> the transparent
5340 color index of the image; for that functionality please
5341 see <A HREF="#gdImageColorTransparent">gdImageColorTransparent</A>.
5342 </DL>
5343
5344 <A NAME="gdformat"><H3>About the additional .gd image file format</H3></A>
5345 In addition to reading and writing the PNG and JPEG formats and reading the
5346 X Bitmap format, gd has the capability to read and write its
5347 own ".gd" format. This format is <em>not</em> intended for
5348 general purpose use and should never be used to distribute
5349 images. It is not a compressed format. Its purpose is solely to
5350 allow very fast loading of images your program needs often in
5351 order to build other images for output. If you are experiencing
5352 performance problems when loading large, fixed PNG images your
5353 program needs to produce its output images, you may wish
5354 to examine the functions <A HREF="#gdImageCreateFromGd">
5355 gdImageCreateFromGd</A> and <A HREF="#gdImageGd">gdImageGd</A>,
5356 which read and write .gd format images.
5357
5358 <P>
5359 The program "pngtogd.c" is provided as a simple way of converting
5360 .png files to .gd format. I emphasize again that you will not
5361 need to use this format unless you have a need for high-speed loading
5362 of a few frequently-used images in your program.
5363
5364 <A NAME="gd2format"><H3>About the .gd2 image file format</H3></A>
5365 In addition to reading and writing the PNG format and reading the
5366 X Bitmap format, gd has the capability to read and write its
5367 own ".gd2" format. This format is <em>not</em> intended for
5368 general purpose use and should never be used to distribute
5369 images. It is a compressed format allowing pseudo-random access
5370 to large image files. Its purpose is solely to
5371 allow very fast loading of <strong>parts</strong> of images
5372 If you are experiencing
5373 performance problems when loading large, fixed PNG or JPEG images your
5374 program needs to produce its output images, you may wish
5375 to examine the functions <A HREF="#gdImageCreateFromGd2">
5376 gdImageCreateFromGd2</A>, <A HREF="#gdImageCreateFromGd2Part">
5377 gdImageCreateFromGd2Part</A> and <A HREF="#gdImageGd2">gdImageGd2</A>,
5378 which read and write .gd2 format images.
5379
5380 <P>
5381 The program "pngtogd2.c" is provided as a simple way of converting
5382 .png files to .gd2 format.
5383
5384 <A NAME="gdioctx"><H3>About the gdIOCtx structure</H3></A>
5385 Version 1.5 of GD added a new style of I/O based on an IOCtx
5386 structure (the most up-to-date version can be found in gd_io.h):
5387 <PRE>
5388 typedef struct gdIOCtx {
5389 int (*getC)(struct gdIOCtx*);
5390 int (*getBuf)(struct gdIOCtx*, void*, int);
5391
5392 void (*putC)(struct gdIOCtx*, int);
5393 int (*putBuf)(struct gdIOCtx*, const void*, int);
5394
5395 int (*seek)(struct gdIOCtx*, const int); /* Returns 1 on SUCCESS */
5396 long (*tell)(struct gdIOCtx*);
5397
5398 void (*free)(struct gdIOCtx*);
5399
5400 } gdIOCtx;
5401 </PRE>
5402
5403 Most functions that accepted files in previous versions now also have a
5404 counterpart that accepts an I/O context. These functions have a 'Ctx'
5405 suffix.
5406 <p>
5407 The <xxx>Ctx routines use the function pointers in the I/O context pointed to
5408 by gdIOCtx to perform all I/O. Examples of how to implement an I/O context
5409 can be found in io_file.c (which provides a wrapper for file routines), and
5410 io_dp.c (which implements in-memory storage).
5411 <p>
5412 It is not necessary to implement all functions in an I/O context if you know
5413 that it will only be used in limited cirsumstances. At the time of writing
5414 (Version 1.6.1, July 1999), the known requirements are:
5415 <p>
5416 <Table>
5417 <TR><TD>All</TD><td width=20>&nbsp;</td><TD>Must have 'free',</td></tr>
5418 <TR><TD>Anything that reads from the context</TD><td></td><TD>Must have 'getC' and 'getBuf',</td></tr>
5419 <TR><TD>Anything that writes to the context</TD><td></td><TD>Must have 'putC' and 'putBuf'.</td></tr>
5420 <TR><TD>If gdCreateFromGd2Part is called</td><td></td><TD>Must also have 'seek' and 'tell'. Note: seek must return 1 on SUCCESS and 0 on FAILURE.</td></tr>
5421 <TR><TD>If gdImageGd2 is called</td><td></td><TD>Must also have 'seek' and 'tell'.</td></tr>
5422 </Table>
5423
5424
5425
5426 <A NAME="informing"><H3>Please tell us you're using gd!</H3>
5427 When you contact us and let us know you are using gd,
5428 you help us justify the time spent in maintaining and improving
5429 it. So please let us know. If the results are publicly
5430 visible on the web, a URL is a wonderful thing to receive, but
5431 if it's not a publicly visible project, a simple note is just
5432 as welcome.
5433
5434 <A NAME="support"><H3>How do I get support?</H3></A>
5435 <h4>Free Support</h4>
5436
5437 Anyone can mail questions about the gd library using the
5438 <a href="http://www.libgd.org/Wiki/Support">LibGD support</a>. However,
5439 we receive a very large volume of email on many subjects, and while we do
5440 our best to respond to all queries this can take some time. Sometimes
5441 the response must take the form of an eventual new release or
5442 an addition to a FAQ or other document, as opposed to an detailed individual response.
5443
5444 <h4>Hourly Support</h4>
5445 Those requiring support in detail may arrange for direct support
5446 from the maintaines, at the rate of $50/hr, billed
5447 directly by credit card. Purchase orders are also accepted from
5448 Fortune 500 corporations and institutions in good standing.
5449 To make arrangements, contact <A HREF="http://www.libgd.org/Contact">Pierre-A. Joye</A>. To avoid delay
5450 and/or confusion, be sure to specifically mention that you wish to purchase gd support at the
5451 hourly rate above.
5452
5453 <A NAME="issues"><H3>How do I report issues, bugs or features request?</H3></A>
5454 Bugs, feature requests or other issues can be reported using the
5455 <A HREF="http://bugs.libgd.org">libGD.org issues tracker.</A> as well as using
5456 one of our support channels: <a href="http://www.libgd.org/Wiki/Support">LibGD support</a>
5457
5458 <H3><A NAME="index">Alphabetical quick index</A></H3>
5459 <A HREF="#gdAntiAliased">gdAntiAliased</A> |
5460 <A HREF="#gdBrushed">gdBrushed</A> |
5461 <A HREF="#gdDashSize">gdDashSize</A> |
5462 <A HREF="#gdFont">gdFont</A> |
5463 <A HREF="#gdFontGetHuge">gdFontGetHuge</A> |
5464 <A HREF="#gdFontGetLarge">gdFontGetLarge</A> |
5465 <A HREF="#gdFontGetMediumBold">gdFontGetMediumBold</A> |
5466 <A HREF="#gdFontGetSmall">gdFontGetSmall</A> |
5467 <A HREF="#gdFontGetTiny">gdFontGetTiny</A> |
5468 <A HREF="#gdFontCacheSetup">gdFontCacheSetup</A> |
5469 <A HREF="#gdFontCacheShutdown">gdFontCacheShutdown</A> |
5470 <A HREF="#gdFontPtr">gdFontPtr</A> |
5471 <A HREF="#gdFree">gdFree</A> |
5472 <A HREF="#gdImage">gdImage</A> |
5473 <A HREF="#gdImageAlphaBlending">gdImageAlphaBlending</A> |
5474 <A HREF="#gdImageArc">gdImageArc</A> |
5475 <A HREF="#gdImageBlue">gdImageBlue</A> |
5476 <A HREF="#gdImageBoundsSafe">gdImageBoundsSafe</A> |
5477 <A HREF="#gdImageChar">gdImageChar</A> |
5478 <A HREF="#gdImageCharUp">gdImageCharUp</A> |
5479 <A HREF="#gdImageColorAllocate">gdImageColorAllocate</A> |
5480 <A HREF="#gdImageColorAllocateAlpha">gdImageColorAllocateAlpha</A> |
5481 <A HREF="#gdImageColorClosest">gdImageColorClosest</A> |
5482 <A HREF="#gdImageColorClosestAlpha">gdImageColorClosestAlpha</A> |
5483 <A HREF="#gdImageColorClosestHWB">gdImageColorClosestHWB</A> |
5484 <A HREF="#gdImageColorDeallocate">gdImageColorDeallocate</A> |
5485 <A HREF="#gdImageColorExact">gdImageColorExact</A> |
5486 <A HREF="#gdImageColorExactAlpha">gdImageColorExactAlpha</A> |
5487 <A HREF="#gdImageColorResolve">gdImageColorResolve</A> |
5488 <A HREF="#gdImageColorResolveAlpha">gdImageColorResolveAlpha</A> |
5489 <A HREF="#gdImageColorTransparent">gdImageColorTransparent</A> |
5490 <A HREF="#gdImageCopy">gdImageCopy</A> |
5491 <A HREF="#gdImageCopyMerge">gdImageCopyMerge</A> |
5492 <A HREF="#gdImageCopyMergeGray">gdImageMergeGray</A> |
5493 <A HREF="#gdImageCopyResized">gdImageCopyResized</A> |
5494 <A HREF="#gdImageCopyResampled">gdImageCopyResampled</A> |
5495 <A HREF="#gdImageCopyRotated">gdImageCopyRotated</A> |
5496 <A HREF="#gdImageCreate">gdImageCreate</A> |
5497 <A HREF="#gdImageCreate">gdImageCreatePalette</A> |
5498 <A HREF="#gdImageCreate">gdImageCreateTrueColor</A> |
5499 <A HREF="#gdImageCreateFromGd">gdImageCreateFromGd</A> |
5500 <A HREF="#gdImageCreateFromGdCtx">gdImageCreateFromGdCtx</A> |
5501 <A HREF="#gdImageCreateFromGdPtr">gdImageCreateFromGdPtr</A> |
5502 <A HREF="#gdImageCreateFromGd2">gdImageCreateFromGd2</A> |
5503 <A HREF="#gdImageCreateFromGd2Ctx">gdImageCreateFromGd2Ctx</A> |
5504 <A HREF="#gdImageCreateFromGd2Ptr">gdImageCreateFromGd2Ptr</A> |
5505 <A HREF="#gdImageCreateFromGd2Part">gdImageCreateFromGd2Part</A> |
5506 <A HREF="#gdImageCreateFromGd2PartCtx">gdImageCreateFromGd2PartCtx</A> |
5507 <A HREF="#gdImageCreateFromGd2PartPtr">gdImageCreateFromGd2PartPtr</A> |
5508 <A HREF="#gdImageCreateFromJpeg">gdImageCreateFromJpeg</A> |
5509 <A HREF="#gdImageCreateFromJpegCtx">gdImageCreateFromJpegCtx</A> |
5510 <A HREF="#gdImageCreateFromJpegPtr">gdImageCreateFromJpegPtr</A> |
5511 <A HREF="#gdImageCreateFromPng">gdImageCreateFromPng</A> |
5512 <A HREF="#gdImageCreateFromPngCtx">gdImageCreateFromPngCtx</A> |
5513 <A HREF="#gdImageCreateFromPngPtr">gdImageCreateFromPngPtr</A> |
5514 <A HREF="#gdImageCreateFromPngSource">gdImageCreateFromPngSource</A> |
5515 <A HREF="#gdImageCreateFromWBMP">gdImageCreateFromWBMP</A> |
5516 <A HREF="#gdImageCreateFromWBMPCtx">gdImageCreateFromWBMPCtx</A> |
5517 <A HREF="#gdImageCreateFromWBMPPtr">gdImageCreateFromWBMPPtr</A> |
5518 <A HREF="#gdImageCreateFromXbm">gdImageCreateFromXbm</A> |
5519 <A HREF="#gdImageCreateFromXpm">gdImageCreateFromXpm</A> |
5520 <A HREF="#gdImageDashedLine">gdImageDashedLine</A> |
5521 <A HREF="#gdImageDestroy">gdImageDestroy</A> |
5522 <A HREF="#gdImageFill">gdImageFill</A> |
5523 <A HREF="#gdImageFilledArc">gdImageFilledArc</A> |
5524 <A HREF="#gdImageFilledEllipse">gdImageFilledEllipse</A> |
5525 <A HREF="#gdImageFillToBorder">gdImageFillToBorder</A> |
5526 <A HREF="#gdImageFilledRectangle">gdImageFilledRectangle</A> |
5527 <A HREF="#gdImageGd">gdImageGd</A> |
5528 <A HREF="#gdImageGd2">gdImageGd2</A> |
5529 <A HREF="#gdImageGetInterlaced">gdImageGetInterlaced</A> |
5530 <A HREF="#gdImageGetPixel">gdImageGetPixel</A> |
5531 <A HREF="#gdImageGetTransparent">gdImageGetTransparent</A> |
5532 <A HREF="#gdImageGifAnimAdd">gdImageGifAnimAdd</A> |
5533 <A HREF="#gdImageGifAnimAddCtx">gdImageGifAnimAddCtx</A> |
5534 <A HREF="#gdImageGifAnimAddPtr">gdImageGifAnimAddPtr</A> |
5535 <A HREF="#gdImageGifAnimBegin">gdImageGifAnimBegin</A> |
5536 <A HREF="#gdImageGifAnimBeginCtx">gdImageGifAnimBeginCtx</A> |
5537 <A HREF="#gdImageGifAnimBeginPtr">gdImageGifAnimBeginPtr</A> |
5538 <A HREF="#gdImageGifAnimEnd">gdImageGifAnimEnd</A> |
5539 <A HREF="#gdImageGifAnimEndCtx">gdImageGifAnimEndCtx</A> |
5540 <A HREF="#gdImageGifAnimEndPtr">gdImageGifAnimEndPtr</A> |
5541 <A HREF="#gdImageGreen">gdImageGreen</A> |
5542 <A HREF="#gdImageInterlace">gdImageInterlace</A> |
5543 <A HREF="#gdImageJpeg">gdImageJpeg</A> |
5544 <A HREF="#gdImageJpegCtx">gdImageJpegCtx</A> |
5545 <A HREF="#gdImageLine">gdImageLine</A> |
5546 <A HREF="#gdImageFilledPolygon">gdImageFilledPolygon</A> |
5547 <A HREF="#gdImageOpenPolygon">gdImageOpenPolygon</A> |
5548 <A HREF="#gdImagePaletteCopy">gdImagePaletteCopy</A> |
5549 <A HREF="#gdImagePng">gdImagePng</A> |
5550 <A HREF="#gdImagePngEx">gdImagePngEx</A> |
5551 <A HREF="#gdImagePngCtx">gdImagePngCtx</A> |
5552 <A HREF="#gdImagePngCtxEx">gdImagePngCtxEx</A> |
5553 <A HREF="#gdImagePngPtr">gdImagePngPtr</A> |
5554 <A HREF="#gdImagePngPtrEx">gdImagePngPtrEx</A> |
5555 <A HREF="#gdImagePngToSink">gdImagePngToSink</A> |
5556 <A HREF="#gdImagePolygon">gdImagePolygon</A> |
5557 <A HREF="#gdImagePtr">gdImagePtr</A> |
5558 <A HREF="#gdImageWBMP">gdImageWBMP</A> |
5559 <A HREF="#gdImageWBMPCtx">gdImageWBMPCtx</A> |
5560 <A HREF="#gdImageRectangle">gdImageRectangle</A> |
5561 <A HREF="#gdImageRed">gdImageRed</A> |
5562 <A HREF="#gdImageSaveAlpha">gdImageSaveAlpha</A> |
5563 <A HREF="#gdImageSetAntiAliased">gdImageSetAntiAliased</A> |
5564 <A HREF="#gdImageSetAntiAliasedDontBlend">gdImageSetAntiAliasedDontBlend</A> |
5565 <A HREF="#gdImageSetBrush">gdImageSetBrush</A> |
5566 <A HREF="#gdImageSetPixel">gdImageSetPixel</A> |
5567 <A HREF="#gdImageSetStyle">gdImageSetStyle</A> |
5568 <A HREF="#gdImageSetThickness">gdImageSetThickness</A> |
5569 <A HREF="#gdImageSetTile">gdImageSetTile</A> |
5570 <A HREF="#gdImageSharpen">gdImageSharpen</A> |
5571 <A HREF="#gdImageSquareToCircle">gdImageSquareToCircle</A> |
5572 <A HREF="#gdImageString">gdImageString</A> |
5573 <A HREF="#gdImageString16">gdImageString16</A> |
5574 <A HREF="#gdImageStringFT">gdImageStringFT</A> |
5575 <A HREF="#gdImageStringFTCircle">gdImageStringFTCircle</A> |
5576 <A HREF="#gdImageStringFTEx">gdImageStringFTEx</A> |
5577 <A HREF="#gdImageStringTTF">gdImageStringTTF</A> |
5578 <A HREF="#gdImageStringUp">gdImageStringUp</A> |
5579 <A HREF="#gdImageStringUp">gdImageStringUp16</A> |
5580 <A HREF="#gdImageToPalette">gdImageToPalette</A> |
5581 <A HREF="#gdImageWBMP">gdImageWBMP</A> |
5582 <A HREF="#gdMaxColors">gdMaxColors</A> |
5583 <A HREF="#gdPoint">gdPoint</A> |
5584 <A HREF="#gdStyled">gdStyled</A> |
5585 <A HREF="#gdStyledBrushed">gdStyledBrushed</A> |
5586 <A HREF="#gdTiled">gdTiled</A> |
5587 <A HREF="#gdTransparent">gdTransparent</A>
5588 <P>
5589 <em><A HREF="http://www.libgd.org/">
5590 www.libgd.org</A></em>
5591 </body>
5592
0 #!/bin/sh
1
2 cp $2 $3
3 chmod $1 $3
4
0 #ifdef __cplusplus
1 extern "C" {
2 #endif
3
4 #ifndef JISX0208_H
5 #define JISX0208_H
6 /* This file was derived from "src/VF_Ftype.c" in VFlib2-2.24.2
7 by Dr. Kakugawa */
8
9 /* JIS -> Unicode mapping table */
10 static unsigned short UnicodeTbl[][94] = {
11 { /* category 01 */
12 0x0000, 0x3001, 0x3002, 0xFF0C, 0xFF0E, 0x30FB, 0xFF1A, 0xFF1B,
13 0xFF1F, 0xFF01, 0x309B, 0x309C, 0x00B4, 0xFF40, 0x00A8, 0xFF3E,
14 0xFFE3, 0xFF3F, 0x30FD, 0x30FE, 0x309D, 0x309E, 0x3003, 0x4EDD,
15 0x3005, 0x3006, 0x3007, 0x30FC, 0x2015, 0x2010, 0xFF0F, 0xFF3C,
16 0xFF5E, 0x2225, 0xFF5C, 0x2026, 0x2025, 0x2018, 0x2019, 0x201C,
17 0x201D, 0xFF08, 0xFF09, 0x3014, 0x3015, 0xFF3B, 0xFF3D, 0xFF5B,
18 0xFF5D, 0x3008, 0x3009, 0x300A, 0x300B, 0x300C, 0x300D, 0x300E,
19 0x300F, 0x3010, 0x3011, 0xFF0B, 0xFF0D, 0x00B1, 0x00D7, 0x00F7,
20 0xFF1D, 0x2260, 0xFF1C, 0xFF1E, 0x2266, 0x2267, 0x221E, 0x2234,
21 0x2642, 0x2640, 0x00B0, 0x2032, 0x2033, 0x2103, 0xFFE5, 0xFF04,
22 0xFFE0, 0xFFE1, 0xFF05, 0xFF03, 0xFF06, 0xFF0A, 0xFF20, 0x00A7,
23 0x2606, 0x2605, 0x25CB, 0x25CF, 0x25CE, 0x25C7},
24 { /* category 02 */
25 0x25C6, 0x25A1, 0x25A0, 0x25B3, 0x25B2, 0x25BD, 0x25BC, 0x203B,
26 0x3012, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, 0x0000, 0x0000,
27 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
28 0x0000, 0x2208, 0x220B, 0x2286, 0x2287, 0x2282, 0x2283, 0x222A,
29 0x2229, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
30 0x0000, 0x2227, 0x2228, 0xFFE2, 0x21D2, 0x21D4, 0x2200, 0x2203,
31 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
32 0x0000, 0x0000, 0x0000, 0x2220, 0x22A5, 0x2312, 0x2202, 0x2207,
33 0x2261, 0x2252, 0x226A, 0x226B, 0x221A, 0x223D, 0x221D, 0x2235,
34 0x222B, 0x222C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
35 0x0000, 0x212B, 0x2030, 0x266F, 0x266D, 0x266A, 0x2020, 0x2021, /**/
36 0x00B6, 0x0000, 0x0000, 0x0000, 0x0000, 0x25EF},
37 { /* category 03 */
38 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
39 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFF10,
40 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, 0xFF18,
41 0xFF19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
42 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28,
43 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30,
44 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37, 0xFF38,
45 0xFF39, 0xFF3A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
46 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, 0xFF48,
47 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F, 0xFF50,
48 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, 0xFF58,
49 0xFF59, 0xFF5A, 0x0000, 0x0000, 0x0000, 0x0000},
50 { /* category 04 */
51 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048,
52 0x3049, 0x304A, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F, 0x3050,
53 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058,
54 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F, 0x3060,
55 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
56 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, 0x3070,
57 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078,
58 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, 0x307E, 0x307F, 0x3080,
59 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088,
60 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E, 0x308F, 0x3090,
61 0x3091, 0x3092, 0x3093, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
62 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
63 { /* category 05 */
64 0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8,
65 0x30A9, 0x30AA, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0,
66 0x30B1, 0x30B2, 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, 0x30B8,
67 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF, 0x30C0,
68 0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7, 0x30C8,
69 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D0,
70 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 0x30D8,
71 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, 0x30E0,
72 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8,
73 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, 0x30F0,
74 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F5, 0x30F6, 0x0000, 0x0000,
75 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
76 { /* category 06 */
77 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398,
78 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0,
79 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9,
80 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
81 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8,
82 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0,
83 0x03C1, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9,
84 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
85 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
86 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
87 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
88 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
89 { /* category 07 */
90 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416,
91 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E,
92 0x041F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426,
93 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E,
94 0x042F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
95 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
96 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436,
97 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E,
98 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446,
99 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E,
100 0x044F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
101 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
102 { /* category 08 */
103 0x2500, 0x2502, 0x250C, 0x2510, 0x2518, 0x2514, 0x251C, 0x252C,
104 0x2524, 0x2534, 0x253C, 0x2501, 0x2503, 0x250F, 0x2513, 0x251B,
105 0x2517, 0x2523, 0x2533, 0x252B, 0x253B, 0x254B, 0x2520, 0x252F,
106 0x2528, 0x2537, 0x253F, 0x251D, 0x2530, 0x2525, 0x2538, 0x2542,
107 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
108 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
109 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
110 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
111 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
112 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
113 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
114 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
115 { /* category 09 */
116 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
117 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
118 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
119 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
120 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
121 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
122 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
123 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
124 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
125 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
126 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
127 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
128 { /* category 10 */
129 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
130 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
131 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
132 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
133 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
134 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
135 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
136 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
137 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
138 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
139 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
140 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
141 { /* category 11 */
142 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
143 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
144 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
145 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
146 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
147 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
148 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
149 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
150 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
151 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
152 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
153 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
154 { /* category 12 */
155 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
156 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
157 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
158 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
159 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
160 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
161 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
162 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
163 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
164 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
165 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
166 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
167 { /* category 13 */
168 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
169 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
170 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
171 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
172 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
173 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
174 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
175 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
176 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
177 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
178 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
179 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
180 { /* category 14 */
181 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
182 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
183 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
184 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
185 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
186 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
187 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
188 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
189 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
190 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
191 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
192 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
193 { /* category 15 */
194 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
195 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
196 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
197 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
198 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
199 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
200 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
201 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
202 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
203 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
204 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
205 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
206 { /* category 16 */
207 0x4E9C, 0x5516, 0x5A03, 0x963F, 0x54C0, 0x611B, 0x6328, 0x59F6,
208 0x9022, 0x8475, 0x831C, 0x7A50, 0x60AA, 0x63E1, 0x6E25, 0x65ED,
209 0x8466, 0x82A6, 0x9BF5, 0x6893, 0x5727, 0x65A1, 0x6271, 0x5B9B,
210 0x59D0, 0x867B, 0x98F4, 0x7D62, 0x7DBE, 0x9B8E, 0x6216, 0x7C9F,
211 0x88B7, 0x5B89, 0x5EB5, 0x6309, 0x6697, 0x6848, 0x95C7, 0x978D,
212 0x674F, 0x4EE5, 0x4F0A, 0x4F4D, 0x4F9D, 0x5049, 0x56F2, 0x5937,
213 0x59D4, 0x5A01, 0x5C09, 0x60DF, 0x610F, 0x6170, 0x6613, 0x6905,
214 0x70BA, 0x754F, 0x7570, 0x79FB, 0x7DAD, 0x7DEF, 0x80C3, 0x840E,
215 0x8863, 0x8B02, 0x9055, 0x907A, 0x533B, 0x4E95, 0x4EA5, 0x57DF,
216 0x80B2, 0x90C1, 0x78EF, 0x4E00, 0x58F1, 0x6EA2, 0x9038, 0x7A32,
217 0x8328, 0x828B, 0x9C2F, 0x5141, 0x5370, 0x54BD, 0x54E1, 0x56E0,
218 0x59FB, 0x5F15, 0x98F2, 0x6DEB, 0x80E4, 0x852D},
219 { /* category 17 */
220 0x9662, 0x9670, 0x96A0, 0x97FB, 0x540B, 0x53F3, 0x5B87, 0x70CF,
221 0x7FBD, 0x8FC2, 0x96E8, 0x536F, 0x9D5C, 0x7ABA, 0x4E11, 0x7893,
222 0x81FC, 0x6E26, 0x5618, 0x5504, 0x6B1D, 0x851A, 0x9C3B, 0x59E5,
223 0x53A9, 0x6D66, 0x74DC, 0x958F, 0x5642, 0x4E91, 0x904B, 0x96F2,
224 0x834F, 0x990C, 0x53E1, 0x55B6, 0x5B30, 0x5F71, 0x6620, 0x66F3,
225 0x6804, 0x6C38, 0x6CF3, 0x6D29, 0x745B, 0x76C8, 0x7A4E, 0x9834,
226 0x82F1, 0x885B, 0x8A60, 0x92ED, 0x6DB2, 0x75AB, 0x76CA, 0x99C5,
227 0x60A6, 0x8B01, 0x8D8A, 0x95B2, 0x698E, 0x53AD, 0x5186, 0x5712,
228 0x5830, 0x5944, 0x5BB4, 0x5EF6, 0x6028, 0x63A9, 0x63F4, 0x6CBF,
229 0x6F14, 0x708E, 0x7114, 0x7159, 0x71D5, 0x733F, 0x7E01, 0x8276,
230 0x82D1, 0x8597, 0x9060, 0x925B, 0x9D1B, 0x5869, 0x65BC, 0x6C5A,
231 0x7525, 0x51F9, 0x592E, 0x5965, 0x5F80, 0x5FDC},
232 { /* category 18 */
233 0x62BC, 0x65FA, 0x6A2A, 0x6B27, 0x6BB4, 0x738B, 0x7FC1, 0x8956,
234 0x9D2C, 0x9D0E, 0x9EC4, 0x5CA1, 0x6C96, 0x837B, 0x5104, 0x5C4B,
235 0x61B6, 0x81C6, 0x6876, 0x7261, 0x4E59, 0x4FFA, 0x5378, 0x6069,
236 0x6E29, 0x7A4F, 0x97F3, 0x4E0B, 0x5316, 0x4EEE, 0x4F55, 0x4F3D,
237 0x4FA1, 0x4F73, 0x52A0, 0x53EF, 0x5609, 0x590F, 0x5AC1, 0x5BB6,
238 0x5BE1, 0x79D1, 0x6687, 0x679C, 0x67B6, 0x6B4C, 0x6CB3, 0x706B,
239 0x73C2, 0x798D, 0x79BE, 0x7A3C, 0x7B87, 0x82B1, 0x82DB, 0x8304,
240 0x8377, 0x83EF, 0x83D3, 0x8766, 0x8AB2, 0x5629, 0x8CA8, 0x8FE6,
241 0x904E, 0x971E, 0x868A, 0x4FC4, 0x5CE8, 0x6211, 0x7259, 0x753B,
242 0x81E5, 0x82BD, 0x86FE, 0x8CC0, 0x96C5, 0x9913, 0x99D5, 0x4ECB,
243 0x4F1A, 0x89E3, 0x56DE, 0x584A, 0x58CA, 0x5EFB, 0x5FEB, 0x602A,
244 0x6094, 0x6062, 0x61D0, 0x6212, 0x62D0, 0x6539},
245 { /* category 19 */
246 0x9B41, 0x6666, 0x68B0, 0x6D77, 0x7070, 0x754C, 0x7686, 0x7D75,
247 0x82A5, 0x87F9, 0x958B, 0x968E, 0x8C9D, 0x51F1, 0x52BE, 0x5916,
248 0x54B3, 0x5BB3, 0x5D16, 0x6168, 0x6982, 0x6DAF, 0x788D, 0x84CB,
249 0x8857, 0x8A72, 0x93A7, 0x9AB8, 0x6D6C, 0x99A8, 0x86D9, 0x57A3,
250 0x67FF, 0x86CE, 0x920E, 0x5283, 0x5687, 0x5404, 0x5ED3, 0x62E1,
251 0x64B9, 0x683C, 0x6838, 0x6BBB, 0x7372, 0x78BA, 0x7A6B, 0x899A,
252 0x89D2, 0x8D6B, 0x8F03, 0x90ED, 0x95A3, 0x9694, 0x9769, 0x5B66,
253 0x5CB3, 0x697D, 0x984D, 0x984E, 0x639B, 0x7B20, 0x6A2B, 0x6A7F,
254 0x68B6, 0x9C0D, 0x6F5F, 0x5272, 0x559D, 0x6070, 0x62EC, 0x6D3B,
255 0x6E07, 0x6ED1, 0x845B, 0x8910, 0x8F44, 0x4E14, 0x9C39, 0x53F6,
256 0x691B, 0x6A3A, 0x9784, 0x682A, 0x515C, 0x7AC3, 0x84B2, 0x91DC,
257 0x938C, 0x565B, 0x9D28, 0x6822, 0x8305, 0x8431},
258 { /* category 20 */
259 0x7CA5, 0x5208, 0x82C5, 0x74E6, 0x4E7E, 0x4F83, 0x51A0, 0x5BD2,
260 0x520A, 0x52D8, 0x52E7, 0x5DFB, 0x559A, 0x582A, 0x59E6, 0x5B8C,
261 0x5B98, 0x5BDB, 0x5E72, 0x5E79, 0x60A3, 0x611F, 0x6163, 0x61BE,
262 0x63DB, 0x6562, 0x67D1, 0x6853, 0x68FA, 0x6B3E, 0x6B53, 0x6C57,
263 0x6F22, 0x6F97, 0x6F45, 0x74B0, 0x7518, 0x76E3, 0x770B, 0x7AFF,
264 0x7BA1, 0x7C21, 0x7DE9, 0x7F36, 0x7FF0, 0x809D, 0x8266, 0x839E,
265 0x89B3, 0x8ACC, 0x8CAB, 0x9084, 0x9451, 0x9593, 0x9591, 0x95A2,
266 0x9665, 0x97D3, 0x9928, 0x8218, 0x4E38, 0x542B, 0x5CB8, 0x5DCC,
267 0x73A9, 0x764C, 0x773C, 0x5CA9, 0x7FEB, 0x8D0B, 0x96C1, 0x9811,
268 0x9854, 0x9858, 0x4F01, 0x4F0E, 0x5371, 0x559C, 0x5668, 0x57FA,
269 0x5947, 0x5B09, 0x5BC4, 0x5C90, 0x5E0C, 0x5E7E, 0x5FCC, 0x63EE,
270 0x673A, 0x65D7, 0x65E2, 0x671F, 0x68CB, 0x68C4},
271 { /* category 21 */
272 0x6A5F, 0x5E30, 0x6BC5, 0x6C17, 0x6C7D, 0x757F, 0x7948, 0x5B63,
273 0x7A00, 0x7D00, 0x5FBD, 0x898F, 0x8A18, 0x8CB4, 0x8D77, 0x8ECC,
274 0x8F1D, 0x98E2, 0x9A0E, 0x9B3C, 0x4E80, 0x507D, 0x5100, 0x5993,
275 0x5B9C, 0x622F, 0x6280, 0x64EC, 0x6B3A, 0x72A0, 0x7591, 0x7947,
276 0x7FA9, 0x87FB, 0x8ABC, 0x8B70, 0x63AC, 0x83CA, 0x97A0, 0x5409,
277 0x5403, 0x55AB, 0x6854, 0x6A58, 0x8A70, 0x7827, 0x6775, 0x9ECD,
278 0x5374, 0x5BA2, 0x811A, 0x8650, 0x9006, 0x4E18, 0x4E45, 0x4EC7,
279 0x4F11, 0x53CA, 0x5438, 0x5BAE, 0x5F13, 0x6025, 0x6551, 0x673D,
280 0x6C42, 0x6C72, 0x6CE3, 0x7078, 0x7403, 0x7A76, 0x7AAE, 0x7B08,
281 0x7D1A, 0x7CFE, 0x7D66, 0x65E7, 0x725B, 0x53BB, 0x5C45, 0x5DE8,
282 0x62D2, 0x62E0, 0x6319, 0x6E20, 0x865A, 0x8A31, 0x8DDD, 0x92F8,
283 0x6F01, 0x79A6, 0x9B5A, 0x4EA8, 0x4EAB, 0x4EAC},
284 { /* category 22 */
285 0x4F9B, 0x4FA0, 0x50D1, 0x5147, 0x7AF6, 0x5171, 0x51F6, 0x5354,
286 0x5321, 0x537F, 0x53EB, 0x55AC, 0x5883, 0x5CE1, 0x5F37, 0x5F4A,
287 0x602F, 0x6050, 0x606D, 0x631F, 0x6559, 0x6A4B, 0x6CC1, 0x72C2,
288 0x72ED, 0x77EF, 0x80F8, 0x8105, 0x8208, 0x854E, 0x90F7, 0x93E1,
289 0x97FF, 0x9957, 0x9A5A, 0x4EF0, 0x51DD, 0x5C2D, 0x6681, 0x696D,
290 0x5C40, 0x66F2, 0x6975, 0x7389, 0x6850, 0x7C81, 0x50C5, 0x52E4,
291 0x5747, 0x5DFE, 0x9326, 0x65A4, 0x6B23, 0x6B3D, 0x7434, 0x7981,
292 0x79BD, 0x7B4B, 0x7DCA, 0x82B9, 0x83CC, 0x887F, 0x895F, 0x8B39,
293 0x8FD1, 0x91D1, 0x541F, 0x9280, 0x4E5D, 0x5036, 0x53E5, 0x533A,
294 0x72D7, 0x7396, 0x77E9, 0x82E6, 0x8EAF, 0x99C6, 0x99C8, 0x99D2,
295 0x5177, 0x611A, 0x865E, 0x55B0, 0x7A7A, 0x5076, 0x5BD3, 0x9047,
296 0x9685, 0x4E32, 0x6ADB, 0x91E7, 0x5C51, 0x5C48},
297 { /* category 23 */
298 0x6398, 0x7A9F, 0x6C93, 0x9774, 0x8F61, 0x7AAA, 0x718A, 0x9688,
299 0x7C82, 0x6817, 0x7E70, 0x6851, 0x936C, 0x52F2, 0x541B, 0x85AB,
300 0x8A13, 0x7FA4, 0x8ECD, 0x90E1, 0x5366, 0x8888, 0x7941, 0x4FC2,
301 0x50BE, 0x5211, 0x5144, 0x5553, 0x572D, 0x73EA, 0x578B, 0x5951,
302 0x5F62, 0x5F84, 0x6075, 0x6176, 0x6167, 0x61A9, 0x63B2, 0x643A,
303 0x656C, 0x666F, 0x6842, 0x6E13, 0x7566, 0x7A3D, 0x7CFB, 0x7D4C,
304 0x7D99, 0x7E4B, 0x7F6B, 0x830E, 0x834A, 0x86CD, 0x8A08, 0x8A63,
305 0x8B66, 0x8EFD, 0x981A, 0x9D8F, 0x82B8, 0x8FCE, 0x9BE8, 0x5287,
306 0x621F, 0x6483, 0x6FC0, 0x9699, 0x6841, 0x5091, 0x6B20, 0x6C7A,
307 0x6F54, 0x7A74, 0x7D50, 0x8840, 0x8A23, 0x6708, 0x4EF6, 0x5039,
308 0x5026, 0x5065, 0x517C, 0x5238, 0x5263, 0x55A7, 0x570F, 0x5805,
309 0x5ACC, 0x5EFA, 0x61B2, 0x61F8, 0x62F3, 0x6372},
310 { /* category 24 */
311 0x691C, 0x6A29, 0x727D, 0x72AC, 0x732E, 0x7814, 0x786F, 0x7D79,
312 0x770C, 0x80A9, 0x898B, 0x8B19, 0x8CE2, 0x8ED2, 0x9063, 0x9375,
313 0x967A, 0x9855, 0x9A13, 0x9E78, 0x5143, 0x539F, 0x53B3, 0x5E7B,
314 0x5F26, 0x6E1B, 0x6E90, 0x7384, 0x73FE, 0x7D43, 0x8237, 0x8A00,
315 0x8AFA, 0x9650, 0x4E4E, 0x500B, 0x53E4, 0x547C, 0x56FA, 0x59D1,
316 0x5B64, 0x5DF1, 0x5EAB, 0x5F27, 0x6238, 0x6545, 0x67AF, 0x6E56,
317 0x72D0, 0x7CCA, 0x88B4, 0x80A1, 0x80E1, 0x83F0, 0x864E, 0x8A87,
318 0x8DE8, 0x9237, 0x96C7, 0x9867, 0x9F13, 0x4E94, 0x4E92, 0x4F0D,
319 0x5348, 0x5449, 0x543E, 0x5A2F, 0x5F8C, 0x5FA1, 0x609F, 0x68A7,
320 0x6A8E, 0x745A, 0x7881, 0x8A9E, 0x8AA4, 0x8B77, 0x9190, 0x4E5E,
321 0x9BC9, 0x4EA4, 0x4F7C, 0x4FAF, 0x5019, 0x5016, 0x5149, 0x516C,
322 0x529F, 0x52B9, 0x52FE, 0x539A, 0x53E3, 0x5411},
323 { /* category 25 */
324 0x540E, 0x5589, 0x5751, 0x57A2, 0x597D, 0x5B54, 0x5B5D, 0x5B8F,
325 0x5DE5, 0x5DE7, 0x5DF7, 0x5E78, 0x5E83, 0x5E9A, 0x5EB7, 0x5F18,
326 0x6052, 0x614C, 0x6297, 0x62D8, 0x63A7, 0x653B, 0x6602, 0x6643,
327 0x66F4, 0x676D, 0x6821, 0x6897, 0x69CB, 0x6C5F, 0x6D2A, 0x6D69,
328 0x6E2F, 0x6E9D, 0x7532, 0x7687, 0x786C, 0x7A3F, 0x7CE0, 0x7D05,
329 0x7D18, 0x7D5E, 0x7DB1, 0x8015, 0x8003, 0x80AF, 0x80B1, 0x8154,
330 0x818F, 0x822A, 0x8352, 0x884C, 0x8861, 0x8B1B, 0x8CA2, 0x8CFC,
331 0x90CA, 0x9175, 0x9271, 0x783F, 0x92FC, 0x95A4, 0x964D, 0x9805,
332 0x9999, 0x9AD8, 0x9D3B, 0x525B, 0x52AB, 0x53F7, 0x5408, 0x58D5,
333 0x62F7, 0x6FE0, 0x8C6A, 0x8F5F, 0x9EB9, 0x514B, 0x523B, 0x544A,
334 0x56FD, 0x7A40, 0x9177, 0x9D60, 0x9ED2, 0x7344, 0x6F09, 0x8170,
335 0x7511, 0x5FFD, 0x60DA, 0x9AA8, 0x72DB, 0x8FBC},
336 { /* category 26 */
337 0x6B64, 0x9803, 0x4ECA, 0x56F0, 0x5764, 0x58BE, 0x5A5A, 0x6068,
338 0x61C7, 0x660F, 0x6606, 0x6839, 0x68B1, 0x6DF7, 0x75D5, 0x7D3A,
339 0x826E, 0x9B42, 0x4E9B, 0x4F50, 0x53C9, 0x5506, 0x5D6F, 0x5DE6,
340 0x5DEE, 0x67FB, 0x6C99, 0x7473, 0x7802, 0x8A50, 0x9396, 0x88DF,
341 0x5750, 0x5EA7, 0x632B, 0x50B5, 0x50AC, 0x518D, 0x6700, 0x54C9,
342 0x585E, 0x59BB, 0x5BB0, 0x5F69, 0x624D, 0x63A1, 0x683D, 0x6B73,
343 0x6E08, 0x707D, 0x91C7, 0x7280, 0x7815, 0x7826, 0x796D, 0x658E,
344 0x7D30, 0x83DC, 0x88C1, 0x8F09, 0x969B, 0x5264, 0x5728, 0x6750,
345 0x7F6A, 0x8CA1, 0x51B4, 0x5742, 0x962A, 0x583A, 0x698A, 0x80B4,
346 0x54B2, 0x5D0E, 0x57FC, 0x7895, 0x9DFA, 0x4F5C, 0x524A, 0x548B,
347 0x643E, 0x6628, 0x6714, 0x67F5, 0x7A84, 0x7B56, 0x7D22, 0x932F,
348 0x685C, 0x9BAD, 0x7B39, 0x5319, 0x518A, 0x5237},
349 { /* category 27 */
350 0x5BDF, 0x62F6, 0x64AE, 0x64E6, 0x672D, 0x6BBA, 0x85A9, 0x96D1,
351 0x7690, 0x9BD6, 0x634C, 0x9306, 0x9BAB, 0x76BF, 0x6652, 0x4E09,
352 0x5098, 0x53C2, 0x5C71, 0x60E8, 0x6492, 0x6563, 0x685F, 0x71E6,
353 0x73CA, 0x7523, 0x7B97, 0x7E82, 0x8695, 0x8B83, 0x8CDB, 0x9178,
354 0x9910, 0x65AC, 0x66AB, 0x6B8B, 0x4ED5, 0x4ED4, 0x4F3A, 0x4F7F,
355 0x523A, 0x53F8, 0x53F2, 0x55E3, 0x56DB, 0x58EB, 0x59CB, 0x59C9,
356 0x59FF, 0x5B50, 0x5C4D, 0x5E02, 0x5E2B, 0x5FD7, 0x601D, 0x6307,
357 0x652F, 0x5B5C, 0x65AF, 0x65BD, 0x65E8, 0x679D, 0x6B62, 0x6B7B,
358 0x6C0F, 0x7345, 0x7949, 0x79C1, 0x7CF8, 0x7D19, 0x7D2B, 0x80A2,
359 0x8102, 0x81F3, 0x8996, 0x8A5E, 0x8A69, 0x8A66, 0x8A8C, 0x8AEE,
360 0x8CC7, 0x8CDC, 0x96CC, 0x98FC, 0x6B6F, 0x4E8B, 0x4F3C, 0x4F8D,
361 0x5150, 0x5B57, 0x5BFA, 0x6148, 0x6301, 0x6642},
362 { /* category 28 */
363 0x6B21, 0x6ECB, 0x6CBB, 0x723E, 0x74BD, 0x75D4, 0x78C1, 0x793A,
364 0x800C, 0x8033, 0x81EA, 0x8494, 0x8F9E, 0x6C50, 0x9E7F, 0x5F0F,
365 0x8B58, 0x9D2B, 0x7AFA, 0x8EF8, 0x5B8D, 0x96EB, 0x4E03, 0x53F1,
366 0x57F7, 0x5931, 0x5AC9, 0x5BA4, 0x6089, 0x6E7F, 0x6F06, 0x75BE,
367 0x8CEA, 0x5B9F, 0x8500, 0x7BE0, 0x5072, 0x67F4, 0x829D, 0x5C61,
368 0x854A, 0x7E1E, 0x820E, 0x5199, 0x5C04, 0x6368, 0x8D66, 0x659C,
369 0x716E, 0x793E, 0x7D17, 0x8005, 0x8B1D, 0x8ECA, 0x906E, 0x86C7,
370 0x90AA, 0x501F, 0x52FA, 0x5C3A, 0x6753, 0x707C, 0x7235, 0x914C,
371 0x91C8, 0x932B, 0x82E5, 0x5BC2, 0x5F31, 0x60F9, 0x4E3B, 0x53D6,
372 0x5B88, 0x624B, 0x6731, 0x6B8A, 0x72E9, 0x73E0, 0x7A2E, 0x816B,
373 0x8DA3, 0x9152, 0x9996, 0x5112, 0x53D7, 0x546A, 0x5BFF, 0x6388,
374 0x6A39, 0x7DAC, 0x9700, 0x56DA, 0x53CE, 0x5468},
375 { /* category 29 */
376 0x5B97, 0x5C31, 0x5DDE, 0x4FEE, 0x6101, 0x62FE, 0x6D32, 0x79C0,
377 0x79CB, 0x7D42, 0x7E4D, 0x7FD2, 0x81ED, 0x821F, 0x8490, 0x8846,
378 0x8972, 0x8B90, 0x8E74, 0x8F2F, 0x9031, 0x914B, 0x916C, 0x96C6,
379 0x919C, 0x4EC0, 0x4F4F, 0x5145, 0x5341, 0x5F93, 0x620E, 0x67D4,
380 0x6C41, 0x6E0B, 0x7363, 0x7E26, 0x91CD, 0x9283, 0x53D4, 0x5919,
381 0x5BBF, 0x6DD1, 0x795D, 0x7E2E, 0x7C9B, 0x587E, 0x719F, 0x51FA,
382 0x8853, 0x8FF0, 0x4FCA, 0x5CFB, 0x6625, 0x77AC, 0x7AE3, 0x821C,
383 0x99FF, 0x51C6, 0x5FAA, 0x65EC, 0x696F, 0x6B89, 0x6DF3, 0x6E96,
384 0x6F64, 0x76FE, 0x7D14, 0x5DE1, 0x9075, 0x9187, 0x9806, 0x51E6,
385 0x521D, 0x6240, 0x6691, 0x66D9, 0x6E1A, 0x5EB6, 0x7DD2, 0x7F72,
386 0x66F8, 0x85AF, 0x85F7, 0x8AF8, 0x52A9, 0x53D9, 0x5973, 0x5E8F,
387 0x5F90, 0x6055, 0x92E4, 0x9664, 0x50B7, 0x511F},
388 { /* category 30 */
389 0x52DD, 0x5320, 0x5347, 0x53EC, 0x54E8, 0x5546, 0x5531, 0x5617,
390 0x5968, 0x59BE, 0x5A3C, 0x5BB5, 0x5C06, 0x5C0F, 0x5C11, 0x5C1A,
391 0x5E84, 0x5E8A, 0x5EE0, 0x5F70, 0x627F, 0x6284, 0x62DB, 0x638C,
392 0x6377, 0x6607, 0x660C, 0x662D, 0x6676, 0x677E, 0x68A2, 0x6A1F,
393 0x6A35, 0x6CBC, 0x6D88, 0x6E09, 0x6E58, 0x713C, 0x7126, 0x7167,
394 0x75C7, 0x7701, 0x785D, 0x7901, 0x7965, 0x79F0, 0x7AE0, 0x7B11,
395 0x7CA7, 0x7D39, 0x8096, 0x83D6, 0x848B, 0x8549, 0x885D, 0x88F3,
396 0x8A1F, 0x8A3C, 0x8A54, 0x8A73, 0x8C61, 0x8CDE, 0x91A4, 0x9266,
397 0x937E, 0x9418, 0x969C, 0x9798, 0x4E0A, 0x4E08, 0x4E1E, 0x4E57,
398 0x5197, 0x5270, 0x57CE, 0x5834, 0x58CC, 0x5B22, 0x5E38, 0x60C5,
399 0x64FE, 0x6761, 0x6756, 0x6D44, 0x72B6, 0x7573, 0x7A63, 0x84B8,
400 0x8B72, 0x91B8, 0x9320, 0x5631, 0x57F4, 0x98FE},
401 { /* category 31 */
402 0x62ED, 0x690D, 0x6B96, 0x71ED, 0x7E54, 0x8077, 0x8272, 0x89E6,
403 0x98DF, 0x8755, 0x8FB1, 0x5C3B, 0x4F38, 0x4FE1, 0x4FB5, 0x5507,
404 0x5A20, 0x5BDD, 0x5BE9, 0x5FC3, 0x614E, 0x632F, 0x65B0, 0x664B,
405 0x68EE, 0x699B, 0x6D78, 0x6DF1, 0x7533, 0x75B9, 0x771F, 0x795E,
406 0x79E6, 0x7D33, 0x81E3, 0x82AF, 0x85AA, 0x89AA, 0x8A3A, 0x8EAB,
407 0x8F9B, 0x9032, 0x91DD, 0x9707, 0x4EBA, 0x4EC1, 0x5203, 0x5875,
408 0x58EC, 0x5C0B, 0x751A, 0x5C3D, 0x814E, 0x8A0A, 0x8FC5, 0x9663,
409 0x976D, 0x7B25, 0x8ACF, 0x9808, 0x9162, 0x56F3, 0x53A8, 0x9017,
410 0x5439, 0x5782, 0x5E25, 0x63A8, 0x6C34, 0x708A, 0x7761, 0x7C8B,
411 0x7FE0, 0x8870, 0x9042, 0x9154, 0x9310, 0x9318, 0x968F, 0x745E,
412 0x9AC4, 0x5D07, 0x5D69, 0x6570, 0x67A2, 0x8DA8, 0x96DB, 0x636E,
413 0x6749, 0x6919, 0x83C5, 0x9817, 0x96C0, 0x88FE},
414 { /* category 32 */
415 0x6F84, 0x647A, 0x5BF8, 0x4E16, 0x702C, 0x755D, 0x662F, 0x51C4,
416 0x5236, 0x52E2, 0x59D3, 0x5F81, 0x6027, 0x6210, 0x653F, 0x6574,
417 0x661F, 0x6674, 0x68F2, 0x6816, 0x6B63, 0x6E05, 0x7272, 0x751F,
418 0x76DB, 0x7CBE, 0x8056, 0x58F0, 0x88FD, 0x897F, 0x8AA0, 0x8A93,
419 0x8ACB, 0x901D, 0x9192, 0x9752, 0x9759, 0x6589, 0x7A0E, 0x8106,
420 0x96BB, 0x5E2D, 0x60DC, 0x621A, 0x65A5, 0x6614, 0x6790, 0x77F3,
421 0x7A4D, 0x7C4D, 0x7E3E, 0x810A, 0x8CAC, 0x8D64, 0x8DE1, 0x8E5F,
422 0x78A9, 0x5207, 0x62D9, 0x63A5, 0x6442, 0x6298, 0x8A2D, 0x7A83,
423 0x7BC0, 0x8AAC, 0x96EA, 0x7D76, 0x820C, 0x8749, 0x4ED9, 0x5148,
424 0x5343, 0x5360, 0x5BA3, 0x5C02, 0x5C16, 0x5DDD, 0x6226, 0x6247,
425 0x64B0, 0x6813, 0x6834, 0x6CC9, 0x6D45, 0x6D17, 0x67D3, 0x6F5C,
426 0x714E, 0x717D, 0x65CB, 0x7A7F, 0x7BAD, 0x7DDA},
427 { /* category 33 */
428 0x7E4A, 0x7FA8, 0x817A, 0x821B, 0x8239, 0x85A6, 0x8A6E, 0x8CCE,
429 0x8DF5, 0x9078, 0x9077, 0x92AD, 0x9291, 0x9583, 0x9BAE, 0x524D,
430 0x5584, 0x6F38, 0x7136, 0x5168, 0x7985, 0x7E55, 0x81B3, 0x7CCE,
431 0x564C, 0x5851, 0x5CA8, 0x63AA, 0x66FE, 0x66FD, 0x695A, 0x72D9,
432 0x758F, 0x758E, 0x790E, 0x7956, 0x79DF, 0x7C97, 0x7D20, 0x7D44,
433 0x8607, 0x8A34, 0x963B, 0x9061, 0x9F20, 0x50E7, 0x5275, 0x53CC,
434 0x53E2, 0x5009, 0x55AA, 0x58EE, 0x594F, 0x723D, 0x5B8B, 0x5C64,
435 0x531D, 0x60E3, 0x60F3, 0x635C, 0x6383, 0x633F, 0x63BB, 0x64CD,
436 0x65E9, 0x66F9, 0x5DE3, 0x69CD, 0x69FD, 0x6F15, 0x71E5, 0x4E89,
437 0x75E9, 0x76F8, 0x7A93, 0x7CDF, 0x7DCF, 0x7D9C, 0x8061, 0x8349,
438 0x8358, 0x846C, 0x84BC, 0x85FB, 0x88C5, 0x8D70, 0x9001, 0x906D,
439 0x9397, 0x971C, 0x9A12, 0x50CF, 0x5897, 0x618E},
440 { /* category 34 */
441 0x81D3, 0x8535, 0x8D08, 0x9020, 0x4FC3, 0x5074, 0x5247, 0x5373,
442 0x606F, 0x6349, 0x675F, 0x6E2C, 0x8DB3, 0x901F, 0x4FD7, 0x5C5E,
443 0x8CCA, 0x65CF, 0x7D9A, 0x5352, 0x8896, 0x5176, 0x63C3, 0x5B58,
444 0x5B6B, 0x5C0A, 0x640D, 0x6751, 0x905C, 0x4ED6, 0x591A, 0x592A,
445 0x6C70, 0x8A51, 0x553E, 0x5815, 0x59A5, 0x60F0, 0x6253, 0x67C1,
446 0x8235, 0x6955, 0x9640, 0x99C4, 0x9A28, 0x4F53, 0x5806, 0x5BFE,
447 0x8010, 0x5CB1, 0x5E2F, 0x5F85, 0x6020, 0x614B, 0x6234, 0x66FF,
448 0x6CF0, 0x6EDE, 0x80CE, 0x817F, 0x82D4, 0x888B, 0x8CB8, 0x9000,
449 0x902E, 0x968A, 0x9EDB, 0x9BDB, 0x4EE3, 0x53F0, 0x5927, 0x7B2C,
450 0x918D, 0x984C, 0x9DF9, 0x6EDD, 0x7027, 0x5353, 0x5544, 0x5B85,
451 0x6258, 0x629E, 0x62D3, 0x6CA2, 0x6FEF, 0x7422, 0x8A17, 0x9438,
452 0x6FC1, 0x8AFE, 0x8338, 0x51E7, 0x86F8, 0x53EA},
453 { /* category 35 */
454 0x53E9, 0x4F46, 0x9054, 0x8FB0, 0x596A, 0x8131, 0x5DFD, 0x7AEA,
455 0x8FBF, 0x68DA, 0x8C37, 0x72F8, 0x9C48, 0x6A3D, 0x8AB0, 0x4E39,
456 0x5358, 0x5606, 0x5766, 0x62C5, 0x63A2, 0x65E6, 0x6B4E, 0x6DE1,
457 0x6E5B, 0x70AD, 0x77ED, 0x7AEF, 0x7BAA, 0x7DBB, 0x803D, 0x80C6,
458 0x86CB, 0x8A95, 0x935B, 0x56E3, 0x58C7, 0x5F3E, 0x65AD, 0x6696,
459 0x6A80, 0x6BB5, 0x7537, 0x8AC7, 0x5024, 0x77E5, 0x5730, 0x5F1B,
460 0x6065, 0x667A, 0x6C60, 0x75F4, 0x7A1A, 0x7F6E, 0x81F4, 0x8718,
461 0x9045, 0x99B3, 0x7BC9, 0x755C, 0x7AF9, 0x7B51, 0x84C4, 0x9010,
462 0x79E9, 0x7A92, 0x8336, 0x5AE1, 0x7740, 0x4E2D, 0x4EF2, 0x5B99,
463 0x5FE0, 0x62BD, 0x663C, 0x67F1, 0x6CE8, 0x866B, 0x8877, 0x8A3B,
464 0x914E, 0x92F3, 0x99D0, 0x6A17, 0x7026, 0x732A, 0x82E7, 0x8457,
465 0x8CAF, 0x4E01, 0x5146, 0x51CB, 0x558B, 0x5BF5},
466 { /* category 36 */
467 0x5E16, 0x5E33, 0x5E81, 0x5F14, 0x5F35, 0x5F6B, 0x5FB4, 0x61F2,
468 0x6311, 0x66A2, 0x671D, 0x6F6E, 0x7252, 0x753A, 0x773A, 0x8074,
469 0x8139, 0x8178, 0x8776, 0x8ABF, 0x8ADC, 0x8D85, 0x8DF3, 0x929A,
470 0x9577, 0x9802, 0x9CE5, 0x52C5, 0x6357, 0x76F4, 0x6715, 0x6C88,
471 0x73CD, 0x8CC3, 0x93AE, 0x9673, 0x6D25, 0x589C, 0x690E, 0x69CC,
472 0x8FFD, 0x939A, 0x75DB, 0x901A, 0x585A, 0x6802, 0x63B4, 0x69FB,
473 0x4F43, 0x6F2C, 0x67D8, 0x8FBB, 0x8526, 0x7DB4, 0x9354, 0x693F,
474 0x6F70, 0x576A, 0x58F7, 0x5B2C, 0x7D2C, 0x722A, 0x540A, 0x91E3,
475 0x9DB4, 0x4EAD, 0x4F4E, 0x505C, 0x5075, 0x5243, 0x8C9E, 0x5448,
476 0x5824, 0x5B9A, 0x5E1D, 0x5E95, 0x5EAD, 0x5EF7, 0x5F1F, 0x608C,
477 0x62B5, 0x633A, 0x63D0, 0x68AF, 0x6C40, 0x7887, 0x798E, 0x7A0B,
478 0x7DE0, 0x8247, 0x8A02, 0x8AE6, 0x8E44, 0x9013},
479 { /* category 37 */
480 0x90B8, 0x912D, 0x91D8, 0x9F0E, 0x6CE5, 0x6458, 0x64E2, 0x6575,
481 0x6EF4, 0x7684, 0x7B1B, 0x9069, 0x93D1, 0x6EBA, 0x54F2, 0x5FB9,
482 0x64A4, 0x8F4D, 0x8FED, 0x9244, 0x5178, 0x586B, 0x5929, 0x5C55,
483 0x5E97, 0x6DFB, 0x7E8F, 0x751C, 0x8CBC, 0x8EE2, 0x985B, 0x70B9,
484 0x4F1D, 0x6BBF, 0x6FB1, 0x7530, 0x96FB, 0x514E, 0x5410, 0x5835,
485 0x5857, 0x59AC, 0x5C60, 0x5F92, 0x6597, 0x675C, 0x6E21, 0x767B,
486 0x83DF, 0x8CED, 0x9014, 0x90FD, 0x934D, 0x7825, 0x783A, 0x52AA,
487 0x5EA6, 0x571F, 0x5974, 0x6012, 0x5012, 0x515A, 0x51AC, 0x51CD,
488 0x5200, 0x5510, 0x5854, 0x5858, 0x5957, 0x5B95, 0x5CF6, 0x5D8B,
489 0x60BC, 0x6295, 0x642D, 0x6771, 0x6843, 0x68BC, 0x68DF, 0x76D7,
490 0x6DD8, 0x6E6F, 0x6D9B, 0x706F, 0x71C8, 0x5F53, 0x75D8, 0x7977,
491 0x7B49, 0x7B54, 0x7B52, 0x7CD6, 0x7D71, 0x5230},
492 { /* category 38 */
493 0x8463, 0x8569, 0x85E4, 0x8A0E, 0x8B04, 0x8C46, 0x8E0F, 0x9003,
494 0x900F, 0x9419, 0x9676, 0x982D, 0x9A30, 0x95D8, 0x50CD, 0x52D5,
495 0x540C, 0x5802, 0x5C0E, 0x61A7, 0x649E, 0x6D1E, 0x77B3, 0x7AE5,
496 0x80F4, 0x8404, 0x9053, 0x9285, 0x5CE0, 0x9D07, 0x533F, 0x5F97,
497 0x5FB3, 0x6D9C, 0x7279, 0x7763, 0x79BF, 0x7BE4, 0x6BD2, 0x72EC,
498 0x8AAD, 0x6803, 0x6A61, 0x51F8, 0x7A81, 0x6934, 0x5C4A, 0x9CF6,
499 0x82EB, 0x5BC5, 0x9149, 0x701E, 0x5678, 0x5C6F, 0x60C7, 0x6566,
500 0x6C8C, 0x8C5A, 0x9041, 0x9813, 0x5451, 0x66C7, 0x920D, 0x5948,
501 0x90A3, 0x5185, 0x4E4D, 0x51EA, 0x8599, 0x8B0E, 0x7058, 0x637A,
502 0x934B, 0x6962, 0x99B4, 0x7E04, 0x7577, 0x5357, 0x6960, 0x8EDF,
503 0x96E3, 0x6C5D, 0x4E8C, 0x5C3C, 0x5F10, 0x8FE9, 0x5302, 0x8CD1,
504 0x8089, 0x8679, 0x5EFF, 0x65E5, 0x4E73, 0x5165},
505 { /* category 39 */
506 0x5982, 0x5C3F, 0x97EE, 0x4EFB, 0x598A, 0x5FCD, 0x8A8D, 0x6FE1,
507 0x79B0, 0x7962, 0x5BE7, 0x8471, 0x732B, 0x71B1, 0x5E74, 0x5FF5,
508 0x637B, 0x649A, 0x71C3, 0x7C98, 0x4E43, 0x5EFC, 0x4E4B, 0x57DC,
509 0x56A2, 0x60A9, 0x6FC3, 0x7D0D, 0x80FD, 0x8133, 0x81BF, 0x8FB2,
510 0x8997, 0x86A4, 0x5DF4, 0x628A, 0x64AD, 0x8987, 0x6777, 0x6CE2,
511 0x6D3E, 0x7436, 0x7834, 0x5A46, 0x7F75, 0x82AD, 0x99AC, 0x4FF3,
512 0x5EC3, 0x62DD, 0x6392, 0x6557, 0x676F, 0x76C3, 0x724C, 0x80CC,
513 0x80BA, 0x8F29, 0x914D, 0x500D, 0x57F9, 0x5A92, 0x6885, 0x6973,
514 0x7164, 0x72FD, 0x8CB7, 0x58F2, 0x8CE0, 0x966A, 0x9019, 0x877F,
515 0x79E4, 0x77E7, 0x8429, 0x4F2F, 0x5265, 0x535A, 0x62CD, 0x67CF,
516 0x6CCA, 0x767D, 0x7B94, 0x7C95, 0x8236, 0x8584, 0x8FEB, 0x66DD,
517 0x6F20, 0x7206, 0x7E1B, 0x83AB, 0x99C1, 0x9EA6},
518 { /* category 40 */
519 0x51FD, 0x7BB1, 0x7872, 0x7BB8, 0x8087, 0x7B48, 0x6AE8, 0x5E61,
520 0x808C, 0x7551, 0x7560, 0x516B, 0x9262, 0x6E8C, 0x767A, 0x9197,
521 0x9AEA, 0x4F10, 0x7F70, 0x629C, 0x7B4F, 0x95A5, 0x9CE9, 0x567A,
522 0x5859, 0x86E4, 0x96BC, 0x4F34, 0x5224, 0x534A, 0x53CD, 0x53DB,
523 0x5E06, 0x642C, 0x6591, 0x677F, 0x6C3E, 0x6C4E, 0x7248, 0x72AF,
524 0x73ED, 0x7554, 0x7E41, 0x822C, 0x85E9, 0x8CA9, 0x7BC4, 0x91C6,
525 0x7169, 0x9812, 0x98EF, 0x633D, 0x6669, 0x756A, 0x76E4, 0x78D0,
526 0x8543, 0x86EE, 0x532A, 0x5351, 0x5426, 0x5983, 0x5E87, 0x5F7C,
527 0x60B2, 0x6249, 0x6279, 0x62AB, 0x6590, 0x6BD4, 0x6CCC, 0x75B2,
528 0x76AE, 0x7891, 0x79D8, 0x7DCB, 0x7F77, 0x80A5, 0x88AB, 0x8AB9,
529 0x8CBB, 0x907F, 0x975E, 0x98DB, 0x6A0B, 0x7C38, 0x5099, 0x5C3E,
530 0x5FAE, 0x6787, 0x6BD8, 0x7435, 0x7709, 0x7F8E},
531 { /* category 41 */
532 0x9F3B, 0x67CA, 0x7A17, 0x5339, 0x758B, 0x9AED, 0x5F66, 0x819D,
533 0x83F1, 0x8098, 0x5F3C, 0x5FC5, 0x7562, 0x7B46, 0x903C, 0x6867,
534 0x59EB, 0x5A9B, 0x7D10, 0x767E, 0x8B2C, 0x4FF5, 0x5F6A, 0x6A19,
535 0x6C37, 0x6F02, 0x74E2, 0x7968, 0x8868, 0x8A55, 0x8C79, 0x5EDF,
536 0x63CF, 0x75C5, 0x79D2, 0x82D7, 0x9328, 0x92F2, 0x849C, 0x86ED,
537 0x9C2D, 0x54C1, 0x5F6C, 0x658C, 0x6D5C, 0x7015, 0x8CA7, 0x8CD3,
538 0x983B, 0x654F, 0x74F6, 0x4E0D, 0x4ED8, 0x57E0, 0x592B, 0x5A66,
539 0x5BCC, 0x51A8, 0x5E03, 0x5E9C, 0x6016, 0x6276, 0x6577, 0x65A7,
540 0x666E, 0x6D6E, 0x7236, 0x7B26, 0x8150, 0x819A, 0x8299, 0x8B5C,
541 0x8CA0, 0x8CE6, 0x8D74, 0x961C, 0x9644, 0x4FAE, 0x64AB, 0x6B66,
542 0x821E, 0x8461, 0x856A, 0x90E8, 0x5C01, 0x6953, 0x98A8, 0x847A,
543 0x8557, 0x4F0F, 0x526F, 0x5FA9, 0x5E45, 0x670D},
544 { /* category 42 */
545 0x798F, 0x8179, 0x8907, 0x8986, 0x6DF5, 0x5F17, 0x6255, 0x6CB8,
546 0x4ECF, 0x7269, 0x9B92, 0x5206, 0x543B, 0x5674, 0x58B3, 0x61A4,
547 0x626E, 0x711A, 0x596E, 0x7C89, 0x7CDE, 0x7D1B, 0x96F0, 0x6587,
548 0x805E, 0x4E19, 0x4F75, 0x5175, 0x5840, 0x5E63, 0x5E73, 0x5F0A,
549 0x67C4, 0x4E26, 0x853D, 0x9589, 0x965B, 0x7C73, 0x9801, 0x50FB,
550 0x58C1, 0x7656, 0x78A7, 0x5225, 0x77A5, 0x8511, 0x7B86, 0x504F,
551 0x5909, 0x7247, 0x7BC7, 0x7DE8, 0x8FBA, 0x8FD4, 0x904D, 0x4FBF,
552 0x52C9, 0x5A29, 0x5F01, 0x97AD, 0x4FDD, 0x8217, 0x92EA, 0x5703,
553 0x6355, 0x6B69, 0x752B, 0x88DC, 0x8F14, 0x7A42, 0x52DF, 0x5893,
554 0x6155, 0x620A, 0x66AE, 0x6BCD, 0x7C3F, 0x83E9, 0x5023, 0x4FF8,
555 0x5305, 0x5446, 0x5831, 0x5949, 0x5B9D, 0x5CF0, 0x5CEF, 0x5D29,
556 0x5E96, 0x62B1, 0x6367, 0x653E, 0x65B9, 0x670B},
557 { /* category 43 */
558 0x6CD5, 0x6CE1, 0x70F9, 0x7832, 0x7E2B, 0x80DE, 0x82B3, 0x840C,
559 0x84EC, 0x8702, 0x8912, 0x8A2A, 0x8C4A, 0x90A6, 0x92D2, 0x98FD,
560 0x9CF3, 0x9D6C, 0x4E4F, 0x4EA1, 0x508D, 0x5256, 0x574A, 0x59A8,
561 0x5E3D, 0x5FD8, 0x5FD9, 0x623F, 0x66B4, 0x671B, 0x67D0, 0x68D2,
562 0x5192, 0x7D21, 0x80AA, 0x81A8, 0x8B00, 0x8C8C, 0x8CBF, 0x927E,
563 0x9632, 0x5420, 0x982C, 0x5317, 0x50D5, 0x535C, 0x58A8, 0x64B2,
564 0x6734, 0x7267, 0x7766, 0x7A46, 0x91E6, 0x52C3, 0x6CA1, 0x6B86,
565 0x5800, 0x5E4C, 0x5954, 0x672C, 0x7FFB, 0x51E1, 0x76C6, 0x6469,
566 0x78E8, 0x9B54, 0x9EBB, 0x57CB, 0x59B9, 0x6627, 0x679A, 0x6BCE,
567 0x54E9, 0x69D9, 0x5E55, 0x819C, 0x6795, 0x9BAA, 0x67FE, 0x9C52,
568 0x685D, 0x4EA6, 0x4FE3, 0x53C8, 0x62B9, 0x672B, 0x6CAB, 0x8FC4,
569 0x4FAD, 0x7E6D, 0x9EBF, 0x4E07, 0x6162, 0x6E80},
570 { /* category 44 */
571 0x6F2B, 0x8513, 0x5473, 0x672A, 0x9B45, 0x5DF3, 0x7B95, 0x5CAC,
572 0x5BC6, 0x871C, 0x6E4A, 0x84D1, 0x7A14, 0x8108, 0x5999, 0x7C8D,
573 0x6C11, 0x7720, 0x52D9, 0x5922, 0x7121, 0x725F, 0x77DB, 0x9727,
574 0x9D61, 0x690B, 0x5A7F, 0x5A18, 0x51A5, 0x540D, 0x547D, 0x660E,
575 0x76DF, 0x8FF7, 0x9298, 0x9CF4, 0x59EA, 0x725D, 0x6EC5, 0x514D,
576 0x68C9, 0x7DBF, 0x7DEC, 0x9762, 0x9EBA, 0x6478, 0x6A21, 0x8302,
577 0x5984, 0x5B5F, 0x6BDB, 0x731B, 0x76F2, 0x7DB2, 0x8017, 0x8499,
578 0x5132, 0x6728, 0x9ED9, 0x76EE, 0x6762, 0x52FF, 0x9905, 0x5C24,
579 0x623B, 0x7C7E, 0x8CB0, 0x554F, 0x60B6, 0x7D0B, 0x9580, 0x5301,
580 0x4E5F, 0x51B6, 0x591C, 0x723A, 0x8036, 0x91CE, 0x5F25, 0x77E2,
581 0x5384, 0x5F79, 0x7D04, 0x85AC, 0x8A33, 0x8E8D, 0x9756, 0x67F3,
582 0x85AE, 0x9453, 0x6109, 0x6108, 0x6CB9, 0x7652},
583 { /* category 45 */
584 0x8AED, 0x8F38, 0x552F, 0x4F51, 0x512A, 0x52C7, 0x53CB, 0x5BA5,
585 0x5E7D, 0x60A0, 0x6182, 0x63D6, 0x6709, 0x67DA, 0x6E67, 0x6D8C,
586 0x7336, 0x7337, 0x7531, 0x7950, 0x88D5, 0x8A98, 0x904A, 0x9091,
587 0x90F5, 0x96C4, 0x878D, 0x5915, 0x4E88, 0x4F59, 0x4E0E, 0x8A89,
588 0x8F3F, 0x9810, 0x50AD, 0x5E7C, 0x5996, 0x5BB9, 0x5EB8, 0x63DA,
589 0x63FA, 0x64C1, 0x66DC, 0x694A, 0x69D8, 0x6D0B, 0x6EB6, 0x7194,
590 0x7528, 0x7AAF, 0x7F8A, 0x8000, 0x8449, 0x84C9, 0x8981, 0x8B21,
591 0x8E0A, 0x9065, 0x967D, 0x990A, 0x617E, 0x6291, 0x6B32, 0x6C83,
592 0x6D74, 0x7FCC, 0x7FFC, 0x6DC0, 0x7F85, 0x87BA, 0x88F8, 0x6765,
593 0x83B1, 0x983C, 0x96F7, 0x6D1B, 0x7D61, 0x843D, 0x916A, 0x4E71,
594 0x5375, 0x5D50, 0x6B04, 0x6FEB, 0x85CD, 0x862D, 0x89A7, 0x5229,
595 0x540F, 0x5C65, 0x674E, 0x68A8, 0x7406, 0x7483},
596 { /* category 46 */
597 0x75E2, 0x88CF, 0x88E1, 0x91CC, 0x96E2, 0x9678, 0x5F8B, 0x7387,
598 0x7ACB, 0x844E, 0x63A0, 0x7565, 0x5289, 0x6D41, 0x6E9C, 0x7409,
599 0x7559, 0x786B, 0x7C92, 0x9686, 0x7ADC, 0x9F8D, 0x4FB6, 0x616E,
600 0x65C5, 0x865C, 0x4E86, 0x4EAE, 0x50DA, 0x4E21, 0x51CC, 0x5BEE,
601 0x6599, 0x6881, 0x6DBC, 0x731F, 0x7642, 0x77AD, 0x7A1C, 0x7CE7,
602 0x826F, 0x8AD2, 0x907C, 0x91CF, 0x9675, 0x9818, 0x529B, 0x7DD1,
603 0x502B, 0x5398, 0x6797, 0x6DCB, 0x71D0, 0x7433, 0x81E8, 0x8F2A,
604 0x96A3, 0x9C57, 0x9E9F, 0x7460, 0x5841, 0x6D99, 0x7D2F, 0x985E,
605 0x4EE4, 0x4F36, 0x4F8B, 0x51B7, 0x52B1, 0x5DBA, 0x601C, 0x73B2,
606 0x793C, 0x82D3, 0x9234, 0x96B7, 0x96F6, 0x970A, 0x9E97, 0x9F62,
607 0x66A6, 0x6B74, 0x5217, 0x52A3, 0x70C8, 0x88C2, 0x5EC9, 0x604B,
608 0x6190, 0x6F23, 0x7149, 0x7C3E, 0x7DF4, 0x806F},
609 { /* category 47 */
610 0x84EE, 0x9023, 0x932C, 0x5442, 0x9B6F, 0x6AD3, 0x7089, 0x8CC2,
611 0x8DEF, 0x9732, 0x52B4, 0x5A41, 0x5ECA, 0x5F04, 0x6717, 0x697C,
612 0x6994, 0x6D6A, 0x6F0F, 0x7262, 0x72FC, 0x7BED, 0x8001, 0x807E,
613 0x874B, 0x90CE, 0x516D, 0x9E93, 0x7984, 0x808B, 0x9332, 0x8AD6,
614 0x502D, 0x548C, 0x8A71, 0x6B6A, 0x8CC4, 0x8107, 0x60D1, 0x67A0,
615 0x9DF2, 0x4E99, 0x4E98, 0x9C10, 0x8A6B, 0x85C1, 0x8568, 0x6900,
616 0x6E7E, 0x7897, 0x8155, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
617 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
618 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
619 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
620 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
621 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
622 { /* category 48 */
623 0x5F0C, 0x4E10, 0x4E15, 0x4E2A, 0x4E31, 0x4E36, 0x4E3C, 0x4E3F,
624 0x4E42, 0x4E56, 0x4E58, 0x4E82, 0x4E85, 0x8C6B, 0x4E8A, 0x8212,
625 0x5F0D, 0x4E8E, 0x4E9E, 0x4E9F, 0x4EA0, 0x4EA2, 0x4EB0, 0x4EB3,
626 0x4EB6, 0x4ECE, 0x4ECD, 0x4EC4, 0x4EC6, 0x4EC2, 0x4ED7, 0x4EDE,
627 0x4EED, 0x4EDF, 0x4EF7, 0x4F09, 0x4F5A, 0x4F30, 0x4F5B, 0x4F5D,
628 0x4F57, 0x4F47, 0x4F76, 0x4F88, 0x4F8F, 0x4F98, 0x4F7B, 0x4F69,
629 0x4F70, 0x4F91, 0x4F6F, 0x4F86, 0x4F96, 0x5118, 0x4FD4, 0x4FDF,
630 0x4FCE, 0x4FD8, 0x4FDB, 0x4FD1, 0x4FDA, 0x4FD0, 0x4FE4, 0x4FE5,
631 0x501A, 0x5028, 0x5014, 0x502A, 0x5025, 0x5005, 0x4F1C, 0x4FF6,
632 0x5021, 0x5029, 0x502C, 0x4FFE, 0x4FEF, 0x5011, 0x5006, 0x5043,
633 0x5047, 0x6703, 0x5055, 0x5050, 0x5048, 0x505A, 0x5056, 0x506C,
634 0x5078, 0x5080, 0x509A, 0x5085, 0x50B4, 0x50B2},
635 { /* category 49 */
636 0x50C9, 0x50CA, 0x50B3, 0x50C2, 0x50D6, 0x50DE, 0x50E5, 0x50ED,
637 0x50E3, 0x50EE, 0x50F9, 0x50F5, 0x5109, 0x5101, 0x5102, 0x5116,
638 0x5115, 0x5114, 0x511A, 0x5121, 0x513A, 0x5137, 0x513C, 0x513B,
639 0x513F, 0x5140, 0x5152, 0x514C, 0x5154, 0x5162, 0x7AF8, 0x5169,
640 0x516A, 0x516E, 0x5180, 0x5182, 0x56D8, 0x518C, 0x5189, 0x518F,
641 0x5191, 0x5193, 0x5195, 0x5196, 0x51A4, 0x51A6, 0x51A2, 0x51A9,
642 0x51AA, 0x51AB, 0x51B3, 0x51B1, 0x51B2, 0x51B0, 0x51B5, 0x51BD,
643 0x51C5, 0x51C9, 0x51DB, 0x51E0, 0x8655, 0x51E9, 0x51ED, 0x51F0,
644 0x51F5, 0x51FE, 0x5204, 0x520B, 0x5214, 0x520E, 0x5227, 0x522A,
645 0x522E, 0x5233, 0x5239, 0x524F, 0x5244, 0x524B, 0x524C, 0x525E,
646 0x5254, 0x526A, 0x5274, 0x5269, 0x5273, 0x527F, 0x527D, 0x528D,
647 0x5294, 0x5292, 0x5271, 0x5288, 0x5291, 0x8FA8},
648 { /* category 50 */
649 0x8FA7, 0x52AC, 0x52AD, 0x52BC, 0x52B5, 0x52C1, 0x52CD, 0x52D7,
650 0x52DE, 0x52E3, 0x52E6, 0x98ED, 0x52E0, 0x52F3, 0x52F5, 0x52F8,
651 0x52F9, 0x5306, 0x5308, 0x7538, 0x530D, 0x5310, 0x530F, 0x5315,
652 0x531A, 0x5323, 0x532F, 0x5331, 0x5333, 0x5338, 0x5340, 0x5346,
653 0x5345, 0x4E17, 0x5349, 0x534D, 0x51D6, 0x535E, 0x5369, 0x536E,
654 0x5918, 0x537B, 0x5377, 0x5382, 0x5396, 0x53A0, 0x53A6, 0x53A5,
655 0x53AE, 0x53B0, 0x53B6, 0x53C3, 0x7C12, 0x96D9, 0x53DF, 0x66FC,
656 0x71EE, 0x53EE, 0x53E8, 0x53ED, 0x53FA, 0x5401, 0x543D, 0x5440,
657 0x542C, 0x542D, 0x543C, 0x542E, 0x5436, 0x5429, 0x541D, 0x544E,
658 0x548F, 0x5475, 0x548E, 0x545F, 0x5471, 0x5477, 0x5470, 0x5492,
659 0x547B, 0x5480, 0x5476, 0x5484, 0x5490, 0x5486, 0x54C7, 0x54A2,
660 0x54B8, 0x54A5, 0x54AC, 0x54C4, 0x54C8, 0x54A8},
661 { /* category 51 */
662 0x54AB, 0x54C2, 0x54A4, 0x54BE, 0x54BC, 0x54D8, 0x54E5, 0x54E6,
663 0x550F, 0x5514, 0x54FD, 0x54EE, 0x54ED, 0x54FA, 0x54E2, 0x5539,
664 0x5540, 0x5563, 0x554C, 0x552E, 0x555C, 0x5545, 0x5556, 0x5557,
665 0x5538, 0x5533, 0x555D, 0x5599, 0x5580, 0x54AF, 0x558A, 0x559F,
666 0x557B, 0x557E, 0x5598, 0x559E, 0x55AE, 0x557C, 0x5583, 0x55A9,
667 0x5587, 0x55A8, 0x55DA, 0x55C5, 0x55DF, 0x55C4, 0x55DC, 0x55E4,
668 0x55D4, 0x5614, 0x55F7, 0x5616, 0x55FE, 0x55FD, 0x561B, 0x55F9,
669 0x564E, 0x5650, 0x71DF, 0x5634, 0x5636, 0x5632, 0x5638, 0x566B,
670 0x5664, 0x562F, 0x566C, 0x566A, 0x5686, 0x5680, 0x568A, 0x56A0,
671 0x5694, 0x568F, 0x56A5, 0x56AE, 0x56B6, 0x56B4, 0x56C2, 0x56BC,
672 0x56C1, 0x56C3, 0x56C0, 0x56C8, 0x56CE, 0x56D1, 0x56D3, 0x56D7,
673 0x56EE, 0x56F9, 0x5700, 0x56FF, 0x5704, 0x5709},
674 { /* category 52 */
675 0x5708, 0x570B, 0x570D, 0x5713, 0x5718, 0x5716, 0x55C7, 0x571C,
676 0x5726, 0x5737, 0x5738, 0x574E, 0x573B, 0x5740, 0x574F, 0x5769,
677 0x57C0, 0x5788, 0x5761, 0x577F, 0x5789, 0x5793, 0x57A0, 0x57B3,
678 0x57A4, 0x57AA, 0x57B0, 0x57C3, 0x57C6, 0x57D4, 0x57D2, 0x57D3,
679 0x580A, 0x57D6, 0x57E3, 0x580B, 0x5819, 0x581D, 0x5872, 0x5821,
680 0x5862, 0x584B, 0x5870, 0x6BC0, 0x5852, 0x583D, 0x5879, 0x5885,
681 0x58B9, 0x589F, 0x58AB, 0x58BA, 0x58DE, 0x58BB, 0x58B8, 0x58AE,
682 0x58C5, 0x58D3, 0x58D1, 0x58D7, 0x58D9, 0x58D8, 0x58E5, 0x58DC,
683 0x58E4, 0x58DF, 0x58EF, 0x58FA, 0x58F9, 0x58FB, 0x58FC, 0x58FD,
684 0x5902, 0x590A, 0x5910, 0x591B, 0x68A6, 0x5925, 0x592C, 0x592D,
685 0x5932, 0x5938, 0x593E, 0x7AD2, 0x5955, 0x5950, 0x594E, 0x595A,
686 0x5958, 0x5962, 0x5960, 0x5967, 0x596C, 0x5969},
687 { /* category 53 */
688 0x5978, 0x5981, 0x599D, 0x4F5E, 0x4FAB, 0x59A3, 0x59B2, 0x59C6,
689 0x59E8, 0x59DC, 0x598D, 0x59D9, 0x59DA, 0x5A25, 0x5A1F, 0x5A11,
690 0x5A1C, 0x5A09, 0x5A1A, 0x5A40, 0x5A6C, 0x5A49, 0x5A35, 0x5A36,
691 0x5A62, 0x5A6A, 0x5A9A, 0x5ABC, 0x5ABE, 0x5ACB, 0x5AC2, 0x5ABD,
692 0x5AE3, 0x5AD7, 0x5AE6, 0x5AE9, 0x5AD6, 0x5AFA, 0x5AFB, 0x5B0C,
693 0x5B0B, 0x5B16, 0x5B32, 0x5AD0, 0x5B2A, 0x5B36, 0x5B3E, 0x5B43,
694 0x5B45, 0x5B40, 0x5B51, 0x5B55, 0x5B5A, 0x5B5B, 0x5B65, 0x5B69,
695 0x5B70, 0x5B73, 0x5B75, 0x5B78, 0x6588, 0x5B7A, 0x5B80, 0x5B83,
696 0x5BA6, 0x5BB8, 0x5BC3, 0x5BC7, 0x5BC9, 0x5BD4, 0x5BD0, 0x5BE4,
697 0x5BE6, 0x5BE2, 0x5BDE, 0x5BE5, 0x5BEB, 0x5BF0, 0x5BF6, 0x5BF3,
698 0x5C05, 0x5C07, 0x5C08, 0x5C0D, 0x5C13, 0x5C20, 0x5C22, 0x5C28,
699 0x5C38, 0x5C39, 0x5C41, 0x5C46, 0x5C4E, 0x5C53},
700 { /* category 54 */
701 0x5C50, 0x5C4F, 0x5B71, 0x5C6C, 0x5C6E, 0x4E62, 0x5C76, 0x5C79,
702 0x5C8C, 0x5C91, 0x5C94, 0x599B, 0x5CAB, 0x5CBB, 0x5CB6, 0x5CBC,
703 0x5CB7, 0x5CC5, 0x5CBE, 0x5CC7, 0x5CD9, 0x5CE9, 0x5CFD, 0x5CFA,
704 0x5CED, 0x5D8C, 0x5CEA, 0x5D0B, 0x5D15, 0x5D17, 0x5D5C, 0x5D1F,
705 0x5D1B, 0x5D11, 0x5D14, 0x5D22, 0x5D1A, 0x5D19, 0x5D18, 0x5D4C,
706 0x5D52, 0x5D4E, 0x5D4B, 0x5D6C, 0x5D73, 0x5D76, 0x5D87, 0x5D84,
707 0x5D82, 0x5DA2, 0x5D9D, 0x5DAC, 0x5DAE, 0x5DBD, 0x5D90, 0x5DB7,
708 0x5DBC, 0x5DC9, 0x5DCD, 0x5DD3, 0x5DD2, 0x5DD6, 0x5DDB, 0x5DEB,
709 0x5DF2, 0x5DF5, 0x5E0B, 0x5E1A, 0x5E19, 0x5E11, 0x5E1B, 0x5E36,
710 0x5E37, 0x5E44, 0x5E43, 0x5E40, 0x5E4E, 0x5E57, 0x5E54, 0x5E5F,
711 0x5E62, 0x5E64, 0x5E47, 0x5E75, 0x5E76, 0x5E7A, 0x9EBC, 0x5E7F,
712 0x5EA0, 0x5EC1, 0x5EC2, 0x5EC8, 0x5ED0, 0x5ECF},
713 { /* category 55 */
714 0x5ED6, 0x5EE3, 0x5EDD, 0x5EDA, 0x5EDB, 0x5EE2, 0x5EE1, 0x5EE8,
715 0x5EE9, 0x5EEC, 0x5EF1, 0x5EF3, 0x5EF0, 0x5EF4, 0x5EF8, 0x5EFE,
716 0x5F03, 0x5F09, 0x5F5D, 0x5F5C, 0x5F0B, 0x5F11, 0x5F16, 0x5F29,
717 0x5F2D, 0x5F38, 0x5F41, 0x5F48, 0x5F4C, 0x5F4E, 0x5F2F, 0x5F51,
718 0x5F56, 0x5F57, 0x5F59, 0x5F61, 0x5F6D, 0x5F73, 0x5F77, 0x5F83,
719 0x5F82, 0x5F7F, 0x5F8A, 0x5F88, 0x5F91, 0x5F87, 0x5F9E, 0x5F99,
720 0x5F98, 0x5FA0, 0x5FA8, 0x5FAD, 0x5FBC, 0x5FD6, 0x5FFB, 0x5FE4,
721 0x5FF8, 0x5FF1, 0x5FDD, 0x60B3, 0x5FFF, 0x6021, 0x6060, 0x6019,
722 0x6010, 0x6029, 0x600E, 0x6031, 0x601B, 0x6015, 0x602B, 0x6026,
723 0x600F, 0x603A, 0x605A, 0x6041, 0x606A, 0x6077, 0x605F, 0x604A,
724 0x6046, 0x604D, 0x6063, 0x6043, 0x6064, 0x6042, 0x606C, 0x606B,
725 0x6059, 0x6081, 0x608D, 0x60E7, 0x6083, 0x609A},
726 { /* category 56 */
727 0x6084, 0x609B, 0x6096, 0x6097, 0x6092, 0x60A7, 0x608B, 0x60E1,
728 0x60B8, 0x60E0, 0x60D3, 0x60B4, 0x5FF0, 0x60BD, 0x60C6, 0x60B5,
729 0x60D8, 0x614D, 0x6115, 0x6106, 0x60F6, 0x60F7, 0x6100, 0x60F4,
730 0x60FA, 0x6103, 0x6121, 0x60FB, 0x60F1, 0x610D, 0x610E, 0x6147,
731 0x613E, 0x6128, 0x6127, 0x614A, 0x613F, 0x613C, 0x612C, 0x6134,
732 0x613D, 0x6142, 0x6144, 0x6173, 0x6177, 0x6158, 0x6159, 0x615A,
733 0x616B, 0x6174, 0x616F, 0x6165, 0x6171, 0x615F, 0x615D, 0x6153,
734 0x6175, 0x6199, 0x6196, 0x6187, 0x61AC, 0x6194, 0x619A, 0x618A,
735 0x6191, 0x61AB, 0x61AE, 0x61CC, 0x61CA, 0x61C9, 0x61F7, 0x61C8,
736 0x61C3, 0x61C6, 0x61BA, 0x61CB, 0x7F79, 0x61CD, 0x61E6, 0x61E3,
737 0x61F6, 0x61FA, 0x61F4, 0x61FF, 0x61FD, 0x61FC, 0x61FE, 0x6200,
738 0x6208, 0x6209, 0x620D, 0x620C, 0x6214, 0x621B},
739 { /* category 57 */
740 0x621E, 0x6221, 0x622A, 0x622E, 0x6230, 0x6232, 0x6233, 0x6241,
741 0x624E, 0x625E, 0x6263, 0x625B, 0x6260, 0x6268, 0x627C, 0x6282,
742 0x6289, 0x627E, 0x6292, 0x6293, 0x6296, 0x62D4, 0x6283, 0x6294,
743 0x62D7, 0x62D1, 0x62BB, 0x62CF, 0x62FF, 0x62C6, 0x64D4, 0x62C8,
744 0x62DC, 0x62CC, 0x62CA, 0x62C2, 0x62C7, 0x629B, 0x62C9, 0x630C,
745 0x62EE, 0x62F1, 0x6327, 0x6302, 0x6308, 0x62EF, 0x62F5, 0x6350,
746 0x633E, 0x634D, 0x641C, 0x634F, 0x6396, 0x638E, 0x6380, 0x63AB,
747 0x6376, 0x63A3, 0x638F, 0x6389, 0x639F, 0x63B5, 0x636B, 0x6369,
748 0x63BE, 0x63E9, 0x63C0, 0x63C6, 0x63E3, 0x63C9, 0x63D2, 0x63F6,
749 0x63C4, 0x6416, 0x6434, 0x6406, 0x6413, 0x6426, 0x6436, 0x651D,
750 0x6417, 0x6428, 0x640F, 0x6467, 0x646F, 0x6476, 0x644E, 0x652A,
751 0x6495, 0x6493, 0x64A5, 0x64A9, 0x6488, 0x64BC},
752 { /* category 58 */
753 0x64DA, 0x64D2, 0x64C5, 0x64C7, 0x64BB, 0x64D8, 0x64C2, 0x64F1,
754 0x64E7, 0x8209, 0x64E0, 0x64E1, 0x62AC, 0x64E3, 0x64EF, 0x652C,
755 0x64F6, 0x64F4, 0x64F2, 0x64FA, 0x6500, 0x64FD, 0x6518, 0x651C,
756 0x6505, 0x6524, 0x6523, 0x652B, 0x6534, 0x6535, 0x6537, 0x6536,
757 0x6538, 0x754B, 0x6548, 0x6556, 0x6555, 0x654D, 0x6558, 0x655E,
758 0x655D, 0x6572, 0x6578, 0x6582, 0x6583, 0x8B8A, 0x659B, 0x659F,
759 0x65AB, 0x65B7, 0x65C3, 0x65C6, 0x65C1, 0x65C4, 0x65CC, 0x65D2,
760 0x65DB, 0x65D9, 0x65E0, 0x65E1, 0x65F1, 0x6772, 0x660A, 0x6603,
761 0x65FB, 0x6773, 0x6635, 0x6636, 0x6634, 0x661C, 0x664F, 0x6644,
762 0x6649, 0x6641, 0x665E, 0x665D, 0x6664, 0x6667, 0x6668, 0x665F,
763 0x6662, 0x6670, 0x6683, 0x6688, 0x668E, 0x6689, 0x6684, 0x6698,
764 0x669D, 0x66C1, 0x66B9, 0x66C9, 0x66BE, 0x66BC},
765 { /* category 59 */
766 0x66C4, 0x66B8, 0x66D6, 0x66DA, 0x66E0, 0x663F, 0x66E6, 0x66E9,
767 0x66F0, 0x66F5, 0x66F7, 0x670F, 0x6716, 0x671E, 0x6726, 0x6727,
768 0x9738, 0x672E, 0x673F, 0x6736, 0x6741, 0x6738, 0x6737, 0x6746,
769 0x675E, 0x6760, 0x6759, 0x6763, 0x6764, 0x6789, 0x6770, 0x67A9,
770 0x677C, 0x676A, 0x678C, 0x678B, 0x67A6, 0x67A1, 0x6785, 0x67B7,
771 0x67EF, 0x67B4, 0x67EC, 0x67B3, 0x67E9, 0x67B8, 0x67E4, 0x67DE,
772 0x67DD, 0x67E2, 0x67EE, 0x67B9, 0x67CE, 0x67C6, 0x67E7, 0x6A9C,
773 0x681E, 0x6846, 0x6829, 0x6840, 0x684D, 0x6832, 0x684E, 0x68B3,
774 0x682B, 0x6859, 0x6863, 0x6877, 0x687F, 0x689F, 0x688F, 0x68AD,
775 0x6894, 0x689D, 0x689B, 0x6883, 0x6AAE, 0x68B9, 0x6874, 0x68B5,
776 0x68A0, 0x68BA, 0x690F, 0x688D, 0x687E, 0x6901, 0x68CA, 0x6908,
777 0x68D8, 0x6922, 0x6926, 0x68E1, 0x690C, 0x68CD},
778 { /* category 60 */
779 0x68D4, 0x68E7, 0x68D5, 0x6936, 0x6912, 0x6904, 0x68D7, 0x68E3,
780 0x6925, 0x68F9, 0x68E0, 0x68EF, 0x6928, 0x692A, 0x691A, 0x6923,
781 0x6921, 0x68C6, 0x6979, 0x6977, 0x695C, 0x6978, 0x696B, 0x6954,
782 0x697E, 0x696E, 0x6939, 0x6974, 0x693D, 0x6959, 0x6930, 0x6961,
783 0x695E, 0x695D, 0x6981, 0x696A, 0x69B2, 0x69AE, 0x69D0, 0x69BF,
784 0x69C1, 0x69D3, 0x69BE, 0x69CE, 0x5BE8, 0x69CA, 0x69DD, 0x69BB,
785 0x69C3, 0x69A7, 0x6A2E, 0x6991, 0x69A0, 0x699C, 0x6995, 0x69B4,
786 0x69DE, 0x69E8, 0x6A02, 0x6A1B, 0x69FF, 0x6B0A, 0x69F9, 0x69F2,
787 0x69E7, 0x6A05, 0x69B1, 0x6A1E, 0x69ED, 0x6A14, 0x69EB, 0x6A0A,
788 0x6A12, 0x6AC1, 0x6A23, 0x6A13, 0x6A44, 0x6A0C, 0x6A72, 0x6A36,
789 0x6A78, 0x6A47, 0x6A62, 0x6A59, 0x6A66, 0x6A48, 0x6A38, 0x6A22,
790 0x6A90, 0x6A8D, 0x6AA0, 0x6A84, 0x6AA2, 0x6AA3},
791 { /* category 61 */
792 0x6A97, 0x8617, 0x6ABB, 0x6AC3, 0x6AC2, 0x6AB8, 0x6AB3, 0x6AAC,
793 0x6ADE, 0x6AD1, 0x6ADF, 0x6AAA, 0x6ADA, 0x6AEA, 0x6AFB, 0x6B05,
794 0x8616, 0x6AFA, 0x6B12, 0x6B16, 0x9B31, 0x6B1F, 0x6B38, 0x6B37,
795 0x76DC, 0x6B39, 0x98EE, 0x6B47, 0x6B43, 0x6B49, 0x6B50, 0x6B59,
796 0x6B54, 0x6B5B, 0x6B5F, 0x6B61, 0x6B78, 0x6B79, 0x6B7F, 0x6B80,
797 0x6B84, 0x6B83, 0x6B8D, 0x6B98, 0x6B95, 0x6B9E, 0x6BA4, 0x6BAA,
798 0x6BAB, 0x6BAF, 0x6BB2, 0x6BB1, 0x6BB3, 0x6BB7, 0x6BBC, 0x6BC6,
799 0x6BCB, 0x6BD3, 0x6BDF, 0x6BEC, 0x6BEB, 0x6BF3, 0x6BEF, 0x9EBE,
800 0x6C08, 0x6C13, 0x6C14, 0x6C1B, 0x6C24, 0x6C23, 0x6C5E, 0x6C55,
801 0x6C62, 0x6C6A, 0x6C82, 0x6C8D, 0x6C9A, 0x6C81, 0x6C9B, 0x6C7E,
802 0x6C68, 0x6C73, 0x6C92, 0x6C90, 0x6CC4, 0x6CF1, 0x6CD3, 0x6CBD,
803 0x6CD7, 0x6CC5, 0x6CDD, 0x6CAE, 0x6CB1, 0x6CBE},
804 { /* category 62 */
805 0x6CBA, 0x6CDB, 0x6CEF, 0x6CD9, 0x6CEA, 0x6D1F, 0x884D, 0x6D36,
806 0x6D2B, 0x6D3D, 0x6D38, 0x6D19, 0x6D35, 0x6D33, 0x6D12, 0x6D0C,
807 0x6D63, 0x6D93, 0x6D64, 0x6D5A, 0x6D79, 0x6D59, 0x6D8E, 0x6D95,
808 0x6FE4, 0x6D85, 0x6DF9, 0x6E15, 0x6E0A, 0x6DB5, 0x6DC7, 0x6DE6,
809 0x6DB8, 0x6DC6, 0x6DEC, 0x6DDE, 0x6DCC, 0x6DE8, 0x6DD2, 0x6DC5,
810 0x6DFA, 0x6DD9, 0x6DE4, 0x6DD5, 0x6DEA, 0x6DEE, 0x6E2D, 0x6E6E,
811 0x6E2E, 0x6E19, 0x6E72, 0x6E5F, 0x6E3E, 0x6E23, 0x6E6B, 0x6E2B,
812 0x6E76, 0x6E4D, 0x6E1F, 0x6E43, 0x6E3A, 0x6E4E, 0x6E24, 0x6EFF,
813 0x6E1D, 0x6E38, 0x6E82, 0x6EAA, 0x6E98, 0x6EC9, 0x6EB7, 0x6ED3,
814 0x6EBD, 0x6EAF, 0x6EC4, 0x6EB2, 0x6ED4, 0x6ED5, 0x6E8F, 0x6EA5,
815 0x6EC2, 0x6E9F, 0x6F41, 0x6F11, 0x704C, 0x6EEC, 0x6EF8, 0x6EFE,
816 0x6F3F, 0x6EF2, 0x6F31, 0x6EEF, 0x6F32, 0x6ECC},
817 { /* category 63 */
818 0x6F3E, 0x6F13, 0x6EF7, 0x6F86, 0x6F7A, 0x6F78, 0x6F81, 0x6F80,
819 0x6F6F, 0x6F5B, 0x6FF3, 0x6F6D, 0x6F82, 0x6F7C, 0x6F58, 0x6F8E,
820 0x6F91, 0x6FC2, 0x6F66, 0x6FB3, 0x6FA3, 0x6FA1, 0x6FA4, 0x6FB9,
821 0x6FC6, 0x6FAA, 0x6FDF, 0x6FD5, 0x6FEC, 0x6FD4, 0x6FD8, 0x6FF1,
822 0x6FEE, 0x6FDB, 0x7009, 0x700B, 0x6FFA, 0x7011, 0x7001, 0x700F,
823 0x6FFE, 0x701B, 0x701A, 0x6F74, 0x701D, 0x7018, 0x701F, 0x7030,
824 0x703E, 0x7032, 0x7051, 0x7063, 0x7099, 0x7092, 0x70AF, 0x70F1,
825 0x70AC, 0x70B8, 0x70B3, 0x70AE, 0x70DF, 0x70CB, 0x70DD, 0x70D9,
826 0x7109, 0x70FD, 0x711C, 0x7119, 0x7165, 0x7155, 0x7188, 0x7166,
827 0x7162, 0x714C, 0x7156, 0x716C, 0x718F, 0x71FB, 0x7184, 0x7195,
828 0x71A8, 0x71AC, 0x71D7, 0x71B9, 0x71BE, 0x71D2, 0x71C9, 0x71D4,
829 0x71CE, 0x71E0, 0x71EC, 0x71E7, 0x71F5, 0x71FC},
830 { /* category 64 */
831 0x71F9, 0x71FF, 0x720D, 0x7210, 0x721B, 0x7228, 0x722D, 0x722C,
832 0x7230, 0x7232, 0x723B, 0x723C, 0x723F, 0x7240, 0x7246, 0x724B,
833 0x7258, 0x7274, 0x727E, 0x7282, 0x7281, 0x7287, 0x7292, 0x7296,
834 0x72A2, 0x72A7, 0x72B9, 0x72B2, 0x72C3, 0x72C6, 0x72C4, 0x72CE,
835 0x72D2, 0x72E2, 0x72E0, 0x72E1, 0x72F9, 0x72F7, 0x500F, 0x7317,
836 0x730A, 0x731C, 0x7316, 0x731D, 0x7334, 0x732F, 0x7329, 0x7325,
837 0x733E, 0x734E, 0x734F, 0x9ED8, 0x7357, 0x736A, 0x7368, 0x7370,
838 0x7378, 0x7375, 0x737B, 0x737A, 0x73C8, 0x73B3, 0x73CE, 0x73BB,
839 0x73C0, 0x73E5, 0x73EE, 0x73DE, 0x74A2, 0x7405, 0x746F, 0x7425,
840 0x73F8, 0x7432, 0x743A, 0x7455, 0x743F, 0x745F, 0x7459, 0x7441,
841 0x745C, 0x7469, 0x7470, 0x7463, 0x746A, 0x7476, 0x747E, 0x748B,
842 0x749E, 0x74A7, 0x74CA, 0x74CF, 0x74D4, 0x73F1},
843 { /* category 65 */
844 0x74E0, 0x74E3, 0x74E7, 0x74E9, 0x74EE, 0x74F2, 0x74F0, 0x74F1,
845 0x74F8, 0x74F7, 0x7504, 0x7503, 0x7505, 0x750C, 0x750E, 0x750D,
846 0x7515, 0x7513, 0x751E, 0x7526, 0x752C, 0x753C, 0x7544, 0x754D,
847 0x754A, 0x7549, 0x755B, 0x7546, 0x755A, 0x7569, 0x7564, 0x7567,
848 0x756B, 0x756D, 0x7578, 0x7576, 0x7586, 0x7587, 0x7574, 0x758A,
849 0x7589, 0x7582, 0x7594, 0x759A, 0x759D, 0x75A5, 0x75A3, 0x75C2,
850 0x75B3, 0x75C3, 0x75B5, 0x75BD, 0x75B8, 0x75BC, 0x75B1, 0x75CD,
851 0x75CA, 0x75D2, 0x75D9, 0x75E3, 0x75DE, 0x75FE, 0x75FF, 0x75FC,
852 0x7601, 0x75F0, 0x75FA, 0x75F2, 0x75F3, 0x760B, 0x760D, 0x7609,
853 0x761F, 0x7627, 0x7620, 0x7621, 0x7622, 0x7624, 0x7634, 0x7630,
854 0x763B, 0x7647, 0x7648, 0x7646, 0x765C, 0x7658, 0x7661, 0x7662,
855 0x7668, 0x7669, 0x766A, 0x7667, 0x766C, 0x7670},
856 { /* category 66 */
857 0x7672, 0x7676, 0x7678, 0x767C, 0x7680, 0x7683, 0x7688, 0x768B,
858 0x768E, 0x7696, 0x7693, 0x7699, 0x769A, 0x76B0, 0x76B4, 0x76B8,
859 0x76B9, 0x76BA, 0x76C2, 0x76CD, 0x76D6, 0x76D2, 0x76DE, 0x76E1,
860 0x76E5, 0x76E7, 0x76EA, 0x862F, 0x76FB, 0x7708, 0x7707, 0x7704,
861 0x7729, 0x7724, 0x771E, 0x7725, 0x7726, 0x771B, 0x7737, 0x7738,
862 0x7747, 0x775A, 0x7768, 0x776B, 0x775B, 0x7765, 0x777F, 0x777E,
863 0x7779, 0x778E, 0x778B, 0x7791, 0x77A0, 0x779E, 0x77B0, 0x77B6,
864 0x77B9, 0x77BF, 0x77BC, 0x77BD, 0x77BB, 0x77C7, 0x77CD, 0x77D7,
865 0x77DA, 0x77DC, 0x77E3, 0x77EE, 0x77FC, 0x780C, 0x7812, 0x7926,
866 0x7820, 0x792A, 0x7845, 0x788E, 0x7874, 0x7886, 0x787C, 0x789A,
867 0x788C, 0x78A3, 0x78B5, 0x78AA, 0x78AF, 0x78D1, 0x78C6, 0x78CB,
868 0x78D4, 0x78BE, 0x78BC, 0x78C5, 0x78CA, 0x78EC},
869 { /* category 67 */
870 0x78E7, 0x78DA, 0x78FD, 0x78F4, 0x7907, 0x7912, 0x7911, 0x7919,
871 0x792C, 0x792B, 0x7940, 0x7960, 0x7957, 0x795F, 0x795A, 0x7955,
872 0x7953, 0x797A, 0x797F, 0x798A, 0x799D, 0x79A7, 0x9F4B, 0x79AA,
873 0x79AE, 0x79B3, 0x79B9, 0x79BA, 0x79C9, 0x79D5, 0x79E7, 0x79EC,
874 0x79E1, 0x79E3, 0x7A08, 0x7A0D, 0x7A18, 0x7A19, 0x7A20, 0x7A1F,
875 0x7980, 0x7A31, 0x7A3B, 0x7A3E, 0x7A37, 0x7A43, 0x7A57, 0x7A49,
876 0x7A61, 0x7A62, 0x7A69, 0x9F9D, 0x7A70, 0x7A79, 0x7A7D, 0x7A88,
877 0x7A97, 0x7A95, 0x7A98, 0x7A96, 0x7AA9, 0x7AC8, 0x7AB0, 0x7AB6,
878 0x7AC5, 0x7AC4, 0x7ABF, 0x9083, 0x7AC7, 0x7ACA, 0x7ACD, 0x7ACF,
879 0x7AD5, 0x7AD3, 0x7AD9, 0x7ADA, 0x7ADD, 0x7AE1, 0x7AE2, 0x7AE6,
880 0x7AED, 0x7AF0, 0x7B02, 0x7B0F, 0x7B0A, 0x7B06, 0x7B33, 0x7B18,
881 0x7B19, 0x7B1E, 0x7B35, 0x7B28, 0x7B36, 0x7B50},
882 { /* category 68 */
883 0x7B7A, 0x7B04, 0x7B4D, 0x7B0B, 0x7B4C, 0x7B45, 0x7B75, 0x7B65,
884 0x7B74, 0x7B67, 0x7B70, 0x7B71, 0x7B6C, 0x7B6E, 0x7B9D, 0x7B98,
885 0x7B9F, 0x7B8D, 0x7B9C, 0x7B9A, 0x7B8B, 0x7B92, 0x7B8F, 0x7B5D,
886 0x7B99, 0x7BCB, 0x7BC1, 0x7BCC, 0x7BCF, 0x7BB4, 0x7BC6, 0x7BDD,
887 0x7BE9, 0x7C11, 0x7C14, 0x7BE6, 0x7BE5, 0x7C60, 0x7C00, 0x7C07,
888 0x7C13, 0x7BF3, 0x7BF7, 0x7C17, 0x7C0D, 0x7BF6, 0x7C23, 0x7C27,
889 0x7C2A, 0x7C1F, 0x7C37, 0x7C2B, 0x7C3D, 0x7C4C, 0x7C43, 0x7C54,
890 0x7C4F, 0x7C40, 0x7C50, 0x7C58, 0x7C5F, 0x7C64, 0x7C56, 0x7C65,
891 0x7C6C, 0x7C75, 0x7C83, 0x7C90, 0x7CA4, 0x7CAD, 0x7CA2, 0x7CAB,
892 0x7CA1, 0x7CA8, 0x7CB3, 0x7CB2, 0x7CB1, 0x7CAE, 0x7CB9, 0x7CBD,
893 0x7CC0, 0x7CC5, 0x7CC2, 0x7CD8, 0x7CD2, 0x7CDC, 0x7CE2, 0x9B3B,
894 0x7CEF, 0x7CF2, 0x7CF4, 0x7CF6, 0x7CFA, 0x7D06},
895 { /* category 69 */
896 0x7D02, 0x7D1C, 0x7D15, 0x7D0A, 0x7D45, 0x7D4B, 0x7D2E, 0x7D32,
897 0x7D3F, 0x7D35, 0x7D46, 0x7D73, 0x7D56, 0x7D4E, 0x7D72, 0x7D68,
898 0x7D6E, 0x7D4F, 0x7D63, 0x7D93, 0x7D89, 0x7D5B, 0x7D8F, 0x7D7D,
899 0x7D9B, 0x7DBA, 0x7DAE, 0x7DA3, 0x7DB5, 0x7DC7, 0x7DBD, 0x7DAB,
900 0x7E3D, 0x7DA2, 0x7DAF, 0x7DDC, 0x7DB8, 0x7D9F, 0x7DB0, 0x7DD8,
901 0x7DDD, 0x7DE4, 0x7DDE, 0x7DFB, 0x7DF2, 0x7DE1, 0x7E05, 0x7E0A,
902 0x7E23, 0x7E21, 0x7E12, 0x7E31, 0x7E1F, 0x7E09, 0x7E0B, 0x7E22,
903 0x7E46, 0x7E66, 0x7E3B, 0x7E35, 0x7E39, 0x7E43, 0x7E37, 0x7E32,
904 0x7E3A, 0x7E67, 0x7E5D, 0x7E56, 0x7E5E, 0x7E59, 0x7E5A, 0x7E79,
905 0x7E6A, 0x7E69, 0x7E7C, 0x7E7B, 0x7E83, 0x7DD5, 0x7E7D, 0x8FAE,
906 0x7E7F, 0x7E88, 0x7E89, 0x7E8C, 0x7E92, 0x7E90, 0x7E93, 0x7E94,
907 0x7E96, 0x7E8E, 0x7E9B, 0x7E9C, 0x7F38, 0x7F3A},
908 { /* category 70 */
909 0x7F45, 0x7F4C, 0x7F4D, 0x7F4E, 0x7F50, 0x7F51, 0x7F55, 0x7F54,
910 0x7F58, 0x7F5F, 0x7F60, 0x7F68, 0x7F69, 0x7F67, 0x7F78, 0x7F82,
911 0x7F86, 0x7F83, 0x7F88, 0x7F87, 0x7F8C, 0x7F94, 0x7F9E, 0x7F9D,
912 0x7F9A, 0x7FA3, 0x7FAF, 0x7FB2, 0x7FB9, 0x7FAE, 0x7FB6, 0x7FB8,
913 0x8B71, 0x7FC5, 0x7FC6, 0x7FCA, 0x7FD5, 0x7FD4, 0x7FE1, 0x7FE6,
914 0x7FE9, 0x7FF3, 0x7FF9, 0x98DC, 0x8006, 0x8004, 0x800B, 0x8012,
915 0x8018, 0x8019, 0x801C, 0x8021, 0x8028, 0x803F, 0x803B, 0x804A,
916 0x8046, 0x8052, 0x8058, 0x805A, 0x805F, 0x8062, 0x8068, 0x8073,
917 0x8072, 0x8070, 0x8076, 0x8079, 0x807D, 0x807F, 0x8084, 0x8086,
918 0x8085, 0x809B, 0x8093, 0x809A, 0x80AD, 0x5190, 0x80AC, 0x80DB,
919 0x80E5, 0x80D9, 0x80DD, 0x80C4, 0x80DA, 0x80D6, 0x8109, 0x80EF,
920 0x80F1, 0x811B, 0x8129, 0x8123, 0x812F, 0x814B},
921 { /* category 71 */
922 0x968B, 0x8146, 0x813E, 0x8153, 0x8151, 0x80FC, 0x8171, 0x816E,
923 0x8165, 0x8166, 0x8174, 0x8183, 0x8188, 0x818A, 0x8180, 0x8182,
924 0x81A0, 0x8195, 0x81A4, 0x81A3, 0x815F, 0x8193, 0x81A9, 0x81B0,
925 0x81B5, 0x81BE, 0x81B8, 0x81BD, 0x81C0, 0x81C2, 0x81BA, 0x81C9,
926 0x81CD, 0x81D1, 0x81D9, 0x81D8, 0x81C8, 0x81DA, 0x81DF, 0x81E0,
927 0x81E7, 0x81FA, 0x81FB, 0x81FE, 0x8201, 0x8202, 0x8205, 0x8207,
928 0x820A, 0x820D, 0x8210, 0x8216, 0x8229, 0x822B, 0x8238, 0x8233,
929 0x8240, 0x8259, 0x8258, 0x825D, 0x825A, 0x825F, 0x8264, 0x8262,
930 0x8268, 0x826A, 0x826B, 0x822E, 0x8271, 0x8277, 0x8278, 0x827E,
931 0x828D, 0x8292, 0x82AB, 0x829F, 0x82BB, 0x82AC, 0x82E1, 0x82E3,
932 0x82DF, 0x82D2, 0x82F4, 0x82F3, 0x82FA, 0x8393, 0x8303, 0x82FB,
933 0x82F9, 0x82DE, 0x8306, 0x82DC, 0x8309, 0x82D9},
934 { /* category 72 */
935 0x8335, 0x8334, 0x8316, 0x8332, 0x8331, 0x8340, 0x8339, 0x8350,
936 0x8345, 0x832F, 0x832B, 0x8317, 0x8318, 0x8385, 0x839A, 0x83AA,
937 0x839F, 0x83A2, 0x8396, 0x8323, 0x838E, 0x8387, 0x838A, 0x837C,
938 0x83B5, 0x8373, 0x8375, 0x83A0, 0x8389, 0x83A8, 0x83F4, 0x8413,
939 0x83EB, 0x83CE, 0x83FD, 0x8403, 0x83D8, 0x840B, 0x83C1, 0x83F7,
940 0x8407, 0x83E0, 0x83F2, 0x840D, 0x8422, 0x8420, 0x83BD, 0x8438,
941 0x8506, 0x83FB, 0x846D, 0x842A, 0x843C, 0x855A, 0x8484, 0x8477,
942 0x846B, 0x84AD, 0x846E, 0x8482, 0x8469, 0x8446, 0x842C, 0x846F,
943 0x8479, 0x8435, 0x84CA, 0x8462, 0x84B9, 0x84BF, 0x849F, 0x84D9,
944 0x84CD, 0x84BB, 0x84DA, 0x84D0, 0x84C1, 0x84C6, 0x84D6, 0x84A1,
945 0x8521, 0x84FF, 0x84F4, 0x8517, 0x8518, 0x852C, 0x851F, 0x8515,
946 0x8514, 0x84FC, 0x8540, 0x8563, 0x8558, 0x8548},
947 { /* category 73 */
948 0x8541, 0x8602, 0x854B, 0x8555, 0x8580, 0x85A4, 0x8588, 0x8591,
949 0x858A, 0x85A8, 0x856D, 0x8594, 0x859B, 0x85EA, 0x8587, 0x859C,
950 0x8577, 0x857E, 0x8590, 0x85C9, 0x85BA, 0x85CF, 0x85B9, 0x85D0,
951 0x85D5, 0x85DD, 0x85E5, 0x85DC, 0x85F9, 0x860A, 0x8613, 0x860B,
952 0x85FE, 0x85FA, 0x8606, 0x8622, 0x861A, 0x8630, 0x863F, 0x864D,
953 0x4E55, 0x8654, 0x865F, 0x8667, 0x8671, 0x8693, 0x86A3, 0x86A9,
954 0x86AA, 0x868B, 0x868C, 0x86B6, 0x86AF, 0x86C4, 0x86C6, 0x86B0,
955 0x86C9, 0x8823, 0x86AB, 0x86D4, 0x86DE, 0x86E9, 0x86EC, 0x86DF,
956 0x86DB, 0x86EF, 0x8712, 0x8706, 0x8708, 0x8700, 0x8703, 0x86FB,
957 0x8711, 0x8709, 0x870D, 0x86F9, 0x870A, 0x8734, 0x873F, 0x8737,
958 0x873B, 0x8725, 0x8729, 0x871A, 0x8760, 0x875F, 0x8778, 0x874C,
959 0x874E, 0x8774, 0x8757, 0x8768, 0x876E, 0x8759},
960 { /* category 74 */
961 0x8753, 0x8763, 0x876A, 0x8805, 0x87A2, 0x879F, 0x8782, 0x87AF,
962 0x87CB, 0x87BD, 0x87C0, 0x87D0, 0x96D6, 0x87AB, 0x87C4, 0x87B3,
963 0x87C7, 0x87C6, 0x87BB, 0x87EF, 0x87F2, 0x87E0, 0x880F, 0x880D,
964 0x87FE, 0x87F6, 0x87F7, 0x880E, 0x87D2, 0x8811, 0x8816, 0x8815,
965 0x8822, 0x8821, 0x8831, 0x8836, 0x8839, 0x8827, 0x883B, 0x8844,
966 0x8842, 0x8852, 0x8859, 0x885E, 0x8862, 0x886B, 0x8881, 0x887E,
967 0x889E, 0x8875, 0x887D, 0x88B5, 0x8872, 0x8882, 0x8897, 0x8892,
968 0x88AE, 0x8899, 0x88A2, 0x888D, 0x88A4, 0x88B0, 0x88BF, 0x88B1,
969 0x88C3, 0x88C4, 0x88D4, 0x88D8, 0x88D9, 0x88DD, 0x88F9, 0x8902,
970 0x88FC, 0x88F4, 0x88E8, 0x88F2, 0x8904, 0x890C, 0x890A, 0x8913,
971 0x8943, 0x891E, 0x8925, 0x892A, 0x892B, 0x8941, 0x8944, 0x893B,
972 0x8936, 0x8938, 0x894C, 0x891D, 0x8960, 0x895E},
973 { /* category 75 */
974 0x8966, 0x8964, 0x896D, 0x896A, 0x896F, 0x8974, 0x8977, 0x897E,
975 0x8983, 0x8988, 0x898A, 0x8993, 0x8998, 0x89A1, 0x89A9, 0x89A6,
976 0x89AC, 0x89AF, 0x89B2, 0x89BA, 0x89BD, 0x89BF, 0x89C0, 0x89DA,
977 0x89DC, 0x89DD, 0x89E7, 0x89F4, 0x89F8, 0x8A03, 0x8A16, 0x8A10,
978 0x8A0C, 0x8A1B, 0x8A1D, 0x8A25, 0x8A36, 0x8A41, 0x8A5B, 0x8A52,
979 0x8A46, 0x8A48, 0x8A7C, 0x8A6D, 0x8A6C, 0x8A62, 0x8A85, 0x8A82,
980 0x8A84, 0x8AA8, 0x8AA1, 0x8A91, 0x8AA5, 0x8AA6, 0x8A9A, 0x8AA3,
981 0x8AC4, 0x8ACD, 0x8AC2, 0x8ADA, 0x8AEB, 0x8AF3, 0x8AE7, 0x8AE4,
982 0x8AF1, 0x8B14, 0x8AE0, 0x8AE2, 0x8AF7, 0x8ADE, 0x8ADB, 0x8B0C,
983 0x8B07, 0x8B1A, 0x8AE1, 0x8B16, 0x8B10, 0x8B17, 0x8B20, 0x8B33,
984 0x97AB, 0x8B26, 0x8B2B, 0x8B3E, 0x8B28, 0x8B41, 0x8B4C, 0x8B4F,
985 0x8B4E, 0x8B49, 0x8B56, 0x8B5B, 0x8B5A, 0x8B6B},
986 { /* category 76 */
987 0x8B5F, 0x8B6C, 0x8B6F, 0x8B74, 0x8B7D, 0x8B80, 0x8B8C, 0x8B8E,
988 0x8B92, 0x8B93, 0x8B96, 0x8B99, 0x8B9A, 0x8C3A, 0x8C41, 0x8C3F,
989 0x8C48, 0x8C4C, 0x8C4E, 0x8C50, 0x8C55, 0x8C62, 0x8C6C, 0x8C78,
990 0x8C7A, 0x8C82, 0x8C89, 0x8C85, 0x8C8A, 0x8C8D, 0x8C8E, 0x8C94,
991 0x8C7C, 0x8C98, 0x621D, 0x8CAD, 0x8CAA, 0x8CBD, 0x8CB2, 0x8CB3,
992 0x8CAE, 0x8CB6, 0x8CC8, 0x8CC1, 0x8CE4, 0x8CE3, 0x8CDA, 0x8CFD,
993 0x8CFA, 0x8CFB, 0x8D04, 0x8D05, 0x8D0A, 0x8D07, 0x8D0F, 0x8D0D,
994 0x8D10, 0x9F4E, 0x8D13, 0x8CCD, 0x8D14, 0x8D16, 0x8D67, 0x8D6D,
995 0x8D71, 0x8D73, 0x8D81, 0x8D99, 0x8DC2, 0x8DBE, 0x8DBA, 0x8DCF,
996 0x8DDA, 0x8DD6, 0x8DCC, 0x8DDB, 0x8DCB, 0x8DEA, 0x8DEB, 0x8DDF,
997 0x8DE3, 0x8DFC, 0x8E08, 0x8E09, 0x8DFF, 0x8E1D, 0x8E1E, 0x8E10,
998 0x8E1F, 0x8E42, 0x8E35, 0x8E30, 0x8E34, 0x8E4A},
999 { /* category 77 */
1000 0x8E47, 0x8E49, 0x8E4C, 0x8E50, 0x8E48, 0x8E59, 0x8E64, 0x8E60,
1001 0x8E2A, 0x8E63, 0x8E55, 0x8E76, 0x8E72, 0x8E7C, 0x8E81, 0x8E87,
1002 0x8E85, 0x8E84, 0x8E8B, 0x8E8A, 0x8E93, 0x8E91, 0x8E94, 0x8E99,
1003 0x8EAA, 0x8EA1, 0x8EAC, 0x8EB0, 0x8EC6, 0x8EB1, 0x8EBE, 0x8EC5,
1004 0x8EC8, 0x8ECB, 0x8EDB, 0x8EE3, 0x8EFC, 0x8EFB, 0x8EEB, 0x8EFE,
1005 0x8F0A, 0x8F05, 0x8F15, 0x8F12, 0x8F19, 0x8F13, 0x8F1C, 0x8F1F,
1006 0x8F1B, 0x8F0C, 0x8F26, 0x8F33, 0x8F3B, 0x8F39, 0x8F45, 0x8F42,
1007 0x8F3E, 0x8F4C, 0x8F49, 0x8F46, 0x8F4E, 0x8F57, 0x8F5C, 0x8F62,
1008 0x8F63, 0x8F64, 0x8F9C, 0x8F9F, 0x8FA3, 0x8FAD, 0x8FAF, 0x8FB7,
1009 0x8FDA, 0x8FE5, 0x8FE2, 0x8FEA, 0x8FEF, 0x9087, 0x8FF4, 0x9005,
1010 0x8FF9, 0x8FFA, 0x9011, 0x9015, 0x9021, 0x900D, 0x901E, 0x9016,
1011 0x900B, 0x9027, 0x9036, 0x9035, 0x9039, 0x8FF8},
1012 { /* category 78 */
1013 0x904F, 0x9050, 0x9051, 0x9052, 0x900E, 0x9049, 0x903E, 0x9056,
1014 0x9058, 0x905E, 0x9068, 0x906F, 0x9076, 0x96A8, 0x9072, 0x9082,
1015 0x907D, 0x9081, 0x9080, 0x908A, 0x9089, 0x908F, 0x90A8, 0x90AF,
1016 0x90B1, 0x90B5, 0x90E2, 0x90E4, 0x6248, 0x90DB, 0x9102, 0x9112,
1017 0x9119, 0x9132, 0x9130, 0x914A, 0x9156, 0x9158, 0x9163, 0x9165,
1018 0x9169, 0x9173, 0x9172, 0x918B, 0x9189, 0x9182, 0x91A2, 0x91AB,
1019 0x91AF, 0x91AA, 0x91B5, 0x91B4, 0x91BA, 0x91C0, 0x91C1, 0x91C9,
1020 0x91CB, 0x91D0, 0x91D6, 0x91DF, 0x91E1, 0x91DB, 0x91FC, 0x91F5,
1021 0x91F6, 0x921E, 0x91FF, 0x9214, 0x922C, 0x9215, 0x9211, 0x925E,
1022 0x9257, 0x9245, 0x9249, 0x9264, 0x9248, 0x9295, 0x923F, 0x924B,
1023 0x9250, 0x929C, 0x9296, 0x9293, 0x929B, 0x925A, 0x92CF, 0x92B9,
1024 0x92B7, 0x92E9, 0x930F, 0x92FA, 0x9344, 0x932E},
1025 { /* category 79 */
1026 0x9319, 0x9322, 0x931A, 0x9323, 0x933A, 0x9335, 0x933B, 0x935C,
1027 0x9360, 0x937C, 0x936E, 0x9356, 0x93B0, 0x93AC, 0x93AD, 0x9394,
1028 0x93B9, 0x93D6, 0x93D7, 0x93E8, 0x93E5, 0x93D8, 0x93C3, 0x93DD,
1029 0x93D0, 0x93C8, 0x93E4, 0x941A, 0x9414, 0x9413, 0x9403, 0x9407,
1030 0x9410, 0x9436, 0x942B, 0x9435, 0x9421, 0x943A, 0x9441, 0x9452,
1031 0x9444, 0x945B, 0x9460, 0x9462, 0x945E, 0x946A, 0x9229, 0x9470,
1032 0x9475, 0x9477, 0x947D, 0x945A, 0x947C, 0x947E, 0x9481, 0x947F,
1033 0x9582, 0x9587, 0x958A, 0x9594, 0x9596, 0x9598, 0x9599, 0x95A0,
1034 0x95A8, 0x95A7, 0x95AD, 0x95BC, 0x95BB, 0x95B9, 0x95BE, 0x95CA,
1035 0x6FF6, 0x95C3, 0x95CD, 0x95CC, 0x95D5, 0x95D4, 0x95D6, 0x95DC,
1036 0x95E1, 0x95E5, 0x95E2, 0x9621, 0x9628, 0x962E, 0x962F, 0x9642,
1037 0x964C, 0x964F, 0x964B, 0x9677, 0x965C, 0x965E},
1038 { /* category 80 */
1039 0x965D, 0x965F, 0x9666, 0x9672, 0x966C, 0x968D, 0x9698, 0x9695,
1040 0x9697, 0x96AA, 0x96A7, 0x96B1, 0x96B2, 0x96B0, 0x96B4, 0x96B6,
1041 0x96B8, 0x96B9, 0x96CE, 0x96CB, 0x96C9, 0x96CD, 0x894D, 0x96DC,
1042 0x970D, 0x96D5, 0x96F9, 0x9704, 0x9706, 0x9708, 0x9713, 0x970E,
1043 0x9711, 0x970F, 0x9716, 0x9719, 0x9724, 0x972A, 0x9730, 0x9739,
1044 0x973D, 0x973E, 0x9744, 0x9746, 0x9748, 0x9742, 0x9749, 0x975C,
1045 0x9760, 0x9764, 0x9766, 0x9768, 0x52D2, 0x976B, 0x9771, 0x9779,
1046 0x9785, 0x977C, 0x9781, 0x977A, 0x9786, 0x978B, 0x978F, 0x9790,
1047 0x979C, 0x97A8, 0x97A6, 0x97A3, 0x97B3, 0x97B4, 0x97C3, 0x97C6,
1048 0x97C8, 0x97CB, 0x97DC, 0x97ED, 0x9F4F, 0x97F2, 0x7ADF, 0x97F6,
1049 0x97F5, 0x980F, 0x980C, 0x9838, 0x9824, 0x9821, 0x9837, 0x983D,
1050 0x9846, 0x984F, 0x984B, 0x986B, 0x986F, 0x9870},
1051 { /* category 81 */
1052 0x9871, 0x9874, 0x9873, 0x98AA, 0x98AF, 0x98B1, 0x98B6, 0x98C4,
1053 0x98C3, 0x98C6, 0x98E9, 0x98EB, 0x9903, 0x9909, 0x9912, 0x9914,
1054 0x9918, 0x9921, 0x991D, 0x991E, 0x9924, 0x9920, 0x992C, 0x992E,
1055 0x993D, 0x993E, 0x9942, 0x9949, 0x9945, 0x9950, 0x994B, 0x9951,
1056 0x9952, 0x994C, 0x9955, 0x9997, 0x9998, 0x99A5, 0x99AD, 0x99AE,
1057 0x99BC, 0x99DF, 0x99DB, 0x99DD, 0x99D8, 0x99D1, 0x99ED, 0x99EE,
1058 0x99F1, 0x99F2, 0x99FB, 0x99F8, 0x9A01, 0x9A0F, 0x9A05, 0x99E2,
1059 0x9A19, 0x9A2B, 0x9A37, 0x9A45, 0x9A42, 0x9A40, 0x9A43, 0x9A3E,
1060 0x9A55, 0x9A4D, 0x9A5B, 0x9A57, 0x9A5F, 0x9A62, 0x9A65, 0x9A64,
1061 0x9A69, 0x9A6B, 0x9A6A, 0x9AAD, 0x9AB0, 0x9ABC, 0x9AC0, 0x9ACF,
1062 0x9AD1, 0x9AD3, 0x9AD4, 0x9ADE, 0x9ADF, 0x9AE2, 0x9AE3, 0x9AE6,
1063 0x9AEF, 0x9AEB, 0x9AEE, 0x9AF4, 0x9AF1, 0x9AF7},
1064 { /* category 82 */
1065 0x9AFB, 0x9B06, 0x9B18, 0x9B1A, 0x9B1F, 0x9B22, 0x9B23, 0x9B25,
1066 0x9B27, 0x9B28, 0x9B29, 0x9B2A, 0x9B2E, 0x9B2F, 0x9B32, 0x9B44,
1067 0x9B43, 0x9B4F, 0x9B4D, 0x9B4E, 0x9B51, 0x9B58, 0x9B74, 0x9B93,
1068 0x9B83, 0x9B91, 0x9B96, 0x9B97, 0x9B9F, 0x9BA0, 0x9BA8, 0x9BB4,
1069 0x9BC0, 0x9BCA, 0x9BB9, 0x9BC6, 0x9BCF, 0x9BD1, 0x9BD2, 0x9BE3,
1070 0x9BE2, 0x9BE4, 0x9BD4, 0x9BE1, 0x9C3A, 0x9BF2, 0x9BF1, 0x9BF0,
1071 0x9C15, 0x9C14, 0x9C09, 0x9C13, 0x9C0C, 0x9C06, 0x9C08, 0x9C12,
1072 0x9C0A, 0x9C04, 0x9C2E, 0x9C1B, 0x9C25, 0x9C24, 0x9C21, 0x9C30,
1073 0x9C47, 0x9C32, 0x9C46, 0x9C3E, 0x9C5A, 0x9C60, 0x9C67, 0x9C76,
1074 0x9C78, 0x9CE7, 0x9CEC, 0x9CF0, 0x9D09, 0x9D08, 0x9CEB, 0x9D03,
1075 0x9D06, 0x9D2A, 0x9D26, 0x9DAF, 0x9D23, 0x9D1F, 0x9D44, 0x9D15,
1076 0x9D12, 0x9D41, 0x9D3F, 0x9D3E, 0x9D46, 0x9D48},
1077 { /* category 83 */
1078 0x9D5D, 0x9D5E, 0x9D64, 0x9D51, 0x9D50, 0x9D59, 0x9D72, 0x9D89,
1079 0x9D87, 0x9DAB, 0x9D6F, 0x9D7A, 0x9D9A, 0x9DA4, 0x9DA9, 0x9DB2,
1080 0x9DC4, 0x9DC1, 0x9DBB, 0x9DB8, 0x9DBA, 0x9DC6, 0x9DCF, 0x9DC2,
1081 0x9DD9, 0x9DD3, 0x9DF8, 0x9DE6, 0x9DED, 0x9DEF, 0x9DFD, 0x9E1A,
1082 0x9E1B, 0x9E1E, 0x9E75, 0x9E79, 0x9E7D, 0x9E81, 0x9E88, 0x9E8B,
1083 0x9E8C, 0x9E92, 0x9E95, 0x9E91, 0x9E9D, 0x9EA5, 0x9EA9, 0x9EB8,
1084 0x9EAA, 0x9EAD, 0x9761, 0x9ECC, 0x9ECE, 0x9ECF, 0x9ED0, 0x9ED4,
1085 0x9EDC, 0x9EDE, 0x9EDD, 0x9EE0, 0x9EE5, 0x9EE8, 0x9EEF, 0x9EF4,
1086 0x9EF6, 0x9EF7, 0x9EF9, 0x9EFB, 0x9EFC, 0x9EFD, 0x9F07, 0x9F08,
1087 0x76B7, 0x9F15, 0x9F21, 0x9F2C, 0x9F3E, 0x9F4A, 0x9F52, 0x9F54,
1088 0x9F63, 0x9F5F, 0x9F60, 0x9F61, 0x9F66, 0x9F67, 0x9F6C, 0x9F6A,
1089 0x9F77, 0x9F72, 0x9F76, 0x9F95, 0x9F9C, 0x9FA0},
1090 { /* category 84 */
1091 0x582F, 0x69C7, 0x9059, 0x7464, 0x51DC, 0x7199, 0x0000, 0x0000,
1092 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1093 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1094 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1095 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1096 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1097 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1098 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1099 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1100 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1101 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1102 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
1103 { /* category 85 */
1104 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1105 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1106 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1107 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1108 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1109 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1110 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1111 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1112 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1113 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1114 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1115 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
1116 { /* category 86 */
1117 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1118 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1119 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1120 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1121 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1122 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1123 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1124 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1125 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1126 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1127 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1128 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
1129 { /* category 87 */
1130 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1131 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1132 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1133 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1134 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1135 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1136 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1137 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1138 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1139 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1140 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1141 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
1142 { /* category 88 */
1143 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1144 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1145 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1146 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1147 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1148 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1149 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1150 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1151 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1152 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1153 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1154 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000},
1155 { /* category 89 */
1156 0x7E8A, 0x891C, 0x9348, 0x9288, 0x84DC, 0x4FC9, 0x70BB, 0x6631,
1157 0x68C8, 0x92F9, 0x66FB, 0x5F45, 0x4E28, 0x4EE1, 0x4EFC, 0x4F00,
1158 0x4F03, 0x4F39, 0x4F56, 0x4F92, 0x4F8A, 0x4F9A, 0x4F94, 0x4FCD,
1159 0x5040, 0x5022, 0x4FFF, 0x501E, 0x5046, 0x5070, 0x5042, 0x5094,
1160 0x50F4, 0x50D8, 0x514A, 0x5164, 0x519D, 0x51BE, 0x51EC, 0x5215,
1161 0x529C, 0x52A6, 0x52C0, 0x52DB, 0x5300, 0x5307, 0x5324, 0x5372,
1162 0x5393, 0x53B2, 0x53DD, 0xFA0E, 0x549C, 0x548A, 0x54A9, 0x54FF,
1163 0x5586, 0x5759, 0x5765, 0x57AC, 0x57C8, 0x57C7, 0xFA0F, 0xFA10,
1164 0x589E, 0x58B2, 0x590B, 0x5953, 0x595B, 0x595D, 0x5963, 0x59A4,
1165 0x59BA, 0x5B56, 0x5BC0, 0x752F, 0x5BD8, 0x5BEC, 0x5C1E, 0x5CA6,
1166 0x5CBA, 0x5CF5, 0x5D27, 0x5D53, 0xFA11, 0x5D42, 0x5D6D, 0x5DB8,
1167 0x5DB9, 0x5DD0, 0x5F21, 0x5F34, 0x5F67, 0x5FB7},
1168 { /* category 90 */
1169 0x5FDE, 0x605D, 0x6085, 0x608A, 0x60DE, 0x60D5, 0x6120, 0x60F2,
1170 0x6111, 0x6137, 0x6130, 0x6198, 0x6213, 0x62A6, 0x63F5, 0x6460,
1171 0x649D, 0x64CE, 0x654E, 0x6600, 0x6615, 0x663B, 0x6609, 0x662E,
1172 0x661E, 0x6624, 0x6665, 0x6657, 0x6659, 0xFA12, 0x6673, 0x6699,
1173 0x66A0, 0x66B2, 0x66BF, 0x66FA, 0x670E, 0xF929, 0x6766, 0x67BB,
1174 0x6852, 0x67C0, 0x6801, 0x6844, 0x68CF, 0xFA13, 0x6968, 0xFA14,
1175 0x6998, 0x69E2, 0x6A30, 0x6A6B, 0x6A46, 0x6A73, 0x6A7E, 0x6AE2,
1176 0x6AE4, 0x6BD6, 0x6C3F, 0x6C5C, 0x6C86, 0x6C6F, 0x6CDA, 0x6D04,
1177 0x6D87, 0x6D6F, 0x6D96, 0x6DAC, 0x6DCF, 0x6DF8, 0x6DF2, 0x6DFC,
1178 0x6E39, 0x6E5C, 0x6E27, 0x6E3C, 0x6EBF, 0x6F88, 0x6FB5, 0x6FF5,
1179 0x7005, 0x7007, 0x7028, 0x7085, 0x70AB, 0x710F, 0x7104, 0x715C,
1180 0x7146, 0x7147, 0xFA15, 0x71C1, 0x71FE, 0x72B1},
1181 { /* category 91 */
1182 0x72BE, 0x7324, 0xFA16, 0x7377, 0x73BD, 0x73C9, 0x73D6, 0x73E3,
1183 0x73D2, 0x7407, 0x73F5, 0x7426, 0x742A, 0x7429, 0x742E, 0x7462,
1184 0x7489, 0x749F, 0x7501, 0x756F, 0x7682, 0x769C, 0x769E, 0x769B,
1185 0x76A6, 0xFA17, 0x7746, 0x52AF, 0x7821, 0x784E, 0x7864, 0x787A,
1186 0x7930, 0xFA18, 0xFA19, 0xFA1A, 0x7994, 0xFA1B, 0x799B, 0x7AD1,
1187 0x7AE7, 0xFA1C, 0x7AEB, 0x7B9E, 0xFA1D, 0x7D48, 0x7D5C, 0x7DB7,
1188 0x7DA0, 0x7DD6, 0x7E52, 0x7F47, 0x7FA1, 0xFA1E, 0x8301, 0x8362,
1189 0x837F, 0x83C7, 0x83F6, 0x8448, 0x84B4, 0x8553, 0x8559, 0x856B,
1190 0xFA1F, 0x85B0, 0xFA20, 0xFA21, 0x8807, 0x88F5, 0x8A12, 0x8A37,
1191 0x8A79, 0x8AA7, 0x8ABE, 0x8ADF, 0xFA22, 0x8AF6, 0x8B53, 0x8B7F,
1192 0x8CF0, 0x8CF4, 0x8D12, 0x8D76, 0xFA23, 0x8ECF, 0xFA24, 0xFA25,
1193 0x9067, 0x90DE, 0xFA26, 0x9115, 0x9127, 0x91DA},
1194 { /* category 92 */
1195 0x91D7, 0x91DE, 0x91ED, 0x91EE, 0x91E4, 0x91E5, 0x9206, 0x9210,
1196 0x920A, 0x923A, 0x9240, 0x923C, 0x924E, 0x9259, 0x9251, 0x9239,
1197 0x9267, 0x92A7, 0x9277, 0x9278, 0x92E7, 0x92D7, 0x92D9, 0x92D0,
1198 0xFA27, 0x92D5, 0x92E0, 0x92D3, 0x9325, 0x9321, 0x92FB, 0xFA28,
1199 0x931E, 0x92FF, 0x931D, 0x9302, 0x9370, 0x9357, 0x93A4, 0x93C6,
1200 0x93DE, 0x93F8, 0x9431, 0x9445, 0x9448, 0x9592, 0xF9DC, 0xFA29,
1201 0x969D, 0x96AF, 0x9733, 0x973B, 0x9743, 0x974D, 0x974F, 0x9751,
1202 0x9755, 0x9857, 0x9865, 0xFA2A, 0xFA2B, 0x9927, 0xFA2C, 0x999E,
1203 0x9A4E, 0x9AD9, 0x9ADC, 0x9B75, 0x9B72, 0x9B8F, 0x9BB1, 0x9BBB,
1204 0x9C00, 0x9D70, 0x9D6B, 0xFA2D, 0x9E19, 0x9ED1, 0x0000, 0x0000,
1205 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177,
1206 0x2178, 0x2179, 0xFFE2, 0xFFE4, 0xFF07, 0xFF02}
1207 };
1208
1209 #endif /* JISX0208_H */
1210
1211 #ifdef __cplusplus
1212 }
1213 #endif
0
1 #ifdef HAVE_CONFIG_H
2 #include "config.h"
3 #endif
4
5 #include <stdio.h>
6 #include <stdlib.h>
7 #include "gd.h"
8
9 /* A short program which converts a .png file into a .gd file, for
10 your convenience in creating images on the fly from a
11 basis image that must be loaded quickly. The .gd format
12 is not intended to be a general-purpose format. */
13
14 int
15 main (int argc, char **argv)
16 {
17 gdImagePtr im;
18 FILE *in, *out;
19 if (argc != 3)
20 {
21 fprintf (stderr, "Usage: pngtogd filename.png filename.gd\n");
22 exit (1);
23 }
24 in = fopen (argv[1], "rb");
25 if (!in)
26 {
27 fprintf (stderr, "Input file does not exist!\n");
28 exit (1);
29 }
30 #ifdef HAVE_LIBPNG
31 im = gdImageCreateFromPng (in);
32 #else
33 fprintf (stderr, "No PNG library support available.\n");
34 #endif
35 fclose (in);
36 if (!im)
37 {
38 fprintf (stderr, "Input is not in PNG format!\n");
39 exit (1);
40 }
41 out = fopen (argv[2], "wb");
42 if (!out)
43 {
44 fprintf (stderr, "Output file cannot be written to!\n");
45 gdImageDestroy (im);
46 exit (1);
47 }
48 gdImageGd (im, out);
49 fclose (out);
50 gdImageDestroy (im);
51
52 return 0;
53 }
0
1 #ifdef HAVE_CONFIG_H
2 #include "config.h"
3 #endif
4
5 #include <stdio.h>
6 #include <stdlib.h>
7 #include "gd.h"
8
9 /* A short program which converts a .png file into a .gd2 file, for
10 your convenience in creating images on the fly from a
11 basis image that must be loaded quickly. The .gd2 format
12 is not intended to be a general-purpose format. */
13
14 int
15 main (int argc, char **argv)
16 {
17 gdImagePtr im;
18 FILE *in, *out;
19 int cs, fmt;
20
21 if (argc != 5)
22 {
23 fprintf (stderr, "Usage: pngtogd2 filename.png filename.gd2 cs fmt\n");
24 fprintf (stderr, " where cs is the chunk size\n");
25 fprintf (stderr, " fmt is 1 for raw, 2 for compressed\n");
26 exit (1);
27 }
28 in = fopen (argv[1], "rb");
29 if (!in)
30 {
31 fprintf (stderr, "Input file does not exist!\n");
32 exit (1);
33 }
34 #ifdef HAVE_LIBPNG
35 im = gdImageCreateFromPng (in);
36 #else
37 fprintf (stderr, "No PNG library support available.\n");
38 #endif
39 fclose (in);
40 if (!im)
41 {
42 fprintf (stderr, "Input is not in PNG format!\n");
43 exit (1);
44 }
45 out = fopen (argv[2], "wb");
46 if (!out)
47 {
48 fprintf (stderr, "Output file cannot be written to!\n");
49 gdImageDestroy (im);
50 exit (1);
51 }
52 cs = atoi (argv[3]);
53 fmt = atoi (argv[4]);
54 gdImageGd2 (im, out, cs, fmt);
55 fclose (out);
56 gdImageDestroy (im);
57
58 return 0;
59 }
0 gd $B%i%$%V%i%j$GF|K\8lJ8;zNs$r;H$&>e$G$NCm0U;v9`(B
1
2 $B;32l@5?M(B (ma@yama-ga.com)
3
4
5 gd-1.7.0 $B$+$i$O$=$N$^$^$G(B gdImageStringTTF() $B$KBP$7$F(B
6 SJIS encoding $B$N%U%)%s%H$,;HMQ$G$-$^$9!#(B
7
8 $B"((B Unicode encoding $B$N%U%)%s%H$KBP$7$F$OF|K\8lJ8;zNs$r(B UTF-8 $B$G(B
9 $B;XDj$9$l$PF|K\8l$,I=<($G$-$^$9!#(B
10
11 $B$D$^$j(B gdImageStringTTF() $B$G(B SJIS encoding $B$N%U%)%s%H$r;XDj$9$k$H(B
12 $BJ8;zNs$OL5>r7o$KF|K\8l$G$"$k$H2r<a$5$l!"4A;z%3!<%I(B (EUC, SJIS, 7bit JIS)
13 $B$,<+F0H=JL$5$l$FE,@Z$K=hM}$5$l$^$9!#(B
14
15 $B99$K(B UNICODE encoding $B$N%U%)%s%H$KBP$7$F$b(B JIS $B7O$NF|K\8l(B (EUC, SJIS, 7bit JIS)
16 $B$r;HMQ$9$k>l9g$O!"%3%s%Q%$%k;~$K(B -DJISX0208 $B$rIU$1$F%3%s%Q%$%k$7$F$/$@$5$$!#(B
17 $B$3$&$9$k$H(B gdImageStringTTF() $B$G;XDj$5$l$?J8;zNs$K(B ASCII $B0J30$NJ8;z$,$"$k$H(B
18 $BL5>r7o$KF|K\8lJ8;zNs$G$"$k$H2r<a$5$l!"4A;z%3!<%I$r<+F0H=JL8e$K(B
19 $BE,@Z$K=hM}$5$l$^$9!#(B
20
21 $B$?$@$7$3$N>l9g$O(B UTF-8 $B$NF|K\8lJ8;zNs$r07$($J$/$J$j$^$9$N$G!"(B
22 $B$4MxMQ$N4D6-Ey$K1~$8$F(B -DJISX0208 $B$rIU$1$k$+H]$+$r7h$a$F$/$@$5$$!#(B
23
24 $B4A;z%3!<%I$NJQ49$K(B OS $BIUB0$N(B iconv() $B$r;H$&>l9g$O(B
25 CFLAGS $B$K(B -DHAVE_ICONV $B$rIU$1$F%3%s%Q%$%k$7$F$/$@$5$$!#(B
26 $B$3$N>l9g$K(B -DHAVE_STDARG_H $B$H(B -DHAVE_ERRNO_H $B$bIU$1$F$*$/$H(B
27 $B4A;z%3!<%IJQ49$N:]$K%(%i!<$,H/@8$7$?>l9g$KE,@Z$J%a%C%;!<%8$r(B
28 $BI=<($9$k$h$&$K$J$j$^$9!#(B
29
30
31 $B!y(B EUC $B$+(B SJIS $B$+H=JL$G$-$J$+$C$?>l9g$N4A;z%3!<%I$NH=JLJ}K!(B
32
33 (1) $B4D6-JQ?t(B LC_ALL, LC_CTYPE, LANG $B$r$3$N=gHV$G%A%'%C%/$9$k(B
34 (2) $B4D6-JQ?t$+$i$bH=JL$G$-$J$+$C$?>l9g$O(B UNIX $B$J$i$P(B EUC$B!"(B
35 Win32 $B$J$i$P(B SJIS $B$H8+$J$9(B
36
37 $B%3%s%Q%$%k;~$K(B -DSJISPRE $B$rIU$1$F%3%s%Q%$%k$9$l$P!"(BUNIX $B$G$"$C$F$b(B
38 SJIS $B$rM%@h$9$k$h$&$K$J$j$^$9!#(B
0 /* $Id: strlcpy.c,v 1.1.2.1 2007/02/26 23:39:43 pajoye Exp $ */
1 #ifdef HAVE_CONFIG_H
2 #include "config.h"
3 #endif
4
5 /* $OpenBSD: strlcpy.c,v 1.4 1999/05/01 18:56:41 millert Exp $ */
6
7 /*
8 * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
9 * All rights reserved.
10 *
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
13 * are met:
14 * 1. Redistributions of source code must retain the above copyright
15 * notice, this list of conditions and the following disclaimer.
16 * 2. Redistributions in binary form must reproduce the above copyright
17 * notice, this list of conditions and the following disclaimer in the
18 * documentation and/or other materials provided with the distribution.
19 * 3. The name of the author may not be used to endorse or promote products
20 * derived from this software without specific prior written permission.
21 *
22 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
23 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
24 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
25 * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
26 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
27 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
28 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
29 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
30 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
31 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 */
33
34 #if defined(LIBC_SCCS) && !defined(lint)
35 static char *rcsid = "$OpenBSD: strlcpy.c,v 1.4 1999/05/01 18:56:41 millert Exp $";
36 #endif /* LIBC_SCCS and not lint */
37
38 #include <sys/types.h>
39 #include <string.h>
40
41 /*
42 * Copy src to string dst of size siz. At most siz-1 characters
43 * will be copied. Always NUL terminates (unless siz == 0).
44 * Returns strlen(src); if retval >= siz, truncation occurred.
45 */
46 size_t gd_strlcpy(char *dst, const char *src, size_t siz)
47 {
48 register char *d = dst;
49 register const char *s = src;
50 register size_t n = siz;
51
52 /* Copy as many bytes as will fit */
53 if (n != 0 && --n != 0) {
54 do {
55 if ((*d++ = *s++) == 0)
56 break;
57 } while (--n != 0);
58 }
59
60 /* Not enough room in dst, add NUL and traverse rest of src */
61 if (n == 0) {
62 if (siz != 0)
63 *d = '\0'; /* NUL-terminate dst */
64 while (*s++)
65 ;
66 }
67
68 return(s - src - 1); /* count does not include NUL */
69 }
70
71 /*
72 * Local variables:
73 * tab-width: 4
74 * c-basic-offset: 4
75 * End:
76 * vim600: sw=4 ts=4 fdm=marker
77 * vim<600: sw=4 ts=4
78 */
0 ## Process this file with automake to produce Makefile.in -*-Makefile-*-
1 AUTOMAKE_OPTIONS = foreign 1.7
2
3 EXTRA_DIST = gdtest.gd2 gdtest.png gdtest_200_300_150_100.png gdtest_merge.png gdtest_wbmp_to_png.png
4
0 # Makefile.in generated by automake 1.9.6 from Makefile.am.
1 # @configure_input@
2
3 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
4 # 2003, 2004, 2005 Free Software Foundation, Inc.
5 # This Makefile.in is free software; the Free Software Foundation
6 # gives unlimited permission to copy and/or distribute it,
7 # with or without modifications, as long as this notice is preserved.
8
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
11 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
12 # PARTICULAR PURPOSE.
13
14 @SET_MAKE@
15 srcdir = @srcdir@
16 top_srcdir = @top_srcdir@
17 VPATH = @srcdir@
18 pkgdatadir = $(datadir)/@PACKAGE@
19 pkglibdir = $(libdir)/@PACKAGE@
20 pkgincludedir = $(includedir)/@PACKAGE@
21 top_builddir = ..
22 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
23 INSTALL = @INSTALL@
24 install_sh_DATA = $(install_sh) -c -m 644
25 install_sh_PROGRAM = $(install_sh) -c
26 install_sh_SCRIPT = $(install_sh) -c
27 INSTALL_HEADER = $(INSTALL_DATA)
28 transform = $(program_transform_name)
29 NORMAL_INSTALL = :
30 PRE_INSTALL = :
31 POST_INSTALL = :
32 NORMAL_UNINSTALL = :
33 PRE_UNINSTALL = :
34 POST_UNINSTALL = :
35 build_triplet = @build@
36 host_triplet = @host@
37 target_triplet = @target@
38 subdir = test
39 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
40 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
41 am__aclocal_m4_deps = $(top_srcdir)/configure.ac
42 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
43 $(ACLOCAL_M4)
44 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
45 CONFIG_HEADER = $(top_builddir)/config.h
46 CONFIG_CLEAN_FILES =
47 SOURCES =
48 DIST_SOURCES =
49 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
50 ACLOCAL = @ACLOCAL@
51 AMDEP_FALSE = @AMDEP_FALSE@
52 AMDEP_TRUE = @AMDEP_TRUE@
53 AMTAR = @AMTAR@
54 AR = @AR@
55 AUTOCONF = @AUTOCONF@
56 AUTOHEADER = @AUTOHEADER@
57 AUTOMAKE = @AUTOMAKE@
58 AWK = @AWK@
59 CC = @CC@
60 CCDEPMODE = @CCDEPMODE@
61 CFLAGS = @CFLAGS@
62 CPP = @CPP@
63 CPPFLAGS = @CPPFLAGS@
64 CXX = @CXX@
65 CXXCPP = @CXXCPP@
66 CXXDEPMODE = @CXXDEPMODE@
67 CXXFLAGS = @CXXFLAGS@
68 CYGPATH_W = @CYGPATH_W@
69 DEFS = @DEFS@
70 DEPDIR = @DEPDIR@
71 ECHO = @ECHO@
72 ECHO_C = @ECHO_C@
73 ECHO_N = @ECHO_N@
74 ECHO_T = @ECHO_T@
75 EGREP = @EGREP@
76 EXEEXT = @EXEEXT@
77 F77 = @F77@
78 FEATURES = @FEATURES@
79 FFLAGS = @FFLAGS@
80 FREETYPE_CONFIG = @FREETYPE_CONFIG@
81 GDLIBNAME = @GDLIBNAME@
82 GDLIB_MAJOR = @GDLIB_MAJOR@
83 GDLIB_MINOR = @GDLIB_MINOR@
84 GDLIB_REVISION = @GDLIB_REVISION@
85 GREP = @GREP@
86 INSTALL_DATA = @INSTALL_DATA@
87 INSTALL_PROGRAM = @INSTALL_PROGRAM@
88 INSTALL_SCRIPT = @INSTALL_SCRIPT@
89 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
90 LDFLAGS = @LDFLAGS@
91 LIBICONV = @LIBICONV@
92 LIBOBJS = @LIBOBJS@
93 LIBPNG12_CONFIG = @LIBPNG12_CONFIG@
94 LIBPNG_CONFIG = @LIBPNG_CONFIG@
95 LIBS = @LIBS@
96 LIBTOOL = @LIBTOOL@
97 LN_S = @LN_S@
98 LTLIBICONV = @LTLIBICONV@
99 LTLIBOBJS = @LTLIBOBJS@
100 MAKEINFO = @MAKEINFO@
101 OBJEXT = @OBJEXT@
102 PACKAGE = @PACKAGE@
103 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
104 PACKAGE_NAME = @PACKAGE_NAME@
105 PACKAGE_STRING = @PACKAGE_STRING@
106 PACKAGE_TARNAME = @PACKAGE_TARNAME@
107 PACKAGE_VERSION = @PACKAGE_VERSION@
108 PATH_SEPARATOR = @PATH_SEPARATOR@
109 PTHREAD_CC = @PTHREAD_CC@
110 PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
111 PTHREAD_LIBS = @PTHREAD_LIBS@
112 RANLIB = @RANLIB@
113 SET_MAKE = @SET_MAKE@
114 SHELL = @SHELL@
115 STRIP = @STRIP@
116 VERSION = @VERSION@
117 XMKMF = @XMKMF@
118 XTRA_LDFLAGS = @XTRA_LDFLAGS@
119 ac_ct_CC = @ac_ct_CC@
120 ac_ct_CXX = @ac_ct_CXX@
121 ac_ct_F77 = @ac_ct_F77@
122 acx_pthread_config = @acx_pthread_config@
123 am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
124 am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
125 am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
126 am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
127 am__include = @am__include@
128 am__leading_dot = @am__leading_dot@
129 am__quote = @am__quote@
130 am__tar = @am__tar@
131 am__untar = @am__untar@
132 bindir = @bindir@
133 build = @build@
134 build_alias = @build_alias@
135 build_cpu = @build_cpu@
136 build_os = @build_os@
137 build_vendor = @build_vendor@
138 datadir = @datadir@
139 datarootdir = @datarootdir@
140 docdir = @docdir@
141 dvidir = @dvidir@
142 exec_prefix = @exec_prefix@
143 host = @host@
144 host_alias = @host_alias@
145 host_cpu = @host_cpu@
146 host_os = @host_os@
147 host_vendor = @host_vendor@
148 htmldir = @htmldir@
149 includedir = @includedir@
150 infodir = @infodir@
151 install_sh = @install_sh@
152 libdir = @libdir@
153 libexecdir = @libexecdir@
154 localedir = @localedir@
155 localstatedir = @localstatedir@
156 mandir = @mandir@
157 mkdir_p = @mkdir_p@
158 oldincludedir = @oldincludedir@
159 pdfdir = @pdfdir@
160 prefix = @prefix@
161 program_transform_name = @program_transform_name@
162 psdir = @psdir@
163 sbindir = @sbindir@
164 sharedstatedir = @sharedstatedir@
165 sysconfdir = @sysconfdir@
166 target = @target@
167 target_alias = @target_alias@
168 target_cpu = @target_cpu@
169 target_os = @target_os@
170 target_vendor = @target_vendor@
171 AUTOMAKE_OPTIONS = foreign 1.7
172 EXTRA_DIST = gdtest.gd2 gdtest.png gdtest_200_300_150_100.png gdtest_merge.png gdtest_wbmp_to_png.png
173 all: all-am
174
175 .SUFFIXES:
176 $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
177 @for dep in $?; do \
178 case '$(am__configure_deps)' in \
179 *$$dep*) \
180 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
181 && exit 0; \
182 exit 1;; \
183 esac; \
184 done; \
185 echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/Makefile'; \
186 cd $(top_srcdir) && \
187 $(AUTOMAKE) --foreign test/Makefile
188 .PRECIOUS: Makefile
189 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
190 @case '$?' in \
191 *config.status*) \
192 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
193 *) \
194 echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
195 cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
196 esac;
197
198 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
199 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
200
201 $(top_srcdir)/configure: $(am__configure_deps)
202 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
203 $(ACLOCAL_M4): $(am__aclocal_m4_deps)
204 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
205
206 mostlyclean-libtool:
207 -rm -f *.lo
208
209 clean-libtool:
210 -rm -rf .libs _libs
211
212 distclean-libtool:
213 -rm -f libtool
214 uninstall-info-am:
215 tags: TAGS
216 TAGS:
217
218 ctags: CTAGS
219 CTAGS:
220
221
222 distdir: $(DISTFILES)
223 @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
224 topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
225 list='$(DISTFILES)'; for file in $$list; do \
226 case $$file in \
227 $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
228 $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
229 esac; \
230 if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
231 dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
232 if test "$$dir" != "$$file" && test "$$dir" != "."; then \
233 dir="/$$dir"; \
234 $(mkdir_p) "$(distdir)$$dir"; \
235 else \
236 dir=''; \
237 fi; \
238 if test -d $$d/$$file; then \
239 if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
240 cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
241 fi; \
242 cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
243 else \
244 test -f $(distdir)/$$file \
245 || cp -p $$d/$$file $(distdir)/$$file \
246 || exit 1; \
247 fi; \
248 done
249 check-am: all-am
250 check: check-am
251 all-am: Makefile
252 installdirs:
253 install: install-am
254 install-exec: install-exec-am
255 install-data: install-data-am
256 uninstall: uninstall-am
257
258 install-am: all-am
259 @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
260
261 installcheck: installcheck-am
262 install-strip:
263 $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
264 install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
265 `test -z '$(STRIP)' || \
266 echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
267 mostlyclean-generic:
268
269 clean-generic:
270
271 distclean-generic:
272 -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
273
274 maintainer-clean-generic:
275 @echo "This command is intended for maintainers to use"
276 @echo "it deletes files that may require special tools to rebuild."
277 clean: clean-am
278
279 clean-am: clean-generic clean-libtool mostlyclean-am
280
281 distclean: distclean-am
282 -rm -f Makefile
283 distclean-am: clean-am distclean-generic distclean-libtool
284
285 dvi: dvi-am
286
287 dvi-am:
288
289 html: html-am
290
291 info: info-am
292
293 info-am:
294
295 install-data-am:
296
297 install-exec-am:
298
299 install-info: install-info-am
300
301 install-man:
302
303 installcheck-am:
304
305 maintainer-clean: maintainer-clean-am
306 -rm -f Makefile
307 maintainer-clean-am: distclean-am maintainer-clean-generic
308
309 mostlyclean: mostlyclean-am
310
311 mostlyclean-am: mostlyclean-generic mostlyclean-libtool
312
313 pdf: pdf-am
314
315 pdf-am:
316
317 ps: ps-am
318
319 ps-am:
320
321 uninstall-am: uninstall-info-am
322
323 .PHONY: all all-am check check-am clean clean-generic clean-libtool \
324 distclean distclean-generic distclean-libtool distdir dvi \
325 dvi-am html html-am info info-am install install-am \
326 install-data install-data-am install-exec install-exec-am \
327 install-info install-info-am install-man install-strip \
328 installcheck installcheck-am installdirs maintainer-clean \
329 maintainer-clean-generic mostlyclean mostlyclean-generic \
330 mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
331 uninstall-info-am
332
333 # Tell versions [3.59,3.63) of GNU make to not export all variables.
334 # Otherwise a system limit (for SysV at least) may be exceeded.
335 .NOEXPORT:
0
1 #ifdef HAVE_CONFIG_H
2 #include "config.h"
3 #endif
4
5 #include <stdio.h>
6 #include <stdlib.h>
7 #include "gd.h"
8
9 /* If palette is true, we convert from truecolor to palette at the end,
10 to test gdImageTrueColorToPalette and see file size/
11 quality tradeoffs. */
12
13 void testDrawing (gdImagePtr im_in,
14 double scale, int blending, int palette, char *filename);
15
16 int
17 main (int argc, char *argv[])
18 {
19 #ifdef HAVE_LIBPNG
20 /* Input and output files */
21 FILE *in;
22
23 /* Input image */
24 gdImagePtr im_in = 0;
25
26 if (argc != 2)
27 {
28 fprintf (stderr, "Usage: testac filename.png\n");
29 exit (1);
30 }
31 /* Load original PNG, which should contain alpha channel
32 information. We will use it in two ways: preserving it
33 literally, for use with compatible browsers, and
34 compositing it ourselves against a background of our
35 choosing (alpha blending). We'll change its size
36 and try creating palette versions of it. */
37 in = fopen (argv[1], "rb");
38 if (!in)
39 {
40 fprintf (stderr, "Can't load %s.\n", argv[1]);
41 exit (1);
42 }
43 else
44 {
45 im_in = gdImageCreateFromPng (in);
46 fclose (in);
47 }
48 testDrawing (im_in, 1.0, 0, 0, "noblending-fullsize-truecolor.png");
49 testDrawing (im_in, 1.0, 1, 0, "blending-fullsize-truecolor.png");
50 testDrawing (im_in, 0.5, 0, 0, "noblending-halfsize-truecolor.png");
51 testDrawing (im_in, 0.5, 1, 0, "blending-halfsize-truecolor.png");
52 testDrawing (im_in, 2.0, 0, 0, "noblending-doublesize-truecolor.png");
53 testDrawing (im_in, 2.0, 1, 0, "blending-doublesize-truecolor.png");
54 testDrawing (im_in, 1.0, 0, 1, "noblending-fullsize-palette.png");
55 testDrawing (im_in, 1.0, 1, 1, "blending-fullsize-palette.png");
56 testDrawing (im_in, 0.5, 0, 1, "noblending-halfsize-palette.png");
57 testDrawing (im_in, 0.5, 1, 1, "blending-halfsize-palette.png");
58 testDrawing (im_in, 2.0, 0, 1, "noblending-doublesize-palette.png");
59 testDrawing (im_in, 2.0, 1, 1, "blending-doublesize-palette.png");
60 gdImageDestroy (im_in);
61 #else
62 fprintf (stderr, "No PNG library support.\n");
63 #endif
64
65 return 0;
66 }
67
68 /* If palette is true, we convert from truecolor to palette at the end,
69 to test gdImageTrueColorToPalette and see file size/
70 quality tradeoffs. */
71 void
72 testDrawing (gdImagePtr im_in,
73 double scale, int blending, int palette, char *filename)
74 {
75 gdImagePtr im_out;
76 FILE *out;
77 /* Create output image. */
78 im_out = gdImageCreateTrueColor ((int) (gdImageSX (im_in) * scale),
79 (int) (gdImageSY (im_in) * scale));
80 /*
81 Request alpha blending. This causes future
82 drawing operations to perform alpha channel blending
83 with the background, resulting in an opaque image.
84 Without this call, pixels in the foreground color are
85 copied literally, *including* the alpha channel value,
86 resulting in an output image which is potentially
87 not opaque. This flag can be set and cleared as often
88 as desired. */
89 gdImageAlphaBlending (im_out, blending);
90
91 /* Flood with light blue. */
92 gdImageFill (im_out, (int) (gdImageSX (im_in) * scale / 2),
93 (int) (gdImageSY (im_in) * scale / 2),
94 gdTrueColor (192, 192, 255));
95 /* Copy the source image. Alpha blending should result in
96 compositing against red. With blending turned off, the
97 browser or viewer will composite against its preferred
98 background, or, if it does not support an alpha channel,
99 we will see the original colors for the pixels that
100 ought to be transparent or semitransparent. */
101 gdImageCopyResampled (im_out, im_in,
102 0, 0,
103 0, 0,
104 (int) (gdImageSX (im_in) * scale),
105 (int) (gdImageSY (im_in) * scale), gdImageSX (im_in),
106 gdImageSY (im_in));
107 /* Write PNG */
108 out = fopen (filename, "wb");
109
110 /* If this image is the result of alpha channel blending,
111 it will not contain an interesting alpha channel itself.
112 Save a little file size by not saving the alpha channel.
113 Otherwise the file would typically be slightly larger. */
114 gdImageSaveAlpha (im_out, !blending);
115
116 /* If requested, convert from truecolor to palette. */
117 if (palette)
118 {
119 /* Dithering, 256 colors. */
120 gdImageTrueColorToPalette (im_out, 1, 256);
121 }
122
123 #ifdef HAVE_LIBPNG
124 gdImagePng (im_out, out);
125 #else
126 fprintf (stderr, "No PNG library support.\n");
127 #endif
128 fclose (out);
129
130 gdImageDestroy (im_out);
131 }
0
1 if (BUILD_TEST)
2 SET(DART_TESTING_TIMEOUT 5)
3
4 INCLUDE(Dart)
5 #ENABLE_TESTING()
6 #set(GD_SOURCE_DIR "/home/pierre/cvs/gd/libgd")
7 #set(GD_INCLUDE_DIR "/home/pierre/cvs/gd/libgd")
8 #set(GD_LIBS_DIR "/home/pierre/cvs/gd/libgd/.libs")
9
10 set(GDTEST_SOURCE_DIR ${GD_SOURCE_DIR}/tests/gdtest)
11
12 # If build in the src tree or set the libs in the lines before
13 #SET(GD_LIB gd)
14
15 SET(CMAKE_BUILD_TYPE TESTINGGCOV)
16 SET(CMAKE_CXX_FLAGS_TESTINGGCOV "-g3 -O0")
17 SET(CMAKE_C_FLAGS_TESTINGGCOV "-g3 -O0")
18
19 message(STATUS "gd include dir: ${GD_INCLUDE_DIR}" )
20 message(STATUS "gd libs dir: ${GD_LIBS_DIR}" )
21
22 include_directories (BEFORE ${GD_INCLUDE_DIR} "${GDTEST_SOURCE_DIR}")
23 link_directories ("${GD_LIBS_DIR}" "${GDTEST_BINARY_DIR}/gdtest")
24
25 #FIND_LIBRARY(GD_LIB "gd" PATHS ${GD_LIBS_DIR})
26 #message(STATUS "GD_LIB: ${GD_LIB}")
27
28 SET(TESTS_DIRS
29 gdtest
30 gdimagearc
31 gdimagecolorclosest
32 gdimagecolorexact
33 gdimagecolorresolve
34 #gdimageellipse
35 gdimageline
36 gdimagefilledellipse
37 gdimagecopyrotated
38 gdtiled
39 gdimagerectangle
40 gdimagefilledrectangle
41 gd2
42 gif
43 jpeg
44 png
45 gdimagecopy
46 gdimagefill
47 gdimagefilltoborder
48 )
49
50 FOREACH(test_dir ${TESTS_DIRS})
51 add_subdirectory (${test_dir})
52 ENDFOREACH(test_dir)
53 endif (BUILD_TEST)
0
1 SET(TESTS_FILES
2 gd2_read
3 gd2_empty_file
4 )
5
6 FOREACH(test_name ${TESTS_FILES})
7 add_executable(${test_name} "${test_name}.c")
8 target_link_libraries (${test_name} gdTest ${GD_LIB})
9 ADD_TEST(${test_name} ${EXECUTABLE_OUTPUT_PATH}/${test_name})
10 ENDFOREACH(test_name)
0 /* $Id: gd2_empty_file.c,v 1.1.2.2 2007/04/10 20:32:35 pajoye Exp $ */
1 #include "gd.h"
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include "gdtest.h"
5
6 int main()
7 {
8 gdImagePtr im;
9 FILE *fp;
10 char path[1024];
11
12 sprintf(path, "%s/gd2/empty.gd2", GDTEST_TOP_DIR);
13
14 fp = fopen(path, "rb");
15 if (!fp) {
16 printf("failed, cannot open file (%s)\n", path);
17 return 1;
18 }
19
20 im = gdImageCreateFromJpeg(fp);
21 fclose(fp);
22
23 if (!im) {
24 return 0;
25 } else {
26 gdImageDestroy(im);
27 return 1;
28 }
29 }
0 /* $Id: gd2_read.c,v 1.1.2.2 2007/04/10 20:32:35 pajoye Exp $ */
1 #include "gd.h"
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include "gdtest.h"
5
6 int main()
7 {
8 int error;
9 gdImagePtr im;
10 FILE *fp;
11 char path[1024];
12
13 sprintf(path, "%s/gd2/conv_test.gd2", GDTEST_TOP_DIR);
14
15 fp = fopen(path, "rb");
16 if (!fp) {
17 printf("failed, cannot open file\n");
18 return 1;
19 }
20
21 im = gdImageCreateFromGd2(fp);
22 fclose(fp);
23
24 sprintf(path, "%s/gd2/conv_test_exp.png", GDTEST_TOP_DIR);
25 if (!gdAssertImageEqualsToFile(path, im)) {
26 error = 1;
27 gdImageDestroy(im);
28 } else {
29 if (im) {
30 gdImageDestroy(im);
31 error = 0;
32 } else {
33 error = 1;
34 }
35 }
36 return error;
37 }
0 SET(TESTS_FILES
1 bug00079
2 )
3
4 FOREACH(test_name ${TESTS_FILES})
5 add_executable(${test_name} "${test_name}.c")
6 target_link_libraries (${test_name} gdTest ${GD_LIB})
7 ADD_TEST(${test_name} ${EXECUTABLE_OUTPUT_PATH}/${test_name})
8 ENDFOREACH(test_name)
0 #include "gd.h"
1 #include "gdtest.h"
2
3 int main()
4 {
5 gdImagePtr im;
6 FILE *fp;
7 int error = 0;
8 char path[1024];
9
10
11 im = gdImageCreateTrueColor(300, 300);
12 gdImageFilledRectangle(im, 0,0, 299,299, 0xFFFFFF);
13
14 gdImageSetAntiAliased(im, 0x000000);
15 gdImageArc(im, 300, 300, 600,600, 0, 360, gdAntiAliased);
16
17 sprintf(path, "%s/gdimagearc/bug00079_exp.png", GDTEST_TOP_DIR);
18 if (!gdAssertImageEqualsToFile(path, im)) {
19 printf("%s failed\n", path);
20 error = 1;
21 }
22
23 gdImageDestroy(im);
24 return error;
25 }
0 SET(TESTS_FILES
1 gdimagecolorclosest
2 )
3
4 FOREACH(test_name ${TESTS_FILES})
5 add_executable(${test_name} "${test_name}.c")
6 target_link_libraries (${test_name} gdTest ${GD_LIB})
7 ADD_TEST("${test_name}" ${EXECUTABLE_OUTPUT_PATH}/${test_name})
8 ENDFOREACH(test_name)
0 #include <gd.h>
1 #include <stdio.h>
2 #include "gdtest.h"
3
4 int main()
5 {
6 gdImagePtr im;
7 int error = 0;
8 int c, i;
9
10 im = gdImageCreateTrueColor(5, 5);
11 c = gdImageColorClosest(im, 255, 0, 255);
12 gdImageDestroy(im);
13
14 if (gdTestAssert(c==0xFF00FF) != 1) {
15 error = -1;
16 }
17
18 im = gdImageCreate(5, 5);
19 c = gdImageColorClosest(im, 255, 0, 255);
20 if (gdTestAssert(c==-1) != 1) {
21 error = -1;
22 }
23 gdImageDestroy(im);
24
25 im = gdImageCreate(5, 5);
26 c = gdImageColorAllocate(im, 255, 0, 255);
27 c = gdImageColorClosest(im, 255, 0, 255);
28 c = gdTrueColorAlpha(gdImageRed(im, c), gdImageGreen(im, c), gdImageBlue(im, c), 0);
29 gdImageDestroy(im);
30 if (gdTestAssert(c==0xFF00FF) != 1) {
31 error = -1;
32 }
33
34
35 im = gdImageCreate(5, 5);
36 for (i=0; i < 255; i++) {
37 c = gdImageColorAllocate(im, 255, 0, 0);
38 }
39 c = gdImageColorClosest(im, 255, 0, 0);
40 c = gdTrueColorAlpha(gdImageRed(im, c), gdImageGreen(im, c), gdImageBlue(im, c), 0);
41 gdImageDestroy(im);
42 if (gdTestAssert(c==0xFF0000) != 1) {
43 error = -1;
44 }
45
46 im = gdImageCreate(5, 5);
47 for (i=0; i < 256; i++) {
48 c = gdImageColorAllocate(im, 255, 0, 0);
49 }
50 c = gdImageColorClosest(im, 255, 0, 0);
51 c = gdTrueColorAlpha(gdImageRed(im, c), gdImageGreen(im, c), gdImageBlue(im, c), 0);
52 gdImageDestroy(im);
53 if (gdTestAssert(c==0xFF0000) != 1) {
54 error = -1;
55 }
56
57 return error;
58 }
0 SET(TESTS_FILES
1 gdimagecolorexact
2 )
3
4 FOREACH(test_name ${TESTS_FILES})
5 add_executable(${test_name} "${test_name}.c")
6 target_link_libraries (${test_name} gdTest ${GD_LIB})
7 ADD_TEST("${test_name}" ${EXECUTABLE_OUTPUT_PATH}/${test_name})
8 ENDFOREACH(test_name)
0 #include <gd.h>
1 #include <stdio.h>
2 #include "gdtest.h"
3
4 int main()
5 {
6 gdImagePtr im;
7 int error = 0;
8 int c, c1, c2, c3, c4, color, i;
9
10 im = gdImageCreateTrueColor(5, 5);
11 c = gdImageColorExact(im, 255, 0, 255);
12 c2 = gdImageColorExactAlpha(im, 255, 0, 255, 100);
13 gdImageDestroy(im);
14
15 if (gdTestAssert(c == 0xFF00FF) != 1) {
16 error = -1;
17 }
18 if (gdTestAssert(c2 == 0x64FF00FF) != 1) {
19 error = -1;
20 }
21
22 im = gdImageCreate(5, 5);
23 c1 = gdImageColorAllocate(im, 255, 0, 255);
24 c2 = gdImageColorAllocate(im, 255, 200, 0);
25 c3 = gdImageColorAllocateAlpha(im, 255, 0, 255, 100);
26
27 c1 = gdImageColorExact(im, 255, 0, 255);
28 c2 = gdImageColorExact(im, 255, 200, 0);
29 c3 = gdImageColorExactAlpha(im, 255, 0, 255, 100);
30 c4 = gdImageColorExactAlpha(im, 255, 34, 255, 100);
31
32 if (gdTestAssert(c1 == 0) != 1) {
33 error = -1;
34 }
35 if (gdTestAssert(c2 == 1) != 1) {
36 error = -1;
37 }
38 if (gdTestAssert(c3 == 2) != 1) {
39 error = -1;
40 }
41 if (gdTestAssert(c4 == -1) != 1) {
42 error = -1;
43 }
44
45 color = gdTrueColorAlpha(gdImageRed(im, c1), gdImageGreen(im, c1),
46 gdImageBlue(im, c1), 0);
47 if (gdTestAssert(color == 0xFF00FF) != 1) {
48 error = -1;
49 }
50 color = gdTrueColorAlpha(gdImageRed(im, c2), gdImageGreen(im, c2),
51 gdImageBlue(im, c2), 0);
52 if (gdTestAssert(color == 0xFFC800) != 1) {
53 error = -1;
54 }
55 color = gdTrueColorAlpha(gdImageRed(im, c3), gdImageGreen(im, c3),
56 gdImageBlue(im, c3), 0);
57 if (gdTestAssert(color == 0xFF00FF) != 1) {
58 error = -1;
59 }
60 gdImageDestroy(im);
61
62 return error;
63 }
0 SET(TESTS_FILES
1 gdimagecolorresolve
2 )
3
4 FOREACH(test_name ${TESTS_FILES})
5 add_executable(${test_name} "${test_name}.c")
6 target_link_libraries (${test_name} gdTest ${GD_LIB})
7 ADD_TEST("${test_name}" ${EXECUTABLE_OUTPUT_PATH}/${test_name})
8 ENDFOREACH(test_name)
0 #include <gd.h>
1 #include <stdio.h>
2 #include "gdtest.h"
3
4 int main()
5 {
6 gdImagePtr im;
7 int error = 0;
8 int c, c1, c2, c3, c4, color, i;
9
10 im = gdImageCreateTrueColor(5, 5);
11 c = gdImageColorResolve(im, 255, 0, 255);
12 c2 = gdImageColorResolveAlpha(im, 255, 0, 255, 100);
13 gdImageDestroy(im);
14
15 if (gdTestAssert(c == 0xFF00FF) != 1) {
16 error = -1;
17 }
18 if (gdTestAssert(c2 == 0x64FF00FF) != 1) {
19 error = -1;
20 }
21
22 im = gdImageCreate(5, 5);
23
24 c1 = gdImageColorResolve(im, 255, 0, 255);
25 c2 = gdImageColorResolve(im, 255, 200, 0);
26 c3 = gdImageColorResolveAlpha(im, 255, 0, 255, 100);
27 c4 = gdImageColorResolveAlpha(im, 255, 34, 255, 100);
28
29 if (gdTestAssert(c1 == 0) != 1) {
30 error = -1;
31 }
32 if (gdTestAssert(c2 == 1) != 1) {
33 error = -1;
34 }
35 if (gdTestAssert(c3 == 2) != 1) {
36 error = -1;
37 }
38 if (gdTestAssert(c4 == 3) != 1) {
39 error = -1;
40 }
41
42 color = gdTrueColorAlpha(gdImageRed(im, c1), gdImageGreen(im, c1),
43 gdImageBlue(im, c1), 0);
44 if (gdTestAssert(color == 0xFF00FF) != 1) {
45 error = -1;
46 }
47 color = gdTrueColorAlpha(gdImageRed(im, c2), gdImageGreen(im, c2),
48 gdImageBlue(im, c2), 0);
49 if (gdTestAssert(color == 0xFFC800) != 1) {
50 error = -1;
51 }
52 color = gdTrueColorAlpha(gdImageRed(im, c3), gdImageGreen(im, c3),
53 gdImageBlue(im, c3), 0);
54 if (gdTestAssert(color == 0xFF00FF) != 1) {
55 error = -1;
56 }
57 color = gdTrueColorAlpha(gdImageRed(im, c4), gdImageGreen(im, c4),
58 gdImageBlue(im, c4), 0);
59 if (gdTestAssert(color == 0xFF22FF) != 1) {
60 error = -1;
61 }
62 gdImageDestroy(im);
63
64 return error;
65 }
0 add_executable(bug00007 bug00007.c)
1 target_link_libraries (bug00007 gdTest ${GD_LIB})
2 ADD_TEST(bug00007 ${EXECUTABLE_OUTPUT_PATH}/bug00007)
0 #include <unistd.h>
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <gd.h>
4
5 #include "gdtest.h"
6
7 int main()
8 {
9 gdImagePtr dst_tc, src;
10 int c0,c1;
11
12 src = gdImageCreate(5,5);
13 gdImageAlphaBlending(src, 0);
14
15 c0 = gdImageColorAllocate(src, 255,255,255);
16 c1 = gdImageColorAllocateAlpha(src, 255,0,0,70);
17
18 gdImageFilledRectangle(src, 0,0, 4,4, c1);
19
20 dst_tc = gdImageCreateTrueColor(5,5);
21 gdImageAlphaBlending(dst_tc, 0);
22 gdImageCopy(dst_tc, src, 0,0, 0,0, gdImageSX(src), gdImageSY(src));
23
24 //CuAssertImageEquals(tc, src, dst_tc);
25
26 /* Destroy it */
27 gdImageDestroy(dst_tc);
28 gdImageDestroy(src);
29 return 0;
30 }
0
1 SET(TESTS_FILES
2 bug00020
3 )
4
5 FOREACH(test_name ${TESTS_FILES})
6 add_executable(${test_name} "${test_name}.c")
7 target_link_libraries (${test_name} gdTest ${GD_LIB})
8 ADD_TEST(${test_name} ${EXECUTABLE_OUTPUT_PATH}/${test_name})
9 ENDFOREACH(test_name)
0 /* $Id: bug00020.c,v 1.1.2.2 2007/04/10 20:32:36 pajoye Exp $ */
1 #include "gd.h"
2 #include "gdtest.h"
3
4 #define width 50
5
6 int main()
7 {
8 gdImagePtr im, im2;
9 int error = 0;
10 char path[1024];
11
12 sprintf(path, "%s/gdimagecopyrotated/bug00020_exp.png", GDTEST_TOP_DIR);
13
14 im = gdImageCreateTrueColor(width, width);
15 gdImageFilledRectangle(im, 0,0, width, width, 0xFF0000);
16 gdImageColorTransparent(im, 0xFF0000);
17 gdImageFilledEllipse(im, width/2, width/2, width - 20, width - 10,
18 0x50FFFFFF);
19
20 im2 = gdImageCreateTrueColor(width, width);
21
22 gdImageCopyRotated(im2, im, width / 2, width / 2, 0,0, width, width, 60);
23
24 if (!gdAssertImageEqualsToFile(path, im2)) {
25 error = 1;
26 }
27
28 gdImageDestroy(im2);
29 gdImageDestroy(im);
30 return error;
31 }
0
1 SET(TESTS_FILES
2 bug00002_1
3 bug00002_2
4 bug00002_3
5 bug00002_4
6 )
7 FOREACH(test_name ${TESTS_FILES})
8 add_executable(${test_name} "${test_name}.c")
9 target_link_libraries (${test_name} gdTest ${GD_LIB})
10 ADD_TEST(${test_name} ${EXECUTABLE_OUTPUT_PATH}/${test_name})
11 ENDFOREACH(test_name)
0 #include <gd.h>
1 #include <stdio.h>
2 #include "gdtest.h"
3
4 int main()
5 {
6 gdImagePtr im;
7 int error = 0;
8 FILE *fp;
9 char path[1024];
10
11 fputs("flag 0\n", stdout);
12 im = gdImageCreateTrueColor(100, 100);
13
14 fputs("flag 1\n", stdout);
15 gdImageFill(im, 0, 0, 0xffffff);
16 fputs("flag 2\n", stdout);
17 gdImageFill(im, 0, 0, 0xffffff);
18 fputs("flag 3\n", stdout);
19
20 fp = fopen("a.png", "wb");
21 /* Write img to stdout */
22 gdImagePng(im,fp);
23 fclose(fp);
24
25 sprintf(path, "%s/gdimagefill/bug00002_1_exp.png", GDTEST_TOP_DIR);
26 if (!gdAssertImageEqualsToFile(path, im)) {
27 error = 1;
28 }
29
30 /* Destroy it */
31 gdImageDestroy(im);
32 return error;
33 }
34
0 #include <gd.h>
1 #include <stdio.h>
2 #include "gdtest.h"
3
4 int main()
5 {
6 gdImagePtr im, tile;
7 int im_white, im_black, tile_white, tile_black;
8 int x,y, error = 0;
9 FILE *fp;
10 char path[1024];
11
12 fputs("flag 0\n", stdout);
13 im = gdImageCreate(150, 150);
14 tile = gdImageCreate(36, 36);
15 tile_white = gdImageColorAllocate(tile,255,255,255);
16 tile_black = gdImageColorAllocate(tile,0,0,0);
17 im_white = gdImageColorAllocate(im,255,255,255);
18 im_black = gdImageColorAllocate(im,0,0,0);
19
20
21 /* create the dots pattern */
22 for (x=0;x<36;x+=2) {
23 for (y=0;y<36;y+=2) {
24 gdImageSetPixel(tile,x,y,tile_black);
25 }
26 }
27
28 gdImageSetTile(im,tile);
29 gdImageRectangle(im, 9,9,139,139, im_black);
30 gdImageLine(im, 9,9,139,139, im_black);
31 gdImageFill(im, 11,12, gdTiled);
32
33
34 fputs("flag 1\n", stdout);
35 gdImageFill(im, 0, 0, 0xffffff);
36 fputs("flag 2\n", stdout);
37 gdImageFill(im, 0, 0, 0xffffff);
38 fputs("flag 2\n", stdout);
39
40
41 sprintf(path, "%s/gdimagefill/bug00002_2_exp.png", GDTEST_TOP_DIR);
42 if (!gdAssertImageEqualsToFile(path, im)) {
43 error = 1;
44 }
45
46 /* Destroy it */
47 gdImageDestroy(im);
48 return error;
49 }
50
0 /* $Id: bug00002_3.c,v 1.1.2.2 2007/04/10 20:32:36 pajoye Exp $ */
1 #include <gd.h>
2 #include <stdio.h>
3 #include "gdtest.h"
4
5 int main()
6 {
7 gdImagePtr im, tile;
8 int im_white, im_black, tile_white, tile_black;
9 int x,y, error = 0;
10 FILE *fp;
11 char path[1024];
12
13 fputs("flag 0\n", stdout);
14 im = gdImageCreate(150, 150);
15
16
17 tile = gdImageCreateTrueColor(36, 36);
18
19 tile_white = gdImageColorAllocate(tile,255,255,255);
20 tile_black = gdImageColorAllocate(tile,55,0,0);
21 im_white = gdImageColorAllocate(im,255,255,255);
22 im_black = gdImageColorAllocate(im,0,0,0);
23
24 gdImageFill(tile, 0,0, tile_white);
25 gdImageColorTransparent(tile, tile_black);
26 gdImageColorTransparent(im, im_black);
27
28 /* create the dots pattern */
29 for (x=0;x<36;x+=2) {
30 for (y=0;y<36;y+=2) {
31 gdImageSetPixel(tile,x,y,tile_black);
32 }
33 }
34
35 gdImageSetTile(im,tile);
36 gdImageRectangle(im, 9,9,139,139, im_black);
37 gdImageLine(im, 9,9,139,139, im_black);
38 gdImageFill(im, 11,12, gdTiled);
39
40
41 fputs("flag 1\n", stdout);
42 gdImageFill(im, 0, 0, 0xffffff);
43 fputs("flag 2\n", stdout);
44 gdImageFill(im, 0, 0, 0xffffff);
45 fputs("flag 3\n", stdout);
46
47 sprintf(path, "%s/gdimagefill/bug00002_3_exp.png", GDTEST_TOP_DIR);
48 if (!gdAssertImageEqualsToFile(path, im)) {
49 error = 1;
50 }
51
52 /* Destroy it */
53 gdImageDestroy(im);
54 return error;
55 }
56
0 /*ImageFill Pattern fill */
1
2 #include "gd.h"
3 #include "gdtest.h"
4
5 int main()
6 {
7 gdImagePtr im;
8 FILE *fp;
9 int red, blue, white, black, error = 0;
10 char path[1024];
11
12 im = gdImageCreate(50,100);
13 red = gdImageColorAllocate(im, 255, 0, 0);
14 blue = gdImageColorAllocate(im, 0,0,255);
15 white = gdImageColorAllocate(im, 255,255,255);
16 black = gdImageColorAllocate(im, 0,0,0);
17 gdImageFill(im, 0,0, black);
18
19 gdImageLine(im, 20,20,180,20, white);
20 gdImageLine(im, 20,20,20,70, blue);
21 gdImageLine(im, 20,70,180,70, red);
22 gdImageLine(im, 180,20,180,45, white);
23 gdImageLine(im, 180,70,180,45, red);
24 gdImageLine(im, 20,20,100,45, blue);
25 gdImageLine(im, 20,70,100,45, blue);
26 gdImageLine(im, 100,45,180,45, red);
27
28 gdImageFill(im, 21,45, blue);
29 gdImageFill(im, 100,69, red);
30 gdImageFill(im, 100,21, white);
31
32 sprintf(path, "%s/gdimagefill/bug00002_4_exp.png", GDTEST_TOP_DIR);
33 if (!gdAssertImageEqualsToFile(path, im)) {
34 error = 1;
35 }
36
37 /* Destroy it */
38 gdImageDestroy(im);
39 return error;
40 }
0
1 SET(TESTS_FILES
2 bug00010
3 )
4
5 FOREACH(test_name ${TESTS_FILES})
6 add_executable(${test_name} "${test_name}.c")
7 target_link_libraries (${test_name} gdTest ${GD_LIB})
8 ADD_TEST(${test_name} ${EXECUTABLE_OUTPUT_PATH}/${test_name})
9 ENDFOREACH(test_name)
0 /* $Id: bug00010.c,v 1.1.2.2 2007/04/10 20:32:36 pajoye Exp $ */
1 #include "gd.h"
2 #include "gdtest.h"
3
4 int main()
5 {
6 gdImagePtr im;
7 int error = 0;
8 char path[1024];
9
10 im = gdImageCreateTrueColor(100,100);
11 gdImageFilledEllipse(im, 50,50, 70, 90, 0x50FFFFFF);
12
13 sprintf(path, "%s/gdimagefilledellipse/bug00010_exp.png", GDTEST_TOP_DIR);
14 if (!gdAssertImageEqualsToFile(path, im)) {
15 error = 1;
16 }
17
18 gdImageDestroy(im);
19 return error;
20 }
0 SET(TESTS_FILES
1 bug00004
2 bug00078
3 )
4
5 FOREACH(test_name ${TESTS_FILES})
6 add_executable(${test_name} "${test_name}.c")
7 target_link_libraries (${test_name} gdTest ${GD_LIB})
8 ADD_TEST(${test_name} ${EXECUTABLE_OUTPUT_PATH}/${test_name})
9 ENDFOREACH(test_name)
0 #include "gd.h"
1 #include "gdtest.h"
2
3 int main()
4 {
5 gdImagePtr im;
6 int c1,c2,c3,c4,c5;
7
8 im = gdImageCreateTrueColor(100,100);
9 gdImageFilledRectangle(im, 2,2, 80,95, 0x50FFFFFF);
10
11 c1 = gdImageGetTrueColorPixel(im, 2, 2);
12 c2 = gdImageGetTrueColorPixel(im, 80, 95);
13 c3 = gdImageGetTrueColorPixel(im, 80, 2);
14 c4 = gdImageGetTrueColorPixel(im, 2, 95);
15 c5 = gdImageGetTrueColorPixel(im, 49, 49);
16
17 gdImageDestroy(im);
18 if (0x005e5e5e == c1 && 0x005e5e5e == c2 &&
19 0x005e5e5e == c3 && 0x005e5e5e == c4) {
20 return 0;
21 } else {
22 return 1;
23 }
24 }
25
0 #include "gd.h"
1 #include "gdtest.h"
2
3 int main()
4 {
5 gdImagePtr im;
6 int c1,c2,c3,c4,c5;
7
8 im = gdImageCreateTrueColor(100,100);
9 gdImageFilledRectangle(im, 2,2, 80,95, 0x50FFFFFF);
10 c1 = gdImageGetTrueColorPixel(im, 2, 2);
11 c2 = gdImageGetTrueColorPixel(im, 80, 95);
12 c3 = gdImageGetTrueColorPixel(im, 80, 2);
13 c4 = gdImageGetTrueColorPixel(im, 2, 95);
14 c5 = gdImageGetTrueColorPixel(im, 49, 49);
15
16 if (!(0x005e5e5e == c1 && 0x005e5e5e == c2 &&
17 0x005e5e5e == c3 && 0x005e5e5e == c4)) {
18 return 1;
19 }
20 gdImageFilledRectangle(im, 0, 0, 99, 99, 0x0);
21
22 gdImageFilledRectangle(im, 80,95, 2,2, 0x50FFFFFF);
23 c1 = gdImageGetTrueColorPixel(im, 2, 2);
24 c2 = gdImageGetTrueColorPixel(im, 80, 95);
25 c3 = gdImageGetTrueColorPixel(im, 80, 2);
26 c4 = gdImageGetTrueColorPixel(im, 2, 95);
27 c5 = gdImageGetTrueColorPixel(im, 49, 49);
28
29 if (!(0x005e5e5e == c1 && 0x005e5e5e == c2 &&
30 0x005e5e5e == c3 && 0x005e5e5e == c4)) {
31 return 1;
32 }
33
34 gdImageDestroy(im);
35 return 0;
36 }
37
0
1 SET(TESTS_FILES
2 bug00037
3 )
4 FOREACH(test_name ${TESTS_FILES})
5 add_executable(${test_name} "${test_name}.c")
6 target_link_libraries (${test_name} gdTest ${GD_LIB})
7 ADD_TEST(${test_name} ${EXECUTABLE_OUTPUT_PATH}/${test_name})
8 ENDFOREACH(test_name)
0 #include <gd.h>
1 #include <stdio.h>
2 #include "gdtest.h"
3
4 int main()
5 {
6 gdImagePtr im;
7 int bordercolor, color;
8
9 im = gdImageCreateTrueColor(100, 100);
10
11 gdImageAlphaBlending(im, 1);
12 gdImageSaveAlpha(im, 1);
13 bordercolor = gdImageColorAllocateAlpha(im, 0, 0, 0, 2);
14 color = gdImageColorAllocateAlpha(im, 0, 0, 0, 1);
15
16 gdImageFillToBorder(im, 5, 5, bordercolor, color);
17
18 color = gdImageGetPixel(im, 5, 5);
19
20 gdImageDestroy(im);
21 if (gdTestAssert(color==0x1000000)) {
22 return 0;
23 } else {
24 printf("c: %X, expected %X\n", color, 0x1000000);
25 return -1;
26 }
27
28 }
29
0 SET(TESTS_FILES
1 gdimageline_aa
2 gdimageline_aa_outofrange
3 bug00077
4 bug00072
5 )
6
7 FOREACH(test_name ${TESTS_FILES})
8 add_executable(${test_name} "${test_name}.c")
9 target_link_libraries (${test_name} gdTest ${GD_LIB})
10 ADD_TEST(${test_name} ${EXECUTABLE_OUTPUT_PATH}/${test_name})
11 ENDFOREACH(test_name)
0 #include "gdtest.h"
1 #include "gd.h"
2
3 int main()
4 {
5 gdImagePtr im;
6 const char *exp = "bug00072_exp.png";
7 const int files_cnt = 4;
8 FILE *fp;
9 int i = 0;
10 int error = 0;
11
12 char path[1024];
13
14
15 im = gdImageCreateTrueColor(11, 11);
16 gdImageFilledRectangle(im, 0, 0, 10, 10, 0xFFFFFF);
17 gdImageSetThickness(im, 3);
18
19 gdImageLine(im, 5, 0, 5, 11, 0x000000);
20 gdImageLine(im, 0, 5, 11, 5, 0x000000);
21 gdImageLine(im, 0, 0, 11, 11, 0x000000);
22
23 gdImageSetThickness(im, 1);
24
25 gdImageLine(im, 5, 0, 5, 11, 0xFF0000);
26 gdImageLine(im, 0, 5, 11, 5, 0xFF0000);
27 gdImageLine(im, 0, 0, 11, 11, 0xFF0000);
28
29 sprintf(path, "%s/gdimageline/%s", GDTEST_TOP_DIR, exp);
30 if (!gdAssertImageEqualsToFile(path, im)) {
31 error = 1;
32 }
33
34 gdImageDestroy(im);
35
36 return error;
37 }
0 #include "gdtest.h"
1 #include "gd.h"
2
3 int main()
4 {
5 gdImagePtr im;
6 const char *exp = "bug00077_exp.png";
7 const int files_cnt = 4;
8 FILE *fp;
9 int i = 0;
10 int error = 0;
11
12 char path[1024];
13
14
15 im = gdImageCreateTrueColor(11, 11);
16 gdImageFilledRectangle(im, 0, 0, 10, 10, 0xFFFFFF);
17 gdImageSetThickness(im, 1);
18
19 gdImageLine(im, 0, 10, 0, 0, 0x0);
20 gdImageLine(im, 5, 10, 5, 0, 0x0);
21 gdImageLine(im, 10, 5, 0, 5, 0x0);
22 gdImageLine(im, 10, 10, 0, 10, 0x0);
23
24 sprintf(path, "%s/gdimageline/%s", GDTEST_TOP_DIR, exp);
25
26 if (!gdAssertImageEqualsToFile(path, im)) {
27 error = 1;
28 }
29
30 gdImageDestroy(im);
31
32 return error;
33 }
0 #include <gd.h>
1 #include <stdio.h>
2 #include <math.h>
3 #include "gdtest.h"
4
5
6 int gen_image(const char* filename, int idx, int reverse_x, int width, int height, int bgd)
7 {
8 double gradient = height / (width*2.0);
9 int offset = idx*width;
10 int x1,y1,x2,y2, error = 0;
11
12 gdImagePtr im = gdImageCreateTrueColor(width,height);
13 if (bgd==1) {
14 gdImageFilledRectangle(im,0,0,width-1,height-1, gdTrueColorAlpha(255, 255, 255, 0));
15 } else {
16 gdImageFilledRectangle(im,0,0,width-1,height-1, gdTrueColorAlpha(255, 255, 0, 0));
17 }
18
19 gdImageSetAntiAliased(im, gdTrueColorAlpha(0,0,0,0));
20
21 /*
22 test for potential segfault (introduced with AA improvements, fixed
23 with the same patch - but I didn't notice it until later).*/
24 gdImageLine(im,-1,-1,-1,-1,gdAntiAliased);
25
26 x1 = floor(reverse_x * -width + 0.5);
27 y1 = (offset-width) * gradient + 0.5;
28
29 x2 = floor(reverse_x * width*2 + 0.5);
30 y2 = floor((offset+width*2) * gradient + 0.5);
31
32 // draw an AA line
33 gdImageLine(im, x1, y1, x2, y2, gdAntiAliased);
34
35 gdImageLine(im, 0, im->sy - 1, im->sx, im->sy - 1, 0x40FF0000);
36
37 if (!gdAssertImageEqualsToFile(filename, im)) {
38 printf("%s failed\n", filename);
39 error = 1;
40 }
41 gdImageDestroy(im);
42 return error;
43 }
44
45 int main()
46 {
47 int i;
48 int error = 0;
49 char path[1024];
50 const char *srcdir;
51 int n;
52
53 sprintf(path, "%s/gdimageline/gdimageline_aa_a_0_exp.png", GDTEST_TOP_DIR);
54 error |= gen_image(path,0,1,10,100, 1);
55
56 sprintf(path, "%s/gdimageline/gdimageline_aa_a_1_exp.png", GDTEST_TOP_DIR);
57 error |= gen_image(path,1,1,10,100, 2);
58
59 sprintf(path, "%s/gdimageline/gdimageline_aa_b_0_exp.png", GDTEST_TOP_DIR);
60 error |= gen_image(path,2,-1,10,100, 1);
61 sprintf(path, "%s/gdimageline/gdimageline_aa_b_1_exp.png", GDTEST_TOP_DIR);
62 error |= gen_image(path,1,-1,10,100, 2);
63
64 sprintf(path, "%s/gdimageline/gdimageline_aa_c_0_exp.png", GDTEST_TOP_DIR);
65 error |= gen_image(path,0,1,100,10, 1);
66 sprintf(path, "%s/gdimageline/gdimageline_aa_c_1_exp.png", GDTEST_TOP_DIR);
67 error |= gen_image(path,1,1,100,10, 2);
68
69 sprintf(path, "%s/gdimageline/gdimageline_aa_d_0_exp.png", GDTEST_TOP_DIR);
70 error |= gen_image(path,2,-1,100,10, 1);
71 sprintf(path, "%s/gdimageline/gdimageline_aa_d_1_exp.png", GDTEST_TOP_DIR);
72 error |= gen_image(path,1,-1,100,10, 2);
73
74 return error;
75 }
0 #include <gd.h>
1 #include <stdio.h>
2 #include "gdtest.h"
3
4 int main()
5 {
6 gdImagePtr im;
7 int bordercolor, color;
8
9 im = gdImageCreateTrueColor(300, 300);
10
11 gdImageSetAntiAliased(im, gdTrueColorAlpha(255, 255, 255, 0));
12
13 gdImageLine(im, -1, -1, -1, -1, gdAntiAliased);
14 gdImageLine(im, 299, 299, 0, 299, gdAntiAliased);
15 gdImageLine(im, 1,1, 50, 50, gdAntiAliased);
16
17 /* Test for segfaults, if we reach this point, the test worked */
18 return 0;
19 }
0
1 add_executable(bug00003 bug00003.c)
2 target_link_libraries (bug00003 gdTest ${GD_LIB})
3 ADD_TEST(bug00003 ${EXECUTABLE_OUTPUT_PATH}/bug00003)
0 #include "gd.h"
1 #include "gdtest.h"
2
3 int main()
4 {
5 gdImagePtr im;
6 FILE *fp;
7 int c1,c2,c3,c4;
8
9 im = gdImageCreateTrueColor(100,100);
10 gdImageRectangle(im, 2,2, 80,95, 0x50FFFFFF);
11 c1 = gdImageGetTrueColorPixel(im, 2, 2);
12 c2 = gdImageGetTrueColorPixel(im, 80, 95);
13 c3 = gdImageGetTrueColorPixel(im, 80, 2);
14 c4 = gdImageGetTrueColorPixel(im, 2, 95);
15
16 gdImageDestroy(im);
17 if (0x005e5e5e == c1 && 0x005e5e5e == c2 &&
18 0x005e5e5e == c3 && 0x005e5e5e == c4) {
19 return 0;
20 } else {
21 return 1;
22 }
23 }
0 SET(GDTEST_TOP_DIR "${GD_SOURCE_DIR}/tests")
1 CONFIGURE_FILE(test_config.h.cmake test_config.h ESCAPE_QUOTES)
2 add_library (gdTest gdtest.c)
0 #include <assert.h>
1 #include <setjmp.h>
2 #include <stdlib.h>
3 #include <stdio.h>
4 #include <string.h>
5 #include <math.h>
6 #include <gd.h>
7
8 #include "gdtest.h"
9 #include "test_config.h"
10
11
12 gdImagePtr gdTestImageFromPng(const char *filename)
13 {
14 gdImagePtr image;
15
16 FILE *fp;
17
18 fp = fopen(filename, "rb");
19
20 if (!fp) {
21 return NULL;
22 }
23 image = gdImageCreateFromPng(fp);
24 fclose(fp);
25 return image;
26 }
27
28 /* Compare two buffers, returning the number of pixels that are
29 * different and the maximum difference of any single color channel in
30 * result_ret.
31 *
32 * This function should be rewritten to compare all formats supported by
33 * cairo_format_t instead of taking a mask as a parameter.
34 */
35 void gdTestImageDiff(gdImagePtr buf_a, gdImagePtr buf_b,
36 gdImagePtr buf_diff, CuTestImageResult *result_ret)
37 {
38 int x, y;
39 CuTestImageResult result = {0, 0};
40
41 int c1, c2;
42
43 for (y = 0; y < gdImageSY(buf_a); y++) {
44 for (x = 0; x < gdImageSX(buf_a); x++) {
45 c1 = gdImageGetTrueColorPixel(buf_a, x, y);
46 c2 = gdImageGetTrueColorPixel(buf_b, x, y);
47
48 /* check if the pixels are the same */
49 if (c1 != c2) {
50 int r1,b1,g1,a1,r2,b2,g2,a2;
51 unsigned int diff_a,diff_r,diff_g,diff_b;
52
53 a1 = gdTrueColorGetAlpha(c1);
54 a2 = gdTrueColorGetAlpha(c2);
55 diff_a = abs (a1 - a2);
56 diff_a *= 4; /* emphasize */
57
58 if (diff_a) {
59 diff_a += 128; /* make sure it's visible */
60 }
61 if (diff_a > gdAlphaMax) {
62 diff_a = gdAlphaMax/2;
63 }
64
65 r1 = gdTrueColorGetRed(c1);
66 r2 = gdTrueColorGetRed(c2);
67 diff_r = abs (r1 - r2);
68 //diff_r *= 4; /* emphasize */
69 if (diff_r) {
70 diff_r += gdRedMax/2; /* make sure it's visible */
71 }
72 if (diff_r > 255) {
73 diff_r = 255;
74 }
75
76 g1 = gdTrueColorGetGreen(c1);
77 g2 = gdTrueColorGetGreen(c2);
78 diff_g = abs (g1 - g2);
79 diff_g *= 4; /* emphasize */
80 if (diff_g) {
81 diff_g += gdGreenMax/2; /* make sure it's visible */
82 }
83 if (diff_g > 255) {
84 diff_g = 255;
85 }
86
87 b1 = gdTrueColorGetBlue(c1);
88 b2 = gdTrueColorGetBlue(c2);
89 diff_b = abs (b1 - b2);
90 diff_b *= 4; /* emphasize */
91 if (diff_b) {
92 diff_b += gdBlueMax/2; /* make sure it's visible */
93 }
94 if (diff_b > 255) {
95 diff_b = 255;
96 }
97
98 result.pixels_changed++;
99 gdImageSetPixel(buf_diff, x,y, gdTrueColorAlpha(diff_r, diff_g, diff_b, diff_a));
100 } else {
101 gdImageSetPixel(buf_diff, x,y, gdTrueColorAlpha(255,255,255,0));
102 }
103 }
104 }
105
106 *result_ret = result;
107 }
108
109 int gdTestImageCompareToImage(const char* file, int line, const char* message,
110 gdImagePtr expected, gdImagePtr actual)
111 {
112 char buf[GDTEST_STRING_MAX];
113 unsigned int width_a, height_a;
114 unsigned int width_b, height_b;
115 gdImagePtr surface_diff = NULL;
116 CuTestImageResult result;
117
118 if (!actual) {
119 fprintf(stderr, "Image is NULL\n");
120 goto fail;
121 }
122
123 width_a = gdImageSX(expected);
124 height_a = gdImageSY(expected);
125 width_b = gdImageSX(actual);
126 height_b = gdImageSY(actual);
127
128 if (width_a != width_b || height_a != height_b) {
129 fprintf(stderr, "Image size mismatch: (%ux%u) vs. (%ux%u)\n for %s vs. buffer\n",
130 width_a, height_a,
131 width_b, height_b,
132 file);
133 goto fail;
134 }
135
136 surface_diff = gdImageCreateTrueColor(width_a, height_a);
137
138 gdTestImageDiff(expected, actual, surface_diff, &result);
139 if (result.pixels_changed>0) {
140 char *filename;
141 char file_diff[255];
142 char file_out[1024];
143 FILE *fp;
144 int len, p;
145
146 sprintf(buf, "Total pixels changed: %d with a maximum channel difference of %d.\n",
147 result.pixels_changed,
148 result.max_diff
149 );
150
151 p = len = strlen(file);
152 p--;
153
154 /* Use only the filename (and store it in the bld dir not the src dir
155 */
156 while(p > 0 && (file[p] != '/' && file[p] != '\\')) {
157 p--;
158 }
159 sprintf(file_diff, "%s_%u_diff.png", file + p + 1, line);
160 sprintf(file_out, "%s_%u_out.png", file + p + 1, line);
161
162 fp = fopen(file_diff, "wb");
163 gdImagePng(surface_diff,fp);
164 fclose(fp);
165
166 fp = fopen(file_out, "wb");
167 gdImagePng(actual, fp);
168 fclose(fp);
169 } else {
170 if (surface_diff) {
171 gdImageDestroy(surface_diff);
172 }
173 return 1;
174 }
175
176 fail:
177 if (surface_diff) {
178 gdImageDestroy(surface_diff);
179 }
180 return 0;
181 }
182
183 int gdTestImageCompareToFile(const char* file, int line, const char* message,
184 const char *expected_file, gdImagePtr actual)
185 {
186 char buf[GDTEST_STRING_MAX];
187 gdImagePtr expected;
188 int res = 1;
189
190 expected = gdTestImageFromPng(expected_file);
191
192 if (!expected) {
193 gdTestErrorMsg("Cannot open PNG <%s>", expected_file, file, line);
194 res = 0;
195 } else {
196 res = gdTestImageCompareToImage(file, line, message, expected, actual);
197 gdImageDestroy(expected);
198 }
199 return res;
200 }
201
202 int _gdTestAssert(const char* file, int line, const char* message, int condition)
203 {
204 if (condition) return 1;
205 gdTestErrorMsg(message, file, line);
206 return 0;
207 }
208
209 int _gdTestErrorMsg(const char* file, int line, const char* format, ...) /* {{{ */
210 {
211 char output_buf[512];
212 va_list args;
213 char *debug;
214
215 va_start (args, format);
216 vsnprintf (output_buf, sizeof (output_buf), format, args);
217 va_end (args);
218
219 fputs (output_buf, stderr);
220 fflush (stderr);
221 }
222 /* }}} */
0 #ifndef GD_TEST_H
1 #define GD_TEST_H
2
3 #include <stdarg.h>
4 #include <gd.h>
5 #include "test_config.h"
6
7 #define GDTEST_STRING_MAX 1024
8 typedef struct CuTestImageResult CuTestImageResult;
9 struct CuTestImageResult {
10 unsigned int pixels_changed;
11 unsigned int max_diff;
12 };
13
14
15 /* Internal versions of assert functions -- use the public versions */
16 gdImagePtr gdTestImageFromPng(const char *filename);
17
18 void gdTestImageDiff(gdImagePtr buf_a, gdImagePtr buf_b,
19 gdImagePtr buf_diff, CuTestImageResult *result_ret);
20
21 int gdTestImageCompareToImage(const char* file, int line, const char* message,
22 gdImagePtr expected, gdImagePtr actual);
23
24 int gdTestImageCompareToFile(const char* file, int line, const char* message,
25 const char *expected_file, gdImagePtr actual);
26
27 int _gdTestErrorMsg(const char* file, int line, const char* string, ...);
28
29 /* public assert functions */
30 #define gdAssertImageEqualsToFile(ex,ac) gdTestImageCompareToFile(__FILE__,__LINE__,NULL,(ex),(ac))
31 #define gdAssertImageFileEqualsMsg(ex,ac) gdTestImageCompareFiles(__FILE__,__LINE__,(ms),(ex),(ac))
32
33 #define gdAssertImageEquals(tc,ex,ac) CuAssertImageEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(ac))
34 #define gdAssertImageEqualsMsg(tc,ex,ac) CuAssertImageEquals_LineMsg((tc),__FILE__,__LINE__,(ms),(ex),(ac))
35
36 #define gdTestAssert(cond) _gdTestAssert(__FILE__, __LINE__, "assert failed in <%s:%i>\n", (cond))
37
38 #define gdTestErrorMsg(format, ...) _gdTestErrorMsg(__FILE__, __LINE__, format, ## __VA_ARGS__)
39
40 #endif /* GD_TEST_H */
0 /* Define the full path to the top src dir, required to get the path
1 * of each input data */
2 #cmakedefine GDTEST_TOP_DIR "@GDTEST_TOP_DIR@"
3
0 add_executable(bug00032 bug00032.c)
1
2 target_link_libraries (bug00032 gdTest ${GD_LIB})
3
4 ADD_TEST(bug00032 ${EXECUTABLE_OUTPUT_PATH}/bug00032)
0 #include <gd.h>
1 #include <stdio.h>
2 #include "gdtest.h"
3
4 #define exp_img "bug00032_exp.png"
5
6 int main()
7 {
8 gdImagePtr im, tile;
9 char exp[] = "bug00032_exp.png";
10 FILE *fp;
11
12 tile = gdImageCreateTrueColor(10, 10);
13 gdImageFill(tile, 0, 0, 0xFFFFFF);
14 gdImageLine(tile, 0,0, 9,9, 0xff0000);
15 gdImageColorTransparent(tile, 0xFFFFFF);
16
17 im = gdImageCreateTrueColor(50, 50);
18 gdImageFilledRectangle(im, 0, 0, 25, 25, 0x00FF00);
19
20 gdImageSetTile(im, tile);
21 gdImageFilledRectangle(im, 10, 10, 49, 49, gdTiled);
22
23 gdAssertImageEqualsToFile(exp_img, im);
24
25 /* Destroy it */
26 gdImageDestroy(im);
27 gdImageDestroy(tile);
28 return 0;
29 }
30
0
1 SET(TESTS_FILES
2 bug00005
3 bug00005_2
4 bug00006
5 bug00060
6 bug00066
7 )
8
9 FOREACH(test_name ${TESTS_FILES})
10 add_executable(${test_name} "${test_name}.c")
11 target_link_libraries (${test_name} gdTest ${GD_LIB})
12 ADD_TEST(${test_name} ${EXECUTABLE_OUTPUT_PATH}/${test_name})
13 ENDFOREACH(test_name)
0
1 #include "gdtest.h"
2 #include "gd.h"
3
4 int main()
5 {
6 gdImagePtr im;
7 char * giffiles[4] = {"bug00005_0.gif", "bug00005_1.gif", "bug00005_2.gif", "bug00005_3.gif"};
8 int valid[4] = {0, 0, 0, 0};
9 char *exp[4] = {NULL, NULL, "bug00005_2_exp.png", NULL};
10 const int files_cnt = 4;
11 FILE *fp;
12 int i = 0;
13 int error = 0;
14 char path[1024];
15
16 for (i=0; i < files_cnt; i++) {
17 sprintf(path, "%s/gif/%s", GDTEST_TOP_DIR, giffiles[i]);
18
19 fp = fopen(path, "rb");
20 if (!fp) {
21 gdTestErrorMsg("<%s> Input file does not exist!\n", path);
22 return 1;
23 }
24
25 im = gdImageCreateFromGif(fp);
26 fclose(fp);
27
28 if (valid[i]) {
29 if (!im) {
30 error = 1;
31 } else {
32 sprintf(path, "%s/gif/%s", GDTEST_TOP_DIR, exp[i]);
33 if (!gdAssertImageEqualsToFile(path, im)) {
34 error = 1;
35 }
36 gdImageDestroy(im);
37 }
38 } else {
39 if (!gdTestAssert(im == NULL)) {
40 error = 1;
41 }
42 }
43 }
44
45 return error;
46 }
0 GIF89a
1 <
2
3 看吧, 我都说过滤不严了
0 #include <stdio.h>
1 #include <stdlib.h>
2 #include <gd.h>
3
4 static const unsigned char gifdata[8994] = {71,73,70,56,55,97,20,1,110,
5 0,247,0,0,247,247,247,255,251,255,231,231,231,214,211,214,239,235,239,
6 206,203,206,173,20,0,222,219,222,24,69,173,24,73,181,16,52,132,16,60,
7 148,198,24,0,181,178,181,247,243,247,140,16,0,198,190,189,189,186,189,
8 24,77,198,231,227,231,239,239,239,198,195,198,247,243,239,189,190,189,
9 198,199,198,8,81,8,206,207,206,8,36,99,33,89,214,214,36,8,214,215,214,
10 24,81,206,156,158,156,239,186,0,222,223,222,0,101,0,214,174,0,99,150,
11 239,49,101,214,74,125,231,8,60,165,181,182,181,156,154,156,115,162,239,
12 222,223,231,57,113,222,107,12,0,0,125,8,255,207,0,189,182,189,173,166,
13 173,165,162,165,231,73,49,41,81,181,255,117,99,189,150,0,90,138,239,165,
14 166,165,16,69,181,173,170,173,198,158,0,173,174,173,247,105,82,231,60,
15 33,253,253,253,239,89,66,99,211,99,222,48,24,90,203,90,181,36,16,132,
16 170,247,249,249,249,148,121,0,16,150,24,181,142,0,132,105,0,99,81,0,41,
17 73,148,173,134,0,189,44,24,107,44,33,49,182,57,165,130,0,173,199,247,
18 206,60,41,165,190,239,173,170,165,198,215,255,189,227,189,99,121,164,
19 107,211,115,247,134,115,255,239,8,90,105,124,140,32,16,148,65,49,132,
20 134,148,247,150,132,148,146,140,115,121,140,198,146,140,165,166,173,189,
21 207,239,206,213,214,41,65,107,132,125,115,217,215,203,234,234,234,123,
22 77,66,239,242,247,148,174,222,203,206,214,74,97,148,132,154,214,222,219,
23 214,247,251,255,123,134,173,165,134,123,23,64,154,140,146,148,57,186,66,
24 181,178,173,165,170,173,24,162,33,107,105,107,66,195,74,218,229,255,82,
25 109,173,198,199,206,156,101,90,123,101,82,73,85,115,59,89,147,123,219,
26 132,132,146,181,247,223,90,231,235,239,206,174,165,89,129,214,214,182,
27 181,165,182,214,210,210,210,247,186,173,222,227,231,57,97,181,247,166,
28 156,148,158,181,231,231,239,194,194,195,181,182,189,217,217,217,181,69,
29 49,255,247,255,247,247,255,198,117,107,214,219,231,214,219,221,225,225,
30 225,173,150,140,206,199,198,132,117,57,33,170,41,181,186,198,244,244,
31 244,156,134,66,181,195,222,255,235,231,231,228,222,206,235,206,231,219,
32 222,173,178,181,247,215,41,181,162,99,168,167,167,90,117,90,181,166,140,
33 255,203,198,115,142,206,192,191,191,239,231,231,170,146,49,247,215,206,
34 189,158,16,255,247,132,241,241,241,255,255,247,206,211,231,185,184,185,
35 181,89,74,25,57,127,222,203,140,239,199,41,13,55,146,206,195,165,214,
36 101,90,255,239,49,222,203,198,165,174,189,231,235,255,206,174,41,222,
37 186,66,12,50,133,201,201,201,255,243,181,178,177,178,181,170,165,239,
38 247,239,255,243,239,255,255,239,156,211,165,255,247,247,180,179,178,247,
39 231,214,140,203,140,239,227,148,222,239,222,165,164,163,173,142,16,239,
40 235,231,255,251,222,214,215,222,247,247,239,10,45,119,90,170,99,25,77,
41 189,140,174,140,222,215,214,162,160,160,123,150,123,146,148,154,66,142,
42 66,22,74,190,41,93,49,24,121,33,154,153,153,197,196,193,157,154,153,166,
43 163,160,215,212,209,3,26,76,11,34,87,148,147,149,42,62,109,152,155,165,
44 43,98,218,155,153,151,155,182,242,145,172,230,154,155,159,209,221,243,
45 247,235,247,133,133,139,184,181,176,24,46,97,243,244,246,255,255,255,44,
46 0,0,0,0,20,1,110,0,0,8,255,0,255,9,28,72,176,160,193,131,8,19,42,92,200,
47 176,161,195,135,16,35,74,156,72,177,162,197,139,24,51,106,220,200,177,
48 163,199,143,32,67,138,28,73,178,164,201,147,40,83,170,92,201,178,165,
49 203,151,48,99,202,156,73,179,166,205,155,56,115,234,220,201,179,167,207,
50 159,64,131,10,29,74,180,168,81,154,136,190,41,253,70,132,136,22,45,133,
51 162,22,194,114,180,170,213,151,156,204,141,120,241,34,73,168,62,66,158,
52 106,9,75,245,170,217,133,153,140,93,49,51,165,138,219,42,83,204,92,49,
53 54,231,236,193,0,0,48,233,213,218,245,43,212,168,66,250,68,193,19,205,
54 153,221,179,20,116,85,41,113,194,4,7,9,9,18,232,152,28,57,129,4,14,38,
55 20,25,49,147,233,48,94,11,4,38,16,168,144,97,107,146,40,78,11,85,139,
56 198,186,90,181,178,135,137,226,221,196,72,145,227,15,184,63,64,78,128,
57 162,183,111,223,146,117,124,48,81,98,138,49,179,1,28,8,56,160,161,64,1,
58 116,165,95,236,193,211,52,154,62,76,177,171,78,114,211,130,195,7,14,224,
59 193,75,255,144,160,163,55,130,38,132,224,252,249,3,135,80,147,5,11,80,
60 32,184,204,225,196,138,43,86,147,11,240,128,33,70,10,232,35,140,224,21,
61 30,120,84,147,138,0,22,0,144,221,80,186,196,226,29,110,225,237,38,31,33,
62 89,72,82,9,6,26,168,225,129,28,28,14,0,136,36,89,16,2,95,13,152,181,80,
63 2,126,71,129,118,64,5,13,244,0,93,116,123,12,166,197,1,44,16,160,224,
64 130,63,109,162,200,120,16,122,183,219,121,89,148,1,65,5,16,64,112,193,
65 145,69,14,137,161,28,34,28,32,74,22,35,154,208,130,125,126,24,21,0,5,34,
66 176,40,131,43,25,192,136,71,31,90,164,82,227,141,56,234,132,151,33,8,
67 160,96,89,110,227,241,134,64,144,41,52,32,103,4,116,214,105,231,5,69,98,
68 48,128,8,128,100,161,192,2,53,76,137,67,21,157,17,165,220,0,41,108,217,
69 229,86,95,17,81,8,1,20,56,64,102,153,56,29,208,132,2,10,200,103,217,143,
70 40,16,162,130,156,13,164,144,39,6,164,146,58,100,157,49,248,119,164,6,
71 114,84,66,136,2,8,152,255,112,2,14,43,84,57,84,0,251,37,202,101,116,95,
72 9,81,136,3,120,81,154,19,94,19,192,177,193,6,127,34,96,153,155,89,88,33,
73 231,5,21,96,56,192,1,7,136,96,237,1,26,14,208,28,4,254,197,217,64,12,24,
74 142,177,193,2,144,204,90,130,25,183,98,201,98,26,139,190,208,107,33,216,
75 9,155,19,104,44,12,48,200,177,201,78,86,195,29,161,66,160,193,180,19,32,
76 8,105,130,160,81,0,218,181,26,96,112,65,139,45,70,160,1,24,200,6,90,66,
77 113,66,1,96,193,1,16,52,192,46,175,96,193,43,47,78,42,42,156,199,189,
78 200,198,87,131,10,162,22,224,129,104,145,254,19,64,0,46,199,236,50,0,22,
79 19,32,128,28,3,84,16,129,156,50,52,128,193,29,17,155,88,66,21,62,189,
80 236,50,150,25,111,204,104,199,147,126,252,146,209,120,9,48,192,5,59,204,
81 0,2,201,10,52,33,195,5,42,215,40,233,66,80,31,189,92,1,25,91,145,195,
82 214,226,42,80,195,9,19,79,1,84,114,44,96,208,0,24,237,190,27,175,211,52,
83 29,74,181,10,124,223,255,155,117,4,123,18,240,181,68,120,133,54,64,198,
84 85,231,16,65,23,17,179,77,113,209,14,28,32,247,29,117,119,236,0,222,53,
85 133,220,192,12,124,131,192,184,2,89,8,222,52,225,14,16,112,64,1,41,88,
86 61,67,15,104,140,107,2,14,19,219,218,19,0,19,20,208,0,229,48,130,165,
87 133,5,152,215,164,220,138,155,131,48,67,30,116,16,82,67,41,26,93,57,118,
88 10,57,204,144,3,208,27,196,10,251,10,133,238,132,215,233,41,136,209,238,
89 30,186,243,222,251,76,250,1,111,197,14,128,159,178,201,38,28,209,139,65,
90 234,32,200,224,247,218,19,27,209,19,177,168,107,159,123,88,163,127,239,
91 82,114,166,235,44,234,0,4,216,8,212,126,87,129,30,88,77,12,199,90,192,
92 235,86,80,2,217,233,132,118,168,83,193,246,116,103,24,253,129,175,116,
93 204,193,64,1,0,152,63,140,232,205,10,237,123,159,137,86,32,63,235,65,48,
94 5,18,188,159,22,42,104,193,153,28,140,90,19,160,64,7,47,2,183,245,89,13,
95 98,174,163,213,125,120,162,28,13,196,32,133,91,153,78,88,255,88,216,66,
96 23,18,224,136,51,164,33,6,11,168,2,16,180,78,109,38,50,130,17,234,114,
97 16,0,240,65,4,120,225,3,11,60,192,135,46,34,4,106,212,112,68,36,194,176,
98 133,45,132,33,18,142,160,134,68,148,19,193,237,225,97,136,63,217,198,50,
99 110,113,136,58,214,241,22,203,216,6,52,72,98,10,88,140,177,140,101,12,
100 131,35,106,241,12,1,210,76,36,81,211,64,240,62,167,64,28,24,161,86,8,
101 153,0,31,48,240,15,8,240,225,0,22,136,1,31,12,134,144,89,132,65,24,52,8,
102 101,40,127,240,131,33,144,50,8,97,168,133,67,162,214,70,47,57,229,26,5,
103 97,68,44,98,17,135,90,74,81,138,111,129,203,20,118,201,203,43,248,161,
104 13,31,209,134,47,126,1,131,98,194,32,4,200,76,102,8,126,113,136,91,236,
105 177,35,169,248,100,16,70,73,202,33,116,160,3,67,24,2,13,124,16,9,83,240,
106 4,102,87,90,81,213,210,144,192,181,145,144,104,7,145,36,4,2,144,134,28,
107 76,224,31,23,224,195,93,0,64,6,107,254,64,148,165,236,64,17,246,201,255,
108 128,107,254,192,6,170,100,8,0,4,208,202,32,82,71,11,176,140,217,149,36,
109 177,128,76,169,105,60,37,50,215,196,38,134,131,19,88,116,86,70,184,66,
110 245,44,114,10,100,32,179,152,200,36,1,9,120,96,139,146,222,224,6,60,32,
111 65,8,96,112,136,109,104,36,21,194,200,230,61,105,144,207,34,60,225,166,
112 69,48,64,63,181,185,5,53,242,132,118,138,228,220,19,17,16,69,35,28,199,
113 32,26,224,3,1,26,112,201,119,90,242,32,169,184,196,78,171,217,129,39,
114 240,130,12,137,88,68,34,200,112,137,125,242,212,155,10,233,97,12,64,224,
115 198,87,202,44,88,19,160,67,67,227,51,31,204,152,139,129,37,168,168,99,
116 30,3,209,19,24,149,34,201,241,133,74,149,41,82,91,176,34,24,159,200,144,
117 26,130,193,138,108,40,129,7,43,61,196,51,35,2,78,10,104,162,3,12,48,37,
118 85,159,160,137,172,106,128,24,159,72,132,38,114,138,77,26,132,1,172,53,
119 129,217,204,164,118,1,25,56,17,89,210,147,34,186,12,162,177,127,8,143,0,
120 148,204,129,60,11,66,140,39,255,48,160,159,216,132,236,37,154,113,6,78,
121 208,8,17,109,64,68,34,190,80,4,42,252,192,7,176,80,200,64,7,16,1,32,118,
122 229,160,9,197,139,114,2,102,129,62,101,225,186,116,128,132,4,164,116,
123 209,22,56,230,15,113,96,4,35,36,241,135,182,158,160,10,84,132,200,41,
124 142,33,82,190,242,128,21,16,56,131,7,6,48,45,22,76,2,75,175,200,198,13,
125 72,0,131,97,44,131,34,226,160,194,109,177,105,77,125,6,226,2,103,72,48,
126 181,30,1,220,3,144,193,11,197,61,110,114,135,69,129,21,153,205,111,11,
127 224,0,173,140,128,206,130,16,160,80,162,13,86,65,82,241,4,157,226,22,
128 178,129,16,5,145,134,228,28,149,33,226,17,129,48,0,21,104,16,4,71,36,
129 100,185,99,109,87,18,14,138,138,129,76,87,91,27,164,47,171,36,161,172,
130 203,152,192,49,18,128,68,49,6,112,138,89,12,236,13,229,149,18,36,31,162,
131 6,91,164,116,175,125,125,133,145,144,84,129,22,79,139,0,106,160,133,19,
132 248,203,133,91,72,100,17,69,184,237,137,25,80,4,79,108,121,255,72,16,32,
133 213,6,15,208,134,79,124,65,198,52,142,196,3,107,215,0,25,48,210,156,82,
134 188,156,68,44,118,9,3,232,244,154,144,229,197,183,184,76,36,57,31,0,198,
135 50,14,130,15,108,124,144,67,69,128,172,209,217,177,83,80,209,216,45,22,
136 64,97,17,136,65,3,46,64,135,100,141,103,60,58,248,3,215,228,252,175,3,
137 32,136,14,177,98,27,138,24,162,6,148,94,89,164,36,176,133,226,34,16,231,
138 82,193,217,209,7,32,197,152,97,80,102,176,129,243,31,139,48,244,128,33,
139 203,102,79,48,58,206,43,150,115,147,238,76,5,73,235,153,38,33,6,0,1,166,
140 182,131,180,41,32,1,81,156,50,67,178,77,207,7,60,224,208,215,164,194,
141 168,53,248,175,230,232,12,79,16,208,16,113,183,137,220,42,74,237,210,58,
142 230,177,64,146,131,165,109,249,103,110,152,90,0,2,116,16,153,84,167,128,
143 215,165,234,242,156,181,81,222,22,192,110,214,9,81,131,126,121,112,235,
144 145,190,2,90,210,202,150,187,35,0,111,109,129,66,10,100,54,115,67,62,97,
145 104,19,171,153,1,110,255,134,64,1,254,165,241,156,113,188,72,30,40,0,20,
146 188,80,109,110,230,164,194,5,244,182,244,86,176,130,213,62,36,57,7,240,
147 130,185,15,157,77,50,204,57,96,4,176,214,0,200,230,31,135,205,224,1,79,
148 144,180,13,64,235,227,123,99,218,52,250,222,183,182,39,0,100,12,148,97,
149 173,69,30,79,13,122,112,1,118,107,43,97,120,170,0,198,0,197,54,113,27,
150 132,118,180,80,2,74,113,45,82,248,22,128,70,162,57,162,0,4,192,117,166,
151 167,32,5,111,104,198,18,156,16,2,46,20,219,32,80,11,0,137,149,125,114,6,
152 104,194,57,129,59,98,192,248,190,116,110,249,231,13,79,47,194,54,109,64,
153 233,208,226,124,110,200,130,213,2,87,224,182,159,59,160,13,117,112,129,
154 234,207,221,89,181,67,74,82,52,163,151,203,229,4,8,54,60,128,10,62,176,
155 65,24,246,173,245,123,59,87,211,66,232,241,64,94,182,117,230,192,33,89,
156 155,26,143,36,156,67,35,190,55,233,211,23,56,184,6,224,208,200,18,76,
157 241,46,14,96,133,20,228,94,241,99,64,192,3,53,74,208,255,141,10,183,28,
158 13,64,192,91,128,0,197,18,110,64,108,46,252,119,158,0,8,196,185,77,126,
159 219,75,0,98,101,71,28,156,116,199,118,126,57,97,192,246,81,103,3,0,101,
160 19,112,195,34,16,131,41,8,80,31,60,215,97,227,134,65,80,160,122,46,96,
161 110,69,208,1,52,48,38,5,17,123,82,131,56,162,144,6,46,240,4,52,32,128,
162 201,149,109,86,167,99,168,17,124,136,7,0,20,48,11,197,128,124,18,144,27,
163 89,160,50,175,39,41,178,231,63,16,0,6,106,227,56,165,71,16,201,17,12,82,
164 224,4,135,69,119,36,144,8,43,51,56,5,129,23,203,133,56,217,195,4,32,71,
165 108,195,128,16,52,147,8,67,71,127,12,208,12,156,48,1,68,168,131,52,115,
166 111,13,176,3,49,144,122,52,151,123,91,112,55,50,81,128,160,23,112,245,
167 81,2,43,192,128,11,97,49,181,35,8,16,24,129,58,53,4,226,160,92,164,213,
168 34,98,224,2,95,104,3,91,112,129,190,71,130,68,96,130,111,71,1,197,130,
169 124,185,193,1,162,112,10,54,130,133,203,85,64,183,227,58,104,255,184,2,
170 192,52,124,14,48,1,180,208,131,115,183,87,200,192,9,8,178,134,22,112,
171 111,59,96,54,76,176,126,133,119,120,4,97,49,143,240,5,243,183,108,12,
172 192,11,154,40,104,9,1,55,220,102,54,80,0,117,65,32,128,157,55,134,3,229,
173 67,7,248,39,28,224,112,214,247,16,203,117,1,61,32,6,130,240,128,112,200,
174 0,52,16,9,133,116,23,234,210,0,32,52,139,1,104,3,19,38,16,203,133,111,
175 153,86,130,194,119,129,181,131,6,132,136,27,138,96,129,136,23,57,114,
176 195,57,17,163,67,83,0,53,218,22,1,72,96,137,41,149,76,193,176,137,227,
177 102,1,181,195,60,101,32,8,131,71,102,195,176,88,51,67,0,205,16,133,39,
178 214,1,137,208,50,13,40,57,155,147,3,108,224,2,154,167,135,91,64,117,49,
179 1,65,23,144,54,2,183,93,22,181,2,192,40,0,65,197,55,42,144,6,108,240,
180 128,15,208,79,158,197,144,212,120,111,57,80,6,179,152,144,54,112,109,33,
181 57,0,63,228,135,128,88,138,88,162,7,1,55,31,223,241,1,110,144,136,243,
182 180,109,84,255,131,64,55,72,66,70,112,35,218,22,108,235,232,4,251,181,
183 87,199,16,67,192,136,147,86,80,143,76,128,4,60,208,126,214,144,109,4,0,
184 99,254,136,104,84,128,73,171,68,59,83,35,3,6,137,135,213,182,5,156,87,
185 19,16,180,56,37,51,31,82,98,34,15,161,55,50,128,145,159,210,0,117,128,
186 138,6,224,79,91,48,141,251,134,115,61,144,3,15,88,92,185,103,3,203,248,
187 15,213,120,117,93,81,130,176,161,117,245,2,52,166,6,30,38,112,6,135,244,
188 69,23,99,59,132,73,84,214,183,2,44,64,141,19,128,1,75,176,142,63,152,76,
189 190,96,147,13,113,37,89,178,57,105,176,148,55,48,138,77,56,16,160,81,1,
190 66,119,110,184,85,116,9,242,115,4,16,55,73,233,134,180,168,144,153,115,
191 111,198,82,152,142,161,8,171,132,65,253,97,54,86,195,133,52,178,8,154,
192 224,5,68,55,105,227,71,59,114,67,146,231,86,109,54,224,3,1,197,151,219,
193 214,92,44,25,152,46,115,49,26,0,145,9,120,100,138,160,153,78,56,153,101,
194 184,115,43,160,11,206,41,2,175,255,80,153,62,216,142,200,164,6,233,229,
195 16,185,232,153,161,168,4,100,198,5,62,165,109,44,224,9,17,136,154,216,
196 68,74,196,144,68,149,38,53,41,160,7,176,153,144,94,153,10,23,52,143,220,
197 152,44,223,1,30,184,153,155,229,215,31,91,216,51,42,87,35,14,86,104,135,
198 246,145,2,97,145,49,96,151,231,22,128,62,176,8,3,81,141,191,7,152,23,
199 184,109,16,224,109,9,208,139,45,16,7,210,32,80,22,154,54,222,233,54,180,
200 115,6,117,64,158,251,245,81,191,48,9,250,249,118,56,185,3,159,121,143,
201 78,41,153,103,16,8,245,25,135,167,36,0,233,217,16,193,216,3,255,137,123,
202 94,121,139,79,35,143,5,192,58,127,178,0,9,112,160,31,16,11,16,161,31,19,
203 32,2,27,71,39,101,231,98,136,0,156,57,213,79,63,176,5,106,208,6,44,112,
204 1,200,105,0,209,136,146,125,25,157,5,193,70,15,137,47,177,118,2,140,208,
205 16,108,36,150,176,114,134,67,147,11,166,147,126,50,186,87,48,224,11,55,
206 138,120,21,6,1,58,26,138,195,70,108,135,192,151,21,255,86,0,7,57,116,
207 157,69,3,154,48,7,131,202,123,225,4,1,170,0,155,145,38,128,187,55,134,
208 88,242,51,49,41,28,224,241,1,113,64,56,218,38,0,34,16,115,239,150,36,
209 255,210,96,92,101,114,87,213,159,66,167,166,31,168,123,90,247,156,31,
210 250,135,129,25,0,78,10,122,168,37,43,56,240,6,70,90,59,35,131,128,189,
211 56,49,85,16,140,234,135,4,66,9,168,190,64,17,22,32,2,73,131,168,77,73,
212 108,171,192,151,247,198,145,172,55,83,137,48,17,1,208,6,24,147,169,112,
213 24,141,91,224,61,45,1,53,141,58,6,49,57,165,163,234,6,20,17,123,20,176,
214 28,49,71,54,44,182,65,44,16,92,192,169,9,188,208,85,95,32,8,179,234,129,
215 185,215,169,206,201,92,185,42,4,187,234,164,121,0,61,162,135,3,56,0,158,
216 2,85,59,48,153,44,189,104,81,165,0,65,13,176,4,127,186,82,48,160,6,208,
217 26,174,203,234,4,136,101,173,124,201,103,218,90,4,218,20,4,65,64,12,29,
218 139,169,143,170,166,181,40,128,149,74,18,1,32,162,175,2,31,50,255,25,30,
219 62,135,87,0,240,99,219,82,175,46,166,32,203,165,49,67,7,176,62,32,176,
220 218,166,146,5,187,171,205,120,90,209,3,172,232,3,54,253,102,131,127,50,
221 165,101,105,6,210,32,57,57,16,138,204,138,88,43,245,11,218,176,178,170,
222 240,177,33,11,3,171,208,13,224,138,1,50,80,178,39,235,3,167,0,182,45,
223 235,129,2,104,3,230,186,63,71,91,6,235,218,130,222,97,2,147,144,17,159,
224 17,26,204,81,0,141,166,65,3,80,133,173,153,51,242,151,161,244,102,180,
225 125,120,141,186,170,141,5,228,103,229,52,43,14,171,16,225,84,0,53,59,
226 112,7,106,2,2,32,142,89,75,173,26,251,11,174,120,165,14,16,55,97,75,158,
227 99,187,10,22,80,168,118,89,159,69,240,3,82,71,1,222,42,142,105,59,174,
228 155,231,3,1,244,15,180,193,75,114,113,5,188,219,187,188,187,187,14,132,
229 17,64,87,157,81,90,100,51,153,160,2,228,0,178,215,28,142,118,45,5,32,10,
230 182,199,122,137,123,171,72,235,166,195,7,84,155,131,64,65,131,3,200,3,
231 54,166,3,147,54,255,219,130,222,40,13,20,144,149,76,16,138,82,112,186,
232 49,171,131,72,147,3,24,139,4,135,165,177,168,91,190,165,85,178,174,235,
233 3,229,122,165,224,52,186,24,128,161,210,155,123,182,43,16,143,240,42,
234 109,229,139,60,199,64,21,213,2,10,76,37,201,131,115,151,18,190,120,75,
235 147,31,65,124,161,145,170,243,53,45,56,131,182,167,249,150,52,22,4,108,
236 186,184,166,1,162,165,200,159,86,195,56,227,210,139,238,74,185,218,166,
237 6,199,39,112,201,39,1,21,155,163,130,224,185,197,116,8,27,101,122,113,
238 163,2,149,41,5,51,90,76,191,208,137,204,181,186,17,216,186,62,128,191,
239 120,197,191,119,8,169,247,107,3,192,162,32,4,112,124,100,105,31,183,196,
240 24,222,101,152,82,22,188,222,106,58,134,80,188,145,33,190,31,48,185,2,
241 164,117,228,55,121,56,83,1,117,16,133,29,224,186,65,192,161,212,184,109,
242 43,201,184,6,91,132,133,186,3,125,19,49,175,19,186,132,58,11,134,96,179,
243 4,87,112,127,96,1,64,28,1,59,48,195,149,25,154,53,188,190,195,135,115,
244 49,255,202,172,61,12,3,200,144,139,49,160,10,7,57,196,199,85,180,239,
245 138,37,128,0,164,74,140,178,54,0,0,202,115,49,151,146,128,14,71,66,60,
246 23,11,127,0,9,53,144,202,36,242,29,43,112,84,20,193,70,151,219,197,185,
247 209,2,136,236,173,158,172,188,130,120,56,168,104,159,51,213,156,71,11,
248 157,112,44,157,188,90,59,99,213,68,34,164,134,23,104,1,21,208,4,190,161,
249 44,147,1,195,52,35,162,135,10,154,26,187,168,89,124,56,203,202,195,206,
250 250,15,22,138,164,171,71,196,150,124,205,16,176,203,134,150,198,161,20,
251 6,115,144,116,204,33,7,140,35,165,245,1,59,56,224,6,64,182,114,9,118,6,
252 111,80,10,140,80,10,55,188,153,71,163,199,92,204,35,184,145,194,40,161,
253 28,243,57,149,167,116,187,3,11,204,33,220,184,69,40,162,156,19,66,39,
254 124,2,16,87,16,185,240,6,53,208,204,205,44,9,54,130,130,30,32,140,98,
255 112,190,75,224,158,53,92,164,14,113,40,23,107,153,230,25,2,79,185,31,73,
256 243,205,53,39,176,87,106,177,27,60,85,63,255,176,8,115,192,127,120,186,
257 0,219,53,37,39,10,1,28,167,65,154,184,151,22,161,109,5,240,30,46,124,
258 106,120,123,0,41,65,44,103,224,150,38,70,96,154,0,149,4,107,189,46,179,
259 191,243,168,58,49,160,174,177,86,5,120,44,16,140,112,209,240,17,31,190,
260 65,7,53,226,50,145,115,1,32,4,210,75,200,82,181,60,178,103,224,9,59,124,
261 153,200,116,10,87,114,166,207,168,122,145,102,196,166,58,1,48,58,149,50,
262 149,10,3,181,34,59,243,57,121,90,150,113,112,1,162,134,39,119,23,67,93,
263 125,165,41,232,39,2,167,44,47,28,7,109,125,17,22,48,9,158,224,143,59,
264 213,1,139,32,213,10,253,151,12,93,132,139,201,60,171,83,0,146,32,122,
265 108,51,5,126,48,9,147,64,27,138,80,30,97,13,31,127,98,8,106,176,185,71,
266 35,78,178,117,190,76,185,82,171,80,203,188,122,0,111,64,10,204,42,119,
267 237,21,2,200,144,9,223,42,57,175,185,122,0,107,3,251,60,110,224,250,6,
268 228,140,110,29,32,12,117,97,177,59,64,216,215,105,81,110,64,54,165,255,
269 178,65,34,176,185,149,141,23,20,192,80,145,253,194,151,49,0,149,93,17,
270 40,216,212,169,184,108,84,32,0,165,232,198,126,121,26,161,29,162,30,192,
271 34,73,153,2,226,0,147,53,32,43,143,184,2,56,208,2,31,144,0,178,141,41,
272 10,0,7,101,240,9,7,96,163,211,201,103,32,240,209,237,201,219,221,32,17,
273 124,122,0,121,128,4,140,124,101,200,20,12,51,3,225,119,56,196,155,135,
274 208,21,121,0,253,248,222,136,214,173,216,202,92,144,107,172,190,200,8,
275 77,50,45,213,34,2,140,93,17,188,250,6,239,49,112,149,113,106,58,16,7,
276 171,121,18,223,138,8,242,87,114,106,6,89,100,48,41,191,156,180,9,241,59,
277 114,211,3,61,16,1,114,80,106,255,189,97,70,80,2,45,32,1,40,128,224,104,
278 0,7,119,144,7,16,192,65,189,135,40,86,51,195,76,48,108,238,183,70,2,192,
279 13,172,48,220,151,72,2,199,176,183,255,112,40,236,51,201,52,39,105,205,
280 121,150,2,240,163,154,125,91,84,128,8,251,102,58,131,29,122,9,136,131,
281 169,75,1,20,112,68,175,255,135,200,217,38,2,144,32,31,58,158,124,58,0,9,
282 7,176,222,239,74,79,37,39,133,29,32,7,103,117,180,57,22,204,202,213,63,
283 59,147,2,71,130,6,128,18,110,113,32,9,116,48,6,170,126,7,32,96,5,162,82,
284 219,161,139,130,7,128,214,17,14,210,161,201,5,214,48,104,19,160,142,219,
285 103,107,184,22,12,55,66,190,89,25,225,204,157,103,186,30,1,179,42,133,
286 137,64,69,156,201,34,218,125,134,61,87,132,151,35,98,131,70,0,127,224,
287 232,143,222,38,9,32,10,218,73,18,52,67,6,151,222,120,12,112,228,177,62,
288 130,158,78,135,7,192,92,114,146,2,161,172,167,56,240,45,102,211,60,61,
289 224,229,3,128,32,162,181,111,189,202,57,159,169,132,252,53,12,235,27,0,
290 173,173,125,189,78,113,41,133,12,54,57,204,79,106,53,124,160,122,117,
291 110,3,176,203,154,44,192,11,243,71,127,188,112,240,159,247,236,109,151,
292 179,26,49,11,89,32,31,125,220,199,193,97,8,70,137,18,150,206,120,141,
293 119,9,44,128,199,109,122,238,148,219,168,49,96,54,220,8,40,178,255,114,
294 2,45,96,8,13,112,54,174,174,114,154,104,1,247,94,117,135,243,208,132,
295 172,4,133,151,235,185,41,92,61,200,125,4,111,11,159,64,132,71,248,208,
296 143,170,121,53,54,110,251,219,6,153,29,238,183,85,4,75,63,126,88,82,0,
297 121,128,241,104,168,241,24,97,237,106,82,112,149,17,28,89,0,230,20,241,
298 12,176,176,190,179,32,12,226,126,114,69,176,8,221,206,233,32,128,14,1,2,
299 218,113,60,110,251,113,1,121,32,181,238,44,37,38,96,8,17,32,42,26,116,0,
300 53,206,140,157,201,57,42,192,6,160,217,95,46,181,153,14,160,1,217,224,
301 131,39,85,249,55,144,8,246,158,200,34,96,59,15,253,128,94,0,176,62,37,
302 80,0,240,9,57,117,233,37,247,10,240,40,16,209,202,245,140,52,232,95,207,
303 17,220,0,9,32,47,25,149,145,38,127,80,0,143,64,68,140,133,108,194,224,8,
304 55,74,79,182,213,120,166,79,6,35,63,223,42,9,2,1,98,26,141,34,157,95,52,
305 186,5,160,7,70,221,86,101,233,6,233,94,45,49,52,183,246,54,53,61,208,68,
306 139,255,191,148,77,57,154,95,4,78,115,112,0,180,96,249,150,255,10,155,
307 48,247,164,149,150,124,227,249,79,240,79,41,106,108,81,101,250,37,87,7,
308 162,113,239,205,222,0,94,31,237,25,145,11,110,64,30,0,145,64,160,14,129,
309 2,17,160,128,164,108,2,174,35,255,28,62,132,24,81,226,191,0,255,22,21,
310 161,18,6,214,179,136,1,28,16,35,67,133,193,72,146,6,76,158,172,195,137,
311 0,0,137,1,4,28,192,64,110,196,204,17,47,246,68,193,131,101,98,75,0,22,
312 42,213,64,129,64,168,4,14,45,78,224,56,99,129,194,82,7,59,37,90,152,160,
313 161,193,12,21,32,100,128,98,34,133,71,136,67,208,156,62,60,64,75,201,88,
314 178,99,95,157,153,64,97,162,5,17,5,166,170,152,145,131,141,11,47,79,126,
315 216,48,245,213,33,177,75,39,253,26,168,163,70,128,131,138,14,3,80,56,80,
316 33,79,151,13,27,20,44,144,96,2,71,9,51,122,45,59,228,166,136,160,4,9,6,
317 133,30,68,241,103,157,28,10,13,47,79,12,0,64,245,63,98,69,12,48,24,18,
318 196,198,255,150,45,154,132,253,232,64,114,228,95,148,7,88,168,149,136,
319 233,0,132,112,233,104,214,124,145,100,143,150,211,185,220,36,64,64,48,1,
320 231,162,39,226,56,0,48,135,229,233,127,0,8,36,158,106,85,84,154,37,72,
321 182,174,90,230,212,129,47,91,55,200,58,145,226,36,219,171,2,7,40,52,149,
322 152,235,123,133,240,59,98,4,114,225,129,39,98,115,196,41,0,200,112,237,
323 175,7,188,168,163,62,236,10,163,136,2,17,20,99,172,49,5,16,168,193,168,
324 202,184,155,232,145,56,58,227,172,32,161,236,88,160,196,44,40,57,128,33,
325 14,121,178,160,197,127,196,249,226,1,147,116,99,32,183,221,20,124,96,65,
326 79,222,56,96,37,136,60,248,198,28,115,210,121,129,166,12,142,156,41,185,
327 61,116,210,11,128,88,164,43,72,7,162,76,104,65,151,21,33,2,64,0,15,32,
328 152,106,134,30,0,105,6,20,36,148,32,33,132,85,110,217,198,171,0,44,160,
329 198,151,99,120,112,207,9,248,164,144,130,20,43,0,241,192,71,212,178,220,
330 178,129,28,188,124,35,135,24,139,232,32,182,72,255,106,49,37,53,10,106,
331 33,163,47,191,114,124,224,139,28,240,20,96,187,135,214,156,112,177,198,
332 44,196,208,4,35,44,229,16,0,93,98,225,64,74,17,71,44,81,129,38,192,88,
333 199,62,32,174,236,200,2,2,4,152,96,130,44,235,240,34,71,222,78,130,20,
334 82,47,2,185,211,131,74,33,236,46,26,227,140,60,50,217,12,144,219,227,
335 154,175,8,200,2,133,129,10,74,64,202,15,220,128,245,82,7,4,24,128,63,25,
336 100,104,160,128,1,94,161,69,138,27,120,40,243,151,95,144,121,19,78,37,
337 232,68,34,94,82,196,168,164,130,1,6,251,202,35,45,185,252,182,129,55,60,
338 240,228,139,25,97,251,129,6,42,68,98,128,87,72,191,168,163,222,123,241,
339 131,8,83,10,55,232,167,226,13,122,233,20,135,42,252,152,195,178,0,8,48,
340 35,142,22,62,248,160,51,207,16,40,113,129,199,224,104,229,147,20,129,
341 120,53,91,135,84,19,64,4,15,6,24,224,128,73,52,168,3,138,94,127,206,49,
342 64,47,216,80,193,97,124,47,245,8,19,1,194,33,135,28,87,158,134,218,149,
343 52,255,200,9,39,156,106,80,113,106,19,72,164,165,246,51,161,106,136,195,
344 141,82,204,240,163,141,43,83,211,178,130,20,122,232,33,5,12,88,152,32,
345 24,86,196,26,235,6,187,223,149,34,94,36,64,153,87,15,135,39,176,96,39,8,
346 245,237,118,237,182,223,158,32,145,64,4,222,181,215,161,235,240,219,94,
347 91,81,99,171,130,29,64,0,163,139,65,228,217,192,27,199,16,152,242,132,
348 18,140,152,194,140,43,78,191,194,140,42,220,136,229,4,14,72,54,217,179,
349 84,21,160,157,144,59,248,81,166,147,81,96,150,249,210,44,69,24,160,128,
350 10,134,23,183,2,79,2,97,3,10,229,151,87,158,141,52,64,136,220,3,192,35,
351 246,238,165,3,14,40,224,130,30,64,224,158,123,25,98,208,64,207,157,184,
352 1,170,218,83,83,46,17,5,41,57,160,18,135,21,170,184,34,147,203,2,208,
353 215,131,236,27,104,160,94,13,88,160,245,147,68,88,153,27,45,72,49,64,82,
354 212,65,12,42,208,67,219,240,4,56,80,57,165,126,24,136,0,254,26,0,129,1,
355 76,0,17,44,88,4,25,52,193,139,255,47,116,176,131,108,8,68,29,160,215,54,
356 201,137,47,98,22,96,1,6,122,48,14,22,178,176,28,119,232,2,33,154,176,0,
357 105,113,134,100,55,196,33,103,98,7,29,161,204,142,118,10,32,4,24,100,16,
358 1,119,76,96,119,189,235,200,182,14,112,134,236,69,80,130,107,147,1,8,
359 196,48,69,49,112,175,12,57,248,158,189,6,3,42,125,97,111,120,92,178,66,
360 92,196,8,46,12,244,168,129,15,97,65,249,160,212,67,149,53,193,141,110,4,
361 141,64,36,240,1,19,156,192,8,87,56,35,79,190,163,129,10,68,192,143,16,
362 168,128,6,6,240,136,71,176,128,27,76,188,64,10,84,161,135,43,238,32,15,
363 23,168,15,1,28,32,191,211,172,233,59,221,242,99,4,32,128,1,113,17,242,
364 17,156,176,31,4,42,177,200,111,57,18,146,121,194,142,224,28,48,129,2,
365 196,64,6,227,192,7,11,119,176,139,64,106,64,20,134,248,131,12,105,136,2,
366 94,122,237,51,40,72,217,15,127,136,134,65,140,65,12,173,96,134,50,236,
367 115,132,152,33,49,98,74,196,36,254,174,216,61,106,206,255,224,138,89,
368 212,192,4,36,217,18,11,188,100,0,124,244,227,5,36,136,191,71,70,242,140,
369 31,219,26,2,186,134,178,5,172,42,7,110,27,192,25,0,81,12,67,100,129,16,
370 7,73,0,251,90,80,130,41,228,49,34,0,160,192,4,14,160,129,2,64,0,144,21,
371 192,64,66,49,80,129,11,56,81,6,59,192,31,4,196,165,77,179,93,9,0,171,28,
372 40,4,15,186,73,225,49,52,130,15,77,96,10,32,89,65,19,114,147,0,246,107,
373 64,10,118,176,210,29,200,96,23,178,40,128,7,78,113,10,17,216,82,18,245,
374 132,131,12,103,104,135,94,8,147,118,104,32,102,23,140,217,138,86,76,67,
375 22,141,48,98,51,157,217,17,239,28,192,126,16,196,95,75,165,138,69,252,
376 213,139,71,218,204,163,162,190,227,1,13,116,213,171,94,21,215,1,182,248,
377 207,110,208,65,1,210,90,35,48,225,160,2,44,198,0,2,255,146,233,44,180,
378 113,10,64,208,97,134,53,168,163,251,174,224,177,139,78,0,120,5,40,232,
379 240,134,151,201,24,252,241,173,30,224,31,196,96,133,182,9,200,33,120,
380 255,5,61,104,31,35,16,131,6,24,246,95,218,12,156,199,182,197,9,75,20,64,
381 25,178,216,69,104,35,32,11,89,172,163,2,202,168,0,32,148,161,1,119,104,
382 0,181,160,101,36,8,94,88,142,122,196,227,128,112,105,197,44,97,42,14,1,
383 80,0,0,74,93,170,68,104,38,208,199,106,212,160,195,227,100,206,4,48,86,
384 193,1,84,0,179,90,46,116,103,53,43,192,89,160,129,169,121,67,137,212,41,
385 34,96,102,97,7,84,141,193,5,18,138,208,133,106,64,14,90,162,67,137,32,
386 113,148,18,84,193,159,212,163,192,5,157,10,86,192,214,247,95,34,208,102,
387 73,23,155,26,232,94,15,103,245,5,240,101,171,251,94,158,224,98,13,107,
388 152,64,39,14,48,128,70,104,224,19,148,128,64,4,82,192,15,102,228,33,15,
389 204,96,219,52,26,48,13,102,236,192,10,173,120,40,51,68,204,140,93,68,
390 160,2,141,176,132,54,71,193,76,224,6,151,39,14,144,21,11,68,32,130,235,
391 249,70,4,112,163,85,139,8,252,79,213,88,183,39,63,78,13,0,136,69,63,7,
392 64,235,49,66,49,255,8,10,86,149,135,240,138,55,161,29,189,64,132,53,9,
393 73,17,92,160,9,10,168,129,232,70,7,28,203,92,52,198,19,128,155,140,113,
394 60,96,23,35,13,198,212,149,241,140,225,134,95,2,172,36,59,30,235,72,0,
395 128,112,81,0,224,130,2,4,56,176,0,58,161,96,6,23,128,18,159,56,109,5,40,
396 97,218,10,144,150,120,26,240,192,1,58,177,6,10,172,152,119,101,230,142,
397 106,122,162,148,165,244,88,53,29,131,52,83,119,118,229,5,108,23,58,53,0,
398 65,12,2,153,179,26,115,181,171,24,128,192,5,26,58,89,225,161,1,203,90,
399 94,1,166,231,7,227,158,220,71,210,214,205,116,75,104,61,233,251,248,56,
400 53,217,42,12,16,88,12,51,97,31,193,216,71,24,133,172,160,75,43,22,88,
401 162,19,44,224,196,1,68,208,9,1,172,129,0,163,0,192,176,31,157,107,110,
402 67,122,77,44,40,6,237,58,45,37,29,212,160,12,35,213,230,82,238,76,128,
403 52,131,178,0,78,132,40,4,202,176,129,5,64,98,50,163,235,118,190,245,189,
404 111,126,247,123,177,124,186,131,99,255,58,61,29,9,72,66,162,34,112,51,
405 245,176,67,0,191,14,0,170,223,138,0,99,154,176,207,21,148,96,175,254,
406 198,120,198,53,190,113,103,42,10,123,96,16,248,116,62,64,135,79,220,203,
407 183,249,2,232,119,178,183,61,25,4,252,213,43,88,129,17,56,62,115,154,
408 215,220,230,221,225,86,5,198,32,240,57,154,224,2,98,125,51,95,17,163,
409 129,8,244,64,5,42,112,53,2,246,105,132,21,88,233,230,79,135,122,212,93,
410 172,180,236,129,252,49,68,81,132,28,8,144,89,238,28,6,123,111,65,3,189,
411 37,3,243,42,72,221,236,103,71,187,94,82,195,202,20,184,28,50,28,136,195,
412 74,100,205,157,109,121,192,114,72,167,119,150,97,142,173,180,247,221,
413 239,102,95,187,91,64,16,118,200,152,192,13,210,216,177,97,34,230,17,86,
414 54,96,240,143,201,80,9,98,158,248,191,87,222,242,249,6,64,227,101,48,8,
415 199,224,149,239,176,162,25,209,85,32,238,200,76,38,14,151,71,125,234,
416 251,157,121,183,228,192,234,8,48,193,233,101,150,165,110,141,225,200,
417 145,49,138,236,85,191,255,123,222,79,93,0,173,228,30,231,23,192,129,19,
418 84,244,108,124,178,242,237,217,103,120,138,244,222,249,207,95,17,218,60,
419 112,129,63,169,160,243,38,96,196,236,5,32,135,44,104,215,90,31,224,64,
420 101,136,5,125,242,151,63,86,41,148,42,200,23,144,33,63,0,155,0,134,8,
421 138,167,57,163,136,110,152,223,254,247,55,204,182,6,224,202,33,238,28,
422 50,39,104,191,232,35,128,88,240,26,243,17,136,82,192,191,4,44,63,143,
423 115,11,47,41,0,179,130,140,22,152,2,14,201,133,82,128,132,83,249,37,67,
424 176,0,197,82,192,14,84,61,194,209,158,6,136,1,53,208,131,25,34,10,28,
425 152,2,14,140,136,110,120,4,55,104,1,9,32,8,175,225,37,20,200,2,17,224,
426 50,15,196,193,212,251,54,162,139,168,5,235,62,20,152,163,22,192,1,35,
427 168,2,211,73,29,70,96,157,22,120,29,147,97,163,148,161,131,135,201,193,
428 40,212,65,196,40,168,63,242,0,109,16,5,56,160,33,130,195,161,46,44,25,
429 30,242,33,66,0,1,151,209,47,41,52,67,180,243,58,225,113,43,255,72,154,0,
430 1,168,171,25,10,138,130,208,33,29,2,67,149,89,0,56,0,131,6,208,34,202,
431 59,195,62,164,57,180,169,41,201,2,36,243,210,146,91,250,131,26,168,1,
432 161,224,26,207,112,35,56,24,131,59,176,2,81,147,30,174,243,195,74,4,60,
433 231,178,187,40,251,35,192,26,0,174,194,0,81,40,134,155,50,4,58,32,69,48,
434 184,131,3,186,162,72,172,128,73,180,196,86,68,59,154,89,48,53,84,53,63,
435 106,50,90,76,169,30,8,163,63,137,11,83,18,151,163,113,197,95,140,58,69,
436 105,172,224,25,44,9,115,162,6,144,1,61,40,165,135,2,23,77,154,168,74,1,
437 198,104,148,58,254,178,158,255,242,168,201,74,129,108,100,178,40,3,44,
438 196,202,47,62,148,198,112,244,55,213,152,21,26,115,42,156,65,71,116,244,
439 0,233,249,70,112,20,199,119,236,54,8,185,53,165,104,179,233,98,56,2,80,
440 55,10,192,53,120,228,199,202,147,180,95,235,199,128,20,200,129,36,200,
441 142,107,190,230,27,191,130,84,200,124,57,200,133,116,200,135,132,200,
442 129,172,136,194,152,200,8,136,180,200,139,196,200,128,0,59};
443
444 int main(void) {
445 gdImagePtr im;
446 if ( ( im = gdImageCreateFromGifPtr(8994,
447 (char*) &gifdata[0]) ) != NULL) {
448 fprintf(stderr, "success!\n");
449 gdImageDestroy(im);
450 return 0;
451 } else {
452 fprintf(stderr, "failed!\n");
453 return 1;
454 }
455 }
0 #include "gd.h"
1 #include "gdtest.h"
2
3 int main()
4 {
5 gdImagePtr im;
6 FILE *fp;
7 const r = 255, g = 0, b = 0;
8 int r_f,g_f,b_f, trans_c_f;
9 int trans_c = gdTrueColorAlpha(r,g,b,0);
10 int error = 0;
11
12 im = gdImageCreateTrueColor(192, 36);
13 gdImageColorTransparent(im, trans_c);
14 gdImageFilledRectangle(im, 0,0, 192,36, trans_c);
15
16 fp = fopen("_tmp_bug0006.gif", "wb");
17 gdImageGif(im,fp);
18 fclose(fp);
19
20 gdImageDestroy(im);
21
22 fp = fopen("_tmp_bug0006.gif", "rb");
23 if (!fp) {
24 gdTestErrorMsg("Cannot open <%s>\n", "_tmp_bug0006.gif");
25 return 1;
26 }
27
28 im = gdImageCreateFromGif(fp);
29 fclose(fp);
30 if (!im) {
31 gdTestErrorMsg("Cannot create image from <%s>\n", "_tmp_bug0006.gif");
32 }
33
34 trans_c_f =gdImageGetTransparent(im);
35 printf("c_f: %i\n", trans_c_f);
36 if (gdTestAssert(trans_c_f == 1)) {
37 r_f = gdImageRed(im, trans_c_f);
38 g_f = gdImageGreen(im, trans_c_f);
39 b_f = gdImageBlue(im, trans_c_f);
40
41 if (!gdTestAssert(r_f == r) || !gdTestAssert(g_f==g) || !gdTestAssert(b_f==b)) {
42 error = 1;
43 }
44 } else {
45 error = 1;
46 }
47
48 /* Destroy it */
49 gdImageDestroy(im);
50 unlink("_tmp_bug0006.gif");
51 return error;
52 }
0 #include <stdio.h>
1 #include <gd.h>
2 #include <gdtest.h>
3
4
5 int main()
6 {
7 gdImagePtr im;
8 FILE *fp;
9 char path[1024];
10
11 sprintf(path, "%s/gif/bug00060.gif", GDTEST_TOP_DIR);
12 fp = fopen(path, "rb");
13
14 if (!fp) {
15 printf("cannot open <%s>\n", path);
16 return -1;
17 }
18
19 im = gdImageCreateFromGif(fp);
20 fclose(fp);
21 gdImageDestroy(im);
22 return 0;
23 }
0 #include <stdio.h>
1 #include <gd.h>
2 #include <gdtest.h>
3
4 int main()
5 {
6 gdImagePtr im;
7 FILE *fp;
8 char path[1024];
9 int error = 0;
10
11 sprintf(path, "%s/gif/bug00066.gif", GDTEST_TOP_DIR);
12 fp = fopen(path, "rb");
13
14 if (!fp) {
15 printf("cannot open <%s>\n", path);
16 return -1;
17 }
18
19 im = gdImageCreateFromGif(fp);
20 fclose(fp);
21
22 sprintf(path, "%s/gif/bug00066_exp.png", GDTEST_TOP_DIR);
23 if (!gdAssertImageEqualsToFile(path, im)) {
24 error = 1;
25 }
26 gdImageDestroy(im);
27
28 return error;
29 }
0
1 SET(TESTS_FILES
2 jpeg_read
3 jpeg_empty_file
4 )
5
6 FOREACH(test_name ${TESTS_FILES})
7 add_executable(${test_name} "${test_name}.c")
8 target_link_libraries (${test_name} gdTest ${GD_LIB})
9 ADD_TEST(${test_name} ${EXECUTABLE_OUTPUT_PATH}/${test_name})
10 ENDFOREACH(test_name)
0 /* $Id: jpeg_empty_file.c,v 1.1.2.3 2007/04/10 20:35:21 pajoye Exp $ */
1 #include "gd.h"
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include "gdtest.h"
5
6 int main()
7 {
8 gdImagePtr im;
9 FILE *fp;
10 char path[1024];
11
12 sprintf(path, "%s/jpeg/empty.jpeg", GDTEST_TOP_DIR);
13 fp = fopen(path, "rb");
14 if (!fp) {
15 printf("failed, cannot open file\n");
16 return 1;
17 }
18
19 im = gdImageCreateFromJpeg(fp);
20 fclose(fp);
21
22 if (!im) {
23 return 0;
24 } else {
25 gdImageDestroy(im);
26 return 1;
27 }
28 }
0 /* $Id: jpeg_read.c,v 1.1.2.2 2007/04/10 20:32:37 pajoye Exp $ */
1 #include "gd.h"
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include "gdtest.h"
5
6 int main()
7 {
8 int error;
9 gdImagePtr im;
10 FILE *fp;
11 char path[1024];
12
13 sprintf(path, "%s/jpeg/conv_test.jpeg", GDTEST_TOP_DIR);
14 fp = fopen(path, "rb");
15 if (!fp) {
16 printf("failed, cannot open file\n");
17 return 1;
18 }
19
20 im = gdImageCreateFromJpeg(fp);
21 fclose(fp);
22
23 sprintf(path, "%s/jpeg/conv_test_exp.png", GDTEST_TOP_DIR);
24 if (!gdAssertImageEqualsToFile(path, im)) {
25 error = 1;
26 } else {
27 if (im) {
28 gdImageDestroy(im);
29 error = 0;
30 } else {
31 error = 1;
32 }
33 }
34 return error;
35 }
0
1 SET(TESTS_FILES
2 bug00011
3 bug00033
4 bug00086
5 )
6
7 FOREACH(test_name ${TESTS_FILES})
8 add_executable(${test_name} "${test_name}.c")
9 target_link_libraries (${test_name} gdTest ${GD_LIB})
10 ADD_TEST(${test_name} ${EXECUTABLE_OUTPUT_PATH}/${test_name})
11 ENDFOREACH(test_name)
0 /* $Id: bug00011.c,v 1.1.2.2 2007/04/10 20:32:37 pajoye Exp $ */
1 #include "gd.h"
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include "gdtest.h"
5
6 int main()
7 {
8 gdImagePtr im;
9 FILE *fp;
10 char path[2048];
11
12 sprintf(path, "%s/png/emptyfile", GDTEST_TOP_DIR);
13 printf("opening %s\n", path);
14 fp = fopen(path, "rb");
15 if (!fp) {
16 printf("failed, cannot open file\n");
17 return 1;
18 }
19 im = gdImageCreateFromPng(fp);
20 fclose(fp);
21
22 if (!im) {
23 return 0;
24 } else {
25 return 1;
26 }
27 }
0 /* $Id: bug00033.c,v 1.1.2.2 2007/04/10 20:32:37 pajoye Exp $ */
1 #include "gd.h"
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include "gdtest.h"
5
6 int main()
7 {
8 gdImagePtr im;
9 FILE *fp;
10 char path[1024];
11
12 sprintf(path, "%s/png/bug00033.png", GDTEST_TOP_DIR);
13 fp = fopen(path, "rb");
14 if (!fp) {
15 printf("failed, cannot open file <%s>\n", path);
16 return 1;
17 }
18
19 im = gdImageCreateFromPng(fp);
20 fclose(fp);
21
22 if (im) {
23 gdImageDestroy(im);
24 return 1;
25 } else {
26 return 0;
27 }
28
29 }
0 /* $Id: bug00086.c,v 1.1.2.1 2007/05/17 14:38:24 pajoye Exp $ */
1 /* id: gdbad3.c, Xavier Roche, May. 2007 */
2 /* gcc gdbad3.c -o bad -lgd && ./bad */
3
4 #include <stdio.h>
5 #include <stdlib.h>
6 #include "gd.h"
7
8 static const unsigned char pngdata[93];
9 int main(void) {
10 FILE *fp;
11 gdImagePtr im;
12 int i;
13 size_t out;
14
15 if ( ( im = gdImageCreateFromPngPtr(93, (char*) &pngdata[0]) ) == NULL) {
16 fprintf(stderr, "success!\n");
17 return 0;
18 } else {
19 fprintf(stderr, "failed!\n");
20 gdImageDestroy(im);
21 return 1;
22 }
23 return 0;
24 }
25
26 /* PNG data */
27 static const unsigned char pngdata[93] = {137,80,78,71,13,10,26,10,0,0,
28 0,13,73,72,68,82,0,0,0,120,0,0,0,131,8,6,0,0,0,70,49,223,8,0,0,0,6,98,
29 75,71,68,0,255,0,255,0,255,160,189,167,147,0,0,0,9,112,72,89,115,0,0,92,
30 70,0,0,92,70,1,20,148,67,65,0,0,0,9,118,112,65,103,0,0,0,120,0,0,0,131,
31 0,226,13,249,45};
32
0 #ifdef HAVE_CONFIG_H
1 #include "config.h"
2 #endif /* HAVE_CONFIG_H */
3
4 #include <stdio.h>
5 #include "gd.h"
6
7 #define FALSE 0
8 #define TRUE (!FALSE)
9
10 int
11 main (int argc, char *argv[])
12 {
13 #ifdef HAVE_LIBFREETYPE
14 FILE *out;
15 int transparent, green, black;
16 gdImagePtr im;
17
18 im = gdImageCreateTrueColor(100,100);
19
20 black = gdImageColorResolveAlpha(im, 0, 0, 0, gdAlphaOpaque);
21 green = gdImageColorResolveAlpha(im, 0, gdGreenMax, 0, gdAlphaOpaque);
22 transparent = gdImageColorResolveAlpha(im,
23 gdRedMax-1, gdGreenMax, gdBlueMax, gdAlphaTransparent);
24 gdImageColorTransparent(im, transparent);
25
26 /* Blending must be off to lay a transparent basecolor.
27 Nothing to blend with anyway. */
28 gdImageAlphaBlending(im, FALSE);
29 gdImageFill (im, im->sx/2, im->sy/2, transparent);
30 /* Blend everything else together,
31 especially fonts over non-transparent backgrounds */
32 gdImageAlphaBlending(im, TRUE);
33
34 gdImageFilledRectangle (im, 30, 30, 70, 70, green);
35 gdImageStringFT (im, NULL, black, "Times", 18, 0, 50, 50, "Hello");
36
37 gdImageSaveAlpha (im, TRUE);
38 #ifdef HAVE_LIBPNG
39 out = fopen ("testtr.png", "wb");
40 gdImagePng (im, out);
41 fclose (out);
42 #else
43 fprintf(stderr, "Compiled without libpng support\n");
44 #endif /* HAVE_LIBPNG */
45 gdImageDestroy (im);
46
47 return 0;
48 #else
49 fprintf(stderr, "Compiled without freetype support\n");
50 return 0;
51 #endif /* HAVE_LIBFREETYPE */
52 }
0
1 /* WBMP
2 ** ----
3 ** WBMP Level 0: B/W, Uncompressed
4 ** This implements the WBMP format as specified in WAPSpec 1.1 and 1.2.
5 ** It does not support ExtHeaders as defined in the spec. The spec states
6 ** that a WAP client does not need to implement ExtHeaders.
7 **
8 ** (c) 2000 Johan Van den Brande <johan@vandenbrande.com>
9 */
10
11 #ifdef HAVE_CONFIG_H
12 #include "config.h"
13 #endif
14
15 #include <stdio.h>
16 #include <stddef.h>
17 #include <stdlib.h>
18 #include <string.h>
19
20 #include "wbmp.h"
21 #include "gd.h"
22 #include "gdhelpers.h"
23
24 #ifdef NOTDEF
25 #define __TEST /* Compile with main function */
26 #define __DEBUG /* Extra verbose when with __TEST */
27 #define __WRITE /* readwbmp and writewbmp(stdout) */
28 #define __VIEW /* view the wbmp on stdout */
29 #endif
30
31 /* getmbi
32 ** ------
33 ** Get a multibyte integer from a generic getin function
34 ** 'getin' can be getc, with in = NULL
35 ** you can find getin as a function just above the main function
36 ** This way you gain a lot of flexibilty about how this package
37 ** reads a wbmp file.
38 */
39 int
40 getmbi (int (*getin) (void *in), void *in)
41 {
42 int i, mbi = 0;
43
44 do
45 {
46 i = getin (in);
47 if (i < 0)
48 return (-1);
49 mbi = (mbi << 7) | (i & 0x7f);
50 }
51 while (i & 0x80);
52
53 return (mbi);
54 }
55
56
57 /* putmbi
58 ** ------
59 ** Put a multibyte intgerer in some kind of output stream
60 ** I work here with a function pointer, to make it as generic
61 ** as possible. Look at this function as an iterator on the
62 ** mbi integers it spits out.
63 **
64 */
65 void
66 putmbi (int i, void (*putout) (int c, void *out), void *out)
67 {
68 int cnt, l, accu;
69
70 /* Get number of septets */
71 cnt = 0;
72 accu = 0;
73 while (accu != i)
74 accu += i & 0x7f << 7 * cnt++;
75
76 /* Produce the multibyte output */
77 for (l = cnt - 1; l > 0; l--)
78 putout (0x80 | (i & 0x7f << 7 * l) >> 7 * l, out);
79
80 putout (i & 0x7f, out);
81
82 }
83
84
85
86 /* skipheader
87 ** ----------
88 ** Skips the ExtHeader. Not needed for the moment
89 **
90 */
91 int
92 skipheader (int (*getin) (void *in), void *in)
93 {
94 int i;
95
96 do
97 {
98 i = getin (in);
99 if (i < 0)
100 return (-1);
101 }
102 while (i & 0x80);
103
104 return (0);
105 }
106
107 /* create wbmp
108 ** -----------
109 ** create an empty wbmp
110 **
111 */
112 Wbmp *
113 createwbmp (int width, int height, int color)
114 {
115 int i;
116
117 Wbmp *wbmp;
118 if ((wbmp = (Wbmp *) gdMalloc (sizeof (Wbmp))) == NULL)
119 return (NULL);
120
121 if (overflow2(sizeof (int), width)) {
122 gdFree(wbmp);
123 return NULL;
124 }
125 if (overflow2(sizeof (int) * width, height)) {
126 gdFree(wbmp);
127 return NULL;
128 }
129 if ((wbmp->bitmap =
130 (int *) gdMalloc (sizeof (int) * width * height)) == NULL)
131 {
132 gdFree (wbmp);
133 return (NULL);
134 }
135
136 wbmp->width = width;
137 wbmp->height = height;
138
139 for (i = 0; i < width * height; wbmp->bitmap[i++] = color);
140
141 return (wbmp);
142 }
143
144
145
146 /* readwbmp
147 ** -------
148 ** Actually reads the WBMP format from an open file descriptor
149 ** It goes along by returning a pointer to a WBMP struct.
150 **
151 */
152 int
153 readwbmp (int (*getin) (void *in), void *in, Wbmp ** return_wbmp)
154 {
155 int row, col, byte, pel, pos;
156 Wbmp *wbmp;
157
158 if ((wbmp = (Wbmp *) gdMalloc (sizeof (Wbmp))) == NULL)
159 return (-1);
160
161 wbmp->type = getin (in);
162 if (wbmp->type != 0)
163 {
164 gdFree (wbmp);
165 return (-1);
166 }
167
168 if (skipheader (getin, in))
169 return (-1);
170
171
172 wbmp->width = getmbi (getin, in);
173 if (wbmp->width == -1)
174 {
175 gdFree (wbmp);
176 return (-1);
177 }
178
179 wbmp->height = getmbi (getin, in);
180 if (wbmp->height == -1)
181 {
182 gdFree (wbmp);
183 return (-1);
184 }
185
186 #ifdef __DEBUG
187 printf ("W: %d, H: %d\n", wbmp->width, wbmp->height);
188 #endif
189
190 if (overflow2(sizeof (int), wbmp->width) ||
191 overflow2(sizeof (int) * wbmp->width, wbmp->height))
192 {
193 gdFree(wbmp);
194 return (-1);
195 }
196 if ((wbmp->bitmap =
197 (int *) gdMalloc (sizeof (int) * wbmp->width * wbmp->height)) == NULL)
198 {
199 gdFree (wbmp);
200 return (-1);
201 }
202
203 #ifdef __DEBUG
204 printf ("DATA CONSTRUCTED\n");
205 #endif
206
207 pos = 0;
208 for (row = 0; row < wbmp->height; row++)
209 {
210 for (col = 0; col < wbmp->width;)
211 {
212 byte = getin (in);
213
214 for (pel = 7; pel >= 0; pel--)
215 {
216 if (col++ < wbmp->width)
217 {
218 if (byte & 1 << pel)
219 {
220 wbmp->bitmap[pos] = WBMP_WHITE;
221 }
222 else
223 {
224 wbmp->bitmap[pos] = WBMP_BLACK;
225 }
226 pos++;
227 }
228 }
229 }
230 }
231
232 *return_wbmp = wbmp;
233
234 return (0);
235 }
236
237
238 /* writewbmp
239 ** ---------
240 ** Write a wbmp to a file descriptor
241 **
242 ** Why not just giving a filedescriptor to this function?
243 ** Well, the incentive to write this function was the complete
244 ** integration in gd library from www.libgd.org. They use
245 ** their own io functions, so the passing of a function seemed to be
246 ** a logic(?) decision ...
247 **
248 */
249 int
250 writewbmp (Wbmp * wbmp, void (*putout) (int c, void *out), void *out)
251 {
252 int row, col;
253 int bitpos, octet;
254
255 /* Generate the header */
256 putout (0, out); /* WBMP Type 0: B/W, Uncompressed bitmap */
257 putout (0, out); /* FixHeaderField */
258
259
260
261 /* Size of the image */
262 putmbi (wbmp->width, putout, out); /* width */
263 putmbi (wbmp->height, putout, out); /* height */
264
265
266 /* Image data */
267 for (row = 0; row < wbmp->height; row++)
268 {
269 bitpos = 8;
270 octet = 0;
271 for (col = 0; col < wbmp->width; col++)
272 {
273 octet |=
274 ((wbmp->bitmap[row * wbmp->width + col] ==
275 1) ? WBMP_WHITE : WBMP_BLACK) << --bitpos;
276 if (bitpos == 0)
277 {
278 bitpos = 8;
279 putout (octet, out);
280 octet = 0;
281 }
282 }
283 if (bitpos != 8)
284 putout (octet, out);
285
286 }
287 return (0);
288
289 }
290
291
292 /* freewbmp
293 ** --------
294 ** gdFrees up memory occupied by a WBMP structure
295 **
296 */
297 void
298 freewbmp (Wbmp * wbmp)
299 {
300 gdFree (wbmp->bitmap);
301 gdFree (wbmp);
302 }
303
304
305 /* printwbmp
306 ** ---------
307 ** print a WBMP to stdout for visualisation
308 **
309 */
310 void
311 printwbmp (Wbmp * wbmp)
312 {
313 int row, col;
314 for (row = 0; row < wbmp->height; row++)
315 {
316 for (col = 0; col < wbmp->width; col++)
317 {
318 if (wbmp->bitmap[wbmp->width * row + col] == WBMP_BLACK)
319 {
320 putchar ('#');
321 }
322 else
323 {
324 putchar (' ');
325 }
326 }
327 putchar ('\n');
328 }
329 }
330
331 #ifdef __TEST
332
333 /* putout to file descriptor
334 ** -------------------------
335 */
336 int
337 putout (int c, void *out)
338 {
339 return (putc (c, (FILE *) out));
340 }
341
342 /* getin from file descriptor
343 ** --------------------------
344 */
345 int
346 getin (void *in)
347 {
348 return (getc ((FILE *) in));
349 }
350
351
352 /* Main function
353 ** -------------
354 **
355 */
356 int
357 main (int argc, char *argv[])
358 {
359 FILE *wbmp_file;
360 Wbmp *wbmp;
361
362 wbmp_file = fopen (argv[1], "rb");
363 if (wbmp_file)
364 {
365 readwbmp (&getin, wbmp_file, &wbmp);
366
367 #ifdef __VIEW
368
369 #ifdef __DEBUG
370 printf ("\nVIEWING IMAGE\n");
371 #endif
372
373 printwbmp (wbmp);
374 #endif
375
376 #ifdef __WRITE
377
378 #ifdef __DEBUG
379 printf ("\nDUMPING WBMP to STDOUT\n");
380 #endif
381
382 writewbmp (wbmp, &putout, stdout);
383 #endif
384
385 freewbmp (wbmp);
386 fclose (wbmp_file);
387 }
388 }
389 #endif
0 #ifdef __cplusplus
1 extern "C" {
2 #endif
3
4 /* WBMP
5 ** ----
6 ** WBMP Level 0: B/W, Uncompressed
7 ** This implements the WBMP format as specified in WAPSpec 1.1 and 1.2.
8 ** It does not support ExtHeaders as defined in the spec. The spec states
9 ** that a WAP client does not need to implement ExtHeaders.
10 **
11 ** (c) 2000 Johan Van den Brande <johan@vandenbrande.com>
12 **
13 ** Header file
14 */
15 #ifndef __WBMP_H
16 #define __WBMP_H 1
17
18
19 /* WBMP struct
20 ** -----------
21 ** A Wireless bitmap structure
22 **
23 */
24
25 typedef struct Wbmp_
26 {
27 int type; /* type of the wbmp */
28 int width; /* width of the image */
29 int height; /* height of the image */
30 int *bitmap; /* pointer to data: 0 = WHITE , 1 = BLACK */
31 }
32 Wbmp;
33
34 #define WBMP_WHITE 1
35 #define WBMP_BLACK 0
36
37
38 /* Proto's
39 ** -------
40 **
41 */
42 void putmbi (int i, void (*putout) (int c, void *out), void *out);
43 int getmbi (int (*getin) (void *in), void *in);
44 int skipheader (int (*getin) (void *in), void *in);
45 Wbmp *createwbmp (int width, int height, int color);
46 int readwbmp (int (*getin) (void *in), void *in, Wbmp ** wbmp);
47 int writewbmp (Wbmp * wbmp, void (*putout) (int c, void *out), void *out);
48 void freewbmp (Wbmp * wbmp);
49 void printwbmp (Wbmp * wbmp);
50
51 #endif
52
53 #ifdef __cplusplus
54 }
55 #endif
0 #ifdef HAVE_CONFIG_H
1 #include "config.h"
2 #endif
3
4 /* Bring in the gd library functions */
5 #include "gd.h"
6
7 /* Bring in standard I/O and string manipulation functions */
8 #include <stdio.h>
9 #include <stdlib.h> /* for atoi() */
10 #include <string.h>
11
12 #ifdef _WIN32
13 #include <process.h>
14 int
15 getpid ()
16 {
17 return _getpid ();
18 }
19 #else
20 #include <unistd.h> /* for getpid(), unlink() */
21 #endif
22 int
23 main (int argc, char **argv)
24 {
25 FILE *in;
26 FILE *out;
27 char outFn[20];
28 int useStdinStdout = 0;
29
30 /* Declare our image pointer */
31 gdImagePtr im = 0;
32 int i;
33 /* We'll clear 'no' once we know the user has made a
34 reasonable request. */
35 int no = 1;
36 /* We'll set 'write' once we know the user's request
37 requires that the image be written back to disk. */
38 int write = 0;
39 /* C programs always get at least one argument; we want at
40 least one more (the image), more in practice. */
41 if (argc < 2 || !strcmp (argv[1], "--help"))
42 {
43 no = 1;
44 goto usage;
45 }
46
47 /* The last argument should be the image. Open the file. */
48 if (strcmp ("-", argv[argc - 1]) == 0)
49 { /* - is synonymous with STDIN */
50 useStdinStdout = 1;
51 in = stdin;
52 }
53 else
54 {
55 in = fopen (argv[argc - 1], "rb");
56 }
57 if (!in)
58 {
59 fprintf (stderr, "Error: can't open file %s.\n", argv[argc - 1]);
60 exit (1);
61 }
62 /* Now load the image. */
63 #ifdef HAVE_LIBPNG
64 im = gdImageCreateFromPng (in);
65 #else
66 fprintf (stderr, "No PNG library support.\n");
67 #endif
68 fclose (in);
69 /* If the load failed, it must not be a PNG file. */
70 if (!im)
71 {
72 fprintf (stderr,
73 "Error: %s is not a valid PNG file.\n", argv[argc - 1]);
74 exit (1);
75 }
76 /* Consider each argument in turn. */
77 for (i = 1; (i < (argc - 1)); i++)
78 {
79 /* -i turns on and off interlacing. */
80 if (!strcmp (argv[i], "--help"))
81 {
82 /* Every program should use this for help! :) */
83 no = 1;
84 goto usage;
85 }
86 else if (!strcmp (argv[i], "-i"))
87 {
88 if (i == (argc - 2))
89 {
90 fprintf (stderr, "Error: -i specified without y or n.\n");
91 no = 1;
92 goto usage;
93 }
94 if (!strcmp (argv[i + 1], "y"))
95 {
96 /* Set interlace. */
97 gdImageInterlace (im, 1);
98 }
99 else if (!strcmp (argv[i + 1], "n"))
100 {
101 /* Clear interlace. */
102 gdImageInterlace (im, 0);
103 }
104 else
105 {
106 fprintf (stderr, "Error: -i specified without y or n.\n");
107 no = 1;
108 goto usage;
109 }
110 i++;
111 no = 0;
112 write = 1;
113 }
114 else if (!strcmp (argv[i], "-t"))
115 {
116 /* Set transparent index (or none). */
117 int index;
118 if (i == (argc - 2))
119 {
120 fprintf (stderr,
121 "Error: -t specified without a color table index.\n");
122 no = 1;
123 goto usage;
124 }
125 if (!strcmp (argv[i + 1], "none"))
126 {
127 /* -1 means not transparent. */
128 gdImageColorTransparent (im, -1);
129 }
130 else
131 {
132 /* OK, get an integer and set the index. */
133 index = atoi (argv[i + 1]);
134 gdImageColorTransparent (im, index);
135 }
136 i++;
137 write = 1;
138 no = 0;
139 }
140 else if (!strcmp (argv[i], "-l"))
141 {
142 /* List the colors in the color table. */
143 int j;
144 if (!im->trueColor)
145 {
146 /* Tabs used below. */
147 printf ("Index Red Green Blue Alpha\n");
148 for (j = 0; (j < gdImageColorsTotal (im)); j++)
149 {
150 /* Use access macros to learn colors. */
151 printf ("%d %d %d %d %d\n",
152 j,
153 gdImageRed (im, j),
154 gdImageGreen (im, j),
155 gdImageBlue (im, j), gdImageAlpha (im, j));
156 }
157 }
158 else
159 {
160 printf ("Truecolor image, no palette entries to list.\n");
161 }
162 no = 0;
163 }
164 else if (!strcmp (argv[i], "-d"))
165 {
166 /* Output dimensions, etc. */
167 int t;
168 printf ("Width: %d Height: %d Colors: %d\n",
169 gdImageSX (im), gdImageSY (im), gdImageColorsTotal (im));
170 t = gdImageGetTransparent (im);
171 if (t != (-1))
172 {
173 printf ("First 100%% transparent index: %d\n", t);
174 }
175 else
176 {
177 /* -1 means the image is not transparent. */
178 printf ("First 100%% transparent index: none\n");
179 }
180 if (gdImageGetInterlaced (im))
181 {
182 printf ("Interlaced: yes\n");
183 }
184 else
185 {
186 printf ("Interlaced: no\n");
187 }
188 no = 0;
189 }
190 else if (!strcmp (argv[i], "-a"))
191 {
192 /* Alpha channel info -- thanks to Wez Furlong */
193 int maxx, maxy, x, y, alpha, pix, nalpha = 0;
194
195 maxx = gdImageSX (im);
196 maxy = gdImageSY (im);
197
198 printf ("alpha channel information:\n");
199
200 if (im->trueColor)
201 {
202 for (y = 0; y < maxy; y++)
203 {
204 for (x = 0; x < maxx; x++)
205 {
206 pix = gdImageGetPixel (im, x, y);
207 alpha = gdTrueColorGetAlpha (pix);
208
209 if (alpha > gdAlphaOpaque)
210 {
211 /* Use access macros to learn colors. */
212 printf ("%d %d %d %d\n",
213 gdTrueColorGetRed (pix),
214 gdTrueColorGetGreen (pix),
215 gdTrueColorGetBlue (pix), alpha);
216 nalpha++;
217 }
218
219 }
220 }
221 }
222 else
223 printf ("NOT a true color image\n");
224 no = 0;
225 printf ("%d alpha channels\n", nalpha);
226
227 }
228 else
229 {
230 fprintf (stderr, "Unknown argument: %s\n", argv[i]);
231 break;
232 }
233 }
234 usage:
235 if (no)
236 {
237 /* If the command failed, output an explanation. */
238 fprintf (stderr,
239 "Usage: webpng [-i y|n ] [-l] [-t index|none ] [-d] pngname.png\n"
240 " -i [y|n] Turns on/off interlace\n"
241 " -l Prints the table of color indexes\n"
242 " -t [index] Set the transparent color to the specified index (0-255 or \"none\")\n"
243 " -d Reports the dimensions and other characteristics of the image.\n"
244 " -a Prints all alpha channels that are not 100%% opaque.\n"
245 "\n"
246 "If you specify '-' as the input file, stdin/stdout will be used input/output.\n");
247 }
248 if (write)
249 {
250 if (useStdinStdout)
251 {
252 out = stdout;
253 }
254 else
255 {
256 /* Open a temporary file. */
257
258 /* "temp.tmp" is not good temporary filename. */
259 sprintf (outFn, "webpng.tmp%d", getpid ());
260 out = fopen (outFn, "wb");
261
262 if (!out)
263 {
264 fprintf (stderr, "Unable to write to %s -- exiting\n", outFn);
265 exit (1);
266 }
267 }
268
269 /* Write the new PNG. */
270 #ifdef HAVE_LIBPNG
271 gdImagePng (im, out);
272 #else
273 fprintf (stderr, "No PNG library support.\n");
274 #endif
275 if (!useStdinStdout)
276 {
277 fclose (out);
278 /* Erase the old PNG. */
279 unlink (argv[argc - 1]);
280 /* Rename the new to the old. */
281 if (rename (outFn, argv[argc - 1]) != 0)
282 {
283 perror ("rename");
284 exit (1);
285 }
286 }
287 }
288 /* Delete the image from memory. */
289 if (im)
290 {
291 gdImageDestroy (im);
292 }
293 /* All's well that ends well. */
294 return 0;
295 }
0 # Makefile form Microsoft C++ nmake.exe
1 # $Id: Makefile,v 1.5.2.5 2007/04/24 14:24:53 pajoye Exp $
2
3 EXTRA_INCLUDE=C:\\gd_build\\gd_deps\\include
4 EXTRA_LIBS=/libpath:C:\\gd_build\\gd_deps\\lib
5
6 CC=cl.exe
7 LD=link.exe
8 BUILD=Release
9 #BUILD=Debug
10
11 LIBGDCFLAGS= \
12 /D PATHSEPARATOR="\";\"" \
13 /D DEFAULT_FONTPATH="\"C:\\WINDOWS\\FONTS;C:\\WINNT\\FONTS\"" \
14 /D HAVE_FT2BUILD_H \
15 /D HAVE_LIBZ \
16 /D HAVE_GD_BUNDLED=1 \
17 /D HAVE_GD_GIF_READ=1 \
18 /D HAVE_GD_GIF_CREATE=1 \
19 /D HAVE_GD_IMAGESETBRUSH=1 \
20 /D HAVE_GD_IMAGESETTILE=1 \
21 /D HAVE_GD_JPG \
22 /D HAVE_GD_PNG \
23 /D HAVE_GD_STRINGFTEX=1 \
24 /D HAVE_GD_STRINGTTF=1 \
25 /D HAVE_GD_XBM \
26 /D HAVE_LIBFREETYPE=1 \
27 /D HAVE_LIBJPEG \
28 /D HAVE_LIBPNG \
29 /D USE_GD_IMGSTRTTF
30
31 CFLAGS=-I. -I.. -I$(EXTRA_INCLUDE) -nologo -DWIN32 -D_WIN32 -DMSWIN32 -DBGDWIN32 $(LIBGDCFLAGS)
32 LIBS=libjpeg.lib freetype2.lib libpng.lib zlib.lib kernel32.lib user32.lib advapi32.lib
33
34 !if "$(BUILD)" == "Debug"
35 CFLAGS=$(CFLAGS) /Od /Zi /MTd /D_DEBUG /LDd
36 LDFLAGS=/DEBUG $(LDFLAGS) /nodefaultlib:msvcrt.lib $(EXTRA_LIBS)
37 LIBS=$(LIBS) msvcrtd.lib
38 !else
39 CFLAGS=$(CFLAGS) /Og /Oi /O2 /Oy /GF /MT /DNDEBUG /LD
40 LDFLAGS=/nodefaultlib:msvcrtd.lib $(EXTRA_LIBS)
41 LIBS=$(LIBS) msvcrt.lib
42 !endif
43
44 CPPFLAGS=$(CFLAGS)
45
46 !if "$(DLLNAME)" == ""
47 DLLNAME=bgd.dll
48 !endif
49 DYNAMICLIB=$(DLLNAME:.dll=.lib)
50
51 !if "$(STATICLIB)" == ""
52 STATICLIB=bgd_a.lib
53 !endif
54
55 OBJS= \
56 gd.obj \
57 gdcache.obj \
58 gdfontg.obj \
59 gdfontl.obj \
60 gdfontmb.obj \
61 gdfonts.obj \
62 gdfontt.obj \
63 gdft.obj \
64 gdfx.obj \
65 gd_gd2.obj \
66 gd_gd.obj \
67 gd_gif_in.obj \
68 gd_gif_out.obj \
69 gdhelpers.obj \
70 gd_io.obj \
71 gd_io_dp.obj \
72 gd_io_file.obj \
73 gd_io_ss.obj \
74 gd_jpeg.obj \
75 gd_security.obj \
76 gdkanji.obj \
77 gd_png.obj \
78 gd_ss.obj \
79 gdtables.obj \
80 gd_topal.obj \
81 gd_wbmp.obj \
82 gdxpm.obj \
83 wbmp.obj
84
85 EXE_OBJS= \
86 annotate.obj \
87 circletexttest.obj \
88 fontconfigtest.obj \
89 fontsizetest.obj \
90 fontwheeltest.obj \
91 gd2copypal.obj \
92 gd2togif.obj \
93 gd2topng.obj \
94 gdcmpgif.obj \
95 gdparttopng.obj \
96 gdtopng.obj \
97 giftogd2.obj \
98 gdtest.obj \
99 gdtestft.obj \
100 gifanimtest.obj \
101 pngtogd.obj \
102 pngtogd2.obj \
103 testac.obj \
104 testtr.obj \
105 webpng.obj
106
107 all: $(DLLNAME) $(STATICLIB) tests
108
109 $(EXE_OBJS:.obj=.exe): $*.obj $(DLLNAME)
110 link /out:$*.exe $*.obj $(DYNAMICLIB)
111
112 tests: $(EXE_OBJS:.obj=.exe)
113
114 libgd.dll.res: libgd.rc
115 $(RC) /fo libgd.dll.res libgd.rc
116
117 {..}.c.obj:
118 $(CC) $(CFLAGS) -c $<
119
120 $(STATICLIB): $(OBJS)
121 $(LD) /lib /out:$(STATICLIB) $(OBJS)
122
123 $(DLLNAME): $(OBJS) libgd.dll.res
124 $(LD) /dll /out:$(DLLNAME) \
125 $(LDFLAGS) \
126 $(OBJS) \
127 libgd.dll.res \
128 $(LIBS)
129
130 dist: all
131 -rmdir /s /q distro
132 mkdir distro
133 mkdir distro\bin
134 copy *.exe distro\bin
135 copy *.dll distro\bin
136 mkdir distro\include
137 copy ..\*.h distro\include
138 mkdir distro\lib
139 copy *.lib distro\lib
140 copy ..\COPYING distro\COPYING.TXT
141
142 clean:
143 -del /q *.obj *.dll *.lib *.ilk *.pdb *.exp *.exe *.png *.res
144 -rmdir /s /q distro
0 /* This is a template RC file.
1 * $Id: libgd.rc,v 1.2.2.1 2007/02/06 22:29:32 pajoye Exp $
2 * Do not edit with MSVC */
3 #ifdef APSTUDIO_INVOKED
4 # error dont edit with MSVC
5 #endif
6
7 #include "winres.h"
8 #include "../gd.h"
9
10 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
11 #pragma code_page(1252)
12
13 #ifdef WANT_LOGO
14 0 ICON gdlib.ico
15 #endif
16
17 //Version
18 VS_VERSION_INFO VERSIONINFO
19 FILEVERSION GD_MAJOR_VERSION,GD_MINOR_VERSION,GD_RELEASE_VERSION,0
20 PRODUCTVERSION GD_MAJOR_VERSION,GD_MINOR_VERSION,GD_RELEASE_VERSION,0
21 FILEFLAGSMASK 0x3fL
22 #ifdef _DEBUG
23 FILEFLAGS VS_FF_DEBUG
24 #else
25 FILEFLAGS 0x0L
26 #endif
27 FILEOS VOS__WINDOWS32
28 FILETYPE VFT_DLL
29 FILESUBTYPE VFT2_UNKNOWN
30 BEGIN
31 BLOCK "StringFileInfo"
32 BEGIN
33 BLOCK "040904b0"
34 BEGIN
35 VALUE "Comments", "Thanks to Thomas Boutell" "\0"
36 VALUE "CompanyName", "LIBGD Development Team\0"
37 VALUE "FileDescription", "LIBGD" "\0"
38 VALUE "FileVersion", GD_VERSION_STRING "\0"
39 VALUE "InternalName", "bgd.dll" "\0"
40 VALUE "LegalCopyright", "Copyright © 1997-2007 Thomas Boutell, Pierre-Alain Joye and contributors, see COPYING\0"
41 VALUE "LegalTrademarks", "Thomas Boutell and contributors\0"
42 VALUE "OriginalFilename", "bgd.dll" "\0"
43 VALUE "PrivateBuild", "\0"
44 VALUE "ProductName", "LIBGD dynamic link library" "\0"
45 VALUE "SpecialBuild", "win32" "\0"
46 VALUE "URL", "http://www.libgd.org/"
47 END
48 END
49 BLOCK "VarFileInfo"
50 BEGIN
51 VALUE "Translation", 0x409, 1200
52 END
53 END
54
55 #ifdef MC_INCLUDE
56 #include MC_INCLUDE
57 #endif
58
0 2012-07-19 Peter Breitenlohner <peb@mppmu.mpg.de>
1
2 * patch-01-win32 [WIN32] (new): Avoid 'redefined' warnings.
3 Add $SYSTEMROOT\fonts fontsearchpath.
4 Mail from Akira, 18 Jul 2012 19:11:09.
5
6 Copyright (C) 2012 Peter Breitenlohner <tex-live@tug.org>
7 You may freely use, modify and/or distribute this file.
0 Changes applied to the gd-2.0.35/ tree as obtained from:
1 http://www.libgd.org/releases/gd-2.0.35.tar.bz2
2
3 Removed:
4 aclocal.m4
5 config/config.guess
6 config/config.rpath
7 config/config.sub
8 config/depcomp
9 config/install-sh
10 config/ltmain.sh
11 config/missing
12 config/mkinstalldirs
13 depcomp
14 install-sh
15 missing
16 mkinstalldirs
17
18 Executed the command:
19 find -type f -perm /111 ! -name bdftogd ! -name configure -exec chmod -c a-x {} \;
20 i.e., removed execute permissions from all files except bdftogd and configure.
21
0 diff -ur gd-2.0.35.orig/gdft.c gd-2.0.35/gdft.c
1 --- gd-2.0.35.orig/gdft.c 2007-04-19 14:54:56.000000000 +0200
2 +++ gd-2.0.35/gdft.c 2012-07-19 08:09:34.000000000 +0200
3 @@ -22,11 +22,13 @@
4 #include <unistd.h>
5 #else
6 #include <io.h>
7 +#ifndef R_OK
8 #define R_OK 04 /* Needed in Windows */
9 #endif
10 +#endif
11
12 /* number of antialised colors for indexed bitmaps */
13 -#define NUMCOLORS 8
14 +#define gd_NUMCOLORS 8
15
16 static int fontConfigFlag = 0;
17
18 @@ -537,7 +539,7 @@
19 /*
20 * Computes a color in im's color table that is part way between
21 * the background and foreground colors proportional to the gray
22 - * pixel value in the range 0-NUMCOLORS. The fg and bg colors must already
23 + * pixel value in the range 0-gd_NUMCOLORS. The fg and bg colors must already
24 * be in the color table for palette images. For truecolor images the
25 * returned value simply has an alpha component and gdImageAlphaBlend
26 * does the work so that text can be alpha blended across a complex
27 @@ -564,14 +566,14 @@
28 /* if fg is specified by a negative color idx, then don't antialias */
29 if (fg < 0)
30 {
31 - if ((pixel + pixel) >= NUMCOLORS)
32 + if ((pixel + pixel) >= gd_NUMCOLORS)
33 a->tweencolor = -fg;
34 else
35 a->tweencolor = bg;
36 }
37 else
38 {
39 - npixel = NUMCOLORS - pixel;
40 + npixel = gd_NUMCOLORS - pixel;
41 if (im->trueColor)
42 {
43 /* 2.0.1: use gdImageSetPixel to do the alpha blending work,
44 @@ -584,20 +586,20 @@
45 gdTrueColorGetBlue (fg),
46 gdAlphaMax -
47 (gdTrueColorGetAlpha (fg) *
48 - pixel / NUMCOLORS));
49 + pixel / gd_NUMCOLORS));
50 }
51 else
52 {
53 a->tweencolor = gdImageColorResolve (im,
54 (pixel * im->red[fg] +
55 npixel * im->red[bg]) /
56 - NUMCOLORS,
57 + gd_NUMCOLORS,
58 (pixel * im->green[fg] +
59 npixel * im->green[bg]) /
60 - NUMCOLORS,
61 + gd_NUMCOLORS,
62 (pixel * im->blue[fg] +
63 npixel * im->blue[bg]) /
64 - NUMCOLORS);
65 + gd_NUMCOLORS);
66 }
67 }
68 return (void *) a;
69 @@ -734,23 +736,23 @@
70 if (bitmap.pixel_mode == ft_pixel_mode_grays)
71 {
72 /*
73 - * Round to NUMCOLORS levels of antialiasing for
74 + * Round to gd_NUMCOLORS levels of antialiasing for
75 * index color images since only 256 colors are
76 * available.
77 */
78 - tc_key.pixel = ((bitmap.buffer[pc] * NUMCOLORS)
79 + tc_key.pixel = ((bitmap.buffer[pc] * gd_NUMCOLORS)
80 + bitmap.num_grays / 2)
81 / (bitmap.num_grays - 1);
82 }
83 else if (bitmap.pixel_mode == ft_pixel_mode_mono)
84 {
85 tc_key.pixel = ((bitmap.buffer[pc / 8]
86 - << (pc % 8)) & 128) ? NUMCOLORS : 0;
87 + << (pc % 8)) & 128) ? gd_NUMCOLORS : 0;
88 /* 2.0.5: mode_mono fix from Giuliano Pochini */
89 tc_key.pixel =
90 ((bitmap.
91 buffer[(col >> 3) +
92 - pcr]) & (1 << (~col & 0x07))) ? NUMCOLORS : 0;
93 + pcr]) & (1 << (~col & 0x07))) ? gd_NUMCOLORS : 0;
94 }
95 else
96 {
97 @@ -766,7 +768,7 @@
98 continue;
99 /* get pixel location in gd buffer */
100 pixel = &im->pixels[y][x];
101 - if (tc_key.pixel == NUMCOLORS)
102 + if (tc_key.pixel == gd_NUMCOLORS)
103 {
104 /* use fg color directly. gd 2.0.2: watch out for
105 negative indexes (thanks to David Marwood). */
106 @@ -1561,6 +1563,16 @@
107 */
108 *fontpath = NULL;
109 fontsearchpath = getenv ("GDFONTPATH");
110 +#ifdef WIN32
111 + if (!fontsearchpath) {
112 + char *ffptr = getenv ("SYSTEMROOT");
113 + if (ffptr) {
114 + fontsearchpath = malloc (strlen(ffptr) + strlen("\\fonts") + 1);
115 + strcpy(fontsearchpath, ffptr);
116 + strcat(fontsearchpath, "\\fonts");
117 + }
118 + }
119 +#endif
120 if (!fontsearchpath)
121 fontsearchpath = DEFAULT_FONTPATH;
122 fontlist = strdup (name_list);
0 ## Proxy Makefile.am to install headers headers for TeX Live.
1 ##
2 ## Copyright (C) 2009-2012 Peter Breitenlohner <tex-live@tug.org>
3 ##
4 ## This file is free software; the copyright holder
5 ## gives unlimited permission to copy and/or distribute it,
6 ## with or without modifications, as long as this notice is preserved.
7 ##
8 GD_SRC = $(top_srcdir)/$(GD_TREE)
9
10 hdr_links = \
11 $(GD_SRC)/entities.h \
12 $(GD_SRC)/gd.h \
13 $(GD_SRC)/gd_io.h \
14 $(GD_SRC)/gdcache.h \
15 $(GD_SRC)/gdfontg.h \
16 $(GD_SRC)/gdfontl.h \
17 $(GD_SRC)/gdfontmb.h \
18 $(GD_SRC)/gdfonts.h \
19 $(GD_SRC)/gdfontt.h \
20 $(GD_SRC)/gdfx.h \
21 $(GD_SRC)/gdhelpers.h \
22 $(GD_SRC)/jisx0208.h \
23 $(GD_SRC)/wbmp.h
24
25 include $(top_srcdir)/../am/hdr_links.am
26
0 # Makefile.in generated by automake 1.13.1 from Makefile.am.
1 # @configure_input@
2
3 # Copyright (C) 1994-2012 Free Software Foundation, Inc.
4
5 # This Makefile.in is free software; the Free Software Foundation
6 # gives unlimited permission to copy and/or distribute it,
7 # with or without modifications, as long as this notice is preserved.
8
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
11 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
12 # PARTICULAR PURPOSE.
13
14 @SET_MAKE@
15 VPATH = @srcdir@
16 am__make_dryrun = \
17 { \
18 am__dry=no; \
19 case $$MAKEFLAGS in \
20 *\\[\ \ ]*) \
21 echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
22 | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
23 *) \
24 for am__flg in $$MAKEFLAGS; do \
25 case $$am__flg in \
26 *=*|--*) ;; \
27 *n*) am__dry=yes; break;; \
28 esac; \
29 done;; \
30 esac; \
31 test $$am__dry = yes; \
32 }
33 pkgdatadir = $(datadir)/@PACKAGE@
34 pkgincludedir = $(includedir)/@PACKAGE@
35 pkglibdir = $(libdir)/@PACKAGE@
36 pkglibexecdir = $(libexecdir)/@PACKAGE@
37 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
38 install_sh_DATA = $(install_sh) -c -m 644
39 install_sh_PROGRAM = $(install_sh) -c
40 install_sh_SCRIPT = $(install_sh) -c
41 INSTALL_HEADER = $(INSTALL_DATA)
42 transform = $(program_transform_name)
43 NORMAL_INSTALL = :
44 PRE_INSTALL = :
45 POST_INSTALL = :
46 NORMAL_UNINSTALL = :
47 PRE_UNINSTALL = :
48 POST_UNINSTALL = :
49 build_triplet = @build@
50 host_triplet = @host@
51 DIST_COMMON = $(top_srcdir)/../am/hdr_links.am $(srcdir)/Makefile.in \
52 $(srcdir)/Makefile.am
53 subdir = include
54 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
55 am__aclocal_m4_deps = $(top_srcdir)/../../m4/kpse-common.m4 \
56 $(top_srcdir)/../../m4/kpse-freetype2-flags.m4 \
57 $(top_srcdir)/../../m4/kpse-libpng-flags.m4 \
58 $(top_srcdir)/../../m4/kpse-warnings.m4 \
59 $(top_srcdir)/../../m4/kpse-zlib-flags.m4 \
60 $(top_srcdir)/../../m4/libtool.m4 \
61 $(top_srcdir)/../../m4/ltoptions.m4 \
62 $(top_srcdir)/../../m4/ltsugar.m4 \
63 $(top_srcdir)/../../m4/ltversion.m4 \
64 $(top_srcdir)/../../m4/lt~obsolete.m4 \
65 $(top_srcdir)/configure.ac
66 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
67 $(ACLOCAL_M4)
68 mkinstalldirs = $(install_sh) -d
69 CONFIG_HEADER = $(top_builddir)/config.h
70 CONFIG_CLEAN_FILES =
71 CONFIG_CLEAN_VPATH_FILES =
72 AM_V_P = $(am__v_P_@AM_V@)
73 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
74 am__v_P_0 = false
75 am__v_P_1 = :
76 AM_V_GEN = $(am__v_GEN_@AM_V@)
77 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
78 am__v_GEN_0 = @echo " GEN " $@;
79 am__v_GEN_1 =
80 AM_V_at = $(am__v_at_@AM_V@)
81 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
82 am__v_at_0 = @
83 am__v_at_1 =
84 SOURCES =
85 DIST_SOURCES =
86 am__can_run_installinfo = \
87 case $$AM_UPDATE_INFO_DIR in \
88 n|no|NO) false;; \
89 *) (install-info --version) >/dev/null 2>&1;; \
90 esac
91 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
92 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
93 ACLOCAL = @ACLOCAL@
94 AMTAR = @AMTAR@
95 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
96 AR = @AR@
97 AUTOCONF = @AUTOCONF@
98 AUTOHEADER = @AUTOHEADER@
99 AUTOMAKE = @AUTOMAKE@
100 AWK = @AWK@
101 CC = @CC@
102 CCDEPMODE = @CCDEPMODE@
103 CFLAGS = @CFLAGS@
104 CPP = @CPP@
105 CPPFLAGS = @CPPFLAGS@
106 CYGPATH_W = @CYGPATH_W@
107 DEFS = @DEFS@
108 DEPDIR = @DEPDIR@
109 DLLTOOL = @DLLTOOL@
110 DSYMUTIL = @DSYMUTIL@
111 DUMPBIN = @DUMPBIN@
112 ECHO_C = @ECHO_C@
113 ECHO_N = @ECHO_N@
114 ECHO_T = @ECHO_T@
115 EGREP = @EGREP@
116 EXEEXT = @EXEEXT@
117 FGREP = @FGREP@
118 FREETYPE2_DEPEND = @FREETYPE2_DEPEND@
119 FREETYPE2_INCLUDES = @FREETYPE2_INCLUDES@
120 FREETYPE2_LIBS = @FREETYPE2_LIBS@
121 FT2_CONFIG = @FT2_CONFIG@
122 GD_TREE = @GD_TREE@
123 GREP = @GREP@
124 INSTALL = @INSTALL@
125 INSTALL_DATA = @INSTALL_DATA@
126 INSTALL_PROGRAM = @INSTALL_PROGRAM@
127 INSTALL_SCRIPT = @INSTALL_SCRIPT@
128 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
129 LD = @LD@
130 LDFLAGS = @LDFLAGS@
131 LIBOBJS = @LIBOBJS@
132 LIBPNG_DEPEND = @LIBPNG_DEPEND@
133 LIBPNG_INCLUDES = @LIBPNG_INCLUDES@
134 LIBPNG_LIBS = @LIBPNG_LIBS@
135 LIBS = @LIBS@
136 LIBTOOL = @LIBTOOL@
137 LIPO = @LIPO@
138 LN_S = @LN_S@
139 LTLIBOBJS = @LTLIBOBJS@
140 MAINT = @MAINT@
141 MAKEINFO = @MAKEINFO@
142 MANIFEST_TOOL = @MANIFEST_TOOL@
143 MKDIR_P = @MKDIR_P@
144 NM = @NM@
145 NMEDIT = @NMEDIT@
146 OBJDUMP = @OBJDUMP@
147 OBJEXT = @OBJEXT@
148 OTOOL = @OTOOL@
149 OTOOL64 = @OTOOL64@
150 PACKAGE = @PACKAGE@
151 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
152 PACKAGE_NAME = @PACKAGE_NAME@
153 PACKAGE_STRING = @PACKAGE_STRING@
154 PACKAGE_TARNAME = @PACKAGE_TARNAME@
155 PACKAGE_URL = @PACKAGE_URL@
156 PACKAGE_VERSION = @PACKAGE_VERSION@
157 PATH_SEPARATOR = @PATH_SEPARATOR@
158 PKG_CONFIG = @PKG_CONFIG@
159 RANLIB = @RANLIB@
160 SED = @SED@
161 SET_MAKE = @SET_MAKE@
162 SHELL = @SHELL@
163 STRIP = @STRIP@
164 VERSION = @VERSION@
165 WARNING_CFLAGS = @WARNING_CFLAGS@
166 ZLIB_DEPEND = @ZLIB_DEPEND@
167 ZLIB_INCLUDES = @ZLIB_INCLUDES@
168 ZLIB_LIBS = @ZLIB_LIBS@
169 abs_builddir = @abs_builddir@
170 abs_srcdir = @abs_srcdir@
171 abs_top_builddir = @abs_top_builddir@
172 abs_top_srcdir = @abs_top_srcdir@
173 ac_ct_AR = @ac_ct_AR@
174 ac_ct_CC = @ac_ct_CC@
175 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
176 am__include = @am__include@
177 am__leading_dot = @am__leading_dot@
178 am__quote = @am__quote@
179 am__tar = @am__tar@
180 am__untar = @am__untar@
181 bindir = @bindir@
182 build = @build@
183 build_alias = @build_alias@
184 build_cpu = @build_cpu@
185 build_os = @build_os@
186 build_vendor = @build_vendor@
187 builddir = @builddir@
188 datadir = @datadir@
189 datarootdir = @datarootdir@
190 docdir = @docdir@
191 dvidir = @dvidir@
192 exec_prefix = @exec_prefix@
193 host = @host@
194 host_alias = @host_alias@
195 host_cpu = @host_cpu@
196 host_os = @host_os@
197 host_vendor = @host_vendor@
198 htmldir = @htmldir@
199 includedir = @includedir@
200 infodir = @infodir@
201 install_sh = @install_sh@
202 libdir = @libdir@
203 libexecdir = @libexecdir@
204 localedir = @localedir@
205 localstatedir = @localstatedir@
206 mandir = @mandir@
207 mkdir_p = @mkdir_p@
208 oldincludedir = @oldincludedir@
209 pdfdir = @pdfdir@
210 prefix = @prefix@
211 program_transform_name = @program_transform_name@
212 psdir = @psdir@
213 sbindir = @sbindir@
214 sharedstatedir = @sharedstatedir@
215 srcdir = @srcdir@
216 sysconfdir = @sysconfdir@
217 target_alias = @target_alias@
218 top_build_prefix = @top_build_prefix@
219 top_builddir = @top_builddir@
220 top_srcdir = @top_srcdir@
221 GD_SRC = $(top_srcdir)/$(GD_TREE)
222 hdr_links = \
223 $(GD_SRC)/entities.h \
224 $(GD_SRC)/gd.h \
225 $(GD_SRC)/gd_io.h \
226 $(GD_SRC)/gdcache.h \
227 $(GD_SRC)/gdfontg.h \
228 $(GD_SRC)/gdfontl.h \
229 $(GD_SRC)/gdfontmb.h \
230 $(GD_SRC)/gdfonts.h \
231 $(GD_SRC)/gdfontt.h \
232 $(GD_SRC)/gdfx.h \
233 $(GD_SRC)/gdhelpers.h \
234 $(GD_SRC)/jisx0208.h \
235 $(GD_SRC)/wbmp.h
236
237 all: all-am
238
239 .SUFFIXES:
240 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../am/hdr_links.am $(am__configure_deps)
241 @for dep in $?; do \
242 case '$(am__configure_deps)' in \
243 *$$dep*) \
244 ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
245 && { if test -f $@; then exit 0; else break; fi; }; \
246 exit 1;; \
247 esac; \
248 done; \
249 echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/Makefile'; \
250 $(am__cd) $(top_srcdir) && \
251 $(AUTOMAKE) --foreign include/Makefile
252 .PRECIOUS: Makefile
253 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
254 @case '$?' in \
255 *config.status*) \
256 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
257 *) \
258 echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
259 cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
260 esac;
261 $(top_srcdir)/../am/hdr_links.am:
262
263 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
264 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
265
266 $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
267 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
268 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
269 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
270 $(am__aclocal_m4_deps):
271
272 mostlyclean-libtool:
273 -rm -f *.lo
274
275 clean-libtool:
276 -rm -rf .libs _libs
277 tags TAGS:
278
279 ctags CTAGS:
280
281 cscope cscopelist:
282
283
284 distdir: $(DISTFILES)
285 @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
286 topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
287 list='$(DISTFILES)'; \
288 dist_files=`for file in $$list; do echo $$file; done | \
289 sed -e "s|^$$srcdirstrip/||;t" \
290 -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
291 case $$dist_files in \
292 */*) $(MKDIR_P) `echo "$$dist_files" | \
293 sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
294 sort -u` ;; \
295 esac; \
296 for file in $$dist_files; do \
297 if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
298 if test -d $$d/$$file; then \
299 dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
300 if test -d "$(distdir)/$$file"; then \
301 find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
302 fi; \
303 if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
304 cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
305 find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
306 fi; \
307 cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
308 else \
309 test -f "$(distdir)/$$file" \
310 || cp -p $$d/$$file "$(distdir)/$$file" \
311 || exit 1; \
312 fi; \
313 done
314 check-am: all-am
315 check: check-am
316 all-am: Makefile all-local
317 installdirs:
318 install: install-am
319 install-exec: install-exec-am
320 install-data: install-data-am
321 uninstall: uninstall-am
322
323 install-am: all-am
324 @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
325
326 installcheck: installcheck-am
327 install-strip:
328 if test -z '$(STRIP)'; then \
329 $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
330 install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
331 install; \
332 else \
333 $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
334 install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
335 "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
336 fi
337 mostlyclean-generic:
338
339 clean-generic:
340
341 distclean-generic:
342 -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
343 -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
344
345 maintainer-clean-generic:
346 @echo "This command is intended for maintainers to use"
347 @echo "it deletes files that may require special tools to rebuild."
348 clean: clean-am
349
350 clean-am: clean-generic clean-libtool mostlyclean-am
351
352 distclean: distclean-am
353 -rm -f Makefile
354 distclean-am: clean-am distclean-generic distclean-local
355
356 dvi: dvi-am
357
358 dvi-am:
359
360 html: html-am
361
362 html-am:
363
364 info: info-am
365
366 info-am:
367
368 install-data-am:
369
370 install-dvi: install-dvi-am
371
372 install-dvi-am:
373
374 install-exec-am:
375
376 install-html: install-html-am
377
378 install-html-am:
379
380 install-info: install-info-am
381
382 install-info-am:
383
384 install-man:
385
386 install-pdf: install-pdf-am
387
388 install-pdf-am:
389
390 install-ps: install-ps-am
391
392 install-ps-am:
393
394 installcheck-am:
395
396 maintainer-clean: maintainer-clean-am
397 -rm -f Makefile
398 maintainer-clean-am: distclean-am maintainer-clean-generic
399
400 mostlyclean: mostlyclean-am
401
402 mostlyclean-am: mostlyclean-generic mostlyclean-libtool
403
404 pdf: pdf-am
405
406 pdf-am:
407
408 ps: ps-am
409
410 ps-am:
411
412 uninstall-am:
413
414 .MAKE: install-am install-strip
415
416 .PHONY: all all-am all-local check check-am clean clean-generic \
417 clean-libtool cscopelist-am ctags-am distclean \
418 distclean-generic distclean-libtool distclean-local distdir \
419 dvi dvi-am html html-am info info-am install install-am \
420 install-data install-data-am install-dvi install-dvi-am \
421 install-exec install-exec-am install-html install-html-am \
422 install-info install-info-am install-man install-pdf \
423 install-pdf-am install-ps install-ps-am install-strip \
424 installcheck installcheck-am installdirs maintainer-clean \
425 maintainer-clean-generic mostlyclean mostlyclean-generic \
426 mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
427 uninstall-am
428
429 all-local:
430 @for file in $(hdr_links); do \
431 test -f $$file || continue; \
432 inst=`echo $$file | sed -e 's/^.*\///'`; \
433 test -f $$inst || { \
434 rm -f $$inst; \
435 if $(AM_V_P); then echo "$(LN_S) $$file $$inst"; \
436 else echo " INST $$inst"; fi; \
437 $(LN_S) $$file $$inst; } || exit 1; \
438 done
439
440 distclean-local:
441 rm -f *.h
442
443 # Tell versions [3.59,3.63) of GNU make to not export all variables.
444 # Otherwise a system limit (for SysV at least) may be exceeded.
445 .NOEXPORT:
11 # Attempt to guess a canonical system name.
22 # Copyright 1992-2013 Free Software Foundation, Inc.
33
4 timestamp='2013-04-24'
4 timestamp='2013-05-16'
55
66 # This file is free software; you can redistribute it and/or modify it
77 # under the terms of the GNU General Public License as published by
130130 UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
131131 UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
132132 UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
133
134 case "${UNAME_SYSTEM}" in
135 Linux|GNU|GNU/*)
136 # If the system lacks a compiler, then just pick glibc.
137 # We could probably try harder.
138 LIBC=gnu
139
140 eval $set_cc_for_build
141 cat <<-EOF > $dummy.c
142 #include <features.h>
143 #if defined(__UCLIBC__)
144 LIBC=uclibc
145 #elif defined(__dietlibc__)
146 LIBC=dietlibc
147 #else
148 LIBC=gnu
149 #endif
150 EOF
151 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
152 ;;
153 esac
133154
134155 # Note: order is significant - the case branches are not exclusive.
135156
852873 exit ;;
853874 *:GNU:*:*)
854875 # the GNU system
855 echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
876 echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
856877 exit ;;
857878 *:GNU/*:*:*)
858879 # other systems with GNU libc and userland
859 echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
880 echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
860881 exit ;;
861882 i*86:Minix:*:*)
862883 echo ${UNAME_MACHINE}-pc-minix
863884 exit ;;
864885 aarch64:Linux:*:*)
865 echo ${UNAME_MACHINE}-unknown-linux-gnu
886 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
866887 exit ;;
867888 aarch64_be:Linux:*:*)
868889 UNAME_MACHINE=aarch64_be
869 echo ${UNAME_MACHINE}-unknown-linux-gnu
890 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
870891 exit ;;
871892 alpha:Linux:*:*)
872893 case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
879900 EV68*) UNAME_MACHINE=alphaev68 ;;
880901 esac
881902 objdump --private-headers /bin/sh | grep -q ld.so.1
882 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
883 echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
903 if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
904 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
884905 exit ;;
885906 arc:Linux:*:* | arceb:Linux:*:*)
886 echo ${UNAME_MACHINE}-unknown-linux-gnu
907 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
887908 exit ;;
888909 arm*:Linux:*:*)
889910 eval $set_cc_for_build
890911 if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
891912 | grep -q __ARM_EABI__
892913 then
893 echo ${UNAME_MACHINE}-unknown-linux-gnu
914 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
894915 else
895916 if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
896917 | grep -q __ARM_PCS_VFP
897918 then
898 echo ${UNAME_MACHINE}-unknown-linux-gnueabi
919 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
899920 else
900 echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
921 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
901922 fi
902923 fi
903924 exit ;;
904925 avr32*:Linux:*:*)
905 echo ${UNAME_MACHINE}-unknown-linux-gnu
926 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
906927 exit ;;
907928 cris:Linux:*:*)
908 echo ${UNAME_MACHINE}-axis-linux-gnu
929 echo ${UNAME_MACHINE}-axis-linux-${LIBC}
909930 exit ;;
910931 crisv32:Linux:*:*)
911 echo ${UNAME_MACHINE}-axis-linux-gnu
932 echo ${UNAME_MACHINE}-axis-linux-${LIBC}
912933 exit ;;
913934 frv:Linux:*:*)
914 echo ${UNAME_MACHINE}-unknown-linux-gnu
935 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
915936 exit ;;
916937 hexagon:Linux:*:*)
917 echo ${UNAME_MACHINE}-unknown-linux-gnu
938 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
918939 exit ;;
919940 i*86:Linux:*:*)
920 LIBC=gnu
921 eval $set_cc_for_build
922 sed 's/^ //' << EOF >$dummy.c
923 #ifdef __dietlibc__
924 LIBC=dietlibc
925 #endif
926 #else
927 #include <features.h>
928 #ifdef __UCLIBC__
929 LIBC=uclibc
930 #endif
931 EOF
932 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
933 echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
941 echo ${UNAME_MACHINE}-pc-linux-${LIBC}
934942 exit ;;
935943 ia64:Linux:*:*)
936 echo ${UNAME_MACHINE}-unknown-linux-gnu
944 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
937945 exit ;;
938946 m32r*:Linux:*:*)
939 echo ${UNAME_MACHINE}-unknown-linux-gnu
947 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
940948 exit ;;
941949 m68*:Linux:*:*)
942 echo ${UNAME_MACHINE}-unknown-linux-gnu
950 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
943951 exit ;;
944952 mips:Linux:*:* | mips64:Linux:*:*)
945953 eval $set_cc_for_build
958966 #endif
959967 EOF
960968 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
961 test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
969 test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
962970 ;;
963971 or1k:Linux:*:*)
964 echo ${UNAME_MACHINE}-unknown-linux-gnu
972 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
965973 exit ;;
966974 or32:Linux:*:*)
967 echo ${UNAME_MACHINE}-unknown-linux-gnu
975 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
968976 exit ;;
969977 padre:Linux:*:*)
970 echo sparc-unknown-linux-gnu
978 echo sparc-unknown-linux-${LIBC}
971979 exit ;;
972980 parisc64:Linux:*:* | hppa64:Linux:*:*)
973 echo hppa64-unknown-linux-gnu
981 echo hppa64-unknown-linux-${LIBC}
974982 exit ;;
975983 parisc:Linux:*:* | hppa:Linux:*:*)
976984 # Look for CPU level
977985 case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
978 PA7*) echo hppa1.1-unknown-linux-gnu ;;
979 PA8*) echo hppa2.0-unknown-linux-gnu ;;
980 *) echo hppa-unknown-linux-gnu ;;
986 PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
987 PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
988 *) echo hppa-unknown-linux-${LIBC} ;;
981989 esac
982990 exit ;;
983991 ppc64:Linux:*:*)
984 echo powerpc64-unknown-linux-gnu
992 echo powerpc64-unknown-linux-${LIBC}
985993 exit ;;
986994 ppc:Linux:*:*)
987 echo powerpc-unknown-linux-gnu
995 echo powerpc-unknown-linux-${LIBC}
988996 exit ;;
989997 s390:Linux:*:* | s390x:Linux:*:*)
990 echo ${UNAME_MACHINE}-ibm-linux
998 echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
991999 exit ;;
9921000 sh64*:Linux:*:*)
993 echo ${UNAME_MACHINE}-unknown-linux-gnu
1001 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
9941002 exit ;;
9951003 sh*:Linux:*:*)
996 echo ${UNAME_MACHINE}-unknown-linux-gnu
1004 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
9971005 exit ;;
9981006 sparc:Linux:*:* | sparc64:Linux:*:*)
999 echo ${UNAME_MACHINE}-unknown-linux-gnu
1007 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
10001008 exit ;;
10011009 tile*:Linux:*:*)
1002 echo ${UNAME_MACHINE}-unknown-linux-gnu
1010 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
10031011 exit ;;
10041012 vax:Linux:*:*)
1005 echo ${UNAME_MACHINE}-dec-linux-gnu
1013 echo ${UNAME_MACHINE}-dec-linux-${LIBC}
10061014 exit ;;
10071015 x86_64:Linux:*:*)
1008 LIBC=gnu
1009 test -r /lib/libc.so && od -An -S13 /lib/libc.so | grep -q __uClibc_main && LIBC=uclibc
10101016 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
10111017 exit ;;
10121018 xtensa*:Linux:*:*)
1013 echo ${UNAME_MACHINE}-unknown-linux-gnu
1019 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
10141020 exit ;;
10151021 i*86:DYNIX/ptx:4*:*)
10161022 # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
12431249 exit ;;
12441250 *:Darwin:*:*)
12451251 UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
1246 case $UNAME_PROCESSOR in
1247 i386)
1248 eval $set_cc_for_build
1249 if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
1250 if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
1251 (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
1252 grep IS_64BIT_ARCH >/dev/null
1253 then
1254 UNAME_PROCESSOR="x86_64"
1255 fi
1256 fi ;;
1257 unknown) UNAME_PROCESSOR=powerpc ;;
1258 esac
1252 eval $set_cc_for_build
1253 if test "$UNAME_PROCESSOR" = unknown ; then
1254 UNAME_PROCESSOR=powerpc
1255 fi
1256 if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
1257 if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
1258 (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
1259 grep IS_64BIT_ARCH >/dev/null
1260 then
1261 case $UNAME_PROCESSOR in
1262 i386) UNAME_PROCESSOR=x86_64 ;;
1263 powerpc) UNAME_PROCESSOR=powerpc64 ;;
1264 esac
1265 fi
1266 fi
12591267 echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
12601268 exit ;;
12611269 *:procnto*:*:* | *:QNX:[0123456789]*:*)
118118 mf2pt1/mf2pt1.pl \
119119 mkjobtexmf/mkjobtexmf.pl \
120120 mkgrkindex/mkgrkindex \
121 multibibliography/multibibliography.pl \
121122 musixtex/musixflx.lua \
122123 musixtex/musixtex.lua \
123124 oberdiek/pdfatfi.pl \
295295 mf2pt1/mf2pt1.pl \
296296 mkjobtexmf/mkjobtexmf.pl \
297297 mkgrkindex/mkgrkindex \
298 multibibliography/multibibliography.pl \
298299 musixtex/musixflx.lua \
299300 musixtex/musixtex.lua \
300301 oberdiek/pdfatfi.pl \
1818 use strict;
1919
2020 # Define some global variables.
21 our $VERSION = "1.2"; # ctanify version number
21 our $VERSION = "1.3"; # ctanify version number
2222 my $progname = basename $0; # Name of this program
2323 my $pkgname; # Base name of the package to create
2424 my $miscify = 0; # 1=replace singletons with misc; 0=don't
3535 my $zipname; # Name of the TDS zip file
3636 my $tarname; # Name of the package tar file
3737 my $tdsoutdir; # Directory name where to output TDS tree
38 my $usagestr = "Usage: ${progname} [--help] [--version] [--pkgname=<package>] [--[no]auto] [--[no]skip] [--[no]unixify] [--tdsonly=<filespec> ...] filename[=<dirname>] ...\n";
3938
4039 # Associate file extensions with TDS directories. "%s" is replaced
4140 # with the package name.
4241 my %ext2tds =
4342 ("afm" => "fonts/afm/public/%s",
43 "README" => "doc/latex/%s",
44 "bat" => "scripts/%s",
4445 "bib" => "bibtex/bib/%s",
4546 "bst" => "bibtex/bst/%s",
4647 "cls" => "tex/latex/%s",
5455 "pfb" => "fonts/type1/public/%s",
5556 "pfm" => "fonts/type1/public/%s",
5657 "ps" => "doc/latex/%s",
57 "README" => "doc/latex/%s",
58 "py" => "scripts/%s",
59 "sh" => "scripts/%s",
5860 "sty" => "tex/latex/%s",
5961 "tfm" => "fonts/tfm/public/%s",
6062 "txt" => "doc/latex/%s",
219221 foreach my $fname (@manifest) {
220222 next if defined $file2tds{$fname};
221223 my $fext = ($fname =~ m|([^./]+)$| && $1);
222 if (!defined $ext2tds{$fext}) {
223 warn "${progname}: Not including $fname in the TDS tree (unknown extension)\n";
224 next;
225 }
226 $file2tds{$fname} = sprintf $ext2tds{$fext}, $pkgname;
224 if (defined $ext2tds{$fext}) {
225 # Most files -- determine the directory based on the file extension.
226 $file2tds{$fname} = sprintf $ext2tds{$fext}, $pkgname;
227 }
228 elsif ($fext =~ /^(\d+)[a-z]*$/i) {
229 # Man page (e.g., "ls.1" or "File::Temp.3pm").
230 $file2tds{$fname} = "doc/man/man$1";
231 }
232 else {
233 # Read the file to determine if it's a Unix script (starts with "#!").
234 open(SCRIPT, "<", $fname) || die "${progname}: Failed to open $fname ($!)\n";
235 my $shebang;
236 read(SCRIPT, $shebang, 2) || die "${progname}: Failed to read $fname ($!)\n";
237 close SCRIPT;
238 if ($shebang eq "#!") {
239 $file2tds{$fname} = "scripts/$pkgname";
240 }
241 else {
242 warn "${progname}: Not including $fname in the TDS tree (unknown extension)\n";
243 }
244 }
227245 }
228246
229247 # Create a working directory and populate it with TDS files.
615633 process any F<.ins> files and otherwise generate any files that should
616634 be sent to CTAN.
617635
618 B<ctanify> has been tested only on Linux. It may work on S<MacOS X>.
619 It probably does not work on Windows. Volunteers willing to help port
636 B<ctanify> has been tested only on Linux. It may work on S<OS X>. It
637 probably does not work on Windows. Volunteers willing to help port
620638 B<ctanify> to other platforms are extremely welcome.
621639
622640
346346 lookup = "name",
347347 specification = "name:" .. query,
348348 optsize = 0,
349 }
349 }
350350
351351 local foundname, subfont, success =
352352 fonts.names.resolve(nil, nil, tmpspec)
0 #!/usr/bin/perl
1 # Usage: perl multibibliography.pl jobname
2 # Version: 2011-04-11T10:18Z
3 # By Yannis Haralambous and Michael Cohen
4
5 # Changes by Boris Veytsman, $Revision: 1.4 $, $Date: 2013-03-26 20:56:02 $
6
7 # This perl script does the bibtexing part, generating 3 separate .bbl
8 # files with descriptive names derived from source file name, so no
9 # need to separately invoke.
10
11 use strict;
12
13 sub cleanup {
14 local $/=undef;
15 my $file = shift;
16 open IN, $file;
17 my $BIG=<IN>;
18 close IN;
19 $BIG=~s/(\r\n|\r|\n)/ /g;
20 $BIG=~s/\\bibitem/\n\n\\bibitem/g;
21 $BIG=~s/\\newblock/\n\\newblock/g;
22 $BIG=~s/\\end\{thebibliography\}/\n\n\\end{thebibliography}/g;
23 $BIG=~s/[ ]+/ /g;
24 open OUT, ">$file";
25 print OUT $BIG;
26 close OUT;
27 }
28
29 # First, change "apalike" in the aux file to "unsrt" and generate bbl
30 # file, renamed to "fn-sequence.bbl".
31 my $filename=$ARGV[0];
32 $filename=~s/\.(tex|bib|bbl|aux|log)$//;
33 if (-e $filename.".aux") {
34 open IN, $filename.".aux";
35 my $BIG="";
36 while (<IN>) {
37 if (m/\\bibstyle\{apalike\}/) {
38 $BIG .= "\\bibstyle{unsrt}\n";
39 } else {
40 $BIG .= $_;
41 }
42 }
43 close IN;
44 open OUT, ">".$filename.".aux";
45 print OUT $BIG;
46 close OUT;
47 system("bibtex $filename");
48 system("mv $filename".".bbl $filename"."-sequence.bbl");
49
50 # Now, change "unsrt" in the aux file to "chronological"
51 # and generate bbl file, renamed to "fn-timeline.bbl".
52
53 open IN, $filename.".aux";
54 $BIG="";
55 while (<IN>) {
56 if (m/\\bibstyle\{unsrt\}/) {
57 $BIG .= "\\bibstyle{chronological}\n";
58 } else {
59 $BIG .= $_;
60 }
61 }
62 close IN;
63 open OUT, ">".$filename.".aux";
64 print OUT $BIG;
65 close OUT;
66 system("bibtex $filename");
67 system("mv $filename".".bbl $filename"."-timeline.bbl");
68
69 # Lastly, change "chronological" in the aux file to "apalike"
70 # and generate bbl file, retaining name "fn.bbl".
71
72 open IN, $filename.".aux";
73 $BIG="";
74 while (<IN>) {
75 if (m/\\bibstyle\{chronological\}/) {
76 $BIG .= "\\bibstyle{apalike}\n";
77 } else {
78 $BIG .= $_;
79 }
80 }
81 close IN;
82 open OUT, ">".$filename.".aux";
83 print OUT $BIG;
84 close OUT;
85 system("bibtex $filename");
86
87 &cleanup($filename.".bbl");
88 &cleanup($filename."-sequence.bbl");
89 &cleanup($filename."-timeline.bbl");
90
91 open IN, $filename."-sequence.bbl";
92 my $counter=1;
93 my %UNSRT;
94 my %DATE;
95 my %NAME;
96 while (<IN>) {
97 if (m/\\bibitem{([^\}]+?)}/) {
98 $UNSRT{$1}=$counter;
99 $counter++;
100 }
101 }
102 close IN;
103
104 open IN, $filename.".bbl";
105 $counter=1;
106 while (<IN>) {
107 if (m/\\bibitem\[([^\]]+)\]{([^}]+?)}/) {
108 my $longdesc=$1;
109 my $label=$2;
110 if ($longdesc =~ /^(.*),\s+(\S+)$/) {
111 $NAME{$label}=$1;
112 $DATE{$label}=$2;
113 }
114 }
115 }
116 close IN;
117
118 open IN, $filename."-sequence.bbl";
119 $counter=1;
120 open OUT, ">tmp123456";
121 while (<IN>) {
122 if (s/\\bibitem{(.+?)}/\\bibitem[\\MBlabel{$counter}{$NAME{$1}}{$DATE{$1}}]{$1}\n/) {
123 $counter++;
124 }
125 print OUT;
126 }
127 close IN;
128 close OUT;
129 system("mv tmp123456 $filename"."-sequence.bbl");
130
131 open IN, $filename.".bbl";
132 open OUT, ">tmp123456";
133 while (<IN>) {
134 s/\\bibitem\[[^\]]+\]{(.+?)}/\\bibitem[\\MBlabel{$UNSRT{$1}}{$NAME{$1}}{$DATE{$1}}]{$1}/;
135 print OUT $_;
136 }
137 close IN;
138 close OUT;
139 system("mv tmp123456 $filename".".bbl");
140
141 open IN, $filename."-timeline.bbl";
142 open OUT, ">tmp123456";
143 while (<IN>) {
144 s/\\bibitem\[[^\]]+\]{(.+?)}/\\bibitem[\\MBlabel{$UNSRT{$1}}{$NAME{$1}}{$DATE{$1}}]{$1}/;
145 print OUT $_;
146 }
147 close IN;
148 close OUT;
149 system("mv tmp123456 $filename"."-timeline.bbl");
150 }
151
152
153
6767 mf2pt1/mf2pt1.pl
6868 mkjobtexmf/mkjobtexmf.pl
6969 mkgrkindex/mkgrkindex
70 multibibliography/multibibliography.pl
7071 musixtex/musixflx.lua
7172 musixtex/musixtex.lua
7273 oberdiek/pdfatfi.pl
993993 features[nFeatures].tag = tag;
994994 features[nFeatures].start = 0;
995995 features[nFeatures].end = (unsigned int) -1;
996 if (param == 0)
997 features[nFeatures].value = 1;
998 else
999 features[nFeatures].value = param;
996 // for backward compatibility with pre-0.9999 where feature
997 // indices started from 0
998 if (param >= 0)
999 param++;
1000 features[nFeatures].value = param;
10001001 nFeatures++;
10011002 goto next_option;
10021003 }
0 $Id: README 29855 2013-04-11 07:06:58Z peter $
0 $Id: README 30590 2013-05-20 21:56:42Z karl $
11 Public domain. Originally written 2005 by Karl Berry.
22
33 Extra utilities we (optionally) compile for TeX Live.
44 See comments in ../texk/README.
55
6 asymptote 2.21 - checked 3apr13
6 asymptote 2.23 - checked 20may13
77 update to TL from CTAN, to include prebuilt doc.
88 see http://tug.org/texlive/build.html#asymptote
99 and tlpkg/bin/tl-update-asy
0 ------------------------------------------------------------------------
1 r5564 | jcbowman | 2013-05-18 22:38:07 -0600 (Sat, 18 May 2013) | 6 lines
2 Changed paths:
3 M /trunk/asymptote/Makefile.in
4 M /trunk/asymptote/README
5 M /trunk/asymptote/doc/asymptote.texi
6 M /trunk/asymptote/fftw++.cc
7 A /trunk/asymptote/fftw++asy.cc
8
9 Allow compilation without fftw again.
10
11 Revert to previous wisdom file name (.wisdom).
12
13 Update copyright.
14
15 ------------------------------------------------------------------------
16 r5563 | jcbowman | 2013-05-15 03:10:39 -0600 (Wed, 15 May 2013) | 1 line
17 Changed paths:
18 M /trunk/asymptote/configure.ac
19
20 Increment version to 2.23svn.
21 ------------------------------------------------------------------------
22 r5562 | jcbowman | 2013-05-15 02:33:47 -0600 (Wed, 15 May 2013) | 2 lines
23 Changed paths:
24 M /trunk/asymptote/doc/FAQ/Makefile
25
26 Fix dependencies.
27
28 ------------------------------------------------------------------------
29 r5561 | jcbowman | 2013-05-14 21:38:27 -0600 (Tue, 14 May 2013) | 2 lines
30 Changed paths:
31 M /trunk/asymptote/fftw++.h
32
33 Update FFTW header.
34
35 ------------------------------------------------------------------------
36 r5560 | jcbowman | 2013-05-14 21:37:25 -0600 (Tue, 14 May 2013) | 2 lines
37 Changed paths:
38 M /trunk/asymptote/doc/asymptote.texi
39
40 Update documentation.
41
42 ------------------------------------------------------------------------
43 r5559 | jcbowman | 2013-05-14 21:06:24 -0600 (Tue, 14 May 2013) | 3 lines
44 Changed paths:
45 M /trunk/asymptote/base/plain_picture.asy
46 M /trunk/asymptote/doc/asymptote.texi
47 M /trunk/asymptote/drawfill.cc
48 M /trunk/asymptote/drawfill.h
49 M /trunk/asymptote/examples/shade.asy
50 M /trunk/asymptote/psfile.cc
51 M /trunk/asymptote/psfile.h
52 M /trunk/asymptote/runpicture.in
53 M /trunk/asymptote/texfile.cc
54 M /trunk/asymptote/texfile.h
55
56 Expose Postscript extend qualifiers for axial and radial shading
57 (setting extend=false can work around certain PDF reader bugs).
58
59 ------------------------------------------------------------------------
60 r5558 | jcbowman | 2013-05-14 14:39:28 -0600 (Tue, 14 May 2013) | 4 lines
61 Changed paths:
62 M /trunk/asymptote/arrayop.h
63 M /trunk/asymptote/base/three_light.asy
64 M /trunk/asymptote/base/three_surface.asy
65 M /trunk/asymptote/bbox3.h
66 M /trunk/asymptote/drawelement.h
67 M /trunk/asymptote/drawsurface.cc
68 M /trunk/asymptote/drawsurface.h
69 M /trunk/asymptote/picture.cc
70 M /trunk/asymptote/prc/oPRCFile.cc
71 M /trunk/asymptote/prc/writePRC.cc
72 M /trunk/asymptote/prc/writePRC.h
73 M /trunk/asymptote/runarray.in
74 M /trunk/asymptote/triple.h
75
76 Fix transformation of normal vectors.
77
78 Revert back to usual row-major matrix format.
79
80 ------------------------------------------------------------------------
81 r5557 | jcbowman | 2013-05-13 11:04:57 -0600 (Mon, 13 May 2013) | 2 lines
82 Changed paths:
83 M /trunk/asymptote/picture.cc
84
85 Make use of --pipe to enter context interactive mode.
86
87 ------------------------------------------------------------------------
88 r5556 | jcbowman | 2013-05-13 09:07:53 -0600 (Mon, 13 May 2013) | 2 lines
89 Changed paths:
90 M /trunk/asymptote/GUI/xasy2asy.py
91 M /trunk/asymptote/GUI/xasyMainWin.py
92
93 Support Fedora migration from python-imaging to python-pillow.
94
95 ------------------------------------------------------------------------
96 r5555 | jcbowman | 2013-05-13 08:16:32 -0600 (Mon, 13 May 2013) | 2 lines
97 Changed paths:
98 M /trunk/asymptote/doc/asymptote.texi
99
100 Fix documentation of irregular contour routine.
101
102 ------------------------------------------------------------------------
103 r5554 | jcbowman | 2013-04-08 13:57:50 -0600 (Mon, 08 Apr 2013) | 4 lines
104 Changed paths:
105 M /trunk/asymptote/asymptote.spec
106 M /trunk/asymptote/doc/asymptote.texi
107 M /trunk/asymptote/drawsurface.cc
108
109 Support vertex-colored triangles in Adobe XI.
110
111 Remove reference to out-of-date trembling examples.
112
113 ------------------------------------------------------------------------
114 r5553 | jcbowman | 2013-04-08 13:46:04 -0600 (Mon, 08 Apr 2013) | 2 lines
115 Changed paths:
116 M /trunk/asymptote/settings.cc
117
118 Use TEXMFMAN to find TeXLive sysdir.
119
120 ------------------------------------------------------------------------
121 r5552 | jcbowman | 2013-04-04 16:16:19 -0600 (Thu, 04 Apr 2013) | 2 lines
122 Changed paths:
123 M /trunk/asymptote/interact.cc
124
125 Temporarily revert 5440 for TeXLive 2013 build systems without Posix 2008.
126
127 ------------------------------------------------------------------------
128 r5551 | hammera | 2013-04-04 03:10:22 -0600 (Thu, 04 Apr 2013) | 2 lines
129 Changed paths:
130 M /trunk/asymptote/doc/asymptote.texi
131
132 Add clarification on 2.. versus 2 ..
133
134 ------------------------------------------------------------------------
135 r5550 | jcbowman | 2013-04-03 11:29:11 -0600 (Wed, 03 Apr 2013) | 2 lines
136 Changed paths:
137 M /trunk/asymptote/algebra3.cc
138
139 Make portability tweak.
140
141 ------------------------------------------------------------------------
142 r5549 | jcbowman | 2013-04-01 11:12:12 -0600 (Mon, 01 Apr 2013) | 2 lines
143 Changed paths:
144 M /trunk/asymptote/runtime.in
145
146 Qualify isnan (for solaris).
147
148 ------------------------------------------------------------------------
149 r5548 | jcbowman | 2013-02-23 05:29:51 -0700 (Sat, 23 Feb 2013) | 2 lines
150 Changed paths:
151 M /trunk/asymptote/drawpath3.h
152 M /trunk/asymptote/drawsurface.h
153
154 Avoid unnecessary buffering.
155
156 ------------------------------------------------------------------------
157 r5547 | jcbowman | 2013-02-23 05:26:04 -0700 (Sat, 23 Feb 2013) | 2 lines
158 Changed paths:
159 M /trunk/asymptote/fftw++.cc
160
161 Update FFTW++ file.
162
163 ------------------------------------------------------------------------
164 r5546 | jcbowman | 2013-02-23 05:19:12 -0700 (Sat, 23 Feb 2013) | 2 lines
165 Changed paths:
166 M /trunk/asymptote/base/math.asy
167
168 Express segment(bool[]) in terms of more efficient segmentlimits(bool[]) function.
169
170 ------------------------------------------------------------------------
171 r5545 | jcbowman | 2013-02-23 05:17:20 -0700 (Sat, 23 Feb 2013) | 2 lines
172 Changed paths:
173 M /trunk/asymptote/fftw++.h
174 M /trunk/asymptote/seconds.h
175
176 Update FFTW++ headers.
177
178 ------------------------------------------------------------------------
179 r5544 | jcbowman | 2013-01-08 14:18:10 -0700 (Tue, 08 Jan 2013) | 3 lines
180 Changed paths:
181 M /trunk/asymptote/doc/asymptote.texi
182
183 Recommend freeglut 2.6.0 due to broken menu feature in the 2.8.0 release
184 (and modifier bugs in various patches for this problem).
185
186 ------------------------------------------------------------------------
187 r5543 | jcbowman | 2013-01-06 09:42:17 -0700 (Sun, 06 Jan 2013) | 4 lines
188 Changed paths:
189 M /trunk/asymptote/doc/asymptote.texi
190 M /trunk/asymptote/glrender.cc
191
192 Remove unused code.
193
194 Update documentation.
195
196 ------------------------------------------------------------------------
197 r5542 | jcbowman | 2013-01-05 08:09:16 -0700 (Sat, 05 Jan 2013) | 2 lines
198 Changed paths:
199 M /trunk/asymptote/camp.l
200 M /trunk/asymptote/camp.y
201
202 Allow self-defined unary operators.
203
204 ------------------------------------------------------------------------
205 r5541 | jcbowman | 2012-12-31 08:27:13 -0700 (Mon, 31 Dec 2012) | 2 lines
206 Changed paths:
207 M /trunk/asymptote/base/graph.asy
208
209 Compare formatted strings instead of real values in OmitFormat.
210
211 ------------------------------------------------------------------------
212 r5540 | jcbowman | 2012-10-24 12:33:07 -0600 (Wed, 24 Oct 2012) | 2 lines
213 Changed paths:
214 M /trunk/asymptote/examples/tvgen.asy
215
216 Update example.
217
218 ------------------------------------------------------------------------
219 r5539 | jcbowman | 2012-10-20 16:32:57 -0600 (Sat, 20 Oct 2012) | 2 lines
220 Changed paths:
221 M /trunk/asymptote/Makefile.in
222
223 Use C locale for svn info.
224
225 ------------------------------------------------------------------------
226 r5538 | jcbowman | 2012-10-17 20:11:03 -0600 (Wed, 17 Oct 2012) | 3 lines
227 Changed paths:
228 M /trunk/asymptote/base/geometry.asy
229 M /trunk/asymptote/doc/asymptote.texi
230
231 Temporarily revert to using tan(radians(a)) in numerically unstable arclength
232 calculation in geometry module (note r5466).
233
234 ------------------------------------------------------------------------
235 r5537 | jcbowman | 2012-10-10 12:20:47 -0600 (Wed, 10 Oct 2012) | 1 line
236 Changed paths:
237 M /trunk/asymptote/asymptote.spec
238 M /trunk/asymptote/configure.ac
239
240 Increment version to 2.22svn.
0241 ------------------------------------------------------------------------
1242 r5536 | jcbowman | 2012-10-07 06:33:22 -0600 (Sun, 07 Oct 2012) | 2 lines
2243 Changed paths:
1717
1818 # PIL support is now mandatory due to rotations
1919 try:
20 import ImageTk
21 import Image
20 from PIL import ImageTk
21 from PIL import Image
2222 except:
2323 pass
2424
3939 import string
4040
4141 try:
42 import ImageTk
43 import Image
42 from PIL import ImageTk
43 from PIL import Image
4444 PILAvailable = True
4545 except:
4646 PILAvailable = False
3131 COREFILES = $(CAMP) $(SYMBOL_FILES) env genv stm dec errormsg \
3232 callable name symbol entry exp newexp stack camp.tab lex.yy \
3333 access virtualfieldaccess absyn record interact fileio \
34 fftw++ simpson coder coenv impdatum \
34 fftw++asy simpson coder coenv impdatum \
3535 @getopt@ locate parser program application varinit fundec refaccess \
3636 envcompleter process constructor array Delaunay predicates \
3737 $(PRC) glrender tr arcball algebra3 quaternion svnrevision
8787 contextdir = $(DESTDIR)@contextdir@
8888 INSTALL = @INSTALL@
8989 REVISION = "const char *SVN_REVISION="
90 revision = `svn info 2>/dev/null | grep 'Revision' | sed -e 's/Revision: \(.*\)/-r\1/'`
90 revision = `LC_ALL="C" svn info 2>/dev/null | grep 'Revision' | sed -e 's/Revision: \(.*\)/-r\1/'`
9191 last = `cat svnrevision.cc | sed -e 's/.*\"\(.*\)\";/\\1/'`
9292
9393 export prefix docdir exampledir mandir infodir INSTALL MAKE DESTDIR TEXI2DVI
00 ASYMPTOTE
1 Copyright 2004-11 Andy Hammerlindl, John Bowman, and Tom Prince
1 Copyright 2004-13 Andy Hammerlindl, John Bowman, and Tom Prince
22
33 Asymptote is a powerful descriptive vector graphics language for technical
44 drawings, inspired by MetaPost but with an improved C++-like
0 Release Notes for Version 2.23
1
2 Compilation without the FFTW library is now supported again.
3
4 Release Notes for Version 2.22
5
6 Self-defined unary operators are now allowed. Formatted strings instead of
7 real values are compared in OmitFormat. The segment(bool[]) function was
8 rewritten to use the more efficient segmentlimits(bool[]) call.
9 Unnecessary buffering of surface and path3 data was removed.
10 Portability tweaks were made. References to out-of-date trembling
11 examples were removed. Vertex-colored triangles now work again in Adobe XI.
12 The transformation of normal vectors was fixed. PostScript extend
13 qualifiers were added for axial and radial shading. The TEXMFMAN
14 environment variable is now used to find the TeXLive sysdir.
15
016 Release Notes for Version 2.21
117
218 Explicitly transformed billboard labels now work correctly again.
7474 #include "algebra3.h"
7575 #include <cmath>
7676
77 static const double radians=acos(-1)/180.0;
77 static const double radians=std::acos(-1)/180.0;
7878
7979 #ifdef VEC_ERROR_FATAL
8080 #ifndef VEC_ERROR
500500
501501 vm::array *Identity(Int n);
502502 camp::triple operator *(const vm::array& a, const camp::triple& v);
503 camp::triple multshiftless(const vm::array& t, const camp::triple& v);
504503 double norm(double *a, size_t n);
505504 double norm(camp::triple *a, size_t n);
506505
536535 }
537536
538537 template<typename T>
539 inline vm::array* copyCArray(const size_t n, const T* p,
540 GCPlacement placement=NoGC)
538 inline vm::array* copyCArray(const size_t n, const T* p)
541539 {
542540 vm::array* a = new vm::array(n);
543541 for(size_t i=0; i < n; ++i) (*a)[i] = p[i];
565563 for(size_t j=0; j < m; j++)
566564 desti[j]=vm::read<T>(ai,j);
567565 } else
568 vm::error(square ? "matrix must be square" : "matrix must be rectangular");
569 }
566 vm::error(square ? "matrix must be square" :
567 "matrix must be rectangular");
568 }
569 }
570
571 template<typename T>
572 inline vm::array* copyCArray2(const size_t n, const size_t m, const T* p)
573 {
574 vm::array* a=new vm::array(n);
575 for(size_t i=0; i < n; ++i) {
576 array *ai=new array(m);
577 (*a)[i]=ai;
578 for(size_t j=0; j < m; ++j)
579 (*ai)[j]=p[m*i+j];
580 }
581 return a;
570582 }
571583
572584 } // namespace run
11 ;; This file is automatically generated by asy-list.pl.
22 ;; Changes will be overwritten.
33 ;;
4 (defvar asy-keywords-version "2.21")
4 (defvar asy-keywords-version "2.23")
55
66 (defvar asy-keyword-name '(
77 and controls tension atleast curl if else while for do return break continue struct typedef new access import unravel from include quote static public private restricted this explicit true false null cycle newframe operator ))
1010 Braid FitResult Label Legend Segment Solution TreeNode abscissa arc arrowhead binarytree binarytreeNode block bool bool3 bounds bqe circle conic coord coordsys cputime ellipse file filltype frame grid3 guide horner hsv hyperbola indexedTransform int inversion key light line linefit marginT marker mass object pair parabola path path3 pen picture point position projection real revolution scaleT scientific segment side slice solution splitface string surface tensionSpecifier ticklocate ticksgridT tickvalues transform transformation tree triangle trilinear triple vector vertex void ))
1111
1212 (defvar asy-function-name '(
13 AND Arc ArcArrow ArcArrows Arrow Arrows Automatic AvantGarde BBox BWRainbow BWRainbow2 Bar Bars BeginArcArrow BeginArrow BeginBar BeginDotMargin BeginMargin BeginPenMargin Blank Bookman Bottom BottomTop Bounds Break Broken BrokenLog CLZ CTZ Ceil Circle CircleBarIntervalMarker Cos Courier CrossIntervalMarker DOSendl DOSnewl DefaultFormat DefaultLogFormat Degrees Dir DotMargin DotMargins Dotted Draw Drawline Embed EndArcArrow EndArrow EndBar EndDotMargin EndMargin EndPenMargin Fill FillDraw Floor Format Full Gaussian Gaussrand Gaussrandpair Gradient Grayscale Helvetica Hermite HookHead InOutTicks InTicks Jn Label Landscape Left LeftRight LeftTicks Legend Linear Log LogFormat Margin Margins Mark MidArcArrow MidArrow NOT NewCenturySchoolBook NoBox NoMargin NoModifier NoTicks NoTicks3 NoZero NoZeroFormat None OR OmitFormat OmitTick OmitTickInterval OmitTickIntervals OutTicks Ox Oy Palatino PaletteTicks Pen PenMargin PenMargins Pentype Portrait RadialShade RadialShadeDraw Rainbow Range Relative Right RightTicks Rotate Round SQR Scale ScaleX ScaleY ScaleZ Seascape Segment Shift Sin Slant Spline StickIntervalMarker Straight Symbol Tan TeXify Ticks Ticks3 TildeIntervalMarker TimesRoman Top TrueMargin UnFill UpsideDown Wheel X XEquals XOR XY XYEquals XYZero XYgrid XZEquals XZZero XZero XZgrid Y YEquals YXgrid YZ YZEquals YZZero YZero YZgrid Yn Z ZX ZXgrid ZYgrid ZapfChancery ZapfDingbats _begingroup3 _cputime _draw _eval _image _labelpath _projection _strokepath _texpath aCos aSin aTan abort abs accel acos acosh acot acsc activatequote add addArrow addMargins addSaveFunction addpenarc addpenline adjust alias align all altitude angabscissa angle angpoint animate annotate anticomplementary antipedal apply approximate arc arcarrowsize arccircle arcdir arcfromcenter arcfromfocus arclength arcnodesnumber arcpoint arcsubtended arcsubtendedcenter arctime arctopath array arrow arrow2 arrowbase arrowbasepoints arrowsize ascii asec asin asinh ask assert asy asycode asydir asyfigure asyfilecode asyinclude asywrite atan atan2 atanh atbreakpoint atexit attach attract atupdate autoformat autoscale autoscale3 axes axes3 axialshade axis axiscoverage azimuth babel background bangles bar barmarksize barsize basealign baseline bbox beep begin beginclip begingroup beginpoint between bevel bezier bezierP bezierPP bezierPPP bezulate bibliography bibliographystyle binarytree binarytreeNode binomial bins bisector bisectorpoint bispline blend blockconnector box bqe breakpoint breakpoints brick buildRestoreDefaults buildRestoreThunk buildcycle bulletcolor byte calculateScaling canonical canonicalcartesiansystem cartesiansystem case1 case2 case3 case4 cbrt cd ceil center centerToFocus centroid cevian change2 changecoordsys checkSegment checkconditionlength checker checkincreasing checklengths checkposition checktriangle choose circle circlebarframe circlemarkradius circlenodesnumber circumcenter circumcircle clamped clear clip clipdraw close cmyk code colatitude collect collinear color colorless colors colorspace comma compassmark complement complementary concat concurrent cone conic conicnodesnumber conictype conj connect connected connectedindex containmentTree contains contour contour3 contouredges controlSpecifier convert coordinates coordsys copy copyPairOrTriple cos cosh cot countIntersections cputime crop cropcode cross crossframe crosshatch crossmarksize csc cubicroots curabscissa curlSpecifier curpoint currentarrow currentexitfunction currentmomarrow currentpolarconicroutine curve cut cutafter cutbefore cyclic cylinder deactivatequote debugger deconstruct defaultdir defaultformat defaultpen defined degenerate degrees delete deletepreamble determinant diagonal diamond diffdiv dir dirSpecifier dirtime display distance divisors do_overpaint dot dotframe dotsize downcase draw drawAll drawDoubleLine drawFermion drawGhost drawGluon drawMomArrow drawPRCcylinder drawPRCdisk drawPRCsphere drawPRCtube drawPhoton drawScalar drawVertex drawVertexBox drawVertexBoxO drawVertexBoxX drawVertexO drawVertexOX drawVertexTriangle drawVertexTriangleO drawVertexX drawarrow drawarrow2 drawline drawpixel drawtick duplicate elle ellipse ellipsenodesnumber embed embed3 embedplayer empty enclose end endScript endclip endgroup endgroup3 endl endpoint endpoints eof eol equation equations erase erasestep erf erfc error errorbar errorbars eval excenter excircle exit exitXasyMode exitfunction exp expfactors expi expm1 exradius extend extension extouch fabs factorial fermat fft fhorner figure file filecode fill filldraw filloutside fillrule filltype find finite finiteDifferenceJacobian firstcut firstframe fit fit2 fixedscaling floor flush fmdefaults fmod focusToCenter font fontcommand fontsize foot format frac frequency fromCenter fromFocus fspline functionshade gamma generate_random_backtrace generateticks gergonne getc getint getpair getreal getstring gettriple gluon gouraudshade graph graphic gray grestore grid grid3 gsave halfbox hatch hdiffdiv hermite hex histogram history hline hprojection hsv hyperbola hyperbolanodesnumber hyperlink hypot identity image incenter incentral incircle increasing incrementposition indexedTransform indexedfigure initXasyMode initdefaults input inradius insert inside integrate interactive interior interp interpolate intersect intersection intersectionpoint intersectionpoints intersections intouch inverse inversion invisible is3D isCCW isDuplicate isnan isogonal isogonalconjugate isotomic isotomicconjugate isparabola italic item jobname key kurtosis kurtosisexcess label labelaxis labelmargin labelpath labels labeltick labelx labelx3 labely labely3 labelz labelz3 lastcut latex latitude latticeshade layer layout ldexp leastsquares legend legenditem length lexorder lift light limits line linear linecap lineinversion linejoin linemargin lineskip linetype linewidth link list lm_enorm lm_evaluate_default lm_lmdif lm_lmpar lm_minimize lm_print_default lm_print_quiet lm_qrfac lm_qrsolv locale locate locatefile location log log10 log1p logaxiscoverage longitude lookup makeNode makedraw makepen map margin markangle markangleradius markanglespace markarc marker markinterval marknodes markrightangle markthin markuniform mass masscenter massformat math max max3 maxAfterTransform maxbezier maxbound maxcoords maxlength maxratio maxtimes mean medial median midpoint min min3 minAfterTransform minbezier minbound minipage minratio mintimes miterlimit mktemp momArrowPath momarrowsize monotonic multifigure nativeformat natural needshipout newl newpage newslide newton newtree nextframe nextnormal nextpage nib nodabscissa none norm normalvideo notaknot nowarn numberpage nurb object offset onpath opacity opposite orientation origin orthic orthocentercenter outformat outline outname outprefix output overloadedMessage overwrite pack pad pairs palette parabola parabolanodesnumber parallel parallelogram partialsum path path3 pattern pause pdf pedal periodic perp perpendicular perpendicularmark phantom phi1 phi2 phi3 photon piecewisestraight point polar polarconicroutine polargraph polygon postcontrol postscript pow10 ppoint prc prc0 precision precontrol prepend printBytecode print_random_addresses project projection purge pwhermite quadrant quadraticroots quantize quarticroots quotient radialshade radians radicalcenter radicalline radius rand randompath rd readline realmult realquarticroots rectangle rectangular rectify reflect relabscissa relative relativedistance reldir relpoint reltime remainder remark removeDuplicates rename replace report resetdefaultpen restore restoredefaults reverse reversevideo rf rfind rgb rgba rgbint rms rotate rotateO rotation round roundbox roundedpath roundrectangle same samecoordsys sameside sample save savedefaults saveline scale scale3 scaleO scaleT scaleless scientific search searchindex searchtree sec secondaryX secondaryY seconds section sector seek seekeof segment sequence setcontour setpens sgn sgnd sharpangle sharpdegrees shift shiftless shipout shipout3 show side simeq simpson sin sinh size size3 skewness skip slant sleep slope slopefield solve solveBVP sort sourceline sphere split sqrt square srand standardizecoordsys startScript stdev step stickframe stickmarksize stickmarkspace stop straight straightness string stripdirectory stripextension stripfile stripsuffix strokepath subdivide subitem subpath substr sum surface symmedial symmedian system tab tableau tan tangent tangential tangents tanh tell tensionSpecifier tensorshade tex texcolor texify texpath texpreamble texreset texshipout texsize textpath thick thin tick tickMax tickMax3 tickMin tickMin3 ticklabelshift ticklocate tildeframe tildemarksize tile tiling time times title titlepage topbox transform transformation transpose trembleFuzz triangle triangleAbc triangleabc triangulate tricoef tridiagonal trilinear trim truepoint tube uncycle unfill uniform unique unit unitrand unitsize unityroot unstraighten upcase updatefunction uperiodic upscale uptodate usepackage usersetting usetypescript usleep value variance variancebiased vbox vector vectorfield verbatim view vline vperiodic vprojection warn warning windingnumber write xaxis xaxis3 xaxis3At xaxisAt xequals xlimits xpart xscale xscaleO xtick xtick3 xtrans yaxis yaxis3 yaxis3At yaxisAt yequals ylimits ypart yscale yscaleO ytick ytick3 ytrans zaxis3 zaxis3At zero zero3 zlimits zpart ztick ztick3 ztrans ))
13 AND Arc ArcArrow ArcArrows Arrow Arrows Automatic AvantGarde BBox BWRainbow BWRainbow2 Bar Bars BeginArcArrow BeginArrow BeginBar BeginDotMargin BeginMargin BeginPenMargin Blank Bookman Bottom BottomTop Bounds Break Broken BrokenLog CLZ CTZ Ceil Circle CircleBarIntervalMarker Cos Courier CrossIntervalMarker DOSendl DOSnewl DefaultFormat DefaultLogFormat Degrees Dir DotMargin DotMargins Dotted Draw Drawline Embed EndArcArrow EndArrow EndBar EndDotMargin EndMargin EndPenMargin Fill FillDraw Floor Format Full Gaussian Gaussrand Gaussrandpair Gradient Grayscale Helvetica Hermite HookHead InOutTicks InTicks Jn Label Landscape Left LeftRight LeftTicks Legend Linear Log LogFormat Margin Margins Mark MidArcArrow MidArrow NOT NewCenturySchoolBook NoBox NoMargin NoModifier NoTicks NoTicks3 NoZero NoZeroFormat None OR OmitFormat OmitTick OmitTickInterval OmitTickIntervals OutTicks Ox Oy Palatino PaletteTicks Pen PenMargin PenMargins Pentype Portrait RadialShade RadialShadeDraw Rainbow Range Relative Right RightTicks Rotate Round SQR Scale ScaleX ScaleY ScaleZ Seascape Segment Shift Sin Slant Spline StickIntervalMarker Straight Symbol Tan TeXify Ticks Ticks3 TildeIntervalMarker TimesRoman Top TrueMargin UnFill UpsideDown Wheel X XEquals XOR XY XYEquals XYZero XYgrid XZEquals XZZero XZero XZgrid Y YEquals YXgrid YZ YZEquals YZZero YZero YZgrid Yn Z ZX ZXgrid ZYgrid ZapfChancery ZapfDingbats _begingroup3 _cputime _draw _eval _image _labelpath _projection _strokepath _texpath aCos aSin aTan abort abs accel acos acosh acot acsc activatequote add addArrow addMargins addSaveFunction addpenarc addpenline adjust alias align all altitude angabscissa angle angpoint animate annotate anticomplementary antipedal apply approximate arc arcarrowsize arccircle arcdir arcfromcenter arcfromfocus arclength arcnodesnumber arcpoint arcsubtended arcsubtendedcenter arctime arctopath array arrow arrow2 arrowbase arrowbasepoints arrowsize ascii asec asin asinh ask assert asy asycode asydir asyfigure asyfilecode asyinclude asywrite atan atan2 atanh atbreakpoint atexit attach attract atupdate autoformat autoscale autoscale3 axes axes3 axialshade axis axiscoverage azimuth babel background bangles bar barmarksize barsize basealign baseline bbox beep begin beginclip begingroup beginpoint between bevel bezier bezierP bezierPP bezierPPP bezulate bibliography bibliographystyle binarytree binarytreeNode binomial bins bisector bisectorpoint bispline blend blockconnector box bqe breakpoint breakpoints brick buildRestoreDefaults buildRestoreThunk buildcycle bulletcolor byte calculateScaling canonical canonicalcartesiansystem cartesiansystem case1 case2 case3 case4 cbrt cd ceil center centerToFocus centroid cevian change2 changecoordsys checkSegment checkconditionlength checker checkincreasing checklengths checkposition checktriangle choose circle circlebarframe circlemarkradius circlenodesnumber circumcenter circumcircle clamped clear clip clipdraw close cmyk code colatitude collect collinear color colorless colors colorspace comma compassmark complement complementary concat concurrent cone conic conicnodesnumber conictype conj connect connected connectedindex containmentTree contains contour contour3 contouredges controlSpecifier convert coordinates coordsys copy copyPairOrTriple cos cosh cot countIntersections cputime crop cropcode cross crossframe crosshatch crossmarksize csc cubicroots curabscissa curlSpecifier curpoint currentarrow currentexitfunction currentmomarrow currentpolarconicroutine curve cut cutafter cutbefore cyclic cylinder deactivatequote debugger deconstruct defaultdir defaultformat defaultpen defined degenerate degrees delete deletepreamble determinant diagonal diamond diffdiv dir dirSpecifier dirtime display distance divisors do_overpaint dot dotframe dotsize downcase draw drawAll drawDoubleLine drawFermion drawGhost drawGluon drawMomArrow drawPRCcylinder drawPRCdisk drawPRCsphere drawPRCtube drawPhoton drawScalar drawVertex drawVertexBox drawVertexBoxO drawVertexBoxX drawVertexO drawVertexOX drawVertexTriangle drawVertexTriangleO drawVertexX drawarrow drawarrow2 drawline drawpixel drawtick duplicate elle ellipse ellipsenodesnumber embed embed3 embedplayer empty enclose end endScript endclip endgroup endgroup3 endl endpoint endpoints eof eol equation equations erase erasestep erf erfc error errorbar errorbars eval excenter excircle exit exitXasyMode exitfunction exp expfactors expi expm1 exradius extend extension extouch fabs factorial fermat fft fhorner figure file filecode fill filldraw filloutside fillrule filltype find finite finiteDifferenceJacobian firstcut firstframe fit fit2 fixedscaling floor flush fmdefaults fmod focusToCenter font fontcommand fontsize foot format frac frequency fromCenter fromFocus fspline functionshade gamma generate_random_backtrace generateticks gergonne getc getint getpair getreal getstring gettriple gluon gouraudshade graph graphic gray grestore grid grid3 gsave halfbox hatch hdiffdiv hermite hex histogram history hline hprojection hsv hyperbola hyperbolanodesnumber hyperlink hypot identity image incenter incentral incircle increasing incrementposition indexedTransform indexedfigure initXasyMode initdefaults input inradius insert inside integrate interactive interior interp interpolate intersect intersection intersectionpoint intersectionpoints intersections intouch inverse inversion invisible is3D isCCW isDuplicate isnan isogonal isogonalconjugate isotomic isotomicconjugate isparabola italic item jobname key kurtosis kurtosisexcess label labelaxis labelmargin labelpath labels labeltick labelx labelx3 labely labely3 labelz labelz3 lastcut latex latitude latticeshade layer layout ldexp leastsquares legend legenditem length lexorder lift light limits line linear linecap lineinversion linejoin linemargin lineskip linetype linewidth link list lm_enorm lm_evaluate_default lm_lmdif lm_lmpar lm_minimize lm_print_default lm_print_quiet lm_qrfac lm_qrsolv locale locate locatefile location log log10 log1p logaxiscoverage longitude lookup makeNode makedraw makepen map margin markangle markangleradius markanglespace markarc marker markinterval marknodes markrightangle markthin markuniform mass masscenter massformat math max max3 maxAfterTransform maxbezier maxbound maxcoords maxlength maxratio maxtimes mean medial median midpoint min min3 minAfterTransform minbezier minbound minipage minratio mintimes miterlimit mktemp momArrowPath momarrowsize monotonic multifigure nativeformat natural needshipout newl newpage newslide newton newtree nextframe nextnormal nextpage nib nodabscissa none norm normalvideo notaknot nowarn numberpage nurb object offset onpath opacity opposite orientation origin orthic orthocentercenter outformat outline outname outprefix output overloadedMessage overwrite pack pad pairs palette parabola parabolanodesnumber parallel parallelogram partialsum path path3 pattern pause pdf pedal periodic perp perpendicular perpendicularmark phantom phi1 phi2 phi3 photon piecewisestraight point polar polarconicroutine polargraph polygon postcontrol postscript pow10 ppoint prc prc0 precision precontrol prepend printBytecode print_random_addresses project projection purge pwhermite quadrant quadraticroots quantize quarticroots quotient radialshade radians radicalcenter radicalline radius rand randompath rd readline realmult realquarticroots rectangle rectangular rectify reflect relabscissa relative relativedistance reldir relpoint reltime remainder remark removeDuplicates rename replace report resetdefaultpen restore restoredefaults reverse reversevideo rf rfind rgb rgba rgbint rms rotate rotateO rotation round roundbox roundedpath roundrectangle same samecoordsys sameside sample save savedefaults saveline scale scale3 scaleO scaleT scaleless scientific search searchindex searchtree sec secondaryX secondaryY seconds section sector seek seekeof segment segmentlimits sequence setcontour setpens sgn sgnd sharpangle sharpdegrees shift shiftless shipout shipout3 show side simeq simpson sin sinh size size3 skewness skip slant sleep slope slopefield solve solveBVP sort sourceline sphere split sqrt square srand standardizecoordsys startScript stdev step stickframe stickmarksize stickmarkspace stop straight straightness string stripdirectory stripextension stripfile stripsuffix strokepath subdivide subitem subpath substr sum surface symmedial symmedian system tab tableau tan tangent tangential tangents tanh tell tensionSpecifier tensorshade tex texcolor texify texpath texpreamble texreset texshipout texsize textpath thick thin tick tickMax tickMax3 tickMin tickMin3 ticklabelshift ticklocate tildeframe tildemarksize tile tiling time times title titlepage topbox transform transformation transpose trembleFuzz triangle triangleAbc triangleabc triangulate tricoef tridiagonal trilinear trim truepoint tube uncycle unfill uniform unique unit unitrand unitsize unityroot unstraighten upcase updatefunction uperiodic upscale uptodate usepackage usersetting usetypescript usleep value variance variancebiased vbox vector vectorfield verbatim view vline vperiodic vprojection warn warning windingnumber write xaxis xaxis3 xaxis3At xaxisAt xequals xlimits xpart xscale xscaleO xtick xtick3 xtrans yaxis yaxis3 yaxis3At yaxisAt yequals ylimits ypart yscale yscaleO ytick ytick3 ytrans zaxis3 zaxis3At zero zero3 zlimits zpart ztick ztick3 ztrans ))
1414
1515 (defvar asy-variable-name '(
1616 AliceBlue Align Allow AntiqueWhite Apricot Aqua Aquamarine Aspect Azure BeginPoint Beige Bisque Bittersweet Black BlanchedAlmond Blue BlueGreen BlueViolet Both Break BrickRed Brown BurlyWood BurntOrange CCW CW CadetBlue CarnationPink Center Centered Cerulean Chartreuse Chocolate Coeff Coral CornflowerBlue Cornsilk Crimson Crop Cyan Dandelion DarkBlue DarkCyan DarkGoldenrod DarkGray DarkGreen DarkKhaki DarkMagenta DarkOliveGreen DarkOrange DarkOrchid DarkRed DarkSalmon DarkSeaGreen DarkSlateBlue DarkSlateGray DarkTurquoise DarkViolet DeepPink DeepSkyBlue DefaultHead DimGray DodgerBlue Dotted Down Draw E ENE EPS ESE E_Euler E_PC E_RK2 E_RK3BS Emerald EndPoint Euler Fill FillDraw FireBrick FloralWhite ForestGreen Fuchsia Gainsboro GhostWhite Gold Goldenrod Gray Green GreenYellow Honeydew HookHead Horizontal HotPink I IgnoreAspect IndianRed Indigo Ivory JOIN_IN JOIN_OUT JungleGreen Khaki LM_DWARF LM_MACHEP LM_SQRT_DWARF LM_SQRT_GIANT LM_USERTOL Label Lavender LavenderBlush LawnGreen Left LeftJustified LeftSide LemonChiffon LightBlue LightCoral LightCyan LightGoldenrodYellow LightGreen LightGrey LightPink LightSalmon LightSeaGreen LightSkyBlue LightSlateGray LightSteelBlue LightYellow Lime LimeGreen Linear Linen Log Logarithmic Magenta Mahogany Mark MarkFill MarkPath Maroon Max MediumAquamarine MediumBlue MediumOrchid MediumPurple MediumSeaGreen MediumSlateBlue MediumSpringGreen MediumTurquoise MediumVioletRed Melon MidPoint MidnightBlue Min MintCream MistyRose Moccasin Move MoveQuiet Mulberry N NE NNE NNW NW NavajoWhite Navy NavyBlue NoAlign NoCrop NoFill NoSide OldLace Olive OliveDrab OliveGreen Orange OrangeRed Orchid Ox Oy PC PaleGoldenrod PaleGreen PaleTurquoise PaleVioletRed PapayaWhip Peach PeachPuff Periwinkle Peru PineGreen Pink Plum PowderBlue ProcessBlue Purple RK2 RK3 RK3BS RK4 RK5 RK5DP RK5F RawSienna Red RedOrange RedViolet Rhodamine Right RightJustified RightSide RosyBrown RoyalBlue RoyalPurple RubineRed S SE SSE SSW SW SaddleBrown Salmon SandyBrown SeaGreen Seashell Sepia Sienna Silver SimpleHead SkyBlue SlateBlue SlateGray Snow SpringGreen SteelBlue Suppress SuppressQuiet Tan TeXHead Teal TealBlue Thistle Ticksize Tomato Turquoise UnFill Up VERSION Value Vertical Violet VioletRed W WNW WSW Wheat White WhiteSmoke WildStrawberry XYAlign YAlign Yellow YellowGreen YellowOrange addpenarc addpenline align allowstepping angularsystem animationdelay appendsuffix arcarrowangle arcarrowfactor arrow2sizelimit arrowangle arrowbarb arrowdir arrowfactor arrowhookfactor arrowlength arrowsizelimit arrowtexfactor authorpen axis axiscoverage axislabelfactor background backgroundcolor backgroundpen barfactor barmarksizefactor basealign baselinetemplate beveljoin bigvertexpen bigvertexsize black blue bm bottom bp brown bullet byfoci byvertices camerafactor chartreuse circlemarkradiusfactor circlenodesnumberfactor circleprecision circlescale cm codefile codepen codeskip colorPen coloredNodes coloredSegments conditionlength conicnodesfactor count cputimeformat crossmarksizefactor currentcoordsys currentlight currentpatterns currentpen currentpicture currentposition currentprojection curvilinearsystem cuttings cyan darkblue darkbrown darkcyan darkgray darkgreen darkgrey darkmagenta darkolive darkred dashdotted dashed datepen dateskip debuggerlines debugging deepblue deepcyan deepgray deepgreen deepgrey deepmagenta deepred default defaultControl defaultS defaultbackpen defaultcoordsys defaultexcursion defaultfilename defaultformat defaultmassformat defaultpen defaultseparator diagnostics differentlengths dot dotfactor dotframe dotted doublelinepen doublelinespacing down duplicateFuzz edge ellipsenodesnumberfactor eps epsgeo epsilon evenodd expansionfactor extendcap exterior fermionpen figureborder figuremattpen file3 firstnode firststep foregroundcolor fuchsia fuzz gapfactor ghostpen gluonamplitude gluonpen gluonratio gray green grey hatchepsilon havepagenumber heavyblue heavycyan heavygray heavygreen heavygrey heavymagenta heavyred hline hwratio hyperbola hyperbolanodesnumberfactor identity4 ignore inXasyMode inch inches includegraphicscommand inf infinity institutionpen intMax intMin interior invert invisible itempen itemskip itemstep labelmargin landscape lastnode left legendhskip legendlinelength legendmargin legendmarkersize legendmaxrelativewidth legendvskip lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightolive lightred lightyellow line linemargin lm_infmsg lm_shortmsg longdashdotted longdashed magenta magneticRadius mantissaBits markangleradius markangleradiusfactor markanglespace markanglespacefactor mediumblue mediumcyan mediumgray mediumgreen mediumgrey mediummagenta mediumred mediumyellow middle minDistDefault minblockheight minblockwidth mincirclediameter minipagemargin minipagewidth minvertexangle miterjoin mm momarrowfactor momarrowlength momarrowmargin momarrowoffset momarrowpen monoPen morepoints nCircle newbulletcolor ngraph nil nmesh nobasealign nodeMarginDefault nodesystem nomarker nopoint noprimary nullpath nullpen numarray ocgindex oldbulletcolor olive orange origin overpaint page pageheight pagemargin pagenumberalign pagenumberpen pagenumberposition pagewidth paleblue palecyan palegray palegreen palegrey palemagenta palered paleyellow parabolanodesnumberfactor perpfactor phi photonamplitude photonpen photonratio pi pink plain plain_bounds plain_scaling plus preamblenodes pt purple r3 r4a r4b randMax realDigits realEpsilon realMax realMin red relativesystem reverse right roundcap roundjoin royalblue salmon saveFunctions scalarpen sequencereal settings shipped signedtrailingzero solid springgreen sqrtEpsilon squarecap squarepen startposition stdin stdout stepfactor stepfraction steppagenumberpen stepping stickframe stickmarksizefactor stickmarkspacefactor swap textpen ticksize tildeframe tildemarksizefactor tinv titlealign titlepagepen titlepageposition titlepen titleskip top trailingzero treeLevelStep treeMinNodeWidth treeNodeStep trembleAngle trembleFrequency trembleRandom undefined unitcircle unitsquare up urlpen urlskip version vertexpen vertexsize viewportmargin viewportsize vline white wye xformStack yellow ylabelwidth zerotickfuzz zerowinding ))
251251 int search(guide[] a, guide key, bool less(guide, guide));
252252 int search(coord[] a, coord key, bool less(coord, coord));
253253 int search(pair[] a, pair key, bool less(pair, pair));
254 int search(object[] a, object key, bool less(object, object));
255 int search(Legend[] a, Legend key, bool less(Legend, Legend));
256 int search(frame[] a, frame key, bool less(frame, frame));
254257 int search(coord[] a, coord key, bool less(coord, coord));
255 int search(object[] a, object key, bool less(object, object));
256 int search(picture[] a, picture key, bool less(picture, picture));
257 int search(frame[] a, frame key, bool less(frame, frame));
258258 int search(Label[] a, Label key, bool less(Label, Label));
259259 int search(int[] a, int key, bool less(int, int));
260260 int search(bool3[] a, bool3 key, bool less(bool3, bool3));
261 int search(picture[] a, picture key, bool less(picture, picture));
261262 int search(marker[] a, marker key, bool less(marker, marker));
262263 int search(string[] a, string key, bool less(string, string));
263264 int search(path[] a, path key, bool less(path, path));
264265 int search(pen[] a, pen key, bool less(pen, pen));
265266 int search(bool[] a, bool key, bool less(bool, bool));
266267 int search(triple[] a, triple key, bool less(triple, triple));
267 int search(Legend[] a, Legend key, bool less(Legend, Legend));
268268 filltype RadialShadeDraw(real xmargin=<default>, real ymargin=<default>, pen penc, pen penr, pen drawpen=<default>);
269269 real sin(real x);
270270 real[] sin(real[] a);
298298 void _eval(string s, bool embedded, bool interactivewrite=<default>);
299299 void _eval(code s, bool embedded);
300300 path[][] textpath(string[] s, pen[] p);
301 void radialshade(frame f, path[] g, bool stroke=<default>, pen pena, pair a, real ra, pen penb, pair b, real rb, bool copy=<default>);
302 void radialshade(picture pic=<default>, path[] g, bool stroke=<default>, pen pena, pair a, real ra, pen penb, pair b, real rb, bool copy=<default>);
301 void radialshade(frame f, path[] g, bool stroke=<default>, pen pena, pair a, real ra, bool extenda=<default>, pen penb, pair b, real rb, bool extendb=<default>, bool copy=<default>);
302 void radialshade(picture pic=<default>, path[] g, bool stroke=<default>, pen pena, pair a, real ra, bool extenda=<default>, pen penb, pair b, real rb, bool extendb=<default>, bool copy=<default>);
303303 pair maxbound(pair a, pair b);
304304 triple maxbound(triple a, triple b);
305305 pair maxbound(pair[] a);
340340 pair max(path[] p);
341341 triple max(path3 p);
342342 real max(real M, scaling s, coord[] c);
343 real max(real M, scaling s, coord[] c);
343344 int max(... int[] a);
344345 pair max(picture pic, bool user=<default>);
345346 real max(... real[] a);
346 real max(real M, scaling s, coord[] c);
347347 Label Label(Label L, pair position, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>);
348348 Label Label(string s, string size=<default>, explicit position position, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>);
349349 Label Label(Label L, explicit position position, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>);
517517 real[][] copy(real[][] a, int depth=<default>);
518518 pen[] copy(pen[] a, int depth=<default>);
519519 coord[] copy(coord[] a, int depth=<default>);
520 coord[] copy(coord[] a, int depth=<default>);
520521 marker[] copy(marker[] a, int depth=<default>);
521 Legend[] copy(Legend[] a, int depth=<default>);
522522 Label[] copy(Label[] a, int depth=<default>);
523523 pen[][] copy(pen[][] a, int depth=<default>);
524524 path[] copy(path[] a, int depth=<default>);
529529 frame[] copy(frame[] a, int depth=<default>);
530530 pair[] copy(pair[] a, int depth=<default>);
531531 bool3[] copy(bool3[] a, int depth=<default>);
532 coord[] copy(coord[] a, int depth=<default>);
533532 object[] copy(object[] a, int depth=<default>);
534533 picture[] copy(picture[] a, int depth=<default>);
534 Legend[] copy(Legend[] a, int depth=<default>);
535535 pair[][] copy(pair[][] a, int depth=<default>);
536536 real[] abs(pair[] a);
537537 real[] abs(triple[] a);
546546 path ellipse(frame f, Label L, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>);
547547 path ellipse(pair c, real a, real b);
548548 pair getpair(string name=<default>, pair default=<default>, string prompt=<default>, bool store=<default>);
549 void axialshade(frame f, path[] g, bool stroke=<default>, pen pena, pair a, pen penb, pair b, bool copy=<default>);
550 void axialshade(picture pic=<default>, path[] g, bool stroke=<default>, pen pena, pair a, pen penb, pair b, bool copy=<default>);
549 void axialshade(frame f, path[] g, bool stroke=<default>, pen pena, pair a, bool extenda=<default>, pen penb, pair b, bool extendb=<default>, bool copy=<default>);
550 void axialshade(picture pic=<default>, path[] g, bool stroke=<default>, pen pena, pair a, bool extenda=<default>, pen penb, pair b, bool extendb=<default>, bool copy=<default>);
551551 string locale(string s=<default>);
552552 real dirtime(path p, pair z);
553553 void copyPairOrTriple(pairOrTriple dest, pairOrTriple src);
564564 real[] map(real f(pair), pair[] a);
565565 int[] map(int f(real), real[] a);
566566 bool3[] map(bool3 f(bool3), bool3[] a);
567 picture[] map(picture f(picture), picture[] a);
567568 frame[] map(frame f(frame), frame[] a);
569 coord[] map(coord f(coord), coord[] a);
568570 Label[] map(Label f(Label), Label[] a);
569571 pen[][] map(pen[] f(pen[]), pen[][] a);
570572 triple[] map(triple f(triple), triple[] a);
571573 pen[] map(pen f(pen), pen[] a);
572 coord[] map(coord f(coord), coord[] a);
573574 object[] map(object f(object), object[] a);
574 picture[] map(picture f(picture), picture[] a);
575 Legend[] map(Legend f(Legend), Legend[] a);
575576 pair[] map(pair f(pair), pair[] a);
576577 coord[] map(coord f(coord), coord[] a);
577578 string[] map(string f(string), string[] a);
578579 void()()[] map(void f()()(void()()), void()()[] a);
579580 pair[][] map(pair[] f(pair[]), pair[][] a);
580581 real[] map(real f(real), real[] a);
581 Legend[] map(Legend f(Legend), Legend[] a);
582582 int[] map(int f(int), int[] a);
583583 string[][] map(string[] f(string[]), string[][] a);
584584 bool[] map(bool f(bool), bool[] a);
600600 int[] sequence(int n);
601601 pen[][] sequence(pen[] f(int), int n);
602602 coord[] sequence(coord f(int), int n);
603 coord[] sequence(coord f(int), int n);
603604 marker[] sequence(marker f(int), int n);
604 Legend[] sequence(Legend f(int), int n);
605605 Label[] sequence(Label f(int), int n);
606606 int[] sequence(int f(int), int n);
607607 string[][] sequence(string[] f(int), int n);
613613 string[] sequence(string f(int), int n);
614614 pair[][] sequence(pair[] f(int), int n);
615615 bool3[] sequence(bool3 f(int), int n);
616 coord[] sequence(coord f(int), int n);
617616 object[] sequence(object f(int), int n);
618617 picture[] sequence(picture f(int), int n);
618 Legend[] sequence(Legend f(int), int n);
619619 real[][] sequence(real[] f(int), int n);
620620 real[] sequence(real f(int), int n);
621621 int[] sequence(int n, int m);
736736 string[] array(int n, string value, int depth=<default>);
737737 pair[][] array(int n, pair[] value, int depth=<default>);
738738 bool3[] array(int n, bool3 value, int depth=<default>);
739 coord[] array(int n, coord value, int depth=<default>);
740739 object[] array(int n, object value, int depth=<default>);
741740 picture[] array(int n, picture value, int depth=<default>);
741 Legend[] array(int n, Legend value, int depth=<default>);
742742 real[][] array(int n, real[] value, int depth=<default>);
743743 real[] array(int n, real value, int depth=<default>);
744744 triple[] array(int n, triple value, int depth=<default>);
746746 frame[] array(int n, frame value, int depth=<default>);
747747 pen[][] array(int n, pen[] value, int depth=<default>);
748748 coord[] array(int n, coord value, int depth=<default>);
749 coord[] array(int n, coord value, int depth=<default>);
749750 marker[] array(int n, marker value, int depth=<default>);
750 Legend[] array(int n, Legend value, int depth=<default>);
751751 Label[] array(int n, Label value, int depth=<default>);
752752 int[] array(int n, int value, int depth=<default>);
753753 string[][] array(int n, string[] value, int depth=<default>);
871871 void write(file file=<default>, string s=<default>, pen x, void suffix(file)=<default> ... pen[]);
872872 void write(file file, string s=<default>, explicit guide[] x, void suffix(file)=<default>);
873873 void write(string s=<default>, cputime c, string format=<default>, void suffix(file)=<default>);
874 void write(pairOrTriple a);
874875 void write(string s=<default>, explicit path[] x, void suffix(file)=<default>);
875876 void write(file file, void suffix(file)=<default>);
876877 void write(file file=<default>, string s=<default>, pen[] p);
878879 void write(file file, string s=<default>, explicit path[] x, void suffix(file)=<default>);
879880 void write(file file=<default>, Label L, void suffix(file)=<default>);
880881 void write(file file, string s=<default>, cputime c, string format=<default>, void suffix(file)=<default>);
881 void write(pairOrTriple a);
882882 void write(string s=<default>, bool3 b, void suffix(file)=<default>);
883883 void write(file file, string s=<default>, bool3 b, void suffix(file)=<default>);
884884 void write(string s=<default>, explicit guide[] x, void suffix(file)=<default>);
934934 string blend(pen p);
935935 arrowhead HookHead;
936936 arrowhead HookHead(real dir=<default>, real barb=<default>);
937 Legend[] concat(... Legend[][]);
938937 real[] concat(... real[][]);
939938 pair[] concat(... pair[][]);
940939 coord[] concat(... coord[][]);
941940 pen[] concat(... pen[][]);
941 object[] concat(... object[][]);
942 Legend[] concat(... Legend[][]);
943 path[] concat(... path[][]);
942944 coord[] concat(... coord[][]);
943 object[] concat(... object[][]);
944 picture[] concat(... picture[][]);
945 path[] concat(... path[][]);
946945 Label[] concat(... Label[][]);
947946 int[] concat(... int[][]);
948947 void()()[] concat(... void()()[][]);
949948 bool3[] concat(... bool3[][]);
949 picture[] concat(... picture[][]);
950950 string[] concat(... string[][]);
951951 marker[] concat(... marker[][]);
952952 triple[] concat(... triple[][]);
960960 bool alias(pair[][] a, pair[][] b);
961961 bool alias(guide[] a, guide[] b);
962962 bool alias(marginT a, marginT b);
963 bool alias(coord[] a, coord[] b);
963964 bool alias(projection a, projection b);
964965 bool alias(side a, side b);
965966 bool alias(marker a, marker b);
966967 bool alias(Label[] a, Label[] b);
967968 bool alias(pair[] a, pair[] b);
968 bool alias(coord a, coord b);
969 bool alias(scaling a, scaling b);
969970 bool alias(bounds a, bounds b);
970971 bool alias(scaleT a, scaleT b);
971 bool alias(picture a, picture b);
972 bool alias(Legend a, Legend b);
972973 bool alias(object a, object b);
973974 bool alias(cputime a, cputime b);
974975 bool alias(int[] a, int[] b);
976977 bool alias(slice a, slice b);
977978 bool alias(coord[] a, coord[] b);
978979 bool alias(coords2 a, coords2 b);
979 bool alias(Legend a, Legend b);
980 bool alias(pairOrTriple a, pairOrTriple b);
980981 bool alias(framedTransformStack a, framedTransformStack b);
981982 bool alias(real[][] a, real[][] b);
982983 bool alias(bool3 a, bool3 b);
983984 bool alias(bool3[] a, bool3[] b);
984985 bool alias(light a, light b);
986 bool alias(picture a, picture b);
985987 bool alias(position a, position b);
988 bool alias(picture[] a, picture[] b);
986989 bool alias(arrowhead a, arrowhead b);
987990 bool alias(string[] a, string[] b);
988991 bool alias(frame[] a, frame[] b);
989 bool alias(scaling a, scaling b);
992 bool alias(coords2 a, coords2 b);
990993 bool alias(coord a, coord b);
991994 bool alias(autoscaleT a, autoscaleT b);
992 bool alias(Legend[] a, Legend[] b);
993995 bool alias(bool[] a, bool[] b);
994996 bool alias(void()()[] a, void()()[] b);
995997 bool alias(pen[][] a, pen[][] b);
996998 bool alias(filltype a, filltype b);
997 bool alias(coord[] a, coord[] b);
998999 bool alias(freezableBounds a, freezableBounds b);
9991000 bool alias(transformation a, transformation b);
10001001 bool alias(align a, align b);
10011002 bool alias(object[] a, object[] b);
1002 bool alias(picture[] a, picture[] b);
1003 bool alias(Legend[] a, Legend[] b);
10031004 bool alias(path[] a, path[] b);
10041005 bool alias(triple[] a, triple[] b);
1006 bool alias(coord a, coord b);
10051007 bool alias(coords3 a, coords3 b);
1006 bool alias(pairOrTriple a, pairOrTriple b);
10071008 bool alias(Label a, Label b);
10081009 bool alias(marker[] a, marker[] b);
10091010 bool alias(processtime a, processtime b);
10101011 bool alias(real[] a, real[] b);
10111012 bool alias(pen[] a, pen[] b);
10121013 bool alias(hsv a, hsv b);
1013 bool alias(coords2 a, coords2 b);
10141014 bool alias(scaling a, scaling b);
10151015 bool alias(ScaleT a, ScaleT b);
10161016 bool alias(indexedTransform a, indexedTransform b);
10401040 string[] sort(string[] a);
10411041 string[][] sort(string[][] a);
10421042 path[] sort(path[] a, bool less(path, path));
1043 Legend[] sort(Legend[] a, bool less(Legend, Legend));
10441043 pair[] sort(pair[] a, bool less(pair, pair));
10451044 void()()[] sort(void()()[] a, bool less(void()(), void()()));
10461045 real[] sort(real[] a, bool less(real, real));
10481047 coord[] sort(coord[] a, bool less(coord, coord));
10491048 pen[] sort(pen[] a, bool less(pen, pen));
10501049 pen[][] sort(pen[][] a, bool less(pen[], pen[]));
1051 coord[] sort(coord[] a, bool less(coord, coord));
10521050 object[] sort(object[] a, bool less(object, object));
1053 picture[] sort(picture[] a, bool less(picture, picture));
1051 Legend[] sort(Legend[] a, bool less(Legend, Legend));
10541052 guide[] sort(guide[] a, bool less(guide, guide));
10551053 real[][] sort(real[][] a, bool less(real[], real[]));
10561054 triple[] sort(triple[] a, bool less(triple, triple));
1055 coord[] sort(coord[] a, bool less(coord, coord));
10571056 Label[] sort(Label[] a, bool less(Label, Label));
10581057 string[] sort(string[] a, bool less(string, string));
10591058 int[] sort(int[] a, bool less(int, int));
10601059 string[][] sort(string[][] a, bool less(string[], string[]));
10611060 bool3[] sort(bool3[] a, bool less(bool3, bool3));
1061 picture[] sort(picture[] a, bool less(picture, picture));
10621062 pair[][] sort(pair[][] a, bool less(pair[], pair[]));
10631063 marker[] sort(marker[] a, bool less(marker, marker));
10641064 frame[] sort(frame[] a, bool less(frame, frame));
13461346 triple operator *(real x, triple v);
13471347 triple operator *(triple v, real x);
13481348 path3 operator *(real[][] t, path3 g);
1349 picture operator *(real[][] t, picture orig);
13501349 side operator *(real x, side s);
13511350 Label operator *(real[][] t, Label L);
1351 picture operator *(real[][] t, picture orig);
13521352 path[] operator *(transform t, explicit path[] p);
13531353 bounds operator *(transform t, bounds b);
1354 picture operator *(transform t, picture orig);
13551354 object operator *(transform t, explicit object F);
13561355 pair[] operator *(transform t, pair[] z);
13571356 Label operator *(transform t, Label L);
1357 picture operator *(transform t, picture orig);
13581358 bool operator init();
13591359 int operator init();
13601360 real operator init();
13771377 align operator init();
13781378 slice operator init();
13791379 coords2 operator init();
1380 Legend operator init();
1380 pairOrTriple operator init();
13811381 framedTransformStack operator init();
13821382 hsv operator init();
1383 coords2 operator init();
13841383 scaling operator init();
13851384 ScaleT operator init();
13861385 indexedTransform operator init();
1387 scaling operator init();
1386 coords2 operator init();
13881387 coord operator init();
13891388 autoscaleT operator init();
1390 coord operator init();
1389 scaling operator init();
13911390 bounds operator init();
13921391 scaleT operator init();
1393 picture operator init();
1392 Legend operator init();
13941393 object operator init();
13951394 cputime operator init();
1395 coord operator init();
13961396 coords3 operator init();
1397 pairOrTriple operator init();
13981397 Label operator init();
13991398 processtime operator init();
14001399 bool3 operator init();
14011400 light operator init();
1401 picture operator init();
14021402 position operator init();
14031403 arrowhead operator init();
14041404 real operator cast(int);
14491449 frame operator cast(object F);
14501450 bool3[] operator cast(bool[] b);
14511451 align operator cast(side side);
1452 pair operator cast(pairOrTriple a);
1453 triple operator cast(pairOrTriple a);
14541452 position operator cast(pair x);
14551453 guide[] operator cast(pair[] z);
14561454 path[] operator cast(guide[] g);
14651463 path[] operator cast(path p);
14661464 bool[] operator cast(bool3[] b);
14671465 align operator cast(triple dir);
1466 pair operator cast(pairOrTriple a);
1467 triple operator cast(pairOrTriple a);
14681468 bool3 operator cast(bool b);
14691469 pen operator cast(hsv hsv);
14701470 position operator cast(int x);
15701570 bool operator ==(path3 a, path3 b);
15711571 bool operator ==(bool3 a, bool3 b);
15721572 bool operator ==(light a, light b);
1573 bool operator ==(picture a, picture b);
15731574 bool operator ==(position a, position b);
15741575 bool operator ==(arrowhead a, arrowhead b);
1575 bool operator ==(scaling a, scaling b);
1576 bool operator ==(coords2 a, coords2 b);
15761577 bool operator ==(coord a, coord b);
15771578 bool operator ==(autoscaleT a, autoscaleT b);
15781579 bool operator ==(filltype a, filltype b);
15791580 bool operator ==(freezableBounds a, freezableBounds b);
15801581 bool operator ==(transformation a, transformation b);
15811582 bool operator ==(align a, align b);
1583 bool operator ==(coord a, coord b);
15821584 bool operator ==(coords3 a, coords3 b);
1583 bool operator ==(pairOrTriple a, pairOrTriple b);
15841585 bool operator ==(Label a, Label b);
15851586 bool operator ==(processtime a, processtime b);
15861587 bool operator ==(hsv a, hsv b);
1587 bool operator ==(coords2 a, coords2 b);
15881588 bool operator ==(scaling a, scaling b);
15891589 bool operator ==(ScaleT a, ScaleT b);
15901590 bool operator ==(indexedTransform a, indexedTransform b);
15931593 bool operator ==(projection a, projection b);
15941594 bool operator ==(side a, side b);
15951595 bool operator ==(marker a, marker b);
1596 bool operator ==(coord a, coord b);
1596 bool operator ==(scaling a, scaling b);
15971597 bool operator ==(bounds a, bounds b);
15981598 bool operator ==(scaleT a, scaleT b);
1599 bool operator ==(picture a, picture b);
1599 bool operator ==(Legend a, Legend b);
16001600 bool operator ==(object a, object b);
16011601 bool operator ==(cputime a, cputime b);
16021602 bool operator ==(bool a, bool3 b);
16031603 bool operator ==(slice a, slice b);
16041604 bool operator ==(coords2 a, coords2 b);
1605 bool operator ==(Legend a, Legend b);
1605 bool operator ==(pairOrTriple a, pairOrTriple b);
16061606 bool operator ==(framedTransformStack a, framedTransformStack b);
16071607 bool operator !=(bool a, bool b);
16081608 bool[] operator !=(bool a, bool[] b);
16421642 bool operator !=(path3 a, path3 b);
16431643 bool operator !=(bool3 a, bool3 b);
16441644 bool operator !=(light a, light b);
1645 bool operator !=(picture a, picture b);
16451646 bool operator !=(position a, position b);
16461647 bool operator !=(arrowhead a, arrowhead b);
1647 bool operator !=(scaling a, scaling b);
1648 bool operator !=(coords2 a, coords2 b);
16481649 bool operator !=(coord a, coord b);
16491650 bool operator !=(autoscaleT a, autoscaleT b);
16501651 bool operator !=(filltype a, filltype b);
16511652 bool operator !=(freezableBounds a, freezableBounds b);
16521653 bool operator !=(transformation a, transformation b);
16531654 bool operator !=(align a, align b);
1655 bool operator !=(coord a, coord b);
16541656 bool operator !=(coords3 a, coords3 b);
1655 bool operator !=(pairOrTriple a, pairOrTriple b);
16561657 bool operator !=(Label a, Label b);
16571658 bool operator !=(processtime a, processtime b);
16581659 bool operator !=(hsv a, hsv b);
1659 bool operator !=(coords2 a, coords2 b);
16601660 bool operator !=(scaling a, scaling b);
16611661 bool operator !=(ScaleT a, ScaleT b);
16621662 bool operator !=(indexedTransform a, indexedTransform b);
16651665 bool operator !=(projection a, projection b);
16661666 bool operator !=(side a, side b);
16671667 bool operator !=(marker a, marker b);
1668 bool operator !=(coord a, coord b);
1668 bool operator !=(scaling a, scaling b);
16691669 bool operator !=(bounds a, bounds b);
16701670 bool operator !=(scaleT a, scaleT b);
1671 bool operator !=(picture a, picture b);
1671 bool operator !=(Legend a, Legend b);
16721672 bool operator !=(object a, object b);
16731673 bool operator !=(cputime a, cputime b);
16741674 bool operator !=(bool a, bool3 b);
16751675 bool operator !=(slice a, slice b);
16761676 bool operator !=(coords2 a, coords2 b);
1677 bool operator !=(Legend a, Legend b);
1677 bool operator !=(pairOrTriple a, pairOrTriple b);
16781678 bool operator !=(framedTransformStack a, framedTransformStack b);
16791679 bool operator <(int a, int b);
16801680 bool[] operator <(int a, int[] b);
27662766 inversion inversion(circle c1, circle c2, real sgn=<default>);
27672767 inversion inversion(circle c1, circle c2, circle c3);
27682768 inversion inversion(circle c);
2769 coordsys cartesiansystem(pair O=<default>, pair i, pair j);
27692770 point isogonalconjugate(triangle t, point M);
2770 coordsys cartesiansystem(pair O=<default>, pair i, pair j);
27712771 point isogonal(side side, point M);
27722772 line isogonal(vertex V, point M);
27732773 triangle isogonal(triangle t, point M);
28392839 axisT axis;
28402840 void axis(picture pic=<default>, Label L=<default>, path g, path g2=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>), ticklocate locate, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, int[] divisor=<default>, bool above=<default>, bool opposite=<default>);
28412841 void drawtick(frame f, transform T, path g, path g2, ticklocate locate, real val, real Size, int sign, pen p, bool extend);
2842 real maxlength(pair a, pair b, int nx, int ny);
28422843 tickvalues OmitTickIntervals(tickvalues)(real[] a, real[] b);
2843 real maxlength(pair a, pair b, int nx, int ny);
28442844 tickvalues OmitTickInterval(tickvalues)(real a, real b);
28452845 tickvalues OmitTick(tickvalues)(... real[] x);
28462846 void errorbar(picture pic, pair z, pair dp, pair dm, pen p=<default>, real size=<default>);
28742874 void labelaxis(frame f, transform T, Label L, path g, ticklocate locate=<default>, int sign=<default>, bool ticklabels=<default>);
28752875 void xaxisAt(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>, bool opposite=<default>);
28762876 void yaxisAt(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>, bool opposite=<default>);
2877 void xaxis(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>);
28782877 void xtick(picture pic=<default>, explicit pair z, pair dir=<default>, real size=<default>, pen p=<default>);
28792878 void xtick(picture pic=<default>, real x, pair dir=<default>, real size=<default>, pen p=<default>);
28802879 void xtick(picture pic=<default>, Label L, explicit pair z, pair dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
28812880 void xtick(picture pic=<default>, Label L, real x, pair dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
2882 void yaxis(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>, bool autorotate=<default>);
2881 void xaxis(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>);
28832882 void ytick(picture pic=<default>, explicit pair z, pair dir=<default>, real size=<default>, pen p=<default>);
28842883 void ytick(picture pic=<default>, real y, pair dir=<default>, real size=<default>, pen p=<default>);
28852884 void ytick(picture pic=<default>, Label L, explicit pair z, pair dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
28862885 void ytick(picture pic=<default>, Label L, real y, pair dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
2886 void yaxis(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>, bool autorotate=<default>);
28872887 picture secondaryX(picture primary=<default>, void f(picture));
28882888 picture secondaryY(picture primary=<default>, void f(picture));
28892889 Label Break;
29972997 void zaxis3At(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real zmin=<default>, real zmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>, bool opposite=<default>, bool opposite2=<default>, bool primary=<default>);
29982998 void xaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>);
29992999 void yaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>);
3000 bool uperiodic(triple[][] a);
30003001 void zaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real zmin=<default>, real zmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>);
3001 bool uperiodic(triple[][] a);
30023002 bool vperiodic(triple[][] a);
30033003 void OutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
30043004 void OutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
32693269 real slope(path g, real x, int n=<default>);
32703270 real slope(path g, explicit pair z, int n=<default>);
32713271 picture grid(int Nx, int Ny, pen p=<default>);
3272 int[][] segmentlimits(bool[] b);
32723273 int[][] segment(bool[] b);
32733274 real frac(real x);
32743275 real asec(real x);
33653366 path roundedpath(path A, real R, real S=<default>);
33663367 problem operator init();
33673368 real infinity;
3369 bool allowstepping;
3370 pair currentposition;
33683371 pen authorpen;
33693372 void display(frame[] f, real margin=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>);
33703373 void display(frame f, real margin=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>);
33903393 void usersetting();
33913394 bool landscape;
33923395 real codeskip;
3396 void newslide(bool stepping=<default>);
33933397 int page;
3394 void newslide(bool stepping=<default>);
33953398 pen itempen;
33963399 bool reverse;
33973400 void reversevideo();
34043407 picture background;
34053408 void background();
34063409 pen backgroundcolor;
3407 void nextpage(pen p=<default>);
34083410 void normalvideo();
34093411 void title(string s, pair position=<default>, pair align=<default>, pen p=<default>, bool newslide=<default>);
34103412 pen titlepen;
3413 void nextpage(pen p=<default>);
34113414 real titleskip;
34123415 pair dateskip;
34133416 pair titlealign;
34153418 void titlepage(string title, string author, string institution=<default>, string date=<default>, string url=<default>, bool newslide=<default>);
34163419 pair titlepageposition;
34173420 pen codepen;
3421 void erasestep(int erasenode);
34183422 void filecode(bool center=<default>, string s, pen p=<default>, real indent=<default>, real skip=<default>, filltype filltype=<default>);
3419 void erasestep(int erasenode);
34203423 bool checkposition();
34213424 void setpens(pen red=<default>, pen blue=<default>, pen steppen=<default>);
34223425 void code(bool center=<default>, string s, pen p=<default>, real indent=<default>, real skip=<default>, filltype filltype=<default>);
34333436 pen datepen;
34343437 void incrementposition(pair z);
34353438 pen institutionpen;
3436 void item(string s, pen p=<default>, bool step=<default>);
34373439 void skip(real n=<default>);
34383440 bool stepping;
3441 void item(string s, pen p=<default>, bool step=<default>);
34393442 real pagemargin;
34403443 pen steppagenumberpen;
34413444 bool empty();
34423445 void currentexitfunction();
34433446 void step();
34443447 string[] codefile;
3445 string cropcode(string s);
34463448 void outline(string s=<default>, pair position=<default>, pair align=<default>, pen p=<default>);
34473449 void center(string s, pen p=<default>);
3450 string cropcode(string s);
34483451 void equation(string s, pen p=<default>);
34493452 void equations(string s, pen p=<default>);
34503453 void asyinclude(string s, real xsize=<default>, real ysize=<default>);
34533456 real figureborder;
34543457 pen figuremattpen;
34553458 string bullet;
3456 bool allowstepping;
3457 pair currentposition;
34583459 int preamblenodes;
34593460 string bulletcolor(string color);
34603461 real minipagewidth;
34763477 path[] cylinder(path3 base, real h, triple axis=<default>, projection P);
34773478 revolution cylinder(triple c=<default>, real r, real h, triple axis=<default>);
34783479 revolution cone(triple c=<default>, real r, real h, triple axis=<default>, int n=<default>);
3480 void histogram(picture pic=<default>, real[] bins, real[] count, real low=<default>, pen fillpen=<default>, pen drawpen=<default>, bool bars=<default>, Label legend=<default>, real markersize=<default>);
3481 void histogram(picture pic=<default>, real[] data, real a, real b, int n, bool normalize=<default>, real low=<default>, pen fillpen=<default>, pen drawpen=<default>, bool bars=<default>, Label legend=<default>, real markersize=<default>);
34793482 real rms(real[] A);
34803483 int[] frequency(real[] data, real[] bins);
34813484 int[] frequency(real[] data, real a, real b, int n);
34873490 path topbox(pair a, pair b);
34883491 real stdev(real[] A);
34893492 path halfbox(pair a, pair b);
3493 real variance(real[] A);
3494 real legendmarkersize;
3495 real variancebiased(real[] A);
34903496 real Gaussian(real x, real sigma);
34913497 real Gaussian(real x);
34923498 pair Gaussrandpair();
34933499 real Gaussrand();
3494 real variance(real[] A);
3495 real legendmarkersize;
3496 real variancebiased(real[] A);
34973500 linefit operator init();
34983501 real skewness(real[] A);
34993502 linefit leastsquares(real[] x, real[] y);
35003503 real kurtosis(real[] A);
35013504 real kurtosisexcess(real[] A);
3502 void histogram(picture pic=<default>, real[] bins, real[] count, real low=<default>, pen fillpen=<default>, pen drawpen=<default>, bool bars=<default>, Label legend=<default>, real markersize=<default>);
3503 void histogram(picture pic=<default>, real[] data, real a, real b, int n, bool normalize=<default>, real low=<default>, pen fillpen=<default>, pen drawpen=<default>, bool bars=<default>, Label legend=<default>, real markersize=<default>);
35043505 pair[] endpoints(guide[] a);
35053506 Relation r3;
35063507 picture tableau(frame[] cards, bool number=<default>);
35223523 pair max(pair[] z);
35233524 pen Orchid;
35243525 pen Magenta;
3526 pen BrickRed;
35253527 pen Salmon;
3526 pen BrickRed;
35273528 pen CadetBlue;
35283529 pen CarnationPink;
35293530 pen SpringGreen;
35353536 pen RawSienna;
35363537 pen Mahogany;
35373538 pen Gray;
3538 pen Aquamarine;
35393539 pen Plum;
35403540 pen BlueGreen;
35413541 pen Cerulean;
3542 pen Aquamarine;
35423543 pen Blue;
3543 pen Lavender;
35443544 pen BlueViolet;
35453545 pen RedOrange;
35463546 pen Goldenrod;
35473547 pen ForestGreen;
3548 pen Lavender;
35483549 pen BurntOrange;
35493550 pen Tan;
35503551 pen Brown;
35563557 pen Orange;
35573558 pen OrangeRed;
35583559 pen Fuchsia;
3560 pen Peach;
3561 pen PineGreen;
3562 pen Dandelion;
35593563 pen YellowOrange;
35603564 pen Maroon;
3561 pen Peach;
35623565 pen YellowGreen;
3563 pen PineGreen;
3564 pen Dandelion;
35653566 pen Black;
35663567 pen NavyBlue;
35673568 pen Rhodamine;
35753576 pen Emerald;
35763577 pen Mulberry;
35773578 pen RedViolet;
3578 pen Thistle;
35793579 pen SkyBlue;
35803580 pen SeaGreen;
3581 pen Thistle;
35813582 pen Periwinkle;
35823583 pen DarkOrchid;
35833584 pen Yellow;
36133614 string VERSION;
36143615 pen Orchid;
36153616 pen Indigo;
3617 pen GhostWhite;
36163618 pen Beige;
36173619 pen SlateBlue;
36183620 pen SlateGray;
36203622 pen Salmon;
36213623 pen CadetBlue;
36223624 pen DeepPink;
3625 pen SpringGreen;
3626 pen MidnightBlue;
36233627 pen LavenderBlush;
3624 pen SpringGreen;
3628 pen Olive;
36253629 pen Wheat;
3626 pen MidnightBlue;
3627 pen Olive;
36283630 pen OliveDrab;
36293631 pen Chocolate;
3630 pen SteelBlue;
36313632 pen Cyan;
36323633 pen Gainsboro;
3634 pen SteelBlue;
36333635 pen Ivory;
36343636 pen PapayaWhip;
36353637 pen Red;
36443646 pen MediumSlateBlue;
36453647 pen MediumAquamarine;
36463648 pen MediumSpringGreen;
3647 pen LemonChiffon;
36483649 pen MediumTurquoise;
36493650 pen MediumVioletRed;
3651 pen Plum;
3652 pen LemonChiffon;
36503653 pen Aquamarine;
3651 pen Plum;
36523654 pen Blue;
36533655 pen Gold;
36543656 pen Sienna;
3655 pen Lavender;
36563657 pen BlueViolet;
36573658 pen Goldenrod;
3659 pen ForestGreen;
3660 pen Lavender;
36583661 pen Aqua;
3659 pen ForestGreen;
36603662 pen Chartreuse;
36613663 pen NavajoWhite;
36623664 pen Tan;
36793681 pen Orange;
36803682 pen OrangeRed;
36813683 pen Fuchsia;
3682 pen Maroon;
36833684 pen PeachPuff;
3684 pen YellowGreen;
36853685 pen Honeydew;
36863686 pen Bisque;
3687 pen Maroon;
3688 pen YellowGreen;
36873689 pen RosyBrown;
36883690 pen Black;
36893691 pen Khaki;
36933695 pen DarkOrange;
36943696 pen LimeGreen;
36953697 pen Lime;
3698 pen OldLace;
36963699 pen Silver;
3697 pen OldLace;
36983700 pen Green;
36993701 pen GreenYellow;
3700 pen Violet;
37013702 pen DarkCyan;
37023703 pen FloralWhite;
37033704 pen DarkRed;
3705 pen Violet;
37043706 pen SandyBrown;
37053707 pen BlanchedAlmond;
37063708 pen PowderBlue;
3707 pen Thistle;
37083709 pen DarkGray;
37093710 pen DarkGreen;
37103711 pen DarkGoldenrod;
37113712 pen SkyBlue;
37123713 pen SeaGreen;
37133714 pen DarkViolet;
3714 pen DeepSkyBlue;
3715 pen Thistle;
37153716 pen Teal;
37163717 pen AliceBlue;
3718 pen DeepSkyBlue;
37173719 pen HotPink;
3718 pen DarkOrchid;
37193720 pen DodgerBlue;
37203721 pen SaddleBrown;
37213722 pen Tomato;
37223723 pen DarkKhaki;
3723 pen Cornsilk;
3724 pen DarkOrchid;
37243725 pen LightBlue;
37253726 pen LightCoral;
3727 pen Cornsilk;
37263728 pen LightCyan;
37273729 pen Yellow;
37283730 pen LightGreen;
37413743 pen LightSteelBlue;
37423744 pen LightYellow;
37433745 pen CornflowerBlue;
3744 pen Seashell;
37453746 pen rgbint(int r, int g, int b);
37463747 pen Coral;
37473748 pen MistyRose;
3749 pen Seashell;
37483750 pen DarkSalmon;
37493751 pen DarkSeaGreen;
37503752 pen RoyalBlue;
37513753 pen DarkSlateBlue;
37523754 pen DarkSlateGray;
37533755 pen Turquoise;
3754 pen GhostWhite;
00 %{!?_texmf: %define _texmf %(eval "echo `kpsewhich -expand-var '$TEXMFLOCAL'`")}
11
22 Name: asymptote
3 Version: 2.21
3 Version: 2.23
44 Release: 1%{?dist}
55 Summary: Descriptive vector graphics language
66
40984098 real S(real a)
40994099 {//Return the arclength from 0 to the angle 'a' (in degrees)
41004100 // given form the center of the ellipse.
4101 real gle = atan(el.a * Tan(a)/el.b)+
4101 real gle = atan(el.a * tan(radians(a))/el.b)+
41024102 pi * (((a%90 == 0 && a != 0) ? floor(a/90) - 1 : floor(a/90)) -
41034103 ((a%180 == 0) ? 0 : floor(a/180)) -
41044104 (a%360 == 0 ? floor(a/(360)) : 0));
234234 ticklabel OmitFormat(string s=defaultformat ... real[] x)
235235 {
236236 return new string(real v) {
237 int i=find(x == v);
238 return i < 0 ? format(s,v) : "";
237 string V=format(s,v);
238 for(real a : x)
239 if(format(s,a) == V) return "";
240 return V;
239241 };
240242 }
241243
148148 return all(b);
149149 }
150150
151 // Return the indices of consecutive true-element segments of bool[] b.
152 int[][] segment(bool[] b)
151 // Return the first and last indices of consecutive true-element segments
152 // of bool[] b.
153 int[][] segmentlimits(bool[] b)
153154 {
154155 int[][] segment;
155156 bool[] n=copy(b);
158159 int[] edge=(b != n) ? sequence(1,b.length) : null;
159160 edge.insert(0,0);
160161 int stop=edge[0];
161 for(int i=0; i < edge.length-1;) {
162 for(int i=1; i < edge.length; ++i) {
162163 int start=stop;
163 stop=edge[++i];
164 stop=edge[i];
164165 if(b[start])
165 segment.push(sequence(start,stop-1));
166 segment.push(new int[] {start,stop-1});
166167 }
167168 return segment;
169 }
170
171 // Return the indices of consecutive true-element segments of bool[] b.
172 int[][] segment(bool[] b)
173 {
174 int[][] S=segmentlimits(b);
175 return sequence(new int[](int i) {
176 return sequence(S[i][0],S[i][1]);
177 },S[0].length);
168178 }
169179
170180 // If the sorted array a does not contain x, insert it sequentially,
12491249 }
12501250
12511251 void axialshade(picture pic=currentpicture, path[] g, bool stroke=false,
1252 pen pena, pair a, pen penb, pair b, bool copy=true)
1252 pen pena, pair a, bool extenda=true,
1253 pen penb, pair b, bool extendb=true, bool copy=true)
12531254 {
12541255 if(copy)
12551256 g=copy(g);
12561257 pic.add(new void(frame f, transform t) {
1257 axialshade(f,t*g,stroke,pena,t*a,penb,t*b,false);
1258 axialshade(f,t*g,stroke,pena,t*a,extenda,penb,t*b,extendb,false);
12581259 },true);
12591260 pic.addPath(g);
12601261 }
12611262
12621263 void radialshade(picture pic=currentpicture, path[] g, bool stroke=false,
1263 pen pena, pair a, real ra, pen penb, pair b, real rb,
1264 bool copy=true)
1264 pen pena, pair a, real ra, bool extenda=true,
1265 pen penb, pair b, real rb, bool extendb=true, bool copy=true)
12651266 {
12661267 if(copy)
12671268 g=copy(g);
12691270 pair A=t*a, B=t*b;
12701271 real RA=abs(t*(a+ra)-A);
12711272 real RB=abs(t*(b+rb)-B);
1272 radialshade(f,t*g,stroke,pena,A,RA,penb,B,RB,false);
1273 radialshade(f,t*g,stroke,pena,A,RA,extenda,penb,B,RB,extendb,false);
12731274 },true);
12741275 pic.addPath(g);
12751276 }
7878 triple[] position=light.position;
7979 if(invisible((pen) m)) return invisible;
8080 if(position.length == 0) return m.diffuse();
81 normal=unit(T*normal);
81 normal=unit(transpose(inverse(shiftless(T)))*normal);
8282 if(settings.twosided) normal *= sgn(normal.z);
8383 real s=m.shininess*128;
8484 real[] Diffuse=rgba(m.diffuse());
320320 Si[j]=t*si[j];
321321 }
322322
323 transform3 t0=shiftless(t);
324 for(int i=0; i < s.normals.length; ++i)
325 S.normals[i]=t0*s.normals[i];
323 if(s.normals.length > 0) {
324 transform3 t0=shiftless(t);
325 t0=determinant(t0) == 0 ? identity4 : transpose(inverse(t0));
326 for(int i=0; i < s.normals.length; ++i)
327 S.normals[i]=t0*s.normals[i];
328 }
326329
327330 S.colors=copy(s.colors);
328331 S.planar=s.planar;
154154 return triple(right,top,upper);
155155 }
156156
157 // transform bbox3 by 4x4 column-major matrix
157 // transform bbox3 by 4x4 matrix
158158 void transform(const double* m)
159159 {
160160 const double xmin = left;
324324 ">=" {DEFSYMBOL(SYM_GE); return GE; }
325325 "&&" {DEFSYMBOL(SYM_CAND); return CAND; }
326326 "||" {DEFSYMBOL(SYM_COR); return COR; }
327 "!" {DEFSYMBOL(SYM_LOGNOT); return LOGNOT; }
327 "!" {DEFSYMBOL(SYM_LOGNOT); return OPERATOR; }
328328 "^^" {DEFSYMBOL(SYM_CARETS); return CARETS; }
329329 "::" {DEFSYMBOL(SYM_COLONS); return COLONS; }
330330 "++" {DEFSYMBOL(SYM_INCR); return INCR; }
0 /* A Bison parser, made by GNU Bison 2.5. */
0 /* A Bison parser, made by GNU Bison 2.6.1. */
11
22 /* Bison implementation for Yacc-like parsers in C
33
4 Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
4 Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
55
66 This program is free software: you can redistribute it and/or modify
77 it under the terms of the GNU General Public License as published by
4343 #define YYBISON 1
4444
4545 /* Bison version. */
46 #define YYBISON_VERSION "2.5"
46 #define YYBISON_VERSION "2.6.1"
4747
4848 /* Skeleton name. */
4949 #define YYSKELETON_NAME "yacc.c"
5757 /* Pull parsers. */
5858 #define YYPULL 1
5959
60 /* Using locations. */
61 #define YYLSP_NEEDED 0
6260
6361
6462
6563 /* Copy the first part of user declarations. */
66
67 /* Line 268 of yacc.c */
64 /* Line 336 of yacc.c */
6865 #line 1 "camp.y"
6966
7067 /*****
124121 using sym::symbol;
125122 using mem::string;
126123
127
128 /* Line 268 of yacc.c */
129 #line 131 "camp.tab.c"
130
131 /* Enabling traces. */
132 #ifndef YYDEBUG
133 # define YYDEBUG 1
134 #endif
124 /* Line 336 of yacc.c */
125 #line 127 "camp.tab.c"
126
127 # ifndef YY_NULL
128 # if defined __cplusplus && 201103L <= __cplusplus
129 # define YY_NULL nullptr
130 # else
131 # define YY_NULL 0
132 # endif
133 # endif
135134
136135 /* Enabling verbose error messages. */
137136 #ifdef YYERROR_VERBOSE
141140 # define YYERROR_VERBOSE 0
142141 #endif
143142
144 /* Enabling the token table. */
145 #ifndef YYTOKEN_TABLE
146 # define YYTOKEN_TABLE 0
147 #endif
148
143 /* In a future release of Bison, this section will be replaced
144 by #include "camp.tab.h". */
145 #ifndef YY_CAMP_TAB_H
146 # define YY_CAMP_TAB_H
147 /* Enabling traces. */
148 #ifndef YYDEBUG
149 # define YYDEBUG 1
150 #endif
151 #if YYDEBUG
152 extern int yydebug;
153 #endif
149154
150155 /* Tokens. */
151156 #ifndef YYTOKENTYPE
175180 GT = 277,
176181 GE = 278,
177182 CARETS = 279,
178 LOGNOT = 280,
179 OPERATOR = 281,
180 LOOSE = 282,
181 ASSIGN = 283,
182 DIRTAG = 284,
183 JOIN_PREC = 285,
184 AND = 286,
185 ELLIPSIS = 287,
186 ACCESS = 288,
187 UNRAVEL = 289,
188 IMPORT = 290,
189 INCLUDE = 291,
190 FROM = 292,
191 QUOTE = 293,
192 STRUCT = 294,
193 TYPEDEF = 295,
194 NEW = 296,
195 IF = 297,
196 ELSE = 298,
197 WHILE = 299,
198 DO = 300,
199 FOR = 301,
200 BREAK = 302,
201 CONTINUE = 303,
202 RETURN_ = 304,
203 THIS = 305,
204 EXPLICIT = 306,
205 GARBAGE = 307,
206 LIT = 308,
207 STRING = 309,
208 PERM = 310,
209 MODIFIER = 311,
210 UNARY = 312,
211 EXP_IN_PARENS_RULE = 313
183 OPERATOR = 280,
184 LOOSE = 281,
185 ASSIGN = 282,
186 DIRTAG = 283,
187 JOIN_PREC = 284,
188 AND = 285,
189 ELLIPSIS = 286,
190 ACCESS = 287,
191 UNRAVEL = 288,
192 IMPORT = 289,
193 INCLUDE = 290,
194 FROM = 291,
195 QUOTE = 292,
196 STRUCT = 293,
197 TYPEDEF = 294,
198 NEW = 295,
199 IF = 296,
200 ELSE = 297,
201 WHILE = 298,
202 DO = 299,
203 FOR = 300,
204 BREAK = 301,
205 CONTINUE = 302,
206 RETURN_ = 303,
207 THIS = 304,
208 EXPLICIT = 305,
209 GARBAGE = 306,
210 LIT = 307,
211 STRING = 308,
212 PERM = 309,
213 MODIFIER = 310,
214 UNARY = 311,
215 EXP_IN_PARENS_RULE = 312
212216 };
213217 #endif
214
215218
216219
217220 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
218221 typedef union YYSTYPE
219222 {
220
221 /* Line 293 of yacc.c */
223 /* Line 350 of yacc.c */
222224 #line 60 "camp.y"
223225
224226 position pos;
267269 absyntax::formals *fls;
268270
269271
270
271 /* Line 293 of yacc.c */
272 #line 274 "camp.tab.c"
272 /* Line 350 of yacc.c */
273 #line 275 "camp.tab.c"
273274 } YYSTYPE;
274275 # define YYSTYPE_IS_TRIVIAL 1
275276 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
276277 # define YYSTYPE_IS_DECLARED 1
277278 #endif
278279
280 extern YYSTYPE yylval;
281
282 #ifdef YYPARSE_PARAM
283 #if defined __STDC__ || defined __cplusplus
284 int yyparse (void *YYPARSE_PARAM);
285 #else
286 int yyparse ();
287 #endif
288 #else /* ! YYPARSE_PARAM */
289 #if defined __STDC__ || defined __cplusplus
290 int yyparse (void);
291 #else
292 int yyparse ();
293 #endif
294 #endif /* ! YYPARSE_PARAM */
295
296 #endif /* !YY_CAMP_TAB_H */
279297
280298 /* Copy the second part of user declarations. */
281299
282
283 /* Line 343 of yacc.c */
284 #line 286 "camp.tab.c"
300 /* Line 353 of yacc.c */
301 #line 303 "camp.tab.c"
285302
286303 #ifdef short
287304 # undef short
387404 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
388405 || defined __cplusplus || defined _MSC_VER)
389406 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
407 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
390408 # ifndef EXIT_SUCCESS
391409 # define EXIT_SUCCESS 0
392410 # endif
478496 #endif
479497
480498 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
481 /* Copy COUNT objects from FROM to TO. The source and destination do
499 /* Copy COUNT objects from SRC to DST. The source and destination do
482500 not overlap. */
483501 # ifndef YYCOPY
484502 # if defined __GNUC__ && 1 < __GNUC__
485 # define YYCOPY(To, From, Count) \
486 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
503 # define YYCOPY(Dst, Src, Count) \
504 __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
487505 # else
488 # define YYCOPY(To, From, Count) \
489 do \
490 { \
491 YYSIZE_T yyi; \
492 for (yyi = 0; yyi < (Count); yyi++) \
493 (To)[yyi] = (From)[yyi]; \
494 } \
506 # define YYCOPY(Dst, Src, Count) \
507 do \
508 { \
509 YYSIZE_T yyi; \
510 for (yyi = 0; yyi < (Count); yyi++) \
511 (Dst)[yyi] = (Src)[yyi]; \
512 } \
495513 while (YYID (0))
496514 # endif
497515 # endif
500518 /* YYFINAL -- State number of the termination state. */
501519 #define YYFINAL 3
502520 /* YYLAST -- Last index in YYTABLE. */
503 #define YYLAST 1917
521 #define YYLAST 1860
504522
505523 /* YYNTOKENS -- Number of terminals. */
506 #define YYNTOKENS 76
524 #define YYNTOKENS 75
507525 /* YYNNTS -- Number of nonterminals. */
508526 #define YYNNTS 50
509527 /* YYNRULES -- Number of rules. */
513531
514532 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
515533 #define YYUNDEFTOK 2
516 #define YYMAXUTOK 313
534 #define YYMAXUTOK 312
517535
518536 #define YYTRANSLATE(YYX) \
519537 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
525543 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
526544 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
527545 2, 2, 2, 2, 2, 2, 2, 29, 2, 2,
528 42, 43, 27, 25, 45, 26, 44, 28, 2, 2,
529 2, 2, 2, 2, 2, 2, 2, 2, 36, 48,
530 2, 2, 2, 35, 2, 2, 2, 2, 2, 2,
546 41, 42, 27, 25, 44, 26, 43, 28, 2, 2,
547 2, 2, 2, 2, 2, 2, 2, 2, 35, 47,
548 2, 2, 2, 34, 2, 2, 2, 2, 2, 2,
531549 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
532550 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
533 2, 46, 2, 47, 30, 2, 2, 2, 2, 2,
551 2, 45, 2, 46, 30, 2, 2, 2, 2, 2,
534552 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
535553 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
536 2, 2, 2, 40, 2, 41, 2, 2, 2, 2,
554 2, 2, 2, 39, 2, 40, 2, 2, 2, 2,
537555 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
538556 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
539557 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
549567 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
550568 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
551569 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
552 31, 32, 33, 34, 37, 38, 39, 49, 50, 51,
570 31, 32, 33, 36, 37, 38, 48, 49, 50, 51,
553571 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
554572 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
555 72, 73, 74, 75
573 72, 73, 74
556574 };
557575
558576 #if YYDEBUG
585603 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
586604 static const yytype_int8 yyrhs[] =
587605 {
588 77, 0, -1, 78, -1, -1, 78, 81, -1, -1,
589 79, 81, -1, 3, -1, 80, 44, 3, -1, 29,
590 -1, 83, -1, 119, -1, 82, 83, -1, 82, 119,
591 -1, 73, -1, 72, -1, 82, 73, -1, 82, 72,
592 -1, 89, -1, 106, -1, 107, -1, 50, 88, 48,
593 -1, 54, 80, 51, 85, 48, -1, 54, 80, 51,
594 27, 48, -1, 51, 80, 48, -1, 54, 86, 50,
595 85, 48, -1, 54, 86, 50, 27, 48, -1, 52,
596 87, 48, -1, 53, 3, 48, -1, 53, 71, 48,
597 -1, 3, -1, 3, 3, 3, -1, 84, -1, 85,
598 45, 84, -1, 3, -1, 71, -1, 3, -1, 86,
599 3, 3, -1, 87, -1, 88, 45, 87, -1, 90,
600 48, -1, 91, 95, -1, 92, -1, 80, 93, -1,
601 80, -1, 46, 47, -1, 93, 46, 47, -1, 46,
602 113, 47, -1, 94, 46, 113, 47, -1, 96, -1,
603 95, 45, 96, -1, 97, -1, 97, 34, 98, -1,
604 3, -1, 3, 93, -1, 3, 42, 43, -1, 3,
605 42, 103, 43, -1, 113, -1, 100, -1, 40, 79,
606 41, -1, 40, 41, -1, 40, 49, 98, 41, -1,
607 40, 101, 41, -1, 40, 101, 49, 98, 41, -1,
608 45, -1, 102, -1, 102, 45, -1, 98, -1, 102,
609 45, 98, -1, 105, -1, 49, 105, -1, 103, 45,
610 105, -1, 103, 49, 105, -1, 68, -1, -1, 104,
611 91, -1, 104, 91, 97, -1, 104, 91, 97, 34,
612 98, -1, 104, 91, 3, 97, -1, 104, 91, 3,
613 97, 34, 98, -1, 91, 3, 42, 43, 121, -1,
614 91, 3, 42, 103, 43, 121, -1, 56, 3, 99,
615 -1, 57, 89, -1, 36, -1, 113, 36, -1, 36,
616 113, -1, 113, 36, 113, -1, 109, 44, 3, -1,
617 80, 46, 113, 47, -1, 109, 46, 113, 47, -1,
618 80, 46, 108, 47, -1, 109, 46, 108, 47, -1,
619 80, 42, 43, -1, 80, 42, 111, 43, -1, 109,
620 42, 43, -1, 109, 42, 111, 43, -1, 42, 113,
621 43, -1, 42, 80, 43, -1, 67, -1, 113, -1,
622 3, 34, 113, -1, 110, -1, 49, 110, -1, 111,
623 45, 110, -1, 111, 49, 110, -1, 113, 45, 113,
624 -1, 112, 45, 113, -1, 80, -1, 109, -1, 70,
625 -1, 71, -1, 70, 113, -1, 42, 80, 43, 113,
626 -1, 42, 80, 93, 43, 113, -1, 25, 113, -1,
627 26, 113, -1, 31, 113, -1, 113, 25, 113, -1,
628 113, 26, 113, -1, 113, 27, 113, -1, 113, 28,
629 113, -1, 113, 29, 113, -1, 113, 30, 113, -1,
630 113, 20, 113, -1, 113, 21, 113, -1, 113, 22,
631 113, -1, 113, 23, 113, -1, 113, 18, 113, -1,
632 113, 19, 113, -1, 113, 15, 113, -1, 113, 14,
633 113, -1, 113, 24, 113, -1, 113, 17, 113, -1,
634 113, 16, 113, -1, 113, 32, 113, -1, 113, 8,
635 113, -1, 58, 92, -1, 58, 92, 94, -1, 58,
636 92, 94, 93, -1, 58, 92, 93, -1, 58, 92,
637 93, 100, -1, 58, 92, 42, 43, 121, -1, 58,
638 92, 93, 42, 43, 121, -1, 58, 92, 42, 103,
639 43, 121, -1, 58, 92, 93, 42, 103, 43, 121,
640 -1, 113, 35, 113, 36, 113, -1, 113, 34, 113,
641 -1, 42, 112, 43, -1, 113, 114, 113, -1, 113,
642 115, -1, 8, 113, -1, 7, 113, -1, 113, 8,
643 -1, 113, 4, 113, -1, 55, 40, 78, 41, -1,
644 7, -1, 116, -1, 115, 116, -1, 116, 115, -1,
645 115, 116, 115, -1, 40, 13, 113, 41, -1, 40,
646 113, 41, -1, 40, 113, 45, 113, 41, -1, 40,
647 113, 45, 113, 45, 113, 41, -1, 5, -1, 5,
648 117, 5, -1, 5, 118, 5, -1, 6, -1, 9,
649 -1, 11, 113, -1, 11, 113, 39, 113, -1, 11,
650 12, 113, -1, 11, 12, 113, 39, 113, -1, 10,
651 113, -1, 10, 113, 39, 113, -1, 48, -1, 121,
652 -1, 120, 48, -1, 59, 42, 113, 43, 119, -1,
653 59, 42, 113, 43, 119, 60, 119, -1, 61, 42,
654 113, 43, 119, -1, 62, 119, 61, 42, 113, 43,
655 48, -1, 63, 42, 122, 48, 123, 48, 124, 43,
656 119, -1, 63, 42, 91, 3, 36, 113, 43, 119,
657 -1, 64, 48, -1, 65, 48, -1, 66, 48, -1,
658 66, 113, 48, -1, 113, -1, 99, -1, -1, 125,
659 -1, 90, -1, -1, 113, -1, -1, 125, -1, 120,
660 -1, 125, 45, 120, -1
606 76, 0, -1, 77, -1, -1, 77, 80, -1, -1,
607 78, 80, -1, 3, -1, 79, 43, 3, -1, 29,
608 -1, 82, -1, 118, -1, 81, 82, -1, 81, 118,
609 -1, 72, -1, 71, -1, 81, 72, -1, 81, 71,
610 -1, 88, -1, 105, -1, 106, -1, 49, 87, 47,
611 -1, 53, 79, 50, 84, 47, -1, 53, 79, 50,
612 27, 47, -1, 50, 79, 47, -1, 53, 85, 49,
613 84, 47, -1, 53, 85, 49, 27, 47, -1, 51,
614 86, 47, -1, 52, 3, 47, -1, 52, 70, 47,
615 -1, 3, -1, 3, 3, 3, -1, 83, -1, 84,
616 44, 83, -1, 3, -1, 70, -1, 3, -1, 85,
617 3, 3, -1, 86, -1, 87, 44, 86, -1, 89,
618 47, -1, 90, 94, -1, 91, -1, 79, 92, -1,
619 79, -1, 45, 46, -1, 92, 45, 46, -1, 45,
620 112, 46, -1, 93, 45, 112, 46, -1, 95, -1,
621 94, 44, 95, -1, 96, -1, 96, 33, 97, -1,
622 3, -1, 3, 92, -1, 3, 41, 42, -1, 3,
623 41, 102, 42, -1, 112, -1, 99, -1, 39, 78,
624 40, -1, 39, 40, -1, 39, 48, 97, 40, -1,
625 39, 100, 40, -1, 39, 100, 48, 97, 40, -1,
626 44, -1, 101, -1, 101, 44, -1, 97, -1, 101,
627 44, 97, -1, 104, -1, 48, 104, -1, 102, 44,
628 104, -1, 102, 48, 104, -1, 67, -1, -1, 103,
629 90, -1, 103, 90, 96, -1, 103, 90, 96, 33,
630 97, -1, 103, 90, 3, 96, -1, 103, 90, 3,
631 96, 33, 97, -1, 90, 3, 41, 42, 120, -1,
632 90, 3, 41, 102, 42, 120, -1, 55, 3, 98,
633 -1, 56, 88, -1, 35, -1, 112, 35, -1, 35,
634 112, -1, 112, 35, 112, -1, 108, 43, 3, -1,
635 79, 45, 112, 46, -1, 108, 45, 112, 46, -1,
636 79, 45, 107, 46, -1, 108, 45, 107, 46, -1,
637 79, 41, 42, -1, 79, 41, 110, 42, -1, 108,
638 41, 42, -1, 108, 41, 110, 42, -1, 41, 112,
639 42, -1, 41, 79, 42, -1, 66, -1, 112, -1,
640 3, 33, 112, -1, 109, -1, 48, 109, -1, 110,
641 44, 109, -1, 110, 48, 109, -1, 112, 44, 112,
642 -1, 111, 44, 112, -1, 79, -1, 108, -1, 69,
643 -1, 70, -1, 69, 112, -1, 41, 79, 42, 112,
644 -1, 41, 79, 92, 42, 112, -1, 25, 112, -1,
645 26, 112, -1, 31, 112, -1, 112, 25, 112, -1,
646 112, 26, 112, -1, 112, 27, 112, -1, 112, 28,
647 112, -1, 112, 29, 112, -1, 112, 30, 112, -1,
648 112, 20, 112, -1, 112, 21, 112, -1, 112, 22,
649 112, -1, 112, 23, 112, -1, 112, 18, 112, -1,
650 112, 19, 112, -1, 112, 15, 112, -1, 112, 14,
651 112, -1, 112, 24, 112, -1, 112, 17, 112, -1,
652 112, 16, 112, -1, 112, 31, 112, -1, 112, 8,
653 112, -1, 57, 91, -1, 57, 91, 93, -1, 57,
654 91, 93, 92, -1, 57, 91, 92, -1, 57, 91,
655 92, 99, -1, 57, 91, 41, 42, 120, -1, 57,
656 91, 92, 41, 42, 120, -1, 57, 91, 41, 102,
657 42, 120, -1, 57, 91, 92, 41, 102, 42, 120,
658 -1, 112, 34, 112, 35, 112, -1, 112, 33, 112,
659 -1, 41, 111, 42, -1, 112, 113, 112, -1, 112,
660 114, -1, 8, 112, -1, 7, 112, -1, 112, 8,
661 -1, 112, 4, 112, -1, 54, 39, 77, 40, -1,
662 7, -1, 115, -1, 114, 115, -1, 115, 114, -1,
663 114, 115, 114, -1, 39, 13, 112, 40, -1, 39,
664 112, 40, -1, 39, 112, 44, 112, 40, -1, 39,
665 112, 44, 112, 44, 112, 40, -1, 5, -1, 5,
666 116, 5, -1, 5, 117, 5, -1, 6, -1, 9,
667 -1, 11, 112, -1, 11, 112, 38, 112, -1, 11,
668 12, 112, -1, 11, 12, 112, 38, 112, -1, 10,
669 112, -1, 10, 112, 38, 112, -1, 47, -1, 120,
670 -1, 119, 47, -1, 58, 41, 112, 42, 118, -1,
671 58, 41, 112, 42, 118, 59, 118, -1, 60, 41,
672 112, 42, 118, -1, 61, 118, 60, 41, 112, 42,
673 47, -1, 62, 41, 121, 47, 122, 47, 123, 42,
674 118, -1, 62, 41, 90, 3, 35, 112, 42, 118,
675 -1, 63, 47, -1, 64, 47, -1, 65, 47, -1,
676 65, 112, 47, -1, 112, -1, 98, -1, -1, 124,
677 -1, 89, -1, -1, 112, -1, -1, 124, -1, 119,
678 -1, 124, 44, 119, -1
661679 };
662680
663681 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
664682 static const yytype_uint16 yyrline[] =
665683 {
666 0, 192, 192, 196, 197, 202, 203, 208, 209, 210,
667 215, 216, 217, 219, 224, 225, 226, 228, 233, 234,
668 235, 236, 238, 240, 242, 243, 245, 247, 249, 250,
669 255, 257, 261, 262, 267, 268, 273, 275, 279, 280,
670 285, 289, 293, 294, 298, 302, 303, 307, 308, 313,
671 314, 319, 320, 325, 326, 327, 329, 334, 335, 339,
672 344, 345, 347, 349, 354, 355, 356, 360, 362, 367,
673 368, 369, 371, 376, 377, 381, 383, 385, 388, 391,
674 397, 399, 404, 405, 409, 410, 411, 412, 416, 417,
675 419, 420, 422, 423, 426, 430, 431, 433, 435, 437,
676 441, 442, 446, 447, 449, 451, 457, 458, 462, 463,
677 464, 465, 467, 468, 470, 472, 474, 476, 477, 478,
678 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
679 489, 490, 491, 492, 493, 494, 495, 496, 498, 500,
680 502, 504, 506, 508, 513, 515, 520, 522, 523, 524,
681 526, 532, 534, 537, 539, 540, 547, 548, 550, 553,
682 556, 562, 563, 564, 567, 573, 574, 576, 578, 579,
683 583, 585, 588, 591, 597, 598, 603, 604, 605, 606,
684 608, 610, 612, 614, 616, 618, 619, 620, 621, 625,
685 629, 633, 634, 635, 639, 640, 644, 645, 649, 650
684 0, 191, 191, 195, 196, 201, 202, 207, 208, 209,
685 214, 215, 216, 218, 223, 224, 225, 227, 232, 233,
686 234, 235, 237, 239, 241, 242, 244, 246, 248, 249,
687 254, 256, 260, 261, 266, 267, 272, 274, 278, 279,
688 284, 288, 292, 293, 297, 301, 302, 306, 307, 312,
689 313, 318, 319, 324, 325, 326, 328, 333, 334, 338,
690 343, 344, 346, 348, 353, 354, 355, 359, 361, 366,
691 367, 368, 370, 375, 376, 380, 382, 384, 387, 390,
692 396, 398, 403, 404, 408, 409, 410, 411, 415, 416,
693 418, 419, 421, 422, 425, 429, 430, 432, 434, 436,
694 440, 441, 445, 446, 448, 450, 456, 457, 461, 462,
695 463, 464, 466, 467, 469, 471, 473, 475, 476, 477,
696 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
697 488, 489, 490, 491, 492, 493, 494, 495, 497, 499,
698 501, 503, 505, 507, 512, 514, 519, 521, 522, 523,
699 525, 531, 533, 536, 538, 539, 546, 547, 549, 552,
700 555, 561, 562, 563, 566, 572, 573, 575, 577, 578,
701 582, 584, 587, 590, 596, 597, 602, 603, 604, 605,
702 607, 609, 611, 613, 615, 617, 618, 619, 620, 624,
703 628, 632, 633, 634, 638, 639, 643, 644, 648, 649
686704 };
687705 #endif
688706
689 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
707 #if YYDEBUG || YYERROR_VERBOSE || 0
690708 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
691709 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
692710 static const char *const yytname[] =
694712 "$end", "error", "$undefined", "ID", "SELFOP", "DOTS", "COLONS",
695713 "DASHES", "INCR", "LONGDASH", "CONTROLS", "TENSION", "ATLEAST", "CURL",
696714 "COR", "CAND", "BAR", "AMPERSAND", "EQ", "NEQ", "LT", "LE", "GT", "GE",
697 "CARETS", "'+'", "'-'", "'*'", "'/'", "'%'", "'^'", "LOGNOT", "OPERATOR",
698 "LOOSE", "ASSIGN", "'?'", "':'", "DIRTAG", "JOIN_PREC", "AND", "'{'",
699 "'}'", "'('", "')'", "'.'", "','", "'['", "']'", "';'", "ELLIPSIS",
700 "ACCESS", "UNRAVEL", "IMPORT", "INCLUDE", "FROM", "QUOTE", "STRUCT",
701 "TYPEDEF", "NEW", "IF", "ELSE", "WHILE", "DO", "FOR", "BREAK",
702 "CONTINUE", "RETURN_", "THIS", "EXPLICIT", "GARBAGE", "LIT", "STRING",
703 "PERM", "MODIFIER", "UNARY", "EXP_IN_PARENS_RULE", "$accept", "file",
715 "CARETS", "'+'", "'-'", "'*'", "'/'", "'%'", "'^'", "OPERATOR", "LOOSE",
716 "ASSIGN", "'?'", "':'", "DIRTAG", "JOIN_PREC", "AND", "'{'", "'}'",
717 "'('", "')'", "'.'", "','", "'['", "']'", "';'", "ELLIPSIS", "ACCESS",
718 "UNRAVEL", "IMPORT", "INCLUDE", "FROM", "QUOTE", "STRUCT", "TYPEDEF",
719 "NEW", "IF", "ELSE", "WHILE", "DO", "FOR", "BREAK", "CONTINUE",
720 "RETURN_", "THIS", "EXPLICIT", "GARBAGE", "LIT", "STRING", "PERM",
721 "MODIFIER", "UNARY", "EXP_IN_PARENS_RULE", "$accept", "file",
704722 "fileblock", "bareblock", "name", "runnable", "modifiers", "dec",
705723 "idpair", "idpairlist", "strid", "stridpair", "stridpairlist", "vardec",
706724 "barevardec", "type", "celltype", "dims", "dimexps", "decidlist",
708726 "varinits", "formals", "explicitornot", "formal", "fundec", "typedec",
709727 "slice", "value", "argument", "arglist", "tuple", "exp", "join", "dir",
710728 "basicjoin", "tension", "controls", "stm", "stmexp", "blockstm",
711 "forinit", "fortest", "forupdate", "stmexplist", 0
729 "forinit", "fortest", "forupdate", "stmexplist", YY_NULL
712730 };
713731 #endif
714732
720738 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
721739 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
722740 275, 276, 277, 278, 279, 43, 45, 42, 47, 37,
723 94, 280, 281, 282, 283, 63, 58, 284, 285, 286,
724 123, 125, 40, 41, 46, 44, 91, 93, 59, 287,
741 94, 280, 281, 282, 63, 58, 283, 284, 285, 123,
742 125, 40, 41, 46, 44, 91, 93, 59, 286, 287,
725743 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
726744 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
727 308, 309, 310, 311, 312, 313
745 308, 309, 310, 311, 312
728746 };
729747 # endif
730748
731749 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
732750 static const yytype_uint8 yyr1[] =
733751 {
734 0, 76, 77, 78, 78, 79, 79, 80, 80, 80,
735 81, 81, 81, 81, 82, 82, 82, 82, 83, 83,
736 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
737 84, 84, 85, 85, 86, 86, 87, 87, 88, 88,
738 89, 90, 91, 91, 92, 93, 93, 94, 94, 95,
739 95, 96, 96, 97, 97, 97, 97, 98, 98, 99,
740 100, 100, 100, 100, 101, 101, 101, 102, 102, 103,
741 103, 103, 103, 104, 104, 105, 105, 105, 105, 105,
742 106, 106, 107, 107, 108, 108, 108, 108, 109, 109,
743 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
744 110, 110, 111, 111, 111, 111, 112, 112, 113, 113,
745 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
746 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
747 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
748 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
749 113, 113, 113, 113, 113, 113, 114, 114, 114, 114,
750 114, 115, 115, 115, 115, 116, 116, 116, 116, 116,
751 117, 117, 117, 117, 118, 118, 119, 119, 119, 119,
752 119, 119, 119, 119, 119, 119, 119, 119, 119, 120,
753 121, 122, 122, 122, 123, 123, 124, 124, 125, 125
752 0, 75, 76, 77, 77, 78, 78, 79, 79, 79,
753 80, 80, 80, 80, 81, 81, 81, 81, 82, 82,
754 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
755 83, 83, 84, 84, 85, 85, 86, 86, 87, 87,
756 88, 89, 90, 90, 91, 92, 92, 93, 93, 94,
757 94, 95, 95, 96, 96, 96, 96, 97, 97, 98,
758 99, 99, 99, 99, 100, 100, 100, 101, 101, 102,
759 102, 102, 102, 103, 103, 104, 104, 104, 104, 104,
760 105, 105, 106, 106, 107, 107, 107, 107, 108, 108,
761 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
762 109, 109, 110, 110, 110, 110, 111, 111, 112, 112,
763 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
764 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
765 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
766 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
767 112, 112, 112, 112, 112, 112, 113, 113, 113, 113,
768 113, 114, 114, 114, 114, 115, 115, 115, 115, 115,
769 116, 116, 116, 116, 117, 117, 118, 118, 118, 118,
770 118, 118, 118, 118, 118, 118, 118, 118, 118, 119,
771 120, 121, 121, 121, 122, 122, 123, 123, 124, 124
754772 };
755773
756774 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
835853
836854 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
837855 STATE-NUM. */
838 #define YYPACT_NINF -283
856 #define YYPACT_NINF -282
839857 static const yytype_int16 yypact[] =
840858 {
841 -283, 36, 399, -283, -283, 885, 885, 885, 885, -283,
842 885, -283, 885, -283, 14, 17, 14, 16, 8, 23,
843 53, 17, 17, 31, 41, 541, 46, 50, 101, 684,
844 -283, 11, -283, -283, -283, 18, -283, 470, -283, -283,
845 111, 162, -283, -283, -283, -283, 237, 1547, -283, 157,
846 -283, 243, 196, 196, 196, 196, -283, 145, 148, 60,
847 1148, 211, -283, 234, -283, 85, 13, 208, 212, 213,
848 216, -21, 218, -283, 231, 138, -283, 269, 229, 49,
849 885, 885, 217, 885, -283, -283, -283, 963, 196, 233,
850 277, 627, 238, -283, -283, -283, -283, -283, 96, 241,
851 -283, 256, 641, 293, 698, 885, 34, -283, -283, 11,
852 -283, 885, 885, 885, 885, 885, 885, 885, 885, 885,
853 885, 885, 885, 885, 885, 885, 885, 885, 885, 885,
854 885, 754, 885, -283, 258, -283, 698, -283, -283, 11,
855 126, -283, 885, -283, 885, 296, 14, -283, -283, -283,
856 -283, -283, 38, 74, 328, -283, 254, 104, -14, 768,
857 105, 259, 1274, 1314, 260, -283, 303, -283, 261, 263,
858 -283, 276, -283, 895, -283, 117, 1547, -283, 885, -283,
859 264, 1000, 266, -10, 238, 269, 811, -283, 134, -283,
860 267, 1037, 1547, 885, 842, 307, 310, 195, 1765, 1793,
861 1821, 1849, 1877, 1877, 408, 408, 408, 408, 548, 265,
862 265, 196, 196, 196, 196, 479, 1547, 1510, 885, 1190,
863 195, 258, -283, -283, 885, 1547, 1547, -283, -283, 313,
864 270, -283, 199, 272, 207, -283, 0, 231, 253, -283,
865 184, 17, -283, 1074, 584, 112, -283, 768, 238, 541,
866 541, 885, 121, 885, 885, 885, -283, -283, 895, 895,
867 1547, -283, 885, -283, -283, 231, 189, -283, -283, -283,
868 1547, -283, -283, -283, 1582, 885, 1619, -283, -283, 885,
869 1434, -283, 885, -283, -283, 319, -283, 320, -283, -283,
870 -283, -283, 200, -283, -283, 231, 253, 253, 322, -283,
871 -283, -283, 811, -283, -1, 281, 231, 220, 1111, 268,
872 -283, 1354, 885, 1547, 279, -283, 1547, -283, -283, 1547,
873 -283, 231, 885, 1656, 885, 1729, -283, 1232, -283, -283,
874 -283, -283, -283, -283, 48, 295, 289, -283, 811, 811,
875 -283, 231, -283, 541, 284, 1394, 885, -283, 1693, 885,
876 1693, -283, 885, 304, 811, -283, 298, -283, -283, -283,
877 -283, 541, 294, 263, 1693, 1472, 811, -283, -283, -283,
878 541, -283, -283, -283
859 -282, 30, 398, -282, -282, 846, 846, 846, 846, -282,
860 846, -282, 846, -282, 13, 20, 13, 17, 8, 12,
861 53, 20, 20, 108, 126, 538, 131, 112, 143, 664,
862 -282, 11, -282, -282, -282, 60, -282, 468, -282, -282,
863 157, 190, -282, -282, -282, -282, 220, 1493, -282, 165,
864 -282, 228, 192, 192, 192, 192, 1821, 145, 191, 1,
865 1104, 226, -282, 232, -282, 51, 95, 198, 205, 211,
866 213, 19, 215, -282, 229, 137, -282, 273, 235, 105,
867 846, 846, 225, 846, -282, -282, -282, 924, 192, 218,
868 283, 607, 248, -282, -282, -282, -282, -282, 146, 250,
869 -282, 263, 637, 292, 694, 846, 245, -282, -282, 11,
870 -282, 846, 846, 846, 846, 846, 846, 846, 846, 846,
871 846, 846, 846, 846, 846, 846, 846, 846, 846, 846,
872 846, 724, 846, -282, 267, -282, 694, -282, -282, 11,
873 88, -282, 846, -282, 846, 305, 13, -282, -282, -282,
874 -282, -282, 37, 39, 328, -282, 264, 182, -21, 751,
875 49, 266, 1227, 1266, 268, -282, 309, -282, 269, 270,
876 -282, 282, -282, 857, -282, 103, 1493, -282, 846, -282,
877 272, 960, 275, -9, 248, 273, 793, -282, 113, -282,
878 276, 996, 1493, 846, 804, 315, 318, 300, 1705, 1732,
879 1759, 1786, 1813, 1813, 274, 274, 274, 274, 405, 262,
880 262, 192, 192, 192, 192, 1821, 1493, 1457, 846, 1145,
881 300, 267, -282, -282, 846, 1493, 1493, -282, -282, 329,
882 290, -282, 193, 291, 194, -282, -7, 229, 278, -282,
883 118, 20, -282, 1032, 580, 6, -282, 751, 248, 538,
884 538, 846, 44, 846, 846, 846, -282, -282, 857, 857,
885 1493, -282, 846, -282, -282, 229, 121, -282, -282, -282,
886 1493, -282, -282, -282, 1527, 846, 1563, -282, -282, 846,
887 1383, -282, 846, -282, -282, 337, -282, 338, -282, -282,
888 -282, -282, 135, -282, -282, 229, 278, 278, 340, -282,
889 -282, -282, 793, -282, -4, 302, 229, 176, 1068, 289,
890 -282, 1305, 846, 1493, 303, -282, 1493, -282, -282, 1493,
891 -282, 229, 846, 1599, 846, 1670, -282, 1186, -282, -282,
892 -282, -282, -282, -282, 16, 319, 316, -282, 793, 793,
893 -282, 229, -282, 538, 308, 1344, 846, -282, 1635, 846,
894 1635, -282, 846, 325, 793, -282, 320, -282, -282, -282,
895 -282, 538, 321, 270, 1635, 1420, 793, -282, -282, -282,
896 538, -282, -282, -282
879897 };
880898
881899 /* YYPGOTO[NTERM-NUM]. */
882900 static const yytype_int16 yypgoto[] =
883901 {
884 -283, -283, 273, -283, 10, 283, -283, 306, 54, 192,
885 330, -6, -283, 329, 275, -13, 333, -20, -283, -283,
886 167, -282, -210, 282, 202, -283, -283, -156, -283, -225,
887 -283, -283, 262, -283, -123, 271, -283, -5, -283, -125,
888 227, -283, -283, -19, -79, -163, -283, -283, -283, 19
902 -282, -282, 293, -282, 10, 307, -282, 333, 75, 212,
903 353, -6, -282, 351, 304, -13, 352, -20, -282, -282,
904 188, -281, -210, 322, 216, -282, -282, -154, -282, -225,
905 -282, -282, 298, -282, -123, 301, -282, -5, -282, -125,
906 271, -282, -282, -19, -79, -163, -282, -282, -282, 61
889907 };
890908
891909 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
895913 static const yytype_int16 yytable[] =
896914 {
897915 52, 53, 54, 55, 167, 56, 82, 60, 77, 222,
898 67, 70, 35, 294, 4, 92, 335, 61, 96, 68,
899 4, -44, 58, 90, 87, 66, 88, 266, 71, 237,
900 152, 75, 78, 265, 303, 238, 3, 9, 140, 238,
901 337, 229, 10, 291, 193, 194, 9, 35, 338, 238,
902 256, 157, 353, 12, 239, 92, 74, 90, 239, 160,
903 89, 148, 90, 73, 91, 230, 19, 35, 239, 22,
904 166, 332, 333, 80, 293, 162, 163, 229, 30, 62,
905 292, 31, 32, 81, 176, 62, 181, 69, 83, 307,
906 236, 158, 336, 35, 156, 159, 283, 176, 84, 191,
907 192, 233, 320, 141, 197, 142, 198, 199, 200, 201,
916 67, 70, 35, 294, 4, 92, 61, 335, 96, 157,
917 68, 237, 58, 4, 87, 66, 88, 238, 71, 266,
918 3, 75, 78, 265, 303, 291, 337, 9, 140, 238,
919 229, 238, 229, 141, 338, 142, 239, 35, 306, 9,
920 256, 73, 12, 353, 238, 92, 74, 236, 239, 160,
921 239, 156, 90, -44, 230, 19, 233, 35, 22, 152,
922 166, 332, 333, 239, 293, 162, 163, 30, 62, 312,
923 31, 32, 292, 62, 176, 236, 181, 69, 244, 156,
924 245, 307, 336, 35, 182, 146, 283, 176, 147, 191,
925 192, 89, 320, 90, 197, 91, 198, 199, 200, 201,
908926 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
909927 212, 213, 214, 215, 216, 217, 219, 220, 356, 357,
910 146, 181, 331, 147, 223, 317, 318, 225, 183, 226,
911 228, 248, 156, 340, 367, 244, 236, 245, 4, 85,
912 156, 182, 5, 6, 243, 306, 372, 312, 347, 97,
913 257, 238, 258, 236, 35, 98, 259, 156, 176, 224,
914 7, 8, 182, 260, 9, 315, 10, 271, 358, 258,
915 239, 270, 90, 259, 156, 11, 137, 12, 274, 276,
916 89, 139, 90, 13, 91, 14, 15, 16, 17, 18,
917 19, 20, 21, 22, 23, 135, 24, 25, 26, 27,
918 28, 29, 30, 280, -34, 31, 32, 33, 34, 284,
919 122, 123, 124, 125, 126, 127, 127, 295, 298, 296,
920 309, 310, 321, 297, 296, 131, 171, 145, 297, 270,
921 5, 6, 308, 330, 287, 296, 311, 288, 313, 297,
922 316, 75, 287, 176, 176, 290, 149, 319, 7, 8,
923 150, 151, 9, 341, 10, 296, -34, 167, 153, 297,
924 323, 11, 157, 90, 325, 12, 172, 327, 164, 102,
925 177, 103, 173, 104, 182, 89, 185, 90, 19, 136,
926 186, 22, 124, 125, 126, 127, 189, 270, 131, 227,
927 30, 179, 251, 31, 32, 247, 252, 345, 254, 253,
928 255, 261, 277, 264, 272, 278, 285, 348, 286, 350,
929 289, 239, 328, 229, 359, 334, 339, 346, 343, 354,
930 355, 4, 360, 270, 270, 5, 6, 370, 366, 368,
931 138, 329, 369, 95, 364, 234, 154, 365, 72, 270,
932 76, 373, 267, 7, 8, 79, 155, 9, 165, 10,
933 221, 270, 246, 0, 0, 363, 190, 0, 11, 235,
934 12, 0, 0, 188, 0, 0, 13, 0, 14, 15,
935 16, 17, 18, 19, 20, 21, 22, 23, 0, 24,
936 25, 26, 27, 28, 29, 30, 0, 0, 31, 32,
937 33, 34, 4, 0, 0, 0, 5, 6, 0, 0,
938 0, 0, 0, 106, 107, 108, 109, 110, 0, 0,
939 0, 0, 0, 0, 7, 8, 0, 0, 9, 0,
940 10, 0, 121, 122, 123, 124, 125, 126, 127, 11,
941 128, 12, 0, 0, 0, 0, 0, 13, 131, 14,
942 15, 16, 17, 18, 19, 20, 21, 22, 23, 0,
943 24, 25, 26, 27, 28, 29, 30, 0, 0, 31,
944 32, 33, 34, 4, 0, 0, 0, 5, 6, 0,
945 0, 0, 0, 0, 106, 107, 108, 109, 110, 0,
946 0, 0, 0, 0, 0, 7, 8, 0, 0, 9,
947 0, 10, 0, 121, 122, 123, 124, 125, 126, 127,
948 11, 0, 12, 0, 0, 0, 0, 0, 13, 131,
949 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
950 0, 24, 25, 26, 27, 28, 29, 30, 0, 0,
951 31, 32, 93, 94, 4, 0, 0, 0, 5, 6,
952 0, 0, 0, 106, 107, 108, 109, 110, 0, 0,
953 0, 0, 0, 0, 0, 0, 7, 8, 0, 0,
954 9, 0, 10, 122, 123, 124, 125, 126, 127, 0,
955 0, 11, 0, 12, 0, 0, 0, 4, 131, 13,
956 0, 5, 6, 0, 0, 0, 19, 0, 0, 22,
957 23, 0, 24, 25, 26, 27, 28, 29, 30, 7,
958 8, 31, 32, 9, 0, 10, 0, 0, 0, 0,
959 0, 0, 0, 0, 244, 300, 12, 0, 0, 301,
960 4, 0, 0, 302, 5, 6, 0, 0, 0, 19,
961 0, 0, 22, 0, 171, 0, 0, 0, 5, 6,
962 0, 30, 7, 8, 31, 32, 9, 0, 10, 0,
963 0, 0, 0, 178, 0, 0, 7, 8, 0, 12,
964 9, 0, 10, 0, 179, 0, 0, 0, 0, 0,
965 0, 0, 19, 12, 187, 22, 0, 4, 0, 0,
966 173, 5, 6, 0, 30, 0, 19, 31, 32, 22,
967 0, 4, 0, 0, 0, 5, 6, 0, 30, 7,
968 8, 31, 32, 9, 0, 10, 0, 0, 0, 0,
969 0, 0, 0, 7, 8, 0, 12, 9, 0, 10,
970 0, 0, 86, 0, 178, 0, 0, 0, 0, 19,
971 12, 0, 22, 0, 0, 0, 0, 0, 0, 0,
972 0, 30, 0, 19, 31, 32, 22, 4, 0, 0,
973 0, 5, 6, 0, 0, 30, 0, 218, 31, 32,
974 0, 4, 0, 0, 0, 5, 6, 0, 0, 7,
975 8, 0, 0, 9, 0, 10, 0, 0, 0, 0,
976 0, 0, 0, 7, 8, 0, 12, 9, 0, 10,
977 0, 0, 0, 0, 0, 0, 0, 0, 0, 19,
978 12, 0, 22, 0, 4, 179, 0, 0, 5, 6,
979 0, 30, 0, 19, 31, 32, 22, 0, 0, 0,
980 0, 0, 0, 0, 0, 30, 7, 8, 31, 32,
981 9, 0, 10, 0, 0, 4, 0, 0, 0, 5,
982 6, 244, 0, 12, 275, 0, 0, 0, 0, 0,
983 0, 0, 0, 0, 0, 0, 19, 7, 8, 22,
984 0, 9, 0, 10, 0, 0, 0, 0, 30, 0,
985 0, 31, 32, 0, 12, 0, 0, 0, 4, 0,
986 0, 0, 5, 6, 0, 0, 0, 19, 171, 0,
987 22, 0, 5, 6, 0, 0, 0, 0, 0, 30,
988 7, 8, 31, 32, 9, 0, 10, 0, 0, 0,
989 7, 8, 0, 0, 9, 0, 10, 12, 0, 0,
990 0, 0, 0, 0, 0, 0, 0, 12, 0, 0,
928 224, 181, 331, 182, 223, 317, 318, 225, 90, 226,
929 228, 248, 148, 340, 367, 257, 158, 258, 4, 80,
930 159, 259, 5, 6, 243, 271, 372, 258, 347, 84,
931 295, 259, 296, 321, 35, 296, 297, 81, 176, 297,
932 7, 8, 83, 260, 9, 315, 10, 330, 358, 296,
933 90, 270, 156, 297, 11, 137, 12, 183, 274, 276,
934 85, 156, 13, 98, 14, 15, 16, 17, 18, 19,
935 20, 21, 22, 23, 97, 24, 25, 26, 27, 28,
936 29, 30, 135, 280, 31, 32, 33, 34, 341, 284,
937 296, 171, 127, 236, 297, 5, 6, 156, 298, -34,
938 309, 310, 89, 139, 90, 145, 91, 287, 287, 270,
939 288, 290, 308, 7, 8, 149, 311, 9, 313, 10,
940 316, 75, 150, 176, 176, 193, 194, 319, 151, 12,
941 172, 102, -34, 103, 153, 104, 173, 167, 11, 89,
942 323, 90, 19, 136, 325, 22, 157, 327, 90, 106,
943 107, 108, 109, 110, 30, 164, 177, 31, 32, 124,
944 125, 126, 127, 182, 185, 189, 186, 270, 121, 122,
945 123, 124, 125, 126, 127, 128, 131, 345, 227, 251,
946 179, 247, 252, 131, 254, 255, 253, 348, 261, 350,
947 277, 264, 272, 278, 359, 122, 123, 124, 125, 126,
948 127, 4, 285, 270, 270, 5, 6, 286, 289, 131,
949 328, 229, 369, 334, 364, 239, 339, 365, 343, 270,
950 346, 373, 354, 7, 8, 360, 355, 9, 366, 10,
951 368, 270, 329, 370, 138, 234, 154, 11, 235, 12,
952 95, 72, 76, 267, 79, 13, 246, 14, 15, 16,
953 17, 18, 19, 20, 21, 22, 23, 165, 24, 25,
954 26, 27, 28, 29, 30, 0, 155, 31, 32, 33,
955 34, 4, 190, 188, 221, 5, 6, 363, 0, 0,
956 106, 107, 108, 109, 110, 0, 0, 0, 0, 0,
957 0, 0, 0, 7, 8, 0, 0, 9, 0, 10,
958 122, 123, 124, 125, 126, 127, 0, 11, 0, 12,
959 0, 0, 0, 0, 131, 13, 0, 14, 15, 16,
960 17, 18, 19, 20, 21, 22, 23, 0, 24, 25,
961 26, 27, 28, 29, 30, 0, 0, 31, 32, 33,
962 34, 4, 0, 0, 0, 5, 6, 0, 0, 0,
963 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
964 0, 0, 0, 7, 8, 0, 0, 9, 0, 10,
965 0, 0, 0, 0, 0, 0, 0, 11, 0, 12,
966 0, 0, 0, 0, 0, 13, 0, 14, 15, 16,
967 17, 18, 19, 20, 21, 22, 23, 0, 24, 25,
968 26, 27, 28, 29, 30, 0, 0, 31, 32, 93,
969 94, 4, 0, 0, 0, 5, 6, 0, 0, 0,
970 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
971 0, 0, 0, 7, 8, 0, 0, 9, 0, 10,
972 0, 0, 0, 0, 0, 0, 0, 11, 0, 12,
973 0, 0, 0, 4, 0, 13, 0, 5, 6, 0,
974 0, 0, 19, 0, 0, 22, 23, 0, 24, 25,
975 26, 27, 28, 29, 30, 7, 8, 31, 32, 9,
976 4, 10, 0, 0, 5, 6, 0, 0, 0, 244,
977 300, 12, 0, 0, 301, 0, 0, 0, 302, 0,
978 0, 0, 7, 8, 19, 0, 9, 22, 10, 0,
979 171, 0, 178, 0, 5, 6, 30, 0, 12, 31,
980 32, 0, 0, 179, 0, 0, 0, 0, 0, 0,
981 0, 19, 7, 8, 22, 0, 9, 4, 10, 0,
982 0, 5, 6, 30, 0, 0, 31, 32, 12, 187,
983 0, 0, 0, 0, 0, 173, 0, 0, 0, 7,
984 8, 19, 0, 9, 22, 10, 0, 4, 0, 0,
985 0, 5, 6, 30, 0, 12, 31, 32, 0, 0,
986 0, 86, 0, 0, 0, 0, 0, 0, 19, 7,
987 8, 22, 0, 9, 0, 10, 0, 4, 0, 178,
988 30, 5, 6, 31, 32, 12, 0, 218, 0, 0,
989 0, 0, 0, 0, 0, 0, 0, 0, 19, 7,
990 8, 22, 0, 9, 4, 10, 0, 0, 5, 6,
991 30, 0, 0, 31, 32, 12, 0, 0, 0, 0,
992 0, 0, 0, 0, 0, 0, 7, 8, 19, 0,
993 9, 22, 10, 0, 0, 0, 0, 0, 0, 0,
994 30, 0, 12, 31, 32, 0, 4, 179, 0, 0,
995 5, 6, 0, 0, 0, 19, 0, 4, 22, 0,
996 0, 5, 6, 0, 0, 0, 275, 30, 7, 8,
997 31, 32, 9, 0, 10, 0, 0, 0, 0, 7,
998 8, 0, 244, 9, 12, 10, 0, 0, 0, 0,
999 0, 0, 0, 0, 0, 12, 0, 19, 0, 4,
1000 22, 0, 0, 5, 6, 0, 0, 0, 19, 30,
1001 171, 22, 31, 32, 5, 6, 0, 0, 0, 0,
1002 30, 7, 8, 31, 32, 9, 0, 10, 0, 0,
1003 0, 0, 7, 8, 0, 0, 9, 12, 10, 0,
1004 0, 0, 0, 0, 0, 0, 0, 0, 12, 0,
9911005 19, 0, 0, 22, 0, 0, 0, 0, 0, 0,
992 19, 0, 30, 22, 0, 31, 32, 0, 0, 0,
993 0, 0, 30, 0, 0, 31, 32, 105, 106, 107,
994 108, 109, 110, 0, 0, 0, 0, 111, 112, 113,
995 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
996 124, 125, 126, 127, 0, 128, 0, 129, 130, 0,
1006 0, 19, 30, 0, 22, 31, 32, 0, 0, 0,
1007 0, 0, 0, 30, 0, 0, 31, 32, 105, 106,
1008 107, 108, 109, 110, 0, 0, 0, 0, 111, 112,
1009 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
1010 123, 124, 125, 126, 127, 128, 0, 129, 130, 0,
9971011 0, 0, 0, 131, 105, 106, 107, 108, 109, 110,
9981012 0, 170, 0, 0, 111, 112, 113, 114, 115, 116,
9991013 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
1000 127, 0, 128, 0, 129, 130, 262, 0, 0, 0,
1001 131, 105, 106, 107, 108, 109, 110, 263, 0, 0,
1014 127, 128, 0, 129, 130, 262, 0, 0, 0, 131,
1015 105, 106, 107, 108, 109, 110, 263, 0, 0, 0,
1016 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
1017 121, 122, 123, 124, 125, 126, 127, 128, 0, 129,
1018 130, 262, 0, 0, 0, 131, 105, 106, 107, 108,
1019 109, 110, 273, 0, 0, 0, 111, 112, 113, 114,
1020 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
1021 125, 126, 127, 128, 0, 129, 130, 0, 0, 0,
1022 0, 131, 105, 106, 107, 108, 109, 110, 299, 0,
1023 0, 0, 111, 112, 113, 114, 115, 116, 117, 118,
1024 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
1025 0, 129, 130, 0, 0, 0, 0, 131, 105, 106,
1026 107, 108, 109, 110, 342, 0, 0, 0, 111, 112,
1027 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
1028 123, 124, 125, 126, 127, 128, 0, 129, 130, 0,
1029 0, 0, 0, 131, 0, 0, 143, 0, 144, 105,
1030 106, 107, 108, 109, 110, 0, 0, 0, 0, 111,
1031 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
1032 122, 123, 124, 125, 126, 127, 128, 0, 129, 130,
1033 0, 0, 0, 0, 131, 281, 0, 0, 0, 282,
1034 105, 106, 107, 108, 109, 110, 0, 0, 0, 0,
1035 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
1036 121, 122, 123, 124, 125, 126, 127, 128, 0, 129,
1037 130, 0, 0, 0, 0, 131, 351, 0, 0, 0,
1038 352, 105, 106, 107, 108, 109, 110, 0, 0, 0,
10021039 0, 111, 112, 113, 114, 115, 116, 117, 118, 119,
1003 120, 121, 122, 123, 124, 125, 126, 127, 0, 128,
1004 0, 129, 130, 262, 0, 0, 0, 131, 105, 106,
1005 107, 108, 109, 110, 273, 0, 0, 0, 111, 112,
1006 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
1007 123, 124, 125, 126, 127, 0, 128, 0, 129, 130,
1008 0, 0, 0, 0, 131, 105, 106, 107, 108, 109,
1009 110, 299, 0, 0, 0, 111, 112, 113, 114, 115,
1010 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
1011 126, 127, 0, 128, 0, 129, 130, 0, 0, 0,
1012 0, 131, 105, 106, 107, 108, 109, 110, 342, 0,
1013 0, 0, 111, 112, 113, 114, 115, 116, 117, 118,
1014 119, 120, 121, 122, 123, 124, 125, 126, 127, 0,
1015 128, 0, 129, 130, 0, 0, 0, 0, 131, 0,
1016 0, 143, 0, 144, 105, 106, 107, 108, 109, 110,
1017 0, 0, 0, 0, 111, 112, 113, 114, 115, 116,
1018 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
1019 127, 0, 128, 0, 129, 130, 0, 0, 0, 0,
1020 131, 281, 0, 0, 0, 282, 105, 106, 107, 108,
1021 109, 110, 0, 0, 0, 0, 111, 112, 113, 114,
1022 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
1023 125, 126, 127, 0, 128, 0, 129, 130, 0, 0,
1024 0, 0, 131, 351, 0, 0, 0, 352, 105, 106,
1025 107, 108, 109, 110, 0, 0, 0, 0, 111, 112,
1026 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
1027 123, 124, 125, 126, 127, 0, 128, 0, 129, 130,
1028 0, 0, 0, 0, 131, 0, 0, 249, 105, 106,
1029 107, 108, 109, 110, 0, 0, 0, 0, 111, 112,
1030 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
1031 123, 124, 125, 126, 127, 0, 128, 0, 129, 130,
1032 0, 0, 0, 0, 131, 0, 0, 250, 105, 106,
1033 107, 108, 109, 110, 0, 0, 0, 0, 111, 112,
1034 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
1035 123, 124, 125, 126, 127, 0, 128, 0, 129, 130,
1040 120, 121, 122, 123, 124, 125, 126, 127, 128, 0,
1041 129, 130, 0, 0, 0, 0, 131, 0, 0, 249,
1042 105, 106, 107, 108, 109, 110, 0, 0, 0, 0,
1043 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
1044 121, 122, 123, 124, 125, 126, 127, 128, 0, 129,
1045 130, 0, 0, 0, 0, 131, 0, 0, 250, 105,
1046 106, 107, 108, 109, 110, 0, 0, 0, 0, 111,
1047 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
1048 122, 123, 124, 125, 126, 127, 128, 0, 129, 130,
10361049 0, 0, 0, 0, 131, 0, 0, 344, 105, 106,
10371050 107, 108, 109, 110, 0, 0, 0, 0, 111, 112,
10381051 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
1039 123, 124, 125, 126, 127, 0, 128, 0, 129, 130,
1040 0, 0, 0, 0, 131, 0, 0, 361, 105, 106,
1041 107, 108, 109, 110, 0, 0, 0, 0, 111, 112,
1042 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
1043 123, 124, 125, 126, 127, 0, 128, 0, 129, 130,
1044 0, 0, 0, 0, 131, 326, 105, 106, 107, 108,
1045 109, 110, 0, 0, 0, 0, 111, 112, 113, 114,
1046 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
1047 125, 126, 127, 0, 128, 0, 129, 130, 0, 0,
1048 0, 0, 131, 371, 105, 106, 107, 108, 109, 110,
1052 123, 124, 125, 126, 127, 128, 0, 129, 130, 0,
1053 0, 0, 0, 131, 0, 0, 361, 105, 106, 107,
1054 108, 109, 110, 0, 0, 0, 0, 111, 112, 113,
1055 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
1056 124, 125, 126, 127, 128, 0, 129, 130, 0, 0,
1057 0, 0, 131, 326, 105, 106, 107, 108, 109, 110,
10491058 0, 0, 0, 0, 111, 112, 113, 114, 115, 116,
10501059 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
1051 127, 0, 128, 0, 129, 130, 279, 0, 0, 0,
1052 131, 105, 106, 107, 108, 109, 110, 0, 0, 0,
1060 127, 128, 0, 129, 130, 0, 0, 0, 0, 131,
1061 371, 105, 106, 107, 108, 109, 110, 0, 0, 0,
10531062 0, 111, 112, 113, 114, 115, 116, 117, 118, 119,
1054 120, 121, 122, 123, 124, 125, 126, 127, 0, 128,
1055 0, 129, 130, 0, 0, 0, 105, 131, 107, 108,
1056 109, 110, 0, 0, 0, 0, 111, 112, 113, 114,
1057 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
1058 125, 126, 127, 0, 128, 0, 129, 130, 0, 0,
1059 0, 322, 131, 105, 0, 107, 108, 109, 110, 0,
1063 120, 121, 122, 123, 124, 125, 126, 127, 128, 0,
1064 129, 130, 279, 0, 0, 0, 131, 105, 106, 107,
1065 108, 109, 110, 0, 0, 0, 0, 111, 112, 113,
1066 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
1067 124, 125, 126, 127, 128, 0, 129, 130, 0, 0,
1068 0, 105, 131, 107, 108, 109, 110, 0, 0, 0,
1069 0, 111, 112, 113, 114, 115, 116, 117, 118, 119,
1070 120, 121, 122, 123, 124, 125, 126, 127, 128, 0,
1071 129, 130, 0, 0, 0, 322, 131, 105, 0, 107,
1072 108, 109, 110, 0, 0, 0, 0, 111, 112, 113,
1073 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
1074 124, 125, 126, 127, 128, 0, 129, 130, 0, 0,
1075 0, 324, 131, 105, 0, 107, 108, 109, 110, 0,
10601076 0, 0, 0, 111, 112, 113, 114, 115, 116, 117,
10611077 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
1062 0, 128, 0, 129, 130, 0, 0, 0, 324, 131,
1063 105, 0, 107, 108, 109, 110, 0, 0, 0, 0,
1064 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
1065 121, 122, 123, 124, 125, 126, 127, 0, 128, 0,
1066 129, 130, 0, 0, 0, 349, 131, 105, 0, 107,
1067 108, 109, 110, 0, 0, 0, 0, 111, 112, 113,
1068 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
1069 124, 125, 126, 127, 0, 128, 0, 129, 130, 0,
1070 0, 0, 0, 131, 106, 107, 108, 109, 110, 0,
1071 0, 0, 0, 111, 112, 113, 114, 115, 116, 117,
1072 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
1073 0, 128, 0, 0, 130, 0, 0, 0, 0, 131,
1078 128, 0, 129, 130, 0, 0, 0, 349, 131, 105,
1079 0, 107, 108, 109, 110, 0, 0, 0, 0, 111,
1080 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
1081 122, 123, 124, 125, 126, 127, 128, 0, 129, 130,
1082 0, 0, 0, 0, 131, 106, 107, 108, 109, 110,
1083 0, 0, 0, 0, 111, 112, 113, 114, 115, 116,
1084 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
1085 127, 128, 0, 0, 130, 0, 0, 0, 0, 131,
10741086 106, 107, 108, 109, 110, 0, 0, 0, 0, 0,
10751087 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
1076 122, 123, 124, 125, 126, 127, 0, 128, 106, 107,
1077 108, 109, 110, 0, 0, 131, 0, 0, 0, 113,
1078 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
1079 124, 125, 126, 127, 0, 128, 106, 107, 108, 109,
1080 110, 0, 0, 131, 0, 0, 0, 0, 114, 115,
1081 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
1082 126, 127, 0, 128, 106, 107, 108, 109, 110, 0,
1083 0, 131, 0, 0, 0, 0, 0, 115, 116, 117,
1088 122, 123, 124, 125, 126, 127, 128, 106, 107, 108,
1089 109, 110, 0, 0, 131, 0, 0, 0, 113, 114,
1090 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
1091 125, 126, 127, 128, 106, 107, 108, 109, 110, 0,
1092 0, 131, 0, 0, 0, 0, 114, 115, 116, 117,
10841093 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
1085 0, 128, 106, 107, 108, 109, 110, 0, 0, 131,
1086 0, 0, 0, 0, 0, 0, 0, 117, 118, 119,
1087 120, 121, 122, 123, 124, 125, 126, 127, 0, 128,
1088 0, 0, 0, 0, 0, 0, 0, 131
1094 128, 106, 107, 108, 109, 110, 0, 0, 131, 0,
1095 0, 0, 0, 0, 115, 116, 117, 118, 119, 120,
1096 121, 122, 123, 124, 125, 126, 127, 128, 106, 107,
1097 108, 109, 110, 0, 0, 131, 106, 107, 108, 109,
1098 110, 0, 0, 117, 118, 119, 120, 121, 122, 123,
1099 124, 125, 126, 127, 128, 121, 122, 123, 124, 125,
1100 126, 127, 131, 0, 0, 0, 0, 0, 0, 0,
1101 131
10891102 };
10901103
10911104 #define yypact_value_is_default(yystate) \
1092 ((yystate) == (-283))
1105 ((yystate) == (-282))
10931106
10941107 #define yytable_value_is_error(yytable_value) \
10951108 YYID (0)
10971110 static const yytype_int16 yycheck[] =
10981111 {
10991112 5, 6, 7, 8, 83, 10, 25, 12, 21, 134,
1100 16, 3, 2, 238, 3, 35, 298, 3, 37, 3,
1101 3, 3, 12, 44, 29, 15, 31, 183, 18, 43,
1102 51, 21, 22, 43, 244, 49, 0, 29, 58, 49,
1103 41, 3, 31, 43, 10, 11, 29, 37, 49, 49,
1104 173, 3, 334, 42, 68, 75, 3, 44, 68, 79,
1105 42, 48, 44, 40, 46, 27, 55, 57, 68, 58,
1106 83, 296, 297, 42, 237, 80, 81, 3, 67, 71,
1107 236, 70, 71, 42, 89, 71, 91, 71, 42, 245,
1108 42, 42, 302, 83, 46, 46, 221, 102, 48, 104,
1109 105, 27, 265, 43, 109, 45, 111, 112, 113, 114,
1113 16, 3, 2, 238, 3, 35, 3, 298, 37, 3,
1114 3, 42, 12, 3, 29, 15, 31, 48, 18, 183,
1115 0, 21, 22, 42, 244, 42, 40, 29, 58, 48,
1116 3, 48, 3, 42, 48, 44, 67, 37, 42, 29,
1117 173, 39, 41, 334, 48, 75, 3, 41, 67, 79,
1118 67, 45, 43, 3, 27, 54, 27, 57, 57, 50,
1119 83, 296, 297, 67, 237, 80, 81, 66, 70, 35,
1120 69, 70, 236, 70, 89, 41, 91, 70, 39, 45,
1121 41, 245, 302, 83, 45, 44, 221, 102, 47, 104,
1122 105, 41, 265, 43, 109, 45, 111, 112, 113, 114,
11101123 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
11111124 125, 126, 127, 128, 129, 130, 131, 132, 338, 339,
1112 45, 136, 295, 48, 139, 258, 259, 142, 42, 144,
1113 146, 161, 46, 306, 354, 40, 42, 42, 3, 48,
1114 46, 46, 7, 8, 159, 43, 366, 36, 321, 48,
1115 43, 49, 45, 42, 154, 3, 49, 46, 173, 43,
1116 25, 26, 46, 178, 29, 254, 31, 43, 341, 45,
1117 68, 186, 44, 49, 46, 40, 41, 42, 193, 194,
1118 42, 43, 44, 48, 46, 50, 51, 52, 53, 54,
1119 55, 56, 57, 58, 59, 48, 61, 62, 63, 64,
1120 65, 66, 67, 218, 3, 70, 71, 72, 73, 224,
1121 25, 26, 27, 28, 29, 30, 30, 43, 241, 45,
1122 249, 250, 43, 49, 45, 40, 3, 3, 49, 244,
1123 7, 8, 247, 43, 45, 45, 251, 48, 253, 49,
1124 255, 241, 45, 258, 259, 48, 48, 262, 25, 26,
1125 48, 48, 29, 43, 31, 45, 50, 346, 50, 49,
1126 275, 40, 3, 44, 279, 42, 43, 282, 61, 42,
1127 3, 44, 49, 46, 46, 42, 45, 44, 55, 46,
1128 34, 58, 27, 28, 29, 30, 3, 302, 40, 3,
1129 67, 47, 42, 70, 71, 46, 3, 312, 45, 48,
1130 34, 47, 5, 47, 47, 5, 3, 322, 48, 324,
1131 48, 68, 3, 3, 343, 3, 45, 48, 60, 34,
1132 41, 3, 48, 338, 339, 7, 8, 43, 34, 41,
1133 57, 287, 361, 37, 349, 153, 73, 352, 18, 354,
1134 21, 370, 185, 25, 26, 22, 74, 29, 83, 31,
1135 133, 366, 160, -1, -1, 346, 104, -1, 40, 41,
1136 42, -1, -1, 102, -1, -1, 48, -1, 50, 51,
1137 52, 53, 54, 55, 56, 57, 58, 59, -1, 61,
1138 62, 63, 64, 65, 66, 67, -1, -1, 70, 71,
1139 72, 73, 3, -1, -1, -1, 7, 8, -1, -1,
1140 -1, -1, -1, 5, 6, 7, 8, 9, -1, -1,
1141 -1, -1, -1, -1, 25, 26, -1, -1, 29, -1,
1142 31, -1, 24, 25, 26, 27, 28, 29, 30, 40,
1143 32, 42, -1, -1, -1, -1, -1, 48, 40, 50,
1144 51, 52, 53, 54, 55, 56, 57, 58, 59, -1,
1145 61, 62, 63, 64, 65, 66, 67, -1, -1, 70,
1146 71, 72, 73, 3, -1, -1, -1, 7, 8, -1,
1147 -1, -1, -1, -1, 5, 6, 7, 8, 9, -1,
1148 -1, -1, -1, -1, -1, 25, 26, -1, -1, 29,
1149 -1, 31, -1, 24, 25, 26, 27, 28, 29, 30,
1150 40, -1, 42, -1, -1, -1, -1, -1, 48, 40,
1151 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
1152 -1, 61, 62, 63, 64, 65, 66, 67, -1, -1,
1153 70, 71, 72, 73, 3, -1, -1, -1, 7, 8,
1154 -1, -1, -1, 5, 6, 7, 8, 9, -1, -1,
1155 -1, -1, -1, -1, -1, -1, 25, 26, -1, -1,
1156 29, -1, 31, 25, 26, 27, 28, 29, 30, -1,
1157 -1, 40, -1, 42, -1, -1, -1, 3, 40, 48,
1158 -1, 7, 8, -1, -1, -1, 55, -1, -1, 58,
1159 59, -1, 61, 62, 63, 64, 65, 66, 67, 25,
1160 26, 70, 71, 29, -1, 31, -1, -1, -1, -1,
1161 -1, -1, -1, -1, 40, 41, 42, -1, -1, 45,
1162 3, -1, -1, 49, 7, 8, -1, -1, -1, 55,
1163 -1, -1, 58, -1, 3, -1, -1, -1, 7, 8,
1164 -1, 67, 25, 26, 70, 71, 29, -1, 31, -1,
1165 -1, -1, -1, 36, -1, -1, 25, 26, -1, 42,
1166 29, -1, 31, -1, 47, -1, -1, -1, -1, -1,
1167 -1, -1, 55, 42, 43, 58, -1, 3, -1, -1,
1168 49, 7, 8, -1, 67, -1, 55, 70, 71, 58,
1169 -1, 3, -1, -1, -1, 7, 8, -1, 67, 25,
1170 26, 70, 71, 29, -1, 31, -1, -1, -1, -1,
1171 -1, -1, -1, 25, 26, -1, 42, 29, -1, 31,
1172 -1, -1, 48, -1, 36, -1, -1, -1, -1, 55,
1173 42, -1, 58, -1, -1, -1, -1, -1, -1, -1,
1174 -1, 67, -1, 55, 70, 71, 58, 3, -1, -1,
1175 -1, 7, 8, -1, -1, 67, -1, 13, 70, 71,
1176 -1, 3, -1, -1, -1, 7, 8, -1, -1, 25,
1177 26, -1, -1, 29, -1, 31, -1, -1, -1, -1,
1178 -1, -1, -1, 25, 26, -1, 42, 29, -1, 31,
1179 -1, -1, -1, -1, -1, -1, -1, -1, -1, 55,
1180 42, -1, 58, -1, 3, 47, -1, -1, 7, 8,
1181 -1, 67, -1, 55, 70, 71, 58, -1, -1, -1,
1182 -1, -1, -1, -1, -1, 67, 25, 26, 70, 71,
1183 29, -1, 31, -1, -1, 3, -1, -1, -1, 7,
1184 8, 40, -1, 42, 12, -1, -1, -1, -1, -1,
1185 -1, -1, -1, -1, -1, -1, 55, 25, 26, 58,
1186 -1, 29, -1, 31, -1, -1, -1, -1, 67, -1,
1187 -1, 70, 71, -1, 42, -1, -1, -1, 3, -1,
1188 -1, -1, 7, 8, -1, -1, -1, 55, 3, -1,
1189 58, -1, 7, 8, -1, -1, -1, -1, -1, 67,
1190 25, 26, 70, 71, 29, -1, 31, -1, -1, -1,
1191 25, 26, -1, -1, 29, -1, 31, 42, -1, -1,
1192 -1, -1, -1, -1, -1, -1, -1, 42, -1, -1,
1193 55, -1, -1, 58, -1, -1, -1, -1, -1, -1,
1194 55, -1, 67, 58, -1, 70, 71, -1, -1, -1,
1195 -1, -1, 67, -1, -1, 70, 71, 4, 5, 6,
1125 42, 136, 295, 45, 139, 258, 259, 142, 43, 144,
1126 146, 161, 47, 306, 354, 42, 41, 44, 3, 41,
1127 45, 48, 7, 8, 159, 42, 366, 44, 321, 47,
1128 42, 48, 44, 42, 154, 44, 48, 41, 173, 48,
1129 25, 26, 41, 178, 29, 254, 31, 42, 341, 44,
1130 43, 186, 45, 48, 39, 40, 41, 41, 193, 194,
1131 47, 45, 47, 3, 49, 50, 51, 52, 53, 54,
1132 55, 56, 57, 58, 47, 60, 61, 62, 63, 64,
1133 65, 66, 47, 218, 69, 70, 71, 72, 42, 224,
1134 44, 3, 30, 41, 48, 7, 8, 45, 241, 3,
1135 249, 250, 41, 42, 43, 3, 45, 44, 44, 244,
1136 47, 47, 247, 25, 26, 47, 251, 29, 253, 31,
1137 255, 241, 47, 258, 259, 10, 11, 262, 47, 41,
1138 42, 41, 49, 43, 49, 45, 48, 346, 39, 41,
1139 275, 43, 54, 45, 279, 57, 3, 282, 43, 5,
1140 6, 7, 8, 9, 66, 60, 3, 69, 70, 27,
1141 28, 29, 30, 45, 44, 3, 33, 302, 24, 25,
1142 26, 27, 28, 29, 30, 31, 39, 312, 3, 41,
1143 46, 45, 3, 39, 44, 33, 47, 322, 46, 324,
1144 5, 46, 46, 5, 343, 25, 26, 27, 28, 29,
1145 30, 3, 3, 338, 339, 7, 8, 47, 47, 39,
1146 3, 3, 361, 3, 349, 67, 44, 352, 59, 354,
1147 47, 370, 33, 25, 26, 47, 40, 29, 33, 31,
1148 40, 366, 287, 42, 57, 153, 73, 39, 40, 41,
1149 37, 18, 21, 185, 22, 47, 160, 49, 50, 51,
1150 52, 53, 54, 55, 56, 57, 58, 83, 60, 61,
1151 62, 63, 64, 65, 66, -1, 74, 69, 70, 71,
1152 72, 3, 104, 102, 133, 7, 8, 346, -1, -1,
1153 5, 6, 7, 8, 9, -1, -1, -1, -1, -1,
1154 -1, -1, -1, 25, 26, -1, -1, 29, -1, 31,
1155 25, 26, 27, 28, 29, 30, -1, 39, -1, 41,
1156 -1, -1, -1, -1, 39, 47, -1, 49, 50, 51,
1157 52, 53, 54, 55, 56, 57, 58, -1, 60, 61,
1158 62, 63, 64, 65, 66, -1, -1, 69, 70, 71,
1159 72, 3, -1, -1, -1, 7, 8, -1, -1, -1,
1160 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1161 -1, -1, -1, 25, 26, -1, -1, 29, -1, 31,
1162 -1, -1, -1, -1, -1, -1, -1, 39, -1, 41,
1163 -1, -1, -1, -1, -1, 47, -1, 49, 50, 51,
1164 52, 53, 54, 55, 56, 57, 58, -1, 60, 61,
1165 62, 63, 64, 65, 66, -1, -1, 69, 70, 71,
1166 72, 3, -1, -1, -1, 7, 8, -1, -1, -1,
1167 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1168 -1, -1, -1, 25, 26, -1, -1, 29, -1, 31,
1169 -1, -1, -1, -1, -1, -1, -1, 39, -1, 41,
1170 -1, -1, -1, 3, -1, 47, -1, 7, 8, -1,
1171 -1, -1, 54, -1, -1, 57, 58, -1, 60, 61,
1172 62, 63, 64, 65, 66, 25, 26, 69, 70, 29,
1173 3, 31, -1, -1, 7, 8, -1, -1, -1, 39,
1174 40, 41, -1, -1, 44, -1, -1, -1, 48, -1,
1175 -1, -1, 25, 26, 54, -1, 29, 57, 31, -1,
1176 3, -1, 35, -1, 7, 8, 66, -1, 41, 69,
1177 70, -1, -1, 46, -1, -1, -1, -1, -1, -1,
1178 -1, 54, 25, 26, 57, -1, 29, 3, 31, -1,
1179 -1, 7, 8, 66, -1, -1, 69, 70, 41, 42,
1180 -1, -1, -1, -1, -1, 48, -1, -1, -1, 25,
1181 26, 54, -1, 29, 57, 31, -1, 3, -1, -1,
1182 -1, 7, 8, 66, -1, 41, 69, 70, -1, -1,
1183 -1, 47, -1, -1, -1, -1, -1, -1, 54, 25,
1184 26, 57, -1, 29, -1, 31, -1, 3, -1, 35,
1185 66, 7, 8, 69, 70, 41, -1, 13, -1, -1,
1186 -1, -1, -1, -1, -1, -1, -1, -1, 54, 25,
1187 26, 57, -1, 29, 3, 31, -1, -1, 7, 8,
1188 66, -1, -1, 69, 70, 41, -1, -1, -1, -1,
1189 -1, -1, -1, -1, -1, -1, 25, 26, 54, -1,
1190 29, 57, 31, -1, -1, -1, -1, -1, -1, -1,
1191 66, -1, 41, 69, 70, -1, 3, 46, -1, -1,
1192 7, 8, -1, -1, -1, 54, -1, 3, 57, -1,
1193 -1, 7, 8, -1, -1, -1, 12, 66, 25, 26,
1194 69, 70, 29, -1, 31, -1, -1, -1, -1, 25,
1195 26, -1, 39, 29, 41, 31, -1, -1, -1, -1,
1196 -1, -1, -1, -1, -1, 41, -1, 54, -1, 3,
1197 57, -1, -1, 7, 8, -1, -1, -1, 54, 66,
1198 3, 57, 69, 70, 7, 8, -1, -1, -1, -1,
1199 66, 25, 26, 69, 70, 29, -1, 31, -1, -1,
1200 -1, -1, 25, 26, -1, -1, 29, 41, 31, -1,
1201 -1, -1, -1, -1, -1, -1, -1, -1, 41, -1,
1202 54, -1, -1, 57, -1, -1, -1, -1, -1, -1,
1203 -1, 54, 66, -1, 57, 69, 70, -1, -1, -1,
1204 -1, -1, -1, 66, -1, -1, 69, 70, 4, 5,
1205 6, 7, 8, 9, -1, -1, -1, -1, 14, 15,
1206 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
1207 26, 27, 28, 29, 30, 31, -1, 33, 34, -1,
1208 -1, -1, -1, 39, 4, 5, 6, 7, 8, 9,
1209 -1, 47, -1, -1, 14, 15, 16, 17, 18, 19,
1210 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
1211 30, 31, -1, 33, 34, 35, -1, -1, -1, 39,
1212 4, 5, 6, 7, 8, 9, 46, -1, -1, -1,
1213 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
1214 24, 25, 26, 27, 28, 29, 30, 31, -1, 33,
1215 34, 35, -1, -1, -1, 39, 4, 5, 6, 7,
1216 8, 9, 46, -1, -1, -1, 14, 15, 16, 17,
1217 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
1218 28, 29, 30, 31, -1, 33, 34, -1, -1, -1,
1219 -1, 39, 4, 5, 6, 7, 8, 9, 46, -1,
1220 -1, -1, 14, 15, 16, 17, 18, 19, 20, 21,
1221 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
1222 -1, 33, 34, -1, -1, -1, -1, 39, 4, 5,
1223 6, 7, 8, 9, 46, -1, -1, -1, 14, 15,
1224 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
1225 26, 27, 28, 29, 30, 31, -1, 33, 34, -1,
1226 -1, -1, -1, 39, -1, -1, 42, -1, 44, 4,
1227 5, 6, 7, 8, 9, -1, -1, -1, -1, 14,
1228 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1229 25, 26, 27, 28, 29, 30, 31, -1, 33, 34,
1230 -1, -1, -1, -1, 39, 40, -1, -1, -1, 44,
1231 4, 5, 6, 7, 8, 9, -1, -1, -1, -1,
1232 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
1233 24, 25, 26, 27, 28, 29, 30, 31, -1, 33,
1234 34, -1, -1, -1, -1, 39, 40, -1, -1, -1,
1235 44, 4, 5, 6, 7, 8, 9, -1, -1, -1,
1236 -1, 14, 15, 16, 17, 18, 19, 20, 21, 22,
1237 23, 24, 25, 26, 27, 28, 29, 30, 31, -1,
1238 33, 34, -1, -1, -1, -1, 39, -1, -1, 42,
1239 4, 5, 6, 7, 8, 9, -1, -1, -1, -1,
1240 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
1241 24, 25, 26, 27, 28, 29, 30, 31, -1, 33,
1242 34, -1, -1, -1, -1, 39, -1, -1, 42, 4,
1243 5, 6, 7, 8, 9, -1, -1, -1, -1, 14,
1244 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1245 25, 26, 27, 28, 29, 30, 31, -1, 33, 34,
1246 -1, -1, -1, -1, 39, -1, -1, 42, 4, 5,
1247 6, 7, 8, 9, -1, -1, -1, -1, 14, 15,
1248 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
1249 26, 27, 28, 29, 30, 31, -1, 33, 34, -1,
1250 -1, -1, -1, 39, -1, -1, 42, 4, 5, 6,
11961251 7, 8, 9, -1, -1, -1, -1, 14, 15, 16,
11971252 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
1198 27, 28, 29, 30, -1, 32, -1, 34, 35, -1,
1199 -1, -1, -1, 40, 4, 5, 6, 7, 8, 9,
1200 -1, 48, -1, -1, 14, 15, 16, 17, 18, 19,
1201 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
1202 30, -1, 32, -1, 34, 35, 36, -1, -1, -1,
1203 40, 4, 5, 6, 7, 8, 9, 47, -1, -1,
1204 -1, 14, 15, 16, 17, 18, 19, 20, 21, 22,
1205 23, 24, 25, 26, 27, 28, 29, 30, -1, 32,
1206 -1, 34, 35, 36, -1, -1, -1, 40, 4, 5,
1207 6, 7, 8, 9, 47, -1, -1, -1, 14, 15,
1208 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
1209 26, 27, 28, 29, 30, -1, 32, -1, 34, 35,
1210 -1, -1, -1, -1, 40, 4, 5, 6, 7, 8,
1211 9, 47, -1, -1, -1, 14, 15, 16, 17, 18,
1212 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
1213 29, 30, -1, 32, -1, 34, 35, -1, -1, -1,
1214 -1, 40, 4, 5, 6, 7, 8, 9, 47, -1,
1215 -1, -1, 14, 15, 16, 17, 18, 19, 20, 21,
1216 22, 23, 24, 25, 26, 27, 28, 29, 30, -1,
1217 32, -1, 34, 35, -1, -1, -1, -1, 40, -1,
1218 -1, 43, -1, 45, 4, 5, 6, 7, 8, 9,
1253 27, 28, 29, 30, 31, -1, 33, 34, -1, -1,
1254 -1, -1, 39, 40, 4, 5, 6, 7, 8, 9,
12191255 -1, -1, -1, -1, 14, 15, 16, 17, 18, 19,
12201256 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
1221 30, -1, 32, -1, 34, 35, -1, -1, -1, -1,
1222 40, 41, -1, -1, -1, 45, 4, 5, 6, 7,
1223 8, 9, -1, -1, -1, -1, 14, 15, 16, 17,
1224 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
1225 28, 29, 30, -1, 32, -1, 34, 35, -1, -1,
1226 -1, -1, 40, 41, -1, -1, -1, 45, 4, 5,
1227 6, 7, 8, 9, -1, -1, -1, -1, 14, 15,
1228 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
1229 26, 27, 28, 29, 30, -1, 32, -1, 34, 35,
1230 -1, -1, -1, -1, 40, -1, -1, 43, 4, 5,
1231 6, 7, 8, 9, -1, -1, -1, -1, 14, 15,
1232 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
1233 26, 27, 28, 29, 30, -1, 32, -1, 34, 35,
1234 -1, -1, -1, -1, 40, -1, -1, 43, 4, 5,
1235 6, 7, 8, 9, -1, -1, -1, -1, 14, 15,
1236 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
1237 26, 27, 28, 29, 30, -1, 32, -1, 34, 35,
1238 -1, -1, -1, -1, 40, -1, -1, 43, 4, 5,
1239 6, 7, 8, 9, -1, -1, -1, -1, 14, 15,
1240 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
1241 26, 27, 28, 29, 30, -1, 32, -1, 34, 35,
1242 -1, -1, -1, -1, 40, -1, -1, 43, 4, 5,
1243 6, 7, 8, 9, -1, -1, -1, -1, 14, 15,
1244 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
1245 26, 27, 28, 29, 30, -1, 32, -1, 34, 35,
1246 -1, -1, -1, -1, 40, 41, 4, 5, 6, 7,
1247 8, 9, -1, -1, -1, -1, 14, 15, 16, 17,
1248 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
1249 28, 29, 30, -1, 32, -1, 34, 35, -1, -1,
1250 -1, -1, 40, 41, 4, 5, 6, 7, 8, 9,
1257 30, 31, -1, 33, 34, -1, -1, -1, -1, 39,
1258 40, 4, 5, 6, 7, 8, 9, -1, -1, -1,
1259 -1, 14, 15, 16, 17, 18, 19, 20, 21, 22,
1260 23, 24, 25, 26, 27, 28, 29, 30, 31, -1,
1261 33, 34, 35, -1, -1, -1, 39, 4, 5, 6,
1262 7, 8, 9, -1, -1, -1, -1, 14, 15, 16,
1263 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
1264 27, 28, 29, 30, 31, -1, 33, 34, -1, -1,
1265 -1, 4, 39, 6, 7, 8, 9, -1, -1, -1,
1266 -1, 14, 15, 16, 17, 18, 19, 20, 21, 22,
1267 23, 24, 25, 26, 27, 28, 29, 30, 31, -1,
1268 33, 34, -1, -1, -1, 38, 39, 4, -1, 6,
1269 7, 8, 9, -1, -1, -1, -1, 14, 15, 16,
1270 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
1271 27, 28, 29, 30, 31, -1, 33, 34, -1, -1,
1272 -1, 38, 39, 4, -1, 6, 7, 8, 9, -1,
1273 -1, -1, -1, 14, 15, 16, 17, 18, 19, 20,
1274 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
1275 31, -1, 33, 34, -1, -1, -1, 38, 39, 4,
1276 -1, 6, 7, 8, 9, -1, -1, -1, -1, 14,
1277 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1278 25, 26, 27, 28, 29, 30, 31, -1, 33, 34,
1279 -1, -1, -1, -1, 39, 5, 6, 7, 8, 9,
12511280 -1, -1, -1, -1, 14, 15, 16, 17, 18, 19,
12521281 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
1253 30, -1, 32, -1, 34, 35, 36, -1, -1, -1,
1254 40, 4, 5, 6, 7, 8, 9, -1, -1, -1,
1255 -1, 14, 15, 16, 17, 18, 19, 20, 21, 22,
1256 23, 24, 25, 26, 27, 28, 29, 30, -1, 32,
1257 -1, 34, 35, -1, -1, -1, 4, 40, 6, 7,
1258 8, 9, -1, -1, -1, -1, 14, 15, 16, 17,
1259 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
1260 28, 29, 30, -1, 32, -1, 34, 35, -1, -1,
1261 -1, 39, 40, 4, -1, 6, 7, 8, 9, -1,
1262 -1, -1, -1, 14, 15, 16, 17, 18, 19, 20,
1263 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
1264 -1, 32, -1, 34, 35, -1, -1, -1, 39, 40,
1265 4, -1, 6, 7, 8, 9, -1, -1, -1, -1,
1266 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
1267 24, 25, 26, 27, 28, 29, 30, -1, 32, -1,
1268 34, 35, -1, -1, -1, 39, 40, 4, -1, 6,
1269 7, 8, 9, -1, -1, -1, -1, 14, 15, 16,
1270 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
1271 27, 28, 29, 30, -1, 32, -1, 34, 35, -1,
1272 -1, -1, -1, 40, 5, 6, 7, 8, 9, -1,
1273 -1, -1, -1, 14, 15, 16, 17, 18, 19, 20,
1274 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
1275 -1, 32, -1, -1, 35, -1, -1, -1, -1, 40,
1282 30, 31, -1, -1, 34, -1, -1, -1, -1, 39,
12761283 5, 6, 7, 8, 9, -1, -1, -1, -1, -1,
12771284 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1278 25, 26, 27, 28, 29, 30, -1, 32, 5, 6,
1279 7, 8, 9, -1, -1, 40, -1, -1, -1, 16,
1280 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
1281 27, 28, 29, 30, -1, 32, 5, 6, 7, 8,
1282 9, -1, -1, 40, -1, -1, -1, -1, 17, 18,
1283 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
1284 29, 30, -1, 32, 5, 6, 7, 8, 9, -1,
1285 -1, 40, -1, -1, -1, -1, -1, 18, 19, 20,
1285 25, 26, 27, 28, 29, 30, 31, 5, 6, 7,
1286 8, 9, -1, -1, 39, -1, -1, -1, 16, 17,
1287 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
1288 28, 29, 30, 31, 5, 6, 7, 8, 9, -1,
1289 -1, 39, -1, -1, -1, -1, 17, 18, 19, 20,
12861290 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
1287 -1, 32, 5, 6, 7, 8, 9, -1, -1, 40,
1288 -1, -1, -1, -1, -1, -1, -1, 20, 21, 22,
1289 23, 24, 25, 26, 27, 28, 29, 30, -1, 32,
1290 -1, -1, -1, -1, -1, -1, -1, 40
1291 31, 5, 6, 7, 8, 9, -1, -1, 39, -1,
1292 -1, -1, -1, -1, 18, 19, 20, 21, 22, 23,
1293 24, 25, 26, 27, 28, 29, 30, 31, 5, 6,
1294 7, 8, 9, -1, -1, 39, 5, 6, 7, 8,
1295 9, -1, -1, 20, 21, 22, 23, 24, 25, 26,
1296 27, 28, 29, 30, 31, 24, 25, 26, 27, 28,
1297 29, 30, 39, -1, -1, -1, -1, -1, -1, -1,
1298 39
12911299 };
12921300
12931301 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
12941302 symbol of state STATE-NUM. */
12951303 static const yytype_uint8 yystos[] =
12961304 {
1297 0, 77, 78, 0, 3, 7, 8, 25, 26, 29,
1298 31, 40, 42, 48, 50, 51, 52, 53, 54, 55,
1299 56, 57, 58, 59, 61, 62, 63, 64, 65, 66,
1300 67, 70, 71, 72, 73, 80, 81, 82, 83, 89,
1301 90, 91, 92, 99, 106, 107, 109, 113, 119, 120,
1302 121, 80, 113, 113, 113, 113, 113, 79, 80, 112,
1303 113, 3, 71, 86, 87, 88, 80, 87, 3, 71,
1304 3, 80, 86, 40, 3, 80, 89, 91, 80, 92,
1305 42, 42, 119, 42, 48, 48, 48, 113, 113, 42,
1306 44, 46, 93, 72, 73, 83, 119, 48, 3, 95,
1307 96, 97, 42, 44, 46, 4, 5, 6, 7, 8,
1305 0, 76, 77, 0, 3, 7, 8, 25, 26, 29,
1306 31, 39, 41, 47, 49, 50, 51, 52, 53, 54,
1307 55, 56, 57, 58, 60, 61, 62, 63, 64, 65,
1308 66, 69, 70, 71, 72, 79, 80, 81, 82, 88,
1309 89, 90, 91, 98, 105, 106, 108, 112, 118, 119,
1310 120, 79, 112, 112, 112, 112, 112, 78, 79, 111,
1311 112, 3, 70, 85, 86, 87, 79, 86, 3, 70,
1312 3, 79, 85, 39, 3, 79, 88, 90, 79, 91,
1313 41, 41, 118, 41, 47, 47, 47, 112, 112, 41,
1314 43, 45, 92, 71, 72, 82, 118, 47, 3, 94,
1315 95, 96, 41, 43, 45, 4, 5, 6, 7, 8,
13081316 9, 14, 15, 16, 17, 18, 19, 20, 21, 22,
1309 23, 24, 25, 26, 27, 28, 29, 30, 32, 34,
1310 35, 40, 114, 115, 116, 48, 46, 41, 81, 43,
1311 93, 43, 45, 43, 45, 3, 45, 48, 48, 48,
1312 48, 48, 51, 50, 78, 99, 46, 3, 42, 46,
1313 93, 94, 113, 113, 61, 90, 91, 120, 122, 125,
1314 48, 3, 43, 49, 110, 111, 113, 3, 36, 47,
1315 108, 113, 46, 42, 93, 45, 34, 43, 111, 3,
1316 108, 113, 113, 10, 11, 117, 118, 113, 113, 113,
1317 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
1318 113, 113, 113, 113, 113, 113, 113, 113, 13, 113,
1319 113, 116, 115, 113, 43, 113, 113, 3, 87, 3,
1320 27, 84, 85, 27, 85, 41, 42, 43, 49, 68,
1321 103, 104, 105, 113, 40, 42, 100, 46, 93, 43,
1322 43, 42, 3, 48, 45, 34, 110, 43, 45, 49,
1323 113, 47, 36, 47, 47, 43, 103, 96, 98, 100,
1324 113, 43, 47, 47, 113, 12, 113, 5, 5, 36,
1325 113, 41, 45, 115, 113, 3, 48, 45, 48, 48,
1326 48, 43, 103, 121, 105, 43, 45, 49, 91, 47,
1327 41, 45, 49, 98, 101, 102, 43, 103, 113, 119,
1328 119, 113, 36, 113, 123, 120, 113, 110, 110, 113,
1329 121, 43, 39, 113, 39, 113, 41, 113, 3, 84,
1330 43, 121, 105, 105, 3, 97, 98, 41, 49, 45,
1331 121, 43, 47, 60, 43, 113, 48, 121, 113, 39,
1332 113, 41, 45, 97, 34, 41, 98, 98, 121, 119,
1333 48, 43, 124, 125, 113, 113, 34, 98, 41, 119,
1334 43, 41, 98, 119
1317 23, 24, 25, 26, 27, 28, 29, 30, 31, 33,
1318 34, 39, 113, 114, 115, 47, 45, 40, 80, 42,
1319 92, 42, 44, 42, 44, 3, 44, 47, 47, 47,
1320 47, 47, 50, 49, 77, 98, 45, 3, 41, 45,
1321 92, 93, 112, 112, 60, 89, 90, 119, 121, 124,
1322 47, 3, 42, 48, 109, 110, 112, 3, 35, 46,
1323 107, 112, 45, 41, 92, 44, 33, 42, 110, 3,
1324 107, 112, 112, 10, 11, 116, 117, 112, 112, 112,
1325 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
1326 112, 112, 112, 112, 112, 112, 112, 112, 13, 112,
1327 112, 115, 114, 112, 42, 112, 112, 3, 86, 3,
1328 27, 83, 84, 27, 84, 40, 41, 42, 48, 67,
1329 102, 103, 104, 112, 39, 41, 99, 45, 92, 42,
1330 42, 41, 3, 47, 44, 33, 109, 42, 44, 48,
1331 112, 46, 35, 46, 46, 42, 102, 95, 97, 99,
1332 112, 42, 46, 46, 112, 12, 112, 5, 5, 35,
1333 112, 40, 44, 114, 112, 3, 47, 44, 47, 47,
1334 47, 42, 102, 120, 104, 42, 44, 48, 90, 46,
1335 40, 44, 48, 97, 100, 101, 42, 102, 112, 118,
1336 118, 112, 35, 112, 122, 119, 112, 109, 109, 112,
1337 120, 42, 38, 112, 38, 112, 40, 112, 3, 83,
1338 42, 120, 104, 104, 3, 96, 97, 40, 48, 44,
1339 120, 42, 46, 59, 42, 112, 47, 120, 112, 38,
1340 112, 40, 44, 96, 33, 40, 97, 97, 120, 118,
1341 47, 42, 123, 124, 112, 112, 33, 97, 40, 118,
1342 42, 40, 97, 118
13351343 };
13361344
13371345 #define yyerrok (yyerrstatus = 0)
13611369
13621370 #define YYRECOVERING() (!!yyerrstatus)
13631371
1364 #define YYBACKUP(Token, Value) \
1365 do \
1366 if (yychar == YYEMPTY && yylen == 1) \
1367 { \
1368 yychar = (Token); \
1369 yylval = (Value); \
1370 YYPOPSTACK (1); \
1371 goto yybackup; \
1372 } \
1373 else \
1374 { \
1372 #define YYBACKUP(Token, Value) \
1373 do \
1374 if (yychar == YYEMPTY) \
1375 { \
1376 yychar = (Token); \
1377 yylval = (Value); \
1378 YYPOPSTACK (yylen); \
1379 yystate = *yyssp; \
1380 goto yybackup; \
1381 } \
1382 else \
1383 { \
13751384 yyerror (YY_("syntax error: cannot back up")); \
13761385 YYERROR; \
13771386 } \
13811390 #define YYTERROR 1
13821391 #define YYERRCODE 256
13831392
1384
13851393 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
13861394 If N is 0, then set CURRENT to the empty location which ends
13871395 the previous symbol: RHS[0] (always defined). */
13881396
1397 #ifndef YYLLOC_DEFAULT
1398 # define YYLLOC_DEFAULT(Current, Rhs, N) \
1399 do \
1400 if (YYID (N)) \
1401 { \
1402 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
1403 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
1404 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
1405 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
1406 } \
1407 else \
1408 { \
1409 (Current).first_line = (Current).last_line = \
1410 YYRHSLOC (Rhs, 0).last_line; \
1411 (Current).first_column = (Current).last_column = \
1412 YYRHSLOC (Rhs, 0).last_column; \
1413 } \
1414 while (YYID (0))
1415 #endif
1416
13891417 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
1390 #ifndef YYLLOC_DEFAULT
1391 # define YYLLOC_DEFAULT(Current, Rhs, N) \
1392 do \
1393 if (YYID (N)) \
1394 { \
1395 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
1396 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
1397 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
1398 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
1399 } \
1400 else \
1401 { \
1402 (Current).first_line = (Current).last_line = \
1403 YYRHSLOC (Rhs, 0).last_line; \
1404 (Current).first_column = (Current).last_column = \
1405 YYRHSLOC (Rhs, 0).last_column; \
1406 } \
1407 while (YYID (0))
1408 #endif
1418
14091419
14101420
14111421 /* This macro is provided for backward compatibility. */
14661476 YYSTYPE const * const yyvaluep;
14671477 #endif
14681478 {
1479 FILE *yyo = yyoutput;
1480 YYUSE (yyo);
14691481 if (!yyvaluep)
14701482 return;
14711483 # ifdef YYPRINT
17171729 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
17181730 yytype_int16 *yyssp, int yytoken)
17191731 {
1720 YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
1732 YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
17211733 YYSIZE_T yysize = yysize0;
17221734 YYSIZE_T yysize1;
17231735 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
17241736 /* Internationalized format string. */
1725 const char *yyformat = 0;
1737 const char *yyformat = YY_NULL;
17261738 /* Arguments of yyformat. */
17271739 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
17281740 /* Number of reported tokens (one for the "unexpected", one per
17821794 break;
17831795 }
17841796 yyarg[yycount++] = yytname[yyx];
1785 yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1797 yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
17861798 if (! (yysize <= yysize1
17871799 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
17881800 return 2;
18741886 }
18751887
18761888
1877 /* Prevent warnings from -Wmissing-prototypes. */
1878 #ifdef YYPARSE_PARAM
1879 #if defined __STDC__ || defined __cplusplus
1880 int yyparse (void *YYPARSE_PARAM);
1881 #else
1882 int yyparse ();
1883 #endif
1884 #else /* ! YYPARSE_PARAM */
1885 #if defined __STDC__ || defined __cplusplus
1886 int yyparse (void);
1887 #else
1888 int yyparse ();
1889 #endif
1890 #endif /* ! YYPARSE_PARAM */
18911889
18921890
18931891 /* The lookahead symbol. */
19341932 `yyss': related to states.
19351933 `yyvs': related to semantic values.
19361934
1937 Refer to the stacks thru separate pointers, to allow yyoverflow
1935 Refer to the stacks through separate pointers, to allow yyoverflow
19381936 to reallocate them elsewhere. */
19391937
19401938 /* The state stack. */
19881986 The wasted elements are never initialized. */
19891987 yyssp = yyss;
19901988 yyvsp = yyvs;
1991
19921989 goto yysetstate;
19931990
19941991 /*------------------------------------------------------------.
21662163 switch (yyn)
21672164 {
21682165 case 2:
2169
2170 /* Line 1806 of yacc.c */
2171 #line 192 "camp.y"
2166 /* Line 1787 of yacc.c */
2167 #line 191 "camp.y"
21722168 { absyntax::root = (yyvsp[(1) - (1)].b); }
21732169 break;
21742170
21752171 case 3:
2176
2177 /* Line 1806 of yacc.c */
2178 #line 196 "camp.y"
2172 /* Line 1787 of yacc.c */
2173 #line 195 "camp.y"
21792174 { (yyval.b) = new file(lexerPos(), false); }
21802175 break;
21812176
21822177 case 4:
2183
2184 /* Line 1806 of yacc.c */
2185 #line 198 "camp.y"
2178 /* Line 1787 of yacc.c */
2179 #line 197 "camp.y"
21862180 { (yyval.b) = (yyvsp[(1) - (2)].b); (yyval.b)->add((yyvsp[(2) - (2)].run)); }
21872181 break;
21882182
21892183 case 5:
2190
2191 /* Line 1806 of yacc.c */
2192 #line 202 "camp.y"
2184 /* Line 1787 of yacc.c */
2185 #line 201 "camp.y"
21932186 { (yyval.b) = new block(lexerPos(), true); }
21942187 break;
21952188
21962189 case 6:
2197
2198 /* Line 1806 of yacc.c */
2199 #line 204 "camp.y"
2190 /* Line 1787 of yacc.c */
2191 #line 203 "camp.y"
22002192 { (yyval.b) = (yyvsp[(1) - (2)].b); (yyval.b)->add((yyvsp[(2) - (2)].run)); }
22012193 break;
22022194
22032195 case 7:
2204
2205 /* Line 1806 of yacc.c */
2196 /* Line 1787 of yacc.c */
2197 #line 207 "camp.y"
2198 { (yyval.n) = new simpleName((yyvsp[(1) - (1)].ps).pos, (yyvsp[(1) - (1)].ps).sym); }
2199 break;
2200
2201 case 8:
2202 /* Line 1787 of yacc.c */
22062203 #line 208 "camp.y"
2207 { (yyval.n) = new simpleName((yyvsp[(1) - (1)].ps).pos, (yyvsp[(1) - (1)].ps).sym); }
2208 break;
2209
2210 case 8:
2211
2212 /* Line 1806 of yacc.c */
2204 { (yyval.n) = new qualifiedName((yyvsp[(2) - (3)].pos), (yyvsp[(1) - (3)].n), (yyvsp[(3) - (3)].ps).sym); }
2205 break;
2206
2207 case 9:
2208 /* Line 1787 of yacc.c */
22132209 #line 209 "camp.y"
2214 { (yyval.n) = new qualifiedName((yyvsp[(2) - (3)].pos), (yyvsp[(1) - (3)].n), (yyvsp[(3) - (3)].ps).sym); }
2215 break;
2216
2217 case 9:
2218
2219 /* Line 1806 of yacc.c */
2220 #line 210 "camp.y"
22212210 { (yyval.n) = new simpleName((yyvsp[(1) - (1)].ps).pos,
22222211 symbol::trans("operator answer")); }
22232212 break;
22242213
22252214 case 10:
2226
2227 /* Line 1806 of yacc.c */
2215 /* Line 1787 of yacc.c */
2216 #line 214 "camp.y"
2217 { (yyval.run) = (yyvsp[(1) - (1)].d); }
2218 break;
2219
2220 case 11:
2221 /* Line 1787 of yacc.c */
22282222 #line 215 "camp.y"
2229 { (yyval.run) = (yyvsp[(1) - (1)].d); }
2230 break;
2231
2232 case 11:
2233
2234 /* Line 1806 of yacc.c */
2235 #line 216 "camp.y"
22362223 { (yyval.run) = (yyvsp[(1) - (1)].s); }
22372224 break;
22382225
22392226 case 12:
2240
2241 /* Line 1806 of yacc.c */
2242 #line 218 "camp.y"
2227 /* Line 1787 of yacc.c */
2228 #line 217 "camp.y"
22432229 { (yyval.run) = new modifiedRunnable((yyvsp[(1) - (2)].ml)->getPos(), (yyvsp[(1) - (2)].ml), (yyvsp[(2) - (2)].d)); }
22442230 break;
22452231
22462232 case 13:
2247
2248 /* Line 1806 of yacc.c */
2249 #line 220 "camp.y"
2233 /* Line 1787 of yacc.c */
2234 #line 219 "camp.y"
22502235 { (yyval.run) = new modifiedRunnable((yyvsp[(1) - (2)].ml)->getPos(), (yyvsp[(1) - (2)].ml), (yyvsp[(2) - (2)].s)); }
22512236 break;
22522237
22532238 case 14:
2254
2255 /* Line 1806 of yacc.c */
2239 /* Line 1787 of yacc.c */
2240 #line 223 "camp.y"
2241 { (yyval.ml) = new modifierList((yyvsp[(1) - (1)].mod).pos); (yyval.ml)->add((yyvsp[(1) - (1)].mod).val); }
2242 break;
2243
2244 case 15:
2245 /* Line 1787 of yacc.c */
22562246 #line 224 "camp.y"
2257 { (yyval.ml) = new modifierList((yyvsp[(1) - (1)].mod).pos); (yyval.ml)->add((yyvsp[(1) - (1)].mod).val); }
2258 break;
2259
2260 case 15:
2261
2262 /* Line 1806 of yacc.c */
2263 #line 225 "camp.y"
22642247 { (yyval.ml) = new modifierList((yyvsp[(1) - (1)].perm).pos); (yyval.ml)->add((yyvsp[(1) - (1)].perm).val); }
22652248 break;
22662249
22672250 case 16:
2268
2269 /* Line 1806 of yacc.c */
2270 #line 227 "camp.y"
2251 /* Line 1787 of yacc.c */
2252 #line 226 "camp.y"
22712253 { (yyval.ml) = (yyvsp[(1) - (2)].ml); (yyval.ml)->add((yyvsp[(2) - (2)].mod).val); }
22722254 break;
22732255
22742256 case 17:
2275
2276 /* Line 1806 of yacc.c */
2277 #line 229 "camp.y"
2257 /* Line 1787 of yacc.c */
2258 #line 228 "camp.y"
22782259 { (yyval.ml) = (yyvsp[(1) - (2)].ml); (yyval.ml)->add((yyvsp[(2) - (2)].perm).val); }
22792260 break;
22802261
22812262 case 18:
2282
2283 /* Line 1806 of yacc.c */
2263 /* Line 1787 of yacc.c */
2264 #line 232 "camp.y"
2265 { (yyval.d) = (yyvsp[(1) - (1)].vd); }
2266 break;
2267
2268 case 19:
2269 /* Line 1787 of yacc.c */
22842270 #line 233 "camp.y"
2285 { (yyval.d) = (yyvsp[(1) - (1)].vd); }
2286 break;
2287
2288 case 19:
2289
2290 /* Line 1806 of yacc.c */
2271 { (yyval.d) = (yyvsp[(1) - (1)].d); }
2272 break;
2273
2274 case 20:
2275 /* Line 1787 of yacc.c */
22912276 #line 234 "camp.y"
22922277 { (yyval.d) = (yyvsp[(1) - (1)].d); }
22932278 break;
22942279
2295 case 20:
2296
2297 /* Line 1806 of yacc.c */
2298 #line 235 "camp.y"
2299 { (yyval.d) = (yyvsp[(1) - (1)].d); }
2300 break;
2301
23022280 case 21:
2303
2304 /* Line 1806 of yacc.c */
2305 #line 237 "camp.y"
2281 /* Line 1787 of yacc.c */
2282 #line 236 "camp.y"
23062283 { (yyval.d) = new accessdec((yyvsp[(1) - (3)].pos), (yyvsp[(2) - (3)].ipl)); }
23072284 break;
23082285
23092286 case 22:
2310
2311 /* Line 1806 of yacc.c */
2312 #line 239 "camp.y"
2287 /* Line 1787 of yacc.c */
2288 #line 238 "camp.y"
23132289 { (yyval.d) = new unraveldec((yyvsp[(1) - (5)].pos), (yyvsp[(2) - (5)].n), (yyvsp[(4) - (5)].ipl)); }
23142290 break;
23152291
23162292 case 23:
2317
2318 /* Line 1806 of yacc.c */
2293 /* Line 1787 of yacc.c */
2294 #line 240 "camp.y"
2295 { (yyval.d) = new unraveldec((yyvsp[(1) - (5)].pos), (yyvsp[(2) - (5)].n), WILDCARD); }
2296 break;
2297
2298 case 24:
2299 /* Line 1787 of yacc.c */
23192300 #line 241 "camp.y"
2320 { (yyval.d) = new unraveldec((yyvsp[(1) - (5)].pos), (yyvsp[(2) - (5)].n), WILDCARD); }
2321 break;
2322
2323 case 24:
2324
2325 /* Line 1806 of yacc.c */
2326 #line 242 "camp.y"
23272301 { (yyval.d) = new unraveldec((yyvsp[(1) - (3)].pos), (yyvsp[(2) - (3)].n), WILDCARD); }
23282302 break;
23292303
23302304 case 25:
2331
2332 /* Line 1806 of yacc.c */
2333 #line 244 "camp.y"
2305 /* Line 1787 of yacc.c */
2306 #line 243 "camp.y"
23342307 { (yyval.d) = new fromaccessdec((yyvsp[(1) - (5)].pos), (yyvsp[(2) - (5)].ps).sym, (yyvsp[(4) - (5)].ipl)); }
23352308 break;
23362309
23372310 case 26:
2338
2339 /* Line 1806 of yacc.c */
2340 #line 246 "camp.y"
2311 /* Line 1787 of yacc.c */
2312 #line 245 "camp.y"
23412313 { (yyval.d) = new fromaccessdec((yyvsp[(1) - (5)].pos), (yyvsp[(2) - (5)].ps).sym, WILDCARD); }
23422314 break;
23432315
23442316 case 27:
2345
2346 /* Line 1806 of yacc.c */
2317 /* Line 1787 of yacc.c */
2318 #line 247 "camp.y"
2319 { (yyval.d) = new importdec((yyvsp[(1) - (3)].pos), (yyvsp[(2) - (3)].ip)); }
2320 break;
2321
2322 case 28:
2323 /* Line 1787 of yacc.c */
23472324 #line 248 "camp.y"
2348 { (yyval.d) = new importdec((yyvsp[(1) - (3)].pos), (yyvsp[(2) - (3)].ip)); }
2349 break;
2350
2351 case 28:
2352
2353 /* Line 1806 of yacc.c */
2354 #line 249 "camp.y"
23552325 { (yyval.d) = new includedec((yyvsp[(1) - (3)].pos), (yyvsp[(2) - (3)].ps).sym); }
23562326 break;
23572327
23582328 case 29:
2359
2360 /* Line 1806 of yacc.c */
2361 #line 251 "camp.y"
2329 /* Line 1787 of yacc.c */
2330 #line 250 "camp.y"
23622331 { (yyval.d) = new includedec((yyvsp[(1) - (3)].pos), (yyvsp[(2) - (3)].stre)->getString()); }
23632332 break;
23642333
23652334 case 30:
2366
2367 /* Line 1806 of yacc.c */
2368 #line 255 "camp.y"
2335 /* Line 1787 of yacc.c */
2336 #line 254 "camp.y"
23692337 { (yyval.ip) = new idpair((yyvsp[(1) - (1)].ps).pos, (yyvsp[(1) - (1)].ps).sym); }
23702338 break;
23712339
23722340 case 31:
2373
2374 /* Line 1806 of yacc.c */
2375 #line 257 "camp.y"
2341 /* Line 1787 of yacc.c */
2342 #line 256 "camp.y"
23762343 { (yyval.ip) = new idpair((yyvsp[(1) - (3)].ps).pos, (yyvsp[(1) - (3)].ps).sym, (yyvsp[(2) - (3)].ps).sym , (yyvsp[(3) - (3)].ps).sym); }
23772344 break;
23782345
23792346 case 32:
2380
2381 /* Line 1806 of yacc.c */
2382 #line 261 "camp.y"
2347 /* Line 1787 of yacc.c */
2348 #line 260 "camp.y"
23832349 { (yyval.ipl) = new idpairlist(); (yyval.ipl)->add((yyvsp[(1) - (1)].ip)); }
23842350 break;
23852351
23862352 case 33:
2387
2388 /* Line 1806 of yacc.c */
2389 #line 263 "camp.y"
2353 /* Line 1787 of yacc.c */
2354 #line 262 "camp.y"
23902355 { (yyval.ipl) = (yyvsp[(1) - (3)].ipl); (yyval.ipl)->add((yyvsp[(3) - (3)].ip)); }
23912356 break;
23922357
23932358 case 34:
2394
2395 /* Line 1806 of yacc.c */
2359 /* Line 1787 of yacc.c */
2360 #line 266 "camp.y"
2361 { (yyval.ps) = (yyvsp[(1) - (1)].ps); }
2362 break;
2363
2364 case 35:
2365 /* Line 1787 of yacc.c */
23962366 #line 267 "camp.y"
2397 { (yyval.ps) = (yyvsp[(1) - (1)].ps); }
2398 break;
2399
2400 case 35:
2401
2402 /* Line 1806 of yacc.c */
2403 #line 268 "camp.y"
24042367 { (yyval.ps).pos = (yyvsp[(1) - (1)].stre)->getPos();
24052368 (yyval.ps).sym = symbol::literalTrans((yyvsp[(1) - (1)].stre)->getString()); }
24062369 break;
24072370
24082371 case 36:
2409
2410 /* Line 1806 of yacc.c */
2411 #line 273 "camp.y"
2372 /* Line 1787 of yacc.c */
2373 #line 272 "camp.y"
24122374 { (yyval.ip) = new idpair((yyvsp[(1) - (1)].ps).pos, (yyvsp[(1) - (1)].ps).sym); }
24132375 break;
24142376
24152377 case 37:
2416
2417 /* Line 1806 of yacc.c */
2418 #line 275 "camp.y"
2378 /* Line 1787 of yacc.c */
2379 #line 274 "camp.y"
24192380 { (yyval.ip) = new idpair((yyvsp[(1) - (3)].ps).pos, (yyvsp[(1) - (3)].ps).sym, (yyvsp[(2) - (3)].ps).sym , (yyvsp[(3) - (3)].ps).sym); }
24202381 break;
24212382
24222383 case 38:
2423
2424 /* Line 1806 of yacc.c */
2425 #line 279 "camp.y"
2384 /* Line 1787 of yacc.c */
2385 #line 278 "camp.y"
24262386 { (yyval.ipl) = new idpairlist(); (yyval.ipl)->add((yyvsp[(1) - (1)].ip)); }
24272387 break;
24282388
24292389 case 39:
2430
2431 /* Line 1806 of yacc.c */
2432 #line 281 "camp.y"
2390 /* Line 1787 of yacc.c */
2391 #line 280 "camp.y"
24332392 { (yyval.ipl) = (yyvsp[(1) - (3)].ipl); (yyval.ipl)->add((yyvsp[(3) - (3)].ip)); }
24342393 break;
24352394
24362395 case 40:
2437
2438 /* Line 1806 of yacc.c */
2439 #line 285 "camp.y"
2396 /* Line 1787 of yacc.c */
2397 #line 284 "camp.y"
24402398 { (yyval.vd) = (yyvsp[(1) - (2)].vd); }
24412399 break;
24422400
24432401 case 41:
2444
2445 /* Line 1806 of yacc.c */
2446 #line 289 "camp.y"
2402 /* Line 1787 of yacc.c */
2403 #line 288 "camp.y"
24472404 { (yyval.vd) = new vardec((yyvsp[(1) - (2)].t)->getPos(), (yyvsp[(1) - (2)].t), (yyvsp[(2) - (2)].dil)); }
24482405 break;
24492406
24502407 case 42:
2451
2452 /* Line 1806 of yacc.c */
2408 /* Line 1787 of yacc.c */
2409 #line 292 "camp.y"
2410 { (yyval.t) = (yyvsp[(1) - (1)].t); }
2411 break;
2412
2413 case 43:
2414 /* Line 1787 of yacc.c */
24532415 #line 293 "camp.y"
2454 { (yyval.t) = (yyvsp[(1) - (1)].t); }
2455 break;
2456
2457 case 43:
2458
2459 /* Line 1806 of yacc.c */
2460 #line 294 "camp.y"
24612416 { (yyval.t) = new arrayTy((yyvsp[(1) - (2)].n), (yyvsp[(2) - (2)].dim)); }
24622417 break;
24632418
24642419 case 44:
2465
2466 /* Line 1806 of yacc.c */
2467 #line 298 "camp.y"
2420 /* Line 1787 of yacc.c */
2421 #line 297 "camp.y"
24682422 { (yyval.t) = new nameTy((yyvsp[(1) - (1)].n)); }
24692423 break;
24702424
24712425 case 45:
2472
2473 /* Line 1806 of yacc.c */
2426 /* Line 1787 of yacc.c */
2427 #line 301 "camp.y"
2428 { (yyval.dim) = new dimensions((yyvsp[(1) - (2)].pos)); }
2429 break;
2430
2431 case 46:
2432 /* Line 1787 of yacc.c */
24742433 #line 302 "camp.y"
2475 { (yyval.dim) = new dimensions((yyvsp[(1) - (2)].pos)); }
2476 break;
2477
2478 case 46:
2479
2480 /* Line 1806 of yacc.c */
2481 #line 303 "camp.y"
24822434 { (yyval.dim) = (yyvsp[(1) - (3)].dim); (yyval.dim)->increase(); }
24832435 break;
24842436
24852437 case 47:
2486
2487 /* Line 1806 of yacc.c */
2488 #line 307 "camp.y"
2438 /* Line 1787 of yacc.c */
2439 #line 306 "camp.y"
24892440 { (yyval.elist) = new explist((yyvsp[(1) - (3)].pos)); (yyval.elist)->add((yyvsp[(2) - (3)].e)); }
24902441 break;
24912442
24922443 case 48:
2493
2494 /* Line 1806 of yacc.c */
2495 #line 309 "camp.y"
2444 /* Line 1787 of yacc.c */
2445 #line 308 "camp.y"
24962446 { (yyval.elist) = (yyvsp[(1) - (4)].elist); (yyval.elist)->add((yyvsp[(3) - (4)].e)); }
24972447 break;
24982448
24992449 case 49:
2500
2501 /* Line 1806 of yacc.c */
2502 #line 313 "camp.y"
2450 /* Line 1787 of yacc.c */
2451 #line 312 "camp.y"
25032452 { (yyval.dil) = new decidlist((yyvsp[(1) - (1)].di)->getPos()); (yyval.dil)->add((yyvsp[(1) - (1)].di)); }
25042453 break;
25052454
25062455 case 50:
2507
2508 /* Line 1806 of yacc.c */
2509 #line 315 "camp.y"
2456 /* Line 1787 of yacc.c */
2457 #line 314 "camp.y"
25102458 { (yyval.dil) = (yyvsp[(1) - (3)].dil); (yyval.dil)->add((yyvsp[(3) - (3)].di)); }
25112459 break;
25122460
25132461 case 51:
2514
2515 /* Line 1806 of yacc.c */
2516 #line 319 "camp.y"
2462 /* Line 1787 of yacc.c */
2463 #line 318 "camp.y"
25172464 { (yyval.di) = new decid((yyvsp[(1) - (1)].dis)->getPos(), (yyvsp[(1) - (1)].dis)); }
25182465 break;
25192466
25202467 case 52:
2521
2522 /* Line 1806 of yacc.c */
2523 #line 321 "camp.y"
2468 /* Line 1787 of yacc.c */
2469 #line 320 "camp.y"
25242470 { (yyval.di) = new decid((yyvsp[(1) - (3)].dis)->getPos(), (yyvsp[(1) - (3)].dis), (yyvsp[(3) - (3)].vi)); }
25252471 break;
25262472
25272473 case 53:
2528
2529 /* Line 1806 of yacc.c */
2474 /* Line 1787 of yacc.c */
2475 #line 324 "camp.y"
2476 { (yyval.dis) = new decidstart((yyvsp[(1) - (1)].ps).pos, (yyvsp[(1) - (1)].ps).sym); }
2477 break;
2478
2479 case 54:
2480 /* Line 1787 of yacc.c */
25302481 #line 325 "camp.y"
2531 { (yyval.dis) = new decidstart((yyvsp[(1) - (1)].ps).pos, (yyvsp[(1) - (1)].ps).sym); }
2532 break;
2533
2534 case 54:
2535
2536 /* Line 1806 of yacc.c */
2482 { (yyval.dis) = new decidstart((yyvsp[(1) - (2)].ps).pos, (yyvsp[(1) - (2)].ps).sym, (yyvsp[(2) - (2)].dim)); }
2483 break;
2484
2485 case 55:
2486 /* Line 1787 of yacc.c */
25372487 #line 326 "camp.y"
2538 { (yyval.dis) = new decidstart((yyvsp[(1) - (2)].ps).pos, (yyvsp[(1) - (2)].ps).sym, (yyvsp[(2) - (2)].dim)); }
2539 break;
2540
2541 case 55:
2542
2543 /* Line 1806 of yacc.c */
2544 #line 327 "camp.y"
25452488 { (yyval.dis) = new fundecidstart((yyvsp[(1) - (3)].ps).pos, (yyvsp[(1) - (3)].ps).sym, 0,
25462489 new formals((yyvsp[(2) - (3)].pos))); }
25472490 break;
25482491
25492492 case 56:
2550
2551 /* Line 1806 of yacc.c */
2552 #line 330 "camp.y"
2493 /* Line 1787 of yacc.c */
2494 #line 329 "camp.y"
25532495 { (yyval.dis) = new fundecidstart((yyvsp[(1) - (4)].ps).pos, (yyvsp[(1) - (4)].ps).sym, 0, (yyvsp[(3) - (4)].fls)); }
25542496 break;
25552497
25562498 case 57:
2557
2558 /* Line 1806 of yacc.c */
2499 /* Line 1787 of yacc.c */
2500 #line 333 "camp.y"
2501 { (yyval.vi) = (yyvsp[(1) - (1)].e); }
2502 break;
2503
2504 case 58:
2505 /* Line 1787 of yacc.c */
25592506 #line 334 "camp.y"
2560 { (yyval.vi) = (yyvsp[(1) - (1)].e); }
2561 break;
2562
2563 case 58:
2564
2565 /* Line 1806 of yacc.c */
2566 #line 335 "camp.y"
25672507 { (yyval.vi) = (yyvsp[(1) - (1)].ai); }
25682508 break;
25692509
25702510 case 59:
2571
2572 /* Line 1806 of yacc.c */
2573 #line 340 "camp.y"
2511 /* Line 1787 of yacc.c */
2512 #line 339 "camp.y"
25742513 { (yyval.b) = (yyvsp[(2) - (3)].b); }
25752514 break;
25762515
25772516 case 60:
2578
2579 /* Line 1806 of yacc.c */
2580 #line 344 "camp.y"
2517 /* Line 1787 of yacc.c */
2518 #line 343 "camp.y"
25812519 { (yyval.ai) = new arrayinit((yyvsp[(1) - (2)].pos)); }
25822520 break;
25832521
25842522 case 61:
2585
2586 /* Line 1806 of yacc.c */
2587 #line 346 "camp.y"
2523 /* Line 1787 of yacc.c */
2524 #line 345 "camp.y"
25882525 { (yyval.ai) = new arrayinit((yyvsp[(1) - (4)].pos)); (yyval.ai)->addRest((yyvsp[(3) - (4)].vi)); }
25892526 break;
25902527
25912528 case 62:
2592
2593 /* Line 1806 of yacc.c */
2594 #line 348 "camp.y"
2529 /* Line 1787 of yacc.c */
2530 #line 347 "camp.y"
25952531 { (yyval.ai) = (yyvsp[(2) - (3)].ai); }
25962532 break;
25972533
25982534 case 63:
2599
2600 /* Line 1806 of yacc.c */
2601 #line 350 "camp.y"
2535 /* Line 1787 of yacc.c */
2536 #line 349 "camp.y"
26022537 { (yyval.ai) = (yyvsp[(2) - (5)].ai); (yyval.ai)->addRest((yyvsp[(4) - (5)].vi)); }
26032538 break;
26042539
26052540 case 64:
2606
2607 /* Line 1806 of yacc.c */
2541 /* Line 1787 of yacc.c */
2542 #line 353 "camp.y"
2543 { (yyval.ai) = new arrayinit((yyvsp[(1) - (1)].pos)); }
2544 break;
2545
2546 case 65:
2547 /* Line 1787 of yacc.c */
26082548 #line 354 "camp.y"
2609 { (yyval.ai) = new arrayinit((yyvsp[(1) - (1)].pos)); }
2610 break;
2611
2612 case 65:
2613
2614 /* Line 1806 of yacc.c */
2549 { (yyval.ai) = (yyvsp[(1) - (1)].ai); }
2550 break;
2551
2552 case 66:
2553 /* Line 1787 of yacc.c */
26152554 #line 355 "camp.y"
2616 { (yyval.ai) = (yyvsp[(1) - (1)].ai); }
2617 break;
2618
2619 case 66:
2620
2621 /* Line 1806 of yacc.c */
2622 #line 356 "camp.y"
26232555 { (yyval.ai) = (yyvsp[(1) - (2)].ai); }
26242556 break;
26252557
26262558 case 67:
2627
2628 /* Line 1806 of yacc.c */
2629 #line 360 "camp.y"
2559 /* Line 1787 of yacc.c */
2560 #line 359 "camp.y"
26302561 { (yyval.ai) = new arrayinit((yyvsp[(1) - (1)].vi)->getPos());
26312562 (yyval.ai)->add((yyvsp[(1) - (1)].vi));}
26322563 break;
26332564
26342565 case 68:
2635
2636 /* Line 1806 of yacc.c */
2637 #line 363 "camp.y"
2566 /* Line 1787 of yacc.c */
2567 #line 362 "camp.y"
26382568 { (yyval.ai) = (yyvsp[(1) - (3)].ai); (yyval.ai)->add((yyvsp[(3) - (3)].vi)); }
26392569 break;
26402570
26412571 case 69:
2642
2643 /* Line 1806 of yacc.c */
2572 /* Line 1787 of yacc.c */
2573 #line 366 "camp.y"
2574 { (yyval.fls) = new formals((yyvsp[(1) - (1)].fl)->getPos()); (yyval.fls)->add((yyvsp[(1) - (1)].fl)); }
2575 break;
2576
2577 case 70:
2578 /* Line 1787 of yacc.c */
26442579 #line 367 "camp.y"
2645 { (yyval.fls) = new formals((yyvsp[(1) - (1)].fl)->getPos()); (yyval.fls)->add((yyvsp[(1) - (1)].fl)); }
2646 break;
2647
2648 case 70:
2649
2650 /* Line 1806 of yacc.c */
2651 #line 368 "camp.y"
26522580 { (yyval.fls) = new formals((yyvsp[(1) - (2)].pos)); (yyval.fls)->addRest((yyvsp[(2) - (2)].fl)); }
26532581 break;
26542582
26552583 case 71:
2656
2657 /* Line 1806 of yacc.c */
2658 #line 370 "camp.y"
2584 /* Line 1787 of yacc.c */
2585 #line 369 "camp.y"
26592586 { (yyval.fls) = (yyvsp[(1) - (3)].fls); (yyval.fls)->add((yyvsp[(3) - (3)].fl)); }
26602587 break;
26612588
26622589 case 72:
2663
2664 /* Line 1806 of yacc.c */
2665 #line 372 "camp.y"
2590 /* Line 1787 of yacc.c */
2591 #line 371 "camp.y"
26662592 { (yyval.fls) = (yyvsp[(1) - (3)].fls); (yyval.fls)->addRest((yyvsp[(3) - (3)].fl)); }
26672593 break;
26682594
26692595 case 73:
2670
2671 /* Line 1806 of yacc.c */
2596 /* Line 1787 of yacc.c */
2597 #line 375 "camp.y"
2598 { (yyval.boo) = true; }
2599 break;
2600
2601 case 74:
2602 /* Line 1787 of yacc.c */
26722603 #line 376 "camp.y"
2673 { (yyval.boo) = true; }
2674 break;
2675
2676 case 74:
2677
2678 /* Line 1806 of yacc.c */
2679 #line 377 "camp.y"
26802604 { (yyval.boo) = false; }
26812605 break;
26822606
26832607 case 75:
2684
2685 /* Line 1806 of yacc.c */
2686 #line 382 "camp.y"
2608 /* Line 1787 of yacc.c */
2609 #line 381 "camp.y"
26872610 { (yyval.fl) = new formal((yyvsp[(2) - (2)].t)->getPos(), (yyvsp[(2) - (2)].t), 0, 0, (yyvsp[(1) - (2)].boo), 0); }
26882611 break;
26892612
26902613 case 76:
2691
2692 /* Line 1806 of yacc.c */
2693 #line 384 "camp.y"
2614 /* Line 1787 of yacc.c */
2615 #line 383 "camp.y"
26942616 { (yyval.fl) = new formal((yyvsp[(2) - (3)].t)->getPos(), (yyvsp[(2) - (3)].t), (yyvsp[(3) - (3)].dis), 0, (yyvsp[(1) - (3)].boo), 0); }
26952617 break;
26962618
26972619 case 77:
2698
2699 /* Line 1806 of yacc.c */
2700 #line 386 "camp.y"
2620 /* Line 1787 of yacc.c */
2621 #line 385 "camp.y"
27012622 { (yyval.fl) = new formal((yyvsp[(2) - (5)].t)->getPos(), (yyvsp[(2) - (5)].t), (yyvsp[(3) - (5)].dis), (yyvsp[(5) - (5)].vi), (yyvsp[(1) - (5)].boo), 0); }
27022623 break;
27032624
27042625 case 78:
2705
2706 /* Line 1806 of yacc.c */
2707 #line 389 "camp.y"
2626 /* Line 1787 of yacc.c */
2627 #line 388 "camp.y"
27082628 { bool k = checkKeyword((yyvsp[(3) - (4)].ps).pos, (yyvsp[(3) - (4)].ps).sym);
27092629 (yyval.fl) = new formal((yyvsp[(2) - (4)].t)->getPos(), (yyvsp[(2) - (4)].t), (yyvsp[(4) - (4)].dis), 0, (yyvsp[(1) - (4)].boo), k); }
27102630 break;
27112631
27122632 case 79:
2713
2714 /* Line 1806 of yacc.c */
2715 #line 392 "camp.y"
2633 /* Line 1787 of yacc.c */
2634 #line 391 "camp.y"
27162635 { bool k = checkKeyword((yyvsp[(3) - (6)].ps).pos, (yyvsp[(3) - (6)].ps).sym);
27172636 (yyval.fl) = new formal((yyvsp[(2) - (6)].t)->getPos(), (yyvsp[(2) - (6)].t), (yyvsp[(4) - (6)].dis), (yyvsp[(6) - (6)].vi), (yyvsp[(1) - (6)].boo), k); }
27182637 break;
27192638
27202639 case 80:
2721
2722 /* Line 1806 of yacc.c */
2723 #line 398 "camp.y"
2640 /* Line 1787 of yacc.c */
2641 #line 397 "camp.y"
27242642 { (yyval.d) = new fundec((yyvsp[(3) - (5)].pos), (yyvsp[(1) - (5)].t), (yyvsp[(2) - (5)].ps).sym, new formals((yyvsp[(3) - (5)].pos)), (yyvsp[(5) - (5)].s)); }
27252643 break;
27262644
27272645 case 81:
2728
2729 /* Line 1806 of yacc.c */
2730 #line 400 "camp.y"
2646 /* Line 1787 of yacc.c */
2647 #line 399 "camp.y"
27312648 { (yyval.d) = new fundec((yyvsp[(3) - (6)].pos), (yyvsp[(1) - (6)].t), (yyvsp[(2) - (6)].ps).sym, (yyvsp[(4) - (6)].fls), (yyvsp[(6) - (6)].s)); }
27322649 break;
27332650
27342651 case 82:
2735
2736 /* Line 1806 of yacc.c */
2652 /* Line 1787 of yacc.c */
2653 #line 403 "camp.y"
2654 { (yyval.d) = new recorddec((yyvsp[(1) - (3)].pos), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].b)); }
2655 break;
2656
2657 case 83:
2658 /* Line 1787 of yacc.c */
27372659 #line 404 "camp.y"
2738 { (yyval.d) = new recorddec((yyvsp[(1) - (3)].pos), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].b)); }
2739 break;
2740
2741 case 83:
2742
2743 /* Line 1806 of yacc.c */
2744 #line 405 "camp.y"
27452660 { (yyval.d) = new typedec((yyvsp[(1) - (2)].pos), (yyvsp[(2) - (2)].vd)); }
27462661 break;
27472662
27482663 case 84:
2749
2750 /* Line 1806 of yacc.c */
2664 /* Line 1787 of yacc.c */
2665 #line 408 "camp.y"
2666 { (yyval.slice) = new slice((yyvsp[(1) - (1)].pos), 0, 0); }
2667 break;
2668
2669 case 85:
2670 /* Line 1787 of yacc.c */
27512671 #line 409 "camp.y"
2752 { (yyval.slice) = new slice((yyvsp[(1) - (1)].pos), 0, 0); }
2753 break;
2754
2755 case 85:
2756
2757 /* Line 1806 of yacc.c */
2672 { (yyval.slice) = new slice((yyvsp[(2) - (2)].pos), (yyvsp[(1) - (2)].e), 0); }
2673 break;
2674
2675 case 86:
2676 /* Line 1787 of yacc.c */
27582677 #line 410 "camp.y"
2759 { (yyval.slice) = new slice((yyvsp[(2) - (2)].pos), (yyvsp[(1) - (2)].e), 0); }
2760 break;
2761
2762 case 86:
2763
2764 /* Line 1806 of yacc.c */
2678 { (yyval.slice) = new slice((yyvsp[(1) - (2)].pos), 0, (yyvsp[(2) - (2)].e)); }
2679 break;
2680
2681 case 87:
2682 /* Line 1787 of yacc.c */
27652683 #line 411 "camp.y"
2766 { (yyval.slice) = new slice((yyvsp[(1) - (2)].pos), 0, (yyvsp[(2) - (2)].e)); }
2767 break;
2768
2769 case 87:
2770
2771 /* Line 1806 of yacc.c */
2772 #line 412 "camp.y"
27732684 { (yyval.slice) = new slice((yyvsp[(2) - (3)].pos), (yyvsp[(1) - (3)].e), (yyvsp[(3) - (3)].e)); }
27742685 break;
27752686
27762687 case 88:
2777
2778 /* Line 1806 of yacc.c */
2688 /* Line 1787 of yacc.c */
2689 #line 415 "camp.y"
2690 { (yyval.e) = new fieldExp((yyvsp[(2) - (3)].pos), (yyvsp[(1) - (3)].e), (yyvsp[(3) - (3)].ps).sym); }
2691 break;
2692
2693 case 89:
2694 /* Line 1787 of yacc.c */
27792695 #line 416 "camp.y"
2780 { (yyval.e) = new fieldExp((yyvsp[(2) - (3)].pos), (yyvsp[(1) - (3)].e), (yyvsp[(3) - (3)].ps).sym); }
2781 break;
2782
2783 case 89:
2784
2785 /* Line 1806 of yacc.c */
2786 #line 417 "camp.y"
27872696 { (yyval.e) = new subscriptExp((yyvsp[(2) - (4)].pos),
27882697 new nameExp((yyvsp[(1) - (4)].n)->getPos(), (yyvsp[(1) - (4)].n)), (yyvsp[(3) - (4)].e)); }
27892698 break;
27902699
27912700 case 90:
2792
2793 /* Line 1806 of yacc.c */
2701 /* Line 1787 of yacc.c */
2702 #line 418 "camp.y"
2703 { (yyval.e) = new subscriptExp((yyvsp[(2) - (4)].pos), (yyvsp[(1) - (4)].e), (yyvsp[(3) - (4)].e)); }
2704 break;
2705
2706 case 91:
2707 /* Line 1787 of yacc.c */
27942708 #line 419 "camp.y"
2795 { (yyval.e) = new subscriptExp((yyvsp[(2) - (4)].pos), (yyvsp[(1) - (4)].e), (yyvsp[(3) - (4)].e)); }
2796 break;
2797
2798 case 91:
2799
2800 /* Line 1806 of yacc.c */
2801 #line 420 "camp.y"
28022709 { (yyval.e) = new sliceExp((yyvsp[(2) - (4)].pos),
28032710 new nameExp((yyvsp[(1) - (4)].n)->getPos(), (yyvsp[(1) - (4)].n)), (yyvsp[(3) - (4)].slice)); }
28042711 break;
28052712
28062713 case 92:
2807
2808 /* Line 1806 of yacc.c */
2714 /* Line 1787 of yacc.c */
2715 #line 421 "camp.y"
2716 { (yyval.e) = new sliceExp((yyvsp[(2) - (4)].pos), (yyvsp[(1) - (4)].e), (yyvsp[(3) - (4)].slice)); }
2717 break;
2718
2719 case 93:
2720 /* Line 1787 of yacc.c */
28092721 #line 422 "camp.y"
2810 { (yyval.e) = new sliceExp((yyvsp[(2) - (4)].pos), (yyvsp[(1) - (4)].e), (yyvsp[(3) - (4)].slice)); }
2811 break;
2812
2813 case 93:
2814
2815 /* Line 1806 of yacc.c */
2816 #line 423 "camp.y"
28172722 { (yyval.e) = new callExp((yyvsp[(2) - (3)].pos),
28182723 new nameExp((yyvsp[(1) - (3)].n)->getPos(), (yyvsp[(1) - (3)].n)),
28192724 new arglist()); }
28202725 break;
28212726
28222727 case 94:
2823
2824 /* Line 1806 of yacc.c */
2825 #line 427 "camp.y"
2728 /* Line 1787 of yacc.c */
2729 #line 426 "camp.y"
28262730 { (yyval.e) = new callExp((yyvsp[(2) - (4)].pos),
28272731 new nameExp((yyvsp[(1) - (4)].n)->getPos(), (yyvsp[(1) - (4)].n)),
28282732 (yyvsp[(3) - (4)].alist)); }
28292733 break;
28302734
28312735 case 95:
2832
2833 /* Line 1806 of yacc.c */
2834 #line 430 "camp.y"
2736 /* Line 1787 of yacc.c */
2737 #line 429 "camp.y"
28352738 { (yyval.e) = new callExp((yyvsp[(2) - (3)].pos), (yyvsp[(1) - (3)].e), new arglist()); }
28362739 break;
28372740
28382741 case 96:
2839
2840 /* Line 1806 of yacc.c */
2841 #line 432 "camp.y"
2742 /* Line 1787 of yacc.c */
2743 #line 431 "camp.y"
28422744 { (yyval.e) = new callExp((yyvsp[(2) - (4)].pos), (yyvsp[(1) - (4)].e), (yyvsp[(3) - (4)].alist)); }
28432745 break;
28442746
28452747 case 97:
2846
2847 /* Line 1806 of yacc.c */
2848 #line 434 "camp.y"
2748 /* Line 1787 of yacc.c */
2749 #line 433 "camp.y"
28492750 { (yyval.e) = (yyvsp[(2) - (3)].e); }
28502751 break;
28512752
28522753 case 98:
2853
2854 /* Line 1806 of yacc.c */
2754 /* Line 1787 of yacc.c */
2755 #line 435 "camp.y"
2756 { (yyval.e) = new nameExp((yyvsp[(2) - (3)].n)->getPos(), (yyvsp[(2) - (3)].n)); }
2757 break;
2758
2759 case 99:
2760 /* Line 1787 of yacc.c */
28552761 #line 436 "camp.y"
2856 { (yyval.e) = new nameExp((yyvsp[(2) - (3)].n)->getPos(), (yyvsp[(2) - (3)].n)); }
2857 break;
2858
2859 case 99:
2860
2861 /* Line 1806 of yacc.c */
2862 #line 437 "camp.y"
28632762 { (yyval.e) = new thisExp((yyvsp[(1) - (1)].pos)); }
28642763 break;
28652764
28662765 case 100:
2867
2868 /* Line 1806 of yacc.c */
2766 /* Line 1787 of yacc.c */
2767 #line 440 "camp.y"
2768 { (yyval.arg).name = symbol::nullsym; (yyval.arg).val=(yyvsp[(1) - (1)].e); }
2769 break;
2770
2771 case 101:
2772 /* Line 1787 of yacc.c */
28692773 #line 441 "camp.y"
2870 { (yyval.arg).name = symbol::nullsym; (yyval.arg).val=(yyvsp[(1) - (1)].e); }
2871 break;
2872
2873 case 101:
2874
2875 /* Line 1806 of yacc.c */
2876 #line 442 "camp.y"
28772774 { (yyval.arg).name = (yyvsp[(1) - (3)].ps).sym; (yyval.arg).val=(yyvsp[(3) - (3)].e); }
28782775 break;
28792776
28802777 case 102:
2881
2882 /* Line 1806 of yacc.c */
2883 #line 446 "camp.y"
2778 /* Line 1787 of yacc.c */
2779 #line 445 "camp.y"
28842780 { (yyval.alist) = new arglist(); (yyval.alist)->add((yyvsp[(1) - (1)].arg)); }
28852781 break;
28862782
28872783 case 103:
2888
2889 /* Line 1806 of yacc.c */
2890 #line 448 "camp.y"
2784 /* Line 1787 of yacc.c */
2785 #line 447 "camp.y"
28912786 { (yyval.alist) = new arglist(); (yyval.alist)->addRest((yyvsp[(2) - (2)].arg)); }
28922787 break;
28932788
28942789 case 104:
2895
2896 /* Line 1806 of yacc.c */
2897 #line 450 "camp.y"
2790 /* Line 1787 of yacc.c */
2791 #line 449 "camp.y"
28982792 { (yyval.alist) = (yyvsp[(1) - (3)].alist); (yyval.alist)->add((yyvsp[(3) - (3)].arg)); }
28992793 break;
29002794
29012795 case 105:
2902
2903 /* Line 1806 of yacc.c */
2904 #line 452 "camp.y"
2796 /* Line 1787 of yacc.c */
2797 #line 451 "camp.y"
29052798 { (yyval.alist) = (yyvsp[(1) - (3)].alist); (yyval.alist)->addRest((yyvsp[(3) - (3)].arg)); }
29062799 break;
29072800
29082801 case 106:
2909
2910 /* Line 1806 of yacc.c */
2802 /* Line 1787 of yacc.c */
2803 #line 456 "camp.y"
2804 { (yyval.alist) = new arglist(); (yyval.alist)->add((yyvsp[(1) - (3)].e)); (yyval.alist)->add((yyvsp[(3) - (3)].e)); }
2805 break;
2806
2807 case 107:
2808 /* Line 1787 of yacc.c */
29112809 #line 457 "camp.y"
2912 { (yyval.alist) = new arglist(); (yyval.alist)->add((yyvsp[(1) - (3)].e)); (yyval.alist)->add((yyvsp[(3) - (3)].e)); }
2913 break;
2914
2915 case 107:
2916
2917 /* Line 1806 of yacc.c */
2918 #line 458 "camp.y"
29192810 { (yyval.alist) = (yyvsp[(1) - (3)].alist); (yyval.alist)->add((yyvsp[(3) - (3)].e)); }
29202811 break;
29212812
29222813 case 108:
2923
2924 /* Line 1806 of yacc.c */
2814 /* Line 1787 of yacc.c */
2815 #line 461 "camp.y"
2816 { (yyval.e) = new nameExp((yyvsp[(1) - (1)].n)->getPos(), (yyvsp[(1) - (1)].n)); }
2817 break;
2818
2819 case 109:
2820 /* Line 1787 of yacc.c */
29252821 #line 462 "camp.y"
2926 { (yyval.e) = new nameExp((yyvsp[(1) - (1)].n)->getPos(), (yyvsp[(1) - (1)].n)); }
2927 break;
2928
2929 case 109:
2930
2931 /* Line 1806 of yacc.c */
2822 { (yyval.e) = (yyvsp[(1) - (1)].e); }
2823 break;
2824
2825 case 110:
2826 /* Line 1787 of yacc.c */
29322827 #line 463 "camp.y"
29332828 { (yyval.e) = (yyvsp[(1) - (1)].e); }
29342829 break;
29352830
2936 case 110:
2937
2938 /* Line 1806 of yacc.c */
2831 case 111:
2832 /* Line 1787 of yacc.c */
29392833 #line 464 "camp.y"
2940 { (yyval.e) = (yyvsp[(1) - (1)].e); }
2941 break;
2942
2943 case 111:
2944
2945 /* Line 1806 of yacc.c */
2946 #line 465 "camp.y"
29472834 { (yyval.e) = (yyvsp[(1) - (1)].stre); }
29482835 break;
29492836
29502837 case 112:
2951
2952 /* Line 1806 of yacc.c */
2953 #line 467 "camp.y"
2838 /* Line 1787 of yacc.c */
2839 #line 466 "camp.y"
29542840 { (yyval.e) = new scaleExp((yyvsp[(1) - (2)].e)->getPos(), (yyvsp[(1) - (2)].e), (yyvsp[(2) - (2)].e)); }
29552841 break;
29562842
29572843 case 113:
2958
2959 /* Line 1806 of yacc.c */
2960 #line 469 "camp.y"
2844 /* Line 1787 of yacc.c */
2845 #line 468 "camp.y"
29612846 { (yyval.e) = new castExp((yyvsp[(2) - (4)].n)->getPos(), new nameTy((yyvsp[(2) - (4)].n)), (yyvsp[(4) - (4)].e)); }
29622847 break;
29632848
29642849 case 114:
2965
2966 /* Line 1806 of yacc.c */
2967 #line 471 "camp.y"
2850 /* Line 1787 of yacc.c */
2851 #line 470 "camp.y"
29682852 { (yyval.e) = new castExp((yyvsp[(2) - (5)].n)->getPos(), new arrayTy((yyvsp[(2) - (5)].n), (yyvsp[(3) - (5)].dim)), (yyvsp[(5) - (5)].e)); }
29692853 break;
29702854
29712855 case 115:
2972
2973 /* Line 1806 of yacc.c */
2974 #line 473 "camp.y"
2856 /* Line 1787 of yacc.c */
2857 #line 472 "camp.y"
29752858 { (yyval.e) = new unaryExp((yyvsp[(1) - (2)].ps).pos, (yyvsp[(2) - (2)].e), (yyvsp[(1) - (2)].ps).sym); }
29762859 break;
29772860
29782861 case 116:
2979
2980 /* Line 1806 of yacc.c */
2862 /* Line 1787 of yacc.c */
2863 #line 474 "camp.y"
2864 { (yyval.e) = new unaryExp((yyvsp[(1) - (2)].ps).pos, (yyvsp[(2) - (2)].e), (yyvsp[(1) - (2)].ps).sym); }
2865 break;
2866
2867 case 117:
2868 /* Line 1787 of yacc.c */
29812869 #line 475 "camp.y"
29822870 { (yyval.e) = new unaryExp((yyvsp[(1) - (2)].ps).pos, (yyvsp[(2) - (2)].e), (yyvsp[(1) - (2)].ps).sym); }
29832871 break;
29842872
2985 case 117:
2986
2987 /* Line 1806 of yacc.c */
2873 case 118:
2874 /* Line 1787 of yacc.c */
29882875 #line 476 "camp.y"
2989 { (yyval.e) = new unaryExp((yyvsp[(1) - (2)].ps).pos, (yyvsp[(2) - (2)].e), (yyvsp[(1) - (2)].ps).sym); }
2990 break;
2991
2992 case 118:
2993
2994 /* Line 1806 of yacc.c */
2876 { (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
2877 break;
2878
2879 case 119:
2880 /* Line 1787 of yacc.c */
29952881 #line 477 "camp.y"
29962882 { (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
29972883 break;
29982884
2999 case 119:
3000
3001 /* Line 1806 of yacc.c */
2885 case 120:
2886 /* Line 1787 of yacc.c */
30022887 #line 478 "camp.y"
30032888 { (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
30042889 break;
30052890
3006 case 120:
3007
3008 /* Line 1806 of yacc.c */
2891 case 121:
2892 /* Line 1787 of yacc.c */
30092893 #line 479 "camp.y"
30102894 { (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
30112895 break;
30122896
3013 case 121:
3014
3015 /* Line 1806 of yacc.c */
2897 case 122:
2898 /* Line 1787 of yacc.c */
30162899 #line 480 "camp.y"
30172900 { (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
30182901 break;
30192902
3020 case 122:
3021
3022 /* Line 1806 of yacc.c */
2903 case 123:
2904 /* Line 1787 of yacc.c */
30232905 #line 481 "camp.y"
30242906 { (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
30252907 break;
30262908
3027 case 123:
3028
3029 /* Line 1806 of yacc.c */
2909 case 124:
2910 /* Line 1787 of yacc.c */
30302911 #line 482 "camp.y"
30312912 { (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
30322913 break;
30332914
3034 case 124:
3035
3036 /* Line 1806 of yacc.c */
2915 case 125:
2916 /* Line 1787 of yacc.c */
30372917 #line 483 "camp.y"
30382918 { (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
30392919 break;
30402920
3041 case 125:
3042
3043 /* Line 1806 of yacc.c */
2921 case 126:
2922 /* Line 1787 of yacc.c */
30442923 #line 484 "camp.y"
30452924 { (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
30462925 break;
30472926
3048 case 126:
3049
3050 /* Line 1806 of yacc.c */
2927 case 127:
2928 /* Line 1787 of yacc.c */
30512929 #line 485 "camp.y"
30522930 { (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
30532931 break;
30542932
3055 case 127:
3056
3057 /* Line 1806 of yacc.c */
2933 case 128:
2934 /* Line 1787 of yacc.c */
30582935 #line 486 "camp.y"
3059 { (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
3060 break;
3061
3062 case 128:
3063
3064 /* Line 1806 of yacc.c */
2936 { (yyval.e) = new equalityExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
2937 break;
2938
2939 case 129:
2940 /* Line 1787 of yacc.c */
30652941 #line 487 "camp.y"
30662942 { (yyval.e) = new equalityExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
30672943 break;
30682944
3069 case 129:
3070
3071 /* Line 1806 of yacc.c */
2945 case 130:
2946 /* Line 1787 of yacc.c */
30722947 #line 488 "camp.y"
3073 { (yyval.e) = new equalityExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
3074 break;
3075
3076 case 130:
3077
3078 /* Line 1806 of yacc.c */
2948 { (yyval.e) = new andExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
2949 break;
2950
2951 case 131:
2952 /* Line 1787 of yacc.c */
30792953 #line 489 "camp.y"
3080 { (yyval.e) = new andExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
3081 break;
3082
3083 case 131:
3084
3085 /* Line 1806 of yacc.c */
2954 { (yyval.e) = new orExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
2955 break;
2956
2957 case 132:
2958 /* Line 1787 of yacc.c */
30862959 #line 490 "camp.y"
3087 { (yyval.e) = new orExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
3088 break;
3089
3090 case 132:
3091
3092 /* Line 1806 of yacc.c */
2960 { (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
2961 break;
2962
2963 case 133:
2964 /* Line 1787 of yacc.c */
30932965 #line 491 "camp.y"
30942966 { (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
30952967 break;
30962968
3097 case 133:
3098
3099 /* Line 1806 of yacc.c */
2969 case 134:
2970 /* Line 1787 of yacc.c */
31002971 #line 492 "camp.y"
31012972 { (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
31022973 break;
31032974
3104 case 134:
3105
3106 /* Line 1806 of yacc.c */
2975 case 135:
2976 /* Line 1787 of yacc.c */
31072977 #line 493 "camp.y"
31082978 { (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
31092979 break;
31102980
3111 case 135:
3112
3113 /* Line 1806 of yacc.c */
2981 case 136:
2982 /* Line 1787 of yacc.c */
31142983 #line 494 "camp.y"
31152984 { (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
31162985 break;
31172986
3118 case 136:
3119
3120 /* Line 1806 of yacc.c */
3121 #line 495 "camp.y"
3122 { (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
3123 break;
3124
31252987 case 137:
3126
3127 /* Line 1806 of yacc.c */
3128 #line 497 "camp.y"
2988 /* Line 1787 of yacc.c */
2989 #line 496 "camp.y"
31292990 { (yyval.e) = new newRecordExp((yyvsp[(1) - (2)].pos), (yyvsp[(2) - (2)].t)); }
31302991 break;
31312992
31322993 case 138:
3133
3134 /* Line 1806 of yacc.c */
3135 #line 499 "camp.y"
2994 /* Line 1787 of yacc.c */
2995 #line 498 "camp.y"
31362996 { (yyval.e) = new newArrayExp((yyvsp[(1) - (3)].pos), (yyvsp[(2) - (3)].t), (yyvsp[(3) - (3)].elist), 0, 0); }
31372997 break;
31382998
31392999 case 139:
3140
3141 /* Line 1806 of yacc.c */
3142 #line 501 "camp.y"
3000 /* Line 1787 of yacc.c */
3001 #line 500 "camp.y"
31433002 { (yyval.e) = new newArrayExp((yyvsp[(1) - (4)].pos), (yyvsp[(2) - (4)].t), (yyvsp[(3) - (4)].elist), (yyvsp[(4) - (4)].dim), 0); }
31443003 break;
31453004
31463005 case 140:
3147
3148 /* Line 1806 of yacc.c */
3149 #line 503 "camp.y"
3006 /* Line 1787 of yacc.c */
3007 #line 502 "camp.y"
31503008 { (yyval.e) = new newArrayExp((yyvsp[(1) - (3)].pos), (yyvsp[(2) - (3)].t), 0, (yyvsp[(3) - (3)].dim), 0); }
31513009 break;
31523010
31533011 case 141:
3154
3155 /* Line 1806 of yacc.c */
3156 #line 505 "camp.y"
3012 /* Line 1787 of yacc.c */
3013 #line 504 "camp.y"
31573014 { (yyval.e) = new newArrayExp((yyvsp[(1) - (4)].pos), (yyvsp[(2) - (4)].t), 0, (yyvsp[(3) - (4)].dim), (yyvsp[(4) - (4)].ai)); }
31583015 break;
31593016
31603017 case 142:
3161
3162 /* Line 1806 of yacc.c */
3163 #line 507 "camp.y"
3018 /* Line 1787 of yacc.c */
3019 #line 506 "camp.y"
31643020 { (yyval.e) = new newFunctionExp((yyvsp[(1) - (5)].pos), (yyvsp[(2) - (5)].t), new formals((yyvsp[(3) - (5)].pos)), (yyvsp[(5) - (5)].s)); }
31653021 break;
31663022
31673023 case 143:
3168
3169 /* Line 1806 of yacc.c */
3170 #line 509 "camp.y"
3024 /* Line 1787 of yacc.c */
3025 #line 508 "camp.y"
31713026 { (yyval.e) = new newFunctionExp((yyvsp[(1) - (6)].pos),
31723027 new arrayTy((yyvsp[(2) - (6)].t)->getPos(), (yyvsp[(2) - (6)].t), (yyvsp[(3) - (6)].dim)),
31733028 new formals((yyvsp[(4) - (6)].pos)),
31753030 break;
31763031
31773032 case 144:
3178
3179 /* Line 1806 of yacc.c */
3180 #line 514 "camp.y"
3033 /* Line 1787 of yacc.c */
3034 #line 513 "camp.y"
31813035 { (yyval.e) = new newFunctionExp((yyvsp[(1) - (6)].pos), (yyvsp[(2) - (6)].t), (yyvsp[(4) - (6)].fls), (yyvsp[(6) - (6)].s)); }
31823036 break;
31833037
31843038 case 145:
3185
3186 /* Line 1806 of yacc.c */
3187 #line 516 "camp.y"
3039 /* Line 1787 of yacc.c */
3040 #line 515 "camp.y"
31883041 { (yyval.e) = new newFunctionExp((yyvsp[(1) - (7)].pos),
31893042 new arrayTy((yyvsp[(2) - (7)].t)->getPos(), (yyvsp[(2) - (7)].t), (yyvsp[(3) - (7)].dim)),
31903043 (yyvsp[(5) - (7)].fls),
31923045 break;
31933046
31943047 case 146:
3195
3196 /* Line 1806 of yacc.c */
3048 /* Line 1787 of yacc.c */
3049 #line 520 "camp.y"
3050 { (yyval.e) = new conditionalExp((yyvsp[(2) - (5)].pos), (yyvsp[(1) - (5)].e), (yyvsp[(3) - (5)].e), (yyvsp[(5) - (5)].e)); }
3051 break;
3052
3053 case 147:
3054 /* Line 1787 of yacc.c */
31973055 #line 521 "camp.y"
3198 { (yyval.e) = new conditionalExp((yyvsp[(2) - (5)].pos), (yyvsp[(1) - (5)].e), (yyvsp[(3) - (5)].e), (yyvsp[(5) - (5)].e)); }
3199 break;
3200
3201 case 147:
3202
3203 /* Line 1806 of yacc.c */
3056 { (yyval.e) = new assignExp((yyvsp[(2) - (3)].pos), (yyvsp[(1) - (3)].e), (yyvsp[(3) - (3)].e)); }
3057 break;
3058
3059 case 148:
3060 /* Line 1787 of yacc.c */
32043061 #line 522 "camp.y"
3205 { (yyval.e) = new assignExp((yyvsp[(2) - (3)].pos), (yyvsp[(1) - (3)].e), (yyvsp[(3) - (3)].e)); }
3206 break;
3207
3208 case 148:
3209
3210 /* Line 1806 of yacc.c */
3211 #line 523 "camp.y"
32123062 { (yyval.e) = new callExp((yyvsp[(1) - (3)].pos), new nameExp((yyvsp[(1) - (3)].pos), SYM_TUPLE), (yyvsp[(2) - (3)].alist)); }
32133063 break;
32143064
32153065 case 149:
3216
3217 /* Line 1806 of yacc.c */
3218 #line 525 "camp.y"
3066 /* Line 1787 of yacc.c */
3067 #line 524 "camp.y"
32193068 { (yyvsp[(2) - (3)].j)->pushFront((yyvsp[(1) - (3)].e)); (yyvsp[(2) - (3)].j)->pushBack((yyvsp[(3) - (3)].e)); (yyval.e) = (yyvsp[(2) - (3)].j); }
32203069 break;
32213070
32223071 case 150:
3223
3224 /* Line 1806 of yacc.c */
3225 #line 527 "camp.y"
3072 /* Line 1787 of yacc.c */
3073 #line 526 "camp.y"
32263074 { (yyvsp[(2) - (2)].se)->setSide(camp::OUT);
32273075 joinExp *jexp =
32283076 new joinExp((yyvsp[(2) - (2)].se)->getPos(), SYM_DOTS);
32313079 break;
32323080
32333081 case 151:
3234
3235 /* Line 1806 of yacc.c */
3236 #line 533 "camp.y"
3082 /* Line 1787 of yacc.c */
3083 #line 532 "camp.y"
32373084 { (yyval.e) = new prefixExp((yyvsp[(1) - (2)].ps).pos, (yyvsp[(2) - (2)].e), SYM_PLUS); }
32383085 break;
32393086
32403087 case 152:
3241
3242 /* Line 1806 of yacc.c */
3243 #line 535 "camp.y"
3088 /* Line 1787 of yacc.c */
3089 #line 534 "camp.y"
32443090 { (yyval.e) = new prefixExp((yyvsp[(1) - (2)].ps).pos, (yyvsp[(2) - (2)].e), SYM_MINUS); }
32453091 break;
32463092
32473093 case 153:
3248
3249 /* Line 1806 of yacc.c */
3094 /* Line 1787 of yacc.c */
3095 #line 537 "camp.y"
3096 { (yyval.e) = new postfixExp((yyvsp[(2) - (2)].ps).pos, (yyvsp[(1) - (2)].e), SYM_PLUS); }
3097 break;
3098
3099 case 154:
3100 /* Line 1787 of yacc.c */
32503101 #line 538 "camp.y"
3251 { (yyval.e) = new postfixExp((yyvsp[(2) - (2)].ps).pos, (yyvsp[(1) - (2)].e), SYM_PLUS); }
3252 break;
3253
3254 case 154:
3255
3256 /* Line 1806 of yacc.c */
3257 #line 539 "camp.y"
32583102 { (yyval.e) = new selfExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
32593103 break;
32603104
32613105 case 155:
3262
3263 /* Line 1806 of yacc.c */
3264 #line 541 "camp.y"
3106 /* Line 1787 of yacc.c */
3107 #line 540 "camp.y"
32653108 { (yyval.e) = new quoteExp((yyvsp[(1) - (4)].pos), (yyvsp[(3) - (4)].b)); }
32663109 break;
32673110
32683111 case 156:
3269
3270 /* Line 1806 of yacc.c */
3271 #line 547 "camp.y"
3112 /* Line 1787 of yacc.c */
3113 #line 546 "camp.y"
32723114 { (yyval.j) = new joinExp((yyvsp[(1) - (1)].ps).pos,(yyvsp[(1) - (1)].ps).sym); }
32733115 break;
32743116
32753117 case 157:
3276
3277 /* Line 1806 of yacc.c */
3278 #line 549 "camp.y"
3118 /* Line 1787 of yacc.c */
3119 #line 548 "camp.y"
32793120 { (yyval.j) = (yyvsp[(1) - (1)].j); }
32803121 break;
32813122
32823123 case 158:
3283
3284 /* Line 1806 of yacc.c */
3285 #line 551 "camp.y"
3124 /* Line 1787 of yacc.c */
3125 #line 550 "camp.y"
32863126 { (yyvsp[(1) - (2)].se)->setSide(camp::OUT);
32873127 (yyval.j) = (yyvsp[(2) - (2)].j); (yyval.j)->pushFront((yyvsp[(1) - (2)].se)); }
32883128 break;
32893129
32903130 case 159:
3291
3292 /* Line 1806 of yacc.c */
3293 #line 554 "camp.y"
3131 /* Line 1787 of yacc.c */
3132 #line 553 "camp.y"
32943133 { (yyvsp[(2) - (2)].se)->setSide(camp::IN);
32953134 (yyval.j) = (yyvsp[(1) - (2)].j); (yyval.j)->pushBack((yyvsp[(2) - (2)].se)); }
32963135 break;
32973136
32983137 case 160:
3299
3300 /* Line 1806 of yacc.c */
3301 #line 557 "camp.y"
3138 /* Line 1787 of yacc.c */
3139 #line 556 "camp.y"
33023140 { (yyvsp[(1) - (3)].se)->setSide(camp::OUT); (yyvsp[(3) - (3)].se)->setSide(camp::IN);
33033141 (yyval.j) = (yyvsp[(2) - (3)].j); (yyval.j)->pushFront((yyvsp[(1) - (3)].se)); (yyval.j)->pushBack((yyvsp[(3) - (3)].se)); }
33043142 break;
33053143
33063144 case 161:
3307
3308 /* Line 1806 of yacc.c */
3145 /* Line 1787 of yacc.c */
3146 #line 561 "camp.y"
3147 { (yyval.se) = new specExp((yyvsp[(2) - (4)].ps).pos, (yyvsp[(2) - (4)].ps).sym, (yyvsp[(3) - (4)].e)); }
3148 break;
3149
3150 case 162:
3151 /* Line 1787 of yacc.c */
33093152 #line 562 "camp.y"
3310 { (yyval.se) = new specExp((yyvsp[(2) - (4)].ps).pos, (yyvsp[(2) - (4)].ps).sym, (yyvsp[(3) - (4)].e)); }
3311 break;
3312
3313 case 162:
3314
3315 /* Line 1806 of yacc.c */
3316 #line 563 "camp.y"
33173153 { (yyval.se) = new specExp((yyvsp[(1) - (3)].pos), symbol::opTrans("spec"), (yyvsp[(2) - (3)].e)); }
33183154 break;
33193155
33203156 case 163:
3321
3322 /* Line 1806 of yacc.c */
3323 #line 565 "camp.y"
3157 /* Line 1787 of yacc.c */
3158 #line 564 "camp.y"
33243159 { (yyval.se) = new specExp((yyvsp[(1) - (5)].pos), symbol::opTrans("spec"),
33253160 new pairExp((yyvsp[(3) - (5)].pos), (yyvsp[(2) - (5)].e), (yyvsp[(4) - (5)].e))); }
33263161 break;
33273162
33283163 case 164:
3329
3330 /* Line 1806 of yacc.c */
3331 #line 568 "camp.y"
3164 /* Line 1787 of yacc.c */
3165 #line 567 "camp.y"
33323166 { (yyval.se) = new specExp((yyvsp[(1) - (7)].pos), symbol::opTrans("spec"),
33333167 new tripleExp((yyvsp[(3) - (7)].pos), (yyvsp[(2) - (7)].e), (yyvsp[(4) - (7)].e), (yyvsp[(6) - (7)].e))); }
33343168 break;
33353169
33363170 case 165:
3337
3338 /* Line 1806 of yacc.c */
3339 #line 573 "camp.y"
3171 /* Line 1787 of yacc.c */
3172 #line 572 "camp.y"
33403173 { (yyval.j) = new joinExp((yyvsp[(1) - (1)].ps).pos, (yyvsp[(1) - (1)].ps).sym); }
33413174 break;
33423175
33433176 case 166:
3344
3345 /* Line 1806 of yacc.c */
3346 #line 575 "camp.y"
3177 /* Line 1787 of yacc.c */
3178 #line 574 "camp.y"
33473179 { (yyval.j) = new joinExp((yyvsp[(1) - (3)].ps).pos, (yyvsp[(1) - (3)].ps).sym); (yyval.j)->pushBack((yyvsp[(2) - (3)].e)); }
33483180 break;
33493181
33503182 case 167:
3351
3352 /* Line 1806 of yacc.c */
3183 /* Line 1787 of yacc.c */
3184 #line 576 "camp.y"
3185 { (yyval.j) = new joinExp((yyvsp[(1) - (3)].ps).pos, (yyvsp[(1) - (3)].ps).sym); (yyval.j)->pushBack((yyvsp[(2) - (3)].e)); }
3186 break;
3187
3188 case 168:
3189 /* Line 1787 of yacc.c */
33533190 #line 577 "camp.y"
3354 { (yyval.j) = new joinExp((yyvsp[(1) - (3)].ps).pos, (yyvsp[(1) - (3)].ps).sym); (yyval.j)->pushBack((yyvsp[(2) - (3)].e)); }
3355 break;
3356
3357 case 168:
3358
3359 /* Line 1806 of yacc.c */
3191 { (yyval.j) = new joinExp((yyvsp[(1) - (1)].ps).pos, (yyvsp[(1) - (1)].ps).sym); }
3192 break;
3193
3194 case 169:
3195 /* Line 1787 of yacc.c */
33603196 #line 578 "camp.y"
33613197 { (yyval.j) = new joinExp((yyvsp[(1) - (1)].ps).pos, (yyvsp[(1) - (1)].ps).sym); }
33623198 break;
33633199
3364 case 169:
3365
3366 /* Line 1806 of yacc.c */
3367 #line 579 "camp.y"
3368 { (yyval.j) = new joinExp((yyvsp[(1) - (1)].ps).pos, (yyvsp[(1) - (1)].ps).sym); }
3369 break;
3370
33713200 case 170:
3372
3373 /* Line 1806 of yacc.c */
3374 #line 583 "camp.y"
3201 /* Line 1787 of yacc.c */
3202 #line 582 "camp.y"
33753203 { (yyval.e) = new binaryExp((yyvsp[(1) - (2)].ps).pos, (yyvsp[(2) - (2)].e), (yyvsp[(1) - (2)].ps).sym,
33763204 new booleanExp((yyvsp[(1) - (2)].ps).pos, false)); }
33773205 break;
33783206
33793207 case 171:
3380
3381 /* Line 1806 of yacc.c */
3382 #line 586 "camp.y"
3208 /* Line 1787 of yacc.c */
3209 #line 585 "camp.y"
33833210 { (yyval.e) = new ternaryExp((yyvsp[(1) - (4)].ps).pos, (yyvsp[(2) - (4)].e), (yyvsp[(1) - (4)].ps).sym, (yyvsp[(4) - (4)].e),
33843211 new booleanExp((yyvsp[(1) - (4)].ps).pos, false)); }
33853212 break;
33863213
33873214 case 172:
3388
3389 /* Line 1806 of yacc.c */
3390 #line 589 "camp.y"
3215 /* Line 1787 of yacc.c */
3216 #line 588 "camp.y"
33913217 { (yyval.e) = new binaryExp((yyvsp[(1) - (3)].ps).pos, (yyvsp[(3) - (3)].e), (yyvsp[(1) - (3)].ps).sym,
33923218 new booleanExp((yyvsp[(2) - (3)].ps).pos, true)); }
33933219 break;
33943220
33953221 case 173:
3396
3397 /* Line 1806 of yacc.c */
3398 #line 592 "camp.y"
3222 /* Line 1787 of yacc.c */
3223 #line 591 "camp.y"
33993224 { (yyval.e) = new ternaryExp((yyvsp[(1) - (5)].ps).pos, (yyvsp[(3) - (5)].e), (yyvsp[(1) - (5)].ps).sym, (yyvsp[(5) - (5)].e),
34003225 new booleanExp((yyvsp[(2) - (5)].ps).pos, true)); }
34013226 break;
34023227
34033228 case 174:
3404
3405 /* Line 1806 of yacc.c */
3406 #line 597 "camp.y"
3229 /* Line 1787 of yacc.c */
3230 #line 596 "camp.y"
34073231 { (yyval.e) = new unaryExp((yyvsp[(1) - (2)].ps).pos, (yyvsp[(2) - (2)].e), (yyvsp[(1) - (2)].ps).sym); }
34083232 break;
34093233
34103234 case 175:
3411
3412 /* Line 1806 of yacc.c */
3413 #line 599 "camp.y"
3235 /* Line 1787 of yacc.c */
3236 #line 598 "camp.y"
34143237 { (yyval.e) = new binaryExp((yyvsp[(1) - (4)].ps).pos, (yyvsp[(2) - (4)].e), (yyvsp[(1) - (4)].ps).sym, (yyvsp[(4) - (4)].e)); }
34153238 break;
34163239
34173240 case 176:
3418
3419 /* Line 1806 of yacc.c */
3241 /* Line 1787 of yacc.c */
3242 #line 602 "camp.y"
3243 { (yyval.s) = new emptyStm((yyvsp[(1) - (1)].pos)); }
3244 break;
3245
3246 case 177:
3247 /* Line 1787 of yacc.c */
34203248 #line 603 "camp.y"
3421 { (yyval.s) = new emptyStm((yyvsp[(1) - (1)].pos)); }
3422 break;
3423
3424 case 177:
3425
3426 /* Line 1806 of yacc.c */
3249 { (yyval.s) = (yyvsp[(1) - (1)].s); }
3250 break;
3251
3252 case 178:
3253 /* Line 1787 of yacc.c */
34273254 #line 604 "camp.y"
3428 { (yyval.s) = (yyvsp[(1) - (1)].s); }
3429 break;
3430
3431 case 178:
3432
3433 /* Line 1806 of yacc.c */
3434 #line 605 "camp.y"
34353255 { (yyval.s) = (yyvsp[(1) - (2)].s); }
34363256 break;
34373257
34383258 case 179:
3439
3440 /* Line 1806 of yacc.c */
3441 #line 607 "camp.y"
3259 /* Line 1787 of yacc.c */
3260 #line 606 "camp.y"
34423261 { (yyval.s) = new ifStm((yyvsp[(1) - (5)].pos), (yyvsp[(3) - (5)].e), (yyvsp[(5) - (5)].s)); }
34433262 break;
34443263
34453264 case 180:
3446
3447 /* Line 1806 of yacc.c */
3448 #line 609 "camp.y"
3265 /* Line 1787 of yacc.c */
3266 #line 608 "camp.y"
34493267 { (yyval.s) = new ifStm((yyvsp[(1) - (7)].pos), (yyvsp[(3) - (7)].e), (yyvsp[(5) - (7)].s), (yyvsp[(7) - (7)].s)); }
34503268 break;
34513269
34523270 case 181:
3453
3454 /* Line 1806 of yacc.c */
3455 #line 611 "camp.y"
3271 /* Line 1787 of yacc.c */
3272 #line 610 "camp.y"
34563273 { (yyval.s) = new whileStm((yyvsp[(1) - (5)].pos), (yyvsp[(3) - (5)].e), (yyvsp[(5) - (5)].s)); }
34573274 break;
34583275
34593276 case 182:
3460
3461 /* Line 1806 of yacc.c */
3462 #line 613 "camp.y"
3277 /* Line 1787 of yacc.c */
3278 #line 612 "camp.y"
34633279 { (yyval.s) = new doStm((yyvsp[(1) - (7)].pos), (yyvsp[(2) - (7)].s), (yyvsp[(5) - (7)].e)); }
34643280 break;
34653281
34663282 case 183:
3467
3468 /* Line 1806 of yacc.c */
3469 #line 615 "camp.y"
3283 /* Line 1787 of yacc.c */
3284 #line 614 "camp.y"
34703285 { (yyval.s) = new forStm((yyvsp[(1) - (9)].pos), (yyvsp[(3) - (9)].run), (yyvsp[(5) - (9)].e), (yyvsp[(7) - (9)].sel), (yyvsp[(9) - (9)].s)); }
34713286 break;
34723287
34733288 case 184:
3474
3475 /* Line 1806 of yacc.c */
3289 /* Line 1787 of yacc.c */
3290 #line 616 "camp.y"
3291 { (yyval.s) = new extendedForStm((yyvsp[(1) - (8)].pos), (yyvsp[(3) - (8)].t), (yyvsp[(4) - (8)].ps).sym, (yyvsp[(6) - (8)].e), (yyvsp[(8) - (8)].s)); }
3292 break;
3293
3294 case 185:
3295 /* Line 1787 of yacc.c */
34763296 #line 617 "camp.y"
3477 { (yyval.s) = new extendedForStm((yyvsp[(1) - (8)].pos), (yyvsp[(3) - (8)].t), (yyvsp[(4) - (8)].ps).sym, (yyvsp[(6) - (8)].e), (yyvsp[(8) - (8)].s)); }
3478 break;
3479
3480 case 185:
3481
3482 /* Line 1806 of yacc.c */
3297 { (yyval.s) = new breakStm((yyvsp[(1) - (2)].pos)); }
3298 break;
3299
3300 case 186:
3301 /* Line 1787 of yacc.c */
34833302 #line 618 "camp.y"
3484 { (yyval.s) = new breakStm((yyvsp[(1) - (2)].pos)); }
3485 break;
3486
3487 case 186:
3488
3489 /* Line 1806 of yacc.c */
3303 { (yyval.s) = new continueStm((yyvsp[(1) - (2)].pos)); }
3304 break;
3305
3306 case 187:
3307 /* Line 1787 of yacc.c */
34903308 #line 619 "camp.y"
3491 { (yyval.s) = new continueStm((yyvsp[(1) - (2)].pos)); }
3492 break;
3493
3494 case 187:
3495
3496 /* Line 1806 of yacc.c */
3309 { (yyval.s) = new returnStm((yyvsp[(1) - (2)].pos)); }
3310 break;
3311
3312 case 188:
3313 /* Line 1787 of yacc.c */
34973314 #line 620 "camp.y"
3498 { (yyval.s) = new returnStm((yyvsp[(1) - (2)].pos)); }
3499 break;
3500
3501 case 188:
3502
3503 /* Line 1806 of yacc.c */
3504 #line 621 "camp.y"
35053315 { (yyval.s) = new returnStm((yyvsp[(1) - (3)].pos), (yyvsp[(2) - (3)].e)); }
35063316 break;
35073317
35083318 case 189:
3509
3510 /* Line 1806 of yacc.c */
3511 #line 625 "camp.y"
3319 /* Line 1787 of yacc.c */
3320 #line 624 "camp.y"
35123321 { (yyval.s) = new expStm((yyvsp[(1) - (1)].e)->getPos(), (yyvsp[(1) - (1)].e)); }
35133322 break;
35143323
35153324 case 190:
3516
3517 /* Line 1806 of yacc.c */
3518 #line 629 "camp.y"
3325 /* Line 1787 of yacc.c */
3326 #line 628 "camp.y"
35193327 { (yyval.s) = new blockStm((yyvsp[(1) - (1)].b)->getPos(), (yyvsp[(1) - (1)].b)); }
35203328 break;
35213329
35223330 case 191:
3523
3524 /* Line 1806 of yacc.c */
3331 /* Line 1787 of yacc.c */
3332 #line 632 "camp.y"
3333 { (yyval.run) = 0; }
3334 break;
3335
3336 case 192:
3337 /* Line 1787 of yacc.c */
35253338 #line 633 "camp.y"
3526 { (yyval.run) = 0; }
3527 break;
3528
3529 case 192:
3530
3531 /* Line 1806 of yacc.c */
3339 { (yyval.run) = (yyvsp[(1) - (1)].sel); }
3340 break;
3341
3342 case 193:
3343 /* Line 1787 of yacc.c */
35323344 #line 634 "camp.y"
3533 { (yyval.run) = (yyvsp[(1) - (1)].sel); }
3534 break;
3535
3536 case 193:
3537
3538 /* Line 1806 of yacc.c */
3539 #line 635 "camp.y"
35403345 { (yyval.run) = (yyvsp[(1) - (1)].vd); }
35413346 break;
35423347
35433348 case 194:
3544
3545 /* Line 1806 of yacc.c */
3349 /* Line 1787 of yacc.c */
3350 #line 638 "camp.y"
3351 { (yyval.e) = 0; }
3352 break;
3353
3354 case 195:
3355 /* Line 1787 of yacc.c */
35463356 #line 639 "camp.y"
3547 { (yyval.e) = 0; }
3548 break;
3549
3550 case 195:
3551
3552 /* Line 1806 of yacc.c */
3553 #line 640 "camp.y"
35543357 { (yyval.e) = (yyvsp[(1) - (1)].e); }
35553358 break;
35563359
35573360 case 196:
3558
3559 /* Line 1806 of yacc.c */
3361 /* Line 1787 of yacc.c */
3362 #line 643 "camp.y"
3363 { (yyval.sel) = 0; }
3364 break;
3365
3366 case 197:
3367 /* Line 1787 of yacc.c */
35603368 #line 644 "camp.y"
3561 { (yyval.sel) = 0; }
3562 break;
3563
3564 case 197:
3565
3566 /* Line 1806 of yacc.c */
3567 #line 645 "camp.y"
35683369 { (yyval.sel) = (yyvsp[(1) - (1)].sel); }
35693370 break;
35703371
35713372 case 198:
3572
3573 /* Line 1806 of yacc.c */
3574 #line 649 "camp.y"
3373 /* Line 1787 of yacc.c */
3374 #line 648 "camp.y"
35753375 { (yyval.sel) = new stmExpList((yyvsp[(1) - (1)].s)->getPos()); (yyval.sel)->add((yyvsp[(1) - (1)].s)); }
35763376 break;
35773377
35783378 case 199:
3579
3580 /* Line 1806 of yacc.c */
3581 #line 651 "camp.y"
3379 /* Line 1787 of yacc.c */
3380 #line 650 "camp.y"
35823381 { (yyval.sel) = (yyvsp[(1) - (3)].sel); (yyval.sel)->add((yyvsp[(3) - (3)].s)); }
35833382 break;
35843383
35853384
3586
3587 /* Line 1806 of yacc.c */
3588 #line 3590 "camp.tab.c"
3385 /* Line 1787 of yacc.c */
3386 #line 3388 "camp.tab.c"
35893387 default: break;
35903388 }
35913389 /* User semantic actions sometimes alter yychar, and that requires
37723570 yyresult = 1;
37733571 goto yyreturn;
37743572
3775 #if !defined(yyoverflow) || YYERROR_VERBOSE
3573 #if !defined yyoverflow || YYERROR_VERBOSE
37763574 /*-------------------------------------------------.
37773575 | yyexhaustedlab -- memory exhaustion comes here. |
37783576 `-------------------------------------------------*/
0 /* A Bison parser, made by GNU Bison 2.5. */
0 /* A Bison parser, made by GNU Bison 2.6.1. */
11
22 /* Bison interface for Yacc-like parsers in C
33
4 Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
4 Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
55
66 This program is free software: you can redistribute it and/or modify
77 it under the terms of the GNU General Public License as published by
2929 This special exception was added by the Free Software Foundation in
3030 version 2.2 of Bison. */
3131
32 #ifndef YY_CAMP_TAB_H
33 # define YY_CAMP_TAB_H
34 /* Enabling traces. */
35 #ifndef YYDEBUG
36 # define YYDEBUG 1
37 #endif
38 #if YYDEBUG
39 extern int yydebug;
40 #endif
3241
3342 /* Tokens. */
3443 #ifndef YYTOKENTYPE
5867 GT = 277,
5968 GE = 278,
6069 CARETS = 279,
61 LOGNOT = 280,
62 OPERATOR = 281,
63 LOOSE = 282,
64 ASSIGN = 283,
65 DIRTAG = 284,
66 JOIN_PREC = 285,
67 AND = 286,
68 ELLIPSIS = 287,
69 ACCESS = 288,
70 UNRAVEL = 289,
71 IMPORT = 290,
72 INCLUDE = 291,
73 FROM = 292,
74 QUOTE = 293,
75 STRUCT = 294,
76 TYPEDEF = 295,
77 NEW = 296,
78 IF = 297,
79 ELSE = 298,
80 WHILE = 299,
81 DO = 300,
82 FOR = 301,
83 BREAK = 302,
84 CONTINUE = 303,
85 RETURN_ = 304,
86 THIS = 305,
87 EXPLICIT = 306,
88 GARBAGE = 307,
89 LIT = 308,
90 STRING = 309,
91 PERM = 310,
92 MODIFIER = 311,
93 UNARY = 312,
94 EXP_IN_PARENS_RULE = 313
70 OPERATOR = 280,
71 LOOSE = 281,
72 ASSIGN = 282,
73 DIRTAG = 283,
74 JOIN_PREC = 284,
75 AND = 285,
76 ELLIPSIS = 286,
77 ACCESS = 287,
78 UNRAVEL = 288,
79 IMPORT = 289,
80 INCLUDE = 290,
81 FROM = 291,
82 QUOTE = 292,
83 STRUCT = 293,
84 TYPEDEF = 294,
85 NEW = 295,
86 IF = 296,
87 ELSE = 297,
88 WHILE = 298,
89 DO = 299,
90 FOR = 300,
91 BREAK = 301,
92 CONTINUE = 302,
93 RETURN_ = 303,
94 THIS = 304,
95 EXPLICIT = 305,
96 GARBAGE = 306,
97 LIT = 307,
98 STRING = 308,
99 PERM = 309,
100 MODIFIER = 310,
101 UNARY = 311,
102 EXP_IN_PARENS_RULE = 312
95103 };
96104 #endif
97
98105
99106
100107 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
101108 typedef union YYSTYPE
102109 {
103
104 /* Line 2068 of yacc.c */
110 /* Line 2049 of yacc.c */
105111 #line 60 "camp.y"
106112
107113 position pos;
150156 absyntax::formals *fls;
151157
152158
153
154 /* Line 2068 of yacc.c */
155 #line 157 "camp.tab.h"
159 /* Line 2049 of yacc.c */
160 #line 162 "camp.tab.h"
156161 } YYSTYPE;
157162 # define YYSTYPE_IS_TRIVIAL 1
158163 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
161166
162167 extern YYSTYPE yylval;
163168
169 #ifdef YYPARSE_PARAM
170 #if defined __STDC__ || defined __cplusplus
171 int yyparse (void *YYPARSE_PARAM);
172 #else
173 int yyparse ();
174 #endif
175 #else /* ! YYPARSE_PARAM */
176 #if defined __STDC__ || defined __cplusplus
177 int yyparse (void);
178 #else
179 int yyparse ();
180 #endif
181 #endif /* ! YYPARSE_PARAM */
164182
183 #endif /* !YY_CAMP_TAB_H */
107107 DOTS COLONS DASHES INCR LONGDASH
108108 CONTROLS TENSION ATLEAST CURL
109109 COR CAND BAR AMPERSAND EQ NEQ LT LE GT GE CARETS
110 '+' '-' '*' '/' '%' '^' LOGNOT OPERATOR
110 '+' '-' '*' '/' '%' '^' OPERATOR
111111 %token <pos> LOOSE ASSIGN '?' ':'
112112 DIRTAG JOIN_PREC AND
113113 '{' '}' '(' ')' '.' ',' '[' ']' ';' ELLIPSIS
139139 %left '*' '/' '%' LIT
140140 %left UNARY
141141 %right '^'
142 %left LOGNOT
143142 %left EXP_IN_PARENS_RULE
144143 %left '(' ')'
145144
472471 { $$ = new unaryExp($1.pos, $2, $1.sym); }
473472 | '-' exp %prec UNARY
474473 { $$ = new unaryExp($1.pos, $2, $1.sym); }
475 | LOGNOT exp { $$ = new unaryExp($1.pos, $2, $1.sym); }
474 | OPERATOR exp { $$ = new unaryExp($1.pos, $2, $1.sym); }
476475 | exp '+' exp { $$ = new binaryExp($2.pos, $1, $2.sym, $3); }
477476 | exp '-' exp { $$ = new binaryExp($2.pos, $1, $2.sym, $3); }
478477 | exp '*' exp { $$ = new binaryExp($2.pos, $1, $2.sym, $3); }
00 #! /bin/sh
11 # Attempt to guess a canonical system name.
2 # Copyright 1992-2013 Free Software Foundation, Inc.
3
4 timestamp='2013-04-24'
2 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
3 # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
4 # Free Software Foundation, Inc.
5
6 timestamp='2008-01-23'
57
68 # This file is free software; you can redistribute it and/or modify it
79 # under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 3 of the License, or
10 # the Free Software Foundation; either version 2 of the License, or
911 # (at your option) any later version.
1012 #
1113 # This program is distributed in the hope that it will be useful, but
1416 # General Public License for more details.
1517 #
1618 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, see <http://www.gnu.org/licenses/>.
19 # along with this program; if not, write to the Free Software
20 # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
21 # 02110-1301, USA.
1822 #
1923 # As a special exception to the GNU General Public License, if you
2024 # distribute this file as part of a program that contains a
2125 # configuration script generated by Autoconf, you may include it under
22 # the same distribution terms that you use for the rest of that
23 # program. This Exception is an additional permission under section 7
24 # of the GNU General Public License, version 3 ("GPLv3").
26 # the same distribution terms that you use for the rest of that program.
27
28
29 # Originally written by Per Bothner <per@bothner.com>.
30 # Please send patches to <config-patches@gnu.org>. Submit a context
31 # diff and a properly formatted ChangeLog entry.
2532 #
26 # Originally written by Per Bothner.
33 # This script attempts to guess a canonical system name similar to
34 # config.sub. If it succeeds, it prints the system name on stdout, and
35 # exits with 0. Otherwise, it exits with 1.
2736 #
28 # You can get the latest version of this script from:
29 # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
30 #
31 # Please send patches with a ChangeLog entry to config-patches@gnu.org.
32
37 # The plan is that this can be called by configure scripts if you
38 # don't specify an explicit build system type.
3339
3440 me=`echo "$0" | sed -e 's,.*/,,'`
3541
4955 GNU config.guess ($timestamp)
5056
5157 Originally written by Per Bothner.
52 Copyright 1992-2013 Free Software Foundation, Inc.
58 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
59 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
5360
5461 This is free software; see the source for copying conditions. There is NO
5562 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
136143 case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
137144 *:NetBSD:*:*)
138145 # NetBSD (nbsd) targets should (where applicable) match one or
139 # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
146 # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
140147 # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
141148 # switched to ELF, *-*-netbsd* would select the old
142149 # object file format. This provides both forward
162169 arm*|i386|m68k|ns32k|sh3*|sparc|vax)
163170 eval $set_cc_for_build
164171 if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
165 | grep -q __ELF__
172 | grep __ELF__ >/dev/null
166173 then
167174 # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
168175 # Return netbsd for either. FIX?
172179 fi
173180 ;;
174181 *)
175 os=netbsd
182 os=netbsd
176183 ;;
177184 esac
178185 # The OS release
193200 # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
194201 echo "${machine}-${os}${release}"
195202 exit ;;
196 *:Bitrig:*:*)
197 UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
198 echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
199 exit ;;
200203 *:OpenBSD:*:*)
201204 UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
202205 echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
219222 UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
220223 ;;
221224 *5.*)
222 UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
225 UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
223226 ;;
224227 esac
225228 # According to Compaq, /usr/sbin/psrinfo has been available on
265268 # A Xn.n version is an unreleased experimental baselevel.
266269 # 1.2 uses "1.2" for uname -r.
267270 echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
268 # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
269 exitcode=$?
270 trap '' 0
271 exit $exitcode ;;
271 exit ;;
272272 Alpha\ *:Windows_NT*:*)
273273 # How do we know it's Interix rather than the generic POSIX subsystem?
274274 # Should we change UNAME_MACHINE based on the output of uname instead
294294 echo s390-ibm-zvmoe
295295 exit ;;
296296 *:OS400:*:*)
297 echo powerpc-ibm-os400
297 echo powerpc-ibm-os400
298298 exit ;;
299299 arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
300300 echo arm-acorn-riscix${UNAME_RELEASE}
301301 exit ;;
302 arm*:riscos:*:*|arm*:RISCOS:*:*)
302 arm:riscos:*:*|arm:RISCOS:*:*)
303303 echo arm-unknown-riscos
304304 exit ;;
305305 SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
323323 case `/usr/bin/uname -p` in
324324 sparc) echo sparc-icl-nx7; exit ;;
325325 esac ;;
326 s390x:SunOS:*:*)
327 echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
328 exit ;;
329326 sun4H:SunOS:5.*:*)
330327 echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
331328 exit ;;
332329 sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
333330 echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
334331 exit ;;
335 i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
336 echo i386-pc-auroraux${UNAME_RELEASE}
337 exit ;;
338332 i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
339 eval $set_cc_for_build
340 SUN_ARCH="i386"
341 # If there is a compiler, see if it is configured for 64-bit objects.
342 # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
343 # This test works for both compilers.
344 if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
345 if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
346 (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
347 grep IS_64BIT_ARCH >/dev/null
348 then
349 SUN_ARCH="x86_64"
350 fi
351 fi
352 echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
333 echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
353334 exit ;;
354335 sun4*:SunOS:6*:*)
355336 # According to config.sub, this is the proper way to canonicalize
393374 # MiNT. But MiNT is downward compatible to TOS, so this should
394375 # be no problem.
395376 atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
396 echo m68k-atari-mint${UNAME_RELEASE}
377 echo m68k-atari-mint${UNAME_RELEASE}
397378 exit ;;
398379 atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
399380 echo m68k-atari-mint${UNAME_RELEASE}
400 exit ;;
381 exit ;;
401382 *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
402 echo m68k-atari-mint${UNAME_RELEASE}
383 echo m68k-atari-mint${UNAME_RELEASE}
403384 exit ;;
404385 milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
405 echo m68k-milan-mint${UNAME_RELEASE}
406 exit ;;
386 echo m68k-milan-mint${UNAME_RELEASE}
387 exit ;;
407388 hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
408 echo m68k-hades-mint${UNAME_RELEASE}
409 exit ;;
389 echo m68k-hades-mint${UNAME_RELEASE}
390 exit ;;
410391 *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
411 echo m68k-unknown-mint${UNAME_RELEASE}
412 exit ;;
392 echo m68k-unknown-mint${UNAME_RELEASE}
393 exit ;;
413394 m68k:machten:*:*)
414395 echo m68k-apple-machten${UNAME_RELEASE}
415396 exit ;;
479460 echo m88k-motorola-sysv3
480461 exit ;;
481462 AViiON:dgux:*:*)
482 # DG/UX returns AViiON for all architectures
483 UNAME_PROCESSOR=`/usr/bin/uname -p`
463 # DG/UX returns AViiON for all architectures
464 UNAME_PROCESSOR=`/usr/bin/uname -p`
484465 if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
485466 then
486467 if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
493474 else
494475 echo i586-dg-dgux${UNAME_RELEASE}
495476 fi
496 exit ;;
477 exit ;;
497478 M88*:DolphinOS:*:*) # DolphinOS (SVR3)
498479 echo m88k-dolphin-sysv3
499480 exit ;;
550531 echo rs6000-ibm-aix3.2
551532 fi
552533 exit ;;
553 *:AIX:*:[4567])
534 *:AIX:*:[456])
554535 IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
555536 if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
556537 IBM_ARCH=rs6000
593574 9000/[678][0-9][0-9])
594575 if [ -x /usr/bin/getconf ]; then
595576 sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
596 sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
597 case "${sc_cpu_version}" in
598 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
599 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
600 532) # CPU_PA_RISC2_0
601 case "${sc_kernel_bits}" in
602 32) HP_ARCH="hppa2.0n" ;;
603 64) HP_ARCH="hppa2.0w" ;;
577 sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
578 case "${sc_cpu_version}" in
579 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
580 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
581 532) # CPU_PA_RISC2_0
582 case "${sc_kernel_bits}" in
583 32) HP_ARCH="hppa2.0n" ;;
584 64) HP_ARCH="hppa2.0w" ;;
604585 '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
605 esac ;;
606 esac
586 esac ;;
587 esac
607588 fi
608589 if [ "${HP_ARCH}" = "" ]; then
609590 eval $set_cc_for_build
610 sed 's/^ //' << EOF >$dummy.c
611
612 #define _HPUX_SOURCE
613 #include <stdlib.h>
614 #include <unistd.h>
615
616 int main ()
617 {
618 #if defined(_SC_KERNEL_BITS)
619 long bits = sysconf(_SC_KERNEL_BITS);
620 #endif
621 long cpu = sysconf (_SC_CPU_VERSION);
622
623 switch (cpu)
624 {
625 case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
626 case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
627 case CPU_PA_RISC2_0:
628 #if defined(_SC_KERNEL_BITS)
629 switch (bits)
630 {
631 case 64: puts ("hppa2.0w"); break;
632 case 32: puts ("hppa2.0n"); break;
633 default: puts ("hppa2.0"); break;
634 } break;
635 #else /* !defined(_SC_KERNEL_BITS) */
636 puts ("hppa2.0"); break;
637 #endif
638 default: puts ("hppa1.0"); break;
639 }
640 exit (0);
641 }
591 sed 's/^ //' << EOF >$dummy.c
592
593 #define _HPUX_SOURCE
594 #include <stdlib.h>
595 #include <unistd.h>
596
597 int main ()
598 {
599 #if defined(_SC_KERNEL_BITS)
600 long bits = sysconf(_SC_KERNEL_BITS);
601 #endif
602 long cpu = sysconf (_SC_CPU_VERSION);
603
604 switch (cpu)
605 {
606 case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
607 case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
608 case CPU_PA_RISC2_0:
609 #if defined(_SC_KERNEL_BITS)
610 switch (bits)
611 {
612 case 64: puts ("hppa2.0w"); break;
613 case 32: puts ("hppa2.0n"); break;
614 default: puts ("hppa2.0"); break;
615 } break;
616 #else /* !defined(_SC_KERNEL_BITS) */
617 puts ("hppa2.0"); break;
618 #endif
619 default: puts ("hppa1.0"); break;
620 }
621 exit (0);
622 }
642623 EOF
643624 (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
644625 test -z "$HP_ARCH" && HP_ARCH=hppa
658639 # => hppa64-hp-hpux11.23
659640
660641 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
661 grep -q __LP64__
642 grep __LP64__ >/dev/null
662643 then
663644 HP_ARCH="hppa2.0w"
664645 else
729710 exit ;;
730711 C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
731712 echo c1-convex-bsd
732 exit ;;
713 exit ;;
733714 C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
734715 if getsysinfo -f scalar_acc
735716 then echo c32-convex-bsd
736717 else echo c2-convex-bsd
737718 fi
738 exit ;;
719 exit ;;
739720 C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
740721 echo c34-convex-bsd
741 exit ;;
722 exit ;;
742723 C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
743724 echo c38-convex-bsd
744 exit ;;
725 exit ;;
745726 C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
746727 echo c4-convex-bsd
747 exit ;;
728 exit ;;
748729 CRAY*Y-MP:*:*:*)
749730 echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
750731 exit ;;
768749 exit ;;
769750 F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
770751 FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
771 FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
772 FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
773 echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
774 exit ;;
752 FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
753 FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
754 echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
755 exit ;;
775756 5000:UNIX_System_V:4.*:*)
776 FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
777 FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
778 echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
757 FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
758 FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
759 echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
779760 exit ;;
780761 i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
781762 echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
787768 echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
788769 exit ;;
789770 *:FreeBSD:*:*)
790 UNAME_PROCESSOR=`/usr/bin/uname -p`
791 case ${UNAME_PROCESSOR} in
771 case ${UNAME_MACHINE} in
772 pc98)
773 echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
792774 amd64)
793775 echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
794776 *)
795 echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
777 echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
796778 esac
797779 exit ;;
798780 i*:CYGWIN*:*)
799781 echo ${UNAME_MACHINE}-pc-cygwin
800782 exit ;;
801 *:MINGW64*:*)
802 echo ${UNAME_MACHINE}-pc-mingw64
803 exit ;;
804783 *:MINGW*:*)
805784 echo ${UNAME_MACHINE}-pc-mingw32
806785 exit ;;
807 i*:MSYS*:*)
808 echo ${UNAME_MACHINE}-pc-msys
809 exit ;;
810786 i*:windows32*:*)
811 # uname -m includes "-pc" on this system.
812 echo ${UNAME_MACHINE}-mingw32
787 # uname -m includes "-pc" on this system.
788 echo ${UNAME_MACHINE}-mingw32
813789 exit ;;
814790 i*:PW*:*)
815791 echo ${UNAME_MACHINE}-pc-pw32
816792 exit ;;
817 *:Interix*:*)
818 case ${UNAME_MACHINE} in
793 *:Interix*:[3456]*)
794 case ${UNAME_MACHINE} in
819795 x86)
820796 echo i586-pc-interix${UNAME_RELEASE}
821797 exit ;;
822 authenticamd | genuineintel | EM64T)
798 EM64T | authenticamd)
823799 echo x86_64-unknown-interix${UNAME_RELEASE}
824800 exit ;;
825801 IA64)
829805 [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
830806 echo i${UNAME_MACHINE}-pc-mks
831807 exit ;;
832 8664:Windows_NT:*)
833 echo x86_64-pc-mks
834 exit ;;
835808 i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
836809 # How do we know it's Interix rather than the generic POSIX subsystem?
837810 # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
861834 i*86:Minix:*:*)
862835 echo ${UNAME_MACHINE}-pc-minix
863836 exit ;;
864 aarch64:Linux:*:*)
837 arm*:Linux:*:*)
838 eval $set_cc_for_build
839 if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
840 | grep -q __ARM_EABI__
841 then
842 echo ${UNAME_MACHINE}-unknown-linux-gnu
843 else
844 echo ${UNAME_MACHINE}-unknown-linux-gnueabi
845 fi
846 exit ;;
847 avr32*:Linux:*:*)
865848 echo ${UNAME_MACHINE}-unknown-linux-gnu
866849 exit ;;
867 aarch64_be:Linux:*:*)
868 UNAME_MACHINE=aarch64_be
850 cris:Linux:*:*)
851 echo cris-axis-linux-gnu
852 exit ;;
853 crisv32:Linux:*:*)
854 echo crisv32-axis-linux-gnu
855 exit ;;
856 frv:Linux:*:*)
857 echo frv-unknown-linux-gnu
858 exit ;;
859 ia64:Linux:*:*)
869860 echo ${UNAME_MACHINE}-unknown-linux-gnu
861 exit ;;
862 m32r*:Linux:*:*)
863 echo ${UNAME_MACHINE}-unknown-linux-gnu
864 exit ;;
865 m68*:Linux:*:*)
866 echo ${UNAME_MACHINE}-unknown-linux-gnu
867 exit ;;
868 mips:Linux:*:*)
869 eval $set_cc_for_build
870 sed 's/^ //' << EOF >$dummy.c
871 #undef CPU
872 #undef mips
873 #undef mipsel
874 #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
875 CPU=mipsel
876 #else
877 #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
878 CPU=mips
879 #else
880 CPU=
881 #endif
882 #endif
883 EOF
884 eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
885 /^CPU/{
886 s: ::g
887 p
888 }'`"
889 test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
890 ;;
891 mips64:Linux:*:*)
892 eval $set_cc_for_build
893 sed 's/^ //' << EOF >$dummy.c
894 #undef CPU
895 #undef mips64
896 #undef mips64el
897 #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
898 CPU=mips64el
899 #else
900 #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
901 CPU=mips64
902 #else
903 CPU=
904 #endif
905 #endif
906 EOF
907 eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
908 /^CPU/{
909 s: ::g
910 p
911 }'`"
912 test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
913 ;;
914 or32:Linux:*:*)
915 echo or32-unknown-linux-gnu
916 exit ;;
917 ppc:Linux:*:*)
918 echo powerpc-unknown-linux-gnu
919 exit ;;
920 ppc64:Linux:*:*)
921 echo powerpc64-unknown-linux-gnu
870922 exit ;;
871923 alpha:Linux:*:*)
872924 case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
877929 EV6) UNAME_MACHINE=alphaev6 ;;
878930 EV67) UNAME_MACHINE=alphaev67 ;;
879931 EV68*) UNAME_MACHINE=alphaev68 ;;
880 esac
881 objdump --private-headers /bin/sh | grep -q ld.so.1
932 esac
933 objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
882934 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
883935 echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
884 exit ;;
885 arc:Linux:*:* | arceb:Linux:*:*)
886 echo ${UNAME_MACHINE}-unknown-linux-gnu
887 exit ;;
888 arm*:Linux:*:*)
889 eval $set_cc_for_build
890 if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
891 | grep -q __ARM_EABI__
892 then
893 echo ${UNAME_MACHINE}-unknown-linux-gnu
894 else
895 if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
896 | grep -q __ARM_PCS_VFP
897 then
898 echo ${UNAME_MACHINE}-unknown-linux-gnueabi
899 else
900 echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
901 fi
902 fi
903 exit ;;
904 avr32*:Linux:*:*)
905 echo ${UNAME_MACHINE}-unknown-linux-gnu
906 exit ;;
907 cris:Linux:*:*)
908 echo ${UNAME_MACHINE}-axis-linux-gnu
909 exit ;;
910 crisv32:Linux:*:*)
911 echo ${UNAME_MACHINE}-axis-linux-gnu
912 exit ;;
913 frv:Linux:*:*)
914 echo ${UNAME_MACHINE}-unknown-linux-gnu
915 exit ;;
916 hexagon:Linux:*:*)
917 echo ${UNAME_MACHINE}-unknown-linux-gnu
918 exit ;;
919 i*86:Linux:*:*)
920 LIBC=gnu
921 eval $set_cc_for_build
922 sed 's/^ //' << EOF >$dummy.c
923 #ifdef __dietlibc__
924 LIBC=dietlibc
925 #endif
926 #else
927 #include <features.h>
928 #ifdef __UCLIBC__
929 LIBC=uclibc
930 #endif
931 EOF
932 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
933 echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
934 exit ;;
935 ia64:Linux:*:*)
936 echo ${UNAME_MACHINE}-unknown-linux-gnu
937 exit ;;
938 m32r*:Linux:*:*)
939 echo ${UNAME_MACHINE}-unknown-linux-gnu
940 exit ;;
941 m68*:Linux:*:*)
942 echo ${UNAME_MACHINE}-unknown-linux-gnu
943 exit ;;
944 mips:Linux:*:* | mips64:Linux:*:*)
945 eval $set_cc_for_build
946 sed 's/^ //' << EOF >$dummy.c
947 #undef CPU
948 #undef ${UNAME_MACHINE}
949 #undef ${UNAME_MACHINE}el
950 #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
951 CPU=${UNAME_MACHINE}el
952 #else
953 #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
954 CPU=${UNAME_MACHINE}
955 #else
956 CPU=
957 #endif
958 #endif
959 EOF
960 eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
961 test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
962 ;;
963 or1k:Linux:*:*)
964 echo ${UNAME_MACHINE}-unknown-linux-gnu
965 exit ;;
966 or32:Linux:*:*)
967 echo ${UNAME_MACHINE}-unknown-linux-gnu
968 exit ;;
969 padre:Linux:*:*)
970 echo sparc-unknown-linux-gnu
971 exit ;;
972 parisc64:Linux:*:* | hppa64:Linux:*:*)
973 echo hppa64-unknown-linux-gnu
974936 exit ;;
975937 parisc:Linux:*:* | hppa:Linux:*:*)
976938 # Look for CPU level
980942 *) echo hppa-unknown-linux-gnu ;;
981943 esac
982944 exit ;;
983 ppc64:Linux:*:*)
984 echo powerpc64-unknown-linux-gnu
985 exit ;;
986 ppc:Linux:*:*)
987 echo powerpc-unknown-linux-gnu
945 parisc64:Linux:*:* | hppa64:Linux:*:*)
946 echo hppa64-unknown-linux-gnu
988947 exit ;;
989948 s390:Linux:*:* | s390x:Linux:*:*)
990949 echo ${UNAME_MACHINE}-ibm-linux
991950 exit ;;
992951 sh64*:Linux:*:*)
993 echo ${UNAME_MACHINE}-unknown-linux-gnu
952 echo ${UNAME_MACHINE}-unknown-linux-gnu
994953 exit ;;
995954 sh*:Linux:*:*)
996955 echo ${UNAME_MACHINE}-unknown-linux-gnu
998957 sparc:Linux:*:* | sparc64:Linux:*:*)
999958 echo ${UNAME_MACHINE}-unknown-linux-gnu
1000959 exit ;;
1001 tile*:Linux:*:*)
1002 echo ${UNAME_MACHINE}-unknown-linux-gnu
1003 exit ;;
1004960 vax:Linux:*:*)
1005961 echo ${UNAME_MACHINE}-dec-linux-gnu
1006962 exit ;;
1007963 x86_64:Linux:*:*)
964 echo x86_64-unknown-linux-gnu
965 exit ;;
966 xtensa*:Linux:*:*)
967 echo ${UNAME_MACHINE}-unknown-linux-gnu
968 exit ;;
969 i*86:Linux:*:*)
970 # The BFD linker knows what the default object file format is, so
971 # first see if it will tell us. cd to the root directory to prevent
972 # problems with other programs or directories called `ld' in the path.
973 # Set LC_ALL=C to ensure ld outputs messages in English.
974 ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
975 | sed -ne '/supported targets:/!d
976 s/[ ][ ]*/ /g
977 s/.*supported targets: *//
978 s/ .*//
979 p'`
980 case "$ld_supported_targets" in
981 elf32-i386)
982 TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
983 ;;
984 a.out-i386-linux)
985 echo "${UNAME_MACHINE}-pc-linux-gnuaout"
986 exit ;;
987 coff-i386)
988 echo "${UNAME_MACHINE}-pc-linux-gnucoff"
989 exit ;;
990 "")
991 # Either a pre-BFD a.out linker (linux-gnuoldld) or
992 # one that does not give us useful --help.
993 echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
994 exit ;;
995 esac
996 # Determine whether the default compiler is a.out or elf
997 eval $set_cc_for_build
998 sed 's/^ //' << EOF >$dummy.c
999 #include <features.h>
1000 #ifdef __ELF__
1001 # ifdef __GLIBC__
1002 # if __GLIBC__ >= 2
10081003 LIBC=gnu
1009 test -r /lib/libc.so && od -An -S13 /lib/libc.so | grep -q __uClibc_main && LIBC=uclibc
1010 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
1011 exit ;;
1012 xtensa*:Linux:*:*)
1013 echo ${UNAME_MACHINE}-unknown-linux-gnu
1014 exit ;;
1004 # else
1005 LIBC=gnulibc1
1006 # endif
1007 # else
1008 LIBC=gnulibc1
1009 # endif
1010 #else
1011 #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
1012 LIBC=gnu
1013 #else
1014 LIBC=gnuaout
1015 #endif
1016 #endif
1017 #ifdef __dietlibc__
1018 LIBC=dietlibc
1019 #endif
1020 EOF
1021 eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
1022 /^LIBC/{
1023 s: ::g
1024 p
1025 }'`"
1026 test x"${LIBC}" != x && {
1027 echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
1028 exit
1029 }
1030 test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
1031 ;;
10151032 i*86:DYNIX/ptx:4*:*)
10161033 # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
10171034 # earlier versions are messed up and put the nodename in both
10191036 echo i386-sequent-sysv4
10201037 exit ;;
10211038 i*86:UNIX_SV:4.2MP:2.*)
1022 # Unixware is an offshoot of SVR4, but it has its own version
1023 # number series starting with 2...
1024 # I am not positive that other SVR4 systems won't match this,
1039 # Unixware is an offshoot of SVR4, but it has its own version
1040 # number series starting with 2...
1041 # I am not positive that other SVR4 systems won't match this,
10251042 # I just have to hope. -- rms.
1026 # Use sysv4.2uw... so that sysv4* matches it.
1043 # Use sysv4.2uw... so that sysv4* matches it.
10271044 echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
10281045 exit ;;
10291046 i*86:OS/2:*:*)
10401057 i*86:syllable:*:*)
10411058 echo ${UNAME_MACHINE}-pc-syllable
10421059 exit ;;
1043 i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
1060 i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
10441061 echo i386-unknown-lynxos${UNAME_RELEASE}
10451062 exit ;;
10461063 i*86:*DOS:*:*)
10551072 fi
10561073 exit ;;
10571074 i*86:*:5:[678]*)
1058 # UnixWare 7.x, OpenUNIX and OpenServer 6.
1075 # UnixWare 7.x, OpenUNIX and OpenServer 6.
10591076 case `/bin/uname -X | grep "^Machine"` in
10601077 *486*) UNAME_MACHINE=i486 ;;
10611078 *Pentium) UNAME_MACHINE=i586 ;;
10831100 exit ;;
10841101 pc:*:*:*)
10851102 # Left here for compatibility:
1086 # uname -m prints for DJGPP always 'pc', but it prints nothing about
1087 # the processor, so we play safe by assuming i586.
1088 # Note: whatever this is, it MUST be the same as what config.sub
1089 # prints for the "djgpp" host, or else GDB configury will decide that
1090 # this is a cross-build.
1091 echo i586-pc-msdosdjgpp
1092 exit ;;
1103 # uname -m prints for DJGPP always 'pc', but it prints nothing about
1104 # the processor, so we play safe by assuming i386.
1105 echo i386-pc-msdosdjgpp
1106 exit ;;
10931107 Intel:Mach:3*:*)
10941108 echo i386-pc-mach3
10951109 exit ;;
11241138 /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
11251139 && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
11261140 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
1127 /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
1128 && { echo i486-ncr-sysv4; exit; } ;;
1129 NCR*:*:4.2:* | MPRAS*:*:4.2:*)
1130 OS_REL='.3'
1131 test -r /etc/.relid \
1132 && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
1133 /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
1134 && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
1135 /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
1136 && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
1137 /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
1138 && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
1141 /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
1142 && { echo i486-ncr-sysv4; exit; } ;;
11391143 m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
11401144 echo m68k-unknown-lynxos${UNAME_RELEASE}
11411145 exit ;;
11481152 rs6000:LynxOS:2.*:*)
11491153 echo rs6000-unknown-lynxos${UNAME_RELEASE}
11501154 exit ;;
1151 PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
1155 PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
11521156 echo powerpc-unknown-lynxos${UNAME_RELEASE}
11531157 exit ;;
11541158 SM[BE]S:UNIX_SV:*:*)
11681172 echo ns32k-sni-sysv
11691173 fi
11701174 exit ;;
1171 PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
1172 # says <Richard.M.Bartel@ccMail.Census.GOV>
1173 echo i586-unisys-sysv4
1174 exit ;;
1175 PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
1176 # says <Richard.M.Bartel@ccMail.Census.GOV>
1177 echo i586-unisys-sysv4
1178 exit ;;
11751179 *:UNIX_System_V:4*:FTX*)
11761180 # From Gerald Hewes <hewes@openmarket.com>.
11771181 # How about differentiating between stratus architectures? -djm
11971201 exit ;;
11981202 R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
11991203 if [ -d /usr/nec ]; then
1200 echo mips-nec-sysv${UNAME_RELEASE}
1204 echo mips-nec-sysv${UNAME_RELEASE}
12011205 else
1202 echo mips-unknown-sysv${UNAME_RELEASE}
1203 fi
1204 exit ;;
1206 echo mips-unknown-sysv${UNAME_RELEASE}
1207 fi
1208 exit ;;
12051209 BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
12061210 echo powerpc-be-beos
12071211 exit ;;
12101214 exit ;;
12111215 BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
12121216 echo i586-pc-beos
1213 exit ;;
1214 BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
1215 echo i586-pc-haiku
1216 exit ;;
1217 x86_64:Haiku:*:*)
1218 echo x86_64-unknown-haiku
12191217 exit ;;
12201218 SX-4:SUPER-UX:*:*)
12211219 echo sx4-nec-superux${UNAME_RELEASE}
12441242 *:Darwin:*:*)
12451243 UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
12461244 case $UNAME_PROCESSOR in
1247 i386)
1248 eval $set_cc_for_build
1249 if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
1250 if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
1251 (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
1252 grep IS_64BIT_ARCH >/dev/null
1253 then
1254 UNAME_PROCESSOR="x86_64"
1255 fi
1256 fi ;;
12571245 unknown) UNAME_PROCESSOR=powerpc ;;
12581246 esac
12591247 echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
12691257 *:QNX:*:4*)
12701258 echo i386-pc-qnx
12711259 exit ;;
1272 NEO-?:NONSTOP_KERNEL:*:*)
1273 echo neo-tandem-nsk${UNAME_RELEASE}
1274 exit ;;
1275 NSE-*:NONSTOP_KERNEL:*:*)
1260 NSE-?:NONSTOP_KERNEL:*:*)
12761261 echo nse-tandem-nsk${UNAME_RELEASE}
12771262 exit ;;
12781263 NSR-?:NONSTOP_KERNEL:*:*)
13171302 echo pdp10-unknown-its
13181303 exit ;;
13191304 SEI:*:*:SEIUX)
1320 echo mips-sei-seiux${UNAME_RELEASE}
1305 echo mips-sei-seiux${UNAME_RELEASE}
13211306 exit ;;
13221307 *:DragonFly:*:*)
13231308 echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
13241309 exit ;;
13251310 *:*VMS:*:*)
1326 UNAME_MACHINE=`(uname -p) 2>/dev/null`
1311 UNAME_MACHINE=`(uname -p) 2>/dev/null`
13271312 case "${UNAME_MACHINE}" in
13281313 A*) echo alpha-dec-vms ; exit ;;
13291314 I*) echo ia64-dec-vms ; exit ;;
13381323 i*86:rdos:*:*)
13391324 echo ${UNAME_MACHINE}-pc-rdos
13401325 exit ;;
1341 i*86:AROS:*:*)
1342 echo ${UNAME_MACHINE}-pc-aros
1343 exit ;;
1344 x86_64:VMkernel:*:*)
1345 echo ${UNAME_MACHINE}-unknown-esx
1346 exit ;;
13471326 esac
1327
1328 #echo '(No uname command or uname output not recognized.)' 1>&2
1329 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
13481330
13491331 eval $set_cc_for_build
13501332 cat >$dummy.c <<EOF
13631345 #include <sys/param.h>
13641346 printf ("m68k-sony-newsos%s\n",
13651347 #ifdef NEWSOS4
1366 "4"
1348 "4"
13671349 #else
1368 ""
1369 #endif
1370 ); exit (0);
1350 ""
1351 #endif
1352 ); exit (0);
13711353 #endif
13721354 #endif
13731355
00 #! /bin/sh
11 # Configuration validation subroutine script.
2 # Copyright 1992-2013 Free Software Foundation, Inc.
3
4 timestamp='2013-04-24'
5
6 # This file is free software; you can redistribute it and/or modify it
7 # under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 3 of the License, or
2 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
3 # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
4 # 2011, 2012 Free Software Foundation, Inc.
5
6 timestamp='2012-04-18'
7
8 # This file is (in principle) common to ALL GNU software.
9 # The presence of a machine in this file suggests that SOME GNU software
10 # can handle that machine. It does not imply ALL GNU software can.
11 #
12 # This file is free software; you can redistribute it and/or modify
13 # it under the terms of the GNU General Public License as published by
14 # the Free Software Foundation; either version 2 of the License, or
915 # (at your option) any later version.
1016 #
11 # This program is distributed in the hope that it will be useful, but
12 # WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 # General Public License for more details.
17 # This program is distributed in the hope that it will be useful,
18 # but WITHOUT ANY WARRANTY; without even the implied warranty of
19 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 # GNU General Public License for more details.
1521 #
1622 # You should have received a copy of the GNU General Public License
1723 # along with this program; if not, see <http://www.gnu.org/licenses/>.
1925 # As a special exception to the GNU General Public License, if you
2026 # distribute this file as part of a program that contains a
2127 # configuration script generated by Autoconf, you may include it under
22 # the same distribution terms that you use for the rest of that
23 # program. This Exception is an additional permission under section 7
24 # of the GNU General Public License, version 3 ("GPLv3").
25
26
27 # Please send patches with a ChangeLog entry to config-patches@gnu.org.
28 # the same distribution terms that you use for the rest of that program.
29
30
31 # Please send patches to <config-patches@gnu.org>. Submit a context
32 # diff and a properly formatted GNU ChangeLog entry.
2833 #
2934 # Configuration subroutine to validate and canonicalize a configuration type.
3035 # Supply the specified configuration type as an argument.
6772 version="\
6873 GNU config.sub ($timestamp)
6974
70 Copyright 1992-2013 Free Software Foundation, Inc.
75 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
76 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
77 Free Software Foundation, Inc.
7178
7279 This is free software; see the source for copying conditions. There is NO
7380 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
115122 maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
116123 case $maybe_os in
117124 nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
118 linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
125 linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
119126 knetbsd*-gnu* | netbsd*-gnu* | \
120127 kopensolaris*-gnu* | \
121128 storm-chaos* | os2-emx* | rtmk-nova*)
148155 -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
149156 -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
150157 -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
151 -apple | -axis | -knuth | -cray | -microblaze*)
158 -apple | -axis | -knuth | -cray | -microblaze)
152159 os=
153160 basic_machine=$1
154161 ;;
251258 | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
252259 | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
253260 | am33_2.0 \
254 | arc | arceb \
255 | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
256 | avr | avr32 \
257 | be32 | be64 \
261 | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
262 | be32 | be64 \
258263 | bfin \
259264 | c4x | clipper \
260265 | d10v | d30v | dlx | dsp16xx \
267272 | le32 | le64 \
268273 | lm32 \
269274 | m32c | m32r | m32rle | m68000 | m68k | m88k \
270 | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
275 | maxq | mb | microblaze | mcore | mep | metag \
271276 | mips | mipsbe | mipseb | mipsel | mipsle \
272277 | mips16 \
273278 | mips64 | mips64el \
285290 | mipsisa64r2 | mipsisa64r2el \
286291 | mipsisa64sb1 | mipsisa64sb1el \
287292 | mipsisa64sr71k | mipsisa64sr71kel \
288 | mipsr5900 | mipsr5900el \
289293 | mipstx39 | mipstx39el \
290294 | mn10200 | mn10300 \
291295 | moxie \
292296 | mt \
293297 | msp430 \
294298 | nds32 | nds32le | nds32be \
295 | nios | nios2 | nios2eb | nios2el \
299 | nios | nios2 \
296300 | ns16k | ns32k \
297301 | open8 \
298 | or1k | or32 \
302 | or32 \
299303 | pdp10 | pdp11 | pj | pjl \
300304 | powerpc | powerpc64 | powerpc64le | powerpcle \
301305 | pyramid \
365369 | aarch64-* | aarch64_be-* \
366370 | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
367371 | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
368 | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
372 | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
369373 | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
370374 | avr-* | avr32-* \
371375 | be32-* | be64-* \
384388 | lm32-* \
385389 | m32c-* | m32r-* | m32rle-* \
386390 | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
387 | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
388 | microblaze-* | microblazeel-* \
391 | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
389392 | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
390393 | mips16-* \
391394 | mips64-* | mips64el-* \
403406 | mipsisa64r2-* | mipsisa64r2el-* \
404407 | mipsisa64sb1-* | mipsisa64sb1el-* \
405408 | mipsisa64sr71k-* | mipsisa64sr71kel-* \
406 | mipsr5900-* | mipsr5900el-* \
407409 | mipstx39-* | mipstx39el-* \
408410 | mmix-* \
409411 | mt-* \
410412 | msp430-* \
411413 | nds32-* | nds32le-* | nds32be-* \
412 | nios-* | nios2-* | nios2eb-* | nios2el-* \
414 | nios-* | nios2-* \
413415 | none-* | np1-* | ns16k-* | ns32k-* \
414416 | open8-* \
415417 | orion-* \
785787 basic_machine=ns32k-utek
786788 os=-sysv
787789 ;;
788 microblaze*)
790 microblaze)
789791 basic_machine=microblaze-xilinx
790 ;;
791 mingw64)
792 basic_machine=x86_64-pc
793 os=-mingw64
794792 ;;
795793 mingw32)
796794 basic_machine=i386-pc
10201018 basic_machine=i586-unknown
10211019 os=-pw32
10221020 ;;
1023 rdos | rdos64)
1024 basic_machine=x86_64-pc
1025 os=-rdos
1026 ;;
1027 rdos32)
1021 rdos)
10281022 basic_machine=i386-pc
10291023 os=-rdos
10301024 ;;
13511345 -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
13521346 | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
13531347 | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
1354 | -sym* | -kopensolaris* | -plan9* \
1348 | -sym* | -kopensolaris* \
13551349 | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
13561350 | -aos* | -aros* \
13571351 | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
13581352 | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
13591353 | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
1360 | -bitrig* | -openbsd* | -solidbsd* \
1354 | -openbsd* | -solidbsd* \
13611355 | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
13621356 | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
13631357 | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
13641358 | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
13651359 | -chorusos* | -chorusrdb* | -cegcc* \
13661360 | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
1367 | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
1368 | -linux-newlib* | -linux-musl* | -linux-uclibc* \
1361 | -mingw32* | -linux-gnu* | -linux-android* \
1362 | -linux-newlib* | -linux-uclibc* \
13691363 | -uxpv* | -beos* | -mpeix* | -udk* \
13701364 | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
13711365 | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
14971491 -aros*)
14981492 os=-aros
14991493 ;;
1494 -kaos*)
1495 os=-kaos
1496 ;;
15001497 -zvmoe)
15011498 os=-zvmoe
15021499 ;;
15451542 c4x-* | tic4x-*)
15461543 os=-coff
15471544 ;;
1548 hexagon-*)
1549 os=-elf
1550 ;;
15511545 tic54x-*)
15521546 os=-coff
15531547 ;;
15861580 os=-elf
15871581 ;;
15881582 mips*-*)
1589 os=-elf
1590 ;;
1591 or1k-*)
15921583 os=-elf
15931584 ;;
15941585 or32-*)
00 #! /bin/sh
11 # Guess values for system-dependent variables and create Makefiles.
2 # Generated by GNU Autoconf 2.68 for Asymptote 2.21.
2 # Generated by GNU Autoconf 2.69 for Asymptote 2.23.
33 #
44 # Report bugs to <http://sourceforge.net/projects/asymptote>.
55 #
66 #
7 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
8 # 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
9 # Foundation, Inc.
7 # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
108 #
119 #
1210 # This configure script is free software; the Free Software Foundation
135133 # CDPATH.
136134 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
137135
136 # Use a proper internal environment variable to ensure we don't fall
137 # into an infinite loop, continuously re-executing ourselves.
138 if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
139 _as_can_reexec=no; export _as_can_reexec;
140 # We cannot yet assume a decent shell, so we have to provide a
141 # neutralization value for shells without unset; and this also
142 # works around shells that cannot unset nonexistent variables.
143 # Preserve -v and -x to the replacement shell.
144 BASH_ENV=/dev/null
145 ENV=/dev/null
146 (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
147 case $- in # ((((
148 *v*x* | *x*v* ) as_opts=-vx ;;
149 *v* ) as_opts=-v ;;
150 *x* ) as_opts=-x ;;
151 * ) as_opts= ;;
152 esac
153 exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
154 # Admittedly, this is quite paranoid, since all the known shells bail
155 # out after a failed `exec'.
156 $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
157 as_fn_exit 255
158 fi
159 # We don't want this to propagate to other subprocesses.
160 { _as_can_reexec=; unset _as_can_reexec;}
138161 if test "x$CONFIG_SHELL" = x; then
139162 as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
140163 emulate sh
168191 else
169192 exitcode=1; echo positional parameters were not saved.
170193 fi
171 test x\$exitcode = x0 || exit 1"
194 test x\$exitcode = x0 || exit 1
195 test -x / || exit 1"
172196 as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
173197 as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
174198 eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
213237
214238
215239 if test "x$CONFIG_SHELL" != x; then :
216 # We cannot yet assume a decent shell, so we have to provide a
217 # neutralization value for shells without unset; and this also
218 # works around shells that cannot unset nonexistent variables.
219 # Preserve -v and -x to the replacement shell.
220 BASH_ENV=/dev/null
221 ENV=/dev/null
222 (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
223 export CONFIG_SHELL
224 case $- in # ((((
225 *v*x* | *x*v* ) as_opts=-vx ;;
226 *v* ) as_opts=-v ;;
227 *x* ) as_opts=-x ;;
228 * ) as_opts= ;;
229 esac
230 exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
240 export CONFIG_SHELL
241 # We cannot yet assume a decent shell, so we have to provide a
242 # neutralization value for shells without unset; and this also
243 # works around shells that cannot unset nonexistent variables.
244 # Preserve -v and -x to the replacement shell.
245 BASH_ENV=/dev/null
246 ENV=/dev/null
247 (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
248 case $- in # ((((
249 *v*x* | *x*v* ) as_opts=-vx ;;
250 *v* ) as_opts=-v ;;
251 *x* ) as_opts=-x ;;
252 * ) as_opts= ;;
253 esac
254 exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
255 # Admittedly, this is quite paranoid, since all the known shells bail
256 # out after a failed `exec'.
257 $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
258 exit 255
231259 fi
232260
233261 if test x$as_have_required = xno; then :
330358
331359
332360 } # as_fn_mkdir_p
361
362 # as_fn_executable_p FILE
363 # -----------------------
364 # Test if FILE is an executable regular file.
365 as_fn_executable_p ()
366 {
367 test -f "$1" && test -x "$1"
368 } # as_fn_executable_p
333369 # as_fn_append VAR VALUE
334370 # ----------------------
335371 # Append the text in VALUE to the end of the definition contained in VAR. Take
451487 chmod +x "$as_me.lineno" ||
452488 { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
453489
490 # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
491 # already done that, so ensure we don't try to do so again and fall
492 # in an infinite loop. This has already happened in practice.
493 _as_can_reexec=no; export _as_can_reexec
454494 # Don't try to exec as it changes $[0], causing all sort of problems
455495 # (the dirname of $[0] is not the place where we might find the
456496 # original and so on. Autoconf is especially sensitive to this).
485525 # ... but there are two gotchas:
486526 # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
487527 # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
488 # In both cases, we have to default to `cp -p'.
528 # In both cases, we have to default to `cp -pR'.
489529 ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
490 as_ln_s='cp -p'
530 as_ln_s='cp -pR'
491531 elif ln conf$$.file conf$$ 2>/dev/null; then
492532 as_ln_s=ln
493533 else
494 as_ln_s='cp -p'
534 as_ln_s='cp -pR'
495535 fi
496536 else
497 as_ln_s='cp -p'
537 as_ln_s='cp -pR'
498538 fi
499539 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
500540 rmdir conf$$.dir 2>/dev/null
506546 as_mkdir_p=false
507547 fi
508548
509 if test -x / >/dev/null 2>&1; then
510 as_test_x='test -x'
511 else
512 if ls -dL / >/dev/null 2>&1; then
513 as_ls_L_option=L
514 else
515 as_ls_L_option=
516 fi
517 as_test_x='
518 eval sh -c '\''
519 if test -d "$1"; then
520 test -d "$1/.";
521 else
522 case $1 in #(
523 -*)set "./$1";;
524 esac;
525 case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
526 ???[sx]*):;;*)false;;esac;fi
527 '\'' sh
528 '
529 fi
530 as_executable_p=$as_test_x
549 as_test_x='test -x'
550 as_executable_p=as_fn_executable_p
531551
532552 # Sed expression to map a string onto a valid CPP name.
533553 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
559579 # Identity of this package.
560580 PACKAGE_NAME='Asymptote'
561581 PACKAGE_TARNAME='asymptote'
562 PACKAGE_VERSION='2.21'
563 PACKAGE_STRING='Asymptote 2.21'
582 PACKAGE_VERSION='2.23'
583 PACKAGE_STRING='Asymptote 2.23'
564584 PACKAGE_BUGREPORT='http://sourceforge.net/projects/asymptote'
565585 PACKAGE_URL=''
566586
11751195 if test "x$host_alias" != x; then
11761196 if test "x$build_alias" = x; then
11771197 cross_compiling=maybe
1178 $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
1179 If a cross compiler is detected then cross compile mode will be used" >&2
11801198 elif test "x$build_alias" != "x$host_alias"; then
11811199 cross_compiling=yes
11821200 fi
12621280 # Omit some internal or obsolete options to make the list less imposing.
12631281 # This message is too long to be a string in the A/UX 3.1 sh.
12641282 cat <<_ACEOF
1265 \`configure' configures Asymptote 2.21 to adapt to many kinds of systems.
1283 \`configure' configures Asymptote 2.23 to adapt to many kinds of systems.
12661284
12671285 Usage: $0 [OPTION]... [VAR=VALUE]...
12681286
13271345
13281346 if test -n "$ac_init_help"; then
13291347 case $ac_init_help in
1330 short | recursive ) echo "Configuration of Asymptote 2.21:";;
1348 short | recursive ) echo "Configuration of Asymptote 2.23:";;
13311349 esac
13321350 cat <<\_ACEOF
13331351
14401458 test -n "$ac_init_help" && exit $ac_status
14411459 if $ac_init_version; then
14421460 cat <<\_ACEOF
1443 Asymptote configure 2.21
1444 generated by GNU Autoconf 2.68
1445
1446 Copyright (C) 2010 Free Software Foundation, Inc.
1461 Asymptote configure 2.23
1462 generated by GNU Autoconf 2.69
1463
1464 Copyright (C) 2012 Free Software Foundation, Inc.
14471465 This configure script is free software; the Free Software Foundation
14481466 gives unlimited permission to copy, distribute and modify it.
14491467 _ACEOF
16671685 test ! -s conftest.err
16681686 } && test -s conftest$ac_exeext && {
16691687 test "$cross_compiling" = yes ||
1670 $as_test_x conftest$ac_exeext
1688 test -x conftest$ac_exeext
16711689 }; then :
16721690 ac_retval=0
16731691 else
19081926 test ! -s conftest.err
19091927 } && test -s conftest$ac_exeext && {
19101928 test "$cross_compiling" = yes ||
1911 $as_test_x conftest$ac_exeext
1929 test -x conftest$ac_exeext
19121930 }; then :
19131931 ac_retval=0
19141932 else
20262044 This file contains any messages produced by compilers while
20272045 running configure, to aid debugging if configure makes a mistake.
20282046
2029 It was created by Asymptote $as_me 2.21, which was
2030 generated by GNU Autoconf 2.68. Invocation command line was
2047 It was created by Asymptote $as_me 2.23, which was
2048 generated by GNU Autoconf 2.69. Invocation command line was
20312049
20322050 $ $0 $@
20332051
25072525 IFS=$as_save_IFS
25082526 test -z "$as_dir" && as_dir=.
25092527 for ac_exec_ext in '' $ac_executable_extensions; do
2510 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
2528 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
25112529 ac_cv_prog_CC="${ac_tool_prefix}gcc"
25122530 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
25132531 break 2
25472565 IFS=$as_save_IFS
25482566 test -z "$as_dir" && as_dir=.
25492567 for ac_exec_ext in '' $ac_executable_extensions; do
2550 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
2568 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
25512569 ac_cv_prog_ac_ct_CC="gcc"
25522570 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
25532571 break 2
26002618 IFS=$as_save_IFS
26012619 test -z "$as_dir" && as_dir=.
26022620 for ac_exec_ext in '' $ac_executable_extensions; do
2603 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
2621 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
26042622 ac_cv_prog_CC="${ac_tool_prefix}cc"
26052623 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
26062624 break 2
26412659 IFS=$as_save_IFS
26422660 test -z "$as_dir" && as_dir=.
26432661 for ac_exec_ext in '' $ac_executable_extensions; do
2644 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
2662 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
26452663 if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
26462664 ac_prog_rejected=yes
26472665 continue
26992717 IFS=$as_save_IFS
27002718 test -z "$as_dir" && as_dir=.
27012719 for ac_exec_ext in '' $ac_executable_extensions; do
2702 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
2720 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
27032721 ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
27042722 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
27052723 break 2
27432761 IFS=$as_save_IFS
27442762 test -z "$as_dir" && as_dir=.
27452763 for ac_exec_ext in '' $ac_executable_extensions; do
2746 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
2764 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
27472765 ac_cv_prog_ac_ct_CC="$ac_prog"
27482766 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
27492767 break 2
31893207 /* end confdefs.h. */
31903208 #include <stdarg.h>
31913209 #include <stdio.h>
3192 #include <sys/types.h>
3193 #include <sys/stat.h>
3210 struct stat;
31943211 /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
31953212 struct buf { int x; };
31963213 FILE * (*rcsopen) (struct buf *, struct stat *, int);
34303447 for ac_prog in grep ggrep; do
34313448 for ac_exec_ext in '' $ac_executable_extensions; do
34323449 ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
3433 { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
3450 as_fn_executable_p "$ac_path_GREP" || continue
34343451 # Check for GNU ac_path_GREP and select it if it is found.
34353452 # Check for GNU $ac_path_GREP
34363453 case `"$ac_path_GREP" --version 2>&1` in
34963513 for ac_prog in egrep; do
34973514 for ac_exec_ext in '' $ac_executable_extensions; do
34983515 ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
3499 { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
3516 as_fn_executable_p "$ac_path_EGREP" || continue
35003517 # Check for GNU ac_path_EGREP and select it if it is found.
35013518 # Check for GNU $ac_path_EGREP
35023519 case `"$ac_path_EGREP" --version 2>&1` in
39293946 IFS=$as_save_IFS
39303947 test -z "$as_dir" && as_dir=.
39313948 for ac_exec_ext in '' $ac_executable_extensions; do
3932 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
3949 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
39333950 ac_cv_prog_kpsewhich="true"
39343951 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
39353952 break 2
40284045 IFS=$as_save_IFS
40294046 test -z "$as_dir" && as_dir=.
40304047 for ac_exec_ext in '' $ac_executable_extensions; do
4031 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
4048 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
40324049 ac_cv_prog_kpsewhich="true"
40334050 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
40344051 break 2
40764093 IFS=$as_save_IFS
40774094 test -z "$as_dir" && as_dir=.
40784095 for ac_exec_ext in '' $ac_executable_extensions; do
4079 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
4096 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
40804097 ac_cv_prog_TEXI2DVI="$ac_prog"
40814098 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
40824099 break 2
41884205 IFS=$as_save_IFS
41894206 test -z "$as_dir" && as_dir=.
41904207 for ac_exec_ext in '' $ac_executable_extensions; do
4191 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
4208 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
41924209 ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
41934210 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
41944211 break 2
42324249 IFS=$as_save_IFS
42334250 test -z "$as_dir" && as_dir=.
42344251 for ac_exec_ext in '' $ac_executable_extensions; do
4235 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
4252 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
42364253 ac_cv_prog_ac_ct_CXX="$ac_prog"
42374254 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
42384255 break 2
44364453 IFS=$as_save_IFS
44374454 test -z "$as_dir" && as_dir=.
44384455 for ac_exec_ext in '' $ac_executable_extensions; do
4439 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
4456 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
44404457 ac_cv_prog_LEX="$ac_prog"
44414458 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
44424459 break 2
44684485 b { REJECT; }
44694486 c { yymore (); }
44704487 d { yyless (1); }
4471 e { yyless (input () != 0); }
4488 e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */
4489 yyless ((input () != 0)); }
44724490 f { unput (yytext[0]); }
44734491 . { BEGIN INITIAL; }
44744492 %%
46044622 IFS=$as_save_IFS
46054623 test -z "$as_dir" && as_dir=.
46064624 for ac_exec_ext in '' $ac_executable_extensions; do
4607 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
4625 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
46084626 ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
46094627 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
46104628 break 2
46484666 IFS=$as_save_IFS
46494667 test -z "$as_dir" && as_dir=.
46504668 for ac_exec_ext in '' $ac_executable_extensions; do
4651 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
4669 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
46524670 ac_cv_prog_ac_ct_CXX="$ac_prog"
46534671 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
46544672 break 2
48994917 # by default.
49004918 for ac_prog in ginstall scoinst install; do
49014919 for ac_exec_ext in '' $ac_executable_extensions; do
4902 if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
4920 if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
49034921 if test $ac_prog = install &&
49044922 grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
49054923 # AIX install. It has an incompatible calling convention.
49774995 IFS=$as_save_IFS
49784996 test -z "$as_dir" && as_dir=.
49794997 for ac_exec_ext in '' $ac_executable_extensions; do
4980 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
4998 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
49814999 ac_cv_prog_CC="${ac_tool_prefix}gcc"
49825000 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
49835001 break 2
50175035 IFS=$as_save_IFS
50185036 test -z "$as_dir" && as_dir=.
50195037 for ac_exec_ext in '' $ac_executable_extensions; do
5020 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
5038 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
50215039 ac_cv_prog_ac_ct_CC="gcc"
50225040 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
50235041 break 2
50705088 IFS=$as_save_IFS
50715089 test -z "$as_dir" && as_dir=.
50725090 for ac_exec_ext in '' $ac_executable_extensions; do
5073 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
5091 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
50745092 ac_cv_prog_CC="${ac_tool_prefix}cc"
50755093 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
50765094 break 2
51115129 IFS=$as_save_IFS
51125130 test -z "$as_dir" && as_dir=.
51135131 for ac_exec_ext in '' $ac_executable_extensions; do
5114 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
5132 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
51155133 if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
51165134 ac_prog_rejected=yes
51175135 continue
51695187 IFS=$as_save_IFS
51705188 test -z "$as_dir" && as_dir=.
51715189 for ac_exec_ext in '' $ac_executable_extensions; do
5172 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
5190 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
51735191 ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
51745192 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
51755193 break 2
52135231 IFS=$as_save_IFS
52145232 test -z "$as_dir" && as_dir=.
52155233 for ac_exec_ext in '' $ac_executable_extensions; do
5216 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
5234 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
52175235 ac_cv_prog_ac_ct_CC="$ac_prog"
52185236 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
52195237 break 2
54095427 /* end confdefs.h. */
54105428 #include <stdarg.h>
54115429 #include <stdio.h>
5412 #include <sys/types.h>
5413 #include <sys/stat.h>
5430 struct stat;
54145431 /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
54155432 struct buf { int x; };
54165433 FILE * (*rcsopen) (struct buf *, struct stat *, int);
55445561 IFS=$as_save_IFS
55455562 test -z "$as_dir" && as_dir=.
55465563 for ac_exec_ext in '' $ac_executable_extensions; do
5547 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
5564 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
55485565 ac_cv_prog_YACC="$ac_prog"
55495566 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
55505567 break 2
63096326 IFS=$as_save_IFS
63106327 test -z "$as_dir" && as_dir=.
63116328 for ac_exec_ext in '' $ac_executable_extensions; do
6312 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
6329 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
63136330 ac_cv_prog_ax_pthread_config="yes"
63146331 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
63156332 break 2
65126529 IFS=$as_save_IFS
65136530 test -z "$as_dir" && as_dir=.
65146531 for ac_exec_ext in '' $ac_executable_extensions; do
6515 if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
6532 if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
65166533 ac_cv_prog_PTHREAD_CC="$ac_prog"
65176534 $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
65186535 break 2
74597476 int
74607477 main ()
74617478 {
7462 /* FIXME: Include the comments suggested by Paul. */
7479
74637480 #ifndef __cplusplus
7464 /* Ultrix mips cc rejects this. */
7481 /* Ultrix mips cc rejects this sort of thing. */
74657482 typedef int charset[2];
7466 const charset cs;
7483 const charset cs = { 0, 0 };
74677484 /* SunOS 4.1.1 cc rejects this. */
74687485 char const *const *pcpcc;
74697486 char **ppc;
74807497 ++pcpcc;
74817498 ppc = (char**) pcpcc;
74827499 pcpcc = (char const *const *) ppc;
7483 { /* SCO 3.2v4 cc rejects this. */
7484 char *t;
7500 { /* SCO 3.2v4 cc rejects this sort of thing. */
7501 char tx;
7502 char *t = &tx;
74857503 char const *s = 0 ? (char *) 0 : (char const *) 0;
74867504
74877505 *t++ = 0;
74977515 iptr p = 0;
74987516 ++p;
74997517 }
7500 { /* AIX XL C 1.02.0.0 rejects this saying
7518 { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
75017519 "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
7502 struct s { int j; const int *ap[3]; };
7503 struct s *b; b->j = 5;
7520 struct s { int j; const int *ap[3]; } bx;
7521 struct s *b = &bx; b->j = 5;
75047522 }
75057523 { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
75067524 const int foo = 10;
84178435 # ... but there are two gotchas:
84188436 # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
84198437 # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
8420 # In both cases, we have to default to `cp -p'.
8438 # In both cases, we have to default to `cp -pR'.
84218439 ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
8422 as_ln_s='cp -p'
8440 as_ln_s='cp -pR'
84238441 elif ln conf$$.file conf$$ 2>/dev/null; then
84248442 as_ln_s=ln
84258443 else
8426 as_ln_s='cp -p'
8444 as_ln_s='cp -pR'
84278445 fi
84288446 else
8429 as_ln_s='cp -p'
8447 as_ln_s='cp -pR'
84308448 fi
84318449 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
84328450 rmdir conf$$.dir 2>/dev/null
84868504 as_mkdir_p=false
84878505 fi
84888506
8489 if test -x / >/dev/null 2>&1; then
8490 as_test_x='test -x'
8491 else
8492 if ls -dL / >/dev/null 2>&1; then
8493 as_ls_L_option=L
8494 else
8495 as_ls_L_option=
8496 fi
8497 as_test_x='
8498 eval sh -c '\''
8499 if test -d "$1"; then
8500 test -d "$1/.";
8501 else
8502 case $1 in #(
8503 -*)set "./$1";;
8504 esac;
8505 case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
8506 ???[sx]*):;;*)false;;esac;fi
8507 '\'' sh
8508 '
8509 fi
8510 as_executable_p=$as_test_x
8507
8508 # as_fn_executable_p FILE
8509 # -----------------------
8510 # Test if FILE is an executable regular file.
8511 as_fn_executable_p ()
8512 {
8513 test -f "$1" && test -x "$1"
8514 } # as_fn_executable_p
8515 as_test_x='test -x'
8516 as_executable_p=as_fn_executable_p
85118517
85128518 # Sed expression to map a string onto a valid CPP name.
85138519 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
85288534 # report actual input values of CONFIG_FILES etc. instead of their
85298535 # values after options handling.
85308536 ac_log="
8531 This file was extended by Asymptote $as_me 2.21, which was
8532 generated by GNU Autoconf 2.68. Invocation command line was
8537 This file was extended by Asymptote $as_me 2.23, which was
8538 generated by GNU Autoconf 2.69. Invocation command line was
85338539
85348540 CONFIG_FILES = $CONFIG_FILES
85358541 CONFIG_HEADERS = $CONFIG_HEADERS
85908596 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
85918597 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
85928598 ac_cs_version="\\
8593 Asymptote config.status 2.21
8594 configured by $0, generated by GNU Autoconf 2.68,
8599 Asymptote config.status 2.23
8600 configured by $0, generated by GNU Autoconf 2.69,
85958601 with options \\"\$ac_cs_config\\"
85968602
8597 Copyright (C) 2010 Free Software Foundation, Inc.
8603 Copyright (C) 2012 Free Software Foundation, Inc.
85988604 This config.status script is free software; the Free Software Foundation
85998605 gives unlimited permission to copy, distribute and modify it."
86008606
86838689 _ACEOF
86848690 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
86858691 if \$ac_cs_recheck; then
8686 set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
8692 set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
86878693 shift
86888694 \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
86898695 CONFIG_SHELL='$SHELL'
22 # this file.
33
44 AC_PREREQ(2)
5 AC_INIT([Asymptote],[2.21],[http://sourceforge.net/projects/asymptote])
5 AC_INIT([Asymptote],[2.23],[http://sourceforge.net/projects/asymptote])
66 VERSION=$PACKAGE_VERSION
77 AC_SUBST(VERSION)
88 m4_include([ax_pthread.m4])
00 BFNNCONV = bfnnconv.pl m-ascii.pl m-html.pl m-info.pl m-lout.pl m-post.pl
1
2 FAQ = asy-faq.html asy-faq.ascii asy-faq.info
31
42 all: faq
53
6 $(FAQ): $(BFNNCONV) asy-faq.bfnn
4 faq: $(BFNNCONV) asy-faq.bfnn
75 mkdir -p asy-faq.html
86 perl bfnnconv.pl asy-faq.bfnn
97 perl bfnnconv.pl asy-faq.bfnn
10
11 faq: $(FAQ)
128
139 clean: FORCE
1410 -rm -f *~ core a.out *.lout *.ps *.info *.ascii *.xrefdb *.post
99 File: asy-faq.info, Node: Top, Next: Question 1.1, Up: (dir)
1010
1111 ASYMPTOTE FREQUENTLY ASKED QUESTIONS
12 10 Oct 2012
12 20 May 2013
1313
1414 This is the list of Frequently Asked Questions about Asymptote (asy).
1515
88
99 @url{http://asymptote.sourceforge.net}
1010
11 Copyright @copyright{} 2004-11 Andy Hammerlindl, John Bowman, and Tom Prince.
11 Copyright @copyright{} 2004-13 Andy Hammerlindl, John Bowman, and Tom Prince.
1212
1313 @quotation
1414 Permission is granted to copy, distribute and/or modify this document
8888 Programming
8989
9090 * Data types:: void, bool, int, real, pair, triple, string
91 * Paths and guides::
91 * Paths and guides::
9292 * Pens:: Colors, line types, line widths, font sizes
9393 * Transforms:: Affine transforms
9494 * Frames and pictures:: Canvases for immediate and deferred drawing
166166 Graphical User Interface
167167
168168 * GUI installation:: Installing @code{xasy}
169 * GUI usage::
169 * GUI usage::
170170
171171 @end detailmenu
172172 @end menu
389389 @noindent
390390 is required to support output formats other than @acronym{EPS},
391391 @acronym{PDF}, @acronym{SVG}, and @acronym{PNG} (@pxref{convert}).
392 The @code{Python} interpreter from @url{http://www.python.org} is only required
392 The @code{Python 2} interpreter from @url{http://www.python.org} is only required
393393 if you wish to try out the graphical user interface (@pxref{GUI}).
394394
395395 @noindent
586586 @url{http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-7.2d.tar.gz}
587587 in the @code{Asymptote} source directory.
588588
589 @cindex @code{freeglut}
590 @cindex 3D rendering
591 @cindex antialiasing
592 @cindex multisampling
593 @anchor{multisampling}
594 @noindent
595 If your graphics card supports multisampling, we recommend using version
596 @code{2.6.0} of @code{freeglut} to support antialiasing in
597 @code{Asymptote}'s adaptive @code{OpenGL} 3D renderer
598 (@code{MacOS X} users can skip this step since @code{Asymptote} is configured
599 to use the native glut library on that platform). Download
589 On @code{UNIX} platforms (other than @code{MacOS X}), we recommend
590 using version @code{2.8.1} of the @code{freeglut} library. To compile
591 @code{freeglut}, download
600592 @quotation
601 @url{http://prdownloads.sourceforge.net/freeglut/freeglut-2.6.0.tar.gz}
593 @url{http://prdownloads.sourceforge.net/freeglut/freeglut-2.8.1.tar.gz}
602594 @end quotation
603595 @noindent
604596 and type (as the root user):
605597 @verbatim
606 tar -zxf freeglut-2.6.0.tar.gz
607 cd freeglut-2.6.0
598 gunzip freeglut-2.8.1.tar.gz
599 tar -xf freeglut-2.8.1.tar
600 cd freeglut-2.8.1
608601 ./configure --prefix=/usr
609602 make install
610603 cd ..
611604 @end verbatim
612605 @noindent
606
613607 Then compile @code{Asymptote} with the commands
614608 @verbatim
615609 ./configure
12801274 direction of the line segment @code{a--b} can be achieved with
12811275 @verbatim
12821276 void axialshade(picture pic=currentpicture, path g, bool stroke=false,
1283 pen pena, pair a,
1284 pen penb, pair b);
1285 @end verbatim
1277 pen pena, pair a, bool extenda=true,
1278 pen penb, pair b, bool extendb=true);
1279 @end verbatim
1280 @noindent
1281 The boolean parameters @code{extenda} and @code{extendb} indicate
1282 whether the shading should extend beyond the axis endpoints @code{a}
1283 and @code{b}.
12861284
12871285 @cindex @code{radialshade}
12881286 Radial gradient shading varying smoothly from
12911289 is similar:
12921290 @verbatim
12931291 void radialshade(picture pic=currentpicture, path g, bool stroke=false,
1294 pen pena, pair a, real ra,
1295 pen penb, pair b, real rb);
1296 @end verbatim
1297 @noindent
1292 pen pena, pair a, real ra, bool extenda=true,
1293 pen penb, pair b, real rb, bool extendb=true);
1294 @end verbatim
1295 @noindent
1296 The boolean parameters @code{extenda} and @code{extendb} indicate
1297 whether the shading should extend beyond the radii @code{a} and @code{b}.
12981298 Illustrations of radial shading are provided in the example files
12991299 @code{shade.asy}, @code{ring.asy}, and @code{shadestroke.asy}.
13001300
16381638 Computational Geometry 1, 1986):
16391639 @verbatim
16401640 draw((100,0)..tension 2 ..(100,100)..(0,100));
1641 draw((100,0)..tension 2 and 1 ..(100,100)..(0,100));
1642 draw((100,0)..tension atleast 1 ..(100,100)..(0,100));
1643 @end verbatim
1641 draw((100,0)..tension 3 and 2 ..(100,100)..(0,100));
1642 draw((100,0)..tension atleast 2 ..(100,100)..(0,100));
1643 @end verbatim
1644
1645 In these examples there is a space between @code{2} and @code{..}.
1646 This is needed as @code{2.} is interpreted as a numerical constant.
16441647
16451648 @cindex @code{curl}
16461649 The curl parameter specifies the curvature at the endpoints of a path
17331736
17341737 @menu
17351738 * Data types:: void, bool, int, real, pair, triple, string
1736 * Paths and guides::
1739 * Paths and guides::
17371740 * Pens:: Colors, line types, line widths, font sizes
17381741 * Transforms:: Affine transforms
17391742 * Frames and pictures:: Canvases for immediate and deferred drawing
35673570 Alternatively, one can use @code{attach} to automatically increase the
35683571 size of picture @code{dest} to accommodate adding a frame @code{src}
35693572 about the user coordinate @code{position}:
3573 @cindex @code{attach}
35703574 @verbatim
35713575 void attach(picture dest=currentpicture, frame src,
35723576 pair position=0, bool group=true,
62886292 @cindex @code{trembling}
62896293 This module, written by Philippe Ivaldi and illustrated in the example
62906294 @code{floatingdisk.asy}, allows one to draw wavy lines, as if drawn by
6291 hand. Further examples are posted at
6292 @url{http://www.piprime.fr/files/asymptote/trembling/}
6295 hand.
62936296
62946297 @node stats
62956298 @section @code{stats}
77667769 @code{outformat=""} and @code{render=-1}). If you encounter warnings
77677770 from your graphics card driver, try specifying @code{-glOptions=-indirect}
77687771 on the command line. On @code{UNIX} systems with graphics support for
7769 multisampling, we recommend installing the latest SVN (antialiased)
7770 version of the @code{freeglut} library
7771 (@pxref{multisampling}); the sample width can be
7772 multisampling, the sample width can be
77727773 controlled with the setting @code{multisample}. An initial screen
77737774 position can be specified with the pair setting @code{position}, where
77747775 negative values are interpreted as relative to the corresponding
88438844 To construct contours for an array of values @code{f} specified at
88448845 irregularly positioned points @code{z}, use the routine
88458846 @verbatim
8846 guide[][] contour(pair[] z, real[] f, real[] c,
8847 interpolate join=operator --, int subsample=1);
8847 guide[][] contour(pair[] z, real[] f, real[] c, interpolate join=operator --);
88488848 @end verbatim
88498849 @noindent
88508850 The contours themselves can be drawn with one of the routines
92579257
92589258 @menu
92599259 * GUI installation:: Installing @code{xasy}
9260 * GUI usage::
9260 * GUI usage::
92619261 @end menu
92629262
92639263 @node GUI installation
92819281
92829282 Pictures are deconstructed into the @acronym{PNG} image format, which
92839283 supports full alpha channel transparency. Under @code{Microsoft Windows},
9284 this requires @code{Python 2.7.3} and the @code{Python Imaging Library}:
9284 this requires @code{Python 2.7.4} and the @code{Python Imaging Library}:
92859285 @quotation
9286 @url{http://www.python.org/ftp/python/2.7.3/python-2.7.3.msi}
9286 @url{http://www.python.org/ftp/python/2.7.4/python-2.7.4.msi}
92879287 @end quotation
92889288 @quotation
92899289 @url{http://effbot.org/downloads/PIL-1.1.7.win32-py2.7.exe}.
96539653 @c LocalWords: pdfreloadOptions deferred OpenGL Phong Blinn renderer unitbox
96549654 @c LocalWords: bezulate Shardt's rasterized viewport unitdisk unitplane devel
96559655 @c LocalWords: unitcylinder unitcone solidcone unitfrustum unitsphere nslices
9656 @c LocalWords: DPostScript YZZero freeglut externalprc nonrendered nosafe KDE
9656 @c LocalWords: DPostScript YZZero externalprc nonrendered nosafe KDE
96579657 @c LocalWords: unithemisphere versa XYplane xypart unitsolidcone YZEquals xml
96589658 @c LocalWords: XZEquals XYEquals XZZero XYZero InTicks OutTicks InOutTicks
96599659 @c LocalWords: fitscreen planeproject strokepath meshlight nullpens arrowdir
96859685 @c LocalWords: ascii piecewise arcpoint spacings tilings sncndn resizing
96869686 @c LocalWords: differentiable vectorization vectorized asydir normals quartic
96879687 @c LocalWords: wavepacket kerned parametrized specular hyperboloid Bourke's
9688 @c LocalWords: Michail
9688 @c LocalWords: Michail 0pt 1filll 's 3D latin1 labelpath3 2D graph3
9689 @c LocalWords: grid3 contour3 i386 psv a4 gsview32 freeglut 'load '
9690 @c LocalWords: 'asy 'lasy 'auto 5bp 1cm sqrtx01 4g extenda extendb
9691 @c LocalWords: bb llx 2S 100pt 3t bezier2 bool3 x0 angle1 angle2 z1
9692 @c LocalWords: z2 before' struct X11 x11colors type1cm 12pt OT1 5mm
9693 @c LocalWords: cmr12 x' y' xsize ysize 25cm s1 s2 neighbourhood u''
9694 @c LocalWords: s'' 3x 5x 3y 602e 2x 2y 3sin 10cm 204e addby7 10x Ai
9695 @c LocalWords: only'' pow10 log10 expm1 log1p atan2 Ai Ai Ai Ai Ai
9696 @c LocalWords: Ai Ai x1 x2 graph2d attachfile2 n0 P0 n1 P1 markers1
9697 @c LocalWords: interpolate1 markers2 inlinemovie3 media9 U3D T2A 5E
9698 @c LocalWords: embeddedu3d curvedlabel3 value2 tickvalue inner'' 2N
9699 @c LocalWords: lineargraph0 scalings log2 log2graph 5cm BWRainbow2
9700 @c LocalWords: guide3 path3 unitcircle3 2E 2n noV 100d PostScript3D
9701 @c LocalWords: size3 fit3 theta1 phi1 theta2 phi2 v1 v2 unitsquare3
9702 @c LocalWords: t1 t2 5z 5y transform3 identity4 xscale3 yscale3
9703 @c LocalWords: zscale3 scale3 join3 BeginBar3 EndBar3 Bar3 Bars3
9704 @c LocalWords: BeginArrow3 MidArrow3 EndArrow3 Arrow3 Arrows3 axes3
9705 @c LocalWords: BeginArcArrow3 MidArcArrow3 EndArcArrow3 ArcArrow3
9706 @c LocalWords: ArcArrows3 DefaultHead3 HookHead3 TeXHead3 HookHead2
9707 @c LocalWords: DefaultHead2 TeXHead2 arrows3 NoMargin3 BeginMargin3
9708 @c LocalWords: EndMargin3 Margin3 Margins3 BeginPenMargin2 xaxis3
9709 @c LocalWords: EndPenMargin2 PenMargin2 PenMargins2 BeginPenMargin3
9710 @c LocalWords: EndPenMargin3 PenMargin3 PenMargins3 BeginDotMargin3
9711 @c LocalWords: EndDotMargin3 DotMargin3 DotMargins3 TrueMargin3
9712 @c LocalWords: yaxis3 zaxis3 ticks3 NoTicks3 arrowbar3 type2 axis3
9713 @c LocalWords: generalaxis3 vectorfield3 margin3 grid3xyz 5unit
9714 @c LocalWords: slopefield1 144x144
205205
206206 drawElementLC() : T(NULL) {}
207207
208 drawElementLC(double t1, double t2, double t3, double t4,
209 double t5, double t6, double t7, double t8,
210 double t9, double t10, double t11, double t12,
211 double t13, double t14, double t15, double t16) {
212 T=new(UseGC) double[16];
213 T[0]=t1; T[4]=t5; T[ 8]=t9; T[12]=t13;
214 T[1]=t2; T[5]=t6; T[ 9]=t10; T[13]=t14;
215 T[2]=t3; T[6]=t7; T[10]=t11; T[14]=t15;
216 T[3]=t4; T[7]=t8; T[11]=t12; T[15]=t16;
217 }
218
219208 drawElementLC(const double *t) : T(NULL) {
220209 copyTransform3(T,t);
221210 }
6262 drawElement *drawAxialShade::transformed(const transform& t)
6363 {
6464 pair A=t*a, B=t*b;
65 return new drawAxialShade(transpath(t),stroke,pentype,A,penb,B);
65 return new drawAxialShade(transpath(t),stroke,pentype,A,extenda,penb,B,
66 extendb);
6667 }
6768
6869 drawElement *drawRadialShade::transformed(const transform& t)
7071 pair A=t*a, B=t*b;
7172 double RA=length(t*(a+ra)-A);
7273 double RB=length(t*(b+rb)-B);
73 return new drawRadialShade(transpath(t),stroke,pentype,A,RA,penb,B,RB);
74 return new drawRadialShade(transpath(t),stroke,pentype,A,RA,extenda,penb,B,RB,
75 extendb);
7476 }
7577
7678 drawElement *drawGouraudShade::transformed(const transform& t)
114114 class drawAxialShade : public drawShade {
115115 protected:
116116 pair a;
117 bool extenda;
117118 pen penb;
118119 pair b;
120 bool extendb;
119121 ColorSpace colorspace;
120122 public:
121123 drawAxialShade(const vm::array& src, bool stroke, pen pentype,
122 pair a, pen penb, pair b)
123 : drawShade(src,stroke,pentype), a(a), penb(penb), b(b) {}
124 pair a, bool extenda, pen penb, pair b, bool extendb)
125 : drawShade(src,stroke,pentype), a(a), extenda(extenda), penb(penb),
126 b(b), extendb(extendb) {}
124127
125128 bool svgpng() {return false;}
126129
131134 }
132135
133136 void shade(psfile *out) {
134 out->gradientshade(true,colorspace,pentype,a,0,penb,b,0);
137 out->gradientshade(true,colorspace,pentype,a,0,extenda,penb,b,0,extendb);
135138 }
136139
137140 drawElement *transformed(const transform& t);
143146 double rb;
144147 public:
145148 drawRadialShade(const vm::array& src, bool stroke,
146 pen pentype, pair a, double ra, pen penb, pair b, double rb)
147 : drawAxialShade(src,stroke,pentype,a,penb,b), ra(ra), rb(rb) {}
149 pen pentype, pair a, double ra, bool extenda, pen penb,
150 pair b, double rb, bool extendb)
151 : drawAxialShade(src,stroke,pentype,a,extenda,penb,b,extendb),
152 ra(ra), rb(rb) {}
148153
149154 bool svgpng() {return ra > 0.0;}
150155
153158 }
154159
155160 void shade(psfile *out) {
156 out->gradientshade(false,colorspace,pentype,a,ra,penb,b,rb);
161 out->gradientshade(false,colorspace,pentype,a,ra,extenda,penb,b,rb,extendb);
157162 }
158163
159164 drawElement *transformed(const transform& t);
126126 }
127127
128128 drawNurbsPath3(const double* t, const drawNurbsPath3 *s) :
129 degree(s->degree), n(s->n), color(s->color), invisible(s->invisible) {
129 degree(s->degree), n(s->n), weights(s->weights), knots(s->knots),
130 color(s->color), invisible(s->invisible) {
130131 controls=new(UseGC) Triple[n];
131132 transformTriples(t,n,controls,s->controls);
132
133 if(s->weights) {
134 weights=new(UseGC) double[n];
135 for(size_t i=0; i < n; ++i)
136 weights[i]=s->weights[i];
137 } else weights=NULL;
138
139 size_t nknots=degree+n+1;
140 knots=new(UseGC) double[nknots];
141
142 for(size_t i=0; i < nknots; ++i)
143 knots[i]=s->knots[i];
144133
145134 #ifdef HAVE_GL
146135 Controls=NULL;
303303 if(perspective || !havebillboard) {
304304 static double t[16];
305305 glGetDoublev(GL_MODELVIEW_MATRIX,t);
306 // Like Fortran, OpenGL uses transposed (column-major) format!
307 run::transpose(t,4);
306308
307309 bbox3 B(this->Min,this->Max);
308310 B.transform(t);
543545
544546 static double t[16]; // current transform
545547 glGetDoublev(GL_MODELVIEW_MATRIX,t);
546
548 run::transpose(t,4);
549
547550 bbox3 B(this->Min,this->Max);
548551 B.transform(t);
549552
595598 double temp=z; z=x; x=-temp;
596599 }
597600
598 double f=T[3]*x+T[7]*y+T[11]*z+T[15];
601 double f=T[12]*x+T[13]*y+T[14]*z+T[15];
599602 if(f == 0.0) run::dividebyzero();
600603 f=1.0/f;
601604
602 t[0]=(T[0]*x+T[4]*y+T[ 8]*z+T[12])*f;
603 t[1]=(T[1]*x+T[5]*y+T[ 9]*z+T[13])*f;
604 t[2]=(T[2]*x+T[6]*y+T[10]*z+T[14])*f;
605 t[0]=(T[0]*x+T[1]*y+T[2]*z+T[3])*f;
606 t[1]=(T[4]*x+T[5]*y+T[6]*z+T[7])*f;
607 t[2]=(T[8]*x+T[9]*y+T[10]*z+T[11])*f;
605608 }
606609
607610 bool drawSphere::write(prcfile *out, unsigned int *, double, groupsmap&)
859862 if(invisible)
860863 return true;
861864
862 PRCmaterial m(ambient,diffuse,emissive,specular,opacity,PRCshininess);
863
864 out->addTriangles(nP,P,nI,PI,m,nN,N,NI,0,NULL,NULL,nC,C,CI,0,NULL,NULL,30);
865 if (nC) {
866 const RGBAColour white(1,1,1,opacity);
867 const RGBAColour black(0,0,0,opacity);
868 const PRCmaterial m(black,white,black,specular,opacity,PRCshininess);
869 out->addTriangles(nP,P,nI,PI,m,nN,N,NI,0,NULL,NULL,nC,C,CI,0,NULL,NULL,30);
870 } else {
871 const PRCmaterial m(ambient,diffuse,emissive,specular,opacity,PRCshininess);
872 out->addTriangles(nP,P,nI,PI,m,nN,N,NI,0,NULL,NULL,0,NULL,NULL,0,NULL,NULL,
873 30);
874 }
865875
866876 return true;
867877 }
879889 triple m,M;
880890 static double t[16]; // current transform
881891 glGetDoublev(GL_MODELVIEW_MATRIX,t);
892 run::transpose(t,4);
882893
883894 bbox3 B(this->Min,this->Max);
884895 B.transform(t);
100100
101101 drawSurface(const double* t, const drawSurface *s) :
102102 straight(s->straight), diffuse(s->diffuse), ambient(s->ambient),
103 emissive(s->emissive), specular(s->specular), opacity(s->opacity),
104 shininess(s->shininess), PRCshininess(s->PRCshininess),
103 emissive(s->emissive), specular(s->specular), colors(s->colors),
104 opacity(s->opacity), shininess(s->shininess), PRCshininess(s->PRCshininess),
105105 invisible(s->invisible),
106106 interaction(s->interaction), prc(s->prc) {
107107
114114
115115 #ifdef HAVE_GL
116116 center=t*s->center;
117 normal=multshiftless(t,s->normal);
117 normal=transformNormal(t,s->normal);
118118 #endif
119
120 if(s->colors) {
121 colors=new(UseGC) RGBAColour[4];
122 for(size_t i=0; i < 4; ++i)
123 colors[i]=s->colors[i];
124 } else colors=NULL;
125119 }
126120
127121 bool is3D() {return true;}
246240
247241 drawNurbs(const double* t, const drawNurbs *s) :
248242 udegree(s->udegree), vdegree(s->vdegree), nu(s->nu), nv(s->nv),
243 weights(s->weights), uknots(s->uknots), vknots(s->vknots),
249244 diffuse(s->diffuse), ambient(s->ambient),
250245 emissive(s->emissive), specular(s->specular), opacity(s->opacity),
251246 shininess(s->shininess), PRCshininess(s->PRCshininess),
256251
257252 transformTriples(t,n,controls,s->controls);
258253
259 if(s->weights) {
260 weights=new(UseGC) double[n];
261 for(size_t i=0; i < n; ++i)
262 weights[i]=s->weights[i];
263 } else weights=NULL;
264
265 size_t nuknots=udegree+nu+1;
266 size_t nvknots=vdegree+nv+1;
267 uknots=new(UseGC) double[nuknots];
268 vknots=new(UseGC) double[nvknots];
269
270 for(size_t i=0; i < nuknots; ++i)
271 uknots[i]=s->uknots[i];
272
273 for(size_t i=0; i < nvknots; ++i)
274 vknots[i]=s->vknots[i];
275
276254 #ifdef HAVE_GL
277255 Controls=NULL;
278 if(s->colors) {
279 colors=new(UseGC) GLfloat[16];
280 for(size_t i=0; i < 16; ++i)
281 colors[i]=s->colors[i];
282 } else colors=NULL;
256 colors=s->colors;
283257 #endif
284258 }
285259
0
10 size(100,0);
21 radialshade(unitsquare,yellow,(0,0),0,red,(0,0),1);
32
00 /* tvgen - draw pm5544-like television test cards.
1 * Copyright (C) 2007, 2009, Servaas Vandenberghe.
1 * Copyright (C) 2007, 2009, 2012, Servaas Vandenberghe.
22 *
33 * The tvgen code below is free software: you can redistribute it and/or
44 * modify it under the terms of the GNU Lesser General Public License as
1515 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
1616 * Boston, MA 02110-1301, USA.
1717 *
18 * tvgen-1.1/tvgen.asy
18 * tvgen-1.2/tvgen.asy http://picaros.org/ftp/soft/tvgen-1.2.tgz
1919 * This asy script generates pm5544-like television test cards. The image
2020 * parameters were derived from a 1990 recording. The basic parameters
2121 * conform to itu-r bt.470, bt.601, and bt.709. There is no unique image
2222 * since local variants exist and parameters have varied over time.
2323 */
2424 //papertype="a4";
25 import plain;
2526 int verbose=settings.verbose/*+2*/; /* uncomment for debug info */
2627
2728 /* tv dot coordinates --> PS points */
4546 return z[0]--z[1]--z[2]--z[3]--cycle;
4647 }
4748
49 /********************* horizontal castellations ********************/
50 /* Draw a horizontal red line in the top left and the bottom right
51 * castellation. These testlines disappear if the monitor is not set
52 * in a dot-exact mode. An example is image crop due to overscan.
53 *
54 * For 625 line systems any analog-compatible processing removes
55 * these red testlines since the first halfline of the odd field and
56 * the last halfline of the even field are ignored. A full 576
57 * visible line frame often results via a final copy paste operation.
58 */
59 void castelhor(int colortv, int[] rccoll, int[] rccolr, int cmaxi, int Nh,
60 int topdist, int botdist,
61 pen pdef, real xd, real yd, int Nv) {
62 pen pblack, pwhite, pred;
63 int i;
64
65 pblack = pdef+gray(0.0);
66 pwhite = pdef+gray(1.0);
67 pred = pdef+rgb(0.75, 0, 0);
68
69 /** top and bottom: white corners. **/
70 for (i=-1; i<=cmaxi; ++i) {
71 pen pcast;
72 int inext, lc, rc, tr, br;
73 path zzc;
74
75 inext = i+1;
76 if (inext%2 == 0) {
77 pcast = pwhite;
78 } else {
79 pcast = pblack;
80 }
81
82 if (i >= 0) {
83 lc = rccolr[i];
84 } else {
85 lc = 0;
86 }
87 if (inext <= cmaxi) {
88 rc = rccoll[inext];
89 } else {
90 rc = Nh;
91 }
92
93 if (i == 0 && colortv > 0 && topdist > 1) {
94 path zzr;
95 zzr = tvrect(lc,0, rc,1, xd,yd,Nv);
96 fill(zzr, p=pred);
97 tr = 1;
98 } else {
99 tr = 0;
100 }
101 zzc = tvrect(lc,tr, rc,topdist, xd,yd,Nv);
102 fill(zzc, p=pcast);
103
104 if (inext == cmaxi && colortv > 0 && botdist+1 < Nv) {
105 path zzr;
106 zzr = tvrect(lc,Nv-1, rc,Nv, xd,yd,Nv);
107 fill(zzr, p=pred);
108 br = Nv-1;
109 } else {
110 br = Nv;
111 }
112 zzc = tvrect(lc,botdist, rc,br, xd,yd,Nv);
113 fill(zzc, p=pcast);
114 }
115
116 return;
117 }
118
119 /********************* vertical castellations ********************/
120 /* The bottom right red rectangle tests for a non causal color FIR
121 * filter in the receiver. The last 2..4 dots then typically appear
122 * colorless, green, or cyan.
123 *
124 * This stems from the fact that the chroma subcarrier is of lower
125 * bandwidth than luma and thus continues after the last active sample.
126 * These trailing (y,u,v) samples result from an abrupt signal to zero
127 * transition and depend on the transmit and receive filters. Samples
128 * from VHS, system B/G/D/K, system I, or a DVD player output are
129 * different. Nevertheless, a sharpening filter uses this data and so
130 * adds false color to the last dots.
131 */
132 void castelver(int colortv, int leftdist, int rightdist, int Nh,
133 int[] rcrowb, int[] rcrowt, int rmaxi,
134 pen pdef, real xd, real yd, int Nv) {
135 pen pblack, pwhite;
136 int i;
137
138 pblack = pdef+gray(0.0);
139 pwhite = pdef+gray(1.0);
140
141 for (i=0; i<rmaxi; ++i) {
142 int inext = i+1;
143 pen pcastl, pcastr;
144 int tr, br;
145 path zzc;
146
147 if (inext%2 == 0) {
148 pcastl = pwhite;
149 } else {
150 pcastl = pblack;
151 }
152 if (inext == rmaxi && colortv>0) {
153 pcastr = pdef+rgb(0.75,0.0,0);
154 } else {
155 pcastr = pcastl;
156 }
157
158 tr=rcrowb[i];
159 br=rcrowt[i+1];
160 zzc=tvrect( 0,tr, leftdist,br, xd,yd,Nv);
161 fill(zzc, p=pcastl);
162 zzc=tvrect(rightdist,tr, Nh,br, xd,yd,Nv);
163 fill(zzc, p=pcastr);
164 }
165 return;
166 }
48167 /********************* image aspect ratio markers ********************/
49 void rimarkers(real rimage, int Nh, int Nhc, int os, int Nvc, int Nsy, pen pdef, real xd, real yd, int Nv) {
168 void rimarkers(real rimage, int Nh, int Nhc, int os, int Nvc, int Nsy,
169 pen pdef, real xd, real yd, int Nv) {
50170 int[] ridefN={ 4, 16 };
51171 int[] ridefD={ 3, 9 };
52172 int i;
53173
54 for(i=0; i<2; ++i) {
174 for (i=0; i<2; ++i) {
55175 real rid=ridefN[i]/ridefD[i];
56176
57 if(rimage>rid) {
177 if (rimage>rid) {
58178 int off, offa, offb;
59179
60 /* Nhdef=Nh/rimage*rid */
61 off=round(Nh/rimage*rid/2);
180 /* Nhdef=Nh*rid/rimage */
181 off=round(Nh*rid/rimage/2);
62182 offa=off+os;
63183 offb=off-os;
64184 // write(offa,offb);
65185
66 if(2*offa<Nh) {
186 if (2*offa<Nh) {
67187 int hy, tr, br;
68188 path zz;
69189
82202 return;
83203 }
84204
85 /************* cross hatch: line pairing, center interlace test *************/
86 void centerline(int[] coff, int[] coffa, int[] coffb, int Nhc, int divsx,
87 int os, int[] rcrowc, int Nvc, int divsy,
205 /************* crosshatch: line pairing, center interlace test *************/
206 /* There are 2 coordinate systems in use:
207 * 1. integer number based for the gridlines
208 *
209 * coff, Nhc, rccoll[], rccolc[], rccolr[] : vertical gridlines,
210 * rcrowc, Nvc : horizontal gridlines,
211 *
212 * 2. real number based for the center circle
213 *
214 * ccenter={ cx=Nh/2, cy=Nv/2} : the true image center,
215 * rcoff rcright rcleft : offset to ccenter and points on the circle.
216 *
217 * Both centers coincide if Nh and Nv are even.
218 */
219 void centerline(int colortv,
220 int[] rccoll, int[] rccolc, int[] rccolr, int divsx,
221 int Nhc, int os,
222 int[] rcrowt, int[] rcrowc, int[] rcrowb, int divsy,
223 int Nvc,
88224 pair ccenter, real[] rcoff, pair[] rcright, pair[] rcleft,
89225 pen pdef, real xd, real yd, int Nv) {
90 pair[] z;
91 int col;
92 pen pblack=pdef+gray(0.0), pwhite=pdef+gray(1.0);
226 pen pblack, pwhite;
227 int cmaxi, maxoff, mincol, maxcol;
228 int rows, tr, br;
229 path zz;
230
231 cmaxi=2*divsx+1;
232
233 pblack=pdef+gray(0.0);
234 pwhite=pdef+gray(1.0);
235
236 /* black background for center cross */
237 if (colortv > 0) {
238 /* black, vertical gridlines redrawn below */
239 pair[] z;
240 int col;
93241
94 z[0]=rcright[divsy];
95
96 col=Nhc+coff[0];
97 z[1]=tvps(col,rcrowc[divsy], xd,yd,Nv);
98 z[2]=tvps(col,rcrowc[divsy-1], xd,yd,Nv);
99 col=Nhc-coff[0];
100 z[3]=tvps(col,rcrowc[divsy-1], xd,yd,Nv);
101 z[4]=tvps(col,rcrowc[divsy], xd,yd,Nv);
102
103 z[5]=rcleft[divsy];
104 z[6]=rcleft[divsy+1];
105
106 z[7]=tvps(col,rcrowc[divsy+1], xd,yd,Nv);
107 z[8]=tvps(col,rcrowc[divsy+2], xd,yd,Nv);
108 col=Nhc+coff[0];
109 z[9]=tvps(col,rcrowc[divsy+2], xd,yd,Nv);
110 z[10]=tvps(col,rcrowc[divsy+1], xd,yd,Nv);
111
112 z[11]=rcright[divsy+1];
113 fill(z[1]--z[2]--z[3]--z[4] //--z[5]--z[6]
114 --arc(ccenter, z[5], z[6])
115 --z[7]--z[8]--z[9]--z[10] //--z[11]--z[0]
116 --arc(ccenter,z[11], z[0])
117 --cycle, p=pblack);
118
119 int i, maxoff, rows, tr, br;
120 path zz;
121
122 maxoff=floor(rcoff[divsy]);
123
242 z[0]=rcright[divsy];
243
244 col = rccolc[divsx+1];
245 z[1]=tvps(col,rcrowc[divsy], xd,yd,Nv);
246 z[2]=tvps(col,rcrowc[divsy-1], xd,yd,Nv);
247 col = rccolc[divsx];
248 z[3]=tvps(col,rcrowc[divsy-1], xd,yd,Nv);
249 z[4]=tvps(col,rcrowc[divsy], xd,yd,Nv);
250
251 z[5]=rcleft[divsy];
252 z[6]=rcleft[divsy+1];
253
254 z[7]=tvps(col,rcrowc[divsy+1], xd,yd,Nv);
255 z[8]=tvps(col,rcrowc[divsy+2], xd,yd,Nv);
256 col = rccolc[divsx+1];
257 z[9]=tvps(col,rcrowc[divsy+2], xd,yd,Nv);
258 z[10]=tvps(col,rcrowc[divsy+1], xd,yd,Nv);
259
260 z[11]=rcright[divsy+1];
261 fill(z[1]--z[2]--z[3]--z[4] //--z[5]--z[6]
262 --arc(ccenter, z[5], z[6])
263 --z[7]--z[8]--z[9]--z[10] //--z[11]--z[0]
264 --arc(ccenter,z[11], z[0])
265 --cycle, p=pblack);
266 } else {
267 /* 3 rows of black squares inside the gratings */
268 int i, imax = divsy+1;
269
270 for (i=divsy-1; i<=imax; ++i) { /* all 3 rows */
271 int lmaxoff, lmincol, lmaxcol;
272 int inext = i+1;
273 int tr, br, j;
274
275 /* XXX rcoff is relative to ccenter */
276 lmaxoff = min(floor(rcoff[i]), floor(rcoff[inext]));
277 lmincol = Nhc-lmaxoff;
278 lmaxcol = Nhc+lmaxoff;
279
280 /* square top and bottom */
281 tr = rcrowb[i];
282 br = rcrowt[inext];
283
284 for (j=0; j<cmaxi; ++j) { /* column j */
285 int jnext = j+1;
286
287 if (lmincol<=rccolc[j] && rccolc[jnext]<=lmaxcol) {
288 /* square is inside circle */
289 int lc, rc;
290 path zzsq;
291
292 lc = rccolr[j];
293 rc = rccoll[jnext];
294 zzsq = tvrect(lc, tr, rc, br, xd,yd,Nv);
295 fill(zzsq, p=pblack); /* draw black squares */
296 }
297 } /* for col j */
298 } /* for row i */
299 }
300
124301 /* center cross: vertical and horizontal centerline */
302 maxoff = floor(rcoff[divsy]); /* XXX rcoff is relative to ccenter */
303 mincol = Nhc-maxoff;
304 maxcol = Nhc+maxoff;
305
125306 rows=min(Nvc-rcrowc[divsy-1], rcrowc[divsy+2]-Nvc);
126307 tr=Nvc-rows;
127308 br=Nvc+rows;
128 //write("centerline long: rows tr br ", rows, tr, br);
309 if (verbose > 1) {
310 write("centerline long : rows tr br ", rows, tr, br);
311 }
129312 zz=tvrect(Nhc-os, tr, Nhc+os, br, xd,yd,Nv);
130313 fill(zz, p=pwhite);
131314 zz=tvrect(Nhc-maxoff,Nvc-1, Nhc+maxoff,Nvc+1, xd,yd,Nv);
135318 rows=min(Nvc-rcrowc[divsy], rcrowc[divsy+1]-Nvc);
136319 tr=Nvc-rows;
137320 br=Nvc+rows;
138 if(verbose>1)
139 write("centerline: rows tr br ", rows, tr, br);
140 for(i=0; i<=divsx; ++i) {
141 int off;
321 if (verbose > 1) {
322 write("centerline short: rows tr br ", rows, tr, br);
323 }
324
325 if (colortv > 0) {
326 int i;
327 for (i=0; i<=cmaxi; ++i) {
328 int coll, colr;
142329
143 off=coff[i];
144 if(off<maxoff) {
145 int offa, offb;
146 path zzv;
147 offa=coffa[i];
148 offb=coffb[i];
149
150 zzv=tvrect(Nhc+offb, tr, Nhc+offa, br, xd,yd,Nv);
151 fill(zzv, p=pwhite);
152 zzv=tvrect(Nhc-offa, tr, Nhc-offb, br, xd,yd,Nv);
153 fill(zzv, p=pwhite);
330 coll=rccoll[i];
331 colr=rccolr[i];
332
333 if (mincol<=coll && colr<=maxcol) {
334 path zzv;
335 zzv=tvrect(coll, tr, colr, br, xd,yd,Nv);
336 fill(zzv, p=pwhite);
337 }
154338 }
155339 }
156340 return;
157341 }
158
342
159343 /************************ topbw **************************************/
160344 void topbw(int[] coff, int Nhc, int os, int urow, int trow, int brow,
161345 pair ccenter, pair rclt, pair rclb, pair rcrt, pair rcrb,
205389 * crad circle radius in y units, true size=crad*yd
206390 */
207391 real testcircx(real x, real crad, real xd, real yd) {
208 real relx, phi, y;
392 real relx, ph, y;
209393
210394 relx=x*xd/yd/crad;
211 if(relx>1) {
212 phi=0;
395 if (relx>1) {
396 ph=0;
213397 } else {
214 phi=acos(relx);
215 }
216 y=crad*sin(phi); // or (x*xd)^2+(y*yd)^2=(crad*yd)^2
398 ph=acos(relx);
399 }
400 y=crad*sin(ph); // or (x*xd)^2+(y*yd)^2=(crad*yd)^2
217401
218402 return y;
219403 }
220404 /* y on circle -> return x>=0 */
221405 real testcircy(real y, real crad, real xd, real yd) {
222 real rely, phi, x;
406 real rely, ph, x;
223407
224408 rely=y/crad;
225 if(rely>1) {
226 phi=pi/2;
409 if (rely>1) {
410 ph=pi/2;
227411 } else {
228 phi=asin(rely);
229 }
230 x=crad*cos(phi)*yd/xd; // or (x*xd)^2+(y*yd)^2=(crad*yd)^2
412 ph=asin(rely);
413 }
414 x=crad*cos(ph)*yd/xd; // or (x*xd)^2+(y*yd)^2=(crad*yd)^2
231415
232416 return x;
233417 }
250434
251435 blocks=floor(2*xb/Tt);
252436
253 for(i=-blocks-1; i<=blocks; ++i) {
437 for (i=-blocks-1; i<=blocks; ++i) {
254438 real tl, tr;
255439 path zz;
256440
257441 tl=max(-xb,min(i*Ttt,xb)); /* limit [-xb..xb] */
258442 tr=max(-xb,min((i+1)*Ttt,xb));
259443
260 if(tl<-xt && tr<=-xt || tr>xt && tl>=xt) { /* top full circle */
444 if (tl<-xt && tr<=-xt || tr>xt && tl>=xt) { /* top full circle */
261445 pair[] z;
262446 real yl, yr;
263447
305489 zz=z[0]--z[1]--z[2]--z[3]--cycle;
306490 }
307491
308 if(tl<tr) {
309 if(i%2 == 0) {
492 if (tl<tr) {
493 if (i%2 == 0) {
310494 fill(zz, p=pdef+gray(0.0));
311495 } else {
312496 fill(zz, p=pdef+gray(0.75));
328512
329513 rows=brow-trow;
330514 poff=0;
331 for(i=0; i<=cmax; ++i) {
515 for (i=0; i<=cmax; ++i) {
332516 int off;
333517 int ii=2*i, il=cmax-i, ir=i+cmax+1;
334518 path zzl, zzr;
335519
336520 off=ceil((coff[1+ii]+coff[2+ii])/2);
337 if(i!=0 && i<cmax) {
521 if (i!=0 && i<cmax) {
338522 zzr=tvrect(Nhc+poff,trow, Nhc+off,brow, xd,yd,Nv);
339523 zzl=tvrect(Nhc-off,trow, Nhc-poff,brow, xd,yd,Nv);
340524 } else {
402586
403587 cycles=freq*step;
404588 coverflow=floor(abs(cycles));
405 if(coverflow>1) {
589 if (coverflow>1) {
406590 thetaret=0;
407591 } else {
408592 real dpi=2*pi;
410594 cycles-=coverflow*sgn(cycles);
411595 thetaret=theta+cycles*dpi; /* cycles=(-1 .. 1) */
412596
413 if(thetaret>pi) {
597 if (thetaret>pi) {
414598 thetaret-=dpi;
415 } else if(thetaret<-pi) {
599 } else if (thetaret<-pi) {
416600 thetaret-=dpi;
417601 }
418602 }
430614 real fl, fr, thr, thl;
431615
432616 /* Segment info for PAL continental test card
433 * segment i extends from [divc[i] .. divc[i+1]) with frequency divf[i]
617 * segment i extends from (divc[i] .. divc[i+1]) with frequency divf[i]
434618 */
435 divs=2; // the number of segments on the right, total=2*divs+1
619 divs=2; // the number of segments to the right, total=2*divs+1
436620 divc[0]=0;
437 for(i=0; i<=divs; ++i) {
621 for (i=0; i<=divs; ++i) {
438622 int ii=i*2, il=divs-i, ir=divs+i;
439623
440624 divc[i+1]=ceil((coff[ii]+coff[ii+1])/2); /* xdot distance to center */
452636 divnext=0;
453637 fl=0;
454638 fr=0;
455 thl=0;
456 thr=0;
457 // draw a vertical line at off..off+1
458 for(off=0; off<coffmax; ++off) {
639 thl=0; /* ={ 0, -pi/2 } : initial angle at center vertical line Nhc */
640 thr=thl;
641 /* draw a vertical line at off..off+1, use theta for off+1/2 */
642 for (off=0; off<coffmax; ++off) {
459643 real ampl, ampr;
460644 int col;
461645 path zz;
462646
463 if(off==trowlim) {
647 if (off==trowlim) {
464648 tr=trow;
465649 }
466650
467 if(off == divc[divnext]) {
651 if (off == divc[divnext]) {
468652 /* switch frequency: cycles=0.5*fcur+0.5*fnext */
469653 thl=addphase(thl, fl, -0.5);
470654 thr=addphase(thr, fr, 0.5);
508692 void graybars(int[] coff, int Nhc, int trow, int brow,
509693 pair ccenter, pair rclt, pair rclb, pair rcrt, pair rcrb,
510694 pen pdef, real xd, real yd, int Nv) {
511 int[] gs={0, 51, 102, 153, 204, 255};
512 int cmax=2, poff, rows, i;
513
514 rows=brow-trow;
695 int[] gs={0, 20, 40, 60, 80, 100};
696 int cmax=2, poff, i;
697
515698 poff=0;
516 for(i=0; i<=cmax; ++i) {
699 for (i=0; i<=cmax; ++i) {
517700 int off;
518701 int ii=2*i, il=cmax-i, ir=i+cmax+1;
519702 path zzl, zzr;
520703
521704 off=ceil((coff[1+ii]+coff[2+ii])/2);
522 if(i<cmax) {
705 if (i<cmax) {
523706 zzl=tvrect(Nhc-off,trow, Nhc-poff,brow, xd,yd,Nv);
524707 zzr=tvrect(Nhc+poff,trow, Nhc+off,brow, xd,yd,Nv);
525708 } else {
536719 zrt=tvps(pcol,trow, xd,yd,Nv);
537720 zzr=zrb--arc(ccenter,rcrb,rcrt)--zrt--cycle;
538721 }
539 fill(zzl, p=pdef+gray(gs[il]/255));
540 fill(zzr, p=pdef+gray(gs[ir]/255));
722 fill(zzl, p=pdef+gray(gs[il]/100));
723 fill(zzr, p=pdef+gray(gs[ir]/100));
541724
542725 poff=off;
543726 }
607790 return;
608791 }
609792
610 /****************************** PAL ears ***********************************
793 /****************************** PAL ears ***********************************/
794 /* values pro mille
611795 * left y R G B
612 * 0.55 98 162 140
613 * 0.5 103 128 191
614 * 0.5 152 128 64
615 * 0.45 157 93 115
796 * 550 306 674 550
797 * 500 363 500 859
798 * 500 637 500 141
799 * 450 694 326 450
616800 * right
617 * 0.6 153 168 76
618 * 0.4 102 87 179
801 * 600 600 684 166
802 * 400 400 316 834
619803 *
620804 * in: dright= -1 left ear, +1 right ear
621805 */
632816 */
633817 real cI=0.214;
634818
635 /* (u,v) for zero G-y, phase of -34.5 degrees */
819 /* itu-r */
636820 real wr=0.299, wb=0.114, wg=1-wr-wb; /* wg=0.587, y=wr*R+wg*G+wb*B */
637821 real wu=0.493, wv=0.877; /* u=wu*(B-y) v=wv*(R-y) */
822 /* (u,v) for zero G-y, phase of -34.5 degrees */
638823 real colu=wu*wg/wb, colv=-wv*wg/wr; /* for w=(G-y)/0.696 == 0 */
639824
640825 /* ears: U==0 W==0 W==0 U==0 */
652837 path[] zz;
653838 int lcol, ccol, cicol, rcol, i;
654839
655 if(dright>0) {
840 if (dright>0) {
841 if (verbose > 1)
842 write("right ears");
656843 cy=cyr; cu=cur; cv=cvr;
657844 } else {
845 if (verbose > 1)
846 write("left ears");
658847 cy=cyl; cu=cul; cv=cvl;
659848 }
660849
689878 z[5]=tvps(rcol,arow, xd,yd,Nv);
690879 zz[3]=z[0]--z[1]--z[2]--z[3]--z[4]--z[5]--cycle;
691880
692 for(i=0; i<4; ++i) {
881 for (i=0; i<4; ++i) {
693882 real y, u, v, A, ph, By, Ry, Gy, R, G, B;
694883
695884 y=cy[i];
698887
699888 A=hypot(u,v);
700889 ph= (u!=0 || v!=0) ? atan2(v,u) : 0.0;
701 if(v>=0) {
702 if(ph<0) ph=ph+pi;
890 if (v>=0) {
891 if (ph<0)
892 ph=ph+pi;
703893 } else {
704 if(ph>0) ph=ph-pi;
705 }
706 if(A>0) {
894 if (ph>0)
895 ph=ph-pi;
896 }
897 if (A>0) {
707898 u=u/A*cI;
708899 v=v/A*cI;
709900 }
716907 R=Ry+y;
717908 G=Gy+y;
718909 B=By+y;
719 if(verbose > 1)
720 write(y,round(R*255),round(G*255),round(B*255));
910 if (verbose > 1)
911 write(y*1000, round(R*1000), round(G*1000), round(B*1000));
721912
722913 fill(zz[i], p=pdef+rgb(R,G,B));
723914 }
724915 return;
725916 }
726917
727 /****************************** NTSC bars ***********************************
728 * amplitude equals color burst smpte (pm: -V +U)
918 /****************************** NTSC bars ***********************************/
919 /* amplitude equals color burst smpte (pm: -V +U)
729920 * y campl sat R G B
730921 * left 0.5 0.21 70% -I?
731922 * right 0.5 0.17 60% +Q?
732923 */
733 void ntscbars(int[] coff, int[] coffa, int[] coffb, int Nhc,
734 int[] rcrowt, int[] rcrowb, int Nvc, int divsy, int dright,
924 void ntscbars(int[] rccoll, int[] rccolr, int divsx,
925 int[] rcrowt, int[] rcrowb, int divsy, int dright,
735926 pen pdef, real xd, real yd, int Nv) {
736927 /* The amplitude of (i,q) as seen on a vectorscope,
737928 * max 0.292 Vn for 100% saturation in I==0 ears.
746937 /* iT : iq -> RyBy : rotation+scaling */
747938 real iT11=0.95, iT12=0.62, iT21=-1.11, iT22=1.71;
748939
749 /* bars -2 -1 0 1 2 */
750 real[] cyl={ 0.50, 0.50, 0, 0.50, 0.50 };
751 real[] cil={ 0, 0, 0, -1, 1 };
752 real[] cql={ -1, 1, 0, 0, 0 };
753 int[] offil={ 6, 7, 5, 7, 6 };
754
940 /* bars -2 -1 0 1 2 */
941 real[] cyl={ 0.50, 0.50, 1, 0.50, 0.50 };
942 real[] cil={ 0, 0, 0, -1, 1 };
943 real[] cql={ -1, 1, 0, 0, 0 };
944 int[] indl={ -7, -8, 0, 8, 7 };
945
755946 real cy, ci, cq;
756 int dri, dris, offi, lcol, rcol, i;
757
758 if(dright>=0) {
759 dris=1;
760 } else {
761 dris=-1;
762 }
763 if(dright<-2 || dright>2) {
947 int rmaxi, dri, ind, ibase, lcol, rcol, i;
948
949 rmaxi=2*divsy+1;
950 if (dright<-2 || dright>2) {
764951 dri=2;
765952 } else {
766953 dri=2+dright;
767954 }
768955
769 cy=cyl[dri]; ci=cil[dri]; cq=cql[dri];
770 offi=offil[dri];
771 lcol=Nhc+dris*coffa[offi];
772 rcol=Nhc+dris*coffb[offi+1];
956 cy=cyl[dri];
957 ci=cil[dri];
958 cq=cql[dri];
959 ind=indl[dri];
960 ibase=divsx+ind;
961 lcol=rccolr[ibase];
962 rcol=rccoll[ibase+1];
773963
774964 real A, By, Ry, Gy, R, G, B;
775965
776966 A=hypot(ci,cq);
777 if(A>0) {
967 if (A>0) {
778968 ci=ci/A*campl;
779969 cq=cq/A*campl;
780970 }
786976 R=Ry+cy;
787977 G=Gy+cy;
788978 B=By+cy;
789 if(verbose > 1)
790 write(cy,ci,cq,round(R*255),round(G*255),round(B*255));
791
792 for(i=-divsy; i<=divsy; ++i) {
979 if (verbose > 1)
980 write(ind, cy*1000, round(ci*1000), round(cq*1000),
981 round(R*1000), round(G*1000), round(B*1000));
982
983 for (i=0; i<rmaxi; ++i) {
793984 path zz;
794 int brow, trow;
985 int brow, trow, inext=i+1;
795986
796 if(i>-divsy) {
797 trow=rcrowb[divsy+i];
987 if (i>0) {
988 trow=rcrowb[i];
798989 } else {
799 trow=floor((rcrowb[divsy+i]+rcrowt[divsy+i+1])/2);
990 trow=floor((rcrowb[i]+rcrowt[inext])/2);
800991 }
801992
802 if(divsy>i) {
803 brow=rcrowt[divsy+i+1];
993 if (inext<rmaxi) {
994 brow=rcrowt[inext];
804995 } else {
805 brow=floor((rcrowb[divsy+i]+rcrowt[divsy+i+1])/2);
806 }
807
808 zz=tvrect(lcol,brow, rcol,trow, xd,yd,Nv);
996 brow=floor((rcrowb[i]+rcrowt[inext])/2);
997 }
998
999 zz=tvrect(lcol,trow, rcol,brow, xd,yd,Nv);
8091000 fill(zz, p=pdef+rgb(R,G,B));
8101001 }
8111002
8121003 return;
8131004 }
814
8151005
8161006 /****************************** main ***********************************/
8171007 /* Conversion to bitmap:
8331023 * 5 4/3 768 bsys=1, square dot cable TV info channel
8341024 * 6 131/96 786 bsys=2, total square dot broadcast camera
8351025 * 7 16/9 720 new broadcast 16/9, SD from HD-1440 or itu-r bt.709
836 * 8 4/3 704 525 analog broadcast itu-r bt.470 711*485
1026 * 8 4/3 704 525 analog broadcast itu-r bt.470 711x485
8371027 * 9 4/3 720 525 new broadcast
8381028 * 10 15/11 720 525 total aperture analog broadcast
8391029 * 11 16/9 1920 1250, 1080 square dot at 12.5 frames/second
8401030 * 12 4/3 1600 1250, 1200 square dot at 12.5 frames/second
8411031 *
8421032 * colortv:
843 * set 0 for monochrome crosshatch, 1 for pal ears, 2 for ntsc bars
1033 * 0 monochrome crosshatch,
1034 * 1 pal ears,
1035 * 2 ntsc bars,
1036 * 3 neither ears nor bars.
8441037 *
8451038 * os: horizontal oversampling, typical values for 13.5MHz:
8461039 * 2 4/3 704*576, 15/11 720*576
8531046 access settings;
8541047 usersetting();
8551048
856 if(bsys<0 || bsys>12 || colortv<0 || colortv>3 || os<=0 || os>16) {
857 write('Error: bad user input: bsys, colortv, os=\t', bsys, colortv, os);
858 abort('Bad option -u bsys=N ?');
1049 if (bsys<0 || bsys>12 || colortv<0 || colortv>3 || os<=0 || os>16) {
1050 write("Error: bad user input: bsys, colortv, os=\t", bsys, colortv, os);
1051 abort("Bad option -u bsys=N ?");
8591052 }
8601053
8611054 int[] bNdot=
9041097 *
9051098 * resolution DPI from image aspect ratio
9061099 * Rv=Nv/ly, ly=4in
907 * ri=Ni/Di, Ni={4,15,16} Di={3,11,9}
1100 * ri=Ni/Di, Ni={ 4, 15, 16} Di={ 3, 11, 9}
9081101 * lx=ri*ly
9091102 *
9101103 * Rh=Nh/lx=Di*(Nh/(Ni*ly))
911 * ==> ri=4/Di => Nh=k*16
912 * ri=15/Di => Nh=k*60
913 * ri=16/Di => Nh=k*64
1104 * integer Rh:
1105 * Ni=4 ri=4/Di => Nh=k*16
1106 * Ni=15 ri=15/Di => Nh=k*60
1107 * Ni=16 ri=16/Di => Nh=k*64
9141108 *
9151109 * resolution DPI from dot aspect ratio, general algorithm,
9161110 *
9461140
9471141 Ly=4; // 4 inch vertical size
9481142 m=floor(0.5+Nv/(Ly*Nd));
949 if(m<1) m=1;
1143 if (m < 1) m=1;
9501144 ly=Nv/(m*Nd);
9511145 lx=Nh/(m*Dd);
9521146
9531147 ysize=ly*1inch;
9541148 xsize=lx*1inch;
9551149 rimage=xsize/ysize;
956 if(verbose > 1)
957 write('#Nd Dd m ri:\t', Nd, Dd, m, rimage);
958 //size(xsize,ysize,Aspect); // should not have any effect
959
960 Nsy=bNsy[bsys]; // grating size in lines 42,43, 34,35
1150 if (verbose > 1) {
1151 write("#Nd Dd m ri:\t", Nd, Dd, m, rimage);
1152 }
1153 //size(xsize, ysize, Aspect); // should not have any effect
1154
1155 Nsy=bNsy[bsys]; // grating size in lines 42,43 or 34,35
9611156 Nshift=bNsh[bsys]; // shift image up: pre 1997 =3, 2007 =0
9621157 fs=1e6*bfs[bsys]*os;
9631158 Na=0; // add 1,0,-1 to height of hor center squares for even Na+Nsy
9691164 yd=ysize/Nv;
9701165 pwidth=min(abs(xd),abs(yd));
9711166
972 pen pdefault=squarecap+linewidth(pwidth);
973 pen pblack=pdefault+gray(0.0);
974 pen pwhite=pdefault+gray(1.0);
1167 pen pdefault = squarecap+linewidth(pwidth);
1168 pen pblack = pdefault+gray(0.0);
1169 pen pwhite = pdefault+gray(1.0);
9751170
9761171 /**** calculate grating repeats and size in tv dots ****/
977 // horizontal lines
978 int divsy, rdisty, Nvc, Nt, Nb;
1172 /* horizontal lines */
1173 int divsy, rdisty, Nvc, Nt, Nb, rmaxi;
9791174
9801175 Nvc=floor(Nv/2)-Nshift;
981 divsy=floor(((Nv-Na-2)/Nsy-1)/2); // (Nv-Na-2)/2-Nsy/2 dots for Nsy lengths
1176 /* top half picture (Nv-2)/2-(Nsy+Na)/2 dots for divisions of Nsy dots */
1177 divsy=floor(((Nv-2-Na)/Nsy-1)/2);
9821178 rdisty=Na+Nsy*(1+2*divsy);
1179 /* first guess free lines top and bottom */
9831180 Nt=Nvc-ceil(rdisty/2);
9841181 Nb=Nv-Nt-rdisty;
985 if(verbose > 1)
986 write('#divsy t b: \t',divsy,Nt,Nb);
1182 if (verbose > 1) {
1183 write('#divsy t b: \t', divsy, Nt, Nb);
1184 }
1185 rmaxi=2*divsy+1;
9871186
9881187 /* Nsyc: center square height
9891188 * line pairing test: verify distance of center to top and bot
9991198 * rcrowc true center for color info, distance to top of image.
10001199 * rcrowb bot dist of hor line
10011200 *
1002 * Nt=Nvc-(offu+divsy*Nsy);
1003 * Nb=Nv-( Nvc-(offd-divsy*Nsy) );
1004 * ==> Nt+Nb=Nv-Nsyc-2*divsy*Nsy
1201 * offd = offu-Nsyc
1202 * Nt = Nvc-(offu+divsy*Nsy);
1203 * Nb = Nv-( Nvc-(offd-divsy*Nsy) );
1204 * ==> Nt+Nb = Nv-Nsyc-2*divsy*Nsy
10051205 */
10061206 int Nsyc, offu, offd, Nyst=0, i;
10071207 int[] rcrowt, rcrowc, rcrowb;
10091209 Nsyc=Nsy+Na;
10101210 offu=floor(Nsyc/2);
10111211 offd=offu-Nsyc;
1012 if(Nsyc%2 != 0) {
1212 if (Nsyc%2 != 0) {
10131213 Nyst=1;
1014 } else if(Nsyc%4 == 0) {
1214 } else if (Nsyc%4 == 0) {
10151215 Nyst=1; /* stagger */
10161216 }
1017 for(i=0; i<=divsy; ++i) {
1217 for (i=0; i<=divsy; ++i) {
10181218 int iu, id, ou, od, ru, rd;
10191219
10201220 iu=divsy-i;
10221222
10231223 ou=offu+Nsy*i;
10241224 od=offd-Nsy*i;
1025 if(verbose > 1)
1225 if (verbose > 1) {
10261226 write(ou,od);
1227 }
10271228 rcrowc[iu]=Nvc-ou;
10281229 rcrowc[id]=Nvc-od;
10291230
10381239 }
10391240 Nt=floor((rcrowt[0]+rcrowb[0])/2);
10401241 Nb=Nv-Nt-Nsyc-2*Nsy*divsy;
1041 if(verbose > 1)
1042 write('#st t b: \t',Nyst,Nt,Nb);
1242 if (verbose > 1) {
1243 write('#st t b: \t', Nyst, Nt, Nb);
1244 }
10431245
10441246 /* vertical lines
10451247 * (Nh-2*os)/2-Nsx/2 dots available for divisions of Nsx dots.
10461248 * At least 5 dots margin left and right ==> use -10*os
10471249 */
1048 real lsq, Nsx;
1049 int divsx, Nhc, Nl;
1250 real lsq, Nsx, rdistx;
1251 int divsx, Nhc, Nl, Nr, cmaxi;
10501252
10511253 lsq=Nsy*yd;
1052 Nsx=lsq/xd;
1254 Nsx=lsq/xd; /* floating point */
10531255 divsx=floor(((Nh-10*os)/Nsx-1)/2);
10541256 Nhc=round(Nh/2);
1055 Nl=Nhc-round((1+2*divsx)*Nsx/2);
1056 if(verbose > 1)
1057 write('#Nsx divsx Nl:\t',Nsx,divsx,Nl);
1257 rdistx=(1+2*divsx)*Nsx;
1258 Nl=Nhc-round(rdistx/2);
1259 if (verbose > 1) {
1260 write('#divsx Nsx l:\t', divsx, Nsx, Nl);
1261 }
1262 cmaxi=2*divsx+1;
1263
1264 int[] coff, coffl, coffr;
1265 int[] rccoll, rccolc, rccolr;
1266 for (i=0; i<=divsx; ++i) {
1267 int off, offl, offr, il, ir;
1268 real cdist;
1269
1270 cdist=Nsx*(1+2*i); /* horizontal distance 2 symmetrical vert lines */
1271 off=round(cdist/2);
1272 // write(cdist, off);
1273 offl=off-os;
1274 offr=off+os;
1275
1276 coff[i]=off;
1277 coffl[i]=offl;
1278 coffr[i]=offr;
1279
1280 if (verbose > 1) {
1281 write(cdist, off);
1282 }
1283 il=divsx-i;
1284 ir=divsx+i+1;
1285
1286 rccoll[il]=Nhc-offr;
1287 rccolc[il]=Nhc-off;
1288 rccolr[il]=Nhc-offl;
1289
1290 rccoll[ir]=Nhc+offl;
1291 rccolc[ir]=Nhc+off;
1292 rccolr[ir]=Nhc+offr;
1293 }
1294 Nl=rccolc[0];
1295 Nr=Nh-rccolc[cmaxi];
1296 if (verbose > 1) {
1297 write('#divsx Nsx l r:\t', divsx, Nsx, Nl, Nr);
1298 }
10581299
10591300 /**** draw gray background ****/
10601301 {
10611302 path zz;
1303
10621304 //zz=tvrect(0,0, Nh,Nv, xd,yd,Nv);
10631305 /* keep white canvas for castellations */
1064 zz=tvrect(Nl,Nt, Nh-Nl,Nv-Nb, xd,yd,Nv);
1306 zz=tvrect(rccoll[0],rcrowt[0], rccolr[cmaxi],rcrowb[rmaxi], xd,yd,Nv);
10651307 fill(zz, p=pdefault+gray(0.5));
10661308 //dot(zz);
10671309 }
10721314 cx=Nh/2;
10731315 cy=Nv/2-Nshift;
10741316 crad=6*Nsy;
1075 if(Nv%2 != 0) {
1076 crad+=0.5;
1317 if (Nv%2 != 0) {
1318 crad+=0.5;
10771319 }
10781320 ccenter=tvps(cx,cy, xd,yd,Nv);
10791321 ccirc=circle(ccenter, crad*yd);
1080 if(colortv<=0) {
1322 if (colortv<=0) {
10811323 draw(ccirc, p=pwhite+linewidth(2*yd));
10821324 }
10831325
1084 /****** draw 2*divsy+2 horizontal lines **********************************/
1326 /**** draw 2*divsy+2 horizontal gridlines ****/
10851327 real[] rcang, rcoff;
10861328 pair[] rcright, rcleft;
1087 int i, iend=2*divsy+1;
1088 for(i=0; i<=iend; ++i) {
1089 real y, phi, x;
1329 int i;
1330 for (i=0; i<=rmaxi; ++i) {
1331 real y, ph, x;
10901332 path zzh;
10911333 pair zd;
10921334
1093 zzh=tvrect(0,rcrowt[i], Nh,rcrowb[i], xd,yd,Nv);
1094 fill(zzh, p=pwhite);
1335 zzh=tvrect(0,rcrowt[i], Nh,rcrowb[i], xd,yd,Nv);
1336 fill(zzh, p=pwhite);
10951337
10961338 y=cy-rcrowc[i];
1097 //write(roff);
1098 if(abs(y)<crad) {
1099 phi=asin(y/crad);
1339 if (abs(y)<crad) {
1340 ph=asin(y/crad);
11001341 } else {
1101 phi=pi/2;
1102 }
1103 rcang[i]=phi;
1104 x=(crad*cos(phi))*yd/xd;
1342 ph=pi/2;
1343 }
1344 rcang[i]=ph;
1345 x=(crad*cos(ph))*yd/xd;
11051346 rcoff[i]=x;
11061347 zd=tvps(cx+x,cy-y, xd,yd,Nv);
11071348 rcright[i]=zd;
11101351 rcleft[i]=zd;
11111352 }
11121353
1113 /****** draw 2*divsx+2 vertical lines ***************************/
1114 int[] coff, coffa, coffb;
1115 int poffa=0, ccenterwhite=divsx%2;
1116 for(i=0; i<=divsx; ++i) {
1117 real cdist=(1+2*i)*Nsx;
1118 int off, offa, offb;
1354 /**** draw 2*divsx+2 vertical gridlines ****/
1355 for (i=0; i<=cmaxi; ++i) {
11191356 path zzv;
1120
1121 off=round(cdist/2);
1122 //write(cdist,off);
1123 offa=off+os;
1124 offb=off-os;
1125
1126 coff[i]=off;
1127 coffa[i]=offa;
1128 coffb[i]=offb;
1129
1130 //write(Nhc-offa);
1131 zzv=tvrect(Nhc+offb,0, Nhc+offa,Nv, xd,yd,Nv);
1357 zzv=tvrect(rccoll[i],0, rccolr[i],Nv, xd,yd,Nv);
11321358 fill(zzv, p=pwhite);
1133 zzv=tvrect(Nhc-offa,0, Nhc-offb,Nv, xd,yd,Nv);
1134 fill(zzv, p=pwhite);
1135
1136 /** top castellations, must end with black **/
1137 if(i%2 == ccenterwhite) {
1138 int j, jnum;
1139
1140 if(poffa == 0) {
1141 poffa=-offb;
1142 jnum=1;
1143 } else {
1144 jnum=2;
1145 }
1146
1147 for(j=0; j<jnum; ++j) {
1148 int lc, rc;
1149 path zzc;
1150
1151 if(j==0) {
1152 lc=Nhc+poffa;
1153 rc=Nhc+offb;
1154 } else {
1155 lc=Nhc-offb;
1156 rc=Nhc-poffa;
1157 }
1158
1159 zzc=tvrect(lc,0, rc,Nt-1, xd,yd,Nv);
1160 fill(zzc, p=pblack);
1161 zzc=tvrect(lc,Nv-Nb+1, rc,Nv, xd,yd,Nv);
1162 fill(zzc, p=pblack);
1163 }
1164 }
1165
1166 poffa=offa;
1167 }
1168 //write(coff);
1169
1170 /** left and right castellations **/
1171 /* The bottom right red rectangle tests for a non causal color FIR
1172 * filter in the receiver. The last 2..4 dots then typically appear
1173 * colorless, green, or cyan.
1174 *
1175 * This comes from the fact that the chroma subcarrier is of lower
1176 * bandwidth than luma and thus continues after the last active sample.
1177 * These trailing (y,u,v) samples result from a signal to zero
1178 * transition and depend on the transmit and receive filters. Samples
1179 * from VHS, system B/G/D/K, system I, or a DVD player output are
1180 * different. Nevertheless, a sharpening filter uses this data and so
1181 * adds false color to the last dots.
1182 */
1183 int lc, rc;
1184 iend=2*divsy+1;
1185 lc=Nhc-coffa[divsx];
1186 rc=Nhc+coffa[divsx];
1187 for(i=1; i<=iend; ++i) {
1188 pen pcast;
1189 if(i == iend && colortv>0) {
1190 pcast=pdefault+rgb(0.75,0.0,0);
1191 } else {
1192 pcast=pblack;
1193 }
1194 if(i%2 == 1) {
1195 int tr, br;
1196 path zzc;
1197
1198 tr=rcrowb[i-1];
1199 br=rcrowt[i];
1200 zzc=tvrect( 0,tr, lc,br, xd,yd,Nv);
1201 fill(zzc, p=pblack);
1202 zzc=tvrect(rc,tr, Nh,br, xd,yd,Nv);
1203 fill(zzc, p=pcast);
1204 }
1205 }
1359 }
1360
1361 /**** castellations ****/
1362 castelhor(colortv, rccoll, rccolr, cmaxi, Nh, rcrowt[0], rcrowb[rmaxi],
1363 pdefault, xd, yd, Nv);
1364
1365 castelver(colortv, rccoll[0], rccolr[cmaxi], Nh, rcrowb, rcrowt, rmaxi,
1366 pdefault, xd, yd, Nv);
12061367
12071368 /****** markers for 4/3 aspect ratio ******/
1208 if(rimage>4/3)
1369 if (rimage>4/3) {
12091370 rimarkers(rimage, Nh, Nhc, os, Nvc, Nsy, pwhite, xd, yd, Nv);
1371 }
12101372
12111373 /****** line pairing center ******/
1212 centerline(coff, coffa, coffb, Nhc, divsx, os, rcrowc, Nvc, divsy,
1374 centerline(colortv, rccoll, rccolc, rccolr, divsx, Nhc, os,
1375 rcrowt, rcrowc, rcrowb, divsy, Nvc,
12131376 ccenter, rcoff, rcright, rcleft, pdefault, xd, yd, Nv);
12141377
1215 if(colortv>0) {
1378 if (colortv>0) {
12161379 /* topbw structure */
12171380 topbw(coff, Nhc, os, rcrowc[divsy-5], rcrowc[divsy-4], rcrowc[divsy-3],
12181381 ccenter, rcleft[divsy-4], rcleft[divsy-3], rcright[divsy-4],
12381401 rcright[divsy+3], rcright[divsy+4], pdefault, xd,yd,Nv);
12391402
12401403 /* PAL ears */
1241 if(colortv==1) {
1242 palears(coff,coffa,coffb, Nhc, rcrowt, rcrowb, Nvc, divsy, -1,
1404 if (colortv == 1) {
1405 palears(coff,coffr,coffl, Nhc, rcrowt, rcrowb, Nvc, divsy, -1,
12431406 pdefault, xd, yd, Nv);
1244 palears(coff,coffa,coffb, Nhc, rcrowt, rcrowb, Nvc, divsy, 1,
1407 palears(coff,coffr,coffl, Nhc, rcrowt, rcrowb, Nvc, divsy, 1,
12451408 pdefault, xd, yd, Nv);
1246 } else if(colortv==2) {
1247 ntscbars(coff,coffa,coffb, Nhc, rcrowt, rcrowb, Nvc, divsy, -1,
1409 } else if (colortv == 2) {
1410 ntscbars(rccoll, rccolr, divsx, rcrowt, rcrowb, divsy, -1,
12481411 pdefault, xd, yd, Nv);
1249 ntscbars(coff,coffa,coffb, Nhc, rcrowt, rcrowb, Nvc, divsy, 1,
1412 ntscbars(rccoll, rccolr, divsx, rcrowt, rcrowb, divsy, 1,
12501413 pdefault, xd, yd, Nv);
1251 ntscbars(coff,coffa,coffb, Nhc, rcrowt, rcrowb, Nvc, divsy, -2,
1414 ntscbars(rccoll, rccolr, divsx, rcrowt, rcrowb, divsy, -2,
12521415 pdefault, xd, yd, Nv);
1253 ntscbars(coff,coffa,coffb, Nhc, rcrowt, rcrowb, Nvc, divsy, 2,
1416 ntscbars(rccoll, rccolr, divsx, rcrowt, rcrowb, divsy, 2,
12541417 pdefault, xd, yd, Nv);
12551418 }
12561419
12931456 itot=insert(ifm,0, itot);
12941457
12951458 /* size of square */
1296 int rowNsy=round((rcrowc[divsy+5]+rcrowc[divsy+6])/2);
1297 pair Npos=tvps(Nhc+round((coff[4]+coff[5])/2),rowNsy, xd,yd,Nv);
1298 string iNsy=format("%i",Nsy);
1299
1459 int rowNsy, colNsy;
1460 pair Npos;
1461 string iNsy;
13001462 pen pbw;
1301 if(colortv>0) {
1302 pbw=pdefault+gray(1.0);
1463
1464 rowNsy = round((rcrowc[divsy+5]+rcrowc[divsy+6])/2);
1465 colNsy = round((rccolc[divsx+5]+rccolc[divsx+6])/2);
1466 Npos = tvps(colNsy,rowNsy, xd,yd,Nv);
1467 iNsy = format("%i", Nsy);
1468
1469 if (colortv>0) {
1470 pbw=pdefault+gray(1.0);
13031471 } else {
1304 pbw=pdefault+gray(0.0);
1472 pbw=pdefault+gray(0.0);
13051473 }
13061474 label(ires, rpos, p=pbw);
13071475 label(itot, tpos, p=pbw);
13081476 label(iNsy, Npos, p=pbw);
1309 if(verbose > 1)
1477 if (verbose > 1)
13101478 write('#res:\t', ires, itot, iNsy);
13111479 }
1312
0 #ifdef HAVE_CONFIG_H
1 #include "config.h"
2 #endif
3
4 #ifdef HAVE_LIBFFTW3
50 #include "fftw++.h"
61
72 namespace fftwpp {
83
9 std::ifstream fftw::ifWisdom;
10 std::ofstream fftw::ofWisdom;
114 bool fftw::Wise=false;
5 bool fftw::autothreads=true;
126 const double fftw::twopi=2.0*acos(-1.0);
7
8 // User settings:
9 unsigned int fftw::effort=FFTW_MEASURE;
10 const char *WisdomName=".wisdom";
1311 unsigned int fftw::maxthreads=1;
1412 double fftw::testseconds=0.1; // Time limit for threading efficiency tests
1513
16 // User settings:
17 unsigned int fftw::effort=FFTW_MEASURE;
18 const char *fftw::WisdomName=".wisdom";
19
14 void fftw::LoadWisdom() {
15 std::ifstream ifWisdom;
16 ifWisdom.open(WisdomName);
17 fftwpp_import_wisdom(GetWisdom,ifWisdom);
18 ifWisdom.close();
2019 }
2120
22 #endif
21 void fftw::SaveWisdom() {
22 std::ofstream ofWisdom;
23 ofWisdom.open(WisdomName);
24 fftwpp_export_wisdom(PutWisdom,ofWisdom);
25 ofWisdom.close();
26 }
27
28 }
1717 #ifndef __fftwpp_h__
1818 #define __fftwpp_h__ 1
1919
20 #define __FFTWPP_H_VERSION__ 1.12
20 #define __FFTWPP_H_VERSION__ 1.14
2121
2222 #include <cstdlib>
2323 #include <fstream>
2828 #ifndef FFTWPP_SINGLE_THREAD
2929 #include <omp.h>
3030 #endif
31
32 inline int get_thread_num()
33 {
34 #ifdef FFTWPP_SINGLE_THREAD
35 return 0;
36 #else
37 return omp_get_thread_num();
38 #endif
39 }
3140
3241 inline int get_max_threads()
3342 {
3544 return 1;
3645 #else
3746 return omp_get_max_threads();
38 #endif
39 }
40
41 inline int get_thread_num()
42 {
43 #ifdef FFTWPP_SINGLE_THREAD
44 return 0;
45 #else
46 return omp_get_thread_num();
4747 #endif
4848 }
4949
197197 fftw_plan plan;
198198 bool inplace;
199199
200 unsigned int Dist(unsigned int n, unsigned int stride, unsigned int dist) {
200 unsigned int Dist(unsigned int n, size_t stride, size_t dist) {
201201 return dist ? dist : ((stride == 1) ? n : 1);
202202 }
203203
213213 return realsize(n,(Complex *) in,out);
214214 }
215215
216 static std::ifstream ifWisdom;
217 static std::ofstream ofWisdom;
218216 static bool Wise;
219217 static const double twopi;
220218 unsigned int threads;
221219
222220 public:
221 static unsigned int effort;
223222 static unsigned int maxthreads;
224223 static double testseconds;
225224
295294 }
296295 }
297296
298 static unsigned int effort;
299 static const char *WisdomName;
300
297 static bool autothreads;
301298 fftw(unsigned int doubles, int sign, unsigned int n=0) :
302299 doubles(doubles), sign(sign), norm(1.0/(n ? n : (doubles+1)/2)),
303300 plan(NULL) {
304 static bool initialize=true;
305 if(initialize) {
301 if(autothreads) {
306302 #ifndef FFTWPP_SINGLE_THREAD
307303 fftw_init_threads();
308304 #endif
309 initialize=false;
305 autothreads=false;
310306 }
311307 }
312308
327323 void noplan() {
328324 std::cerr << "Unable to construct FFTW plan" << std::endl;
329325 exit(1);
326 }
327
328 void planThreads(unsigned int threads) {
329 #ifndef FFTWPP_SINGLE_THREAD
330 omp_set_num_threads(threads);
331 fftw_plan_with_nthreads(threads);
332 #endif
330333 }
331334
332335 void Setup(Complex *in, Complex *out=NULL) {
342345 #endif
343346 inplace=(out==in);
344347
345 #ifndef FFTWPP_SINGLE_THREAD
346 fftw_plan_with_nthreads(1);
347 #endif
348 planThreads(1);
348349 fftw_plan plan1=Plan(in,out);
349350 if(!plan1) noplan();
350351 plan=plan1;
351352
352353 if(maxthreads > 1) {
353 double sum=0.0;
354354 double sum2=0.0;
355355 unsigned int N=1;
356 const unsigned int microseconds=1000000;
357 unsigned int limit=(int) (testseconds*microseconds);
358 for(; N < limit; ++N) {
359 seconds();
356 double begin=totalseconds();
357 double lastseconds=begin;
358 double stop=begin+testseconds;
359 for(;;++N) {
360360 fft(in,out);
361 double t=seconds();
362 sum += t;
363 sum2 += t*t;
364 if(sum > testseconds)
361 double t=totalseconds();
362 double seconds=t-lastseconds;
363 sum2 += seconds*seconds;
364 lastseconds=t;
365 if(t > stop)
365366 break;
366367 }
368
369 double end=totalseconds();
370 double sum=end-begin;
367371 double mean1=sum/N;
368372 double stdev1=stdev(N,sum,sum2);
369373
370 threads=get_max_threads();
371 if(maxthreads > threads) maxthreads=threads;
372 #ifndef FFTWPP_SINGLE_THREAD
373 fftw_plan_with_nthreads(maxthreads);
374 #endif
374 threads=maxthreads;
375 planThreads(threads);
375376 plan=Plan(in,out);
376377 if(!plan) noplan();
377378
378379 if(plan) {
379 sum=0.0;
380 seconds();
381 for(unsigned int i=1; i <= N; ++i) {
382 seconds();
380 double begin=totalseconds();
381 double lastseconds=begin;
382 double stop=begin+testseconds;
383 N=1;
384 for(;;++N) {
383385 fft(in,out);
384 double t=seconds();
385 sum += t;
386 double t=totalseconds();
387 double seconds=t-lastseconds;
388 sum2 += seconds*seconds;
389 lastseconds=t;
390 if(t > stop)
391 break;
386392 }
393 double end=totalseconds();
394 double sum=end-begin;
387395 double mean2=sum/N;
388396
389397 if(mean2 > mean1-stdev1) {
405413 void Setup(Complex *in, double *out) {Setup(in,(Complex *) out);}
406414 void Setup(double *in, Complex *out=NULL) {Setup((Complex *) in,out);}
407415
408 void LoadWisdom() {
409 ifWisdom.open(WisdomName);
410 fftwpp_import_wisdom(GetWisdom,ifWisdom);
411 ifWisdom.close();
412 Wise=true;
413 }
414
415 void SaveWisdom() {
416 ofWisdom.open(WisdomName);
417 fftwpp_export_wisdom(PutWisdom,ofWisdom);
418 ofWisdom.close();
419 }
416 void LoadWisdom();
417 void SaveWisdom();
420418
421419 virtual void Execute(Complex *in, Complex *out, bool=false) {
422420 fftw_execute_dft(plan,(fftw_complex *) in,(fftw_complex *) out);
506504
507505 void fftNormalized(Complex *in, Complex *out,
508506 unsigned int nx, unsigned int M,
509 unsigned int stride, unsigned int dist) {
507 size_t stride, size_t dist) {
510508 if(stride == 1 && dist == nx) fftw::fftNormalized(in,out);
511509 else if(stride == nx && dist == 1) fftw::fftNormalized(in,out);
512510 else {
589587 class mfft1d : public fftw {
590588 unsigned int nx;
591589 unsigned int M;
592 unsigned int stride;
593 unsigned int dist;
590 size_t stride;
591 size_t dist;
594592 public:
595 mfft1d(unsigned int nx, int sign, unsigned int M=1, unsigned int stride=1,
596 unsigned int dist=0, Complex *in=NULL, Complex *out=NULL)
593 mfft1d(unsigned int nx, int sign, unsigned int M=1, size_t stride=1,
594 size_t dist=0, Complex *in=NULL, Complex *out=NULL)
597595 : fftw(2*((nx-1)*stride+(M-1)*Dist(nx,stride,dist)+1),sign,nx),
598596 nx(nx), M(M), stride(stride), dist(Dist(nx,stride,dist))
599597 {Setup(in,out);}
733731 class mrcfft1d : public fftw {
734732 unsigned int nx;
735733 unsigned int M;
736 unsigned int stride;
737 unsigned int dist;
734 size_t stride;
735 size_t dist;
738736 public:
739 mrcfft1d(unsigned int nx, unsigned int M=1, unsigned int stride=1,
740 unsigned int dist=0, Complex *out=NULL)
737 mrcfft1d(unsigned int nx, unsigned int M=1, size_t stride=1,
738 size_t dist=0, Complex *out=NULL)
741739 : fftw(2*(nx/2*stride+(M-1)*Dist(nx,stride,dist)+1),-1,nx), nx(nx), M(M),
742740 stride(stride), dist(Dist(nx,stride,dist)) {Setup(out);}
743741
744 mrcfft1d(unsigned int nx, unsigned int M=1, unsigned int stride=1,
745 unsigned int dist=0, double *in=NULL, Complex *out=NULL)
742 mrcfft1d(unsigned int nx, unsigned int M=1, size_t stride=1,
743 size_t dist=0, double *in=NULL, Complex *out=NULL)
746744 : fftw(2*(nx/2*stride+(M-1)*Dist(nx,stride,dist)+1),-1,nx), nx(nx), M(M),
747745 stride(stride), dist(Dist(nx,stride,dist)) {Setup(in,out);}
748746
789787 class mcrfft1d : public fftw {
790788 unsigned int nx;
791789 unsigned int M;
792 unsigned int stride;
793 unsigned int dist;
790 size_t stride;
791 size_t dist;
794792 public:
795 mcrfft1d(unsigned int nx, unsigned int M=1, unsigned int stride=1,
796 unsigned int dist=0, Complex *in=NULL, double *out=NULL)
793 mcrfft1d(unsigned int nx, unsigned int M=1, size_t stride=1,
794 size_t dist=0, Complex *in=NULL, double *out=NULL)
797795 : fftw((realsize(nx,in,out)-2)*stride+2*(M-1)*Dist(nx,stride,dist)+2,1,nx),
798796 nx(nx), M(M), stride(stride), dist(Dist(nx,stride,dist)) {Setup(in,out);}
799797
0 #ifdef HAVE_CONFIG_H
1 #include "config.h"
2 #endif
3
4 #ifdef HAVE_LIBFFTW3
5 #include "fftw++.h"
6 #include "fftw++.cc"
7
8 #endif
870870 if(x > 0 && y > 0) {
871871 if(Menu) {
872872 disableMenu();
873 x=x0; y=y0;
874873 return;
875874 }
876875 Motion=true;
8484
8585 char *readpipeline(const char *prompt)
8686 {
87 const int max_size=256;
88 static char buf[max_size];
89 ostringstream s;
90 do {
91 if(fgets(buf,max_size-1,fin) == NULL) break;
92 s << buf;
93 } while(buf[strlen(buf)-1] != '\n');
94 return StrdupMalloc(s.str());
95 /* Simpler version (requires POSIX 2008; temporarily removed for TeXLive 2013):
8796 char *line=NULL;
8897 size_t n;
8998 n=getline(&line,&n,fin);
9099 return line;
100 */
91101 }
92102
93103 void pre_readline()
1717 #define FLEX_SCANNER
1818 #define YY_FLEX_MAJOR_VERSION 2
1919 #define YY_FLEX_MINOR_VERSION 5
20 #define YY_FLEX_SUBMINOR_VERSION 35
20 #define YY_FLEX_SUBMINOR_VERSION 36
2121 #if YY_FLEX_SUBMINOR_VERSION > 0
2222 #define FLEX_BETA
2323 #endif
7878 typedef unsigned char flex_uint8_t;
7979 typedef unsigned short int flex_uint16_t;
8080 typedef unsigned int flex_uint32_t;
81 #endif /* ! C99 */
8281
8382 /* Limits of integral types. */
8483 #ifndef INT8_MIN
108107 #ifndef UINT32_MAX
109108 #define UINT32_MAX (4294967295U)
110109 #endif
110
111 #endif /* ! C99 */
111112
112113 #endif /* ! FLEXINT_H */
113114
195196 typedef struct yy_buffer_state *YY_BUFFER_STATE;
196197 #endif
197198
199 #ifndef YY_TYPEDEF_YY_SIZE_T
200 #define YY_TYPEDEF_YY_SIZE_T
201 typedef size_t yy_size_t;
202 #endif
203
198204 /* %if-not-reentrant */
199 extern int yyleng;
205 extern yy_size_t yyleng;
200206 /* %endif */
201207
202208 /* %if-c-only */
227233
228234 #define unput(c) yyunput( c, (yytext_ptr) )
229235
230 #ifndef YY_TYPEDEF_YY_SIZE_T
231 #define YY_TYPEDEF_YY_SIZE_T
232 typedef size_t yy_size_t;
233 #endif
234
235236 #ifndef YY_STRUCT_YY_BUFFER_STATE
236237 #define YY_STRUCT_YY_BUFFER_STATE
237238 struct yy_buffer_state
254255 /* Number of characters read into yy_ch_buf, not including EOB
255256 * characters.
256257 */
257 int yy_n_chars;
258 yy_size_t yy_n_chars;
258259
259260 /* Whether we "own" the buffer - i.e., we know we created it,
260261 * and can realloc() it to grow it, and should free() it to
338339
339340 /* yy_hold_char holds the character lost when yytext is formed. */
340341 static char yy_hold_char;
341 static int yy_n_chars; /* number of characters read into yy_ch_buf */
342 int yyleng;
342 static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */
343 yy_size_t yyleng;
343344
344345 /* Points to current character in buffer. */
345346 static char *yy_c_buf_p = (char *) 0;
370371
371372 YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size );
372373 YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str );
373 YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len );
374 YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len );
374375
375376 /* %endif */
376377
991992
992993
993994
994 #line 996 "lex.yy.cc"
995 #line 997 "lex.yy.cc"
995996
996997 #define INITIAL 0
997998 #define lexcomment 1
10481049
10491050 void yyset_out (FILE * out_str );
10501051
1051 int yyget_leng (void );
1052 yy_size_t yyget_leng (void );
10521053
10531054 char *yyget_text (void );
10541055
11311132 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
11321133 { \
11331134 int c = '*'; \
1134 unsigned n; \
1135 size_t n; \
11351136 for ( n = 0; n < max_size && \
11361137 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
11371138 buf[n] = (char) c; \
12411242 #line 209 "camp.l"
12421243
12431244
1244 #line 1246 "lex.yy.cc"
1245 #line 1247 "lex.yy.cc"
12451246
12461247 if ( !(yy_init) )
12471248 {
17231724 case 59:
17241725 YY_RULE_SETUP
17251726 #line 328 "camp.l"
1726 {DEFSYMBOL(SYM_LOGNOT); return LOGNOT; }
1727 {DEFSYMBOL(SYM_LOGNOT); return OPERATOR; }
17271728 YY_BREAK
17281729 case 60:
17291730 YY_RULE_SETUP
20902091 #line 443 "camp.l"
20912092 ECHO;
20922093 YY_BREAK
2093 #line 2095 "lex.yy.cc"
2094 #line 2096 "lex.yy.cc"
20942095
20952096 case YY_END_OF_BUFFER:
20962097 {
22872288
22882289 else
22892290 {
2290 int num_to_read =
2291 yy_size_t num_to_read =
22912292 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
22922293
22932294 while ( num_to_read <= 0 )
22942295 { /* Not enough room in the buffer - grow it. */
22952296
22962297 /* just a shorter name for the current buffer */
2297 YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
2298 YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
22982299
22992300 int yy_c_buf_p_offset =
23002301 (int) ((yy_c_buf_p) - b->yy_ch_buf);
23012302
23022303 if ( b->yy_is_our_buffer )
23032304 {
2304 int new_size = b->yy_buf_size * 2;
2305 yy_size_t new_size = b->yy_buf_size * 2;
23052306
23062307 if ( new_size <= 0 )
23072308 b->yy_buf_size += b->yy_buf_size / 8;
23322333
23332334 /* Read in more data. */
23342335 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
2335 (yy_n_chars), (size_t) num_to_read );
2336 (yy_n_chars), num_to_read );
23362337
23372338 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
23382339 }
24402441 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
24412442 yy_is_jam = (yy_current_state == 334);
24422443
2443 return yy_is_jam ? 0 : yy_current_state;
2444 return yy_is_jam ? 0 : yy_current_state;
24442445 }
24452446
24462447 /* %if-c-only */
24602461 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
24612462 { /* need to shift things up to make room */
24622463 /* +2 for EOB chars. */
2463 register int number_to_move = (yy_n_chars) + 2;
2464 register yy_size_t number_to_move = (yy_n_chars) + 2;
24642465 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
24652466 YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
24662467 register char *source =
25182519
25192520 else
25202521 { /* need more input */
2521 int offset = (yy_c_buf_p) - (yytext_ptr);
2522 yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
25222523 ++(yy_c_buf_p);
25232524
25242525 switch ( yy_get_next_buffer( ) )
27022703 yyfree((void *) b );
27032704 }
27042705
2705 /* %if-c-only */
2706
2707 #ifndef __cplusplus
2708 extern int isatty (int );
2709 #endif /* __cplusplus */
2710
2711 /* %endif */
2712
2713 /* %if-c++-only */
2714 /* %endif */
2715
27162706 /* Initializes or reinitializes a buffer.
27172707 * This function is sometimes called more than once on the same buffer,
27182708 * such as during a yyrestart() or at EOF.
28552845 /* %if-c++-only */
28562846 /* %endif */
28572847 {
2858 int num_to_alloc;
2848 yy_size_t num_to_alloc;
28592849
28602850 if (!(yy_buffer_stack)) {
28612851
29532943 /* %if-c-only */
29542944 /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
29552945 * scan from a @e copy of @a bytes.
2956 * @param bytes the byte buffer to scan
2957 * @param len the number of bytes in the buffer pointed to by @a bytes.
2946 * @param yybytes the byte buffer to scan
2947 * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
29582948 *
29592949 * @return the newly allocated buffer state object.
29602950 */
2961 YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len )
2951 YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len )
29622952 {
29632953 YY_BUFFER_STATE b;
29642954 char *buf;
30543044 /** Get the length of the current token.
30553045 *
30563046 */
3057 int yyget_leng (void)
3047 yy_size_t yyget_leng (void)
30583048 {
30593049 return yyleng;
30603050 }
4646
4747 bool isIdTransform3(const double* t)
4848 {
49 return (t == NULL || (t[0]==1 && t[4]==0 && t[ 8]==0 && t[12]==0 &&
50 t[1]==0 && t[5]==1 && t[ 9]==0 && t[13]==0 &&
51 t[2]==0 && t[6]==0 && t[10]==1 && t[14]==0 &&
52 t[3]==0 && t[7]==0 && t[11]==0 && t[15]==1));
49 return (t == NULL || (t[0]==1 && t[1]==0 && t[2]==0 && t[3]==0 &&
50 t[4]==0 && t[5]==1 && t[6]==0 && t[7]==0 &&
51 t[8]==0 && t[9]==0 && t[10]==1 && t[11]==0 &&
52 t[12]==0 && t[13]==0 && t[14]==0 && t[15]==1));
5353 }
5454
5555 // copy array to 4x4 transform matrix with range checks
6363 for(size_t i=0; i < 4; i++) {
6464 const vm::array *ai=vm::read<vm::array*>(a,i);
6565 const size_t aisize=checkArray(ai);
66 double *tti=tt+4*i;
6667 if(aisize == 4) {
6768 for(size_t j=0; j < 4; j++)
68 tt[i+j*4]=vm::read<double>(ai,j);
69 tti[j]=vm::read<double>(ai,j);
6970 } else reportError(fourbyfour);
7071 }
7172
7273 copyTransform3(dest,tt);
7374 }
7475
75 void copyTransform3(double*& d, const double* s)
76 {
77 if(isIdTransform3(s)) {
78 d=NULL;
79 }
80 else {
81 if (d == NULL)
82 d=new(UseGC) double[16];
76 void copyTransform3(double*& d, const double* s, GCPlacement placement)
77
78 {
79 if(!isIdTransform3(s) || d != NULL) {
80 if(d == NULL)
81 d=placement == NoGC ? new double[16] : new(placement) double[16];
8382 memcpy(d,s,sizeof(double)*16);
8483 }
8584 }
8685
8786 // t = s*r
88 void multiplyTransform3(double*& t, const double* s, const double* r )
87 void multiplyTransform3(double*& t, const double* s, const double* r)
8988 {
9089 if(isIdTransform3(s)) {
9190 copyTransform3(t, r);
9291 } else if(isIdTransform3(r)) {
9392 copyTransform3(t, s);
9493 } else {
95 double tt[16];
94 t=new(UseGC) double[16];
9695 for(size_t i=0; i < 4; i++) {
97 const double& s0=s[i+0];
98 const double& s1=s[i+4];
99 const double& s2=s[i+8];
100 const double& s3=s[i+12];
101 tt[i]=s0*r[0]+s1*r[1]+s2*r[2]+s3*r[3];
102 tt[i+4]=s0*r[4]+s1*r[5]+s2*r[6]+s3*r[7];
103 tt[i+8]=s0*r[8]+s1*r[9]+s2*r[10]+s3*r[11];
104 tt[i+12]=s0*r[12]+s1*r[13]+s2*r[14]+s3*r[15];
105 }
106 copyTransform3(t,tt);
96 size_t i4=4*i;
97 const double *si=s+i4;
98 const double& s0=si[0];
99 const double& s1=si[1];
100 const double& s2=si[2];
101 const double& s3=si[3];
102 double *ti=t+i4;
103 ti[0]=s0*r[0]+s1*r[4]+s2*r[8]+s3*r[12];
104 ti[1]=s0*r[1]+s1*r[5]+s2*r[9]+s3*r[13];
105 ti[2]=s0*r[2]+s1*r[6]+s2*r[10]+s3*r[14];
106 ti[3]=s0*r[3]+s1*r[7]+s2*r[11]+s3*r[15];
107 }
107108 }
108109 }
109110
112113 if(n == 0 || s == NULL || d == NULL)
113114 return;
114115
115 if(isIdTransform3(t)) {
116 copyTriples(n, d, s);
117 return;
118 }
119116 for(size_t i=0; i < n; i++) {
120 const double& x = s[i][0];
121 const double& y = s[i][1];
122 const double& z = s[i][2];
123 double f=t[3]*x+t[7]*y+t[11]*z+t[15];
124 if(f == 0.0)
125 reportError("division by 0 in transformTriples");
126 f=1.0/f;
127 d[i][0]=(t[0]*x+t[4]*y+t[8]*z+t[12])*f;
128 d[i][1]=(t[1]*x+t[5]*y+t[9]*z+t[13])*f;
129 d[i][2]=(t[2]*x+t[6]*y+t[10]*z+t[14])*f;
130 }
131 }
132
133 void transformshiftlessTriples(const double* t, size_t n, Triple* d,
134 const Triple* s)
117 const double *si=s[i];
118 triple v=t*triple(si[0],si[1],si[2]);
119 double *di=d[i];
120 di[0]=v.getx();
121 di[1]=v.gety();
122 di[2]=v.getz();
123 }
124 }
125
126 void transformNormalsTriples(const double* t, size_t n, Triple* d,
127 const Triple* s)
135128 {
136129 if(n == 0 || s == NULL || d == NULL)
137130 return;
138131
139 if(isIdTransform3(t)) {
140 copyTriples(n, d, s);
141 return;
142 }
143132 for(size_t i=0; i < n; i++) {
144 const double& x=s[i][0];
145 const double& y=s[i][1];
146 const double& z=s[i][2];
147 double f=t[3]*x+t[7]*y+t[11]*z+t[15];
148 if(f == 0.0)
149 reportError("division by 0 in transformshiftlessTriples");
150 f=1.0/f;
151 d[i][0]=(t[0]*x+t[4]*y+t[8]*z)*f;
152 d[i][1]=(t[1]*x+t[5]*y+t[9]*z)*f;
153 d[i][2]=(t[2]*x+t[6]*y+t[10]*z)*f;
154 }
155 }
156
157 void transformNormalsTriples(const double* t, size_t n, Triple* d,
158 const Triple* s)
159 {
160 if(n==0 || s==NULL || d==NULL)
161 return;
162
163 if(isIdTransform3(t)) {
164 copyTriples(n, d, s);
165 return;
166 }
167 for(size_t i=0; i < n; i++) {
168 const double& x = s[i][0];
169 const double& y = s[i][1];
170 const double& z = s[i][2];
171 double& X = d[i][0];
172 double& Y = d[i][1];
173 double& Z = d[i][2];
174 double f=t[3]*x+t[7]*y+t[11]*z+t[15];
175 if(f == 0.0)
176 reportError("division by 0 in transformNormalsTriples");
177 f=1.0/f;
178 X=(t[0]*x+t[4]*y+t[8]*z)*f;
179 Y=(t[1]*x+t[5]*y+t[9]*z)*f;
180 Z=(t[2]*x+t[6]*y+t[10]*z)*f;
181 const double scale=sqrt(X*X+Y*Y+Z*Z);
182 if(scale != 0.0) {
183 X /= scale;
184 Y /= scale;
185 Z /= scale;
186 }
187 }
188 }
189
133 const double *si=s[i];
134 triple v=transformNormal(t,triple(si[0],si[1],si[2]));
135 double *di=d[i];
136 di[0]=v.getx();
137 di[1]=v.gety();
138 di[2]=v.getz();
139 }
140 }
141
190142 void unitTriples(size_t n, Triple* d)
191143 {
192144 for (size_t i=0; i < n; i++) {
514466 mem::vector<string> cmd;
515467 cmd.push_back(texprogram());
516468 if(context) {
517 // Create a null texput.tex file as a portable way of tricking ConTeXt
518 // into entering interactive mode (pending the implementation of --pipe).
519 string texput="texput.tex";
520 ofstream(texput.c_str());
521 cmd.push_back("--scrollmode");
522 cmd.push_back(texput);
469 cmd.push_back("--pipe");
523470 } else {
524471 if(!dir.empty())
525472 cmd.push_back("-output-directory="+dir.substr(0,dir.length()-1));
14351382 {
14361383 picture *pic = new picture;
14371384 double* T=NULL;
1438 copyArray4x4C(T, &t);
1385 copyArray4x4C(T,&t);
14391386 size_t level = 0;
14401387 for (nodelist::iterator p = nodes.begin(); p != nodes.end(); ++p) {
14411388 assert(*p);
12501250 return pTransform->second;
12511251 PRCCoordinateSystem *coordinateSystem = new PRCCoordinateSystem();
12521252 bool transform_replaced = false;
1253 if( transform->M(0,1)==0 && transform->M(0,2)==0 &&
1254 transform->M(1,0)==0 && transform->M(1,2)==0 &&
1253 if( transform->M(0,1)==0 && transform->M(0,2)==0 &&
1254 transform->M(1,0)==0 && transform->M(1,2)==0 &&
12551255 transform->M(2,0)==0 && transform->M(2,1)==0 &&
12561256 transform->M(3,0)==0 && transform->M(3,1)==0 && transform->M(3,2)==0 && transform->M(3,3)==1 )
12571257 {
14161416 bool isid(const double* t)
14171417 {
14181418 return(
1419 t[0]==1 && t[4]==0 && t[ 8]==0 && t[12]==0 &&
1420 t[1]==0 && t[5]==1 && t[ 9]==0 && t[13]==0 &&
1421 t[2]==0 && t[6]==0 && t[10]==1 && t[14]==0 &&
1422 t[3]==0 && t[7]==0 && t[11]==0 && t[15]==1 );
1419 t[0]==1 && t[1]==0 && t[2]==0 && t[3]==0 &&
1420 t[4]==0 && t[5]==1 && t[6]==0 && t[7]==0 &&
1421 t[8]==0 && t[9]==0 && t[10]==1 && t[11]==0 &&
1422 t[12]==0 && t[13]==0 && t[14]==0 && t[15]==1 );
14231423 }
14241424
14251425 void oPRCFile::begingroup(const char *name, PRCoptions *options,
763763 void PRCGeneralTransformation3d::serializeGeneralTransformation3d(PRCbitStream &pbs) const
764764 {
765765 WriteUnsignedInteger (PRC_TYPE_MISC_GeneralTransformation)
766 for (uint32_t i=0; i<16; i++)
767 WriteDouble(m_coef[i]);
766 // Like Fortran, PRC uses transposed (column-major) format!
767 for (int j=0;j<4;j++)
768 for (int i=0;i<4;i++)
769 WriteDouble(mat[i][j]);
768770 }
769771
770772 void PRCCartesianTransformation3d::serializeCartesianTransformation3d(PRCbitStream &pbs) const
748748
749749 void serializeGeneralTransformation3d(PRCbitStream&) const;
750750 void serializeTransformation3d(PRCbitStream& pbs) const { serializeGeneralTransformation3d(pbs); }
751 double m_coef[16];
751 double mat[4][4];
752752 bool operator==(const PRCGeneralTransformation3d &t) const
753753 {
754 for (size_t i=0;i<16;i++)
755 if(m_coef[i]!=t.m_coef[i])
754 for (size_t i=0;i<4;i++)
755 for (size_t j=0;j<4;j++)
756 if(mat[i][j]!=t.mat[i][j])
756757 return false;
757758 return true;
758759 }
759760 bool operator<(const PRCGeneralTransformation3d &t) const
760761 {
761 for (size_t i=0;i<16;i++)
762 if(m_coef[i]!=t.m_coef[i])
762 for (size_t i=0;i<4;i++)
763 for (size_t j=0;j<4;j++)
764 if(mat[i][j]!=t.mat[i][j])
763765 {
764 return (m_coef[i]<t.m_coef[i]);
766 return (mat[i][j]<t.mat[i][j]);
765767 }
766768 return false;
767769 }
768770 void set(const double t[])
769771 {
770772 if(t!=NULL)
771 for (size_t i=0;i<16;i++)
772 m_coef[i]=t[i];
773 for (size_t i=0;i<4;i++)
774 for (size_t j=0;j<4;j++)
775 mat[i][j]=t[4*i+j];
773776 else
774777 setidentity();
775778 }
776779 void setidentity()
777780 {
778 m_coef[0]=1; m_coef[4]=0; m_coef[ 8]=0; m_coef[12]=0;
779 m_coef[1]=0; m_coef[5]=1; m_coef[ 9]=0; m_coef[13]=0;
780 m_coef[2]=0; m_coef[6]=0; m_coef[10]=1; m_coef[14]=0;
781 m_coef[3]=0; m_coef[7]=0; m_coef[11]=0; m_coef[15]=1;
782 }
783 bool isnotidtransform() const {
784 return(
785 m_coef[0]!=1 || m_coef[4]!=0 || m_coef[ 8]!=0 || m_coef[12]!=0 ||
786 m_coef[1]!=0 || m_coef[5]!=1 || m_coef[ 9]!=0 || m_coef[13]!=0 ||
787 m_coef[2]!=0 || m_coef[6]!=0 || m_coef[10]!=1 || m_coef[14]!=0 ||
788 m_coef[3]!=0 || m_coef[7]!=0 || m_coef[11]!=0 || m_coef[15]!=1 );
781 mat[0][0]=1; mat[0][1]=0; mat[0][2]=0; mat[0][3]=0;
782 mat[1][0]=0; mat[1][1]=1; mat[1][2]=0; mat[1][3]=0;
783 mat[2][0]=0; mat[2][1]=0; mat[2][2]=1; mat[2][3]=0;
784 mat[3][0]=0; mat[3][1]=0; mat[3][2]=0; mat[3][3]=1;
789785 }
790786 bool isidtransform() const {
791787 return(
792 m_coef[0]==1 && m_coef[4]==0 && m_coef[ 8]==0 && m_coef[12]==0 &&
793 m_coef[1]==0 && m_coef[5]==1 && m_coef[ 9]==0 && m_coef[13]==0 &&
794 m_coef[2]==0 && m_coef[6]==0 && m_coef[10]==1 && m_coef[14]==0 &&
795 m_coef[3]==0 && m_coef[7]==0 && m_coef[11]==0 && m_coef[15]==1 );
788 mat[0][0]==1 && mat[0][1]==0 && mat[0][2]==0 && mat[0][3]==0 &&
789 mat[1][0]==0 && mat[1][1]==1 && mat[1][2]==0 && mat[1][3]==0 &&
790 mat[2][0]==0 && mat[2][1]==0 && mat[2][2]==1 && mat[2][3]==0 &&
791 mat[3][0]==0 && mat[3][1]==0 && mat[3][2]==0 && mat[3][3]==1);
792 }
793 bool isnotidtransform() const {
794 return !isidtransform();
796795 }
797796 double M(size_t i, size_t j) const {
798 return m_coef[i+j*4];
797 // Like Fortran, PRC uses transposed (column-major) format!
798 return mat[j][i];
799799 }
800800 };
801801 typedef std::deque <PRCGeneralTransformation3d> PRCGeneralTransformation3dList;
4646 {
4747 if(filename.empty()) out=&cout;
4848 else out=new ofstream(filename.c_str());
49 out->setf(std::ios::boolalpha);
4950 if(!out || !*out)
5051 reportError("Cannot write to "+filename);
5152 }
347348 // Axial and radial shading
348349 void psfile::gradientshade(bool axial, ColorSpace colorspace,
349350 const pen& pena, const pair& a, double ra,
350 const pen& penb, const pair& b, double rb)
351 bool extenda, const pen& penb, const pair& b,
352 double rb, bool extendb)
351353 {
352354 checkLevel();
353355 endclip(pena);
363365 write(b);
364366 if(!axial) write(rb);
365367 *out << "]" << newl
366 << "/Extend [true true]" << newl
368 << "/Extend [" << extenda << " " << extendb << "]" << newl
367369 << "/Function" << newl
368370 << "<< /FunctionType 2" << newl
369371 << "/Domain [0 1]" << newl
277277
278278 virtual void gradientshade(bool axial, ColorSpace colorspace,
279279 const pen& pena, const pair& a, double ra,
280 const pen& penb, const pair& b, double rb);
280 bool extenda, const pen& penb, const pair& b,
281 double rb, bool extendb);
281282
282283 virtual void begingouraudshade(const vm::array& pens,
283284 const vm::array& vertices,
152152 static const char *incommensurate="Incommensurate matrices";
153153 static const char *singular="Singular matrix";
154154 static size_t *pivot,*Row,*Col;
155
156 static inline void inverseAllocate(size_t n)
157 {
158 pivot=new size_t[n];
159 Row=new size_t[n];
160 Col=new size_t[n];
161 }
162
163 static inline void inverseDeallocate()
164 {
165 delete[] pivot;
166 delete[] Row;
167 delete[] Col;
168 }
155169
156170 namespace run {
157171
244258 read<real>(t2,3))*f);
245259 }
246260
247 triple multshiftless(const array& t, const triple& v)
248 {
249 size_t n=checkArray(&t);
250 if(n != 4) error(incommensurate);
251 array *t0=read<array*>(t,0);
252 array *t1=read<array*>(t,1);
253 array *t2=read<array*>(t,2);
254 array *t3=read<array*>(t,3);
255
256 if(checkArray(t0) != 4 || checkArray(t1) != 4 ||
257 checkArray(t2) != 4 || checkArray(t3) != 4)
258 error(incommensurate);
259
260 double x=v.getx();
261 double y=v.gety();
262 double z=v.getz();
263
264 double f=read<real>(t3,0)*x+read<real>(t3,1)*y+read<real>(t3,2)*z+
265 read<real>(t3,3);
266 if(f == 0.0) run::dividebyzero();
267 f=1.0/f;
268
269 return triple((read<real>(t0,0)*x+read<real>(t0,1)*y+read<real>(t0,2)*z)*f,
270 (read<real>(t1,0)*x+read<real>(t1,1)*y+read<real>(t1,2)*z)*f,
271 (read<real>(t2,0)*x+read<real>(t2,1)*y+read<real>(t2,2)*z)*f);
272 }
273
274261 template<class T>
275262 array *mult(array *a, array *b)
276263 {
326313 return sqrt(M);
327314 }
328315
329 }
330
331 static inline void inverseAllocate(size_t n)
332 {
333 pivot=new size_t[n];
334 Row=new size_t[n];
335 Col=new size_t[n];
336 }
337
338 static inline void inverseDeallocate()
339 {
340 delete[] pivot;
341 delete[] Row;
342 delete[] Col;
316 // Transpose an n x n matrix in place.
317 void transpose(double *a, size_t n)
318 {
319 for(size_t i=1; i < n; i++) {
320 for(size_t j=0; j < i; j++) {
321 size_t ij=n*i+j;
322 size_t ji=n*j+i;
323 double temp=a[ij];
324 a[ij]=a[ji];
325 a[ji]=temp;
326 }
327 }
328 }
329
330 // Invert an n x n array in place.
331 void inverse(double *a, size_t n)
332 {
333 inverseAllocate(n);
334
335 for(size_t i=0; i < n; i++)
336 pivot[i]=0;
337
338 size_t col=0, row=0;
339 // This is the main loop over the columns to be reduced.
340 for(size_t i=0; i < n; i++) {
341 real big=0.0;
342 // This is the outer loop of the search for a pivot element.
343 for(size_t j=0; j < n; j++) {
344 double *aj=a+n*j;
345 if(pivot[j] != 1) {
346 for(size_t k=0; k < n; k++) {
347 if(pivot[k] == 0) {
348 real temp=fabs(aj[k]);
349 if(temp >= big) {
350 big=temp;
351 row=j;
352 col=k;
353 }
354 } else if(pivot[k] > 1) {
355 inverseDeallocate();
356 error(singular);
357 }
358 }
359 }
360 }
361 ++(pivot[col]);
362
363 // Interchange rows, if needed, to put the pivot element on the diagonal.
364 double *acol=a+n*col;
365 if(row != col) {
366 double *arow=a+n*row;
367 for(size_t k=0; k < n; k++) {
368 real temp=arow[k];
369 arow[k]=acol[k];
370 acol[k]=temp;
371 }
372 }
373
374 Row[i]=row;
375 Col[i]=col;
376
377 // Divide the pivot row by the pivot element.
378 real denom=acol[col];
379 if(denom == 0.0) {
380 inverseDeallocate();
381 error(singular);
382 }
383 real pivinv=1.0/denom;
384 acol[col]=1.0;
385 for(size_t k=0; k < n; k++)
386 acol[k]=acol[k]*pivinv;
387
388 // Reduce all rows except for the pivoted one.
389 for(size_t k=0; k < n; k++) {
390 if(k != col) {
391 double *ak=a+n*k;
392 real akcol=ak[col];
393 ak[col]=0.0;
394 for(size_t j=0; j < n; j++)
395 ak[j] -= acol[j]*akcol;
396 }
397 }
398 }
399
400 // Unscramble the inverse matrix in view of the column interchanges.
401 for(size_t k=n; k > 0;) {
402 k--;
403 size_t r=Row[k];
404 size_t c=Col[k];
405 if(r != c) {
406 for(size_t j=0; j < n; j++) {
407 double *aj=a+n*j;
408 real temp=aj[r];
409 aj[r]=aj[c];
410 aj[c]=temp;
411 }
412 }
413 }
414 inverseDeallocate();
415 }
343416 }
344417
345418 callable *Func;
469542 #endif
470543 namespace run {
471544 // Create an empty array.
472 #line 425 "runarray.in"
545 #line 498 "runarray.in"
473546 void emptyArray(stack *Stack)
474547 {
475 #line 426 "runarray.in"
548 #line 499 "runarray.in"
476549 {Stack->push<array*>(new array(0)); return;}
477550 }
478551
481554 // is popped off the stack, followed by each dimension in reverse order.
482555 // The array itself is technically a one dimensional array of one
483556 // dimension arrays and so on.
484 #line 435 "runarray.in"
557 #line 508 "runarray.in"
485558 void newDeepArray(stack *Stack)
486559 {
487560 Int depth=vm::pop<Int>(Stack);
488 #line 436 "runarray.in"
561 #line 509 "runarray.in"
489562 assert(depth > 0);
490563
491564 Int *dims = new Int[depth];
504577 // Creates an array with elements already specified. First, the number
505578 // of elements is popped off the stack, followed by each element in
506579 // reverse order.
507 #line 455 "runarray.in"
580 #line 528 "runarray.in"
508581 void newInitializedArray(stack *Stack)
509582 {
510583 Int n=vm::pop<Int>(Stack);
511 #line 456 "runarray.in"
584 #line 529 "runarray.in"
512585 assert(n >= 0);
513586
514587 array *a = new array(n);
521594
522595 // Similar to newInitializedArray, but after the n elements, append another
523596 // array to it.
524 #line 469 "runarray.in"
597 #line 542 "runarray.in"
525598 void newAppendedArray(stack *Stack)
526599 {
527600 Int n=vm::pop<Int>(Stack);
528601 array* tail=vm::pop<array*>(Stack);
529 #line 470 "runarray.in"
602 #line 543 "runarray.in"
530603 assert(n >= 0);
531604
532605 array *a = new array(n);
543616 // typeDepth is the true depth of the array determined at compile-time when the
544617 // operations for the array type are added. This typeDepth argument is
545618 // automatically pushed on the stack and is not visible to the user.
546 #line 487 "runarray.in"
619 #line 560 "runarray.in"
547620 void copyArrayValue(stack *Stack)
548621 {
549622 Int typeDepth=vm::pop<Int>(Stack);
550623 Int depth=vm::pop<Int>(Stack,Int_MAX);
551624 item value=vm::pop(Stack);
552625 Int n=vm::pop<Int>(Stack);
553 #line 488 "runarray.in"
626 #line 561 "runarray.in"
554627 if(n < 0) error("cannot create a negative length array");
555628 if(depth < 0) error("cannot copy to a negative depth");
556629 if(depth > typeDepth) depth=typeDepth;
561634 // typeDepth is the true depth of the array determined at compile-time when the
562635 // operations for the array type are added. This typeDepth argument is
563636 // automatically pushed on the stack and is not visible to the user.
564 #line 499 "runarray.in"
637 #line 572 "runarray.in"
565638 void copyArray(stack *Stack)
566639 {
567640 Int typeDepth=vm::pop<Int>(Stack);
568641 Int depth=vm::pop<Int>(Stack,Int_MAX);
569642 array * a=vm::pop<array *>(Stack);
570 #line 500 "runarray.in"
643 #line 573 "runarray.in"
571644 if(depth < 0) error("cannot copy to a negative depth");
572645 if(depth > typeDepth) depth=typeDepth;
573646 {Stack->push<array*>(a->copyToDepth(depth)); return;}
574647 }
575648
576649 // Read an element from an array. Checks for initialization & bounds.
577 #line 507 "runarray.in"
650 #line 580 "runarray.in"
578651 void arrayRead(stack *Stack)
579652 {
580653 Int n=vm::pop<Int>(Stack);
581654 array * a=vm::pop<array *>(Stack);
582 #line 508 "runarray.in"
655 #line 581 "runarray.in"
583656 item& i=arrayRead(a,n);
584657 if (i.empty()) {
585658 ostringstream buf;
590663 }
591664
592665 // Slice a substring from an array.
593 #line 519 "runarray.in"
666 #line 592 "runarray.in"
594667 void arraySliceRead(stack *Stack)
595668 {
596669 Int right=vm::pop<Int>(Stack);
597670 Int left=vm::pop<Int>(Stack);
598671 array * a=vm::pop<array *>(Stack);
599 #line 520 "runarray.in"
672 #line 593 "runarray.in"
600673 checkArray(a);
601674 {Stack->push(a->slice(left, right)); return;}
602675 }
603676
604677 // Slice a substring from an array. This implements the cases a[i:] and a[:]
605678 // where the endpoint is not given, and assumed to be the length of the array.
606 #line 527 "runarray.in"
679 #line 600 "runarray.in"
607680 void arraySliceReadToEnd(stack *Stack)
608681 {
609682 Int left=vm::pop<Int>(Stack);
610683 array * a=vm::pop<array *>(Stack);
611 #line 528 "runarray.in"
684 #line 601 "runarray.in"
612685 size_t len=checkArray(a);
613686 {Stack->push(a->slice(left, (Int)len)); return;}
614687 }
615688
616689 // Read an element from an array of arrays. Check bounds and initialize
617690 // as necessary.
618 #line 535 "runarray.in"
691 #line 608 "runarray.in"
619692 void arrayArrayRead(stack *Stack)
620693 {
621694 Int n=vm::pop<Int>(Stack);
622695 array * a=vm::pop<array *>(Stack);
623 #line 536 "runarray.in"
696 #line 609 "runarray.in"
624697 item& i=arrayRead(a,n);
625698 if (i.empty()) i=new array(0);
626699 {Stack->push(i); return;}
628701
629702 // Write an element to an array. Increase size if necessary.
630703 // TODO: Add arrayWriteAndPop
631 #line 544 "runarray.in"
704 #line 617 "runarray.in"
632705 void arrayWrite(stack *Stack)
633706 {
634707 item value=vm::pop(Stack);
635708 Int n=vm::pop<Int>(Stack);
636709 array * a=vm::pop<array *>(Stack);
637 #line 545 "runarray.in"
710 #line 618 "runarray.in"
638711 size_t len=checkArray(a);
639712 bool cyclic=a->cyclic();
640713 if(cyclic && len > 0) n=imod(n,len);
648721 {Stack->push(value); return;}
649722 }
650723
651 #line 559 "runarray.in"
724 #line 632 "runarray.in"
652725 void arraySliceWrite(stack *Stack)
653726 {
654727 array * src=vm::pop<array *>(Stack);
655728 Int right=vm::pop<Int>(Stack);
656729 Int left=vm::pop<Int>(Stack);
657730 array * dest=vm::pop<array *>(Stack);
658 #line 560 "runarray.in"
731 #line 633 "runarray.in"
659732 checkArray(src);
660733 checkArray(dest);
661734 dest->setSlice(left, right, src);
662735 {Stack->push<array*>(src); return;}
663736 }
664737
665 #line 567 "runarray.in"
738 #line 640 "runarray.in"
666739 void arraySliceWriteToEnd(stack *Stack)
667740 {
668741 array * src=vm::pop<array *>(Stack);
669742 Int left=vm::pop<Int>(Stack);
670743 array * dest=vm::pop<array *>(Stack);
671 #line 568 "runarray.in"
744 #line 641 "runarray.in"
672745 checkArray(src);
673746 size_t len=checkArray(dest);
674747 dest->setSlice(left, (Int) len, src);
676749 }
677750
678751 // Returns the length of an array.
679 #line 576 "runarray.in"
752 #line 649 "runarray.in"
680753 void arrayLength(stack *Stack)
681754 {
682755 array * a=vm::pop<array *>(Stack);
683 #line 577 "runarray.in"
756 #line 650 "runarray.in"
684757 {Stack->push<Int>((Int) checkArray(a)); return;}
685758 }
686759
687760 // Returns an array of integers representing the keys of the array.
688 #line 582 "runarray.in"
761 #line 655 "runarray.in"
689762 void arrayKeys(stack *Stack)
690763 {
691764 array * a=vm::pop<array *>(Stack);
692 #line 583 "runarray.in"
765 #line 656 "runarray.in"
693766 size_t size=checkArray(a);
694767
695768 array *keys=new array();
703776 }
704777
705778 // Return the cyclic flag for an array.
706 #line 597 "runarray.in"
779 #line 670 "runarray.in"
707780 void arrayCyclicFlag(stack *Stack)
708781 {
709782 array * a=vm::pop<array *>(Stack);
710 #line 598 "runarray.in"
783 #line 671 "runarray.in"
711784 checkArray(a);
712785 {Stack->push<bool>(a->cyclic()); return;}
713786 }
714787
715 #line 603 "runarray.in"
788 #line 676 "runarray.in"
716789 void arraySetCyclicFlag(stack *Stack)
717790 {
718791 array * a=vm::pop<array *>(Stack);
719792 bool b=vm::pop<bool>(Stack);
720 #line 604 "runarray.in"
793 #line 677 "runarray.in"
721794 checkArray(a);
722795 a->cyclic(b);
723796 {Stack->push<bool>(b); return;}
724797 }
725798
726799 // Check to see if an array element is initialized.
727 #line 611 "runarray.in"
800 #line 684 "runarray.in"
728801 void arrayInitializedHelper(stack *Stack)
729802 {
730803 array * a=vm::pop<array *>(Stack);
731804 Int n=vm::pop<Int>(Stack);
732 #line 612 "runarray.in"
805 #line 685 "runarray.in"
733806 size_t len=checkArray(a);
734807 bool cyclic=a->cyclic();
735808 if(cyclic && len > 0) n=imod(n,len);
739812 }
740813
741814 // Returns the initialize method for an array.
742 #line 622 "runarray.in"
815 #line 695 "runarray.in"
743816 void arrayInitialized(stack *Stack)
744817 {
745818 array * a=vm::pop<array *>(Stack);
746 #line 623 "runarray.in"
819 #line 696 "runarray.in"
747820 {Stack->push<callable*>(new thunk(new bfunc(arrayInitializedHelper),a)); return;}
748821 }
749822
750823 // The helper function for the cyclic method that sets the cyclic flag.
751 #line 628 "runarray.in"
824 #line 701 "runarray.in"
752825 void arrayCyclicHelper(stack *Stack)
753826 {
754827 array * a=vm::pop<array *>(Stack);
755828 bool b=vm::pop<bool>(Stack);
756 #line 629 "runarray.in"
829 #line 702 "runarray.in"
757830 checkArray(a);
758831 a->cyclic(b);
759832 }
760833
761834 // Set the cyclic flag for an array.
762 #line 635 "runarray.in"
835 #line 708 "runarray.in"
763836 void arrayCyclic(stack *Stack)
764837 {
765838 array * a=vm::pop<array *>(Stack);
766 #line 636 "runarray.in"
839 #line 709 "runarray.in"
767840 {Stack->push<callable*>(new thunk(new bfunc(arrayCyclicHelper),a)); return;}
768841 }
769842
770843 // The helper function for the push method that does the actual operation.
771 #line 641 "runarray.in"
844 #line 714 "runarray.in"
772845 void arrayPushHelper(stack *Stack)
773846 {
774847 array * a=vm::pop<array *>(Stack);
775848 item x=vm::pop(Stack);
776 #line 642 "runarray.in"
849 #line 715 "runarray.in"
777850 checkArray(a);
778851 a->push(x);
779852 {Stack->push(x); return;}
780853 }
781854
782855 // Returns the push method for an array.
783 #line 649 "runarray.in"
856 #line 722 "runarray.in"
784857 void arrayPush(stack *Stack)
785858 {
786859 array * a=vm::pop<array *>(Stack);
787 #line 650 "runarray.in"
860 #line 723 "runarray.in"
788861 {Stack->push<callable*>(new thunk(new bfunc(arrayPushHelper),a)); return;}
789862 }
790863
791864 // The helper function for the append method that appends b to a.
792 #line 655 "runarray.in"
865 #line 728 "runarray.in"
793866 void arrayAppendHelper(stack *Stack)
794867 {
795868 array * a=vm::pop<array *>(Stack);
796869 array * b=vm::pop<array *>(Stack);
797 #line 656 "runarray.in"
870 #line 729 "runarray.in"
798871 checkArray(a);
799872 size_t size=checkArray(b);
800873 for(size_t i=0; i < size; i++)
802875 }
803876
804877 // Returns the append method for an array.
805 #line 664 "runarray.in"
878 #line 737 "runarray.in"
806879 void arrayAppend(stack *Stack)
807880 {
808881 array * a=vm::pop<array *>(Stack);
809 #line 665 "runarray.in"
882 #line 738 "runarray.in"
810883 {Stack->push<callable*>(new thunk(new bfunc(arrayAppendHelper),a)); return;}
811884 }
812885
813886 // The helper function for the pop method.
814 #line 670 "runarray.in"
887 #line 743 "runarray.in"
815888 void arrayPopHelper(stack *Stack)
816889 {
817890 array * a=vm::pop<array *>(Stack);
818 #line 671 "runarray.in"
891 #line 744 "runarray.in"
819892 size_t asize=checkArray(a);
820893 if(asize == 0)
821894 error("cannot pop element from empty array");
823896 }
824897
825898 // Returns the pop method for an array.
826 #line 679 "runarray.in"
899 #line 752 "runarray.in"
827900 void arrayPop(stack *Stack)
828901 {
829902 array * a=vm::pop<array *>(Stack);
830 #line 680 "runarray.in"
903 #line 753 "runarray.in"
831904 {Stack->push<callable*>(new thunk(new bfunc(arrayPopHelper),a)); return;}
832905 }
833906
834907 // The helper function for the insert method.
835 #line 685 "runarray.in"
908 #line 758 "runarray.in"
836909 void arrayInsertHelper(stack *Stack)
837910 {
838911 array * a=vm::pop<array *>(Stack);
839912 array * x=vm::pop<array *>(Stack);
840913 Int i=vm::pop<Int>(Stack);
841 #line 686 "runarray.in"
914 #line 759 "runarray.in"
842915 size_t asize=checkArray(a);
843916 checkArray(x);
844917 if(a->cyclic() && asize > 0) i=imod(i,asize);
848921 }
849922
850923 // Returns the insert method for an array.
851 #line 696 "runarray.in"
924 #line 769 "runarray.in"
852925 void arrayInsert(stack *Stack)
853926 {
854927 array * a=vm::pop<array *>(Stack);
855 #line 697 "runarray.in"
928 #line 770 "runarray.in"
856929 {Stack->push<callable*>(new thunk(new bfunc(arrayInsertHelper),a)); return;}
857930 }
858931
859932 // Returns the delete method for an array.
860 #line 702 "runarray.in"
933 #line 775 "runarray.in"
861934 void arrayDelete(stack *Stack)
862935 {
863936 array * a=vm::pop<array *>(Stack);
864 #line 703 "runarray.in"
937 #line 776 "runarray.in"
865938 {Stack->push<callable*>(new thunk(new bfunc(arrayDeleteHelper),a)); return;}
866939 }
867940
868 #line 707 "runarray.in"
941 #line 780 "runarray.in"
869942 void arrayAlias(stack *Stack)
870943 {
871944 array * b=vm::pop<array *>(Stack);
872945 array * a=vm::pop<array *>(Stack);
873 #line 708 "runarray.in"
946 #line 781 "runarray.in"
874947 {Stack->push<bool>(a==b); return;}
875948 }
876949
877950 // Return array formed by indexing array a with elements of integer array b
878 #line 713 "runarray.in"
951 #line 786 "runarray.in"
879952 void arrayIntArray(stack *Stack)
880953 {
881954 array * b=vm::pop<array *>(Stack);
882955 array * a=vm::pop<array *>(Stack);
883 #line 714 "runarray.in"
956 #line 787 "runarray.in"
884957 size_t asize=checkArray(a);
885958 size_t bsize=checkArray(b);
886959 array *r=new array(bsize);
898971
899972 // returns the complement of the integer array a in {0,2,...,n-1},
900973 // so that b[complement(a,b.length)] yields the complement of b[a].
901 #line 732 "runarray.in"
974 #line 805 "runarray.in"
902975 // Intarray* complement(Intarray *a, Int n);
903976 void gen_runarray32(stack *Stack)
904977 {
905978 Int n=vm::pop<Int>(Stack);
906979 Intarray * a=vm::pop<Intarray *>(Stack);
907 #line 733 "runarray.in"
980 #line 806 "runarray.in"
908981 size_t asize=checkArray(a);
909982 array *r=new array(0);
910983 bool *keep=new bool[n];
921994 }
922995
923996 // Generate the sequence {f(i) : i=0,1,...n-1} given a function f and integer n
924 #line 750 "runarray.in"
997 #line 823 "runarray.in"
925998 void arraySequence(stack *Stack)
926999 {
9271000 Int n=vm::pop<Int>(Stack);
9281001 callable * f=vm::pop<callable *>(Stack);
929 #line 751 "runarray.in"
1002 #line 824 "runarray.in"
9301003 if(n < 0) n=0;
9311004 array *a=new array(n);
9321005 for(Int i=0; i < n; ++i) {
9381011 }
9391012
9401013 // Return the array {0,1,...n-1}
941 #line 763 "runarray.in"
1014 #line 836 "runarray.in"
9421015 // Intarray* sequence(Int n);
9431016 void gen_runarray34(stack *Stack)
9441017 {
9451018 Int n=vm::pop<Int>(Stack);
946 #line 764 "runarray.in"
1019 #line 837 "runarray.in"
9471020 if(n < 0) n=0;
9481021 array *a=new array(n);
9491022 for(Int i=0; i < n; ++i) {
9531026 }
9541027
9551028 // Apply a function to each element of an array
956 #line 774 "runarray.in"
1029 #line 847 "runarray.in"
9571030 void arrayFunction(stack *Stack)
9581031 {
9591032 array * a=vm::pop<array *>(Stack);
9601033 callable * f=vm::pop<callable *>(Stack);
961 #line 775 "runarray.in"
1034 #line 848 "runarray.in"
9621035 size_t size=checkArray(a);
9631036 array *b=new array(size);
9641037 for(size_t i=0; i < size; ++i) {
9691042 {Stack->push<array*>(b); return;}
9701043 }
9711044
972 #line 786 "runarray.in"
1045 #line 859 "runarray.in"
9731046 void arraySort(stack *Stack)
9741047 {
9751048 callable * less=vm::pop<callable *>(Stack);
9761049 array * a=vm::pop<array *>(Stack);
977 #line 787 "runarray.in"
1050 #line 860 "runarray.in"
9781051 array *c=copyArray(a);
9791052 compareFunc=less;
9801053 FuncStack=Stack;
9821055 {Stack->push<array*>(c); return;}
9831056 }
9841057
985 #line 795 "runarray.in"
1058 #line 868 "runarray.in"
9861059 void arraySearch(stack *Stack)
9871060 {
9881061 callable * less=vm::pop<callable *>(Stack);
9891062 item key=vm::pop(Stack);
9901063 array * a=vm::pop<array *>(Stack);
991 #line 796 "runarray.in"
1064 #line 869 "runarray.in"
9921065 size_t size=a->size();
9931066 compareFunc=less;
9941067 FuncStack=Stack;
10061079 {Stack->push<Int>(0); return;}
10071080 }
10081081
1009 #line 814 "runarray.in"
1082 #line 887 "runarray.in"
10101083 // bool all(boolarray *a);
10111084 void gen_runarray38(stack *Stack)
10121085 {
10131086 boolarray * a=vm::pop<boolarray *>(Stack);
1014 #line 815 "runarray.in"
1087 #line 888 "runarray.in"
10151088 size_t size=checkArray(a);
10161089 bool c=true;
10171090 for(size_t i=0; i < size; i++)
10191092 {Stack->push<bool>(c); return;}
10201093 }
10211094
1022 #line 823 "runarray.in"
1095 #line 896 "runarray.in"
10231096 // boolarray* !(boolarray* a);
10241097 void gen_runarray39(stack *Stack)
10251098 {
10261099 boolarray* a=vm::pop<boolarray*>(Stack);
1027 #line 824 "runarray.in"
1100 #line 897 "runarray.in"
10281101 size_t size=checkArray(a);
10291102 array *c=new array(size);
10301103 for(size_t i=0; i < size; i++)
10321105 {Stack->push<boolarray*>(c); return;}
10331106 }
10341107
1035 #line 832 "runarray.in"
1108 #line 905 "runarray.in"
10361109 // Int sum(boolarray *a);
10371110 void gen_runarray40(stack *Stack)
10381111 {
10391112 boolarray * a=vm::pop<boolarray *>(Stack);
1040 #line 833 "runarray.in"
1113 #line 906 "runarray.in"
10411114 size_t size=checkArray(a);
10421115 Int sum=0;
10431116 for(size_t i=0; i < size; i++)
10451118 {Stack->push<Int>(sum); return;}
10461119 }
10471120
1048 #line 841 "runarray.in"
1121 #line 914 "runarray.in"
10491122 void arrayConcat(stack *Stack)
10501123 {
10511124 array * a=vm::pop<array *>(Stack);
1052 #line 842 "runarray.in"
1125 #line 915 "runarray.in"
10531126 // a is an array of arrays to be concatenated together.
10541127 // The signature is
10551128 // T[] concat(... T[][] a);
10761149 {Stack->push<array*>(result); return;}
10771150 }
10781151
1079 #line 869 "runarray.in"
1152 #line 942 "runarray.in"
10801153 void array2Transpose(stack *Stack)
10811154 {
10821155 array * a=vm::pop<array *>(Stack);
1083 #line 870 "runarray.in"
1156 #line 943 "runarray.in"
10841157 size_t asize=checkArray(a);
10851158 array *c=new array(0);
10861159 for(size_t i=0; i < asize; i++) {
11071180 // permutation (021 or 120, etc; original is 012).
11081181 // Transpose by sending respective members to the permutated locations:
11091182 // return the array obtained by putting a[i][j][k] into position perm{ijk}.
1110 #line 897 "runarray.in"
1183 #line 970 "runarray.in"
11111184 void array3Transpose(stack *Stack)
11121185 {
11131186 array * perm=vm::pop<array *>(Stack);
11141187 array * a=vm::pop<array *>(Stack);
1115 #line 898 "runarray.in"
1188 #line 971 "runarray.in"
11161189 const size_t DIM=3;
11171190
11181191 if(checkArray(perm) != DIM) {
11961269
11971270 // In a boolean array, find the index of the nth true value or -1 if not found
11981271 // If n is negative, search backwards.
1199 #line 982 "runarray.in"
1272 #line 1055 "runarray.in"
12001273 // Int find(boolarray *a, Int n=1);
12011274 void gen_runarray44(stack *Stack)
12021275 {
12031276 Int n=vm::pop<Int>(Stack,1);
12041277 boolarray * a=vm::pop<boolarray *>(Stack);
1205 #line 983 "runarray.in"
1278 #line 1056 "runarray.in"
12061279 size_t size=checkArray(a);
12071280 Int j=-1;
12081281 if(n > 0)
12201293
12211294 // construct vector obtained by replacing those elements of b for which the
12221295 // corresponding elements of a are false by the corresponding element of c.
1223 #line 1001 "runarray.in"
1296 #line 1074 "runarray.in"
12241297 void arrayConditional(stack *Stack)
12251298 {
12261299 array * c=vm::pop<array *>(Stack);
12271300 array * b=vm::pop<array *>(Stack);
12281301 array * a=vm::pop<array *>(Stack);
1229 #line 1002 "runarray.in"
1302 #line 1075 "runarray.in"
12301303 size_t size=checkArray(a);
12311304 array *r=new array(size);
12321305 if(b && c) {
12501323 }
12511324
12521325 // Return an n x n identity matrix.
1253 #line 1026 "runarray.in"
1326 #line 1099 "runarray.in"
12541327 // realarray2* identity(Int n);
12551328 void gen_runarray46(stack *Stack)
12561329 {
12571330 Int n=vm::pop<Int>(Stack);
1258 #line 1027 "runarray.in"
1331 #line 1100 "runarray.in"
12591332 {Stack->push<realarray2*>(Identity(n)); return;}
12601333 }
12611334
12621335 // Return the inverse of an n x n matrix a using Gauss-Jordan elimination.
1263 #line 1032 "runarray.in"
1336 #line 1105 "runarray.in"
12641337 // realarray2* inverse(realarray2 *a);
12651338 void gen_runarray47(stack *Stack)
12661339 {
12671340 realarray2 * a=vm::pop<realarray2 *>(Stack);
1268 #line 1033 "runarray.in"
1269 a=copyArray2(a);
1341 #line 1106 "runarray.in"
12701342 size_t n=checkArray(a);
1271 checkSquare(a);
1272
1273 inverseAllocate(n);
1274
1275 for(size_t i=0; i < n; i++)
1276 pivot[i]=0;
1277
1278 size_t col=0, row=0;
1279 // This is the main loop over the columns to be reduced.
1280 for(size_t i=0; i < n; i++) {
1281 real big=0.0;
1282 // This is the outer loop of the search for a pivot element.
1283 for(size_t j=0; j < n; j++) {
1284 array *aj=read<array*>(a,j);
1285 if(pivot[j] != 1) {
1286 for(size_t k=0; k < n; k++) {
1287 if(pivot[k] == 0) {
1288 real temp=fabs(read<real>(aj,k));
1289 if(temp >= big) {
1290 big=temp;
1291 row=j;
1292 col=k;
1293 }
1294 } else if(pivot[k] > 1) {
1295 inverseDeallocate();
1296 error(singular);
1297 }
1298 }
1299 }
1300 }
1301 ++(pivot[col]);
1302
1303 // Interchange rows, if needed, to put the pivot element on the diagonal.
1304 array *acol=read<array*>(a,col);
1305 if(row != col) {
1306 array *arow=read<array*>(a,row);
1307 for(size_t l=0; l < n; l++) {
1308 real temp=read<real>(arow,l);
1309 (*arow)[l]=read<real>(acol,l);
1310 (*acol)[l]=temp;
1311 }
1312 }
1313
1314 Row[i]=row;
1315 Col[i]=col;
1316
1317 // Divide the pivot row by the pivot element.
1318 real denom=read<real>(acol,col);
1319 if(denom == 0.0) {
1320 inverseDeallocate();
1321 error(singular);
1322 }
1323 real pivinv=1.0/denom;
1324 (*acol)[col]=1.0;
1325 for(size_t l=0; l < n; l++)
1326 (*acol)[l]=read<real>(acol,l)*pivinv;
1327
1328 // Reduce all rows except for the pivoted one.
1329 for(size_t k=0; k < n; k++) {
1330 if(k != col) {
1331 array *ak=read<array*>(a,k);
1332 real akcol=read<real>(ak,col);
1333 (*ak)[col]=0.0;
1334 for(size_t l=0; l < n; l++)
1335 (*ak)[l]=read<real>(ak,l)-read<real>(acol,l)*akcol;
1336 }
1337 }
1338 }
1339
1340 // Unscramble the inverse matrix in view of the column interchanges.
1341 for(size_t l=n; l > 0;) {
1342 l--;
1343 size_t r=Row[l];
1344 size_t c=Col[l];
1345 if(r != c) {
1346 for(size_t k=0; k < n; k++) {
1347 array *ak=read<array*>(a,k);
1348 real temp=read<real>(ak,r);
1349 (*ak)[r]=read<real>(ak,c);
1350 (*ak)[c]=temp;
1351 }
1352 }
1353 }
1354 inverseDeallocate();
1343 double *A;
1344 copyArray2C(A,a,true,0,NoGC);
1345 inverse(A,n);
1346 a=copyCArray2(n,n,A);
1347 delete A;
13551348 {Stack->push<realarray2*>(a); return;}
13561349 }
13571350
13581351 // Solve the linear equation ax=b by LU decomposition, returning the
13591352 // solution x, where a is an n x n matrix and b is an array of length n.
13601353 // If no solution exists, return an empty array.
1361 #line 1126 "runarray.in"
1354 #line 1119 "runarray.in"
13621355 // realarray* solve(realarray2 *a, realarray *b, bool warn=true);
13631356 void gen_runarray48(stack *Stack)
13641357 {
13651358 bool warn=vm::pop<bool>(Stack,true);
13661359 realarray * b=vm::pop<realarray *>(Stack);
13671360 realarray2 * a=vm::pop<realarray2 *>(Stack);
1368 #line 1127 "runarray.in"
1361 #line 1120 "runarray.in"
13691362 size_t n=checkArray(a);
13701363
13711364 if(n == 0) {Stack->push<realarray*>(new array(0)); return;}
14171410 // Solve the linear equation ax=b by LU decomposition, returning the
14181411 // solution x, where a is an n x n matrix and b is an n x m matrix.
14191412 // If no solution exists, return an empty array.
1420 #line 1179 "runarray.in"
1413 #line 1172 "runarray.in"
14211414 // realarray2* solve(realarray2 *a, realarray2 *b, bool warn=true);
14221415 void gen_runarray49(stack *Stack)
14231416 {
14241417 bool warn=vm::pop<bool>(Stack,true);
14251418 realarray2 * b=vm::pop<realarray2 *>(Stack);
14261419 realarray2 * a=vm::pop<realarray2 *>(Stack);
1427 #line 1180 "runarray.in"
1420 #line 1173 "runarray.in"
14281421 size_t n=checkArray(a);
14291422
14301423 if(n == 0) {Stack->push<realarray2*>(new array(0)); return;}
14861479 }
14871480
14881481 // Compute the determinant of an n x n matrix.
1489 #line 1242 "runarray.in"
1482 #line 1235 "runarray.in"
14901483 // real determinant(realarray2 *a);
14911484 void gen_runarray50(stack *Stack)
14921485 {
14931486 realarray2 * a=vm::pop<realarray2 *>(Stack);
1494 #line 1243 "runarray.in"
1487 #line 1236 "runarray.in"
14951488 real *A;
14961489 copyArray2C(A,a);
14971490 size_t n=checkArray(a);
15061499 {Stack->push<real>(det); return;}
15071500 }
15081501
1509 #line 1258 "runarray.in"
1502 #line 1251 "runarray.in"
15101503 // realarray* *(realarray2 *a, realarray *b);
15111504 void gen_runarray51(stack *Stack)
15121505 {
15131506 realarray * b=vm::pop<realarray *>(Stack);
15141507 realarray2 * a=vm::pop<realarray2 *>(Stack);
1515 #line 1259 "runarray.in"
1508 #line 1252 "runarray.in"
15161509 size_t n=checkArray(a);
15171510 size_t m=checkArray(b);
15181511 array *c=new array(n);
15301523 {Stack->push<realarray*>(c); return;}
15311524 }
15321525
1533 #line 1277 "runarray.in"
1526 #line 1270 "runarray.in"
15341527 // realarray* *(realarray *a, realarray2 *b);
15351528 void gen_runarray52(stack *Stack)
15361529 {
15371530 realarray2 * b=vm::pop<realarray2 *>(Stack);
15381531 realarray * a=vm::pop<realarray *>(Stack);
1539 #line 1278 "runarray.in"
1532 #line 1271 "runarray.in"
15401533 size_t n=checkArray(a);
15411534 if(n != checkArray(b)) error(incommensurate);
15421535 real *A;
15641557 {Stack->push<realarray*>(c); return;}
15651558 }
15661559
1567 #line 1306 "runarray.in"
1560 #line 1299 "runarray.in"
15681561 // Intarray2* *(Intarray2 *a, Intarray2 *b);
15691562 void gen_runarray53(stack *Stack)
15701563 {
15711564 Intarray2 * b=vm::pop<Intarray2 *>(Stack);
15721565 Intarray2 * a=vm::pop<Intarray2 *>(Stack);
1573 #line 1307 "runarray.in"
1566 #line 1300 "runarray.in"
15741567 {Stack->push<Intarray2*>(mult<Int>(a,b)); return;}
15751568 }
15761569
1577 #line 1311 "runarray.in"
1570 #line 1304 "runarray.in"
15781571 // realarray2* *(realarray2 *a, realarray2 *b);
15791572 void gen_runarray54(stack *Stack)
15801573 {
15811574 realarray2 * b=vm::pop<realarray2 *>(Stack);
15821575 realarray2 * a=vm::pop<realarray2 *>(Stack);
1583 #line 1312 "runarray.in"
1576 #line 1305 "runarray.in"
15841577 {Stack->push<realarray2*>(mult<real>(a,b)); return;}
15851578 }
15861579
1587 #line 1316 "runarray.in"
1580 #line 1309 "runarray.in"
15881581 // pairarray2* *(pairarray2 *a, pairarray2 *b);
15891582 void gen_runarray55(stack *Stack)
15901583 {
15911584 pairarray2 * b=vm::pop<pairarray2 *>(Stack);
15921585 pairarray2 * a=vm::pop<pairarray2 *>(Stack);
1593 #line 1317 "runarray.in"
1586 #line 1310 "runarray.in"
15941587 {Stack->push<pairarray2*>(mult<pair>(a,b)); return;}
15951588 }
15961589
1597 #line 1321 "runarray.in"
1590 #line 1314 "runarray.in"
15981591 // triple *(realarray2 *t, triple v);
15991592 void gen_runarray56(stack *Stack)
16001593 {
16011594 triple v=vm::pop<triple>(Stack);
16021595 realarray2 * t=vm::pop<realarray2 *>(Stack);
1603 #line 1322 "runarray.in"
1596 #line 1315 "runarray.in"
16041597 {Stack->push<triple>(*t*v); return;}
16051598 }
16061599
1607 #line 1326 "runarray.in"
1600 #line 1319 "runarray.in"
16081601 // pair project(triple v, realarray2 *t);
16091602 void gen_runarray57(stack *Stack)
16101603 {
16111604 realarray2 * t=vm::pop<realarray2 *>(Stack);
16121605 triple v=vm::pop<triple>(Stack);
1613 #line 1327 "runarray.in"
1606 #line 1320 "runarray.in"
16141607 size_t n=checkArray(t);
16151608 if(n != 4) error(incommensurate);
16161609 array *t0=read<array*>(t,0);
16351628 }
16361629
16371630 // Compute the dot product of vectors a and b.
1638 #line 1352 "runarray.in"
1631 #line 1345 "runarray.in"
16391632 // real dot(realarray *a, realarray *b);
16401633 void gen_runarray58(stack *Stack)
16411634 {
16421635 realarray * b=vm::pop<realarray *>(Stack);
16431636 realarray * a=vm::pop<realarray *>(Stack);
1644 #line 1353 "runarray.in"
1637 #line 1346 "runarray.in"
16451638 size_t n=checkArrays(a,b);
16461639 real sum=0.0;
16471640 for(size_t i=0; i < n; ++i)
16501643 }
16511644
16521645 // Compute the complex dot product of vectors a and b.
1653 #line 1362 "runarray.in"
1646 #line 1355 "runarray.in"
16541647 // pair dot(pairarray *a, pairarray *b);
16551648 void gen_runarray59(stack *Stack)
16561649 {
16571650 pairarray * b=vm::pop<pairarray *>(Stack);
16581651 pairarray * a=vm::pop<pairarray *>(Stack);
1659 #line 1363 "runarray.in"
1652 #line 1356 "runarray.in"
16601653 size_t n=checkArrays(a,b);
16611654 pair sum=zero;
16621655 for(size_t i=0; i < n; ++i)
16711664 // [ a[2] b[2] c[2] ]
16721665 // [ ... ]
16731666 // [ c[n-1] a[n-1] b[n-1] ]
1674 #line 1378 "runarray.in"
1667 #line 1371 "runarray.in"
16751668 // realarray* tridiagonal(realarray *a, realarray *b, realarray *c, realarray *f);
16761669 void gen_runarray60(stack *Stack)
16771670 {
16791672 realarray * c=vm::pop<realarray *>(Stack);
16801673 realarray * b=vm::pop<realarray *>(Stack);
16811674 realarray * a=vm::pop<realarray *>(Stack);
1682 #line 1379 "runarray.in"
1675 #line 1372 "runarray.in"
16831676 size_t n=checkArrays(a,b);
16841677 checkEqual(n,checkArray(c));
16851678 checkEqual(n,checkArray(f));
17761769 }
17771770
17781771 // Root solve by Newton-Raphson
1779 #line 1476 "runarray.in"
1772 #line 1469 "runarray.in"
17801773 // real newton(Int iterations=100, callableReal *f, callableReal *fprime, real x, bool verbose=false);
17811774 void gen_runarray61(stack *Stack)
17821775 {
17851778 callableReal * fprime=vm::pop<callableReal *>(Stack);
17861779 callableReal * f=vm::pop<callableReal *>(Stack);
17871780 Int iterations=vm::pop<Int>(Stack,100);
1788 #line 1478 "runarray.in"
1781 #line 1471 "runarray.in"
17891782 static const real fuzz=1000.0*DBL_EPSILON;
17901783 Int i=0;
17911784 size_t oldPrec=0;
18311824
18321825 // Root solve by Newton-Raphson bisection
18331826 // cf. routine rtsafe (Press et al., Numerical Recipes, 1991).
1834 #line 1524 "runarray.in"
1827 #line 1517 "runarray.in"
18351828 // real newton(Int iterations=100, callableReal *f, callableReal *fprime, real x1, real x2, bool verbose=false);
18361829 void gen_runarray62(stack *Stack)
18371830 {
18411834 callableReal * fprime=vm::pop<callableReal *>(Stack);
18421835 callableReal * f=vm::pop<callableReal *>(Stack);
18431836 Int iterations=vm::pop<Int>(Stack,100);
1844 #line 1526 "runarray.in"
1837 #line 1519 "runarray.in"
18451838 static const real fuzz=1000.0*DBL_EPSILON;
18461839 size_t oldPrec=0;
18471840 if(verbose)
19191912 {Stack->push<real>((j == iterations) ? DBL_MAX : x); return;}
19201913 }
19211914
1922 #line 1604 "runarray.in"
1915 #line 1597 "runarray.in"
19231916 // real simpson(callableReal *f, real a, real b, real acc=DBL_EPSILON, real dxmax=0);
19241917 void gen_runarray63(stack *Stack)
19251918 {
19281921 real b=vm::pop<real>(Stack);
19291922 real a=vm::pop<real>(Stack);
19301923 callableReal * f=vm::pop<callableReal *>(Stack);
1931 #line 1606 "runarray.in"
1924 #line 1599 "runarray.in"
19321925 real integral;
19331926 if(dxmax <= 0) dxmax=fabs(b-a);
19341927 Func=f;
19391932 }
19401933
19411934 // Compute the fast Fourier transform of a pair array
1942 #line 1617 "runarray.in"
1935 #line 1610 "runarray.in"
19431936 // pairarray* fft(pairarray *a, Int sign=1);
19441937 void gen_runarray64(stack *Stack)
19451938 {
19461939 Int sign=vm::pop<Int>(Stack,1);
19471940 pairarray * a=vm::pop<pairarray *>(Stack);
1948 #line 1618 "runarray.in"
1941 #line 1611 "runarray.in"
19491942 unsigned n=(unsigned) checkArray(a);
19501943 #ifdef HAVE_LIBFFTW3
19511944 array *c=new array(n);
19741967 {Stack->push<pairarray*>(c); return;}
19751968 }
19761969
1977 #line 1647 "runarray.in"
1970 #line 1640 "runarray.in"
19781971 // Intarray2* triangulate(pairarray *z);
19791972 void gen_runarray65(stack *Stack)
19801973 {
19811974 pairarray * z=vm::pop<pairarray *>(Stack);
1982 #line 1648 "runarray.in"
1975 #line 1641 "runarray.in"
19831976 size_t nv=checkArray(z);
19841977 // Call robust version of Gilles Dumoulin's port of Paul Bourke's
19851978 // triangulation code.
20132006 {Stack->push<Intarray2*>(t); return;}
20142007 }
20152008
2016 #line 1682 "runarray.in"
2009 #line 1675 "runarray.in"
20172010 // real norm(realarray *a);
20182011 void gen_runarray66(stack *Stack)
20192012 {
20202013 realarray * a=vm::pop<realarray *>(Stack);
2021 #line 1683 "runarray.in"
2014 #line 1676 "runarray.in"
20222015 size_t n=checkArray(a);
20232016 real M=0.0;
20242017 for(size_t i=0; i < n; ++i) {
20282021 {Stack->push<real>(M); return;}
20292022 }
20302023
2031 #line 1693 "runarray.in"
2024 #line 1686 "runarray.in"
20322025 // real norm(realarray2 *a);
20332026 void gen_runarray67(stack *Stack)
20342027 {
20352028 realarray2 * a=vm::pop<realarray2 *>(Stack);
2036 #line 1694 "runarray.in"
2029 #line 1687 "runarray.in"
20372030 size_t n=checkArray(a);
20382031 real M=0.0;
20392032 for(size_t i=0; i < n; ++i) {
20472040 {Stack->push<real>(M); return;}
20482041 }
20492042
2050 #line 1708 "runarray.in"
2043 #line 1701 "runarray.in"
20512044 // real norm(triplearray2 *a);
20522045 void gen_runarray68(stack *Stack)
20532046 {
20542047 triplearray2 * a=vm::pop<triplearray2 *>(Stack);
2055 #line 1709 "runarray.in"
2048 #line 1702 "runarray.in"
20562049 size_t n=checkArray(a);
20572050 real M=0.0;
20582051 for(size_t i=0; i < n; ++i) {
20662059 {Stack->push<real>(sqrt(M)); return;}
20672060 }
20682061
2069 #line 1723 "runarray.in"
2062 #line 1716 "runarray.in"
20702063 // real change2(triplearray2 *a);
20712064 void gen_runarray69(stack *Stack)
20722065 {
20732066 triplearray2 * a=vm::pop<triplearray2 *>(Stack);
2074 #line 1724 "runarray.in"
2067 #line 1717 "runarray.in"
20752068 size_t n=checkArray(a);
20762069 if(n == 0) {Stack->push<real>(0.0); return;}
20772070
20922085 {Stack->push<real>(M); return;}
20932086 }
20942087
2095 #line 1745 "runarray.in"
2088 #line 1738 "runarray.in"
20962089 // triple minbezier(triplearray2 *P, triple b);
20972090 void gen_runarray70(stack *Stack)
20982091 {
20992092 triple b=vm::pop<triple>(Stack);
21002093 triplearray2 * P=vm::pop<triplearray2 *>(Stack);
2101 #line 1746 "runarray.in"
2094 #line 1739 "runarray.in"
21022095 real *A=copyTripleArray2Components(P,true,4);
21032096 b=triple(bound(A,::min,b.getx(),sqrtFuzz*norm(A,16)),
21042097 bound(A+16,::min,b.gety(),sqrtFuzz*norm(A+16,16)),
21072100 {Stack->push<triple>(b); return;}
21082101 }
21092102
2110 #line 1755 "runarray.in"
2103 #line 1748 "runarray.in"
21112104 // triple maxbezier(triplearray2 *P, triple b);
21122105 void gen_runarray71(stack *Stack)
21132106 {
21142107 triple b=vm::pop<triple>(Stack);
21152108 triplearray2 * P=vm::pop<triplearray2 *>(Stack);
2116 #line 1756 "runarray.in"
2109 #line 1749 "runarray.in"
21172110 real *A=copyTripleArray2Components(P,true,4);
21182111 b=triple(bound(A,::max,b.getx(),sqrtFuzz*norm(A,16)),
21192112 bound(A+16,::max,b.gety(),sqrtFuzz*norm(A+16,16)),
21222115 {Stack->push<triple>(b); return;}
21232116 }
21242117
2125 #line 1765 "runarray.in"
2118 #line 1758 "runarray.in"
21262119 // pair minratio(triplearray2 *P, pair b);
21272120 void gen_runarray72(stack *Stack)
21282121 {
21292122 pair b=vm::pop<pair>(Stack);
21302123 triplearray2 * P=vm::pop<triplearray2 *>(Stack);
2131 #line 1766 "runarray.in"
2124 #line 1759 "runarray.in"
21322125 triple *A;
21332126 copyArray2C(A,P,true,4);
21342127 real fuzz=sqrtFuzz*norm(A,16);
21382131 {Stack->push<pair>(b); return;}
21392132 }
21402133
2141 #line 1776 "runarray.in"
2134 #line 1769 "runarray.in"
21422135 // pair maxratio(triplearray2 *P, pair b);
21432136 void gen_runarray73(stack *Stack)
21442137 {
21452138 pair b=vm::pop<pair>(Stack);
21462139 triplearray2 * P=vm::pop<triplearray2 *>(Stack);
2147 #line 1777 "runarray.in"
2140 #line 1770 "runarray.in"
21482141 triple *A;
21492142 copyArray2C(A,P,true,4);
21502143 real fuzz=sqrtFuzz*norm(A,16);
21542147 {Stack->push<pair>(b); return;}
21552148 }
21562149
2157 #line 1787 "runarray.in"
2150 #line 1780 "runarray.in"
21582151 // realarray* _projection();
21592152 void gen_runarray74(stack *Stack)
21602153 {
2161 #line 1788 "runarray.in"
2154 #line 1781 "runarray.in"
21622155 #ifdef HAVE_GL
21632156 array *a=new array(14);
21642157 gl::projection P=gl::camera();
21952188
21962189 void gen_runarray_venv(venv &ve)
21972190 {
2198 #line 424 "runarray.in"
2191 #line 497 "runarray.in"
21992192 REGISTER_BLTIN(run::emptyArray,"emptyArray");
2200 #line 430 "runarray.in"
2193 #line 503 "runarray.in"
22012194 REGISTER_BLTIN(run::newDeepArray,"newDeepArray");
2202 #line 452 "runarray.in"
2195 #line 525 "runarray.in"
22032196 REGISTER_BLTIN(run::newInitializedArray,"newInitializedArray");
2204 #line 467 "runarray.in"
2197 #line 540 "runarray.in"
22052198 REGISTER_BLTIN(run::newAppendedArray,"newAppendedArray");
2206 #line 483 "runarray.in"
2199 #line 556 "runarray.in"
22072200 REGISTER_BLTIN(run::copyArrayValue,"copyArrayValue");
2208 #line 495 "runarray.in"
2201 #line 568 "runarray.in"
22092202 REGISTER_BLTIN(run::copyArray,"copyArray");
2210 #line 506 "runarray.in"
2203 #line 579 "runarray.in"
22112204 REGISTER_BLTIN(run::arrayRead,"arrayRead");
2212 #line 518 "runarray.in"
2205 #line 591 "runarray.in"
22132206 REGISTER_BLTIN(run::arraySliceRead,"arraySliceRead");
2214 #line 525 "runarray.in"
2207 #line 598 "runarray.in"
22152208 REGISTER_BLTIN(run::arraySliceReadToEnd,"arraySliceReadToEnd");
2216 #line 533 "runarray.in"
2209 #line 606 "runarray.in"
22172210 REGISTER_BLTIN(run::arrayArrayRead,"arrayArrayRead");
2218 #line 542 "runarray.in"
2211 #line 615 "runarray.in"
22192212 REGISTER_BLTIN(run::arrayWrite,"arrayWrite");
2220 #line 559 "runarray.in"
2213 #line 632 "runarray.in"
22212214 REGISTER_BLTIN(run::arraySliceWrite,"arraySliceWrite");
2222 #line 567 "runarray.in"
2215 #line 640 "runarray.in"
22232216 REGISTER_BLTIN(run::arraySliceWriteToEnd,"arraySliceWriteToEnd");
2224 #line 575 "runarray.in"
2217 #line 648 "runarray.in"
22252218 REGISTER_BLTIN(run::arrayLength,"arrayLength");
2226 #line 581 "runarray.in"
2219 #line 654 "runarray.in"
22272220 REGISTER_BLTIN(run::arrayKeys,"arrayKeys");
2228 #line 596 "runarray.in"
2221 #line 669 "runarray.in"
22292222 REGISTER_BLTIN(run::arrayCyclicFlag,"arrayCyclicFlag");
2230 #line 603 "runarray.in"
2223 #line 676 "runarray.in"
22312224 REGISTER_BLTIN(run::arraySetCyclicFlag,"arraySetCyclicFlag");
2232 #line 610 "runarray.in"
2225 #line 683 "runarray.in"
22332226 REGISTER_BLTIN(run::arrayInitializedHelper,"arrayInitializedHelper");
2234 #line 621 "runarray.in"
2227 #line 694 "runarray.in"
22352228 REGISTER_BLTIN(run::arrayInitialized,"arrayInitialized");
2236 #line 627 "runarray.in"
2229 #line 700 "runarray.in"
22372230 REGISTER_BLTIN(run::arrayCyclicHelper,"arrayCyclicHelper");
2238 #line 634 "runarray.in"
2231 #line 707 "runarray.in"
22392232 REGISTER_BLTIN(run::arrayCyclic,"arrayCyclic");
2240 #line 640 "runarray.in"
2233 #line 713 "runarray.in"
22412234 REGISTER_BLTIN(run::arrayPushHelper,"arrayPushHelper");
2242 #line 648 "runarray.in"
2235 #line 721 "runarray.in"
22432236 REGISTER_BLTIN(run::arrayPush,"arrayPush");
2244 #line 654 "runarray.in"
2237 #line 727 "runarray.in"
22452238 REGISTER_BLTIN(run::arrayAppendHelper,"arrayAppendHelper");
2246 #line 663 "runarray.in"
2239 #line 736 "runarray.in"
22472240 REGISTER_BLTIN(run::arrayAppend,"arrayAppend");
2248 #line 669 "runarray.in"
2241 #line 742 "runarray.in"
22492242 REGISTER_BLTIN(run::arrayPopHelper,"arrayPopHelper");
2250 #line 678 "runarray.in"
2243 #line 751 "runarray.in"
22512244 REGISTER_BLTIN(run::arrayPop,"arrayPop");
2252 #line 684 "runarray.in"
2245 #line 757 "runarray.in"
22532246 REGISTER_BLTIN(run::arrayInsertHelper,"arrayInsertHelper");
2254 #line 695 "runarray.in"
2247 #line 768 "runarray.in"
22552248 REGISTER_BLTIN(run::arrayInsert,"arrayInsert");
2256 #line 701 "runarray.in"
2249 #line 774 "runarray.in"
22572250 REGISTER_BLTIN(run::arrayDelete,"arrayDelete");
2258 #line 707 "runarray.in"
2251 #line 780 "runarray.in"
22592252 REGISTER_BLTIN(run::arrayAlias,"arrayAlias");
2260 #line 712 "runarray.in"
2253 #line 785 "runarray.in"
22612254 REGISTER_BLTIN(run::arrayIntArray,"arrayIntArray");
2262 #line 730 "runarray.in"
2255 #line 803 "runarray.in"
22632256 addFunc(ve, run::gen_runarray32, IntArray(), SYM(complement), formal(IntArray(), SYM(a), false, false), formal(primInt(), SYM(n), false, false));
2264 #line 749 "runarray.in"
2257 #line 822 "runarray.in"
22652258 REGISTER_BLTIN(run::arraySequence,"arraySequence");
2266 #line 762 "runarray.in"
2259 #line 835 "runarray.in"
22672260 addFunc(ve, run::gen_runarray34, IntArray(), SYM(sequence), formal(primInt(), SYM(n), false, false));
2268 #line 773 "runarray.in"
2261 #line 846 "runarray.in"
22692262 REGISTER_BLTIN(run::arrayFunction,"arrayFunction");
2270 #line 786 "runarray.in"
2263 #line 859 "runarray.in"
22712264 REGISTER_BLTIN(run::arraySort,"arraySort");
2272 #line 795 "runarray.in"
2265 #line 868 "runarray.in"
22732266 REGISTER_BLTIN(run::arraySearch,"arraySearch");
2274 #line 814 "runarray.in"
2267 #line 887 "runarray.in"
22752268 addFunc(ve, run::gen_runarray38, primBoolean(), SYM(all), formal(booleanArray(), SYM(a), false, false));
2276 #line 823 "runarray.in"
2269 #line 896 "runarray.in"
22772270 addFunc(ve, run::gen_runarray39, booleanArray(), SYM_LOGNOT, formal(booleanArray(), SYM(a), false, false));
2278 #line 832 "runarray.in"
2271 #line 905 "runarray.in"
22792272 addFunc(ve, run::gen_runarray40, primInt(), SYM(sum), formal(booleanArray(), SYM(a), false, false));
2280 #line 841 "runarray.in"
2273 #line 914 "runarray.in"
22812274 REGISTER_BLTIN(run::arrayConcat,"arrayConcat");
2282 #line 869 "runarray.in"
2275 #line 942 "runarray.in"
22832276 REGISTER_BLTIN(run::array2Transpose,"array2Transpose");
2284 #line 893 "runarray.in"
2277 #line 966 "runarray.in"
22852278 REGISTER_BLTIN(run::array3Transpose,"array3Transpose");
2286 #line 980 "runarray.in"
2279 #line 1053 "runarray.in"
22872280 addFunc(ve, run::gen_runarray44, primInt(), SYM(find), formal(booleanArray(), SYM(a), false, false), formal(primInt(), SYM(n), true, false));
2288 #line 999 "runarray.in"
2281 #line 1072 "runarray.in"
22892282 REGISTER_BLTIN(run::arrayConditional,"arrayConditional");
2290 #line 1025 "runarray.in"
2283 #line 1098 "runarray.in"
22912284 addFunc(ve, run::gen_runarray46, realArray2(), SYM(identity), formal(primInt(), SYM(n), false, false));
2292 #line 1031 "runarray.in"
2285 #line 1104 "runarray.in"
22932286 addFunc(ve, run::gen_runarray47, realArray2(), SYM(inverse), formal(realArray2(), SYM(a), false, false));
2294 #line 1123 "runarray.in"
2287 #line 1116 "runarray.in"
22952288 addFunc(ve, run::gen_runarray48, realArray(), SYM(solve), formal(realArray2(), SYM(a), false, false), formal(realArray(), SYM(b), false, false), formal(primBoolean(), SYM(warn), true, false));
2296 #line 1176 "runarray.in"
2289 #line 1169 "runarray.in"
22972290 addFunc(ve, run::gen_runarray49, realArray2(), SYM(solve), formal(realArray2(), SYM(a), false, false), formal(realArray2(), SYM(b), false, false), formal(primBoolean(), SYM(warn), true, false));
2298 #line 1241 "runarray.in"
2291 #line 1234 "runarray.in"
22992292 addFunc(ve, run::gen_runarray50, primReal(), SYM(determinant), formal(realArray2(), SYM(a), false, false));
2300 #line 1258 "runarray.in"
2293 #line 1251 "runarray.in"
23012294 addFunc(ve, run::gen_runarray51, realArray(), SYM_TIMES, formal(realArray2(), SYM(a), false, false), formal(realArray(), SYM(b), false, false));
2302 #line 1277 "runarray.in"
2295 #line 1270 "runarray.in"
23032296 addFunc(ve, run::gen_runarray52, realArray(), SYM_TIMES, formal(realArray(), SYM(a), false, false), formal(realArray2(), SYM(b), false, false));
2304 #line 1306 "runarray.in"
2297 #line 1299 "runarray.in"
23052298 addFunc(ve, run::gen_runarray53, IntArray2(), SYM_TIMES, formal(IntArray2(), SYM(a), false, false), formal(IntArray2(), SYM(b), false, false));
2306 #line 1311 "runarray.in"
2299 #line 1304 "runarray.in"
23072300 addFunc(ve, run::gen_runarray54, realArray2(), SYM_TIMES, formal(realArray2(), SYM(a), false, false), formal(realArray2(), SYM(b), false, false));
2308 #line 1316 "runarray.in"
2301 #line 1309 "runarray.in"
23092302 addFunc(ve, run::gen_runarray55, pairArray2(), SYM_TIMES, formal(pairArray2(), SYM(a), false, false), formal(pairArray2(), SYM(b), false, false));
2310 #line 1321 "runarray.in"
2303 #line 1314 "runarray.in"
23112304 addFunc(ve, run::gen_runarray56, primTriple(), SYM_TIMES, formal(realArray2(), SYM(t), false, false), formal(primTriple(), SYM(v), false, false));
2312 #line 1326 "runarray.in"
2305 #line 1319 "runarray.in"
23132306 addFunc(ve, run::gen_runarray57, primPair(), SYM(project), formal(primTriple(), SYM(v), false, false), formal(realArray2(), SYM(t), false, false));
2314 #line 1351 "runarray.in"
2307 #line 1344 "runarray.in"
23152308 addFunc(ve, run::gen_runarray58, primReal(), SYM(dot), formal(realArray(), SYM(a), false, false), formal(realArray(), SYM(b), false, false));
2316 #line 1361 "runarray.in"
2309 #line 1354 "runarray.in"
23172310 addFunc(ve, run::gen_runarray59, primPair(), SYM(dot), formal(pairArray(), SYM(a), false, false), formal(pairArray(), SYM(b), false, false));
2318 #line 1371 "runarray.in"
2311 #line 1364 "runarray.in"
23192312 addFunc(ve, run::gen_runarray60, realArray(), SYM(tridiagonal), formal(realArray(), SYM(a), false, false), formal(realArray(), SYM(b), false, false), formal(realArray(), SYM(c), false, false), formal(realArray(), SYM(f), false, false));
2320 #line 1475 "runarray.in"
2313 #line 1468 "runarray.in"
23212314 addFunc(ve, run::gen_runarray61, primReal(), SYM(newton), formal(primInt(), SYM(iterations), true, false), formal(realRealFunction(), SYM(f), false, false), formal(realRealFunction(), SYM(fprime), false, false), formal(primReal(), SYM(x), false, false), formal(primBoolean(), SYM(verbose), true, false));
2322 #line 1522 "runarray.in"
2315 #line 1515 "runarray.in"
23232316 addFunc(ve, run::gen_runarray62, primReal(), SYM(newton), formal(primInt(), SYM(iterations), true, false), formal(realRealFunction(), SYM(f), false, false), formal(realRealFunction(), SYM(fprime), false, false), formal(primReal(), SYM(x1), false, false), formal(primReal(), SYM(x2), false, false), formal(primBoolean(), SYM(verbose), true, false));
2324 #line 1604 "runarray.in"
2317 #line 1597 "runarray.in"
23252318 addFunc(ve, run::gen_runarray63, primReal(), SYM(simpson), formal(realRealFunction(), SYM(f), false, false), formal(primReal(), SYM(a), false, false), formal(primReal(), SYM(b), false, false), formal(primReal(), SYM(acc), true, false), formal(primReal(), SYM(dxmax), true, false));
2326 #line 1616 "runarray.in"
2319 #line 1609 "runarray.in"
23272320 addFunc(ve, run::gen_runarray64, pairArray(), SYM(fft), formal(pairArray(), SYM(a), false, false), formal(primInt(), SYM(sign), true, false));
2328 #line 1647 "runarray.in"
2321 #line 1640 "runarray.in"
23292322 addFunc(ve, run::gen_runarray65, IntArray2(), SYM(triangulate), formal(pairArray(), SYM(z), false, false));
2330 #line 1682 "runarray.in"
2323 #line 1675 "runarray.in"
23312324 addFunc(ve, run::gen_runarray66, primReal(), SYM(norm), formal(realArray(), SYM(a), false, false));
2332 #line 1693 "runarray.in"
2325 #line 1686 "runarray.in"
23332326 addFunc(ve, run::gen_runarray67, primReal(), SYM(norm), formal(realArray2(), SYM(a), false, false));
2334 #line 1708 "runarray.in"
2327 #line 1701 "runarray.in"
23352328 addFunc(ve, run::gen_runarray68, primReal(), SYM(norm), formal(tripleArray2(), SYM(a), false, false));
2336 #line 1723 "runarray.in"
2329 #line 1716 "runarray.in"
23372330 addFunc(ve, run::gen_runarray69, primReal(), SYM(change2), formal(tripleArray2(), SYM(a), false, false));
2338 #line 1745 "runarray.in"
2331 #line 1738 "runarray.in"
23392332 addFunc(ve, run::gen_runarray70, primTriple(), SYM(minbezier), formal(tripleArray2(), SYM(p), false, false), formal(primTriple(), SYM(b), false, false));
2340 #line 1755 "runarray.in"
2333 #line 1748 "runarray.in"
23412334 addFunc(ve, run::gen_runarray71, primTriple(), SYM(maxbezier), formal(tripleArray2(), SYM(p), false, false), formal(primTriple(), SYM(b), false, false));
2342 #line 1765 "runarray.in"
2335 #line 1758 "runarray.in"
23432336 addFunc(ve, run::gen_runarray72, primPair(), SYM(minratio), formal(tripleArray2(), SYM(p), false, false), formal(primPair(), SYM(b), false, false));
2344 #line 1776 "runarray.in"
2337 #line 1769 "runarray.in"
23452338 addFunc(ve, run::gen_runarray73, primPair(), SYM(maxratio), formal(tripleArray2(), SYM(p), false, false), formal(primPair(), SYM(b), false, false));
2346 #line 1787 "runarray.in"
2339 #line 1780 "runarray.in"
23472340 addFunc(ve, run::gen_runarray74, realArray(), SYM(_projection));
23482341 }
23492342
110110 static const char *incommensurate="Incommensurate matrices";
111111 static const char *singular="Singular matrix";
112112 static size_t *pivot,*Row,*Col;
113
114 static inline void inverseAllocate(size_t n)
115 {
116 pivot=new size_t[n];
117 Row=new size_t[n];
118 Col=new size_t[n];
119 }
120
121 static inline void inverseDeallocate()
122 {
123 delete[] pivot;
124 delete[] Row;
125 delete[] Col;
126 }
113127
114128 namespace run {
115129
202216 read<real>(t2,3))*f);
203217 }
204218
205 triple multshiftless(const array& t, const triple& v)
206 {
207 size_t n=checkArray(&t);
208 if(n != 4) error(incommensurate);
209 array *t0=read<array*>(t,0);
210 array *t1=read<array*>(t,1);
211 array *t2=read<array*>(t,2);
212 array *t3=read<array*>(t,3);
213
214 if(checkArray(t0) != 4 || checkArray(t1) != 4 ||
215 checkArray(t2) != 4 || checkArray(t3) != 4)
216 error(incommensurate);
217
218 double x=v.getx();
219 double y=v.gety();
220 double z=v.getz();
221
222 double f=read<real>(t3,0)*x+read<real>(t3,1)*y+read<real>(t3,2)*z+
223 read<real>(t3,3);
224 if(f == 0.0) run::dividebyzero();
225 f=1.0/f;
226
227 return triple((read<real>(t0,0)*x+read<real>(t0,1)*y+read<real>(t0,2)*z)*f,
228 (read<real>(t1,0)*x+read<real>(t1,1)*y+read<real>(t1,2)*z)*f,
229 (read<real>(t2,0)*x+read<real>(t2,1)*y+read<real>(t2,2)*z)*f);
230 }
231
232219 template<class T>
233220 array *mult(array *a, array *b)
234221 {
284271 return sqrt(M);
285272 }
286273
287 }
288
289 static inline void inverseAllocate(size_t n)
290 {
291 pivot=new size_t[n];
292 Row=new size_t[n];
293 Col=new size_t[n];
294 }
295
296 static inline void inverseDeallocate()
297 {
298 delete[] pivot;
299 delete[] Row;
300 delete[] Col;
274 // Transpose an n x n matrix in place.
275 void transpose(double *a, size_t n)
276 {
277 for(size_t i=1; i < n; i++) {
278 for(size_t j=0; j < i; j++) {
279 size_t ij=n*i+j;
280 size_t ji=n*j+i;
281 double temp=a[ij];
282 a[ij]=a[ji];
283 a[ji]=temp;
284 }
285 }
286 }
287
288 // Invert an n x n array in place.
289 void inverse(double *a, size_t n)
290 {
291 inverseAllocate(n);
292
293 for(size_t i=0; i < n; i++)
294 pivot[i]=0;
295
296 size_t col=0, row=0;
297 // This is the main loop over the columns to be reduced.
298 for(size_t i=0; i < n; i++) {
299 real big=0.0;
300 // This is the outer loop of the search for a pivot element.
301 for(size_t j=0; j < n; j++) {
302 double *aj=a+n*j;
303 if(pivot[j] != 1) {
304 for(size_t k=0; k < n; k++) {
305 if(pivot[k] == 0) {
306 real temp=fabs(aj[k]);
307 if(temp >= big) {
308 big=temp;
309 row=j;
310 col=k;
311 }
312 } else if(pivot[k] > 1) {
313 inverseDeallocate();
314 error(singular);
315 }
316 }
317 }
318 }
319 ++(pivot[col]);
320
321 // Interchange rows, if needed, to put the pivot element on the diagonal.
322 double *acol=a+n*col;
323 if(row != col) {
324 double *arow=a+n*row;
325 for(size_t k=0; k < n; k++) {
326 real temp=arow[k];
327 arow[k]=acol[k];
328 acol[k]=temp;
329 }
330 }
331
332 Row[i]=row;
333 Col[i]=col;
334
335 // Divide the pivot row by the pivot element.
336 real denom=acol[col];
337 if(denom == 0.0) {
338 inverseDeallocate();
339 error(singular);
340 }
341 real pivinv=1.0/denom;
342 acol[col]=1.0;
343 for(size_t k=0; k < n; k++)
344 acol[k]=acol[k]*pivinv;
345
346 // Reduce all rows except for the pivoted one.
347 for(size_t k=0; k < n; k++) {
348 if(k != col) {
349 double *ak=a+n*k;
350 real akcol=ak[col];
351 ak[col]=0.0;
352 for(size_t j=0; j < n; j++)
353 ak[j] -= acol[j]*akcol;
354 }
355 }
356 }
357
358 // Unscramble the inverse matrix in view of the column interchanges.
359 for(size_t k=n; k > 0;) {
360 k--;
361 size_t r=Row[k];
362 size_t c=Col[k];
363 if(r != c) {
364 for(size_t j=0; j < n; j++) {
365 double *aj=a+n*j;
366 real temp=aj[r];
367 aj[r]=aj[c];
368 aj[c]=temp;
369 }
370 }
371 }
372 inverseDeallocate();
373 }
301374 }
302375
303376 callable *Func;
10301103 // Return the inverse of an n x n matrix a using Gauss-Jordan elimination.
10311104 realarray2 *inverse(realarray2 *a)
10321105 {
1033 a=copyArray2(a);
10341106 size_t n=checkArray(a);
1035 checkSquare(a);
1036
1037 inverseAllocate(n);
1038
1039 for(size_t i=0; i < n; i++)
1040 pivot[i]=0;
1041
1042 size_t col=0, row=0;
1043 // This is the main loop over the columns to be reduced.
1044 for(size_t i=0; i < n; i++) {
1045 real big=0.0;
1046 // This is the outer loop of the search for a pivot element.
1047 for(size_t j=0; j < n; j++) {
1048 array *aj=read<array*>(a,j);
1049 if(pivot[j] != 1) {
1050 for(size_t k=0; k < n; k++) {
1051 if(pivot[k] == 0) {
1052 real temp=fabs(read<real>(aj,k));
1053 if(temp >= big) {
1054 big=temp;
1055 row=j;
1056 col=k;
1057 }
1058 } else if(pivot[k] > 1) {
1059 inverseDeallocate();
1060 error(singular);
1061 }
1062 }
1063 }
1064 }
1065 ++(pivot[col]);
1066
1067 // Interchange rows, if needed, to put the pivot element on the diagonal.
1068 array *acol=read<array*>(a,col);
1069 if(row != col) {
1070 array *arow=read<array*>(a,row);
1071 for(size_t l=0; l < n; l++) {
1072 real temp=read<real>(arow,l);
1073 (*arow)[l]=read<real>(acol,l);
1074 (*acol)[l]=temp;
1075 }
1076 }
1077
1078 Row[i]=row;
1079 Col[i]=col;
1080
1081 // Divide the pivot row by the pivot element.
1082 real denom=read<real>(acol,col);
1083 if(denom == 0.0) {
1084 inverseDeallocate();
1085 error(singular);
1086 }
1087 real pivinv=1.0/denom;
1088 (*acol)[col]=1.0;
1089 for(size_t l=0; l < n; l++)
1090 (*acol)[l]=read<real>(acol,l)*pivinv;
1091
1092 // Reduce all rows except for the pivoted one.
1093 for(size_t k=0; k < n; k++) {
1094 if(k != col) {
1095 array *ak=read<array*>(a,k);
1096 real akcol=read<real>(ak,col);
1097 (*ak)[col]=0.0;
1098 for(size_t l=0; l < n; l++)
1099 (*ak)[l]=read<real>(ak,l)-read<real>(acol,l)*akcol;
1100 }
1101 }
1102 }
1103
1104 // Unscramble the inverse matrix in view of the column interchanges.
1105 for(size_t l=n; l > 0;) {
1106 l--;
1107 size_t r=Row[l];
1108 size_t c=Col[l];
1109 if(r != c) {
1110 for(size_t k=0; k < n; k++) {
1111 array *ak=read<array*>(a,k);
1112 real temp=read<real>(ak,r);
1113 (*ak)[r]=read<real>(ak,c);
1114 (*ak)[c]=temp;
1115 }
1116 }
1117 }
1118 inverseDeallocate();
1107 double *A;
1108 copyArray2C(A,a,true,0,NoGC);
1109 inverse(A,n);
1110 a=copyCArray2(n,n,A);
1111 delete A;
11191112 return a;
11201113 }
11211114
235235 }
236236
237237 #line 155 "runpicture.in"
238 // void axialshade(picture *f, patharray *g, bool stroke=false, pen pena, pair a, pen penb, pair b, bool copy=true);
238 // void axialshade(picture *f, patharray *g, bool stroke=false, pen pena, pair a, bool extenda=true, pen penb, pair b, bool extendb=true, bool copy=true);
239239 void gen_runpicture9(stack *Stack)
240240 {
241241 bool copy=vm::pop<bool>(Stack,true);
242 bool extendb=vm::pop<bool>(Stack,true);
242243 pair b=vm::pop<pair>(Stack);
243244 pen penb=vm::pop<pen>(Stack);
245 bool extenda=vm::pop<bool>(Stack,true);
244246 pair a=vm::pop<pair>(Stack);
245247 pen pena=vm::pop<pen>(Stack);
246248 bool stroke=vm::pop<bool>(Stack,false);
247249 patharray * g=vm::pop<patharray *>(Stack);
248250 picture * f=vm::pop<picture *>(Stack);
249 #line 157 "runpicture.in"
251 #line 158 "runpicture.in"
250252 array *(*copyarray)(array *a)=copy ? copyArray: nop;
251 f->append(new drawAxialShade(*copyarray(g),stroke,pena,a,penb,b));
252 }
253
254 #line 162 "runpicture.in"
255 // void radialshade(picture *f, patharray *g, bool stroke=false, pen pena, pair a, real ra, pen penb, pair b, real rb, bool copy=true);
253 f->append(new drawAxialShade(*copyarray(g),stroke,pena,a,extenda,penb,b,
254 extendb));
255 }
256
257 #line 164 "runpicture.in"
258 // void radialshade(picture *f, patharray *g, bool stroke=false, pen pena, pair a, real ra, bool extenda=true, pen penb, pair b, real rb, bool extendb=true, bool copy=true);
256259 void gen_runpicture10(stack *Stack)
257260 {
258261 bool copy=vm::pop<bool>(Stack,true);
262 bool extendb=vm::pop<bool>(Stack,true);
259263 real rb=vm::pop<real>(Stack);
260264 pair b=vm::pop<pair>(Stack);
261265 pen penb=vm::pop<pen>(Stack);
266 bool extenda=vm::pop<bool>(Stack,true);
262267 real ra=vm::pop<real>(Stack);
263268 pair a=vm::pop<pair>(Stack);
264269 pen pena=vm::pop<pen>(Stack);
265270 bool stroke=vm::pop<bool>(Stack,false);
266271 patharray * g=vm::pop<patharray *>(Stack);
267272 picture * f=vm::pop<picture *>(Stack);
268 #line 164 "runpicture.in"
273 #line 167 "runpicture.in"
269274 array *(*copyarray)(array *a)=copy ? copyArray: nop;
270 f->append(new drawRadialShade(*copyarray(g),stroke,pena,a,ra,penb,b,rb));
271 }
272
273 #line 169 "runpicture.in"
275 f->append(new drawRadialShade(*copyarray(g),stroke,pena,a,ra,extenda,
276 penb,b,rb,extendb));
277 }
278
279 #line 173 "runpicture.in"
274280 // void gouraudshade(picture *f, patharray *g, bool stroke=false, pen fillrule=CURRENTPEN, penarray *p, pairarray *z, Intarray *edges, bool copy=true);
275281 void gen_runpicture11(stack *Stack)
276282 {
282288 bool stroke=vm::pop<bool>(Stack,false);
283289 patharray * g=vm::pop<patharray *>(Stack);
284290 picture * f=vm::pop<picture *>(Stack);
285 #line 172 "runpicture.in"
291 #line 176 "runpicture.in"
286292 array *(*copyarray)(array *a)=copy ? copyArray: nop;
287293 checkArrays(p,z);
288294 checkArrays(z,edges);
290296 *copyarray(z),*copyarray(edges)));
291297 }
292298
293 #line 180 "runpicture.in"
299 #line 184 "runpicture.in"
294300 // void gouraudshade(picture *f, patharray *g, bool stroke=false, pen fillrule=CURRENTPEN, penarray *p, Intarray *edges, bool copy=true);
295301 void gen_runpicture12(stack *Stack)
296302 {
301307 bool stroke=vm::pop<bool>(Stack,false);
302308 patharray * g=vm::pop<patharray *>(Stack);
303309 picture * f=vm::pop<picture *>(Stack);
304 #line 183 "runpicture.in"
310 #line 187 "runpicture.in"
305311 array *(*copyarray)(array *a)=copy ? copyArray: nop;
306312 size_t n=checkArrays(p,edges);
307313 size_t m=checkArray(g);
322328 *z,*copyarray(edges)));
323329 }
324330
325 #line 204 "runpicture.in"
331 #line 208 "runpicture.in"
326332 // void tensorshade(picture *f, patharray *g, bool stroke=false, pen fillrule=CURRENTPEN, penarray2 *p, patharray *b=NULL, pairarray2 *z=emptyarray, bool copy=true);
327333 void gen_runpicture13(stack *Stack)
328334 {
334340 bool stroke=vm::pop<bool>(Stack,false);
335341 patharray * g=vm::pop<patharray *>(Stack);
336342 picture * f=vm::pop<picture *>(Stack);
337 #line 207 "runpicture.in"
343 #line 211 "runpicture.in"
338344 array *(*copyarray)(array *a)=copy ? copyArray: nop;
339345 array *(*copyarray2)(array *a)=copy ? copyArray2: nop;
340346 if(b == NULL) b=g;
346352 *copyarray(b),*copyarray2(z)));
347353 }
348354
349 #line 219 "runpicture.in"
355 #line 223 "runpicture.in"
350356 // void functionshade(picture *f, patharray *g, bool stroke=false, pen fillrule=CURRENTPEN, string shader=emptystring, bool copy=true);
351357 void gen_runpicture14(stack *Stack)
352358 {
356362 bool stroke=vm::pop<bool>(Stack,false);
357363 patharray * g=vm::pop<patharray *>(Stack);
358364 picture * f=vm::pop<picture *>(Stack);
359 #line 222 "runpicture.in"
365 #line 226 "runpicture.in"
360366 array *(*copyarray)(array *a)=copy ? copyArray: nop;
361367 f->append(new drawFunctionShade(*copyarray(g),stroke,fillrule,shader));
362368 }
363369
364370 // Clip a picture to a superpath using the given fill rule.
365371 // Subsequent additions to the picture will not be affected by the clipping.
366 #line 229 "runpicture.in"
372 #line 233 "runpicture.in"
367373 // void clip(picture *f, patharray *g, bool stroke=false, pen fillrule=CURRENTPEN, bool copy=true);
368374 void gen_runpicture15(stack *Stack)
369375 {
372378 bool stroke=vm::pop<bool>(Stack,false);
373379 patharray * g=vm::pop<patharray *>(Stack);
374380 picture * f=vm::pop<picture *>(Stack);
375 #line 231 "runpicture.in"
381 #line 235 "runpicture.in"
376382 array *(*copyarray)(array *a)=copy ? copyArray: nop;
377383 drawClipBegin *begin=new drawClipBegin(*copyarray(g),stroke,fillrule,true);
378384 f->enclose(begin,new drawClipEnd(true,begin));
379385 }
380386
381 #line 237 "runpicture.in"
387 #line 241 "runpicture.in"
382388 // void beginclip(picture *f, patharray *g, bool stroke=false, pen fillrule=CURRENTPEN, bool copy=true);
383389 void gen_runpicture16(stack *Stack)
384390 {
387393 bool stroke=vm::pop<bool>(Stack,false);
388394 patharray * g=vm::pop<patharray *>(Stack);
389395 picture * f=vm::pop<picture *>(Stack);
390 #line 239 "runpicture.in"
396 #line 243 "runpicture.in"
391397 array *(*copyarray)(array *a)=copy ? copyArray: nop;
392398 f->append(new drawClipBegin(*copyarray(g),stroke,fillrule,false));
393399 }
394400
395 #line 244 "runpicture.in"
401 #line 248 "runpicture.in"
396402 // void endclip(picture *f);
397403 void gen_runpicture17(stack *Stack)
398404 {
399405 picture * f=vm::pop<picture *>(Stack);
400 #line 245 "runpicture.in"
406 #line 249 "runpicture.in"
401407 f->append(new drawClipEnd(false));
402408 }
403409
404 #line 249 "runpicture.in"
410 #line 253 "runpicture.in"
405411 // void gsave(picture *f);
406412 void gen_runpicture18(stack *Stack)
407413 {
408414 picture * f=vm::pop<picture *>(Stack);
409 #line 250 "runpicture.in"
415 #line 254 "runpicture.in"
410416 f->append(new drawGsave());
411417 }
412418
413 #line 254 "runpicture.in"
419 #line 258 "runpicture.in"
414420 // void grestore(picture *f);
415421 void gen_runpicture19(stack *Stack)
416422 {
417423 picture * f=vm::pop<picture *>(Stack);
418 #line 255 "runpicture.in"
424 #line 259 "runpicture.in"
419425 f->append(new drawGrestore());
420426 }
421427
422 #line 259 "runpicture.in"
428 #line 263 "runpicture.in"
423429 // void begingroup(picture *f);
424430 void gen_runpicture20(stack *Stack)
425431 {
426432 picture * f=vm::pop<picture *>(Stack);
427 #line 260 "runpicture.in"
433 #line 264 "runpicture.in"
428434 f->append(new drawBegin());
429435 }
430436
431 #line 264 "runpicture.in"
437 #line 268 "runpicture.in"
432438 // void endgroup(picture *f);
433439 void gen_runpicture21(stack *Stack)
434440 {
435441 picture * f=vm::pop<picture *>(Stack);
436 #line 265 "runpicture.in"
442 #line 269 "runpicture.in"
437443 f->append(new drawEnd());
438444 }
439445
440 #line 269 "runpicture.in"
446 #line 273 "runpicture.in"
441447 // void _begingroup3(picture *f, string name, real compression, real granularity, bool closed, bool tessellate, bool dobreak, bool nobreak, triple center, Int interaction);
442448 void gen_runpicture22(stack *Stack)
443449 {
451457 real compression=vm::pop<real>(Stack);
452458 string name=vm::pop<string>(Stack);
453459 picture * f=vm::pop<picture *>(Stack);
454 #line 272 "runpicture.in"
460 #line 276 "runpicture.in"
455461 f->append(new drawBegin3(name,compression,granularity,
456462 closed,tessellate,dobreak,nobreak,
457463 center,(Interaction) intcast(interaction)));
458464 }
459465
460 #line 278 "runpicture.in"
466 #line 282 "runpicture.in"
461467 // void endgroup3(picture *f);
462468 void gen_runpicture23(stack *Stack)
463469 {
464470 picture * f=vm::pop<picture *>(Stack);
465 #line 279 "runpicture.in"
471 #line 283 "runpicture.in"
466472 f->append(new drawEnd3());
467473 }
468474
469 #line 283 "runpicture.in"
475 #line 287 "runpicture.in"
470476 // void add(picture *dest, picture *src);
471477 void gen_runpicture24(stack *Stack)
472478 {
473479 picture * src=vm::pop<picture *>(Stack);
474480 picture * dest=vm::pop<picture *>(Stack);
475 #line 284 "runpicture.in"
481 #line 288 "runpicture.in"
476482 dest->add(*src);
477483 }
478484
479 #line 288 "runpicture.in"
485 #line 292 "runpicture.in"
480486 // void prepend(picture *dest, picture *src);
481487 void gen_runpicture25(stack *Stack)
482488 {
483489 picture * src=vm::pop<picture *>(Stack);
484490 picture * dest=vm::pop<picture *>(Stack);
485 #line 289 "runpicture.in"
491 #line 293 "runpicture.in"
486492 dest->prepend(*src);
487493 }
488494
489 #line 293 "runpicture.in"
495 #line 297 "runpicture.in"
490496 // void postscript(picture *f, string s);
491497 void gen_runpicture26(stack *Stack)
492498 {
493499 string s=vm::pop<string>(Stack);
494500 picture * f=vm::pop<picture *>(Stack);
495 #line 294 "runpicture.in"
501 #line 298 "runpicture.in"
496502 f->append(new drawVerbatim(PostScript,s));
497503 }
498504
499 #line 298 "runpicture.in"
505 #line 302 "runpicture.in"
500506 // void tex(picture *f, string s);
501507 void gen_runpicture27(stack *Stack)
502508 {
503509 string s=vm::pop<string>(Stack);
504510 picture * f=vm::pop<picture *>(Stack);
505 #line 299 "runpicture.in"
511 #line 303 "runpicture.in"
506512 f->append(new drawVerbatim(TeX,s));
507513 }
508514
509 #line 303 "runpicture.in"
515 #line 307 "runpicture.in"
510516 // void postscript(picture *f, string s, pair min, pair max);
511517 void gen_runpicture28(stack *Stack)
512518 {
514520 pair min=vm::pop<pair>(Stack);
515521 string s=vm::pop<string>(Stack);
516522 picture * f=vm::pop<picture *>(Stack);
517 #line 304 "runpicture.in"
523 #line 308 "runpicture.in"
518524 f->append(new drawVerbatim(PostScript,s,min,max));
519525 }
520526
521 #line 308 "runpicture.in"
527 #line 312 "runpicture.in"
522528 // void tex(picture *f, string s, pair min, pair max);
523529 void gen_runpicture29(stack *Stack)
524530 {
526532 pair min=vm::pop<pair>(Stack);
527533 string s=vm::pop<string>(Stack);
528534 picture * f=vm::pop<picture *>(Stack);
529 #line 309 "runpicture.in"
535 #line 313 "runpicture.in"
530536 f->append(new drawVerbatim(TeX,s,min,max));
531537 }
532538
533 #line 313 "runpicture.in"
539 #line 317 "runpicture.in"
534540 // void texpreamble(string s);
535541 void gen_runpicture30(stack *Stack)
536542 {
537543 string s=vm::pop<string>(Stack);
538 #line 314 "runpicture.in"
544 #line 318 "runpicture.in"
539545 string t=s+"\n";
540546 processDataStruct &pd=processData();
541547 pd.TeXpipepreamble.push_back(t);
542548 pd.TeXpreamble.push_back(t);
543549 }
544550
545 #line 321 "runpicture.in"
551 #line 325 "runpicture.in"
546552 // void deletepreamble();
547553 void gen_runpicture31(stack *)
548554 {
549 #line 322 "runpicture.in"
555 #line 326 "runpicture.in"
550556 if(getSetting<bool>("inlinetex")) {
551557 unlink(buildname(outname(),"pre").c_str());
552558 }
553559 }
554560
555 #line 328 "runpicture.in"
561 #line 332 "runpicture.in"
556562 // void _labelpath(picture *f, string s, string size, path g, string justify, pair offset, pen p);
557563 void gen_runpicture32(stack *Stack)
558564 {
563569 string size=vm::pop<string>(Stack);
564570 string s=vm::pop<string>(Stack);
565571 picture * f=vm::pop<picture *>(Stack);
566 #line 330 "runpicture.in"
572 #line 334 "runpicture.in"
567573 f->append(new drawLabelPath(s,size,g,justify,offset,p));
568574 }
569575
570 #line 334 "runpicture.in"
576 #line 338 "runpicture.in"
571577 // void texreset();
572578 void gen_runpicture33(stack *)
573579 {
574 #line 335 "runpicture.in"
580 #line 339 "runpicture.in"
575581 processDataStruct &pd=processData();
576582 pd.TeXpipepreamble.clear();
577583 pd.TeXpreamble.clear();
578584 pd.tex.pipeclose();
579585 }
580586
581 #line 342 "runpicture.in"
587 #line 346 "runpicture.in"
582588 // void layer(picture *f);
583589 void gen_runpicture34(stack *Stack)
584590 {
585591 picture * f=vm::pop<picture *>(Stack);
586 #line 343 "runpicture.in"
592 #line 347 "runpicture.in"
587593 f->append(new drawLayer());
588594 }
589595
590 #line 347 "runpicture.in"
596 #line 351 "runpicture.in"
591597 // void newpage(picture *f);
592598 void gen_runpicture35(stack *Stack)
593599 {
594600 picture * f=vm::pop<picture *>(Stack);
595 #line 348 "runpicture.in"
601 #line 352 "runpicture.in"
596602 f->append(new drawNewPage());
597603 }
598604
599 #line 352 "runpicture.in"
605 #line 356 "runpicture.in"
600606 // void _image(picture *f, realarray2 *data, pair initial, pair final, penarray *palette=NULL, transform t=identity, bool copy=true, bool antialias=false);
601607 void gen_runpicture36(stack *Stack)
602608 {
608614 pair initial=vm::pop<pair>(Stack);
609615 realarray2 * data=vm::pop<realarray2 *>(Stack);
610616 picture * f=vm::pop<picture *>(Stack);
611 #line 355 "runpicture.in"
617 #line 359 "runpicture.in"
612618 array *(*copyarray)(array *a)=copy ? copyArray: nop;
613619 array *(*copyarray2)(array *a)=copy ? copyArray2: nop;
614620 f->append(new drawPaletteImage(*copyarray2(data),*copyarray(palette),
615621 t*matrix(initial,final),antialias));
616622 }
617623
618 #line 362 "runpicture.in"
624 #line 366 "runpicture.in"
619625 // void _image(picture *f, penarray2 *data, pair initial, pair final, transform t=identity, bool copy=true, bool antialias=false);
620626 void gen_runpicture37(stack *Stack)
621627 {
626632 pair initial=vm::pop<pair>(Stack);
627633 penarray2 * data=vm::pop<penarray2 *>(Stack);
628634 picture * f=vm::pop<picture *>(Stack);
629 #line 364 "runpicture.in"
635 #line 368 "runpicture.in"
630636 array *(*copyarray2)(array *a)=copy ? copyArray2: nop;
631637 f->append(new drawNoPaletteImage(*copyarray2(data),t*matrix(initial,final),
632638 antialias));
633639 }
634640
635 #line 370 "runpicture.in"
641 #line 374 "runpicture.in"
636642 // void _image(picture *f, callablePen *F, Int width, Int height, pair initial, pair final, transform t=identity, bool antialias=false);
637643 void gen_runpicture38(stack *Stack)
638644 {
644650 Int width=vm::pop<Int>(Stack);
645651 callablePen * F=vm::pop<callablePen *>(Stack);
646652 picture * f=vm::pop<picture *>(Stack);
647 #line 372 "runpicture.in"
653 #line 376 "runpicture.in"
648654 f->append(new drawFunctionImage(Stack,F,width,height,
649655 t*matrix(initial,final),antialias));
650656 }
651657
652 #line 377 "runpicture.in"
658 #line 381 "runpicture.in"
653659 // string nativeformat();
654660 void gen_runpicture39(stack *Stack)
655661 {
656 #line 378 "runpicture.in"
662 #line 382 "runpicture.in"
657663 {Stack->push<string>(nativeformat()); return;}
658664 }
659665
660 #line 382 "runpicture.in"
666 #line 386 "runpicture.in"
661667 // bool latex();
662668 void gen_runpicture40(stack *Stack)
663669 {
664 #line 383 "runpicture.in"
670 #line 387 "runpicture.in"
665671 {Stack->push<bool>(latex(getSetting<string>("tex"))); return;}
666672 }
667673
668 #line 387 "runpicture.in"
674 #line 391 "runpicture.in"
669675 // bool pdf();
670676 void gen_runpicture41(stack *Stack)
671677 {
672 #line 388 "runpicture.in"
678 #line 392 "runpicture.in"
673679 {Stack->push<bool>(pdf(getSetting<string>("tex"))); return;}
674680 }
675681
676 #line 392 "runpicture.in"
682 #line 396 "runpicture.in"
677683 // void shipout(string prefix=emptystring, picture *f, picture *preamble=NULL, string format=emptystring, bool wait=false, bool view=true, callableTransform *xform);
678684 void gen_runpicture42(stack *Stack)
679685 {
684690 picture * preamble=vm::pop<picture *>(Stack,NULL);
685691 picture * f=vm::pop<picture *>(Stack);
686692 string prefix=vm::pop<string>(Stack,emptystring);
687 #line 395 "runpicture.in"
693 #line 399 "runpicture.in"
688694 if(prefix.empty()) prefix=outname();
689695
690696 picture *result=new picture;
733739 result->shipout(preamble,prefix,format,0.0,wait,view);
734740 }
735741
736 #line 444 "runpicture.in"
742 #line 448 "runpicture.in"
737743 // void shipout3(string prefix, picture *f, string format=emptystring, real width, real height, real angle, real zoom, triple m, triple M, pair shift, realarray2 *t, realarray *background, triplearray *lights, realarray2 *diffuse, realarray2 *ambient, realarray2 *specular, bool viewportlighting, bool view=true);
738744 void gen_runpicture43(stack *Stack)
739745 {
755761 string format=vm::pop<string>(Stack,emptystring);
756762 picture * f=vm::pop<picture *>(Stack);
757763 string prefix=vm::pop<string>(Stack);
758 #line 450 "runpicture.in"
764 #line 454 "runpicture.in"
759765 size_t n=checkArrays(lights,diffuse);
760766 checkEqual(n,checkArray(ambient));
761767 checkEqual(n,checkArray(specular));
777783 delete[] T;
778784 }
779785
780 #line 472 "runpicture.in"
786 #line 476 "runpicture.in"
781787 // void shipout3(string prefix, picture *f);
782788 void gen_runpicture44(stack *Stack)
783789 {
784790 picture * f=vm::pop<picture *>(Stack);
785791 string prefix=vm::pop<string>(Stack);
786 #line 473 "runpicture.in"
792 #line 477 "runpicture.in"
787793 f->shipout3(prefix);
788794 }
789795
790 #line 477 "runpicture.in"
796 #line 481 "runpicture.in"
791797 // void deconstruct(picture *f, picture *preamble=NULL, real magnification=1, callableTransform *xform);
792798 void gen_runpicture45(stack *Stack)
793799 {
795801 real magnification=vm::pop<real>(Stack,1);
796802 picture * preamble=vm::pop<picture *>(Stack,NULL);
797803 picture * f=vm::pop<picture *>(Stack);
798 #line 479 "runpicture.in"
804 #line 483 "runpicture.in"
799805 unsigned level=0;
800806 unsigned n=0;
801807
927933 // Three-dimensional picture and surface operations
928934
929935 // Bezier curve
930 #line 611 "runpicture.in"
936 #line 615 "runpicture.in"
931937 // void _draw(picture *f, path3 g, triple center=Zero, pen p, Int interaction=0);
932938 void gen_runpicture46(stack *Stack)
933939 {
936942 triple center=vm::pop<triple>(Stack,Zero);
937943 path3 g=vm::pop<path3>(Stack);
938944 picture * f=vm::pop<picture *>(Stack);
939 #line 612 "runpicture.in"
945 #line 616 "runpicture.in"
940946 if(g.size() > 0)
941947 f->append(new drawPath3(g,center,p,(Interaction) intcast(interaction)));
942948 }
943949
944950 // Bezier patch
945 #line 618 "runpicture.in"
951 #line 622 "runpicture.in"
946952 // void draw(picture *f, triplearray2 *P, triple center, bool straight, penarray *p, real opacity, real shininess, real PRCshininess, triple normal, penarray *colors, Int interaction, bool prc=true);
947953 void gen_runpicture47(stack *Stack)
948954 {
958964 triple center=vm::pop<triple>(Stack);
959965 triplearray2 * P=vm::pop<triplearray2 *>(Stack);
960966 picture * f=vm::pop<picture *>(Stack);
961 #line 621 "runpicture.in"
967 #line 625 "runpicture.in"
962968 f->append(new drawSurface(*P,center,straight,*p,opacity,shininess,
963969 PRCshininess,normal,*colors,
964970 (Interaction) intcast(interaction),prc));
965971 }
966972
967973 // General NURBS curve
968 #line 628 "runpicture.in"
974 #line 632 "runpicture.in"
969975 // void draw(picture *f, triplearray *P, realarray *knot, realarray *weights=emptyarray, pen p);
970976 void gen_runpicture48(stack *Stack)
971977 {
974980 realarray * knot=vm::pop<realarray *>(Stack);
975981 triplearray * P=vm::pop<triplearray *>(Stack);
976982 picture * f=vm::pop<picture *>(Stack);
977 #line 630 "runpicture.in"
983 #line 634 "runpicture.in"
978984 f->append(new drawNurbsPath3(*P,knot,weights,p));
979985 }
980986
981987 // General NURBS surface
982 #line 635 "runpicture.in"
988 #line 639 "runpicture.in"
983989 // void draw(picture *f, triplearray2 *P, realarray *uknot, realarray *vknot, realarray2 *weights=emptyarray, penarray *p, real opacity, real shininess, real PRCshininess, penarray *colors);
984990 void gen_runpicture49(stack *Stack)
985991 {
993999 realarray * uknot=vm::pop<realarray *>(Stack);
9941000 triplearray2 * P=vm::pop<triplearray2 *>(Stack);
9951001 picture * f=vm::pop<picture *>(Stack);
996 #line 638 "runpicture.in"
1002 #line 642 "runpicture.in"
9971003 f->append(new drawNurbs(*P,uknot,vknot,weights,*p,opacity,shininess,
9981004 PRCshininess,*colors));
9991005 }
10001006
10011007 // PRC unit sphere
1002 #line 644 "runpicture.in"
1008 #line 648 "runpicture.in"
10031009 // void drawPRCsphere(picture *f, realarray2 *t, bool half=false, penarray *p, real opacity, real shininess, Int type);
10041010 void gen_runpicture50(stack *Stack)
10051011 {
10101016 bool half=vm::pop<bool>(Stack,false);
10111017 realarray2 * t=vm::pop<realarray2 *>(Stack);
10121018 picture * f=vm::pop<picture *>(Stack);
1013 #line 646 "runpicture.in"
1019 #line 650 "runpicture.in"
10141020 f->append(new drawSphere(*t,half,*p,opacity,shininess,intcast(type)));
10151021 }
10161022
10171023 // PRC unit cylinder
1018 #line 651 "runpicture.in"
1024 #line 655 "runpicture.in"
10191025 // void drawPRCcylinder(picture *f, realarray2 *t, penarray *p, real opacity, real shininess);
10201026 void gen_runpicture51(stack *Stack)
10211027 {
10241030 penarray * p=vm::pop<penarray *>(Stack);
10251031 realarray2 * t=vm::pop<realarray2 *>(Stack);
10261032 picture * f=vm::pop<picture *>(Stack);
1027 #line 653 "runpicture.in"
1033 #line 657 "runpicture.in"
10281034 f->append(new drawCylinder(*t,*p,opacity,shininess));
10291035 }
10301036
10311037 // PRC unit disk
1032 #line 658 "runpicture.in"
1038 #line 662 "runpicture.in"
10331039 // void drawPRCdisk(picture *f, realarray2 *t, penarray *p, real opacity, real shininess);
10341040 void gen_runpicture52(stack *Stack)
10351041 {
10381044 penarray * p=vm::pop<penarray *>(Stack);
10391045 realarray2 * t=vm::pop<realarray2 *>(Stack);
10401046 picture * f=vm::pop<picture *>(Stack);
1041 #line 660 "runpicture.in"
1047 #line 664 "runpicture.in"
10421048 f->append(new drawDisk(*t,*p,opacity,shininess));
10431049 }
10441050
10451051 // General PRC tube
1046 #line 665 "runpicture.in"
1052 #line 669 "runpicture.in"
10471053 // void drawPRCtube(picture *f, path3 center, path3 g, penarray *p, real opacity, real shininess);
10481054 void gen_runpicture53(stack *Stack)
10491055 {
10531059 path3 g=vm::pop<path3>(Stack);
10541060 path3 center=vm::pop<path3>(Stack);
10551061 picture * f=vm::pop<picture *>(Stack);
1056 #line 667 "runpicture.in"
1062 #line 671 "runpicture.in"
10571063 f->append(new drawTube(center,g,*p,opacity,shininess));
10581064 }
10591065
10601066 // Draw pixel
1061 #line 672 "runpicture.in"
1067 #line 676 "runpicture.in"
10621068 // void drawpixel(picture *f, triple v, pen p, real width=1.0);
10631069 void gen_runpicture54(stack *Stack)
10641070 {
10661072 pen p=vm::pop<pen>(Stack);
10671073 triple v=vm::pop<triple>(Stack);
10681074 picture * f=vm::pop<picture *>(Stack);
1069 #line 673 "runpicture.in"
1075 #line 677 "runpicture.in"
10701076 f->append(new drawPixel(v,p,width));
10711077 }
10721078
10731079 // Draw triangles
1074 #line 678 "runpicture.in"
1080 #line 682 "runpicture.in"
10751081 // void draw(picture *f, triplearray *v, Intarray2 *vi, triplearray *n, Intarray2 *ni, penarray *p, real opacity, real shininess, real PRCshininess, penarray *c=emptyarray, Intarray2 *ci=emptyarray);
10761082 void gen_runpicture55(stack *Stack)
10771083 {
10861092 Intarray2 * vi=vm::pop<Intarray2 *>(Stack);
10871093 triplearray * v=vm::pop<triplearray *>(Stack);
10881094 picture * f=vm::pop<picture *>(Stack);
1089 #line 682 "runpicture.in"
1095 #line 686 "runpicture.in"
10901096 f->append(new drawTriangles(*v,*vi,*n,*ni,*p,opacity,shininess,PRCshininess,
10911097 *c,*ci));
10921098 }
10931099
1094 #line 687 "runpicture.in"
1100 #line 691 "runpicture.in"
10951101 // triple min3(picture *f);
10961102 void gen_runpicture56(stack *Stack)
10971103 {
10981104 picture * f=vm::pop<picture *>(Stack);
1099 #line 688 "runpicture.in"
1105 #line 692 "runpicture.in"
11001106 {Stack->push<triple>(f->bounds3().Min()); return;}
11011107 }
11021108
1103 #line 692 "runpicture.in"
1109 #line 696 "runpicture.in"
11041110 // triple max3(picture *f);
11051111 void gen_runpicture57(stack *Stack)
11061112 {
11071113 picture * f=vm::pop<picture *>(Stack);
1108 #line 693 "runpicture.in"
1114 #line 697 "runpicture.in"
11091115 {Stack->push<triple>(f->bounds3().Max()); return;}
11101116 }
11111117
1112 #line 697 "runpicture.in"
1118 #line 701 "runpicture.in"
11131119 // triple size3(picture *f);
11141120 void gen_runpicture58(stack *Stack)
11151121 {
11161122 picture * f=vm::pop<picture *>(Stack);
1117 #line 698 "runpicture.in"
1123 #line 702 "runpicture.in"
11181124 bbox3 b=f->bounds3();
11191125 {Stack->push<triple>(b.Max()-b.Min()); return;}
11201126 }
11211127
1122 #line 703 "runpicture.in"
1128 #line 707 "runpicture.in"
11231129 // pair minratio(picture *f);
11241130 void gen_runpicture59(stack *Stack)
11251131 {
11261132 picture * f=vm::pop<picture *>(Stack);
1127 #line 704 "runpicture.in"
1133 #line 708 "runpicture.in"
11281134 {Stack->push<pair>(f->ratio(::min)); return;}
11291135 }
11301136
1131 #line 708 "runpicture.in"
1137 #line 712 "runpicture.in"
11321138 // pair maxratio(picture *f);
11331139 void gen_runpicture60(stack *Stack)
11341140 {
11351141 picture * f=vm::pop<picture *>(Stack);
1136 #line 709 "runpicture.in"
1142 #line 713 "runpicture.in"
11371143 {Stack->push<pair>(f->ratio(::max)); return;}
11381144 }
11391145
1140 #line 713 "runpicture.in"
1146 #line 717 "runpicture.in"
11411147 // bool is3D(picture *f);
11421148 void gen_runpicture61(stack *Stack)
11431149 {
11441150 picture * f=vm::pop<picture *>(Stack);
1145 #line 714 "runpicture.in"
1151 #line 718 "runpicture.in"
11461152 {Stack->push<bool>(f->have3D()); return;}
11471153 }
11481154
11711177 #line 146 "runpicture.in"
11721178 addFunc(ve, run::gen_runpicture8, primVoid(), SYM(latticeshade), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(fillrule), true, false), formal(penArray2() , SYM(p), false, false), formal(primTransform(), SYM(t), true, false), formal(primBoolean(), SYM(copy), true, false));
11731179 #line 155 "runpicture.in"
1174 addFunc(ve, run::gen_runpicture9, primVoid(), SYM(axialshade), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(pena), false, false), formal(primPair(), SYM(a), false, false), formal(primPen(), SYM(penb), false, false), formal(primPair(), SYM(b), false, false), formal(primBoolean(), SYM(copy), true, false));
1175 #line 162 "runpicture.in"
1176 addFunc(ve, run::gen_runpicture10, primVoid(), SYM(radialshade), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(pena), false, false), formal(primPair(), SYM(a), false, false), formal(primReal(), SYM(ra), false, false), formal(primPen(), SYM(penb), false, false), formal(primPair(), SYM(b), false, false), formal(primReal(), SYM(rb), false, false), formal(primBoolean(), SYM(copy), true, false));
1177 #line 169 "runpicture.in"
1180 addFunc(ve, run::gen_runpicture9, primVoid(), SYM(axialshade), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(pena), false, false), formal(primPair(), SYM(a), false, false), formal(primBoolean(), SYM(extenda), true, false), formal(primPen(), SYM(penb), false, false), formal(primPair(), SYM(b), false, false), formal(primBoolean(), SYM(extendb), true, false), formal(primBoolean(), SYM(copy), true, false));
1181 #line 164 "runpicture.in"
1182 addFunc(ve, run::gen_runpicture10, primVoid(), SYM(radialshade), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(pena), false, false), formal(primPair(), SYM(a), false, false), formal(primReal(), SYM(ra), false, false), formal(primBoolean(), SYM(extenda), true, false), formal(primPen(), SYM(penb), false, false), formal(primPair(), SYM(b), false, false), formal(primReal(), SYM(rb), false, false), formal(primBoolean(), SYM(extendb), true, false), formal(primBoolean(), SYM(copy), true, false));
1183 #line 173 "runpicture.in"
11781184 addFunc(ve, run::gen_runpicture11, primVoid(), SYM(gouraudshade), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(fillrule), true, false), formal(penArray() , SYM(p), false, false), formal(pairArray(), SYM(z), false, false), formal(IntArray(), SYM(edges), false, false), formal(primBoolean(), SYM(copy), true, false));
1179 #line 180 "runpicture.in"
1185 #line 184 "runpicture.in"
11801186 addFunc(ve, run::gen_runpicture12, primVoid(), SYM(gouraudshade), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(fillrule), true, false), formal(penArray() , SYM(p), false, false), formal(IntArray(), SYM(edges), false, false), formal(primBoolean(), SYM(copy), true, false));
1181 #line 204 "runpicture.in"
1187 #line 208 "runpicture.in"
11821188 addFunc(ve, run::gen_runpicture13, primVoid(), SYM(tensorshade), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(fillrule), true, false), formal(penArray2() , SYM(p), false, false), formal(pathArray() , SYM(b), true, false), formal(pairArray2(), SYM(z), true, false), formal(primBoolean(), SYM(copy), true, false));
1183 #line 219 "runpicture.in"
1189 #line 223 "runpicture.in"
11841190 addFunc(ve, run::gen_runpicture14, primVoid(), SYM(functionshade), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(fillrule), true, false), formal(primString() , SYM(shader), true, false), formal(primBoolean(), SYM(copy), true, false));
1185 #line 227 "runpicture.in"
1191 #line 231 "runpicture.in"
11861192 addFunc(ve, run::gen_runpicture15, primVoid(), SYM(clip), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(fillrule), true, false), formal(primBoolean(), SYM(copy), true, false));
1187 #line 237 "runpicture.in"
1193 #line 241 "runpicture.in"
11881194 addFunc(ve, run::gen_runpicture16, primVoid(), SYM(beginclip), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(fillrule), true, false), formal(primBoolean(), SYM(copy), true, false));
1189 #line 244 "runpicture.in"
1195 #line 248 "runpicture.in"
11901196 addFunc(ve, run::gen_runpicture17, primVoid(), SYM(endclip), formal(primPicture(), SYM(f), false, false));
1191 #line 249 "runpicture.in"
1197 #line 253 "runpicture.in"
11921198 addFunc(ve, run::gen_runpicture18, primVoid(), SYM(gsave), formal(primPicture(), SYM(f), false, false));
1193 #line 254 "runpicture.in"
1199 #line 258 "runpicture.in"
11941200 addFunc(ve, run::gen_runpicture19, primVoid(), SYM(grestore), formal(primPicture(), SYM(f), false, false));
1195 #line 259 "runpicture.in"
1201 #line 263 "runpicture.in"
11961202 addFunc(ve, run::gen_runpicture20, primVoid(), SYM(begingroup), formal(primPicture(), SYM(f), false, false));
1197 #line 264 "runpicture.in"
1203 #line 268 "runpicture.in"
11981204 addFunc(ve, run::gen_runpicture21, primVoid(), SYM(endgroup), formal(primPicture(), SYM(f), false, false));
1199 #line 269 "runpicture.in"
1205 #line 273 "runpicture.in"
12001206 addFunc(ve, run::gen_runpicture22, primVoid(), SYM(_begingroup3), formal(primPicture(), SYM(f), false, false), formal(primString() , SYM(name), false, false), formal(primReal(), SYM(compression), false, false), formal(primReal(), SYM(granularity), false, false), formal(primBoolean(), SYM(closed), false, false), formal(primBoolean(), SYM(tessellate), false, false), formal(primBoolean(), SYM(dobreak), false, false), formal(primBoolean(), SYM(nobreak), false, false), formal(primTriple(), SYM(center), false, false), formal(primInt(), SYM(interaction), false, false));
1201 #line 278 "runpicture.in"
1207 #line 282 "runpicture.in"
12021208 addFunc(ve, run::gen_runpicture23, primVoid(), SYM(endgroup3), formal(primPicture(), SYM(f), false, false));
1203 #line 283 "runpicture.in"
1209 #line 287 "runpicture.in"
12041210 addFunc(ve, run::gen_runpicture24, primVoid(), SYM(add), formal(primPicture(), SYM(dest), false, false), formal(primPicture(), SYM(src), false, false));
1205 #line 288 "runpicture.in"
1211 #line 292 "runpicture.in"
12061212 addFunc(ve, run::gen_runpicture25, primVoid(), SYM(prepend), formal(primPicture(), SYM(dest), false, false), formal(primPicture(), SYM(src), false, false));
1207 #line 293 "runpicture.in"
1213 #line 297 "runpicture.in"
12081214 addFunc(ve, run::gen_runpicture26, primVoid(), SYM(postscript), formal(primPicture(), SYM(f), false, false), formal(primString() , SYM(s), false, false));
1209 #line 298 "runpicture.in"
1215 #line 302 "runpicture.in"
12101216 addFunc(ve, run::gen_runpicture27, primVoid(), SYM(tex), formal(primPicture(), SYM(f), false, false), formal(primString() , SYM(s), false, false));
1211 #line 303 "runpicture.in"
1217 #line 307 "runpicture.in"
12121218 addFunc(ve, run::gen_runpicture28, primVoid(), SYM(postscript), formal(primPicture(), SYM(f), false, false), formal(primString() , SYM(s), false, false), formal(primPair(), SYM(min), false, false), formal(primPair(), SYM(max), false, false));
1213 #line 308 "runpicture.in"
1219 #line 312 "runpicture.in"
12141220 addFunc(ve, run::gen_runpicture29, primVoid(), SYM(tex), formal(primPicture(), SYM(f), false, false), formal(primString() , SYM(s), false, false), formal(primPair(), SYM(min), false, false), formal(primPair(), SYM(max), false, false));
1215 #line 313 "runpicture.in"
1221 #line 317 "runpicture.in"
12161222 addFunc(ve, run::gen_runpicture30, primVoid(), SYM(texpreamble), formal(primString() , SYM(s), false, false));
1217 #line 321 "runpicture.in"
1223 #line 325 "runpicture.in"
12181224 addFunc(ve, run::gen_runpicture31, primVoid(), SYM(deletepreamble));
1219 #line 328 "runpicture.in"
1225 #line 332 "runpicture.in"
12201226 addFunc(ve, run::gen_runpicture32, primVoid(), SYM(_labelpath), formal(primPicture(), SYM(f), false, false), formal(primString() , SYM(s), false, false), formal(primString() , SYM(size), false, false), formal(primPath(), SYM(g), false, false), formal(primString() , SYM(justify), false, false), formal(primPair(), SYM(offset), false, false), formal(primPen(), SYM(p), false, false));
1221 #line 334 "runpicture.in"
1227 #line 338 "runpicture.in"
12221228 addFunc(ve, run::gen_runpicture33, primVoid(), SYM(texreset));
1223 #line 342 "runpicture.in"
1229 #line 346 "runpicture.in"
12241230 addFunc(ve, run::gen_runpicture34, primVoid(), SYM(layer), formal(primPicture(), SYM(f), false, false));
1225 #line 347 "runpicture.in"
1231 #line 351 "runpicture.in"
12261232 addFunc(ve, run::gen_runpicture35, primVoid(), SYM(newpage), formal(primPicture(), SYM(f), false, false));
1227 #line 352 "runpicture.in"
1233 #line 356 "runpicture.in"
12281234 addFunc(ve, run::gen_runpicture36, primVoid(), SYM(_image), formal(primPicture(), SYM(f), false, false), formal(realArray2(), SYM(data), false, false), formal(primPair(), SYM(initial), false, false), formal(primPair(), SYM(final), false, false), formal(penArray() , SYM(palette), true, false), formal(primTransform(), SYM(t), true, false), formal(primBoolean(), SYM(copy), true, false), formal(primBoolean(), SYM(antialias), true, false));
1229 #line 362 "runpicture.in"
1235 #line 366 "runpicture.in"
12301236 addFunc(ve, run::gen_runpicture37, primVoid(), SYM(_image), formal(primPicture(), SYM(f), false, false), formal(penArray2() , SYM(data), false, false), formal(primPair(), SYM(initial), false, false), formal(primPair(), SYM(final), false, false), formal(primTransform(), SYM(t), true, false), formal(primBoolean(), SYM(copy), true, false), formal(primBoolean(), SYM(antialias), true, false));
1231 #line 370 "runpicture.in"
1237 #line 374 "runpicture.in"
12321238 addFunc(ve, run::gen_runpicture38, primVoid(), SYM(_image), formal(primPicture(), SYM(f), false, false), formal(penFunction(), SYM(f), false, false), formal(primInt(), SYM(width), false, false), formal(primInt(), SYM(height), false, false), formal(primPair(), SYM(initial), false, false), formal(primPair(), SYM(final), false, false), formal(primTransform(), SYM(t), true, false), formal(primBoolean(), SYM(antialias), true, false));
1233 #line 377 "runpicture.in"
1239 #line 381 "runpicture.in"
12341240 addFunc(ve, run::gen_runpicture39, primString() , SYM(nativeformat));
1235 #line 382 "runpicture.in"
1241 #line 386 "runpicture.in"
12361242 addFunc(ve, run::gen_runpicture40, primBoolean(), SYM(latex));
1237 #line 387 "runpicture.in"
1243 #line 391 "runpicture.in"
12381244 addFunc(ve, run::gen_runpicture41, primBoolean(), SYM(pdf));
1239 #line 392 "runpicture.in"
1245 #line 396 "runpicture.in"
12401246 addFunc(ve, run::gen_runpicture42, primVoid(), SYM(shipout), formal(primString() , SYM(prefix), true, false), formal(primPicture(), SYM(f), false, false), formal(primPicture(), SYM(preamble), true, false), formal(primString() , SYM(format), true, false), formal(primBoolean(), SYM(wait), true, false), formal(primBoolean(), SYM(view), true, false), formal(transformFunction(), SYM(xform), false, false));
1241 #line 444 "runpicture.in"
1247 #line 448 "runpicture.in"
12421248 addFunc(ve, run::gen_runpicture43, primVoid(), SYM(shipout3), formal(primString() , SYM(prefix), false, false), formal(primPicture(), SYM(f), false, false), formal(primString() , SYM(format), true, false), formal(primReal(), SYM(width), false, false), formal(primReal(), SYM(height), false, false), formal(primReal(), SYM(angle), false, false), formal(primReal(), SYM(zoom), false, false), formal(primTriple(), SYM(m), false, false), formal(primTriple(), SYM(m), false, false), formal(primPair(), SYM(shift), false, false), formal(realArray2(), SYM(t), false, false), formal(realArray(), SYM(background), false, false), formal(tripleArray(), SYM(lights), false, false), formal(realArray2(), SYM(diffuse), false, false), formal(realArray2(), SYM(ambient), false, false), formal(realArray2(), SYM(specular), false, false), formal(primBoolean(), SYM(viewportlighting), false, false), formal(primBoolean(), SYM(view), true, false));
1243 #line 472 "runpicture.in"
1249 #line 476 "runpicture.in"
12441250 addFunc(ve, run::gen_runpicture44, primVoid(), SYM(shipout3), formal(primString() , SYM(prefix), false, false), formal(primPicture(), SYM(f), false, false));
1245 #line 477 "runpicture.in"
1251 #line 481 "runpicture.in"
12461252 addFunc(ve, run::gen_runpicture45, primVoid(), SYM(deconstruct), formal(primPicture(), SYM(f), false, false), formal(primPicture(), SYM(preamble), true, false), formal(primReal(), SYM(magnification), true, false), formal(transformFunction(), SYM(xform), false, false));
1247 #line 607 "runpicture.in"
1253 #line 611 "runpicture.in"
12481254 addFunc(ve, run::gen_runpicture46, primVoid(), SYM(_draw), formal(primPicture(), SYM(f), false, false), formal(primPath3(), SYM(g), false, false), formal(primTriple(), SYM(center), true, false), formal(primPen(), SYM(p), false, false), formal(primInt(), SYM(interaction), true, false));
1249 #line 617 "runpicture.in"
1255 #line 621 "runpicture.in"
12501256 addFunc(ve, run::gen_runpicture47, primVoid(), SYM(draw), formal(primPicture(), SYM(f), false, false), formal(tripleArray2(), SYM(p), false, false), formal(primTriple(), SYM(center), false, false), formal(primBoolean(), SYM(straight), false, false), formal(penArray() , SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(prcshininess), false, false), formal(primTriple(), SYM(normal), false, false), formal(penArray() , SYM(colors), false, false), formal(primInt(), SYM(interaction), false, false), formal(primBoolean(), SYM(prc), true, false));
1251 #line 627 "runpicture.in"
1257 #line 631 "runpicture.in"
12521258 addFunc(ve, run::gen_runpicture48, primVoid(), SYM(draw), formal(primPicture(), SYM(f), false, false), formal(tripleArray(), SYM(p), false, false), formal(realArray(), SYM(knot), false, false), formal(realArray(), SYM(weights), true, false), formal(primPen(), SYM(p), false, false));
1253 #line 634 "runpicture.in"
1259 #line 638 "runpicture.in"
12541260 addFunc(ve, run::gen_runpicture49, primVoid(), SYM(draw), formal(primPicture(), SYM(f), false, false), formal(tripleArray2(), SYM(p), false, false), formal(realArray(), SYM(uknot), false, false), formal(realArray(), SYM(vknot), false, false), formal(realArray2(), SYM(weights), true, false), formal(penArray() , SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(prcshininess), false, false), formal(penArray() , SYM(colors), false, false));
1255 #line 643 "runpicture.in"
1261 #line 647 "runpicture.in"
12561262 addFunc(ve, run::gen_runpicture50, primVoid(), SYM(drawPRCsphere), formal(primPicture(), SYM(f), false, false), formal(realArray2(), SYM(t), false, false), formal(primBoolean(), SYM(half), true, false), formal(penArray() , SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primInt(), SYM(type), false, false));
1257 #line 650 "runpicture.in"
1263 #line 654 "runpicture.in"
12581264 addFunc(ve, run::gen_runpicture51, primVoid(), SYM(drawPRCcylinder), formal(primPicture(), SYM(f), false, false), formal(realArray2(), SYM(t), false, false), formal(penArray() , SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false));
1259 #line 657 "runpicture.in"
1265 #line 661 "runpicture.in"
12601266 addFunc(ve, run::gen_runpicture52, primVoid(), SYM(drawPRCdisk), formal(primPicture(), SYM(f), false, false), formal(realArray2(), SYM(t), false, false), formal(penArray() , SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false));
1261 #line 664 "runpicture.in"
1267 #line 668 "runpicture.in"
12621268 addFunc(ve, run::gen_runpicture53, primVoid(), SYM(drawPRCtube), formal(primPicture(), SYM(f), false, false), formal(primPath3(), SYM(center), false, false), formal(primPath3(), SYM(g), false, false), formal(penArray() , SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false));
1263 #line 671 "runpicture.in"
1269 #line 675 "runpicture.in"
12641270 addFunc(ve, run::gen_runpicture54, primVoid(), SYM(drawpixel), formal(primPicture(), SYM(f), false, false), formal(primTriple(), SYM(v), false, false), formal(primPen(), SYM(p), false, false), formal(primReal(), SYM(width), true, false));
1265 #line 677 "runpicture.in"
1271 #line 681 "runpicture.in"
12661272 addFunc(ve, run::gen_runpicture55, primVoid(), SYM(draw), formal(primPicture(), SYM(f), false, false), formal(tripleArray(), SYM(v), false, false), formal(IntArray2(), SYM(vi), false, false), formal(tripleArray(), SYM(n), false, false), formal(IntArray2(), SYM(ni), false, false), formal(penArray() , SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(prcshininess), false, false), formal(penArray() , SYM(c), true, false), formal(IntArray2(), SYM(ci), true, false));
1267 #line 687 "runpicture.in"
1273 #line 691 "runpicture.in"
12681274 addFunc(ve, run::gen_runpicture56, primTriple(), SYM(min3), formal(primPicture(), SYM(f), false, false));
1269 #line 692 "runpicture.in"
1275 #line 696 "runpicture.in"
12701276 addFunc(ve, run::gen_runpicture57, primTriple(), SYM(max3), formal(primPicture(), SYM(f), false, false));
1271 #line 697 "runpicture.in"
1277 #line 701 "runpicture.in"
12721278 addFunc(ve, run::gen_runpicture58, primTriple(), SYM(size3), formal(primPicture(), SYM(f), false, false));
1273 #line 703 "runpicture.in"
1279 #line 707 "runpicture.in"
12741280 addFunc(ve, run::gen_runpicture59, primPair(), SYM(minratio), formal(primPicture(), SYM(f), false, false));
1275 #line 708 "runpicture.in"
1281 #line 712 "runpicture.in"
12761282 addFunc(ve, run::gen_runpicture60, primPair(), SYM(maxratio), formal(primPicture(), SYM(f), false, false));
1277 #line 713 "runpicture.in"
1283 #line 717 "runpicture.in"
12781284 addFunc(ve, run::gen_runpicture61, primBoolean(), SYM(is3D), formal(primPicture(), SYM(f), false, false));
12791285 }
12801286
152152 }
153153
154154 void axialshade(picture *f, patharray *g, bool stroke=false, pen pena, pair a,
155 pen penb, pair b, bool copy=true)
156 {
157 array *(*copyarray)(array *a)=copy ? copyArray: nop;
158 f->append(new drawAxialShade(*copyarray(g),stroke,pena,a,penb,b));
155 bool extenda=true, pen penb, pair b, bool extendb=true,
156 bool copy=true)
157 {
158 array *(*copyarray)(array *a)=copy ? copyArray: nop;
159 f->append(new drawAxialShade(*copyarray(g),stroke,pena,a,extenda,penb,b,
160 extendb));
159161 }
160162
161163 void radialshade(picture *f, patharray *g, bool stroke=false, pen pena,
162 pair a, real ra, pen penb, pair b, real rb, bool copy=true)
163 {
164 array *(*copyarray)(array *a)=copy ? copyArray: nop;
165 f->append(new drawRadialShade(*copyarray(g),stroke,pena,a,ra,penb,b,rb));
164 pair a, real ra, bool extenda=true, pen penb, pair b, real rb,
165 bool extendb=true, bool copy=true)
166 {
167 array *(*copyarray)(array *a)=copy ? copyArray: nop;
168 f->append(new drawRadialShade(*copyarray(g),stroke,pena,a,ra,extenda,
169 penb,b,rb,extendb));
166170 }
167171
168172 void gouraudshade(picture *f, patharray *g, bool stroke=false,
273273 {
274274 real x=vm::pop<real>(Stack);
275275 #line 241 "runtime.in"
276 {Stack->push<bool>(isnan(x)); return;}
276 {Stack->push<bool>(std::isnan(x)); return;}
277277 }
278278
279279 #line 245 "runtime.in"
238238
239239 bool isnan(real x)
240240 {
241 return isnan(x);
241 return std::isnan(x);
242242 }
243243
244244 array* :pushNullArray()
7676
7777 #endif
7878
79 inline double totalseconds()
80 {
81 timeval tv;
82 gettimeofday(&tv,NULL);
83 return tv.tv_sec+tv.tv_usec/1000000.0;
84 }
85
7986 inline double seconds()
8087 {
81 static timeval lasttime;
82 timeval tv;
83 gettimeofday(&tv,NULL);
84 double seconds=tv.tv_sec-lasttime.tv_sec+
85 ((double) tv.tv_usec-lasttime.tv_usec)/1000000.0;
86 lasttime=tv;
88 static double lastseconds=totalseconds();
89 double t=totalseconds();
90 double seconds=t-lastseconds;
91 lastseconds=t;
8792 return seconds;
8893 }
8994
13461346
13471347 void initDir() {
13481348 if(getSetting<string>("sysdir").empty()) {
1349 string s=lookup("SELFAUTOPARENT");
1349 string s=lookup("TEXMFMAIN");
13501350 if(s.size() > 1) {
1351 string texmf=s+dirsep+"texmf-dist"+dirsep;
1351 string texmf=s+dirsep;
13521352 docdir=texmf+"doc"+dirsep+"asymptote";
13531353 Setting("sysdir")=texmf+"asymptote";
13541354 s=lookup("ASYMPTOTE_HOME");
538538
539539 void svgtexfile::gradientshade(bool axial, ColorSpace colorspace,
540540 const pen& pena, const pair& a, double ra,
541 const pen& penb, const pair& b, double rb)
541 bool, const pen& penb, const pair& b,
542 double rb, bool)
543
542544 {
543545 *out << "' fill='url(#grad" << gradientcount << ")'";
544546 fillrule(pena);
348348 const pen& penb, const pair& b, double rb);
349349 void gradientshade(bool axial, ColorSpace colorspace,
350350 const pen& pena, const pair& a, double ra,
351 const pen& penb, const pair& b, double rb);
351 bool extenda, const pen& penb, const pair& b,
352 double rb, bool extendb);
352353
353354 void gouraudshade(const pen& p0, const pair& z0,
354355 const pen& p1, const pair& z1,
1717 #include "angle.h"
1818 #include "pair.h"
1919
20 namespace run {
21 void transpose(double *a, size_t n);
22 void inverse(double *a, size_t n);
23 }
24
2025 namespace camp {
2126
2227 typedef double Triple[3];
2429 class triple;
2530
2631 bool isIdTransform3(const double* t);
27 void copyTransform3(double*& d, const double* s);
32 void copyTransform3(double*& d, const double* s,
33 GCPlacement placement=NoGC);
2834 void multiplyTransform3(double*& t, const double* s, const double* r);
2935
3036 void copyTriples(size_t n, Triple* d, const Triple* s);
5864 double gety() const { return y; }
5965 double getz() const { return z; }
6066
61 // transform by column-major matrix
67 // transform by row-major matrix
6268 friend triple operator* (const double* t, const triple& v)
6369 {
6470 if(t == NULL)
6571 return v;
6672
67 double f=t[3]*v.x+t[7]*v.y+t[11]*v.z+t[15];
73 double f=t[12]*v.x+t[13]*v.y+t[14]*v.z+t[15];
6874 if(f == 0.0)
6975 reportError("division by 0 in transform of a triple");
7076 f=1.0/f;
7177
72 return triple((t[0]*v.x+t[4]*v.y+t[8]*v.z+t[12])*f,
73 (t[1]*v.x+t[5]*v.y+t[9]*v.z+t[13])*f,
74 (t[2]*v.x+t[6]*v.y+t[10]*v.z+t[14])*f);
75 }
76
77 friend triple multshiftless(const double* t, const triple& v)
78 return triple((t[0]*v.x+t[1]*v.y+t[2]*v.z+t[3])*f,
79 (t[4]*v.x+t[5]*v.y+t[6]*v.z+t[7])*f,
80 (t[8]*v.x+t[9]*v.y+t[10]*v.z+t[11])*f);
81 }
82
83 friend triple transformNormal(const double* t, const triple& v)
7884 {
7985 if(t == NULL)
8086 return v;
8187
82 double f=t[3]*v.x+t[7]*v.y+t[11]*v.z+t[15];
83 if(f == 0.0)
84 reportError("division by 0 in shiftless transform of a triple");
85 f=1.0/f;
86
87 return triple((t[0]*v.x+t[4]*v.y+t[8]*v.z)*f,
88 (t[1]*v.x+t[5]*v.y+t[9]*v.z)*f,
89 (t[2]*v.x+t[6]*v.y+t[10]*v.z)*f);
88 double *T=new double[16];
89 copyTransform3(T,t);
90 T[3]=T[7]=T[11]=0.0;
91 run::inverse(T,4);
92 run::transpose(T,4);
93 triple V=T*v;
94 delete T;
95 return unit(V);
9096 }
9197
9298 friend void transformtriples(const double* t, size_t n, triple* d,
95101 if(n == 0 || d == NULL || s == NULL)
96102 return;
97103
98 if(isIdTransform3(t)) {
99 copytriples(n, d, s);
100 return;
101 }
102
103 for(size_t i=0; i < n; i++) {
104 const double& x = s[i].x;
105 const double& y = s[i].y;
106 const double& z = s[i].z;
107 double f=t[3]*x+t[7]*y+t[11]*z+t[15];
108 if(f == 0.0)
109 reportError("division by 0 in transformtriples");
110 f=1.0/f;
111 d[i].x=(t[0]*x+t[4]*y+t[8]*z+t[12])*f;
112 d[i].y=(t[1]*x+t[5]*y+t[9]*z+t[13])*f;
113 d[i].z=(t[2]*x+t[6]*y+t[10]*z+t[14])*f;
114 }
104 for(size_t i=0; i < n; i++)
105 d[i]=t*s[i];
115106 }
116107
117108 friend void copytriples(size_t n, triple* d, const triple* s)