forked from Bananymous/banan-os
BuildSystem: Rework calling qemu
I change always manually the serial/graphical. When running cmake you can define variable QEMU_ACCEL that will be used as accelerator. Also ninja has the following targets for running qemu 1. qemu: Run graphical qemu environment 2. qemu-nographic: Run qemu without graphical screen. You should select 'serial only' from grub menu. 3. qemu-debug: Run qemu without accelerator and interrupt debugger.
This commit is contained in:
parent
6e1825d6b4
commit
f9b347f9d9
|
@ -20,6 +20,10 @@ if(NOT EXISTS ${CMAKE_CXX_COMPILER})
|
|||
set(CMAKE_CXX_COMPILER g++)
|
||||
endif()
|
||||
|
||||
if(DEFINED QEMU_ACCEL)
|
||||
set(QEMU_ACCEL -accel ${QEMU_ACCEL})
|
||||
endif()
|
||||
|
||||
add_compile_options(-mno-sse -mno-sse2)
|
||||
add_compile_definitions(__enable_sse=0)
|
||||
|
||||
|
@ -90,13 +94,19 @@ add_custom_target(check-fs
|
|||
)
|
||||
|
||||
add_custom_target(qemu
|
||||
COMMAND ${CMAKE_COMMAND} -E env BANAN_ARCH="${BANAN_ARCH}" DISK_IMAGE_PATH="${DISK_IMAGE_PATH}" ${CMAKE_SOURCE_DIR}/qemu.sh -accel kvm
|
||||
COMMAND ${CMAKE_COMMAND} -E env BANAN_ARCH="${BANAN_ARCH}" DISK_IMAGE_PATH="${DISK_IMAGE_PATH}" ${CMAKE_SOURCE_DIR}/qemu.sh -serial stdio ${QEMU_ACCEL}
|
||||
DEPENDS image
|
||||
USES_TERMINAL
|
||||
)
|
||||
|
||||
add_custom_target(qemu-nographic
|
||||
COMMAND ${CMAKE_COMMAND} -E env BANAN_ARCH="${BANAN_ARCH}" DISK_IMAGE_PATH="${DISK_IMAGE_PATH}" ${CMAKE_SOURCE_DIR}/qemu.sh -nographic ${QEMU_ACCEL}
|
||||
DEPENDS image
|
||||
USES_TERMINAL
|
||||
)
|
||||
|
||||
add_custom_target(qemu-debug
|
||||
COMMAND ${CMAKE_COMMAND} -E env BANAN_ARCH="${BANAN_ARCH}" DISK_IMAGE_PATH="${DISK_IMAGE_PATH}" ${CMAKE_SOURCE_DIR}/qemu.sh -d int -no-reboot
|
||||
COMMAND ${CMAKE_COMMAND} -E env BANAN_ARCH="${BANAN_ARCH}" DISK_IMAGE_PATH="${DISK_IMAGE_PATH}" ${CMAKE_SOURCE_DIR}/qemu.sh -serial stdio -d int -no-reboot
|
||||
DEPENDS image
|
||||
USES_TERMINAL
|
||||
)
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
set(CMAKE_GENERATOR "Ninja" CACHE INTERNAL "" FORCE)
|
|
@ -14,18 +14,20 @@ Each major component and library has its own subdirectory (kernel, userspace, li
|
|||
|
||||
There does not exist a complete list of needed packages for building. From the top of my head I can say that *cmake*, *ninja*, *make*, *grub*, *rsync* and emulator (*qemu* or *bochs*) are needed.
|
||||
|
||||
You can and *should* pass cmake variable QEMU_ACCEL set to proper accelerator to cmake commands. For example on Linux this means adding -DQEMU_ACCEL=kvm to the end of all cmake commands.
|
||||
|
||||
Create the build directory and cofigure cmake
|
||||
```sh
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -G Ninja ..
|
||||
cmake ..
|
||||
```
|
||||
|
||||
To build the toolchain for this os. You can run the following command.
|
||||
> ***NOTE:*** The following step has to be done only once. This might take a long time since we are compiling binutils and gcc.
|
||||
```sh
|
||||
ninja toolchain
|
||||
cmake -G Ninja --fresh .. # We need to reconfigure cmake to use the new compiler
|
||||
cmake --fresh .. # We need to reconfigure cmake to use the new compiler
|
||||
ninja libstdc++
|
||||
```
|
||||
|
||||
|
|
Loading…
Reference in New Issue