~vcs-imports/gawk/master

« back to all changes in this revision

Viewing changes to vms/config_h.com

  • Committer: Juergen Kahrs
  • Date: 2014-06-24 11:18:33 UTC
  • mfrom: (408.2.336)
  • Revision ID: git-v1:f1245d04a9f076773c60499b468f44ed9c91b59b
Merge remote-tracking branch 'origin/master' into cmake

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
$! The P1 parameter of "NOBUILTINS" inhibits the default #include <builtins.h>
 
9
$! that is normally added.  This include can cause side effects if
 
10
$! special VMS compiler settings are used.
 
11
$!
 
12
$! The CONFIGURE shell script will be examined for hints and a few symbols
 
13
$! but most of the tests will not produce valid results on OpenVMS.  Some
 
14
$! will produce false positives and some will produce false negatives.
 
15
$!
 
16
$! It is easier to just read the config.h_in file and make up tests based
 
17
$! on what is in it!
 
18
$!
 
19
$! This file will create an empty config_vms.h file if one does not exist.
 
20
$! The config_vms.h is intended for manual edits to handle things that
 
21
$! this procedure can not.
 
22
$!
 
23
$! The config_vms.h will be invoked by the resulting config.h file.
 
24
$!
 
25
$! This procedure knows about the DEC C RTL on the system it is on.
 
26
$! Future versions may be handle the GNV, the OpenVMS porting library,
 
27
$! and others.
 
28
$!
 
29
$! This procedure may not guess the options correctly for all architectures,
 
30
$! and is a work in progress.
 
31
$!
 
32
$! Copyright (C) 2014 the Free Software Foundation, Inc.
 
33
$!
 
34
$! This file is part of GAWK, the GNU implementation of the
 
35
$! AWK Progamming Language.
 
36
$!
 
37
$! GAWK is free software; you can redistribute it and/or modify
 
38
$! it under the terms of the GNU General Public License as published by
 
39
$! the Free Software Foundation; either version 3 of the License, or
 
40
$! (at your option) any later version.
 
41
$!
 
42
$! GAWK is distributed in the hope that it will be useful,
 
43
$! but WITHOUT ANY WARRANTY; without even the implied warranty of
 
44
$! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
45
$! GNU General Public License for more details.
 
46
$!
 
47
$! You should have received a copy of the GNU General Public License
 
48
$! along with this program; if not, write to the Free Software
 
49
$! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
 
50
$! USA
 
51
$!
 
52
$! Per assignment agreement with FSF, similar procedures may be present
 
53
$! in other packages under other licensing agreements and copyrights
 
54
$!
 
55
$! 15-Jan-2001  J. Malmberg     Original
 
56
$! 29-Apr-2001  J. Malmberg     Also look for config.*in* in a [.include]
 
57
$!                              subdirectory
 
58
$! 30-Apr-2001  J. Malmberg     Update for SAMBA checks
 
59
$! 09-Apr-2005  J. Malmberg     Update for RSYNC and large file.
 
60
$! 29-Sep-2011  J. Malmberg     Update for Bash 4.2
 
61
$! 01-Mar-2012  J. Malmberg     Warn about getcwd(0,0)
 
62
$! 21-Dec-2012  J. Malmberg     Update for gawk
 
63
$!============================================================================
 
64
$!
 
65
$ss_normal = 1
 
66
$ss_abort = 44
 
67
$ss_control_y = 1556
 
68
$status = ss_normal
 
69
$on control_y then goto control_y
 
70
$on warning then goto general_error
 
71
$!
 
72
$! Some information for writing timestamps to created files
 
73
$!----------------------------------------------------------
 
74
$my_proc = f$environment("PROCEDURE")
 
75
$my_proc_file = f$parse(my_proc,,,"NAME") + f$parse(my_proc,,,"TYPE")
 
76
$tab[0,8] = 9
 
77
$datetime = f$element(0,".",f$cvtime(,"ABSOLUTE","DATETIME"))
 
78
$username = f$edit(f$getjpi("","USERNAME"),"TRIM")
 
79
$!
 
80
$pid = f$getjpi("","PID")
 
81
$tfile1 = "SYS$SCRATCH:config_h_temp1_''pid'.TEMP"
 
82
$dchfile = "SYS$SCRATCH:config_h_decc_''pid'.TEMP"
 
83
$configure_script = "SYS$SCRATCH:configure_script_''pid'.TEMP"
 
84
$!
 
85
$!  Get the system type
 
86
$!----------------------
 
87
$arch_type = f$getsyi("arch_type")
 
88
$!
 
89
$! Does config_vms.h exist?
 
90
$!-------------------------
 
91
$update_config_vms = 0
 
92
$file = f$search("sys$disk:[]config_vms.h")
 
93
$if file .nes. ""
 
94
$then
 
95
$   write sys$output "Found existing custom file ''file'."
 
96
$else
 
97
$   update_config_vms = 1
 
98
$   write sys$output "Creating new sys$disk:[]config_vms.h for you."
 
99
$   gosub write_config_vms
 
100
$endif
 
101
$!
 
102
$!
 
103
$! On some platforms, DCL search has problems with searching a file
 
104
$! on a NFS mounted volume.  So copy it to sys$scratch:
 
105
$!
 
106
$if f$search(configure_script) .nes. "" then delete 'configure_script';*
 
107
$copy PRJ_ROOT:configure 'configure_script'
 
108
$!
 
109
$!
 
110
$! Write out the header
 
111
$!----------------------
 
112
$gosub write_config_h_header
 
113
$!
 
114
$!
 
115
$!
 
116
$! config.h.in could have at least five different names depending
 
117
$! on how it was transferred to OpenVMS
 
118
$!------------------------------------------------------------------
 
119
$cfile = f$search("sys$disk:[]config.h.in")
 
120
$if cfile .eqs. ""
 
121
$then
 
122
$   cfile = f$search("sys$disk:[]config.h_in")
 
123
$   if cfile .eqs. ""
 
124
$   then
 
125
$       cfile = f$search("sys$disk:[]configh.in")
 
126
$       if cfile .eqs. ""
 
127
$       then
 
128
$           cfile = f$search("sys$disk:[]config__2eh.in")
 
129
$           if cfile .eqs. ""
 
130
$           then
 
131
$               cfile = f$search("sys$disk:[]config.h__2ein")
 
132
$           endif
 
133
$       endif
 
134
$   endif
 
135
$endif
 
136
$if f$trnlnm("PRJ_INCLUDE") .nes. ""
 
137
$then
 
138
$   cfile = f$search("PRJ_INCLUDE:config.h.in")
 
139
$   if cfile .eqs. ""
 
140
$   then
 
141
$       cfile = f$search("PRJ_INCLUDE:config.h_in")
 
142
$       if cfile .eqs. ""
 
143
$       then
 
144
$           cfile = f$search("PRJ_INCLUDE:config__2eh.in")
 
145
$           if cfile .eqs. ""
 
146
$           then
 
147
$               cfile = f$search("PRJ_INCLUDE:config__2eh.in")
 
148
$               if cfile .eqs. ""
 
149
$               then
 
150
$                   cfile = f$search("PRJ_INCLUDE:config.h__2ein")
 
151
$               endif
 
152
$           endif
 
153
$       endif
 
154
$    endif
 
155
$endif
 
156
$if cfile .eqs. ""
 
157
$then
 
158
$   write sys$output "Can not find sys$disk:config.h.in"
 
159
$   line_out = "Looked for config.h.in, config.h_in, configh.in, "
 
160
$   line_out = line_out + "config__2eh.in, "config.h__2ein"
 
161
$   write/symbol sys$output line_out
 
162
$   if f$trnlnm("PRJ_INCLUDE") .nes. ""
 
163
$   then
 
164
$       write sys$output "Also looked in PRJ_INCLUDE: for these files."
 
165
$   endif
 
166
$!
 
167
$   write tf ""
 
168
$   write tf -
 
169
        "   /* Could not find sys$disk:config.h.in                           */"
 
170
$   write tf -
 
171
        "  /*  Looked also for config.h_in, configh.in, config__2eh.in,     */"
 
172
$   write tf -
 
173
        " /*   config.h__2ein                                              */"
 
174
$   if f$trnlnm("PRJ_INCLUDE") .nes. ""
 
175
$   then
 
176
$       write tf -
 
177
        " /* Also looked in PRJ_INCLUDE: for these files.                 */"
 
178
$   endif
 
179
$   write tf -
 
180
        "/*--------------------------------------------------------------*/
 
181
$   write tf ""
 
182
$   goto write_tail
 
183
$endif
 
184
$!
 
185
$!
 
186
$! Locate the DECC libraries in use
 
187
$!-----------------------------------
 
188
$decc_rtldef = f$parse("decc$rtldef","sys$library:.tlb;0")
 
189
$decc_shr = f$parse("decc$shr","sys$share:.exe;0")
 
190
$!
 
191
$! Dump the DECC header names into a file
 
192
$!----------------------------------------
 
193
$if f$search(dchfile) .nes. "" then delete 'dchfile';*
 
194
$if f$search(tfile1) .nes. "" then delete 'tfile1';*
 
195
$define/user sys$output 'tfile1'
 
196
$library/list 'decc_rtldef'
 
197
$open/read/error=rtldef_loop1_end tf1 'tfile1'
 
198
$open/write/error=rtldef_loop1_end tf2 'dchfile'
 
