From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19565 invoked from network); 15 May 2006 20:28:57 -0000 X-Spam-Checker-Version: SpamAssassin 3.1.1 (2006-03-10) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00,FORGED_RCVD_HELO autolearn=ham version=3.1.1 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by ns1.primenet.com.au with SMTP; 15 May 2006 20:28:57 -0000 Received: (qmail 46909 invoked from network); 15 May 2006 20:28:51 -0000 Received: from sunsite.dk (130.225.247.90) by a.mx.sunsite.dk with SMTP; 15 May 2006 20:28:51 -0000 Received: (qmail 23063 invoked by alias); 15 May 2006 20:28:48 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 22444 Received: (qmail 23052 invoked from network); 15 May 2006 20:28:48 -0000 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by sunsite.dk with SMTP; 15 May 2006 20:28:48 -0000 Received: (qmail 46645 invoked from network); 15 May 2006 20:28:48 -0000 Received: from aw.gs (HELO dynamite.narpes.com) (213.250.81.161) by a.mx.sunsite.dk with SMTP; 15 May 2006 20:28:47 -0000 Received: from localhost ([127.0.0.1]) by dynamite.narpes.com with esmtp (Exim 4.43) id 1FfjgM-0005Au-0x for zsh-workers@sunsite.dk; Mon, 15 May 2006 20:28:46 +0000 Date: Mon, 15 May 2006 20:28:45 +0000 (GMT) From: "A. Wik" To: Zsh hackers list Subject: Building Zsh on classical forms of Unix Message-ID: <20060515153751.G6729@dynamite.narpes.com> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII The following is the output of Zsh ./configure running under under a 4.3BSD (Tahoe-derived) VAX environment, chrooted on top of NetBSD 1.5.2 (some of it's binaries were present at the end of the PATH). The first problem turned out to be configure's dissatisfaction with the pre-installed AWK, the upgrade of which was complicated by the rather advanced stage of ANSI-infestation found to be plaguing Kernighan's contemporary AWK. ansi2knr did not appear to have any effects, and instead, a considerable degree of manual (or more accurately, editor-assisted) intervention turned out to be required, primarily for the transportation of rather large quantities of material from within parentheses, addition of rudimentary header files and last, but not least, the duplication, renaming and addition of a 2nd argument to an existing atof() implementation, resulting in its successful imitation of a closely related function popularly known as strtod() and which AWK considered essential. The tweak of atof() would be unremarkable were it not for its associated opportunity for admiring the power and elegance of the VAX instruction set (to my knowledge unparalleled after three decades): movzbl (r2)+,r4 # Grab the next character which is roughly equivalent to the C expression: r4 = *r2++; Which on most lesser architectures would decompose into multiple machine instructions. I also noticed some particularly creative uses (or abuses) of the instruction intended for effective address calculation. In this example it's "tricked" into doing general-purpose integer arithmetic (conserving space): movaw -'0(r4)[r6],r6 # r6 = r6 * 2 + r4 - '0' All I can take credit for, however, is the following, of which only the last instruction is remarkable (the x86 easily does the first three, though certain more handicapped CPUs might not): * Set *endp unless (!endp) */ tstl 8(ap) jeql ex7b # NULL decl r2 movl r2, *8(ap) Note how we can directly reference the destination operand via two levels of indirection (and an 8-byte displacement as a bonus). Now back to the more mundane stuff of ./configuring: ./configure attempt #1 (after building awk). ============================================ # ./configure configure: loading cache /dev/null configuring for zsh 4.2.1 checking build system type... ./config.guess: /sbin/sysctl: not found ./config.guess: /usr/sbin/sysctl: not found unknown-unknown-netbsd1.5.2 checking host system type... unknown-unknown-netbsd1.5.2 checking for gcc... gcc egcs-1.1.2 checking for C compiler default output file name... configure: error: C compiler cannot create executables See `config.log' for more details. ./configure attempt #2. ======================= # ./configure vax-dec-bsd4.3 configure: WARNING: you should use --build, --host, --target configure: loading cache /dev/null configuring for zsh 4.2.1 checking build system type... vax-dec-bsd4.3 checking host system type... vax-dec-bsd4.3 checking for vax-dec-bsd4.3-gcc... no checking for gcc... gcc egcs-1.1.2 checking for C compiler default output file name... configure: error: C compiler cannot create executables See `config.log' for more details. ./configure attempt #3. ======================= # export CC=cc # ./configure vax-dec-bsd4.3 configure: WARNING: you should use --build, --host, --target configure: loading cache /dev/null configuring for zsh 4.2.1 checking build system type... vax-dec-bsd4.3 checking host system type... vax-dec-bsd4.3 checking for vax-dec-bsd4.3-gcc... cc ld:--: bad flag ld:-v: bad flag ld:-V: bad flag checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... no checking whether cc accepts -g... yes checking for cc option to accept ANSI C... none needed checking whether large file support needs explicit enabling... no checking how to run the C preprocessor... cc -E checking for egrep... egrep checking for an ANSI C-conforming const... no checking for cc option to accept ANSI C... no checking whether to use prototypes... no checking for working alloca.h... no checking for alloca... yes checking if the compiler supports union initialisation... no checking if signed to unsigned casting is broken... no checking if the compiler supports variable-length arrays... no checking whether make sets $(MAKE)... no checking for a BSD-compatible install... / checking for lchown... no checking for fseeko... no checking for ftello... no checking for mkfifo... no checking for _mktemp... no checking for mkstemp... yes checking for waitpid... no checking for wait3... yes checking for sigaction... no checking for sigblock... yes checking for sighold... no checking for sigrelse... no checking for sigsetmask... yes checking for sigprocmask... no checking for killpg... yes checking for setpgid... no checking for setpgrp... yes checking for tcsetpgrp... no checking for tcgetattr... no checking for nice... yes checking for gethostname... yes checking for gethostbyname2... no checking for getipnodebyname... no checking for inet_aton... no checking for inet_pton... no checking for inet_ntop... no checking for getlogin... yes checking for getpwent... yes checking for getpwnam... yes checking for getpwuid... yes checking for getgrgid... yes checking for getgrnam... yes checking for initgroups... yes checking for nis_list... no checking for setuid... yes checking for seteuid... yes checking for setreuid... yes checking for setresuid... no checking for setsid... no checking for memcpy... yes checking for memmove... no checking for strstr... no checking for strerror... no checking for getrlimit... yes checking for setlocale... no checking for uname... no checking for signgam... yes checking for putenv... no checking for getenv... yes checking for brk... yes checking for sbrk... yes checking for pathconf... no checking for sysconf... no checking for tgetent... yes checking for tigetflag... no checking for tigetnum... no checking for tigetstr... no checking for setupterm... no checking for pcre_compile... no checking for pcre_study... no checking for pcre_exec... no checking for nl_langinfo... no checking for erand48... no checking for open_memstream... no checking for wctomb... no checking for iconv... no checking for grantpt... no checking for unlockpt... no checking for ptsname... no checking for htons... yes checking for ntohs... yes checking for working strcoll... no checking if tgetent accepts NULL... no checking if tgetent returns 0 on success... no checking for stdlib.h... (cached) no checking for unistd.h... (cached) no checking for getpagesize... yes checking for working mmap... no checking whether getpgrp requires zero arguments... no checking for dlopen... no checking for dlerror... no checking for dlsym... no checking for dlclose... no checking for load... no checking for loadquery... no checking for loadbind... no checking for unload... no checking for shl_load... no checking for shl_unload... no checking for shl_findsym... no checking what style of signals to use... BSD_SIGNALS checking where signal.h is located... ./configure: 27790 Memory fault - core dumped /usr/include/sys/signal.h checking where error names are located... ./configure: 27841 Memory fault - core dumped 0: No source file nametmp.c configure: error: ERROR MACROS NOT FOUND: please report to developers