aboutsummaryrefslogtreecommitdiffstats
path: root/src/mkkerneldoth
diff options
context:
space:
mode:
Diffstat (limited to 'src/mkkerneldoth')
-rw-r--r--src/mkkerneldoth46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/mkkerneldoth b/src/mkkerneldoth
new file mode 100644
index 00000000..ff205e18
--- /dev/null
+++ b/src/mkkerneldoth
@@ -0,0 +1,46 @@
+#!/bin/bash
+#
+# Generate a header that defines the boot kernel.
+#
+
+KERNEL_TYPE=`uname -r | sed 's_^[^se]*\(\|smp\|enterprise\)$_-\1_;s_^-$__'`
+KERNEL_RELEASE=`uname -r | sed 's|smp\|enterprise||g'`
+
+rpm -q kernel$KERNEL_TYPE-$KERNEL_RELEASE >/dev/null 2>&1 && KERNEL_ARCH=`rpm -q --qf '%{ARCH}' kernel$KERNEL_TYPE-$KERNEL_RELEASE 2>/dev/null` || KERNEL_ARCH=`uname -m`
+
+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