#!/bin/bash
#
# Generate a header that defines the boot kernel.
#
# taken from initscripts (/etc/rc.d/rc.sysinit)

BOOT_KERNEL_H=/boot/kernel.h

KERNEL_TYPE=`uname -r | sed 's_^[^se]*\(\|smp\|enterprise\)$_-\1_;s_^-$__'`
KERNEL_RELEASE=`uname -r | sed 's|smp\|enterprise||g'`
KERNEL_ARCH=`rpm -q --qf '%{ARCH}' kernel$KERNEL_TYPE-$KERNEL_RELEASE 2>/dev/null`
if [ -z "$KERNEL_ARCH" ] ; then
    KERNEL_ARCH=`rpm -q --qf '%{ARCH}' kernel24$KERNEL_TYPE-$KERNEL_RELEASE 2>/dev/null`
fi
OLD_KERNEL_ARCH_TYPE=`sed -n 's_^/\* Kernel type \(.*\) \*/_\1_p' /boot/kernel.h 2>/dev/null`
if [ -n "$KERNEL_ARCH" -a "$KERNEL_ARCH$KERNEL_TYPE" != "$OLD_KERNEL_ARCH_TYPE" ]; then
  ENTERPRISE='0'
  SMP='0'
  UP='0'
  case "$KERNEL_TYPE" in
  -smp) SMP='1';;
  -enterprise) ENTERPRISE='1';;
  *) UP='1';;
  esac
  cat > $BOOT_KERNEL_H << EOF
/* This file is automatically generated at boot time. */
#ifndef __BOOT_KERNEL_H_
#define __BOOT_KERNEL_H_

/* Kernel type $KERNEL_ARCH$KERNEL_TYPE */

#ifndef __MODULE_KERNEL_$KERNEL_ARCH
#define __MODULE_KERNEL_$KERNEL_ARCH 1
#endif

#ifndef __BOOT_KERNEL_ENTERPRISE
#define __BOOT_KERNEL_ENTERPRISE $ENTERPRISE
#endif

#ifndef __BOOT_KERNEL_SMP
#define __BOOT_KERNEL_SMP $SMP
#endif

#ifndef __BOOT_KERNEL_UP
#define __BOOT_KERNEL_UP $UP
#endif

#endif
EOF
fi
