Blame configure.ac

Packit 8dc392
dnl Process this file with autoconf to produce a configure script.
Packit 8dc392
AC_INIT(IlmBase, 2.2.0)
Packit 8dc392
Packit 8dc392
AC_SUBST(ILMBASE_VERSION_MAJOR, 2)
Packit 8dc392
AC_SUBST(ILMBASE_VERSION_MINOR, 2)
Packit 8dc392
AC_SUBST(ILMBASE_VERSION_PATCH, 0)
Packit 8dc392
Packit 8dc392
AC_SUBST(ILMBASE_VERSION, ${ILMBASE_VERSION_MAJOR}.${ILMBASE_VERSION_MINOR}.${ILMBASE_VERSION_PATCH})
Packit 8dc392
AC_SUBST(ILMBASE_VERSION_API, ${ILMBASE_VERSION_MAJOR}_${ILMBASE_VERSION_MINOR})
Packit 8dc392
Packit 8dc392
AC_CANONICAL_HOST
Packit 8dc392
AC_CONFIG_SRCDIR(ImathTest/main.cpp)
Packit 8dc392
AC_CONFIG_HEADER(config/IlmBaseConfig.h)
Packit 8dc392
AM_INIT_AUTOMAKE(1.6.3)  dnl Require automake 1.6.3 or better
Packit 8dc392
AM_MAINTAINER_MODE
Packit 8dc392
Packit 8dc392
Packit 8dc392
LIBTOOL_CURRENT=12
Packit 8dc392
LIBTOOL_REVISION=0
Packit 8dc392
LIBTOOL_AGE=0
Packit 8dc392
LIBTOOL_VERSION=$LIBTOOL_CURRENT:$LIBTOOL_REVISION:$LIBTOOL_AGE
Packit 8dc392
AC_SUBST(LIBTOOL_VERSION)
Packit 8dc392
Packit 8dc392
dnl Checks for programs.
Packit 8dc392
AC_PROG_CXX
Packit 8dc392
AC_PROG_INSTALL
Packit 8dc392
AC_PROG_CC
Packit 8dc392
AC_PROG_LN_S
Packit 8dc392
AC_PROG_LIBTOOL
Packit 8dc392
AC_PROG_MAKE_SET
Packit 8dc392
Packit 8dc392
dnl
Packit 8dc392
dnl PKGCONFIG preparations
Packit 8dc392
dnl
Packit 8dc392
Packit 8dc392
if test -z "${PKG_CONFIG_PATH}"; then
Packit 8dc392
	PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig
Packit 8dc392
fi
Packit 8dc392
Packit 8dc392
export PKG_CONFIG_PATH
Packit 8dc392
Packit 8dc392
Packit 8dc392
dnl Checks for libraries.
Packit 8dc392
dnl --enable-threading
Packit 8dc392
AC_ARG_ENABLE(threading,
Packit 8dc392
              AC_HELP_STRING([--enable-threading],
Packit 8dc392
                             [enable multi-threading [[default=yes]]]),
Packit 8dc392
              [multithread="${enableval}"], [multithread=yes])
Packit 8dc392
Packit 8dc392
if test "${multithread}" != no ; then
Packit 8dc392
    ACX_PTHREAD(
Packit 8dc392
    [
Packit 8dc392
	AC_DEFINE(HAVE_PTHREAD)
Packit 8dc392
	LIBS="$PTHREAD_LIBS $LIBS"
Packit 8dc392
	CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
Packit 8dc392
	CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS"
Packit 8dc392
	CC="$PTHREAD_CC"
Packit 8dc392
	
Packit 8dc392
	AM_POSIX_SEM()
Packit 8dc392
    ],
Packit 8dc392
    [AC_MSG_ERROR([POSIX thread support required])])
Packit 8dc392
    AC_MSG_NOTICE([multithread true, LIBS = $LIBS, CC = $CC, CXXFLAGS = $CXXFLAGS])
