--- config.c.orig Mon Dec 22 23:06:32 2003 +++ config.c Wed Mar 17 18:40:50 2004 @@ -666,7 +666,8 @@ sprintf(ln, "%s --version", gcc); if (CmndOneLine(NULL, ln, ln2) == 0) { - *major = GetIntVers(ln2, &j); + j=0; for (i=0; ln2[i] && !isspace(ln[i]); i++) j++; + *major = GetIntVers(ln2+j, &i); if (*major != -1) { *minor = GetIntVers(ln2+j, &i); j += i; @@ -1188,7 +1189,9 @@ switch(OS) { case OSOSX: /* don't know answer */ - case OSFreeBSD: /* don't know answer */ + case OSFreeBSD: + if (THREADS) strcpy(LIBS, "%%PTHREAD_LIBS%% -lm"); + break; case OSLinux: break; case OSSunOS: @@ -1450,9 +1453,9 @@ if (THREADS && OS == OSFreeBSD) { if (which == CPF77) - strcat(flag, " -pthread"); + strcat(flag, " %%PTHREAD_LIBS%%"); else - strcat(flag, " -pthread -D_REENTRANT -D_THREAD_SAFE"); + strcat(flag, " %%PTHREAD_LIBS%% %%PTHREAD_CFLAGS%%"); } break; case OSSunOS4: @@ -1984,8 +1987,8 @@ if (OS == OSFreeBSD) { if (strstr(comp, "cc")) - strcat(flag, " -pthread -D_REENTRANT -D_THREAD_SAFE"); - else strcat(flag, " -pthread"); + strcat(flag, " %%PTHREAD_LIBS%% %%PTHREAD_CFLAGS%%"); + else strcat(flag, " %%PTHREAD_LIBS%%"); } } return(*comp ? comp : NULL); @@ -2799,7 +2802,7 @@ else if (strstr(ln, "ia64")) la = LAIA64; else if ( strstr(ln, "i686") || strstr(ln, "i586") || strstr(ln, "i486") || strstr(ln, "i386") || - strstr(ln, "x86_64") ) la = LAX86; + strstr(ln, "x86_64") || strstr(ln, "amd64") ) la = LAX86; } return(la); } @@ -2835,12 +2838,22 @@ } break; case LASPARC: /* don't know */ + if (!CmndOneLine(targ, "sysctl hw.model", ln)) + { + if (strstr(ln, "UltraSparc-II")) mach = SunUS2; + if (strstr(ln, "UltraSparc-I")) mach = SunUS1; + if (strstr(ln, "UltraSparc")) mach = SunUSX; + else mach = SunUSX; + } break; case LAALPHA: if (!CmndOneLine(targ, "sysctl hw.model", ln)) { if (strstr(ln, "433au")) mach = Dec21164; + else if (strstr(ln, "500au")) mach = Dec21164; + else if (strstr(ln, "AlphaPC 164")) mach = Dec21164; else if (strstr(ln, "XP1000")) mach = Dec21264; + else mach = Dec21264; } break; case LAIA64: /* don't know */ @@ -2849,14 +2862,32 @@ if (!CmndOneLine(targ, "sysctl hw.model", ln)) { if (strstr(ln, "Pentium Pro")) mach = IntPPRO; + else if (strstr(ln, "Pentium(R) Pro")) mach = IntPPRO; + else if (strstr(ln, "Pentium 4")) mach = IntP4; + else if (strstr(ln, "Pentium(R) 4")) mach = IntP4; + else if (strstr(ln, "Pentium(R) M")) mach = IntP4; else if (strstr(ln, "Pentium III")) mach = IntPIII; - else if (strstr(ln, "Pentium II ")) mach = IntPII; + else if (strstr(ln, "Pentium III/Pentium III")) mach = IntPIII; + else if (strstr(ln, "Pentium(R) III")) mach = IntPIII; + else if (strstr(ln, "Pentium II")) mach = IntPII; + else if (strstr(ln, "Pentium II/PentiumII")) mach = IntPII; + else if (strstr(ln, "Pentium(R) II ")) mach = IntPII; + else if (strstr(ln, "Celeron")) mach = IntPII; + else if (strstr(ln, "Celeron(R)")) mach = IntPII; + else if (strstr(ln, "Opteron(tm)") && sizeof(void *)==4) mach = AmdHammer32; + else if (strstr(ln, "Opteron(tm)") && sizeof(void *)==8) mach = AmdHammer64; + else if (strstr(ln, "AMD Athlon(tm) 64") && sizeof(void *)==4) mach = AmdHammer32; + else if (strstr(ln, "AMD Athlon(tm) 64") && sizeof(void *)==8) mach = AmdHammer64; + else if (strstr(ln, "Athlon(tm)")) mach = AmdAthlon; else if (strstr(ln, "Athlon")) mach = AmdAthlon; else if (strstr(ln, "AMD-K7")) mach = AmdAthlon; - else if (strstr(ln, "32 bit Hammer")) mach = AmdHammer32; - else if (strstr(ln, "64 bit Hammer")) mach = AmdHammer64; - else if (strstr(ln, "Pentium/P55C")) mach = IntP5MMX; /* sent by */ - else if (strstr(ln, "Pentium")) mach=IntP5; /* Nakata Maho */ + else if (strstr(ln, "AMD-K6(tm)")) mach = IntP5MMX; + else if (strstr(ln, "Pentium/P55C")) mach = IntP5MMX; + else if (strstr(ln, "Pentium/P54C")) mach=IntP5; + else if (strstr(ln, "Pentium")) mach=IntP5; + else if (strstr(ln, "VIA")) mach=IntP5MMX; + else if (strstr(ln, "Crusoe(tm)")) mach=IntP5MMX; + else mach = IntP5; } break; default:; @@ -3641,8 +3672,8 @@ } if (THREADS) /* add ncpu to ARCH */ { - for (i=0; ARCH[i]; i++); - sprintf(ARCH+i, "_%d", ncpu); +// for (i=0; ARCH[i]; i++); // do not add number of cpu for ARCHNAME +// sprintf(ARCH+i, "_%d", ncpu); // #cpu can be different in general } do { @@ -4047,9 +4078,9 @@ if (mach == IA64Itan || mach == IA64Itan2 ) fprintf(fpout, " -DATL_MAXNREG=128"); if (ASMD != ASM_None) fprintf(fpout, " -DATL_%s", ASMNAM[ASMD]); - if (mach == AmdHammer32 && (OS != OSWinNT && OS != OSWin9x)) + if (mach == AmdHammer32 && (OS != OSWinNT && OS != OSWin9x && OS != OSFreeBSD)) fprintf(fpout, " -m32"); - else if (mach == AmdHammer64) fprintf(fpout, " -m64"); + else if (mach == AmdHammer64 && (OS != OSFreeBSD)) fprintf(fpout, " -m64"); if (mach == IA64Itan2 && strstr(CC, "icc")) fprintf(fpout, " -DATL_IntelIccBugs"); fprintf(fpout, "\n\n"); @@ -4080,7 +4111,7 @@ if (THREADS) { fprintf(fpout, " -DATL_NCPU=%d", ncpu); - if (OS == OSFreeBSD) fprintf(fpout, " -D_THREAD_SAFE -D_REENTRANT"); + if (OS == OSFreeBSD) fprintf(fpout, " %%PTHREAD_CFLAGS%%"); if (OS == OSAIX) fprintf(fpout, " -DIBM_PT_ERROR"); if (OS == OSIRIX) fprintf(fpout, " -D_POSIX_C_SOURCE=199506L"); }