@@ -202,6 +202,10 @@ CC_EXTERNAL_RULE_ATTRIBUTES = {
202202 ),
203203 mandatory = False ,
204204 ),
205+ "out_pc_dir" : attr .string (
206+ doc = "Optional name of the output directory with the pkgconfig files" ,
207+ mandatory = False ,
208+ ),
205209 "postfix_script" : attr .string (
206210 doc = "Optional part of the shell script to be added after the make commands" ,
207211 mandatory = False ,
@@ -592,7 +596,8 @@ def cc_external_rule_impl(ctx, attrs):
592596 outputs .out_binary_files +
593597 outputs .libraries .static_libraries +
594598 outputs .libraries .shared_libraries +
595- [outputs .out_include_dir ] if outputs .out_include_dir else []
599+ [outputs .out_include_dir ] if outputs .out_include_dir else [] +
600+ [outputs .out_pc_dir ] if outputs .out_pc_dir else []
596601 )
597602 output_groups = _declare_output_groups (installdir_copy .file , output_groups )
598603 wrapped_files = [
@@ -842,6 +847,7 @@ _Outputs = provider(
842847 out_include_dir = "Directory with header files (relative to install directory)" ,
843848 out_binary_files = "Binary files, which will be created by the action" ,
844849 libraries = "Library files, which will be created by the action" ,
850+ out_pc_dir = "Directory with pkgconfig files (relative to install directory)" ,
845851 declared_outputs = "All output files and directories of the action" ,
846852 ),
847853)
@@ -854,6 +860,7 @@ def _define_outputs(ctx, attrs, lib_name):
854860 attr_out_data_files = attrs .out_data_files
855861 attr_shared_libs = attrs .out_shared_libs
856862 attr_static_libs = attrs .out_static_libs
863+ attr_out_pc_dir = attrs .out_pc_dir
857864
858865 static_libraries = []
859866 if not attr_headers_only :
@@ -875,6 +882,11 @@ def _define_outputs(ctx, attrs, lib_name):
875882 else :
876883 out_include_dir = ""
877884
885+ if attrs .out_pc_dir and (attr_shared_libs or attr_static_libs ):
886+ out_pc_dir = ctx .actions .declare_directory (lib_name + "/" + attr_out_pc_dir .lstrip ("/" ))
887+ else :
888+ out_pc_dir = ""
889+
878890 out_data_dirs = []
879891 for dir in attr_out_data_dirs :
880892 out_data_dirs .append (ctx .actions .declare_directory (lib_name + "/" + dir .lstrip ("/" )))
@@ -893,11 +905,13 @@ def _define_outputs(ctx, attrs, lib_name):
893905 declared_outputs += out_data_dirs + out_binary_files + out_data_files
894906 declared_outputs += libraries .static_libraries
895907 declared_outputs += libraries .shared_libraries + libraries .interface_libraries
908+ declared_outputs += [out_pc_dir ] if out_pc_dir else []
896909
897910 return _Outputs (
898911 out_include_dir = out_include_dir ,
899912 out_binary_files = out_binary_files ,
900913 libraries = libraries ,
914+ out_pc_dir = out_pc_dir ,
901915 declared_outputs = declared_outputs ,
902916 )
903917
0 commit comments