CeDOS - Commit 4b178c28

Makefiles: Improved subsystem building (added phony dependencies for boot, kernel and apps), changed logfile folder (debug is an ambiguous name), added -r flag to app building to prevent building an executable file
Celina Kalus
Wed, 01 Mar 2023 14:23:31 +0100
7 files changed, 31 insertions(+), 16 deletions(-)
M apps/makefileapps/makefile

@@ -10,11 +10,11 @@ SUBDIRS = $(wildcard */.)

.PHONY: build build: folder $(SUBDIRS) $(OBJECTS) -> $(GCC_PREFIX)ld -T link.txt $(wildcard $(LOCAL_BUILD)/*.o) -o $(GLOBAL_BUILD)/apps.o --oformat elf32-i386 +> $(GCC_PREFIX)ld -T link.txt -r $(wildcard $(LOCAL_BUILD)/*.o) -o $(GLOBAL_BUILD)/apps.o --oformat elf32-i386 .PHONY: folder folder: -> @mkdir $(LOCAL_BUILD) 2> /dev/null; true +> @mkdir -p $(LOCAL_BUILD) .PHONY: $(SUBDIRS) $(SUBDIRS):
M boot/makefileboot/makefile

@@ -8,8 +8,12 @@ LOCAL_BUILD = $(GLOBAL_BUILD)

SUBDIRS = $(wildcard */.) +.PHONY: folder +folder: +> @mkdir -p $(LOCAL_BUILD) + .PHONY: build -build: $(SUBDIRS) +build: folder $(SUBDIRS) .PHONY: $(SUBDIRS) $(SUBDIRS):
M kernel/drivers/makefilekernel/drivers/makefile

@@ -14,7 +14,7 @@ > $(GCC_PREFIX)ld $(wildcard $(LOCAL_BUILD)/*.o) -r -o $(GLOBAL_BUILD)/drivers.o --oformat elf32-i386

.PHONY: folder folder: -> @mkdir $(LOCAL_BUILD) 2> /dev/null; true +> @mkdir -p $(LOCAL_BUILD) .PHONY: $(SUBDIRS) $(SUBDIRS):
M kernel/makefilekernel/makefile

@@ -14,7 +14,7 @@ > $(GCC_PREFIX)ld $(LOCAL_BUILD)/*.o -r -o $(GLOBAL_BUILD)/kernel.o --oformat elf32-i386

.PHONY: folder folder: -> @mkdir $(LOCAL_BUILD) 2> /dev/null; true +> @mkdir -p $(LOCAL_BUILD) .PHONY: $(SUBDIRS) $(SUBDIRS):
M kernel/mm/makefilekernel/mm/makefile

@@ -14,7 +14,7 @@ > $(GCC_PREFIX)ld $(wildcard $(LOCAL_BUILD)/*.o) -r -o $(GLOBAL_BUILD)/mm.o --oformat elf32-i386

.PHONY: folder folder: -> @mkdir $(LOCAL_BUILD) 2> /dev/null; true +> @mkdir -p $(LOCAL_BUILD) .PHONY: $(SUBDIRS) $(SUBDIRS):
M kernel/sched/makefilekernel/sched/makefile

@@ -14,7 +14,7 @@ > $(GCC_PREFIX)ld $(wildcard $(LOCAL_BUILD)/*.o) -r -o $(GLOBAL_BUILD)/sched.o --oformat elf32-i386

.PHONY: folder folder: -> @mkdir $(LOCAL_BUILD) 2> /dev/null; true +> @mkdir -p $(LOCAL_BUILD) .PHONY: $(SUBDIRS) $(SUBDIRS):
M makefilemakefile

@@ -2,7 +2,7 @@ .RECIPEPREFIX = >

export CURRENT_DIR = $(shell pwd) export INCLUDE_DIR = $(CURRENT_DIR)/include -export DEBUG_DIR = $(CURRENT_DIR)/debug +export LOG_DIR = $(CURRENT_DIR)/log export GCC_PREFIX = $(HOME)/opt/cross/bin/i686-elf-

@@ -17,21 +17,32 @@ endif

export GCC_OPTIONS +.PHONY: folder +folder: +> @mkdir -p $(LOCAL_BUILD) .PHONY: build -build: +build: boot kernel apps > @mkdir $(LOCAL_BUILD) 2> /dev/null; true +> $(GCC_PREFIX)ld $(LOCAL_BUILD)/*.o -T link.txt -Map=$(LOG_DIR)/mapfile.txt -o $(GLOBAL_BUILD)/base.o +> $(GCC_PREFIX)objcopy --only-keep-debug $(GLOBAL_BUILD)/base.o $(LOG_DIR)/base.sym +> $(GCC_PREFIX)objcopy -O binary $(GLOBAL_BUILD)/base.o $(GLOBAL_BUILD)/base.img +> $(GCC_PREFIX)objdump -D $(GLOBAL_BUILD)/base.o > $(LOG_DIR)/objdump.txt + +.PHONY: boot +boot: > $(MAKE) GLOBAL_BUILD=$(LOCAL_BUILD) -C boot build + +.PHONY: kernel +kernel: > $(MAKE) GLOBAL_BUILD=$(LOCAL_BUILD) -C kernel build -> $(MAKE) GLOBAL_BUILD=$(LOCAL_BUILD) -C apps build -> $(GCC_PREFIX)ld $(LOCAL_BUILD)/*.o -T link.txt -Map=$(DEBUG_DIR)/mapfile.txt -o $(GLOBAL_BUILD)/base.o -> $(GCC_PREFIX)objcopy --only-keep-debug $(GLOBAL_BUILD)/base.o $(DEBUG_DIR)/base.sym -> $(GCC_PREFIX)objcopy -O binary $(GLOBAL_BUILD)/base.o $(GLOBAL_BUILD)/base.img -> $(GCC_PREFIX)objdump -D $(GLOBAL_BUILD)/base.o > $(DEBUG_DIR)/objdump.txt +.PHONY: apps +apps: +> $(MAKE) GLOBAL_BUILD=$(LOCAL_BUILD) -C apps build -.PHONY: clear -clear: +.PHONY: clean +clean: > @rm -r $(CURRENT_DIR)/build/* 2> /dev/null; true .PHONY: run