Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Building Zsh on classical forms of Unix




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







Messages sorted by: Reverse Date, Date, Thread, Author