199
$rtldef_loop1:
 
200
$   read/end=rtldef_loop1_end tf1 line_in
 
201
$   line_in = f$edit(line_in,"TRIM,COMPRESS")
 
202
$   key1 = f$element(0," ",line_in)
 
203
$   key2 = f$element(1," ",line_in)
 
204
$   if key1 .eqs. " " .or. key1 .eqs. "" then goto rtldef_loop1
 
205
$   if key2 .nes. " " .and. key2 .nes. "" then goto rtldef_loop1
 
206
$   write tf2 "|",key1,"|"
 
207
$   goto rtldef_loop1
 
208
$rtldef_loop1_end:
 
209
$if f$trnlnm("tf1","lnm$process",,"SUPERVISOR") .nes. "" then close tf1
 
210
$if f$trnlnm("tf2","lnm$process",,"SUPERVISOR") .nes. "" then close tf2
 
211
$if f$search(tfile1) .nes. "" then delete 'tfile1';*
 
212
$!
 
213
$!
 
214
$! Now calculate what should be in the file from reading
 
215
$! config.h.in and CONFIGURE.
 
216
$!---------------------------------------------------------------
 
217
$open/read inf 'cfile'
 
218
$do_comment = 0
 
219
$if_block = 0
 
220
$cfgh_in_loop1:
 
221
$!set nover
 
222
$   read/end=cfgh_in_loop1_end inf line_in
 
223
$   xline = f$edit(line_in,"TRIM,COMPRESS")
 
224
$!
 
225
$!  Blank line handling
 
226
$!---------------------
 
227
$   if xline .eqs. ""
 
228
$   then
 
229
$       write tf ""
 
230
$       goto cfgh_in_loop1
 
231
$   endif
 
232
$   xlen = f$length(xline)
 
233
$   key = f$extract(0,2,xline)
 
234
$!
 
235
$!  deal with comments by copying exactly
 
236
$!-----------------------------------------
 
237
$   if (do_comment .eq. 1) .or. (key .eqs. "/*")
 
238
$   then
 
239
$       do_comment = 1
 
240
$       write tf line_in
 
241
$       key = f$extract(xlen - 2, 2, xline)
 
242
$       if key .eqs. "*/" then do_comment = 0
 
243
$       goto cfgh_in_loop1
 
244
$   endif
 
245
$!
 
246
$!  Some quick parsing
 
247
$!----------------------
 
248
$   keyif = f$extract(0,3,xline)
 
249
$   key1 = f$element(0," ",xline)
 
250
$   key2 = f$element(1," ",xline)
 
251
$   key2a = f$element(0,"_",key2)
 
252
$   key2b = f$element(1,"_",key2)
 
253
$   key2_len = f$length(key2)
 
254
$   key2_h = f$extract(key2_len - 2, 2, key2)
 
255
$   key2_t = f$extract(key2_len - 5, 5, key2)
 
256
$   if key2_t .eqs. "_TYPE" then key2_h = "_T"
 
257
$   key64 = 0
 
258
$   if f$locate("64", xline) .lt. xlen then key64 = 1
 
259
$!
 
260
$!write sys$output "xline = ''xline'"
 
261
$!
 
262
$!  Comment out this section of the ifblock
 
263
$!-----------------------------------------
 
264
$   if if_block .ge. 3
 
265
$   then
 
266
$       write tf "/* ", xline, " */"
 
267
$       if keyif .eqs. "#en" then if_block = 0
 
268
$       goto cfgh_in_loop1
 
269
$   endif
 
270
$!
 
271
$!  Handle the end of an ifblock
 
272
$!-------------------------------
 
273
$   if keyif .eqs. "#en"
 
274
$   then
 
275
$       write tf xline
 
276
$       if_block = 0
 
277
$       goto cfgh_in_loop1
 
278
$   endif
 
279
$!
 
280
$   if key1 .eqs. "#ifndef"
 
281
$   then
 
282
$!      Manual check for _ALL_SOURCE on AIX error
 
283
$!-----------------------------------------------
 
284
$       if key2 .eqs. "_ALL_SOURCE"
 
285
$       then
 
286
$          write tf "/* ", xline, " */"
 
287
$!
 
288
$!         Ignore the rest of the block
 
289
$!--------------------------------------
 
290
$          if_block = 3
 
291
$          goto cfgh_in_loop1
 
292
$       endif
 
293
$   endif
 
294
$!
 
295
$!
 
296
$!  Default action for an #if/#else/#endif
 
297
$!------------------------------------------
 
298
$   if keyif .eqs. "#if" .or. keyif .eqs. "#el"
 
299
$   then
 
300
$       if_block = 1
 
301
$       write tf xline
 
302
$       goto cfgh_in_loop1
 
303
$   endif
 
304
$!
 
305
$!
 
306
$!  Process "normal?" stuff
 
307
$!---------------------------
 
308
$   if key1 .eqs. "#undef"
 
309
$   then
 
310
$       key2c = f$element(2, "_", key2)
 
311
$       if (key2c .eqs. "_") .or. (key2c .eqs. "H") then key2c = ""
 
312
$       key2d = f$element(3, "_", key2)
 
313
$       if (key2d .eqs. "_") .or. (key2d .eqs. "H") then key2d = ""
 
314
$       key2e = f$element(4, "_", key2)
 
315
$       if (key2e .eqs. "_") .or. (key2e .eqs. "H") then key2e = ""
 
316
$       if key2d .eqs. "T"
 
317
$       then
 
318
$           if key2e .eqs. "TYPE"
 
319
$           then
 
320
$               key2_h = "_T"
 
321
$               key2d = ""
 
322
$           endif
 
323
$       endif
 
324
$!
 
325
$       double_under = 0
 
326
$!
 
327
$       if key2 .eqs. "bits16_t"
 
328
$       then
 
329
$           write tf "#ifndef ''key2'"
 
330
$           write tf "#define ''key2' short"
 
331
$           write tf "#endif"
 
332
$           goto cfgh_in_loop1
 
333
$       endif
 
334
$!
 
335
$       if key2 .eqs. "u_bits16_t"
 
336
$       then
 
337
$           write tf "#ifndef ''key2'"
 
338
$           write tf "#define ''key2' unsigned short"
 
339
$           write tf "#endif"
 
340
$           goto cfgh_in_loop1
 
341
$       endif
 
342
$!
 
343
$       if key2 .eqs. "bits32_t"
 
344
$       then
 
345
$           write tf "#ifndef ''key2'"
 
346
$           write tf "#define ''key2' int"
 
347
$           write tf "#endif"
 
348
$           goto cfgh_in_loop1
 
349
$       endif
 
350
$!
 
351
$       if key2 .eqs. "u_bits32_t"
 
352
$       then
 
353
$           write tf "#ifndef ''key2'"
 
354
$           write tf "#define ''key2' unsigned int"
 
355
$           write tf "#endif"
 
356
$           goto cfgh_in_loop1
 
357
$       endif
 
358
$!
 
359
$       if key2 .eqs. "intmax_t"
 
360
$       then
 
361
$           write tf "#ifndef ''key2'"
 
362
$           write tf "#ifdef __VAX"
 
363
$           write tf "#define ''key2' long"
 
364
$           write tf "#else"
 
365
$           write tf "#define ''key2' long long"
 
366
$           write tf "#endif"
 
367
$           write tf "#endif"
 
368
$           goto cfgh_in_loop1
 
369
$       endif
 
370
$!
 
371
$       if key2 .eqs. "uintmax_t"
 
372
$       then
 
373
$           write tf "#ifndef ''key2'"
 
374
$           write tf "#ifdef __VAX"
 
375
$           write tf "#define ''key2' unsigned long"
 
376
$           write tf "#else"
 
377
$           write tf "#define ''key2' unsigned long long"
 
378
$           write tf "#endif"
 
379
$           write tf "#endif"
 
380
$           goto cfgh_in_loop1
 
381
$       endif
 
382
$!
 
383
$       if key2 .eqs. "socklen_t"
 
384
$       then
 
385
$           write tf "#ifndef ''key2'"
 
386
$           write tf "#define ''key2' int"
 
387
$           write tf "#endif"
 
388
$           goto cfgh_in_loop1
 
389
$       endif
 
390
$!
 
391
$       if key2 .eqs. "GETGROUPS_T"
 
392
$       then
 
393
$           write tf "#ifndef ''key2'"
 
394
$           write tf "#define ''key2' gid_t"
 
395
$           write tf "#endif"
 
396
$           goto cfgh_in_loop1
 
397
$       endif
 
398
$!
 
399
$       if key2 .eqs. "HAVE_DECL_SYS_SIGLIST"
 
400
$       then
 
401
$           write tf "#ifndef ''key2'"
 
402
$           write tf "#define ''key2' 0"
 
403
$           write tf "#endif"
 
404
$           goto cfgh_in_loop1
 
405
$       endif
 
406
$!
 
407
$       if key2 .eqs. "HAVE_SYS_ERRLIST"
 
408
$       then
 
409
$           write tf "#ifndef ''key2'"
 
410
$           write tf "#define ''key2' 1"
 
411
$           write tf "#endif"
 
412
$           goto cfgh_in_loop1
 
413
$       endif
 
414
$!
 
415
$       if key2 .eqs. "HAVE_STRUCT_DIRENT_D_INO"
 
416
$       then
 
417
$           write tf "#ifndef ''key2'"
 
