aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--.vscode/launch.json17
-rw-r--r--.vscode/tasks.json7
-rw-r--r--conanfile.py5
-rw-r--r--source/arch/x86_64/CMakeLists.txt6
5 files changed, 25 insertions, 11 deletions
diff --git a/.gitignore b/.gitignore
index f3818c5..f8af93d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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()