summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2011-03-25 09:39:46 +0000
committerRichard Levitte <levitte@openssl.org>2011-03-25 09:39:46 +0000
commitd135906dbcab367f968d7989233884f554d42945 (patch)
treed04bfc5cf84e971c6e08f785e14007039a217eac
parent9f427a52cb1b95b9fd987599ea766458c0f022b8 (diff)
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.
-rw-r--r--VMS/mkshared.com2
-rw-r--r--apps/makeapps.com49
-rw-r--r--apps/openssl.c64
-rw-r--r--crypto/crypto-lib.com29
-rw-r--r--engines/makeengines.com29
-rwxr-xr-xmakevms.com29
-rw-r--r--ssl/ssl-lib.com50
-rw-r--r--test/maketests.com45
8 files changed, 207 insertions, 90 deletions
diff --git a/VMS/mkshared.com b/VMS/mkshared.com
index d92a823f0b..794e1de62a 100644
--- a/VMS/mkshared.com
+++ b/VMS/mkshared.com
@@ -328,6 +328,8 @@ $ entrycount=0
$ loop:
$ read /end=loop_end /err=loop_end libnum line
$ lin = f$edit( line, "COMPRESS,TRIM")
+$! Skip a "#" comment line.
+$ if (f$extract( 0, 1, lin) .eqs. "#") then goto loop
$ entrynum = f$int(f$element( 1, " ", lin))
$ entryinfo = f$element( 2, " ", lin)
$ curentry = f$element( 0, " ", lin)
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.
diff --git a/apps/openssl.c b/apps/openssl.c
index 950c9c8bf2..dab057bbff 100644
--- a/apps/openssl.c
+++ b/apps/openssl.c
@@ -212,8 +212,13 @@ static void lock_dbg_cb(int mode, int type, const char *file, int line)
}
}
+#if defined( OPENSSL_SYS_VMS) && (__INITIAL_POINTER_SIZE == 64)
+# define ARGV _Argv
+#else
+# define ARGV Argv
+#endif
-int main(int Argc, char *_Argv[])
+int main(int Argc, char *ARGV[])
{
ARGS arg;
#define PROG_NAME_SIZE 39
@@ -228,25 +233,33 @@ int main(int Argc, char *_Argv[])
LHASH_OF(FUNCTION) *prog=NULL;
long errline;
-#if defined( OPENSSL_SYS_VMS) && !defined( VMS_TRUST_ARGV)
- /* 2011-03-08 SMS.
- * "HP C V7.3-009 on OpenVMS Alpha V8.3" with 64-bit
- * pointers (at least) may not NULL-terminate argv[]
- * as expected. If necessary, use a (properly)
- * NULL-terminated duplicate of argv[].
- */
- /* 2011-03-20 RL.
- * Additionally, when the argument vector is full of
- * 32-bit pointers and we have a 64-bit pointer size
- * everywhere else, we need to make a copy of it using
- * 64-bit pointers. Hence the odd conditinal.
+#if defined( OPENSSL_SYS_VMS) && (__INITIAL_POINTER_SIZE == 64)
+ /* 2011-03-22 SMS.
+ * If we have 32-bit pointers everywhere, then we're safe, and
+ * we bypass this mess, as on non-VMS systems. (See ARGV,
+ * above.)
+ * Problem 1: Compaq/HP C before V7.3 always used 32-bit
+ * pointers for argv[].
+ * Fix 1: For a 32-bit argv[], when we're using 64-bit pointers
+ * everywhere else, we always allocate and use a 64-bit
+ * duplicate of argv[].
+ * Problem 2: Compaq/HP C V7.3 (Alpha, IA64) before ECO1 failed
+ * to NULL-terminate a 64-bit argv[]. (As this was written, the
+ * compiler ECO was available only on IA64.)
+ * Fix 2: Unless advised not to (VMS_TRUST_ARGV), we test a
+ * 64-bit argv[argc] for NULL, and, if necessary, use a
+ * (properly) NULL-terminated (64-bit) duplicate of argv[].
+ * The same code is used in either case to duplicate argv[].
+ * Some of these decisions could be handled in preprocessing,
+ * but the code tends to get even uglier, and the penalty for
+ * deciding at compile- or run-time is tiny.
*/
char **Argv = NULL;
int free_Argv = 0;
- if (_Argv[ Argc] != NULL
-# if defined(__INITIAL_POINTER_SIZE)
- || sizeof(_Argv) < (__INITIAL_POINTER_SIZE / 8)
+ if ((sizeof( _Argv) < 8) /* 32-bit argv[]. */
+# if !defined( VMS_TRUST_ARGV)
+ || (_Argv[ Argc] != NULL) /* Untrusted argv[argc] not NULL. */
# endif
)
{
@@ -256,24 +269,17 @@ int main(int Argc, char *_Argv[])
{ ret = -1; goto end; }
for(i = 0; i < Argc; i++)
Argv[i] = _Argv[i];
- Argv[ Argc] = NULL;
+ Argv[ Argc] = NULL; /* Certain NULL termination. */
free_Argv = 1;
}
else
{
- /* 2011-03-20 RL.
- * If we didn't copy the argument vector, then simply
- * assign our variable. This will never happen when
- * the argument vector pointer size was smaller than
- * the initial pointer size, so even if the case might
- * look unsafe, it isn't, it's just there to shut the
- * compiler up.
- */
+ /* Use the known-good 32-bit argv[] (which needs the
+ * type cast to satisfy the compiler), or the trusted or
+ * tested-good 64-bit argv[] as-is. */
Argv = (char **)_Argv;
}
-#else
- char **Argv = _Argv;
-#endif
+#endif /* defined( OPENSSL_SYS_VMS) && (__INITIAL_POINTER_SIZE == 64) */
arg.data=NULL;
arg.count=0;
@@ -420,7 +426,7 @@ end:
BIO_free(bio_err);
bio_err=NULL;
}
-#if defined( OPENSSL_SYS_VMS) && !defined( VMS_TRUST_ARGV)
+#if defined( OPENSSL_SYS_VMS) && (__INITIAL_POINTER_SIZE == 64)
/* Free any duplicate Argv[] storage. */
if (free_Argv)
{
diff --git a/crypto/crypto-lib.com b/crypto/crypto-lib.com
index a4dffe9160..3a5296cf3f 100644
--- a/crypto/crypto-lib.com
+++ b/crypto/crypto-lib.com
@@ -52,7 +52,10 @@ $! Supported values are:
$!
$! "" Compile with default (/NOPOINTER_SIZE)
$! 32 Compile with /POINTER_SIZE=32 (SHORT)
-$! 64 Compile with /POINTER_SIZE=64[=ARGV] (LONG[=ARGV])
+$! 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).
$!
$! P8, if defined, specifies a directory where ZLIB files (zlib.h,
$! libz.olb) may be found. Optionally, a non-default object library
@@ -975,11 +978,14 @@ $ IF (P7 .EQS. "32")
$ THEN
$ POINTER_SIZE = "/POINTER_SIZE=32"
$ ELSE
-$ IF (P7 .EQS. "64")
+$ POINTER_SIZE = F$EDIT( P7, "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 = ""
+$ POINTER_SIZE = "/POINTER_SIZE=64"
$ ELSE
$!
$! Tell The User Entered An Invalid Option.
@@ -988,9 +994,16 @@ $ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT "The Option ", P7, -
" 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.
@@ -1190,8 +1203,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
$!
diff --git a/engines/makeengines.com b/engines/makeengines.com
index 39b50ab3c9..046b1a70d1 100644
--- a/engines/makeengines.com
+++ b/engines/makeengines.com
@@ -34,6 +34,9 @@ $!
$! "" 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).
$!
$! P8, if defined, specifies a directory where ZLIB files (zlib.h,
$! libz.olb) may be found. Optionally, a non-default object library
@@ -608,11 +611,14 @@ $ IF (OPT_POINTER_SIZE .EQS. "32")
$ THEN
$ POINTER_SIZE = "/POINTER_SIZE=32"
$ ELSE
-$ IF (OPT_POINTER_SIZE .EQS. "64")
+$ POINTER_SIZE = F$EDIT( OPT_POINTER_SIZE, "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 = ""
+$ POINTER_SIZE = "/POINTER_SIZE=64"
$ ELSE
$!
$! Tell The User Entered An Invalid Option.
@@ -621,9 +627,16 @@ $ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT "The Option ", OPT_POINTER_SIZE, -
" 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.
@@ -742,7 +755,7 @@ $ CCDEFS = "TCPIP_TYPE_''OPT_TCPIP_LIB',DSO_VMS"
$ IF F$TYPE(USER_CCDEFS) .NES. "" THEN CCDEFS = CCDEFS + "," + USER_CCDEFS
$ CCEXTRAFLAGS = ""
$ IF F$TYPE(USER_CCFLAGS) .NES. "" THEN CCEXTRAFLAGS = USER_CCFLAGS
-$ CCDISABLEWARNINGS = "LONGLONGTYPE,LONGLONGSUFX"
+$ CCDISABLEWARNINGS = "" !!! "LONGLONGTYPE,LONGLONGSUFX"
$ IF F$TYPE(USER_CCDISABLEWARNINGS) .NES. "" THEN -
CCDISABLEWARNINGS = CCDISABLEWARNINGS + "," + USER_CCDISABLEWARNINGS
$!
@@ -821,8 +834,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
$!
diff --git a/makevms.com b/makevms.com
index 2800760c67..516937e86c 100755
--- a/makevms.com
+++ b/makevms.com
@@ -32,11 +32,15 @@ $! APPS Just build the "[.xxx.EXE.APPS]" application programs for Open
$! ENGINES Just build the "[.xxx.EXE.ENGINES]" application programs for OpenSSL.
$!
$! P2, 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])
+$! "" 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).
$!
$! P3 specifies DEBUG or NODEBUG, to compile with or without debugging
$! information.
@@ -1045,9 +1049,11 @@ $ IF (P2 .EQS. "32")
$ THEN
$ POINTER_SIZE = "32"
$ ELSE
-$ IF (P2 .EQS. "64")
+$ POINTER_SIZE = F$EDIT( P2, "COLLAPSE, UPCASE")
+$ IF ((POINTER_SIZE .EQS. "64") .OR. -
+ (POINTER_SIZE .EQS. "64=") .OR. -
+ (POINTER_SIZE .EQS. "64=ARGV"))
$ THEN
-$ POINTER_SIZE = "64"
$ ARCHD = ARCH+ "_64"
$ LIB32 = ""
$ ELSE
@@ -1058,9 +1064,16 @@ $ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT "The Option ", P2, -
" 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.
diff --git a/ssl/ssl-lib.com b/ssl/ssl-lib.com
index 6f7cbc0202..23e7dde8b2 100644
--- a/ssl/ssl-lib.com
+++ b/ssl/ssl-lib.com
@@ -48,6 +48,9 @@ $!
$! "" 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
@@ -158,6 +161,10 @@ $! Define The CRYPTO-LIB We Are To Use.
$!
$ CRYPTO_LIB := SYS$DISK:[-.'ARCHD'.EXE.CRYPTO]SSL_LIBCRYPTO'LIB32'.OLB
$!
+$! Set up exceptional compilations.
+$!
+$ CC5_SHOWN = 0
+$!
$! Check To See What We Are To Do.
$!
$ IF (BUILDALL.EQS."TRUE")
@@ -216,6 +223,8 @@ $ LIB_SSL = "s2_meth,s2_srvr,s2_clnt,s2_lib,s2_enc,s2_pkt,"+ -
"ssl_asn1,ssl_txt,ssl_algs,"+ -
"bio_ssl,ssl_err,kssl,tls_srp,t1_reneg"
$!
+$ COMPILEWITH_CC5 = ""
+$!
$! Tell The User That We Are Compiling The Library.
$!
$ WRITE SYS$OUTPUT "Building The ",SSL_LIB," Library."
@@ -329,6 +338,8 @@ $! End The SSL_TASK.C File Check.
$!
$ ENDIF
$!
+$ COMPILEWITH_CC5 = "" !!! ",ssl_task,"
+$!
$! Tell The User We Are Creating The SSL_TASK.
$!
$ WRITE SYS$OUTPUT "Creating SSL_TASK OSU HTTP SSL Engine."
@@ -342,11 +353,20 @@ $! Compile The File.
$!
$ ON ERROR THEN GOTO SSL_TASK_END
$!
+$ FILE_NAME0 = ","+ F$ELEMENT(0,".",FILE_NAME)+ ","
+$ IF COMPILEWITH_CC5 - FILE_NAME0 .NES. COMPILEWITH_CC5
+$ THEN
+$ if (.not. CC5_SHOWN)
+$ then
+$ CC5_SHOWN = 1
$ write sys$output " \Using special rule (5)"
$ x = " "+ CC5
$ write /symbol sys$output x
-$!
-$ CC5/OBJECT='OBJ_DIR''FILE_NAME'.OBJ SYS$DISK:[]'FILE_NAME'.C
+$ endif
+$ CC5 /OBJECT='OBJ_DIR''FILE_NAME'.OBJ SYS$DISK:[]'FILE_NAME'.C
+$ ELSE
+$ CC /OBJECT='OBJ_DIR''FILE_NAME'.OBJ SYS$DISK:[]'FILE_NAME'.C
+$ ENDIF
$!
$! Link The Program.
$!
@@ -690,11 +710,14 @@ $ 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 = ""
+$ POINTER_SIZE = "/POINTER_SIZE=64"
$ ELSE
$!
$! Tell The User Entered An Invalid Option.
@@ -703,9 +726,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.
@@ -824,7 +854,7 @@ $ CCDEFS = "TCPIP_TYPE_''P4'"
$ IF F$TYPE(USER_CCDEFS) .NES. "" THEN CCDEFS = CCDEFS + "," + USER_CCDEFS
$ CCEXTRAFLAGS = ""
$ IF F$TYPE(USER_CCFLAGS) .NES. "" THEN CCEXTRAFLAGS = USER_CCFLAGS
-$ CCDISABLEWARNINGS = "LONGLONGTYPE,LONGLONGSUFX,FOUNDCR"
+$ CCDISABLEWARNINGS = "" !!! "LONGLONGTYPE,LONGLONGSUFX,FOUNDCR"
$ IF F$TYPE(USER_CCDISABLEWARNINGS) .NES. "" THEN -
CCDISABLEWARNINGS = CCDISABLEWARNINGS + "," + USER_CCDISABLEWARNINGS
$!
@@ -904,8 +934,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.
diff --git a/test/maketests.com b/test/maketests.com
index 83325a0322..1e803a2b5f 100644
--- a/test/maketests.com
+++ b/test/maketests.com
@@ -25,7 +25,7 @@ $! VAXC For VAX C.
$! DECC For DEC C.
$! GNUC For GNU C.
$!
-$! If you don't speficy a compiler, it will try to determine which
+$! If you don't specify a compiler, it will try to determine which
$! "C" compiler to use.
$!
$! P3, if defined, sets a TCP/IP library to use, through one of the following
@@ -43,6 +43,9 @@ $!
$! "" 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).
$!
$! P6, if defined, specifies a directory where ZLIB files (zlib.h,
$! libz.olb) may be found. Optionally, a non-default object library
@@ -536,13 +539,22 @@ $ IF (P5 .EQS. "32")
$ THEN
$ POINTER_SIZE = "/POINTER_SIZE=32"
$ ELSE
-$ IF (P5 .EQS. "64")
+$ POINTER_SIZE = F$EDIT( P5, "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:
@@ -554,14 +566,14 @@ $ ! 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.
@@ -570,9 +582,16 @@ $ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT "The Option ", P5, -
" 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.