openafs/acinclude.m4
Andrew Deason dba6ec9548 cf: Set CC before calling AC_PROG_CC
On some platforms (HPUX, SOLARIS, AIX), we forcibly set CC or set a
default CC, because we must use a specific compiler to build kernel
modules, and we specify certain compiler-specific flags. But we do
this after AC_PROG_CC has run, which also searches for a compiler to
use, and runs a few tests against it. AC_PROG_CC often chooses a
different compiler (it prefers gcc if it's available).

As a result, some compiler-derived info may be wrong, which can yield
confusing results, even breaking the build depending on what the
user's PATH is, or what compilers are installed on the system.

We can avoid all of this if we move our CC-setting logic to before
AC_PROG_CC is called. This is a little tricky, because our logic to
set AFS_SYSNAME requires the C compiler, so we must do this before
OPENAFS_SYSNAME, and also before AC_USE_SYSTEM_EXTENSIONS, or any
other autoconf macro that uses the C compiler.

Move our CC-setting logic into a new macro, OPENAFS_PATH_CC, which is
separate from OPENAFS_CONFIGURE_COMMON and must be called before
OPENAFS_CONFIGURE_COMMON. Add some safeguards to try to detect if
AC_PROG_CC is already called to try to prevent future changes from
breaking this; this isn't perfect, but it's better than nothing.

Change-Id: I7c327df5acc5d1ff701b70825eecaaaab4aa44a8
Reviewed-on: https://gerrit.openafs.org/15456
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
Reviewed-by: Ben Huntsman <ben@huntsmans.net>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
2024-07-02 13:13:45 -04:00

89 lines
1.8 KiB
Plaintext

dnl This file contains the common configuration code which would
dnl otherwise be duplicated between configure and configure-libafs.
dnl
dnl NB: Because this code is a macro, references to positional shell
dnl parameters must be done like $[]1 instead of $1
AC_DEFUN([OPENAFS_CONFIGURE_COMMON],[
dnl If the user hasn't specified CFLAGS don't let configure pick -g -O2
AS_IF([test -z "$CFLAGS"], [CFLAGS=" "])
AC_USE_SYSTEM_EXTENSIONS
AC_PROG_CC
OPENAFS_AUTOHEADER_TOP
OPENAFS_AUTOHEADER_BOTTOM
SRCDIR_PARENT=`pwd`
#BOZO_SAVE_CORES pam
OPENAFS_OPTIONS
OPENAFS_DOC
dnl Checks for UNIX variants.
AC_SEARCH_LIBS([strerror],[cposix])
dnl Various compiler setup.
AC_TYPE_PID_T
AC_TYPE_SIZE_T
dnl Checks for programs.
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_RANLIB
AC_PROG_YACC
OPENAFS_LEX
dnl Checks
OPENAFS_FORCE_ABS_INSTALL
OPENAFS_CHECK_BIGENDIAN
OPENAFS_PRINTF_TAKES_Z_LEN
OPENAFS_OSTYPE
OPENAFS_SYSNAME
OPENAFS_OSCONF
OPENAFS_LINUX_CHECKS
OPENAFS_C_ATOMIC_CHECKS
OPENAFS_SOCKET_CHECKS
OPENAFS_LIBRARY_CHECKS
AC_CHECK_RESOLV_RETRANS
OPENAFS_SOCKOPT_CHECK
OPENAFS_PTHREAD_CHECKS
HOST_CPU="$host_cpu"
OPENAFS_BSD_CHECKS
OPENAFS_OPTION_TESTS
OPENAFS_TIVOLI_TESTS
OPENAFS_HEADER_CHECKS
OPENAFS_MEMBER_CHECKS
OPENAFS_LIBINTL_CHECKS
OPENAFS_MORE_OPTION_TESTS
OPENAFS_FUNCTION_CHECKS
OPENAFS_ROKEN
OPENAFS_HCRYPTO
OPENAFS_CURSES
OPENAFS_C_ATTRIBUTE
OPENAFS_C_PRAGMA
OPENAFS_C_FLEXIBLE_ARRAY
OPENAFS_MORE_ROKEN_CHECKS
OPENAFS_NETDB_CHECKS
OPENAFS_ROKEN_HEADERS
OPENAFS_BSWAP_CHECKS
OPENAFS_PIO_CHECKS
OPENAFS_REGEX_CHECKS
OPENAFS_MORE_PTHREAD_CHECKS
OPENAFS_TYPE_CHECKS
RRA_HEADER_PAM_CONST
OPENAFS_DIRECTORY_PATHS
OPENAFS_YET_MORE_OPTION_TESTS
OPENAFS_OUTPUT_VARIABLES
OPENAFS_FUSE
OPENAFS_SWIG
OPENAFS_TOPDIRS
OPENAFS_CROSSTOOLS
OPENAFS_LINT
OPENAFS_CRYPT_CHECKS
OPENAFS_C_STRUCT_LABEL_CHECK
OPENAFS_DIRENT_CHECKS
OPENAFS_SYS_RESOURCE_CHECKS
OPENAFS_UUID_CHECKS
OPENAFS_CTF_TOOLS_CHECKS
])