C Driver Customization

The Portland Group compilation drivers, pghpf, pgcc, pgf77, pgCC (HPF, C, Fortran 77, and C++)[*] allow you to issue a single command that builds command lines to execute the various compilation tools using the correct options (including options for the compiler, the assembler and the linker). This chapter describes how you can customize the driver based on the settings of environment variables and the statements in driver initialization files. The environment variables provide information that the driver uses to locate executable files and other system files. The driver initialization file (PGIRC file) contains statements and configuration keywords that set various driver parameters; these parameters determine the defaults supplied to the driver, to the compiler or to other phases of the compilation sequence. Most users need not be concerned with customizing the driver, since the initialization file supplied with each system should serve their needs. Advanced users and system administrators can take advantage of the PGIRC facility to customize their environment on a global, per-user, or per-file basis.

Warning

A PGIRC file is required for the driver to operate correctly. If you remove the PGIRC file supplied with your software and do not specify an alternate PGIRC file, you will receive an error message from the driver, for example using the pghpf driver:

pghpf-error-Unable to open - /command-path/.pghpfrc

C.1 Environment Variable

The drivers use environment variables to locate support files and libraries as well as executable programs. If you install the PGI software in its default location, /usr/pgi, the environment variables do not need to be set as long as the directory containing the PGI executables is added to the PATH environment variable (in general, this is the directory /usr/pgi/arch/archbin where arch is a system -specific name for example SPARC or SGI). Otherwise the following variable needs to be set:
PGI
The root directory for the PGI products. For example, if your compilers were installed in /usr2/pgi, set PGI to this value.

C.1.1 Setting Environment Variables

The method for setting the PGI environment variables depends on your shell. Below are the commands for some common shells (note we use target as a generic name for any system, for example SPARC or SGI).

Bourne Shell or Korn Shell:

PGI=/usr2/pgi; export PGI
PATH=$PATH:$PGI/target/bin; export PATH
C Shell:
setenv PGI /usr2/pgi
setenv PATH $PATH:$PGI/target/bin

C.2 PGIRC Statements and Configuration Variables

PGIRC files contain statements, configuration variables, user-defined variables and configuration tests. The statements allow you to set variables to predefined or user specified values. In addition, configuration tests and the various flow control statements let you test whether a configuration variable or command-line option is set and then set a value or branch accordingly. There are also statements that read in additional configuration files for processing. The compiler driver, pghpf processes the PGIRC file and uses the values supplied to set its internal parameters. Once the driver's parameters are set, command lines are built and executed.

Most of the configuration variables have corresponding command-line options. The command-line options, when supplied, take precedence over values set in PGIRC files. There may be more than one PGIRC file, including the default system configuration file supplied with The Portland Group Software. For a variable that is set in more than one PGIRC file, the most recent value set overrides any previous value.

The examples presented later in this chapter show PGIRC configuration files. By supplying either user-specified values or predefined values you can set configuration variables. This text indicates valid values where a predefined keyword is expected.

Include comments in a PGIRC file using the # character. Any characters following a # are ignored.

The set statement, used in combination with the = operator (or a space), sets the value of a configuration variable. Case is significant for configuration variables, but not for the PGIRC commands. For example, the following PGIRC lines set the value of the TARGET configuration variable, and all three are equivalent.

set TARGET=target
SET TARGET=target
SET TARGET target

C.3 Search Scope for PGIRC Files

There can be more than one PGIRC file. The driver determines which file to use according to the following scoping rules:
  1. If a -rc driver option is supplied on the command line, the named file supplied as a parameter is used as the PGIRC file. If this option is supplied with a full pathname, the specified file is used as the PGIRC file and no further searching takes place. If just a file name is supplied and it is not a full pathname, the filename supplied is used instead of the default name, .pghpfrc and the normal directory search scope rules apply using the alternate name, as described in the following two steps.
  2. If the $HOME environment variable is set, the driver looks for the configuration file in the $HOME directory, otherwise the driver looks for the configuration file in the current working directory. If the configuration file is found, in either of these directories, it is processed.
  3. If the second search fails, the driver attempts to find the configuration file in the directory where the driver resides (the $DRIVER directory).
If you want to use more than one configuration file, add the include statement to the PGIRC configuration file. Once a PGIRC file is found by the scope rules, processing begins and other PGIRC files that may exist further down the chain are not processed (unless you include them). Note that when a configuration variable is set twice, the later setting overrides any previous value. Thus, the placement of the include statement within a PGIRC file may be critical. For example, if you want to change the value of a configuration variable, you could create a PGIRC file in your home directory containing the following:
include $DRIVER/.pghpfrc
set TARGET=target
This PGIRC file would read the contents of the default PGIRC file and override the value of the TARGET variable with the specified value.

C.4 Altering PGIRC Files

If you want to alter PGIRC files, it is useful to test the driver output. The driver option -dryrun prints the commands that the driver generates, but does not execute them. For example:
$ pghpf -dryrun hello.hpf
The driver option -show prints the driver's current configuration, after reading the PGIRC file. This option is also useful for testing.

C.5 Defining and Using PGIRC Variables

Each PGIRC configuration variable is an internally defined name. If a variable is set in a PGIRC file, its value is available while the driver is executing. Variables that are not set in the configuration file can be set either as environment variables or on the command line (or a variable may not be set at all). There are four variations for setting a configuration variable (we use the Bourne shell for these examples).

1. Using the set statement from within a configuration file. For example:

	set LD=ld
2 Setting the configuration variable on the driver command line.
	$pghpf LD=ld860 -ohello hello.hpf 
3. Setting an environment variable at the shell prompt or in the shell's startup file.
	$LD=ld860 ; export LD
	$pghpf hello.hpf 
If you use the environment variable method for setting configuration variables, you need to include a line similar to the following in your PGIRC file:
	ifndef LD set LD=$LD
This tells the driver to try to resolve the LD configuration variable and look for an environment variable named LD.

4. Setting the configuration variable on the driver command line from the value of an environment variable.

	$B=ld860 ; export B
	$pghpf LD=\$B hello.hpf 
For these methods for setting configuration variables the following precedence is followed: variables set on the command line have higher precedence than those set in the configuration file.

You can also use user defined variables in PGIRC files. As with the B environment variable in example four above, configuration files can contain variable names not known to the driver. User-defined variables of this type must start with an upper or lower-case alphabetic character and must contain only upper-case or lower-case alphabetic characters, digits, or underbar "_". Special characters are not allowed in user-defined variable names.

To use a PGIRC user-defined variable, precede the variable name with a $. For example, if you set a variable B in a PGIRC file, you can subsequently use that variable:

set B=ld860
set LD=$B
you can also use
set LD=$(B)

C.6 PGIRC Statements

The driver interprets PGIRC statements entered in a configuration file. Normally a statement ends at the end of line character. Using the \ character, you can continue the command line.

C.6.1 If Statement Syntax

The general form of a logical if statement has two forms :
if <configuration test> statement [statement ...] \
   [ else statement [statement ...] ] \
   [ endif]

