Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
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);	
}