[freebsd] optimazing source build

krishtaf

# The CPUTYPE variable controls which processor should be targeted for
# generated code. This controls processor-specific optimizations in
# certain code ( currently only OpenSSL ) as well as modifying the value
# of CFLAGS to contain the appropriate optimization directive to gcc.
# The automatic setting of CFLAGS may be overridden using the
# NO_CPU_CFLAGS variable below.
# Currently the following CPU types are recognized:
# Intel x86 architecture:
# (AMD CPUs) opteron athlon64 athlon-mp athlon-xp athlon-4
# athlon-tbird athlon k8 k6-3 k6-2 k6 k5 nocona
# (Intel CPUs) pentium4[m] prescott pentium3[m] pentium2 penitumpro
# pentium-mmx pentium i486 i386
# Alpha/AXP architecture: ev67 ev6 pca56 ev56 ev5 ev45 ev4
# AMD64 architecture: opteron, athlon64, nocona
# Intel ia64 architecture: itanium2, itanium
#
# (?= allows to buildworld for a different CPUTYPE.)
т.е. это получается, что при выставлении нужного CPUTYPE оптимизация при сборке будет производиться только для OPENSSL ?
если так, то тогда с каким CPUTYPE будет компилиться система ?
кто как оптимизирует сборку фри из сорцов ?
кто-то тут писал что юзает icc, тогда где взять лицензию на icc ? и как им беспроблемно заместить gcc ?

eee1

CPUTYPE и CFLAGS в make.conf не работает в сборки ядра. В buildworld наверно что-то действует этот флаг, судя по тексту - то только на openssl.
Я в конфиге ядра добавил makeoptions COPTFLAGS="-O2 -pipe -ffast-math" а в make.conf
 CPUTYPE= p4
CFLAGS= -O2 -pipe -ffast-math
(действует в сборки портов)
линуксовский icc можно скачать прям с фтп интела, лизенцию на сайте можно взять. Сборка с помощью icc один раз видел в TODO для 6.x одного коммитера.
Беспроблемно по-моему не получается.

krishtaf

COPTFLAGS в make.conf применяется для сборки ядра, в отличие от CFLAGS
правда "кто-кого" перегружает непонятно. Наверно, option конфига ядра имеет больший приоритет.

garikus

кто как оптимизирует сборку фри из сорцов ?
кто-то тут писал что юзает icc, тогда где взять лицензию на icc ? и как им беспроблемно заместить gcc ?
/etc/make.conf:
...

CFLAGS += -O2
CXXFLAGS += -O2

.if ${CC} == "icc"
CFLAGS += -mcpu=pentiumpro -march=pentiumii -tpp6
#CFLAGS += -no-gcc
#COPTFLAGS += -O3 -mcpu=pentiumpro -march=pentiumii
COPTFLAGS += -no-gcc
.else
CPUTYPE=i686
.endif

.if ${CXX} == "icpc"
CXXFLAGS += -mcpu=pentiumpro -march=pentiumii -tpp6
#CXXFLAGS += -no-gcc
.else
.endif

...
icc компилирует ядро, но после этого оно глючит (в частности, не работает mpd).
icc не компилирует систему.
Поэтому я использую icc только для сборки некоторых портов:
make CC=icc CXX=icpc
Лицензия для некоммерческого использования на intel.com
Оставить комментарий
Имя или ник:
Комментарий: