summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig A. Berry <craigberry@mac.com>2003-12-18 12:19:43 -0600
committerNicholas Clark <nick@ccl4.org>2003-12-20 20:07:44 +0000
commita50752f9a67249b5bcecc4771bbaacc13beb2cf9 (patch)
tree2f388d688b910d52109ca3b2ef8565e9bb61b67c
parenteffac55b77f4596996ae79e1587910a279ff86f1 (diff)
downloadperl-a50752f9a67249b5bcecc4771bbaacc13beb2cf9.tar.gz
OpenVMS I64 support
From: "Craig A. Berry" <craigberry@mac.com> Message-ID: <3FE2441F.2070603@mac.com> Date: Thu, 18 Dec 2003 18:19:43 -0600 p4raw-id: //depot/perl@21933
-rw-r--r--configure.com71
-rw-r--r--vms/gen_shrfls.pl5
2 files changed, 56 insertions, 20 deletions
diff --git a/configure.com b/configure.com
index df074643d3..20537b526b 100644
--- a/configure.com
+++ b/configure.com
@@ -932,6 +932,7 @@ $!
$! EOD
$! echo " ","VMS_VAX"
$! echo " ","VMS_AXP"
+$! echo " ","VMS_IA64"
$! : Now look for a hint file osname_osvers, unless one has been
$! : specified already.
$! TYPE SYS$INPUT:
@@ -1105,17 +1106,24 @@ $! Please try to use either archname .EQS. "VMS_VAX" or archname .EQS.
$! "VMS_AXP" from here on to allow cross-platform configuration (e.g.
$! configure a VAX build on an Alpha).
$!
-$ IF (F$GETSYI("HW_MODEL") .LT. 1024)
+$ IF (F$GETSYI("HW_MODEL") .LT. 1024 .AND. F$GETSYI("HW_MODEL") .GT. 0)
$ THEN
$ archname = "VMS_VAX"
-$ otherarch = "an Alpha"
+$ otherarch = "an Alpha or IA64"
$ alignbytes="8"
$ arch_type = "ARCH-TYPE=__VAX__"
$ ELSE
-$ archname = "VMS_AXP"
-$ otherarch = "a VAX"
+$ IF (F$GETSYI("ARCH_TYPE") .EQ. 2)
+$ THEN
+$ archname = "VMS_AXP"
+$ otherarch = "a VAX or IA64"
+$ arch_type = "ARCH-TYPE=__AXP__"
+$ ELSE
+$ archname = "VMS_IA64"
+$ otherarch = "a VAX or Alpha"
+$ arch_type = "ARCH-TYPE=__IA64__"
+$ ENDIF
$ alignbytes="8"
-$ arch_type = "ARCH-TYPE=__AXP__"
$ ENDIF
$ dflt = archname
$ rp = "What is your architecture name? [''archname'] "
@@ -1142,6 +1150,10 @@ $ IF (archname.EQS."VMS_AXP")
$ THEN
$ macros = macros + """AXE=1"","
$ ENDIF
+$ IF (archname.EQS."VMS_IA64")
+$ THEN
+$ macros = macros + """IXE=1"","
+$ ENDIF
$ ENDIF
$!
$!: is AFS running? !sfn
@@ -1581,7 +1593,8 @@ $ echo "You also have: ''line' ''archsufx' ''F$GETSYI("VERSION")'"
$ vms_cc_available = vms_cc_available + "cc/decc "
$ ENDIF
$ ELSE
-$ IF (F$LOCATE("DEC",line).NE.F$LENGTH(line)).or.(F$LOCATE("Compaq",line).NE.F$LENGTH(line))
+$ IF (F$LOCATE("DEC",line).NE.F$LENGTH(line)).or.(F$LOCATE("Compaq",line).NE.F$LENGTH(line)) -
+ .or.(F$LOCATE("hp",line).NE.F$LENGTH(line))
$ THEN
$ vms_cc_dflt = "/decc"
$ vms_cc_available = vms_cc_available + "cc/decc "
@@ -1715,7 +1728,8 @@ $ IF ans.NES.""
$ THEN
$ ans = F$EDIT(ans,"TRIM, COMPRESS, LOWERCASE")
$ Mcc = ans
-$ IF (F$LOCATE("dec",ans).NE.F$LENGTH(ans)).or.(F$LOCATE("compaq",ans).NE.F$LENGTH(ans))
+$ IF (F$LOCATE("dec",ans).NE.F$LENGTH(ans)).or.(F$LOCATE("compaq",ans).NE.F$LENGTH(ans)) -
+ .or.(F$LOCATE("hp",ans).NE.F$LENGTH(ans))
$ THEN
$ Mcc = "cc/decc"
$! CPQ ?
@@ -2002,7 +2016,12 @@ $ THEN
$ read CONFIG line
$ archsufx = "VAX"
$ ELSE
-$ archsufx = "AXP"
+$ IF archname .EQS. "VMS_AXP"
+$ THEN
+$ archsufx = "AXP"
+$ ELSE
+$ archsufx = "IA64"
+$ ENDIF
$ ENDIF
$ CLOSE CONFIG
$ line = F$EDIT(line,"TRIM,COMPRESS")
@@ -2249,7 +2268,7 @@ $ usemultiplicity="undef"
$ ENDIF
$!
$! Ask if they want to build with 64-bit support
-$ IF (archname.eqs."VMS_AXP").and.("''f$extract(1,3, f$getsyi(""version""))'".ges."7.1")
+$ IF (archname.NES."VMS_VAX").and.("''f$extract(1,3, f$getsyi(""version""))'".ges."7.1")
$ THEN
$ bool_dflt = "n"
$ IF F$TYPE(use64bitint) .NES. ""
@@ -2354,8 +2373,8 @@ $ use_5005_threads="N"
$ ELSE
$ use_5005_threads="Y"
$ ENDIF
-$ ! Are they on VMS 7.1 on an alpha?
-$ if (archname.eqs."VMS_AXP").and.("''f$extract(1,3, f$getsyi(""version""))'".ges."7.1")
+$ ! Are they on VMS 7.1 on an alpha or itanium?
+$ if (archname.nes."VMS_VAX").and.("''f$extract(1,3, f$getsyi(""version""))'".ges."7.1")
$ THEN
$ echo ""
$ echo "Threaded perl can be linked to use multiple kernel threads"
@@ -2376,7 +2395,7 @@ $ ENDIF
$ ENDIF
$ ENDIF
$ ENDIF
-$ IF archname .EQS. "VMS_AXP"
+$ IF archname .NES. "VMS_VAX"
$ THEN
$! Case sensitive?
$ echo ""
@@ -2940,11 +2959,20 @@ $ dlext="axe"
$ exe_ext=".axe"
$ lib_ext=".alb"
$ ELSE
-$ obj_ext=".obj"
-$ so="exe"
-$ dlext="exe"
-$ exe_ext=".exe"
-$ lib_ext=".olb"
+$ IF (sharedperl .AND. archname .EQS. "VMS_IA64")
+$ THEN
+$ obj_ext=".ibj"
+$ so="ixe"
+$ dlext="ixe"
+$ exe_ext=".ixe"
+$ lib_ext=".ilb"
+$ ELSE
+$ obj_ext=".obj"
+$ so="exe"
+$ dlext="exe"
+$ exe_ext=".exe"
+$ lib_ext=".olb"
+$ ENDIF
$ ENDIF
$ dlobj="dl_vms''obj_ext'"
$!
@@ -5081,7 +5109,13 @@ $ WS " iss = ((iss&1)==1 && code == 0x1234);"
$ WS " printf(""%d\n"",iss);"
$ WS "}"
$ CS
-$ GOSUB compile
+$ IF (archname .EQS. "VMS_AXP")
+$ THEN
+$ GOSUB compile
+$ ELSE
+$ ! Causes SS$_BADSTACK on OpenVMS I64 v8.1 (but hey, it was undocumented)
+$ tmp = "0"
+$ ENDIF
$ IF tmp .EQS. "1"
$ THEN
$ echo4 "Yep, we can."
@@ -6367,6 +6401,7 @@ $ echo4 "The perl.cld file is now being written..."
$ OPEN/WRITE CONFIG 'file_2_find'
$ ext = ".exe"
$ IF (sharedperl .AND. archname .EQS. "VMS_AXP") THEN ext := .AXE
+$ IF (sharedperl .AND. archname .EQS. "VMS_IA64") THEN ext := .IXE
$ IF (use_vmsdebug_perl)
$ THEN
$ WRITE CONFIG "define verb dbgperl"
diff --git a/vms/gen_shrfls.pl b/vms/gen_shrfls.pl
index 3cdd3ef84a..f8bf6b190b 100644
--- a/vms/gen_shrfls.pl
+++ b/vms/gen_shrfls.pl
@@ -39,7 +39,7 @@ require 5.000;
$debug = $ENV{'GEN_SHRFLS_DEBUG'};
-print "gen_shrfls.pl Rev. 18-May-2001\n" if $debug;
+print "gen_shrfls.pl Rev. 18-Dec-2003\n" if $debug;
if ($ARGV[0] eq '-f') {
open(INP,$ARGV[1]) or die "Can't read input file $ARGV[1]: $!\n";
@@ -56,7 +56,8 @@ if ($ARGV[0] eq '-f') {
$cc_cmd = shift @ARGV;
# Someday, we'll have $GetSyI built into perl . . .
-$isvax = `\$ Write Sys\$Output F\$GetSyI(\"HW_MODEL\")` <= 1024;
+$isvax = `\$ Write Sys\$Output \(F\$GetSyI(\"HW_MODEL\") .LE. 1024 .AND. F\$GetSyI(\"HW_MODEL\") .GT. 0\)`;
+chomp $isvax;
print "\$isvax: \\$isvax\\\n" if $debug;
print "Input \$cc_cmd: \\$cc_cmd\\\n" if $debug;