Base code merged to SPIN 2.4
[platform/upstream/curl.git] / packages / vms / generate_config_vms_h_curl.com
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, 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 disble this in th 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_AXTLS"
329 $write cvh "#undef USE_AXTLS"
330 $write cvh "#endif"
331 $write cvh "#ifdef USE_CYASSL"
332 $write cvh "#undef USE_CYASSL"
333 $write cvh "#endif"
334 $write cvh "#ifdef USE_DARWINSSL"
335 $write cvh "#undef USE_DARWINSSL"
336 $write cvh "#endif"
337 $write cvh "#ifdef USE_GNUTLS"
338 $write cvh "#undef USE_GNUTLS"
339 $write cvh "#endif"
340 $write cvh "#ifdef USE_GNUTLS_NETTLE"
341 $write cvh "#undef USE_GNUTLS_NETTLE"
342 $write cvh "#endif"
343 $write cvh "#ifdef USE_LIBRTMP"
344 $write cvh "#undef USE_LIBRTMP"
345 $write cvh "#endif"
346 $write cvh "#ifdef USE_MANUAL"
347 $write cvh "#undef USE_MANUAL"
348 $write cvh "#endif"
349 $write cvh "#ifdef USE_NGHTTP2"
350 $write cvh "#undef USE_NGHTTP2"
351 $write cvh "#endif"
352 $write cvh "#ifdef USE_NSS"
353 $write cvh "#undef USE_NSS"
354 $write cvh "#endif"
355 $write cvh "#ifdef USE_OPENLDAP"
356 $write cvh "#undef USE_OPENLDAP"
357 $write cvh "#endif"
358 $write cvh "#ifdef USE_POLARSSL"
359 $write cvh "#undef USE_POLARSSL"
360 $write cvh "#endif"
361 $write cvh "#ifdef USE_SCHANNEL"
362 $write cvh "#undef USE_SCHANNEL"
363 $write cvh "#endif"
364 $write cvh "#ifdef USE_THREADS_POSIX"
365 $write cvh "#undef USE_THREADS_POSIX"
366 $write cvh "#endif"
367 $write cvh "#ifdef USE_TLS_SRP"
368 $write cvh "#undef USE_TLS_SRP"
369 $write cvh "#endif"
370 $write cvh "#ifdef USE_UNIX_SOCKETS"
371 $write cvh "#undef USE_UNIX_SOCKETS"
372 $write cvh "#endif"
373 $write cvh "#ifdef USE_WINDOWS_SSPI"
374 $write cvh "#undef USE_WINDOWS_SSPI"
375 $write cvh "#endif"
376 $!
377 $write cvh "#ifndef HAVE_OLD_GSSMIT"
378 $write cvh "#define gss_nt_service_name GSS_C_NT_HOSTBASED_SERVICE"
379 $write cvh "#endif"
380 $!
381 $!
382 $! Note:
383 $! The CURL_EXTERN_SYMBOL is used for platforms that need the compiler
384 $! to know about universal symbols.  VMS does not need this support so
385 $! we do not set it here.
386 $!
387 $!
388 $! I can not figure out where the C compiler is finding the ALLOCA.H file
389 $! in the text libraries, so CONFIG_H.COM can not find it either.
390 $! Usually the header file name is the module name in the text library.
391 $! It does not appear to hurt anything to not find header file, so we
392 $! are not overriding it here.
393 $!
394 $!
395 $! Check to see if OpenSSL is present.
396 $!----------------------------------
397 $ssl_include = f$trnlnm("OPENSSL")
398 $if ssl_include .eqs. ""
399 $then
400 $    ssl_include = f$trnlnm("ssl$include")
401 $endif
402 $if ssl_include .eqs. "" then nossl = 1
403 $!
404 $if .not. nossl
405 $then
406 $!
407 $   write cvh "#ifndef USE_OPENSSL"
408 $   write cvh "#define USE_OPENSSL 1"
409 $   write cvh "#endif"
410 $   write cvh "#ifndef USE_SSLEAY"
411 $   write cvh "#define USE_SSLEAY 1"
412 $   write cvh "#endif"
413 $   if arch_name .eqs. "VAX"
414 $   then
415 $       old_mes = f$enviroment("message")
416 $       set message/notext/nofaci/noseve/noident
417 $       search/output=nla0: ssl$include:*.h CONF_MFLAGS_IGNORE_MISSING_FILE
418 $       status = $severity
419 $       set message'old_mes'
420 $       if status .nes. "1"
421 $       then
422 $           write cvh "#define VMS_OLD_SSL 1"
423 $       endif
424 $   endif
425 $endif
426 $!
427 $!
428 $! LibIDN not ported to VMS at this time.
429 $! This is for international domain name support.
430 $! Allow explicit experimentation.
431 $if libidn
432 $then
433 $   write cvh "#define HAVE_IDNA_STRERROR 1"
434 $   write cvh "#define HAVE_IDNA_FREE 1"
435 $   write cvh "#define HAVE_IDNA_FREE_H 1"
436 $   write cvh "#define HAVE_LIBIDN 1"
437 $else
438 $   write cvh "#ifdef HAVE_LIBIDN"
439 $   write cvh "#undef HAVE_LIBIDN"
440 $   write cvh "#endif"
441 $endif
442 $!
443 $!
444 $! LibSSH2 not ported to VMS at this time.
445 $! Allow explicit experimentation.
446 $if libssh2
447 $then
448 $   write cvh "#define HAVE_LIBSSH2_EXIT 1"
449 $   write cvh "#define HAVE_LIBSSH2_H 1"
450 $   write cvh "#define HAVE_LIBSSH2_INIT 1"
451 $   write cvh "#define HAVE_LIBSSH2_SCP_SEND64 1"
452 $   write cvh "#define HAVE_LIBSSH2_SESSION_HANDSHAKE 1"
453 $   write cvh "#define HAVE_LIBSSH2_VERSION 1
454 $   write cvh "#define HAVE_LIBSSH2 1
455 $!
456 $   write cvh "#ifndef USE_LIBSSH2"
457 $   write cvh "#define USE_LIBSSH2 1"
458 $   write cvh "#endif"
459 $else
460 $   write cvh "#ifdef USE_LIBSSH2"
461 $   write cvh "#undef USE_LIBSSH2"
462 $   write cvh "#endif"
463 $endif
464 $!
465 $!
466 $!
467 $if .not. nozlib
468 $then
469 $   write cvh "#define HAVE_LIBZ 1"
470 $   write cvh "#define HAVE_ZLIB_H 1"
471 $endif
472 $!
473 $!
474 $! Suppress a message in curl_gssapi.c compile.
475 $write cvh "#pragma message disable notconstqual"
476 $!
477 $! Close out the file
478 $!
479 $write cvh ""
480 $write cvh "#endif /* __CONFIG_VMS_H__ */"
481 $close cvh
482 $!
483 $all_exit:
484 $exit