Aktuelles
Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

[Script] VDR-SC FFdecsa optimization

    Nobody is reading this thread right now.
AW: [Script] VDR-SC FFdecsa optimization

@dippes & sendeschuss & B4ckBOne
Ich kanns nicht oft genug sagen:
Bitte wenigstens einmal die KOMPLETTE AUSGABE des scripts posten!

...und für eure copy&paste Fehler kann ich nix.

@dippes & sendeschuss
Ich nehme mal an ihr habt beide x86_64 Systeme und da gehts wohl nicht ohne "-fPIC".

@B4ckBOne
Gehört ins "Makefile" des sc-plugins.

9d ist online und setzt bei x86_64 Systemen automatisch "-fPIC".
 
AW: [Script] VDR-SC FFdecsa optimization

Ich nehme mal an ihr habt beide x86_64 Systeme und da gehts wohl nicht ohne "-fPIC".


Hier das selbe: mit dem alten sc SRC gehts nicht ohne -fPIC, mit dem aktuellen HG sehr wohl.

Pitty
 
AW: [Script] VDR-SC FFdecsa optimization

32bit (x86) oder 64bit (x86_64) System?

Ich teste hier grundsätzlich nur mit nem aktuellen hg checkout. Sehe da nämlich keinen Grund 0.9.x oder gar älter einzusetzen.
Das script setzt im Falle eines 64bit Systems das "-fPIC" Falg automatisch und lässt es bei 32bit einfach weg (V9d).

Funktioniert es bei jemandem auf einem 32bit System ohne das "-fPIC" Flag nicht ???

...und nochmal bitte beim nächsten mal wenigstens den "CPU-INFO" Tel hier posten, damit ich mir Fragen wie "32 oder 64bit System?" sparen kann.
 
AW: [Script] VDR-SC FFdecsa optimization

32bit (x86) oder 64bit (x86_64) System?

hier 64Bit natty, yavdr 0.4pre1, als Skript hab ich V9c eingesetzt - die meisten fummeln aber hier nicht mit HG sondern mit SRC eines debs vom 29.4. rum, da sich daraus schick ein deb bilden lässt und auch noch das dynamite patch passt. Und genau auf dem SRC gehts halt nicht ohne -fPIC :)

Ich hab hier aktuelles HG wegen den camd35 Änderungen im HD+ Kontext am laufen, da gehts halt ohne -fPIC, dafür gibts dazu derzeit kein korrespondierendes dynamite Patch. Die Vögelchen haben mir aber gezwischert dass damit im Laufe der nächsten zwei Wochen zu rechnen ist.... und bis dahin gehts dann auch mal ohne dynamite...
 
AW: [Script] VDR-SC FFdecsa optimization

Ich hab hier aktuelles HG wegen den camd35 Änderungen im HD+ Kontext am laufen, da gehts halt ohne -fPIC, dafür gibts dazu derzeit kein korrespondierendes dynamite Patch
Schön zu hören, dass die camd35 patches auch anderen geholfen haben ;)

Was das alte deb-src angeht - da bin ich auch grad dabei was aktuelles und vor allem anfängerfreundliches zu erstellen. Nur ist aktuell die Zeit etwas kanpp, daher könnte es evtl. noch etwas dauern.

Die Idee ist ein deb-template welches anschließend beim Bauen des Pakets automatisch die nötigen Änderungen am Makefile vornimmt. Dazu soll dann unter anderem dieses Script hier dienen.
 
AW: [Script] VDR-SC FFdecsa optimization

hier 64Bit natty, yavdr 0.4pre1, als Skript hab ich V9c eingesetzt
=>dito

Ich teste hier grundsätzlich nur mit nem aktuellen hg checkout.
=> nochmals dito

komisch das es bei mir auch mit dem aktuellen checkout nicht geht (im vergleich zu Pitty01)

hier der komplette log:
Code:
### CPU-INFO ###
System: x86_64
Auto detected arch: amdfam10

Vendor-ID: AuthenticAMD
CPU-Family: 16
CPU-Model: 6
Flags:  fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowe xt 3dnow constant_tsc rep_good nopl nonstop_tsc extd_apicid pni monitor cx16 pop cnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt npt lbrv svm_lock nrip_save

gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4)
Using compilers "native" flags


### FFdeCSA TEST ###
Using compiler: g++
Flags: -march=native -fexpensive-optimizations -fomit-frame-pointer -funroll-loops

Testing optimization levels 2 and 3

  Level -O2:
    PARALLEL_32_INT
      - 162, 280, 281, 124, 120, 120, 286, 116, 280, 281
      - 286 Mbit/s max.
    PARALLEL_64_2INT
      - 110, 259, 84, 109, 260, 259, 259, 114, 265, 265
      - 265 Mbit/s max.
    PARALLEL_64_LONG
      - 166, 402, 398, 157, 408, 408, 408, 130, 207, 411
      - 411 Mbit/s max.
    PARALLEL_64_MMX
      - 185, 138, 101, 155, 369, 184, 149, 236, 380, 250
      - 380 Mbit/s max.
    PARALLEL_128_2LONG
      - 165, 96, 182, 350, 291, 190, 209, 307, 138, 128
      - 350 Mbit/s max.
    PARALLEL_128_2MMX
      - 163, 339, 339, 179, 345, 345, 346, 152, 338, 338
      - 346 Mbit/s max.
    PARALLEL_128_SSE
      - 189, 438, 438, 438, 236, 428, 117, 207, 133, 219
      - 438 Mbit/s max.
    PARALLEL_128_SSE2
      - 219, 500, 200, 488, 183, 499, 182, 134, 499, 166
      - 500 Mbit/s max.
  Fastest PARALLEL_MODE = PARALLEL_128_SSE2 (500 Mbit/s)

  Level -O3:
    PARALLEL_32_INT
    ...failed!
    PARALLEL_64_2INT
    ...failed!
    PARALLEL_64_LONG
      - 118, 367, 366, 152, 128, 367, 367, 366, 135, 375
      - 375 Mbit/s max.
    PARALLEL_64_MMX
      - 138, 289, 344, 345, 344, 344, 344, 124, 353, 353
      - 353 Mbit/s max.
    PARALLEL_128_2LONG
      - 141, 360, 361, 361, 361, 360, 98, 303, 368, 133
      - 368 Mbit/s max.
    PARALLEL_128_2MMX
      - 122, 298, 96, 168, 352, 204, 210, 313, 351, 352
      - 352 Mbit/s max.
    PARALLEL_128_SSE
      - 200, 453, 202, 444, 445, 444, 444, 444, 442, 443
      - 453 Mbit/s max.
    PARALLEL_128_SSE2
      - 137, 510, 169, 228, 301, 310, 514, 330, 160, 225
      - 514 Mbit/s max.
  Fastest PARALLEL_MODE = PARALLEL_128_SSE2 (514 Mbit/s)


