Annotation of embedaddon/curl/packages/vms/generate_config_vms_h_curl.com, revision 1.1
1.1 ! misho 1: $! File: GENERATE_CONFIG_H_CURL.COM
! 2: $!
! 3: $! $Id$
! 4: $!
! 5: $! Curl like most open source products uses a variant of a config.h file.
! 6: $! Depending on the curl version, this could be config.h or curl_config.h.
! 7: $!
! 8: $! For GNV based builds, the configure script is run and that produces
! 9: $! a [curl_]config.h file. Configure scripts on VMS generally do not
! 10: $! know how to do everything, so there is also a [-.lib]config-vms.h file
! 11: $! that has VMS specific code that compensates for bugs in some of the
! 12: $! VMS shared images.
! 13: $!
! 14: $! This generates a [curl_]config.h file and also a config_vms.h file,
! 15: $! which is used to supplement that file. Note that the config_vms.h file
! 16: $! and the [.lib]config-vms.h file do two different tasks and that the
! 17: $! filenames are slightly different.
! 18: $!
! 19: $!
! 20: $! Copyright 2013 - 2020, John Malmberg
! 21: $!
! 22: $! Permission to use, copy, modify, and/or distribute this software for any
! 23: $! purpose with or without fee is hereby granted, provided that the above
! 24: $! copyright notice and this permission notice appear in all copies.
! 25: $!
! 26: $! THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
! 27: $! WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
! 28: $! MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
! 29: $! ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
! 30: $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
! 31: $! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
! 32: $! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
! 33: $!
! 34: $!
! 35: $! 06-Jan-2013 J. Malmberg
! 36: $!
! 37: $!=========================================================================
! 38: $!
! 39: $! Allow arguments to be grouped together with comma or separated by spaces
! 40: $! Do no know if we will need more than 8.
! 41: $args = "," + p1 + "," + p2 + "," + p3 + "," + p4 + ","
! 42: $args = args + p5 + "," + p6 + "," + p7 + "," + p8 + ","
! 43: $!
! 44: $! Provide lower case version to simplify parsing.
! 45: $args_lower = f$edit(args, "LOWERCASE")
! 46: $!
! 47: $args_len = f$length(args)
! 48: $!
! 49: $if (f$getsyi("HW_MODEL") .lt. 1024)
! 50: $then
! 51: $ arch_name = "VAX"
! 52: $else
! 53: $ arch_name = ""
! 54: $ arch_name = arch_name + f$edit(f$getsyi("ARCH_NAME"), "UPCASE")
! 55: $ if (arch_name .eqs. "") then arch_name = "UNK"
! 56: $endif
! 57: $!
! 58: $!
! 59: $nossl = 0
! 60: $nohpssl = 1
! 61: $hpssl = 0
! 62: $libidn = 0
! 63: $libssh2 = 0
! 64: $noldap = 0
! 65: $nozlib = 0
! 66: $nokerberos = 0
! 67: $!
! 68: $! First check to see if SSL is disabled.
! 69: $!---------------------------------------
! 70: $if f$locate(",nossl,", args_lower) .lt. args_len then nossl = 1
! 71: $if .not. nossl
! 72: $then
! 73: $!
! 74: $! ssl$* logicals means HP ssl is present
! 75: $!----------------------------------------
! 76: $ if f$trnlnm("ssl$root") .nes. ""
! 77: $ then
! 78: $ nohpssl = 0
! 79: $ hpssl = 1
! 80: $ endif
! 81: $!
! 82: $! HP defines OPENSSL as SSL$INCLUDE as a convenience for linking.
! 83: $! As it is a violation of VMS standards for this to be provided,
! 84: $! some sites may have removed it, but if present, assume that
! 85: $! it indicates which OpenSSL to use.
! 86: $!------------------------------------
! 87: $ openssl_lnm = f$trnlnm("OPENSSL")
! 88: $ if (openssl_lnm .nes. "SYS$INCLUDE")
! 89: $ then
! 90: $! Non HP SSL is installed, default to use it.
! 91: $ nohpssl = 1
! 92: $ hpssl = 0
! 93: $ endif
! 94: $!
! 95: $! Now check to see if hpssl has been specifically disabled
! 96: $!----------------------------------------------------------
! 97: $ if f$locate(",nohpssl,", args_lower) .lt. args_len
! 98: $ then
! 99: $ nohpssl = 1
! 100: $ hpssl = 0
! 101: $ endif
! 102: $!
! 103: $! Finally check to see if hp ssl has been specifically included.
! 104: $!----------------------------------------------------------------
! 105: $ if f$locate(",nohpssl,", args_lower) .lt. args_len
! 106: $ then
! 107: $ nohpssl = 1
! 108: $ hpssl = 0
! 109: $ endif
! 110: $endif
! 111: $!
! 112: $! Did someone port LIBIDN in the GNV compatible way?
! 113: $!------------------------------------------------------
! 114: $if f$trnlnm("GNV$LIBIDNSHR") .nes. ""
! 115: $then
! 116: $ write sys$output "NOTICE: A LIBIDN port has been detected."
! 117: $ write sys$output " This port of curl for VMS has not been tested with it."
! 118: $ if f$locate(",libidn,", args_lower) .lt. args_len
! 119: $ then
! 120: $ libidn = 1
! 121: $ endif
! 122: $ if .not. libidn
! 123: $ then
! 124: $ write sys$output " LIBIDN support is not enabled."
! 125: $ write sys$output "Run with the ""libidn"" parameter to attempt to use."
! 126: $ else
! 127: $ write sys$output " Untested LIBIDN support requested."
! 128: $ endif
! 129: $endif
! 130: $!
! 131: $! Did someone port LIBSSH2 in the GNV compatible way?
! 132: $!------------------------------------------------------
! 133: $if f$trnlnm("GNV$LIBSSH2SHR") .nes. ""
! 134: $then
! 135: $ write sys$output "NOTICE: A LIBSSH2 port has been detected."
! 136: $ write sys$output " This port of curl for VMS has not been tested with it."
! 137: $ if f$locate(",libssh2,", args_lower) .lt. args_len
! 138: $ then
! 139: $ libssh2 = 1
! 140: $ endif
! 141: $ if .not. libssh2
! 142: $ then
! 143: $ write sys$output " LIBSSH2 support is not enabled."
! 144: $ write sys$output "Run with the ""libssh2"" parameter to attempt to use."
! 145: $ else
! 146: $ write sys$output " Untested LIBSSH2 support requested."
! 147: $ endif
! 148: $endif
! 149: $!
! 150: $! LDAP suppressed?
! 151: $if f$locate(",noldap,", args_lower) .lt. args_len
! 152: $then
! 153: $ noldap = 1
! 154: $endif
! 155: $if f$search("SYS$SHARE:LDAP$SHR.EXE") .eqs. ""
! 156: $then
! 157: $ noldap = 1
! 158: $endif
! 159: $!
! 160: $if f$locate(",nokerberos,", args_lower) .lt. args_len then nokerberos = 1
! 161: $if .not. nokerberos
! 162: $then
! 163: $! If kerberos is installed: sys$share:gss$rtl.exe exists.
! 164: $ if f$search("sys$shsare:gss$rtl.exe") .eqs. ""
! 165: $ then
! 166: $ nokerberos = 1
! 167: $ endif
! 168: $endif
! 169: $!
! 170: $!
! 171: $! Is GNV compatible LIBZ present?
! 172: $!------------------------------------------------------
! 173: $if f$trnlnm("GNV$LIBZSHR") .nes. ""
! 174: $then
! 175: $ if f$locate(",nozlib,", args_lower) .lt. args_len
! 176: $ then
! 177: $ nozlib = 1
! 178: $ endif
! 179: $! if .not. nozlib
! 180: $! then
! 181: $! write sys$output " GNV$LIBZSHR support is enabled."
! 182: $! else
! 183: $! write sys$output " GNV$LIBZSHR support is disabled by nozlib."
! 184: $! endif
! 185: $else
! 186: $ nozlib = 1
! 187: $endif
! 188: $!
! 189: $!
! 190: $! Start the configuration file.
! 191: $! Need to do a create and then an append to make the file have the
! 192: $! typical file attributes of a VMS text file.
! 193: $create sys$disk:[curl.lib]config_vms.h
! 194: $open/append cvh sys$disk:[curl.lib]config_vms.h
! 195: $!
! 196: $! Write the defines to prevent multiple includes.
! 197: $! These are probably not needed in this case,
! 198: $! but are best practice to put on all header files.
! 199: $write cvh "#ifndef __CONFIG_VMS_H__"
! 200: $write cvh "#define __CONFIG_VMS_H__"
! 201: $write cvh ""
! 202: $write cvh "/* Define cpu-machine-OS */"
! 203: $!
! 204: $! Curl uses an OS macro to set the build environment.
! 205: $!----------------------------------------------------
! 206: $! Now the DCL builds usually say xxx-HP-VMS and configure scripts
! 207: $! may put DEC or COMPAQ or HP for the middle part.
! 208: $!
! 209: $write cvh "#if defined(__alpha)"
! 210: $write cvh "#define OS ""ALPHA-HP-VMS"""
! 211: $write cvh "#elif defined(__vax)"
! 212: $write cvh "#define OS ""VAX-HP-VMS"""
! 213: $write cvh "#elif defined(__ia64)"
! 214: $write cvh "#define OS ""IA64-HP-VMS""
! 215: $write cvh "#else"
! 216: $write cvh "#define OS ""UNKNOWN-HP-VMS""
! 217: $write cvh "#endif"
! 218: $write cvh ""
! 219: $!
! 220: $! We are now setting this on the GNV build, so also do this
! 221: $! for compatibility.
! 222: $write cvh "/* Location of default ca path */"
! 223: $write cvh "#define curl_ca_path ""gnv$curl_ca_path"""
! 224: $!
! 225: $! NTLM_WB_ENABLED requires fork() but configure does not know this
! 226: $! We have to disable this in the configure command line.
! 227: $! config_h.com finds that configure defaults to it being enabled so
! 228: $! reports it. So we need to turn it off here.
! 229: $!
! 230: $write cvh "#ifdef NTLM_WB_ENABLED"
! 231: $write cvh "#undef NTLM_WB_ENABLED"
! 232: $write cvh "#endif"
! 233: $!
! 234: $! The config_h.com finds a bunch of default disable commands in
! 235: $! configure and will incorrectly disable these options. The config_h.com
! 236: $! is a generic procedure and it would break more things to try to fix it
! 237: $! to special case it for curl. So we will fix it here.
! 238: $!
! 239: $! We do them all here, even the ones that config_h.com currently gets correct.
! 240: $!
! 241: $write cvh "#ifdef CURL_DISABLE_COOKIES"
! 242: $write cvh "#undef CURL_DISABLE_COOKIES"
! 243: $write cvh "#endif"
! 244: $write cvh "#ifdef CURL_DISABLE_CRYPTO_AUTH"
! 245: $write cvh "#undef CURL_DISABLE_CRYPTO_AUTH"
! 246: $write cvh "#endif"
! 247: $write cvh "#ifdef CURL_DISABLE_DICT"
! 248: $write cvh "#undef CURL_DISABLE_DICT"
! 249: $write cvh "#endif"
! 250: $write cvh "#ifdef CURL_DISABLE_FILE"
! 251: $write cvh "#undef CURL_DISABLE_FILE"
! 252: $write cvh "#endif"
! 253: $write cvh "#ifdef CURL_DISABLE_FTP"
! 254: $write cvh "#undef CURL_DISABLE_FTP"
! 255: $write cvh "#endif"
! 256: $write cvh "#ifdef CURL_DISABLE_GOPHER"
! 257: $write cvh "#undef CURL_DISABLE_GOPHER"
! 258: $write cvh "#endif"
! 259: $write cvh "#ifdef CURL_DISABLE_HTTP"
! 260: $write cvh "#undef CURL_DISABLE_HTTP"
! 261: $write cvh "#endif"
! 262: $write cvh "#ifdef CURL_DISABLE_IMAP"
! 263: $write cvh "#undef CURL_DISABLE_IMAP"
! 264: $write cvh "#endif"
! 265: $if .not. noldap
! 266: $then
! 267: $ write cvh "#ifdef CURL_DISABLE_LDAP"
! 268: $ write cvh "#undef CURL_DISABLE_LDAP"
! 269: $ write cvh "#endif"
! 270: $ if .not. nossl
! 271: $ then
! 272: $ write cvh "#ifdef CURL_DISABLE_LDAPS"
! 273: $ write cvh "#undef CURL_DISABLE_LDAPS"
! 274: $ write cvh "#endif"
! 275: $ endif
! 276: $endif
! 277: $write cvh "#ifdef CURL_DISABLE_LIBCURL_OPTION"
! 278: $write cvh "#undef CURL_DISABLE_LIBCURL_OPTION"
! 279: $write cvh "#endif"
! 280: $write cvh "#ifndef __VAX"
! 281: $write cvh "#ifdef CURL_DISABLE_NTLM"
! 282: $write cvh "#undef CURL_DISABLE_NTLM"
! 283: $write cvh "#endif"
! 284: $write cvh "#else"
! 285: $! NTLM needs long long or int64 support, missing from DECC C.
! 286: $write cvh "#ifdef __DECC
! 287: $write cvh "#ifndef CURL_DISABLE_NTLM"
! 288: $write cvh "#define CURL_DISABLE_NTLM 1"
! 289: $write cvh "#endif"
! 290: $write cvh "#endif"
! 291: $write cvh "#endif"
! 292: $write cvh "#ifdef CURL_DISABLE_POP3"
! 293: $write cvh "#undef CURL_DISABLE_POP3"
! 294: $write cvh "#endif"
! 295: $write cvh "#ifdef CURL_DISABLE_PROXY"
! 296: $write cvh "#undef CURL_DISABLE_PROXY"
! 297: $write cvh "#endif"
! 298: $write cvh "#ifdef CURL_DISABLE_RTSP"
! 299: $write cvh "#undef CURL_DISABLE_RTSP"
! 300: $write cvh "#endif"
! 301: $write cvh "#ifdef CURL_DISABLE_SMTP"
! 302: $write cvh "#undef CURL_DISABLE_SMTP"
! 303: $write cvh "#endif"
! 304: $write cvh "#ifdef CURL_DISABLE_TELNET"
! 305: $write cvh "#undef CURL_DISABLE_TELNET"
! 306: $write cvh "#endif"
! 307: $write cvh "#ifdef CURL_DISABLE_TFTP"
! 308: $write cvh "#undef CURL_DISABLE_TFTP"
! 309: $write cvh "#endif"
! 310: $write cvh "#ifdef CURL_DISABLE_POP3"
! 311: $write cvh "#undef CURL_DISABLE_POP3"
! 312: $write cvh "#endif"
! 313: $if .not. nossl
! 314: $then
! 315: $ write cvh "#ifdef CURL_DISABLE_TLS_SRP"
! 316: $ write cvh "#undef CURL_DISABLE_TLS_SRP"
! 317: $ write cvh "#endif"
! 318: $!
! 319: $endif
! 320: $write cvh "#ifdef CURL_DISABLE_VERBOSE_STRINGS"
! 321: $write cvh "#undef CURL_DISABLE_VERBOSE_STRINGS"
! 322: $write cvh "#endif"
! 323: $!
! 324: $! configure defaults to USE_*, a real configure on VMS chooses different.
! 325: $write cvh "#ifdef USE_ARES"
! 326: $write cvh "#undef USE_ARES"
! 327: $write cvh "#endif"
! 328: $write cvh "#ifdef USE_WOLFSSL"
! 329: $write cvh "#undef USE_WOLFSSL"
! 330: $write cvh "#endif"
! 331: $write cvh "#ifdef USE_GNUTLS"
! 332: $write cvh "#undef USE_GNUTLS"
! 333: $write cvh "#endif"
! 334: $write cvh "#ifdef USE_GNUTLS_NETTLE"
! 335: $write cvh "#undef USE_GNUTLS_NETTLE"
! 336: $write cvh "#endif"
! 337: $write cvh "#ifdef USE_LIBRTMP"
! 338: $write cvh "#undef USE_LIBRTMP"
! 339: $write cvh "#endif"
! 340: $write cvh "#ifdef USE_MANUAL"
! 341: $write cvh "#undef USE_MANUAL"
! 342: $write cvh "#endif"
! 343: $write cvh "#ifdef USE_NGHTTP2"
! 344: $write cvh "#undef USE_NGHTTP2"
! 345: $write cvh "#endif"
! 346: $write cvh "#ifdef USE_NSS"
! 347: $write cvh "#undef USE_NSS"
! 348: $write cvh "#endif"
! 349: $write cvh "#ifdef USE_OPENLDAP"
! 350: $write cvh "#undef USE_OPENLDAP"
! 351: $write cvh "#endif"
! 352: $write cvh "#ifdef USE_THREADS_POSIX"
! 353: $write cvh "#undef USE_THREADS_POSIX"
! 354: $write cvh "#endif"
! 355: $write cvh "#ifdef USE_TLS_SRP"
! 356: $write cvh "#undef USE_TLS_SRP"
! 357: $write cvh "#endif"
! 358: $write cvh "#ifdef USE_UNIX_SOCKETS"
! 359: $write cvh "#undef USE_UNIX_SOCKETS"
! 360: $write cvh "#endif"
! 361: $!
! 362: $write cvh "#ifndef HAVE_OLD_GSSMIT"
! 363: $write cvh "#define gss_nt_service_name GSS_C_NT_HOSTBASED_SERVICE"
! 364: $write cvh "#endif"
! 365: $!
! 366: $!
! 367: $! Note:
! 368: $! The CURL_EXTERN_SYMBOL is used for platforms that need the compiler
! 369: $! to know about universal symbols. VMS does not need this support so
! 370: $! we do not set it here.
! 371: $!
! 372: $!
! 373: $! I can not figure out where the C compiler is finding the ALLOCA.H file
! 374: $! in the text libraries, so CONFIG_H.COM can not find it either.
! 375: $! Usually the header file name is the module name in the text library.
! 376: $! It does not appear to hurt anything to not find header file, so we
! 377: $! are not overriding it here.
! 378: $!
! 379: $!
! 380: $! Check to see if OpenSSL is present.
! 381: $!----------------------------------
! 382: $ssl_include = f$trnlnm("OPENSSL")
! 383: $if ssl_include .eqs. ""
! 384: $then
! 385: $ ssl_include = f$trnlnm("ssl$include")
! 386: $endif
! 387: $if ssl_include .eqs. "" then nossl = 1
! 388: $!
! 389: $if .not. nossl
! 390: $then
! 391: $!
! 392: $ write cvh "#ifndef USE_OPENSSL"
! 393: $ write cvh "#define USE_OPENSSL 1"
! 394: $ write cvh "#endif"
! 395: $ if arch_name .eqs. "VAX"
! 396: $ then
! 397: $ old_mes = f$environment("message")
! 398: $ set message/notext/nofaci/noseve/noident
! 399: $ search/output=nla0: ssl$include:*.h CONF_MFLAGS_IGNORE_MISSING_FILE
! 400: $ status = $severity
! 401: $ set message'old_mes'
! 402: $ if status .nes. "1"
! 403: $ then
! 404: $ write cvh "#define VMS_OLD_SSL 1"
! 405: $ endif
! 406: $ endif
! 407: $endif
! 408: $!
! 409: $!
! 410: $! LibIDN not ported to VMS at this time.
! 411: $! This is for international domain name support.
! 412: $! Allow explicit experimentation.
! 413: $if libidn
! 414: $then
! 415: $ write cvh "#define HAVE_IDNA_STRERROR 1"
! 416: $ write cvh "#define HAVE_IDNA_FREE 1"
! 417: $ write cvh "#define HAVE_IDNA_FREE_H 1"
! 418: $ write cvh "#define HAVE_LIBIDN 1"
! 419: $else
! 420: $ write cvh "#ifdef HAVE_LIBIDN"
! 421: $ write cvh "#undef HAVE_LIBIDN"
! 422: $ write cvh "#endif"
! 423: $endif
! 424: $!
! 425: $!
! 426: $! LibSSH2 not ported to VMS at this time.
! 427: $! Allow explicit experimentation.
! 428: $if libssh2
! 429: $then
! 430: $ write cvh "#define HAVE_LIBSSH2_EXIT 1"
! 431: $ write cvh "#define HAVE_LIBSSH2_H 1"
! 432: $ write cvh "#define HAVE_LIBSSH2_INIT 1"
! 433: $ write cvh "#define HAVE_LIBSSH2_SCP_SEND64 1"
! 434: $ write cvh "#define HAVE_LIBSSH2_SESSION_HANDSHAKE 1"
! 435: $ write cvh "#define HAVE_LIBSSH2_VERSION 1
! 436: $ write cvh "#define HAVE_LIBSSH2 1
! 437: $!
! 438: $ write cvh "#ifndef USE_LIBSSH2"
! 439: $ write cvh "#define USE_LIBSSH2 1"
! 440: $ write cvh "#endif"
! 441: $else
! 442: $ write cvh "#ifdef USE_LIBSSH2"
! 443: $ write cvh "#undef USE_LIBSSH2"
! 444: $ write cvh "#endif"
! 445: $endif
! 446: $!
! 447: $!
! 448: $!
! 449: $if .not. nozlib
! 450: $then
! 451: $ write cvh "#define HAVE_LIBZ 1"
! 452: $ write cvh "#define HAVE_ZLIB_H 1"
! 453: $endif
! 454: $!
! 455: $!
! 456: $! Suppress a message in curl_gssapi.c compile.
! 457: $write cvh "#pragma message disable notconstqual"
! 458: $!
! 459: $! Close out the file
! 460: $!
! 461: $write cvh ""
! 462: $write cvh "#endif /* __CONFIG_VMS_H__ */"
! 463: $close cvh
! 464: $!
! 465: $all_exit:
! 466: $exit
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>