# [SOLVED] CFLAGS i CXXFLAGS - klopot ze skryptem

## n3rd

Witam

Koniecznie potrzebuje ustawic kilku pakietom indywidualne flagi CFLAGS i CXXFLAGS

Znalazlem taki skrypt na forum gentoo i dla CFLAGS (/etc/portage/package.cflags) dziala jak trzeba jednak w przypadku CXXFLAGS ( /etc/portage/package.cxxflags) juz niestety nie eksportuje nowych flag.

```
#/etc/portage/bashrc

loopize()

{

 local file=$1

 local var

  

 # Bail if file does not exist or is not readable.

 [ -r ${ROOT}/etc/portage/package.$file ] || return 0

     

 while read -a target

 do

  unset var

    if [ "${target}" = "${CATEGORY}" -o "${target}" = "${CATEGORY}/${PN}" ]

     then

      unset `echo $file | /usr/bin/tr a-z A-Z`

       # Skip the package part of the line

       target[0]=""

       for i in "${target[@]}"

       do

         case "$i" in

           GLOBALCFLAGS) var="$var $GLOBALCFLAGS" ;;

           GLOBALCXXFLAGS) var="$var $GLOBALCXXFLAGS" ;;

           GLOBALLDFLAGS) var="$var $GLOBALLDFLAGS" ;;

           GLOBALFEATURES) var="$var $GLOBALFEATURES" ;;

           *) var="$var $i"

         esac

       done

       export `echo $file | /usr/bin/tr a-z A-Z`="`echo $var`"

    fi

 done < ${ROOT}/etc/portage/package.$file

}

export GLOBALCFLAGS=$CFLAGS

export GLOBALCXXFLAGS=$CXXFLAGS

export GLOBALLDFLAGS=$LDFLAGS

export GLOBALFEATURES=$FEATURES

loopize "cflags"

loopize "cxxflags"

loopize "ldflags"

loopize "features"

unset GLOBALCFLAGS

unset GLOBALCXXFLAGS

unset GLOBALLDFLAGS

unset GLOBALFEATURES
```

Domyslacie sie moze co tu jest nie tak?

Daniel

----------

## n3rd

Mala literowka byla.. poprawilem.. ale nadal nie eksportuje flag

pozdr

----------

## lazy_bum

portage-bashrc-ng oferuje podobną funkcję i, z tego co wiem, działa. ebuild znajdziesz w uberlayu z sygnaturki.

----------

## unK

Nawet portage-bashrc-ng nie jest potrzebny do tego. To można ustawić przez /etc/portage/env.

----------

## n3rd

Testowałem portage-bashrc-ng i problem jest dokladnie ten sam. Kiedy ustawie flagi CFLAGS na wybranych pakietow w /etc/portage/package.cflags flagi dzialaja wlasciwie i wybrane pakiety buduja sie z indywidualnymi flagami. Problem dotyczy flag CXXFLAGS - w tym przypadku postepuje dokladnie tak samo... wpisuje flagi wybranym pakietom w /etc/portage/package.cxxflags ale pakiet i tak buduje sie z globalnymi flagami.

Problem tak naprawde dotyczy kilku pakietow, ktore kompiluja sie z bledem (np. -fPIC). Ok, mozna te wybrane pakiety budowac recznie pakiet po pakiecie... jednek przy rekompilacji systemu.. czy zwyklej aktualizacji systemu znowu te kilka pakietow bedzie mialo ustawione globalne CXXFLAFS i beda sie wykladac podczas kompilacji.

http://www.gentoo.org/proj/pl/base/amd64/howtos/index.xml?part=1&chap=3

Nie potrafie zrozumiec tego, dlaczego przy tym samym skrypcie, przy tych samym postepowaniu, flagi CFLAGS potrafia sie ustawic indywidualnie ale CXXFLAGS juz nie i pozostaja globalne.

Pozdrawiam

daniel

---

Rozwiazalem probelm... troche w malo elegancki sposob ale dziala. W skrypcie zamienilem:

```
#export GLOBALCXXFLAGS=$CXXFLAGS

export GLOBALCXXFLAGS=$CFLAGS
```

i flagi CXXFLAGS wpisuje bezposrednio do pliku /etc/portage/package.cflags. Nadal jednak nie rozumiem co wczesniej bylo nie tak... 

pozdrawiam

daniel

--- Edytowane przez moderatora

Połączone dwa posty.

Kurt Steiner

----------

## Kurt Steiner

n3rd, skoro rozwiązałeś problem to dodaj, proszę, [SOLVED] na początku tematu.

----------

## n3rd

 *Kurt Steiner wrote:*   

> n3rd, skoro rozwiązałeś problem to dodaj, proszę, [SOLVED] na początku tematu.

 To raczej kiepskie rozwiązanie... tymczasowe...  większe paczki takie jak perl podczas konfiguracji i tak sprawdzają falgi globalne...

pozdrawiam

daniel

----------

