xref: /aosp_15_r20/external/elfutils/m4/biarch.m4 (revision 7304104da70ce23c86437a01be71edd1a2d7f37e)
1*7304104dSAndroid Build Coastguard WorkerAC_DEFUN([utrace_CC_m32], [dnl
2*7304104dSAndroid Build Coastguard WorkerAC_CACHE_CHECK([$CC option for 32-bit word size], utrace_cv_CC_m32, [dnl
3*7304104dSAndroid Build Coastguard Workersave_CC="$CC"
4*7304104dSAndroid Build Coastguard Workerutrace_cv_CC_m32=none
5*7304104dSAndroid Build Coastguard Workerfor ut_try in -m32 -m31; do
6*7304104dSAndroid Build Coastguard Worker  [CC=`echo "$save_CC" | sed 's/ -m[36][241]//'`" $ut_try"]
7*7304104dSAndroid Build Coastguard Worker  AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int foo (void) { return 1; }]])],
8*7304104dSAndroid Build Coastguard Worker		    [utrace_cv_CC_m32=$ut_try])
9*7304104dSAndroid Build Coastguard Worker  test x$utrace_cv_CC_m32 = xnone || break
10*7304104dSAndroid Build Coastguard Workerdone
11*7304104dSAndroid Build Coastguard WorkerCC="$save_CC"])])
12*7304104dSAndroid Build Coastguard Worker
13*7304104dSAndroid Build Coastguard WorkerAC_DEFUN([utrace_HOST64], [AC_REQUIRE([utrace_CC_m32])
14*7304104dSAndroid Build Coastguard WorkerAS_IF([test x$utrace_cv_CC_m32 != xnone], [dnl
15*7304104dSAndroid Build Coastguard WorkerAC_CACHE_CHECK([for 64-bit host], utrace_cv_host64, [dnl
16*7304104dSAndroid Build Coastguard WorkerAC_EGREP_CPP([@utrace_host64@], [#include <stdint.h>
17*7304104dSAndroid Build Coastguard Worker#if (UINTPTR_MAX > 0xffffffffUL)
18*7304104dSAndroid Build Coastguard Worker@utrace_host64@
19*7304104dSAndroid Build Coastguard Worker#endif],
20*7304104dSAndroid Build Coastguard Worker             utrace_cv_host64=yes, utrace_cv_host64=no)])
21*7304104dSAndroid Build Coastguard WorkerAS_IF([test $utrace_cv_host64 = no],
22*7304104dSAndroid Build Coastguard Worker      [utrace_biarch=-m64 utrace_thisarch=$utrace_cv_CC_m32],
23*7304104dSAndroid Build Coastguard Worker      [utrace_biarch=$utrace_cv_CC_m32 utrace_thisarch=-m64])
24*7304104dSAndroid Build Coastguard Worker
25*7304104dSAndroid Build Coastguard Workerbiarch_CC=`echo "$CC" | sed "s/ *${utrace_thisarch}//"`
26*7304104dSAndroid Build Coastguard Workerbiarch_CC="$biarch_CC $utrace_biarch"])])
27*7304104dSAndroid Build Coastguard Worker
28*7304104dSAndroid Build Coastguard WorkerAC_DEFUN([utrace_BIARCH], [AC_REQUIRE([utrace_HOST64])
29*7304104dSAndroid Build Coastguard Workerutrace_biarch_forced=no
30*7304104dSAndroid Build Coastguard WorkerAC_ARG_WITH([biarch],
31*7304104dSAndroid Build Coastguard Worker	    AS_HELP_STRING([--with-biarch],
32*7304104dSAndroid Build Coastguard Worker			   [enable biarch tests despite build problems]),
33*7304104dSAndroid Build Coastguard Worker	    [AS_IF([test "x$with_biarch" != xno], [utrace_biarch_forced=yes])])
34*7304104dSAndroid Build Coastguard WorkerAS_IF([test $utrace_biarch_forced = yes], [dnl
35*7304104dSAndroid Build Coastguard Workerutrace_cv_cc_biarch=yes
36*7304104dSAndroid Build Coastguard WorkerAC_MSG_NOTICE([enabling biarch tests regardless using $biarch_CC])], [dnl
37*7304104dSAndroid Build Coastguard WorkerAS_IF([test x$utrace_cv_CC_m32 != xnone -a x$utrace_cv_host64 != xno], [dnl
38*7304104dSAndroid Build Coastguard WorkerAC_CACHE_CHECK([whether $biarch_CC makes executables we can run],
39*7304104dSAndroid Build Coastguard Worker	       utrace_cv_cc_biarch, [dnl
40*7304104dSAndroid Build Coastguard Workersave_CC="$CC"
41*7304104dSAndroid Build Coastguard WorkerCC="$biarch_CC"
42*7304104dSAndroid Build Coastguard WorkerAC_RUN_IFELSE([AC_LANG_PROGRAM([], [])],
43*7304104dSAndroid Build Coastguard Worker	      utrace_cv_cc_biarch=yes, utrace_cv_cc_biarch=no, utrace_cv_cc_biarch=no)
44*7304104dSAndroid Build Coastguard WorkerCC="$save_CC"])], [utrace_cv_cc_biarch=no])
45*7304104dSAndroid Build Coastguard WorkerAS_IF([test $utrace_cv_cc_biarch != yes], [dnl
46*7304104dSAndroid Build Coastguard WorkerAC_MSG_WARN([not running biarch tests, $biarch_CC does not work])])])
47*7304104dSAndroid Build Coastguard WorkerAM_CONDITIONAL(BIARCH, [test $utrace_cv_cc_biarch = yes])])
48