| ... | @@ -735,7 +735,11 @@ fn addCxxKnownPath( | ... | @@ -735,7 +735,11 @@ fn addCxxKnownPath( |
| 735 | ) !void { | 735 | ) !void { |
| 736 | if (!std.process.can_spawn) | 736 | if (!std.process.can_spawn) |
| 737 | return error.RequiredLibraryNotFound; | 737 | return error.RequiredLibraryNotFound; |
| 738 | const path_padded = b.exec(&.{ ctx.cxx_compiler, b.fmt("-print-file-name={s}", .{objname}) }); | 738 | |
| | 739 | const path_padded = if (ctx.cxx_compiler_arg1.len > 0) |
| | 740 | b.exec(&.{ ctx.cxx_compiler, ctx.cxx_compiler_arg1, b.fmt("-print-file-name={s}", .{objname}) }) |
| | 741 | else |
| | 742 | b.exec(&.{ ctx.cxx_compiler, b.fmt("-print-file-name={s}", .{objname}) }); |
| 739 | var tokenizer = mem.tokenizeAny(u8, path_padded, "\r\n"); | 743 | var tokenizer = mem.tokenizeAny(u8, path_padded, "\r\n"); |
| 740 | const path_unpadded = tokenizer.next().?; | 744 | const path_unpadded = tokenizer.next().?; |
| 741 | if (mem.eql(u8, path_unpadded, objname)) { | 745 | if (mem.eql(u8, path_unpadded, objname)) { |
| ... | @@ -778,6 +782,7 @@ const CMakeConfig = struct { | ... | @@ -778,6 +782,7 @@ const CMakeConfig = struct { |
| 778 | cmake_static_library_prefix: []const u8, | 782 | cmake_static_library_prefix: []const u8, |
| 779 | cmake_static_library_suffix: []const u8, | 783 | cmake_static_library_suffix: []const u8, |
| 780 | cxx_compiler: []const u8, | 784 | cxx_compiler: []const u8, |
| | 785 | cxx_compiler_arg1: []const u8, |
| 781 | lld_include_dir: []const u8, | 786 | lld_include_dir: []const u8, |
| 782 | lld_libraries: []const u8, | 787 | lld_libraries: []const u8, |
| 783 | clang_libraries: []const u8, | 788 | clang_libraries: []const u8, |
| ... | @@ -844,6 +849,7 @@ fn parseConfigH(b: *std.Build, config_h_text: []const u8) ?CMakeConfig { | ... | @@ -844,6 +849,7 @@ fn parseConfigH(b: *std.Build, config_h_text: []const u8) ?CMakeConfig { |
| 844 | .cmake_static_library_prefix = undefined, | 849 | .cmake_static_library_prefix = undefined, |
| 845 | .cmake_static_library_suffix = undefined, | 850 | .cmake_static_library_suffix = undefined, |
| 846 | .cxx_compiler = undefined, | 851 | .cxx_compiler = undefined, |
| | 852 | .cxx_compiler_arg1 = "", |
| 847 | .lld_include_dir = undefined, | 853 | .lld_include_dir = undefined, |
| 848 | .lld_libraries = undefined, | 854 | .lld_libraries = undefined, |
| 849 | .clang_libraries = undefined, | 855 | .clang_libraries = undefined, |
| ... | @@ -875,6 +881,10 @@ fn parseConfigH(b: *std.Build, config_h_text: []const u8) ?CMakeConfig { | ... | @@ -875,6 +881,10 @@ fn parseConfigH(b: *std.Build, config_h_text: []const u8) ?CMakeConfig { |
| 875 | .prefix = "#define ZIG_CXX_COMPILER ", | 881 | .prefix = "#define ZIG_CXX_COMPILER ", |
| 876 | .field = "cxx_compiler", | 882 | .field = "cxx_compiler", |
| 877 | }, | 883 | }, |
| | 884 | .{ |
| | 885 | .prefix = "#define ZIG_CXX_COMPILER_ARG1 ", |
| | 886 | .field = "cxx_compiler_arg1", |
| | 887 | }, |
| 878 | .{ | 888 | .{ |
| 879 | .prefix = "#define ZIG_LLD_INCLUDE_PATH ", | 889 | .prefix = "#define ZIG_LLD_INCLUDE_PATH ", |
| 880 | .field = "lld_include_dir", | 890 | .field = "lld_include_dir", |
| ... | @@ -917,7 +927,8 @@ fn parseConfigH(b: *std.Build, config_h_text: []const u8) ?CMakeConfig { | ... | @@ -917,7 +927,8 @@ fn parseConfigH(b: *std.Build, config_h_text: []const u8) ?CMakeConfig { |
| 917 | var it = mem.splitScalar(u8, line, '"'); | 927 | var it = mem.splitScalar(u8, line, '"'); |
| 918 | _ = it.first(); // skip the stuff before the quote | 928 | _ = it.first(); // skip the stuff before the quote |
| 919 | const quoted = it.next().?; // the stuff inside the quote | 929 | const quoted = it.next().?; // the stuff inside the quote |
| 920 | @field(ctx, mapping.field) = toNativePathSep(b, quoted); | 930 | const trimmed = mem.trim(u8, quoted, " "); |
| | 931 | @field(ctx, mapping.field) = toNativePathSep(b, trimmed); |
| 921 | } | 932 | } |
| 922 | } | 933 | } |
| 923 | if (mem.startsWith(u8, line, "#define ZIG_LLVM_LINK_MODE ")) { | 934 | if (mem.startsWith(u8, line, "#define ZIG_LLVM_LINK_MODE ")) { |