Files
kernel/etc/Kernel.makefile
T
2020-11-09 13:18:11 +02:00

228 lines
5.9 KiB
Makefile

# Context: O - object/output dir
ACPICA_SRC=$(shell find arch/amd64/acpica -type f -name "*.c")
ACPICA_SRC_DIR=$(shell find arch/amd64/acpica -type d)
ACPICA_DIR=$(ACPICA_SRC_DIR:%=$(O)/%)
ACPICA_OBJ=$(ACPICA_SRC:%.c=$(O)/%.o)
KERNEL_USER_HDR=$(shell find include/user -type f -name "*.h")
KERNEL_DEF=
KERNEL_OBJ=$(O)/arch/amd64/boot/yboot.o \
$(O)/arch/amd64/boot/yboot_data.o \
$(O)/arch/amd64/boot/multiboot.o \
$(O)/arch/amd64/boot/entry.o \
$(O)/arch/amd64/boot/upper.o \
$(O)/arch/amd64/kernel.o \
$(O)/arch/amd64/acpi_osl_mem.o \
$(O)/arch/amd64/acpi_osl_printf.o \
$(O)/arch/amd64/acpi_osl_thread.o \
$(O)/arch/amd64/acpi_osl_init.o \
$(O)/arch/amd64/acpi_osl_table.o \
$(O)/arch/amd64/acpi_osl_irq.o \
$(O)/arch/amd64/acpi_osl_hw.o \
$(ACPICA_OBJ) \
$(O)/arch/amd64/hw/rs232.o \
$(O)/arch/amd64/hw/con.o \
$(O)/arch/amd64/hw/gdt.o \
$(O)/arch/amd64/hw/gdt_s.o \
$(O)/arch/amd64/hw/acpi.o \
$(O)/arch/amd64/mm/mm.o \
$(O)/arch/amd64/hw/apic.o \
$(O)/arch/amd64/hw/idt.o \
$(O)/arch/amd64/hw/exc_s.o \
$(O)/arch/amd64/hw/exc.o \
$(O)/arch/amd64/hw/irq0.o \
$(O)/arch/amd64/hw/timer.o \
$(O)/arch/amd64/hw/ioapic.o \
$(O)/arch/amd64/hw/irqs_s.o \
$(O)/arch/amd64/sys/spin_s.o \
$(O)/arch/amd64/cpu.o \
$(O)/arch/amd64/mm/heap.o \
$(O)/arch/amd64/mm/map.o \
$(O)/arch/amd64/mm/phys.o \
$(O)/arch/amd64/mm/vmalloc.o \
$(O)/arch/amd64/hw/ps2.o \
$(O)/arch/amd64/hw/irq.o \
$(O)/arch/amd64/hw/rtc.o \
$(O)/arch/amd64/fpu.o \
$(O)/arch/amd64/cpuid.o \
$(O)/arch/amd64/sched_s.o \
$(O)/arch/amd64/syscall_s.o \
$(O)/arch/amd64/syscall.o \
$(O)/arch/amd64/binfmt_elf.o \
$(O)/arch/amd64/smp/smp.o \
$(O)/arch/amd64/smp/ap_code.o \
$(O)/arch/amd64/smp/ipi.o \
$(O)/arch/amd64/smp/irq_ipi_s.o \
$(O)/sys/debug.o \
$(O)/sys/ubsan.o \
$(O)/sys/panic.o \
$(O)/sys/string.o \
$(O)/sys/config.o \
$(O)/sys/ctype.o \
$(O)/sys/errno.o \
$(O)/sys/kernel.o \
$(O)/sys/time.o \
$(O)/sys/char/input.o \
$(O)/sys/char/ring.o \
$(O)/sys/char/line.o \
$(O)/sys/char/tty.o \
$(O)/sys/char/chr.o \
$(O)/sys/char/pipe.o \
$(O)/sys/block/pseudo.o \
$(O)/sys/block/part_gpt.o \
$(O)/sys/block/ram.o \
$(O)/sys/block/blk.o \
$(O)/sys/block/cache.o \
$(O)/sys/execve.o \
$(O)/sys/dev.o \
$(O)/sys/sys_file.o \
$(O)/sys/sys_sys.o \
$(O)/sys/thread.o \
$(O)/sys/process.o \
$(O)/sys/snprintf.o \
$(O)/sys/random.o \
$(O)/sys/reboot.o \
$(O)/sys/init.o \
$(O)/sys/mem/shmem.o \
$(O)/sys/mem/slab.o \
$(O)/sys/console.o \
$(O)/sys/display.o \
$(O)/sys/wait.o \
$(O)/sys/sched.o \
$(O)/sys/font/psf.o \
$(O)/sys/font/logo.o \
$(O)/sys/font/default8x16.psfu.o \
$(O)/sys/mod.o \
$(O)/sys/hash.o \
$(O)/sys/syms.o \
$(O)/fs/vfs.o \
$(O)/fs/vfs_ops.o \
$(O)/fs/vfs_access.o \
$(O)/fs/fs_class.o \
$(O)/fs/ofile.o \
$(O)/fs/node.o \
$(O)/fs/sysfs.o \
$(O)/fs/ram.o \
$(O)/fs/ram_tar.o \
$(O)/fs/ext2/block.o \
$(O)/fs/ext2/alloc.o \
$(O)/fs/ext2/ext2.o \
$(O)/fs/ext2/node.o \
$(O)/fs/ext2/dir.o \
$(O)/drivers/pci/pci.o \
$(O)/drivers/pci/pcidb.o \
$(O)/drivers/ata/ahci.o \
$(O)/drivers/usb/usb_uhci.o \
$(O)/drivers/usb/usb.o \
$(O)/drivers/usb/driver.o \
$(O)/drivers/usb/device.o \
$(O)/drivers/usb/usbkbd.o \
$(O)/drivers/usb/hub.o \
KERNEL_LDS=arch/amd64/link.ld
KERNEL_HDR=$(shell find include -type f -name "*.h")
DIRS+=$(O)/arch/amd64/hw \
$(O)/arch/amd64/mm \
$(O)/arch/amd64/sys \
$(O)/arch/amd64/boot \
$(O)/arch/amd64/disasm \
$(O)/drivers/usb \
$(O)/drivers/ata \
$(O)/drivers/pci \
$(O)/arch/amd64/smp \
$(O)/fs \
$(O)/fs/ext2 \
$(O)/sys/block \
$(O)/sys/char \
$(O)/sys/mem \
$(O)/sys/font \
$(O)/net \
$(O)/include \
$(ACPICA_DIR)
include etc/KernelOptions.makefile
### Compiler
KERNEL_GIT_VERSION=$(shell git describe --always --tags)
KERNEL_CFLAGS=-Iinclude \
-Iinclude/arch/amd64/acpica \
-DAMD64_SMP=4 \
-DAMD64_MAX_SMP=4 \
-Iboot \
-fshort-wchar \
-I$(O)/include \
-ffreestanding \
-fPIE \
-fno-plt \
-fno-pic \
-DARCH_AMD64 \
-DKERNEL_VERSION_STR=\"$(KERNEL_GIT_VERSION)\" \
-D__KERNEL__ \
-mcmodel=large \
-mno-sse \
-mno-sse2 \
-mno-red-zone \
-mno-mmx \
-z max-page-size=0x1000 \
-Wall \
-Wextra \
-Wno-unused \
-Og \
-ggdb \
-Werror $(KERNEL_DEF)
KERNEL_LDFLAGS=-nostdlib \
-fPIE \
-fno-plt \
-fno-pic \
-static \
-Wl,--build-id=none \
-z max-page-size=0x1000 \
-T$(KERNEL_LDS)
### Rules
$(O)/kernel: $(KERNEL_LDS) $(KERNEL_OBJ)
@echo " LD $@"
@$(CC) $(KERNEL_LDFLAGS) -o $@ $(KERNEL_OBJ)
$(O)/include/config.h: config.h.in
@echo " CONFIG $@"
@cp $< $@
$(O)/%.o: %.c $(O)/include/config.h $(KERNEL_HDR) Kernel.config
@echo " CC $@"
@$(CC) $(KERNEL_CFLAGS) -c -o $@ $<
$(O)/%.o: %.S $(O)/include/config.h $(KERNEL_HDR) Kernel.config
@echo " AS $@"
@$(CC) $(KERNEL_CFLAGS) -D__ASM__ -c -o $@ $<
$(O)/sys/font/default8x16.psfu.o: etc/default8x16.psfu arch/amd64/incbin.S
@echo " RES $@"
@$(CC) \
-c \
-D__ASM__ \
-DINCBIN_FILE='"etc/default8x16.psfu"' \
-DINCBIN_START="_psf_start" \
-DINCBIN_END="_psf_end" \
-o $@ arch/amd64/incbin.S
$(O)/arch/amd64/smp/ap_code.o: $(O)/arch/amd64/hw/ap_code.bin arch/amd64/incbin.S
@echo " RES $@"
@$(CC) \
-c \
-D__ASM__ \
-DINCBIN_FILE='"$(O)/arch/amd64/hw/ap_code.bin"' \
-DINCBIN_START="amd64_ap_code_start" \
-DINCBIN_END="amd64_ap_code_end" \
-o $@ arch/amd64/incbin.S
$(O)/arch/amd64/hw/ap_code.bin: arch/amd64/hw/ap_code.nasm
@echo "NASM $@"
@nasm -fbin -o $@ $<