diff --git a/CMakeLists.txt b/CMakeLists.txt index 2caaa88..b838478 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,10 +14,11 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 3.3) project(colonel C ASM) set(TARGET_NAME "colonel.bin") +set(TARGET_VERSION "0.1") if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "release") @@ -53,13 +54,14 @@ if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "i.86") "src/kernel/arch/x86/") endif() -add_executable(${TARGET_NAME} ${SRCS}) +# version pre-processor definition +add_compile_options($<$:-DVERSION="${TARGET_VERSION}">) -add_custom_target(build-iso - COMMAND mkdir -p isodir/boot/grub/ - COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/configs/grub.cfg isodir/boot/grub/ - COMMAND cp ${TARGET_NAME} isodir/boot/ - COMMAND grub-mkrescue -o colonel.iso isodir - DEPENDS ${TARGET_NAME} - COMMENT "Building ISO iamge..." - SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/configs/grub.cfg) +# allow debug info to be printed if necessary +if(${CMAKE_BUILD_TYPE} STREQUAL "debug") + add_compile_options($<$:-DDEBUG>) +else() + add_compile_options($<$:-DNDEBUG>) +endif() + +add_executable(${TARGET_NAME} ${SRCS}) diff --git a/README b/README index 21a4a34..f664cef 100644 --- a/README +++ b/README @@ -25,18 +25,17 @@ architecture. You can find the available toolchains for building in the make This should create a release build of the project. If you would like debug -flags then add the `-DCMAKE_BUILD_TYPE=debug' option to the `cmake' command. If -you would like to build an ISO file then run the `build-iso' make target. +flags then add the `-DCMAKE_BUILD_TYPE=debug' option to the `cmake' command. # Testing --------- The safest environment to test this in would be an emulator. The one I use is -QEMU (https://www.qemu.org/). You can run the ISO image directly under QEMU, -and the kernel itself (i.e. `colonel.bin') can be run by using the `-kernel' -option. If you'd like to debug the kernel using QEMU and GDB you can do so by -running `qemu -S -s -kernel colonel.bin', which will open a server on localhost -allowing you to connect with GDB for debugging. At this point you can connect -to the server and load the symbols by running the following in the GDB prompt: +QEMU (https://www.qemu.org/). You can run the kernel directly (i.e. +`colonel.bin') by using the `-kernel' option. If you'd like to debug the kernel +using QEMU and GDB you can do so by running `qemu -S -s -kernel colonel.bin'., +which will open a server on `localhost' allowing you to connect with GDB for +debugging. At this point you can connect to the server and load the symbols by +running the following in the GDB prompt: (gdb) target remote localhost:1234 (gdb) symbol-file colonel.bin diff --git a/configs/grub.cfg b/configs/grub.cfg deleted file mode 100644 index a7c241d..0000000 --- a/configs/grub.cfg +++ /dev/null @@ -1,3 +0,0 @@ -menuentry "ColonelOS" { - multiboot /boot/colonel.bin -}