summaryrefslogtreecommitdiff
path: root/Makefile.in
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile.in')
-rw-r--r--Makefile.in77
1 files changed, 30 insertions, 47 deletions
diff --git a/Makefile.in b/Makefile.in
index 7783676..0552761 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -4,26 +4,28 @@ override PROMPT := printf "%s\t\t%s\n"
###############################
# CFLAGS, QEMU flags + misc
###############################
+KBUILD_ARGS = ""
+override PROJECT_ROOT = @PROJECT_ROOT@
+override BOOT_FW = @BOOT_FW@
override ARCH = @ARCH@
override HYRA_VERSION = @PACKAGE_VERSION@
override PROMPT := printf "%s\t\t%s\n"
override KERNEL_CFLAGS = @KERNEL_CFLAGS@ $(KERNEL_DEFINES)
-override KERNEL_LDFLAGS = -nostdlib -znoexecstack -zmax-page-size=0x1000 -static -Tsys/arch/$(ARCH)/conf/link.ld
+override KERNEL_LDFLAGS = -no-pie -nostdlib -znoexecstack -zmax-page-size=0x1000 -static -Tsys/arch/$(ARCH)/conf/link.ld
override QEMU_FLAGS = @QEMU_FLAGS@
-override KERNEL_DEFINES = $ -DHYRA_VERSION="\"$(HYRA_VERSION)\""\
+override KERNEL_DEFINES = $(KBUILD_ARGS) -DHYRA_VERSION="\"$(HYRA_VERSION)\""\
-DHYRA_BUILDDATE="\"@HYRA_BUILDDATE@\""\
-DHYRA_ARCH="\"@ARCH@\"" $(shell cat sys/arch/$(ARCH)/conf/GENERIC | tools/kconf/kconf)
-
######################
# Toolchain
######################
override TOOLCHAIN = @TOOLCHAIN@
ifeq ($(TOOLCHAIN), clang)
ifeq ($(ARCH), amd64)
- override CC = clang -target x86_64-none-elf
+ override CC = clang -target x86_64-none-elf -ffreestanding -nostdlib
override LD = ld.lld
else
- override CC = clang -target $(ARCH)-none-elf
+ override CC = clang -target $(ARCH)-none-elf -ffreestanding -nostdlib
override LD = ld.lld
endif
else ifeq ($(TOOLCHAIN), gcc)
@@ -60,32 +62,31 @@ override KERNEL_HEADER_DEPS = $(KERNEL_CFILES:.c=.d)
# Userland
########################
override SBIN_MAKEDIRS = $(shell find usr.sbin/ -type d -name "*" | awk '!/usr.sbin\/$$/')
+override BIN_MAKEDIRS = $(shell find usr.bin/ -type d -name "*" | awk '!/usr.bin\/$$/')
override USRDIR = $(shell pwd)/base/usr
+
.PHONY: all
-all: base libc sbin base/boot/hyra-kernel ramfs iso
+all: stand/boot/ libc sbin bin base/boot/hyra.krq
rm -f sys/include/machine
- rm -rf iso_root
.PHONY: sbin
sbin: $(SBIN_MAKEDIRS)
- $(MAKE) -C $^ -I$(shell pwd)/builddeps \
- LDSCRIPT=$(shell pwd)/usr.sbin/link.ld USRDIR=$(USRDIR)
- find $^ -type f -executable -exec mv {} base/usr/sbin/ \;
+ make -C usr.sbin/ LDSCRIPT=$(shell pwd)/usr.sbin/link.ld USRDIR=$(USRDIR)\
+ ROOT=$(PROJECT_ROOT) OSVER=$(HYRA_VERSION) OSARCH=$(ARCH)\
+ CC="$(CC)"
+
+.PHONY: bin
+bin: $(BIN_MAKEDIRS)
+ make -C usr.bin/ LDSCRIPT=$(shell pwd)/usr.bin/link.ld USRDIR=$(USRDIR)\
+ ROOT=$(PROJECT_ROOT) OSVER=$(HYRA_VERSION) OSARCH=$(ARCH)\
+ CC="$(CC)"
.PHONY: libc
libc:
$(MAKE) -C lib/libc/ -I$(shell pwd)/builddeps \
- USRDIR=$(USRDIR)
- cp lib/libc/build/libc.a base/usr/lib/
-
-.PHONY: base
-base:
- mkdir -p base/usr/lib/
- mkdir -p base/usr/sbin/
- mkdir -p base/boot/
- mkdir -p base/usr/include/sys/
- cp -f sys/include/sys/*.h base/usr/include/sys/
+ USRDIR=$(USRDIR) ARCH=$(ARCH) ROOT=$(PROJECT_ROOT) \
+ CC="$(CC)"
.PHONY: cross
cross:
@@ -95,41 +96,23 @@ cross:
run:
$(QEMU) $(QEMU_FLAGS)
-.PHONY: ramfs
-ramfs:
- cd base/; find . -name "*" | cpio --create --format=odc \
- --no-absolute-filenames > ../ramfs.cpio
- $(PROMPT) " RAMFS " $(shell pwd)/ramfs.cpio
-
.PHONY: clean
clean:
rm -f $(KERNEL_ASMOBJECTS) $(KERNEL_OBJECTS) $(KERNEL_HEADER_DEPS)
rm -f sys/include/machine
-.PHONY: iso
-iso:
- mkdir -p iso_root/boot/
- mkdir -p iso_root/EFI/BOOT/
- cp stand/limine/BOOTX64.EFI iso_root/EFI/BOOT/
- mv ramfs.cpio iso_root/boot/
- cp builddeps/limine.cfg stand/limine/limine-bios.sys \
- stand/limine/limine-bios-cd.bin stand/limine/limine-uefi-cd.bin iso_root/
- cp base/boot/* iso_root/boot/
- xorriso -as mkisofs -b limine-bios-cd.bin -no-emul-boot -boot-load-size 4\
- -boot-info-table --efi-boot limine-uefi-cd.bin -efi-boot-part \
- --efi-boot-image --protective-msdos-label iso_root -o Hyra.iso > /dev/null
- stand/limine/limine bios-install Hyra.iso
- $(PROMPT) " ISO " $(shell pwd)/Hyra.iso
-
-base/boot/hyra-kernel: $(KERNEL_OBJECTS) $(KERNEL_ASMOBJECTS)
- rm -rf iso_root
- $(PROMPT) " LD " $(shell pwd)/base/boot/hyra-kernel
- $(LD) $(KERNEL_LDFLAGS) $(KERNEL_OBJECTS) $(KERNEL_ASMOBJECTS) -o base/boot/hyra-kernel
- tools/ksyms sys/kern/ksyms.c base/boot/hyra-kernel
+stand/boot/:
+ mkdir -p stand/boot/
+ cp stand/limine/$(BOOT_FW) stand/boot/
+
+base/boot/hyra.krq: $(KERNEL_OBJECTS) $(KERNEL_ASMOBJECTS)
+ $(PROMPT) " LD " $(shell pwd)/base/boot/hyra.krq
+ $(LD) $(KERNEL_LDFLAGS) $(KERNEL_OBJECTS) $(KERNEL_ASMOBJECTS) -o base/boot/hyra.krq
+ tools/ksyms sys/kern/ksyms.c base/boot/hyra.krq
# === Generating symbols ===
$(CC) -c $(KERNEL_CFLAGS) $(KERNEL_DEFINES) sys/kern/ksyms.c -o sys/kern/ksyms.o
$(LD) $(KERNEL_LDFLAGS) $(KERNEL_OBJECTS) $(KERNEL_ASMOBJECTS) \
- sys/kern/ksyms.o -o base/boot/hyra-kernel
+ sys/kern/ksyms.o -o base/boot/hyra.krq
sys/include/machine/:
cd sys/include/; ln -sf arch/$(ARCH) machine