|
@@ -11,6 +11,7 @@ CC = i686-pc-toaru-gcc
|
|
|
NM = i686-pc-toaru-nm
|
|
|
CXX= i686-pc-toaru-g++
|
|
|
AR = i686-pc-toaru-ar
|
|
|
+AS = i686-pc-toaru-as
|
|
|
|
|
|
# Build flags
|
|
|
CFLAGS = -O2 -std=c99
|
|
@@ -19,6 +20,8 @@ CFLAGS += -Wall -Wextra -Wno-unused-function -Wno-unused-parameter -Wno-format
|
|
|
CFLAGS += -pedantic -fno-omit-frame-pointer
|
|
|
CFLAGS += -D_KERNEL_
|
|
|
|
|
|
+ASFLAGS = --32
|
|
|
+
|
|
|
# Kernel autoversioning with git sha
|
|
|
CFLAGS += -DKERNEL_GIT_TAG=`util/make-version`
|
|
|
|
|
@@ -26,7 +29,8 @@ CFLAGS += -DKERNEL_GIT_TAG=`util/make-version`
|
|
|
YASM = yasm
|
|
|
|
|
|
# All of the core parts of the kernel are built directly.
|
|
|
-KERNEL_OBJS = $(patsubst %.c,%.o,$(wildcard kernel/*/*.c))
|
|
|
+KERNEL_OBJS = $(filter-out kernel/symbols.o,$(patsubst %.S,%.o,$(wildcard kernel/*/*.S)))
|
|
|
+KERNEL_OBJS += $(patsubst %.c,%.o,$(wildcard kernel/*/*.c))
|
|
|
KERNEL_OBJS += $(patsubst %.c,%.o,$(wildcard kernel/*/*/*.c))
|
|
|
|
|
|
# Loadable modules
|
|
@@ -39,7 +43,7 @@ HEADERS = $(shell find kernel/include/ -type f -name '*.h')
|
|
|
# Userspace build flags
|
|
|
USER_CFLAGS = -O3 -m32 -Wa,--32 -g -Iuserspace -std=c99 -U__STRICT_ANSI__
|
|
|
USER_CXXFLAGS = -O3 -m32 -Wa,--32 -g -Iuserspace
|
|
|
-USER_BINFLAGS =
|
|
|
+USER_BINFLAGS =
|
|
|
|
|
|
# Userspace binaries and libraries
|
|
|
USER_CFILES = $(shell find userspace -not -wholename '*/lib/*' -name '*.c')
|
|
@@ -89,7 +93,7 @@ BOOT_MODULES += net rtl
|
|
|
# which is basically -initrd "hdd/mod/%.ko,hdd/mod/%.ko..."
|
|
|
# for each of the modules listed above in BOOT_MODULES
|
|
|
COMMA := ,
|
|
|
-EMPTY :=
|
|
|
+EMPTY :=
|
|
|
SPACE := $(EMPTY) $(EMPTY)
|
|
|
BOOT_MODULES_X = -initrd "$(subst $(SPACE),$(COMMA),$(foreach mod,$(BOOT_MODULES),hdd/mod/$(mod).ko))"
|
|
|
|
|
@@ -116,10 +120,10 @@ WITH_LOGS = logtoserial=1
|
|
|
.PHONY: debug debug-kvm debug-term debug-term-kvm
|
|
|
|
|
|
# Prevents Make from removing intermediary files on failure
|
|
|
-.SECONDARY:
|
|
|
+.SECONDARY:
|
|
|
|
|
|
# Disable built-in rules
|
|
|
-.SUFFIXES:
|
|
|
+.SUFFIXES:
|
|
|
|
|
|
all: system tags userspace
|
|
|
system: toaruos-disk.img toaruos-kernel modules
|
|
@@ -160,10 +164,11 @@ test: system
|
|
|
toolchain:
|
|
|
@cd toolchain; ./toolchain-build.sh
|
|
|
|
|
|
+ASM_OBJS = kernel/boot.o kernel/gdt.o kernel/idt.o kernel/irq.o kernel/isr.o kernel/task.o kernel/tss.o kernel/user.o
|
|
|
################
|
|
|
# Kernel #
|
|
|
################
|
|
|
-toaruos-kernel: kernel/start.o kernel/link.ld kernel/main.o kernel/symbols.o ${KERNEL_OBJS}
|
|
|
+toaruos-kernel: ${ASM_OBJS} kernel/link.ld kernel/main.o kernel/symbols.o ${KERNEL_OBJS}
|
|
|
@${BEG} "CC" "$<"
|
|
|
@${CC} -T kernel/link.ld ${CFLAGS} -nostdlib -o toaruos-kernel kernel/*.o ${KERNEL_OBJS} -lgcc ${ERRORS}
|
|
|
@${END} "CC" "$<"
|
|
@@ -171,18 +176,13 @@ toaruos-kernel: kernel/start.o kernel/link.ld kernel/main.o kernel/symbols.o ${K
|
|
|
|
|
|
kernel/symbols.o: ${KERNEL_OBJS} util/generate_symbols.py
|
|
|
@-rm -f kernel/symbols.o
|
|
|
- @${BEG} "nm" "Generating symbol list..."
|
|
|
+ @${BEG} "NM" "Generating symbol list..."
|
|
|
@${CC} -T kernel/link.ld ${CFLAGS} -nostdlib -o toaruos-kernel kernel/*.o ${KERNEL_OBJS} -lgcc ${ERRORS}
|
|
|
- @${NM} toaruos-kernel -g | python2 util/generate_symbols.py > kernel/symbols.s
|
|
|
- @${END} "nm" "Generated symbol list."
|
|
|
- @${BEG} "yasm" "kernel/symbols.s"
|
|
|
- @${YASM} -f elf -o $@ kernel/symbols.s ${ERRORS}
|
|
|
- @${END} "yasm" "kernel/symbols.s"
|
|
|
-
|
|
|
-kernel/start.o: kernel/start.s
|
|
|
- @${BEG} "yasm" "$<"
|
|
|
- @${YASM} -f elf -o $@ $< ${ERRORS}
|
|
|
- @${END} "yasm" "$<"
|
|
|
+ @${NM} toaruos-kernel -g | python2 util/generate_symbols.py > kernel/symbols.S
|
|
|
+ @${END} "NM" "Generated symbol list."
|
|
|
+ @${BEG} "AS" "kernel/symbols.S"
|
|
|
+ @${AS} ${ASFLAGS} kernel/symbols.S -o $@ ${ERRORS}
|
|
|
+ @${END} "AS" "kernel/symbols.S"
|
|
|
|
|
|
kernel/sys/version.o: kernel/*/*.c kernel/*.c
|
|
|
|
|
@@ -191,6 +191,11 @@ hdd/mod/%.ko: modules/%.c ${HEADERS}
|
|
|
@${CC} -T modules/link.ld -I./kernel/include -nostdlib ${CFLAGS} -c -o $@ $< ${ERRORS}
|
|
|
@${END} "CC" "$< [module]"
|
|
|
|
|
|
+kernel/%.o: kernel/%.S
|
|
|
+ @${BEG} "AS" "$<"
|
|
|
+ @${AS} ${ASFLAGS} $< -o $@ ${ERRORS}
|
|
|
+ @${END} "AS" "$<"
|
|
|
+
|
|
|
kernel/%.o: kernel/%.c ${HEADERS}
|
|
|
@${BEG} "CC" "$<"
|
|
|
@${CC} ${CFLAGS} -nostdlib -g -I./kernel/include -c -o $@ $< ${ERRORS}
|