All Downloads are FREE. Search and download functionalities are using the official Maven repository.

project-template.m4.osx-universal.m4 Maven / Gradle / Ivy

dnl ---------------------------------------------------------------------------
dnl  Copyright (C) 2009-2011 FuseSource Corp.
dnl  http://fusesource.com
dnl  
dnl  Licensed under the Apache License, Version 2.0 (the "License");
dnl  you may not use this file except in compliance with the License.
dnl  You may obtain a copy of the License at
dnl  
dnl     http://www.apache.org/licenses/LICENSE-2.0
dnl  
dnl  Unless required by applicable law or agreed to in writing, software
dnl  distributed under the License is distributed on an "AS IS" BASIS,
dnl  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
dnl  See the License for the specific language governing permissions and
dnl  limitations under the License.
dnl ---------------------------------------------------------------------------
dnl ---------------------------------------------------------------------------
dnl SYNOPSIS:
dnl
dnl   WITH_OSX_UNIVERSAL()
dnl
dnl   Allows creating universal binaries on the 
dnl
dnl   Adds the --with-universal=ARCH option.  This will will 
dnl   set -isysroot option to the location of the MacOSX${OSX_VERSION}.sdk.
dnl   if OSX_VERSION is not defined, it will set it to the latest version
dnl   of the SDK installed on your system.
dnl
dnl   You must use the no-dependencies option when automake is initialized.  
dnl   for example: AM_INIT_AUTOMAKE([no-dependencies]) 
dnl
dnl      This macro calls:
dnl        AC_SUBST(CFLAGS)
dnl        AC_SUBST(CXXFLAGS)
dnl        AC_SUBST(LDFLAGS)
dnl        AC_SUBST(OSX_VERSION)
dnl
dnl AUTHOR: Hiram Chrino
dnl ---------------------------------------------------------------------------

AC_DEFUN([WITH_OSX_UNIVERSAL],
[
  AC_PREREQ([2.61])
  case "$host_os" in
  darwin*)
    
    AC_MSG_CHECKING(OS X SDK version)
    AC_ARG_WITH([osxsdk],
    [AS_HELP_STRING([--with-osxsdk@<:@=VERSION@:>@],
      [OS X SDK version to build against. Example: --with-osxsdk=10.6])],
    [ 
      OSX_UNIVERSAL="$withval"
    ],[
      OSX_SDKS_DIR=""
      OSX_VERSION=""
      for v in 10.0 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 10.10 10.11 10.12; do
        for location in "/Developer/SDKs" "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs" ; do
          if test -z "${OSX_VERSION}" && test -d "${location}/MacOSX${v}.sdk" ; then 
            OSX_SDKS_DIR="${location}"
            OSX_VERSION="${v}"
          fi
        done
      done
    ])
    AC_MSG_RESULT([$OSX_VERSION])
    AC_SUBST(OSX_SDKS_DIR)
    AC_SUBST(OSX_VERSION)
        
    AC_MSG_CHECKING(whether to build universal binaries)
    AC_ARG_WITH([universal],
    [AS_HELP_STRING([--with-universal@<:@=ARCH@:>@],
      [Build a universal binary.  Set to a space separated architecture list. Pick from: i386, x86_64, ppc, and/or ppc64. @<:@default="i386 x86_64"@:>@])],
    [ 
      AS_IF(test "$withval" = "no", [
        OSX_UNIVERSAL=""
        AC_MSG_RESULT([no])
      ], test "$withval" = "yes", [
        OSX_UNIVERSAL="i386 x86_64"
        AC_MSG_RESULT([yes, archs: $OSX_UNIVERSAL])
      ],[
        OSX_UNIVERSAL="$withval"
        AC_MSG_RESULT([yes, archs: $OSX_UNIVERSAL])
      ])
    ],[
      OSX_UNIVERSAL=""
      AC_MSG_RESULT([no])
    ])
    
    AS_IF(test -n "$OSX_UNIVERSAL", [
      for i in $OSX_UNIVERSAL ; do
        CFLAGS="-arch $i $CFLAGS"
        CXXFLAGS="-arch $i $CXXFLAGS"
        LDFLAGS="-arch $i $LDFLAGS"
      done 
      
      
      for f in $__JNI_INCLUDE_EXTRAS ; do
        if test -d "$__JNI_INCLUDE/$f"; then
          __JNI_CFLAGS="$__JNI_CFLAGS -I$__JNI_INCLUDE/$f"
        fi
      done

      
      CFLAGS="-isysroot ${OSX_SDKS_DIR}/MacOSX${OSX_VERSION}.sdk $CFLAGS"
      CXXFLAGS="-isysroot ${OSX_SDKS_DIR}/MacOSX${OSX_VERSION}.sdk $CXXFLAGS"
      LDFLAGS="-syslibroot,${OSX_SDKS_DIR}/MacOSX${OSX_VERSION}.sdk $LDFLAGS"
      AC_SUBST(CFLAGS)
      AC_SUBST(CXXFLAGS)
      AC_SUBST(LDFLAGS)
    ])
    ;;
  esac
])






© 2015 - 2025 Weber Informatics LLC | Privacy Policy