Re: packete bauen ohne zu installieren

From: Michael Gusek <michael.gusek(at)web.de>
Date: Thu, 15 Apr 2004 13:31:28 +0200

Am Mittwoch, 14. April 2004 16:34 schrieb Jens Rehsack:
> 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
Das sieht ja mal ziemlich interessant aus, aber ich wusste gar nicht, das der
athlon-xp auch sse2 kann, meiner (xp 3000+) kann "nur" dieses:
CPU: AMD Athlon(TM) XP 3000+ (1733.41-MHz 686-class CPU)
  Origin = "AuthenticAMD" Id = 0x6a0 Stepping = 0
  Features=0x383fbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE>
  AMD Features=0xc0400000<AMIE,DSP,3DNow!>

Der läuft im Moment nicht mit voller Geschwindigkeit, sprich nur mit 1,7 GHz

> .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

Das ganze ist auf jeden Fall eine interessante Anregung, die ich doch gleich
mal ausprobieren werde :)

Micha

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Thu 15 Apr 2004 - 13:32:14 CEST

search this site