@@ -22,6 +22,7 @@ load("//cc/common:cc_info.bzl", "CcInfo")
2222load ("//cc/common:debug_package_info.bzl" , "DebugPackageInfo" )
2323load ("//cc/common:semantics.bzl" , "semantics" )
2424load (":attrs.bzl" , "cc_binary_attrs" )
25+ load (":cc_postmark.bzl" , "postmark" )
2526load (":cc_shared_library.bzl" , "GraphNodeInfo" , "add_unused_dynamic_deps" , "build_exports_map_from_only_dynamic_deps" , "build_link_once_static_libs_map" , "dynamic_deps_initializer" , "merge_cc_shared_library_infos" , "separate_static_and_dynamic_link_libraries" , "sort_linker_inputs" , "throw_linked_but_not_exported_errors" )
2627
2728_CcLauncherInfo = cc_common .launcher_provider
@@ -307,7 +308,8 @@ def _create_transitive_linking_actions(
307308 additional_linkopts ,
308309 additional_make_variable_substitutions ,
309310 link_variables ,
310- additional_outputs ):
311+ additional_outputs ,
312+ stamp ):
311313 cc_compilation_outputs_with_only_objects = cc_common .create_compilation_outputs (objects = None , pic_objects = None )
312314 deps_cc_info = CcInfo (linking_context = deps_cc_linking_context )
313315 libraries_for_current_cc_linking_context = []
@@ -381,7 +383,7 @@ def _create_transitive_linking_actions(
381383 feature_configuration = feature_configuration ,
382384 cc_toolchain = cc_toolchain ,
383385 compilation_outputs = cc_compilation_outputs_with_only_objects ,
384- stamp = cc_helper . is_stamping_enabled ( ctx ),
386+ stamp = int ( stamp ),
385387 additional_inputs = additional_linker_inputs ,
386388 linking_contexts = [cc_linking_context ],
387389 name = ctx .label .name ,
@@ -633,6 +635,16 @@ def cc_binary_impl(ctx, additional_linkopts, force_linkstatic = False):
633635 if extra_link_time_libraries != None :
634636 linker_inputs_extra , runtime_libraries_extra = cc_common .build_extra_link_time_libraries (extra_libraries = extra_link_time_libraries , ctx = ctx , static_mode = linking_mode != linker_mode .LINKING_DYNAMIC , for_dynamic_library = _is_link_shared (ctx ))
635637
638+ use_postmark = postmark .get_use_postmark (ctx )
639+ output_binary_for_linking = binary
640+ link_stamp = cc_helper .is_stamping_enabled (ctx )
641+ if use_postmark :
642+ output_binary_for_linking = ctx .actions .declare_file (
643+ "unstamped_" + binary .basename ,
644+ sibling = binary ,
645+ )
646+ link_stamp = False
647+
636648 cc_linking_outputs_binary , cc_launcher_info , deps_cc_linking_context = _create_transitive_linking_actions (
637649 ctx ,
638650 cc_toolchain ,
@@ -641,7 +653,7 @@ def cc_binary_impl(ctx, additional_linkopts, force_linkstatic = False):
641653 cc_compilation_outputs ,
642654 additional_linker_inputs ,
643655 cc_linking_outputs ,
644- binary ,
656+ output_binary_for_linking ,
645657 deps_cc_linking_context ,
646658 linker_inputs_extra ,
647659 link_compile_output_separately ,
@@ -651,8 +663,17 @@ def cc_binary_impl(ctx, additional_linkopts, force_linkstatic = False):
651663 additional_make_variable_substitutions ,
652664 link_variables ,
653665 additional_linker_outputs ,
666+ stamp = link_stamp ,
654667 )
655668
669+ if use_postmark :
670+ postmark .add_action (
671+ ctx ,
672+ cc_toolchain ,
673+ binary ,
674+ output_binary_for_linking ,
675+ )
676+
656677 cc_linking_outputs_binary_library = cc_linking_outputs_binary .library_to_link
657678 libraries = []
658679 if _is_link_shared (ctx ) and cc_linking_outputs_binary_library != None :
@@ -809,6 +830,10 @@ ALLOWED_SRC_FILES.extend(cc_helper.extensions.SHARED_LIBRARY)
809830ALLOWED_SRC_FILES .extend (cc_helper .extensions .OBJECT_FILE )
810831ALLOWED_SRC_FILES .extend (cc_helper .extensions .PIC_OBJECT_FILE )
811832
833+ def _cc_binary_initializer (** kwargs ):
834+ kwargs = postmark .initializer (** kwargs )
835+ return dynamic_deps_initializer (** kwargs )
836+
812837def _impl (ctx ):
813838 binary_info , providers = cc_binary_impl (ctx , [])
814839
@@ -831,7 +856,7 @@ def _impl(ctx):
831856
832857cc_binary = rule (
833858 implementation = _impl ,
834- initializer = dynamic_deps_initializer ,
859+ initializer = _cc_binary_initializer ,
835860 doc = """
836861<p>It produces an executable binary.</p>
837862
0 commit comments