[poppler] cmake: gtk-doc support

Albert Astals Cid aacid at kde.org
Sat Sep 16 16:50:53 UTC 2017


El dimecres, 6 de setembre de 2017, a les 8:32:03 CEST, Carlos Garcia Campos 
va escriure:
> Albert Astals Cid <aacid at kde.org> writes:
> > So gtkdoc upstream seems to have cmake support, so I *almost* made it work
> > 
> > But it's obviously failing to pick up some stuff since the generated files
> > look wrong.
> > 
> > See
> > http://i.imgur.com/gdSH1pI.png
> > vs
> > http://i.imgur.com/5QSy6oP.png
> > 
> > Patch attached.
> > 
> > Can anyone try to have a look? Or anyone knows who could i ask for help on
> > the glib/gnome side? I've sank a few hours into this and not sure i can
> > move it forward without further help.
> 
> I'll look at it (probably during the weekend)

Any luck?

Is this something we could decouple from the build? (i.e. in the same way we 
have Doxygen for the cpp/qt4/qt5 frontends but you don't need cmake support)

Cheers,
  Albert

> 
> > Cheers,
> > 
> >   Albert
> > 
> > diff --git a/CMakeLists.txt b/CMakeLists.txt
> > index f557bdaf..4a012db4 100644
> > --- a/CMakeLists.txt
> > +++ b/CMakeLists.txt
> > @@ -161,7 +161,10 @@ if(CAIRO_FOUND)
> > 
> >    set(POPPLER_GLIB_DISABLE_SINGLE_INCLUDES "")
> >    if(ENABLE_GLIB)
> >    
> >      macro_optional_find_package(GLIB)
> > 
> > -    if(NOT GLIB_FOUND)
> > +    if(GLIB_FOUND)
> > +      find_package(GtkDoc 1.25 QUIET)
> > +      MESSAGE("GtkDoc_FOUND ${GtkDoc_FOUND}")
> > +    else()
> > 
> >        set(ENABLE_GLIB OFF)
> >      
> >      endif()
> >    
> >    endif()
> > 
> > @@ -786,7 +789,7 @@ show_end_message_yesno("qt5 wrapper" ENABLE_QT5)
> > 
> >  show_end_message_yesno("glib wrapper" ENABLE_GLIB)
> >  show_end_message_yesno("  introspection" INTROSPECTION_FOUND)
> >  show_end_message_yesno("cpp wrapper" ENABLE_CPP)
> > 
> > -show_end_message("use gtk-doc" "not supported with this CMake build
> > system") +show_end_message_yesno("use gtk-doc" GtkDoc_FOUND)
> > 
> >  show_end_message_yesno("use libjpeg" ENABLE_LIBJPEG)
> >  show_end_message_yesno("use libpng" ENABLE_LIBPNG)
> >  show_end_message_yesno("use libtiff" ENABLE_LIBTIFF)
> > 
> > diff --git a/glib/CMakeLists.txt b/glib/CMakeLists.txt
> > index 26724ec1..455c9d49 100644
> > --- a/glib/CMakeLists.txt
> > +++ b/glib/CMakeLists.txt
> > @@ -84,7 +84,7 @@ add_library(poppler-glib SHARED ${poppler_glib_SRCS}
> > ${poppler_glib_generated_SR> 
> >  set_target_properties(poppler-glib PROPERTIES VERSION 8.9.0 SOVERSION 8)
> >  target_link_libraries(poppler-glib poppler ${GLIB2_LIBRARIES}
> >  ${CAIRO_LIBRARIES} ${FREETYPE_LIBRARIES}) if(HAVE_PTHREAD)
> > 
> > -   target_link_libraries(poppler-glib -lpthread)
> > +   target_link_libraries(poppler-glib pthread)
> > 
> >  endif()
> >  install(TARGETS poppler-glib RUNTIME DESTINATION bin LIBRARY DESTINATION
> >  lib${LIB_SUFFIX} ARCHIVE DESTINATION lib${LIB_SUFFIX})> 
> > @@ -134,3 +134,7 @@ if (HAVE_INTROSPECTION)
> > 
> >    gir_add_introspections(INTROSPECTION_GIRS)
> >  
> >  endif ()
> > 
> > +
> > +if (GtkDoc_FOUND)
> > +  add_subdirectory(reference)
> > +endif()
> > diff --git a/glib/reference/CMakeLists.txt b/glib/reference/CMakeLists.txt
> > new file mode 100644
> > index 00000000..c22557fd
> > --- /dev/null
> > +++ b/glib/reference/CMakeLists.txt
> > @@ -0,0 +1,26 @@
> > +SET(exec_prefix "/usr/")
> > +
> > +find_package(GtkDoc 1.25 REQUIRED)
> > +
> > +# For some reason poppler has a -lpthread that I don't know exactly where
> > it comes from +# but the GtkDoc cmake code chokes on it, so replace to
> > pthread only +get_target_property(target_link_flags poppler
> > LINK_LIBRARIES)
> > +string(REPLACE "-lpthread" "pthread" fixed_target_link_flags
> > "${target_link_flags}") +set_target_properties(poppler PROPERTIES
> > LINK_LIBRARIES "${fixed_target_link_flags}") +
> > +# Create the doc-poppler target.
> > +gtk_doc_add_module(
> > +    poppler
> > +    SOURCE ${CMAKE_SOURCE_DIR}/glib/
> > +    ${CMAKE_SOURCE_DIR}/glib/reference/
> > +    LIBRARIES poppler-glib poppler
> > +)
> > +
> > +# Build doc-poppler as part of the default target. Without this, you
> > would
> > +# have to explicitly run something like `make doc-poppler` to build the
> > docs. +add_custom_target(documentation ALL DEPENDS doc-poppler)
> > +
> > +# # Install the docs. (This assumes you're using the GNUInstallDirs CMake
> > module +# # to set the CMAKE_INSTALL_DOCDIR variable correctly).
> > +# install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/poppler/html
> > +#         DESTINATION ${CMAKE_INSTALL_DOCDIR})
> > _______________________________________________
> > poppler mailing list
> > poppler at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/poppler




More information about the poppler mailing list