File: README

package info (click to toggle)
pact 980714-3
  • links: PTS
  • area: main
  • in suites: slink
  • size: 13,096 kB
  • ctags: 26,034
  • sloc: ansic: 109,076; lisp: 9,645; csh: 7,147; fortran: 1,050; makefile: 136; lex: 95; sh: 32
file content (857 lines) | stat: -rw-r--r-- 33,940 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857

                     A Field Guide to Installing PACT
                            on UNIX Systems

PACT (Portable Application Code Toolkit) is a set of libraries and utilities
to facilitate the development of portable software systems. It has a bias
toward scientific and engineering applications especially in terms of the
data handling services.

Consult the PACT User's Guide which is included in the document distribution
for some additional information.  I can be reached at 510-423-4889 during
business hours (9am - 5pm Pacific Time), if you have questions on PACT and its
installation.

WWWeb: http://www.llnl.gov/def_sci/pact/


                             TO INSTALL PACT

0) Obtain the distribution file (e.g. pact96_3_17-src) by some means and put it
   in a place such as /usr/local/src as follows:

     -> cd /usr/local/src

     -> tar xvf /dev/rst8    OR    ftp    OR    cp <somewhere>/pact96_3_17-src .

     -> chmod a+x pact96_3_17-src

   You do not want to have a subdirectory of the directory in which you have
   put the distribution file named pact. The installation process will
   mangle it thoroughly if you do!

   For the rest of this document the distribution file will be called
   pact-src (you may or may not want to rename it to this).

   If you have obtained the PACT documents as well as the distribution
   (e.g. pact96_3_17-doc.tar.gz), you may wish to get them out and start
   printing the ones of interest before proceeding on to the installation
   which may take minutes to hours.

     -> mkdir pact-docs

     -> mv pact96_3_17-doc.tar.gz pact-docs/pact-doc.tar.gz

     -> cd pact-docs

     -> gzip -d pact-doc.tar.gz

     -> tar xvf pact-doc.tar

     -> lpr <document>.ps ...

1) After reading the section "PACT DISTRIBUTION BUILDER DESCRIPTION" below,
   run the distribution file (the C Shell must be installed on your system).
   Running the distribution file without arguments will give you a usage
   summary. Select the arguments you wish and run it again.  For example:

     -> pact-src
                          .
                 <usage summary>
                          .
                          .
    
     -> pact-src -i /usr/local/pact auto

   This does the following things: configures the distribution, compiles all
   packages, runs all of the PACT tests, and finally installs it in the
   designated place (unless "-i none" is used). On a fast machine all of
   the above will take a few minutes and on a slow machine it will take
   a few hours.
    NOTE: The directory designated for installation, if any,  must contain
   at least the following subdirectories: include, bin, lib, and scheme
   and it must be writable by you.

   Although the amount of disk space which PACT takes up varies here are some
   rough guidelines for a RISC system (CISC systems will use less space):

          PACT Executables:  8 MBytes
          PACT Libraries:   12 MBytes
          Other PACT Files:  1 MByte

   As the installation proceeds, most messages from component programs
   and scripts are routed into a file called Build.Log. When the installation
   completes the name is changed to <site>.BUILD and the file is moved up
   one directory level so as to be out of the way in case another attempt
   or a build on a different system is to be done next. You may wish to check
   this file for problems or information about the process itself. There
   should be no error or warning messages in a normal installation.

2) If the installation failed skip over to step (4).

   Now that PACT is installed. You need to set two environment variables
   in order to use ULTRA, SCHEME, SX, PDBVIEW, or PDBDIFF. The SCHEME and
   ULTRA environment variables must be set to point to the directory in which
   the scheme files were installed. The default for this directory is
   /usr/local/scheme and in the above example it would be /usr/local/pact/scheme
   (see the SCMDir variable if in doubt).

     -> setenv SCHEME /usr/local/pact/scheme
     -> setenv ULTRA /usr/local/pact/scheme

   These should probably be put into your .cshrc or your .profile so that
   they appear when you log into your system.

   The PACT documentation has additional information about these
   environment variables. This example will serve to get you started.

3) If everything has completed successfully, you are done and PACT is
   installed on your system. Otherwise you have some work cut out for you.

