forked from Bananymous/banan-os
				
			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
							
								
									a74eb357a1
								
							
						
					
					
						commit
						b05cf9ef09
					
				|  | @ -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