Newer
Older
ubixos / Dump / hybos / src / kernel / Makefile
@cwolsen cwolsen on 31 Oct 2018 1 KB Big Dump
.SUFFIXES: .asm

# defines
MAKEFILE		=Makefile
MAKEDEP		=$(MAKEFILE)
INCDIR		=../../include
LDSCRIPT		=../krnl1m.ld
NASM			=nasm -f elf -i$(INCDIR)/
CC				=gcc -g -Wall -W -O2 -nostdinc -fno-builtin -I$(INCDIR)
LD				=ld -g -T $(LDSCRIPT) -nostdlib
#LD				=D:/cygwin/usr/cross/bin/i586-elf-ld.exe -g -T $(LDSCRIPT) -nostdlib
LIBC			=../../lib/libc.a

OBJS			=debug.o					\
				 main.o					\
				 kstart.o				\
				 keyboard.o				\
				 sched.o					\
				 tasks.o					\
				 video.o					\
				 bootlog.o
#				 cpu.o
OBJS_DEP		=*.o

OBJ_DIR		=objects

# targets
all: kernel.bin

install: kernel.bin
	copy ..\..\boot\kernel.bin a:\kernel.bin

clean:
	del ..\$(OBJ_DIR)\debug.o
	del ..\$(OBJ_DIR)\keyboard.o
	del ..\$(OBJ_DIR)\kstart.o
	del ..\$(OBJ_DIR)\main.o
	del ..\$(OBJ_DIR)\sched.o
	del ..\$(OBJ_DIR)\tasks.o
	del ..\$(OBJ_DIR)\video.o
	del ..\..\boot\kernel.bin
	del ..\$(OBJ_DIR)\kernel.dis
	del ..\$(OBJ_DIR)\kernel.sym
	del ..\$(OBJ_DIR)\bootlog.o
#	del ..\$(OBJ_DIR)\cpu.o

# implicit rules
.asm.o:
	$(NASM) -o../$(OBJ_DIR)/$@ $<

.c.o:
	$(CC) -c -o../$(OBJ_DIR)/$@ $<

# dependencies
kstart.o:	kstart.asm	$(MAKEDEP)
main.o:		main.c		$(MAKEDEP)
video.o:		video.c		$(MAKEDEP)
debug.o:		debug.c		$(MAKEDEP)
kbd.o:		kbd.c			$(MAKEDEP)
sched.o:		sched.c		$(MAKEDEP)
tasks.o:		tasks.c		$(MAKEDEP)
bootlog.o:	bootlog.c	$(MAKEDEP)
#cpu.o:		cpu.c			$(MAKEDEP)

# explicit rules
$(LIBC): ../../lib/$(MAKEFILE)
	make -C ../../lib -f $(MAKEFILE)

kernel.bin: $(OBJS) $(LDSCRIPT) $(LIBC)	$(MAKEDEP)
	$(LD) -o../../boot/$@ ../$(OBJ_DIR)/*.o $(LIBC)
	objdump --source ../../boot/$@ >../$(OBJ_DIR)/kernel.dis
	nm --line-numbers ../../boot/$@ | sort >../$(OBJ_DIR)/kernel.sym
	strip ../../boot/$@