4) Here is some guidance for trouble shooting. We start off with a partial
   list of assumptions (we try to have as few of these as possible).


                       ASSUMPTIONS ABOUT UNIX SYSTEMS

   A) You have configured your environment for code development.
      This means that you have your path set to find compilers and
      debuggers, that your manpath is right to access man pages on
      development tools such as the compiler. If you don't know your
      own system PACT-CONFIG certainly can't be expected to either.
      It uses your environment ($path, etc) to know where to find
      what it needs to know.

   B) You have the CSH on your system.
      If you do not have the C Shell on your system you can obtain csh or
      tcsh on the Internet.

   C) You have X Windows on your system.
      If you do not have it, either get it or work around the graphical
      applications (ignore complaints about compiling or loading the
      graphical components of PACT).  This assumption is one we plan to
      remove.

   D) We have had trouble in the past when "." was not on the default
      CSH path.  This is a system wide thing which you cannot control
      by adding "." to the path in your private .cshrc.  We think we
      have this taken care of and if you find out differently let us
      know.

   E) Use /bin/make in preference to GNU make.  GNU make's defaults
      are bizarre for PACT's needs and it is difficult to work with.
      If you absolutely must use GNU make you may wish to look at
      linux.config for some guidance on make rule adjustments aimed
      at GNU make. 



                       WHAT TO DO TO GET PACT TO BUILD

   A) Read the sections below to orient yourself to the organization of PACT.
      PACT will probably compile and load correctly if you can create a
      good configuration file.  That should be your first thrust.
      If you can't get PACT to configure you can try to create
      the Makefiles in each sub-directory, and run make over them by hand.
      This should be done in the order stated below with SCORE first and
      ULTRA last.

   B) If PACT fails to configure itself, you will need to build a
      configuration file as follows:

      i) Build a <site>.config file for your installation.  For example, if
         your host machine is foo with its various features, you should
         create a file "foo.config".  The "foo" base will be used by
         pact-config as described below.  Use one of the supplied
         configurations (in pact/manager/configs.std) as an example and run
         PACT-ANALYZE to obtain some more information about your system.

           -> cd pact/manager
           -> pact-analyze -t

         Consult the list of configuration parameters and the syntax
         description below for more information about the configuration
         files and how to build them.

         NOTE: The utility PACT-CONFIG which you will use in step (ii)
               runs PACT-ANALYZE also after reading your configuration file.

         CAVEAT: C compiler and library implementations are not as uniform
                 as one would like. In particular, it may be necessary to add
                 declarations of functions and variables which PACT uses to
                 your configuration file because the system header files leave
                 them out. Use CDeclarations to do this.

      ii) Configure the distribution as follows (pact-config takes the
          same arguments as pact-src):

            -> pact-config <site>

          Where <site> is the identifier for the base of the local
          configuration file that was prepared in step (i).

          For example, if you're at the host site, foo, type

            -> pact-config foo

          NOTE: If you want to ease a future update of PACT, make a
                directory outside of the PACT directory tree and save your
                custom configuration file (e.g. foo.config) there.  Then
                when you update PACT with a new distribution, you can use
                pact-update and its -f option to use your custom
                configuration file.  (Run PACT-UPDATE with no arguments
                to get a brief description of its use.)

      iii) Follow the instructions which PACT-CONFIG prints out and
           source the file env-xxxxx (which is written by PACT-CONFIG)
           into your environment. This sets up your environment to
           work with the configuration of directories for a particular
           platform which the PACT-CONFIG creates. For example suppose
           this is being done on a system running Linux 1.0.8

                -> source env-lnx-1.0.8

           If you are going to work with the PACT sources beyond simply
           installing the PACT system, you may wish to add the contents
           of env-xxxxx to your .cshrc (with suitable conditions).
           Do this only if you are confident that you understand what
           env-xxxxxx does!

      iv) Then do:

             -> pact build

   C) If there is a problem compiling some part of PACT and you change the
      sources to correct the problem, that part of PACT can be compiled
      in two different ways: first, from the pact/manager directory by
      doing a pact on that part; and second, in the source directory by
      doing pact install.  For example, suppose that your compiler
      complained about something in ultra. You would do the following:

          -> source env-xxxxx

          -> cd pact/ultra

           <edit and fix the appropriate files>

      Then you would do the one of the following:

          -> pact install

          -> cd ../manager

      or

          -> cd ../manager

          -> pact ultra

   D) Test the distribution as follows:

          -> cd pact/manager

          -> pact test

   E) Even if there are problems with some parts of PACT you can still
      install it so that you can use the functioning parts. To do so
      type the following:

          -> cd pact/manager

          -> install-pact


                       MULTIPLE PLATFORM INSTALLATIONS

