Hratky s STDCXX (C++ STL knihovna)

Dlouho jsem slýchával pochvalné poznámky o apachske C++ STD knihovně (puvodne RogueWave) od kolegu portující KDE na OpenSolaris.
Vždy jsem si říkal, ze bych si měl najít čas a vyzkoušet si ji osobně ... kupodivu jsem si nakonec volny čas našel ;-)

Tady jsou mé zkušenosti:

1) Instalace
Nechtěl jsem si installovat cely balíček programů KDE a tak jsem sáhl po SFE.
$pkgtool --download build SFEstdcxx.spec

Všem co se točí kolem pkgbuildu doporučuji si prohlídnout soubor SFEstdcxx.spec, neb je multi-arch (kompiluje jak 64-bit tak 32-bit)
a hlavně používá 2 kompilatory (gcc a sunCC).

Takže pokud máte 64-bitovou mašinu, tak se zdrojáky zkompiluji 4-krát (32-gcc, 64-gcc, 32-suncc, 64-suncc). ;-)

gcc verze se nainstaluje do /usr/gnu/stdcxx
a suncc verze do /usr/stdcxx

2) Kompilace s stdcxx

Stačí přidat následující volby kompilátoru:
CXXFLAGS="-library=%none -staticlib=%none -L/usr/stdcxx/lib -R/usr/stdcxx/lib -I/usr/stdcxx/include -lstd -lm"
LDFLAGS="-library=%none -staticlib=%none -L/usr/stdcxx/lib -R/usr/stdcxx/lib"

-R říká linkeru, kde má hledat knihovny pro výslednou binárku, jinak by se musela exportovat LD_LIBRARY_PATH

Dlouho jsem nevěděl jaký projekt zkusím zkompilovat s stdcxx, ale pak jsem si řekl, že když už tak něco zabijáckýho => ano, Boost!

Vzal jsem posledni verzi boostu 1.40.0 a vysledek je SFEboost-stdcxx.spec.
Jen jeden patch (fixthread.diff) jsem musel přidat a to kvůli suncc, ktery nepodporuje r-value reference, takže stdcxx má jedničku. ;-)