diff --git a/Kernel/.clangd b/Kernel/.clangd new file mode 100644 index 0000000..9992ca2 --- /dev/null +++ b/Kernel/.clangd @@ -0,0 +1,2 @@ +CompileFlags: + CompilationDatabase: ../.build/temp/Kernel diff --git a/Kernel/CMakeLists.txt b/Kernel/CMakeLists.txt index d25b339..6c42a05 100644 --- a/Kernel/CMakeLists.txt +++ b/Kernel/CMakeLists.txt @@ -1,5 +1,6 @@ cmake_minimum_required(VERSION 3.20) project(ksOSKernel LANGUAGES ASM C) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) file(GLOB_RECURSE KERNEL_SOURCES CMAKE_CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/Source/KernelMain.c diff --git a/Kernel/Include/types.h b/Kernel/Include/types.h new file mode 100644 index 0000000..3c0ad3e --- /dev/null +++ b/Kernel/Include/types.h @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +// Copyright (c) 2026 0xKarinyash + +#pragma once + +typedef unsigned char UInt8; +typedef unsigned short UInt16; +typedef unsigned int UInt32; +typedef unsigned long long UInt64; + +typedef signed char Int8; +typedef signed short Int16; +typedef signed int Int32; +typedef signed long long Int64; + +typedef UInt64 Size; + + diff --git a/Kernel/Source/KernelMain.c b/Kernel/Source/KernelMain.c index 7e4f917..22c22be 100644 --- a/Kernel/Source/KernelMain.c +++ b/Kernel/Source/KernelMain.c @@ -1,3 +1,5 @@ +#include "types.h" + void KernelMain(void) { - + volatile UInt64 meow = 0x12345; } \ No newline at end of file diff --git a/Kernel/cmake/aarch64-bare.cmake b/Kernel/cmake/aarch64-bare.cmake index 4974c8d..461e28a 100644 --- a/Kernel/cmake/aarch64-bare.cmake +++ b/Kernel/cmake/aarch64-bare.cmake @@ -3,25 +3,35 @@ set(CMAKE_SYSTEM_PROCESSOR aarch64) set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) if(NOT LLVM_BIN) - if(APPLE) + find_program(_CLANG + NAMES clang + HINTS + /opt/homebrew/opt/llvm/bin + /usr/local/opt/llvm/bin + ) + + if(NOT _CLANG AND APPLE) execute_process( COMMAND brew --prefix llvm OUTPUT_VARIABLE LLVM_PREFIX OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET + RESULT_VARIABLE BREW_PREFIX_RESULT ) - set(LLVM_BIN "${LLVM_PREFIX}/bin") - else() - find_program(_CLANG clang) - if(NOT _CLANG) - message(FATAL_ERROR "clang not found.") + if(BREW_PREFIX_RESULT EQUAL 0 AND EXISTS "${LLVM_PREFIX}/bin/clang") + set(_CLANG "${LLVM_PREFIX}/bin/clang") endif() - get_filename_component(LLVM_BIN "${_CLANG}" DIRECTORY) endif() + + if(NOT _CLANG) + message(FATAL_ERROR "clang not found. Set LLVM_BIN or add clang to PATH.") + endif() + + get_filename_component(LLVM_BIN "${_CLANG}" DIRECTORY) 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}) @@ -29,10 +39,17 @@ set(CMAKE_ASM_COMPILER_TARGET ${TARGET_TRIPLE}) if(APPLE) find_program(TERMOS_LD_LLD NAMES ld.lld HINTS /usr/local/bin /opt/homebrew/bin REQUIRED) - find_program(LLVM_OBJCOPY NAMES llvm-objcopy objcopy - HINTS /usr/local/opt/llvm/bin /opt/homebrew/opt/llvm/bin /usr/local/bin /opt/homebrew/bin - REQUIRED) set(CMAKE_C_LINK_FLAGS "") set(CMAKE_C_LINK_EXECUTABLE "${TERMOS_LD_LLD} -o ") endif() + +find_program(LLVM_OBJCOPY NAMES llvm-objcopy objcopy + HINTS + "${LLVM_BIN}" + /usr/local/opt/llvm/bin + /opt/homebrew/opt/llvm/bin + /usr/local/bin + /opt/homebrew/bin + REQUIRED +) diff --git a/Kernel/justfile b/Kernel/justfile index 2d9764b..d621268 100644 --- a/Kernel/justfile +++ b/Kernel/justfile @@ -6,7 +6,7 @@ build: cmake --build {{TEMP_DIR}}/Kernel - cp {{TEMP_DIR}}/Kernel/kernel.bin {{BUILD_DIR}}/Kernel/ksOSKernel.bin + cp {{TEMP_DIR}}/Kernel/Kernel.bin {{BUILD_DIR}}/Kernel/ksOSKernel.bin @echo "✅ Kernel ready at: {{BUILD_DIR}}/Kernel/ksOSKernel.bin" clean: