Re: packete bauen ohne zu installieren

From: Jens Rehsack <rehsack(at)liwing.de>
Date: Wed, 14 Apr 2004 14:34:50 +0000

Oliver Fromme wrote:
> Michael Gusek <michael.gusek(at)web.de> wrote:

...

> > Hintergrund ist, dass ich hier einen recht schnellen Rechner habe, und zwei
> > "lahme". Dummerweise sind in den drei Rechner verschiedene Prozessoren drin
> > (K6, Athlon, Athlon-xp) und ich würd gern die Pakete mit den entsprechenden
> > compilerflags (-mcpu) bauen, ohne auf meinem Baurechner diese Pakete
> > einzuspielen.
>
> Ich stimme Christian zu, daß sich das vermutlich nicht
> lohnt. Die Unterschiede im Code dürften nur minimal sein.
> (Ich persönlich baue Programme seit Jahren nur mit -O.)

Ich tue dies nicht. Gerade Multimedia-Anwendungen profitieren sehr
davon, prozessoroptimierten Code zu bekommen. Außerdem kann der Compiler
(wobei ich jetzt nicht weiss, ob der gcc das kann), die
Codelokalisierung besser betreiben, wenn er weiss, welchen Prozessor er
als Ziel bekommt.

> Aber wenn Du es trotzdem tun möchtest, dürfte es das ein-
> fachste sein, zum Portbauen ein kleines chroot anzulegen.
> Da mußt Du ja nur ein Basissystem und die Ports-Infra-
> struktur hineinreplizieren.

Hmm, hab ich so gemacht. Dazu eine kleine Erweiterung der
/etc/make.conf:

CPUTYPE?=p4
.ifdef BUILD_OPTIMIZED
MY_C_OPTIMIZE?= -O3 -fforce-addr -funroll-loops -momit-leaf-frame-pointer \
                 -minline-all-stringops -fno-gcse
# -foptimize-register-move -fmove-all-movables
-fsched-spec-load
.else
MY_C_OPTIMIZE?= -O
.endif
BDECFLAGS= -W -Wall -ansi -pedantic -Wbad-function-cast -Wcast-align \
                 -Wcast-qual -Wchar-subscripts -Winline \
                 -Wmissing-prototypes -Wnested-externs -Wpointer-arith \
                 -Wredundant-decls -Wshadow -Wstrict-prototypes
-Wwrite-strings

.ifndef FORBID_PROC_OPT
.if ${CPUTYPE} == p4
MY_PROC_INSTR= -mmmx -msse -msse2 -mfpmath=sse
.elif ${CPUTYPE} == p3
MY_PROC_INSTR= -mmmx -msse
.elif ${CPUTYPE} == p2 || ${CPUTYPE} == i586/mmx
MY_PROC_INSTR= -mmmx
.elif ${CPUTYPE} == k6-2 || ${CPUTYPE} == k6-3
MY_PROC_INSTR= -mmmx -m3dnow
.elif ${CPUTYPE} == athlon-mp || ${CPUTYPE} == athlon-xp || ${CPUTYPE}
== athlon-4
MY_PROC_INSTR= -mmmx -m3dnow -msse -msse2 -mfpmath=sse
.elif ${CPUTYPE} == athlon-tbird || ${CPUTYPE} == athlon
MY_PROC_INSTR= -mmmx -m3dnow -msse
.endif
.endif

# Kernel Make Options
.ifndef USE_WERROR
NO_WERROR=true
WERROR=-Wno-error
NO_WARNS=true
.else
WERROR=-Werror
.endif
INLINE_LIMIT=30000

CFLAGS= -pipe
#CFLAGS= -v -save-temps

CFLAGS+= ${MY_C_OPTIMIZE} ${MY_PROC_INSTR}
COPTFLAGS= -O -pipe ${MY_PROC_INSTR}

.ifdef USE_DEBUG
CFLAGS+=-g3
.endif

.ifdef USE_ALLWARN
CFLAGS+=${BDECFLAGS} ${WERROR}
.endif

So funzt das eigendlich recht gut und wenn ich's mal drauf anlege, kann
ich auch mal gucken, ob mir bei rechenintensiven Sachen das setzen von
BUILD_OPTIMIZED was bringt. Ist aber selten. Mehr Register scheinen aber
Wunder zu wirken *gg*

Beste Grüße,
   Jens

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Wed 14 Apr 2004 - 16:35:45 CEST

search this site