Imported Upstream version 1.8.15
[platform/upstream/doxygen.git] / src / CMakeLists.txt
1 # vim:ts=4:sw=4:expandtab:autoindent:
2
3 include_directories(
4     ${CMAKE_SOURCE_DIR}/qtools
5     ${CMAKE_SOURCE_DIR}/libmd5
6     ${CMAKE_SOURCE_DIR}/vhdlparser/
7     ${CMAKE_SOURCE_DIR}/src
8     ${CLANG_INCLUDEDIR}
9     ${GENERATED_SRC}
10 )
11
12
13 file(MAKE_DIRECTORY ${GENERATED_SRC})
14 file(GLOB LANGUAGE_FILES "${CMAKE_SOURCE_DIR}/src/translator_??.h")
15
16 # instead of increasebuffer.py
17 add_definitions(-DYY_BUF_SIZE=262144 -DYY_READ_BUF_SIZE=262144)
18
19 # generate settings.h
20 file(GENERATE OUTPUT ${GENERATED_SRC}/settings.h
21 CONTENT "#ifndef SETTINGS_H
22 #define SETTINGS_H
23 #define USE_SQLITE3 ${sqlite3}
24 #define USE_LIBCLANG ${clang}
25 #define IS_SUPPORTED(x) \\
26   ((USE_SQLITE3  && strcmp(\"USE_SQLITE3\",(x))==0)  || \\
27    (USE_LIBCLANG && strcmp(\"USE_LIBCLANG\",(x))==0) || \\
28   0)
29 #endif" )
30 set_source_files_properties(${GENERATED_SRC}/settings.h PROPERTIES GENERATED 1)
31
32
33 # generate version.cpp
34 file(GENERATE OUTPUT ${GENERATED_SRC}/version.cpp
35     CONTENT "char versionString[]=\"${VERSION}\";"
36 )
37 set_source_files_properties(${GENERATED_SRC}/version.cpp PROPERTIES GENERATED 1)
38
39 # configvalues.h
40 add_custom_command(
41     COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -maph ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC}/configvalues.h
42     DEPENDS ${CMAKE_SOURCE_DIR}/src/config.xml ${CMAKE_SOURCE_DIR}/src/configgen.py
43     OUTPUT ${GENERATED_SRC}/configvalues.h
44 )
45 set_source_files_properties(${GENERATED_SRC}/configvalues.h PROPERTIES GENERATED 1)
46
47 # configvalues.cpp
48 add_custom_command(
49     COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -maps ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC}/configvalues.cpp
50     DEPENDS ${CMAKE_SOURCE_DIR}/src/config.xml ${CMAKE_SOURCE_DIR}/src/configgen.py
51     OUTPUT ${GENERATED_SRC}/configvalues.cpp
52 )
53 set_source_files_properties(${GENERATED_SRC}/configvalues.cpp PROPERTIES GENERATED 1)
54
55 # configoptions.cpp
56 add_custom_command(
57     COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -cpp ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC}/configoptions.cpp
58     DEPENDS ${CMAKE_SOURCE_DIR}/src/config.xml ${CMAKE_SOURCE_DIR}/src/configgen.py
59     OUTPUT ${GENERATED_SRC}/configoptions.cpp
60 )
61 set_source_files_properties(${GENERATED_SRC}/configoptions.cpp PROPERTIES GENERATED 1)
62
63
64 # ce_parse.h
65 add_custom_command(
66     COMMAND ${BISON_EXECUTABLE} -l -d -p ce_parsexpYY ${CMAKE_SOURCE_DIR}/src/constexp.y -o ce_parse.c
67     DEPENDS ${CMAKE_SOURCE_DIR}/src/constexp.y
68     OUTPUT ${GENERATED_SRC}/ce_parse.h
69     WORKING_DIRECTORY ${GENERATED_SRC}
70 )
71 set_source_files_properties(${GENERATED_SRC}/ce_parse.h PROPERTIES GENERATED 1)
72
73 # lang_cfg.h
74 add_custom_command(
75     COMMENT  "Generating ${GENERATED_SRC}/lang_cfg.h"
76     COMMAND ${CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/cmake/lang_cfg.cmake ${GENERATED_SRC}/lang_cfg.h ${LANG_CODES}
77     DEPENDS ${LANGUAGE_FILES}
78     OUTPUT ${GENERATED_SRC}/lang_cfg.h
79 )
80 set_source_files_properties(${GENERATED_SRC}/lang_cfg.h PROPERTIES GENERATED 1)
81
82 # all resource files
83 file(GLOB RESOURCES ${CMAKE_SOURCE_DIR}/templates/*/*)
84
85 # resources.cpp
86 add_custom_command(
87     COMMENT  "Generating ${GENERATED_SRC}/resources.cpp"
88     COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/res2cc_cmd.py ${CMAKE_SOURCE_DIR}/templates ${GENERATED_SRC}/resources.cpp
89     DEPENDS ${RESOURCES}
90     OUTPUT ${GENERATED_SRC}/resources.cpp
91 )
92 set_source_files_properties(${GENERATED_SRC}/resources.cpp PROPERTIES GENERATED 1)
93
94 # layout_default.xml
95 add_custom_command(
96     COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/to_c_cmd.py < ${CMAKE_SOURCE_DIR}/src/layout_default.xml > ${GENERATED_SRC}/layout_default.xml.h
97     DEPENDS ${CMAKE_SOURCE_DIR}/src/layout_default.xml
98     OUTPUT  ${GENERATED_SRC}/layout_default.xml.h
99 )
100 set_source_files_properties(${GENERATED_SRC}/layout_default.xml.h PROPERTIES GENERATED 1)
101
102 # Targets for flex/bison   generated files
103 FLEX_TARGET(scanner        scanner.l        ${GENERATED_SRC}/scanner.cpp        COMPILE_FLAGS "${LEX_FLAGS}")
104 FLEX_TARGET(code           code.l           ${GENERATED_SRC}/code.cpp           COMPILE_FLAGS "${LEX_FLAGS}")
105 FLEX_TARGET(pyscanner      pyscanner.l      ${GENERATED_SRC}/pyscanner.cpp      COMPILE_FLAGS "${LEX_FLAGS}")
106 FLEX_TARGET(pycode         pycode.l         ${GENERATED_SRC}/pycode.cpp         COMPILE_FLAGS "${LEX_FLAGS}")
107 FLEX_TARGET(fortranscanner fortranscanner.l ${GENERATED_SRC}/fortranscanner.cpp COMPILE_FLAGS "${LEX_FLAGS}")
108 FLEX_TARGET(fortrancode    fortrancode.l    ${GENERATED_SRC}/fortrancode.cpp    COMPILE_FLAGS "${LEX_FLAGS}")
109 FLEX_TARGET(vhdlcode       vhdlcode.l       ${GENERATED_SRC}/vhdlcode.cpp       COMPILE_FLAGS "${LEX_FLAGS}")
110 FLEX_TARGET(tclscanner     tclscanner.l     ${GENERATED_SRC}/tclscanner.cpp     COMPILE_FLAGS "${LEX_FLAGS}")
111 FLEX_TARGET(pre            pre.l            ${GENERATED_SRC}/pre.cpp            COMPILE_FLAGS "${LEX_FLAGS}")
112 FLEX_TARGET(declinfo       declinfo.l       ${GENERATED_SRC}/declinfo.cpp       COMPILE_FLAGS "${LEX_FLAGS}")
113 FLEX_TARGET(defargs        defargs.l        ${GENERATED_SRC}/defargs.cpp        COMPILE_FLAGS "${LEX_FLAGS}")
114 FLEX_TARGET(doctokenizer   doctokenizer.l   ${GENERATED_SRC}/doctokenizer.cpp   COMPILE_FLAGS "${LEX_FLAGS}")
115 FLEX_TARGET(commentcnv     commentcnv.l     ${GENERATED_SRC}/commentcnv.cpp     COMPILE_FLAGS "${LEX_FLAGS}")
116 FLEX_TARGET(commentscan    commentscan.l    ${GENERATED_SRC}/commentscan.cpp    COMPILE_FLAGS "${LEX_FLAGS}")
117 FLEX_TARGET(constexp       constexp.l       ${GENERATED_SRC}/constexp.cpp       COMPILE_FLAGS "${LEX_FLAGS}")
118 FLEX_TARGET(xmlcode        xmlcode.l        ${GENERATED_SRC}/xmlcode.cpp        COMPILE_FLAGS "${LEX_FLAGS}")
119 FLEX_TARGET(sqlcode        sqlcode.l        ${GENERATED_SRC}/sqlcode.cpp        COMPILE_FLAGS "${LEX_FLAGS}")
120 FLEX_TARGET(configimpl     configimpl.l     ${GENERATED_SRC}/configimpl.cpp     COMPILE_FLAGS "${LEX_FLAGS}")
121
122 BISON_TARGET(constexp      constexp.y       ${GENERATED_SRC}/ce_parse.cpp       COMPILE_FLAGS "${YACC_FLAGS}")
123
124 add_library(doxycfg STATIC
125     ${GENERATED_SRC}/lang_cfg.h
126     ${GENERATED_SRC}/configvalues.h
127     ${GENERATED_SRC}/configimpl.cpp
128     ${GENERATED_SRC}/configoptions.cpp
129     ${GENERATED_SRC}/configvalues.cpp
130     portable.cpp
131     portable_c.c
132 )
133
134 add_library(_doxygen STATIC
135     # custom generated files
136     ${GENERATED_SRC}/lang_cfg.h
137     ${GENERATED_SRC}/settings.h
138     ${GENERATED_SRC}/layout_default.xml.h
139     ${GENERATED_SRC}/version.cpp
140     ${GENERATED_SRC}/ce_parse.h
141     ${GENERATED_SRC}/configvalues.h
142     ${GENERATED_SRC}/resources.cpp
143     # generated by flex/bison
144     ${GENERATED_SRC}/scanner.cpp
145     ${GENERATED_SRC}/code.cpp
146     ${GENERATED_SRC}/pyscanner.cpp
147     ${GENERATED_SRC}/pycode.cpp
148     ${GENERATED_SRC}/fortranscanner.cpp
149     ${GENERATED_SRC}/fortrancode.cpp
150     ${GENERATED_SRC}/vhdlcode.cpp
151     ${GENERATED_SRC}/tclscanner.cpp
152     ${GENERATED_SRC}/pre.cpp
153     ${GENERATED_SRC}/declinfo.cpp
154     ${GENERATED_SRC}/defargs.cpp
155     ${GENERATED_SRC}/doctokenizer.cpp
156     ${GENERATED_SRC}/commentcnv.cpp
157     ${GENERATED_SRC}/commentscan.cpp
158     ${GENERATED_SRC}/constexp.cpp
159     ${GENERATED_SRC}/xmlcode.cpp
160     ${GENERATED_SRC}/sqlcode.cpp
161     #
162     ${GENERATED_SRC}/ce_parse.cpp
163     #
164     plantuml.cpp
165     arguments.cpp
166     cite.cpp
167     clangparser.cpp
168     fileparser.cpp
169     classdef.cpp
170     classlist.cpp
171     cmdmapper.cpp
172     condparser.cpp
173     context.cpp
174     cppvalue.cpp
175     debug.cpp
176     defgen.cpp
177     define.cpp
178     definition.cpp
179     diagram.cpp
180     dirdef.cpp
181     docparser.cpp
182     docsets.cpp
183     dot.cpp
184     doxygen.cpp
185     eclipsehelp.cpp
186     emoji.cpp
187     entry.cpp
188     filedef.cpp
189     filename.cpp
190     formula.cpp
191     ftextstream.cpp
192     ftvhelp.cpp
193     groupdef.cpp
194     htags.cpp
195     htmldocvisitor.cpp
196     htmlentity.cpp
197     resourcemgr.cpp
198     htmlgen.cpp
199     htmlhelp.cpp
200     image.cpp
201     index.cpp
202     language.cpp
203     latexdocvisitor.cpp
204     latexgen.cpp
205     layout.cpp
206     lodepng.cpp
207     logos.cpp
208     mandocvisitor.cpp
209     mangen.cpp
210     sqlite3gen.cpp
211     markdown.cpp
212     marshal.cpp
213     memberdef.cpp
214     membergroup.cpp
215     memberlist.cpp
216     membername.cpp
217     message.cpp
218     msc.cpp
219     dia.cpp
220     namespacedef.cpp
221     objcache.cpp
222     outputgen.cpp
223     outputlist.cpp
224     pagedef.cpp
225     perlmodgen.cpp
226     qhp.cpp
227     qhpxmlwriter.cpp
228     reflist.cpp
229     rtfdocvisitor.cpp
230     rtfgen.cpp
231     rtfstyle.cpp
232     searchindex.cpp
233     store.cpp
234     tagreader.cpp
235     template.cpp
236     textdocvisitor.cpp
237     tooltip.cpp
238     util.cpp
239     vhdldocgen.cpp
240     vhdljjparser.cpp
241     xmldocvisitor.cpp
242     xmlgen.cpp
243     docbookvisitor.cpp
244     docbookgen.cpp
245 )
246
247 add_executable(doxygen main.cpp)
248
249 if (use_libclang)
250     find_package(LLVM REQUIRED CONFIG)
251     find_package(Clang REQUIRED CONFIG)
252     if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
253         cmake_minimum_required(VERSION 3.1)
254         target_compile_features(_doxygen PRIVATE cxx_alignof)
255         target_compile_features(doxygen PRIVATE cxx_alignof)
256         target_compile_options(_doxygen PRIVATE -stdlib=libc++)
257         target_compile_options(doxygen PRIVATE -stdlib=libc++)
258     elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
259         target_compile_options(_doxygen PRIVATE -std=c++11)
260         target_compile_options(doxygen PRIVATE -std=c++11)
261     endif()
262     include_directories(${LLVM_INCLUDE_DIRS})
263     add_definitions(${LLVM_DEFINITIONS})
264     llvm_map_components_to_libnames(llvm_libs support core option)
265     target_compile_definitions(doxygen PRIVATE ${LLVM_DEFINITIONS})
266     set(CLANG_LIBS libclang clangTooling ${llvm_libs})
267 endif()
268
269 target_link_libraries(doxygen
270     _doxygen
271     doxycfg
272     qtools
273     md5
274     vhdlparser
275     ${SQLITE3_LIBRARIES}
276     ${ICONV_LIBRARIES}
277     ${CMAKE_THREAD_LIBS_INIT}
278     ${EXTRA_LIBS}
279     ${CLANG_LIBS}
280 )
281
282 install(TARGETS doxygen DESTINATION bin)