Best result with -O3 and PARALLEL_128_SSE2 at 514 Mbit/s


### VDR-SC FFdeCSA Makefile OPTS ###
CPUOPT     ?= native
PARALLEL   ?= PARALLEL_128_SSE2
CSAFLAGS   ?= -O3 -fexpensive-optimizations -fomit-frame-pointer -funroll-loops

### GENERIC FFdeCSA make OPTS ###
FLAGS="-O3 -march=native -fexpensive-optimizations -fomit-frame-pointer -funroll -loops" PARALLEL_MODE=PARALLEL_128_SSE2
 
AW: [Script] VDR-SC FFdecsa optimization

Wie gesagt ist bei 64bit Systemen das "-fPIC" Flag wohl meist unumgänglich.
Die neuste v9d setzt das Flag in dem Fall dann automatisch und lässt es auf 32bit Systemen weg.
Damit sollten die vom Script vorgeschlagenen "VDR-SC FFdeCSA Makefile OPTS" jetzt zum Erfolg führen, ausser jemand belehrt mich jetzt noch eines besseren :)

Komisch nur, dass auf praktisch fast identischen Systemen (yavdr 4.xpre 64bit - Kompiler und Linker gleich) es einmal mit und einmal ohne das Flag funzt.
 
AW: [Script] VDR-SC FFdecsa optimization

die settings funktionieren einwandfrei, danke für das script! :good:
 
AW: [Script] VDR-SC FFdecsa optimization

Schön zu hören, dass die camd35 patches auch anderen geholfen haben ;)

wie jetzt, du hast das verbrochen, super Arbeit? :)

Sag mal hast du auch an der Erweiterung der override.conf geschraubt, weil irgendwie ist das zwar super aber nur halbherzig umgesetzt. Wenn ich jetzt ne lokale ICE und einen entfernten camd3 mit asat an der oscam betreibe, muss ich im sc zwangsläufig 0D95 und 0D05 durchlassen, besser wäre es eine Kombi aus caid/provid als unerwünscht zu definieren, also 0D05:000010 und andersrum 0d05:000004, damit sofort alles in die richtigen Kanäle läuft. In selbiges Problem würde ich laufen wenn ich ne lokale V13 kombiniert mit ner HD01/HD02 hätte, auch da müsste ich beide CAIDs zulassen und manell in oscam.user mit den ids die richtigen Anfragen auf die richtige Karte leiten...
 
AW: [Script] VDR-SC FFdecsa optimization

An der override.conf habe ich auch geschraubt, aber von mir sind nur zwei Änderungen/Fixes.
1. DVB-C/T als "src" was vorher nicht ging
2. betatunnel fix - kannst jetzt auch direkt im vdr-sc tunneln (sat&kabel)

Es stimmt, eine ProviderID kannst du nur bei "ecmprio" angeben, aber das sollte schon reichen um alles unter Kontrolle zu bringen, denn du hast bei "ignore" und "ecmprio" ja noch die Möglichkeit Frequenzen bzw. Frequenzbereiche anzugeben.

z.B.: (probiers mal aus)
Code:
ignore:{S19.2E:11302}0648:09C4:0D05:1702:1833
ignore:{S19.2E:12663}0648:09C4:0D05:1702:1833
ignore:{S19.2E:12692}0648:09C4:0D05:1702:1833

ecmprio:{S19.2E:}0D05:0D95

Mit aktivierter "ecm.cache" Funktion sollten aber sowieso keine sinnlosen Anfragen mehr von vdr-sc kommen.


PS: Du kannst jetzt auch den vdr-sc internen emm-cache abschalten und oscam bekommt die volle "Flut" an emms. Das ist auch auf meinen Mist gewachsen neben den camd35 fixes für nagra karten etc.
 
Zuletzt bearbeitet:
AW: [Script] VDR-SC FFdecsa optimization

Code:
/usr/src/VDR/PLUGINS/src/sc# make -s all
crypto.c:91:2: warning: #warning ** openssl lacks IDEA support. Using deprecated static support code. Update your openssl package.
FFdecsa 1.0: testing correctness and speed
CORRECT!
CORRECT!
CORRECT!
CORRECT!
CORRECT!
speed=245.830457 Mbit/s
speed=167004.386649 pkts/s
CORRECT!
CORRECT!
CORRECT!
CORRECT!
CORRECT!
/usr/bin/ld: FFdecsa/FFdecsa.o: relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
FFdecsa/FFdecsa.o: could not read symbols: Bad value
collect2: ld returned 1 exit status
make: *** [libvdr-sc.so] Fehler 1

Asche auf mein Haupt: ich hatte das -fPIC noch in der Make.config des vdr drin stehen, wenn ich auch das rausnehme kommts zu obigem Fehler, also doch nicht ungewöhnlich.

Das mit den Frequenzen ist mE nach Mist, viel zu aufwendig das zu pflegen, das mit der Prio ist da schon besser. schöner wärs natürlich wenn mans richtig macht. :) Aktuell hab ich inverse Sektionen in der oscam.services, also caid/provid ORF mit den srvid von asat und umgekehrt, und die dann im oscam.user ausgeschlossen. nur auch da muss ich ja bei neuen/geänderten Sendern immer nachsteuern...

