From d2f1fea63e94e1e42de41438408e59e996ffd23a Mon Sep 17 00:00:00 2001 From: Siva Chandra Reddy Date: Tue, 12 Sep 2023 05:42:37 +0000 Subject: [PATCH 1/2] [libc][NFC] Make entrypoint alias targets real library targets. This is part of a libc wide CMake cleanup which aims to eliminate certain explicitly duplicated logic which is available in CMake-3.20. This change in particular makes the entrypoint aliases real library targets so that they can be treated as normal library targets by other libc build rules. --- libc/cmake/modules/LLVMLibCObjectRules.cmake | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/libc/cmake/modules/LLVMLibCObjectRules.cmake b/libc/cmake/modules/LLVMLibCObjectRules.cmake index 709acd9ad614f..006b8949b6fd0 100644 --- a/libc/cmake/modules/LLVMLibCObjectRules.cmake +++ b/libc/cmake/modules/LLVMLibCObjectRules.cmake @@ -559,6 +559,8 @@ function(create_entrypoint_object fq_target_name) return() endif() + set(internal_target_name ${fq_target_name}.__internal__) + if(ADD_ENTRYPOINT_OBJ_ALIAS) # Alias targets help one add aliases to other entrypoint object targets. # One can use alias targets setup OS/machine independent entrypoint targets. @@ -586,10 +588,23 @@ function(create_entrypoint_object fq_target_name) message(FATAL_ERROR "The aliasee of an entrypoint alias should be an entrypoint.") endif() - add_custom_target(${fq_target_name}) - add_dependencies(${fq_target_name} ${fq_dep_name}) + # add_custom_target(${fq_target_name}) get_target_property(object_file ${fq_dep_name} "OBJECT_FILE") get_target_property(object_file_raw ${fq_dep_name} "OBJECT_FILE_RAW") + add_library( + ${internal_target_name} + EXCLUDE_FROM_ALL + OBJECT + ${object_file_raw} + ) + add_dependencies(${internal_target_name} ${fq_dep_name}) + add_library( + ${fq_target_name} + EXCLUDE_FROM_ALL + OBJECT + ${object_file} + ) + add_dependencies(${fq_target_name} ${fq_dep_name} ${internal_target_name}) set_target_properties( ${fq_target_name} PROPERTIES @@ -619,7 +634,6 @@ function(create_entrypoint_object fq_target_name) "${ADD_ENTRYPOINT_OBJ_FLAGS}" ${ADD_ENTRYPOINT_OBJ_COMPILE_OPTIONS} ) - set(internal_target_name ${fq_target_name}.__internal__) set(include_dirs ${LIBC_SOURCE_DIR} ${LIBC_INCLUDE_DIR}) get_fq_deps_list(fq_deps_list ${ADD_ENTRYPOINT_OBJ_DEPENDS}) set(full_deps_list ${fq_deps_list} libc.src.__support.common) From 0f3413b476cb955ef924e6f505fc1515b38c3701 Mon Sep 17 00:00:00 2001 From: Siva Chandra Reddy Date: Tue, 12 Sep 2023 16:30:50 +0000 Subject: [PATCH 2/2] [libc][NFC] Remove stray comment. --- libc/cmake/modules/LLVMLibCObjectRules.cmake | 1 - 1 file changed, 1 deletion(-) diff --git a/libc/cmake/modules/LLVMLibCObjectRules.cmake b/libc/cmake/modules/LLVMLibCObjectRules.cmake index 006b8949b6fd0..4d5835cc6b4d8 100644 --- a/libc/cmake/modules/LLVMLibCObjectRules.cmake +++ b/libc/cmake/modules/LLVMLibCObjectRules.cmake @@ -588,7 +588,6 @@ function(create_entrypoint_object fq_target_name) message(FATAL_ERROR "The aliasee of an entrypoint alias should be an entrypoint.") endif() - # add_custom_target(${fq_target_name}) get_target_property(object_file ${fq_dep_name} "OBJECT_FILE") get_target_property(object_file_raw ${fq_dep_name} "OBJECT_FILE_RAW") add_library(