BuildSystem: Base sysroot is now distributed as a tar ball
This allows file and directory permissions work as intended. cmake is now filled with 'sudo' but with sudo timeout this should be fine.
This commit is contained in:
parent
b780df8be0
commit
80e7a89f67
|
@ -1,5 +1,8 @@
|
|||
.vscode/
|
||||
.idea/
|
||||
build/
|
||||
base/
|
||||
*.tar.*
|
||||
toolchain/*/
|
||||
|
||||
!base-sysroot.tar.gz
|
||||
|
|
|
@ -10,15 +10,17 @@ set(BAN_SOURCES
|
|||
)
|
||||
|
||||
add_custom_target(ban-headers
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_CURRENT_SOURCE_DIR}/include ${BANAN_INCLUDE}
|
||||
COMMAND sudo rsync -r ${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 ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/libban.a ${BANAN_LIB}/
|
||||
COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/libban.a ${BANAN_LIB}/
|
||||
DEPENDS ban
|
||||
BYPRODUCTS ${BANAN_LIB}/libban.a
|
||||
USES_TERMINAL
|
||||
)
|
||||
|
|
|
@ -19,6 +19,7 @@ endif()
|
|||
|
||||
project(banan-os CXX)
|
||||
|
||||
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)
|
||||
|
@ -34,11 +35,7 @@ add_subdirectory(userspace)
|
|||
|
||||
add_custom_target(sysroot
|
||||
COMMAND mkdir -p ${BANAN_SYSROOT}
|
||||
COMMAND mkdir -p ${BANAN_INCLUDE}
|
||||
COMMAND mkdir -p ${BANAN_LIB}
|
||||
COMMAND mkdir -p ${BANAN_BIN}
|
||||
COMMAND mkdir -p ${BANAN_BOOT}
|
||||
COMMAND cp -r ${CMAKE_SOURCE_DIR}/base/* ${BANAN_SYSROOT}/
|
||||
COMMAND cd ${BANAN_SYSROOT} && sudo tar xf ${BANAN_BASE_SYSROOT}
|
||||
)
|
||||
|
||||
add_custom_target(headers
|
||||
|
@ -66,6 +63,7 @@ add_custom_target(image
|
|||
DEPENDS ban-install
|
||||
DEPENDS libc-install
|
||||
DEPENDS userspace-install
|
||||
DEPENDS libelf-install
|
||||
USES_TERMINAL
|
||||
)
|
||||
|
||||
|
@ -75,6 +73,7 @@ add_custom_target(image-full
|
|||
DEPENDS ban-install
|
||||
DEPENDS libc-install
|
||||
DEPENDS userspace-install
|
||||
DEPENDS libelf-install
|
||||
USES_TERMINAL
|
||||
)
|
||||
|
||||
|
|
|
@ -3,8 +3,9 @@ cmake_minimum_required(VERSION 3.26)
|
|||
project(LibELF CXX)
|
||||
|
||||
add_custom_target(libelf-headers
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_CURRENT_SOURCE_DIR}/include ${BANAN_INCLUDE}
|
||||
COMMAND sudo rsync -r ${CMAKE_CURRENT_SOURCE_DIR}/include/ ${BANAN_INCLUDE}/
|
||||
DEPENDS sysroot
|
||||
USES_TERMINAL
|
||||
)
|
||||
|
||||
add_custom_target(libelf-install
|
||||
|
|
Binary file not shown.
|
@ -1,15 +0,0 @@
|
|||
menuentry "banan-os" {
|
||||
multiboot /boot/banan-os.kernel root=/dev/hda2
|
||||
}
|
||||
|
||||
menuentry "banan-os (no serial)" {
|
||||
multiboot /boot/banan-os.kernel root=/dev/hda2 noserial
|
||||
}
|
||||
|
||||
menuentry "banan-os (no apic)" {
|
||||
multiboot /boot/banan-os.kernel root=/dev/hda2 noapic
|
||||
}
|
||||
|
||||
menuentry "banan-os (no apic, no serial)" {
|
||||
multiboot /boot/banan-os.kernel root=/dev/hda2 noapic noserial
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
host
|
|
@ -1,2 +0,0 @@
|
|||
root:x:0:0::/root:/bin/Shell
|
||||
user:x:1000:1000::/home/user:/bin/Shell
|
|
@ -1 +0,0 @@
|
|||
hello
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -144,18 +144,26 @@ endif()
|
|||
target_link_options(kernel PUBLIC -ffreestanding -nostdlib)
|
||||
|
||||
add_custom_target(crt0
|
||||
COMMAND ${CMAKE_CXX_COMPILER} -c ${CMAKE_CURRENT_SOURCE_DIR}/arch/${BANAN_ARCH}/crt0.S -o ${BANAN_LIB}/crt0.o
|
||||
COMMAND ${CMAKE_CXX_COMPILER} -c ${CMAKE_CURRENT_SOURCE_DIR}/arch/${BANAN_ARCH}/crt0.S -o ${CMAKE_CURRENT_BINARY_DIR}/crt0.o
|
||||
DEPENDS headers
|
||||
)
|
||||
|
||||
add_custom_command(
|
||||
TARGET crt0
|
||||
POST_BUILD
|
||||
COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/crt0.o ${BANAN_LIB}/
|
||||
)
|
||||
|
||||
add_custom_target(kernel-headers
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_CURRENT_SOURCE_DIR}/include ${BANAN_INCLUDE}
|
||||
COMMAND sudo rsync -r ${CMAKE_CURRENT_SOURCE_DIR}/include/ ${BANAN_INCLUDE}/
|
||||
DEPENDS sysroot
|
||||
USES_TERMINAL
|
||||
)
|
||||
|
||||
add_custom_target(kernel-install
|
||||
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/kernel ${BANAN_BOOT}/banan-os.kernel
|
||||
COMMAND sudo cp ${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)
|
||||
|
|
|
@ -23,8 +23,9 @@ set(LIBC_SOURCES
|
|||
)
|
||||
|
||||
add_custom_target(libc-headers
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_CURRENT_SOURCE_DIR}/include ${BANAN_INCLUDE}
|
||||
COMMAND sudo rsync -r ${CMAKE_CURRENT_SOURCE_DIR}/include/ ${BANAN_INCLUDE}/
|
||||
DEPENDS sysroot
|
||||
USES_TERMINAL
|
||||
)
|
||||
|
||||
add_library(libc ${LIBC_SOURCES})
|
||||
|
@ -33,9 +34,10 @@ add_dependencies(libc headers crt0)
|
|||
target_compile_options(libc PRIVATE -g -Wstack-usage=512)
|
||||
|
||||
add_custom_target(libc-install
|
||||
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/libc.a ${BANAN_LIB}/
|
||||
COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/libc.a ${BANAN_LIB}/
|
||||
DEPENDS libc
|
||||
BYPRODUCTS ${BANAN_LIB}/libc.a
|
||||
USES_TERMINAL
|
||||
)
|
||||
|
||||
set(CMAKE_STATIC_LIBRARY_PREFIX "")
|
||||
|
|
|
@ -26,7 +26,8 @@ add_custom_target(userspace)
|
|||
add_custom_target(userspace-install DEPENDS userspace)
|
||||
|
||||
foreach(USERSPACE_PROJECT ${USERSPACE_PROJECTS})
|
||||
target_compile_options(${USERSPACE_PROJECT} PUBLIC -g)
|
||||
target_compile_options(${USERSPACE_PROJECT} PRIVATE -g)
|
||||
add_dependencies(${USERSPACE_PROJECT} libc-install ban-install)
|
||||
add_dependencies(userspace ${USERSPACE_PROJECT})
|
||||
add_dependencies(userspace-install ${USERSPACE_PROJECT}-install)
|
||||
endforeach()
|
||||
|
|
|
@ -11,6 +11,7 @@ target_compile_options(Shell PUBLIC -O2 -g)
|
|||
target_link_libraries(Shell PUBLIC libc ban)
|
||||
|
||||
add_custom_target(Shell-install
|
||||
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/Shell ${BANAN_BIN}/
|
||||
COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/Shell ${BANAN_BIN}/
|
||||
DEPENDS Shell
|
||||
USES_TERMINAL
|
||||
)
|
||||
|
|
|
@ -11,6 +11,7 @@ target_compile_options(cat PUBLIC -O2 -g)
|
|||
target_link_libraries(cat PUBLIC libc)
|
||||
|
||||
add_custom_target(cat-install
|
||||
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/cat ${BANAN_BIN}/
|
||||
COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/cat ${BANAN_BIN}/
|
||||
DEPENDS cat
|
||||
USES_TERMINAL
|
||||
)
|
||||
|
|
|
@ -20,8 +20,9 @@ target_compile_options($PROGRAM_NAME PUBLIC -O2 -g)
|
|||
target_link_libraries($PROGRAM_NAME PUBLIC libc)
|
||||
|
||||
add_custom_target($PROGRAM_NAME-install
|
||||
COMMAND cp \${CMAKE_CURRENT_BINARY_DIR}/$PROGRAM_NAME \${BANAN_BIN}/
|
||||
COMMAND sudo cp \${CMAKE_CURRENT_BINARY_DIR}/$PROGRAM_NAME \${BANAN_BIN}/
|
||||
DEPENDS $PROGRAM_NAME
|
||||
USES_TERMINAL
|
||||
)
|
||||
EOF
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@ target_compile_options(echo PUBLIC -O2 -g)
|
|||
target_link_libraries(echo PUBLIC libc)
|
||||
|
||||
add_custom_target(echo-install
|
||||
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/echo ${BANAN_BIN}/
|
||||
COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/echo ${BANAN_BIN}/
|
||||
DEPENDS echo
|
||||
USES_TERMINAL
|
||||
)
|
||||
|
|
|
@ -11,6 +11,7 @@ target_compile_options(id PUBLIC -O2 -g)
|
|||
target_link_libraries(id PUBLIC libc ban)
|
||||
|
||||
add_custom_target(id-install
|
||||
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/id ${BANAN_BIN}/
|
||||
COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/id ${BANAN_BIN}/
|
||||
DEPENDS id
|
||||
USES_TERMINAL
|
||||
)
|
||||
|
|
|
@ -11,6 +11,7 @@ target_compile_options(init PUBLIC -O2 -g)
|
|||
target_link_libraries(init PUBLIC libc ban)
|
||||
|
||||
add_custom_target(init-install
|
||||
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/init ${BANAN_BIN}/
|
||||
COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/init ${BANAN_BIN}/
|
||||
DEPENDS init
|
||||
USES_TERMINAL
|
||||
)
|
||||
|
|
|
@ -11,6 +11,7 @@ target_compile_options(ls PUBLIC -O2 -g)
|
|||
target_link_libraries(ls PUBLIC libc)
|
||||
|
||||
add_custom_target(ls-install
|
||||
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/ls ${BANAN_BIN}/
|
||||
COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/ls ${BANAN_BIN}/
|
||||
DEPENDS ls
|
||||
USES_TERMINAL
|
||||
)
|
||||
|
|
|
@ -11,6 +11,7 @@ target_compile_options(stat PUBLIC -O2 -g)
|
|||
target_link_libraries(stat PUBLIC libc ban)
|
||||
|
||||
add_custom_target(stat-install
|
||||
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/stat ${BANAN_BIN}/
|
||||
COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/stat ${BANAN_BIN}/
|
||||
DEPENDS stat
|
||||
USES_TERMINAL
|
||||
)
|
||||
|
|
|
@ -11,6 +11,7 @@ target_compile_options(tee PUBLIC -O2 -g)
|
|||
target_link_libraries(tee PUBLIC libc)
|
||||
|
||||
add_custom_target(tee-install
|
||||
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/tee ${BANAN_BIN}/
|
||||
COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/tee ${BANAN_BIN}/
|
||||
DEPENDS tee
|
||||
USES_TERMINAL
|
||||
)
|
||||
|
|
|
@ -11,6 +11,7 @@ target_compile_options(test PUBLIC -O2 -g)
|
|||
target_link_libraries(test PUBLIC libc)
|
||||
|
||||
add_custom_target(test-install
|
||||
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/test ${BANAN_BIN}/
|
||||
COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/test ${BANAN_BIN}/
|
||||
DEPENDS test
|
||||
USES_TERMINAL
|
||||
)
|
||||
|
|
|
@ -11,6 +11,7 @@ target_compile_options(touch PUBLIC -O2 -g)
|
|||
target_link_libraries(touch PUBLIC libc)
|
||||
|
||||
add_custom_target(touch-install
|
||||
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/touch ${BANAN_BIN}/
|
||||
COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/touch ${BANAN_BIN}/
|
||||
DEPENDS touch
|
||||
USES_TERMINAL
|
||||
)
|
||||
|
|
|
@ -11,6 +11,7 @@ target_compile_options(u8sum PUBLIC -O2 -g)
|
|||
target_link_libraries(u8sum PUBLIC libc)
|
||||
|
||||
add_custom_target(u8sum-install
|
||||
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/u8sum ${BANAN_BIN}/
|
||||
COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/u8sum ${BANAN_BIN}/
|
||||
DEPENDS u8sum
|
||||
USES_TERMINAL
|
||||
)
|
||||
|
|
|
@ -11,6 +11,7 @@ target_compile_options(whoami PUBLIC -O2 -g)
|
|||
target_link_libraries(whoami PUBLIC libc ban)
|
||||
|
||||
add_custom_target(whoami-install
|
||||
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/whoami ${BANAN_BIN}/
|
||||
COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/whoami ${BANAN_BIN}/
|
||||
DEPENDS whoami
|
||||
USES_TERMINAL
|
||||
)
|
||||
|
|
|
@ -11,6 +11,7 @@ target_compile_options(yes PUBLIC -O2 -g)
|
|||
target_link_libraries(yes PUBLIC libc)
|
||||
|
||||
add_custom_target(yes-install
|
||||
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/yes ${BANAN_BIN}/
|
||||
COMMAND sudo cp ${CMAKE_CURRENT_BINARY_DIR}/yes ${BANAN_BIN}/
|
||||
DEPENDS yes
|
||||
USES_TERMINAL
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue