This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
add $Config('scriptdir'} on VMS
[perl5.git] / hints / mpeix.sh
index de3adca..6b4b877 100644 (file)
 # 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.
 #
 osname='mpeix'
-osvers='5.5'
+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
 #
@@ -22,9 +23,14 @@ _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.
 #
-prefix='/PERL/PUB'
+# Which ones of these does Configure get wrong?
+test -z "$prefix" && prefix='/PERL/PUB'
 archname='PA-RISC1.1'
 bin="$prefix"
 installman1dir="$prefix/man/man1"
@@ -33,39 +39,66 @@ man1dir="$prefix/man/man1"
 man3dir="$prefix/man/man3"
 perlpath="$prefix/PERL"
 scriptdir="$prefix"
-startperl="#!$perlpath"
+startperl="#!$prefix/perl"
 startsh='#!/bin/sh'
 #
 # Compiling.
 #
-cc='gcc'
+test -z "$cc" && cc='gcc'
 cccdlflags='none'
-ccflags='-DMPE -D_POSIX_SOURCE -D_SOCKET_SOURCE -D_POSIX_JOB_CONTROL -DIS_SOCKET_CLIB_ITSELF'
-locincpth='/usr/local/include /usr/contrib/include /BIND/PUB/include'
-optimize='-O2'
+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'
-libs='-lbind -lsvipc -lsocket -lm -lc'
-loclibpth='/usr/local/lib /usr/contrib/lib /BIND/PUB/lib'
+# 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_gettimeod='undef'
 d_inetaton='undef'
 d_link='undef'
 d_mblen='define'
 d_mbstowcs='define'
 d_mbtowc='define'
+d_memchr='define'
 d_memcmp='define'
 d_memcpy='define'
 d_memmove='define'
@@ -74,6 +107,9 @@ 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'
@@ -93,7 +129,8 @@ d_wctomb='define'
 #
 # Include files.
 #
-i_termios='undef'
+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'
@@ -102,3 +139,8 @@ timeincl='/usr/include/time.h'
 # Data types.
 #
 timetype='time_t'
+#
+# Functionality.
+#
+bincompat5005="$undef"
+uselargefiles="$undef"