diff options
Diffstat (limited to 'Makefile.in')
-rw-r--r-- | Makefile.in | 77 |
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 |