#!/bin/sh
#
# Examine the CCOPTS for building the IRIX kernel and make an
# appropriate set for building lsof.
#
# Usage:	MkKernOpts <version>
#
# $Id: MkKernOpts,v 1.3 97/06/19 15:24:45 abe Exp $

# Get the kernel's CC options.

if test "X$IRIX_SM_CCOPTS" = "X"
then
  IRIX_SM_CCOPTS=`grep CCOPTS /var/sysgen/system/irix.sm`
fi

# Preset the options of interest.

RCKPT=""		# -DCKPT
RHIB=""			# -DHIBERNATORII
RINTKTH=""		# -DINTR_KTHREADS
RLGPG=""		# -DUSE_LGPAGES
RNUMABASE=""		# -DNUMA_BASE
RNUMAPM=""		# -DNUMA_PM
RNWS=""			# -DNO_WIRED_SEGMENTS
RPIO=""			# -DRPIO
RPGSZ=""		# -D_PAGESZ
RR10K=""		# -DR10000
RSHAR=""		# -DSHAREII
RSWASH=""		# -DSWASH
RULI=""			# -DULI
RUNIK=""		# -DUNIKERNEL

# Scan the kernel's CC options.

for i in $IRIX_SM_CCOPTS
do
  case $i in
  -DCKPT)
    if test $1 -ge 60400
    then
      RCKPT=$i
    fi
    ;;
  -D_HIBERNATORII)
    RHIB=$i
    ;;
  -DINTR_KTHREADS)
    if test $1 -ge 60400
    then
      RINTKTH=$i
    fi
    ;;
  -DNO_WIRED_SEGMENTS)
    RNWS=$i
    ;;
  -DNUMA_BASE)
    if test $1 -ge 60400
    then
      RNUMABASE=$i
    fi
    ;;
  -DNUMA_PM)
    if test $1 -ge 60400
    then
      RNUMAPM=$i
    fi
    ;;
  -D_PAGESZ*)
    RPGSZ=$i
    ;;
  -DRPIO)
    if test $1 -ge 60400
    then
      RPIO=$i
    fi
    ;;
  -DR10000)
    if test $1 -ge 60400
    then
      RR10K=$i
    fi
    ;;
  -D_SHAREII)
    RSHAR=$i;
    ;;
  -DSWASH)
    if test $1 -eq 60200 -o $1 -eq 60300
    then
      RSWASH=$i;
    fi
    ;;
  -DULI)
    RULI=$i
    ;;
  -DUNIKERNEL)
    if test $1 -ge 60400
    then
      RUNIK=$i
    fi
    ;;
  -DUSE_LGPAGES)
    RLGPG=$i
    ;;
  esac
done

# Assemble the result.
#
# Always accept _HIBERNATORII, _SHAREII, USE_LGPAGES, and ULI.

R=""
if test "X$RHIB" != "X"
then
  R=$RHIB
fi
if test "X$RSHAR" != "X"
then
  R="$R $RSHAR"
fi
if test "X$RLGPG" != "X"
then
  R="$R $RLGPG"
fi
if test "X$RULI" != "X"
then
  R="$R $RULI"
fi

# Accept _PAGESZ only if neither _HIBERNATORII nor _SHAREII is defined
# for IRIX version < 6.2.  Always accept NO_WIRED_SEGMENTS, _PAGESZ, and
# SWASH for IRIX 6.2.

if test "X$RPGSZ" != "X" -o "X$RNWS" != "X"
then
  if test $1 -ge 60200 -o \( "X$RHIB" = "X" -a "X$RSHAR" = "X" \)
  then
    if test "X$RPGSZ" != "X"
    then
      R="$R $RPGSZ"
    fi
    if test "X$RNWS" != "X"
    then
      R="$R $RNWS"
    fi
    if test "X$RSWASH" != "X"
    then
      R="$R $RSWASH"
    fi
  fi
fi

# If making kernel options for IRIX 6.4, add the CKPT, INTR_KTHREADS,
# NUMA_BASE, NUMA_PM, PIOMEMOPS, R10000, and UNIKERNEL options.

if test $1 -ge 60400
then
  if test "X$RCKPT" != "X"
  then
    R="$R $RCKPT"
  fi
  if test "X$RINTKTH" != "X"
  then
    R="$R $RINTKTH"
  fi
  if test "X$RNUMABASE" != "X"
  then
    R="$R $RNUMABASE"
  fi
  if test "X$RNUMAPM" != "X"
  then
    R="$R $RNUMAPM"
  fi
  if test "X$RPIO" != "X"
  then
    R="$R $RPIO"
  fi
  if test "X$RR10K" != "X"
  then
    R="$R $RR10K"
  fi
  if test "X$RUNIK" != "X"
  then
    R="$R $RUNIK"
  fi
fi

# Echo the result.

echo $R
