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:
Bananymous 2023-08-23 10:35:16 +03:00
parent a74eb357a1
commit b05cf9ef09
36 changed files with 58 additions and 49 deletions

3
.gitignore vendored
View File

@ -1,5 +1,8 @@
.vscode/ .vscode/
.idea/ .idea/
build/ build/
base/
*.tar.* *.tar.*
toolchain/*/ toolchain/*/
!base-sysroot.tar.gz

View File

@ -10,15 +10,17 @@ set(BAN_SOURCES
) )
add_custom_target(ban-headers 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 DEPENDS sysroot
USES_TERMINAL
) )
add_library(ban ${BAN_SOURCES}) add_library(ban ${BAN_SOURCES})
add_dependencies(ban headers libc-install) add_dependencies(ban headers libc-install)
add_custom_target(ban-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 DEPENDS ban
BYPRODUCTS ${BANAN_LIB}/libban.a BYPRODUCTS ${BANAN_LIB}/libban.a
USES_TERMINAL
) )

View File

@ -19,6 +19,7 @@ endif()
project(banan-os CXX) project(banan-os CXX)
set(BANAN_BASE_SYSROOT ${CMAKE_SOURCE_DIR}/base-sysroot.tar.gz)
set(BANAN_SYSROOT ${CMAKE_BINARY_DIR}/sysroot) set(BANAN_SYSROOT ${CMAKE_BINARY_DIR}/sysroot)
set(BANAN_INCLUDE ${BANAN_SYSROOT}/usr/include) set(BANAN_INCLUDE ${BANAN_SYSROOT}/usr/include)
set(BANAN_LIB ${BANAN_SYSROOT}/usr/lib) set(BANAN_LIB ${BANAN_SYSROOT}/usr/lib)
@ -34,11 +35,7 @@ add_subdirectory(userspace)
add_custom_target(sysroot add_custom_target(sysroot
COMMAND mkdir -p ${BANAN_SYSROOT} COMMAND mkdir -p ${BANAN_SYSROOT}
COMMAND mkdir -p ${BANAN_INCLUDE} COMMAND cd ${BANAN_SYSROOT} && sudo tar xf ${BANAN_BASE_SYSROOT}
COMMAND mkdir -p ${BANAN_LIB}
COMMAND mkdir -p ${BANAN_BIN}
COMMAND mkdir -p ${BANAN_BOOT}
COMMAND cp -r ${CMAKE_SOURCE_DIR}/base/* ${BANAN_SYSROOT}/
) )
add_custom_target(headers add_custom_target(headers
@ -66,6 +63,7 @@ add_custom_target(image
DEPENDS ban-install DEPENDS ban-install
DEPENDS libc-install DEPENDS libc-install
DEPENDS userspace-install DEPENDS userspace-install
DEPENDS libelf-install
USES_TERMINAL USES_TERMINAL
) )
@ -75,6 +73,7 @@ add_custom_target(image-full
DEPENDS ban-install DEPENDS ban-install
DEPENDS libc-install DEPENDS libc-install
DEPENDS userspace-install DEPENDS userspace-install
DEPENDS libelf-install
USES_TERMINAL USES_TERMINAL
) )

View File

@ -3,8 +3,9 @@ cmake_minimum_required(VERSION 3.26)
project(LibELF CXX) project(LibELF CXX)
add_custom_target(libelf-headers 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 DEPENDS sysroot
USES_TERMINAL
) )
add_custom_target(libelf-install add_custom_target(libelf-install

BIN
base-sysroot.tar.gz Normal file

Binary file not shown.

View File

@ -1 +0,0 @@
usr/bin

View File

@ -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
}

View File

View File

@ -1 +0,0 @@
host

View File

@ -1,2 +0,0 @@
root:x:0:0::/root:/bin/Shell
user:x:1000:1000::/home/user:/bin/Shell

View File

View File

@ -1 +0,0 @@
usr/lib

View File

@ -1 +0,0 @@
hello

View File

View File

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -144,18 +144,26 @@ endif()
target_link_options(kernel PUBLIC -ffreestanding -nostdlib) target_link_options(kernel PUBLIC -ffreestanding -nostdlib)
add_custom_target(crt0 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 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 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 DEPENDS sysroot
USES_TERMINAL
) )
add_custom_target(kernel-install 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 DEPENDS kernel
USES_TERMINAL
) )
execute_process(COMMAND ${CMAKE_CXX_COMPILER} -print-file-name=crtbegin.o OUTPUT_VARIABLE CRTBEGIN OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process(COMMAND ${CMAKE_CXX_COMPILER} -print-file-name=crtbegin.o OUTPUT_VARIABLE CRTBEGIN OUTPUT_STRIP_TRAILING_WHITESPACE)

View File

@ -23,8 +23,9 @@ set(LIBC_SOURCES
) )
add_custom_target(libc-headers 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 DEPENDS sysroot
USES_TERMINAL
) )
add_library(libc ${LIBC_SOURCES}) add_library(libc ${LIBC_SOURCES})
@ -33,9 +34,10 @@ add_dependencies(libc headers crt0)
target_compile_options(libc PRIVATE -g -Wstack-usage=512) target_compile_options(libc PRIVATE -g -Wstack-usage=512)
add_custom_target(libc-install 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 DEPENDS libc
BYPRODUCTS ${BANAN_LIB}/libc.a BYPRODUCTS ${BANAN_LIB}/libc.a
USES_TERMINAL
) )
set(CMAKE_STATIC_LIBRARY_PREFIX "") set(CMAKE_STATIC_LIBRARY_PREFIX "")

View File

@ -26,7 +26,8 @@ add_custom_target(userspace)
add_custom_target(userspace-install DEPENDS userspace) add_custom_target(userspace-install DEPENDS userspace)
foreach(USERSPACE_PROJECT ${USERSPACE_PROJECTS}) 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 ${USERSPACE_PROJECT})
add_dependencies(userspace-install ${USERSPACE_PROJECT}-install) add_dependencies(userspace-install ${USERSPACE_PROJECT}-install)
endforeach() endforeach()

View File

@ -11,6 +11,7 @@ target_compile_options(Shell PUBLIC -O2 -g)
target_link_libraries(Shell PUBLIC libc ban) target_link_libraries(Shell PUBLIC libc ban)
add_custom_target(Shell-install 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 DEPENDS Shell
USES_TERMINAL
) )

View File

@ -11,6 +11,7 @@ target_compile_options(cat PUBLIC -O2 -g)
target_link_libraries(cat PUBLIC libc) target_link_libraries(cat PUBLIC libc)
add_custom_target(cat-install 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 DEPENDS cat
USES_TERMINAL
) )

View File

@ -20,8 +20,9 @@ target_compile_options($PROGRAM_NAME PUBLIC -O2 -g)
target_link_libraries($PROGRAM_NAME PUBLIC libc) target_link_libraries($PROGRAM_NAME PUBLIC libc)
add_custom_target($PROGRAM_NAME-install 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 DEPENDS $PROGRAM_NAME
USES_TERMINAL
) )
EOF EOF

View File

@ -11,6 +11,7 @@ target_compile_options(echo PUBLIC -O2 -g)
target_link_libraries(echo PUBLIC libc) target_link_libraries(echo PUBLIC libc)
add_custom_target(echo-install 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 DEPENDS echo
USES_TERMINAL
) )

View File

@ -11,6 +11,7 @@ target_compile_options(id PUBLIC -O2 -g)
target_link_libraries(id PUBLIC libc ban) target_link_libraries(id PUBLIC libc ban)
add_custom_target(id-install 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 DEPENDS id
USES_TERMINAL
) )

View File

@ -11,6 +11,7 @@ target_compile_options(init PUBLIC -O2 -g)
target_link_libraries(init PUBLIC libc ban) target_link_libraries(init PUBLIC libc ban)
add_custom_target(init-install 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 DEPENDS init
USES_TERMINAL
) )

View File

@ -11,6 +11,7 @@ target_compile_options(ls PUBLIC -O2 -g)
target_link_libraries(ls PUBLIC libc) target_link_libraries(ls PUBLIC libc)
add_custom_target(ls-install 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 DEPENDS ls
USES_TERMINAL
) )

View File

@ -11,6 +11,7 @@ target_compile_options(stat PUBLIC -O2 -g)
target_link_libraries(stat PUBLIC libc ban) target_link_libraries(stat PUBLIC libc ban)
add_custom_target(stat-install 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 DEPENDS stat
USES_TERMINAL
) )

View File

@ -11,6 +11,7 @@ target_compile_options(tee PUBLIC -O2 -g)
target_link_libraries(tee PUBLIC libc) target_link_libraries(tee PUBLIC libc)
add_custom_target(tee-install 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 DEPENDS tee
USES_TERMINAL
) )

View File

@ -11,6 +11,7 @@ target_compile_options(test PUBLIC -O2 -g)
target_link_libraries(test PUBLIC libc) target_link_libraries(test PUBLIC libc)
add_custom_target(test-install 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 DEPENDS test
USES_TERMINAL
) )

View File

@ -11,6 +11,7 @@ target_compile_options(touch PUBLIC -O2 -g)
target_link_libraries(touch PUBLIC libc) target_link_libraries(touch PUBLIC libc)
add_custom_target(touch-install 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 DEPENDS touch
USES_TERMINAL
) )

View File

@ -11,6 +11,7 @@ target_compile_options(u8sum PUBLIC -O2 -g)
target_link_libraries(u8sum PUBLIC libc) target_link_libraries(u8sum PUBLIC libc)
add_custom_target(u8sum-install 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 DEPENDS u8sum
USES_TERMINAL
) )

View File

@ -11,6 +11,7 @@ target_compile_options(whoami PUBLIC -O2 -g)
target_link_libraries(whoami PUBLIC libc ban) target_link_libraries(whoami PUBLIC libc ban)
add_custom_target(whoami-install 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 DEPENDS whoami
USES_TERMINAL
) )

View File

@ -11,6 +11,7 @@ target_compile_options(yes PUBLIC -O2 -g)
target_link_libraries(yes PUBLIC libc) target_link_libraries(yes PUBLIC libc)
add_custom_target(yes-install 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 DEPENDS yes
USES_TERMINAL
) )