Skip to content

Commit 233856a

Browse files
committed
Introduce out_pc_dir attribute
1 parent 2eca712 commit 233856a

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

foreign_cc/private/framework.bzl

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

foreign_cc/providers.bzl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ Instances of ForeignCcArtifactInfo are encapsulated in a depset [ForeignCcDepsIn
2020
"dll_dir_name": "DLL directory, relative to install directory",
2121
"gen_dir": "Install directory",
2222
"include_dir_name": "Include directory, relative to install directory",
23+
"pc_dir_name": "Pkgconfig directory, relative to install directory",
2324
"lib_dir_name": "Lib directory, relative to install directory",
2425
},
2526
)

0 commit comments

Comments
 (0)