HOWTO CFLAGS

Un article de Gentoo Linux Wiki.

Cet article fait partie des HOWTOs.
Méthodes d'installation CD Live Noyau et matériel Portables et Notebooks Portage Système Réseaux et Services Serveur X Logiciels fréquemment utilisés Autres


Sommaire

[modifier] CFLAGS sûr à utiliser pour Gentoo

Ces CFLAGS sont pour gcc 3.x et 4.x. Pour vérifier votre version :

gcc --version

Vous pouvez identifier le processeur que vous avez ainsi :

cat /proc/cpuinfo

Si vous avez un processeur Intel, vous pouvez utiliser x86info pour avoir plus d'informations :

emerge -av x86info

Cette page est pour ceux qui ne veulent pas expérimenter et veulent un système stable mais tout de même optimisé pour leur processeur. En utilisant ces flags les binaires de votre système peuvent ne pas fonctionner sur un autre système. Par exemple si vous avez compilé avec l'optimisation pour un Pentium 4 (-march=pentium4), vous ne pouvez pas partager vos binaires avec quelqu'un ayant un Pentium MMX (-march=pentium-mmx).

Si vous utilisez -mtune au lieu de -march, alors vos binaires sont compatibles avec un i386 et toutes architectures récentes. Vous pouvez combiner -march=i686 avec -mtune=pentium4 pour avoir des binaires i686 optimisés pour un pentium4 (mais pouvant toujours fonctionner sur tout i686).

Notez que -O2 est plus sûr que "-O3", et "-O3" peut parfois être contre-productif. Sur des ordinateurs avec un cache ou/et mémoire limité, "-Os" peut parfois offrir de meilleures performances avec des binaires plus petit.

GCC a de nombreuses options pour les CPU tel que MMX et SSE; -mmx -msse etc. Elles sont automatiquement appliquées si vous choisissez la bonne option -march.


[modifier] i386 (Intel, AMD)

CHOST="i386-pc-linux-gnu"
CFLAGS="-march=i386 -Os -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] i486 (Intel, AMD, Cyrix)

CHOST="i486-pc-linux-gnu"
CFLAGS="-march=i486 -Os -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] Processeurs Intel

[modifier] Pentium (Intel)

vendor_id : GenuineIntel
cpu family : 5
model : 2
model name : Pentium 75 - 200

CHOST="i586-pc-linux-gnu"
CFLAGS="-march=pentium -Os -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] Pentium w/ MMX (Intel)

CHOST="i586-pc-linux-gnu"
CFLAGS="-march=pentium-mmx -Os -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] Cyrix MediaGX / AMD Geode GX1

CHOST="i586-pc-linux-gnu"
CFLAGS="-march=pentium-mmx -Os -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] Pentium PRO (Intel)

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentiumpro -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] Pentium II (Klamath), (Intel)

vendor_id : GenuineIntel
cpu family : 6
model : 3
model name : Pentium II (Klamath)

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium2 -Os -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] Pentium II (Deschutes), (Intel)

vendor_id  : GenuineIntel
cpu family  : 6
model  : 5
model name  : Pentium II (Deschutes)

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium2 -Os -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] Celeron (Mendocino), aka Celeron1 (Intel)

vendor_id : GenuineIntel
cpu family : 6
model : 6
model name : Celeron (Mendocino)
stepping : 0

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium2 -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] Pentium III (Intel)

vendor_id : GenuineIntel
cpu family : 6
model : 7
model name : Pentium III (Katmai)
stepping : 3

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium3 -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] Celeron (Coppermine) aka Celeron2 (Intel)

vendor_id  : GenuineIntel
cpu family  : 6
model  : 8
model name  : Pentium III (Coppermine)
stepping  : 10

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium3 -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] Pentium III (Coppermine)

vendor_id  : GenuineIntel
cpu family  : 6
model  : 8
model name  : Pentium III (Coppermine)
stepping  : 3

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium3 -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] Celeron (Willamette) (Intel)

