[poppler] cmake issues

Adrian Johnson ajohnson at redneon.com
Sun Sep 17 09:00:08 UTC 2017


On 06/09/17 03:03, Albert Astals Cid wrote:
> El dimarts, 5 de setembre de 2017, a les 8:14:56 CEST, Adrian Johnson va 
> escriure:
>> On 05/09/17 06:39, Albert Astals Cid wrote:
>>> El dilluns, 4 de setembre de 2017, a les 7:52:39 CEST, Adrian Johnson va 
> escriure:
>>>> On 04/09/17 06:12, Albert Astals Cid wrote:
>>>>> El diumenge, 3 de setembre de 2017, a les 14:24:16 CEST, Adrian Johnson
>>>>> va
>>>>>
>>>>> escriure:
>>>>>> I managed to get it working. See attached patch. The problem seems to
>>>>>> be
>>>>>> that pkg_check_modules does not return the absolute path of the shared
>>>>>> libraries. There is a bug for this at
>>>>>> https://cmake.org/Bug/view.php?id=15804.
>>>>>>
>>>>>> Is there a better way to handle this?
>>>>>
>>>>> That's a really weird patch, cna you tell me exactly how is your setup
>>>>> so
>>>>> i
>>>>> can try reproducing the problem you have?
>>>>
>>>> Attached is a script to reproduce it. It downloads and installs the
>>>> latest cairo development snapshot to a custom prefix. Then patches
>>>> poppler to use the new API in this version of cairo and tries to build
>>>> it.
>>>
>>> Another fix is using this patch.
>>
>> That works. Although I thought I tried that before. Probably also needs
>> freetype listed as I sometimes build freetype from git.
> 
> Ok, i'll commit, let's add freetype if needed when you can try that scenario, 
> maybe it's not needed (don't know if gtk libraries pulls freetype).

So now I've run into the same problem with freetype. Cairo 1.15.8 uses
FT_Get_Var_Design_Coordinates() if freetype >= 2.8.0. With these
versions of cairo and freetype installed to a custom location and
PKG_CONFIG_PATH pointing at them, linking pdftocairo fails because
poppler has found my custom built cairo but is linking with the system
freetype.

I tried adding FREETYPE_LIBRARIES to the target_link_libraries but this
did not work. The problem seems to be poppler is using find_package() to
find freetype. But find_package() doesn't use pkg-config and finds the
system freetype instead.

I changed CMakeLists.txt to use pkg_check_modules to find freetype. Now
it finds my custom freetype but still tries to link with the system
freetype because it doesn't have the absolute path to the freetype
library. Which is due to this bug https://cmake.org/Bug/view.php?id=15804.

The attached patch works for me. Is there a standard cmake way of
handling pkg-config based libraries in non standard locations? I expect
the same problem will occur with every pkg-config based library we use

> 
> Cheers,
>   Albert
> 
>>
>>> Seems less bad than the last one you sent (which tbh i didn't undestand at
>>> all), no?
>> I was trying to avoid listing both "-lcairo" and /path/to/my/libcairo.so
>> in the linker command line. FindCairo.cmake was using find_library to
>> get the absolute path while FindGTK.cmake was not.
>>
>>> Cheers,
>>>
>>>   Albert
>>>
>>> _______________________________________________
>>> poppler mailing list
>>> poppler at lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/poppler
>>
>> _______________________________________________
>> poppler mailing list
>> poppler at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/poppler
> 
> 
> _______________________________________________
> poppler mailing list
> poppler at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/poppler
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: freetype.patch
Type: text/x-patch
Size: 2379 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/poppler/attachments/20170917/f608296a/attachment-0001.bin>


More information about the poppler mailing list