Packit 8dc392
fi
Packit 8dc392
Packit 8dc392
dnl
Packit 8dc392
dnl Checks for header files.
Packit 8dc392
dnl
Packit 8dc392
AC_HEADER_STDC
Packit 8dc392
AC_CHECK_HEADERS(limits.h unistd.h ucontext.h)
Packit 8dc392
Packit 8dc392
dnl Checks for typedefs, structures, and compiler characteristics.
Packit 8dc392
AC_C_CONST
Packit 8dc392
AC_C_INLINE
Packit 8dc392
AC_TYPE_SIZE_T
Packit 8dc392
Packit 8dc392
dnl Checks for library functions.
Packit 8dc392
AC_CHECK_FUNCS(strerror)
Packit 8dc392
Packit 8dc392
Packit 8dc392
dnl
Packit 8dc392
dnl Checks for std::right etc. in iomanip
Packit 8dc392
dnl
Packit 8dc392
AC_MSG_CHECKING(for complete iomanip support in C++ standard library)
Packit 8dc392
complete_iomanip="no"
Packit 8dc392
AC_LANG_SAVE
Packit 8dc392
AC_LANG_CPLUSPLUS
Packit 8dc392
AC_TRY_COMPILE([#include <iomanip>],[
Packit 8dc392
Packit 8dc392
	std::right;
Packit 8dc392
],
Packit 8dc392
AC_DEFINE(HAVE_COMPLETE_IOMANIP) complete_iomanip=yes)
Packit 8dc392
AC_MSG_RESULT($complete_iomanip)
Packit 8dc392
Packit 8dc392
Packit 8dc392
dnl
Packit 8dc392
dnl Checks for dealing with fpe handling
Packit 8dc392
dnl
Packit 8dc392
AC_MSG_CHECKING(for fpe support handling)
Packit 8dc392
control_register_support="no"
Packit 8dc392
AC_TRY_COMPILE([
Packit 8dc392
#include <stdint.h>
Packit 8dc392
#include <ucontext.h>
Packit 8dc392
],[
Packit 8dc392
    ucontext_t ucon;
Packit 8dc392
    uint32_t mxcsr = ucon.uc_mcontext.fpregs->mxcsr;
Packit 8dc392
    uint16_t cw    = ucon.uc_mcontext.fpregs->cwd;
Packit 8dc392
Packit 8dc392
],
Packit 8dc392
AC_DEFINE(ILMBASE_HAVE_CONTROL_REGISTER_SUPPORT) control_register_support=yes)
Packit 8dc392
AC_MSG_RESULT($control_register_support)
Packit 8dc392
Packit 8dc392
AC_LANG_RESTORE
Packit 8dc392
Packit 8dc392
dnl --enable-large-stack
Packit 8dc392
case "$host" in
Packit 8dc392
*linux*)
Packit 8dc392
  AC_ARG_ENABLE(large-stack,
Packit 8dc392
		AC_HELP_STRING([--enable-large-stack],
Packit 8dc392
			       [enable optimizations for systems that support
Packit 8dc392
			       large stack sizes [[default=yes]]]),
Packit 8dc392
		[large_stack="${enableval}"],
Packit 8dc392
		[large_stack=yes])
Packit 8dc392
  ;;
Packit 8dc392
*)
Packit 8dc392
  AC_ARG_ENABLE(large-stack,
Packit 8dc392
		AC_HELP_STRING([--enable-large-stack],
Packit 8dc392
			       [enable optimizations for systems that support
Packit 8dc392
			       large stack sizes [[default=no]]]),
Packit 8dc392
		[large_stack="${enableval}"],
Packit 8dc392
		[large_stack=no])
Packit 8dc392
  ;;
Packit 8dc392
esac
Packit 8dc392
Packit 8dc392
if test "x${large_stack}" != xno ; then
Packit 8dc392
    AC_DEFINE(ILMBASE_HAVE_LARGE_STACK)
