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:
parent
9e1b5cbaab
commit
22548a3f4a
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue