From c660df14ec4f0b94ce3aea96f16ddb5a46d4c2a1 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Mon, 10 Apr 2023 20:27:20 +0300 Subject: [PATCH] BuildSystem: Fix header copying to sysroot We used to copy all headers everytime to sysroot which caused rebuild of the whole os. Now we use the cmake command 'copy_directory_if_different' which seemed to fix this issue :) --- BAN/CMakeLists.txt | 2 +- kernel/CMakeLists.txt | 4 ++-- libc/CMakeLists.txt | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/BAN/CMakeLists.txt b/BAN/CMakeLists.txt index 49e239ec3..6fd2afc6b 100644 --- a/BAN/CMakeLists.txt +++ b/BAN/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.26) project(BAN CXX) add_custom_target(ban-headers - COMMAND cp -r ${CMAKE_CURRENT_SOURCE_DIR}/include/* ${BANAN_INCLUDE} + COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_CURRENT_SOURCE_DIR}/include ${BANAN_INCLUDE} DEPENDS sysroot ) diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index 2fd9cb3de..667406bd1 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -97,6 +97,7 @@ set(KERNEL_SOURCES ) add_executable(kernel ${KERNEL_SOURCES}) +add_dependencies(kernel headers) target_compile_definitions(kernel PUBLIC __is_kernel) target_compile_definitions(kernel PUBLIC __arch=${BANAN_ARCH}) @@ -126,13 +127,12 @@ add_custom_target(crt0 ) add_custom_target(kernel-headers - COMMAND cp -r ${CMAKE_CURRENT_SOURCE_DIR}/include/* ${BANAN_INCLUDE}/ + COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_CURRENT_SOURCE_DIR}/include ${BANAN_INCLUDE} DEPENDS sysroot ) add_custom_target(kernel-install COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/kernel ${BANAN_BOOT}/banan-os.kernel - DEPENDS kernel-headers DEPENDS kernel ) diff --git a/libc/CMakeLists.txt b/libc/CMakeLists.txt index 1ce5ef81e..698e24769 100644 --- a/libc/CMakeLists.txt +++ b/libc/CMakeLists.txt @@ -11,12 +11,12 @@ set(LIBC_SOURCES ) add_custom_target(libc-headers - COMMAND cp -r ${CMAKE_CURRENT_SOURCE_DIR}/include/* ${BANAN_INCLUDE} + COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_CURRENT_SOURCE_DIR}/include ${BANAN_INCLUDE} DEPENDS sysroot ) add_library(libc ${LIBC_SOURCES}) -add_dependencies(libc crt0) +add_dependencies(libc headers crt0) add_custom_target(libc-install COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/libc.a ${BANAN_LIB}/