418
$           write tf "#define ''key2' 1"
 
419
$           write tf "#endif"
 
420
$           goto cfgh_in_loop1
 
421
$       endif
 
422
$!
 
423
$!      ! The header files have this information, however
 
424
$!      ! The ioctl() call only works on sockets.
 
425
$!      if key2 .eqs. "FIONREAD_IN_SYS_IOCTL"
 
426
$!      then
 
427
$!          write tf "#ifndef ''key2'"
 
428
$!          write tf "#define ''key2' 1"
 
429
$!          write tf "#endif"
 
430
$!          goto cfgh_in_loop1
 
431
$!      endif
 
432
$!
 
433
$!      ! The header files have this information, however
 
434
$!      ! The ioctl() call only works on sockets.
 
435
$!      if key2 .eqs. "GWINSZ_IN_SYS_IOCTL"
 
436
$!      then
 
437
$!          write tf "#ifndef ''key2'"
 
438
$!          write tf "#define ''key2' 1"
 
439
$!          write tf "#endif"
 
440
$!          goto cfgh_in_loop1
 
441
$!      endif
 
442
$!
 
443
$!      ! The header files have this information, however
 
444
$!      ! The ioctl() call only works on sockets.
 
445
$!      if key2 .eqs. "STRUCT_WINSIZE_IN_SYS_IOCTL"
 
446
$!      then
 
447
$!          write tf "#ifndef ''key2'"
 
448
$!          write tf "#define ''key2' 0"
 
449
$!          write tf "#endif"
 
450
$!          goto cfgh_in_loop1
 
451
$!      endif
 
452
$!
 
453
$       if key2 .eqs. "HAVE_STRUCT_TM_TM_ZONE"
 
454
$       then
 
455
$           write tf "#ifndef ''key2'"
 
456
$           write tf "#define ''key2' 1"
 
457
$           write tf "#endif"
 
458
$           goto cfgh_in_loop1
 
459
$       endif
 
460
$!
 
461
$       if key2 .eqs. "HAVE_TM_ZONE"
 
462
$       then
 
463
$           write tf "#ifndef ''key2'"
 
464
$           write tf "#define ''key2' 1"
 
465
$           write tf "#endif"
 
466
$           goto cfgh_in_loop1
 
467
$       endif
 
468
$!
 
469
$       if key2 .eqs. "HAVE_TIMEVAL"
 
470
$       then
 
471
$           write tf "#ifndef ''key2'"
 
472
$           write tf "#define ''key2' 1"
 
473
$           write tf "#endif"
 
474
$           goto cfgh_in_loop1
 
475
$       endif
 
476
$!
 
477
$       if key2 .eqs. "HAVE_TZNAME"
 
478
$       then
 
479
$           write tf "#if __CRTL_VER >= 70000000"
 
480
$           write tf "#ifndef ''key2'"
 
481
$           write tf "#define ''key2' 1"
 
482
$           write tf "#endif"
 
483
$           write tf "#endif"
 
484
$           goto cfgh_in_loop1
 
485
$       endif
 
486
$!
 
487
$       if key2 .eqs. "WEXITSTATUS_OFFSET"
 
488
$       then
 
489
$           write tf "#ifndef ''key2'"
 
490
$           write tf "#define ''key2' 2"
 
491
$           write tf "#endif"
 
492
$           goto cfgh_in_loop1
 
493
$       endif
 
494
$!
 
495
$       if key2 .eqs. "HAVE_GETPW_DECLS"
 
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_DECL_CONFSTR"
 
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
$       if key2 .eqs. "HAVE_DECL_PRINTF"
 
512
$       then
 
513
$           write tf "#ifndef ''key2'"
 
514
$           write tf "#define ''key2' 1"
 
515
$           write tf "#endif"
 
516
$           goto cfgh_in_loop1
 
517
$       endif
 
518
$!
 
519
$       if key2 .eqs. "HAVE_DECL_SBRK"
 
520
$       then
 
521
$           write tf "#ifndef ''key2'"
 
522
$           write tf "#define ''key2' 1"
 
523
$           write tf "#endif"
 
524
$           goto cfgh_in_loop1
 
525
$       endif
 
526
$!
 
527
$       if key2 .eqs. "HAVE_DECL_STRSIGNAL"
 
528
$       then
 
529
$           write tf "#ifndef ''key2'"
 
530
$           write tf "#define ''key2' 0"
 
531
$           write tf "#endif"
 
532
$           goto cfgh_in_loop1
 
533
$       endif
 
534
$!
 
535
$       if key2a .eqs. "HAVE_DECL_STRTOLD"
 
536
$       then
 
537
$           write tf "#ifndef ''key2'"
 
538
$           write tf "#define ''key2' 0"
 
539
$           write tf "#endif"
 
540
$           goto cfgh_in_loop1
 
541
$       endif
 
542
$!
 
543
$       if key2 .eqs. "HAVE_DECL_STRTOIMAX"
 
544
$       then
 
545
$           write tf "#ifndef ''key2'"
 
546
$           write tf "#define ''key2' 0"
 
547
$           write tf "#endif"
 
548
$           goto cfgh_in_loop1
 
549
$       endif
 
550
$!
 
551
$       if key2 .eqs. "HAVE_DECL_STRTOL"
 
552
$       then
 
553
$           write tf "#ifndef ''key2'"
 
554
$           write tf "#define ''key2' 1"
 
555
$           write tf "#endif"
 
556
$           goto cfgh_in_loop1
 
557
$       endif
 
558
$!
 
559
$       if key2 .eqs. "HAVE_DECL_STRTOLL"
 
560
$       then
 
561
$           write tf "#ifndef ''key2'"
 
562
$           write tf "#define ''key2' 1"
 
563
$           write tf "#endif"
 
564
$           goto cfgh_in_loop1
 
565
$       endif
 
566
$!
 
567
$       if key2 .eqs. "HAVE_DECL_STRTOUL"
 
568
$       then
 
569
$           write tf "#ifndef ''key2'"
 
570
$           write tf "#define ''key2' 1"
 
571
$           write tf "#endif"
 
572
$           goto cfgh_in_loop1
 
573
$       endif
 
574
$!
 
575
$       if key2 .eqs. "HAVE_DECL_STRTOULL"
 
576
$       then
 
577
$           write tf "#ifndef ''key2'"
 
578
$           write tf "#define ''key2' 1"
 
579
$           write tf "#endif"
 
580
$           goto cfgh_in_loop1
 
581
$       endif
 
582
$!
 
583
$       if key2 .eqs. "HAVE_DECL_STRTOUMAX"
 
584
$       then
 
585
$           write tf "#ifndef ''key2'"
 
586
$           write tf "#define ''key2' 0"
 
587
$           write tf "#endif"
 
588
$           goto cfgh_in_loop1
 
589
$       endif
 
590
$!
 
591
$       if key2 .eqs. "GETPGRP_VOID"
 
592
$       then
 
593
$           write tf "#ifndef ''key2'"
 
594
$           write tf "#define ''key2' 1"
 
595
$           write tf "#endif"
 
596
$           goto cfgh_in_loop1
 
597
$       endif
 
598
$!
 
599
$       if key2 .eqs. "NAMED_PIPES_MISSING"
 
600
$       then
 
601
$           write tf "#ifndef ''key2'"
 
602
$           write tf "#define ''key2' 1"
 
603
$           write tf "#endif"
 
604
$           goto cfgh_in_loop1
 
605
$       endif
 
606
$!
 
607
$       if key2 .eqs. "OPENDIR_NOT_ROBUST"
 
608
$       then
 
609
$           write tf "#ifndef ''key2'"
 
610
$           write tf "#define ''key2' 1"
 
611
$           write tf "#endif"
 
612
$           goto cfgh_in_loop1
 
613
$       endif
 
614
$!
 
615
$       if key2 .eqs. "PGRP_PIPE"
 
616
$       then
 
617
$           write tf "#ifndef ''key2'"
 
618
$           write tf "#define ''key2' 1"
 
619
$           write tf "#endif"
 
620
$           goto cfgh_in_loop1
 
621
$       endif
 
622
$!
 
623
$       if key2 .eqs. "CAN_REDEFINE_GETENV"
 
624
$       then
 
625
$           write tf "#ifndef ''key2'"
 
626
$           write tf "#define ''key2' 1"
 
627
$           write tf "#endif"
 
628
$           goto cfgh_in_loop1
 
629
$       endif
 
630
$!
 
631
$       if key2 .eqs. "HAVE_PRINTF_A_FORMAT"
 
632
$       then
 
633
$           write tf "#ifndef ''key2'"
 
634
$           write tf "#define ''key2' 1"
 
635
$           write tf "#endif"
 
636
$           goto cfgh_in_loop1
 
637
$       endif
 
638
$!
 
639
$       if key2 .eqs. "CTYPE_NON_ASCII"
 
640
$       then
 
641
$           write tf "#ifndef ''key2'"
 
642
$           write tf "#define ''key2' 1"
 
643
$           write tf "#endif"
 
644
$           goto cfgh_in_loop1
 
645
$       endif
 
646
$!
 
647
$       if key2 .eqs. "HAVE_LANGINFO_CODESET"
 
648
$       then
 
649
$           write tf "#ifndef ''key2'"
 
650
$           write tf "#define ''key2' 1"
 
651
$           write tf "#endif"
 