Packit 8dc392
fi
Packit 8dc392
Packit 8dc392
dnl Define the version string
Packit 8dc392
AC_DEFINE_UNQUOTED(ILMBASE_VERSION_STRING, "${VERSION}")
Packit 8dc392
AC_DEFINE_UNQUOTED(ILMBASE_PACKAGE_STRING, "${PACKAGE_STRING}")
Packit 8dc392
AC_DEFINE_UNQUOTED(ILMBASE_VERSION_MAJOR, ${ILMBASE_VERSION_MAJOR})
Packit 8dc392
AC_DEFINE_UNQUOTED(ILMBASE_VERSION_MINOR, ${ILMBASE_VERSION_MINOR})
Packit 8dc392
AC_DEFINE_UNQUOTED(ILMBASE_VERSION_PATCH, ${ILMBASE_VERSION_PATCH})
Packit 8dc392
Packit 8dc392
Packit 8dc392
Packit 8dc392
AC_MSG_CHECKING(for gcc optimization flags)
Packit 8dc392
old_cflags=$CFLAGS
Packit 8dc392
CFLAGS="$CFLAGS -pipe"
Packit 8dc392
AC_TRY_COMPILE([#include <stdio.h>],
Packit 8dc392
[ printf ("hello, world"); ],
Packit 8dc392
[ EXTRA_OPT_CFLAGS="-pipe"],[ EXTRA_OPT_CFLAGS=""])
Packit 8dc392
CFLAGS=$old_cflags
Packit 8dc392
AC_MSG_RESULT([$EXTRA_OPT_CFLAGS])
Packit 8dc392
Packit 8dc392
Packit 8dc392
Packit 8dc392
dnl
Packit 8dc392
dnl Handle namespacing configuration : internal library namespace
Packit 8dc392
dnl                                    public namespace 
Packit 8dc392
dnl
Packit 8dc392
library_namespace_versioning="yes"
Packit 8dc392
AC_ARG_ENABLE(namespaceversioning,
Packit 8dc392
          AC_HELP_STRING([--enable-namespaceversioning],
Packit 8dc392
                         [enable symbol versioning via versioned/custom namespace to prevent runtime conflicts <no/yes/custom> [[default=yes]]] ),
Packit 8dc392
          [library_namespace_versioning="${enableval}"], 
Packit 8dc392
          [library_namespace_versioning=yes])
Packit 8dc392
              
Packit 8dc392
dnl Suffix for the shared library via the '-release' option
Packit 8dc392
LIB_SUFFIX=""
Packit 8dc392
lib_suffix_valid="no"
Packit 8dc392
Packit 8dc392
dnl Internal library namespace
Packit 8dc392
dnl 
Packit 8dc392
lib_namespace=""
Packit 8dc392
if test "x${library_namespace_versioning}" == xyes ; then
Packit 8dc392
    AC_DEFINE_UNQUOTED(IMATH_INTERNAL_NAMESPACE,     Imath_${ILMBASE_VERSION_API})
Packit 8dc392
    AC_DEFINE_UNQUOTED(IEX_INTERNAL_NAMESPACE,       Iex_${ILMBASE_VERSION_API})
Packit 8dc392
    AC_DEFINE_UNQUOTED(ILMTHREAD_INTERNAL_NAMESPACE, IlmThread_${ILMBASE_VERSION_API})
Packit 8dc392
    AC_DEFINE(ILMBASE_INTERNAL_NAMESPACE_CUSTOM)
Packit 8dc392
    
Packit 8dc392
    lib_namespace="${ILMBASE_VERSION_API}"
Packit 8dc392
    LIB_SUFFIX="${ILMBASE_VERSION_API}"
Packit 8dc392
    lib_suffix_valid="yes"
Packit 8dc392
elif test "x${library_namespace_versioning}" == xno ; then
Packit 8dc392
    AC_DEFINE_UNQUOTED(IMATH_INTERNAL_NAMESPACE,     Imath)
Packit 8dc392
    AC_DEFINE_UNQUOTED(IEX_INTERNAL_NAMESPACE,       Iex)
Packit 8dc392
    AC_DEFINE_UNQUOTED(ILMTHREAD_INTERNAL_NAMESPACE, IlmThread)
Packit 8dc392
    lib_namespace=""
Packit 8dc392
else
Packit 8dc392
    AC_DEFINE_UNQUOTED(IMATH_INTERNAL_NAMESPACE,     Imath_${library_namespace_versioning})
Packit 8dc392
    AC_DEFINE_UNQUOTED(IEX_INTERNAL_NAMESPACE,       Iex_${library_namespace_versioning})
Packit 8dc392
    AC_DEFINE_UNQUOTED(ILMTHREAD_INTERNAL_NAMESPACE, IlmThread_${library_namespace_versioning})
Packit 8dc392
    AC_DEFINE(ILMBASE_INTERNAL_NAMESPACE_CUSTOM)
Packit 8dc392
    
Packit 8dc392
    lib_namespace="${library_namespace_versioning}"
Packit 8dc392
    LIB_SUFFIX="${library_namespace_versioning}"
Packit 8dc392
    lib_suffix_valid="yes"
Packit 8dc392
fi
Packit 8dc392
AC_SUBST(LIB_SUFFIX)
Packit 8dc392
Packit 8dc392
if test "x${lib_suffix_valid}" == xyes ; then
Packit 8dc392
AC_SUBST(LIB_SUFFIX_DASH,"-${LIB_SUFFIX}")
Packit 8dc392
AM_CONDITIONAL(LIB_SUFFIX_EXISTS,true)
Packit 8dc392
else
Packit 8dc392
AC_SUBST(LIB_SUFFIX_DASH,"")
Packit 8dc392
AM_CONDITIONAL(LIB_SUFFIX_EXISTS,false)
Packit 8dc392
fi
Packit 8dc392
Packit 8dc392
Packit 8dc392
dnl Public User namespace 
Packit 8dc392
dnl 
Packit 8dc392
custom_public_namespace="no"
Packit 8dc392
public_namespace=""
Packit 8dc392
AC_ARG_ENABLE(customusernamespace,
Packit 8dc392
        AC_HELP_STRING([--enable-customusernamespace],
Packit 8dc392
                       [user namespace; this is the namespace into which the library namespace will be exported to <no/custom> [[default=Imf]]] ),
Packit 8dc392
        [custom_public_namespace="${enableval}"], 
Packit 8dc392
        [custom_public_namespace=no])
Packit 8dc392
Packit 8dc392
if test "x${custom_public_namespace}" == xyes ; then
Packit 8dc392
    AC_MSG_WARN([Enabling 'custom user namespace' requires an additional argument, reverting to default])
Packit 8dc392
    AC_DEFINE(IMATH_NAMESPACE,     Imath)
Packit 8dc392
    AC_DEFINE(IEX_NAMESPACE,       Iex)
Packit 8dc392
    AC_DEFINE(ILMTHREAD_NAMESPACE, IlmThread)
Packit 8dc392
Packit 8dc392
    public_namespace=""
Packit 8dc392
    custom_public_namespace=no
Packit 8dc392
elif test "x${custom_public_namespace}" == xno ; then
Packit 8dc392
    AC_DEFINE(IMATH_NAMESPACE,     Imath)
Packit 8dc392
    AC_DEFINE(IEX_NAMESPACE,       Iex)
Packit 8dc392
    AC_DEFINE(ILMTHREAD_NAMESPACE, IlmThread)
Packit 8dc392
    
Packit 8dc392
    public_namespace=""
Packit 8dc392
else
Packit 8dc392
    AC_DEFINE_UNQUOTED(IMATH_NAMESPACE,     Imath_${custom_public_namespace})
Packit 8dc392
    AC_DEFINE_UNQUOTED(IEX_NAMESPACE,       Iex_${custom_public_namespace})
Packit 8dc392
    AC_DEFINE_UNQUOTED(ILMTHREAD_NAMESPACE, IlmThread_${custom_public_namespace})
Packit 8dc392
    AC_DEFINE(ILMBASE_NAMESPACE_CUSTOM)
Packit 8dc392
    
Packit 8dc392
    public_namespace=${custom_public_namespace}
Packit 8dc392
fi
Packit 8dc392
Packit 8dc392
Packit 8dc392
Packit 8dc392
dnl Platform-specific stuff
Packit 8dc392
case "$host" in
Packit 8dc392
*darwin*) 
Packit 8dc392
  dnl Compiler flags for all OS X builds
