Use libclayer

This commit is contained in:
Alex Kotov 2022-12-27 15:08:33 +04:00
parent aa22bab79f
commit 4943183cb1
Signed by: kotovalexarian
GPG Key ID: 553C0EBBEB5D5F08
6 changed files with 37 additions and 13 deletions

3
.gitmodules vendored
View File

@ -7,3 +7,6 @@
[submodule "vendor/drivers"]
path = vendor/drivers
url = https://github.com/tailix/drivers.git
[submodule "vendor/libclayer"]
path = vendor/libclayer
url = https://github.com/tailix/libclayer.git

View File

@ -35,6 +35,7 @@ ROOTFS_DIR = rootfs
SRC_DIR = src
# Basic paths (dependencies)
LIBCLAYER_DIR = vendor/libclayer
LIBKERNAUX_DIR = vendor/libkernaux
DRIVERS_DIR = vendor/drivers
MRUBY_DIR = vendor/mruby
@ -42,12 +43,22 @@ MRUBY_DIR = vendor/mruby
# Deeper paths
INCLUDE_DIR = $(DEST_DIR)/include
LIB_DIR = $(DEST_DIR)/lib
LIBCLAYER = $(LIB_DIR)/libc.a
LIBDRIVERS = $(LIB_DIR)/libdrivers.a
LIBKERNAUX = $(LIB_DIR)/libkernaux.a
LIBMRUBY = $(LIB_DIR)/libmruby.a
GRUBCFG = $(ROOTFS_DIR)/boot/grub/grub.cfg
MRUBYVISOR = $(ROOTFS_DIR)/boot/mrubyvisor.multiboot2
#############
# libclayer #
#############
LIBCLAYER_ARGS = \
--enable-libc \
--disable-libclayer \
--enable-freestanding
##############
# libkernaux #
##############
@ -57,7 +68,7 @@ LIBKERNAUX_ARGS = \
--enable-split-libc \
--enable-debug \
--disable-float \
--with-libc
CFLAGS='-I$(ABS_REPO)/$(INCLUDE_DIR)'
###########
# drivers #
@ -93,7 +104,7 @@ runc: $(IMAGE)
runw: $(IMAGE)
$(QEMU) -cdrom $< -serial stdio
clean: clean-src clean-dest clean-mruby clean-libkernaux
clean: clean-src clean-dest clean-mruby clean-libkernaux clean-libclayer
clean-src:
$(MAKE) -C $(SRC_DIR) clean
@ -110,6 +121,9 @@ clean-drivers:
clean-libkernaux:
$(MAKE) -C $(LIBKERNAUX_DIR) distclean || true
clean-libclayer:
$(MAKE) -C $(LIBCLAYER_DIR) distclean || true
##############
# File tasks #
##############
@ -117,11 +131,17 @@ clean-libkernaux:
$(IMAGE): $(GRUBCFG) $(MRUBYVISOR)
$(GRUB_MKRESCUE) $(ROOTFS_DIR) -o $@
$(MRUBYVISOR): $(LIBKERNAUX) $(LIBDRIVERS) $(LIBMRUBY)
$(MRUBYVISOR): $(LIBCLAYER) $(LIBKERNAUX) $(LIBDRIVERS) $(LIBMRUBY)
$(MAKE) -C $(SRC_DIR) mrubyvisor.multiboot2 CCPREFIX='$(CCPREFIX)' DEST='$(ABS_REPO)/$(DEST_DIR)' MRUBY_FLAGS='$(MRUBY_FLAGS)'
$(CP) $(SRC_DIR)/mrubyvisor.multiboot2 $@
$(LIBKERNAUX):
$(LIBCLAYER):
cd $(LIBCLAYER_DIR) && ./autogen.sh
cd $(LIBCLAYER_DIR) && ./configure --host='i386-elf' --prefix='$(ABS_REPO)/$(DEST_DIR)' $(LIBCLAYER_ARGS) AR='$(AR)' AS='$(AS)' CC='$(CC)' LD='$(LD)' RANLIB='$(RANLIB)'
cd $(LIBCLAYER_DIR) && $(MAKE)
cd $(LIBCLAYER_DIR) && $(MAKE) install
$(LIBKERNAUX): $(LIBCLAYER)
cd $(LIBKERNAUX_DIR) && ./autogen.sh
cd $(LIBKERNAUX_DIR) && ./configure --host='i386-elf' --prefix='$(ABS_REPO)/$(DEST_DIR)' $(LIBKERNAUX_ARGS) AR='$(AR)' AS='$(AS)' CC='$(CC)' LD='$(LD)' RANLIB='$(RANLIB)'
cd $(LIBKERNAUX_DIR) && $(MAKE)

View File

@ -6,7 +6,7 @@
#include <drivers/shutdown.h>
#include <kernaux/generic/malloc.h>
#include <kernaux/free_list.h>
#include <kernaux/libc.h>
#include <libclayer.h>
static struct KernAux_FreeList allocator;
static uint8_t memory[1024 * 128]; // 128 KiB
@ -26,13 +26,13 @@ void libc_init()
KernAux_FreeList_init(&allocator, NULL);
KernAux_FreeList_add_zone(&allocator, memory, sizeof(memory));
kernaux_libc.abort = my_abort;
kernaux_libc.exit = my_exit;
libclayer.abort = my_abort;
libclayer.exit = my_exit;
kernaux_libc.calloc = my_calloc;
kernaux_libc.free = my_free;
kernaux_libc.malloc = my_malloc;
kernaux_libc.realloc = my_realloc;
libclayer.calloc = my_calloc;
libclayer.free = my_free;
libclayer.malloc = my_malloc;
libclayer.realloc = my_realloc;
}
void my_abort()

2
vendor/drivers vendored

@ -1 +1 @@
Subproject commit aad813390ed6062f65ee89be47c214481e3ae5bd
Subproject commit 38241b9fd261d069a5277cf959c3cf574f34e7cd

1
vendor/libclayer vendored Submodule

@ -0,0 +1 @@
Subproject commit 881f6ecb5b5c74fc2823b860fd6b186452af5406

2
vendor/libkernaux vendored

@ -1 +1 @@
Subproject commit b812b52a9cbc4730c0719be288f0826583f69461
Subproject commit 5ac4de42038a90bc22f9d7799acdfe6420ec6b07