Re: Anyone remember what AC_PROG_GCC_TRADITIONAL was testing for?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



That macro dates back to /usr/include header files that would play tricks like this

#define _IO(n, x) (('n'<<8)+x) #define TIOCFOO _IO(T, 1)

and would expect TIOCFOO to be equivalent to (('T'<<8)+1). This sort of trick worked with K&R C compilers but does not work with C89+. To work around the problem back in the day, you needed to use 'gcc -traditional'.

Using -traditional had obvious problems, though, so GCC soon changed its installation procedure "fixincludes" to make fixed copies of these K&R-assuming headers during installation, and to compile by including the fixed copies. This was around 1990. I was involved with some of that header-munging effort but have blessedly forgotten most of the details. A descendant of the fixincludes work is still in GCC's source code (which is where I got the above example).

AC_PROG_GCC_TRADITIONAL has not been needed for thirty years, and was declared obsolescent in Autoconf 2.60 (2006-06-05). Also, the Autoconf manual (as of the next version) states Autoconf assumes C89 or later. So if there's any issue with AC_PROG_GCC_TRADITIONAL at all, I suggest replacing its definition with:

  AU_DEFUN([AC_PROG_GCC_TRADITIONAL])

and updating documentation and tests and etc. accordingly.




[Index of Archives]     [GCC Help]     [Kernel Discussion]     [RPM Discussion]     [Red Hat Development]     [Yosemite News]     [Linux USB]     [Samba]

  Powered by Linux