Packit 8dc392
Packit 8dc392
  dnl OSX architectures specification
Packit 8dc392
  dnl NOTE: multiple architectures requires --disable-dependency-tracking
Packit 8dc392
  dnl For more information: http://developer.apple.com/documentation/Porting/Conceptual/PortingUNIX/compiling/chapter_4_section_3.html
Packit 8dc392
  AC_ARG_ENABLE(osx-arch,
Packit 8dc392
	      AC_HELP_STRING([--enable-osx-arch],
Packit 8dc392
			     [specify the architecture(s) for OS X builds. Ex: --enable-osx-arch="ppc i386"]),
Packit 8dc392
	      [osx_arch="${enableval}"], [osx_arch=default])
Packit 8dc392
Packit 8dc392
  if test "${osx_arch}" != default ; then
Packit 8dc392
     dnl Replace "a b c" with "-arch a -arch b -arch c". Should probably use an all-whitespace regexp rather than a single character for the search string.
Packit 8dc392
     osx_arch_flags="-arch ${osx_arch// / -arch }"
Packit 8dc392
     CXXFLAGS="$CXXFLAGS $osx_arch_flags"
Packit 8dc392
Packit 8dc392
     dnl If multiple archs specified, make sure that --disable-dependency-tracking was also specified
Packit 8dc392
     if test "$enable_dependency_tracking" != no ; then
