pistachio: patch kernel to get rid of python tool

Patch the kernel's build system to not use python tooling
for different configurations, instead we only support one
fixed configuration for x86 (32-bit) only.

Ref genodelabs/genode#5487
This commit is contained in:
Stefan Kalkowski 2025-03-24 14:11:52 +01:00 committed by Norman Feske
parent 843f5c32af
commit aa0927b194
3 changed files with 157 additions and 13 deletions

View File

@ -0,0 +1,156 @@
diff --git a/kernel/config/Makefile b/kernel/config/Makefile
index f8bdb12..2529ee1 100644
--- a/kernel/config/Makefile
+++ b/kernel/config/Makefile
@@ -30,37 +30,41 @@
#
######################################################################
-CMLPATH= $(SRCDIR)/../contrib/cml2
-CMLCOMPILE= $(CMLPATH)/cmlcompile.py
-CMLCONFIG= $(CMLPATH)/cmlconfigure.py
-CMLCONFIGTRANS= $(CMLPATH)/configtrans.py
-
-CML_INPUT= $(addprefix $(SRCDIR)/config/, rules.cml \
- x86.cml \
- powerpc.cml \
- powerpc64.cml \
- )
-
-CMLBATCH_PARAMS ?=
-CMLCONFIG_OPTIONS = -o config.out -i config.out \
- $(addprefix -D,$(CMLBATCH_PARAMS)) rules.out
-
-rules.out: $(CML_INPUT)
- @$(CMLCOMPILE) -o $@ $<
-
-menuconfig: CMLMODE=-c
-batchconfig: CMLMODE=-b
-ttyconfig: CMLMODE=-t
-xconfig: CMLMODE=-x
-
-# Always invoke the configuration tool, but only rebuild targets down the
-# dependency chain when the config.out changed.
.PHONY: always
-config.out: rules.out always
- @$(CMLCONFIG) $(CMLMODE) $(CMLCONFIG_OPTIONS)
-config.h .config: config.out
- @$(CMLCONFIGTRANS) -h $(@D)/config.h -s $(@D)/.config $<
+.config: always
+ echo "# Automatically generated, don't edit" > $@
+ echo "CONFIG_ARCH_X86=y" >> $@
+ echo "CONFIG_SUBARCH_X32=y" >> $@
+ echo "CONFIG_CPU_X86_P4=y" >> $@
+ echo "CONFIG_PLAT_PC99=y" >> $@
+ echo "CONFIG_MAX_IOAPICS=8" >> $@
+ echo "CONFIG_APIC_TIMER_TICK=1000" >> $@
+ echo "CONFIG_SMP_MAX_PROCS=8" >> $@
+ echo "CONFIG_EXPERIMENTAL=y" >> $@
+ echo "CONFIG_X_PAGER_EXREGS=y" >> $@
+ echo "CONFIG_SCHED_RR=y" >> $@
+ echo "CONFIG_DEBUG=y" >> $@
+ echo "CONFIG_NEW_MDB=y" >> $@
+ echo "CONFIG_KDB_CONS_COM=y" >> $@
+ echo "CONFIG_KDB_COMPORT=0x0" >> $@
+ echo "CONFIG_KDB_COMSPEED=115200" >> $@
+ echo "CONFIG_KDB_BOOT_CONS=0" >> $@
+ echo "CONFIG_KDB_BREAKIN=y" >> $@
+ echo "CONFIG_KDB_BREAKIN_BREAK=y" >> $@
+ echo "CONFIG_KDB_BREAKIN_ESCAPE=y" >> $@
+ echo "CONFIG_VERBOSE_INIT=y" >> $@
+ echo "CONFIG_TRACEPOINTS=y" >> $@
+ echo "CONFIG_TRACEBUFFER=y" >> $@
+ echo "CONFIG_X86_PSE=y" >> $@
+ echo "CONFIG_X86_SYSENTER=y" >> $@
+ echo "CONFIG_X86_PGE=y" >> $@
+ echo "CONFIG_X86_FXSR=y" >> $@
+ echo "CONFIG_IS_32BIT=y" >> $@
+ echo "CONFIG_X86_HTT=y" >> $@
+ echo "CONFIG_X86_PAT=y" >> $@
+ echo "CONFIG_X86_HVM=y" >> $@
+ echo "CONFIG_X86_TSC=y" >> $@
$(BUILDDIR)/Makeconf.local: .config
@echo "Rewriting $(@F) ..."
diff --git a/kernel/config/template/config/config.h b/kernel/config/template/config/config.h
index 5b1d315..eab350e 100644
--- a/kernel/config/template/config/config.h
+++ b/kernel/config/template/config/config.h
@@ -30,3 +30,76 @@
*
********************************************************************/
/* machine-generated file - do not edit */
+#define CONFIG_ARCH_X86 1
+#undef CONFIG_ARCH_POWERPC
+#undef CONFIG_ARCH_POWERPC64
+#define CONFIG_SUBARCH_X32 1
+#undef CONFIG_SUBARCH_X64
+#undef CONFIG_CPU_X86_I486
+#undef CONFIG_CPU_X86_I586
+#undef CONFIG_CPU_X86_I686
+#define CONFIG_CPU_X86_P4 1
+#undef CONFIG_CPU_X86_K8
+#undef CONFIG_CPU_X86_C3
+#undef CONFIG_CPU_X86_SIMICS
+#define CONFIG_PLAT_PC99 1
+#undef CONFIG_IOAPIC
+#define CONFIG_MAX_IOAPICS 8
+#define CONFIG_APIC_TIMER_TICK 1000
+#undef CONFIG_SMP
+#define CONFIG_SMP_MAX_PROCS 8
+#undef CONFIG_SMP_IDLE_POLL
+#define CONFIG_EXPERIMENTAL 1
+#define CONFIG_X_PAGER_EXREGS 1
+#undef CONFIG_X_CTRLXFER_MSG
+#undef CONFIG_X_EVT_LOGGING
+#define CONFIG_SCHED_RR 1
+#undef CONFIG_X_SCHED_HS
+#undef CONFIG_IPC_FASTPATH
+#define CONFIG_DEBUG 1
+#undef CONFIG_DEBUG_SYMBOLS
+#undef CONFIG_K8_FLUSHFILTER
+#undef CONFIG_PERFMON
+#undef CONFIG_SPIN_WHEELS
+#define CONFIG_NEW_MDB 1
+#undef CONFIG_STATIC_TCBS
+#undef CONFIG_X86_SMALL_SPACES
+#undef CONFIG_X86_IO_FLEXPAGES
+#define CONFIG_KDB_CONS_COM 1
+#define CONFIG_KDB_COMPORT 0x0
+#define CONFIG_KDB_COMSPEED 115200
+#undef CONFIG_KDB_CONS_KBD
+#define CONFIG_KDB_BOOT_CONS 0
+#undef CONFIG_KDB_DISAS
+#undef CONFIG_KDB_ON_STARTUP
+#define CONFIG_KDB_BREAKIN 1
+#define CONFIG_KDB_BREAKIN_BREAK 1
+#define CONFIG_KDB_BREAKIN_ESCAPE 1
+#undef CONFIG_KDB_INPUT_HLT
+#undef CONFIG_KDB_NO_ASSERTS
+#define CONFIG_VERBOSE_INIT 1
+#define CONFIG_TRACEPOINTS 1
+#undef CONFIG_KMEM_TRACE
+#define CONFIG_TRACEBUFFER 1
+#undef CONFIG_HAVE_MEMORY_CONTROL
+#define CONFIG_X86_PSE 1
+#undef CONFIG_BIGENDIAN
+#undef CONFIG_PPC_MMU_TLB
+#define CONFIG_X86_SYSENTER 1
+#define CONFIG_X86_PGE 1
+#define CONFIG_X86_FXSR 1
+#define CONFIG_IS_32BIT 1
+#define CONFIG_X86_HTT 1
+#define CONFIG_X86_PAT 1
+#undef CONFIG_PPC_BOOKE
+#undef CONFIG_IS_64BIT
+#undef CONFIG_MULTI_ARCHITECTURE
+#undef CONFIG_X86_EM64T
+#undef CONFIG_PPC_CACHE_L1_WRITETHROUGH
+#undef CONFIG_PPC_TLB_INV_LOCAL
+#undef CONFIG_PPC_CACHE_ICBI_LOCAL
+#undef CONFIG_X86_SMALL_SPACES_GLOBAL
+#define CONFIG_X86_HVM 1
+#undef CONFIG_PPC_MMU_SEGMENTS
+#define CONFIG_X86_TSC 1
+#define AUTOCONF_INCLUDED

