forked from Bananymous/banan-os
				
			
			update main #1
			
				
			
		
		
		
	| 
						 | 
				
			
			@ -2,4 +2,4 @@
 | 
			
		|||
.idea/
 | 
			
		||||
build/
 | 
			
		||||
base/
 | 
			
		||||
 | 
			
		||||
script/fakeroot-context
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,17 +10,15 @@ set(BAN_SOURCES
 | 
			
		|||
)
 | 
			
		||||
 | 
			
		||||
add_custom_target(ban-headers
 | 
			
		||||
	COMMAND sudo rsync -a ${CMAKE_CURRENT_SOURCE_DIR}/include/ ${BANAN_INCLUDE}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_CURRENT_SOURCE_DIR}/include/ ${BANAN_INCLUDE}/
 | 
			
		||||
	DEPENDS sysroot
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
add_library(ban ${BAN_SOURCES})
 | 
			
		||||
add_dependencies(ban headers libc-install)
 | 
			
		||||
 | 
			
		||||
add_custom_target(ban-install
 | 
			
		||||
	COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/libban.a ${BANAN_LIB}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/libban.a ${BANAN_LIB}/
 | 
			
		||||
	DEPENDS ban
 | 
			
		||||
	BYPRODUCTS ${BANAN_LIB}/libban.a
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,7 +10,6 @@ add_compile_definitions(__enable_sse=0)
 | 
			
		|||
project(banan-os CXX C ASM)
 | 
			
		||||
 | 
			
		||||
set(BANAN_BASE_SYSROOT ${CMAKE_SOURCE_DIR}/base-sysroot.tar.gz)
 | 
			
		||||
set(BANAN_SYSROOT ${CMAKE_BINARY_DIR}/sysroot)
 | 
			
		||||
set(BANAN_INCLUDE ${BANAN_SYSROOT}/usr/include)
 | 
			
		||||
set(BANAN_LIB ${BANAN_SYSROOT}/usr/lib)
 | 
			
		||||
set(BANAN_BIN ${BANAN_SYSROOT}/usr/bin)
 | 
			
		||||
| 
						 | 
				
			
			@ -24,8 +23,7 @@ add_subdirectory(userspace)
 | 
			
		|||
 | 
			
		||||
add_custom_target(sysroot
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E make_directory ${BANAN_SYSROOT}
 | 
			
		||||
	COMMAND cd ${BANAN_SYSROOT} && sudo tar xf ${BANAN_BASE_SYSROOT}
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
	COMMAND cd ${BANAN_SYSROOT} && tar xf ${BANAN_BASE_SYSROOT}
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
add_custom_target(headers
 | 
			
		||||
| 
						 | 
				
			
			@ -36,6 +34,7 @@ add_custom_target(headers
 | 
			
		|||
)
 | 
			
		||||
 | 
			
		||||
add_custom_target(install-sysroot
 | 
			
		||||
	COMMAND cd ${BANAN_SYSROOT} && tar cf ${BANAN_SYSROOT_TAR} *
 | 
			
		||||
	DEPENDS kernel-install
 | 
			
		||||
	DEPENDS ban-install
 | 
			
		||||
	DEPENDS libc-install
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,9 +3,8 @@ cmake_minimum_required(VERSION 3.26)
 | 
			
		|||
project(LibELF CXX)
 | 
			
		||||
 | 
			
		||||
add_custom_target(libelf-headers
 | 
			
		||||
	COMMAND sudo rsync -a ${CMAKE_CURRENT_SOURCE_DIR}/include/ ${BANAN_INCLUDE}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_CURRENT_SOURCE_DIR}/include/ ${BANAN_INCLUDE}/
 | 
			
		||||
	DEPENDS sysroot
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
add_custom_target(libelf-install
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,7 +2,7 @@
 | 
			
		|||
 | 
			
		||||
# banan-os
 | 
			
		||||
 | 
			
		||||
This is my hobby operating system written in C++. Currently supports only x86_64 architecture. We have a ext2 filesystem, basic ramfs, IDE disk drivers in ATA PIO mode, ATA AHCI drivers, userspace processes, executable loading from ELF format, linear VBE graphics and multithreaded processing on single core.
 | 
			
		||||
This is my hobby operating system written in C++. Currently supports only x86\_64 architecture. We have a ext2 filesystem, basic ramfs, IDE disk drivers in ATA PIO mode, ATA AHCI drivers, userspace processes, executable loading from ELF format, linear VBE graphics and multithreaded processing on single core.
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ To build the toolchain for this os. You can run the following command.
 | 
			
		|||
./script/build.sh toolchain
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
To build the os itself you can run one of the following commands. You will need root access since the sysroot has "proper" permissions.
 | 
			
		||||
To build the os itself you can run one of the following commands. You will need root access for disk image creation/modification.
 | 
			
		||||
```sh
 | 
			
		||||
./script/build.sh qemu
 | 
			
		||||
./script/build.sh qemu-nographic
 | 
			
		||||
| 
						 | 
				
			
			@ -39,8 +39,6 @@ If you have corrupted your disk image or want to create new one, you can either
 | 
			
		|||
./script/build.sh image-full
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
> ***NOTE*** ```ninja clean``` has to be ran with root permissions, since it deletes from the banan-so sysroot.
 | 
			
		||||
 | 
			
		||||
If you feel like ```./script/build.sh``` is too verbose, there exists a symlink _bos_ in this projects root directory. All build commands can be used with ```./bos args...``` instead.
 | 
			
		||||
 | 
			
		||||
I have also created shell completion script for zsh. You can either copy the file in _script/shell-completion/zsh/\_bos_ to _/usr/share/zsh/site-functions/_ or add the _script/shell-completion/zsh_ to your fpath in _.zshrc_.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -165,16 +165,14 @@ endif()
 | 
			
		|||
target_link_options(kernel PUBLIC -ffreestanding -nostdlib)
 | 
			
		||||
 | 
			
		||||
add_custom_target(kernel-headers
 | 
			
		||||
	COMMAND sudo rsync -a ${CMAKE_CURRENT_SOURCE_DIR}/include/ ${BANAN_INCLUDE}/
 | 
			
		||||
	COMMAND sudo rsync -a ${CMAKE_CURRENT_SOURCE_DIR}/lai/include/ ${BANAN_INCLUDE}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_CURRENT_SOURCE_DIR}/include/ ${BANAN_INCLUDE}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_CURRENT_SOURCE_DIR}/lai/include/ ${BANAN_INCLUDE}/
 | 
			
		||||
	DEPENDS sysroot
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
add_custom_target(kernel-install
 | 
			
		||||
	COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/kernel ${BANAN_BOOT}/banan-os.kernel
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/kernel ${BANAN_BOOT}/banan-os.kernel
 | 
			
		||||
	DEPENDS kernel
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
execute_process(COMMAND ${CMAKE_CXX_COMPILER} -print-file-name=crtbegin.o OUTPUT_VARIABLE CRTBEGIN OUTPUT_STRIP_TRAILING_WHITESPACE)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,9 +26,8 @@ set(LIBC_SOURCES
 | 
			
		|||
)
 | 
			
		||||
 | 
			
		||||
add_custom_target(libc-headers
 | 
			
		||||
	COMMAND sudo rsync -a ${CMAKE_CURRENT_SOURCE_DIR}/include/ ${BANAN_INCLUDE}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_CURRENT_SOURCE_DIR}/include/ ${BANAN_INCLUDE}/
 | 
			
		||||
	DEPENDS sysroot
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
add_custom_target(crtx
 | 
			
		||||
| 
						 | 
				
			
			@ -38,11 +37,10 @@ add_custom_target(crtx
 | 
			
		|||
)
 | 
			
		||||
 | 
			
		||||
add_custom_target(crtx-install
 | 
			
		||||
	COMMAND sudo cp crt0.o ${BANAN_LIB}/
 | 
			
		||||
	COMMAND sudo cp crti.o ${BANAN_LIB}/
 | 
			
		||||
	COMMAND sudo cp crtn.o ${BANAN_LIB}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy crt0.o ${BANAN_LIB}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy crti.o ${BANAN_LIB}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy crtn.o ${BANAN_LIB}/
 | 
			
		||||
	DEPENDS crtx
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
add_library(libc ${LIBC_SOURCES})
 | 
			
		||||
| 
						 | 
				
			
			@ -51,10 +49,9 @@ add_dependencies(libc headers crtx-install)
 | 
			
		|||
target_compile_options(libc PRIVATE -g -Wstack-usage=512)
 | 
			
		||||
 | 
			
		||||
add_custom_target(libc-install
 | 
			
		||||
	COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/libc.a ${BANAN_LIB}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/libc.a ${BANAN_LIB}/
 | 
			
		||||
	DEPENDS libc
 | 
			
		||||
	BYPRODUCTS ${BANAN_LIB}/libc.a
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
set(CMAKE_STATIC_LIBRARY_PREFIX "")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,6 +4,12 @@ set -e
 | 
			
		|||
export BANAN_SCRIPT_DIR=$(dirname $(realpath $0))
 | 
			
		||||
source $BANAN_SCRIPT_DIR/config.sh
 | 
			
		||||
 | 
			
		||||
FAKEROOT_FILE="$BANAN_BUILD_DIR/fakeroot-context"
 | 
			
		||||
 | 
			
		||||
run_fakeroot() {
 | 
			
		||||
	fakeroot -i $FAKEROOT_FILE -s $FAKEROOT_FILE -- /bin/bash -c '$@' bash $@
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
make_build_dir () {
 | 
			
		||||
	mkdir -p $BANAN_BUILD_DIR
 | 
			
		||||
	cd $BANAN_BUILD_DIR
 | 
			
		||||
| 
						 | 
				
			
			@ -19,7 +25,7 @@ build_target () {
 | 
			
		|||
		exit 1
 | 
			
		||||
	fi
 | 
			
		||||
	cd $BANAN_BUILD_DIR
 | 
			
		||||
	ninja $1
 | 
			
		||||
	run_fakeroot ninja $1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
build_toolchain () {
 | 
			
		||||
| 
						 | 
				
			
			@ -39,11 +45,7 @@ build_toolchain () {
 | 
			
		|||
 | 
			
		||||
create_image () {
 | 
			
		||||
	build_target install-sysroot
 | 
			
		||||
	if [[ "$1" == "full" ]]; then
 | 
			
		||||
		$BANAN_SCRIPT_DIR/image-full.sh
 | 
			
		||||
	else
 | 
			
		||||
		$BANAN_SCRIPT_DIR/image.sh
 | 
			
		||||
	fi
 | 
			
		||||
	$BANAN_SCRIPT_DIR/image.sh "$1"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
run_qemu () {
 | 
			
		||||
| 
						 | 
				
			
			@ -56,7 +58,7 @@ run_bochs () {
 | 
			
		|||
	$BANAN_SCRIPT_DIR/bochs.sh $@
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if [[ "$(uname)" == "Linux" ]]; then
 | 
			
		||||
if [[ -c /dev/kvm ]]; then
 | 
			
		||||
	QEMU_ACCEL="-accel kvm"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,6 +18,7 @@ export BANAN_TOOLCHAIN_TRIPLE_PREFIX=$BANAN_ARCH-banan_os
 | 
			
		|||
export BANAN_BUILD_DIR=$BANAN_ROOT_DIR/build
 | 
			
		||||
 | 
			
		||||
export BANAN_SYSROOT=$BANAN_BUILD_DIR/sysroot
 | 
			
		||||
export BANAN_SYSROOT_TAR=$BANAN_SYSROOT.tar
 | 
			
		||||
 | 
			
		||||
export BANAN_DISK_IMAGE_PATH=$BANAN_BUILD_DIR/banan-os.img
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -72,7 +72,7 @@ sudo partprobe $LOOP_DEV
 | 
			
		|||
PARTITION1=${LOOP_DEV}p1
 | 
			
		||||
PARTITION2=${LOOP_DEV}p2
 | 
			
		||||
 | 
			
		||||
sudo mkfs.ext2 -d $BANAN_SYSROOT -b 1024 -q $PARTITION2
 | 
			
		||||
sudo mkfs.ext2 -b 1024 -q $PARTITION2
 | 
			
		||||
 | 
			
		||||
if [[ "$BANAN_UEFI_BOOT" == "1" ]]; then
 | 
			
		||||
	sudo mkfs.fat $PARTITION1 > /dev/null
 | 
			
		||||
| 
						 | 
				
			
			@ -1,44 +1,38 @@
 | 
			
		|||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
if [[ -z $BANAN_ROOT_DIR ]]; then
 | 
			
		||||
	echo  "You must set the BANAN_ROOT_DIR environment variable" >&2
 | 
			
		||||
	exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [[ -z $BANAN_DISK_IMAGE_PATH ]]; then
 | 
			
		||||
	echo  "You must set the BANAN_DISK_IMAGE_PATH environment variable" >&2
 | 
			
		||||
	exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [[ -z $BANAN_SYSROOT ]]; then
 | 
			
		||||
	echo  "You must set the BANAN_SYSROOT environment variable" >&2
 | 
			
		||||
if [[ -z $BANAN_SYSROOT_TAR ]]; then
 | 
			
		||||
	echo  "You must set the BANAN_SYSROOT_TAR environment variable" >&2
 | 
			
		||||
	exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [[ ! -f $BANAN_DISK_IMAGE_PATH ]]; then
 | 
			
		||||
	$BANAN_SCRIPT_DIR/image-full.sh
 | 
			
		||||
	exit 0
 | 
			
		||||
if [[ "$1" == "full" ]] || [[ ! -f $BANAN_DISK_IMAGE_PATH ]]; then
 | 
			
		||||
	$BANAN_SCRIPT_DIR/image-create.sh
 | 
			
		||||
else
 | 
			
		||||
	fdisk -l $BANAN_DISK_IMAGE_PATH | grep -q 'EFI System'; IMAGE_IS_UEFI=$?
 | 
			
		||||
	[[ $BANAN_UEFI_BOOT == 1 ]]; CREATE_IS_UEFI=$?
 | 
			
		||||
 | 
			
		||||
	if [[ $IMAGE_IS_UEFI -ne $CREATE_IS_UEFI ]]; then
 | 
			
		||||
		echo Converting disk image to/from UEFI
 | 
			
		||||
		$BANAN_SCRIPT_DIR/image-create.sh
 | 
			
		||||
	fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
fdisk -l $BANAN_DISK_IMAGE_PATH | grep -q 'EFI System'; IMAGE_IS_UEFI=$?
 | 
			
		||||
[[ $BANAN_UEFI_BOOT == 1 ]]; CREATE_IS_UEFI=$?
 | 
			
		||||
 | 
			
		||||
if [[ $IMAGE_IS_UEFI -ne $CREATE_IS_UEFI ]]; then
 | 
			
		||||
	echo Converting disk image to/from UEFI
 | 
			
		||||
	$BANAN_SCRIPT_DIR/image-full.sh
 | 
			
		||||
	exit 0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
MOUNT_DIR=/mnt
 | 
			
		||||
 | 
			
		||||
LOOP_DEV=$(sudo losetup -f --show $BANAN_DISK_IMAGE_PATH)
 | 
			
		||||
LOOP_DEV=$(sudo losetup --show -f "$BANAN_DISK_IMAGE_PATH")
 | 
			
		||||
sudo partprobe $LOOP_DEV
 | 
			
		||||
 | 
			
		||||
ROOT_PARTITON=${LOOP_DEV}p2
 | 
			
		||||
ROOT_PARTITION=${LOOP_DEV}p2
 | 
			
		||||
MOUNT_DIR=/mnt
 | 
			
		||||
 | 
			
		||||
sudo mount $ROOT_PARTITON $MOUNT_DIR
 | 
			
		||||
sudo mount $ROOT_PARTITION $MOUNT_DIR
 | 
			
		||||
 | 
			
		||||
sudo rsync -a ${BANAN_SYSROOT}/* ${MOUNT_DIR}/
 | 
			
		||||
cd $MOUNT_DIR
 | 
			
		||||
sudo tar xf $BANAN_SYSROOT_TAR
 | 
			
		||||
cd
 | 
			
		||||
 | 
			
		||||
sudo umount $MOUNT_DIR
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,9 +1,19 @@
 | 
			
		|||
if (NOT DEFINED ENV{BANAN_ARCH})
 | 
			
		||||
	message(FATAL_ERROR "environment variable BANAN_ARCH not defined")
 | 
			
		||||
endif ()
 | 
			
		||||
 | 
			
		||||
set(BANAN_ARCH $ENV{BANAN_ARCH})
 | 
			
		||||
 | 
			
		||||
if (NOT DEFINED ENV{BANAN_SYSROOT})
 | 
			
		||||
	message(FATAL_ERROR "environment variable BANAN_SYSROOT not defined")
 | 
			
		||||
endif ()
 | 
			
		||||
set(BANAN_SYSROOT $ENV{BANAN_SYSROOT})
 | 
			
		||||
 | 
			
		||||
if (NOT DEFINED ENV{BANAN_SYSROOT_TAR})
 | 
			
		||||
	message(FATAL_ERROR "environment variable BANAN_SYSROOT_TAR not defined")
 | 
			
		||||
endif ()
 | 
			
		||||
set(BANAN_SYSROOT_TAR $ENV{BANAN_SYSROOT_TAR})
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
set(TOOLCHAIN_PREFIX ${CMAKE_SOURCE_DIR}/toolchain/local)
 | 
			
		||||
 | 
			
		||||
set(CMAKE_SYSTEM_NAME banan-os)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,6 @@ target_compile_options(Shell PUBLIC -O2 -g)
 | 
			
		|||
target_link_libraries(Shell PUBLIC libc ban)
 | 
			
		||||
 | 
			
		||||
add_custom_target(Shell-install
 | 
			
		||||
	COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/Shell ${BANAN_BIN}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/Shell ${BANAN_BIN}/
 | 
			
		||||
	DEPENDS Shell
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,6 @@ target_compile_options(cat-mmap PUBLIC -O2 -g)
 | 
			
		|||
target_link_libraries(cat-mmap PUBLIC libc)
 | 
			
		||||
 | 
			
		||||
add_custom_target(cat-mmap-install
 | 
			
		||||
	COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/cat-mmap ${BANAN_BIN}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/cat-mmap ${BANAN_BIN}/
 | 
			
		||||
	DEPENDS cat-mmap
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,6 @@ target_compile_options(cat PUBLIC -O2 -g)
 | 
			
		|||
target_link_libraries(cat PUBLIC libc)
 | 
			
		||||
 | 
			
		||||
add_custom_target(cat-install
 | 
			
		||||
	COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/cat ${BANAN_BIN}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/cat ${BANAN_BIN}/
 | 
			
		||||
	DEPENDS cat
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,6 @@ target_compile_options(chmod PUBLIC -O2 -g)
 | 
			
		|||
target_link_libraries(chmod PUBLIC libc)
 | 
			
		||||
 | 
			
		||||
add_custom_target(chmod-install
 | 
			
		||||
	COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/chmod ${BANAN_BIN}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/chmod ${BANAN_BIN}/
 | 
			
		||||
	DEPENDS chmod
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,6 @@ target_compile_options(cp PUBLIC -O2 -g)
 | 
			
		|||
target_link_libraries(cp PUBLIC libc ban)
 | 
			
		||||
 | 
			
		||||
add_custom_target(cp-install
 | 
			
		||||
	COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/cp ${BANAN_BIN}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/cp ${BANAN_BIN}/
 | 
			
		||||
	DEPENDS cp
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,9 +20,8 @@ target_compile_options($PROGRAM_NAME PUBLIC -O2 -g)
 | 
			
		|||
target_link_libraries($PROGRAM_NAME PUBLIC libc)
 | 
			
		||||
 | 
			
		||||
add_custom_target($PROGRAM_NAME-install
 | 
			
		||||
	COMMAND sudo cp \${CMAKE_CURRENT_BINARY_DIR}/$PROGRAM_NAME \${BANAN_BIN}/
 | 
			
		||||
	COMMAND \${CMAKE_COMMAND} -E copy \${CMAKE_CURRENT_BINARY_DIR}/$PROGRAM_NAME \${BANAN_BIN}/
 | 
			
		||||
	DEPENDS $PROGRAM_NAME
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,6 @@ target_compile_options(dd PUBLIC -O2 -g)
 | 
			
		|||
target_link_libraries(dd PUBLIC libc)
 | 
			
		||||
 | 
			
		||||
add_custom_target(dd-install
 | 
			
		||||
	COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/dd ${BANAN_BIN}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/dd ${BANAN_BIN}/
 | 
			
		||||
	DEPENDS dd
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,6 @@ target_compile_options(echo PUBLIC -O2 -g)
 | 
			
		|||
target_link_libraries(echo PUBLIC libc)
 | 
			
		||||
 | 
			
		||||
add_custom_target(echo-install
 | 
			
		||||
	COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/echo ${BANAN_BIN}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/echo ${BANAN_BIN}/
 | 
			
		||||
	DEPENDS echo
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,6 @@ target_compile_options(id PUBLIC -O2 -g)
 | 
			
		|||
target_link_libraries(id PUBLIC libc ban)
 | 
			
		||||
 | 
			
		||||
add_custom_target(id-install
 | 
			
		||||
	COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/id ${BANAN_BIN}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/id ${BANAN_BIN}/
 | 
			
		||||
	DEPENDS id
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,6 @@ target_compile_options(init PUBLIC -O2 -g)
 | 
			
		|||
target_link_libraries(init PUBLIC libc ban)
 | 
			
		||||
 | 
			
		||||
add_custom_target(init-install
 | 
			
		||||
	COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/init ${BANAN_BIN}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/init ${BANAN_BIN}/
 | 
			
		||||
	DEPENDS init
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,6 @@ target_compile_options(ls PUBLIC -O2 -g)
 | 
			
		|||
target_link_libraries(ls PUBLIC libc)
 | 
			
		||||
 | 
			
		||||
add_custom_target(ls-install
 | 
			
		||||
	COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/ls ${BANAN_BIN}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/ls ${BANAN_BIN}/
 | 
			
		||||
	DEPENDS ls
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,6 @@ target_compile_options(meminfo PUBLIC -O2 -g)
 | 
			
		|||
target_link_libraries(meminfo PUBLIC libc)
 | 
			
		||||
 | 
			
		||||
add_custom_target(meminfo-install
 | 
			
		||||
	COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/meminfo ${BANAN_BIN}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/meminfo ${BANAN_BIN}/
 | 
			
		||||
	DEPENDS meminfo
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,6 @@ target_compile_options(mkdir PUBLIC -O2 -g)
 | 
			
		|||
target_link_libraries(mkdir PUBLIC libc)
 | 
			
		||||
 | 
			
		||||
add_custom_target(mkdir-install
 | 
			
		||||
	COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/mkdir ${BANAN_BIN}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/mkdir ${BANAN_BIN}/
 | 
			
		||||
	DEPENDS mkdir
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,6 @@ target_compile_options(mmap-shared-test PUBLIC -O2 -g)
 | 
			
		|||
target_link_libraries(mmap-shared-test PUBLIC libc)
 | 
			
		||||
 | 
			
		||||
add_custom_target(mmap-shared-test-install
 | 
			
		||||
	COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/mmap-shared-test ${BANAN_BIN}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/mmap-shared-test ${BANAN_BIN}/
 | 
			
		||||
	DEPENDS mmap-shared-test
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,6 @@ target_compile_options(poweroff PUBLIC -O2 -g)
 | 
			
		|||
target_link_libraries(poweroff PUBLIC libc)
 | 
			
		||||
 | 
			
		||||
add_custom_target(poweroff-install
 | 
			
		||||
	COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/poweroff ${BANAN_BIN}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/poweroff ${BANAN_BIN}/
 | 
			
		||||
	DEPENDS poweroff
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,6 @@ target_compile_options(rm PUBLIC -O2 -g)
 | 
			
		|||
target_link_libraries(rm PUBLIC libc ban)
 | 
			
		||||
 | 
			
		||||
add_custom_target(rm-install
 | 
			
		||||
	COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/rm ${BANAN_BIN}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/rm ${BANAN_BIN}/
 | 
			
		||||
	DEPENDS rm
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,6 @@ target_compile_options(snake PUBLIC -O2 -g)
 | 
			
		|||
target_link_libraries(snake PUBLIC libc)
 | 
			
		||||
 | 
			
		||||
add_custom_target(snake-install
 | 
			
		||||
	COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/snake ${BANAN_BIN}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/snake ${BANAN_BIN}/
 | 
			
		||||
	DEPENDS snake
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,6 @@ target_compile_options(stat PUBLIC -O2 -g)
 | 
			
		|||
target_link_libraries(stat PUBLIC libc ban)
 | 
			
		||||
 | 
			
		||||
add_custom_target(stat-install
 | 
			
		||||
	COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/stat ${BANAN_BIN}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/stat ${BANAN_BIN}/
 | 
			
		||||
	DEPENDS stat
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,6 @@ target_compile_options(sync PUBLIC -O2 -g)
 | 
			
		|||
target_link_libraries(sync PUBLIC libc)
 | 
			
		||||
 | 
			
		||||
add_custom_target(sync-install
 | 
			
		||||
	COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/sync ${BANAN_BIN}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/sync ${BANAN_BIN}/
 | 
			
		||||
	DEPENDS sync
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,6 @@ target_compile_options(tee PUBLIC -O2 -g)
 | 
			
		|||
target_link_libraries(tee PUBLIC libc)
 | 
			
		||||
 | 
			
		||||
add_custom_target(tee-install
 | 
			
		||||
	COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/tee ${BANAN_BIN}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/tee ${BANAN_BIN}/
 | 
			
		||||
	DEPENDS tee
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,6 @@ target_compile_options(test-globals PUBLIC -O2 -g)
 | 
			
		|||
target_link_libraries(test-globals PUBLIC libc)
 | 
			
		||||
 | 
			
		||||
add_custom_target(test-globals-install
 | 
			
		||||
	COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/test-globals ${BANAN_BIN}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/test-globals ${BANAN_BIN}/
 | 
			
		||||
	DEPENDS test-globals
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,6 @@ target_compile_options(test PUBLIC -O2 -g)
 | 
			
		|||
target_link_libraries(test PUBLIC libc)
 | 
			
		||||
 | 
			
		||||
add_custom_target(test-install
 | 
			
		||||
	COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/test ${BANAN_BIN}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/test ${BANAN_BIN}/
 | 
			
		||||
	DEPENDS test
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,6 @@ target_compile_options(touch PUBLIC -O2 -g)
 | 
			
		|||
target_link_libraries(touch PUBLIC libc)
 | 
			
		||||
 | 
			
		||||
add_custom_target(touch-install
 | 
			
		||||
	COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/touch ${BANAN_BIN}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/touch ${BANAN_BIN}/
 | 
			
		||||
	DEPENDS touch
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,6 @@ target_compile_options(u8sum PUBLIC -O2 -g)
 | 
			
		|||
target_link_libraries(u8sum PUBLIC libc)
 | 
			
		||||
 | 
			
		||||
add_custom_target(u8sum-install
 | 
			
		||||
	COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/u8sum ${BANAN_BIN}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/u8sum ${BANAN_BIN}/
 | 
			
		||||
	DEPENDS u8sum
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,6 @@ target_compile_options(whoami PUBLIC -O2 -g)
 | 
			
		|||
target_link_libraries(whoami PUBLIC libc ban)
 | 
			
		||||
 | 
			
		||||
add_custom_target(whoami-install
 | 
			
		||||
	COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/whoami ${BANAN_BIN}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/whoami ${BANAN_BIN}/
 | 
			
		||||
	DEPENDS whoami
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,6 @@ target_compile_options(yes PUBLIC -O2 -g)
 | 
			
		|||
target_link_libraries(yes PUBLIC libc)
 | 
			
		||||
 | 
			
		||||
add_custom_target(yes-install
 | 
			
		||||
	COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/yes ${BANAN_BIN}/
 | 
			
		||||
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/yes ${BANAN_BIN}/
 | 
			
		||||
	DEPENDS yes
 | 
			
		||||
	USES_TERMINAL
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue