int main(int argc, char *argv[]) { if (argc < 3) { usage(); goto exit_failure; } vita_imports_t *imports = vita_imports_load(argv[1], 1); if (imports == NULL) { goto exit_failure; } if (chdir(argv[2])) { perror(argv[2]); goto exit_failure; } if (!generate_assembly(imports)) { fprintf(stderr, "Error generating the assembly file\n"); goto exit_failure; } if (!generate_makefile(imports)) { fprintf(stderr, "Error generating the assembly makefile\n"); goto exit_failure; } vita_imports_free(imports); return EXIT_SUCCESS; exit_failure: return EXIT_FAILURE; }
int main(int argc, char *argv[]) { if (argc < 3) { usage(); goto exit_failure; } int imports_count = argc - 2; vita_imports_t **imports = malloc(sizeof(vita_imports_t*) * imports_count); int i; for (i = 0; i < imports_count; i++) { vita_imports_t *imp = vita_imports_load(argv[i + 1], 1); if (imp == NULL) { goto exit_failure; } imports[i] = imp; } #if defined(_WIN32) && !defined(__CYGWIN__) mkdir(argv[argc - 1]); #else mkdir(argv[argc - 1], 0777); // create directory if it doesn't exist #endif if (chdir(argv[argc - 1])) { perror(argv[argc - 1]); goto exit_failure; } if (!generate_assembly(imports, imports_count)) { fprintf(stderr, "Error generating the assembly file\n"); goto exit_failure; } if (!generate_makefile(imports, imports_count)) { fprintf(stderr, "Error generating the assembly makefile\n"); goto exit_failure; } for (i = 0; i < imports_count; i++) { vita_imports_free(imports[i]); } free(imports); return EXIT_SUCCESS; exit_failure: return EXIT_FAILURE; }
void compile_cb(GtkWidget *tool, GtkTextView *output) { FILE *make; char tmp[BUF_LEN]; GtkTextBuffer *text_buffer; GtkTextIter end; GtkTextMark *mk; if (project_path->str == NULL) return; text_buffer = gtk_text_view_get_buffer(output); printf("Generating Makefile..\n"); generate_makefile(); printf("Done.\n"); make = popen("make clean 2>&1", "r"); if (make == NULL) { fprintf(stderr, "Failed to call 'make clean'\n"); return; } while (fgets(tmp, BUF_LEN, make) != NULL) { gtk_text_buffer_get_end_iter(text_buffer, &end); gtk_text_buffer_insert(text_buffer, &end, tmp, -1); } sprintf(tmp, "make -j%d compile 2>&1", make_threads); make = popen(tmp, "r"); if (make == NULL) { fprintf(stderr, "Failed to call '%s'\n", tmp); return; } while (fgets(tmp, BUF_LEN, make) != NULL) { gtk_text_buffer_get_end_iter(text_buffer, &end); gtk_text_buffer_insert(text_buffer, &end, tmp, -1); } mk = gtk_text_buffer_get_mark (text_buffer, "insert"); gtk_text_view_scroll_to_mark (output, mk, 0.0, FALSE, 0.0, 0.0); }