Blame src/CMakeLists.txt

Packit 1c1d7e
# vim:ts=4:sw=4:expandtab:autoindent:
Packit 1c1d7e
Packit 1c1d7e
include_directories(
Packit 1c1d7e
    ${CMAKE_SOURCE_DIR}/qtools
Packit 1c1d7e
    ${CMAKE_SOURCE_DIR}/libmd5
Packit 1c1d7e
    ${CMAKE_SOURCE_DIR}/vhdlparser/
Packit 1c1d7e
    ${CMAKE_SOURCE_DIR}/src
Packit 1c1d7e
    ${CLANG_INCLUDEDIR}
Packit 1c1d7e
    ${GENERATED_SRC}
Packit 1c1d7e
)
Packit 1c1d7e
Packit 1c1d7e
Packit 1c1d7e
file(MAKE_DIRECTORY ${GENERATED_SRC})
Packit 1c1d7e
file(GLOB LANGUAGE_FILES "${CMAKE_SOURCE_DIR}/src/translator_??.h")
Packit 1c1d7e
Packit 1c1d7e
# instead of increasebuffer.py
Packit 1c1d7e
add_definitions(-DYY_BUF_SIZE=262144 -DYY_READ_BUF_SIZE=262144)
Packit 1c1d7e
Packit 1c1d7e
# generate settings.h
Packit 1c1d7e
file(GENERATE OUTPUT ${GENERATED_SRC}/settings.h
Packit 1c1d7e
CONTENT "#ifndef SETTINGS_H
Packit 1c1d7e
#define SETTINGS_H
Packit 1c1d7e
#define USE_SQLITE3 ${sqlite3}
Packit 1c1d7e
#define USE_LIBCLANG ${clang}
Packit 1c1d7e
#define IS_SUPPORTED(x) \\
Packit 1c1d7e
  ((USE_SQLITE3  && strcmp(\"USE_SQLITE3\",(x))==0)  || \\
Packit 1c1d7e
   (USE_LIBCLANG && strcmp(\"USE_LIBCLANG\",(x))==0) || \\
Packit 1c1d7e
  0)
Packit 1c1d7e
#endif" )
Packit 1c1d7e
set_source_files_properties(${GENERATED_SRC}/settings.h PROPERTIES GENERATED 1)
Packit 1c1d7e
Packit 1c1d7e
Packit 1c1d7e
# generate version.cpp
Packit 1c1d7e
file(GENERATE OUTPUT ${GENERATED_SRC}/version.cpp
Packit 1c1d7e
    CONTENT "char versionString[]=\"${VERSION}\";"
Packit 1c1d7e
)
Packit 1c1d7e
set_source_files_properties(${GENERATED_SRC}/version.cpp PROPERTIES GENERATED 1)
Packit 1c1d7e
Packit 1c1d7e
# configvalues.h
Packit 1c1d7e
add_custom_command(
Packit 1c1d7e
    COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -maph ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC}/configvalues.h
Packit 1c1d7e
    DEPENDS ${CMAKE_SOURCE_DIR}/src/config.xml ${CMAKE_SOURCE_DIR}/src/configgen.py
Packit 1c1d7e
    OUTPUT ${GENERATED_SRC}/configvalues.h
Packit 1c1d7e
)
Packit 1c1d7e
set_source_files_properties(${GENERATED_SRC}/configvalues.h PROPERTIES GENERATED 1)
Packit 1c1d7e
Packit 1c1d7e
# configvalues.cpp
Packit 1c1d7e
add_custom_command(
Packit 1c1d7e
    COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -maps ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC}/configvalues.cpp
Packit 1c1d7e
    DEPENDS ${CMAKE_SOURCE_DIR}/src/config.xml ${CMAKE_SOURCE_DIR}/src/configgen.py
Packit 1c1d7e
    OUTPUT ${GENERATED_SRC}/configvalues.cpp
Packit 1c1d7e
)
Packit 1c1d7e
set_source_files_properties(${GENERATED_SRC}/configvalues.cpp PROPERTIES GENERATED 1)
Packit 1c1d7e
Packit 1c1d7e
# configoptions.cpp
Packit 1c1d7e
add_custom_command(
Packit 1c1d7e
    COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -cpp ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC}/configoptions.cpp
Packit 1c1d7e
    DEPENDS ${CMAKE_SOURCE_DIR}/src/config.xml ${CMAKE_SOURCE_DIR}/src/configgen.py
Packit 1c1d7e
    OUTPUT ${GENERATED_SRC}/configoptions.cpp
Packit 1c1d7e
)
Packit 1c1d7e
set_source_files_properties(${GENERATED_SRC}/configoptions.cpp PROPERTIES GENERATED 1)
Packit 1c1d7e
Packit 1c1d7e
Packit 1c1d7e
# ce_parse.h
Packit 1c1d7e
add_custom_command(
Packit 1c1d7e
    COMMAND ${BISON_EXECUTABLE} -l -d -p ce_parsexpYY ${CMAKE_SOURCE_DIR}/src/constexp.y -o ce_parse.c
Packit 1c1d7e
    DEPENDS ${CMAKE_SOURCE_DIR}/src/constexp.y
Packit 1c1d7e
    OUTPUT ${GENERATED_SRC}/ce_parse.h
Packit 1c1d7e
    WORKING_DIRECTORY ${GENERATED_SRC}
Packit 1c1d7e
)
Packit 1c1d7e
set_source_files_properties(${GENERATED_SRC}/ce_parse.h PROPERTIES GENERATED 1)
Packit 1c1d7e
Packit 1c1d7e
# lang_cfg.h
Packit 1c1d7e
add_custom_command(
Packit 1c1d7e
    COMMENT  "Generating ${GENERATED_SRC}/lang_cfg.h"
Packit 1c1d7e
    COMMAND ${CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/cmake/lang_cfg.cmake ${GENERATED_SRC}/lang_cfg.h ${LANG_CODES}
Packit 1c1d7e
    DEPENDS ${LANGUAGE_FILES}
Packit 1c1d7e
    OUTPUT ${GENERATED_SRC}/lang_cfg.h
Packit 1c1d7e
)
Packit 1c1d7e
set_source_files_properties(${GENERATED_SRC}/lang_cfg.h PROPERTIES GENERATED 1)
Packit 1c1d7e
Packit 1c1d7e
# all resource files
Packit 1c1d7e
file(GLOB RESOURCES ${CMAKE_SOURCE_DIR}/templates/*/*)
Packit 1c1d7e
Packit 1c1d7e
# resources.cpp
Packit 1c1d7e
add_custom_command(
Packit 1c1d7e
    COMMENT  "Generating ${GENERATED_SRC}/resources.cpp"
Packit 1c1d7e
    COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/res2cc_cmd.py ${CMAKE_SOURCE_DIR}/templates ${GENERATED_SRC}/resources.cpp
Packit 1c1d7e
    DEPENDS ${RESOURCES}
Packit 1c1d7e
    OUTPUT ${GENERATED_SRC}/resources.cpp
Packit 1c1d7e
)
Packit 1c1d7e
set_source_files_properties(${GENERATED_SRC}/resources.cpp PROPERTIES GENERATED 1)
Packit 1c1d7e
Packit 1c1d7e
# layout_default.xml
Packit 1c1d7e
add_custom_command(
Packit 1c1d7e
    COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/to_c_cmd.py < ${CMAKE_SOURCE_DIR}/src/layout_default.xml > ${GENERATED_SRC}/layout_default.xml.h
Packit 1c1d7e
    DEPENDS ${CMAKE_SOURCE_DIR}/src/layout_default.xml
Packit 1c1d7e
    OUTPUT  ${GENERATED_SRC}/layout_default.xml.h
Packit 1c1d7e
)
Packit 1c1d7e
set_source_files_properties(${GENERATED_SRC}/layout_default.xml.h PROPERTIES GENERATED 1)
Packit 1c1d7e
Packit 1c1d7e
# Targets for flex/bison   generated files
Packit 1c1d7e
FLEX_TARGET(scanner        scanner.l        ${GENERATED_SRC}/scanner.cpp        COMPILE_FLAGS "${LEX_FLAGS}")
Packit 1c1d7e
FLEX_TARGET(code           code.l           ${GENERATED_SRC}/code.cpp           COMPILE_FLAGS "${LEX_FLAGS}")
Packit 1c1d7e
FLEX_TARGET(pyscanner      pyscanner.l      ${GENERATED_SRC}/pyscanner.cpp      COMPILE_FLAGS "${LEX_FLAGS}")
Packit 1c1d7e
FLEX_TARGET(pycode         pycode.l         ${GENERATED_SRC}/pycode.cpp         COMPILE_FLAGS "${LEX_FLAGS}")
Packit 1c1d7e
FLEX_TARGET(fortranscanner fortranscanner.l ${GENERATED_SRC}/fortranscanner.cpp COMPILE_FLAGS "${LEX_FLAGS}")
Packit 1c1d7e
FLEX_TARGET(fortrancode    fortrancode.l    ${GENERATED_SRC}/fortrancode.cpp    COMPILE_FLAGS "${LEX_FLAGS}")
Packit 1c1d7e
FLEX_TARGET(vhdlcode       vhdlcode.l       ${GENERATED_SRC}/vhdlcode.cpp       COMPILE_FLAGS "${LEX_FLAGS}")
Packit 1c1d7e
FLEX_TARGET(tclscanner     tclscanner.l     ${GENERATED_SRC}/tclscanner.cpp     COMPILE_FLAGS "${LEX_FLAGS}")
Packit 1c1d7e
FLEX_TARGET(pre            pre.l            ${GENERATED_SRC}/pre.cpp            COMPILE_FLAGS "${LEX_FLAGS}")
Packit 1c1d7e
FLEX_TARGET(declinfo       declinfo.l       ${GENERATED_SRC}/declinfo.cpp       COMPILE_FLAGS "${LEX_FLAGS}")
Packit 1c1d7e
FLEX_TARGET(defargs        defargs.l        ${GENERATED_SRC}/defargs.cpp        COMPILE_FLAGS "${LEX_FLAGS}")
Packit 1c1d7e
FLEX_TARGET(doctokenizer   doctokenizer.l   ${GENERATED_SRC}/doctokenizer.cpp   COMPILE_FLAGS "${LEX_FLAGS}")
Packit 1c1d7e
FLEX_TARGET(commentcnv     commentcnv.l     ${GENERATED_SRC}/commentcnv.cpp     COMPILE_FLAGS "${LEX_FLAGS}")
Packit 1c1d7e
FLEX_TARGET(commentscan    commentscan.l    ${GENERATED_SRC}/commentscan.cpp    COMPILE_FLAGS "${LEX_FLAGS}")
Packit 1c1d7e
FLEX_TARGET(constexp       constexp.l       ${GENERATED_SRC}/constexp.cpp       COMPILE_FLAGS "${LEX_FLAGS}")
Packit 1c1d7e
FLEX_TARGET(xmlcode        xmlcode.l        ${GENERATED_SRC}/xmlcode.cpp        COMPILE_FLAGS "${LEX_FLAGS}")
Packit 1c1d7e
FLEX_TARGET(sqlcode        sqlcode.l        ${GENERATED_SRC}/sqlcode.cpp        COMPILE_FLAGS "${LEX_FLAGS}")
Packit 1c1d7e
FLEX_TARGET(configimpl     configimpl.l     ${GENERATED_SRC}/configimpl.cpp     COMPILE_FLAGS "${LEX_FLAGS}")
Packit 1c1d7e
Packit 1c1d7e
BISON_TARGET(constexp      constexp.y       ${GENERATED_SRC}/ce_parse.cpp       COMPILE_FLAGS ${YACC_FLAGS})
Packit 1c1d7e
Packit 1c1d7e
add_library(doxycfg STATIC
Packit 1c1d7e
    ${GENERATED_SRC}/lang_cfg.h
Packit 1c1d7e
    ${GENERATED_SRC}/configvalues.h
Packit 1c1d7e
    ${GENERATED_SRC}/configimpl.cpp
Packit 1c1d7e
    ${GENERATED_SRC}/configoptions.cpp
Packit 1c1d7e
    ${GENERATED_SRC}/configvalues.cpp
Packit 1c1d7e
    portable.cpp
Packit 1c1d7e
    portable_c.c
Packit 1c1d7e
)
Packit 1c1d7e
Packit 1c1d7e
add_library(_doxygen STATIC
Packit 1c1d7e
    # custom generated files
Packit 1c1d7e
    ${GENERATED_SRC}/lang_cfg.h
Packit 1c1d7e
    ${GENERATED_SRC}/settings.h
Packit 1c1d7e
    ${GENERATED_SRC}/layout_default.xml.h
Packit 1c1d7e
    ${GENERATED_SRC}/version.cpp
Packit 1c1d7e
    ${GENERATED_SRC}/ce_parse.h
Packit 1c1d7e
    ${GENERATED_SRC}/configvalues.h
Packit 1c1d7e
    ${GENERATED_SRC}/resources.cpp
Packit 1c1d7e
    # generated by flex/bison
Packit 1c1d7e
    ${GENERATED_SRC}/scanner.cpp
Packit 1c1d7e
    ${GENERATED_SRC}/code.cpp
Packit 1c1d7e
    ${GENERATED_SRC}/pyscanner.cpp
Packit 1c1d7e
    ${GENERATED_SRC}/pycode.cpp
Packit 1c1d7e
    ${GENERATED_SRC}/fortranscanner.cpp
Packit 1c1d7e
    ${GENERATED_SRC}/fortrancode.cpp
Packit 1c1d7e
    ${GENERATED_SRC}/vhdlcode.cpp
Packit 1c1d7e
    ${GENERATED_SRC}/tclscanner.cpp
Packit 1c1d7e
    ${GENERATED_SRC}/pre.cpp
Packit 1c1d7e
    ${GENERATED_SRC}/declinfo.cpp
Packit 1c1d7e
    ${GENERATED_SRC}/defargs.cpp
Packit 1c1d7e
    ${GENERATED_SRC}/doctokenizer.cpp
Packit 1c1d7e
    ${GENERATED_SRC}/commentcnv.cpp
Packit 1c1d7e
    ${GENERATED_SRC}/commentscan.cpp
Packit 1c1d7e
    ${GENERATED_SRC}/constexp.cpp
Packit 1c1d7e
    ${GENERATED_SRC}/xmlcode.cpp
Packit 1c1d7e
    ${GENERATED_SRC}/sqlcode.cpp
Packit 1c1d7e
    #
Packit 1c1d7e
    ${GENERATED_SRC}/ce_parse.cpp
Packit 1c1d7e
    #
Packit 1c1d7e
    plantuml.cpp
Packit 1c1d7e
    arguments.cpp
Packit 1c1d7e
    cite.cpp
Packit 1c1d7e
    clangparser.cpp
Packit 1c1d7e
    fileparser.cpp
Packit 1c1d7e
    classdef.cpp
Packit 1c1d7e
    classlist.cpp
Packit 1c1d7e
    cmdmapper.cpp
Packit 1c1d7e
    condparser.cpp
Packit 1c1d7e
    context.cpp
Packit 1c1d7e
    cppvalue.cpp
Packit 1c1d7e
    debug.cpp
Packit 1c1d7e
    defgen.cpp
Packit 1c1d7e
    define.cpp
Packit 1c1d7e
    definition.cpp
Packit 1c1d7e
    diagram.cpp
Packit 1c1d7e
    dirdef.cpp
Packit 1c1d7e
    docparser.cpp
Packit 1c1d7e
    docsets.cpp
Packit 1c1d7e
    dot.cpp
Packit 1c1d7e
    doxygen.cpp
Packit 1c1d7e
    eclipsehelp.cpp
Packit 1c1d7e
    entry.cpp
Packit 1c1d7e
    filedef.cpp
Packit 1c1d7e
    filename.cpp
Packit 1c1d7e
    formula.cpp
Packit 1c1d7e
    ftextstream.cpp
Packit 1c1d7e
    ftvhelp.cpp
Packit 1c1d7e
    groupdef.cpp
Packit 1c1d7e
    htags.cpp
Packit 1c1d7e
    htmldocvisitor.cpp
Packit 1c1d7e
    htmlentity.cpp
Packit 1c1d7e
    resourcemgr.cpp
Packit 1c1d7e
    htmlgen.cpp
Packit 1c1d7e
    htmlhelp.cpp
Packit 1c1d7e
    image.cpp
Packit 1c1d7e
    index.cpp
Packit 1c1d7e
    language.cpp
Packit 1c1d7e
    latexdocvisitor.cpp
Packit 1c1d7e
    latexgen.cpp
Packit 1c1d7e
    layout.cpp
Packit 1c1d7e
    lodepng.cpp
Packit 1c1d7e
    logos.cpp
Packit 1c1d7e
    mandocvisitor.cpp
Packit 1c1d7e
    mangen.cpp
Packit 1c1d7e
    sqlite3gen.cpp
Packit 1c1d7e
    markdown.cpp
Packit 1c1d7e
    marshal.cpp
Packit 1c1d7e
    memberdef.cpp
Packit 1c1d7e
    membergroup.cpp
Packit 1c1d7e
    memberlist.cpp
Packit 1c1d7e
    membername.cpp
Packit 1c1d7e
    message.cpp
Packit 1c1d7e
    msc.cpp
Packit 1c1d7e
    dia.cpp
Packit 1c1d7e
    namespacedef.cpp
Packit 1c1d7e
    objcache.cpp
Packit 1c1d7e
    outputgen.cpp
Packit 1c1d7e
    outputlist.cpp
Packit 1c1d7e
    pagedef.cpp
Packit 1c1d7e
    perlmodgen.cpp
Packit 1c1d7e
    qhp.cpp
Packit 1c1d7e
    qhpxmlwriter.cpp
Packit 1c1d7e
    reflist.cpp
Packit 1c1d7e
    rtfdocvisitor.cpp
Packit 1c1d7e
    rtfgen.cpp
Packit 1c1d7e
    rtfstyle.cpp
Packit 1c1d7e
    searchindex.cpp
Packit 1c1d7e
    store.cpp
Packit 1c1d7e
    tagreader.cpp
Packit 1c1d7e
    template.cpp
Packit 1c1d7e
    textdocvisitor.cpp
Packit 1c1d7e
    tooltip.cpp
Packit 1c1d7e
    util.cpp
Packit 1c1d7e
    vhdldocgen.cpp
Packit 1c1d7e
    vhdljjparser.cpp
Packit 1c1d7e
    xmldocvisitor.cpp
Packit 1c1d7e
    xmlgen.cpp
Packit 1c1d7e
    docbookvisitor.cpp
Packit 1c1d7e
    docbookgen.cpp
Packit 1c1d7e
)
Packit 1c1d7e
Packit 1c1d7e
add_executable(doxygen main.cpp)
Packit 1c1d7e
Packit 1c1d7e
if (use_libclang)
Packit 1c1d7e
    find_package(LLVM REQUIRED CONFIG)
Packit 1c1d7e
    find_package(Clang REQUIRED CONFIG)
Packit 1c1d7e
    if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
Packit 1c1d7e
        cmake_minimum_required(VERSION 3.1)
Packit 1c1d7e
        target_compile_features(_doxygen PRIVATE cxx_alignof)
Packit 1c1d7e
        target_compile_features(doxygen PRIVATE cxx_alignof)
Packit 1c1d7e
        target_compile_options(_doxygen PRIVATE -stdlib=libc++)
Packit 1c1d7e
        target_compile_options(doxygen PRIVATE -stdlib=libc++)
Packit 1c1d7e
    elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
Packit 1c1d7e
        target_compile_options(_doxygen PRIVATE -std=c++11)
Packit 1c1d7e
        target_compile_options(doxygen PRIVATE -std=c++11)
Packit 1c1d7e
    endif()
Packit 1c1d7e
    include_directories(${LLVM_INCLUDE_DIRS})
Packit 1c1d7e
    add_definitions(${LLVM_DEFINITIONS})
Packit 1c1d7e
    llvm_map_components_to_libnames(llvm_libs support core option)
Packit 1c1d7e
    target_compile_definitions(doxygen PRIVATE ${LLVM_DEFINITIONS})
Packit 1c1d7e
    set(CLANG_LIBS libclang clangTooling ${llvm_libs})
Packit 1c1d7e
endif()
Packit 1c1d7e
Packit 1c1d7e
target_link_libraries(doxygen
Packit 1c1d7e
    _doxygen
Packit 1c1d7e
    doxycfg
Packit 1c1d7e
    qtools
Packit 1c1d7e
    md5
Packit 1c1d7e
    vhdlparser
Packit 1c1d7e
    ${SQLITE3_LIBRARIES}
Packit 1c1d7e
    ${ICONV_LIBRARIES}
Packit 1c1d7e
    ${CMAKE_THREAD_LIBS_INIT}
Packit 1c1d7e
    ${EXTRA_LIBS}
Packit 1c1d7e
    ${CLANG_LIBS}
Packit 1c1d7e
)
Packit 1c1d7e
Packit 1c1d7e
install(TARGETS doxygen DESTINATION bin)