If you have a network setup in which you have a single network path
(independent of node) to the PACT sources, you can build PACT for each
machine type on your net by doing an appropriate PACT-CONFIG on each
different platform. This creates separate bin, lib, include, and scheme
directories for each platform and keeps machine dependent files (libraries,
executables, etc) out of the source directories and in the machine
dependent ones.

Perform the following steps (assuming for example that the sources are in
/usr/local/src/pact on all platforms):

   1) Follow the instructions in TO INSTALL PACT and install PACT
      on one system.

   2) For each additional platform:

      a) log onto the platform (telnet, rlogin, rsh, etc)

         -> rlogin <next-platform>

      b) go into the manager directory (pact/manager)

         -> cd /usr/local/src/pact/manager

      c) do a pact-config auto

         -> pact-config -i /usr/local/pact auto

         -i defines directory where PACT will be installed
            during step (2-e).
         NOTE: The directory designated for installation, if any,  
         must contain at least the following subdirectories: 
                include, bin, lib, and scheme
         and it must be writable by you.


      d) source env-xxxxx

         To make this work you must follow the instructions which
         PACT-CONFIG prints out and source the file env-xxxxx (which
         is written by PACT-CONFIG) into your environment. This sets
         up your environment to work with the configuration of
         directories for a particular platform which the PACT-CONFIG
         creates. For example suppose this is being done on a system
         running Linux 1.0.8

         -> source env-lnx-1.0.8

         If you are going to work with the PACT sources beyond simply
         installing the PACT system, you may wish to add the contents
         of env-xxxxx to your .cshrc (with suitable conditions).
         Do this only if you are confident that you understand what
         env-xxxxxx does!

      e) do a pact update to compile, test, and install PACT

         -> pact update

         This should be all that is required for this platform!

If any there are any problems with (2-c) or (2-e) see the trouble shooting
discussion in the TO INSTALL PACT section.

NOTE: This is a new feature and we hope to improve it in coming releases;
however, it is oriented toward the C shell at this point and if you are
using another shell you will have to jump in and understand what is going
on in order for everything to work properly.


                  PACT DISTRIBUTION BUILDER DESCRIPTION

The PACT distribution is a C shell script prepended to the compressed
tar file containing the PACT sources.  In this fashion the distribution is
self-extracting, self-configuring, self-compiling, self-testing, and self-
installing. Recognizing that there is a certain minimal set of information
which the installer may wish to specify, the distribution file takes command
line arguments.  The script will write a log file called Build.Log which
should be monitored (using tail -f) for problems in the build.

