diff options
-rw-r--r-- | Makefile | 26 | ||||
-rw-r--r-- | i686/Makefile | 17 | ||||
-rw-r--r-- | i686/boot.S (renamed from arch/i686/boot.S) | 0 | ||||
-rw-r--r-- | i686/gdt.c (renamed from arch/i686/gdt.c) | 2 | ||||
-rw-r--r-- | i686/gdt.h (renamed from arch/i686/include/gdt.h) | 0 | ||||
-rw-r--r-- | i686/idt.h (renamed from arch/i686/include/idt.h) | 0 | ||||
-rw-r--r-- | i686/init.s (renamed from arch/i686/init.s) | 0 | ||||
-rw-r--r-- | i686/lgdt.c (renamed from arch/i686/lgdt.c) | 2 | ||||
-rw-r--r-- | i686/lidt.c (renamed from arch/i686/lidt.c) | 2 | ||||
-rw-r--r-- | i686/linker.ld (renamed from arch/i686/linker.ld) | 0 | ||||
-rw-r--r-- | i686/macros.s (renamed from arch/i686/macros.s) | 0 | ||||
-rw-r--r-- | i686/meson.build (renamed from arch/i686/meson.build) | 0 | ||||
-rw-r--r-- | i686/paging.h (renamed from arch/i686/include/paging.h) | 0 | ||||
-rw-r--r-- | i686/sys/control.h (renamed from arch/i686/include/sys/control.h) | 0 | ||||
-rw-r--r-- | i686/sys/cpuid.h (renamed from arch/i686/include/sys/cpuid.h) | 0 | ||||
-rw-r--r-- | i686/sys/io.h (renamed from arch/i686/include/sys/io.h) | 0 | ||||
-rw-r--r-- | i686/test/gdt.c (renamed from arch/i686/test/gdt.c) | 0 | ||||
-rw-r--r-- | i686/toolchain.ini (renamed from arch/i686/toolchain.ini) | 0 | ||||
-rw-r--r-- | i686/toolchain.mk | 2 | ||||
-rw-r--r-- | lib/Makefile | 13 | ||||
-rw-r--r-- | lib/targets.mk | 6 | ||||
-rw-r--r-- | rules.mk | 13 |
22 files changed, 60 insertions, 23 deletions
@@ -1,14 +1,10 @@ MAKE = make -TARGET = i686 -include ${TARGET}/toolchain.mk - -CCFLAGS += -Ilib -I. - -all: libk.a +ARCH = i686 +include ${ARCH}/toolchain.mk info: @echo "this is the all target" - @echo "TARGET ${TARGET}" + @echo "ARCH ${ARCH}" @echo "BUILD ${BUILD}" @echo " MAKE ${MAKE}" @${MAKE} --version | head -n1 @@ -17,12 +13,14 @@ info: @echo " LD ${LD} ${LDFLAGS}" @${LD} --version | head -n1 -clean: - @rm -rf ${libk,OBJS} +all: lib/libk.a ${ARCH}/arch.a -.SUFFIXES: .c .o -.c.o: - @echo ' CC $^' - @$(CC) $(CCFLAGS) -c -o $@ $^ +lib/libk.a: + ${MAKE} ARCH=${ARCH} -C lib libk.a +i686/arch.a: + ${MAKE} ARCH=${ARCH} -C i686 arch.a + +clean: + ${MAKE} ARCH=${ARCH} -C lib clean + ${MAKE} ARCH=${ARCH} -C ${ARCH} clean -include lib/targets.mk diff --git a/i686/Makefile b/i686/Makefile new file mode 100644 index 0000000..52295a8 --- /dev/null +++ b/i686/Makefile @@ -0,0 +1,17 @@ +include ../${ARCH}/toolchain.mk +include ../rules.mk + +CCFLAGS += -I../grub/include + +all: arch.a + +arch,SRCS = boot.S init.s \ + gdt.c lgdt.c \ + lidt.c +arch,OBJS = $(filter %.o,$(arch,SRCS:%.S=%.o) $(arch,SRCS:%.s=%.o) $(arch,SRCS:%.c=%.o)) +arch.a: ${arch,OBJS} + @echo ' AR $@' + @${AR} ${ARFLAGS} $@ $^ + +clean: + @rm -rf ${arch,OBJS} diff --git a/arch/i686/boot.S b/i686/boot.S index 1eea9a3..1eea9a3 100644 --- a/arch/i686/boot.S +++ b/i686/boot.S diff --git a/arch/i686/gdt.c b/i686/gdt.c index fe0bfc9..c0898f3 100644 --- a/arch/i686/gdt.c +++ b/i686/gdt.c @@ -1,4 +1,4 @@ -#include <gdt.h> +#include "gdt.h" void SegmentDescriptor(struct SegmentDescriptor_t *self, unsigned base, unsigned limit, uint8_t access) diff --git a/arch/i686/include/gdt.h b/i686/gdt.h index 9148c3d..9148c3d 100644 --- a/arch/i686/include/gdt.h +++ b/i686/gdt.h diff --git a/arch/i686/include/idt.h b/i686/idt.h index 22dc6de..22dc6de 100644 --- a/arch/i686/include/idt.h +++ b/i686/idt.h diff --git a/arch/i686/init.s b/i686/init.s index 92710df..92710df 100644 --- a/arch/i686/init.s +++ b/i686/init.s diff --git a/arch/i686/lgdt.c b/i686/lgdt.c index 2be5d30..10781db 100644 --- a/arch/i686/lgdt.c +++ b/i686/lgdt.c @@ -1,4 +1,4 @@ -#include <gdt.h> +#include "gdt.h" struct __attribute__((packed)) Pointer { uint16_t limit; diff --git a/arch/i686/lidt.c b/i686/lidt.c index efbade3..3e261ac 100644 --- a/arch/i686/lidt.c +++ b/i686/lidt.c @@ -1,4 +1,4 @@ -#include <idt.h> +#include "idt.h" #include <stdint.h> struct __attribute__((packed)) Pointer { diff --git a/arch/i686/linker.ld b/i686/linker.ld index 61a3be9..61a3be9 100644 --- a/arch/i686/linker.ld +++ b/i686/linker.ld diff --git a/arch/i686/macros.s b/i686/macros.s index a9b8b4d..a9b8b4d 100644 --- a/arch/i686/macros.s +++ b/i686/macros.s diff --git a/arch/i686/meson.build b/i686/meson.build index f6bed8e..f6bed8e 100644 --- a/arch/i686/meson.build +++ b/i686/meson.build diff --git a/arch/i686/include/paging.h b/i686/paging.h index cff0506..cff0506 100644 --- a/arch/i686/include/paging.h +++ b/i686/paging.h diff --git a/arch/i686/include/sys/control.h b/i686/sys/control.h index a40a67f..a40a67f 100644 --- a/arch/i686/include/sys/control.h +++ b/i686/sys/control.h diff --git a/arch/i686/include/sys/cpuid.h b/i686/sys/cpuid.h index f2ffe37..f2ffe37 100644 --- a/arch/i686/include/sys/cpuid.h +++ b/i686/sys/cpuid.h diff --git a/arch/i686/include/sys/io.h b/i686/sys/io.h index 74d4950..74d4950 100644 --- a/arch/i686/include/sys/io.h +++ b/i686/sys/io.h diff --git a/arch/i686/test/gdt.c b/i686/test/gdt.c index 2947b42..2947b42 100644 --- a/arch/i686/test/gdt.c +++ b/i686/test/gdt.c diff --git a/arch/i686/toolchain.ini b/i686/toolchain.ini index 5114cfe..5114cfe 100644 --- a/arch/i686/toolchain.ini +++ b/i686/toolchain.ini diff --git a/i686/toolchain.mk b/i686/toolchain.mk index 884369c..c41c784 100644 --- a/i686/toolchain.mk +++ b/i686/toolchain.mk @@ -1,10 +1,12 @@ # define compiler, linker, archiver and strip and their flags # +AS = i686-elf-as CC = i686-elf-gcc CCFLAGS = -Wall -Wextra -Wpedantic -fanalyzer -ffreestanding LD = i686-elf-ld LDFLAGS = -nostdlib AR = i686-elf-ar +ARFLAGS = r STRIP = i686-elf-strip diff --git a/lib/Makefile b/lib/Makefile new file mode 100644 index 0000000..3a5fff9 --- /dev/null +++ b/lib/Makefile @@ -0,0 +1,13 @@ +include ../${ARCH}/toolchain.mk +include ../rules.mk + +CCFLAGS += -I. -I.. + +libk,SRCS = memcpy.c memset.c stdio/printf.c string/itoa.c +libk,OBJS = $(libk,SRCS:%.c=%.o) +libk.a: ${libk,OBJS} + @echo ' AR $@' + @${AR} ${ARFLAGS} $@ $^ + +clean: + @rm -rf ${libk,OBJS} diff --git a/lib/targets.mk b/lib/targets.mk deleted file mode 100644 index cbf9da8..0000000 --- a/lib/targets.mk +++ /dev/null @@ -1,6 +0,0 @@ -libk,SRCS = lib/memcpy.c lib/memset.c lib/stdio/printf.c lib/string/itoa.c -libk,OBJS = $(libk,SRCS:%.c=%.o) -libk.a: ${libk,OBJS} - @echo ' AR $@' - @${AR} ${ARFLAGS} $@ $^ - diff --git a/rules.mk b/rules.mk new file mode 100644 index 0000000..113794b --- /dev/null +++ b/rules.mk @@ -0,0 +1,13 @@ +.SUFFIXES: .s .S .c .o +.s.o: + @echo ' CC $^' + @$(AS) $(ASFLAGS) -c -o $@ $^ + +.S.o: + @echo ' CC $^' + @$(CC) $(CCFLAGS) -c -o $@ $^ + +.c.o: + @echo ' CC $^' + @$(CC) $(CCFLAGS) -c -o $@ $^ + |