ifn <configuration test> statement [statement ...] \
   [ else statement [statement ...] \
   [ endif]
where:
configuration test
is one of the valid configuration tests listed in Section C.8,"PGIRC Configuration Test Variables."
The general form of a defined if statement has two forms :
ifdef <variable> statement [statement ...] \
   [ else statement [statement ...]
ifndef <variable> statement [statement ...] \
   [ else statement [statement ...]
where:
variable
is a variable name.
In the logical if and defined if statements, the else portion can appear on the same line as the if without including a \ character. When the else appears on the next line, the \ is required.

C.6.2 Set and Include Statement Syntax

The set PGIRC statement has the following syntax:
set variable[=]value
where variable is either a predefined or user-defined variable name and value is either a predefined or user-defined value. The = is optional, but if it is not present a blank space is required.

The include PGIRC statement has the following syntax:

include [path]filename
where path is an optional full pathname and filename is the name of the PGIRC file to include.

C.6.3 Switch Statement Syntax

The switch PGIRC statement has the following syntax:
switch new_switch_name[=] [existing_switch]...
where new_switch_name is either a predefined or user-defined command-line switch name and existing_switch is either a predefined or user defined switch or switches, or blank. The = is optional, but if it is not present a blank space is required.

The following command adds a switch named test1.

switch test1 = -Y0,/home/test/xxx/pgc
The following command adds a switch which passes a switch directly to the linker. test2.
switch test2 = -Wl,-x1a
The following command adds a switch which tells the driver to ignore a previously defined -C switch.
switch C = 

C.6.4 Help Statement Syntax

The help PGIRC statement has the following syntax:
help switch[=]value
where switch is either a predefined or user-defined variable name and value is a help string. The = is optional, but if it is not present a blank space is required.

C.6.5 Map Statement Syntax

The map command re-maps an internally created switch (driver) into another switch (compiler) or bypasses the switch completely. Internal switches are switches that are created by the driver and passed to the compiler. For example the "-O" switch is such a driver mapped switch. The driver's -Ox switch is passed to the compiler as the switch "-opt x".

The map PGIRC statement has the following syntax:

map "<pass,>-switch<,args>"="<arg1,..,argn>"
If the <pass> is not indicated, all passes are affected. The passes are:
0
compiler
a
assembler
l
linker
c
C++ compiler
h
HPF compiler
On the right side of the = in the map command, a * indicates that the corresponding argument is dropped. If the argument is $1, ,$2, or...$n, then the corresponding argument passed in the specified position.

The number of arguments on the left of the "=" do not have to equal the number of arguments on the right. This allows a user to add additional arguments to a re-mapped switch.

For example:

map "0,-inform,*"="*,*"
This deletes the -inform option and its argument.
map "0,-terse"="*,*"
This deletes the -terse option and its argument.
map "0,-x,119,2"="*,*,*"
This map command deletes the -x,119,2 argument.
map "0,-idir,*"="-I,$2"
This map command re-maps the -idir switch to -I and copies its argument.

C.6.6 Passthru Statement Syntax

The passthru statement allows a command with optional or required arguments to be "passed through" to the compiler and linker passes. This switch is used by the pghpf driver to pass switches directly to the SGI f77 driver.

When using the -help option, the driver sorts and merges the passthru defined switches with the list of switches embedded into the driver.

The passthru PGIRC statement has either of the following forms:

passthru "-switch";="help description"
passthru "-switch",="help description"
where the switch is the switch to pass through. The ';' indicates an optional argument follows the switch. The ',' indicates a required argument follows the switch.

For example,

passthru "-p"="a switch with no arguments"
passthru "-g";="a switch with an optional argument"
passthru "-ko",="a switch with a required argument"

C.6.7 Bypass Statement Syntax

The bypass statement instructs the driver to bypass or ignore a known switch. A bypassed switch does not display using the driver's -help option .

The bypass PGIRC statement has the following syntax:

bypass -switch
where switch is the switch to bypass.

For example,

bypass "-M"
bypass -r

C.6.8 PGIRC Statement Examples

Where blank spaces are included in a string, quotes enclose the variable's value.
1)   if PROFILE set LD_STARTUP="crti.o $LIB/pgcrt0.o $CRT"
2) ifdef NEWCOMP set COMPDIR="$PGI/i860/bin"
3) if PROFILE set LD_STARTUP="crti.o $LIB/pgcrt0.o $CRT" \
else set LD_STARTUP="crti.o crt1.o $CRT"
4) ifn PROFILE set LD_STARTUP="crti.o crt1.o $CRT $PGFMAIN"
5) ifndef COMPDIR set COMPDIR="$PGI/i860/bin"
6) include /home/test/pgirctest 7) set TARGET=i860

C.6.9 Statement Summary

Table C.1 shows the PGIRC statements (case is not significant for statements). Examples using the statements follow the table.

Table C.1 PGIRC Commands

Command         Description                                              
bypass          Instructs the driver to bypass or ignore a known         
                switch. A bypassed switch also will not be displayed     
                using the -help option of the driver.                    
else            Logical else test. This is used in combination with      
                the if statement.                                        
endif           Completes a logical if test block.                       
error           Used to print an error message and to force the driver   
                to exit. This is used primarily for debugging a          
                configuration file.                                      
help            Provide a description message for a driver switch        
                (refer to  -help).                                       
if              Logical if test. This may be used in conjunction with    
                an else statement.                                       
ifdef           Determines if a variable has been assigned a value.      
ifn             Logical if not test. This may be used in conjunction     
                with an else statement.                                  
ifndef          Determines if a variable has not been assigned a         
                value.                                                   
include         Used to process an additional PGIRC file.                
map             Re-maps a driver internally created switch into          
                another switch or bypasses the switch completely.        
                Internal switches are switches that are added directly   
                by the driver to the compiler.                           
passthru        This statement allows a command with optional or         
                required arguments to be "passed through" to the         
                compiler and linker passes.                              
set             Sets the value of configuration variables used in        
                PGIRC files.                                             
switch          Add a user-defined switch.                               

