diff options
| author | Kirill Smelkov <kirr@landau.phys.spbu.ru> | 2010-06-16 16:54:24 +0400 |
|---|---|---|
| committer | Kirill Smelkov <kirr@mns.spb.ru> | 2010-06-20 21:36:47 +0400 |
| commit | bdae4a59c3a74b2ff464c02029c625251719a7d7 (patch) | |
| tree | ff92d915614eeecb0516f1c9015007d8c44b53c7 /tcc.c | |
| parent | a919a373da07305e763d1cb4ecb3a5a44bdebb2a (diff) | |
| download | tinycc-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.c | 29 |
1 files changed, 4 insertions, 25 deletions
@@ -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); |
