@@ -133,16 +133,36 @@ impl Interface {
133
133
}
134
134
135
135
fn write_exported_include_directories ( & self ) {
136
- let header_root = dir:: header_root ( ) ;
136
+ // Add any export directories as a child of the include interface directory
137
+ let header_root_interface = dir:: header_root_interface ( ) ;
138
+ std:: fs:: create_dir_all ( & header_root_interface)
139
+ . expect ( "Failed to create header root for interface" ) ;
137
140
for ( header_dir, dest) in & self . exported_include_directories {
138
- let dest_dir = header_root. join ( dest) ;
139
- if let Err ( e) = dir:: symlink_or_copy_directory ( header_dir, dest_dir) {
140
- panic ! (
141
+ let dest_dir = header_root_interface. join ( dest) ;
142
+ match dir:: symlink_or_copy_directory ( header_dir, & dest_dir) {
143
+ Ok ( true ) => { } ,
144
+ Ok ( false ) => panic ! ( "Failed to create symlink folder for `{dest}`" ) ,
145
+ Err ( e) => panic ! (
141
146
"Failed to {INCLUDE_VERB} `{dest}` for export_include_directory `{dir_name}`: {e:?}" ,
142
147
dir_name = header_dir. to_string_lossy( )
143
148
)
144
149
} ;
145
150
}
151
+
152
+ // Add any reexport links as a child of the include interface directory
153
+ let header_root = dir:: header_root ( ) ;
154
+ for reexport in & self . reexport_links {
155
+ let source_dir = header_root. join ( reexport) ;
156
+ let dest_dir = header_root_interface. join ( reexport) ;
157
+ match dir:: symlink_or_copy_directory ( & source_dir, & dest_dir) {
158
+ Ok ( true ) => { } ,
159
+ Ok ( false ) => panic ! ( "Failed to create symlink folder for `{reexport}`" ) ,
160
+ Err ( e) => panic ! (
161
+ "Failed to {INCLUDE_VERB} `{reexport}` for export_include_directory `{dir_name}`: {e:?}" ,
162
+ dir_name = source_dir. to_string_lossy( )
163
+ )
164
+ } ;
165
+ }
146
166
}
147
167
}
148
168
0 commit comments