Packit 8dc392
        osx_arch_array=( ${osx_arch} )
Packit 8dc392
        if test ${#osx_arch_array[@]} -gt 1 ; then
Packit 8dc392
          AC_MSG_ERROR([building multiple OS X architectures requires --disable-dependency-tracking.
Packit 8dc392
Please re-run configure with these options:
Packit 8dc392
  --enable-osx-arch="${osx_arch}" --disable-dependency-tracking
Packit 8dc392
  		  ])
Packit 8dc392
        fi
Packit 8dc392
     fi
Packit 8dc392
  fi
Packit 8dc392
Packit 8dc392
  dnl OSX SDK specification
Packit 8dc392
  AC_ARG_ENABLE(osx-sdk,
Packit 8dc392
	      AC_HELP_STRING([--enable-osx-sdk],
Packit 8dc392
			     [specify the sdk (sysroot) for use with OS X. Ex: --enable-osx-sdk=MacOSX10.5]),
Packit 8dc392
	      [osx_sdk="${enableval}"], [osx_sdk=default])
Packit 8dc392
Packit 8dc392
  if test "${osx_sdk}" != default ; then
Packit 8dc392
    CXXFLAGS="$CXXFLAGS -isysroot /Developer/SDKs/${osx_sdk}"
Packit 8dc392
  fi
Packit 8dc392
Packit 8dc392
  dnl OS X universal binary support, requires --disable-dependency-tracking
Packit 8dc392
  dnl NOTE: this argument is obsolete, and has been replaced by --enable-osx-sdk and --enable-osx-arch
Packit 8dc392
  dnl This is equivalent to --enable-osx-sdk=MacOSX10.4u.sdk --enable-osx-arch="ppc i386"
Packit 8dc392
  AC_ARG_ENABLE(osx-universal-binaries,
Packit 8dc392
	      AC_HELP_STRING([--enable-osx-universal-binaries],
Packit 8dc392
			     [build two-way universal (ppc, i386) binaries on OS X. OBSOLETE: Consider using --enable-osx-sdk and --enable-osx-arch instead. [[default=no]]]),
Packit 8dc392
	      [build_osxuniversal="${enableval}"], [build_osxuniversal=no])
Packit 8dc392
Packit 8dc392
  if test "${build_osxuniversal}" != no ; then
Packit 8dc392
    if test "$enable_dependency_tracking" != no ; then
Packit 8dc392
      AC_MSG_ERROR([--enable-osx-universal-binary requires --disable-dependency-tracking.
Packit 8dc392
Please re-run configure with these options:
Packit 8dc392
  --disable-dependency-tracking --enable-osx-universal-binary
Packit 8dc392
  		  ])
Packit 8dc392
    fi
Packit 8dc392
    CXXFLAGS="$CXXFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386"
Packit 8dc392
    dnl LDFLAGS="$LDFLAGS -Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386"
Packit 8dc392
  fi  
Packit 8dc392
  ;;
Packit 8dc392
esac
Packit 8dc392
Packit 8dc392
AM_CFLAGS="$EXTRA_OPT_CFLAGS"
Packit 8dc392
AM_CXXFLAGS="$EXTRA_OPT_CFLAGS"
Packit 8dc392
Packit 8dc392
AC_SUBST(AM_CFLAGS)
Packit 8dc392
AC_SUBST(AM_CXXFLAGS)
Packit 8dc392
AC_SUBST(HAVE_UCONTEXT_H)
Packit 8dc392
Packit 8dc392
Packit 8dc392
AC_OUTPUT([
Packit 8dc392
Makefile
Packit 8dc392
IlmBase.pc
Packit 8dc392
config/Makefile
Packit 8dc392
Half/Makefile
Packit 8dc392
HalfTest/Makefile
Packit 8dc392
Iex/Makefile
Packit 8dc392
IexMath/Makefile
Packit 8dc392
IexTest/Makefile
Packit 8dc392
IlmThread/Makefile
Packit 8dc392
Imath/Makefile
Packit 8dc392
ImathTest/Makefile
Packit 8dc392
])
Packit 8dc392
Packit 8dc392
Packit 8dc392
dnl
Packit 8dc392
dnl Summary Configuration Messages
Packit 8dc392
dnl
Packit 8dc392
AC_MSG_RESULT([
Packit 8dc392
---------------------------------------------
Packit 8dc392
Summary for IlmBase features:
Packit 8dc392
enable large stack optimizations             $large_stack])
Packit 8dc392
  
Packit 8dc392
if test "x${library_namespace_versioning}" != xno ; then
Packit 8dc392
  AC_MSG_RESULT([
Packit 8dc392
internal library namespaces                  Imath_$lib_namespace 
Packit 8dc392
                                             Iex_$lib_namespace 
Packit 8dc392
                                             IlmThread_$lib_namespace])
Packit 8dc392
else
Packit 8dc392
  AC_MSG_RESULT([
Packit 8dc392
internal library namespaces                  Imath Iex IlmThread])
Packit 8dc392
fi
Packit 8dc392
Packit 8dc392
if test "x${custom_public_namespace}" != xno ; then
Packit 8dc392
  AC_MSG_RESULT([
Packit 8dc392
public namespaces                            Imath_$public_namespace 
Packit 8dc392
                                             Iex_$public_namespace 
Packit 8dc392
                                             IlmThread_$public_namespace])
Packit 8dc392
else
Packit 8dc392
  AC_MSG_RESULT([
Packit 8dc392
public namespaces                            Imath Iex IlmThread])
Packit 8dc392
fi
Packit 8dc392
Packit 8dc392
Packit 8dc392
if test "$osx_arch"; then
Packit 8dc392
  AC_MSG_RESULT([
Packit 8dc392
OS X architectures                           $osx_arch
Packit 8dc392
OS X SDK                                     $osx_sdk
Packit 8dc392
OS X two-way universal build (deprecated)    $build_osxuniversal])
Packit 8dc392
fi
Packit 8dc392
Packit 8dc392
AC_MSG_RESULT([
Packit 8dc392
---------------------------------------------
Packit 8dc392
])