I think the build (at least the HotSpot build) doesn't use implicit rules at all. I have no reference for this, but we recently found out that we can considerably speed up the Windows build if we disable implicit make rules, so this implicates that they are not really used. Regards, Volker On Wed, Jul 18, 2012 at 1:58 PM, Neil Richards <neil.richards@ngmr.net> wrote:
On Tue, 2012-07-17 at 08:21 +0200, Thomas Stüfe wrote:
Hi Neil,
On AIX, CPPFLAGS is used for invocations of the C++ compiler (the 'PP' standing for 'Plus-Plus').
On Linux, CPPFLAGS is for the C Pre-Processor, and so is used for invocations of both the C and C++ compilers. (Linux has CXXFLAGS for C++-specific options).
So, on Linux, adding to CPPFLAGS_COMMON should cater for both scenarios, I believe, whilst on AIX, one needs to add to both CPPFLAGS_COMMON and CFLAGS_COMMON.
Are you sure this is right? I could not find any documentation for that, e.g. on the xlC manuals.
Reason I ask is I always thought both CXXFLAGS and CPPFLAGS originally came from the GNU automake toolchain, and that what you describe as "the Linux way" is just the correct way to use those variables - but that many people use CPPFLAGS as "C++-Flags" because that is the first thing which comes to mind.
I may be wrong. I think it's mostly all convention anyway, the only tools I think do something with those variables are autoconf/automake.
When working on the AIX port of the SAP JVM, we tried to keep the GNU meaning of CPPFLAGS intact: CPPFLAGS for -D../-I.., CXXFLAGS/CFLAGS for languange specific settings. However, this has the tendency to detoriate, so you probably will find both meanings in the makefiles.
Kind Regards, Thomas Stuefe SAP Germany
Hi Thomas, To be honest, I'm more certain on the Linux side of this story than I am on the AIX side. :-)
When writing the reply, I did find some references via Google that seemed to confirm the AIX story I was spinning. Naturally, as I didn't take a note of them at that point, trying to track those references down again has proven elusive, thus casting doubt on their validity.
Obviously, the use of these variables is controlled by the make environment, rather than the compiler, as it is the (potentially implicit) rules in the make system that use the variables (in whatever combination) to give command line options to the compiler.
So, if/as it's GNU make being used on both systems, I suppose it makes sense its behaviour re. these variables should also be (made to be) similar.
If this is the case, I'm hoping I'll see duplication of (-DUSE_PTHREADS) options when compiling C++ code (with Steve's change) on AIX. If I see that, I'll have confirmation as to what correction to Steve's change is necessary to bring the use of these variables into line (with the GNU make / autoconf / automake) norm.
If that option isn't duplicated in the invocation of the C++ compiler on AIX, it may suggest there are other factors in play (eg. the implicit rule for C++ compilation is being overridden somewhere). In that case, I'll have to dig deeper to figure out what's going on.
Regards, Neil
-- Unless stated above: IBM email: neil_richards at uk.ibm.com IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU