From 1abba680270055e9085732b7c2b8912499caa027 Mon Sep 17 00:00:00 2001 From: Wu Zhangjin Date: Sat, 25 Jul 2015 12:21:44 +0800 Subject: [PATCH] Makefile: Split the tags and emulators out to their own Signed-off-by: Wu Zhangjin --- Makefile | 93 +++------------------------------------------- Makefile.emulators | 89 ++++++++++++++++++++++++++++++++++++++++++++ Makefile.header | 3 +- Makefile.tags | 7 ++++ 4 files changed, 103 insertions(+), 89 deletions(-) create mode 100644 Makefile.emulators create mode 100644 Makefile.tags diff --git a/Makefile b/Makefile index 5a966f4..9f333b5 100644 --- a/Makefile +++ b/Makefile @@ -98,92 +98,11 @@ dep: @cp tmp_make Makefile @for i in fs kernel mm; do make dep -C $$i; done -tag: tags -tags: - @ctags -R - -cscope: - @cscope -Rbkq - -hda: - @make hda -C rootfs - -flp: - @make flp -C rootfs - -ramfs: - @make ramfs -C rootfs - -# VM (Qemu/Bochs) Setting for different rootfs - -ROOT_RAM = 0000 -ROOT_FDB = 021d -ROOT_HDA = 0301 - -SETROOTDEV_CMD = $(SETROOTDEV) images/Image -SETROOTDEV_CMD_RAM = $(SETROOTDEV_CMD) $(ROOT_RAM) -SETROOTDEV_CMD_FDB = $(SETROOTDEV_CMD) $(ROOT_FDB) -SETROOTDEV_CMD_HDA = $(SETROOTDEV_CMD) $(ROOT_HDA) - -QEMU_CMD = $(QEMU) -m 16M -boot a -fda images/Image -QEMU_CMD_FDB = $(QEMU_CMD) -fdb rootfs/$(FLP_IMG) -QEMU_CMD_HDA = $(QEMU_CMD) -hda rootfs/$(HDA_IMG) -nullstring := -QEMU_DBG = $(nullstring) -s -S #-nographic #-serial '/dev/ttyS0'" - -BOCHS_CFG = tools/bochs/bochsrc/ -BOCHS_CMD = $(BOCHS) -f $(BOCHS_CFG)/bochsrc-fda.bxrc -BOCHS_CMD_FDB = $(BOCHS) -f $(BOCHS_CFG)/bochsrc-fdb.bxrc -BOCHS_CMD_HDA = $(BOCHS) -f $(BOCHS_CFG)/bochsrc-hd.bxrc -BOCHS_DBG = .dbg - -ifeq ($(VM), bochs) - NEW_VM=qemu -else - NEW_VM=bochs -endif - -switch: - @echo "Switch to use emulator: $(NEW_VM)" - @echo $(NEW_VM) > $(VM_CFG) - -VM=$(shell cat $(VM_CFG)) - -ifeq ($(VM), bochs) - VM_CMD = $(BOCHS_CMD) - VM_CMD_FDB = $(BOCHS_CMD_FDB) - VM_CMD_HDA = $(BOCHS_CMD_HDA) - VM_DBG = $(BOCHS_DBG) -else - VM_CMD = $(QEMU_CMD) - VM_CMD_FDB = $(QEMU_CMD_FDB) - VM_CMD_HDA = $(QEMU_CMD_HDA) - VM_DBG = $(QEMU_DBG) -endif - -start: Image - $(SETROOTDEV_CMD_RAM) - $(VM_CMD) - -start-fd: Image flp - $(SETROOTDEV_CMD_FDB) - $(VM_CMD_FDB) - -start-hd: Image hda - $(SETROOTDEV_CMD_HDA) - $(VM_CMD_HDA) - -debug: Image - $(SETROOTDEV_CMD_RAM) - $(VM_CMD)$(VM_DBG) - -debug-fd: Image flp - $(SETROOTDEV_CMD_FDB) - $(VM_CMD_FDB)$(VM_DBG) - -debug-hd: Image hda - $(SETROOTDEV_CMD_HDA) - $(VM_CMD_HDA)$(VM_DBG) +# Test on emulators with different prebuilt rootfs +include Makefile.emulators + +# Tags for source code reading +include Makefile.tags # For Call graph generation include Makefile.callgraph @@ -199,8 +118,8 @@ help: @echo " make debug -- debug the kernel in qemu/bochs & gdb at port 1234" @echo " make debug-fd -- debug the kernel with fs in floppy" @echo " make debug-hd -- debug the kernel with fs in hard disk" - @echo " make cscope -- genereate the cscope index databases" @echo " make switch -- switch the emulator: qemu and bochs" + @echo " make cscope -- genereate the cscope index databases" @echo " make tags -- generate the tag file" @echo " make cg -- generate callgraph of the default main entry" @echo " make cg f=func d=dir|file b=browser -- generate callgraph of func in file/directory" diff --git a/Makefile.emulators b/Makefile.emulators new file mode 100644 index 0000000..0e66e7a --- /dev/null +++ b/Makefile.emulators @@ -0,0 +1,89 @@ +# Allow to run kernel on different emulators with different prebuilt rootfs + +# Rootfs preparation + +hda: + @make hda -C rootfs + +flp: + @make flp -C rootfs + +ramfs: + @make ramfs -C rootfs + +# VM (Qemu/Bochs) Setting for different rootfs + +ROOT_RAM = 0000 +ROOT_FDB = 021d +ROOT_HDA = 0301 + +SETROOTDEV_CMD = $(SETROOTDEV) images/Image +SETROOTDEV_CMD_RAM = $(SETROOTDEV_CMD) $(ROOT_RAM) +SETROOTDEV_CMD_FDB = $(SETROOTDEV_CMD) $(ROOT_FDB) +SETROOTDEV_CMD_HDA = $(SETROOTDEV_CMD) $(ROOT_HDA) + +QEMU_CMD = $(QEMU) -m 16M -boot a -fda images/Image +QEMU_CMD_FDB = $(QEMU_CMD) -fdb rootfs/$(FLP_IMG) +QEMU_CMD_HDA = $(QEMU_CMD) -hda rootfs/$(HDA_IMG) +nullstring := +QEMU_DBG = $(nullstring) -s -S #-nographic #-serial '/dev/ttyS0'" + +BOCHS_CFG = tools/bochs/bochsrc/ +BOCHS_CMD = $(BOCHS) -f $(BOCHS_CFG)/bochsrc-fda.bxrc +BOCHS_CMD_FDB = $(BOCHS) -f $(BOCHS_CFG)/bochsrc-fdb.bxrc +BOCHS_CMD_HDA = $(BOCHS) -f $(BOCHS_CFG)/bochsrc-hd.bxrc +BOCHS_DBG = .dbg + +VM = $(shell cat $(VM_CFG)) + +ifeq ($(VM), bochs) + NEW_VM=qemu +else + NEW_VM=bochs +endif + +switch: + @echo "Switch to use emulator: $(NEW_VM)" + @echo $(NEW_VM) > $(VM_CFG) + +VM=$(shell cat $(VM_CFG)) + +ifeq ($(VM), bochs) + VM_CMD = $(BOCHS_CMD) + VM_CMD_FDB = $(BOCHS_CMD_FDB) + VM_CMD_HDA = $(BOCHS_CMD_HDA) + VM_DBG = $(BOCHS_DBG) +else + VM_CMD = $(QEMU_CMD) + VM_CMD_FDB = $(QEMU_CMD_FDB) + VM_CMD_HDA = $(QEMU_CMD_HDA) + VM_DBG = $(QEMU_DBG) +endif + +# Running on emulators with differrent rootfs + +start: Image + $(SETROOTDEV_CMD_RAM) + $(VM_CMD) + +start-fd: Image flp + $(SETROOTDEV_CMD_FDB) + $(VM_CMD_FDB) + +start-hd: Image hda + $(SETROOTDEV_CMD_HDA) + $(VM_CMD_HDA) + +# Debugging the above targets + +debug: Image + $(SETROOTDEV_CMD_RAM) + $(VM_CMD)$(VM_DBG) + +debug-fd: Image flp + $(SETROOTDEV_CMD_FDB) + $(VM_CMD_FDB)$(VM_DBG) + +debug-hd: Image hda + $(SETROOTDEV_CMD_HDA) + $(VM_CMD_HDA)$(VM_DBG) diff --git a/Makefile.header b/Makefile.header index d3324fc..b2f93bd 100755 --- a/Makefile.header +++ b/Makefile.header @@ -6,9 +6,8 @@ QEMU = qemu-system-i386 # Bochs BOCHS = bochs -# VM +# VM configuration VM_CFG = tools/vm.cfg -VM = $(shell cat $(VM_CFG)) # Tool for specify root device SETROOTDEV = tools/setrootdev.sh diff --git a/Makefile.tags b/Makefile.tags new file mode 100644 index 0000000..b93a636 --- /dev/null +++ b/Makefile.tags @@ -0,0 +1,7 @@ +tag: tags +tags: + @ctags -R + +cscope: + @cscope -Rbkq +