diff options
| author | Michael Matz <matz@suse.de> | 2016-10-17 01:08:29 +0200 |
|---|---|---|
| committer | Michael Matz <matz@suse.de> | 2016-10-17 01:08:29 +0200 |
| commit | 6fbcc14a5d39ca91228f88a64d68a1f3c2d67293 (patch) | |
| tree | d1b7e8bfda137baeb4a6909f8663617176b9fa19 /libtcc.c | |
| parent | 68a7af632c334c1bb589d2b8f4257874377e30f6 (diff) | |
| download | tinycc-6fbcc14a5d39ca91228f88a64d68a1f3c2d67293.tar.gz tinycc-6fbcc14a5d39ca91228f88a64d68a1f3c2d67293.tar.bz2 | |
system-hacks: define __GNUC__ for FreeBSD
FreeBSDs system headers contain unconditional usage of
macros like __aligned(x), which are only conditionally defined
in sys/cdefs.h (conditional on __GNUC__ or __INTEL_COMPILER).
Bug in FreeBSD, but as work-around we can define __GNUC__ which
picks up these defs.
[This also moves back the glibc defines we had before into the
non-BSD ifdef branch]
Diffstat (limited to 'libtcc.c')
| -rw-r--r-- | libtcc.c | 19 |
1 files changed, 9 insertions, 10 deletions
@@ -890,24 +890,23 @@ LIBTCCAPI TCCState *tcc_new(void) # if defined(__FreeBSD__) || defined (__FreeBSD_kernel__) \ || defined(__NetBSD__) || defined(__OpenBSD__) tcc_define_symbol(s, "__WINT_TYPE__", "int"); +# ifdef __FreeBSD__ + /* define __GNUC__ to have some useful stuff from sys/cdefs.h + that are unconditionally used in FreeBSDs other system headers :/ */ + tcc_define_symbol(s, "__GNUC__", "2"); + tcc_define_symbol(s, "__GNUC_MINOR__", "1"); + tcc_define_symbol(s, "__builtin_alloca", "alloca"); + tcc_define_symbol(s, "__builtin_memcpy", "memcpy"); + tcc_define_symbol(s, "__USER_LABEL_PREFIX__", ""); +# endif # else tcc_define_symbol(s, "__WINT_TYPE__", "unsigned int"); -# endif -# if 0 /* glibc defines */ tcc_define_symbol(s, "__REDIRECT(name, proto, alias)", "name proto __asm__ (#alias)"); tcc_define_symbol(s, "__REDIRECT_NTH(name, proto, alias)", "name proto __asm__ (#alias) __THROW"); # endif -# if 1 - /* define __GNUC__ to have some useful stuff from sys/cdefs.h */ - tcc_define_symbol(s, "__GNUC__", "2"); - tcc_define_symbol(s, "__GNUC_MINOR__", "1"); - tcc_define_symbol(s, "__builtin_alloca", "alloca"); - tcc_define_symbol(s, "__builtin_memcpy", "memcpy"); - tcc_define_symbol(s, "__USER_LABEL_PREFIX__", ""); -# endif #endif /* ndef TCC_TARGET_PE */ return s; |