ne andere Sache, wo hier schon mal ein Kenner der Materie unterwegs ist: Wie würdest du ein Fallback einer lokalen 1830 auf eine entfernte 1843 im Falle eines Kartenausfalls machen? Oscam bietet mit Fallback und Loadbalancing eher wenig wenn die CAIDs nicht kongruieren :(


PS: Du kannst jetzt auch den vdr-sc internen emm-cache abschalten und oscam bekommt die volle "Flut" an emms. Das ist auch auf meinen Mist gewachsen neben den camd35 fixes für nagra karten etc.

hab ich natürlich längst am laufen. Weiß nur noch nicht ob ich bei der HD01/ICE diese ecmwhitelist dazu setzen soll, auf der ICE hab ich immer wieder fehlerhafte Global....
 
Zuletzt bearbeitet:
AW: [Script] VDR-SC FFdecsa optimization

Asche auf mein Haupt: ich hatte das -fPIC noch in der Make.config des vdr drin stehen, wen ich auch das rausnehme kommts zu obigem Fehler, also doch nicht ungewöhnlich.
Na dann ist jetzt alles klar. Damit sollte das Script die performantesten Flags liefern ohne einzelne Maschinen durch setzen von "-fPIC" künstlich zu verlangsamen.

Das mit den Frequenzen ist mE nach Mist, viel zu aufwendig das zu pflegen, das mit der Prio ist da schon besser. schöner wärs natürlich wenn mans richtig macht. :) Aktuell hab ich inverse Sektionen in der oscam.services, also caid/provid ORF mit den srvid von asat und umgekehrt, und die dann im oscam.user ausgeschlossen. nur auch da muss ich ja bei neuen/geänderten sendern immer nachsteuern...
So ist es aber nun mal. Wäre zwar besser, wenn man auch bei "ignore" mit providerIDs arbeiten könnte, aber die o.g. Lösung sollte es auch tun und das sind bei ORF nur die drei Transponder, die sich wohl eher selten ändern dürften.

ne andere Sache, wo hier schon mal ein Kenner der Materie unterwegs ist: Wie würdest du ein fallback einer lokalen 1830 auf eine entfernte 1843 im Falle eines Kartenausfalls machen? Oscam bietet mit Fallback und Loadbalancing eher wenig wenn die CAIDs nicht kongruieren :(
Ich hatte noch vor camd's CMD08 in vdr-sc-camd35 zu implementieren (das fehlt z.zt. vollkommen). Damit sagt oscam dem camd35 client, dass eine bestimmte CAID/SRVID kombi nicht entschlüsselt werden kann, gibt also über das CMD08 nen feedback.

In deinem Fall folgendes Szenario (wenn mal irgendwann implementiert):

OSCAM:
Reader_1(local): CAID 1830 (kein fallback!)
Reader_2(remote): CAID 1843 (kein fallback!)

VDR-SC-camd35 Client:
ecmprio{...}1830:1843

Der vdr sendet immer caid 1830 ECMs, bis der entsprechende Reader am oscam-server ausfällt etc. und der client das CMD08 bekommt.
In dem Fall wird die caid 1830 mit der srvid des aktuellen Senders temporär (bis zum erneuten Umschalten) ignoriert und vdr-sc nimmt sich die nächste mögliche caid vor, in dem Fall caid 1843.
Damit wäre auf der Client-Seite eine Art Fallback da bzw. würde verhindern, dass der Client ununterbrochen Anfragen sendet die vom Server nicht beantwortet/verarbeitet werden können.

EDIT:
Wenn ich mir das so recht überlege, dann müsste das jetzt im Prinzip auch schon funktionieren, aber wahrscheinlich nur, wenn der ecm.cache ausgeschaltet oder angelernt und auf read-only gestellt ist, da sonst bei Ausfall von caid 1830 evtl. später nur noch die 1843 angefragt wird.


hab ich natürlich längst am laufen. Weiß nur noch nicht ob ich bei der HD01/ICE diese ecmwhitelist dazu setzen soll, auf der ICE hab ich immer wieder fehlerhafte Global....

ECM != EMM

Fehlerhafte EMMs habe ich auf meiner ORF-ICE auch. Das liegt aber an oscam und nicht an den Clients und stört eigentlich nicht weiter, da die EMMs die geschrieben werden ausreichen um die ICE am leben zu halten.

Eine ecm-whitelist habe ich für jede meiner locals definiert:

ORF-ICE
ecmwhitelist = 80,B8,F0

HD01
ecmwhitelist = 92

HD02
ecmwhitelist = 89

S02
ecmwhitelist = 93
 
Zuletzt bearbeitet:
AW: [Script] VDR-SC FFdecsa optimization

Ich hatte noch vor camd's CMD08 in vdr-sc-camd35 zu implementieren (das fehlt z.zt. vollkommen). Damit sagt oscam dem camd35 client, dass eine bestimmte CAID/SRVID kombi nicht entschlüsselt werden kann, gibt also über das CMD08 nen feedback.

In deinem Fall folgendes Szenario (wenn mal irgendwann implementiert):

OSCAM:
Reader_1(local): CAID 1830 (kein fallback!)
Reader_2(remote): CAID 1843 (kein fallback!)

VDR-SC-camd35 Client:
ecmprio{...}1830:1843

Der vdr sendet immer caid 1830 ECMs, bis der entsprechende Reader am oscam-server ausfällt etc. und der client das CMD08 bekommt.
In dem Fall wird die caid 1830 mit der srvid des aktuellen Senders temporär (bis zum erneuten Umschalten) ignoriert und vdr-sc nimmt sich die nächste mögliche caid vor, in dem Fall caid 1843.
Damit wäre auf der Client-Seite eine Art Fallback da bzw. würde verhindern, dass der Client ununterbrochen Anfragen sendet die vom Server nicht beantwortet/verarbeitet werden können.

Will ich haben, sag mir an welcher Stelle ich testen helfen kann! :)
 
AW: [Script] VDR-SC FFdecsa optimization

EDIT:
Wenn ich mir das so recht überlege, dann müsste das jetzt im Prinzip auch schon funktionieren, aber wahrscheinlich nur, wenn der ecm.cache ausgeschaltet oder angelernt und auf read-only gestellt ist, da sonst bei Ausfall von caid 1830 evtl. später nur noch die 1843 angefragt wird.

Versuch mal folgendes:
1. In die override.conf -> ecmprio:{S19.2E:}1830:1843
2. vdr restart
3. Im vdr OSD im sc-plugin "ECM-Cache" auf "nur lesen" (Voraussetzung: ecm-cache war an und HD+ ging bisher über die lokale HD01/1830, ansonsten ecm-cache auf "aus" bzw. "nur lesen" belassen)
4. Auf einen HD+ Sender zappen und warten bis Bild da ist
5. In oscam den lokalen Reader im laufenden Betrieb deaktivieren (=Ausfall)
6. Schauen ob vdr auf caid 1843 wechselt und Bild wieder hell wird
7. Auf einen anderen HD+ Sender zappen -> vdr fragt erst 1830 und dann 1843 und es wird hell
8. Lokalen HD+ Reader in oscam wieder aktivieren
9. Nochmal auf einen HD+ Sender zappen und es wird mit caid 1830 wieder hell


Das Implementieren des oben genannten CMD08 würde nur bei einer falsch bzw. unzureichend konfigurierten override.conf etwas nützen, oder wenn bei Ausfall eines Readers keine Alternative da ist und der bisherige Reader der einzige war, der diesen Sender "entschlüsseln" konnte. Dann würde CMD08 verhindern, dass vdr-sc den server mit Anfragen bombardiert welche zu dem Zeitpunkt eh nicht beantwortet werden können.
Bei einer sauber konfigurierten override.conf und einem server mit genügend Ausfallsicherheit (lokale SCs fallen eher selten aus) sollte es jedoch nie soweit kommen, dass an den Client das CMD08 gesendet wird.
Einzige Ausnahme sind PPV Sender, aber die hat man ja meist eh garnicht in der Kanalliste.
 
AW: [Script] VDR-SC FFdecsa optimization

ich bekomme das script nicht mehr zum laufen.ein kopierfehler schliesse ich aus.

hier die fehlermeldung und was ich kopiert habe.

seit der b version funkt es bei mir nicht mehr.

Code:
Kampfsau FFdecsa # ./FFdecsa_optimization_helper_V9d.sh
./FFdecsa_optimization_helper_V9d.sh: Zeile 2: $'\r': Kommando nicht gefunden.

### FFdecsa optimization helper/benchmark 
### Version 9d


