build: CMake toolchain for Kernel

build: moved CMake toolchain for Bootloader from Source folder to root of Bootloader
This commit is contained in:
karina
2026-04-20 09:38:27 +04:00
parent 1885f1ac8d
commit b33f63635b
6 changed files with 65 additions and 22 deletions
+1 -1
View File
@@ -2,7 +2,7 @@ BUILD_DIR := env_var_or_default("BUILD_DIR", justfile_directory() + "/.build")
TEMP_DIR := env_var_or_default("TEMP_DIR", BUILD_DIR + "/temp")
build:
cmake -B {{TEMP_DIR}}/Bootloader -S . \
-DCMAKE_TOOLCHAIN_FILE=Source/cmake/aarch64-uefi.cmake \
-DCMAKE_TOOLCHAIN_FILE=cmake/aarch64-uefi.cmake \
-DCMAKE_BUILD_TYPE=Release
cmake --build {{TEMP_DIR}}/Bootloader
+2 -14
View File
@@ -1,21 +1,10 @@
cmake_minimum_required(VERSION 3.10)
project(MyShittyKernel LANGUAGES ASM C)
project(ksOSKernel LANGUAGES ASM C)
if(NOT LLVM_BIN)
execute_process(COMMAND brew --prefix llvm OUTPUT_VARIABLE LLVM_PREFIX OUTPUT_STRIP_TRAILING_WHITESPACE)
set(LLVM_BIN "${LLVM_PREFIX}/bin")
endif()
set(CMAKE_C_COMPILER "${LLVM_BIN}/clang")
set(CMAKE_ASM_COMPILER "${LLVM_BIN}/clang")
set(LLVM_OBJCOPY "${LLVM_BIN}/llvm-objcopy")
set(TARGET_TRIPLE aarch64-none-elf)
add_compile_options(--target=${TARGET_TRIPLE} -ffreestanding -nostdlib -O0 -g)
add_compile_options(-ffreestanding -nostdlib -O0 -g)
set(LINKER_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/linker.ld)
add_link_options(
--target=${TARGET_TRIPLE}
-fuse-ld=lld
-nostdlib
-static
@@ -23,7 +12,6 @@ add_link_options(
)
add_executable(kernel.elf Source/entry.S)
add_custom_command(TARGET kernel.elf POST_BUILD
COMMAND ${LLVM_OBJCOPY} -O binary kernel.elf kernel.bin
COMMENT "kernel.elf -> kernel.bin"
+44 -6
View File
@@ -2,20 +2,58 @@
.global _start
_start:
add x1, x0, #64 // x1 = BIFramebuffer
ldr x2, [x1] // x2 = base
ldr x3, [x1, #16] // x3 = width
ldr x4, [x1, #24] // x4 = height
add x1, x0, #64
ldr x2, [x1] // base
ldr x3, [x1, #16] // width
ldr x4, [x1, #24] // height
mul x5, x3, x4
mov x7, #5
udiv x10, x5, x7 // stripe size
// 0x00RRGGBB
// lblue: 5B CE FA
mov w11, #0xCEFA
movk w11, #0x5B, lsl #16
mov w6, #0x00FF00
movk w6, #0x0000, lsl #16
// pink: F5 A7 B8
mov w12, #0xA7B8
movk w12, #0xF5, lsl #16
// white: FF FF FF
mov w13, #0xFFFF
movk w13, #0xFF, lsl #16
mov x14, #0 // pixels in curr stripe
mov x15, #0 // stripe index
fill_loop:
cbz x5, done
cmp x15, #0
b.eq set_blue
cmp x15, #1
b.eq set_pink
cmp x15, #2
b.eq set_white
cmp x15, #3
b.eq set_pink
b set_blue
set_blue: mov w6, w11; b draw
set_pink: mov w6, w12; b draw
set_white: mov w6, w13
draw:
str w6, [x2], #4
sub x5, x5, #1
add x14, x14, #1
cmp x14, x10
b.lt fill_loop
mov x14, #0
add x15, x15, #1
b fill_loop
done:
+16
View File
@@ -0,0 +1,16 @@
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_PROCESSOR aarch64)
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
if(NOT LLVM_BIN)
execute_process(COMMAND brew --prefix llvm OUTPUT_VARIABLE LLVM_PREFIX OUTPUT_STRIP_TRAILING_WHITESPACE)
set(LLVM_BIN "${LLVM_PREFIX}/bin")
endif()
set(CMAKE_C_COMPILER "${LLVM_BIN}/clang")
set(CMAKE_ASM_COMPILER "${LLVM_BIN}/clang")
set(LLVM_OBJCOPY "${LLVM_BIN}/llvm-objcopy")
set(TARGET_TRIPLE aarch64-none-elf)
set(CMAKE_C_COMPILER_TARGET ${TARGET_TRIPLE})
set(CMAKE_ASM_COMPILER_TARGET ${TARGET_TRIPLE})
+2 -1
View File
@@ -1,7 +1,8 @@
BUILD_DIR := env_var_or_default("BUILD_DIR", justfile_directory() + "/.build")
TEMP_DIR := env_var_or_default("TEMP_DIR", BUILD_DIR + "/temp")
build:
cmake -B {{TEMP_DIR}}/Kernel -S .
cmake -B {{TEMP_DIR}}/Kernel -S . \
-DCMAKE_TOOLCHAIN_FILE=cmake/aarch64-bare.cmake
cmake --build {{TEMP_DIR}}/Kernel