jim         97/07/16 18:40:36

  Modified:    src       Configure
  Log:
  Configure rework:
      Add some major commenting to this unwieldy beast
      More intelligent "adjustments" depending on CC now work
      Start framework for library tests
  
  Revision  Changes    Path
  1.110     +140 -94   apache/src/Configure
  
  Index: Configure
  ===================================================================
  RCS file: /export/home/cvs/apache/src/Configure,v
  retrieving revision 1.109
  retrieving revision 1.110
  diff -C3 -r1.109 -r1.110
  *** Configure 1997/07/16 12:25:34     1.109
  --- Configure 1997/07/17 01:40:35     1.110
  ***************
  *** 13,23 ****
    # Uses 3 supplemental scripts located in ./helpers: CutRule,
    # GuessOS and PrintPath
    #
  ! 
    file=Configuration
    tmpfile=htconf.$$
    makefile_tmpl=Makefile.tmpl
    
    while [ "x$1" != "x" ]; do
      if [ "x$1" = "x-file" ] ; then
        shift 1; file=$1; shift 1
  --- 13,29 ----
    # Uses 3 supplemental scripts located in ./helpers: CutRule,
    # GuessOS and PrintPath
    #
  ! #
  ! # Setup some defaults
  ! #
    file=Configuration
    tmpfile=htconf.$$
    makefile_tmpl=Makefile.tmpl
    
  + #
  + # Now handle any arguments, which, for now, are -file and -make
  + # to select alternate Configuration and Makefile.tmpl files
  + #
    while [ "x$1" != "x" ]; do
      if [ "x$1" = "x-file" ] ; then
        shift 1; file=$1; shift 1
  ***************
  *** 44,61 ****
      exit 1
    fi
    
  ! # First, strip comments and blank lines and then change Rules to comments
  ! # and then remove whitespace before Module declarations
  ! 
    sed 's/#.*//' $file | \
     sed '/^[   ]*$/d' | \
     sed 's/[   ]*$//' | \
     sed 's/^Rule[      ]*/##Rule:/' | \
     sed 's/^[  ]*Module/Module/' | \
     sed 's/^[        ]*%Module/%Module/' > $tmpfile
    
    # Check for syntax errors...
  ! 
    if egrep -v '^%?Module[     ]+[A-Za-z0-9_]+[        ]+[^    ]+$' $tmpfile \
       | grep -v = > /dev/null
    then
  --- 50,71 ----
      exit 1
    fi
    
  ! #
  ! # First, strip comments and blank lines, remove whitespace around
  ! # "=" assignments, change Rules to comments and then remove whitespace
  ! # before Module declarations
  ! #
    sed 's/#.*//' $file | \
     sed '/^[   ]*$/d' | \
     sed 's/[   ]*$//' | \
  +  sed 's/[   ]*=[    ]*/=/' | \
     sed 's/^Rule[      ]*/##Rule:/' | \
     sed 's/^[  ]*Module/Module/' | \
     sed 's/^[        ]*%Module/%Module/' > $tmpfile
    
  + #
    # Check for syntax errors...
  ! #
    if egrep -v '^%?Module[     ]+[A-Za-z0-9_]+[        ]+[^    ]+$' $tmpfile \
       | grep -v = > /dev/null
    then
  ***************
  *** 67,77 ****
       exit 1
    fi
    
    # File is OK --- make backup copies of things and then get the new ones:
  ! 
    if [ -f Makefile ] ; then mv Makefile Makefile.bak; fi
    if [ -f modules.c ] ; then mv modules.c modules.c.bak; fi
    
    sed -e 's/_module//' $tmpfile | awk >modules.c '\
       BEGIN { modules[n++] = "core" ; pmodules[pn++] = "core"} \
       /^Module/ { modules[n++] = $2 ; pmodules[pn++] = $2 } \
  --- 77,92 ----
       exit 1
    fi
    
  + #
    # File is OK --- make backup copies of things and then get the new ones:
  ! #
    if [ -f Makefile ] ; then mv Makefile Makefile.bak; fi
    if [ -f modules.c ] ; then mv modules.c modules.c.bak; fi
    
  + #
  + # Start building the modules.c file from what was included
  + # in Configuration
  + #
    sed -e 's/_module//' $tmpfile | awk >modules.c '\
       BEGIN { modules[n++] = "core" ; pmodules[pn++] = "core"} \
       /^Module/ { modules[n++] = $2 ; pmodules[pn++] = $2 } \
  ***************
  *** 102,108 ****
       }'
    
    #
  ! # Add module set only
    #
    echo "#" > Makefile
    echo "# Makefile automatically generated from $makefile_tmpl" >> Makefile
  --- 117,124 ----
       }'
    
    #
  ! # Start creating the Makefile. We add some comments and
  ! # then fold in the modules
    #
    echo "#" > Makefile
    echo "# Makefile automatically generated from $makefile_tmpl" >> Makefile
  ***************
  *** 122,128 ****
         print "" \
           }'
    #
  ! # Now add Makefile additions and Rules
    #
    awk >Makefile.config <$tmpfile '\
        BEGIN { print "# Makefile options inherited from Configure"; \
  --- 138,145 ----
         print "" \
           }'
    #
  ! # Now we create a stub file, called Makefile.config, which
  ! # just includes those assignments (eg: CC=gcc) in Configuration
    #
    awk >Makefile.config <$tmpfile '\
        BEGIN { print "# Makefile options inherited from Configure"; \
  ***************
  *** 140,145 ****
  --- 157,175 ----
    RULE_IRIXNIS=`./helpers/CutRule IRIXNIS $file`
    
    #
  + # Preset some "constants"; can be overridden on a per-platform basis below.
  + #
  + DBM_LIB="-ldbm"
  + DB_LIB="-ldb"
  + SHELL="/bin/sh"
  + if ./helpers/PrintPath -s ranlib; then
  +     RANLIB="ranlib"
  + else
  +     RANLIB="true"
  + fi
  + 
  + #
  + #
    # Now we determine the OS/Platform automagically, thanks to
    # GuessOS, a home-brewed OS-determiner ala config.guess
    #
  ***************
  *** 156,191 ****
    
    PLAT=`./helpers/GuessOS`
    
  - # Preset DBM_LIB. Can be overridden on a per-platform basis.
  - 
  - DBM_LIB="-ldbm"
  - 
  - #
  - # Look for ranlib. Do it early in case we want to override it below
  - #
  - if ./helpers/PrintPath -s ranlib; then
  -     RANLIB="ranlib"
  - else
  -     RANLIB="true"
  - fi
  - 
  - #
  - # We now look for popular compilers. As with ranlib, we
  - # do this early because some options may depend
  - # on which compiler we use/find
  - #
  - for compilers in "gcc" "cc" "acc" "c89"
  - do
  -     lookedfor="$lookedfor $compilers"
  -     if ./helpers/PrintPath -s $compilers; then
  -     COMPILER="$compilers"
  -             break
  -     fi
  - done
  - 
  - #
  - SHELL="/bin/sh"
  - 
    case "$PLAT" in
        *MPE/iX*)
            OS='MPE/iX'
  --- 186,191 ----
  ***************
  *** 232,259 ****
        *-hi-hiux)
        OS='HI-UX'
        CFLAGS="$CFLAGS -DHIUX"
  -     # if we're using the HIUX compiler, add a few flags.
  -     if [ "$CC" = "cc" ] || [ "$COMPILER" = "cc" ]; then
  -         CFLAGS="$CFLAGS -Aa -D_HIUX_SOURCE"
  -         OPTIM=" "
  -     fi
        ;;
        *-hp-hpux10.*)
        OS='HP-UX 10'
        CFLAGS="$CFLAGS -DHPUX10"
  -     # if we're using the HPUX compiler, add a few flags.
  -     if [ "$CC" = "cc" ] || [ "$COMPILER" = "cc" ]; then
  -         CFLAGS="$CFLAGS -Aa -D_HPUX_SOURCE"
  -         OPTIM=" "
  -     fi
        ;;
        *-hp-hpux*)
        OS='HP-UX'
        CFLAGS="$CFLAGS -DHPUX"
  -     if [ "$CC" = "cc" ] || [ "$COMPILER" = "cc" ]; then
  -         CFLAGS="$CFLAGS -Aa -D_HPUX_SOURCE"
  -         OPTIM=" "
  -     fi
        ;;
        *-sgi-irix64)
    # Note: We'd like to see patches to compile 64-bit, but for now...
  --- 232,245 ----
  ***************
  *** 375,383 ****
        OS='SCO 5'
        CFLAGS="$CFLAGS -DSCO5"
        LIBS="$LIBS -lsocket -lmalloc -lprot"
  -     if [ "$CC" = "cc" ] || [ "$COMPILER" = "cc" ]; then
  -         OSBPRINTF="-K noinline"
  -     fi
        DEF_WANTHSREGEX=no
        ;;
        *-solaris2*)
  --- 361,366 ----
  ***************
  *** 454,462 ****
        CFLAGS="-DULTRIX"
        DEF_WANTHSREGEX=yes
        SHELL="/bin/sh5"
  -     if [ "$CC" = "cc" ] || [ "$COMPILER" = "cc" ]; then
  -         CFLAGS="$CFLAGS -std"
  -     fi
        ;;
        *powerpc-tenon-machten*)
        OS='MachTen PPC'
  --- 437,442 ----
  ***************
  *** 522,529 ****
        fi
    fi
    
  ! # Show the final values of the rules
    
    echo "###############" >> Makefile.config
    echo "# Platform: $OS" >> Makefile.config
    echo "# Final Rules:" >> Makefile.config
  --- 502,515 ----
        fi
    fi
    
  ! #
  ! # Now that _that's_ done, get on with it
  ! #
  ! echo " + configured for $OS platform"
    
  + #
  + # Show the final values of the rules
  + #
    echo "###############" >> Makefile.config
    echo "# Platform: $OS" >> Makefile.config
    echo "# Final Rules:" >> Makefile.config
  ***************
  *** 531,575 ****
    echo "###############" >> Makefile.config
    
    #
  - # Now that _that's_ done, get on with it
  - #
  - 
  - echo " + configured for $OS platform"
  - 
  - #
    # Now we determine the C-compiler and optimization level
    # to use. Settings of CC and OPTIM in Configuration have
    # the highest precedence; next comes any settings from
    # the above "OS-specific" section. If still unset,
  ! # then we use the "found" location of COMPILERS above
    # and set a "safe" optimization level
    #
  ! TCC=`egrep '^CC[    ]*=' Makefile.config | tail -1 | awk -F= '{print $2}'`
  ! if [ "x$CC" = "x" ]; then
  !     if [ "x$COMPILER" = "x" ]; then
  !     echo "Error: could not find any of these C compilers"
  !     echo " anywhere in your PATH: $lookedfor"
  !     echo "Configure terminated"
  !     exit 1
        fi
  !     CC=$COMPILER
    fi
  - echo " + setting C compiler to $CC"
  - 
    #
    # Ditto for optimization
    #
  ! TOPTIM=`egrep '^OPTIM[      ]*=' Makefile.config | tail -1 | awk -F= 
'{print $2}'`
    if [ "x$TOPTIM" = "x" ]; then
  !     OPTIM="-O2"
  ! else
  !     OPTIM=$TOPTIM
    fi
  ! echo " + setting C compiler optimization-level to $OPTIM"
    
    #
    # Are they using the status monitor module? If so, check
  ! # for STATUS rule...
    #
    STAT_MOD="mod_status"
    if grep "$STAT_MOD" Makefile > /dev/null; then
  --- 517,628 ----
    echo "###############" >> Makefile.config
    
    #
    # Now we determine the C-compiler and optimization level
    # to use. Settings of CC and OPTIM in Configuration have
    # the highest precedence; next comes any settings from
    # the above "OS-specific" section. If still unset,
  ! # then we look for a known compiler somewhere in PATH
    # and set a "safe" optimization level
    #
  ! #
  ! # First, look for a CC=<whatever> setting in Configure (recall, we
  ! # copied these to Makefile.config)
  ! #
  ! TCC=`egrep '^CC=' Makefile.config | tail -1 | awk -F= '{print $2}'`
  ! if [ "x$TCC" = "x" ]; then
  !     if [ "x$CC" = "x" ]; then
  !     #
  !     # At this point, CC is not set in Configure or above, so we
  !     # try to find one
  !     #
  !     for compilers in "gcc" "cc" "acc" "c89"
  !     do
  !         lookedfor="$lookedfor $compilers"
  !         if ./helpers/PrintPath -s $compilers; then
  !             COMPILER="$compilers"
  !             break
  !         fi
  !     done
  !     if [ "x$COMPILER" = "x" ]; then
  !         echo "Error: could not find any of these C compilers"
  !         echo " anywhere in your PATH: $lookedfor"
  !         echo "Configure terminated"
  !         exit 1
  !     fi
  !     CC=$COMPILER
        fi
  !     echo " + setting C compiler to $CC"
    fi
    #
    # Ditto for optimization
    #
  ! TOPTIM=`egrep '^OPTIM=' Makefile.config | tail -1 | awk -F= '{print $2}'`
    if [ "x$TOPTIM" = "x" ]; then
  !     if [ "x$OPTIM" = "x" ]; then
  !     OPTIM="-O2"
  !     fi
  !     echo " + setting C compiler optimization-level to $OPTIM"
  ! fi
  ! 
  ! #
  ! # Set the value of CC if need be; don't worry about OPTIM yet
  ! #
  ! if [ "x$TCC" = "x" ]; then
  !     echo "CC=$CC" >> Makefile.config
  ! fi
  ! 
  ! #
  ! # Now we do some OS specific adjustments... for some OSs, we need
  ! # to adjust CFLAGS and/or OPTIM depending on which compiler we
  ! # are going to use. This is easy, since this can be gleamed from
  ! # Makefile.config
  ! #
  ! TCC=`egrep '^CC=' Makefile.config | tail -1 | awk -F= '{print $2}'`
  ! case "$OS" in
  !     'ULTRIX')
  !     if [ "$TCC" = "cc" ]; then
  !         CFLAGS="$CFLAGS -std"
  !     fi
  !     ;;
  !     'SCO 5')
  !     if [ "$TCC" = "cc" ]; then
  !         OSBPRINTF="-K noinline"
  !     fi
  !     ;;
  !     'HI-UX')
  !     if [ "$TCC" = "cc" ]; then
  !         CFLAGS="$CFLAGS -Aa -D_HIUX_SOURCE"
  !         OPTIM=" "
  !         TOPTIM=""
  !     fi
  !     ;;
  !     'HP-UX'|'HP-UX 10')
  !     if [ "$TCC" = "cc" ]; then
  !         CFLAGS="$CFLAGS -Aa -D_HPUX_SOURCE"
  !         OPTIM=" "
  !         TOPTIM=""
  !     fi
  !     ;;
  ! esac
  ! 
  ! #
  ! # OK, now we can write OPTIM
  ! #
  ! if [ "x$TOPTIM" = "x" ]; then
  !     echo "OPTIM=$OPTIM" >> Makefile.config
    fi
  ! 
  ! #
  ! # Now we do some general checks and some intelligent Configuration
  ! # control.
  ! #
  ! # First, we adjust as needed depending on which modules are
  ! # being used.
  ! #
    
    #
    # Are they using the status monitor module? If so, check
  ! # for STATUS rule and add if needed.
    #
    STAT_MOD="mod_status"
    if grep "$STAT_MOD" Makefile > /dev/null; then
  ***************
  *** 579,589 ****
    fi
    
    #
  ! # Are they using dbm auth? If so, add DBM library.
    #
    if grep mod_auth_dbm Makefile > /dev/null; then
        LIBS="$LIBS $DBM_LIB"
    fi
    
    #
    # Now HS's POSIX regex implementation if needed/wanted
  --- 632,645 ----
    fi
    
    #
  ! # Are they using dbm/db auth? If so, add DBM/DB library.
    #
    if grep mod_auth_dbm Makefile > /dev/null; then
        LIBS="$LIBS $DBM_LIB"
    fi
  + if grep mod_auth_db Makefile > /dev/null; then
  +     LIBS="$LIBS $DB_LIB"
  + fi
    
    #
    # Now HS's POSIX regex implementation if needed/wanted
  ***************
  *** 613,630 ****
    fi
    
    #
  ! # Good enough
    #
  - # Add the CC and OPTIM values if they weren't specified in the
  - # Configuration file and we had to calculate them.
  - #
  - echo  >> Makefile
  - if [ "x$TCC" = "x" ]; then
  -     echo "CC=$CC" >> Makefile.config
  - fi
  - if [ "x$TOPTIM" = "x" ]; then
  -     echo "OPTIM=$OPTIM" >> Makefile.config
  - fi
    echo "CFLAGS1=$CFLAGS">> Makefile.config
    echo "INCLUDES1=$INCLUDES">> Makefile.config
    echo "LIBS1=$LIBS">> Makefile.config
  --- 669,676 ----
    fi
    
    #
  ! # FINALLY, finish building Makefile.config
    #
    echo "CFLAGS1=$CFLAGS">> Makefile.config
    echo "INCLUDES1=$INCLUDES">> Makefile.config
    echo "LIBS1=$LIBS">> Makefile.config
  
  
  

Reply via email to