./FFdecsa_optimization_helper_V9d.sh: Zeile 8: $'\r': Kommando nicht gefunden.
./FFdecsa_optimization_helper_V9d.sh: Zeile 18: $'\r': Kommando nicht gefunden.
./FFdecsa_optimization_helper_V9d.sh: Zeile 19: $'\r': Kommando nicht gefunden.
./FFdecsa_optimization_helper_V9d.sh: Zeile 23: $'\r': Kommando nicht gefunden.
./FFdecsa_optimization_helper_V9d.sh: Zeile 26: $'\r': Kommando nicht gefunden.
./FFdecsa_optimization_helper_V9d.sh: Zeile 31: $'\r': Kommando nicht gefunden.
./FFdecsa_optimization_helper_V9d.sh: Zeile 40: $'\r': Kommando nicht gefunden.
./FFdecsa_optimization_helper_V9d.sh: Zeile 41: Syntaxfehler beim unerwarteten Wort `$'{\r''
'/FFdecsa_optimization_helper_V9d.sh: Zeile 41: `    print_usage() {
K

Code:
[LIST=1]
[*]#!/bin/bash
[*]echo ""
[*]echo "### FFdecsa optimization helper/benchmark "
[*]echo "### Version 9d"
[*]echo ""
[*]echo ""
[*]#   gcc-2.95   = i386, i486, i586,pentium, i686,pentiumpro, k6
[*]#   gcc-3.0   += athlon
[*]#   gcc-3.1   += pentium-mmx, pentium2, pentium3, pentium4, k6-2, k6-3, athlon-{tbird, 4,xp,mp}
[*]#   gcc-3.3   += winchip-c6, winchip2, c3
[*]#   gcc-3.4.0 += k8,opteron,athlon64,athlon-fx, c3-2
[*]#   gcc-3.4.1 += pentium-m, pentium3m, pentium4m, prescott, nocona
[*]#   gcc-4.3   += core2, amdfam10, geode
[*]#   gcc-4.5   += atom
[*]#   gcc-4.6   += corei7, corei7-avx, bdver1, btver1
[*]# customize here
[*]FFdecsaDIR="./FFdecsa"
[*]OwnFlags=""
[*]# compiler
[*]CC=g++
[*]# some initial values
[*]OLevel=""
[*]PMode=""
[*]MTimes=10
[*]_FLAGS=""
[*]_CPU=""
[*]_VERB=1
[*]_SHORT=1
[*]_NOTEST=0
[*]_CANNAT=0
[*]_NONAT=0
[*]_DONAT=0
[*]print_usage() {
[*]  echo ""
[*]  echo "Usage: $0 [OPTION [ARG]]..."
[*]  echo ""
[*]  echo "Options:"
[*]  echo "-D [PATH]     path to FFdecsa source directory"
[*]  echo "-O [LEVEL]    set custom optimization level e.g. S, 2 or 3"
[*]  echo "-P [MODE]     test only the given PARALLEL_MODE"
[*]  echo "-T [N]        number of tests per mode"
[*]  echo "-e            extended - test all PARALLEL_MODEs"
[*]  echo "-i            print system info - do not perform FFdecsa test"
[*]  echo "-n            disable \"native\" flags if gcc/g++ >=4.2"
[*]  echo "-q            be quiet - only results, warnings and errors"
[*]  echo "-h            this output"
[*]  echo ""
[*]}
[*]while getopts "D:O:P:T:einqh" options; do
[*]  case $options in
[*]    D ) if [ -d $OPTARG ]; then
[*]          FFdecsaDIR=$OPTARG
[*]        fi
[*]        ;;
[*]    O ) if [ -n $OPTARG ]; then
[*]          OLevel=$OPTARG
[*]        fi
[*]        ;;
[*]    P ) if [ -n $OPTARG ]; then
[*]          PMode=$OPTARG
[*]        fi
[*]        ;;
[*]    T ) if [[ $OPTARG =~ ^[0-9]+$ ]]; then
[*]          MTimes=$OPTARG
[*]        fi
[*]        ;;
[*]    e ) _SHORT=0
[*]        ;;
[*]    i ) _NOTEST=1
[*]        ;;
[*]    n ) _NONAT=1
[*]        ;;
[*]    q ) _VERB=0
[*]        ;;
[*]    h ) print_usage
[*]        exit 0
[*]        ;;
[*]   \? ) print_usage
[*]        exit 1;;
[*]  esac
[*]done
[*]if [ "$OLevel" != "" ]; then
[*]  case $OLevel in
[*]    S|s) OptFlag="-Os";;
[*]    0)   OptFlag="-O0";;
[*]    1)   OptFlag="-O1";;
[*]    2)   OptFlag="-O2";;
[*]    3)   OptFlag="-O3";;
[*]    *)   OptFlag="-O2";;
[*]  esac
[*]fi
[*]source_check() {
[*]  testpath=$1
[*]  if [ -f "${testpath}/FFdecsa.c" ] && [ -f "${testpath}/FFdecsa_test.c" ]; then
[*]    return 0
[*]  else
[*]    return 1
[*]  fi
[*]}
[*]if [ $_NOTEST -lt 1 ]; then
[*]  if [ ! -d $FFdecsaDIR ] ;then
[*]    echo "Warning: No valid path specified"
[*]    echo "Searching..."
[*]    echo ""
[*]    SRCPaths="/usr/src /usr/local/src /home"
[*]    PathFound=0
[*]    for vpth in $SRCPaths; do
[*]      FFtmpDIR="`find $vpth -name 'FFdecsa' -type d | grep -v -m 1 contrib`"
[*]      if [ ! -z $FFtmpDIR ]; then
[*]        FFdecsaDIR=$FFtmpDIR
[*]        PathFound=1
[*]      fi
[*]    done
[*]    if [ $PathFound -eq 0 ] ;then
[*]      echo "Error: FFdecsa not found!"
[*]      echo "Please specify the correct path to FFdecsa source directory using option \"-D\""
[*]      echo "FFdecsa test disabled!"
[*]      echo ""
[*]      _NOTEST=1
[*]    else
[*]      echo "Found possible FFdecsa source at:"
[*]      echo "$FFdecsaDIR"
[*]      if source_check "$FFdecsaDIR"; then
[*]        echo "...and source files looks valid."
[*]        echo "proceed..."
[*]        echo ""
[*]        echo ""
[*]      else
[*]        echo "...but no valid source files found."
[*]        echo "FFdecsa test disabled!"
[*]        echo ""
[*]        echo ""
[*]        _NOTEST=1
[*]      fi
[*]    fi
[*]  elif ! source_check "$FFdecsaDIR"; then
[*]        echo ""
[*]        echo "Error: No valid FFdecsa source files found at:"
[*]        echo "$FFdecsaDIR"
[*]        echo "FFdecsa test disabled!"
[*]        echo ""
[*]        _NOTEST=1
[*]  fi
[*]fi
[*][ -z "$CC" ] && CC=g++
[*]try_gcc_options() {
[*]    $CC $* -S -o /dev/null -xc /dev/null >/dev/null 2>&1
[*]}
[*]if ! try_gcc_options; then
[*]    echo "Error: Couldn't execute your compiler ($CC)" >&2
[*]    exit 1
[*]fi
[*]if try_gcc_options -march=i386; then
[*]    is_x86_64=0
[*]else
[*]    is_x86_64=1
[*]fi
[*]try_line() {
[*]    skip=0
[*]    for arch in $1; do
[*]        if try_gcc_options -march=$arch; then
[*]            echo $arch
[*]            return
[*]        fi
[*]    done
[*]    return 1
[*]}
[*]read_cpu_data_linux() {
[*]    IFS=":"
[*]    while read name value; do
[*]        unset IFS
[*]        name=`echo $name` #strip spaces
[*]        if [ "$name" != "flags" ]; then
[*]            value=`echo $value | sed 's/\([^ ]*\).*/\1/'` #take first word
[*]        fi
[*]        IFS=":"
[*]        if [ "$name" = "vendor_id" ]; then
[*]            vendor_id="$value"
[*]        elif [ "$name" = "cpu family" ]; then
[*]            cpu_family="$value"
[*]        elif [ "$name" = "model" ]; then
[*]            cpu_model="$value"
[*]        elif [ "$name" = "flags" ]; then
[*]            flags="$value"
[*]            break #flags last so break early
[*]        fi
[*]    done < /proc/cpuinfo
[*]    unset IFS
[*]}
[*]read_cpu_data() {
[*]    # Default values
[*]    vendor_id="NotFound"
[*]    cpu_family="-1"
[*]    cpu_model="-1"
[*]    flags=""
[*]    read_cpu_data_linux
[*]}
[*]### gcc arch detection
[*]find_cpu_flags() {
[*]if [ "$vendor_id" = "AuthenticAMD" ]; then
[*]    if [ $cpu_family -eq 4 ]; then
[*]        _CPU="i486"
[*]    elif [ $cpu_family -eq 5 ]; then
[*]        if [ $cpu_model -lt 4 ]; then
[*]            _CPU="pentium"
[*]        elif [ \( $cpu_model -eq 6 \) -o \( $cpu_model -eq 7 \) ]; then
[*]            _CPU="k6"
[*]        elif [ \( $cpu_model -eq 8 \) -o \( $cpu_model -eq 12 \) ]; then
[*]            line="k6-2 k6"
[*]        elif [ \( $cpu_model -eq 9 \) -o \( $cpu_model -eq 13 \) ]; then
[*]            line="k6-3 k6-2 k6"
[*]        elif [ $cpu_model -eq 10 ]; then #geode LX
[*]            line="geode k6-2 k6"
[*]            #The LX supports 3dnowext in addition to the k6-2 instructions,
[*]            #however gcc doesn't support explicitly selecting that.
[*]        fi
[*]    elif [ $cpu_family -eq 6 ]; then
[*]        if [ $cpu_model -le 3 ]; then
[*]            line="athlon k6-3 k6-2 k6"
[*]        elif [ $cpu_model -eq 4 ]; then
[*]            line="athlon-tbird athlon k6-3 k6-2 k6"
[*]        elif [ $cpu_model -ge 6 ]; then #athlon-{4,xp,mp} (also geode NX)
[*]            line="athlon-4 athlon k6-3 k6-2 k6"
[*]        fi
[*]    elif [ $cpu_family -eq 15 ]; then #k8,opteron,athlon64,athlon-fx
[*]        line="k8 athlon-4 athlon k6-3 k6-2 k6"
[*]    elif [ $cpu_family -eq 16 ] ||    #barcelona,amdfam10
[*]         [ $cpu_family -eq 17 ]; then #griffin
[*]        line="amdfam10 k8 athlon-4 athlon k6-3 k6-2 k6"
[*]    elif [ $cpu_family -eq 20 ]; then #bobcat
[*]        line="btver1 amdfam10 k8 athlon-4 athlon k6-3 k6-2 k6"
[*]    elif [ $cpu_family -eq 21 ]; then #bulldozer
[*]        line="bdver1 btver1 amdfam10 k8 athlon-4 athlon k6-3 k6-2 k6"
[*]    fi
[*]elif [ "$vendor_id" = "CentaurHauls" ]; then
[*]    if [ $cpu_family -eq 5 ]; then
[*]        if [ $cpu_model -eq 4 ]; then
[*]            line="winchip-c6 pentium"
[*]        elif [ $cpu_model -eq 8 ]; then
[*]            line="winchip2 winchip-c6 pentium"
[*]        elif [ $cpu_model -ge 9 ]; then
[*]            line="winchip2 winchip-c6 pentium" #actually winchip3 but gcc doesn't support this currently
[*]        fi
[*]    elif [ $cpu_family -eq 6 ]; then
[*]        if echo "$flags" | grep -q cmov; then
[*]            fallback=pentiumpro
[*]        else
[*]            fallback=pentium #gcc incorrectly assumes i686 always has cmov
[*]        fi
[*]        if [ $cpu_model -eq 6 ]; then
[*]            _CPU="pentium" # ? Cyrix 3 (samuel)
[*]        elif [ $cpu_model -eq 7 ] || [ $cpu_model -eq 8 ]; then
[*]            line="c3 winchip2 winchip-c6 $fallback"
[*]        elif [ $cpu_model -ge 9 ]; then
[*]            line="c3-2 c3 winchip2 winchip-c6 $fallback"
[*]        fi
[*]    fi
[*]elif [ "$vendor_id" = "GenuineIntel" ]; then
[*]    if [ $cpu_family -eq 3 ]; then
[*]        _CPU="i386"
[*]    elif [ $cpu_family -eq 4 ]; then
[*]        _CPU="i486"
[*]    elif [ $cpu_family -eq 5 ]; then
[*]        if [ $cpu_model -ne 4 ]; then
[*]            _CPU="pentium"
[*]        else
[*]            line="pentium-mmx pentium" #No overlap with other vendors
[*]        fi
[*]    elif [ $cpu_family -eq 6 ]; then
[*]        if [ \( $cpu_model -eq 0 \) -o \( $cpu_model -eq 1 \) ]; then
[*]            _CPU="pentiumpro"
[*]        elif [ \( $cpu_model -ge 3 \) -a \( $cpu_model -le 6 \) ]; then #4=TM5600 at least
[*]            line="pentium2 pentiumpro pentium-mmx pentium i486 i386"
[*]        elif [ \( $cpu_model -eq 9 \) -o \( $cpu_model -eq 13 \) ]; then #centrino
[*]            line="pentium-m pentium4 pentium3 pentium2 pentiumpro pentium-mmx pentium i486 i386"
[*]        elif [ \( $cpu_model -eq 14 \) ]; then #Core
[*]            line="prescott pentium-m pentium4 pentium3 pentium2 pentiumpro pentium-mmx pentium i486 i386"
[*]        elif [ \( $cpu_model -eq 28 \) -o \( $cpu_model -eq 38 \) ]; then #Atom
[*]            line="atom core2 pentium-m pentium4 pentium3 pentium2 pentiumpro pentium-mmx pentium i486 i386"
[*]        elif [ $cpu_model -eq 26 ] ||
[*]             [ $cpu_model -eq 30 ] ||
[*]             [ $cpu_model -eq 31 ] ||
[*]             [ $cpu_model -eq 46 ] ||
[*]             # ^ Nehalem ^
[*]             [ $cpu_model -eq 37 ] ||
[*]             [ $cpu_model -eq 44 ] ||
[*]             [ $cpu_model -eq 47 ]; then
[*]             # ^ Westmere ^
[*]            line="corei7 core2 pentium-m pentium4 pentium3 pentium2 pentiumpro pentium-mmx pentium i486 i386"
[*]        elif [ $cpu_model -eq 42 ]; then #Sandy Bridge
[*]            line="corei7-avx corei7 core2 pentium-m pentium4 pentium3 pentium2 pentiumpro pentium-mmx pentium i486 i386"
[*]        elif [ $cpu_model -eq 15 ] ||
[*]             # ^ Merom ^
[*]             [ $cpu_model -eq 23 ] ||
[*]             [ $cpu_model -eq 29 ]; then
[*]             # ^ Penryn ^
[*]            line="core2 pentium-m pentium4 pentium3 pentium2 pentiumpro pentium-mmx pentium i486 i386"
[*]        elif [ \( $cpu_model -ge 7 \) -a \( $cpu_model -le 11 \) ]; then
[*]            line="pentium3 pentium2 pentiumpro pentium-mmx pentium i486 i386"
[*]        fi
[*]    elif [ $cpu_family -eq 15 ]; then
[*]        line="pentium4 pentium3 pentium2 pentiumpro pentium-mmx pentium i486 i386"
[*]        if [ $cpu_model -ge 3 ]; then
[*]            line="prescott $line"
[*]        fi
[*]    fi
[*]elif [ "$vendor_id" = "Geode" ]; then #by NSC
[*]    if [ $cpu_family -eq 5 ]; then
[*]        if [ \( $cpu_model -eq 4 \) -o \( $cpu_model -eq 9 \) ]; then
[*]            # Note both models 4 and 9 have cmov.
[*]            # In addition, model 9 has cxmmx.
[*]            # Note also, the "geode" gcc arch is for newer AMD geode cores
[*]            # and is not appropriate for this older core.
[*]            line="pentium-mmx pentium"
[*]        fi
[*]    fi
[*]fi
[*]if [ \( -z "$_CPU" \) -a \( -z "$line" \) ]; then
[*]    echo "\
[*]Unrecognised CPU.
[*]  Vendor:$vendor_id family:$cpu_family model:$cpu_model
[*]  flags:$flags" >&2
[*]    exit 1
[*]fi
[*][ -z "$_CPU" ] && _CPU="`try_line "$line"`"
[*]if echo "$_CPU" | grep -q "amdfam10"; then
[*]    if echo "$flags" | grep -q "sse5"; then
[*]        if try_gcc_options "-msse5"; then #gcc >= 4.3
[*]            _FLAGS=" -msse5"
[*]        fi
[*]    fi
[*]elif echo "$_CPU" | grep -E -q "(k8|c3-2)"; then
[*]    if echo "$flags" | grep -q "sse3"; then
[*]        if try_gcc_options "-msse3"; then #gcc >= 3.3.3
[*]            _FLAGS=" -msse3"
[*]        fi
[*]    fi
[*]elif echo "$_CPU" | grep -q "core2"; then
[*]    if echo "$flags" | grep -q "sse4_2"; then
[*]        if try_gcc_options "-msse4"; then #gcc >= 4.3
[*]            _FLAGS=" -msse4"
[*]        fi
[*]    elif echo "$flags" | grep -q "sse4_1"; then
[*]        if try_gcc_options "-msse4.1"; then #gcc >= 4.3
[*]            _FLAGS=" -msse4.1"
[*]        fi
[*]    fi
[*]fi
[*]}
[*]read_cpu_data
[*]# look if "native" flag is supported
[*]if try_gcc_options "-march=native"; then
[*]  _CANNAT=1
[*]fi
[*]if [ "$OwnFlags" == "" ]; then
[*]    find_cpu_flags
[*]else
[*]  _NONAT=1
[*]  if try_gcc_options $OwnFlags; then
[*]    echo "Custom compiler flags accepted by $CC"
[*]    echo ""
[*]  else
[*]    echo "Custom compiler flags rejected by $CC"
[*]    echo "FFdecsa_Test will not be performed"
[*]    echo ""
[*]    exit 1
[*]  fi
[*]fi
[*]if [ $_VERB -ge 1 ]; then
[*]    gcc_ver=`$CC -v 2>&1 | grep -i "gcc version" | head -n 1`
[*]    echo "### CPU-INFO ###"
[*]    if [ $is_x86_64 -eq 0 ]; then
[*]      echo "System: x86"
[*]    else
[*]      echo "System: x86_64"
[*]    fi
[*]    if [ "$_CPU" != "" ]; then
[*]      echo "Auto detected arch: $_CPU"
[*]    fi
[*]    echo ""
[*]    echo "Vendor-ID: $vendor_id"
[*]    echo "CPU-Family: $cpu_family"
[*]    echo "CPU-Model: $cpu_model"
[*]    echo "Flags: $flags"
[*]    echo ""
[*]    echo "$gcc_ver"
[*]fi
[*]if [ $_CANNAT -ge 1 ] && [ $_NONAT -eq 0 ]; then
[*]  _DONAT=1
[*]  _CPU="native"
[*]  if [ $_VERB -ge 1 ]; then
[*]    echo "Using compilers \"native\" flags"
[*]    echo ""
[*]    echo ""
[*]  fi
[*]elif [ $_VERB -ge 1 ] && [ "$OwnFlags" == "" ]; then
[*]  echo "Compilers \"native\" flags disabled or unsupported"
[*]  echo ""
[*]  echo ""
[*]fi
[*]if [ $is_x86_64 -eq 1 ]; then
[*]    if [ "$_FLAGS" != "" ]; then
[*]        _FLAGS="$_FLAGS -fPIC"
[*]    else
[*]        _FLAGS=" -fPIC"
[*]    fi
[*]fi
[*]# complete flags for FFdesca_Test
[*]if [ "$OwnFlags" != "" ]; then
[*]  IFLAGS=$OwnFlags
[*]elif [ "$OLevel" == "" ]; then
[*]  IFLAGS="-march=${_CPU}${_FLAGS} -fexpensive-optimizations -fomit-frame-pointer -funroll-loops"
[*]else
[*]  IFLAGS="$OptFlag -march=${_CPU}${_FLAGS} -fexpensive-optimizations -fomit-frame-pointer -funroll-loops"
[*]fi
[*]###
[*]### FFdecsa Test - get best PARALLEL_MODE
[*]###
[*]ffdecsa_test() {
[*]  if [ "$PMode" == "" ]; then
[*]    if [ $_SHORT -lt 1 ]; then
[*]      FFDECSA_MODES="PARALLEL_32_INT PARALLEL_32_4CHAR PARALLEL_32_4CHARA \
[*]                     PARALLEL_64_8CHAR PARALLEL_64_8CHARA PARALLEL_64_2INT \
[*]                     PARALLEL_64_LONG PARALLEL_64_MMX PARALLEL_128_16CHAR \
[*]                     PARALLEL_128_16CHARA PARALLEL_128_4INT PARALLEL_128_2LONG \
[*]                     PARALLEL_128_2MMX PARALLEL_128_SSE PARALLEL_128_SSE2"
[*]    else
[*]      FFDECSA_MODES="PARALLEL_32_INT PARALLEL_64_2INT PARALLEL_64_LONG \
[*]                     PARALLEL_64_MMX PARALLEL_128_2LONG PARALLEL_128_2MMX \
[*]                     PARALLEL_128_SSE PARALLEL_128_SSE2"
[*]    fi
[*]  else
[*]    FFDECSA_MODES=$PMode
[*]  fi
[*]  if test "x${TMPDIR}" = "x"; then
[*]    TMPDIR="/tmp/FFdecsa"
[*]  fi
[*]  if [ -d "${TMPDIR}" ]; then
[*]    rm -rf "${TMPDIR}"
[*]  fi
[*]  mkdir "${TMPDIR}"
[*]  TMPOUT="${TMPDIR}/out"
[*]  cp $FFdecsaDIR/*.c $FFdecsaDIR/*.h $FFdecsaDIR/Makefile "${TMPDIR}"
[*]  if [ "$OwnFlags" != "" ]; then
[*]    FLAGS="$IFLAGS"
[*]  else
[*]    FLAGS="$1 $IFLAGS"
[*]  fi
[*]  COMPILER=$CC
[*]  export FLAGS
[*]  export COMPILER
[*]  for var in ${FFDECSA_MODES}; do
[*]    if [ $_VERB -ge 1 ]; then
[*]      echo "    ${var}"
[*]    fi
[*]    make -C "${TMPDIR}" -e FFdecsa_test "PARALLEL_MODE=${var}" >/dev/null 2>&1
[*]    if test $? -ne 0 ; then
[*]      if [ $_VERB -ge 1 ]; then
[*]        echo "    ${var}: build failed"
[*]      fi
[*]    else
[*]      MAX_M_val=0
[*]      rm -f ${TMPOUT}
[*]      sync;sleep 2; "${TMPDIR}/FFdecsa_test" > /dev/null 2>"${TMPOUT}"
[*]      if test $? -ne 0; then
[*]        if [ $_VERB -ge 1 ]; then
[*]          echo "    ...failed!"
[*]        fi
[*]      else
[*]        grep FAILED "${TMPOUT}" >/dev/null 2>&1
[*]        if test $? -ne 1; then
[*]          if [ $_VERB -ge 1 ]; then
[*]            echo "    ...failed!"
[*]          fi
[*]        else
[*]          MAX_M_val=`grep "speed=.*Mbit" "${TMPOUT}" | sed -e 's/^.*=\([0-9]*\)\.[0-9]* Mbit.*$/\1/'`
[*]          if [ $_VERB -ge 1 ]; then
[*]            printf "      - $MAX_M_val"
[*]          fi
[*]          if [ $MTimes -ge 2 ]; then
[*]            for i in `seq 2 $MTimes`; do
[*]              # sync;
[*]              # sleep 1;
[*]              "${TMPDIR}/FFdecsa_test" > /dev/null 2>"${TMPOUT}"
[*]              res=`grep "speed=.*Mbit" "${TMPOUT}" | sed -e 's/^.*=\([0-9]*\)\.[0-9]* Mbit.*$/\1/'`
[*]              if test $res -gt $MAX_M_val; then
[*]                MAX_M_val=$res
[*]              fi
[*]              if [ $_VERB -ge 1 ]; then
[*]                printf ", $res"
[*]              fi
[*]            done
[*]          fi
[*]          if [ $_VERB -ge 1 ]; then
[*]            printf "\n"
[*]            echo "      - $MAX_M_val Mbit/s max."
[*]          fi
[*]          if [ "$1" == "-O2" ]; then
[*]            if test $MAX_M_val -gt $MAX_val_2; then
[*]              MAX_val_2=$MAX_M_val
[*]              MAX_MODE_2=$var
[*]              MAX_val=$MAX_M_val
[*]              MAX_MODE=$var
[*]            fi
[*]          elif [ "$1" == "-O3" ]; then
[*]            if test $MAX_M_val -gt $MAX_val_3; then
[*]              MAX_val_3=$MAX_M_val
[*]              MAX_MODE_3=$var
[*]              MAX_val=$MAX_M_val
[*]              MAX_MODE=$var
[*]            fi
[*]          elif test $MAX_M_val -gt $MAX_val; then
[*]            MAX_val=$MAX_M_val
[*]            MAX_MODE=$var
[*]          fi
[*]        fi
[*]      fi
[*]    fi
[*]    make -C "${TMPDIR}" clean >/dev/null 2>&1
[*]  done
[*]  unset
[*]  if [ $_VERB -ge 1 ]; then
[*]    echo "  Fastest PARALLEL_MODE = ${MAX_MODE} (${MAX_val} Mbit/s)"
[*]    echo ""
[*]  fi
[*]  rm -rf "${TMPDIR}"
[*]}
[*]MAX_val=0
[*]MAX_val_2=0
[*]MAX_val_3=0
[*]MAX_MODE="PARALLEL_64_MMX"
[*]MAX_MODE_2="PARALLEL_64_MMX"
[*]MAX_MODE_3="PARALLEL_64_MMX"
[*]if [ $_NOTEST -eq 0 ]; then
[*]  if [ $_VERB -ge 1 ]; then
[*]      echo "### FFdeCSA TEST ###"
[*]      echo "Using compiler: $CC"
[*]      echo "Flags: $IFLAGS"
[*]      echo ""
[*]  fi
[*]  if [ "$OwnFlags" != "" ]; then
[*]    ffdecsa_test
[*]  elif [ "$OLevel" != "" ]; then
[*]    ffdecsa_test "$OptFlag"
[*]  else
[*]    if [ $_VERB -ge 1 ]; then
[*]      echo "Testing optimization levels 2 and 3"
[*]      echo ""
[*]    else
[*]      echo "This may take a while..."
[*]    fi
[*]    for i in `seq 2 3`; do
[*]      if [ $_VERB -ge 1 ]; then
[*]        echo "  Level -O${i}:"
[*]      fi
[*]      ffdecsa_test "-O${i}"
[*]    done
[*]    if [ $MAX_val_3 -ge $MAX_val_2 ]; then
[*]      MAX_MODE=$MAX_MODE_3
[*]      MAX_val=$MAX_val_3
[*]      OptFlag="-O3"
[*]    else
[*]      MAX_MODE=$MAX_MODE_2
[*]      MAX_val=$MAX_val_2
[*]      OptFlag="-O2"
[*]    fi
[*]    echo ""
[*]    echo "Best result with $OptFlag and $MAX_MODE at $MAX_val Mbit/s"
[*]    echo ""
[*]    echo ""
[*]  fi
[*]fi
[*]if [ $_VERB -ge 1 ]; then
[*]  echo "### VDR-SC Makefile FFdeCSA OPTS ###"
[*]  if [ "$OwnFlags" != "" ]; then
[*]    echo "Custom compiler flags are set."
[*]    echo "Adapt the Makefile yourself!"
[*]  else
[*]    echo "CPUOPT     ?= $_CPU"
[*]    if [ $_NOTEST -eq 0 ]; then
[*]      echo "PARALLEL   ?= $MAX_MODE"
[*]    else
[*]      echo "PARALLEL   ?= $MAX_MODE   # untested!"
[*]    fi
[*]    if [ "$_FLAGS" == "" ]; then
[*]      echo "CSAFLAGS   ?= $OptFlag -fexpensive-optimizations -fomit-frame-pointer -funroll-loops"
[*]    else
[*]      echo "CSAFLAGS   ?= ${OptFlag}${_FLAGS} -fexpensive-optimizations -fomit-frame-pointer -funroll-loops"
[*]    fi
[*]  fi
[*]  echo ""
[*]  echo "### GENERIC FFdeCSA make OPTS ###"
[*]fi
[*]if [ "$OwnFlags" != "" ] || [ "$OLevel" != "" ]; then
[*]  echo "FLAGS=\"${IFLAGS}\" PARALLEL_MODE=${MAX_MODE}"
[*]else
[*]  echo "FLAGS=\"$OptFlag ${IFLAGS}\" PARALLEL_MODE=${MAX_MODE}"
[*]fi
[*]echo ""
[*]exit 0
[/LIST]
 
Zuletzt bearbeitet:
Zurück
Oben