Skip to content

Commit f8847bc

Browse files
committed
feat: add include paths of transitive deps for Fortran rules
1 parent 3220cef commit f8847bc

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

rules_fortran/defs.bzl

+18-2
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ def _fortran_binary_impl(ctx):
7676
objects = _compile(
7777
actions = ctx.actions,
7878
defines = ctx.attr.defines,
79+
deps = ctx.attr.deps,
7980
feature_configuration = feature_configuration,
8081
fopts = ctx.attr.fopts,
8182
fortran_toolchain = fortran_toolchain,
@@ -118,6 +119,7 @@ def _fortran_library_impl(ctx):
118119
objects = _compile(
119120
actions = ctx.actions,
120121
defines = ctx.attr.defines,
122+
deps = ctx.attr.deps,
121123
feature_configuration = feature_configuration,
122124
fopts = ctx.attr.fopts,
123125
fortran_toolchain = fortran_toolchain,
@@ -140,6 +142,7 @@ def _fortran_library_impl(ctx):
140142
),
141143
OutputGroupInfo(
142144
archive = depset([output]),
145+
includes = ctx.files.includes,
143146
),
144147
]
145148

@@ -167,6 +170,7 @@ def _get_configuration(ctx):
167170
def _compile(
168171
actions,
169172
defines,
173+
deps,
170174
feature_configuration,
171175
fopts,
172176
fortran_toolchain,
@@ -178,8 +182,17 @@ def _compile(
178182
actions.declare_file(paths.replace_extension(src.path, ".o"))
179183
for src in srcs
180184
]
185+
deps_includes = []
186+
for dep in deps:
187+
if hasattr(dep.output_groups, "includes"):
188+
deps_includes.append(dep.output_groups.includes)
189+
deps_includes = depset(direct = [], transitive = deps_includes)
190+
deps_includes_flags = [
191+
"-I{}".format(inc.dirname)
192+
for inc in deps_includes.to_list()
193+
]
181194
defines_flags = ["-D{}".format(define) for define in defines]
182-
flags = defines_flags + compile_flags + fopts
195+
flags = defines_flags + compile_flags + fopts + deps_includes_flags
183196
command = """\
184197
set -o errexit -o nounset -o pipefail
185198
@@ -200,7 +213,10 @@ set -o errexit -o nounset -o pipefail
200213
)
201214
actions.run_shell(
202215
command = command,
203-
inputs = depset(srcs + includes),
216+
inputs = depset(
217+
direct = srcs + includes,
218+
transitive = [deps_includes],
219+
),
204220
outputs = objects,
205221
tools = fortran_toolchain.all_files,
206222
)

0 commit comments

Comments
 (0)