BuildSystem: Fix crt file installation

crt files for userspace are now a dependency of libc, which means that
everytime libc gets installed, crt files will also install.

This fixes the problem when building libc
This commit is contained in:
Bananymous 2024-06-21 17:10:58 +03:00
parent 9e1b5cbaab
commit 22548a3f4a
2 changed files with 9 additions and 10 deletions

View File

@ -53,7 +53,6 @@ add_custom_target(userspace)
foreach(project ${USERSPACE_PROJECTS})
add_subdirectory(${project})
add_dependencies(${project} crtx-install)
add_dependencies(userspace ${project})
# This is to allow cmake to link when libc updates
target_link_options(${project} PRIVATE -nolibc)

View File

@ -35,15 +35,15 @@ add_library(libc ${LIBC_SOURCES})
target_compile_options(libc PRIVATE -O2 -g -Wstack-usage=512 -fno-tree-loop-distribute-patterns -nostdlib)
target_compile_options(libc PUBLIC -Wall -Wextra -Werror -Wno-error=stack-usage=)
add_library(crt0 OBJECT arch/${BANAN_ARCH}/crt0.S)
add_library(crti OBJECT arch/${BANAN_ARCH}/crti.S)
add_library(crtn OBJECT arch/${BANAN_ARCH}/crtn.S)
add_custom_target(crtx-install
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_OBJECTS:crt0> ${CMAKE_INSTALL_LIBDIR}/crt0.o
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_OBJECTS:crti> ${CMAKE_INSTALL_LIBDIR}/crti.o
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_OBJECTS:crtn> ${CMAKE_INSTALL_LIBDIR}/crtn.o
DEPENDS crt0 crti crtn sysroot
)
function(add_crtx crtx)
add_custom_target(${crtx} COMMAND ${CMAKE_CXX_COMPILER} -c -o ${crtx}.o ${CMAKE_CURRENT_SOURCE_DIR}/arch/${BANAN_ARCH}/${crtx}.S)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${crtx}.o DESTINATION ${CMAKE_INSTALL_LIBDIR} OPTIONAL)
add_dependencies(libc ${crtx})
endfunction()
add_crtx(crt0)
add_crtx(crti)
add_crtx(crtn)
banan_include_headers(libc ban)
banan_include_headers(libc kernel)