diff --git a/Makefile b/Makefile index 4062d2c..5e7d2cc 100644 --- a/Makefile +++ b/Makefile @@ -1,17 +1,12 @@ # Versioning information # -VERSION := v3.0.3 +VERSION := v3.0.4 WIMBOOT_VERSION := v2.8.0 SBAT_GENERATION := 1 # Abstract target-independent objects # -OBJECTS := prefix.o startup.o callback.o main.o vsprintf.o string.o peloader.o -OBJECTS += int13.o vdisk.o cpio.o stdio.o die.o efi.o efimain.o -OBJECTS += efifile.o efiboot.o efiblock.o cmdline.o -OBJECTS += cookie.o paging.o memmap.o -OBJECTS += reg.o charset.o bcd.o fsuuid.o gpt.o msdos.o -OBJECTS += biosdisk.o efidisk.o payload.o +OBJECTS := prefix.o # Target-dependent objects # @@ -20,6 +15,11 @@ OBJECTS_x86_64 := $(patsubst %.o,%.x86_64.o,$(OBJECTS)) OBJECTS_i386_x86_64 := $(patsubst %.o,%.i386.x86_64.o,$(OBJECTS)) OBJECTS_arm64 := $(patsubst %.o,%.arm64.o,$(OBJECTS)) +include posix/build.mk +include libnt/build.mk +include disk/build.mk +include kern/build.mk + # Header files # HEADERS := $(wildcard *.h) @@ -311,6 +311,7 @@ regview : utils/regview.c # Cleanup clean : + $(RM) -f $(RM_FILES) $(RM) -f *.s *.o *.a *.elf *.map $(RM) -f elf2efi32 elf2efi64 $(RM) -f regview regview.exe diff --git a/biosdisk.c b/disk/biosdisk.c similarity index 100% rename from biosdisk.c rename to disk/biosdisk.c diff --git a/disk/build.mk b/disk/build.mk new file mode 100644 index 0000000..2286cbf --- /dev/null +++ b/disk/build.mk @@ -0,0 +1,16 @@ +# Objects +OBJ_DISK := disk/biosdisk.o +OBJ_DISK += disk/efidisk.o +OBJ_DISK += disk/fsuuid.o +OBJ_DISK += disk/gpt.o +OBJ_DISK += disk/msdos.o + +OBJECTS += $(OBJ_DISK) + +OBJECTS_i386 += $(patsubst %.o,%.i386.o,$(OBJ_DISK)) +OBJECTS_x86_64 += $(patsubst %.o,%.x86_64.o,$(OBJ_DISK)) +OBJECTS_i386_x86_64 += $(patsubst %.o,%.i386.x86_64.o,$(OBJ_DISK)) +OBJECTS_arm64 += $(patsubst %.o,%.arm64.o,$(OBJ_DISK)) + +RM_FILES += disk/*.s disk/*.o + diff --git a/efidisk.c b/disk/efidisk.c similarity index 100% rename from efidisk.c rename to disk/efidisk.c diff --git a/fsuuid.c b/disk/fsuuid.c similarity index 100% rename from fsuuid.c rename to disk/fsuuid.c diff --git a/gpt.c b/disk/gpt.c similarity index 100% rename from gpt.c rename to disk/gpt.c diff --git a/msdos.c b/disk/msdos.c similarity index 100% rename from msdos.c rename to disk/msdos.c diff --git a/include/memmap.h b/include/e820.h similarity index 96% rename from include/memmap.h rename to include/e820.h index 72a3bd5..8cd9df0 100644 --- a/include/memmap.h +++ b/include/e820.h @@ -1,5 +1,5 @@ -#ifndef _MEMMAP_H -#define _MEMMAP_H +#ifndef _E820_H +#define _E820_H /* * Copyright (C) 2021 Michael Brown . @@ -56,4 +56,4 @@ struct e820_entry extern struct e820_entry *memmap_next (struct e820_entry *prev); -#endif /* _MEMMAP_H */ +#endif /* _E820_H */ diff --git a/kern/build.mk b/kern/build.mk new file mode 100644 index 0000000..8b93c4a --- /dev/null +++ b/kern/build.mk @@ -0,0 +1,26 @@ +# Objects +OBJ_KERN := kern/callback.o +OBJ_KERN += kern/cmdline.o +OBJ_KERN += kern/cookie.o +OBJ_KERN += kern/die.o +OBJ_KERN += kern/e820.o +OBJ_KERN += kern/efi.o +OBJ_KERN += kern/efiblock.o +OBJ_KERN += kern/efiboot.o +OBJ_KERN += kern/efifile.o +OBJ_KERN += kern/efimain.o +OBJ_KERN += kern/int13.o +OBJ_KERN += kern/main.o +OBJ_KERN += kern/paging.o +OBJ_KERN += kern/payload.o +OBJ_KERN += kern/startup.o + +OBJECTS += $(OBJ_KERN) + +OBJECTS_i386 += $(patsubst %.o,%.i386.o,$(OBJ_KERN)) +OBJECTS_x86_64 += $(patsubst %.o,%.x86_64.o,$(OBJ_KERN)) +OBJECTS_i386_x86_64 += $(patsubst %.o,%.i386.x86_64.o,$(OBJ_KERN)) +OBJECTS_arm64 += $(patsubst %.o,%.arm64.o,$(OBJ_KERN)) + +RM_FILES += kern/*.s kern/*.o + diff --git a/callback.S b/kern/callback.S similarity index 100% rename from callback.S rename to kern/callback.S diff --git a/cmdline.c b/kern/cmdline.c similarity index 100% rename from cmdline.c rename to kern/cmdline.c diff --git a/cookie.c b/kern/cookie.c similarity index 100% rename from cookie.c rename to kern/cookie.c diff --git a/die.c b/kern/die.c similarity index 100% rename from die.c rename to kern/die.c diff --git a/memmap.c b/kern/e820.c similarity index 99% rename from memmap.c rename to kern/e820.c index d82c589..5a78599 100644 --- a/memmap.c +++ b/kern/e820.c @@ -28,7 +28,7 @@ #include #include #include "ntloader.h" -#include "memmap.h" +#include "e820.h" /** Buffer for INT 15,e820 calls */ static struct e820_entry e820_buf __attribute__ ((section (".bss16"))); diff --git a/efi.c b/kern/efi.c similarity index 100% rename from efi.c rename to kern/efi.c diff --git a/efiblock.c b/kern/efiblock.c similarity index 100% rename from efiblock.c rename to kern/efiblock.c diff --git a/efiboot.c b/kern/efiboot.c similarity index 100% rename from efiboot.c rename to kern/efiboot.c diff --git a/efifile.c b/kern/efifile.c similarity index 100% rename from efifile.c rename to kern/efifile.c diff --git a/efimain.c b/kern/efimain.c similarity index 100% rename from efimain.c rename to kern/efimain.c diff --git a/int13.c b/kern/int13.c similarity index 100% rename from int13.c rename to kern/int13.c diff --git a/main.c b/kern/main.c similarity index 99% rename from main.c rename to kern/main.c index aaa3538..9db3e40 100644 --- a/main.c +++ b/kern/main.c @@ -29,7 +29,7 @@ #include "payload.h" #include "cmdline.h" #include "paging.h" -#include "memmap.h" +#include "e820.h" #include "biosdisk.h" /** Start of our image (defined by linker) */ diff --git a/paging.c b/kern/paging.c similarity index 99% rename from paging.c rename to kern/paging.c index 199c2a2..0bbaadf 100644 --- a/paging.c +++ b/kern/paging.c @@ -29,7 +29,7 @@ #include #include #include "ntloader.h" -#include "memmap.h" +#include "e820.h" #include "paging.h" #if defined(__i386__) || defined(__x86_64__) diff --git a/payload.c b/kern/payload.c similarity index 100% rename from payload.c rename to kern/payload.c diff --git a/startup.S b/kern/startup.S similarity index 100% rename from startup.S rename to kern/startup.S diff --git a/bcd.c b/libnt/bcd.c similarity index 100% rename from bcd.c rename to libnt/bcd.c diff --git a/libnt/build.mk b/libnt/build.mk new file mode 100644 index 0000000..f7373f0 --- /dev/null +++ b/libnt/build.mk @@ -0,0 +1,17 @@ +# Objects +OBJ_LIBNT := libnt/bcd.o +OBJ_LIBNT += libnt/charset.o +OBJ_LIBNT += libnt/cpio.o +OBJ_LIBNT += libnt/peloader.o +OBJ_LIBNT += libnt/reg.o +OBJ_LIBNT += libnt/vdisk.o + +OBJECTS += $(OBJ_LIBNT) + +OBJECTS_i386 += $(patsubst %.o,%.i386.o,$(OBJ_LIBNT)) +OBJECTS_x86_64 += $(patsubst %.o,%.x86_64.o,$(OBJ_LIBNT)) +OBJECTS_i386_x86_64 += $(patsubst %.o,%.i386.x86_64.o,$(OBJ_LIBNT)) +OBJECTS_arm64 += $(patsubst %.o,%.arm64.o,$(OBJ_LIBNT)) + +RM_FILES += libnt/*.s libnt/*.o + diff --git a/charset.c b/libnt/charset.c similarity index 100% rename from charset.c rename to libnt/charset.c diff --git a/cpio.c b/libnt/cpio.c similarity index 100% rename from cpio.c rename to libnt/cpio.c diff --git a/peloader.c b/libnt/peloader.c similarity index 100% rename from peloader.c rename to libnt/peloader.c diff --git a/reg.c b/libnt/reg.c similarity index 100% rename from reg.c rename to libnt/reg.c diff --git a/vdisk.c b/libnt/vdisk.c similarity index 100% rename from vdisk.c rename to libnt/vdisk.c diff --git a/posix/build.mk b/posix/build.mk new file mode 100644 index 0000000..610a4b8 --- /dev/null +++ b/posix/build.mk @@ -0,0 +1,13 @@ +# Objects +OBJ_POSIX := posix/stdio.o +OBJ_POSIX += posix/string.o +OBJ_POSIX += posix/vsprintf.o + +OBJECTS += $(OBJ_POSIX) + +OBJECTS_i386 += $(patsubst %.o,%.i386.o,$(OBJ_POSIX)) +OBJECTS_x86_64 += $(patsubst %.o,%.x86_64.o,$(OBJ_POSIX)) +OBJECTS_i386_x86_64 += $(patsubst %.o,%.i386.x86_64.o,$(OBJ_POSIX)) +OBJECTS_arm64 += $(patsubst %.o,%.arm64.o,$(OBJ_POSIX)) + +RM_FILES += posix/*.s posix/*.o diff --git a/stdio.c b/posix/stdio.c similarity index 100% rename from stdio.c rename to posix/stdio.c diff --git a/string.c b/posix/string.c similarity index 100% rename from string.c rename to posix/string.c diff --git a/vsprintf.c b/posix/vsprintf.c similarity index 100% rename from vsprintf.c rename to posix/vsprintf.c