OS X, extern and autotools

Apparently, building C++ code against C or Fortran on OS X introduces an unexpected error of duplicate symbol declarations. "Apparently", because I don't have a Mac of my own anymore --- I'm relying on others' reports here. What seems to happen is that forward-declaring a non-C++ symbol using the extern keyword actually creates a fully-fledged symbol, and then the linker goes mental when it finds the "duplicate" definition --- i.e. the real one.

It seems that the MACOSX_DEPLOYMENT_TARGET environment variable can fix this if set to the appropriate OS X version number: 10.3, 10.4, etc. Here's a configure.ac snippet which apparently solves the problem for projects using GNU autotools:

## OS X
  if test x$SWVERS != x; then MACOSX_DEPLOYMENT_TARGET=`$SWVERS -productVersion | cut -f 1,2 -d.`


Comments powered by Disqus