@@ -4,12 +4,15 @@ LIMINE_DIR := limine
44LIMINE_BIN := $(LIMINE_DIR ) /limine
55LIMINE_CFG := misc/boot/limine.conf
66
7- LIBC_DIR := libc
7+ KLIB_DIR := klib
88DRIVERS_DIR := drivers
9+ ZYDIS_DIR := zydis
910
1011INCLUDES := -I$(shell realpath $(LIMINE_DIR ) ) \
11- -I$(LIBC_DIR ) /src/include \
12+ -I$(KLIB_DIR ) /src/include \
1213 -I$(DRIVERS_DIR ) /src/include \
14+ -I$(ZYDIS_DIR ) /include \
15+ -I$(ZYDIS_DIR ) /dependencies/zycore/include \
1316 -Isrc/include
1417
1518KERNEL_SRC := src/kernel
@@ -18,8 +21,9 @@ KERNEL_BIN := build/kernel.bin
1821
1922OBJ_DIR := build/obj
2023
21- LIBC_LIB := $(LIBC_DIR ) /build/libc .a
24+ KLIB_LIB := $(KLIB_DIR ) /build/klib .a
2225DRIVERS_LIB := $(DRIVERS_DIR ) /build/drivers.a
26+ ZYDIS_LIB := $(ZYDIS_DIR ) /build/libZydis.a
2327
2428ISO_FILE := build/slayer_$(VERSION ) .iso
2529ISO_DIR := build/iso
@@ -28,11 +32,11 @@ ISO_DIR := build/iso
2832include misc/make/base.mk
2933override CFLAGS += -DSLAY_VERSION=\"$(VERSION ) \"
3034
31- KERN_SOURCES := $(shell find $(KERNEL_SRC ) -name '* .cxx ' -or -name '* .s')
32- KERN_OBJECTS := $(patsubst $(KERNEL_SRC ) /% .cxx , $(OBJ_DIR ) /% .o, $(patsubst $(KERNEL_SRC ) /% .s, $(OBJ_DIR ) /% .o, $(KERN_SOURCES ) ) )
35+ KERN_SOURCES := $(shell find $(KERNEL_SRC ) -name '* .cc ' -or -name '* .s')
36+ KERN_OBJECTS := $(patsubst $(KERNEL_SRC ) /% .cc , $(OBJ_DIR ) /% .o, $(patsubst $(KERNEL_SRC ) /% .s, $(OBJ_DIR ) /% .o, $(KERN_SOURCES ) ) )
3337
3438LIMINE_MAKEFILE := $(LIMINE_DIR ) /Makefile
35- LIBC_MAKEFILE := $(LIBC_DIR ) /Makefile
39+ KLIB_MAKEFILE := $(KLIB_DIR ) /Makefile
3640DRIVERS_MAKEFILE := $(DRIVERS_DIR ) /Makefile
3741
3842
@@ -41,39 +45,45 @@ all: $(ISO_FILE)
4145$(LIMINE_MAKEFILE ) :
4246 git submodule update --init --recursive
4347
44- $(LIBC_MAKEFILE ) :
48+ $(KLIB_MAKEFILE ) :
4549 git submodule update --init --recursive
4650
4751$(DRIVERS_MAKEFILE ) :
4852 git submodule update --init --recursive
4953
50- # LIBC
54+ # KLIB
5155
52- $(LIBC_LIB ) : $(LIBC_MAKEFILE )
53- $(MAKE ) -C $(LIBC_DIR )
56+ $(KLIB_LIB ) : $(KLIB_MAKEFILE )
57+ $(MAKE ) -C $(KLIB_DIR )
5458
5559# Drivers
5660
5761$(DRIVERS_LIB ) : $(DRIVERS_MAKEFILE )
5862 $(MAKE ) -C $(DRIVERS_DIR )
5963
64+ # Zydis
65+
66+ $(ZYDIS_LIB ) :
67+ cmake -B $(ZYDIS_DIR ) /build -S $(ZYDIS_DIR ) -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS=" -fno-stack-protector"
68+ cmake --build $(ZYDIS_DIR ) /build -j$(nproc ) --target Zydis
69+
6070# Limine
6171
6272$(LIMINE_BIN ) : $(LIMINE_MAKEFILE )
6373 $(MAKE ) -C $(LIMINE_DIR )
6474
6575# Kernel
6676
67- $(OBJ_DIR ) /% .o : $(KERNEL_SRC ) /% .cxx
77+ $(OBJ_DIR ) /% .o : $(KERNEL_SRC ) /% .cc
6878 @mkdir -p $(@D )
69- $(CXX ) $(CFLAGS ) $(INCLUDES ) -c $< -o $@
79+ $(CC ) $(CFLAGS ) $(INCLUDES ) -c $< -o $@
7080
7181$(OBJ_DIR ) /% .o : $(KERNEL_SRC ) /% .s
7282 @mkdir -p $(@D )
73- $(CXX ) $(CFLAGS ) -c $< -o $@
83+ $(CC ) $(CFLAGS ) -c $< -o $@
7484
75- $(KERNEL_BIN ) : $(LIBC_LIB ) $(DRIVERS_LIB ) $(KERN_OBJECTS )
76- $(LD ) $(KERN_LDFLAGS ) -o $(KERNEL_BIN ) $(KERN_OBJECTS ) $(DRIVERS_LIB ) $(LIBC_LIB )
85+ $(KERNEL_BIN ) : $(ZYDIS_LIB ) $( KLIB_LIB ) $(DRIVERS_LIB ) $(KERN_OBJECTS )
86+ $(LD ) $(KERN_LDFLAGS ) -o $(KERNEL_BIN ) $(KERN_OBJECTS ) $(DRIVERS_LIB ) $(KLIB_LIB ) $( ZYDIS_LIB )
7787
7888
7989$(ISO_FILE ) : $(LIMINE_BIN ) $(KERNEL_BIN )
@@ -112,7 +122,8 @@ remote:
112122
113123clean :
114124 rm -rf build
115- $(MAKE ) -C $(LIBC_DIR ) clean
125+ $(MAKE ) -C $(KLIB_DIR ) clean
116126 $(MAKE ) -C $(DRIVERS_DIR ) clean
127+ rm -r $(ZYDIS_DIR ) /build
117128
118- .PHONY : all clean run runint $(LIBC_LIB ) $(DRIVERS_LIB )
129+ .PHONY : all clean run runint $(KLIB_LIB ) $(DRIVERS_LIB )
0 commit comments