652
$           goto cfgh_in_loop1
 
653
$       endif
 
654
$!
 
655
$       if key2 .eqs. "HAVE_LC_MESSAGES"
 
656
$       then
 
657
$           write tf "#ifndef ''key2'"
 
658
$           write tf "#define ''key2' 1"
 
659
$           write tf "#endif"
 
660
$           goto cfgh_in_loop1
 
661
$       endif
 
662
$!
 
663
$!      This wants execve() to do this automagically to pass.
 
664
$!      if key2 .eqs. "HAVE_HASH_BANG_EXEC"
 
665
$!      then
 
666
$!          write tf "#ifndef ''key2'"
 
667
$!          write tf "#define ''key2' 1"
 
668
$!          write tf "#endif"
 
669
$!          goto cfgh_in_loop1
 
670
$!      endif
 
671
$!
 
672
$       if key2 .eqs. "ICONV_CONST"
 
673
$       then
 
674
$           write tf "#ifndef ''key2'"
 
675
$           write tf "#define ''key2'"
 
676
$           write tf "#endif"
 
677
$           goto cfgh_in_loop1
 
678
$       endif
 
679
$!
 
680
$       if key2 .eqs. "VOID_SIGHANDLER"
 
681
$       then
 
682
$           write tf "#ifndef ''key2'"
 
683
$           write tf "#define ''key2' 1"
 
684
$           write tf "#endif"
 
685
$           goto cfgh_in_loop1
 
686
$       endif
 
687
$!
 
688
$       if key2 .eqs. "HAVE_POSIX_SIGNALS"
 
689
$       then
 
690
$           write tf "#ifndef ''key2'"
 
691
$           write tf "#define ''key2' 1"
 
692
$           write tf "#endif"
 
693
$           goto cfgh_in_loop1
 
694
$       endif
 
695
$!
 
696
$       if key2 .eqs. "UNUSABLE_RT_SIGNALS"
 
697
$       then
 
698
$           write tf "#ifndef ''key2'"
 
699
$           write tf "#define ''key2' 1"
 
700
$           write tf "#endif"
 
701
$           goto cfgh_in_loop1
 
702
$       endif
 
703
$!
 
704
$       if key2a .eqs. "HAVE_DECL_FPURGE"
 
705
$       then
 
706
$           write tf "#ifndef ''key2a'"
 
707
$           write tf "#define ''key2a' 1"
 
708
$           write tf "#endif"
 
709
$           goto cfgh_in_loop1
 
710
$       endif
 
711
$!
 
712
$       if key2 .eqs. "HAVE_DECL_SETREGID"
 
713
$       then
 
714
$           write tf "#ifndef ''key2'"
 
715
$           write tf "#define ''key2' 1"
 
716
$           write tf "#endif"
 
717
$           goto cfgh_in_loop1
 
718
$       endif
 
719
$!
 
720
$       if key2 .eqs. "HAVE_POSIX_SIGSETJMP"
 
721
$       then
 
722
$           write tf "#ifndef ''key2'"
 
723
$           write tf "#define ''key2' 1"
 
724
$           write tf "#endif"
 
725
$           goto cfgh_in_loop1
 
726
$       endif
 
727
$!
 
728
$       if key2 .eqs. "HAVE_LIBDL"
 
729
$       then
 
730
$           write tf "#ifndef ''key2'"
 
731
$           write tf "#define ''key2' 1"
 
732
$           write tf "#endif"
 
733
$           goto cfgh_in_loop1
 
734
$       endif
 
735
$!
 
736
$       if key2 .eqs. "STRCOLL_BROKEN"
 
737
$       then
 
738
$           write tf "#ifndef ''key2'"
 
739
$           write tf "#define ''key2' 1"
 
740
$           write tf "#endif"
 
741
$           goto cfgh_in_loop1
 
742
$       endif
 
743
$!
 
744
$       if key2 .eqs. "DUP_BROKEN"
 
745
$       then
 
746
$           write tf "#ifndef ''key2'"
 
747
$           write tf "#define ''key2' 1"
 
748
$           write tf "#endif"
 
749
$           goto cfgh_in_loop1
 
750
$       endif
 
751
$!
 
752
$!      This is for a test that getcwd(0,0) works.
 
753
$!      It does not on VMS.
 
754
$!--------------------------
 
755
$       if key2 .eqs. "GETCWD_BROKEN"
 
756
$       then
 
757
$           write sys$output ""
 
758
$           write sys$output -
 
759
  "%CONFIG_H-I-NONPORT, ''key2' being tested for!"
 
760
$                  write sys$output -
 
761
 "-CONFIG_H-I-GETCWD, GETCWD(0,0) does not work on VMS."
 
762
$                  write sys$output -
 
763
 "-CONFIG_H-I-GETCWD2, Work around hack probably required."
 
764
$                  write sys$output -
 
765
 "-CONFIG_H-I-REVIEW, Manual Code review required!"
 
766
$                   if update_config_vms
 
767
$                   then
 
768
$                       open/append tfcv sys$disk:[]config_vms.h
 
769
$                       write tfcv ""
 
770
$                       write tfcv -
 
771
                "/* Check config.h for use of ''key2' settings */"
 
772
$                       write tfcv ""
 
773
$                       close tfcv
 
774
$                   endif
 
775
$
 
776
$           goto cfgh_in_loop1
 
777
$       endif
 
778
$!
 
779
$       if key2a .eqs. "HAVE" .or. key2a .eqs. "STAT"
 
780
$       then
 
781
$!
 
782
$!          Process extra underscores
 
783
$!------------------------------------
 
784
$           if f$locate("HAVE___", key2) .lt. key2_len
 
785
$           then
 
786
$               key2b = "__" + key2d
 
787
$               key2d = ""
 
788
$               double_under = 1
 
789
$           else
 
790
$               if f$locate("HAVE__", key2) .lt. key2_len
 
791
$               then
 
792
$                   key2b = "_" + key2c
 
793
$                   key2c = ""
 
794
$                   double_under = 1
 
795
$               endif
 
796
$           endif
 
797
$!
 
798
$           if key2_h .eqs. "_H"
 
799
$           then
 
800
$!
 
801
$!              Looking for a header file
 
802
$!---------------------------------------
 
803
$               headf = key2b
 
804
$               if key2c .nes. "" then headf = headf + "_" + key2c
 
805
$               if key2d .nes. "" then headf = headf + "_" + key2d
 
806
$!
 
807
$!                 (key2b .eqs. "READLINE")
 
808
$!
 
809
$!              Some special parsing
 
810
$!------------------------------------------
 
811
$               if (key2b .eqs. "SYS") .or. (key2b .eqs. "ARPA") .or. -
 
812
                   (key2b .eqs. "NET") .or. (key2b .eqs. "NETINET")
 
813
$               then
 
814
$                   if key2c .nes. ""
 
815
$                   then
 
816
$                       headf = key2c
 
817
$                       if key2d .nes. "" then headf = key2c + "_" + key2d
 
818
$                   endif
 
819
$               endif
 
820
$!
 
821
$!              And of course what's life with out some special cases
 
822
$!--------------------------------------------------------------------
 
823
$               if key2b .eqs. "FILE"
 
824
$               then
 
825
$                  write sys$output ""
 
826
$                  write sys$output -
 
827
  "%CONFIG_H-I-NONPORT, ''key2' being asked for!"
 
828
$                  write sys$output -
 
829
 "-CONFIG_H-I-FILE_OLD, file.h will not be configured as is obsolete!"
 
830
$                  write sys$output -
 
831
 "-CONFIG_H_I-FCNTL_NEW, "Expecting fcntl.h to be configured instead!"
 
832
$                  write sys$output -
 
833
 "-CONFIG_H_I-FCNTL_CHK, "Unable to verify at this time!"
 
834
$                  write sys$output -
 
835
 "-CONFIG_H-I-REVIEW, Manual Code review required!"
 
836
$!
 
837
$                   if update_config_vms
 
838
$                   then
 
839
$                       open/append tfcv sys$disk:[]config_vms.h
 
840
$                       write tfcv ""
 
841
$                       write tfcv -
 
842
                "/* Check config.h for use of fcntl.h instead of file.h */"
 
843
$                       write tfcv ""
 
844
$                       close tfcv
 
845
$                   endif
 
846
$               endif
 
847
$!
 
848
$!              Now look it up in the DEC C RTL
 
849
$!---------------------------------------------
 
850
$               define/user sys$output nl:
 
851
$               define/user sys$error nl:
 
852
$               search/output=nl: 'dchfile' |'headf'|/exact
 
853
$               if '$severity' .eq. 1
 
854
$               then
 
855
$                   if key64 then write tf "#ifndef __VAX"
 
856
$                   write tf "#ifndef ''key2'"
 
857
$                   write tf "#define ''key2' 1"
 
858
$if p2 .nes. "" then write sys$output "''dchfile' - #define ''key2' 1"
 
859
$                   write tf "#endif"
 
860
$                   if key64 then write tf "#endif"
 
861
$                   goto cfgh_in_loop1
 
862
$               endif
 
863
$!
 
864
$           else
 
865
$!
 
866
$!              Looking for a routine or a symbol
 
867
$!------------------------------------------------
 
868
$               if key2c .eqs. "MACRO"
 
869
$               then
 
870
$                   if (key2b .eqs. "FILE") .or. (key2b .eqs. "DATE") -
 
