Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo

Close

Compile STLport 5.2.1 on Solaris 10/Studio

Help
Tim Mooney
2012-03-16
2013-05-13
  • Tim Mooney
    Tim Mooney
    2012-03-16

    I'm trying to build STLport 5.2.1 on Solaris 10 (x86_64-sun-solaris2.10) with the Sun/Oracle Studio 12.2 toolchain (not gcc).  I have GNU make 3.81.  I've been building software on Solaris for years, so this isn't my first rodeo.  I also did extensive searching for the error I'm encountering, and haven't found anything close.

    I did this:

    $ /local/bin/bzip2 -dc /local/src/RPM/SOURCES/STLport-5.2.1.tar.bz2 | tar -xf -
    $ cd STLport-5.2.1
    $ CC=cc
    $ CXX=CC
    $ CFLAGS="-Xa -xO4 -xipo=2 -mt -KPIC"
    $ CXXFLAGS="-xO3 -mt -KPIC"
    $ CFLAGS="$CFLAGS -xtarget=native -m64 -xarch=native"
    $ CXXFLAGS="$CXXFLAGS -xtarget=native -m64 -xarch=native"
    $ export CC CFLAGS
    $ export CXX CXXFLAGS
    $ ./configure -prefix=/local -libdir=/local/lib/64 -use-compiler-family=CC -with-extra-cxxflags=" -xO3 -mt -KPIC -xtarget=native -m64 -xarch=native" -with-extra-cflags=" -Xa -xO4 -xipo=2 -mt -KPIC -xtarget=native -m64 -xarch=native"
    $ gmake
    gmake -C build/lib all;
    gmake: Entering directory `/local/src/RPM/BUILD/STLport-5.2.1/build/lib'
    /bin/sh: test: unknown operator obj/CC/so
    gmake: ***  Error 1
    gmake: Leaving directory `/local/src/RPM/BUILD/STLport-5.2.1/build/lib'
    gmake: ***  Error 2

    I've hunted through the Makefile fragments and tried various options to GNU make to get it to give me a better clue as to where the "obj/CC/so" is coming from, but so far I haven't even been successful in finding that.

    Anyone seen this, or have a suggestion as to what makefile fragment I should be looking at?

    Thanks,

    Tim

     
  • Tim Mooney
    Tim Mooney
    2012-03-16

    Of course I find the problem not five minutes after posting my question…

    It's build/Makefiles/gmake/targetdirs.mak, specifically the "createdirs" define.

    It's the

       -e $$d -a -f $$d

    There are several variants of "test" available on Solaris 10, but the one built into the traditional Bourne shell apparently doesn't support "-e".

    The -e is really superfluous anyway; -f $$d suffices for what's really being tested here - it exists and it's not a directory.

     
  • See STLport-5.2 branch. Here contributions from Jan Echternach, the last man who work with Solaris.

    1. Don't set vars you set.
    2. ./configure -use-compiler-family=CC
    3. (cd build/lib && gmake )

    bash is preferable, but STLport-5.2 branch should support born shell too, I hope.