From 2e099b1950eee2c3a0d5d8ae4b25575caeb938b1 Mon Sep 17 00:00:00 2001 From: Adrian Negreanu Date: Fri, 15 May 2015 17:30:11 +0300 Subject: use cmake runtest.pl replaced by testing/test_driver.cmake version.py replaced by cmake/version.cmake lang_cfg.py replaced by cmake/lang_cfg.cmake settings.py implemented in src/CMakeLists.txt increasebuffer.py replaced by defining the YY_BUF_SIZE and YY_READ_BUF_SIZE Signed-off-by: Adrian Negreanu --- CMakeLists.txt | 80 ++++++++++++ addon/doxmlparser/CMakeLists.txt | 0 addon/doxyapp/CMakeLists.txt | 25 ++++ addon/doxysearch/CMakeLists.txt | 24 ++++ addon/doxywizard/CMakeLists.txt | 55 ++++++++ cmake/FindIconv.cmake | 115 +++++++++++++++++ cmake/FindSQLite3.cmake | 86 +++++++++++++ cmake/lang_cfg.cmake | 11 ++ cmake/version.cmake | 6 + doc/CMakeLists.txt | 37 ++++++ libmd5/CMakeLists.txt | 3 + qtools/CMakeLists.txt | 57 +++++++++ src/CMakeLists.txt | 270 +++++++++++++++++++++++++++++++++++++++ testing/CMakeLists.txt | 60 +++++++++ testing/test_driver.cmake | 29 +++++ vhdlparser/CMakeLists.txt | 10 ++ 16 files changed, 868 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 addon/doxmlparser/CMakeLists.txt create mode 100644 addon/doxyapp/CMakeLists.txt create mode 100644 addon/doxysearch/CMakeLists.txt create mode 100644 addon/doxywizard/CMakeLists.txt create mode 100644 cmake/FindIconv.cmake create mode 100644 cmake/FindSQLite3.cmake create mode 100644 cmake/lang_cfg.cmake create mode 100644 cmake/version.cmake create mode 100644 doc/CMakeLists.txt create mode 100644 libmd5/CMakeLists.txt create mode 100644 qtools/CMakeLists.txt create mode 100644 src/CMakeLists.txt create mode 100644 testing/CMakeLists.txt create mode 100644 testing/test_driver.cmake create mode 100644 vhdlparser/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..b412c43 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,80 @@ +# vim:ts=4:sw=4:expandtab:autoindent: +# +# Copyright (C) 1997-2015 by Dimitri van Heesch. +# +# Permission to use, copy, modify, and distribute this software and its +# documentation under the terms of the GNU General Public License is hereby +# granted. No representations are made about the suitability of this software +# for any purpose. It is provided "as is" without express or implied warranty. +# See the GNU General Public License for more details. +# +# Documents produced by Doxygen are derivative works derived from the +# input used in their production; they are not affected by this license. + +cmake_minimum_required(VERSION 3.0) +project(doxygen) + +option(build_wizard "Build the GUI frontend for doxygen." OFF) +option(build_app "Example showing how to embed doxygen in an application." OFF) +option(build_xmlparser "Example showing how to parse doxygen's XML output." OFF) +option(build_search "Build external search tools (doxysearch and doxyindexer)" OFF) +option(use_sqlite3 "Add support for sqlite3 output [experimental]." OFF) +option(use_libclang "Add support for libclang parsing." OFF) + +list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") +include(version) + +set(sqlite3 "0" CACHE INTERNAL "used in settings.h") +set(clang "0" CACHE INTERNAL "used in settings.h") +if (use_sqlite3) + set(sqlite3 "1" CACHE INTERNAL "used in settings.h") +endif() +if (use_libclang) + set(clang "1" CACHE INTERNAL "used in settings.h") +endif() + + +if (${CMAKE_SYSTEM} MATCHES "Darwin") + set(CMAKE_CXX_FLAGS "-Wno-deprecated-register ${CMAKE_CXX_FLAGS}") + find_library(CORESERVICES_LIB CoreServices) + set(EXTRA_LIBS ${CORESERVICES_LIB}) +endif() + +if (WIN32) + set(ICONV_DIR "${CMAKE_SOURCE_DIR}/winbuild") + set(CMAKE_REQUIRED_DEFINITIONS "-DLIBICONV_STATIC") + add_definitions(-DLIBICONV_STATIC -D_CRT_SECURE_NO_WARNINGS) +endif() + +find_program(DOT NAMES dot) +find_package(PythonInterp REQUIRED) +find_package(FLEX REQUIRED) +find_package(BISON REQUIRED) +find_package(Threads) + +if (sqlite3) + find_package(SQLite3 REQUIRED) +endif() + +find_package(Iconv REQUIRED) +include_directories(${ICONV_INCLUDE_DIR}) + +set(DOXYDOCS ${CMAKE_SOURCE_DIR}/doc CACHE INTERNAL "Path to doxygen docs") +set(ENV{DOXYGEN_DOCDIR} ${DOXYDOCS}) +set(GENERATED_SRC "${CMAKE_BINARY_DIR}/generated_src" CACHE INTERNAL "Stores generated files") +set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib) +set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) + +add_subdirectory(libmd5) +add_subdirectory(qtools) +add_subdirectory(vhdlparser) +add_subdirectory(src) +add_subdirectory(doc) + +add_subdirectory(addon/doxmlparser) +add_subdirectory(addon/doxyapp) +add_subdirectory(addon/doxysearch) +add_subdirectory(addon/doxywizard) + +enable_testing() +add_subdirectory(testing) diff --git a/addon/doxmlparser/CMakeLists.txt b/addon/doxmlparser/CMakeLists.txt new file mode 100644 index 0000000..e69de29 diff --git a/addon/doxyapp/CMakeLists.txt b/addon/doxyapp/CMakeLists.txt new file mode 100644 index 0000000..e2e6841 --- /dev/null +++ b/addon/doxyapp/CMakeLists.txt @@ -0,0 +1,25 @@ +if (build_app) + +find_package(Iconv) + +include_directories( + ${CMAKE_SOURCE_DIR}/src + ${CMAKE_SOURCE_DIR}/qtools + ${ICONV_INCLUDE_DIR} +) + +add_executable(doxyapp +doxyapp.cpp +) +target_link_libraries(doxyapp +_doxygen +qtools +md5 +doxycfg +vhdlparser +${ICONV_LIBRARIES} +${CMAKE_THREAD_LIBS_INIT} +${SQLITE3_LIBRARIES} +) + +endif() diff --git a/addon/doxysearch/CMakeLists.txt b/addon/doxysearch/CMakeLists.txt new file mode 100644 index 0000000..188d80b --- /dev/null +++ b/addon/doxysearch/CMakeLists.txt @@ -0,0 +1,24 @@ +if (build_search) + +find_package(Xapian REQUIRED) + +include_directories( + ${CMAKE_SOURCE_DIR}/qtools + ${XAPIAN_INCLUDE_DIR} +) +add_executable(doxyindexer +doxyindexer.cpp +) +target_link_libraries(doxyindexer +${XAPIAN_LIBRARIES} +qtools +) + +add_executable(doxysearch.cgi +doxysearch.cpp +) +target_link_libraries(doxysearch.cgi +${XAPIAN_LIBRARIES} +) + +endif() diff --git a/addon/doxywizard/CMakeLists.txt b/addon/doxywizard/CMakeLists.txt new file mode 100644 index 0000000..a432081 --- /dev/null +++ b/addon/doxywizard/CMakeLists.txt @@ -0,0 +1,55 @@ +if (build_wizard) + +include_directories( + . + ${CMAKE_SOURCE_DIR}/src + ${CMAKE_SOURCE_DIR}/qtools + ${GENERATED_SRC} +) + +add_definitions(-DQT_ARCH_X86_64 -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII) +set(QT_USE_QTXML TRUE) +find_package(Qt4 REQUIRED) +include(${QT_USE_FILE}) + +add_custom_command( +COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -wiz ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC}/configdoc.cpp +OUTPUT ${GENERATED_SRC}/configdoc.cpp +) +set_source_files_properties(${GENERATED_SRC}/configdoc.cpp PROPERTIES GENERATED 1) + +FLEX_TARGET(config_doxyw config_doxyw.l ${GENERATED_SRC}/config_doxyw.cpp COMPILE_FLAGS "-Pconfig_doxywYY") + +QT4_WRAP_CPP(doxywizard_MOC +doxywizard.h +expert.h +helplabel.h +inputint.h +inputbool.h +inputstring.h +inputstrlist.h +wizard.h +) + +QT4_ADD_RESOURCES(doxywizard_RESOURCES_RCC doxywizard.qrc) + +add_executable(doxywizard +doxywizard.cpp +expert.cpp +wizard.cpp +inputbool.cpp +inputstring.cpp +inputint.cpp +inputstrlist.cpp +${GENERATED_SRC}/settings.h +${GENERATED_SRC}/version.cpp +${GENERATED_SRC}/config_doxyw.cpp +${GENERATED_SRC}/configdoc.cpp +${doxywizard_MOC} +${doxywizard_RESOURCES_RCC} +) +target_link_libraries(doxywizard +qtools md5 vhdlparser ${QT_LIBRARIES} +) + +endif() diff --git a/cmake/FindIconv.cmake b/cmake/FindIconv.cmake new file mode 100644 index 0000000..5ef8686 --- /dev/null +++ b/cmake/FindIconv.cmake @@ -0,0 +1,115 @@ +# vim:ts=4:sw=4:expandtab:autoindent: +# +# The MIT License +# +# Copyright (c) 2008, 2009 Flusspferd contributors (see "CONTRIBUTORS" or +# http://flusspferd.org/contributors.txt) +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# + +Include(CheckFunctionExists) +include(CheckCXXSourceCompiles) + +if(ICONV_INCLUDE_DIR) + set(ICONV_FIND_QUIETLY TRUE) +endif() + +find_path(ICONV_INCLUDE_DIR iconv.h + HINTS + ${CMAKE_PREFIX_PATH} + ${ICONV_DIR} + $ENV{ICONV_DIR} + PATH_SUFFIXES include +) + +if(NOT ICONV_INCLUDE_DIR STREQUAL "ICONV_INCLUDE_DIR-NOTFOUND") + set(CMAKE_REQUIRED_INCLUDES ${ICONV_INCLUDE_DIR}) + check_function_exists(iconv_open ICONV_IN_GLIBC) +endif() + +if(NOT ICONV_IN_GLIBC) + find_library(ICONV_LIBRARY + NAMES iconv + HINTS + ${CMAKE_PREFIX_PATH} + ${ICONV_DIR} + $ENV{ICONV_DIR} + PATH_SUFFIXES lib64 lib + ) + set(ICONV_TEST ${ICONV_LIBRARY}) +else() + set(ICONV_TEST "In glibc") +endif() + +set(CMAKE_REQUIRED_INCLUDES ${ICONV_INCLUDE_DIR}) +set(CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBRARY}) +check_cxx_source_compiles( + "#include + int main() { + iconv(iconv_t(-1), 0, 0, 0, 0); + }" + ICONV_COMPILES) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(ICONV DEFAULT_MSG ICONV_TEST ICONV_INCLUDE_DIR ICONV_COMPILES) + +if(ICONV_FOUND) + set(ICONV_LIBRARIES ${ICONV_LIBRARY}) +else(ICONV_FOUND) + set(ICONV_LIBRARIES) +endif(ICONV_FOUND) + +if(ICONV_FOUND) + set(CMAKE_REQUIRED_INCLUDES ${ICONV_INCLUDE_DIR}) + set(CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBRARIES}) + + if (NOT DEFINED ICONV_ACCEPTS_NONCONST_INPUT) + # Display a useful message first time we come through here + message(STATUS "One (and only one) of the ICONV_ACCEPTS_... tests must pass") + endif() + check_cxx_source_compiles( + "#include + int main() { + char *p = 0; + iconv(iconv_t(-1), &p, 0, 0, 0); + }" + ICONV_ACCEPTS_NONCONST_INPUT) + + check_cxx_source_compiles( + "#include + int main() { + char const *p = 0; + iconv(iconv_t(-1), &p, 0, 0, 0); + }" + ICONV_ACCEPTS_CONST_INPUT) + + if (ICONV_LIBRARY) + list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBRARY}) + list(REMOVE_DUPLICATES CMAKE_REQUIRED_LIBRARIES) + endif() +endif() + +if(NOT ICONV_ACCEPTS_CONST_INPUT AND NOT ICONV_ACCEPTS_NONCONST_INPUT) + MESSAGE(FATAL_ERROR "Unable to determine iconv() signature") +elseif(ICONV_ACCEPTS_CONST_INPUT AND ICONV_ACCEPTS_NONCONST_INPUT) + MESSAGE(FATAL_ERROR "Unable to determine iconv() signature - both test cases passed!") +endif() + +mark_as_advanced(ICONV_LIBRARY ICONV_INCLUDE_DIR) diff --git a/cmake/FindSQLite3.cmake b/cmake/FindSQLite3.cmake new file mode 100644 index 0000000..77b8eb4 --- /dev/null +++ b/cmake/FindSQLite3.cmake @@ -0,0 +1,86 @@ +# - Try to find Sqlite3 +# Once done this will define +# +# SQLITE3_FOUND - system has Sqlite3 +# SQLITE3_INCLUDE_DIRS - the Sqlite3 include directory +# SQLITE3_LIBRARIES - Link these to use Sqlite3 +# SQLITE3_DEFINITIONS - Compiler switches required for using Sqlite3 +# +# Copyright (c) 2008 Andreas Schneider +# +# Redistribution and use is allowed according to the terms of the New +# BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. +# + + +if (SQLITE3_LIBRARIES AND SQLITE3_INCLUDE_DIRS) + # in cache already + set(SQLITE3_FOUND TRUE) +else (SQLITE3_LIBRARIES AND SQLITE3_INCLUDE_DIRS) + # use pkg-config to get the directories and then use these values + # in the FIND_PATH() and FIND_LIBRARY() calls + if (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4) + include(UsePkgConfig) + pkgconfig(sqlite3 _SQLITE3_INCLUDEDIR _SQLITE3_LIBDIR _SQLITE3_LDFLAGS _SQLITE3_CFLAGS) + else (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4) + find_package(PkgConfig) + if (PKG_CONFIG_FOUND) + pkg_check_modules(_SQLITE3 sqlite3) + endif (PKG_CONFIG_FOUND) + endif (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4) + find_path(SQLITE3_INCLUDE_DIR + NAMES + sqlite3.h + PATHS + ${_SQLITE3_INCLUDEDIR} + /usr/include + /usr/local/include + /opt/local/include + /sw/include + ) + + find_library(SQLITE3_LIBRARY + NAMES + sqlite3 + PATHS + ${_SQLITE3_LIBDIR} + /usr/lib + /usr/local/lib + /opt/local/lib + /sw/lib + ) + + if (SQLITE3_LIBRARY) + set(SQLITE3_FOUND TRUE) + endif (SQLITE3_LIBRARY) + + set(SQLITE3_INCLUDE_DIRS + ${SQLITE3_INCLUDE_DIR} + ) + + if (SQLITE3_FOUND) + set(SQLITE3_LIBRARIES + ${SQLITE3_LIBRARIES} + ${SQLITE3_LIBRARY} + ) + endif (SQLITE3_FOUND) + + if (SQLITE3_INCLUDE_DIRS AND SQLITE3_LIBRARIES) + set(SQLITE3_FOUND TRUE) + endif (SQLITE3_INCLUDE_DIRS AND SQLITE3_LIBRARIES) + + if (SQLITE3_FOUND) + if (NOT Sqlite3_FIND_QUIETLY) + message(STATUS "Found Sqlite3: ${SQLITE3_LIBRARIES}") + endif (NOT Sqlite3_FIND_QUIETLY) + else (SQLITE3_FOUND) + if (Sqlite3_FIND_REQUIRED) + message(FATAL_ERROR "Could not find Sqlite3") + endif (Sqlite3_FIND_REQUIRED) + endif (SQLITE3_FOUND) + + # show the SQLITE3_INCLUDE_DIRS and SQLITE3_LIBRARIES variables only in the advanced view + mark_as_advanced(SQLITE3_INCLUDE_DIRS SQLITE3_LIBRARIES) + +endif (SQLITE3_LIBRARIES AND SQLITE3_INCLUDE_DIRS) diff --git a/cmake/lang_cfg.cmake b/cmake/lang_cfg.cmake new file mode 100644 index 0000000..b2b6708 --- /dev/null +++ b/cmake/lang_cfg.cmake @@ -0,0 +1,11 @@ +if(${CMAKE_ARGC} GREATER 1) + if ("${CMAKE_ARGV3}" STREQUAL "ENONLY") + message("#define ENGLISH_ONLY") + else() + math(EXPR UPTO ${CMAKE_ARGC}-1) + foreach(i RANGE 3 ${UPTO}) + message("#define ENGLISH_${CMAKE_ARGV${i}}") + endforeach() + endif() +endif() + diff --git a/cmake/version.cmake b/cmake/version.cmake new file mode 100644 index 0000000..b8af217 --- /dev/null +++ b/cmake/version.cmake @@ -0,0 +1,6 @@ +set(doxygen_version_major "1" CACHE STRING "Major") +set(doxygen_version_minor "8" CACHE STRING "Minor") +set(doxygen_version_revision "8" CACHE STRING "Revision") +#set(doxygen_version_mmn "-5" CACHE STRING "Mmn") +set(VERSION "${doxygen_version_major}.${doxygen_version_minor}.${doxygen_version_revision}${doxygen_version_mmn}") +set(ENV{VERSION} "${VERSION}") diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt new file mode 100644 index 0000000..4505391 --- /dev/null +++ b/doc/CMakeLists.txt @@ -0,0 +1,37 @@ +find_program(EPSTOPDF NAMES epstopdf ) +find_program(SED NAMES sed ) + +add_custom_target(doc + ALL + COMMENT "Generating documentation in ${DOXYDOCS}" + COMMAND ${EXECUTABLE_OUTPUT_PATH}/doxygen + COMMAND ${CMAKE_COMMAND} -E remove_directory ../latex/refman.tex + COMMAND ${CMAKE_COMMAND} -E copy doxygen_logo.gif ../html + COMMAND ${CMAKE_COMMAND} -E copy doxygen_logo_low.gif ../html + COMMAND ${CMAKE_COMMAND} -E copy Makefile.latex ../latex/Makefile + COMMAND ${SED} -e "s/\$$VERSION/$(VERSION)/g" doxygen_manual.tex > ../latex/doxygen_manual.tex + COMMAND ${SED} -e "s/\$$VERSION/$(VERSION)/g" doxygen.sty > ../latex/doxygen.sty + COMMAND ${EPSTOPDF} doxygen_logo.eps --outfile=../latex/doxygen_logo.pdf + DEPENDS doxygen language.doc config.doc + WORKING_DIRECTORY ${DOXYDOCS} + VERBATIM + ) + +# language.doc +add_custom_command( + COMMAND ${PYTHON_EXECUTABLE} ${DOXYDOCS}/translator.py + DEPENDS ${DOXYDOCS}/translator.py + DEPENDS maintainers.txt language.tpl translator.py + OUTPUT language.doc + WORKING_DIRECTORY ${DOXYDOCS} +) +set_source_files_properties(${DOXYDOCS}/language.doc PROPERTIES GENERATED 1) + +# config.doc +add_custom_command( + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -doc ${CMAKE_SOURCE_DIR}/src/config.xml > config.doc + DEPENDS ${CMAKE_SOURCE_DIR}/src/config.xml ${CMAKE_SOURCE_DIR}/src/configgen.py + OUTPUT config.doc + WORKING_DIRECTORY ${DOXYDOCS} +) +set_source_files_properties(${DOXYDOCS}/config.doc PROPERTIES GENERATED 1) diff --git a/libmd5/CMakeLists.txt b/libmd5/CMakeLists.txt new file mode 100644 index 0000000..4d98d01 --- /dev/null +++ b/libmd5/CMakeLists.txt @@ -0,0 +1,3 @@ +add_library(md5 +md5.c +) diff --git a/qtools/CMakeLists.txt b/qtools/CMakeLists.txt new file mode 100644 index 0000000..96c0f27 --- /dev/null +++ b/qtools/CMakeLists.txt @@ -0,0 +1,57 @@ +include_directories(.) + +list(APPEND qtools_src +qbuffer.cpp +qcollection.cpp +qcstring.cpp +qdatastream.cpp +qdatetime.cpp +qdir.cpp +qfile.cpp +qfileinfo.cpp +qgarray.cpp +qgcache.cpp +qgdict.cpp +qglist.cpp +qglobal.cpp +qgstring.cpp +qgvector.cpp +qiodevice.cpp +qregexp.cpp +qstring.cpp +qtextstream.cpp +qtextcodec.cpp +qstringlist.cpp +qxml.cpp +qmap.cpp +qthread.cpp +qmutex.cpp +qutfcodec.cpp +) + +if (UNIX) +list(APPEND qtools_src +qfile_unix.cpp +qdir_unix.cpp +qfileinfo_unix.cpp +qthread_unix.cpp +qmutex_unix.cpp +qwaitcondition_unix.cpp +) +endif() + +if (WIN32) +list(APPEND qtools_src +qfile_win32.cpp +qdir_win32.cpp +qfileinfo_win32.cpp +qthread_win32.cpp +qmutex_win32.cpp +qwaitcondition_win32.cpp + +) +endif() + +add_library(qtools +${qtools_src} +) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..85da5e1 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,270 @@ +# vim:ts=4:sw=4:expandtab:autoindent: + +include_directories( + ${CMAKE_SOURCE_DIR}/qtools + ${CMAKE_SOURCE_DIR}/libmd5 + ${CMAKE_SOURCE_DIR}/vhdlparser/ + ${CMAKE_SOURCE_DIR}/src + ${GENERATED_SRC} +) + + +file(MAKE_DIRECTORY ${GENERATED_SRC}) + +# instead of increasebuffer.py +add_definitions(-DYY_BUF_SIZE=262144 -DYY_READ_BUF_SIZE=262144) + +# generate settings.h +file(GENERATE OUTPUT ${GENERATED_SRC}/settings.h +CONTENT "#ifndef SETTINGS_H +#define SETTINGS_H +#define USE_SQLITE3 ${sqlite3} +#define USE_LIBCLANG ${clang} +#define IS_SUPPORTED(x) \\ + ((USE_SQLITE3 && strcmp(\"USE_SQLITE3\",(x))==0) || \\ + (USE_LIBCLANG && strcmp(\"USE_LIBCLANG\",(x))==0) || \\ + 0) +#endif" ) +set_source_files_properties(${GENERATED_SRC}/settings.h PROPERTIES GENERATED 1) + + +# generate version.cpp +file(GENERATE OUTPUT ${GENERATED_SRC}/version.cpp + CONTENT "char versionString[]=\"${VERSION}\";" +) +set_source_files_properties(${GENERATED_SRC}/version.cpp PROPERTIES GENERATED 1) + + +# configoptions.cpp +add_custom_command( + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/configgen.py -cpp ${CMAKE_SOURCE_DIR}/src/config.xml > ${GENERATED_SRC}/configoptions.cpp + DEPENDS ${CMAKE_SOURCE_DIR}/src/config.xml ${CMAKE_SOURCE_DIR}/src/configgen.py + OUTPUT ${GENERATED_SRC}/configoptions.cpp +) +set_source_files_properties(${GENERATED_SRC}/configoptions.cpp PROPERTIES GENERATED 1) + + +# ce_parse.h +add_custom_command( + COMMAND ${BISON_EXECUTABLE} -l -d -p ce_parsexpYY ${CMAKE_SOURCE_DIR}/src/constexp.y -o ce_parse.c + DEPENDS ${CMAKE_SOURCE_DIR}/src/constexp.y + OUTPUT ${GENERATED_SRC}/ce_parse.h + WORKING_DIRECTORY ${GENERATED_SRC} +) +set_source_files_properties(${GENERATED_SRC}/ce_parse.h PROPERTIES GENERATED 1) + + +# lang_cfg.h +add_custom_command( + COMMENT "Generating ${GENERATED_SRC}/lang_cfg.h" + COMMAND ${CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/cmake/lang_cfg.cmake ENONLY 2> ${GENERATED_SRC}/lang_cfg.h + OUTPUT ${GENERATED_SRC}/lang_cfg.h +) +set_source_files_properties(${GENERATED_SRC}/lang_cfg.h PROPERTIES GENERATED 1) + + +# resources.cpp +add_custom_command( + COMMENT "Generating ${GENERATED_SRC}/resources.cpp" + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/res2cc_cmd.py ${CMAKE_SOURCE_DIR}/templates ${GENERATED_SRC}/resources.cpp + OUTPUT ${GENERATED_SRC}/resources.cpp +) +set_source_files_properties(${GENERATED_SRC}/resources.cpp PROPERTIES GENERATED 1) + + +# +function( to_c_cmd in_file out_file) +add_custom_command( + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/to_c_cmd.py < ${CMAKE_SOURCE_DIR}/templates/html/${in_file} > ${GENERATED_SRC}/${out_file} + DEPENDS ${CMAKE_SOURCE_DIR}/templates/html/${in_file} + OUTPUT ${GENERATED_SRC}/${out_file} +) +set_source_files_properties(${GENERATED_SRC}/${out_file} PROPERTIES GENERATED 1) +endfunction() + + +# Targets for flex/bison generated files +FLEX_TARGET(scanner scanner.l ${GENERATED_SRC}/scanner.cpp COMPILE_FLAGS "-PscannerYY") +FLEX_TARGET(code code.l ${GENERATED_SRC}/code.cpp COMPILE_FLAGS "-PcodeYY") +FLEX_TARGET(pyscanner pyscanner.l ${GENERATED_SRC}/pyscanner.cpp COMPILE_FLAGS "-PpyscannerYY") +FLEX_TARGET(pycode pycode.l ${GENERATED_SRC}/pycode.cpp COMPILE_FLAGS "-PpycodeYY") +FLEX_TARGET(fortranscanner fortranscanner.l ${GENERATED_SRC}/fortranscanner.cpp COMPILE_FLAGS "-i -PfortranscannerYY") +FLEX_TARGET(fortrancode fortrancode.l ${GENERATED_SRC}/fortrancode.cpp COMPILE_FLAGS "-i -PfortrancodeYY") +FLEX_TARGET(vhdlcode vhdlcode.l ${GENERATED_SRC}/vhdlcode.cpp COMPILE_FLAGS "-i -PvhdlcodeYY") +FLEX_TARGET(tclscanner tclscanner.l ${GENERATED_SRC}/tclscanner.cpp COMPILE_FLAGS "-i -PtclscannerYY") +FLEX_TARGET(pre pre.l ${GENERATED_SRC}/pre.cpp COMPILE_FLAGS "-PpreYY") +FLEX_TARGET(declinfo declinfo.l ${GENERATED_SRC}/declinfo.cpp COMPILE_FLAGS "-PdeclinfoYY") +FLEX_TARGET(defargs defargs.l ${GENERATED_SRC}/defargs.cpp COMPILE_FLAGS "-PdefargsYY") +FLEX_TARGET(doctokenizer doctokenizer.l ${GENERATED_SRC}/doctokenizer.cpp COMPILE_FLAGS "-PdoctokenizerYY") +FLEX_TARGET(commentcnv commentcnv.l ${GENERATED_SRC}/commentcnv.cpp COMPILE_FLAGS "-PcommentcnvYY") +FLEX_TARGET(commentscan commentscan.l ${GENERATED_SRC}/commentscan.cpp COMPILE_FLAGS "-PcommentscanYY") +FLEX_TARGET(constexp constexp.l ${GENERATED_SRC}/constexp.cpp COMPILE_FLAGS "-PconstexpYY") +FLEX_TARGET(xmlcode xmlcode.l ${GENERATED_SRC}/xmlcode.cpp COMPILE_FLAGS "-PxmlcodeYY") + +FLEX_TARGET(config config.l ${GENERATED_SRC}/config.cpp COMPILE_FLAGS "-PconfigYY") + +BISON_TARGET(vhdlparser vhdlparser.y ${GENERATED_SRC}/vhdlparser.cpp COMPILE_FLAGS "-l -p vhdlscannerYY") +BISON_TARGET(constexp constexp.y ${GENERATED_SRC}/ce_parse.cpp COMPILE_FLAGS "-l -p constexpYY") + + +to_c_cmd(navtree.js navtree.js.h) +to_c_cmd(navtree.css navtree.css.h) +to_c_cmd(resize.js resize.js.h) +to_c_cmd(header.html header.html.h) +to_c_cmd(footer.html footer.html.h) +to_c_cmd(doxygen.css doxygen.css.h) +to_c_cmd(layout_default.xml layout_default.xml.h) +to_c_cmd(search_functions.php search_functions.php.h) +to_c_cmd(search_opensearch.php search_opensearch.php.h) +to_c_cmd(search.css search.css.h) +to_c_cmd(jquery.js jquery.js.h) +to_c_cmd(svgpan.js svgpan.js.h) +to_c_cmd(dynsections.js dynsections.js.h) +to_c_cmd(extsearch.js extsearch.js.h) +to_c_cmd(search.js search.js.h) + +add_library(doxycfg + ${GENERATED_SRC}/lang_cfg.h + ${GENERATED_SRC}/config.cpp + ${GENERATED_SRC}/configoptions.cpp + portable.cpp + portable_c.c +) + +add_library(_doxygen + # custom generated files + ${GENERATED_SRC}/lang_cfg.h + ${GENERATED_SRC}/settings.h + ${GENERATED_SRC}/version.cpp + ${GENERATED_SRC}/ce_parse.h + ${GENERATED_SRC}/resources.cpp + # generated by flex/bison + ${GENERATED_SRC}/scanner.cpp + ${GENERATED_SRC}/code.cpp + ${GENERATED_SRC}/pyscanner.cpp + ${GENERATED_SRC}/pycode.cpp + ${GENERATED_SRC}/fortranscanner.cpp + ${GENERATED_SRC}/fortrancode.cpp + ${GENERATED_SRC}/vhdlcode.cpp + ${GENERATED_SRC}/tclscanner.cpp + ${GENERATED_SRC}/pre.cpp + ${GENERATED_SRC}/declinfo.cpp + ${GENERATED_SRC}/defargs.cpp + ${GENERATED_SRC}/doctokenizer.cpp + ${GENERATED_SRC}/commentcnv.cpp + ${GENERATED_SRC}/commentscan.cpp + ${GENERATED_SRC}/constexp.cpp + ${GENERATED_SRC}/xmlcode.cpp + # + ${GENERATED_SRC}/ce_parse.cpp + # generated by to_c_cmd + ${GENERATED_SRC}/navtree.js.h + ${GENERATED_SRC}/navtree.css.h + ${GENERATED_SRC}/resize.js.h + ${GENERATED_SRC}/header.html.h + ${GENERATED_SRC}/footer.html.h + ${GENERATED_SRC}/doxygen.css.h + ${GENERATED_SRC}/layout_default.xml.h + ${GENERATED_SRC}/search_functions.php.h + ${GENERATED_SRC}/search_opensearch.php.h + ${GENERATED_SRC}/search.css.h + ${GENERATED_SRC}/jquery.js.h + ${GENERATED_SRC}/svgpan.js.h + ${GENERATED_SRC}/dynsections.js.h + ${GENERATED_SRC}/extsearch.js.h + ${GENERATED_SRC}/search.js.h + # + plantuml.cpp + arguments.cpp + cite.cpp + clangparser.cpp + fileparser.cpp + classdef.cpp + classlist.cpp + cmdmapper.cpp + condparser.cpp + context.cpp + cppvalue.cpp + debug.cpp + defgen.cpp + define.cpp + definition.cpp + diagram.cpp + dirdef.cpp + docparser.cpp + docsets.cpp + dot.cpp + doxygen.cpp + eclipsehelp.cpp + entry.cpp + filedef.cpp + filename.cpp + formula.cpp + ftextstream.cpp + ftvhelp.cpp + groupdef.cpp + htags.cpp + htmldocvisitor.cpp + htmlentity.cpp + resourcemgr.cpp + htmlgen.cpp + htmlhelp.cpp + image.cpp + index.cpp + language.cpp + latexdocvisitor.cpp + latexgen.cpp + layout.cpp + lodepng.cpp + logos.cpp + mandocvisitor.cpp + mangen.cpp + sqlite3gen.cpp + markdown.cpp + marshal.cpp + memberdef.cpp + membergroup.cpp + memberlist.cpp + membername.cpp + message.cpp + msc.cpp + dia.cpp + namespacedef.cpp + objcache.cpp + outputgen.cpp + outputlist.cpp + pagedef.cpp + perlmodgen.cpp + qhp.cpp + qhpxmlwriter.cpp + reflist.cpp + rtfdocvisitor.cpp + rtfgen.cpp + rtfstyle.cpp + searchindex.cpp + store.cpp + tagreader.cpp + template.cpp + textdocvisitor.cpp + tooltip.cpp + util.cpp + vhdldocgen.cpp + vhdljjparser.cpp + xmldocvisitor.cpp + xmlgen.cpp + docbookvisitor.cpp + docbookgen.cpp +) + +add_executable(doxygen main.cpp) +target_link_libraries(doxygen + _doxygen + doxycfg + qtools + md5 + vhdlparser + ${SQLITE3_LIBRARIES} + ${ICONV_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} + ${EXTRA_LIBS} +) diff --git a/testing/CMakeLists.txt b/testing/CMakeLists.txt new file mode 100644 index 0000000..cb9479d --- /dev/null +++ b/testing/CMakeLists.txt @@ -0,0 +1,60 @@ +find_program(XMLLINT NAMES xmllint) +find_program(DIFF NAMES diff) + +file(GLOB test_files "[0-9][0-9][0-9]_*.*") +foreach(test_file ${test_files}) + if ( ${test_file} MATCHES "([0-9][0-9][0-9])_") + set(test_id ${CMAKE_MATCH_1}) + set(test_out ${CMAKE_BINARY_DIR}/testing/${test_id}) + get_filename_component(test_dirname ${test_file} DIRECTORY) + get_filename_component(test_basename ${test_file} NAME) + set(doxyfile ${test_out}/Doxyfile) + + # setup the test directory + execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory ${test_out}) + execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${test_out}) + execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/testing/Doxyfile ${test_out}) + execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${test_file} ${test_out}) + file(APPEND ${doxyfile} "STRIP_FROM_PATH = ${test_out}\n") + file(APPEND ${doxyfile} "INPUT = ${test_basename}\n") + + # extract config lines from test files + file(STRINGS "${test_basename}" test_file_config REGEX "// [a-z]+: .*") + + # clear the lists + set(test_objective) + set(test_config) + set(test_check) + + # turn the config lines into lists + foreach(line IN LISTS test_file_config) + if ("${line}" MATCHES "//[ ]*([a-zA-Z]+)[ ]*:[ ]*(.*)") + list(APPEND test_${CMAKE_MATCH_1} ${CMAKE_MATCH_2}) + endif() + endforeach() + foreach(line IN LISTS test_config) + # append the config line to Doxyfile + file(APPEND ${doxyfile} "${line}\n") + # in case this is an INPUT line, copy the files to test directory + if ("${line}" MATCHES "INPUT[ ]*=(.*)") + separate_arguments(items UNIX_COMMAND "${CMAKE_MATCH_1}") + foreach(i IN LISTS items) + execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${test_dirname}/${i} ${test_out}) + endforeach() + endif() + endforeach() + # replace spaces with semicolons so it can be passed as argument + separate_arguments(test_check UNIX_COMMAND "${test_check}") + add_test(NAME test_${test_id} + WORKING_DIRECTORY ${test_out} + COMMAND cmake + -D check=${test_check} + -D dirname=${test_dirname}/${test_id} + -D top=${CMAKE_SOURCE_DIR} + -D doxygen=${EXECUTABLE_OUTPUT_PATH}/doxygen + -D diff=${DIFF} + -D xmllint=${XMLLINT} + -P ${CMAKE_SOURCE_DIR}/testing/test_driver.cmake + ) + endif() +endforeach() diff --git a/testing/test_driver.cmake b/testing/test_driver.cmake new file mode 100644 index 0000000..ca591c2 --- /dev/null +++ b/testing/test_driver.cmake @@ -0,0 +1,29 @@ +include(${top}/cmake/version.cmake) + +macro(check_rv) + if (${ARGV0}) + message(FATAL_ERROR "test failed") + endif() +endmacro() + +execute_process( COMMAND ${doxygen} Doxyfile RESULT_VARIABLE rv) +check_rv(${rv}) + +foreach (_check IN LISTS check) + set(xml_file "out_${_check}") + + set(xml_cmd ${xmllint} --format --noblanks --nowarning xml/${_check} --output ${xml_file}) + message(STATUS ${xml_cmd}) + execute_process(COMMAND ${xml_cmd} RESULT_VARIABLE rv) + check_rv(${rv}) + + message(STATUS "CHOMP VOLATILE") + file(READ ${xml_file} OUT_XML) + string(REGEX REPLACE "version=\"${VERSION}\"" "version=\"\"" OUT_WO_VERSION_XML "${OUT_XML}") + file(WRITE ${xml_file} ${OUT_WO_VERSION_XML}) + + set(diff_cmd ${diff} -u ${xml_file} ${dirname}/${_check}) + message(STATUS ${diff_cmd}) + execute_process(COMMAND ${diff_cmd} RESULT_VARIABLE rv) + check_rv(${rv}) +endforeach() diff --git a/vhdlparser/CMakeLists.txt b/vhdlparser/CMakeLists.txt new file mode 100644 index 0000000..e1e4ab1 --- /dev/null +++ b/vhdlparser/CMakeLists.txt @@ -0,0 +1,10 @@ +include_directories(${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/qtools) +add_library(vhdlparser +CharStream.cc +ParseException.cc +Token.cc +TokenMgrError.cc +VhdlParser.cc +VhdlParserTokenManager.cc +VhdlParserIF.cpp +) -- cgit v0.12