871
                        .or. (key2b .eqs. "LINE") .or. (key2b .eqs. "TIME")
 
872
$                   then
 
873
$                       write tf "#ifndef HAVE_''key2b'"
 
874
$                       write tf "#define HAVE_''key2b' 1"
 
875
$                       write tf "#endif"
 
876
$                   endif
 
877
$                   goto cfgh_in_loop1
 
878
$               endif
 
879
$!
 
880
$!              Special false tests
 
881
$!-------------------------------------
 
882
$               if double_under
 
883
$               then
 
884
$                   if key2b .eqs. "_FCNTL" .or. key2b .eqs. "__FCNTL"
 
885
$                   then
 
886
$                       write tf "/* #undef HAVE_''key2b' */"
 
887
$                       goto cfgh_in_loop1
 
888
$                   endif
 
889
$!
 
890
$                   if key2b .eqs. "_STAT" .or. key2b .eqs. "__STAT"
 
891
$                   then
 
892
$                       write tf "/* #undef HAVE_''key2b' */"
 
893
$                       goto cfgh_in_loop1
 
894
$                   endif
 
895
$!
 
896
$                   if key2b .eqs. "_READ" .or. key2b .eqs. "__READ"
 
897
$                   then
 
898
$                       write tf "/* #undef HAVE_''key2b' */"
 
899
$                       goto cfgh_in_loop1
 
900
$                   endif
 
901
$               endif
 
902
$!
 
903
$               keysym = key2b
 
904
$               if key2c .nes. "" then keysym = keysym + "_" + key2c
 
905
$               if key2d .nes. "" then keysym = keysym + "_" + key2d
 
906
$               if key2e .nes. "" then keysym = keysym + "_" + key2e
 
907
$!
 
908
$!
 
909
$!              Stat structure members
 
910
$!-------------------------------------
 
911
$               if key2b .eqs. "STRUCT"
 
912
$               then
 
913
$                   if key2c .eqs. "STAT" .and (key2d .nes. "")
 
914
$                   then
 
915
$                       key2b = key2b + "_" + key2c + "_" + key2d
 
916
$                       key2c = key2e
 
917
$                       key2d = ""
 
918
$                       key2e = ""
 
919
$                   endif
 
920
$               endif
 
921
$               if (key2b .eqs. "ST") .or. (key2b .eqs. "STRUCT_STAT_ST")
 
922
$               then
 
923
$                   keysym = "ST" + "_" + key2c
 
924
$                   keysym = f$edit(keysym,"LOWERCASE")
 
925
$               endif
 
926
$               if key2a .eqs. "STAT"
 
927
$               then
 
928
$                   if (f$locate("STATVFS", key2b) .eq. 0) .and. key2c .eqs. ""
 
929
$                   then
 
930
$                       keysym = f$edit(key2b, "LOWERCASE")
 
931
$                   endif
 
932
$!$                 if (key2b .eqs. "STATVFS" .or. key2b .eqs. "STATFS2" -
 
933
$!                      .or. key2b .eqs. "STATFS3") .and. key2c .nes. ""
 
934
$!
 
935
$                   if (key2b .eqs. "STATVFS") .and. key2c .nes. ""
 
936
$                   then
 
937
$!                      Should really verify that the structure
 
938
$!                      named by key2b actually exists first.
 
939
$!------------------------------------------------------------
 
940
$!
 
941
$!                      Statvfs structure members
 
942
$!-------------------------------------------------
 
943
$                       keysym = "f_" + f$edit(key2c,"LOWERCASE")
 
944
$                   endif
 
945
$               endif
 
946
$!
 
947
$!              UTMPX structure members
 
948
$!--------------------------------------
 
949
$               if key2b .eqs. "UT" .and. key2c .eqs. "UT"
 
950
$               then
 
951
$                   keysym = "ut_" + f$edit(key2d,"LOWERCASE")
 
952
$               endif
 
953
$!
 
954
$               if f$locate("MMAP",key2) .lt. key2_len
 
955
$               then
 
956
$                  write sys$output ""
 
957
$                  write sys$output -
 
958
  "%CONFIG_H-I-NONPORT, ''key2' being asked for!"
 
959
$                  write sys$output -
 
960
 "-CONFIG_H-I-MMAP, MMAP operations only work on STREAM and BINARY files!"
 
961
$                  write sys$output -
 
962
 "-CONFIG_H-I-REVIEW, Manual Code review required!"
 
963
$                   if update_config_vms
 
964
$                   then
 
965
$                       open/append tfcv sys$disk:[]config_vms.h
 
966
$                       write tfcv ""
 
967
$                       write tfcv -
 
968
                "/* Check config.h for use of ''key2' settings */"
 
969
$                       write tfcv ""
 
970
$                       close tfcv
 
971
$                   endif
 
972
$               endif
 
973
$!
 
974
$!
 
975
$               if keysym .eqs. "CRYPT"
 
976
$               then
 
977
$                  write sys$output ""
 
978
$                  write sys$output -
 
979
  "%CONFIG_H-I-NONPORT, ''key2' being asked for!"
 
980
$                  write sys$output -
 
981
 "-CONFIG_H-I-CRYPT, CRYPT operations on the VMS SYSUAF may not work!"
 
982
$                  write sys$output -
 
983
 "-CONFIG_H-I-REVIEW, Manual Code review required!"
 
984
$                   if update_config_vms
 
985
$                   then
 
986
$                       open/append tfcv sys$disk:[]config_vms.h
 
987
$                       write tfcv ""
 
988
$                       write tfcv -
 
989
                "/* Check config.h for use of ''keysym' */"
 
990
$                       write tfcv ""
 
991
$                       close tfcv
 
992
$                   endif
 
993
$               endif
 
994
$!
 
995
$!
 
996
$               if keysym .eqs. "EXECL"
 
997
$               then
 
998
$                  write sys$output ""
 
999
$                  write sys$output -
 
1000
  "%CONFIG_H-I-NONPORT, ''key2' being asked for!"
 
1001
$                  write sys$output -
 
1002
 "-CONFIG_H-I-EXCEL, EXECL configured, Will probably not work."
 
1003
$                  write sys$output -
 
1004
 "-CONFIG_H-I-REVIEW, Manual Code review required!"
 
1005
$                   if update_config_vms
 
1006
$                   then
 
1007
$                       open/append tfcv sys$disk:[]config_vms.h
 
1008
$                       write tfcv ""
 
1009
$                       write tfcv -
 
1010
                "/* Check config.h for use of ''keysym' */"
 
1011
$                       write tfcv ""
 
1012
$                       close tfcv
 
1013
$                   endif
 
1014
$               endif
 
1015
$!
 
1016
$!
 
1017
$!              Process if cpp supports ANSI-C stringizing '#' operator
 
1018
$!-----------------------------------------------------------------------
 
1019
$               if keysym .eqs. "STRINGIZE"
 
1020
$               then
 
1021
$                   write tf "#ifndef HAVE_STRINGIZE"
 
1022
$                   write tf "#define HAVE_STRINGSIZE 1"
 
1023
$                   write tf "#endif"
 
1024
$                   goto cfgh_in_loop1
 
1025
$               endif
 
1026
$!
 
1027
$               if keysym .eqs. "VOLATILE"
 
1028
$               then
 
1029
$                   write tf "#ifndef HAVE_VOLATILE"
 
1030
$                   write tf "#define HAVE_VOLATILE 1"
 
1031
$                   write tf "#endif"
 
1032
$                   goto cfgh_in_loop1
 
1033
$               endif
 
1034
$!
 
1035
$               if keysym .eqs. "ALLOCA"
 
1036
$               then
 
1037
$                   write tf "#ifndef HAVE_ALLOCA"
 
1038
$                   write tf "#define HAVE_ALLOCA 1"
 
1039
$                   write tf "#endif"
 
1040
$                   goto cfgh_in_loop1
 
1041
$               endif
 
1042
$!
 
1043
$               if keysym .eqs. "ERRNO_DECL"
 
1044
$               then
 
1045
$                   write tf "#ifndef HAVE_ERRNO_DECL"
 
1046
$                   write tf "#define HAVE_ERRNO_DECL 1"
 
1047
$                   write tf "#endif"
 
1048
$                   goto cfgh_in_loop1
 
1049
$               endif
 
1050
$!
 
1051
$               if keysym .eqs. "LONGLONG"
 
1052
$               then
 
1053
$                   write tf "#ifndef __VAX"
 
1054
$                   write tf "#pragma message disable longlongtype"
 
1055
$                   write tf "#ifndef HAVE_LONGLONG"
 
1056
$                   write tf "#define HAVE_LONGLONG 1"
 
1057
$                   write tf "#endif"
 
1058
$                   write tf "#endif"
 
1059
$                   goto cfgh_in_loop1
 
1060
$               endif
 
1061
$!
 
1062
$!              May need to test compiler version
 
1063
$!-----------------------------------------------
 
1064
$               if (keysym .eqs. "LONG_LONG") .or. -
 
1065
                   (keysym .eqs. "LONG_LONG_INT")
 
1066
$               then
 
1067
$                   write tf "#ifndef __VAX"
 
1068
$                   write tf "#pragma message disable longlongtype"
 
1069
$                   write tf "#ifndef HAVE_''keysym'"
 
1070
$                   write tf "#define HAVE_''keysym' 1"
 
1071
$                   write tf "#endif"
 
