e6f3bf7f08
libtcc: cleanup the 'gen_makedeps' stuff
2011-08-06 16:11:58 +02:00
0c928da96d
tcc: Draft suppoprt for -MD/-MF options
...
In build systems, this is used to automatically collect target
dependencies, e.g.
---- 8< (hello.c) ----
#include "hello.h"
#include <stdio.h>
int main()
{
printf("Hello World!\n");
return 0;
}
$ tcc -MD -c hello.c # -> hello.o, hello.d
$ cat hello.d
hello.o : \
hello.c \
hello.h \
/usr/include/stdio.h \
/usr/include/features.h \
/usr/include/bits/predefs.h \
/usr/include/sys/cdefs.h \
/usr/include/bits/wordsize.h \
/usr/include/gnu/stubs.h \
/usr/include/bits/wordsize.h \
/usr/include/gnu/stubs-32.h \
/home/kirr/local/tcc/lib/tcc/include/stddef.h \
/usr/include/bits/types.h \
/usr/include/bits/wordsize.h \
/usr/include/bits/typesizes.h \
/usr/include/libio.h \
/usr/include/_G_config.h \
/usr/include/wchar.h \
/home/kirr/local/tcc/lib/tcc/include/stdarg.h \
/usr/include/bits/stdio_lim.h \
/usr/include/bits/sys_errlist.h \
NOTE: gcc supports -MD only for .c -> .o, but in tcc, we generate
dependencies for whatever action is being taken. E.g. for .c -> exe, the
result will be:
$ tcc -MD -o hello hello.c # -> hello, hello.d
hello: \
/usr/lib/crt1.o \
/usr/lib/crti.o \
hello.c \
hello.h \
/usr/include/stdio.h \
/usr/include/features.h \
/usr/include/bits/predefs.h \
/usr/include/sys/cdefs.h \
/usr/include/bits/wordsize.h \
/usr/include/gnu/stubs.h \
/usr/include/bits/wordsize.h \
/usr/include/gnu/stubs-32.h \
/home/kirr/local/tcc/lib/tcc/include/stddef.h \
/usr/include/bits/types.h \
/usr/include/bits/wordsize.h \
/usr/include/bits/typesizes.h \
/usr/include/libio.h \
/usr/include/_G_config.h \
/usr/include/wchar.h \
/home/kirr/local/tcc/lib/tcc/include/stdarg.h \
/usr/include/bits/stdio_lim.h \
/usr/include/bits/sys_errlist.h \
/usr/lib/libc.so \
/lib/libc.so.6 \
/usr/lib/ld-linux.so.2 \
/lib/ld-linux.so.2 \
/usr/lib/libc_nonshared.a \
/lib/libc.so.6 \
/usr/lib/libc_nonshared.a \
/home/kirr/local/tcc/lib/tcc/libtcc1.a \
/usr/lib/crtn.o \
So tcc dependency generator is a bit more clever than one used in gcc :)
Also, I've updated TODO and Changelog (in not-yet-released section).
v2:
(Taking inputs from grischka and me myself)
- put code to generate deps file into a function.
- used tcc_fileextension() instead of open-coding
- generate deps only when compilation/preprocessing was successful
v3:
- use pstrcpy instead of snprintf(buf, sizeof(buf), "%s", ...)
2010-06-21 20:49:02 +04:00
a919a373da
Add input files/libs and reloc_output switch to TCCState
...
files[0], and reloc_outpu will be needed for (upcoming in the next
patch) "compute default outfile name" refactored into libtcc function.
Also, since for symmetry and from libification point of view, it makes
some sense to also put all information about what was given as input to
compilation into TCCState, let's not only put files[0], but all
files and all libraries given explicitely by user.
One point: I've used bitfield for reloc_output & trimmed down
output_type to 8 bits so that TCCState stays the same in size, and also
access to output_type is (hopefully) is not slower.
By the way -- as of today, sizeof(TCCState) on i686-pc-linux-gnu is 2884
bytes...
2010-06-20 20:30:01 +04:00
34dabe496f
libtcc: Detect (but ignore) -init and -fini for -Wl
...
--
By by ... Detlef
2010-04-05 22:56:33 +02:00
78e83d8761
libtcc: Allow multiple options for -Wl separated with ','
...
I moved the code to libtcc to prepare for a later tiny_ld
--
By by ... Detlef
2010-04-05 21:21:58 +02:00
5299142286
x86-64: use uplong for symbol values
2010-01-14 20:59:42 +01:00
8bbde91f62
tcc_relocate: revert to 0.9.24 behavior
2009-12-19 22:16:23 +01:00
b56f956247
libtcc: add support to be build as DLL
2009-04-18 15:08:03 +02:00
d165e87340
libtcc: new api tcc_set_lib_path
2009-04-18 15:08:03 +02:00
b1697be691
change tcc_add/get_symbol to use void*
2009-04-18 15:08:02 +02:00
795f67428e
alternative int tcc_relocate(TCCState *s1, void *ptr);
2009-04-18 15:08:02 +02:00
200b58dad8
initial implementation of -E option
2006-10-16 19:44:00 +00:00
45466d2df6
output format support
2004-10-23 22:49:08 +00:00
f8d0241764
changed tcc_get_symbol() prototype
2003-07-20 19:19:58 +00:00
356fa0c3bb
added tcc_set_warning() - c++ include support
2003-04-26 20:51:42 +00:00
05a919e29f
added better error support
2002-11-02 14:14:08 +00:00
d8ef07df04
added tcc_relocate() and tcc_get_symbol()
2002-09-08 22:46:32 +00:00
f5b9220b60
added tcc_add_sysinclude_path()
2002-08-18 13:24:03 +00:00
b2834b35b5
api change
2002-07-24 22:12:38 +00:00
1e14c90c7a
added libtcc
2002-05-13 22:58:22 +00:00