Here's how I built 3dSkullStrip/SUMA on solaris2.9 using Sun Studio 10...
1. Install sun's OpenGL (I used 1.3)
[
www.sun.com]
2. Download and extract the latest afni_src (AFNI_2005_09_06_0927)
3. Pick Makefile.solaris29_suncc
> cd [afni_src]
> cp Makefile.solaris26_suncc Makefile
4. Add SUMA varables near the end of [afni_src]/Makefile
[snip]
# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
# For SUMA
SUMA_INCLUDE_PATH = -I/usr/openwin/share/include/X11 -I./ -I../ -I../niml/ -Igts/src
SUMA_LINK_PATH = -L/usr/openwin/lib -R/usr/openwin/lib -L../
SUMA_LINK_LIB = $(LZLIB) -lm -lGL -lGLU -lGLw -lXmu -lXm -lXp -lXt -lXext -lX11 -lsocket -lnsl
SUMA_MAKEFILE_NAME = SUMA_Makefile_NoDev
SUMA_BIN_ARCHIVE = SUMA_solaris28_suncc.tar
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
######################################################################
MAKE = make
include Makefile.INCLUDE
[end of file]
5. Build AFNI vastness
> cd [afni_src]
> make vastness
6. Modify [afni_src]/SUMA/SUMA_BrainWrap.c in two places
The Sun Studio 10 compiler complains about declaring SOCenter as a zero length array in lines 1081 and 1457 of SUMA_BrainWrap.c:
line 1081: float hdim[3], t0, t1, t2, SOCenter[0], p0[3], p1[3];
line 1457: float hdim[3], t0, t1, t2, SOCenter[0], p0[3], p1[3];
SOCenter is declared elsewhere in the file as "SOCenter[3]" so I blindly changed these lines to:
line 1081: float hdim[3], t0, t1, t2, SOCenter[3], p0[3], p1[3];
line 1457: float hdim[3], t0, t1, t2, SOCenter[3], p0[3], p1[3];
7. Fail to build SUMA
> cd [afni_src]
> make suma_exec
This will ultimately fail complaining about MarchingCubes.o, but this needs to be done before the next step anyway.
8. Build the "release" version of MarchingCubes.o
To the extent that I understand what happens inside [afni_src]/SUMA/MarchingCubes/Makefile, MarchingCubes.o gets built (via the "mc" target) with performance flags, but this ends up causing linking problems (unresolved _mcount references) later.
My workaround was to compile the "release" version using the "mcR" target by hand, but this doesn't work from SUMA_Makefile_NoDev so I did it manually.
> cd [afni_src]/SUMA/MarchingCubes
> make mcR
> cp release/MarchingCubes.o debug/MarchingCubes.o
> cp release/MarchingCubes.o ..
Note: This builds MarchingCubes.o using gcc, but that seems to be OK. I tried to do this before "failing to build suma" but a "rm *.o" in the SUMA directory the first time causing the incompatable debug version to be built, so that doesn't work.
9. Build and install SUMA
> cd [afni_src]
> make suma_exec install
After this 3dSkullStrip seems to work on solaris. I don't know enough about SUMA to know if the rest of SUMA works or not.
--judd