This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
a5152af88f8cf1b911899258558d2e39a01a64c1
[perl5.git] / hints / mpeix.sh
1 # The MPE/iX linker doesn't complain about unresolved symbols, and so the only
2 # way to test for unresolved symbols in a program is by attempting to run it.
3 # But this is slow, and fraught with problems, so the better solution is to use
4 # nm.
5 #
6 # MPE/iX lacks a fully functional native nm, so we need to use our fake nm
7 # script which will extract the symbol info from the native link editor and
8 # reformat into something nm-like.
9 #
10 # Created for 5.003 by Mark Klein, mklein@dis.com.
11 # Substantially revised for 5.004_01 by Mark Bixby, markb@cccd.edu.
12 # Revised again for 5.004_69 by Mark Bixby, markb@cccd.edu.
13 # Revised for 5.6.0 by Mark Bixby, mbixby@power.net.
14 # Revised for 5.7.3 by Mark Bixby, mark@bixby.org.
15 # Revised for 5.8.0 by Mark Bixby, mark@bixby.org.
16 #
17 osname='mpeix'
18 osvers=`uname -r | sed -e 's/.[A-Z]\.\([0-9]\)\([0-9]\)\.[0-9][0-9]/\1.\2/'`
19 #
20 # Force Configure to use our wrapper mpeix/nm script
21 #
22 PATH="$PWD/mpeix:$PATH"
23 nm="$PWD/mpeix/nm"
24 _nm=$nm
25 nm_opt='-configperl'
26 usenm='true'
27 #
28 # Work around the broken inline cat bug that corrupts here docs
29 #
30 alias -x cat=/bin/cat
31 #
32 # Various directory locations.
33 #
34 # Which ones of these does Configure get wrong?
35 test -z "$prefix" && prefix="/$HPACCOUNT/$HPGROUP"
36 archname='PA-RISC1.1'
37 bin="$prefix"
38 installman1dir="$prefix/man/man1"
39 installman3dir="$prefix/man/man3"
40 man1dir="$prefix/man/man1"
41 man3dir="$prefix/man/man3"
42 perlpath="$prefix/PERL"
43 scriptdir="$prefix"
44 startperl="#!$prefix/perl"
45 startsh='#!/bin/sh'
46 #
47 # Compiling.
48 #
49 test -z "$cc" && cc='gcc'
50 cccdlflags='none'
51 ccflags="$ccflags -DMPE -D_POSIX_SOURCE -D_SOCKET_SOURCE -D_POSIX_JOB_CONTROL -DIS_SOCKET_CLIB_ITSELF"
52 locincpth="$locincpth /usr/local/include /usr/contrib/include /BINDFW/CURRENT/include /SYSLOG/PUB"
53 test -z "$optimize" && optimize="-O2"
54 ranlib='/bin/true'
55 # Special compiling options for certain source files.
56 # But what if you want -g?
57 regcomp_cflags='optimize=-O'
58 toke_cflags='ccflags="$ccflags -DARG_ZERO_IS_SCRIPT"'
59 #
60 # Linking.
61 #
62 lddlflags='-b'
63 # Delete bsd and BSD from the library list.  Remove other randomly ordered
64 # libraries and then re-add them in their proper order (the MPE linker is
65 # order-sensitive).  Add additional MPE-specific libraries.
66 for mpe_remove in bind bsd BSD c curses m socket str svipc syslog; do
67   set `echo " $libswanted " | sed -e 's/ /  /g' -e "s/ $mpe_remove //"`
68   libswanted="$*"
69 done
70 libswanted="$libswanted bind syslog curses svipc socket str m c"
71 loclibpth="$loclibpth /usr/local/lib /usr/contrib/lib /BINDFW/CURRENT/lib /SYSLOG/PUB"
72 #
73 # External functions and data items.
74 #
75 # Q: Does Configure *really* get *all* of these wrong?
76 #
77 # A: Yes.  There are two MPE problems here.  The 'undef' functions exist on MPE,
78 # but are merely dummy routines that return ENOTIMPL or ESYSERR.  Since they're
79 # useless, let's just tell Perl to avoid them.  Also, a few data items are
80 # 'undef' because while they may exist in structures, they are uninitialized.
81 #
82 # The 'define' cases are a bit weirder.  MPE has a libc.a, libc.sl, and two
83 # special kernel shared libraries, /SYS/PUB/XL and /SYS/PUB/NL.  Much of what
84 # is in libc.a is duplicated within XL and NL, so when we created libc.sl, we
85 # omitted the duplicated functions.  Since Configure end ups scanning libc.sl,
86 # we need to 'define' the functions that had been removed.
87 #
88 # We don't want to scan XL or NL because we would find way too many POSIX or
89 # Unix named functions that are really vanilla MPE functions that do something
90 # completely different than on POSIX or Unix.
91 d_crypt='define'
92 d_dbmclose='undef'
93 d_difftime='define'
94 d_dlerror='undef'
95 d_dlopen='undef'
96 d_Gconvert='gcvt((x),(n),(b))'
97 d_getnbyaddr='define'
98 d_getnbyname='define'
99 d_getpbyname='define'
100 d_getpbynumber='define'
101 d_getsbyname='define'
102 d_getsbyport='define'
103 d_gettimeod='undef'
104 d_inetaton='undef'
105 d_lchown='undef'
106 d_link='undef'
107 d_mblen='define'
108 d_mbstowcs='define'
109 d_mbtowc='define'
110 d_memchr='define'
111 d_memcmp='define'
112 d_memcpy='define'
113 d_memmove='define'
114 d_memset='define'
115 d_pwage='undef'
116 d_pwcomment='undef'
117 d_pwgecos='undef'
118 d_pwpasswd='undef'
119 d_setegid='undef'
120 d_seteuid='undef'
121 d_setitimer='undef'
122 d_setpgid='undef'
123 d_setsid='undef'
124 d_setvbuf='define'
125 d_statblks='undef'
126 d_strchr='define'
127 d_strcoll='define'
128 d_strerrm='strerror(e)'
129 d_strerror='define'
130 d_strtod='define'
131 d_strtol='define'
132 d_strtoul='define'
133 d_strxfrm='define'
134 d_syserrlst='define'
135 d_time='define'
136 d_wcstombs='define'
137 d_wctomb='define'
138 #
139 # Include files.
140 #
141 i_gdbm='undef' # the port is currently incomplete
142 i_termios='undef' # we have termios, but not the full set (just tcget/setattr)
143 i_time='define'
144 i_systime='undef'
145 i_systimek='undef'
146 timeincl='/usr/include/time.h'
147 #
148 # Data types.
149 #
150 timetype='time_t'
151 #
152 # Functionality.
153 #
154 uselargefiles="$undef"
155 #
156 # Expected functionality provided in mpeix.c.
157 #
158 archobjs='mpeix.o'
159
160 # Help gmake find mpeix.c
161 test -h mpeix.c || ln -s mpeix/mpeix.c mpeix.c
162
163 d_gettimeod='define'
164 d_truncate='define'