Here is a synopsis of the distribution file.

     Usage: pact-src [-b <mail-dest>] [-c] [-f <directory>]
                     [-i <directory>] [-k] [[+-n <host>] | [-s]]
                     [-t <tar-file>] <config>
     
     -b		When building PACT, which can take a while, the installer
		may wish to turn to other tasks. The -b flag causes the
		compilation to occur in the background and to have mail
		sent to the designated address when the compilation,
		testing, and installation are complete.

     -c         Stop after configuring the distribution.

     -f		It is possible, even likely, that each site at which
		PACT is installed will have its own configuration file.
		It is a bad idea to keep this configuration file with
		the PACT sources since they may be deleted. The -f flag
		is used to tell the distribution where to find your
		configuration file.

     -i		By default the distribution file will try to install
		PACT in /usr/local.  If you want it to be installed
		off of another directory, use the -i flag to specify
		the alternate base directory. A value of "none" will
		cause PACT to be compiled and tested but not installed.
		The installation will warn you of required sub-directories
		(e.g. include, bin, lib, scheme) which do not exist
		(even if only in the log file).

     -k		When updating PACT you may or may not want to remove
		any old sources.  The default behavior is to remove
		them.  The -k flag causes the old sources to be kept.

     -n,+n	Once PACT has been installed at a site, it can be
		updated from a distribution that is available via
		anonymous FTP in the pub directory on any internet
		node. This means that new postings of distributions
		can be conveniently built at your site. The -n flag
		updates PACT without also updating the documentation
		while the +n flag simultaneously updates PACT and its
		documentation.

     -s         The sources are out and only need to be configured.

     -t		PACT can be updated if you have a compressed tar file
		containing the sources. This method is older and more
		error prone than using the distribution file directly,
		but is still supported. The file specified may be
		compressed or uncompressed. In any case, it should be
		specified as something such as pact.tar, i.e. if you
		have pact.tar.gz type -t pact.tar.

     <config>	This is the configuration for the installation.
                Known configs are:
                    auto    detects the system configuration
                    aix     IBM RS6000 systems
                    hp      HP RISC 700 systems
                    irix    SGI systems
                    irixg   SGI systems with GCC
                    irix64  64 bit SGI systems running IRIX64 6.x
                    linux   LINUX systems
                    meiko   MEIKO Solaris systems
                    mips    MIPS OS systems
                    osf     OSF systems
                    osfg    OSF systems with GCC
                    paragon INTEL Paragon systems running OSF1
                    solaris Sun Solaris systems
                    sun     standard Sun systems
                    sung    Sun systems with GCC
                    t3d     CRAY t3d systems
                    ultrix  DEC ULTRIX systems
                    unicos  CRAY UNICOS systems
		If you supply your own configuration file its name must
		be of the form site.config. For example, create a file
		foo.config in ~/myconfig with your configuration for
		site foo, and do: pact-src -f ~/myconfig foo

NOTE: the distribution installation process assumes that the umask may not
be appropriately set for the purpose of installing PACT. It therefore sets
the umask to 002.


                  BACKGROUND AND ORGANIZATION OF PACT

PACT includes the following software libraries and applications:

   SCORE    - a low level, environment balancing library
   PML      - a portable math library
   PDB      - a portable binary data base management library
   PPC      - a portable process control library
   PGS      - a portable graphics library
   PANACEA  - a portable numerical simulation code development system
   SCHEME   - a portable Scheme interpreter
   SX       - Scheme with extensions (PDBVIEW is an SX program)
   ULTRA    - a 1d presentation, analysis, and manipulation application

In the standard distribution each of the components resides in a subdirectory
of the main pact directory.  In addition there is a subdirectory called manager
which contains various configuration files and shell scripts to automate the
installation of PACT.  In the following discussion, it will be assumed
that there is a base directory called pact which is a subdirectory of some
other directory such as /usr/local/src, so that when the directory score
is referred to as pact/score, the directory /usr/local/src/pact/score is
meant.

To make it as easy as possible to port/maintain/install PACT on
a variety of systems, PACT uses the MAKE utility to control compilation, loading,
and other tasks related to management of the system.  Due to differences in
operating systems and site installations, the PACT system uses a three part
Makefile.  The first part has site dependent information and this will be the
same for all of the components of PACT.  This part is called make-def.
The second part contains the specifics of the components and therefore each
component of PACT has a separate file called pre-Make.  In pact/score,
pact/pml, pact/ppc, and so on there are pre-Make files which contain
dependencies particular to those parts of PACT.  The third part contains a
number of macros and dependencies common to all of PACT but which depend on
the operating system.  The utility PACT runs builds the Makefile from these
pieces, runs MAKE over it, then deletes the Makefile.  The reason for the
deletion is that the Makefile has system dependencies and in the context of
multi-platform builds such a file cannot persist indefinitely lest it interfere
with the Makefile from another platform.

The files make-def and make-macros are built for you automatically using a
few pieces of information supplied in your configuration file (see below) and
live in the dev/<system>/include directory thereafter.

I have found the mechanism to be very simple and portable.  I have used it in
preference to such alternate mechanisms as Imake because it is much easier to
manage and depends only on standard UNIX facilities.


                     CONFIGURATION FILE SYNTAX