1072
$                   write tf "#endif"
 
1073
$                   goto cfgh_in_loop1
 
1074
$               endif
 
1075
$!
 
1076
$!              May need to test compiler version
 
1077
$!-----------------------------------------------
 
1078
$               if keysym .eqs. "UNSIGNED_LONG_LONG"
 
1079
$               then
 
1080
$                   write tf "#ifndef __VAX"
 
1081
$                   write tf "#pragma message disable longlongtype"
 
1082
$                   write tf "#ifndef HAVE_UNSIGNED_LONG_LONG"
 
1083
$                   write tf "#define HAVE_UNSIGNED_LONG_LONG 1"
 
1084
$                   write tf "#endif"
 
1085
$                   write tf "#endif"
 
1086
$                   goto cfgh_in_loop1
 
1087
$               endif
 
1088
$!
 
1089
$!              May need to test compiler version
 
1090
$!-----------------------------------------------
 
1091
$               if keysym .eqs. "UNSIGNED_LONG_LONG_INT"
 
1092
$               then
 
1093
$                   write tf "#ifndef __VAX"
 
1094
$                   write tf "#pragma message disable longlongtype"
 
1095
$                   write tf "#ifndef HAVE_UNSIGNED_LONG_LONG_INT"
 
1096
$                   write tf "#define HAVE_UNSIGNED_LONG_LONG_INT 1"
 
1097
$                   write tf "#endif"
 
1098
$                   write tf "#endif"
 
1099
$                   goto cfgh_in_loop1
 
1100
$               endif
 
1101
$!
 
1102
$!              May need to test compiler version
 
1103
$!-----------------------------------------------
 
1104
$               if keysym .eqs. "LONG_DOUBLE"
 
1105
$               then
 
1106
$                   write tf "#ifndef __VAX"
 
1107
$                   write tf "#pragma message disable longlongtype"
 
1108
$                   write tf "#ifndef HAVE_LONG_DOUBLE"
 
1109
$                   write tf "#define HAVE_LONG_DOUBLE 1"
 
1110
$                   write tf "#endif"
 
1111
$                   write tf "#endif"
 
1112
$                   goto cfgh_in_loop1
 
1113
$               endif
 
1114
$!
 
1115
$               if keysym .eqs. "FCNTL_LOCK"
 
1116
$               then
 
1117
$                   write sys$output -
 
1118
  "%CONFIG_H-I-NONPORT, ''key2' being asked for!
 
1119
$                  write sys$output -
 
1120
 "-CONFIG_H-I-REVIEW, Manual Code review required!"
 
1121
$                   goto cfgh_in_loop1
 
1122
$               endif
 
1123
$!
 
1124
$!
 
1125
$!              These libraries are provided by the DEC C RTL
 
1126
$!-------------------------------------------------------------
 
1127
$               if keysym .eqs. "LIBINET" .or. keysym .eqs. "LIBSOCKET"
 
1128
$               then
 
1129
$                   write tf "#ifndef HAVE_''keysym'"
 
1130
$                   write tf "#define HAVE_''keysym' 1"
 
1131
$if p2 .nes. "" then write sys$output "''decc_shr' #define ''keysym' 1"
 
1132
$                   write tf "#endif
 
1133
$                   goto cfgh_in_loop1
 
1134
$               endif
 
1135
$!
 
1136
$!
 
1137
$               if keysym .eqs. "HERRNO" then keysym = "h_errno"
 
1138
$               if keysym .eqs. "UTIMBUF" then keysym = "utimbuf"
 
1139
$               if key2c .eqs. "STRUCT"
 
1140
$               then
 
1141
$                   keysym = f$edit(key2d,"LOWERCASE")
 
1142
$               else
 
1143
$                   if key2_h .eqs. "_T"
 
1144
$                   then
 
1145
$                       if key2_t .eqs. "_TYPE"
 
1146
$                       then
 
1147
$                           keysym = f$extract(0, key2_len - 5, key2) - "HAVE_"
 
1148
$                       endif
 
1149
$                       keysym = f$edit(keysym,"LOWERCASE")
 
1150
$                   endif
 
1151
$               endif
 
1152
$!
 
1153
$!              Check the DEC C RTL shared image first
 
1154
$!------------------------------------------------------
 
1155
$               if f$search(tfile1) .nes. "" then delete 'tfile1';*
 
1156
$               define/user sys$output nl:
 
1157
$               define/user sys$error nl:
 
1158
$               search/format=nonull/out='tfile1' 'decc_shr' 'keysym'
 
1159
$               if '$severity' .eq. 1
 
1160
$               then
 
1161
$!
 
1162
$!                  Not documented, but from observation
 
1163
$!------------------------------------------------------
 
1164
$                   define/user sys$output nl:
 
1165
$                   define/user sys$error nl:
 
1166
$                   if arch_type .eq. 3
 
1167
$                   then
 
1168
$                       keyterm = "''keysym'<SOH>"
 
1169
$                   else
 
1170
$                       if arch_type .eq. 2
 
1171
$                       then
 
1172
$                           keyterm = "''keysym'<BS>"
 
1173
$                       else
 
1174
$                           keyterm = "''keysym'<STX>"
 
1175
$                       endif
 
1176
$                   endif
 
1177
$                   search/out=nl: 'tfile1' -
 
1178
   "$''keyterm'","$g''keyterm'","$__utc_''keyterm'",-
 
1179
   "$__utctz_''keyterm'","$__bsd44_''keyterm'","$bsd_''keyterm'",-
 
1180
   "$''keysym'decc$","$G''keysym'decc$","$GX''keyterm'"
 
1181
$                   severity = '$severity'
 
1182
$!
 
1183
$!
 
1184
$!                  Of course the 64 bit stuff is different
 
1185
$!---------------------------------------------------------
 
1186
$                   if severity .ne. 1 .and. key64
 
1187
$                   then
 
1188
$                       define/user sys$output nl:
 
1189
$                       define/user sys$error nl:
 
1190
$                       search/out=nl: 'tfile1' "$_''keyterm'"
 
1191
$!                      search/out 'tfile1' "$_''keyterm'"
 
1192
$                       severity = '$severity'
 
1193
$                   endif
 
1194
$!
 
1195
$!                  UNIX compatability routines
 
1196
$!---------------------------------------------
 
1197
$                   if severity .ne. 1
 
1198
$                   then
 
1199
$                       define/user sys$output nl:
 
1200
$                       define/user sys$error nl:
 
1201
$                       search/out=nl: 'tfile1' -
 
1202
    "$__unix_''keyterm'","$__vms_''keyterm'","$_posix_''keyterm'"
 
1203
$                       severity = '$severity'
 
1204
$                   endif
 
1205
$!
 
1206
$!                  VAX special handling routines
 
1207
$!---------------------------------------------
 
1208
$                   if (severity .ne. 1) .and. (arch_type .eq. 1)
 
1209
$                   then
 
1210
$                       define/user sys$output nl:
 
1211
$                       define/user sys$error nl:
 
1212
$                       search/out=nl: 'tfile1' "DECC$''keysym'<SOH>"
 
1213
$                       severity = '$severity'
 
1214
$                   endif
 
1215
$!
 
1216
$!                  Show the result of the search
 
1217
$!------------------------------------------------
 
1218
$                   if 'severity' .eq. 1
 
1219
$                   then
 
1220
$                       if key64 then write tf "#ifndef __VAX"
 
1221
$                       write tf "#ifndef ''key2'"
 
1222
$                       write tf "#define ''key2' 1"
 
1223
$if p2 .nes. "" then write sys$output "''decc_shr' #define ''key2' 1"
 
1224
$                       write tf "#endif"
 
1225
$                       if key64 then write tf "#endif"
 
1226
$                       goto cfgh_in_loop1
 
1227
$                   endif
 
1228
$               endif
 
1229
$               if f$search(tfile1) .nes. "" then delete 'tfile1';*
 
1230
$!
 
1231
$!              Check the DECC Header files next
 
1232
$!----------------------------------------------
 
1233
$               define/user sys$output nl:
 
1234
$               define/user sys$error nl:
 
1235
$               search/out=nl: 'decc_rtldef' -
 
1236
                    "''keysym';", "''keysym'[", "struct ''keysym'"/exact
 
1237
$               severity = '$severity'
 
1238
$               if severity .eq. 1
 
1239
$               then
 
1240
$                   if key64 then write tf "#ifndef __VAX"
 
1241
$                   write tf "#ifndef ''key2'"
 
1242
$                   write tf "#define ''key2' 1"
 
1243
$if p2 .nes. "" then write sys$output "''decc_rtldef' #define ''key2' 1"
 
1244
$                   write tf "#endif"
 
1245
$                   if key64 then write tf "#endif"
 
1246
$                   goto cfgh_in_loop1
 
1247
$               endif
 
1248
$!
 
1249
$           endif
 
1250
$           write tf "/* ", xline, " */"
 
1251
$           goto cfgh_in_loop1
 
1252
$       endif
 
1253
$!
 
1254
$!
 
1255
$!      Process SIZEOF directives found in SAMBA
 
1256
$!------------------------------------------------
 
1257
$       if key2a .eqs. "SIZEOF"
 
1258
$       then
 
1259
$           if key2b .eqs. "INO" .and. key2_h .eqs. "_T"
 
1260
$           then
 
1261
$               write tf "#ifndef SIZEOF_INO_T"
 
1262
$               write tf "#define SIZEOF_INO_T (6)"
 
1263
$               write tf "#endif"
 
1264
$               goto cfgh_in_loop1
 
1265
$           endif
 
1266
$           if key2b .eqs. "INTMAX" .and. key2_h .eqs. "_T"
 
1267
$           then
 
1268
$               write tf "#ifndef SIZEOF_INTMAX_T"
 
1269
$               write tf "#ifdef __VAX"
 
1270
$               write tf "#define SIZEOF_INTMAX_T (4)"
 
1271
$               write tf "#else"
 
1272
$               write tf "#define SIZEOF_INTMAX_T (8)"
 
1273
$               write tf "#endif"
 
1274
$               write tf "#endif"
 
1275
$               goto cfgh_in_loop1
 
1276
$           endif
 
1277
$           if key2b .eqs. "OFF" .and. key2_h .eqs. "_T"
 
1278
$           then
 
1279
$               write tf "#ifndef SIZEOF_OFF_T"
 
1280
$               write tf "#ifdef __VAX"
 
1281
$               write tf "#define SIZEOF_OFF_T (4)"
 
1282
$               write tf "#else"
 
1283
$               write tf "#define SIZEOF_OFF_T (8)"
 
1284
$               write tf "#endif"
 
1285
$               write tf "#endif"
 
1286
$               goto cfgh_in_loop1
 
1287
$           endif
 
1288
$           if key2b .eqs. "CHAR" .and. key2_h .eqs. "_P"
 
1289
$           then
 
1290
$               write tf "#ifndef SIZEOF_CHAR_P"
 
1291
$               write tf "#define SIZEOF_CHAR_P (4)"
 
1292
$               write tf "#endif"
 
1293
$               goto cfgh_in_loop1
 
1294
$           endif
 
1295
$           if (key2b .eqs. "INT")
 
1296
$           then
 
1297
$               write tf "#ifndef SIZEOF_''key2b'"
 
1298
$               write tf "#define SIZEOF_''key2b' (4)"
 
1299
$               write tf "#endif"
 
1300
$               goto cfgh_in_loop1
 
1301
$           endif
 
1302
$           if key2b .eqs. "UNSIGNED"
 
1303
$           then
 
1304
$               if key2c .eqs. "INT" .or. key2c .eqs. "LONG"
 
1305
$               then
 
1306
$                   write tf "#ifndef SIZEOF_''key2b'_''key2c'"
 
1307
$                   write tf "#define SIZEOF_''key2b'_''key2c' (4)"
 
1308
$                   write tf "#endif"
 
1309
$                   goto cfgh_in_loop1
 
1310
$               endif
 
1311
$           endif
 
1312
$           if key2b .eqs. "DOUBLE"
 
1313
$           then
 
1314
$               write tf "#ifndef SIZEOF_DOUBLE"
 
1315
$               write tf "#define SIZEOF_DOUBLE (8)"
 
1316
$               write tf "#endif"
 
1317
$               goto cfgh_in_loop1
 
1318
$           endif
 
1319
$           if key2b .eqs. "LONG"
 
1320
$           then
 
1321
$               if key2c .eqs. ""
 
1322
$               then
 
1323
$                   write tf "#ifndef SIZEOF_LONG"
 
1324
$                   write tf "#define SIZEOF_LONG (4)"
 
1325
$                   write tf "#endif"
 
1326
$               else
 
1327
$                   write tf "#ifndef SIZEOF_LONG_LONG"
 
1328
$                   write tf "#ifndef __VAX"
 
1329
$                   write tf "#define SIZEOF_LONG_LONG (8)"
 
1330
$                   write tf "#endif"
 
1331
$                   write tf "#endif"
 
1332
$               endif
 
1333
$               goto cfgh_in_loop1
 
1334
$           endif
 
1335
$           if key2b .eqs. "SHORT"
 
1336
$           then
 
1337
$               write tf "#ifndef SIZEOF_SHORT"
 
1338
$               write tf "#define SIZEOF_SHORT (2)"
 
1339
$               write tf "#endif"
 
1340
$               goto cfgh_in_loop1
 
1341
$           endif
 
1342
$           write tf "/* ", xline, " */"
 
1343
$           goto cfgh_in_loop1
 
1344
$       endif
 
1345
$!
 
1346
$!      Process NEED directives
 
1347
$!-------------------------------
 
1348
$       if key2a .eqs. "NEED"
 
1349
$       then
 
1350
$           if key2b .eqs. "STRINGS" .and. key2_h .eqs. "_H"
 
1351
$           then
 
1352
$               write tf "#ifndef NEED_STRINGS_H"
 
1353
$               write tf "#define NEED_STRINGS_H 1"
 
1354
$               write tf "#endif"
 
1355
$               goto cfgh_in_loop1
 
1356
$           endif
 
1357
$           write tf "/* ", xline, " */"
 
1358
$           goto cfgh_in_loop1
 
1359
$       endif
 
1360
$!
 
1361
$!
 
1362
$!      Process STATFS directives
 
1363
$!-------------------------------
 
1364
$!      if key2a .eqs. "STATFS"
 
1365
$!      then
 
1366
$!          write tf "/* ", xline, " */"
 
1367
$!          goto cfgh_in_loop1
 
1368
$!      endif
 
1369
$!
 
1370
$!      Process inline directive
 
1371
$!------------------------------
 
1372
$       if key2 .eqs. "inline"
 
1373
$       then
 
1374
$           write tf "#ifndef inline"
 
1375
$           write tf "#define inline __inline"
 
1376
$           write tf "#endif"
 
1377
$           goto cfgh_in_loop1
 
1378
$       endif
 
1379
$!
 
1380
$!      Process restrict directive
 
1381
$!--------------------------------
 
1382
$       if key2 .eqs. "restrict"
 
1383
$       then
 
1384
$           write tf "#ifndef restrict"
 
1385
$           write tf "#define restrict __restrict"
 
1386
$           write tf "#endif"
 
1387
$           goto cfgh_in_loop1
 
1388
$       endif
 
1389
$!
 
1390
$!      Process RETSIGTYPE directive
 
1391
$!----------------------------------
 
1392
$       if key2 .eqs. "RETSIGTYPE"
 
1393
$       then
 
1394
$           write tf "#ifndef RETSIGTYPE"
 
1395
$           write tf "#define RETSIGTYPE void"
 
1396
$           write tf "#endif"
 
1397
$           goto cfgh_in_loop1
 
1398
$       endif
 
1399
$!
 
1400
$!      Process STDC_HEADERS (SAMBA!)
 
1401
$!---------------------------
 
1402
$       if key2 .eqs. "STDC_HEADERS"
 
1403
$       then
 
1404
$           write tf "#ifndef STDC_HEADERS"
 
1405
$           write tf "#define STDC_HEADERS 1"
 
1406
$           write tf "#endif"
 
1407
$           goto cfgh_in_loop1
 
1408
$       endif
 
1409
$!
 
1410
$!      Process PROTOTYPES directive
 
1411
$!-------------------------------------
 
1412
$       if key2 .eqs. "PROTOTYPES"
 
1413
$       then
 
1414
$           write tf "#ifndef PROTOTYPES"
 
1415
$           write tf "#define PROTOTYPES 1"
 
1416
$           write tf "#endif"
 
1417
$           goto cfgh_in_loop1
 
1418
$       endif
 
1419
$!
 
1420
$!      Special for SEEKDIR_RETURNS_VOID
 
1421
$!---------------------------------------
 
1422
$       if key2 .eqs. "SEEKDIR_RETURNS_VOID"
 
1423
$       then
 
1424
$           write tf "#ifndef SEEKDIR_RETURNS_VOID"
 
1425
$           write tf "#define SEEKDIR_RETURNS_VOID 1"
 
1426
$           write tf "#endif"
 
1427
$       endif
 
1428
$!
 
1429
$!      TIME_WITH_SYS_TIME note:  On VMS time.h and sys/time.h are same module.
 
1430
$!
 
1431
$!      TIME_T_IN_SYS_TYPES_H
 
1432
$!------------------------------
 
1433
$       if key2 .eqs. "TIME_T_IN_TYPES_H"
 
1434
$       then
 
1435
$           write tf "#ifndef ''key2'"
 
1436
$           write tf "#define ''key2' 1"
 
1437
$           write tf "#endif"
 
1438
$       endif
 
1439
$!
 
1440
$!      Unknown - See if CONFIGURE can give a clue for this
 
1441
$!----------------------------------------------------------
 
1442
$       pflag = 0
 
1443
$       set_flag = 0
 
1444
$!      gproj_name = proj_name - "_VMS" - "-VMS"
 
1445
$       if f$search(tfile1) .nes. "" then delete 'tfile1';*
 
1446
$       define/user sys$output nl:
 
1447
$       define/user sys$error nl:
 
1448
$!      if f$locate("FILE", key2) .lt. key2_len then pflag = 1
 
1449
$!      if f$locate("DIR", key2) .eq. key2_len - 3 then pflag = 1
 
1450
$!      if f$locate("PATH", key2) .eq. key2_len - 4 then pflag = 1
 
1451
$!
 
1452
$       search/out='tfile1' 'configure_script' "''key2'="/exact
 
1453
$       search_sev = '$severity'
 
1454
$       if 'search_sev' .eq. 1
 
1455
$       then
 
