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