<html><head></head><body><div class="ydpe6707a5byahoo-style-wrap" style="font-family: Helvetica Neue, Helvetica, Arial, sans-serif; font-size: 13px;"><div dir="ltr" data-setdir="false"><div dir="ltr" data-setdir="false">I'll see if I can build one libcairo under a different name with one backend, then go from there :)</div><div dir="ltr" data-setdir="false"><br></div><div dir="ltr" data-setdir="false">I've got some ideas of varying sanity for how libcairo.so might work, maintaining backwards compatibility, but have to see if I get far enough along to test them first.<br></div><div dir="ltr" data-setdir="false"><br></div><div class="ydpe6707a5bsignature">S++</div></div>
        <div><br></div><div><br></div>
        
        </div><div id="yahoo_quoted_6395250012" class="yahoo_quoted">
            <div style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;color:#26282a;">
                
                <div>
                    On Saturday, December 7, 2019, 8:07:06 AM GMT, Uli Schlachter <psychon@znc.in> wrote:
                </div>
                <div><br></div>
                <div><br></div>
                <div><div dir="ltr">Hi,<br clear="none"><br clear="none">On 06.12.19 18:13, Stuart Axon wrote:<br clear="none">[...]>  I was wondering how hard it would be to split up cairo by<br clear="none">backend, would it be feasible to build it so there instead of<br clear="none">libcairo.so, there is libcairo-${backend}.so, e.g.<br clear="none">> libcairo-image.so<br clear="none">> libcairo-xcb.solibcairo-pdf.so<br clear="none">> etc..?<br clear="none"><br clear="none">something like this was already proposed before, but I do not remember<br clear="none">the details. The proposal "back then" was to have one libcairo.so<br clear="none">containing "cairo core" and the backends in extra files. The problem<br clear="none">with this idea is the interface between libcairo.so and the backends: It<br clear="none">would need to be public. And thus, it would need to be (semi-)stable.<br clear="none"><br clear="none">This idea basically turns all of cairo's internals into public ABI (and<br clear="none">perhaps even public API, but that is avoidable).<br clear="none"><br clear="none"><br clear="none">Alternatively, you could compile cairo with just the image backend and<br clear="none">call this one libcairo-image.so etc. This would mean that the different<br clear="none">cairo backends are not interoperable, I think.<div class="yqt5221290020" id="yqtfd25676"><br clear="none"><br clear="none">> Any idea what I would need to change to make it build like this ?</div><br clear="none"><br clear="none">If you want to go down that route, you would have to change the build<br clear="none">system to note give all symbols hidden visibility by default and make<br clear="none">the "slim_hidden_def" not do whatever it does. Afterwards, I think you<br clear="none">could just split the source into multiple .so files as you prefer.<br clear="none"><br clear="none">Cheers,<br clear="none">Uli<br clear="none">-- <br clear="none">- He wants the impossible...!<br clear="none">- That's the short definition of 'captain'.<div class="yqt5221290020" id="yqtfd70995"><br clear="none"></div></div></div>
            </div>
        </div></body></html>