The syntax of a configuration file is fairly simple. Blank lines and lines
beginning with a '#' signal the end of a section or are ignored. There are
the following main section types: MakeRule, CEnvironment, CDeclarations, and
VariableDef.  The sections are begun by a line containing the section type.
The default section type is VariableDef.

You can have any number of instances of the main sections and their
specifications are all concatenated together. Specifications in the CEnvironment
and CDeclarations sections result in #define's and variable or function
declarations in the scconfig.h file. MakeRule specifications allow sites
to add targets and macro definitions to the make-def (and hence Makefile)
files for the system.  VariableDef specifications go into the construction
of the make-def, trconfig.h, and spokes.scm files.

In addition to the main section types there are the following special section
types: ".c.i:", ".c.o:", ".c.a:", ".l.o:", ".l.a:", ".f.o:", and ".f.a:".
These are to define the make rules for preprocessing a C source file, compiling
a C source file into an object file, compiling a C source file "directly"
into an archive file (if your system's make is capable of doing so),
compiling a LEX source file into an object module, compiling a LEX source
file directly into an archive file (make willing), compiling a FORTRAN
source file into an object file, and compiling a FORTRAN source file
directly into an archive file (make willing) respectively.  These sections
are begun by a line containing the section name.

All sections are ended by blank or comment lines (lines beginning with '#').


                     CONFIGURATION PARAMETERS DESCRIBED

This group of parameters is used by the configuration building and make processes
to distinguish various operating system characteristics as well as the utilities
which come with a UNIX/POSIX system.

Some of these are implied by the PACT coding and are listed here to give you
an idea of what they are there for (just in case you need to look in the code).

ArcInstOpt
   The options needed by ar to run correctly and quietly in the process
   of building PACT. These can depend on other configuration parameters.
   Default is "rsc".

BuildStrategy
   UNIX systems with a sufficiently smart make can save
   lots of disk space by building the objects directly into
   library archives. Use "SpaceSaving" if your make is good enough
   and "none" otherwise.  PACT-ANALYZE will detect this for you.
   Default is "SpaceSaving".

CCompiler
   The name of the C compiler to be used.  Default is "cc".

CCmpLdr
   The name of the C compiler/loader driver to be used.  On some systems,
   especially parallel ones, you need to load with a particular
   set of libraries and object files which the loader driver knows about
   but you don't.  Default is the value of CCompiler.

CDebug
   C compiler flags to specify debuggable packages.  Default is "-g".

CFLAGS
   C compiler flags to be used for all PACT packages.  This is for
   those options which do not control debugging or optimization.
   Use CDebug or COptimize for those purposes
   Default is "".

COptimize
   C compiler flags to specify optimized packages.  Default is "-O".

CSpokes
   A list of C coded binary file translation spokes to be built with SX.
   An NACF spoke is included with the distribution. Default is "nacf".

ExtensionBinaries
   Any local extensions that need to be installed with PACT. Default is "".

FCompiler
   The name of the FORTRAN compiler to be used.  Default is "f77".

FDebug
   F77 compiler flags to specify debuggable packages.  Default is "-g".

FFLAGS
   F77 compiler flags to be used for all PACT packages.  This is for
   those options which do not control debugging or optimization.
   Use FDebug or FOptimize for those purposes
   Default is "".

FOptimize
   F77 compiler flags to specify optimized packages.  Default is "-O".

FrontEnd
   On some systems (particularly parallel machines) the target codes
   are cross-compiled and must be run in a special way by the front
   end machine. This is used to execute the target appropriately.
   Default is "".

GraphicsDevices
   Host graphics systems/devices available. Current possibilities are
   PS and CGM (PostScript and Computer Graphics Metafile) are generic
   to all systems. X, GL, XGL, SUN, and PEX (X Windows System, SGI's GL,
   SUN's latest, SUN's suncore, and Phigs Extension to X) are
   usually to be found only on UNIX based systems. BGI and MSC (Borland
   Graphics Interface and Microsoft Graphics Library) are for
   DOS based systems. QD (QuickDraw) is on Apple Macintosh systems.
   Default is "PS CGM".

GraphicsFlag
   Any special graphics flag (not usually needed with X11).  Default is "".

INSTALL
   Place holder for either "install <options>" or "cp" depending on whether
   or not your system has install.  Default is "cp".

InstBase
   The directory in which the PACT manager expects to find lib, bin, include,
   and scheme directories into which to install PACT.  Default is "/usr/local".

IPCSupport
   Specify the support for IPC.  Some non-standard operating systems
   force a choice here.  Current choices are: POSIX or NOIPC. The
   default is POSIX.

LDFLAGS
   Special loader/linker flags. Default is "".

LXFLAGS
   Flags for C compilation of LEX generated files.  Default is "".

MachDepGraphicsInc
   Special specifications for the C compiler to find graphics related
   include files (e.g. -I/usr/include/X11).  This is not often needed.
   Default is "".

MachDepGraphicsLib
   Special specifications for graphics libraries to be loaded
   (e.g. /usr/lib/libX11.a). Default is "".

MachDepInc
   Special specifications for the C compiler to find non-graphics related
   include files (e.g. -I/usr/local/include). This is not often needed.
   Default is "".

MachDepLib
   Special specifications for non-graphics libraries to be loaded
   (e.g. -lbsd). Default is "".

NoExe
   On some systems (particularly parallel machines) the target codes
   are cross-compiled and must be run in a special way by the front
   end machine. In this situation it may be pointless to build the
   PACT executables but necessary to build the libraries.  If this
   is TRUE then no executables will be linked and installed (e.g.
   no ULTRA or SX).  Default is "FALSE".

PubInc
   Specification for C compiler to find PACT include files in some public
   directory.  This is primarily used for developers who are working on
   a single package but need headers from other parts of PACT. This follows
   the InstBase variable by default so any resetting of PubInc must come
   after the last setting of InstBase (e.g. -I /home/pact/include).
   Default is "-I /usr/local/include".

PubLib
   Specification for the loader to find PACT library files in some public
   directory.  This is primarily used for developers who are working on
   a single package but need libraries from other parts of PACT. This follows
   the InstBase variable by default so any resetting of PubLib must come
   after the last setting of InstBase (e.g. -I /home/pact/lib).
   Default is "-I /usr/local/lib".

NEED_MEM_TRACE
   PACT supports a layer of memory management over the system memory manager
   which provides diagnostic capabilities as well as useful features for
   applications.  On some systems, PACT can understand the workings of the
   memory manager sufficiently to require a smaller amount of overhead and
   look more deeply in the system heap.  Other systems are not so and PACT
   must do more bookkeeping work. Set this parameter to TRUE to indicate
   the latter and FALSE the former. Default is "TRUE".

RANLIB
   Place holder for either "ranlib" or "touch" depending on whether or not
   your system has ranlib. Default is "touch".

RM
   Place holder for "rm <options>" depending on the options your system's
   rm has.  Default is "rm -f".

SchemeSpokes
   A list of Scheme coded binary file translation spokes to be used with SX.
   A netCDF spoke is included with the distribution.  Default is "netcdf".

ScmDir
   A directory in which to install scheme source files.  This should also be
   a subdirectory of InstBase.  Default is "scheme".

UPDATE
   Place holder for either "ranlib" or "touch" depending on whether or not
   your system needs ranlib to update archives which have been copied.
   Default is "touch".


UseGnuMake
   This variable if present in your config file tells GNU make to
   suppress the messages about entering and leaving directories.
   Default is to run GNU make without the suppression option.


                       C ENVIRONMENT PARAMETERS

This group of parameters is used in C header files to set up and define the
C compilation environment for the PACT sources.


                      C Language Standard

These parameters define which C standard is to be assumed when compiling
PACT sources. This is determined for you by PACT-ANALYZE from the compiler.

ANSI
   Conforming to ANSI C (this is the default).

PCC
   Conforming to the Portable C Compiler (KR first edition).


                    FORTRAN Language Standard

ANSI_F77
   Conforming to ANSI FORTRAN 77. Specifically, this means that when calling
   FORTRAN routines from C or C routines from FORTRAN, the compiler maps
   names to all upper-case.


             System Dependent Parameters Which Must Exist

The following parameters are implied by other selected options:

byte
   Type "void" if supported (default for ANSI compilers),
   type "char" if no voids (default for PCC compilers).

UNIX
   UNIX/POSIX Operating System (as opposed to DOS or MAC).

X11R4
   PACT uses X11 R4 or later graphics (goes with GraphicsDevices).


                   Other System Dependent Parameters

AIX
   This indicates the IBM UNIX variant.

BINARY_MODE_R
   Binary file mode parameter for read only mode. Default is "rb".

BINARY_MODE_RPLUS
   Binary file mode parameter for open for update mode. Default is "r+b".

BINARY_MODE_W
   Binary file mode parameter for create mode. Default is "wb".

BINARY_MODE_WPLUS 
   Binary file mode parameter for create for update. Default is "w+b".

BSD
   This indicates the presence of BSD UNIX 4.2 or later.

DOS
   This indicates the presence of IBM or Microsoft DOS.

FIXNUM
   C type corresponding to FORTRAN integer. Defaults to long. Don't set this.

HAVE_NO_RUSAGE
   Indicate the absence of the "getrusage" utility which provides information
   about resource utilization.

HAVE_NO_SIGFPE
   Indicate the absence of the floating point exception handler package.

HAVE_SELECT_P
   Indicate the presence of a working "select" system call iff there is
   no working STREAMS package available.
   PACT-ANALYZE detects this for you.

HAVE_SOCKETS_P
   Indicate the presence of a working socket library. Default is off.
   If you have X windows you have this.

HAVE_STREAMS_P
   Indicate the presence of a working STREAMS package. Default is off.
   PACT-ANALYZE detects this for you.

HPUX
   This indicates the HP UNIX variant.

HYPOT
   This allows the user to specify a routine to be used in place of the
   standard math library's "hypot". The PACT routine PM_hypot may be used
   here, or the user may provide their own.

LINUX
   This indicates the presence of the LINUX OS.

MAC
   This indicates the presence of Apple Macintosh OS.

MPW
   This indicates the presence of MPW C 3.0 or later.

MSC
   This indicates the presence of Microsoft C 5.0 DOS (16 bit) or later.

OSF
   This indicates the presence of the OSF OS.

OSFG
   This indicates the presence of the OSF OS with GCC.

POW
   This allows the user to specify a routine to be used in place of the
   standard math library's "pow". The PACT routine PM_pow may be used
   here, or the user may provide their own.

RAND_MAX
   This allows the user to set a value for the maximum value returned by
   the random number generator. It should only be used on systems where
   this value is not already defined. Check the man pages for "rand" to
   be sure.

Register
   Some C compilers take a dim view of the use of the register allocation
   specifier.  Set to "register" if appropriate, and "" if not.
   Default is "".

REMOVE
   This allows the user to specify a routine to be used in place of the
   standard i/o library's "remove". The PACT routine SC_remove may be used
   here, or the user may provide their own.

SGI
   This indicates the presence of an SGI machine.

SIGNAL_FUNCTION
   This allows the user to specify a routine to be used in place of the
   standard signal library's "signal". The PACT routine SC_signal may be
   used here, or the user may provide their own. (NOTE: SC_signal is a
   stub routine provided to prevent unsatisfied externals; it does not
   perform any actual signal handling.)

SOLARIS
   This indicates the presence of the SOLARIS OS.

STRTOD_FUNCTION
   This allows the user to specify a routine to be used in place of the
   standard math library's "strtod". The PACT routine _SC_strtod may be
   used here, or the user may provide their own.

SYSTEM
   This allows the user to specify a routine to be used in place of the
   standard i/o library's "system". The PACT routine SC_system may be used
   here, or the user may provide their own. (NOTE: SC_system is a stub
   routine provided to prevent unsatisfied externals; it does not perform
   any actual system calls.)

SYSV
   This indicates the presence of UNIX System V.

THINK_C
   This indicates the presence of Symantec THINK C 5.0 or later.

TURBOC
   This indicates the presence of Borland C++ 3.0  DOS (16 bit) or later.

UNICOS
   This indicates the presence of Cray Research C for UNICOS.