aboutsummaryrefslogtreecommitdiff
path: root/tcc.c
diff options
context:
space:
mode:
authorKirill Smelkov <kirr@landau.phys.spbu.ru>2010-06-16 16:54:24 +0400
committerKirill Smelkov <kirr@mns.spb.ru>2010-06-20 21:36:47 +0400
commitbdae4a59c3a74b2ff464c02029c625251719a7d7 (patch)
treeff92d915614eeecb0516f1c9015007d8c44b53c7 /tcc.c
parenta919a373da07305e763d1cb4ecb3a5a44bdebb2a (diff)
downloadtinycc-bdae4a59c3a74b2ff464c02029c625251719a7d7.tar.gz
tinycc-bdae4a59c3a74b2ff464c02029c625251719a7d7.tar.bz2
tcc: Refactor "compute default outfile name" into libtcc function
Since for upcoming -MD support default _compile_ output file be needed even when preprocesssing (tcc -E), let's move this code out of one particular condition block into a common function, so that we could use it in deps generation code too. v2: - As suggested by grischka, moved into libtcc function instead of always computing near start of main() - There is a FIXME about how to return result - I don't want to bother callers with allocating temp buffers, not I think it will be a good idea to hook default_target to TCCState. Clearly, I'm to used to things like std::string and python's str...
Diffstat (limited to 'tcc.c')
-rw-r--r--tcc.c29
1 files changed, 4 insertions, 25 deletions
diff --git a/tcc.c b/tcc.c
index f973972..705f5e2 100644
--- a/tcc.c
+++ b/tcc.c
@@ -393,7 +393,6 @@ int main(int argc, char **argv)
int i;
TCCState *s;
int nb_objfiles, ret, optind;
- char objfilename[1024];
int64_t start_time = 0;
s = tcc_new();
@@ -446,28 +445,6 @@ int main(int argc, char **argv)
if (!s->outfile)
error("could not open '%s'", outfile);
}
- } else if (output_type != TCC_OUTPUT_MEMORY) {
- if (!outfile) {
- /* compute default outfile name */
- char *ext;
- const char *name =
- strcmp(files[0], "-") == 0 ? "a" : tcc_basename(files[0]);
- pstrcpy(objfilename, sizeof(objfilename), name);
- ext = tcc_fileextension(objfilename);
-#ifdef TCC_TARGET_PE
- if (output_type == TCC_OUTPUT_DLL)
- strcpy(ext, ".dll");
- else
- if (output_type == TCC_OUTPUT_EXE)
- strcpy(ext, ".exe");
- else
-#endif
- if (output_type == TCC_OUTPUT_OBJ && !reloc_output && *ext)
- strcpy(ext, ".o");
- else
- pstrcpy(objfilename, sizeof(objfilename), "a.out");
- outfile = objfilename;
- }
}
if (do_bench) {
@@ -507,8 +484,10 @@ int main(int argc, char **argv)
fclose(s->outfile);
} else if (s->output_type == TCC_OUTPUT_MEMORY)
ret = tcc_run(s, argc - optind, argv + optind);
- else
- ret = tcc_output_file(s, outfile) ? 1 : 0;
+ else {
+ ret = tcc_output_file(s, outfile ? outfile : tcc_default_target(s));
+ ret = ret ? 1 : 0;
+ }
}
tcc_delete(s);