Gcc m4如何检测您是否';为x86重新编译?

Gcc m4如何检测您是否';为x86重新编译?,gcc,m4,Gcc,M4,(ps当我说x86时,我的意思也是x86\u 64) 我正在从事一个项目,该项目可能针对几种不同的平台进行编译,我有一些特定于x86的文件,只有在针对x86进行编译时才应该添加这些文件(与ARM或其他任何东西不同) 基本上是在寻找 IS_X86([ dnl compiling for x86 ], [ dnl compiling for something other than x86 ]) 所以。。如何检测我是否在为m4中的x86进行编译?编辑:根据评论,这显然是一个GNU

(ps当我说
x86
时,我的意思也是
x86\u 64
) 我正在从事一个项目,该项目可能针对几种不同的平台进行编译,我有一些特定于x86的文件,只有在针对x86进行编译时才应该添加这些文件(与ARM或其他任何东西不同)

基本上是在寻找

IS_X86([
    dnl compiling for x86
], [
    dnl compiling for something other than x86
])

所以。。如何检测我是否在为m4中的x86进行编译?

编辑:根据评论,这显然是一个GNU Autoconf解决方案,而不是纯m4解决方案(就个人而言,我几乎不知道m4和Autoconf,我甚至不知道这是Autoconf特定的代码)

这是我最后想到的。。似乎很管用除非有人有更好的建议

dnl
dnl PHP_CHECK_X86_TARGET
dnl
dnl check if we're compiling for x86/x86_64
dnl
AC_DEFUN([PHP_CHECK_X86_TARGET], [
  AC_CACHE_CHECK([for x86 target],ac_cv_target_x86,[
  AC_RUN_IFELSE([AC_LANG_SOURCE([[
int main(void) {
#if defined(__x86_64__) || defined(__i386__)
    return 0;
#else
    return 1;
#endif
}
]])],[
  ac_cv_target_x86=yes
],[
  ac_cv_target_x86=no
],[
  ac_cv_target_x86=no
])])
])


dnl
dnl PHP_CHECK_WINDOWS_TARGET
dnl
dnl check if we're compiling for windows
dnl
AC_DEFUN([PHP_CHECK_WINDOWS_TARGET], [
  AC_CACHE_CHECK([for windows target],ac_cv_target_windows,[
  AC_RUN_IFELSE([AC_LANG_SOURCE([[
int main(void) {
#if defined(_WIN32)
    return 0;
#else
    return 1;
#endif
}
]])],[
  ac_cv_target_windows=yes
],[
  ac_cv_target_windows=no
],[
  ac_cv_target_windows=no
])])
])


dnl
dnl PHP_CHECK_UNIX_TARGET
dnl
dnl check if we're compiling for a unix-ish target
dnl
AC_DEFUN([PHP_CHECK_UNIX_TARGET], [
  AC_CACHE_CHECK([for unix-ish target],ac_cv_target_unix,[
  AC_RUN_IFELSE([AC_LANG_SOURCE([[
int main(void) {
#if defined(unix) || defined(__unix) || defined(__unix__)
    return 0;
#else
    return 1;
#endif
}
]])],[
  ac_cv_target_unix=yes
],[
  ac_cv_target_unix=no
],[
  ac_cv_target_unix=no
])])
])


考虑使用和/或。如果您使用的是GNU autoconf,那么您可能会看到
gcc-v
的输出,您应该已经标记了它们。您的问题和标签都不表示您正在使用autoconf,这表明您需要纯m4解决方案。纯m4解决方案可能类似,运行gcc并执行一个程序,然后使用退出状态获取
sysval
。@KamilCuk抱歉,我甚至不知道我正在编写上述特定于autoconf的代码,我对m4(和autoconf)的了解非常有限。。你觉得我该怎么办?保持问题开放,等待有人发布“纯m4解决方案”?还是标签自动识别?或idkNo忧虑-标记autoconf并接受您的答案。;)<代码>我甚至都不知道-很容易知道-
AC.*
东西来自AutoConf。