@@ -133,16 +133,36 @@ impl Interface {
133133 }
134134
135135 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" ) ;
137140 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 ! (
141146 "Failed to {INCLUDE_VERB} `{dest}` for export_include_directory `{dir_name}`: {e:?}" ,
142147 dir_name = header_dir. to_string_lossy( )
143148 )
144149 } ;
145150 }
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+ }
146166 }
147167}
148168
0 commit comments