mirror of
https://github.com/curl/curl.git
synced 2024-12-27 06:59:43 +08:00
52d302ed64
Assisted-by: Jay Satiro
Follow-up to 6357a19ff2
Closes #5036
467 lines
14 KiB
Plaintext
467 lines
14 KiB
Plaintext
$! File: GENERATE_CONFIG_H_CURL.COM
|
|
$!
|
|
$! $Id$
|
|
$!
|
|
$! Curl like most open source products uses a variant of a config.h file.
|
|
$! Depending on the curl version, this could be config.h or curl_config.h.
|
|
$!
|
|
$! For GNV based builds, the configure script is run and that produces
|
|
$! a [curl_]config.h file. Configure scripts on VMS generally do not
|
|
$! know how to do everything, so there is also a [-.lib]config-vms.h file
|
|
$! that has VMS specific code that compensates for bugs in some of the
|
|
$! VMS shared images.
|
|
$!
|
|
$! This generates a [curl_]config.h file and also a config_vms.h file,
|
|
$! which is used to supplement that file. Note that the config_vms.h file
|
|
$! and the [.lib]config-vms.h file do two different tasks and that the
|
|
$! filenames are slightly different.
|
|
$!
|
|
$!
|
|
$! Copyright 2013 - 2020, John Malmberg
|
|
$!
|
|
$! Permission to use, copy, modify, and/or distribute this software for any
|
|
$! purpose with or without fee is hereby granted, provided that the above
|
|
$! copyright notice and this permission notice appear in all copies.
|
|
$!
|
|
$! THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
$! WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
$! MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
$! ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
$! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
|
|
$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
$!
|
|
$!
|
|
$! 06-Jan-2013 J. Malmberg
|
|
$!
|
|
$!=========================================================================
|
|
$!
|
|
$! Allow arguments to be grouped together with comma or separated by spaces
|
|
$! Do no know if we will need more than 8.
|
|
$args = "," + p1 + "," + p2 + "," + p3 + "," + p4 + ","
|
|
$args = args + p5 + "," + p6 + "," + p7 + "," + p8 + ","
|
|
$!
|
|
$! Provide lower case version to simplify parsing.
|
|
$args_lower = f$edit(args, "LOWERCASE")
|
|
$!
|
|
$args_len = f$length(args)
|
|
$!
|
|
$if (f$getsyi("HW_MODEL") .lt. 1024)
|
|
$then
|
|
$ arch_name = "VAX"
|
|
$else
|
|
$ arch_name = ""
|
|
$ arch_name = arch_name + f$edit(f$getsyi("ARCH_NAME"), "UPCASE")
|
|
$ if (arch_name .eqs. "") then arch_name = "UNK"
|
|
$endif
|
|
$!
|
|
$!
|
|
$nossl = 0
|
|
$nohpssl = 1
|
|
$hpssl = 0
|
|
$libidn = 0
|
|
$libssh2 = 0
|
|
$noldap = 0
|
|
$nozlib = 0
|
|
$nokerberos = 0
|
|
$!
|
|
$! First check to see if SSL is disabled.
|
|
$!---------------------------------------
|
|
$if f$locate(",nossl,", args_lower) .lt. args_len then nossl = 1
|
|
$if .not. nossl
|
|
$then
|
|
$!
|
|
$! ssl$* logicals means HP ssl is present
|
|
$!----------------------------------------
|
|
$ if f$trnlnm("ssl$root") .nes. ""
|
|
$ then
|
|
$ nohpssl = 0
|
|
$ hpssl = 1
|
|
$ endif
|
|
$!
|
|
$! HP defines OPENSSL as SSL$INCLUDE as a convenience for linking.
|
|
$! As it is a violation of VMS standards for this to be provided,
|
|
$! some sites may have removed it, but if present, assume that
|
|
$! it indicates which OpenSSL to use.
|
|
$!------------------------------------
|
|
$ openssl_lnm = f$trnlnm("OPENSSL")
|
|
$ if (openssl_lnm .nes. "SYS$INCLUDE")
|
|
$ then
|
|
$! Non HP SSL is installed, default to use it.
|
|
$ nohpssl = 1
|
|
$ hpssl = 0
|
|
$ endif
|
|
$!
|
|
$! Now check to see if hpssl has been specifically disabled
|
|
$!----------------------------------------------------------
|
|
$ if f$locate(",nohpssl,", args_lower) .lt. args_len
|
|
$ then
|
|
$ nohpssl = 1
|
|
$ hpssl = 0
|
|
$ endif
|
|
$!
|
|
$! Finally check to see if hp ssl has been specifically included.
|
|
$!----------------------------------------------------------------
|
|
$ if f$locate(",nohpssl,", args_lower) .lt. args_len
|
|
$ then
|
|
$ nohpssl = 1
|
|
$ hpssl = 0
|
|
$ endif
|
|
$endif
|
|
$!
|
|
$! Did someone port LIBIDN in the GNV compatible way?
|
|
$!------------------------------------------------------
|
|
$if f$trnlnm("GNV$LIBIDNSHR") .nes. ""
|
|
$then
|
|
$ write sys$output "NOTICE: A LIBIDN port has been detected."
|
|
$ write sys$output " This port of curl for VMS has not been tested with it."
|
|
$ if f$locate(",libidn,", args_lower) .lt. args_len
|
|
$ then
|
|
$ libidn = 1
|
|
$ endif
|
|
$ if .not. libidn
|
|
$ then
|
|
$ write sys$output " LIBIDN support is not enabled."
|
|
$ write sys$output "Run with the ""libidn"" parameter to attempt to use."
|
|
$ else
|
|
$ write sys$output " Untested LIBIDN support requested."
|
|
$ endif
|
|
$endif
|
|
$!
|
|
$! Did someone port LIBSSH2 in the GNV compatible way?
|
|
$!------------------------------------------------------
|
|
$if f$trnlnm("GNV$LIBSSH2SHR") .nes. ""
|
|
$then
|
|
$ write sys$output "NOTICE: A LIBSSH2 port has been detected."
|
|
$ write sys$output " This port of curl for VMS has not been tested with it."
|
|
$ if f$locate(",libssh2,", args_lower) .lt. args_len
|
|
$ then
|
|
$ libssh2 = 1
|
|
$ endif
|
|
$ if .not. libssh2
|
|
$ then
|
|
$ write sys$output " LIBSSH2 support is not enabled."
|
|
$ write sys$output "Run with the ""libssh2"" parameter to attempt to use."
|
|
$ else
|
|
$ write sys$output " Untested LIBSSH2 support requested."
|
|
$ endif
|
|
$endif
|
|
$!
|
|
$! LDAP suppressed?
|
|
$if f$locate(",noldap,", args_lower) .lt. args_len
|
|
$then
|
|
$ noldap = 1
|
|
$endif
|
|
$if f$search("SYS$SHARE:LDAP$SHR.EXE") .eqs. ""
|
|
$then
|
|
$ noldap = 1
|
|
$endif
|
|
$!
|
|
$if f$locate(",nokerberos,", args_lower) .lt. args_len then nokerberos = 1
|
|
$if .not. nokerberos
|
|
$then
|
|
$! If kerberos is installed: sys$share:gss$rtl.exe exists.
|
|
$ if f$search("sys$shsare:gss$rtl.exe") .eqs. ""
|
|
$ then
|
|
$ nokerberos = 1
|
|
$ endif
|
|
$endif
|
|
$!
|
|
$!
|
|
$! Is GNV compatible LIBZ present?
|
|
$!------------------------------------------------------
|
|
$if f$trnlnm("GNV$LIBZSHR") .nes. ""
|
|
$then
|
|
$ if f$locate(",nozlib,", args_lower) .lt. args_len
|
|
$ then
|
|
$ nozlib = 1
|
|
$ endif
|
|
$! if .not. nozlib
|
|
$! then
|
|
$! write sys$output " GNV$LIBZSHR support is enabled."
|
|
$! else
|
|
$! write sys$output " GNV$LIBZSHR support is disabled by nozlib."
|
|
$! endif
|
|
$else
|
|
$ nozlib = 1
|
|
$endif
|
|
$!
|
|
$!
|
|
$! Start the configuration file.
|
|
$! Need to do a create and then an append to make the file have the
|
|
$! typical file attributes of a VMS text file.
|
|
$create sys$disk:[curl.lib]config_vms.h
|
|
$open/append cvh sys$disk:[curl.lib]config_vms.h
|
|
$!
|
|
$! Write the defines to prevent multiple includes.
|
|
$! These are probably not needed in this case,
|
|
$! but are best practice to put on all header files.
|
|
$write cvh "#ifndef __CONFIG_VMS_H__"
|
|
$write cvh "#define __CONFIG_VMS_H__"
|
|
$write cvh ""
|
|
$write cvh "/* Define cpu-machine-OS */"
|
|
$!
|
|
$! Curl uses an OS macro to set the build environment.
|
|
$!----------------------------------------------------
|
|
$! Now the DCL builds usually say xxx-HP-VMS and configure scripts
|
|
$! may put DEC or COMPAQ or HP for the middle part.
|
|
$!
|
|
$write cvh "#if defined(__alpha)"
|
|
$write cvh "#define OS ""ALPHA-HP-VMS"""
|
|
$write cvh "#elif defined(__vax)"
|
|
$write cvh "#define OS ""VAX-HP-VMS"""
|
|
$write cvh "#elif defined(__ia64)"
|
|
$write cvh "#define OS ""IA64-HP-VMS""
|
|
$write cvh "#else"
|
|
$write cvh "#define OS ""UNKNOWN-HP-VMS""
|
|
$write cvh "#endif"
|
|
$write cvh ""
|
|
$!
|
|
$! We are now setting this on the GNV build, so also do this
|
|
$! for compatibility.
|
|
$write cvh "/* Location of default ca path */"
|
|
$write cvh "#define curl_ca_path ""gnv$curl_ca_path"""
|
|
$!
|
|
$! NTLM_WB_ENABLED requires fork() but configure does not know this
|
|
$! We have to disable this in the configure command line.
|
|
$! config_h.com finds that configure defaults to it being enabled so
|
|
$! reports it. So we need to turn it off here.
|
|
$!
|
|
$write cvh "#ifdef NTLM_WB_ENABLED"
|
|
$write cvh "#undef NTLM_WB_ENABLED"
|
|
$write cvh "#endif"
|
|
$!
|
|
$! The config_h.com finds a bunch of default disable commands in
|
|
$! configure and will incorrectly disable these options. The config_h.com
|
|
$! is a generic procedure and it would break more things to try to fix it
|
|
$! to special case it for curl. So we will fix it here.
|
|
$!
|
|
$! We do them all here, even the ones that config_h.com currently gets correct.
|
|
$!
|
|
$write cvh "#ifdef CURL_DISABLE_COOKIES"
|
|
$write cvh "#undef CURL_DISABLE_COOKIES"
|
|
$write cvh "#endif"
|
|
$write cvh "#ifdef CURL_DISABLE_CRYPTO_AUTH"
|
|
$write cvh "#undef CURL_DISABLE_CRYPTO_AUTH"
|
|
$write cvh "#endif"
|
|
$write cvh "#ifdef CURL_DISABLE_DICT"
|
|
$write cvh "#undef CURL_DISABLE_DICT"
|
|
$write cvh "#endif"
|
|
$write cvh "#ifdef CURL_DISABLE_FILE"
|
|
$write cvh "#undef CURL_DISABLE_FILE"
|
|
$write cvh "#endif"
|
|
$write cvh "#ifdef CURL_DISABLE_FTP"
|
|
$write cvh "#undef CURL_DISABLE_FTP"
|
|
$write cvh "#endif"
|
|
$write cvh "#ifdef CURL_DISABLE_GOPHER"
|
|
$write cvh "#undef CURL_DISABLE_GOPHER"
|
|
$write cvh "#endif"
|
|
$write cvh "#ifdef CURL_DISABLE_HTTP"
|
|
$write cvh "#undef CURL_DISABLE_HTTP"
|
|
$write cvh "#endif"
|
|
$write cvh "#ifdef CURL_DISABLE_IMAP"
|
|
$write cvh "#undef CURL_DISABLE_IMAP"
|
|
$write cvh "#endif"
|
|
$if .not. noldap
|
|
$then
|
|
$ write cvh "#ifdef CURL_DISABLE_LDAP"
|
|
$ write cvh "#undef CURL_DISABLE_LDAP"
|
|
$ write cvh "#endif"
|
|
$ if .not. nossl
|
|
$ then
|
|
$ write cvh "#ifdef CURL_DISABLE_LDAPS"
|
|
$ write cvh "#undef CURL_DISABLE_LDAPS"
|
|
$ write cvh "#endif"
|
|
$ endif
|
|
$endif
|
|
$write cvh "#ifdef CURL_DISABLE_LIBCURL_OPTION"
|
|
$write cvh "#undef CURL_DISABLE_LIBCURL_OPTION"
|
|
$write cvh "#endif"
|
|
$write cvh "#ifndef __VAX"
|
|
$write cvh "#ifdef CURL_DISABLE_NTLM"
|
|
$write cvh "#undef CURL_DISABLE_NTLM"
|
|
$write cvh "#endif"
|
|
$write cvh "#else"
|
|
$! NTLM needs long long or int64 support, missing from DECC C.
|
|
$write cvh "#ifdef __DECC
|
|
$write cvh "#ifndef CURL_DISABLE_NTLM"
|
|
$write cvh "#define CURL_DISABLE_NTLM 1"
|
|
$write cvh "#endif"
|
|
$write cvh "#endif"
|
|
$write cvh "#endif"
|
|
$write cvh "#ifdef CURL_DISABLE_POP3"
|
|
$write cvh "#undef CURL_DISABLE_POP3"
|
|
$write cvh "#endif"
|
|
$write cvh "#ifdef CURL_DISABLE_PROXY"
|
|
$write cvh "#undef CURL_DISABLE_PROXY"
|
|
$write cvh "#endif"
|
|
$write cvh "#ifdef CURL_DISABLE_RTSP"
|
|
$write cvh "#undef CURL_DISABLE_RTSP"
|
|
$write cvh "#endif"
|
|
$write cvh "#ifdef CURL_DISABLE_SMTP"
|
|
$write cvh "#undef CURL_DISABLE_SMTP"
|
|
$write cvh "#endif"
|
|
$write cvh "#ifdef CURL_DISABLE_TELNET"
|
|
$write cvh "#undef CURL_DISABLE_TELNET"
|
|
$write cvh "#endif"
|
|
$write cvh "#ifdef CURL_DISABLE_TFTP"
|
|
$write cvh "#undef CURL_DISABLE_TFTP"
|
|
$write cvh "#endif"
|
|
$write cvh "#ifdef CURL_DISABLE_POP3"
|
|
$write cvh "#undef CURL_DISABLE_POP3"
|
|
$write cvh "#endif"
|
|
$if .not. nossl
|
|
$then
|
|
$ write cvh "#ifdef CURL_DISABLE_TLS_SRP"
|
|
$ write cvh "#undef CURL_DISABLE_TLS_SRP"
|
|
$ write cvh "#endif"
|
|
$!
|
|
$endif
|
|
$write cvh "#ifdef CURL_DISABLE_VERBOSE_STRINGS"
|
|
$write cvh "#undef CURL_DISABLE_VERBOSE_STRINGS"
|
|
$write cvh "#endif"
|
|
$!
|
|
$! configure defaults to USE_*, a real configure on VMS chooses different.
|
|
$write cvh "#ifdef USE_ARES"
|
|
$write cvh "#undef USE_ARES"
|
|
$write cvh "#endif"
|
|
$write cvh "#ifdef USE_WOLFSSL"
|
|
$write cvh "#undef USE_WOLFSSL"
|
|
$write cvh "#endif"
|
|
$write cvh "#ifdef USE_GNUTLS"
|
|
$write cvh "#undef USE_GNUTLS"
|
|
$write cvh "#endif"
|
|
$write cvh "#ifdef USE_GNUTLS_NETTLE"
|
|
$write cvh "#undef USE_GNUTLS_NETTLE"
|
|
$write cvh "#endif"
|
|
$write cvh "#ifdef USE_LIBRTMP"
|
|
$write cvh "#undef USE_LIBRTMP"
|
|
$write cvh "#endif"
|
|
$write cvh "#ifdef USE_MANUAL"
|
|
$write cvh "#undef USE_MANUAL"
|
|
$write cvh "#endif"
|
|
$write cvh "#ifdef USE_NGHTTP2"
|
|
$write cvh "#undef USE_NGHTTP2"
|
|
$write cvh "#endif"
|
|
$write cvh "#ifdef USE_NSS"
|
|
$write cvh "#undef USE_NSS"
|
|
$write cvh "#endif"
|
|
$write cvh "#ifdef USE_OPENLDAP"
|
|
$write cvh "#undef USE_OPENLDAP"
|
|
$write cvh "#endif"
|
|
$write cvh "#ifdef USE_THREADS_POSIX"
|
|
$write cvh "#undef USE_THREADS_POSIX"
|
|
$write cvh "#endif"
|
|
$write cvh "#ifdef USE_TLS_SRP"
|
|
$write cvh "#undef USE_TLS_SRP"
|
|
$write cvh "#endif"
|
|
$write cvh "#ifdef USE_UNIX_SOCKETS"
|
|
$write cvh "#undef USE_UNIX_SOCKETS"
|
|
$write cvh "#endif"
|
|
$!
|
|
$write cvh "#ifndef HAVE_OLD_GSSMIT"
|
|
$write cvh "#define gss_nt_service_name GSS_C_NT_HOSTBASED_SERVICE"
|
|
$write cvh "#endif"
|
|
$!
|
|
$!
|
|
$! Note:
|
|
$! The CURL_EXTERN_SYMBOL is used for platforms that need the compiler
|
|
$! to know about universal symbols. VMS does not need this support so
|
|
$! we do not set it here.
|
|
$!
|
|
$!
|
|
$! I can not figure out where the C compiler is finding the ALLOCA.H file
|
|
$! in the text libraries, so CONFIG_H.COM can not find it either.
|
|
$! Usually the header file name is the module name in the text library.
|
|
$! It does not appear to hurt anything to not find header file, so we
|
|
$! are not overriding it here.
|
|
$!
|
|
$!
|
|
$! Check to see if OpenSSL is present.
|
|
$!----------------------------------
|
|
$ssl_include = f$trnlnm("OPENSSL")
|
|
$if ssl_include .eqs. ""
|
|
$then
|
|
$ ssl_include = f$trnlnm("ssl$include")
|
|
$endif
|
|
$if ssl_include .eqs. "" then nossl = 1
|
|
$!
|
|
$if .not. nossl
|
|
$then
|
|
$!
|
|
$ write cvh "#ifndef USE_OPENSSL"
|
|
$ write cvh "#define USE_OPENSSL 1"
|
|
$ write cvh "#endif"
|
|
$ if arch_name .eqs. "VAX"
|
|
$ then
|
|
$ old_mes = f$environment("message")
|
|
$ set message/notext/nofaci/noseve/noident
|
|
$ search/output=nla0: ssl$include:*.h CONF_MFLAGS_IGNORE_MISSING_FILE
|
|
$ status = $severity
|
|
$ set message'old_mes'
|
|
$ if status .nes. "1"
|
|
$ then
|
|
$ write cvh "#define VMS_OLD_SSL 1"
|
|
$ endif
|
|
$ endif
|
|
$endif
|
|
$!
|
|
$!
|
|
$! LibIDN not ported to VMS at this time.
|
|
$! This is for international domain name support.
|
|
$! Allow explicit experimentation.
|
|
$if libidn
|
|
$then
|
|
$ write cvh "#define HAVE_IDNA_STRERROR 1"
|
|
$ write cvh "#define HAVE_IDNA_FREE 1"
|
|
$ write cvh "#define HAVE_IDNA_FREE_H 1"
|
|
$ write cvh "#define HAVE_LIBIDN 1"
|
|
$else
|
|
$ write cvh "#ifdef HAVE_LIBIDN"
|
|
$ write cvh "#undef HAVE_LIBIDN"
|
|
$ write cvh "#endif"
|
|
$endif
|
|
$!
|
|
$!
|
|
$! LibSSH2 not ported to VMS at this time.
|
|
$! Allow explicit experimentation.
|
|
$if libssh2
|
|
$then
|
|
$ write cvh "#define HAVE_LIBSSH2_EXIT 1"
|
|
$ write cvh "#define HAVE_LIBSSH2_H 1"
|
|
$ write cvh "#define HAVE_LIBSSH2_INIT 1"
|
|
$ write cvh "#define HAVE_LIBSSH2_SCP_SEND64 1"
|
|
$ write cvh "#define HAVE_LIBSSH2_SESSION_HANDSHAKE 1"
|
|
$ write cvh "#define HAVE_LIBSSH2_VERSION 1
|
|
$ write cvh "#define HAVE_LIBSSH2 1
|
|
$!
|
|
$ write cvh "#ifndef USE_LIBSSH2"
|
|
$ write cvh "#define USE_LIBSSH2 1"
|
|
$ write cvh "#endif"
|
|
$else
|
|
$ write cvh "#ifdef USE_LIBSSH2"
|
|
$ write cvh "#undef USE_LIBSSH2"
|
|
$ write cvh "#endif"
|
|
$endif
|
|
$!
|
|
$!
|
|
$!
|
|
$if .not. nozlib
|
|
$then
|
|
$ write cvh "#define HAVE_LIBZ 1"
|
|
$ write cvh "#define HAVE_ZLIB_H 1"
|
|
$endif
|
|
$!
|
|
$!
|
|
$! Suppress a message in curl_gssapi.c compile.
|
|
$write cvh "#pragma message disable notconstqual"
|
|
$!
|
|
$! Close out the file
|
|
$!
|
|
$write cvh ""
|
|
$write cvh "#endif /* __CONFIG_VMS_H__ */"
|
|
$close cvh
|
|
$!
|
|
$all_exit:
|
|
$exit
|