[libc] Add an optional `NAME` argument to `add_entrypoint_object` rule.
authorSiva Chandra Reddy <sivachandra@google.com>
Fri, 21 Feb 2020 06:05:52 +0000 (22:05 -0800)
committerSiva Chandra Reddy <sivachandra@google.com>
Thu, 27 Feb 2020 05:41:58 +0000 (21:41 -0800)
This argument can be used to specify the entrypoint name if it is different
from the target name.

Reviewers: gchatelet, abrachet

Differential Revision: https://reviews.llvm.org/D74948

libc/cmake/modules/LLVMLibCRules.cmake

index e807998..3575c7b 100644 (file)
@@ -101,6 +101,7 @@ set(ENTRYPOINT_OBJ_TARGET_TYPE "ENTRYPOINT_OBJ")
 #     add_entrypoint_object(
 #       <target_name>
 #       [REDIRECTED] # Specified if the entrypoint is redirected.
+#       [NAME] <the C name of the entrypoint if different from target_name>
 #       SRCS <list of .cpp files>
 #       HDRS <list of .h files>
 #       DEPENDS <list of dependencies>
@@ -109,7 +110,7 @@ function(add_entrypoint_object target_name)
   cmake_parse_arguments(
     "ADD_ENTRYPOINT_OBJ"
     "REDIRECTED" # Optional argument
-    "" # No single value arguments
+    "NAME" # Single value arguments
     "SRCS;HDRS;DEPENDS"  # Multi value arguments
     ${ARGN}
   )
@@ -120,6 +121,11 @@ function(add_entrypoint_object target_name)
     message(FATAL_ERROR "`add_entrypoint_object` rule requires HDRS to be specified.")
   endif()
 
+  set(entrypoint_name ${target_name})
+  if(ADD_ENTRYPOINT_OBJ_NAME)
+    set(entrypoint_name ${ADD_ENTRYPOINT_OBJ_NAME})
+  endif()
+
   add_library(
     "${target_name}_objects"
     # We want an object library as the objects will eventually get packaged into
@@ -168,7 +174,7 @@ function(add_entrypoint_object target_name)
     OUTPUT ${object_file}
     # We llvm-objcopy here as GNU-binutils objcopy does not support the 'hidden' flag.
     DEPENDS ${object_file_raw} ${llvm-objcopy}
-    COMMAND $<TARGET_FILE:llvm-objcopy> --add-symbol "${target_name}=.llvm.libc.entrypoint.${target_name}:${alias_attributes}" ${object_file_raw} ${object_file}
+    COMMAND $<TARGET_FILE:llvm-objcopy> --add-symbol "${entrypoint_name}=.llvm.libc.entrypoint.${entrypoint_name}:${alias_attributes}" ${object_file_raw} ${object_file}
   )
 
   add_custom_target(