Hi Reuben, This looks reasonable: Since a project can use both gcc and g++ and since the desired warning options for gcc and g++ are likely different, it's good to have different macros, that set different variables (WARN_CFLAGS vs. WARN_CXXFLAGS).
> I'd be happy to work this up into a patch given some guidance on what shape > it should take. In the current state, there is overlap between manywarnings.m4 and manywarnings-cxx.m4 (macro gl_MANYWARN_COMPLEMENT defined twice). Therefore I would leave gl_MANYWARN_COMPLEMENT defined only in manywarnings.m4, and change modules/manywarnings-cxx to reference also m4/manywarnings.m4. Going further, there is no real benefit of having manywarnings-cxx a different module. Since an m4 macro that is not invoked does not contribute to the size nor the execution time of the 'configure' script, I would just add the two new macros gl_MANYWARN_ALL_GXX and gl_CXX_WARN_ADD - in manywarnings.m4 and warnings.m4, respectively. However, two things are important: - That the name of the *_cv_* variables are different in the C++ macro than in the C macro. - That you invoke AC_LANG_PUSH([C++]) at the beginning and AC_LANG_POP([C++]) at the end of the macro, so that AC_LANG_SOURCE invocations do the right thing. Please also fix the AC_REQUIRE([gl_UNKNOWN_WARNINGS_ARE_ERRORS]) invocation in gl_WARN_ADD and gl_CXX_WARN_ADD. Since this macro expands to different code after AC_LANG_PUSH([C++]) than after AC_LANG_PUSH([C]), it is wrong to just AC_REQUIRE it. Needs to be a bit more intelligent. Look at how _AC_LANG_ABBREV and _AC_LANG_PREFIX can be used. Maybe libtool.m4, which also plays around with AC_LANG, gives you some hint about this. Bruno