Slicer:Patches for the Mac

From Slicer Wiki
Jump to: navigation, search
Home < Slicer:Patches for the Mac

Configuring the X Server

There are two options you can use to address event processing issues (missed button presses) on the Mac and make slicer easier to use:

  • activate focus follows mouse mode for X11 windows
defaults write wm_ffm true


  • keep click to focus behavior, but passes the click event to the clicked window
defaults write wm_click_through true

Note: these remainder of these instructions refer to the steps needed to compile the 2.4 release of slicer. The current cvs version includes patches to genlib.tcl that perform these steps automatically.


On Mac OSX 10.3 the X server seems to have a bug in processing certiain events.

You can address this by applying the following patch to the file generic/tkEvent.c in the tk release tagged core-8-4-6.

> /* the XFilterEvent call causes a long delay on Mac OSX for no apparent benefit */
> #if 0
> #endif

This has the effect of removing a call to XFilterEvents().

The patch is also available on Xythos. To apply the patch, copy it into the directory slicer2/Lib/darwin-ppc/tcl/tk/generic and run the command:

patch -i tkEventPatch.diff

from that directory. To compile, create the directory slicer2/Lib/darwin-ppc/tcl-build, then change directories to slicer/Lib/darwin-ppc/tcl/tk/unix, and run:

./configure --with-tcl=/YourSlicerPath/slicer2/Lib/darwin-ppc/tcl-build/lib --prefix=/YourSlicerPath/slicer2/Lib/darwin-ppc/tcl-build
make install


The ranlib command needs to be run manually on some tcl/tk libraries.


Currently, BLT does not compile for the mac. The error is:

ld: common symbols not allowed with MH_DYLIB output format with the -multi_module option

followed by a list of symbols.

BLT needs to be manually commented out of the Scripts/genlib.tcl file, and vtkFMRIEngine will not build or run.

Alternatively, --with-cflags="-fno-common" can be added to the configure input to fix this 'common symbols not allowed' problem. But this necessitates linking the tcl,tk and X libs in certain files. Here's the diffs, in the src and src/shared directories, showing the additional $(LIBS). Also, a separate bug in src/shared/ is that $(bltsh) must be added to the dependency list (see diffs below).

format: diff <newly changed file> <original file>

storm:nicks[/Users/Shared/pkgs/src/blt2.4z/src] diff $HOME/packages/blt2.4z/src/
<               $(srcdir)/bltUnixMain.c $(tcl_only_lib_a) $(LIBS)
>               $(srcdir)/bltUnixMain.c $(tcl_only_lib_a) $(TCL_ONLY_LIBS)

storm:nicks[/Users/Shared/pkgs/src/blt2.4z/src/shared] diff $HOME/packages/blt2.4z/src/shared/
<               $(LIBS) $(SHLIB_LIB_SPECS)
>               $(SHLIB_LIB_SPECS)
<               $(LIBS) $(SHLIB_TCL_ONLY_LIB_SPECS)
>               $(SHLIB_TCL_ONLY_LIB_SPECS)
< install-demo: $(bltwish) $(bltsh)
> install-demo: $(bltwish)

This is the script I use that successfully builds and installs everything on Mac OS X Tiger:

cd blt2.4z
make distclean
./configure --prefix="$PKGS_ROOT" --enable-shared --with-tcl="$PKGS_ROOT" --with-tk="$PKGS_ROOT" \
--enable-jpeg="$PKGS_ROOT" --x-includes="/usr/X11R6/include" --with-cflags="-fno-common"
make install


First let genlib run through the VTK checkout and let it attempt to build. It will fail with a message that it cannot find some opengl symbols. To compile vtk:

cd Lib/darwin-ppc/VTK-build
 ../CMake-build/bin/ccmake ../VTK

in ccmake, hit 't' and add -lgl to the OPENGL_gl_LIBRARY so it reads: -framework OpenGL -lgl

Then run make to finish the build of VTK.

After VTK finishes building, re-run genlib.tcl to build ITK.