From 4ec3e8ca510b411bde2353ede05ed19fe3372eaa Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Fri, 25 Mar 2011 09:40:48 +0000 Subject: For VMS, implement the possibility to choose 64-bit pointers with different options: "64" The build system will choose /POINTER_SIZE=64=ARGV if the compiler supports it, otherwise /POINTER_SIZE=64. "64=" The build system will force /POINTER_SIZE=64. "64=ARGV" The build system will force /POINTER_SIZE=64=ARGV. --- apps/makeapps.com | 49 +++++++++++++++++++++++++++++++++++-------------- 1 file changed, 35 insertions(+), 14 deletions(-) (limited to 'apps/makeapps.com') diff --git a/apps/makeapps.com b/apps/makeapps.com index 8924f50f6d..95b6ecdd1c 100644 --- a/apps/makeapps.com +++ b/apps/makeapps.com @@ -40,11 +40,15 @@ $! $! P5, if defined, sets a choice of programs to compile. $! $! P6, if defined, specifies the C pointer size. Ignored on VAX. +$! ("64=ARGV" gives more efficient code with HP C V7.3 or newer.) $! Supported values are: $! $! "" Compile with default (/NOPOINTER_SIZE) $! 32 Compile with /POINTER_SIZE=32 (SHORT) $! 64 Compile with /POINTER_SIZE=64[=ARGV] (LONG[=ARGV]) +$! (Automatically select ARGV if compiler supports it.) +$! 64= Compile with /POINTER_SIZE=64 (LONG). +$! 64=ARGV Compile with /POINTER_SIZE=64=ARGV (LONG=ARGV). $! $! P7, if defined, specifies a directory where ZLIB files (zlib.h, $! libz.olb) may be found. Optionally, a non-default object library @@ -597,13 +601,22 @@ $ IF (P6 .EQS. "32") $ THEN $ POINTER_SIZE = "/POINTER_SIZE=32" $ ELSE -$ IF (P6 .EQS. "64") +$ POINTER_SIZE = F$EDIT( P6, "COLLAPSE, UPCASE") +$ IF ((POINTER_SIZE .EQS. "64") .OR. - + (POINTER_SIZE .EQS. "64=") .OR. - + (POINTER_SIZE .EQS. "64=ARGV")) $ THEN -$ POINTER_SIZE = "/POINTER_SIZE=64" +$ ARCHD = ARCH+ "_64" +$ LIB32 = "" +$ IF (F$EXTRACT( 2, 1, POINTER_SIZE) .EQS. "=") +$ THEN +$! Explicit user choice: "64" or "64=ARGV". +$ IF (POINTER_SIZE .EQS. "64=") THEN POINTER_SIZE = "64" +$ ELSE $ SET NOON -$ DEFINE /USER SYS$OUTPUT NL: -$ DEFINE /USER SYS$ERROR NL: -$ CC /POINTER_SIZE=64=ARGV NL: +$ DEFINE /USER_MODE SYS$OUTPUT NL: +$ DEFINE /USER_MODE SYS$ERROR NL: +$ CC /NOLIST /NOOBJECT /POINTER_SIZE=64=ARGV NL: $ IF ($STATUS .AND. %X0FFF0000) .EQ. %X00030000 $ THEN $ ! If we got here, it means DCL complained like this: @@ -615,14 +628,15 @@ $ ! have been deassigned automatically. However, when DCL $ ! complains, they aren't, so we do it here (it might be $ ! unnecessary, but just in case there will be another error $ ! message further on that we don't want to miss) -$ DEASSIGN/USER SYS$ERROR -$ DEASSIGN/USER SYS$OUTPUT +$ DEASSIGN /USER_MODE SYS$ERROR +$ DEASSIGN /USER_MODE SYS$OUTPUT $ ELSE $ POINTER_SIZE = POINTER_SIZE + "=ARGV" $ ENDIF $ SET ON -$ ARCHD = ARCH+ "_64" -$ LIB32 = "" +$ ENDIF +$ POINTER_SIZE = "/POINTER_SIZE=''POINTER_SIZE'" +$! $ ELSE $! $! Tell The User Entered An Invalid Option. @@ -631,9 +645,16 @@ $ WRITE SYS$OUTPUT "" $ WRITE SYS$OUTPUT "The Option ", P6, - " Is Invalid. The Valid Options Are:" $ WRITE SYS$OUTPUT "" -$ WRITE SYS$OUTPUT " """" : Compile with default (short) pointers." -$ WRITE SYS$OUTPUT " 32 : Compile with 32-bit (short) pointers." -$ WRITE SYS$OUTPUT " 64 : Compile with 64-bit (long) pointers." +$ WRITE SYS$OUTPUT - + " """" : Compile with default (short) pointers." +$ WRITE SYS$OUTPUT - + " 32 : Compile with 32-bit (short) pointers." +$ WRITE SYS$OUTPUT - + " 64 : Compile with 64-bit (long) pointers (auto ARGV)." +$ WRITE SYS$OUTPUT - + " 64= : Compile with 64-bit (long) pointers (no ARGV)." +$ WRITE SYS$OUTPUT - + " 64=ARGV : Compile with 64-bit (long) pointers (ARGV)." $ WRITE SYS$OUTPUT "" $! $! Time To EXIT. @@ -832,8 +853,8 @@ $! $ CC = "CC" $ IF ARCH.EQS."VAX" .AND. F$TRNLNM("DECC$CC_DEFAULT").NES."/DECC" - THEN CC = "CC/DECC" -$ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/STANDARD=RELAXED"+ - - "''POINTER_SIZE'/NOLIST/PREFIX=ALL" + - +$ CC = CC + "/''CC_OPTIMIZE' /''DEBUGGER' /STANDARD=RELAXED"+ - + "''POINTER_SIZE' /NOLIST /PREFIX=ALL" + - "/INCLUDE=(''CC_INCLUDES')" + CCEXTRAFLAGS $! $! Define The Linker Options File Name. -- cgit v1.2.3