summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt80
-rw-r--r--addon/doxmlparser/CMakeLists.txt0
-rw-r--r--addon/doxyapp/CMakeLists.txt25
-rw-r--r--addon/doxysearch/CMakeLists.txt24
-rw-r--r--addon/doxywizard/CMakeLists.txt55
-rw-r--r--cmake/FindIconv.cmake115
-rw-r--r--cmake/FindSQLite3.cmake86
-rw-r--r--cmake/lang_cfg.cmake11
-rw-r--r--cmake/version.cmake6
-rw-r--r--doc/CMakeLists.txt37
-rw-r--r--libmd5/CMakeLists.txt3
-rw-r--r--qtools/CMakeLists.txt57
-rw-r--r--src/CMakeLists.txt270
-rw-r--r--testing/CMakeLists.txt60
-rw-r--r--testing/test_driver.cmake29
-rw-r--r--vhdlparser/CMakeLists.txt10
16 files changed, 868 insertions, 0 deletions
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
--- /dev/null
+++ b/addon/doxmlparser/CMakeLists.txt
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 <iconv.h>
+ 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 <iconv.h>
+ int main() {
+ char *p = 0;
+ iconv(iconv_t(-1), &p, 0, 0, 0);
+ }"
+ ICONV_ACCEPTS_NONCONST_INPUT)
+
+ check_cxx_source_compiles(
+ "#include <iconv.h>
+ 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 <mail@cynapses.org>
+#
+# 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
+)