View File

@ -1 +1 @@
10ce61c40c6a740070eee64320bce5df390180fa
969bb0e9a03f32081b94da1c24b440e67f44116a

View File

@ -14,22 +14,10 @@ $(call check_tool,autoheader)
$(call check_tool,autoconf)
$(call check_tool,ed)
#
# Determine python version to use for CML2
#
PYTHON2 := $(notdir $(lastword $(shell which python2 $(addprefix python2.,4 5 6 7 8))))
ifeq ($(PYTHON2),)
default: python_not_installed
python_not_installed:
$(error CML2 Configuration System needs Python 2 to be installed)
endif
default : additional_steps
additional_steps : $(DOWNLOADS)
@# use GCC front end for as linker for the pistachio user land
$(VERBOSE)sed -i "/LD=/s/^.*$$/LD=\$$(CC)/" src/kernel/pistachio/user/config.mk.in
@# add '-Wl,' prefix to '-melf_*' linker options
$(VERBOSE)sed -i "s/-melf_/-Wl,-melf_/" `grep -rl melf_ src/kernel/pistachio/user`
$(VERBOSE)for i in cmlcompile.py cmlconfigure.py configtrans.py; do \
sed -i "s/env python/env $(PYTHON2)/" src/kernel/pistachio/contrib/cml2/$$i; done
$(VERBOSE)cd src/kernel/pistachio/user; autoheader; autoconf; rm -rf autom4te.cache