Unified · Split
| @@ -296,7 +296,13 @@ if test -z "$cross_prefix" ; then · 295 unmodified lines | |||
| 296 | gcc_major="$($CONFTEST version)" | 296 | gcc_major="$($CONFTEST version)" |
| 297 | gcc_minor="$($CONFTEST minor)" | 297 | gcc_minor="$($CONFTEST minor)" |
| 298 | if test "$mingw32" = "no" ; then | 298 | if test "$mingw32" = "no" ; then |
| 299 | libc_dir="$(ldd $CONFTEST | grep libc.so | sed 's|[^/]*/\(.*/\)[^/]*|\1|')" | 299 | triplet="$($CONFTEST triplet)" |
| 300 | if test -f "/usr/lib/$triplet/crti.o" ; then | ||
| 301 | tcc_lddir="lib/$triplet" | ||
| 302 | multiarch_triplet="$triplet" | ||
| 303 | elif test -f "usr/lib64/crti.o" ; then | ||
| 304 | tcc_lddir="lib64" | ||
| 305 | fi | ||
| 300 | 306 | ||
| 301 | # gr: FIXME | 307 | # gr: FIXME |
| 302 | # ldd $CONFTEST gives (ubuntu 8) | 308 | # ldd $CONFTEST gives (ubuntu 8) |
| @@ -306,13 +312,13 @@ if test -z "$cross_prefix" ; then · 3 unmodified lines | |||
| 306 | # result is crap: | 312 | # result is crap: |
| 307 | # CONFIG_LDDIR="lib/tls/i686/cmov" | 313 | # CONFIG_LDDIR="lib/tls/i686/cmov" |
| 308 | # CONFIG_MUADIR="tls/i686/cmov" | 314 | # CONFIG_MUADIR="tls/i686/cmov" |
| 309 | 315 | # | |
| 310 | multiarch_triplet=${libc_dir#*/} | 316 | # multiarch_triplet=${libc_dir#*/} |
| 311 | multiarch_triplet=${multiarch_triplet%/} | 317 | # multiarch_triplet=${multiarch_triplet%/} |
| 312 | tcc_lddir="${libc_dir%%/*}" | 318 | # tcc_lddir="${libc_dir%%/*}" |
| 313 | if test -n "$multiarch_triplet" ; then | 319 | # if test -n "$multiarch_triplet" ; then |
| 314 | tcc_lddir="$tcc_lddir/$multiarch_triplet" | 320 | # tcc_lddir="$tcc_lddir/$multiarch_triplet" |
| 315 | fi | 321 | # fi |
| 316 | 322 | ||
| 317 | # gr: maybe for after the release: | 323 | # gr: maybe for after the release: |
| 318 | # tcc_elfinterp="$(ldd $CONFTEST | grep 'ld.*.so' | sed 's,\s*\(\S\+\).*,\1,')" | 324 | # tcc_elfinterp="$(ldd $CONFTEST | grep 'ld.*.so' | sed 's,\s*\(\S\+\).*,\1,')" |
| @@ -1,27 +1,59 @@ | |||
| 1 | #include <stdio.h> | 1 | #include <stdio.h> |
| 2 | 2 | ||
| 3 | /* Define architecture */ | ||
| 4 | #if defined(__i386__) | ||
| 5 | # define TRIPLET_ARCH "i386" | ||
| 6 | #elif defined(__x86_64__) | ||
| 7 | # define TRIPLET_ARCH "x86_64" | ||
| 8 | #elif defined(__arm__) | ||
| 9 | # define TRIPLET_ARCH "arm" | ||
| 10 | #else | ||
| 11 | # define TRIPLET_ARCH "unknown" | ||
| 12 | #endif | ||
| 13 | |||
| 14 | /* Define OS */ | ||
| 15 | #if defined (__linux__) | ||
| 16 | # define TRIPLET_OS "linux" | ||
| 17 | #elif defined (__FreeBSD__) || defined (__FreeBSD_kernel__) | ||
| 18 | # define TRIPLET_OS "kfreebsd" | ||
| 19 | #elif !defined (__GNU__) | ||
| 20 | # define TRIPLET_OS "unknown" | ||
| 21 | #endif | ||
| 22 | |||
| 23 | /* Define calling convention and ABI */ | ||
| 24 | #define TRIPLET_ABI "gnu" | ||
| 25 | |||
| 26 | #ifdef __GNU__ | ||
| 27 | # define TRIPLET TRIPLET_ARCH "-" TRIPLET_ABI | ||
| 28 | #else | ||
| 29 | # define TRIPLET TRIPLET_ARCH "-" TRIPLET_OS "-" TRIPLET_ABI | ||
| 30 | #endif | ||
| 31 | |||
| 3 | int main(int argc, char *argv[]) | 32 | int main(int argc, char *argv[]) |
| 4 | { | 33 | { |
| 5 | switch(argc == 2 ? argv[1][0] : 0) { | 34 | switch(argc == 2 ? argv[1][0] : 0) { |
| 6 | #ifdef __GNUC__ | 35 | case 'b': |
| 7 | case 'v': | 36 | { |
| 8 | printf("%d\n", __GNUC__); | 37 | volatile unsigned foo = 0x01234567; |
| 38 | puts(*(unsigned char*)&foo == 0x67 ? "no" : "yes"); | ||
| 9 | break; | 39 | break; |
| 40 | } | ||
| 41 | #ifdef __GNUC__ | ||
| 10 | case 'm': | 42 | case 'm': |
| 11 | printf("%d\n", __GNUC_MINOR__); | 43 | printf("%d\n", __GNUC_MINOR__); |
| 12 | break; | 44 | break; |
| 13 | #else | ||
| 14 | case 'v': | 45 | case 'v': |
| 46 | printf("%d\n", __GNUC__); | ||
| 47 | break; | ||
| 48 | #else | ||
| 15 | case 'm': | 49 | case 'm': |
| 50 | case 'v': | ||
| 16 | puts("0"); | 51 | puts("0"); |
| 17 | break; | 52 | break; |
| 18 | #endif | 53 | #endif |
| 19 | case 'b': | 54 | case 't': |
| 20 | { | 55 | puts(TRIPLET); |
| 21 | volatile unsigned foo = 0x01234567; | ||
| 22 | puts(*(unsigned char*)&foo == 0x67 ? "no" : "yes"); | ||
| 23 | break; | 56 | break; |
| 24 | } | ||
| 25 | case -1: | 57 | case -1: |
| 26 | /* to test -Wno-unused-result */ | 58 | /* to test -Wno-unused-result */ |
| 27 | fread(NULL, 1, 1, NULL); | 59 | fread(NULL, 1, 1, NULL); |