Annotation of embedaddon/curl/packages/vms/config_h.com, revision 1.1.1.1
1.1 misho 1: $! File: config_h.com
2: $!
3: $! $Id: config_h.com,v 1.1.1.1 2012/12/02 19:25:21 wb8tyw Exp $
4: $!
5: $! This procedure attempts to figure out how to build a config.h file
6: $! for the current project.
7: $!
8: $! P1 specifies the config.h.in file or equivalent. If it is not specified
9: $! then this procedure will search for several common names of the file.
10: $!
11: $! The CONFIGURE shell script will be examined for hints and a few symbols
12: $! but most of the tests will not produce valid results on OpenVMS. Some
13: $! will produce false positives and some will produce false negatives.
14: $!
15: $! It is easier to just read the config.h_in file and make up tests based
16: $! on what is in it!
17: $!
18: $! This file will create an empty config_vms.h file if one does not exist.
19: $! The config_vms.h is intended for manual edits to handle things that
20: $! this procedure can not.
21: $!
22: $! The config_vms.h will be invoked by the resulting config.h file.
23: $!
24: $! This procedure knows about the DEC C RTL on the system it is on.
25: $! Future versions may be handle the GNV, the OpenVMS porting library,
26: $! and others.
27: $!
28: $! This procedure may not guess the options correctly for all architectures,
29: $! and is a work in progress.
30: $!
31: $! Copyright 2011 - 2020, John Malmberg
32: $!
33: $! Permission to use, copy, modify, and/or distribute this software for any
34: $! purpose with or without fee is hereby granted, provided that the above
35: $! copyright notice and this permission notice appear in all copies.
36: $!
37: $! THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
38: $! WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
39: $! MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
40: $! ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
41: $! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
42: $! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
43: $! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
44: $!
45: $! 15-Jan-2001 J. Malmberg Original
46: $! 29-Apr-2001 J. Malmberg Also look for config.*in* in a [.include]
47: $! subdirectory
48: $! 30-Apr-2001 J. Malmberg Update for SAMBA checks
49: $! 09-Apr-2005 J. Malmberg Update for RSYNC and large file.
50: $! 29-Sep-2011 J. Malmberg Update for Bash 4.2
51: $! 01-Mar-2012 J. Malmberg Warn about getcwd(0,0)
52: $! 21-Dec-2012 J. Malmberg Update for gawk
53: $! 29-Dec-2012 J. Malmberg Update for curl
54: $!============================================================================
55: $!
56: $ss_normal = 1
57: $ss_abort = 44
58: $ss_control_y = 1556
59: $status = ss_normal
60: $on control_y then goto control_y
61: $on warning then goto general_error
62: $!on warning then set ver
63: $!
64: $! Some information for writing timestamps to created files
65: $!----------------------------------------------------------
66: $my_proc = f$environment("PROCEDURE")
67: $my_proc_file = f$parse(my_proc,,,"NAME") + f$parse(my_proc,,,"TYPE")
68: $tab[0,8] = 9
69: $datetime = f$element(0,".",f$cvtime(,"ABSOLUTE","DATETIME"))
70: $username = f$edit(f$getjpi("","USERNAME"),"TRIM")
71: $!
72: $pid = f$getjpi("","PID")
73: $tfile1 = "SYS$SCRATCH:config_h_temp1_''pid'.TEMP"
74: $dchfile = "SYS$SCRATCH:config_h_decc_''pid'.TEMP"
75: $starhfile = "SYS$SCRATCH:config_h_starlet_''pid'.TEMP"
76: $configure_script = "SYS$SCRATCH:configure_script_''pid'.TEMP"
77: $!
78: $! Get the system type
79: $!----------------------
80: $arch_type = f$getsyi("arch_type")
81: $!
82: $! Does config_vms.h exist?
83: $!-------------------------
84: $update_config_vms = 0
85: $file = f$search("sys$disk:[]config_vms.h")
86: $if file .nes. ""
87: $then
88: $ write sys$output "Found existing custom file ''file'."
89: $else
90: $ update_config_vms = 1
91: $ write sys$output "Creating new sys$disk:[]config_vms.h for you."
92: $ gosub write_config_vms
93: $endif
94: $!
95: $!
96: $! On some platforms, DCL search has problems with searching a file
97: $! on a NFS mounted volume. So copy it to sys$scratch:
98: $!
99: $if f$search(configure_script) .nes. "" then delete 'configure_script';*
100: $copy sys$disk:[]configure 'configure_script'
101: $!
102: $ssl_header_dir = "OPENSSL:"
103: $if f$trnlnm("OPENSSL") .eqs. ""
104: $then
105: $ ssl_header_dir = "SSL$INCLUDE:"
106: $endif
107: $!
108: $!
109: $! Write out the header
110: $!----------------------
111: $gosub write_config_h_header
112: $!
113: $!
114: $!
115: $! config.h.in could have at least five different names depending
116: $! on how it was transferred to OpenVMS
117: $!------------------------------------------------------------------
118: $if p1 .nes. ""
119: $then
120: $ cfile = p1
121: $else
122: $ cfile = f$search("sys$disk:[]config.h.in")
123: $ if cfile .eqs. ""
124: $ then
125: $ cfile = f$search("sys$disk:[]config.h_in")
126: $ if cfile .eqs. ""
127: $ then
128: $ cfile = f$search("sys$disk:[]configh.in")
129: $ if cfile .eqs. ""
130: $ then
131: $ cfile = f$search("sys$disk:[]config__2eh.in")
132: $ if cfile .eqs. ""
133: $ then
134: $ cfile = f$search("sys$disk:[]config.h__2ein")
135: $ endif
136: $ endif
137: $ endif
138: $ endif
139: $endif
140: $if f$trnlnm("PRJ_INCLUDE") .nes. ""
141: $then
142: $ cfile = f$search("PRJ_INCLUDE:config.h.in")
143: $ if cfile .eqs. ""
144: $ then
145: $ cfile = f$search("PRJ_INCLUDE:config.h_in")
146: $ if cfile .eqs. ""
147: $ then
148: $ cfile = f$search("PRJ_INCLUDE:config__2eh.in")
149: $ if cfile .eqs. ""
150: $ then
151: $ cfile = f$search("PRJ_INCLUDE:config__2eh.in")
152: $ if cfile .eqs. ""
153: $ then
154: $ cfile = f$search("PRJ_INCLUDE:config.h__2ein")
155: $ endif
156: $ endif
157: $ endif
158: $ endif
159: $endif
160: $if cfile .eqs. ""
161: $then
162: $ write sys$output "Can not find sys$disk:config.h.in"
163: $ line_out = "Looked for config.h.in, config.h_in, configh.in, "
164: $ line_out = line_out + "config__2eh.in, config.h__2ein"
165: $ write/symbol sys$output line_out
166: $ if f$trnlnm("PRJ_INCLUDE") .nes. ""
167: $ then
168: $ write sys$output "Also looked in PRJ_INCLUDE: for these files."
169: $ endif
170: $!
171: $ write tf ""
172: $ write tf -
173: " /* Could not find sys$disk:config.h.in */"
174: $ write tf -
175: " /* Looked also for config.h_in, configh.in, config__2eh.in, */"
176: $ write tf -
177: " /* config.h__2ein */"
178: $ if f$trnlnm("PRJ_INCLUDE") .nes. ""
179: $ then
180: $ write tf -
181: " /* Also looked in PRJ_INCLUDE: for these files. */"
182: $ endif
183: $ write tf -
184: "/*--------------------------------------------------------------*/
185: $ write tf ""
186: $ goto write_tail
187: $endif
188: $!
189: $!
190: $! Locate the DECC libraries in use
191: $!-----------------------------------
192: $decc_rtldef = f$parse("decc$rtldef","sys$library:.tlb;0")
193: $decc_starletdef = f$parse("sys$starlet_c","sys$library:.tlb;0")
194: $decc_shr = f$parse("decc$shr","sys$share:.exe;0")
195: $!
196: $! Dump the DECC header names into a file
197: $!----------------------------------------
198: $if f$search(dchfile) .nes. "" then delete 'dchfile';*
199: $if f$search(tfile1) .nes. "" then delete 'tfile1';*
200: $define/user sys$output 'tfile1'
201: $library/list 'decc_rtldef'
202: $open/read/error=rtldef_loop1_end tf1 'tfile1'
203: $open/write/error=rtldef_loop1_end tf2 'dchfile'
204: $rtldef_loop1:
205: $ read/end=rtldef_loop1_end tf1 line_in
206: $ line_in = f$edit(line_in,"TRIM,COMPRESS")
207: $ key1 = f$element(0," ",line_in)
208: $ key2 = f$element(1," ",line_in)
209: $ if key1 .eqs. " " .or. key1 .eqs. "" then goto rtldef_loop1
210: $ if key2 .nes. " " .and. key2 .nes. "" then goto rtldef_loop1
211: $ write tf2 "|",key1,"|"
212: $ goto rtldef_loop1
213: $rtldef_loop1_end:
214: $if f$trnlnm("tf1","lnm$process",,"SUPERVISOR") .nes. "" then close tf1
215: $if f$trnlnm("tf2","lnm$process",,"SUPERVISOR") .nes. "" then close tf2
216: $if f$search(tfile1) .nes. "" then delete 'tfile1';*
217: $!
218: $! Dump the STARLET header names into a file
219: $!----------------------------------------
220: $if f$search(starhfile) .nes. "" then delete 'starhfile';*
221: $if f$search(tfile1) .nes. "" then delete 'tfile1';*
222: $define/user sys$output 'tfile1'
223: $library/list 'decc_starletdef'
224: $open/read/error=stardef_loop1_end tf1 'tfile1'
225: $open/write/error=stardef_loop1_end tf2 'starhfile'
226: $stardef_loop1:
227: $ read/end=stardef_loop1_end tf1 line_in
228: $ line_in = f$edit(line_in,"TRIM,COMPRESS")
229: $ key1 = f$element(0," ",line_in)
230: $ key2 = f$element(1," ",line_in)
231: $ if key1 .eqs. " " .or. key1 .eqs. "" then goto stardef_loop1
232: $ if key2 .nes. " " .and. key2 .nes. "" then goto stardef_loop1
233: $ write tf2 "|",key1,"|"
234: $ goto stardef_loop1
235: $stardef_loop1_end:
236: $if f$trnlnm("tf1","lnm$process",,"SUPERVISOR") .nes. "" then close tf1
237: $if f$trnlnm("tf2","lnm$process",,"SUPERVISOR") .nes. "" then close tf2
238: $if f$search(tfile1) .nes. "" then delete 'tfile1';*
239: $!
240: $!
241: $! Now calculate what should be in the file from reading
242: $! config.h.in and CONFIGURE.
243: $!---------------------------------------------------------------
244: $open/read inf 'cfile'
245: $do_comment = 0
246: $if_block = 0
247: $cfgh_in_loop1:
248: $!set nover
249: $ read/end=cfgh_in_loop1_end inf line_in
250: $ xline = f$edit(line_in,"TRIM,COMPRESS")
251: $!
252: $! Blank line handling
253: $!---------------------
254: $ if xline .eqs. ""
255: $ then
256: $ write tf ""
257: $ goto cfgh_in_loop1
258: $ endif
259: $ xlen = f$length(xline)
260: $ key = f$extract(0,2,xline)
261: $!
262: $! deal with comments by copying exactly
263: $!-----------------------------------------
264: $ if (do_comment .eq. 1) .or. (key .eqs. "/*")
265: $ then
266: $ do_comment = 1
267: $ write tf line_in
268: $ key = f$extract(xlen - 2, 2, xline)
269: $ if key .eqs. "*/" then do_comment = 0
270: $ goto cfgh_in_loop1
271: $ endif
272: $!
273: $! Some quick parsing
274: $!----------------------
275: $ keyif = f$extract(0,3,xline)
276: $ key1 = f$element(0," ",xline)
277: $ key2 = f$element(1," ",xline)
278: $ key2a = f$element(0,"_",key2)
279: $ key2b = f$element(1,"_",key2)
280: $ key2_len = f$length(key2)
281: $ key2_h = f$extract(key2_len - 2, 2, key2)
282: $ key2_t = f$extract(key2_len - 5, 5, key2)
283: $ if key2_t .eqs. "_TYPE" then key2_h = "_T"
284: $ key64 = 0
285: $ if f$locate("64", xline) .lt. xlen then key64 = 1
286: $!
287: $!write sys$output "xline = ''xline'"
288: $!
289: $! Comment out this section of the ifblock
290: $!-----------------------------------------
291: $ if if_block .ge. 3
292: $ then
293: $ write tf "/* ", xline, " */"
294: $ if keyif .eqs. "#en" then if_block = 0
295: $ goto cfgh_in_loop1
296: $ endif
297: $!
298: $! Handle the end of an ifblock
299: $!-------------------------------
300: $ if keyif .eqs. "#en"
301: $ then
302: $ write tf xline
303: $ if_block = 0
304: $ goto cfgh_in_loop1
305: $ endif
306: $!
307: $ if key1 .eqs. "#ifndef"
308: $ then
309: $! Manual check for _ALL_SOURCE on AIX error
310: $!-----------------------------------------------
311: $ if key2 .eqs. "_ALL_SOURCE"
312: $ then
313: $ write tf "/* ", xline, " */"
314: $!
315: $! Ignore the rest of the block
316: $!--------------------------------------
317: $ if_block = 3
318: $ goto cfgh_in_loop1
319: $ endif
320: $ endif
321: $!
322: $!
323: $! Default action for an #if/#else/#endif
324: $!------------------------------------------
325: $ if keyif .eqs. "#if" .or. keyif .eqs. "#el"
326: $ then
327: $ if_block = 1
328: $ write tf xline
329: $ goto cfgh_in_loop1
330: $ endif
331: $!
332: $!
333: $! Process "normal?" stuff
334: $!---------------------------
335: $ if key1 .eqs. "#undef"
336: $ then
337: $ key2c = f$element(2, "_", key2)
338: $ if (key2c .eqs. "_") .or. (key2c .eqs. "H") then key2c = ""
339: $ key2d = f$element(3, "_", key2)
340: $ if (key2d .eqs. "_") .or. (key2d .eqs. "H") then key2d = ""
341: $ key2e = f$element(4, "_", key2)
342: $ if (key2e .eqs. "_") .or. (key2e .eqs. "H") then key2e = ""
343: $ if key2d .eqs. "T"
344: $ then
345: $ if key2e .eqs. "TYPE"
346: $ then
347: $ key2_h = "_T"
348: $ key2d = ""
349: $ endif
350: $ endif
351: $!
352: $ double_under = 0
353: $!
354: $! Process FCNTL directives
355: $!-------------------------------------
356: $ if (key2b .eqs. "FCNTL") .and. (key2c .eqs. "O") .and. -
357: (key2d .eqs. "NONBLOCK")
358: $ then
359: $ write tf "#ifndef ''key2'"
360: $ write tf "#define ''key2' 1"
361: $ write tf "#endif"
362: $ goto cfgh_in_loop1
363: $ endif
364: $!
365: $! Process GETADDRINFO directives
366: $!-------------------------------------
367: $ if key2 .eqs. "GETADDRINFO_THREADSAFE"
368: $ then
369: $ write tf "#ifndef ''key2'"
370: $ write tf "#define ''key2' 1"
371: $ write tf "#endif"
372: $ goto cfgh_in_loop1
373: $ endif
374: $!
375: $! Process IOCTL directives
376: $!-------------------------------------
377: $ if (key2b .eqs. "IOCTL") .and. (key2c .nes. "")
378: $ then
379: $ if (key2c .eqs. "FIONBIO") .or. (key2c .eqs. "SIOCGIFADDR")
380: $ then
381: $ write tf "#ifndef ''key2'"
382: $ write tf "#define ''key2' 1"
383: $ write tf "#endif"
384: $ goto cfgh_in_loop1
385: $ endif
386: $ endif
387: $!
388: $!
389: $! Manual check for LL on
390: $!-----------------------------------------------
391: $ if key2 .eqs. "LL"
392: $ then
393: $ write tf "#ifndef __VAX
394: $ write tf "#define HAVE_''key2' 1"
395: $ write tf "#endif"
396: $ goto cfgh_in_loop1
397: $ endif
398: $!
399: $ if key2 .eqs. "bool_t"
400: $ then
401: $ write tf "#ifndef ''key2'"
402: $ write tf "#define ''key2' short"
403: $ write tf "#endif"
404: $ goto cfgh_in_loop1
405: $ endif
406: $!
407: $ if key2 .eqs. "bits16_t"
408: $ then
409: $ write tf "#ifndef ''key2'"
410: $ write tf "#define ''key2' short"
411: $ write tf "#endif"
412: $ goto cfgh_in_loop1
413: $ endif
414: $!
415: $ if key2 .eqs. "u_bits16_t"
416: $ then
417: $ write tf "#ifndef ''key2'"
418: $ write tf "#define ''key2' unsigned short"
419: $ write tf "#endif"
420: $ goto cfgh_in_loop1
421: $ endif
422: $!
423: $ if key2 .eqs. "bits32_t"
424: $ then
425: $ write tf "#ifndef ''key2'"
426: $ write tf "#define ''key2' int"
427: $ write tf "#endif"
428: $ goto cfgh_in_loop1
429: $ endif
430: $!
431: $ if key2 .eqs. "u_bits32_t"
432: $ then
433: $ write tf "#ifndef ''key2'"
434: $ write tf "#define ''key2' unsigned int"
435: $ write tf "#endif"
436: $ goto cfgh_in_loop1
437: $ endif
438: $!
439: $ if key2 .eqs. "intmax_t"
440: $ then
441: $ write tf "#ifndef ''key2'"
442: $ write tf "#ifdef __VAX"
443: $ write tf "#define ''key2' long"
444: $ write tf "#else"
445: $ write tf "#define ''key2' long long"
446: $ write tf "#endif"
447: $ write tf "#endif"
448: $ goto cfgh_in_loop1
449: $ endif
450: $!
451: $ if key2 .eqs. "uintmax_t"
452: $ then
453: $ write tf "#ifndef ''key2'"
454: $ write tf "#ifdef __VAX"
455: $ write tf "#define ''key2' unsigned long"
456: $ write tf "#else"
457: $ write tf "#define ''key2' unsigned long long"
458: $ write tf "#endif"
459: $ write tf "#endif"
460: $ goto cfgh_in_loop1
461: $ endif
462: $!
463: $ if key2 .eqs. "socklen_t"
464: $ then
465: $ write tf "#ifndef ''key2'"
466: $ write tf "#define ''key2' int"
467: $ write tf "#endif"
468: $ goto cfgh_in_loop1
469: $ endif
470: $!
471: $ if key2 .eqs. "GETGROUPS_T"
472: $ then
473: $ write tf "#ifndef ''key2'"
474: $ write tf "#define ''key2' gid_t"
475: $ write tf "#endif"
476: $ goto cfgh_in_loop1
477: $ endif
478: $!
479: $ if key2 .eqs. "HAVE_DECL_SYS_SIGLIST"
480: $ then
481: $ write tf "#ifndef ''key2'"
482: $ write tf "#define ''key2' 0"
483: $ write tf "#endif"
484: $ goto cfgh_in_loop1
485: $ endif
486: $!
487: $ if key2 .eqs. "HAVE_SYS_ERRLIST"
488: $ then
489: $ write tf "#ifndef ''key2'"
490: $ write tf "#define ''key2' 1"
491: $ write tf "#endif"
492: $ goto cfgh_in_loop1
493: $ endif
494: $!
495: $ if key2 .eqs. "HAVE_STRUCT_DIRENT_D_INO"
496: $ then
497: $ write tf "#ifndef ''key2'"
498: $ write tf "#define ''key2' 1"
499: $ write tf "#endif"
500: $ goto cfgh_in_loop1
501: $ endif
502: $!
503: $ if key2 .eqs. "HAVE_STRUCT_TIMEVAL"
504: $ then
505: $ write tf "#ifndef ''key2'"
506: $ write tf "#define ''key2' 1"
507: $ write tf "#endif"
508: $ goto cfgh_in_loop1
509: $ endif
510: $!
511: $! ! The header files have this information, however
512: $! ! The ioctl() call only works on sockets.
513: $! if key2 .eqs. "FIONREAD_IN_SYS_IOCTL"
514: $! then
515: $! write tf "#ifndef ''key2'"
516: $! write tf "#define ''key2' 1"
517: $! write tf "#endif"
518: $! goto cfgh_in_loop1
519: $! endif
520: $!
521: $! ! The header files have this information, however
522: $! ! The ioctl() call only works on sockets.
523: $! if key2 .eqs. "GWINSZ_IN_SYS_IOCTL"
524: $! then
525: $! write tf "#ifndef ''key2'"
526: $! write tf "#define ''key2' 1"
527: $! write tf "#endif"
528: $! goto cfgh_in_loop1
529: $! endif
530: $!
531: $! ! The header files have this information, however
532: $! ! The ioctl() call only works on sockets.
533: $! if key2 .eqs. "STRUCT_WINSIZE_IN_SYS_IOCTL"
534: $! then
535: $! write tf "#ifndef ''key2'"
536: $! write tf "#define ''key2' 0"
537: $! write tf "#endif"
538: $! goto cfgh_in_loop1
539: $! endif
540: $!
541: $ if key2 .eqs. "HAVE_STRUCT_TM_TM_ZONE"
542: $ then
543: $ write tf "#ifndef ''key2'"
544: $ write tf "#define ''key2' 1"
545: $ write tf "#endif"
546: $ goto cfgh_in_loop1
547: $ endif
548: $!
549: $ if key2 .eqs. "HAVE_TM_ZONE"
550: $ then
551: $ write tf "#ifndef ''key2'"
552: $ write tf "#define ''key2' 1"
553: $ write tf "#endif"
554: $ goto cfgh_in_loop1
555: $ endif
556: $!
557: $ if key2 .eqs. "HAVE_TIMEVAL"
558: $ then
559: $ write tf "#ifndef ''key2'"
560: $ write tf "#define ''key2' 1"
561: $ write tf "#endif"
562: $ goto cfgh_in_loop1
563: $ endif
564: $!
565: $ if key2 .eqs. "WEXITSTATUS_OFFSET"
566: $ then
567: $ write tf "#ifndef ''key2'"
568: $ write tf "#define ''key2' 2"
569: $ write tf "#endif"
570: $ goto cfgh_in_loop1
571: $ endif
572: $!
573: $ if key2 .eqs. "HAVE_GETPW_DECLS"
574: $ then
575: $ write tf "#ifndef ''key2'"
576: $ write tf "#define ''key2' 1"
577: $ write tf "#endif"
578: $ goto cfgh_in_loop1
579: $ endif
580: $!
581: $ if key2 .eqs. "HAVE_DECL_CONFSTR"
582: $ then
583: $ write tf "#ifndef ''key2'"
584: $ write tf "#define ''key2' 1"
585: $ write tf "#endif"
586: $ goto cfgh_in_loop1
587: $ endif
588: $!
589: $ if key2 .eqs. "HAVE_DECL_PRINTF"
590: $ then
591: $ write tf "#ifndef ''key2'"
592: $ write tf "#define ''key2' 1"
593: $ write tf "#endif"
594: $ goto cfgh_in_loop1
595: $ endif
596: $!
597: $ if key2 .eqs. "HAVE_DECL_SBRK"
598: $ then
599: $ write tf "#ifndef ''key2'"
600: $ write tf "#define ''key2' 1"
601: $ write tf "#endif"
602: $ goto cfgh_in_loop1
603: $ endif
604: $!
605: $ if key2 .eqs. "HAVE_DECL_STRSIGNAL"
606: $ then
607: $ write tf "#ifndef ''key2'"
608: $ write tf "#define ''key2' 0"
609: $ write tf "#endif"
610: $ goto cfgh_in_loop1
611: $ endif
612: $!
613: $ if key2a .eqs. "HAVE_DECL_STRTOLD"
614: $ then
615: $ write tf "#ifndef ''key2'"
616: $ write tf "#define ''key2' 0"
617: $ write tf "#endif"
618: $ goto cfgh_in_loop1
619: $ endif
620: $!
621: $ if key2 .eqs. "HAVE_DECL_STRTOIMAX"
622: $ then
623: $ write tf "#ifndef ''key2'"
624: $ write tf "#define ''key2' 0"
625: $ write tf "#endif"
626: $ goto cfgh_in_loop1
627: $ endif
628: $!
629: $ if key2 .eqs. "HAVE_DECL_STRTOL"
630: $ then
631: $ write tf "#ifndef ''key2'"
632: $ write tf "#define ''key2' 1"
633: $ write tf "#endif"
634: $ goto cfgh_in_loop1
635: $ endif
636: $!
637: $ if key2 .eqs. "HAVE_DECL_STRTOLL"
638: $ then
639: $ write tf "#ifndef ''key2'"
640: $ write tf "#define ''key2' 1"
641: $ write tf "#endif"
642: $ goto cfgh_in_loop1
643: $ endif
644: $!
645: $ if key2 .eqs. "HAVE_DECL_STRTOUL"
646: $ then
647: $ write tf "#ifndef ''key2'"
648: $ write tf "#define ''key2' 1"
649: $ write tf "#endif"
650: $ goto cfgh_in_loop1
651: $ endif
652: $!
653: $ if key2 .eqs. "HAVE_DECL_STRTOULL"
654: $ then
655: $ write tf "#ifndef ''key2'"
656: $ write tf "#define ''key2' 1"
657: $ write tf "#endif"
658: $ goto cfgh_in_loop1
659: $ endif
660: $!
661: $ if key2 .eqs. "HAVE_DECL_STRTOUMAX"
662: $ then
663: $ write tf "#ifndef ''key2'"
664: $ write tf "#define ''key2' 0"
665: $ write tf "#endif"
666: $ goto cfgh_in_loop1
667: $ endif
668: $!
669: $ if key2 .eqs. "GETPGRP_VOID"
670: $ then
671: $ write tf "#ifndef ''key2'"
672: $ write tf "#define ''key2' 1"
673: $ write tf "#endif"
674: $ goto cfgh_in_loop1
675: $ endif
676: $!
677: $ if key2 .eqs. "NAMED_PIPES_MISSING"
678: $ then
679: $ write tf "#ifndef ''key2'"
680: $ write tf "#define ''key2' 1"
681: $ write tf "#endif"
682: $ goto cfgh_in_loop1
683: $ endif
684: $!
685: $ if key2 .eqs. "OPENDIR_NOT_ROBUST"
686: $ then
687: $ write tf "#ifndef ''key2'"
688: $ write tf "#define ''key2' 1"
689: $ write tf "#endif"
690: $ goto cfgh_in_loop1
691: $ endif
692: $!
693: $ if key2 .eqs. "PGRP_PIPE"
694: $ then
695: $ write tf "#ifndef ''key2'"
696: $ write tf "#define ''key2' 1"
697: $ write tf "#endif"
698: $ goto cfgh_in_loop1
699: $ endif
700: $!
701: $ if key2 .eqs. "CAN_REDEFINE_GETENV"
702: $ then
703: $ write tf "#ifndef ''key2'"
704: $ write tf "#define ''key2' 1"
705: $ write tf "#endif"
706: $ goto cfgh_in_loop1
707: $ endif
708: $!
709: $ if key2 .eqs. "HAVE_PRINTF_A_FORMAT"
710: $ then
711: $ write tf "#ifndef ''key2'"
712: $ write tf "#define ''key2' 1"
713: $ write tf "#endif"
714: $ goto cfgh_in_loop1
715: $ endif
716: $!
717: $ if key2 .eqs. "CTYPE_NON_ASCII"
718: $ then
719: $ write tf "#ifndef ''key2'"
720: $ write tf "#define ''key2' 1"
721: $ write tf "#endif"
722: $ goto cfgh_in_loop1
723: $ endif
724: $!
725: $ if key2 .eqs. "HAVE_LANGINFO_CODESET"
726: $ then
727: $ write tf "#ifndef ''key2'"
728: $ write tf "#define ''key2' 0"
729: $ write tf "#endif"
730: $ goto cfgh_in_loop1
731: $ endif
732: $!
733: $! This wants execve() to do this automagically to pass.
734: $! if key2 .eqs. "HAVE_HASH_BANG_EXEC"
735: $! then
736: $! write tf "#ifndef ''key2'"
737: $! write tf "#define ''key2' 1"
738: $! write tf "#endif"
739: $! goto cfgh_in_loop1
740: $! endif
741: $!
742: $ if key2 .eqs. "ICONV_CONST"
743: $ then
744: $ write tf "#ifndef ''key2'"
745: $ write tf "#define ''key2'"
746: $ write tf "#endif"
747: $ goto cfgh_in_loop1
748: $ endif
749: $!
750: $ if key2 .eqs. "VOID_SIGHANDLER"
751: $ then
752: $ write tf "#ifndef ''key2'"
753: $ write tf "#define ''key2' 1"
754: $ write tf "#endif"
755: $ goto cfgh_in_loop1
756: $ endif
757: $!
758: $ if key2 .eqs. "HAVE_POSIX_SIGNALS"
759: $ then
760: $ write tf "#ifndef ''key2'"
761: $ write tf "#define ''key2' 1"
762: $ write tf "#endif"
763: $ goto cfgh_in_loop1
764: $ endif
765: $!
766: $ if key2 .eqs. "UNUSABLE_RT_SIGNALS"
767: $ then
768: $ write tf "#ifndef ''key2'"
769: $ write tf "#define ''key2' 1"
770: $ write tf "#endif"
771: $ goto cfgh_in_loop1
772: $ endif
773: $!
774: $ if key2a .eqs. "HAVE_DECL_FPURGE"
775: $ then
776: $ write tf "#ifndef ''key2a'"
777: $ write tf "#define ''key2a' 1"
778: $ write tf "#endif"
779: $ goto cfgh_in_loop1
780: $ endif
781: $!
782: $ if key2 .eqs. "HAVE_DECL_SETREGID"
783: $ then
784: $ write tf "#ifndef ''key2'"
785: $ write tf "#define ''key2' 1"
786: $ write tf "#endif"
787: $ goto cfgh_in_loop1
788: $ endif
789: $!
790: $ if key2 .eqs. "HAVE_POSIX_SIGSETJMP"
791: $ then
792: $ write tf "#ifndef ''key2'"
793: $ write tf "#define ''key2' 1"
794: $ write tf "#endif"
795: $ goto cfgh_in_loop1
796: $ endif
797: $!
798: $ if key2 .eqs. "HAVE_LIBDL"
799: $ then
800: $ write tf "#ifndef ''key2'"
801: $ write tf "#define ''key2' 1"
802: $ write tf "#endif"
803: $ goto cfgh_in_loop1
804: $ endif
805: $!
806: $ if key2b .eqs. "RAND" .and. key2c .nes. "" .and. key2d .eqs. ""
807: $ then
808: $ if (key2c .eqs. "EGD") .or. -
809: (key2c .eqs. "STATUS") .or. -
810: (key2c .eqs. "SCREEN")
811: $ then
812: $ if f$search("''ssl_header_dir'rand.h") .nes. ""
813: $ then
814: $ write tf "#ifndef ''key2'"
815: $ write tf "#define ''key2' 1"
816: $ write tf "#endif"
817: $ else
818: $ write tf "/* #undef ''key2' */"
819: $ endif
820: $ endif
821: $ endif
822: $!
823: $ if key2 .eqs. "STRCOLL_BROKEN"
824: $ then
825: $ write tf "#ifndef ''key2'"
826: $ write tf "#define ''key2' 1"
827: $ write tf "#endif"
828: $ goto cfgh_in_loop1
829: $ endif
830: $!
831: $ if key2 .eqs. "DUP_BROKEN"
832: $ then
833: $ write tf "#ifndef ''key2'"
834: $ write tf "#define ''key2' 1"
835: $ write tf "#endif"
836: $ goto cfgh_in_loop1
837: $ endif
838: $!
839: $! This is for a test that getcwd(0,0) works.
840: $! It does not on VMS.
841: $!--------------------------
842: $ if key2 .eqs. "GETCWD_BROKEN"
843: $ then
844: $ write sys$output ""
845: $ write sys$output -
846: "%CONFIG_H-I-NONPORT, ''key2' being tested for!"
847: $ write sys$output -
848: "-CONFIG_H-I-GETCWD, GETCWD(0,0) does not work on VMS."
849: $ write sys$output -
850: "-CONFIG_H-I-GETCWD2, Work around hack probably required."
851: $ write sys$output -
852: "-CONFIG_H-I-REVIEW, Manual Code review required!"
853: $ if update_config_vms
854: $ then
855: $ open/append tfcv sys$disk:[]config_vms.h
856: $ write tfcv ""
857: $ write tfcv -
858: "/* Check config.h for use of ''key2' settings */"
859: $ write tfcv ""
860: $ close tfcv
861: $ endif
862: $
863: $ goto cfgh_in_loop1
864: $ endif
865: $!
866: $ if (key2a .eqs. "HAVE") .or. (key2a .eqs. "STAT") .or. -
867: (key2 .eqs. "ENABLE_IPV6") .or. (key2b .eqs. "LDAP")
868: $ then
869: $!
870: $! Process extra underscores
871: $!------------------------------------
872: $ if f$locate("HAVE___", key2) .lt. key2_len
873: $ then
874: $ key2b = "__" + key2d
875: $ key2d = ""
876: $ double_under = 1
877: $ else
878: $ if f$locate("HAVE__", key2) .lt. key2_len
879: $ then
880: $ key2b = "_" + key2c
881: $ key2c = ""
882: $ double_under = 1
883: $ endif
884: $ endif
885: $!
886: $ if (key2_h .eqs. "_H") .or. (key2 .eqs. "ENABLE_IPV6") .or. -
887: (key2b .eqs. "LDAP")
888: $ then
889: $!
890: $! Looking for a header file
891: $!---------------------------------------
892: $ headf = key2b
893: $ if key2c .nes. "" then headf = headf + "_" + key2c
894: $ if key2d .nes. "" then headf = headf + "_" + key2d
895: $!
896: $! (key2b .eqs. "READLINE")
897: $!
898: $! Some special parsing
899: $!------------------------------------------
900: $ if (key2b .eqs. "SYS") .or. (key2b .eqs. "ARPA") .or. -
901: (key2b .eqs. "NET") .or. (key2b .eqs. "NETINET")
902: $ then
903: $ if key2c .nes. ""
904: $ then
905: $ headf = key2c
906: $ if key2d .nes. "" then headf = key2c + "_" + key2d
907: $ endif
908: $ endif
909: $!
910: $! And of course what's life with out some special cases
911: $!--------------------------------------------------------------------
912: $ if key2 .eqs. "ENABLE_IPV6"
913: $ then
914: $ headf = "in6"
915: $ endif
916: $!
917: $ if key2b .eqs. "LDAP"
918: $ then
919: $ if (key2 .eqs. "HAVE_LDAP_SSL") .or. -
920: (key2 .eqs. "HAVE_LDAP_URL_PARSE")
921: $ then
922: $ headf = "ldap"
923: $ endif
924: $ endif
925: $!
926: $!
927: $ if key2b .eqs. "FILE"
928: $ then
929: $ write sys$output ""
930: $ write sys$output -
931: "%CONFIG_H-I-NONPORT, ''key2' being asked for!"
932: $ write sys$output -
933: "-CONFIG_H-I-FILE_OLD, file.h will not be configured as is obsolete!"
934: $ write sys$output -
935: "-CONFIG_H_I-FCNTL_NEW, "Expecting fcntl.h to be configured instead!"
936: $ write sys$output -
937: "-CONFIG_H_I-FCNTL_CHK, "Unable to verify at this time!"
938: $ write sys$output -
939: "-CONFIG_H-I-REVIEW, Manual Code review required!"
940: $!
941: $ if update_config_vms
942: $ then
943: $ open/append tfcv sys$disk:[]config_vms.h
944: $ write tfcv ""
945: $ write tfcv -
946: "/* Check config.h for use of fcntl.h instead of file.h */"
947: $ write tfcv ""
948: $ close tfcv
949: $ endif
950: $ endif
951: $!
952: $! Now look it up in the DEC C RTL
953: $!---------------------------------------------
954: $ define/user sys$output nl:
955: $ define/user sys$error nl:
956: $ search/output=nl: 'dchfile' |'headf'|/exact
957: $ if '$severity' .eq. 1
958: $ then
959: $ if key64 then write tf "#ifndef __VAX"
960: $ write tf "#ifndef ''key2'"
961: $ write tf "#define ''key2' 1"
962: $if p2 .nes. "" then write sys$output "''dchfile' - #define ''key2' 1"
963: $ write tf "#endif"
964: $ if key64 then write tf "#endif"
965: $set nover
966: $ goto cfgh_in_loop1
967: $ endif
968: $!
969: $!
970: $! Now look it up in the DEC C STARLET_C
971: $!---------------------------------------------
972: $ define/user sys$output nl:
973: $ define/user sys$error nl:
974: $ search/output=nl: 'starhfile' |'headf'|/exact
975: $ if '$severity' .eq. 1
976: $ then
977: $ if key64 then write tf "#ifndef __VAX"
978: $ write tf "#ifndef ''key2'"
979: $ write tf "#define ''key2' 1"
980: $if p2 .nes. "" then write sys$output "''starfile' - #define ''key2' 1"
981: $ write tf "#endif"
982: $ if key64 then write tf "#endif"
983: $set nover
984: $ goto cfgh_in_loop1
985: $ endif
986: $!
987: $! Now look for OPENSSL headers
988: $!---------------------------------------------------------
989: $ if key2b .eqs. "OPENSSL"
990: $ then
991: $ headf = headf - "OPENSSL_"
992: $ header = f$search("''ssl_header_dir'''headf'.h")
993: $ if header .nes. ""
994: $ then
995: $ write tf "#ifndef ''key2'"
996: $ write tf "#define ''key2' 1"
997: $ write tf "#endif"
998: $set nover
999: $ goto cfgh_in_loop1
1000: $ endif
1001: $ endif
1002: $!
1003: $! Now look for Kerberos
1004: $!------------------------------------------------------------
1005: $ if key2b .eqs. "GSSAPI"
1006: $ then
1007: $ header_dir = "sys$sysroot:[kerberos.include]"
1008: $ headf = headf - "GSSAPI_"
1009: $ header = f$search("''header_dir'''headf'.h")
1010: $ if header .nes. ""
1011: $ then
1012: $ write tf "#ifndef ''key2'"
1013: $ write tf "#define ''key2' 1"
1014: $ write tf "#endif"
1015: $set nover
1016: $ goto cfgh_in_loop1
1017: $ endif
1018: $ endif
1019: $!
1020: $set nover
1021: $ else
1022: $!
1023: $! Looking for a routine or a symbol
1024: $!------------------------------------------------
1025: $ if key2c .eqs. "MACRO"
1026: $ then
1027: $ if (key2b .eqs. "FILE") .or. (key2b .eqs. "DATE") -
1028: .or. (key2b .eqs. "LINE") .or. (key2b .eqs. "TIME")
1029: $ then
1030: $ write tf "#ifndef HAVE_''key2b'"
1031: $ write tf "#define HAVE_''key2b' 1"
1032: $ write tf "#endif"
1033: $ endif
1034: $ goto cfgh_in_loop1
1035: $ endif
1036: $!
1037: $! Special false tests
1038: $!-------------------------------------
1039: $ if double_under
1040: $ then
1041: $ if key2b .eqs. "_FCNTL" .or. key2b .eqs. "__FCNTL"
1042: $ then
1043: $ write tf "/* #undef HAVE_''key2b' */"
1044: $ goto cfgh_in_loop1
1045: $ endif
1046: $!
1047: $ if key2b .eqs. "_STAT" .or. key2b .eqs. "__STAT"
1048: $ then
1049: $ write tf "/* #undef HAVE_''key2b' */"
1050: $ goto cfgh_in_loop1
1051: $ endif
1052: $!
1053: $ if key2b .eqs. "_READ" .or. key2b .eqs. "__READ"
1054: $ then
1055: $ write tf "/* #undef HAVE_''key2b' */"
1056: $ goto cfgh_in_loop1
1057: $ endif
1058: $ endif
1059: $!
1060: $ keysym = key2b
1061: $ if key2c .nes. "" then keysym = keysym + "_" + key2c
1062: $ if key2d .nes. "" then keysym = keysym + "_" + key2d
1063: $ if key2e .nes. "" then keysym = keysym + "_" + key2e
1064: $!
1065: $!
1066: $! Stat structure members
1067: $!-------------------------------------
1068: $ if key2b .eqs. "STRUCT"
1069: $ then
1070: $ if key2c .eqs. "STAT" .and (key2d .nes. "")
1071: $ then
1072: $ key2b = key2b + "_" + key2c + "_" + key2d
1073: $ key2c = key2e
1074: $ key2d = ""
1075: $ key2e = ""
1076: $ endif
1077: $ endif
1078: $ if (key2b .eqs. "ST") .or. (key2b .eqs. "STRUCT_STAT_ST")
1079: $ then
1080: $ keysym = "ST" + "_" + key2c
1081: $ keysym = f$edit(keysym,"LOWERCASE")
1082: $ endif
1083: $ if key2a .eqs. "STAT"
1084: $ then
1085: $ if (f$locate("STATVFS", key2b) .eq. 0) .and. key2c .eqs. ""
1086: $ then
1087: $ keysym = f$edit(key2b, "LOWERCASE")
1088: $ endif
1089: $!$ if (key2b .eqs. "STATVFS" .or. key2b .eqs. "STATFS2" -
1090: $! .or. key2b .eqs. "STATFS3") .and. key2c .nes. ""
1091: $!
1092: $ if (key2b .eqs. "STATVFS") .and. key2c .nes. ""
1093: $ then
1094: $! Should really verify that the structure
1095: $! named by key2b actually exists first.
1096: $!------------------------------------------------------------
1097: $!
1098: $! Statvfs structure members
1099: $!-------------------------------------------------
1100: $ keysym = "f_" + f$edit(key2c,"LOWERCASE")
1101: $ endif
1102: $ endif
1103: $!
1104: $! UTMPX structure members
1105: $!--------------------------------------
1106: $ if key2b .eqs. "UT" .and. key2c .eqs. "UT"
1107: $ then
1108: $ keysym = "ut_" + f$edit(key2d,"LOWERCASE")
1109: $ endif
1110: $!
1111: $ if f$locate("MMAP",key2) .lt. key2_len
1112: $ then
1113: $ write sys$output ""
1114: $ write sys$output -
1115: "%CONFIG_H-I-NONPORT, ''key2' being asked for!"
1116: $ write sys$output -
1117: "-CONFIG_H-I-MMAP, MMAP operations only work on STREAM and BINARY files!"
1118: $ write sys$output -
1119: "-CONFIG_H-I-REVIEW, Manual Code review required!"
1120: $ if update_config_vms
1121: $ then
1122: $ open/append tfcv sys$disk:[]config_vms.h
1123: $ write tfcv ""
1124: $ write tfcv -
1125: "/* Check config.h for use of ''key2' settings */"
1126: $ write tfcv ""
1127: $ close tfcv
1128: $ endif
1129: $ endif
1130: $!
1131: $!
1132: $ if keysym .eqs. "CRYPT"
1133: $ then
1134: $ write sys$output ""
1135: $ write sys$output -
1136: "%CONFIG_H-I-NONPORT, ''key2' being asked for!"
1137: $ write sys$output -
1138: "-CONFIG_H-I-CRYPT, CRYPT operations on the VMS SYSUAF may not work!"
1139: $ write sys$output -
1140: "-CONFIG_H-I-REVIEW, Manual Code review required!"
1141: $ if update_config_vms
1142: $ then
1143: $ open/append tfcv sys$disk:[]config_vms.h
1144: $ write tfcv ""
1145: $ write tfcv -
1146: "/* Check config.h for use of ''keysym' */"
1147: $ write tfcv ""
1148: $ close tfcv
1149: $ endif
1150: $ endif
1151: $!
1152: $!
1153: $ if keysym .eqs. "EXECL"
1154: $ then
1155: $ write sys$output ""
1156: $ write sys$output -
1157: "%CONFIG_H-I-NONPORT, ''key2' being asked for!"
1158: $ write sys$output -
1159: "-CONFIG_H-I-EXCEL, EXECL configured, Will probably not work."
1160: $ write sys$output -
1161: "-CONFIG_H-I-REVIEW, Manual Code review required!"
1162: $ if update_config_vms
1163: $ then
1164: $ open/append tfcv sys$disk:[]config_vms.h
1165: $ write tfcv ""
1166: $ write tfcv -
1167: "/* Check config.h for use of ''keysym' */"
1168: $ write tfcv ""
1169: $ close tfcv
1170: $ endif
1171: $ endif
1172: $!
1173: $!
1174: $! Process if cpp supports ANSI-C stringizing '#' operator
1175: $!-----------------------------------------------------------------------
1176: $ if keysym .eqs. "STRINGIZE"
1177: $ then
1178: $ write tf "#ifndef HAVE_STRINGIZE"
1179: $ write tf "#define HAVE_STRINGSIZE 1"
1180: $ write tf "#endif"
1181: $ goto cfgh_in_loop1
1182: $ endif
1183: $!
1184: $ if keysym .eqs. "VOLATILE"
1185: $ then
1186: $ write tf "#ifndef HAVE_VOLATILE"
1187: $ write tf "#define HAVE_VOLATILE 1"
1188: $ write tf "#endif"
1189: $ goto cfgh_in_loop1
1190: $ endif
1191: $!
1192: $ if keysym .eqs. "ALLOCA"
1193: $ then
1194: $ write tf "#ifndef HAVE_ALLOCA"
1195: $ write tf "#define HAVE_ALLOCA 1"
1196: $ write tf "#endif"
1197: $ goto cfgh_in_loop1
1198: $ endif
1199: $!
1200: $ if keysym .eqs. "ERRNO_DECL"
1201: $ then
1202: $ write tf "#ifndef HAVE_ERRNO_DECL"
1203: $ write tf "#define HAVE_ERRNO_DECL 1"
1204: $ write tf "#endif"
1205: $ goto cfgh_in_loop1
1206: $ endif
1207: $!
1208: $ if keysym .eqs. "LONGLONG"
1209: $ then
1210: $ write tf "#ifndef __VAX"
1211: $ write tf "#pragma message disable longlongtype"
1212: $ write tf "#ifndef HAVE_LONGLONG"
1213: $ write tf "#define HAVE_LONGLONG 1"
1214: $ write tf "#endif"
1215: $ write tf "#endif"
1216: $ goto cfgh_in_loop1
1217: $ endif
1218: $!
1219: $! May need to test compiler version
1220: $!-----------------------------------------------
1221: $ if keysym .eqs. "LONG_LONG"
1222: $ then
1223: $ write tf "#ifndef __VAX"
1224: $ write tf "#pragma message disable longlongtype"
1225: $ write tf "#ifndef HAVE_LONG_LONG"
1226: $ write tf "#define HAVE_LONG_LONG 1"
1227: $ write tf "#endif"
1228: $ write tf "#endif"
1229: $ goto cfgh_in_loop1
1230: $ endif
1231: $!
1232: $! May need to test compiler version
1233: $!-----------------------------------------------
1234: $ if keysym .eqs. "UNSIGNED_LONG_LONG"
1235: $ then
1236: $ write tf "#ifndef __VAX"
1237: $ write tf "#pragma message disable longlongtype"
1238: $ write tf "#ifndef HAVE_UNSIGNED_LONG_LONG"
1239: $ write tf "#define HAVE_UNSIGNED_LONG_LONG 1"
1240: $ write tf "#endif"
1241: $ write tf "#endif"
1242: $ goto cfgh_in_loop1
1243: $ endif
1244: $!
1245: $! May need to test compiler version
1246: $!-----------------------------------------------
1247: $ if keysym .eqs. "UNSIGNED_LONG_LONG_INT"
1248: $ then
1249: $ write tf "#ifndef __VAX"
1250: $ write tf "#pragma message disable longlongtype"
1251: $ write tf "#ifndef HAVE_UNSIGNED_LONG_LONG_INT"
1252: $ write tf "#define HAVE_UNSIGNED_LONG_LONG_INT 1"
1253: $ write tf "#endif"
1254: $ write tf "#endif"
1255: $ goto cfgh_in_loop1
1256: $ endif
1257: $!
1258: $! May need to test compiler version
1259: $!-----------------------------------------------
1260: $ if keysym .eqs. "LONG_DOUBLE"
1261: $ then
1262: $ write tf "#ifndef __VAX"
1263: $ write tf "#pragma message disable longlongtype"
1264: $ write tf "#ifndef HAVE_LONG_DOUBLE"
1265: $ write tf "#define HAVE_LONG_DOUBLE 1"
1266: $ write tf "#endif"
1267: $ write tf "#endif"
1268: $ goto cfgh_in_loop1
1269: $ endif
1270: $!
1271: $ if keysym .eqs. "FCNTL_LOCK"
1272: $ then
1273: $ write sys$output -
1274: "%CONFIG_H-I-NONPORT, ''key2' being asked for!
1275: $ write sys$output -
1276: "-CONFIG_H-I-REVIEW, Manual Code review required!"
1277: $ goto cfgh_in_loop1
1278: $ endif
1279: $!
1280: $!
1281: $! These libraries are provided by the DEC C RTL
1282: $!-------------------------------------------------------------
1283: $ if keysym .eqs. "LIBINET" .or. keysym .eqs. "LIBSOCKET"
1284: $ then
1285: $ write tf "#ifndef HAVE_''keysym'"
1286: $ write tf "#define HAVE_''keysym' 1"
1287: $if p2 .nes. "" then write sys$output "''decc_shr' #define ''keysym' 1"
1288: $ write tf "#endif
1289: $ goto cfgh_in_loop1
1290: $ endif
1291: $!
1292: $ if keysym .eqs. "HERRNO" then keysym = "h_errno"
1293: $ if keysym .eqs. "UTIMBUF" then keysym = "utimbuf"
1294: $ if key2c .eqs. "STRUCT"
1295: $ then
1296: $ keysym = f$edit(key2d,"LOWERCASE")
1297: $ else
1298: $ if key2_h .eqs. "_T"
1299: $ then
1300: $ if key2_t .eqs. "_TYPE"
1301: $ then
1302: $ keysym = f$extract(0, key2_len - 5, key2) - "HAVE_"
1303: $ endif
1304: $ keysym = f$edit(keysym,"LOWERCASE")
1305: $ endif
1306: $ endif
1307: $!
1308: $! Check the DEC C RTL shared image first
1309: $!------------------------------------------------------
1310: $ if f$search(tfile1) .nes. "" then delete 'tfile1';*
1311: $ define/user sys$output nl:
1312: $ define/user sys$error nl:
1313: $ search/format=nonull/out='tfile1' 'decc_shr' 'keysym'
1314: $ if '$severity' .eq. 1
1315: $ then
1316: $!
1317: $! Not documented, but from observation
1318: $!------------------------------------------------------
1319: $ define/user sys$output nl:
1320: $ define/user sys$error nl:
1321: $ if arch_type .eq. 3
1322: $ then
1323: $ keyterm = "''keysym'<SOH>"
1324: $ else
1325: $ if arch_type .eq. 2
1326: $ then
1327: $ keyterm = "''keysym'<BS>"
1328: $ else
1329: $ keyterm = "''keysym'<STX>"
1330: $ endif
1331: $ endif
1332: $ search/out=nl: 'tfile1' -
1333: "$''keyterm'","$g''keyterm'","$__utc_''keyterm'",-
1334: "$__utctz_''keyterm'","$__bsd44_''keyterm'","$bsd_''keyterm'",-
1335: "$''keysym'decc$","$G''keysym'decc$","$GX''keyterm'"
1336: $ severity = '$severity'
1337: $!
1338: $!
1339: $! Of course the 64 bit stuff is different
1340: $!---------------------------------------------------------
1341: $ if severity .ne. 1 .and. key64
1342: $ then
1343: $ define/user sys$output nl:
1344: $ define/user sys$error nl:
1345: $ search/out=nl: 'tfile1' "$_''keyterm'"
1346: $! search/out 'tfile1' "$_''keyterm'"
1347: $ severity = '$severity'
1348: $ endif
1349: $!
1350: $! Unix compatibility routines
1351: $!---------------------------------------------
1352: $ if severity .ne. 1
1353: $ then
1354: $ define/user sys$output nl:
1355: $ define/user sys$error nl:
1356: $ search/out=nl: 'tfile1' -
1357: "$__unix_''keyterm'","$__vms_''keyterm'","$_posix_''keyterm'"
1358: $ severity = '$severity'
1359: $ endif
1360: $!
1361: $! Show the result of the search
1362: $!------------------------------------------------
1363: $ if 'severity' .eq. 1
1364: $ then
1365: $ if key64 then write tf "#ifndef __VAX"
1366: $ write tf "#ifndef ''key2'"
1367: $ write tf "#define ''key2' 1"
1368: $if p2 .nes. "" then write sys$output "''decc_shr' #define ''key2' 1"
1369: $ write tf "#endif"
1370: $ if key64 then write tf "#endif"
1371: $ goto cfgh_in_loop1
1372: $ endif
1373: $ endif
1374: $ if f$search(tfile1) .nes. "" then delete 'tfile1';*
1375: $!
1376: $! Check the DECC Header files next
1377: $!----------------------------------------------
1378: $ define/user sys$output nl:
1379: $ define/user sys$error nl:
1380: $ search/out=nl: 'decc_rtldef' -
1381: "''keysym';", "''keysym'[", "struct ''keysym'"/exact
1382: $ severity = '$severity'
1383: $ if severity .eq. 1
1384: $ then
1385: $ if key64 then write tf "#ifndef __VAX"
1386: $ write tf "#ifndef ''key2'"
1387: $ write tf "#define ''key2' 1"
1388: $if p2 .nes. "" then write sys$output "''decc_rtldef' #define ''key2' 1"
1389: $ write tf "#endif"
1390: $ if key64 then write tf "#endif"
1391: $ goto cfgh_in_loop1
1392: $ endif
1393: $!
1394: $! Check kerberos
1395: $!--------------------------------------------
1396: $ if f$search("SYS$SYSROOT:[kerberos]include.dir") .nes. ""
1397: $ then
1398: $ test_mit = "SYS$SYSROOT:[kerberos.include]gssapi_krb5.h"
1399: $ if (key2 .eqs. "HAVE_GSSAPI")
1400: $ then
1401: $ write tf "#ifndef ''key2'"
1402: $ write tf "#define ''key2' 1"
1403: $ write tf "#endif"
1404: $ goto cfgh_in_loop1
1405: $ endif
1406: $!
1407: $! This is really do we have the newer MIT Kerberos
1408: $!----------------------------------------------------------------------
1409: $ if (key2 .eqs. "HAVE_GSSMIT")
1410: $ then
1411: $ if f$search(test_mit) .nes. ""
1412: $ then
1413: $ write tf "#ifndef ''key2'"
1414: $ write tf "#define ''key2' 1"
1415: $ else
1416: $ write tf "#ifdef ''key2'"
1417: $ write tf "#undef ''key2'"
1418: $ endif
1419: $ write tf "#endif"
1420: $ goto cfgh_in_loop1
1421: $ endif
1422: $!
1423: $! Older MIT looks like Heimdal
1424: $!------------------------------------------------
1425: $ if (key2 .eqs. "HAVE_HEIMDAL")
1426: $ then
1427: $ if f$search(test_mit) .eqs. ""
1428: $ then
1429: $ write tf "#ifndef ''key2'"
1430: $ write tf "#define ''key2' 1"
1431: $ else
1432: $ write tf "#ifdef ''key2'"
1433: $ write tf "#undef ''key2'"
1434: $ endif
1435: $ write tf "#endif"
1436: $ goto cfgh_in_loop1
1437: $ endif
1438: $ endif
1439: $!
1440: $ endif
1441: $ write tf "/* ", xline, " */"
1442: $ goto cfgh_in_loop1
1443: $ endif
1444: $!
1445: $!
1446: $! Process SIZEOF directives found in SAMBA and others
1447: $!----------------------------------------------------------
1448: $ if key2a .eqs. "SIZEOF"
1449: $ then
1450: $ if key2b .eqs. "INO" .and. key2_h .eqs. "_T"
1451: $ then
1452: $ write tf "#ifndef SIZEOF_INO_T"
1453: $ write tf "#if !__USING_STD_STAT
1454: $ write tf "#define SIZEOF_INO_T 6"
1455: $ write tf "#else
1456: $ write tf "#define SIZEOF_INO_T 8"
1457: $ write tf "#endif
1458: $ write tf "#endif"
1459: $ goto cfgh_in_loop1
1460: $ endif
1461: $ if key2b .eqs. "INTMAX" .and. key2_h .eqs. "_T"
1462: $ then
1463: $ write tf "#ifndef SIZEOF_INTMAX_T"
1464: $ write tf "#ifdef __VAX"
1465: $ write tf "#define SIZEOF_INTMAX_T 4"
1466: $ write tf "#else"
1467: $ write tf "#define SIZEOF_INTMAX_T 8"
1468: $ write tf "#endif"
1469: $ write tf "#endif"
1470: $ goto cfgh_in_loop1
1471: $ endif
1472: $ if key2b .eqs. "OFF" .and. key2_h .eqs. "_T"
1473: $ then
1474: $ write tf "#ifndef SIZEOF_OFF_T"
1475: $ write tf "#if __USE_OFF64_T"
1476: $ write tf "#define SIZEOF_OFF_T 8"
1477: $ write tf "#else"
1478: $ write tf "#define SIZEOF_OFF_T 4"
1479: $ write tf "#endif"
1480: $ write tf "#endif"
1481: $ goto cfgh_in_loop1
1482: $ endif
1483: $ if key2b .eqs. "CHAR" .and. key2_h .eqs. "_P"
1484: $ then
1485: $ write tf "#ifndef SIZEOF_CHAR_P"
1486: $ write tf "#if __INITIAL_POINTER_SIZE == 64"
1487: $ write tf "#define SIZEOF_CHAR_P 8"
1488: $ write tf "#else"
1489: $ write tf "#define SIZEOF_CHAR_P 4"
1490: $ write tf "#endif"
1491: $ goto cfgh_in_loop1
1492: $ endif
1493: $ if key2b .eqs. "VOIDP"
1494: $ then
1495: $ write tf "#ifndef SIZEOF_VOIDP"
1496: $ write tf "#if __INITIAL_POINTER_SIZE == 64"
1497: $ write tf "#define SIZEOF_VOIDP 8"
1498: $ write tf "#else"
1499: $ write tf "#define SIZEOF_VOIDP 4"
1500: $ write tf "#endif"
1501: $ write tf "#endif"
1502: $ goto cfgh_in_loop1
1503: $ endif
1504: $ if key2b .eqs. "INT"
1505: $ then
1506: $ write tf "#ifndef SIZEOF_INT"
1507: $ write tf "#define SIZEOF_INT 4"
1508: $ write tf "#endif"
1509: $ goto cfgh_in_loop1
1510: $ endif
1511: $ if key2b .eqs. "SIZE" .and. key2_h .eqs. "_T"
1512: $ then
1513: $ write tf "#ifndef SIZEOF_SIZE_T"
1514: $ write tf "#define SIZEOF_SIZE_T 4"
1515: $ write tf "#endif"
1516: $ goto cfgh_in_loop1
1517: $ endif
1518: $ if key2b .eqs. "TIME" .and. key2_h .eqs. "_T"
1519: $ then
1520: $ write tf "#ifndef SIZEOF_TIME_T"
1521: $ write tf "#define SIZEOF_TIME_T 4"
1522: $ write tf "#endif"
1523: $ goto cfgh_in_loop1
1524: $ endif
1525: $ if key2b .eqs. "DOUBLE"
1526: $ then
1527: $ write tf "#ifndef SIZEOF_DOUBLE"
1528: $ write tf "#define SIZEOF_DOUBLE 8"
1529: $ write tf "#endif"
1530: $ goto cfgh_in_loop1
1531: $ endif
1532: $ if key2b .eqs. "LONG"
1533: $ then
1534: $ if key2c .eqs. ""
1535: $ then
1536: $ write tf "#ifndef SIZEOF_LONG"
1537: $ write tf "#define SIZEOF_LONG 4"
1538: $ write tf "#endif"
1539: $ else
1540: $ write tf "#ifndef SIZEOF_LONG_LONG"
1541: $ write tf "#ifndef __VAX"
1542: $ write tf "#define SIZEOF_LONG_LONG 8"
1543: $ write tf "#endif"
1544: $ write tf "#endif"
1545: $ endif
1546: $ goto cfgh_in_loop1
1547: $ endif
1548: $ if key2b .eqs. "SHORT"
1549: $ then
1550: $ write tf "#ifndef SIZEOF_SHORT"
1551: $ write tf "#define SIZEOF_SHORT 2"
1552: $ write tf "#endif"
1553: $ goto cfgh_in_loop1
1554: $ endif
1555: $ write tf "/* ", xline, " */"
1556: $ goto cfgh_in_loop1
1557: $ endif
1558: $!
1559: $! Process NEED directives
1560: $!-------------------------------
1561: $ if key2a .eqs. "NEED"
1562: $ then
1563: $ if key2b .eqs. "STRINGS" .and. key2_h .eqs. "_H"
1564: $ then
1565: $ write tf "#ifndef NEED_STRINGS_H"
1566: $ write tf "#define NEED_STRINGS_H 1"
1567: $ write tf "#endif"
1568: $ goto cfgh_in_loop1
1569: $ endif
1570: $ write tf "/* ", xline, " */"
1571: $ goto cfgh_in_loop1
1572: $ endif
1573: $!
1574: $! Process GETHOSTNAME directives
1575: $!-------------------------------------
1576: $ if key2 .eqs. "GETHOSTNAME_TYPE_ARG2"
1577: $ then
1578: $ write tf "#ifndef ''key2'"
1579: $ write tf "#ifdef _DECC_V4_SOURCE"
1580: $ write tf "#define ''key2' int"
1581: $ write tf "#else"
1582: $ write tf "#define ''key2' size_t"
1583: $ write tf "#endif"
1584: $ write tf "#endif"
1585: $ goto cfgh_in_loop1
1586: $ endif
1587: $!
1588: $! Process GETNAMEINFO directives
1589: $!-------------------------------------
1590: $ if key2a .eqs. "GETNAMEINFO"
1591: $ then
1592: $ if key2 .eqs. "GETNAMEINFO_QUAL_ARG1"
1593: $ then
1594: $ write tf "#ifndef ''key2'"
1595: $ write tf "#define ''key2' const"
1596: $ write tf "#endif"
1597: $ goto cfgh_in_loop1
1598: $ endif
1599: $ if key2 .eqs. "GETNAMEINFO_TYPE_ARG1"
1600: $ then
1601: $ write tf "#ifndef ''key2'"
1602: $ write tf "#define ''key2' struct sockaddr *"
1603: $ write tf "#endif"
1604: $ goto cfgh_in_loop1
1605: $ endif
1606: $ if key2 .eqs. "GETNAMEINFO_TYPE_ARG2"
1607: $ then
1608: $ write tf "#ifndef ''key2'"
1609: $ write tf "#define ''key2' size_t"
1610: $ write tf "#endif"
1611: $ goto cfgh_in_loop1
1612: $ endif
1613: $ if key2 .eqs. "GETNAMEINFO_TYPE_ARG46"
1614: $ then
1615: $ write tf "#ifndef ''key2'"
1616: $ write tf "#define ''key2' size_t"
1617: $ write tf "#endif"
1618: $ goto cfgh_in_loop1
1619: $ endif
1620: $ if key2 .eqs. "GETNAMEINFO_TYPE_ARG7"
1621: $ then
1622: $ write tf "#ifndef ''key2'"
1623: $ write tf "#define ''key2' int"
1624: $ write tf "#endif"
1625: $ goto cfgh_in_loop1
1626: $ endif
1627: $ endif
1628: $!
1629: $! Process RECV directives
1630: $!-------------------------------------
1631: $ if key2a .eqs. "RECV"
1632: $ then
1633: $ if key2 .eqs. "RECV_TYPE_ARG1"
1634: $ then
1635: $ write tf "#ifndef ''key2'"
1636: $ write tf "#define ''key2' int"
1637: $ write tf "#endif"
1638: $ goto cfgh_in_loop1
1639: $ endif
1640: $ if key2 .eqs. "RECV_TYPE_ARG2"
1641: $ then
1642: $ write tf "#ifndef ''key2'"
1643: $ write tf "#define ''key2' void *"
1644: $ write tf "#endif"
1645: $ goto cfgh_in_loop1
1646: $ endif
1647: $ if key2 .eqs. "RECV_TYPE_ARG3"
1648: $ then
1649: $ write tf "#ifndef ''key2'"
1650: $ write tf "#define ''key2' size_t"
1651: $ write tf "#endif"
1652: $ goto cfgh_in_loop1
1653: $ endif
1654: $ if key2 .eqs. "RECV_TYPE_ARG4"
1655: $ then
1656: $ write tf "#ifndef ''key2'"
1657: $ write tf "#define ''key2' int"
1658: $ write tf "#endif"
1659: $ goto cfgh_in_loop1
1660: $ endif
1661: $ if key2 .eqs. "RECV_TYPE_RETV"
1662: $ then
1663: $ write tf "#ifndef ''key2'"
1664: $ write tf "#define ''key2' int"
1665: $ write tf "#endif"
1666: $ goto cfgh_in_loop1
1667: $ endif
1668: $ endif
1669: $!
1670: $!
1671: $! Process RECVFROM directives
1672: $!-------------------------------------
1673: $ if key2a .eqs. "RECVFROM"
1674: $ then
1675: $ if key2 .eqs. "RECVFROM_QUAL_ARG5"
1676: $ then
1677: $ write tf "#ifndef ''key2'"
1678: $ write tf "#define ''key2'"
1679: $ write tf "#endif"
1680: $ goto cfgh_in_loop1
1681: $ endif
1682: $ if key2 .eqs. "RECVFROM_TYPE_ARG1"
1683: $ then
1684: $ write tf "#ifndef ''key2'"
1685: $ write tf "#define ''key2' int"
1686: $ write tf "#endif"
1687: $ goto cfgh_in_loop1
1688: $ endif
1689: $ if key2 .eqs. "RECVFROM_TYPE_ARG2"
1690: $ then
1691: $ write tf "#ifndef ''key2'"
1692: $ write tf "#define ''key2' void *"
1693: $ write tf "#endif"
1694: $ goto cfgh_in_loop1
1695: $ endif
1696: $ if key2 .eqs. "RECVFROM_TYPE_ARG3"
1697: $ then
1698: $ write tf "#ifndef ''key2'"
1699: $ write tf "#define ''key2' size_t"
1700: $ write tf "#endif"
1701: $ goto cfgh_in_loop1
1702: $ endif
1703: $ if key2 .eqs. "RECVFROM_TYPE_ARG4"
1704: $ then
1705: $ write tf "#ifndef ''key2'"
1706: $ write tf "#define ''key2' int"
1707: $ write tf "#endif"
1708: $ goto cfgh_in_loop1
1709: $ endif
1710: $ if key2 .eqs. "RECVFROM_TYPE_ARG5"
1711: $ then
1712: $ write tf "#ifndef ''key2'"
1713: $ write tf "#define ''key2' struct sockaddr"
1714: $ write tf "#endif"
1715: $ goto cfgh_in_loop1
1716: $ endif
1717: $ if key2 .eqs. "RECVFROM_TYPE_ARG6"
1718: $ then
1719: $ write tf "#ifndef ''key2'"
1720: $ write tf "#define ''key2' unsigned int"
1721: $ write tf "#endif"
1722: $ goto cfgh_in_loop1
1723: $ endif
1724: $ if key2 .eqs. "RECVFROM_TYPE_RETV"
1725: $ then
1726: $ write tf "#ifndef ''key2'"
1727: $ write tf "#define ''key2' int"
1728: $ write tf "#endif"
1729: $ goto cfgh_in_loop1
1730: $ endif
1731: $ endif
1732: $!
1733: $! Process SELECT directives
1734: $!-------------------------------------
1735: $ if key2a .eqs. "SELECT"
1736: $ then
1737: $ if key2 .eqs. "SELECT_QUAL_ARG5"
1738: $ then
1739: $ write tf "#ifndef ''key2'"
1740: $ write tf "#define ''key2' const"
1741: $ write tf "#endif"
1742: $ goto cfgh_in_loop1
1743: $ endif
1744: $ if key2 .eqs. "SELECT_TYPE_ARG1"
1745: $ then
1746: $ write tf "#ifndef ''key2'"
1747: $ write tf "#define ''key2' int"
1748: $ write tf "#endif"
1749: $ goto cfgh_in_loop1
1750: $ endif
1751: $ if key2 .eqs. "SELECT_TYPE_ARG2"
1752: $ then
1753: $ write tf "#ifndef ''key2'"
1754: $ write tf "#define ''key2' void *"
1755: $ write tf "#endif"
1756: $ goto cfgh_in_loop1
1757: $ endif
1758: $ if key2 .eqs. "SELECT_TYPE_ARG234"
1759: $ then
1760: $ write tf "#ifndef ''key2'"
1761: $ write tf "#define ''key2' fd_set *"
1762: $ write tf "#endif"
1763: $ goto cfgh_in_loop1
1764: $ endif
1765: $ if key2 .eqs. "SELECT_TYPE_ARG5"
1766: $ then
1767: $ write tf "#ifndef ''key2'"
1768: $ write tf "#define ''key2' struct timeval *"
1769: $ write tf "#endif"
1770: $ goto cfgh_in_loop1
1771: $ endif
1772: $ if key2 .eqs. "SELECT_TYPE_RETV"
1773: $ then
1774: $ write tf "#ifndef ''key2'"
1775: $ write tf "#define ''key2' int"
1776: $ write tf "#endif"
1777: $ goto cfgh_in_loop1
1778: $ endif
1779: $ endif
1780: $!
1781: $! Process SEND directives
1782: $!-------------------------------------
1783: $ if key2a .eqs. "SEND"
1784: $ then
1785: $ if key2 .eqs. "SEND_QUAL_ARG2"
1786: $ then
1787: $ write tf "#ifndef ''key2'"
1788: $ write tf "#define ''key2' const"
1789: $ write tf "#endif"
1790: $ goto cfgh_in_loop1
1791: $ endif
1792: $ if key2 .eqs. "SEND_TYPE_ARG1"
1793: $ then
1794: $ write tf "#ifndef ''key2'"
1795: $ write tf "#define ''key2' int"
1796: $ write tf "#endif"
1797: $ goto cfgh_in_loop1
1798: $ endif
1799: $ if key2 .eqs. "SEND_TYPE_ARG2"
1800: $ then
1801: $ write tf "#ifndef ''key2'"
1802: $ write tf "#define ''key2' void *"
1803: $ write tf "#endif"
1804: $ goto cfgh_in_loop1
1805: $ endif
1806: $ if key2 .eqs. "SEND_TYPE_ARG3"
1807: $ then
1808: $ write tf "#ifndef ''key2'"
1809: $ write tf "#define ''key2' size_t"
1810: $ write tf "#endif"
1811: $ goto cfgh_in_loop1
1812: $ endif
1813: $ if key2 .eqs. "SEND_TYPE_ARG4"
1814: $ then
1815: $ write tf "#ifndef ''key2'"
1816: $ write tf "#define ''key2' int"
1817: $ write tf "#endif"
1818: $ goto cfgh_in_loop1
1819: $ endif
1820: $ if key2 .eqs. "SEND_TYPE_RETV"
1821: $ then
1822: $ write tf "#ifndef ''key2'"
1823: $ write tf "#define ''key2' int"
1824: $ write tf "#endif"
1825: $ goto cfgh_in_loop1
1826: $ endif
1827: $ endif
1828: $!
1829: $!
1830: $! Process STATFS directives
1831: $!-------------------------------
1832: $! if key2a .eqs. "STATFS"
1833: $! then
1834: $! write tf "/* ", xline, " */"
1835: $! goto cfgh_in_loop1
1836: $! endif
1837: $!
1838: $! Process inline directive
1839: $!------------------------------
1840: $ if key2 .eqs. "inline"
1841: $ then
1842: $ write tf "#ifndef inline"
1843: $ write tf "#define inline __inline"
1844: $ write tf "#endif"
1845: $ goto cfgh_in_loop1
1846: $ endif
1847: $!
1848: $! Process restrict directive
1849: $!--------------------------------
1850: $ if key2 .eqs. "restrict"
1851: $ then
1852: $ write tf "#ifndef restrict"
1853: $ write tf "#define restrict __restrict"
1854: $ write tf "#endif"
1855: $ goto cfgh_in_loop1
1856: $ endif
1857: $!
1858: $! Process RETSIGTYPE directive
1859: $!----------------------------------
1860: $ if key2 .eqs. "RETSIGTYPE"
1861: $ then
1862: $ write tf "#ifndef RETSIGTYPE"
1863: $ write tf "#define RETSIGTYPE void"
1864: $ write tf "#endif"
1865: $ goto cfgh_in_loop1
1866: $ endif
1867: $!
1868: $! Process STDC_HEADERS (SAMBA!)
1869: $!---------------------------
1870: $ if key2 .eqs. "STDC_HEADERS"
1871: $ then
1872: $ write tf "#ifndef STDC_HEADERS"
1873: $ write tf "#define STDC_HEADERS 1"
1874: $ write tf "#endif"
1875: $ goto cfgh_in_loop1
1876: $ endif
1877: $!
1878: $! Process PROTOTYPES directive
1879: $!-------------------------------------
1880: $ if key2 .eqs. "PROTOTYPES"
1881: $ then
1882: $ write tf "#ifndef PROTOTYPES"
1883: $ write tf "#define PROTOTYPES 1"
1884: $ write tf "#endif"
1885: $ goto cfgh_in_loop1
1886: $ endif
1887: $!
1888: $! Special for SEEKDIR_RETURNS_VOID
1889: $!---------------------------------------
1890: $ if key2 .eqs. "SEEKDIR_RETURNS_VOID"
1891: $ then
1892: $ write tf "#ifndef SEEKDIR_RETURNS_VOID"
1893: $ write tf "#define SEEKDIR_RETURNS_VOID 1"
1894: $ write tf "#endif"
1895: $ endif
1896: $!
1897: $! Unknown - See if CONFIGURE can give a clue for this
1898: $!----------------------------------------------------------
1899: $ pflag = 0
1900: $ set_flag = 0
1901: $! gproj_name = proj_name - "_VMS" - "-VMS"
1902: $ if f$search(tfile1) .nes. "" then delete 'tfile1';*
1903: $ define/user sys$output nl:
1904: $ define/user sys$error nl:
1905: $! if f$locate("FILE", key2) .lt. key2_len then pflag = 1
1906: $! if f$locate("DIR", key2) .eq. key2_len - 3 then pflag = 1
1907: $! if f$locate("PATH", key2) .eq. key2_len - 4 then pflag = 1
1908: $!
1909: $ search/out='tfile1' 'configure_script' "''key2'="/exact
1910: $ search_sev = '$severity'
1911: $ if 'search_sev' .eq. 1
1912: $ then
1913: $ open/read/err=unknown_cf_rd_error sf 'tfile1'
1914: $search_file_rd_loop:
1915: $ read/end=unknown_cf_rd_err sf line_in
1916: $ line_in = f$edit(line_in, "TRIM")
1917: $ skey1 = f$element(0,"=",line_in)
1918: $ if skey1 .eqs. key2
1919: $ then
1920: $ skey2 = f$element(1,"=",line_in)
1921: $ skey2a = f$extract(0,2,skey2)
1922: $!
1923: $!
1924: $! We can not handle assignment to shell symbols.
1925: $! For now skip them.
1926: $!------------------------------------------------------------
1927: $ if f$locate("$", skey2) .lt. f$length(skey2)
1928: $ then
1929: $ write tf "/* ", xline, " */"
1930: $ set_flag = 1
1931: $ goto found_in_configure
1932: $ endif
1933: $!
1934: $! Keep these two cases separate to make it easier to add
1935: $! more future intelligence to this routine
1936: $!----------------------------------------------------------------------
1937: $ if skey2a .eqs. """`"
1938: $ then
1939: $! if pflag .eq. 1
1940: $! then
1941: $! write tf "#ifndef ''key2'"
1942: $! write tf "#define ",key2," """,gproj_name,"_",key2,""""
1943: $! write tf "#endif"
1944: $! else
1945: $! Ignore this for now
1946: $!------------------------------------------
1947: $ write tf "/* ", xline, " */"
1948: $! endif
1949: $ set_flag = 1
1950: $ goto found_in_configure
1951: $ endif
1952: $ if skey2a .eqs. """$"
1953: $ then
1954: $! if pflag .eq. 1
1955: $! then
1956: $! write tf "#ifndef ''key2'"
1957: $! write tf "#define ",key2," """,gproj_name,"_",key2,""""
1958: $! write tf "#endif"
1959: $! else
1960: $! Ignore this for now
1961: $!-------------------------------------------
1962: $ write tf "/* ", xline, " */"
1963: $! endif
1964: $ set_flag = 1
1965: $ goto found_in_configure
1966: $ endif
1967: $!
1968: $! Remove multiple layers of quotes if present
1969: $!----------------------------------------------------------
1970: $ if f$extract(0, 1, skey2) .eqs. "'"
1971: $ then
1972: $ skey2 = skey2 - "'" - "'" - "'" - "'"
1973: $ endif
1974: $ if f$extract(0, 1, skey2) .eqs. """"
1975: $ then
1976: $ skey2 = skey2 - """" - """" - """" - """"
1977: $ endif
1978: $ write tf "#ifndef ''key2'"
1979: $ if skey2 .eqs. ""
1980: $ then
1981: $ write tf "#define ",key2
1982: $ else
1983: $! Only quote non-numbers
1984: $!----------------------------------------
1985: $ if f$string(skey2+0) .eqs. skey2
1986: $ then
1987: $ write tf "#define ",key2," ",skey2
1988: $ else
1989: $ write tf "#define ",key2," """,skey2,""""
1990: $ endif
1991: $ endif
1992: $ write tf "#endif"
1993: $ set_flag = 1
1994: $ else
1995: $ goto search_file_rd_loop
1996: $! if pflag .eq. 1
1997: $! then
1998: $! write tf "#ifndef ''key2'"
1999: $! write tf "#define ",key2," """,gproj_name,"_",key2,""""
2000: $! write tf "#endif"
2001: $! set_flag = 1
2002: $! endif
2003: $ endif
2004: $found_in_configure:
2005: $unknown_cf_rd_err:
2006: $ if f$trnlnm("sf","lnm$process",,"SUPERVISOR") .nes. ""
2007: $ then
2008: $ close sf
2009: $ endif
2010: $ if f$search(tfile1) .nes. "" then delete 'tfile1';*
2011: $ if set_flag .eq. 1 then goto cfgh_in_loop1
2012: $ endif
2013: $ endif
2014: $!
2015: $!
2016: $!
2017: $! If it falls through everything else, comment it out
2018: $!-----------------------------------------------------
2019: $ write tf "/* ", xline, " */"
2020: $ goto cfgh_in_loop1
2021: $cfgh_in_loop1_end:
2022: $close inf
2023: $!
2024: $!
2025: $! Write out the tail
2026: $!--------------------
2027: $write_tail:
2028: $gosub write_config_h_tail
2029: $!
2030: $! Exit and clean up
2031: $!--------------------
2032: $general_error:
2033: $status = '$status'
2034: $all_exit:
2035: $set noon
2036: $if f$trnlnm("sf","lnm$process",,"SUPERVISOR") .nes. "" then close sf
2037: $if f$trnlnm("tf","lnm$process",,"SUPERVISOR") .nes. "" then close tf
2038: $if f$trnlnm("inf","lnm$process",,"SUPERVISOR") .nes. "" then close inf
2039: $if f$trnlnm("tf1","lnm$process",,"SUPERVISOR") .nes. "" then close tf1
2040: $if f$trnlnm("tf2","lnm$process",,"SUPERVISOR") .nes. "" then close tf2
2041: $if f$trnlnm("tfcv","lnm$process",,"SUPERVISOR") .nes. "" then close tfcv
2042: $if f$type(tfile1) .eqs. "STRING"
2043: $then
2044: $ if f$search(tfile1) .nes. "" then delete 'tfile1';*
2045: $endif
2046: $if f$type(dchfile) .eqs. "STRING"
2047: $then
2048: $ if f$search(dchfile) .nes. "" then delete 'dchfile';*
2049: $endif
2050: $if f$type(starhfile) .eqs. "STRING"
2051: $then
2052: $ if f$search(starhfile) .nes. "" then delete 'starhfile';*
2053: $endif
2054: $if f$type(configure_script) .eqs. "STRING"
2055: $then
2056: $ if f$search(configure_script) .nes. "" then delete 'configure_script';*
2057: $endif
2058: $exit 'status'
2059: $!
2060: $!
2061: $control_y:
2062: $ status = ss_control_y
2063: $ goto all_exit
2064: $!
2065: $!
2066: $!
2067: $! Gosub to write a new config_vms.h
2068: $!-----------------------------------
2069: $write_config_vms:
2070: $outfile = "sys$disk:[]config_vms.h"
2071: $create 'outfile'
2072: $open/append tf 'outfile'
2073: $write tf "/* File: config_vms.h"
2074: $write tf "**"
2075: $write tf "** This file contains the manual edits needed for porting"
2076: $!write tf "** the ''proj_name' package to OpenVMS.
2077: $write tf "**"
2078: $write tf "** Edit this file as needed. The procedure that automatically"
2079: $write tf "** generated this header stub will not overwrite or make any"
2080: $write tf "** changes to this file."
2081: $write tf "**"
2082: $write tf -
2083: "** ", datetime, tab, username, tab, "Generated by ''my_proc_file'"
2084: $write tf "**"
2085: $write tf -
2086: "**========================================================================*/"
2087: $write tf ""
2088: $close tf
2089: $return
2090: $!
2091: $! gosub to write out a documentation header for config.h
2092: $!----------------------------------------------------------------
2093: $write_config_h_header:
2094: $outfile = "sys$disk:[]config.h"
2095: $create 'outfile'
2096: $open/append tf 'outfile'
2097: $write tf "#ifndef CONFIG_H"
2098: $write tf "#define CONFIG_H"
2099: $write tf "/* File: config.h"
2100: $write tf "**"
2101: $write tf -
2102: "** This file contains the options needed for porting "
2103: $write tf "** the project on a VMS system."
2104: $write tf "**"
2105: $write tf "** Try not to make any edits to this file, as it is"
2106: $write tf "** automagically generated."
2107: $write tf "**"
2108: $write tf "** Manual edits should be made to the config_vms.h file."
2109: $write tf "**"
2110: $write tf -
2111: "** ", datetime, tab, username, tab, "Generated by ''my_proc_file'"
2112: $write tf "**"
2113: $write tf -
2114: "**========================================================================*/"
2115: $write tf ""
2116: $write tf "#if (__CRTL_VER >= 70200000) && !defined (__VAX)"
2117: $write tf "#define _LARGEFILE 1"
2118: $write tf "#endif"
2119: $write tf ""
2120: $write tf "#ifndef __VAX"
2121: $write tf "#ifdef __CRTL_VER"
2122: $write tf "#if __CRTL_VER >= 80200000"
2123: $write tf "#define _USE_STD_STAT 1"
2124: $write tf "#endif"
2125: $write tf "#endif"
2126: $write tf "#endif"
2127: $write tf ""
2128: $!
2129: $write tf " /* Allow compiler builtins */"
2130: $write tf "/*-------------------------*/"
2131: $write tf "#ifdef __DECC_VER"
2132: $write tf "#include <non_existant_dir:builtins.h>"
2133: $write tf "#endif"
2134: $!
2135: $write tf ""
2136: $return
2137: $!
2138: $! gosub to write out the tail for config.h and close it
2139: $!---------------------------------------------------------
2140: $write_config_h_tail:
2141: $write tf ""
2142: $write tf " /* Include the hand customized settings */"
2143: $write tf "/*--------------------------------------*/"
2144: $write tf "#include ""config_vms.h"""
2145: $write tf ""
2146: $write tf "#endif /* CONFIG_H */"
2147: $close tf
2148: $return
2149: $!
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>