<p dir="ltr"><br>
On 6 May 2015 07:40, "Andrey Pokrovskiy" <<a href="mailto:wonder.mice@gmail.com">wonder.mice@gmail.com</a>> wrote:<br>
><br>
> You have to ALWAYS include lws_config.h in the beginning of<br>
> libwebsockets.h because that's how libwebsockets.h knows about options<br>
> with which the library was compiled. If you look into libwebsockets.h<br>
> you will see it uses defines from lws_config.h, such as<br>
> LWS_NO_EXTENSIONS, LWS_OPENSSL_SUPPORT, LWS_USE_LIBEV.<br>
><br>
> Before that patch it was basically broken and to use it correctly you<br>
> have to define CMAKE_BUILD in your project manually to workaround<br>
> that.<br>
><br>
> But I agree that it's completely inappropriate to have such generic<br>
> defines in library public header. I even added a comment for that:<br>
><br>
> /* That's a bad idea since it will leak all internal defines outside */<br>
> #include "lws_config.h"</p>
<p dir="ltr">Yeah.  It's better if you don't say, "it's a bad idea to stick my hand in the fire" and then stick your hand in the fire as if that absolved anyone from feeling the pain though.</p>
<p dir="ltr">> I suppose the right solution is to split lws_config.h on two - public<br>
> (LWS_xxx things) and private (all other things). Or just prefix<br>
> everything with "LWS_". But any solution probably will have some<br>
> "compatibility" issues, so chances are things will remain the way they<br>
> are.</p>
<p dir="ltr">I think the root cause of the current situation is I accepted some patchbombs I should have asked to be split up.</p>
<p dir="ltr">> On Tue, May 5, 2015 at 1:19 PM, Roger Light <<a href="mailto:andy.green@linaro.org">andy.green@linaro.org</a>> wrote:<br>
> > Hi there,<br>
> ><br>
> > I believe that a recent changeset introduced some undesirable changes<br>
> > to libwebsockets. I'm not sure what the best solution is, hence this<br>
> > email.<br>
> ><br>
> > The change is:<br>
> ><br>
> > <a href="https://github.com/warmcat/libwebsockets/commit/04da2ccd1e8c5b582c4e2a77ee53f929ae8f22a0">https://github.com/warmcat/libwebsockets/commit/04da2ccd1e8c5b582c4e2a77ee53f929ae8f22a0</a><br>
> ><br>
> > "Always include lws_config.h since now we have only CMake build"<br>
> ><br>
> > This means that libwebsockets.h always #includes lws_config.h, whereas<br>
> > before it was only included if CMAKE_BUILD was defined - this means<br>
> > only when the library itself was being built in practice. From what I<br>
> > can see, lws_config.h includes a mix of information that is useful to<br>
> > people using lws - such as whether it was compiled with cyassl support<br>
> > - and lots of things that aren't really of any interest.<br>
> ><br>
> > One of these things is the "#define VERSION" macro. This means that<br>
> > lws is claiming ownership of the VERSION macro, which seems a bit<br>
> > impolite for a library to do :) The shame of it is that the changeset<br>
> > acknowledges that the change is going to cause problems.<br>
> ><br>
> > I think that these is a lot of leftover cruft from autoconf days, but<br>
> > I don't know everything that can be cut. I think that if it is<br>
> > possible to have lws_config.h for public information about the lws<br>
> > build, and lws_config_private.h for things that lws needs for its own<br>
> > build that would be a reasonable solution.</p>
<p dir="ltr">It sounds good to me if someone will implement it.  Otherwise I think we were better off how it was.</p>
<p dir="ltr">I assume user code prior to this with CMAKE_BUILD will just continue to work fine.</p>
<p dir="ltr">-Andy</p>
<p dir="ltr">> > Any thoughts?<br>
> ><br>
> > Cheers,<br>
> ><br>
> > Roger<br>
> > _______________________________________________<br>
> > Libwebsockets mailing list<br>
> > <a href="mailto:Libwebsockets@ml.libwebsockets.org">Libwebsockets@ml.libwebsockets.org</a><br>
> > <a href="http://ml.libwebsockets.org/mailman/listinfo/libwebsockets">http://ml.libwebsockets.org/mailman/listinfo/libwebsockets</a><br>
</p>