C.7 PGIRC Configuration Variables

This section lists the valid configuration variables. Note, these descriptions are brief, you should have a good idea what you are doing before you attempt to modify the PGIRC configuration files.

Table C.2 PGIRC Configuration Variables

Variable               Description                                     
AIX                    Indicates if tools are hosted on an aix         
                       system. The valid values are NO or YES.         
APX                    Indicates if tools hosted on i860. The valid    
                       values are NO or YES.                           
AS                     Name of the assembler. The assembler command    
                       name will be set to the pathname pointed to     
                       by /$ASDIR/$AS.                                 
ASDIR                  Directory path of the assembler.  The           
                       assembler command name will be set to the       
                       pathname pointed to by /$ASDIR/$AS.             
ASARGS                 Default assembler arguments. One or more        
                       assembler arguments. Refer to the assembler     
                       man page for information on its arguments.      
ASTYPE                 Output format of executable file. The valid     
                       values are: COFF, ELF and AOUT (this is used    
                       internally by the driver to pass output         
                       options to the compiler).                       
COMP_ARGS_C            Default C arguments. One or more compiler       
                       arguments.                                      
COMP_ARGS_FTN          Default Fortran arguments. One or more          
                       compiler arguments.                             
COMP_ARGS_HPF          Default HPF arguments. One or more compiler     
                       arguments.                                      
COMP_ARGS_LAST         One or more compiler arguments that the user    
                       cannot override.                                
COMP_C                 Name of the C compiler. The compiler command    
                       name will be set to the pathname pointed to     
                       by /$COMPDIR/$COMP_C.                           
COMP_FTN               Name of the Fortran compiler. The compiler      
                       command name will be set to the pathname        
                       pointed to by /$COMPDIR/$COMP_FTN.              
                                                                       
Variable               Description                                     
COMPDIR                Directory path of the compiler.  The compiler   
                       command name will be set to the pathname        
                       /$COMPDIR/$COMP_C.                              
CPLUSARGS              Default C++ arguments for the C++ first phase.  
CPLUSDIR1              Directory path of the C++ compiler (pass 1).    
CPLUSDIR2              Directory path of the C++ compiler (pass 2).    
CPLUS_LIBS             List of C++ .a files passed to linker           
CPLUS_PREDEFS          List of define's passed to C++ compiler.        
CRTDIR                 Directory path of the startup files. This       
                       variable is used in the linker portion of the   
                       driver command.                                 
CPLUS1                 Name of the C++ compiler (pass 1)               
CPLUS2                 Name of the C++ compiler (pass 2)               
DRIVER                 Specifies the location (path) of the driver.    
                       Its value is available for use in PGIRC         
                       configuration files.                            
DRIVER_ARGS_C          Default driver arguments. Refer to Chapters 7   
                       and 8 for lists of the valid driver options.    
DRIVER_ARGS_CPLUS      Default driver arguments. Refer to Chapters 7   
                       and 8 for lists of the valid driver options.    
DRIVER_ARGS_FTN        Default driver arguments. Refer to Chapters 7   
                       and 8 for in the Pgf77 User's Guide for lists   
                       of the valid driver options.                    
DRIVER_ARGS_HPF        Default driver arguments. Refer to Chapters 7   
                       and 8 for in the Pgf77 User's Guide for lists   
                       of the valid driver options.                    
ENDIAN                 Output byte-ordering of executable file. The    
                       valid values are LITTLE  and BIG (this value    
                       is used internally by the driver).              
EXTRACTOR_C            Name of the C function extractor.               
EXTRACTOR_FTN          Name of the Fortran function extractor.         
EXTRACTOR_HPF          Name of the High Performance Fortran function   
                       extractor.                                      
                                                                       
Variable               Description                                     
HPFEXDIR               Pathname of the directory holding the HPF       
                       extractor.                                      
INCDIR                 Directory path of the C include files.          
LANG                   Sets driver language to C, C++, Fortran or      
                       HPF.                                            
LD                     Name of the linker. The linker command name     
                       will be set to the pathname pointed to by       
                       /$LDDIR/$LD.                                    
LDARGS                 Default linker arguments. Refer to the linker   
                       man page for details on linker arguments.       
LD_ENDUP               List of .o endup files passed to linker.        
LDDIR                  Directory path of the linker. The linker        
                       command name will be set to the pathname        
                       pointed to by /$LDDIR/$LD.                      