1456
$           open/read/err=unknown_cf_rd_error sf 'tfile1'
 
1457
$search_file_rd_loop:
 
1458
$           read/end=unknown_cf_rd_err sf line_in
 
1459
$           line_in = f$edit(line_in, "TRIM")
 
1460
$           skey1 = f$element(0,"=",line_in)
 
1461
$           if skey1 .eqs. key2
 
1462
$           then
 
1463
$               skey2 = f$element(1,"=",line_in)
 
1464
$               skey2a = f$extract(0,2,skey2)
 
1465
$!
 
1466
$!              Keep these two cases separate to make it easier to add
 
1467
$!              more future intelligence to this routine
 
1468
$!----------------------------------------------------------------------
 
1469
$               if skey2a .eqs. """`"
 
1470
$               then
 
1471
$!                  if pflag .eq. 1
 
1472
$!                  then
 
1473
$!                      write tf "#ifndef ''key2'"
 
1474
$!                      write tf "#define ",key2," """,gproj_name,"_",key2,""""
 
1475
$!                      write tf "#endif"
 
1476
$!                  else
 
1477
$!                      Ignore this for now
 
1478
$!------------------------------------------
 
1479
$                       write tf "/* ", xline, " */"
 
1480
$!                  endif
 
1481
$                   set_flag = 1
 
1482
$                   goto found_in_configure
 
1483
$               endif
 
1484
$               if skey2a .eqs. """$"
 
1485
$               then
 
1486
$!                  if pflag .eq. 1
 
1487
$!                  then
 
1488
$!                      write tf "#ifndef ''key2'"
 
1489
$!                      write tf "#define ",key2," """,gproj_name,"_",key2,""""
 
1490
$!                      write tf "#endif"
 
1491
$!                  else
 
1492
$!                      Ignore this for now
 
1493
$!-------------------------------------------
 
1494
$                       write tf "/* ", xline, " */"
 
1495
$!                  endif
 
1496
$                   set_flag = 1
 
1497
$                   goto found_in_configure
 
1498
$               endif
 
1499
$               if f$extract(0, 1, skey2) .eqs. "'"
 
1500
$               then
 
1501
$                   skey2 = skey2 - "'" - "'"
 
1502
$               endif
 
1503
$               write tf "#ifndef ''key2'"
 
1504
$               write tf "#define ",key2," """,skey2,""""
 
1505
$               write tf "#endif"
 
1506
$               set_flag = 1
 
1507
$           else
 
1508
$               goto search_file_rd_loop
 
1509
$!              if pflag .eq. 1
 
1510
$!              then
 
1511
$!                  write tf "#ifndef ''key2'"
 
1512
$!                  write tf "#define ",key2," """,gproj_name,"_",key2,""""
 
1513
$!                  write tf "#endif"
 
1514
$!                  set_flag = 1
 
1515
$!              endif
 
1516
$           endif
 
1517
$found_in_configure:
 
1518
$unknown_cf_rd_err:
 
1519
$           if f$trnlnm("sf","lnm$process",,"SUPERVISOR") .nes. ""
 
1520
$           then
 
1521
$               close sf
 
1522
$           endif
 
1523
$           if f$search(tfile1) .nes. "" then delete 'tfile1';*
 
1524
$           if set_flag .eq. 1 then goto cfgh_in_loop1
 
1525
$       endif
 
1526
$   endif
 
1527
$!
 
1528
$!
 
1529
$!
 
1530
$!  If it falls through everything else, comment it out
 
1531
$!-----------------------------------------------------
 
1532
$   write tf "/* ", xline, " */"
 
1533
$   goto cfgh_in_loop1
 
1534
$cfgh_in_loop1_end:
 
1535
$close inf
 
1536
$!
 
1537
$!
 
1538
$! Write out the tail
 
1539
$!--------------------
 
1540
$write_tail:
 
1541
$gosub write_config_h_tail
 
1542
$!
 
1543
$! Exit and clean up
 
1544
$!--------------------
 
1545
$general_error:
 
1546
$status = '$status'
 
1547
$all_exit:
 
1548
$set noon
 
1549
$if f$trnlnm("sf","lnm$process",,"SUPERVISOR") .nes. "" then close sf
 
1550
$if f$trnlnm("tf","lnm$process",,"SUPERVISOR") .nes. "" then close tf
 
1551
$if f$trnlnm("inf","lnm$process",,"SUPERVISOR") .nes. "" then close inf
 
1552
$if f$trnlnm("tf1","lnm$process",,"SUPERVISOR") .nes. "" then close tf1
 
1553
$if f$trnlnm("tf2","lnm$process",,"SUPERVISOR") .nes. "" then close tf2
 
1554
$if f$trnlnm("tfcv","lnm$process",,"SUPERVISOR") .nes. "" then close tfcv
 
1555
$if f$type(tfile1) .eqs. "STRING"
 
1556
$then
 
1557
$   if f$search(tfile1) .nes. "" then delete 'tfile1';*
 
1558
$endif
 
1559
$if f$type(dchfile) .eqs. "STRING"
 
1560
$then
 
1561
$   if f$search(dchfile) .nes. "" then delete 'dchfile';*
 
1562
$endif
 
1563
$if f$type(configure_script) .eqs. "STRING"
 
1564
$then
 
1565
$   if f$search(configure_script) .nes. "" then delete 'configure_script';*
 
1566
$endif
 
1567
$exit 'status'
 
1568
$!
 
1569
$!
 
1570
$control_y:
 
1571
$   status = ss_control_y
 
1572
$   goto all_exit
 
1573
$!
 
1574
$!
 
1575
$!
 
1576
$! Gosub to write a new config_vms.h
 
1577
$!-----------------------------------
 
1578
$write_config_vms:
 
1579
$outfile = "sys$disk:[]config_vms.h"
 
1580
$create 'outfile'
 
1581
$open/append tf 'outfile'
 
1582
$write tf "/* File: config_vms.h"
 
1583
$write tf "**"
 
1584
$write tf "** This file contains the manual edits needed for porting"
 
1585
$!write tf "** the ''proj_name' package to OpenVMS.
 
1586
$write tf "**"
 
1587
$write tf "** Edit this file as needed.  The procedure that automatically"
 
1588
$write tf "** generated this header stub will not overwrite or make any"
 
1589
$write tf "** changes to this file."
 
1590
$write tf "**"
 
1591
$write tf -
 
1592
 "** ", datetime, tab, username, tab, "Generated by ''my_proc_file'"
 
1593
$write tf "**"
 
1594
$write tf -
 
1595
 "**========================================================================*/"
 
1596
$write tf ""
 
1597
$close tf
 
1598
$return
 
1599
$!
 
1600
$! gosub to write out a documentation header for config.h
 
1601
$!----------------------------------------------------------------
 
1602
$write_config_h_header:
 
1603
$outfile = "sys$disk:[]config.h"
 
1604
$create 'outfile'
 
1605
$open/append tf 'outfile'
 
1606
$write tf "#ifndef CONFIG_H"
 
1607
$write tf "#define CONFIG_H"
 
1608
$write tf "/* File: config.h"
 
1609
$write tf "**"
 
1610
$write tf -
 
1611
  "** This file contains the options needed for porting "
 
1612
$write tf "** the project on a VMS system."
 
1613
$write tf "**"
 
1614
$write tf "** Try not to make any edits to this file, as it is"
 
1615
$write tf "** automagically generated."
 
1616
$write tf "**"
 
1617
$write tf "** Manual edits should be made to the config_vms.h file."
 
1618
$write tf "**"
 
1619
$write tf -
 
1620
 "** ", datetime, tab, username, tab, "Generated by ''my_proc_file'"
 
1621
$write tf "**"
 
1622
$write tf -
 
1623
 "**========================================================================*/"
 
1624
$write tf ""
 
1625
$write tf "#if (__CRTL_VER >= 70200000) && !defined (__VAX)"
 
1626
$write tf "#define _LARGEFILE 1"
 
1627
$write tf "#endif"
 
1628
$write tf ""
 
1629
$write tf "#ifndef __VAX"
 
1630
$write tf "#ifdef __CRTL_VER"
 
1631
$write tf "#if __CRTL_VER >= 80200000"
 
1632
$write tf "#define _USE_STD_STAT 1"
 
1633
$write tf "#endif"
 
1634
$write tf "#endif"
 
1635
$write tf "#endif"
 
1636
$write tf ""
 
1637
$!
 
1638
$if P1 .nes. "NOBUILTINS"
 
1639
$then
 
1640
$   write tf " /* Allow compiler builtins */"
 
1641
$   write tf "/*-------------------------*/"
 
1642
$   write tf "#ifdef __DECC_VER"
 
1643
$   write tf "#include <non_existant_dir:builtins.h>"
 
1644
$   write tf "#endif"
 
1645
$endif
 
1646
$!
 
1647
$write tf ""
 
1648
$return
 
1649
$!
 
1650
$! gosub to write out the tail for config.h and close it
 
1651
$!---------------------------------------------------------
 
1652
$write_config_h_tail:
 
1653
$write tf ""
 
1654
$write tf " /* Include the hand customized settings */"
 
1655
$write tf "/*--------------------------------------*/"
 
1656
$write tf "#include ""sys$disk:config_vms.h"""
 
1657
$write tf ""
 
1658
$write tf "#endif /* CONFIG_H */"
 
1659
$close tf
 
1660
$return
 
1661
$!