diff options
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | .vscode/launch.json | 17 | ||||
| -rw-r--r-- | .vscode/tasks.json | 7 | ||||
| -rw-r--r-- | conanfile.py | 5 | ||||
| -rw-r--r-- | source/arch/x86_64/CMakeLists.txt | 6 |
5 files changed, 25 insertions, 11 deletions
@@ -1,5 +1,6 @@ /.venv /build +/.conan/install # Conan Generated CMake presets CMakeUserPresets.json diff --git a/.vscode/launch.json b/.vscode/launch.json index b9d0a1e..cba84f4 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -5,7 +5,7 @@ "name": "(gdb) QEMU", "type": "cppdbg", "request": "launch", - "program": "${workspaceFolder}/build/Debug/bin/_kernel", + "program": "${workspaceFolder}/build/bin/${input:build_type}/_kernel", "MIMode": "gdb", "miDebuggerServerAddress": "localhost:1234", "cwd": "${workspaceFolder}", @@ -18,7 +18,7 @@ }, { "description": "Load file", - "text": "-file-exec-and-symbols ${workspaceFolder}/build/Debug/bin/_kernel" + "text": "-file-exec-and-symbols ${workspaceFolder}/build/bin/${input:build_type}/_kernel" }, { "description": "Set breakpoint on _start", @@ -26,5 +26,18 @@ } ] } + ], + "inputs": [ + { + "id": "build_type", + "type": "pickString", + "default": "Debug", + "description": "The build type to boot", + "options": [ + "Debug", + "Release", + "RelWithDebInfo" + ] + } ] }
\ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 74cbc54..29529a3 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -11,7 +11,7 @@ "-m", "32M", "-cdrom", - "${workspaceFolder}/build/${input:build_type}/teachos.iso" + "${workspaceFolder}/build/teachos-${input:build_type}.iso" ], "isBackground": true, "presentation": { @@ -28,7 +28,7 @@ "-m", "32M", "-cdrom", - "${workspaceFolder}/build/${input:build_type}/teachos.iso" + "${workspaceFolder}/build/teachos-${input:build_type}.iso" ], "presentation": { "reveal": "always" @@ -45,7 +45,8 @@ "description": "The build type to boot", "options": [ "Debug", - "Release" + "Release", + "RelWithDebInfo" ] } ] diff --git a/conanfile.py b/conanfile.py index 84d6e77..b2ff441 100644 --- a/conanfile.py +++ b/conanfile.py @@ -19,6 +19,7 @@ class KernelConan(ConanFile): tool_requires = [ "cmake/[~3.27]", "gcc/13.2.0@teachos/stable", + "ninja/[~1.11]", ] def build(self): @@ -36,7 +37,7 @@ class KernelConan(ConanFile): dependencies = CMakeDeps(self) dependencies.generate() - toolchain = CMakeToolchain(self) + toolchain = CMakeToolchain(self, generator="Ninja Multi-Config") toolchain.cache_variables["CMAKE_TRY_COMPILE_TARGET_TYPE"] = "STATIC_LIBRARY" toolchain.variables["TEACHOS_DESCRIPTION"] = self.description toolchain.variables["TEACHOS_HOMEPAGE_URL"] = self.homepage @@ -50,7 +51,7 @@ class KernelConan(ConanFile): toolchain.generate() def layout(self): - cmake_layout(self, src_folder="source") + cmake_layout(self, src_folder="source", generator="Ninja Multi-Config") class PlatformIncludeBlock: diff --git a/source/arch/x86_64/CMakeLists.txt b/source/arch/x86_64/CMakeLists.txt index f917cd0..6ff1332 100644 --- a/source/arch/x86_64/CMakeLists.txt +++ b/source/arch/x86_64/CMakeLists.txt @@ -43,8 +43,6 @@ target_sources("_video" PRIVATE find_package("grub-mkrescue") if(grub-mkrescue_FOUND) - set(ISO_FILE "${PROJECT_BINARY_DIR}/teachos.iso") - file(GENERATE OUTPUT "isofs/boot/grub/grub.cfg" INPUT "support/grub.cfg.in" @@ -53,14 +51,14 @@ if(grub-mkrescue_FOUND) add_custom_target("bootable-iso" COMMAND "${GRUB_MKRESCUE_EXE}" "-o" - "${ISO_FILE}" + "${PROJECT_BINARY_DIR}/teachos-$<CONFIGURATION>.iso" "${CMAKE_CURRENT_BINARY_DIR}/isofs" "$<TARGET_FILE:teachos::kernel>" "2>/dev/null" DEPENDS "$<TARGET_FILE:teachos::kernel>" "isofs/boot/grub/grub.cfg" - BYPRODUCTS "${ISO_FILE}" + BYPRODUCTS "${PROJECT_BINARY_DIR}/teachos-$<CONFIGURATION>.iso" COMMENT "Creating bootable ISO image" ) endif() |
