forked from Bananymous/banan-os
				
			
			update main #1
			
				
			
		
		
		
	| 
						 | 
				
			
			@ -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