authorgravatar for jeffowler@gmail.comJeff Fowler <jeffowler@gmail.com> 2018-02-07 23:45:20+01:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2018-02-07 17:45:20-05:00
logc88e6e8aeec1b9a7d6888f298fef7949770c288b
tree5b20fd9b025f8695a66b15215b20dc01bd3e1807
parent79ad1d96108fc25fea6a2fbdb5c9bb8b2093a6b5

improve behavior of `zig build` (#754)

See #748

2 files changed, 24 insertions(+), 10 deletions(-)

src/main.cpp+23-10
......@@ -339,6 +339,7 @@ int main(int argc, char **argv) {
339339 const char *zig_exe_path = arg0;
340340 const char *build_file = "build.zig";
341341 bool asked_for_help = false;
342 bool asked_to_init = false;
342343
343344 init_all_targets();
344345
......@@ -350,6 +351,9 @@ int main(int argc, char **argv) {
350351 if (strcmp(argv[i], "--help") == 0) {
351352 asked_for_help = true;
352353 args.append(argv[i]);
354 } else if (strcmp(argv[i], "--init") == 0) {
355 asked_to_init = true;
356 args.append(argv[i]);
353357 } else if (i + 1 < argc && strcmp(argv[i], "--build-file") == 0) {
354358 build_file = argv[i + 1];
355359 i += 1;
......@@ -414,6 +418,7 @@ int main(int argc, char **argv) {
414418 "\n"
415419 "General Options:\n"
416420 " --help Print this help and exit\n"
421 " --init Generate a build.zig template\n"
417422 " --build-file [file] Override path to build.zig\n"
418423 " --cache-dir [path] Override path to cache directory\n"
419424 " --verbose Print commands before executing them\n"
......@@ -426,7 +431,6 @@ int main(int argc, char **argv) {
426431 " --prefix [path] Override default install prefix\n"
427432 "\n"
428433 "Project-specific options become available when the build file is found.\n"
429 "Run this command with no options to generate a build.zig template.\n"
430434 "\n"
431435 "Advanced Options:\n"
432436 " --build-file [file] Override path to build.zig\n"
......@@ -439,17 +443,26 @@ int main(int argc, char **argv) {
439443 " --verbose-cimport Enable compiler debug output for C imports\n"
440444 "\n"
441445 , zig_exe_path);
442 return 0;
443 }
444 Buf *build_template_path = buf_alloc();
445 os_path_join(special_dir, buf_create_from_str("build_file_template.zig"), build_template_path);
446 return EXIT_SUCCESS;
447 } else if (asked_to_init) {
448 Buf *build_template_path = buf_alloc();
449 os_path_join(special_dir, buf_create_from_str("build_file_template.zig"), build_template_path);
446450
447 if ((err = os_copy_file(build_template_path, &build_file_abs))) {
448 fprintf(stderr, "Unable to write build.zig template: %s\n", err_str(err));
449 } else {
450 fprintf(stderr, "Wrote build.zig template\n");
451 if ((err = os_copy_file(build_template_path, &build_file_abs))) {
452 fprintf(stderr, "Unable to write build.zig template: %s\n", err_str(err));
453 } else {
454 fprintf(stderr, "Wrote build.zig template\n");
455 }
456 return EXIT_SUCCESS;
451457 }
452 return 1;
458
459 fprintf(stderr,
460 "No 'build.zig' file found.\n"
461 "Initialize a 'build.zig' template file with `zig build --init`,\n"
462 "or build an executable directly with `zig build-exe $FILENAME.zig`.\n"
463 "See: `zig build --help` or `zig help` for more options.\n"
464 );
465 return EXIT_FAILURE;
453466 }
454467
455468 PackageTableEntry *build_pkg = codegen_create_package(g, buf_ptr(&build_file_dirname),
std/special/build_runner.zig+1
......@@ -149,6 +149,7 @@ fn usage(builder: &Builder, already_ran_build: bool, out_stream: &io.OutStream)
149149 \\
150150 \\General Options:
151151 \\ --help Print this help and exit
152 \\ --init Generate a build.zig template
152153 \\ --verbose Print commands before executing them
153154 \\ --prefix [path] Override default install prefix
154155 \\ --search-prefix [path] Add a path to look for binaries, libraries, headers