@@ -76,6 +76,7 @@ def _fortran_binary_impl(ctx):
76
76
objects = _compile (
77
77
actions = ctx .actions ,
78
78
defines = ctx .attr .defines ,
79
+ deps = ctx .attr .deps ,
79
80
feature_configuration = feature_configuration ,
80
81
fopts = ctx .attr .fopts ,
81
82
fortran_toolchain = fortran_toolchain ,
@@ -118,6 +119,7 @@ def _fortran_library_impl(ctx):
118
119
objects = _compile (
119
120
actions = ctx .actions ,
120
121
defines = ctx .attr .defines ,
122
+ deps = ctx .attr .deps ,
121
123
feature_configuration = feature_configuration ,
122
124
fopts = ctx .attr .fopts ,
123
125
fortran_toolchain = fortran_toolchain ,
@@ -140,6 +142,7 @@ def _fortran_library_impl(ctx):
140
142
),
141
143
OutputGroupInfo (
142
144
archive = depset ([output ]),
145
+ includes = ctx .files .includes ,
143
146
),
144
147
]
145
148
@@ -167,6 +170,7 @@ def _get_configuration(ctx):
167
170
def _compile (
168
171
actions ,
169
172
defines ,
173
+ deps ,
170
174
feature_configuration ,
171
175
fopts ,
172
176
fortran_toolchain ,
@@ -178,8 +182,17 @@ def _compile(
178
182
actions .declare_file (paths .replace_extension (src .path , ".o" ))
179
183
for src in srcs
180
184
]
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
+ ]
181
194
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
183
196
command = """\
184
197
set -o errexit -o nounset -o pipefail
185
198
@@ -200,7 +213,10 @@ set -o errexit -o nounset -o pipefail
200
213
)
201
214
actions .run_shell (
202
215
command = command ,
203
- inputs = depset (srcs + includes ),
216
+ inputs = depset (
217
+ direct = srcs + includes ,
218
+ transitive = [deps_includes ],
219
+ ),
204
220
outputs = objects ,
205
221
tools = fortran_toolchain .all_files ,
206
222
)
0 commit comments