C'è un modo per cambiare il file specs in modo che passerà -march=native
se nulla è specificato nella riga di comando?Come fare gcc usa march = nativo come predefinito?
cose relative al file specs predefinito è:
*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)}
Non sono sicuro di come funziona spec. Semplicemente specificando -march=native
prima o dopo %(cc1_cpu)
non funziona. Tuttavia, questa riga ha effetto perché GCC segnalerà un errore se inserisco -something_wierd
anziché -march=native
.
Un'altra cosa che ho notato è che se metto %{march=i386:-something_wierd}
prima %(cc1_cpu)
, gcc errore rapporti in modo assomiglia -march=i386
è sempre passato in se nulla è specificato, quindi c'è un modo per distinguere tra il nulla specificato e -march=i386
nel file di specifiche?
BTW, cosa %>
fare? Sembra che non sia specificato in the documentation.
Sto usando MinGW di gcc-4.6.2
.
In realtà sono uscito con una soluzione simile al tuo primo approccio. In realtà mi sono reso conto che il problema principale è -march = i386 viene sempre passato di default e non c'è modo di sapere se è passato per impostazione predefinita o tramite riga di comando. Immagino che cambiare il codice sorgente GCC sia quasi l'unico modo. –
@icando: lo chiami! – alk