vendor_id  : GenuineIntel
cpu family  : 15
model  : 1
model name  : Intel(R) Celeron(R) CPU 1.70GHz
stepping  : 3

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] Pentium M(Centrino)/Celeron M (Intel)

vendor_id  : GenuineIntel
cpu family  : 6
model  : 9 or 13
model name  : Intel(R) Pentium(R) M processor XXXXMHz

For gcc 3.3:

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium3 -msse2 -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

For gcc 3.4 and later:

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium-m -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

Le Celeron M est basé sur le Pentium M mais avec moitié moins de cache L2 et supporte la technologie SpeedStep. Vous pouvez avoir des résultats similaires qu'avec Speedstep en utilisant le module p4-clockmod.

En cas de problèmes : CFLAGS="-mcpu=i686 -O3 -pipe".

[modifier] Pentium 4 (Intel)

vendor_id  : GenuineIntel
cpu family  : 15
model  : 0 or 2
model name  : Intel(R) Pentium(R) 4 CPU XXXXMHz

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] Pentium 4 (Prescott) (Intel)

vendor_id : GenuineIntel
cpu family : 15
model : 3 or 4
model name  : Intel(R) Pentium(R) 4 CPU XXXGHz -or- Mobile Intel(R) Pentium(R) 4 CPU XXXGHz -or- Intel(R) Celeron(R) CPU XXXGHz

Vous pouvez vérifier que le processeur est un Prescott en vérifiant que pni est présent dans les flags de /proc/cpuinfo. Ceci inqique le support de SSE3. En 2004, Intel a commencé a vendre des coeurs Prescott en tant que Intel Celeron D.

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] Pentium D 8xx / 9xx

vendor_id : GenuineIntel
cpu family : 15
model  : 4
model name  : Intel(R) Pentium(R) D CPU x.xxGHz
cpu cores  : 2

Note: Du fait du support EM64T, l'architecture gentoo pour ce processeur est amd64.

Note: Si vous n'utilisez pas l'extension 64bits (EM64T), utilisez simplement les flags pour Prescott avec MAKEOPTS="-j3" et CHOST="i686-pc-linux-gnu".

CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=nocona -O2 -pipe"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j3"

[modifier] Xeon w/o EM64T (Intel)

vendor_id  : GenuineIntel
cpu family  : 15
model  : 2
model name  : Intel(R) Xeon(R) CPU XXXXMHz

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

Si vous avez hyperthreading d'activé, vous devriez utiliser MAKEOPTS="-j5" dans votre make.conf.

[modifier] Xeon w/EM64T (Intel) (ainsi que Pentium 4 P6xx)

vendor_id  : GenuineIntel
cpu family  : 15
model  : 4
model name  : Intel(R) Xeon(R) CPU XXXXMHz

CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=nocona -O2 -pipe"
CXXFLAGS="${CFLAGS}"

Utilisez le stage: amd64 (et le disque d'installation amd64)

Si vous avez hyperthreading d'activé, vous devriez utiliser MAKEOPTS="-j5" dans votre make.conf.

[modifier] Intel Core Solo/Duo (Yonah)

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
- or -
CFLAGS="-march=pentium-m -msse3 -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

Débat entre -march pentium-m (avec -msse3) et prescott : http://forums.gentoo.org/viewtopic-t-496285.html

Vous devriez utiliser MAKEOPTS="-j3" dans votre make.conf.

[modifier] Intel Core 2 Solo/Duo (Allendale, Conroe, Merom)

32 bit

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium-m -msse3 -O2 -pipe -fomit-frame-pointer"
-or-
CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

64 bit

CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=nocona -O2 -pipe"
CXXFLAGS="${CFLAGS}"
CFLAGS="-march=nocona -mtune=pentium-m -O2 -pipe

Vous devriez utiliser MAKEOPTS="-j3" dans votre make.conf.

[modifier] Processeurs VIA

[modifier] Esther C5J (Via C7)

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=i686 -mmmx -msse -msse2 -msse3 -Os -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] Nehemiah (C5XL)/C5P (Via)

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=i686 -msse -mmmx -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] Eden C3/Samuel/Ezra (Via EPIA)

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=c3 -m3dnow -Os -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

