It would seem that having a "CC_capture_warnings" would probably be a useful general purpose function to have. I would also volunteer to try to implement the technical details for this function, unless there are any objections creating such a method? Or, perhaps the reason it doesn't exist is because it's not trivial for all of the various compilers we support?
Thanks, Logan On Thu, Jun 7, 2012 at 5:54 AM, Nick Wellnhofer <[email protected]> wrote: > On 07/06/2012 07:11, Logan Bell wrote: > >> Devs, >> >> This last weekend I was attempting to build Lucy from trunk but was >> failing. My console was being flooded with these sorts of errors: >> >> ./charmony.h:292:31: note: expanded from macro 'CHY_EXPORT' >> #define CHY_EXPORT __declspec(dllexport) >> ^ >> In file included from ../core/Lucy/Index/SegLexicon.**c:18: >> In file included from ../core/Lucy/Util/ToolSet.h:**40: >> autogen/include/Lucy/Object/**BitVector.h:349:8: warning: unknown >> attribute >> 'dllexport' ignored [-Wattributes] >> extern CHY_EXPORT size_t Lucy_BitVec_Is_A_OFFSET; >> >> After doing some spelunking through the charmonizer code I found that >> we're >> doing some probing in src/Charmonizer/Probe/**SymbolVisibility.c to set >> some >> macros CHY_EXPORT/CHY_IMPORT based on if some code fragments can compile. >> The problem is that this probe is failing for my version of clang, >> charmonizer believes my platform is windows. Reading through the clang >> documentation it looks like clang will by default drop the Microsoft >> specific "__declspec(dllexport)" constructs, thus making the test true in >> this instance. Further, it appears that clang does support most of the gcc >> specific attributes. So as a hack and potential fix I reversed the logic >> in >> this code. This made the build happy with no errors. I have yet to commit >> this since I'm a bit new to charmonizer and to the various macros it >> creates and would appreciate any feedback to this patch. >> >> The patch is attached to JIRA 237: >> https://issues.apache.org/**jira/browse/LUCY-237<https://issues.apache.org/jira/browse/LUCY-237> >> > > Yes, the symbol visibility probe still needs some work. The problem is > that GCC and as it seems also clang only warn about unsupported function > attributes. > > Unfortunately, your patch will break GCC on Windows which relies on the > old order of probes. For a better solution we'll have to extend Charmonizer > so that it can either detect compiler warnings or support tests that create > DLLs and link against them. > > Nick >
