From c1c54b13a6ec93c74d674e365e3e0cae80de531c Mon Sep 17 00:00:00 2001 From: Andrew Boie Date: Mon, 16 Mar 2020 12:48:00 -0700 Subject: [PATCH] build: prevent subsystems.json from being gen Actual files make terrible dependency targets in CMake. Wrap the generation of subsystems.json into a custom target to get around this. Fixes a problem where parse_syscalls.py was being called multiple times. Fixes: #23504 Signed-off-by: Andrew Boie --- CMakeLists.txt | 10 ++++++---- cmake/kobj.cmake | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 82407c7284c..96b499909ce 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -54,7 +54,7 @@ set(SYSCALL_LIST_H_TARGET syscall_list_h_target) set(DRIVER_VALIDATION_H_TARGET driver_validation_h_target) set(KOBJ_TYPES_H_TARGET kobj_types_h_target) set(LINKER_SCRIPT_TARGET linker_script_target) - +set(PARSE_SYSCALLS_TARGET parse_syscalls_target) define_property(GLOBAL PROPERTY PROPERTY_OUTPUT_FORMAT BRIEF_DOCS " " FULL_DOCS " ") set_property( GLOBAL PROPERTY PROPERTY_OUTPUT_FORMAT elf32-little${ARCH}) # BFD format @@ -598,6 +598,8 @@ add_custom_command( ) add_custom_target(${SYSCALL_LIST_H_TARGET} DEPENDS ${syscall_list_h}) +add_custom_target(${PARSE_SYSCALLS_TARGET} + DEPENDS ${syscalls_json} ${subsys_json}) # 64-bit systems do not require special handling of 64-bit system call # parameters or return values, indicate this to the system call boilerplate @@ -617,7 +619,7 @@ add_custom_command(OUTPUT include/generated/syscall_dispatch.c ${syscall_list_h} --syscall-list ${syscall_list_h} ${SYSCALL_LONG_REGISTERS_ARG} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - DEPENDS ${syscalls_json} + DEPENDS ${PARSE_SYSCALLS_TARGET} ) # This is passed into all calls to the gen_kobject_list.py script. @@ -634,7 +636,7 @@ add_custom_command( $<$:--verbose> DEPENDS ${ZEPHYR_BASE}/scripts/gen_kobject_list.py - ${subsys_json} + ${PARSE_SYSCALLS_TARGET} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) add_custom_target(${DRIVER_VALIDATION_H_TARGET} DEPENDS ${DRV_VALIDATION}) @@ -954,7 +956,7 @@ if(CONFIG_USERSPACE) $<$:--verbose> DEPENDS ${ZEPHYR_PREBUILT_EXECUTABLE} - ${subsys_json} + ${PARSE_SYSCALLS_TARGET} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) add_custom_target(obj_list DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${OBJ_LIST}) diff --git a/cmake/kobj.cmake b/cmake/kobj.cmake index f54e148a60d..66393373276 100644 --- a/cmake/kobj.cmake +++ b/cmake/kobj.cmake @@ -25,7 +25,7 @@ function(gen_kobj gen_dir_out) $<$:--verbose> DEPENDS $ENV{ZEPHYR_BASE}/scripts/gen_kobject_list.py - ${subsys_json} + ${PARSE_SYSCALLS_TARGET} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) add_custom_target(${KOBJ_TYPES_H_TARGET} DEPENDS ${KOBJ_TYPES} ${KOBJ_OTYPE})