LD_ENDUP               List of .o endup files passed to linker.        
                       These .o or .a files are appended to the        
                       linker command.                                 
LD_LOPT                Indicates if linker supports -l switch. The     
                       valid values are NO and YES. If this variable   
                       is set to NO, the driver builds the names of    
                       the library files by prepending "lib" and       
                       appending ".a" to library names supplied with   
                       the -l option on the command line. The          
                       library directory is specified with the -L      
                       command-line option or the LIBDIR variable.     
LD_STARTUP             List of .o startup files passed to linker.      
LIBDIR                 Directory path of the library files.            
LIBS                   List of .a files passed to linker.              
MERGEARGS              Arguments passed to merge program (same as      
                       ASARGS)                                         
MERGEDIR               Directory of merge program (same as ASDIR)      
MUNCH                  Name of the C++ symbol table changer program.   
MUNCHDIR               Directory path of the C++ symbol changer        
                       table program                                   
Variable               Description                                     
NM                     Name of the symbol name lister (C++ only)       
NMDIR                  Directory path of the symbol table listing      
                       program                                         
NMARGS                 Default name arguments. The name phase          
                       defined by NM is called during template         
                       instantiation. These arguments make the         
                       output of name readable by pgprelnk..           
NOFRAME                Indicates if frame/noframe option passed to     
                       compiler. The valid values are NO and YES.      
                       Refer to the pgcc -Mframe option for details    
                       (this does not effect the Fortran compiler).    
PGIDIR                 Directory path of the PGI object files. Some    
                       object files (or libraries) contain routines    
                       for special compiler features. The PGIDIR is    
                       the directory that contains these object        
                       files.                                          
PGMERGE                Name of pgivision merge program (same as AS)    
PREDEFS                List of defines passed to compiler. This is a   
                       list of defines that is passed to the           
                       compiler. Each predef must have the following   
                       form: 
-Dname
where name is the macro name. Multiple predefs can occur; they must be separated by spaces. For example:
set PREDEFS="-DTEST1=2 -DTEST2 -DTEST3" PREPREDS List of predicates passed to compiler. RUN860 Name of the i860 executor program. RUN860ARGS Default i860 executor arguments. SYSV_PROF Indicates if System V style of profiling. The valid values are NO and YES. The driver uses this to set internal profiler options. TARGET Indicates the target system. The valid values are HAUPPAUGE, HYPERSPEED, MERC, SPARC, and I860. The driver uses this to set internal system specific options.

C.8 PGIRC Configuration Test Variables

List of valid configuration tests follows:
Test Variable         Description                                      
AOUT                  TRUE if  "set ASTYPE=AOUT" or -Maout  is set.    
APX                   TRUE if "set APX=YES"  or  -Mrun860=A            
BE                    TRUE if  "set ENDIAN=BIG"  or -Mbe  is set       
COFF                  TRUE if  "set ASTYPE=COFF"  or -Mcoff            
DEBUG                 TRUE if  -g is set on the command line           
ELF                   TRUE if  "set ASTYPE=ELF"  or -Melf is set       
IEEE                  TRUE if -Kieee                                   
LE                    TRUE if "set ENDIAN=LITTLE"  or -Mle is set      
PGC++                 TRUE if pgCC driver is being used                
PGCC                  TRUE if pgcc driver is being used                
PGF77                 TRUE if pgf77 driver is being used               
PGHPF                 TRUE if pghpf  driver is being used              
PROFILE               TRUE if profiling is being used                  
PROF_NONE             TRUE if profiling is NOT being used              
PROF_MCOUNT           TRUE if -Mprof=mcount is used or -qp             
PROF_COVER            TRUE if -Mprof=cover is used or -qc              
PROF_LPROF            TRUE if -Mprof=lprof is used  or -ql or -pg      
                      (Solaris)                                        
PROF_LINES            TRUE if -Mprof=lines is used or -ql              
PROF_FUNC             TRUE if -Mprof=func is used or -qp               
PROF_GPROF            TRUE if -Mprof=gprof is used or -xpg (Solaris)   
SYSV_PROF             TRUE if  "set SYSV_PROF=YES" or -pg  (Sun        
                      4.1.x)                                           

C.9 Sample PGIRC Configuration File

This section shows a sample PGIRC file. The example uses most of the PGIRC commands.

#
# PGI Compiler Configurations for High Performance Fortran
#

set SYSV_PROF=NO


#
# User Defined Switches for HPF
#

