aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraqua <aqua@iserlohn-fortress.net>2022-10-29 11:26:44 +0300
committeraqua <aqua@iserlohn-fortress.net>2022-10-29 11:26:44 +0300
commitc4fcc92183c55db868d0d6ae53e6009fb2e53ee5 (patch)
treead5ef50aa07465e11f779c4482e20e6071182e9c
parentmakefile: add libk target (diff)
downloadkernel-c4fcc92183c55db868d0d6ae53e6009fb2e53ee5.tar.xz
makefile: add i686/arch.a target
-rw-r--r--Makefile26
-rw-r--r--i686/Makefile17
-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.mk2
-rw-r--r--lib/Makefile13
-rw-r--r--lib/targets.mk6
-rw-r--r--rules.mk13
22 files changed, 60 insertions, 23 deletions
diff --git a/Makefile b/Makefile
index d7caeea..ebc8d64 100644
--- a/Makefile
+++ b/Makefile
@@ -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 $@ $^
+