Skip to content

Commit 36ffd80

Browse files
dschrlubos
authored andcommitted
[nrf fromtree] cmake: fix syscall dependencies
Replace _parse_syscalls_target_ custom target with explicit dependency management for syscall depending file generation. Signed-off-by: David Schneider <[email protected]> (cherry picked from commit d85ed3212cae3adba3d8e9c2c384a2496f7c483e)
1 parent 4a7c8f4 commit 36ffd80

File tree

2 files changed

+18
-15
lines changed

2 files changed

+18
-15
lines changed

CMakeLists.txt

+10-11
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,6 @@ set(OFFSETS_H_TARGET offsets_h)
9696
set(SYSCALL_LIST_H_TARGET syscall_list_h_target)
9797
set(DRIVER_VALIDATION_H_TARGET driver_validation_h_target)
9898
set(KOBJ_TYPES_H_TARGET kobj_types_h_target)
99-
set(PARSE_SYSCALLS_TARGET parse_syscalls_target)
10099
set(DEVICE_API_LD_TARGET device_api_ld_target)
101100

102101
define_property(GLOBAL PROPERTY PROPERTY_OUTPUT_FORMAT BRIEF_DOCS " " FULL_DOCS " ")
@@ -834,7 +833,7 @@ add_custom_command(
834833
--file-list ${syscalls_file_list_output}
835834
$<$<BOOL:${CONFIG_EMIT_ALL_SYSCALLS}>:--emit-all-syscalls>
836835
DEPENDS ${syscalls_subdirs_trigger} ${PARSE_SYSCALLS_HEADER_DEPENDS}
837-
${syscalls_file_list_output} ${syscalls_interface}
836+
${syscalls_file_list_output} syscalls_interface
838837
)
839838

840839
# Make sure Picolibc is built before the rest of the system; there's no explicit
@@ -852,12 +851,6 @@ set_property(TARGET ${SYSCALL_LIST_H_TARGET}
852851
${CMAKE_CURRENT_BINARY_DIR}/include/generated/zephyr/syscalls
853852
)
854853

855-
add_custom_target(${PARSE_SYSCALLS_TARGET}
856-
DEPENDS
857-
${syscalls_json}
858-
${struct_tags_json}
859-
)
860-
861854
# 64-bit systems do not require special handling of 64-bit system call
862855
# parameters or return values, indicate this to the system call boilerplate
863856
# generation script.
@@ -900,7 +893,7 @@ add_custom_command(
900893
COMMAND
901894
${LEGACY_SYSCALL_LIST_H_ARGS}
902895
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
903-
DEPENDS ${PARSE_SYSCALLS_TARGET}
896+
DEPENDS ${syscalls_json}
904897
)
905898

906899
include(${ZEPHYR_BASE}/cmake/kobj.cmake)
@@ -911,9 +904,13 @@ gen_kobject_list(
911904
OUTPUTS ${DRV_VALIDATION}
912905
SCRIPT_ARGS --validation-output ${DRV_VALIDATION}
913906
INCLUDES ${struct_tags_json}
907+
DEPENDS ${struct_tags_json}
914908
)
915909

916-
gen_kobject_list_headers(INCLUDES ${struct_tags_json})
910+
gen_kobject_list_headers(
911+
INCLUDES ${struct_tags_json}
912+
DEPENDS ${struct_tags_json}
913+
)
917914

918915
# Generate sections for kernel device subsystems
919916
set(
@@ -1270,6 +1267,7 @@ if(CONFIG_USERSPACE)
12701267
OUTPUT ${KOBJECT_PREBUILT_HASH_LIST}
12711268
KERNEL_TARGET ${ZEPHYR_LINK_STAGE_EXECUTABLE}
12721269
INCLUDES ${struct_tags_json}
1270+
DEPENDS ${struct_tags_json}
12731271
)
12741272

12751273
add_custom_command(
@@ -1466,6 +1464,7 @@ if(CONFIG_USERSPACE)
14661464
OUTPUT ${KOBJECT_HASH_LIST}
14671465
KERNEL_TARGET ${ZEPHYR_LINK_STAGE_EXECUTABLE}
14681466
INCLUDES ${struct_tags_json}
1467+
DEPENDS ${struct_tags_json}
14691468
)
14701469

14711470
# Use gperf to generate C code (KOBJECT_HASH_OUTPUT_SRC_PRE) which implements a
@@ -2298,7 +2297,7 @@ if(CONFIG_LLEXT_EDK)
22982297
${SYSCALL_SPLIT_TIMEOUT_ARG}
22992298
COMMAND ${CMAKE_COMMAND}
23002299
-P ${ZEPHYR_BASE}/cmake/llext-edk.cmake
2301-
DEPENDS ${logical_target_for_zephyr_elf} build_info_yaml_saved
2300+
DEPENDS ${logical_target_for_zephyr_elf} ${syscalls_json} build_info_yaml_saved
23022301
COMMAND_EXPAND_LISTS
23032302
)
23042303
add_custom_target(llext-edk DEPENDS ${llext_edk_file})

cmake/kobj.cmake

+8-4
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ function(gen_kobject_list)
2323
DEPENDS
2424
${arg_DEPENDS}
2525
${GEN_KOBJECT_LIST}
26-
${PARSE_SYSCALLS_TARGET}
2726
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
2827
)
2928
add_custom_target(${arg_TARGET} DEPENDS ${arg_OUTPUTS})
@@ -35,7 +34,7 @@ function(gen_kobject_list_gperf)
3534
cmake_parse_arguments(PARSE_ARGV 0 arg
3635
""
3736
"TARGET;OUTPUT;KERNEL_TARGET"
38-
"INCLUDES"
37+
"INCLUDES;DEPENDS"
3938
)
4039
gen_kobject_list(
4140
TARGET ${arg_TARGET}
@@ -44,7 +43,9 @@ function(gen_kobject_list_gperf)
4443
--kernel $<TARGET_FILE:${arg_KERNEL_TARGET}>
4544
--gperf-output ${arg_OUTPUT}
4645
INCLUDES ${arg_INCLUDES}
47-
DEPENDS ${arg_KERNEL_TARGET}
46+
DEPENDS
47+
${arg_DEPENDS}
48+
${arg_KERNEL_TARGET}
4849
)
4950
endfunction()
5051

@@ -54,7 +55,7 @@ function(gen_kobject_list_headers)
5455
cmake_parse_arguments(PARSE_ARGV 0 arg
5556
""
5657
"GEN_DIR_OUT_VAR"
57-
"INCLUDES"
58+
"INCLUDES;DEPENDS"
5859
)
5960
if (PROJECT_BINARY_DIR)
6061
set(gen_dir ${PROJECT_BINARY_DIR}/include/generated/zephyr)
@@ -76,6 +77,9 @@ function(gen_kobject_list_headers)
7677
--kobj-otype-output ${KOBJ_OTYPE}
7778
--kobj-size-output ${KOBJ_SIZE}
7879
INCLUDES ${arg_INCLUDES}
80+
DEPENDS
81+
${arg_DEPENDS}
82+
${arg_KERNEL_TARGET}
7983
)
8084

8185
if(arg_GEN_DIR_OUT_VAR)

0 commit comments

Comments
 (0)