default output object filename is basename of input filename (same behaviour as gcc)

tcc-xref
bellard 2003-04-16 21:35:02 +00:00
parent 066d5e7a84
commit 410fc57ba0
1 changed files with 19 additions and 1 deletions

20
tcc.c
View File

@ -9323,6 +9323,22 @@ int tcc_set_output_type(TCCState *s, int output_type)
#if !defined(LIBTCC)
/* extract the basename of a file */
static const char *tcc_basename(const char *name)
{
const char *p;
p = strrchr(name, '/');
#ifdef WIN32
if (!p)
p = strrchr(name, '\\');
#endif
if (!p)
p = name;
else
p++;
return p;
}
static int64_t getclock_us(void)
{
#ifdef WIN32
@ -9625,8 +9641,10 @@ int main(int argc, char **argv)
if (output_type != TCC_OUTPUT_MEMORY && !outfile) {
if (output_type == TCC_OUTPUT_OBJ && !reloc_output) {
char *ext;
/* strip path */
pstrcpy(objfilename, sizeof(objfilename) - 1,
tcc_basename(files[0]));
/* add .o extension */
pstrcpy(objfilename, sizeof(objfilename) - 1, files[0]);
ext = strrchr(objfilename, '.');
if (!ext)
goto default_outfile;