CMake linux fixes when using meinproc4 doc generator.
[platform/upstream/dbus.git] / cmake / doc / CMakeLists.txt
1 find_package(Doxygen)
2
3 if(DOXYGEN_EXECUTABLE)
4   OPTION(DBUS_ENABLE_DOXYGEN_DOCS "build DOXYGEN documentation (requires Doxygen)" ON)
5 endif(DOXYGEN_EXECUTABLE)
6
7 if (DBUS_ENABLE_DOXYGEN_DOCS)
8     set (top_srcdir ${CMAKE_SOURCE_DIR}/..)
9     configure_file(${CMAKE_SOURCE_DIR}/Doxyfile.cmake ${CMAKE_BINARY_DIR}/Doxyfile )
10     add_custom_target(doc 
11         COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/Doxyfile
12     )
13 endif (DBUS_ENABLE_DOXYGEN_DOCS)
14
15 #
16 # find docbook generator
17
18 find_program(MEINPROC4_EXECUTABLE meinproc4)
19
20 find_program(XMLTO_EXECUTABLE xmlto)
21
22 if (MEINPROC4_EXECUTABLE OR XMLTO_EXECUTABLE)
23   OPTION(DBUS_ENABLE_XML_DOCS "build XML  documentation (requires xmlto or meinproc4)" ON)
24 endif (MEINPROC4_EXECUTABLE OR XMLTO_EXECUTABLE)
25
26 if (XMLTO_EXECUTABLE)
27         set (DOCBOOK_GENERATOR_NAME "xmlto" PARENT_SCOPE)
28         set(DBUS_XML_DOCS_ENABLED 1)
29         set(MEINPROC4_EXECUTABLE 0)
30         MESSAGE(STATUS "xmlto docbook generator found")
31         set(STYLESHEET_MAN "${DOCBOOKXSL_DIR}/manpages/docbook.xsl")
32         set(STYLESHEET_HTML "${DOCBOOKXSL_DIR}/html/docbook.xsl")
33
34 elseif (MEINPROC4_EXECUTABLE)
35         set(DOCBOOK_GENERATOR_NAME "meinproc4" PARENT_SCOPE)
36         set(DBUS_XML_DOCS_ENABLED 1)
37         if(WIN32)
38                 get_filename_component(_a ${MEINPROC4_EXECUTABLE} PATH)
39                 get_filename_component(_meinproc_install_path ${_a} PATH)
40                 set(STYLESHEET_HTML "${_meinproc_install_path}/share/apps/ksgmltools2/docbook/xsl/html/docbook.xsl")
41         else(WIN32)
42                 set(STYLESHEET_HTML file:///usr/share/kde4/apps/ksgmltools2/customization/kde-nochunk.xsl)
43         endif(WIN32)
44 endif ()
45
46 if (DBUS_ENABLE_XML_DOCS)
47
48 macro (DOCBOOK _sources _format)
49   get_filename_component(_infile ${_sources} ABSOLUTE)
50   get_filename_component(_name ${_infile} NAME)
51
52   if (${_format} STREQUAL "man")
53     string(REPLACE ".xml" "" _outname ${_name})
54     set(STYLESHEET ${STYLESHEET_MAN})
55   else()
56     string(REPLACE ".xml" ".html" _outname ${_name})
57     set(STYLESHEET ${STYLESHEET_HTML})
58   endif ()
59
60   set(_outfile ${CMAKE_CURRENT_BINARY_DIR}/${_outname})
61   if (EXISTS ${_sources})
62           if (MEINPROC4_EXECUTABLE)
63                   ADD_CUSTOM_TARGET(${_outname} ALL
64                         ${MEINPROC4_EXECUTABLE} --stylesheet ${STYLESHEET} -o ${_outfile} ${_infile}
65                         DEPENDS ${_infile}
66                         WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
67                 )
68           endif ()
69           if (XMLTO_EXECUTABLE)
70                   ADD_CUSTOM_TARGET(${_outname} ALL
71                         ${XMLTO_EXECUTABLE} -vv ${_format} ${_infile}
72                         DEPENDS ${_infile}
73                         WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
74                 )
75           endif ()
76           if (${_format} STREQUAL "man")
77                   install(FILES ${_outfile} DESTINATION share/man/man1)
78           else ()
79                   install(FILES ${_outfile} DESTINATION share/doc/dbus)
80           endif ()
81   else ()
82           MESSAGE(STATUS "skipping xml doc generating for ${_infile}, file not found")
83   endif ()
84           
85 endmacro (DOCBOOK)
86
87 ### copy tests to builddir so that generated tests and static tests 
88 ### are all in one place.
89 ### todo how to add more filetypes 
90 MACRO (COPYDIR _src _type)
91     FOREACH(FILE_TYPE ${_type})
92         FOREACH(DIR ${_src})
93                 FILE(GLOB FILES "${CMAKE_SOURCE_DIR}/../${DIR}/${FILE_TYPE}" )
94                 FILE(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/${DIR})
95                 FOREACH(FILE ${FILES})
96                         GET_FILENAME_COMPONENT(FILENAME ${FILE} NAME)
97                         SET (TARGET ${CMAKE_BINARY_DIR}/${DIR}/${FILENAME})
98                         configure_file(${FILE} ${TARGET} COPYONLY)
99                         IF (CONFIG_VERBOSE)
100                                 MESSAGE("FROM: ${FILE}\nTO: ${TARGET}\n")
101                         ENDIF (CONFIG_VERBOSE)
102                 ENDFOREACH(FILE)
103         ENDFOREACH(DIR)
104     ENDFOREACH(FILE_TYPE)
105 ENDMACRO (COPYDIR)
106
107 COPYDIR(doc *.png)
108 COPYDIR(doc *.svg)
109
110 DOCBOOK(${CMAKE_SOURCE_DIR}/../doc/dbus-test-plan.xml html-nochunks)
111 DOCBOOK(${CMAKE_SOURCE_DIR}/../doc/dbus-tutorial.xml html-nochunks)
112 DOCBOOK(${CMAKE_SOURCE_DIR}/../doc/dbus-specification.xml html-nochunks)
113 DOCBOOK(${CMAKE_SOURCE_DIR}/../doc/dbus-faq.xml html-nochunks)
114 configure_file(${CMAKE_SOURCE_DIR}/../doc/dbus-cleanup-sockets.1.xml.in ${CMAKE_BINARY_DIR}/doc/dbus-cleanup-sockets.1.xml)
115 configure_file(${CMAKE_SOURCE_DIR}/../doc/dbus-daemon.1.xml.in ${CMAKE_BINARY_DIR}/doc/dbus-daemon.1.xml)
116 configure_file(${CMAKE_SOURCE_DIR}/../doc/dbus-launch.1.xml.in ${CMAKE_BINARY_DIR}/doc/dbus-launch.1.xml)
117 configure_file(${CMAKE_SOURCE_DIR}/../doc/dbus-monitor.1.xml.in ${CMAKE_BINARY_DIR}/doc/dbus-monitor.1.xml)
118 configure_file(${CMAKE_SOURCE_DIR}/../doc/dbus-send.1.xml.in ${CMAKE_BINARY_DIR}/doc/dbus-send.1.xml)
119 configure_file(${CMAKE_SOURCE_DIR}/../doc/dbus-uuidgen.1.xml.in ${CMAKE_BINARY_DIR}/doc/dbus-uuidgen.1.xml)
120 DOCBOOK(${CMAKE_BINARY_DIR}/doc/dbus-cleanup-sockets.1.xml html-nochunks)
121 DOCBOOK(${CMAKE_BINARY_DIR}/doc/dbus-daemon.1.xml html-nochunks)
122 DOCBOOK(${CMAKE_BINARY_DIR}/doc/dbus-launch.1.xml html-nochunks)
123 DOCBOOK(${CMAKE_BINARY_DIR}/doc/dbus-monitor.1.xml html-nochunks)
124 DOCBOOK(${CMAKE_BINARY_DIR}/doc/dbus-send.1.xml html-nochunks)
125 DOCBOOK(${CMAKE_BINARY_DIR}/doc/dbus-uuidgen.1.xml html-nochunks)
126 if (UNIX)
127   DOCBOOK(${CMAKE_BINARY_DIR}/doc/dbus-daemon.1.xml man)
128   DOCBOOK(${CMAKE_SOURCE_DIR}/../doc/dbus-monitor.1.xml man)
129   DOCBOOK(${CMAKE_SOURCE_DIR}/../doc/dbus-send.1.xml man)
130   DOCBOOK(${CMAKE_SOURCE_DIR}/../doc/dbus-launch.1.xml man)
131   DOCBOOK(${CMAKE_SOURCE_DIR}/../doc/dbus-uuidgen.1.xml man)
132   DOCBOOK(${CMAKE_SOURCE_DIR}/../doc/dbus-cleanup-sockets.1.xml man)
133 endif()
134 #
135 # handle html index file
136 #
137 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/index.html.cmake ${CMAKE_CURRENT_BINARY_DIR}/index.html )
138 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/index.html DESTINATION share/doc/dbus)
139
140 set (EXTRA_DIST         
141         ${CMAKE_SOURCE_DIR}/../doc/busconfig.dtd                        
142         ${CMAKE_SOURCE_DIR}/../doc/introspect.dtd                       
143         ${CMAKE_SOURCE_DIR}/../doc/introspect.xsl
144 )
145
146 install(FILES ${EXTRA_DIST} DESTINATION share/doc/dbus)
147
148 endif(DBUS_ENABLE_XML_DOCS)