de | en

CPUFlags

CPUFlags dient der automatischen Generierung von Compiler-Schaltern für unterschiedliche Prozessoren und auf verschiedenen Betriebssystemen. Das Ziel ist dabei, stets optimale Schalter zu verwenden.

Der Grund, CPUFlags zu programmieren, bestand in einem ständigen Anpassen von Makefiles, um unterschiedlichsten Umgebungen gerecht zu werden. Mit einem kleinen Perl-Skript hat sich dieser Vorgang drastisch vereinfacht. Das Ergebnis mag in einigen Punkten nicht gänzlich optimal sein, aber es funktioniert.

Die Liste von unterstützten Betriebssystemen enthält Linux, Solaris, Darwin (MacOSX) und (teilweise) AIX, Irix, HP-UX, Tru64 und Windows. Dabei werden folgende Compiler erkannt: GCC-2/3/4, Intel-CC, Portland-CC, Sun-CC, Kai-CC, IBM-xlC, Mips-CC, Compaq-CC und Visual-C++.

Noch ist die Liste von Systemen bzw. Prozessoren nicht vollständig. Deshalb ist jeder willkommen, der mir entsprechende Compiler-Schalter bzw. Erkennungsroutinen für neue Systeme zukommen lässt.

Änderungen

v0.8.2

  • Unterstützung für GCC bis v4.9, ICC bis v13, Clang bis v3.4 und Open64
  • Unterstützung für Intel Sandybridge-, Ivybridge- und Haswell-Prozessoren und AMD Barcelona-CPUs

v0.8.1

  • Unterstützung für Power5, Power6 CPUs und Penryn CPU
  • Prozessorerkennung unter Darwin aktualisiert

v0.8.0

  • optionale Ausgabe von Compilerschaltern für Warnungen, z.B. “-Wall”, hinzugefügt (anhängig von Compiler und Sprache, etwa gcc oder g++)
  • Unterstützung von GCC-4.4, Intel-CC v9/10/11 und Sun-Studio 10/11 hinzugefügt
  • einige neue Core2- und Opteron-Prozessoren aufgenommen
  • Prozessorerkennung unter Solaris auf prtdiag umgestellt

v0.7.2

  • Core Duo/Core 2 Unterstützung sowie ein neues Opteron-Modell
  • bei Fehlern, Ausgabe des genauen Fehlergrundes (etwa welches Modell unbekannt ist)
  • Ausgabe in Farbe bei Fehlermeldungen (der Deutlichkeit halber)
  • Umstrukturierungen im Quelltext

v0.7.1

  • Fehler bei der Behandlung des Pentium3 behoben
  • Erkennung von neueren IBM VisualAge C++ Compilern hinzugefügt

v0.7.0

  • Schalter --compver entfernt
  • Unterstützung für Microsoft Windows und den Visual C++ Compiler hinzugefügt
  • einige Variablen-Deklarationen aufgeräumt

Benutzung

Kommandozeilen-Parameter

--cpu <name>
Definiere die CPU für welche die Kompilerschalter ausgegeben werden sollen.
automatische Erkennung
--comp <name>
Definiere Kompiler für welchen die Schalter ausgegeben werden sollen.
cc
--showcpu
Zeige den CPU-Identifikator.
aus
--[no]cflags
Zeige (nicht) die Architektur-Schalter für den Kompiler.
an
--[no]opt
Zeige (nicht) die Optimierungs-Schalter.
aus
--[no]warn
Zeige (nicht) die Warnungen-Schalter.
aus
-32, -64
Wähle 32- oder 64-Bit-System.
maximal
-h, --help
Zeige diesen Text.
-v, --verbose [int]
Definiere das Verbosity-Niveau.
0
-V, --version
Zeige die Versionsnummer von CPUFlags.

Unterstützte Betriebssysteme und Compiler

Linux:
gcc-2.x, gcc-3.x, gcc-4.x, icc-[5678], pgi, pathcc
Solaris:
gcc-2.x, gcc-3.x, SunCC-[67], kcc
AIX:
gcc, xlC
IRIX:
gcc, Mips-CC
Darwin:
gcc, xlc
Tru64:
Compaq-cc
HP-UX:
HP Ansi C++ compiler
Win32:
Visual C++

Unterstützte Prozessoren

Linux:
i386, i486, i586, pentium, pentium-mmx, pentium-pro, p2, p3, p3-sse, p3-centrino, p3-xeon, p4, p4-(w|p|n|f), k6, k6-2, k6-3, athlon, duron, athlon-tbird, athlon-xp, duron-xp, opteron, via-c3a, ppc750, ppc7450
Solaris:
ultra1, ultra2, ultra3, ultra3cu
AIX:
power4
IRIX:
mips4
Darwin:
ppc, ppc6XX, ppc750, ppc7450, ppc970
True64:
EV5, EV5.6, EV6, EV6.7
HP-UX:
PA7x00 und PA8x00
Win32:
i386, i486, i586, pentium, pentium-mmx, pentium-pro, p2, p3, p3-sse, p3-centrino, p3-xeon, p4, p4-(w|p|n|f), k6, k6-2, k6-3, athlon, duron, athlon-tbird, athlon-xp, duron-xp, opteron, via-c3a

Links

Die folgende Liste enthält einige der Resourcen, aus denen ich mich bei der Wahl der entsprechenden Schalter bedient habe: