Czy istnieje sposób zmiany pliku specs, aby minął -march=native
, jeśli nic nie jest określone w wierszu poleceń?Jak uczynić gcc używa march = natywny jako domyślny?
Powiązane rzeczy w pliku domyślne specyfikacją jest:
*cc1:
%(cc1_cpu)
*cc1_cpu:
%{march=native:%>march=native %:local_cpu_detect(arch) %{!mtune=*:%>mtune=native %:local_cpu_detect(tune)}} %{mtune=native:%>mtune=native %:local_cpu_detect(tune)}
Nie jestem pewien, jak specyfikacje działa. Po prostu podanie -march=native
przed lub po %(cc1_cpu)
nie działa. Jednak linia ta działa, ponieważ GCC zgłosi błąd, jeśli wstawię -something_wierd
zamiast -march=native
.
Inną rzeczą, jaką zauważyłem jest, jeśli kładę %{march=i386:-something_wierd}
przed %(cc1_cpu)
, gcc błąd raporty tak wygląda -march=i386
jest zawsze przekazywana w razie nic nie jest określona, więc czy jest jakiś sposób aby odróżnić nic określone i -march=i386
w pliku specyfikacji?
BTW, co robi %>
? Wygląda na to, że nie jest określony in the documentation.
Używam MinGW's gcc-4.6.2
.
Właściwie znalazłem rozwiązanie podobne do twojego pierwszego podejścia. Faktycznie zdałem sobie sprawę, że głównym problemem jest -march = i386 jest zawsze domyślnie przekazywana i nie ma sposobu, aby stwierdzić, czy przekazano ją domyślnie, czy przez linię poleceń. Domyślam się, że zmiana kodu źródłowego GCC to prawie jedyny sposób. –
@icando: Ty to nazwij! – alk