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/
|
.vscode/
|
||||||
.idea/
|
.idea/
|
||||||
build/
|
build/
|
||||||
|
base/
|
||||||
*.tar.*
|
*.tar.*
|
||||||
toolchain/*/
|
toolchain/*/
|
||||||
|
|
||||||
|
!base-sysroot.tar.gz
|
||||||
|
|
|
@ -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
|
||||||
)
|
)
|
||||||
|
|
|
@ -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
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
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)
|
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)
|
||||||
|
|
|
@ -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 "")
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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
|
||||||
)
|
)
|
||||||
|
|
|
@ -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
|
||||||
)
|
)
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
)
|
)
|
||||||
|
|
|
@ -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
|
||||||
)
|
)
|
||||||
|
|
|
@ -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
|
||||||
)
|
)
|
||||||
|
|
|
@ -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
|
||||||
)
|
)
|
||||||
|
|
|
@ -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
|
||||||
)
|
)
|
||||||
|
|
|
@ -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
|
||||||
)
|
)
|
||||||
|
|
|
@ -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
|
||||||
)
|
)
|
||||||
|
|
|
@ -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
|
||||||
)
|
)
|
||||||
|
|
|
@ -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
|
||||||
)
|
)
|
||||||
|
|
|
@ -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
|
||||||
)
|
)
|
||||||
|
|
|
@ -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
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue