| ... | @@ -61,6 +61,8 @@ pub fn main() !void { | ... | @@ -61,6 +61,8 @@ pub fn main() !void { |
| 61 | const stdout_stream = io.getStdOut().writer(); | 61 | const stdout_stream = io.getStdOut().writer(); |
| 62 | | 62 | |
| 63 | var install_prefix: ?[]const u8 = null; | 63 | var install_prefix: ?[]const u8 = null; |
| | 64 | var dir_list = Builder.DirList{}; |
| | 65 | |
| 64 | while (nextArg(args, &arg_idx)) |arg| { | 66 | while (nextArg(args, &arg_idx)) |arg| { |
| 65 | if (mem.startsWith(u8, arg, "-D")) { | 67 | if (mem.startsWith(u8, arg, "-D")) { |
| 66 | const option_contents = arg[2..]; | 68 | const option_contents = arg[2..]; |
| ... | @@ -87,6 +89,21 @@ pub fn main() !void { | ... | @@ -87,6 +89,21 @@ pub fn main() !void { |
| 87 | warn("Expected argument after {s}\n\n", .{arg}); | 89 | warn("Expected argument after {s}\n\n", .{arg}); |
| 88 | return usageAndErr(builder, false, stderr_stream); | 90 | return usageAndErr(builder, false, stderr_stream); |
| 89 | }; | 91 | }; |
| | 92 | } else if (mem.eql(u8, arg, "--lib-dir")) { |
| | 93 | dir_list.lib_dir = nextArg(args, &arg_idx) orelse { |
| | 94 | warn("Expected argument after {s}\n\n", .{arg}); |
| | 95 | return usageAndErr(builder, false, stderr_stream); |
| | 96 | }; |
| | 97 | } else if (mem.eql(u8, arg, "--exe-dir")) { |
| | 98 | dir_list.exe_dir = nextArg(args, &arg_idx) orelse { |
| | 99 | warn("Expected argument after {s}\n\n", .{arg}); |
| | 100 | return usageAndErr(builder, false, stderr_stream); |
| | 101 | }; |
| | 102 | } else if (mem.eql(u8, arg, "--include-dir")) { |
| | 103 | dir_list.include_dir = nextArg(args, &arg_idx) orelse { |
| | 104 | warn("Expected argument after {s}\n\n", .{arg}); |
| | 105 | return usageAndErr(builder, false, stderr_stream); |
| | 106 | }; |
| 90 | } else if (mem.eql(u8, arg, "--search-prefix")) { | 107 | } else if (mem.eql(u8, arg, "--search-prefix")) { |
| 91 | const search_prefix = nextArg(args, &arg_idx) orelse { | 108 | const search_prefix = nextArg(args, &arg_idx) orelse { |
| 92 | warn("Expected argument after --search-prefix\n\n", .{}); | 109 | warn("Expected argument after --search-prefix\n\n", .{}); |
| ... | @@ -135,7 +152,7 @@ pub fn main() !void { | ... | @@ -135,7 +152,7 @@ pub fn main() !void { |
| 135 | } | 152 | } |
| 136 | } | 153 | } |
| 137 | | 154 | |
| 138 | builder.resolveInstallPrefix(install_prefix); | 155 | builder.resolveInstallPrefix(install_prefix, dir_list); |
| 139 | try runBuild(builder); | 156 | try runBuild(builder); |
| 140 | | 157 | |
| 141 | if (builder.validateUserInputDidItFail()) | 158 | if (builder.validateUserInputDidItFail()) |
| ... | @@ -163,7 +180,7 @@ fn runBuild(builder: *Builder) anyerror!void { | ... | @@ -163,7 +180,7 @@ fn runBuild(builder: *Builder) anyerror!void { |
| 163 | fn usage(builder: *Builder, already_ran_build: bool, out_stream: anytype) !void { | 180 | fn usage(builder: *Builder, already_ran_build: bool, out_stream: anytype) !void { |
| 164 | // run the build script to collect the options | 181 | // run the build script to collect the options |
| 165 | if (!already_ran_build) { | 182 | if (!already_ran_build) { |
| 166 | builder.resolveInstallPrefix(null); | 183 | builder.resolveInstallPrefix(null, .{}); |
| 167 | try runBuild(builder); | 184 | try runBuild(builder); |
| 168 | } | 185 | } |
| 169 | | 186 | |
| ... | @@ -189,6 +206,9 @@ fn usage(builder: *Builder, already_ran_build: bool, out_stream: anytype) !void | ... | @@ -189,6 +206,9 @@ fn usage(builder: *Builder, already_ran_build: bool, out_stream: anytype) !void |
| 189 | \\ -h, --help Print this help and exit | 206 | \\ -h, --help Print this help and exit |
| 190 | \\ --verbose Print commands before executing them | 207 | \\ --verbose Print commands before executing them |
| 191 | \\ -p, --prefix [path] Override default install prefix | 208 | \\ -p, --prefix [path] Override default install prefix |
| | 209 | \\ --lib-dir [path] Override default library directory path |
| | 210 | \\ --exe-dir [path] Override default executable directory path |
| | 211 | \\ --include-dir [path] Override default include directory path |
| 192 | \\ --search-prefix [path] Add a path to look for binaries, libraries, headers | 212 | \\ --search-prefix [path] Add a path to look for binaries, libraries, headers |
| 193 | \\ --color [auto|off|on] Enable or disable colored error messages | 213 | \\ --color [auto|off|on] Enable or disable colored error messages |
| 194 | \\ | 214 | \\ |