X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=hints%2Fmpeix.sh;h=5126bcf3b84c59b750269ab543241dd4cf5bbef3;hb=6137113dfd943e6f896f8b9c1a4df2b7d4e355ae;hp=9fc2737893aafe2c00a0c616d643e37de2807f3c;hpb=fed7345c45910a20f6865d6a2f8978d09b352f41;p=p5sagit%2Fp5-mst-13.2.git diff --git a/hints/mpeix.sh b/hints/mpeix.sh index 9fc2737..5126bcf 100644 --- a/hints/mpeix.sh +++ b/hints/mpeix.sh @@ -1,70 +1,163 @@ -# MPE/IX does not have nm, and the linker doesn't complain -# about unresolved symbols, so these are all filled in by hand. +# The MPE/iX linker doesn't complain about unresolved symbols, and so the only +# way to test for unresolved symbols in a program is by attempting to run it. +# But this is slow, and fraught with problems, so the better solution is to use +# nm. +# +# MPE/iX lacks a fully functional native nm, so we need to use our fake nm +# script which will extract the symbol info from the native link editor and +# reformat into something nm-like. +# +# Created for 5.003 by Mark Klein, mklein@dis.com. +# Substantially revised for 5.004_01 by Mark Bixby, markb@cccd.edu. +# Revised again for 5.004_69 by Mark Bixby, markb@cccd.edu. +# Revised for 5.6.0 by Mark Bixby, mbixby@power.net. +# Revised for 5.7.3 by Mark Bixby, mark@bixby.org. +# Revised for 5.8.0 by Mark Bixby, mark@bixby.org. +# osname='mpeix' -osvers='5.0' -alignbytes='8' -ccflags='-D_POSIX_SOURCE -D_SOCKET_SOURCE -D_POSIX_JOB_CONTROL' -cc='c89' -optimize='-g' -d_safebcpy='undef' -d_safemcpy='undef' -intsize='8' -usemymalloc='y' -d_casti32='undef' -d_castneg='undef' -prefix='/PERL' -privlib='/PERL/PERL/lib' -archlib='/PERL/PERL/lib/mpeix' -clocktype='clock_t' -gidtype='gid_t' -groupstype='gid_t' -lseektype='off_t' -modetype='mode_t' -randbits='15' -ssizetype='ssize_t' -uidtype='uid_t' -d_stdstdio='undef' -i_pwd='undef' -i_grp='undef' -#d_fd_set='undef' -#d_fds_bits='undef' -d_chroot='undef' -d_fchmod='undef' -d_fchown='undef' -d_flock='undef' -d_Gconvert='sprintf((b),"%.*g",(n),(x))' -d_getpgrp2='undef' -d_getprior='undef' -d_killpg='undef' -d_lstat='undef' -d_seekdir='undef' -d_telldir='undef' -d_setpgrp2='undef' -d_setprior='undef' -d_setresgid='undef' -d_setresuid='undef' -d_setrgid='undef' -d_setruid='undef' -d_syscall='undef' -d_truncate='undef' -d_setregid='undef' -d_setreuid='undef' -d_setpgrp='undef' -d_chsize='undef' -d_group='undef' -d_bcmp='undef' -d_bcopy='undef' -d_bzero='undef' -d_attrib='undef' -d_dirnamlen='define' +osvers=`uname -r | sed -e 's/.[A-Z]\.\([0-9]\)\([0-9]\)\.[0-9][0-9]/\1.\2/'` +# +# Force Configure to use our wrapper mpeix/nm script +# +PATH="$PWD/mpeix:$PATH" +nm="$PWD/mpeix/nm" +_nm=$nm +nm_opt='-configperl' +usenm='true' +# +# Work around the broken inline cat bug that corrupts here docs +# +alias -x cat=/bin/cat +# +# Various directory locations. +# +# Which ones of these does Configure get wrong? +test -z "$prefix" && prefix="/$HPACCOUNT/$HPGROUP" +archname='PA-RISC1.1' +bin="$prefix" +installman1dir="$prefix/man/man1" +installman3dir="$prefix/man/man3" +man1dir="$prefix/man/man1" +man3dir="$prefix/man/man3" +perlpath="$prefix/PERL" +scriptdir="$prefix" +startperl="#!$prefix/perl" +startsh='#!/bin/sh' +# +# Compiling. +# +test -z "$cc" && cc='gcc' +cccdlflags='none' +ccflags="$ccflags -DMPE -D_POSIX_SOURCE -D_SOCKET_SOURCE -D_POSIX_JOB_CONTROL -DIS_SOCKET_CLIB_ITSELF" +locincpth="$locincpth /usr/local/include /usr/contrib/include /BINDFW/CURRENT/include /SYSLOG/PUB" +test -z "$optimize" && optimize="-O2" +ranlib='/bin/true' +# Special compiling options for certain source files. +# But what if you want -g? +regcomp_cflags='optimize=-O' +toke_cflags='ccflags="$ccflags -DARG_ZERO_IS_SCRIPT"' +# +# Linking. +# +lddlflags='-b' +# Delete bsd and BSD from the library list. Remove other randomly ordered +# libraries and then re-add them in their proper order (the MPE linker is +# order-sensitive). Add additional MPE-specific libraries. +for mpe_remove in bind bsd BSD c curses m socket str svipc syslog; do + set `echo " $libswanted " | sed -e 's/ / /g' -e "s/ $mpe_remove //"` + libswanted="$*" +done +libswanted="$libswanted bind syslog curses svipc socket str m c" +loclibpth="$loclibpth /usr/local/lib /usr/contrib/lib /BINDFW/CURRENT/lib /SYSLOG/PUB" +# +# External functions and data items. +# +# Q: Does Configure *really* get *all* of these wrong? +# +# A: Yes. There are two MPE problems here. The 'undef' functions exist on MPE, +# but are merely dummy routines that return ENOTIMPL or ESYSERR. Since they're +# useless, let's just tell Perl to avoid them. Also, a few data items are +# 'undef' because while they may exist in structures, they are uninitialized. +# +# The 'define' cases are a bit weirder. MPE has a libc.a, libc.sl, and two +# special kernel shared libraries, /SYS/PUB/XL and /SYS/PUB/NL. Much of what +# is in libc.a is duplicated within XL and NL, so when we created libc.sl, we +# omitted the duplicated functions. Since Configure end ups scanning libc.sl, +# we need to 'define' the functions that had been removed. +# +# We don't want to scan XL or NL because we would find way too many POSIX or +# Unix named functions that are really vanilla MPE functions that do something +# completely different than on POSIX or Unix. +d_crypt='define' +d_dbmclose='undef' +d_difftime='define' +d_dlerror='undef' +d_dlopen='undef' +d_Gconvert='gcvt((x),(n),(b))' +d_getnbyaddr='define' +d_getnbyname='define' +d_getpbyname='define' +d_getpbynumber='define' +d_getsbyname='define' +d_getsbyport='define' +d_gettimeod='undef' +d_inetaton='undef' d_link='undef' -d_passwd='undef' +d_mblen='define' +d_mbstowcs='define' +d_mbtowc='define' +d_memchr='define' +d_memcmp='define' +d_memcpy='define' +d_memmove='define' +d_memset='define' +d_pwage='undef' d_pwcomment='undef' +d_pwgecos='undef' +d_pwpasswd='undef' +d_setegid='undef' +d_seteuid='undef' +d_setitimer='undef' +d_setpgid='undef' +d_setsid='undef' +d_setvbuf='define' d_statblks='undef' -libs='-lsvipc -lsocket -lm -lc' -ranlib='/bin/true' -d_nice='undef' -d_cuserid='undef' -i_termios='undef' -d_tcgetpgrp='undef' -d_tcsetpgrp='undef' +d_strchr='define' +d_strcoll='define' +d_strerrm='strerror(e)' +d_strerror='define' +d_strtod='define' +d_strtol='define' +d_strtoul='define' +d_strxfrm='define' +d_syserrlst='define' +d_time='define' +d_wcstombs='define' +d_wctomb='define' +# +# Include files. +# +i_gdbm='undef' # the port is currently incomplete +i_termios='undef' # we have termios, but not the full set (just tcget/setattr) +i_time='define' +i_systime='undef' +i_systimek='undef' +timeincl='/usr/include/time.h' +# +# Data types. +# +timetype='time_t' +# +# Functionality. +# +uselargefiles="$undef" +# +# Expected functionality provided in mpeix.c. +# +archobjs='mpeix.o' + +# Help gmake find mpeix.c +test -h mpeix.c || ln -s mpeix/mpeix.c mpeix.c + +d_gettimeod='define' +d_truncate='define'