switch fast=-O2 -dalign -fnonstd -native

switch Mg=-g -Mnofn -Mkeepftn -Wh,-y,49,4
switch Mport=-Wh,-x,49,0x80

switch Mpvm
switch Mrpm
switch Mrpm1
switch Mstats

#
# Tool arguments
#

ifndef COMP_HPF	set COMP_HPF=pghpfc
ifndef HPFDIR	set HPFDIR=$PGI/$SYSTEM/bin

set DRIVER_ARGS_HPF="$EXTRA_DRIVER_ARGS_HPF -Mcray\=pointer"
ifndef COMP_ARGS_HPF	set COMP_ARGS_HPF="-x 49 4 $EXTRA_ARGS_HPF"

ifndef PGAPPEND	set PGAPPEND=pgappend
ifndef PGAPPENDDIR	set PGAPPENDDIR=$PGI/$SYSTEM/bin
ifndef PGAPPENDARGS	set PGAPPENDARGS=""

ifndef PGIPA	set PGIPA=pgipa
ifndef PGIPADIR	set PGIPADIR=$PGI/$SYSTEM/bin
ifndef PGIPAARGS	set PGIPAARGS=""

#
# HPF libraries and startup files
#
# Defines LPGFTNRTL, PGFMAIN, LPGHPF and LPVM3
#

ifndef LPVM3 \
  set LPVM3="/usr/local/pvm3/lib/SUN4/libpvm3.a $HPF_SOCKET"

if -Mstats set P="_p"
if PROF_HPF_FUNC	set P="_p"
if PROF_HPF_LINES	set P="_p"

if PGHPF \
  ifn	-Mnohpf \
    set LPGFTNRTL="-lhpfrtl" \
    ifndef LPGHPF \
      set LPGHPF="-lhpf$P $HPF_SOCKET $HPF_PROF_LIBS -lhpf2" \
      if -Mpvm \
	  set LPGHPF="-lhpf_pvm $LPVM3 $HPF_PROF_LIBS -lhpf2_pvm" \
      endif \
      if -Mrpm \
	  set LPGHPF="-lhpf_rpm$P $HPF_SOCKET $HPF_PROF_LIBS -lhpf2_rpm" \
      endif \
      if -Mrpms \
	  set LPGHPF="-lhpf_rpms $HPF_RPMS $HPF_PROF_LIBS -lhpf2_rpms" \
      endif \
      if -Mrpm1 \
	  set LPGHPF="-lhpf_rpm1 $HPF_UCB $HPF_PROF_LIBS -lhpf2_rpm1" \
      endif \
      if -Mtracegen \
	  set LPGHPF="-lhpf_par $HPF_TRACEGEN $HPF_PROF_LIBS -lhpf2_par" \
      endif \
      if -Mdolphin \
	  set LPGHPF="-lhpf_dol $HPF_SOCKET $HPF_PROF_LIBS -lhpf2_dol" \
      endif \
    endif \
    set PGFMAIN="$PGIDIR/hpfmain.o" \
    if -Mpvm \
	  set PGFMAIN="$PGIDIR/hpfmain_pvm.o" \
    endif \
    if -Mrpm \
	  set PGFMAIN="$PGIDIR/hpfmain_rpm.o" \
    endif \
    if -Mrpms \
	  set PGFMAIN="$PGIDIR/hpfmain_rpms.o" \
    endif \
    if -Mrpm1 \
	  set PGFMAIN="$PGIDIR/hpfmain_rpm1.o" \
    endif \
    if -Mtracegen \
	  set PGFMAIN="$PGIDIR/hpfmain_par.o" \
    endif \
    if -Mdolphin \
	  set PGFMAIN="$PGIDIR/hpfmain_dol.o" \
    endif \
    ifndef HPF_PROF_LIBS \
	if PROF_HPF_FUNC	set HPF_PROF_LIBS="-lpgpfh"	endif \
	if PROF_HPF_LINES	set HPF_PROF_LIBS="-lpgpfh"	endif \
    endif \
    set HPF_LIBS="$LPGHPF" \
  endif \
endif

set PGFALT="hpfalt.o"

 
xxx
1) 'x' is a valid argument to -Y & -W switches.

3) There is another new driver variable: HPFEXDIR. This variable

is currently set in pghpfrc. It describes the name of the

directory holding the HPF extractor.

Please test this change on all systems, and let me know about

xxx