#!/bin/sh #----------------------------------------------------------------------- # The following function renders a commented configuration-variable # definition to the standard output. # # Inputs: # $1 The name of the variable. # $2 The default value to give the variable if not defined in the # original configuration file. # $3 The multi-line comment that should precede the variable # definition. #----------------------------------------------------------------------- output_variable() { # Write the comment. echo "$3" echo ' ' # If a definition for the variable exists in the original file, # use that definition in the output file. Otherwise adopt the default # specified in $2. if egrep -s -e "^ *$1" $input; then egrep -e "^ *$1" $input else echo " $1=\"$2\"" fi } # Rewrite each of the existing system configuration files, one at a # time. for input in `find sys_* -name '*.conf' -print`; do # Compose a new output file name so that the input file # doesn't get clobbered until we have had a chance to check for # unresolved differences. output="${input}_new" echo '' echo --------------- echo Creating $output # Discard any old reconfiguration. rm -f $output # Write the new configuration file. Note that the open-parenthesis on the # next line is matched by a close-parenthesis near the end of this script. # This is used so that standard output of all the enclosed commands can # be redirected in one go to the output file. Without the parenthesis # we would have to append the output of each command individually. That # would be much slower. ( #----------------------------------------------------------------------- # Preserve any system-specific comments that are found at the start of # the original configuration file. #----------------------------------------------------------------------- awk '{if($0 ~ /^[ \t]*#/ || $0 ~ /^[ \t]*$/) {print $0} else {exit}}' $input # Write the configuration variable descriptions and assignments. #----------------------------------------------------------------------- # XINCL #----------------------------------------------------------------------- output_variable XINCL "" ' # Optional: Needed by XWDRIV (/xwindow and /xserve) and # X2DRIV (/xdisp and /figdisp). # The arguments needed by the C compiler to locate X-window include files.' #----------------------------------------------------------------------- # MOTIF_INCL #----------------------------------------------------------------------- output_variable MOTIF_INCL "$XINCL" ' # Optional: Needed by XMDRIV (/xmotif). # The arguments needed by the C compiler to locate Motif, Xt and # X-window include files.' #----------------------------------------------------------------------- # TKDRIV #----------------------------------------------------------------------- output_variable TK_INCL "-I/usr/local/include $XINCL" ' # Optional: Needed by TKDRIV (/xtk). # The arguments needed by the C compiler to locate Tcl, Tk and # X-window include files.' #----------------------------------------------------------------------- # RV_INCL #----------------------------------------------------------------------- output_variable RV_INCL "" ' # Optional: Needed by RVDRIV (/xrv). # The arguments needed by the C compiler to locate Rivet, Tcl, Tk and # X-window include files.' #----------------------------------------------------------------------- # FCOMPL #----------------------------------------------------------------------- output_variable FCOMPL "" ' # Mandatory. # The FORTRAN compiler to use.' #----------------------------------------------------------------------- # FFLAGC #----------------------------------------------------------------------- output_variable FFLAGC "" ' # Mandatory. # The FORTRAN compiler flags to use when compiling the pgplot library. # (NB. makemake prepends -c to $FFLAGC where needed)' #----------------------------------------------------------------------- # FFLAGD #----------------------------------------------------------------------- output_variable FFLAGD "" ' # Mandatory. # The FORTRAN compiler flags to use when compiling fortran demo programs. # This may need to include a flag to tell the compiler not to treat # backslash characters as C-style escape sequences' #----------------------------------------------------------------------- # CCOMPL #----------------------------------------------------------------------- output_variable CCOMPL "" ' # Mandatory. # The C compiler to use.' #----------------------------------------------------------------------- # CFLAGC #----------------------------------------------------------------------- output_variable CFLAGC "" ' # Mandatory. # The C compiler flags to use when compiling the pgplot library.' #----------------------------------------------------------------------- # CFLAGD #----------------------------------------------------------------------- output_variable CFLAGD "" ' # Mandatory. # The C compiler flags to use when compiling C demo programs.' #----------------------------------------------------------------------- # PGBIND_FLAGS #----------------------------------------------------------------------- output_variable PGBIND_FLAGS "" ' # Optional: Only needed if the cpgplot library is to be compiled. # The flags to use when running pgbind to create the C pgplot wrapper # library. (See pgplot/cpg/pgbind.usage)' #----------------------------------------------------------------------- # LIBS #----------------------------------------------------------------------- output_variable LIBS "" ' # Mandatory. # The library-specification flags to use when linking normal pgplot # demo programs.' #----------------------------------------------------------------------- # XMDRIV #----------------------------------------------------------------------- output_variable MOTIF_LIBS "-lXm -lXt $LIBS" ' # Optional: Needed by XMDRIV (/xmotif). # The library-specification flags to use when linking motif # demo programs.' #----------------------------------------------------------------------- # TKDRIV #----------------------------------------------------------------------- output_variable TK_LIBS "-L/usr/local/lib -ltk -ltcl $LIBS -ldl" ' # Optional: Needed by TKDRIV (/xtk). # The library-specification flags to use when linking Tk demo programs. # Note that you may need to append version numbers to -ltk and -ltcl.' #----------------------------------------------------------------------- # RANLIB #----------------------------------------------------------------------- output_variable RANLIB ":" ' # Mandatory. # On systems that have a ranlib utility, put "ranlib" here. On other # systems put ":" here (Colon is the Bourne-shell do-nothing command).' #----------------------------------------------------------------------- # SHARED_LIB #----------------------------------------------------------------------- output_variable SHARED_LIB "" ' # Optional: Needed on systems that support shared libraries. # The name to give the shared pgplot library.' #----------------------------------------------------------------------- # SHARED_LD #----------------------------------------------------------------------- output_variable SHARED_LD "" ' # Optional: Needed if SHARED_LIB is set. # How to create a shared library from a trailing list of object files.' #----------------------------------------------------------------------- # SHARED_LIB_LIBS #----------------------------------------------------------------------- output_variable SHARED_LIB_LIBS "" ' # Optional: # On systems such as Solaris 2.x, that allow specification of the # libraries that a shared library needs to be linked with when a # program that uses it is run, this variable should contain the # library-specification flags used to specify these libraries to # $SHARED_LD' #----------------------------------------------------------------------- # MCOMPL #----------------------------------------------------------------------- output_variable MCOMPL "" ' # Optional: # Compiler name used on Next systems to compile objective-C files.' #----------------------------------------------------------------------- # MFLAGC #----------------------------------------------------------------------- output_variable MFLAGC "" ' # Optional: # Compiler flags used with MCOMPL when compiling objective-C files.' #----------------------------------------------------------------------- # SYSDIR #----------------------------------------------------------------------- output_variable SYSDIR '$SYSDIR' ' # Optional: (Actually mandatory, but already defined by makemake). # Where to look for any system-specific versions of the files in # pgplot/sys. Before evaluating this script, makemake sets SYSDIR to # /wherever/pgplot/sys_$OS, where $OS is the operating-system name # given by the second command-line argument of makemake. If the # present configuration is one of many for this OS, and it needs # different modifications to files in pgplot/sys than the other # configurations, then you should create a subdirectory of SYSDIR, # place the modified files in it and change the following line to # $SYSDIR="$SYSDIR/subdirectory_name".' #----------------------------------------------------------------------- # Redirect the output of the above commands to the new configuration file. ) > $output # Check for unexpected differences between the old and new # configuration files. if [ `diff $input $output | egrep '^<' | wc -l` -gt 0 ]; then echo "*** The following lines of $input were not found at the" echo "*** equivalent locations in $output" diff $input $output | egrep '^<' fi echo --------------- done