Attention: n'utilisez pas un stage ou paquet avec des instructions i686 (comme cmov). Cependant CHOST="i686-pc-linux-gnu" est sûr, car "-march=c3" va éviter de produire du code non compatible.

Notez que le Mini-ITX EPIA-SP a un processeur VIA C3 Eden, même si cat /proc/cpuinfo répond: model name: VIA Nehemiah

[modifier] Processeurs Transmeta

[modifier] Transmeta Crusoe

vendor_id  : GenuineTMx86
cpu family  : 6
model  : 4
model name  : Transmeta(tm) Crusoe(tm) Processor TM5800
stepping  : 3

CHOST="i586-pc-linux-gnu"
CFLAGS="-march=i586 -Os -mmmx -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] Transmeta Efficeon

vendor_id  : GenuineTMx86
cpu family  : 15
model  : 2
model name  : Transmeta Efficeon(tm) Processor TM8000
stepping  : 4

CHOST="i686-pc-linux-gnu"
CFLAGS="-mtune=pentium3 -msse2 -O2 -pipe -falign-functions=0 -falign-jumps=0 -falign-loops=0"
CXXFLAGS="${CFLAGS}"


[modifier] Processeurs AMD

[modifier] K6 (AMD)

CHOST="i586-pc-linux-gnu"
CFLAGS="-march=k6 -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] K6-2 (AMD)

vendor_id  : AuthenticAMD
cpu family  : 5
model  : 8

CHOST="i586-pc-linux-gnu"
CFLAGS="-march=k6-2 -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] Geode LX (AMD)

vendor_id  : AuthenticAMD
cpu family  : 5
model  : 10

CHOST="i586-pc-linux-gnu"
CFLAGS="-march=k6-2 -Os -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] K6-3 (AMD)

CHOST="i586-pc-linux-gnu"
CFLAGS="-march=k6-3 -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] Duron (AMD)

De 600 à 900 MHz (coeur de type tbird)

product: AMD Duron(tm) Processor version: 6.3.1

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=athlon-tbird -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] Mobile Duron (AMD)

vendor_id : AuthenticAMD
cpu family : 6
model : 3
model name : AMD Duron(tm) Processor

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=athlon-tbird -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] Duron Morgan (AMD)

De 900 à 1300 MHz
Les durons Morgan sont basés sur le coeur Palomino, et donc peuvent être considérés comme des Athlon XP.

vendor_id : AuthenticAMD
cpu family : 6
model : 7
model name : AMD Duron(tm) Processor
stepping : 1

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=athlon-xp -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] Athlon (AMD)

vendor_id : AuthenticAMD
cpu family : 6
model : 4 or 2
model name : AMD Athlon(TM)Processor
stepping : 4 or 2

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=athlon -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] Athlon-tbird, aka K7 (AMD)

vendor_id : AuthenticAMD
cpu family : 6
model : 4
model name : AMD Athlon(tm) Processor

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=athlon-tbird -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] Athlon-tbird XP (AMD)

vendor_id  : AuthenticAMD
cpu family  : 6
model  : 8
model name  : AMD Athlon(tm)

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=athlon-xp -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

Sempron 2400+ (2000MHz) is also identified as cpu family:6 model:8 model_name:AMD Sempron(TM) 2400+ (256kB cache)

[modifier] Athlon 4 (AMD)

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=athlon-4 -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] Athlon XP/Geode NX (AMD)

vendor_id  : AuthenticAMD
cpu family  : 6
model  : 6
stepping  : 2
Some CPU's have also been observed with the following:
model : 10
model name : AMD Athlon(tm) XP 2500+
stepping : 0

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=athlon-xp -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] Athlon MP (AMD)

vendor_id  : AuthenticAMD
cpu family  : 6
model  : 10
model name  : AMD Sempron(tm)
stepping  : 0

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=athlon-mp -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] Athlon 64 X2 (AMD)

vendor_id: AuthenticAMD
cpu family: 15
model: 43
stepping: 1 or 2
model name: AMD Athlon(tm) X2 Dual Core Processor


32 bit

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=athlon64 -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

64 bit

CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=athlon64 -O2 -pipe"
CXXFLAGS="${CFLAGS}"

Si vous avez un Athlon64("Venice" ou "San Diego")/Athlon64-X2("Manchester" ou "Toledo") (regardez pour le flag pni dans cat /proc/cpuinfo) récent, vous pouvez ajouter -msse3 ) vos CFLAGS pour le support SSE3. Tous les processeurs en 90nm sauf les Athlon64 "Winchester" supportent SSE3.

Les Athlon64 X2 et Opteron 165, 170, 175, 180, et 185 sont des dual-core donc ajoutez MAKEOPTS="-j3" dans votre make.conf.

Les processeurs sur socket AM2 supportent SSE3.

[modifier] 1xx Opteron (AMD)

vendor_id  : AuthenticAMD
cpu family  : 15
model  : 5
model name  : AMD Opteron(tm) Processor 1xx
stepping  : 8

CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=opteron -O2 -pipe"
CXXFLAGS="${CFLAGS}"

[modifier] 2xx/8xx Opteron (AMD)

vendor_id  : AuthenticAMD
cpu family  : 15
model  : 5
model name  : AMD Opteron(tm) Processor xxx
stepping  : 8

CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=opteron -O2 -pipe"
CXXFLAGS="${CFLAGS}"

[modifier] Sempron/Sempron64 (AMD)

  • Si il s'agit d'un Sempron Socket A (Socket 462) vous pouvez être certain qu'il n'est pas 64bits ni SSE2/SSE3.
  • Si il s'agit d'un Sempron Socket AM2 vous pouvez être certain qu'il est 64bits et SSE3.
  • Si il s'agit d'un Sempron Socket 754 ça dépend du stepping (part number):
    • Steppings: CG (Part No.: *AX) ou D0 (Part No.: *BA) n'ont ni SSE3 ni AMD64
    • Stepping: E3 (Part No.: *BO) ont SSE3
    • Stepping: E6 (Part No.: *BX) ont SSE3 et AMD64
  • De toute façon vous devriez regarder /proc/cpuinfo pour le falg pni (SSE3) avant d'utiliser -msse3.

vendor_id : AuthenticAMD
cpu family : 15
model : 44
model name : AMD Sempron(tm) Processor

Note: The model number may differ.

32 bit (Socket A)

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=athlon-xp -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

32 bit

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=athlon64 -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

32 bit (SSE3 capable)

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=athlon64 -msse3 -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

Sempron64 - 64 bit

CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=athlon64 -msse3 -O2 -pipe"
CXXFLAGS="${CFLAGS}"

[modifier] Turion64 (AMD)

32 bit

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=athlon64 -msse3 -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

64 bit

CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=athlon64 -msse3 -O2 -pipe"
CXXFLAGS="${CFLAGS}"

SSE3 est appellé pni dans /proc/cpuinfo.

[modifier] Mobile Sempron (AMD)

vendor_id : AuthenticAMD
cpu family : 15
model : 8
model name : Mobile AMD Sempron Processor 2800+

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=athlon64 -msse3 -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

Si vous avez un Sempron sans SSE3 (premiers chipsets) ne mettez pas "-msse3".
SSE3 est appelé pni (prescott new instuction) par cpuinfo (cat /proc/cpuinfo).

Il y a plusieurs type de sempron sur le marché, ceux à 1.8GHz sont des K8 (ex : AMD SM 3000+), d'autres, plus vieux; sont des k7, vous devez dont spécifié athlon-xp au lieu de athlon 64.

[modifier] Processeurs PowerPC

[modifier] PowerPC 601

CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-mcpu=601 -O2 -pipe"
CXXFLAGS="${CFLAGS}"

[modifier] PowerPC 603

CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-mcpu=603 -O2 -pipe"
CXXFLAGS="${CFLAGS}"

[modifier] PowerPC 603e

CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-mcpu=603e -O2 -pipe"
CXXFLAGS="${CFLAGS}"

[modifier] PowerPC 604

CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-mcpu=604 -O2 -pipe"
CXXFLAGS="${CFLAGS}"

[modifier] PowerPC 604e

CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-mcpu=604e -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

-Os peut être bénéfique pour les vieux processeurs.

[modifier] PowerPC 604e

CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-mcpu=604e -O2 -pipe -fno-strict-aliasing"
CXXFLAGS="${CFLAGS}"

[modifier] PowerPC 750 (G3)

CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-mcpu=750 -Os -pipe -fno-strict-aliasing"
CXXFLAGS="${CFLAGS}"

Sachant que le cache est plus petit, de meilleures performances peuvent être obtenus en utilisant -Os plutôt que -O2.

[modifier] PowerPC 750cx (G3e)

CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-mcpu=750 -O2 -pipe -fno-strict-aliasing"
CXXFLAGS="${CFLAGS}"

Le 750cx offre plus de cache L2 que ses prédécesseurs. De meilleures performances peuvent être obtenus en utilisant -O2.

[modifier] PowerPC 7400 (G4)

CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-mcpu=7400 -O2 -pipe -maltivec -mabi=altivec"
CXXFLAGS="${CFLAGS}"

Note: -O3 est instable sur lesG4

[modifier] PowerPC 7450 (G4 seconde generation)

CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-mcpu=7450 -O2 -pipe -maltivec -mabi=altivec -fno-strict-aliasing"
CXXFLAGS="${CFLAGS}"

Note: n'utilisez pas -fsigned-char

Note: -O3 est instable sur les G4

[modifier] PowerPC 970 (G5)

CHOST="powerpc64-unknown-linux-gnu"
CFLAGS="-mcpu=G5 -O2 -pipe -maltivec -mabi=altivec -fno-strict-aliasing"
CXXFLAGS="${CFLAGS}"
LDFLAGS="-Wl,-O1"

[modifier] Cell Broadband Engine

CHOST=""
CFLAGS=""
CXXFLAGS="${CFLAGS}"
LDFLAGS=""

[modifier] PowerPC (Si vous ne savez pas lequel)

CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-O2 -pipe -fno-strict-aliasing"
CXXFLAGS="${CFLAGS}"

[modifier] PowerPC Embarqués CPUs

Vous devriez regarder /proc/cpuinfo pour connaitre le modéle du processeur. Si vous ne trouvez pas, utilisez powerpc.

CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-mcpu=<flag> -Os -pipe -fno-strict-aliasing"
CXXFLAGS="${CFLAGS}"

[modifier] Autres Processeurs

[modifier] Sparc

CHOST="sparc-unknown-linux-gnu"
CFLAGS="-O2 -pipe"
CXXFLAGS="${CFLAGS}"

[modifier] Sparc 64

CHOST="sparc-unknown-linux-gnu"
CFLAGS="-mcpu=ultrasparc -mtune=ultrasparc -O2 -pipe"
CXXFLAGS="${CFLAGS}"

Attention, le CHOST pour les Sparc64 est toujours sparc-unknown-linux-gnu, et non sparc64-!

[modifier] HPPA 1.1

CHOST="hppa1.1-unknown-linux-gnu"
CFLAGS="-O2 -pipe -mschedule=7100LC -march=1.1 -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[modifier] HPPA 2.0

CHOST="hppa2.0-unknown-linux-gnu"
CFLAGS="-O2 -pipe -mschedule=8000 -march=2.0 -fomit-frame-pointer"
CXXFLAGS="-O2 -pipe -fomit-frame-pointer"

[modifier] Alpha ev56

CHOST="alpha-unknown-linux-gnu"
CFLAGS="-mcpu=ev56 -mieee -O2 -pipe"
CXXFLAGS="${CFLAGS}"

[modifier] Alpha ev67

CHOST="alpha-unknown-linux-gnu"
CFLAGS="-mcpu=ev67 -Wa,-mev6 -O3 -pipe "
CXXFLAGS="${CFLAGS}"

Ceci peut-être appliqué pour les ev68 (Compaq Alpha DS25) également. Sans le flag -mcpu=ev67 -Wa,-mev6 il ne peut pas faire le bootstrap.


[modifier] Références