1*820c1a8dSHiroo HAYASHI# multiarch.m4 serial 9 2*820c1a8dSHiroo HAYASHIdnl Copyright (C) 2008-2021 Free Software Foundation, Inc. 3*820c1a8dSHiroo HAYASHIdnl This file is free software; the Free Software Foundation 4*820c1a8dSHiroo HAYASHIdnl gives unlimited permission to copy and/or distribute it, 5*820c1a8dSHiroo HAYASHIdnl with or without modifications, as long as this notice is preserved. 6*820c1a8dSHiroo HAYASHI 7*820c1a8dSHiroo HAYASHI# Determine whether the compiler is or may be producing universal binaries. 8*820c1a8dSHiroo HAYASHI# 9*820c1a8dSHiroo HAYASHI# On Mac OS X 10.5 and later systems, the user can create libraries and 10*820c1a8dSHiroo HAYASHI# executables that work on multiple system types--known as "fat" or 11*820c1a8dSHiroo HAYASHI# "universal" binaries--by specifying multiple '-arch' options to the 12*820c1a8dSHiroo HAYASHI# compiler but only a single '-arch' option to the preprocessor. Like 13*820c1a8dSHiroo HAYASHI# this: 14*820c1a8dSHiroo HAYASHI# 15*820c1a8dSHiroo HAYASHI# ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ 16*820c1a8dSHiroo HAYASHI# CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ 17*820c1a8dSHiroo HAYASHI# CPP="gcc -E" CXXCPP="g++ -E" 18*820c1a8dSHiroo HAYASHI# 19*820c1a8dSHiroo HAYASHI# Detect this situation and set APPLE_UNIVERSAL_BUILD accordingly. 20*820c1a8dSHiroo HAYASHI 21*820c1a8dSHiroo HAYASHIAC_DEFUN_ONCE([gl_MULTIARCH], 22*820c1a8dSHiroo HAYASHI[ 23*820c1a8dSHiroo HAYASHI dnl Code similar to autoconf-2.63 AC_C_BIGENDIAN. 24*820c1a8dSHiroo HAYASHI AC_CACHE_CHECK([whether the compiler produces multi-arch binaries], 25*820c1a8dSHiroo HAYASHI [gl_cv_c_multiarch], 26*820c1a8dSHiroo HAYASHI [gl_cv_c_multiarch=no 27*820c1a8dSHiroo HAYASHI AC_COMPILE_IFELSE( 28*820c1a8dSHiroo HAYASHI [AC_LANG_SOURCE( 29*820c1a8dSHiroo HAYASHI [[#ifndef __APPLE_CC__ 30*820c1a8dSHiroo HAYASHI not a universal capable compiler 31*820c1a8dSHiroo HAYASHI #endif 32*820c1a8dSHiroo HAYASHI typedef int dummy; 33*820c1a8dSHiroo HAYASHI ]])], 34*820c1a8dSHiroo HAYASHI [ 35*820c1a8dSHiroo HAYASHI dnl Check for potential -arch flags. It is not universal unless 36*820c1a8dSHiroo HAYASHI dnl there are at least two -arch flags with different values. 37*820c1a8dSHiroo HAYASHI arch= 38*820c1a8dSHiroo HAYASHI prev= 39*820c1a8dSHiroo HAYASHI for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do 40*820c1a8dSHiroo HAYASHI if test -n "$prev"; then 41*820c1a8dSHiroo HAYASHI case $word in 42*820c1a8dSHiroo HAYASHI i?86 | x86_64 | ppc | ppc64 | arm | arm64) 43*820c1a8dSHiroo HAYASHI if test -z "$arch" || test "$arch" = "$word"; then 44*820c1a8dSHiroo HAYASHI arch="$word" 45*820c1a8dSHiroo HAYASHI else 46*820c1a8dSHiroo HAYASHI gl_cv_c_multiarch=yes 47*820c1a8dSHiroo HAYASHI fi 48*820c1a8dSHiroo HAYASHI ;; 49*820c1a8dSHiroo HAYASHI esac 50*820c1a8dSHiroo HAYASHI prev= 51*820c1a8dSHiroo HAYASHI else 52*820c1a8dSHiroo HAYASHI if test "x$word" = "x-arch"; then 53*820c1a8dSHiroo HAYASHI prev=arch 54*820c1a8dSHiroo HAYASHI fi 55*820c1a8dSHiroo HAYASHI fi 56*820c1a8dSHiroo HAYASHI done 57*820c1a8dSHiroo HAYASHI ]) 58*820c1a8dSHiroo HAYASHI ]) 59*820c1a8dSHiroo HAYASHI if test $gl_cv_c_multiarch = yes; then 60*820c1a8dSHiroo HAYASHI APPLE_UNIVERSAL_BUILD=1 61*820c1a8dSHiroo HAYASHI else 62*820c1a8dSHiroo HAYASHI APPLE_UNIVERSAL_BUILD=0 63*820c1a8dSHiroo HAYASHI fi 64*820c1a8dSHiroo HAYASHI AC_SUBST([APPLE_UNIVERSAL_BUILD]) 65*820c1a8dSHiroo HAYASHI]) 66