make.confで設定するCPUTYPEの話。
make.confでは、コンパイラに対して通知するCPUTYPEを設定することができる(効果はさておき)。
そして、FreeBSDが認識するCPUTYPEは、/usr/share/examples/etc/make.confで確認できる。
$ uname -sr
FreeBSD 7.0-STABLE-200803
上記のシステム(ちょっと古いなあ)から抜粋すると;
# Intel x86 architecture:
# (AMD CPUs) opteron athlon64 athlon-mp athlon-xp athlon-4
# athlon-tbird athlon k8 k6-3 k6-2 k6 k5
# (Intel CPUs) core2 core nocona pentium4m pentium4 prescott
# pentium3m pentium3 pentium-m pentium2
# pentiumpro pentium-mmx pentium i486 i386
# (Via CPUs) c3 c3-2
# AMD64 architecture: opteron, athlon64, nocona, prescott, core2
ただし、上記はあくまでもFreeBSDが認識するというだけ。
実際には、このあと/usr/share/mk/bsd.cpu.mkで"翻訳"され、gccに渡される。
中身をのぞいてみると;
. if ${CPUTYPE} == "nocona"
CPUTYPE = prescott
. elif ${CPUTYPE} == "core" || ${CPUTYPE} == "core2"
CPUTYPE = prescott
現時点ではCPUTYPEをcore, core2にしてもnoconaとひっくるめてprescottにされてしまうという衝撃の事実。…まあ、そのうちbsd.cpu.mkもgccのバージョンに合わせてアップデートされることでしょう。
と、ここまで引っ張っておいて何だが、俺はCPUTYPEを設定していない。
どうも俺みたいな日曜FreeBSDユーザが調子に乗ってmake.confをいじると、後で絶対にはまるから。