Documentation: Cleanup

Doxygen docu is now build in ${PROJECT_BINARY_DIR}/doc.
(and other small changes.)

Change-Id: I3fef910307e104f120c4f770526c800cfd01a41f
This commit is contained in:
Martin Hoffmann
2013-03-22 16:18:58 +01:00
parent f8c974440f
commit 3c349e06f3
9 changed files with 56 additions and 38 deletions

View File

@ -25,6 +25,7 @@ SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
#### Compiler configuration, see cmake/compilerconfig.cmake #### Compiler configuration, see cmake/compilerconfig.cmake
include(compilerconfig) include(compilerconfig)
include(doxygen)
#### Backend selection #### #### Backend selection ####
OPTION( BUILD_BOCHS "Build Bochs Variant?" ON) OPTION( BUILD_BOCHS "Build Bochs Variant?" ON)

View File

@ -33,14 +33,14 @@ PROJECT_NAME = @PROJECT_NAME@
# if some version control system is used. # if some version control system is used.
## The current version is also replaced on the fly by cmake ## The current version is also replaced on the fly by cmake
PROJECT_NUMBER = @FAILSTAR_VERSION@ PROJECT_NUMBER = @PROJECT_VERSION@
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put. # base path where the generated documentation will be put.
# If a relative path is entered, it will be relative to the location # If a relative path is entered, it will be relative to the location
# where doxygen was started. If left blank the current directory will be used. # where doxygen was started. If left blank the current directory will be used.
OUTPUT_DIRECTORY = doc OUTPUT_DIRECTORY = @FAIL_DOC_OUTPUT@
# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
# 4096 sub-directories (in 2 levels) under the output directory of each output # 4096 sub-directories (in 2 levels) under the output directory of each output
@ -218,7 +218,7 @@ OPTIMIZE_OUTPUT_VHDL = NO
# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), # .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran),
# use: inc=Fortran f=C. Note that for custom extensions you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. # use: inc=Fortran f=C. Note that for custom extensions you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
EXTENSION_MAPPING = EXTENSION_MAPPING = ah=C++
# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
# to include (a tag file for) the STL sources as input, then you should # to include (a tag file for) the STL sources as input, then you should
@ -227,7 +227,7 @@ EXTENSION_MAPPING =
# func(std::string) {}). This also make the inheritance and collaboration # func(std::string) {}). This also make the inheritance and collaboration
# diagrams that involve STL classes more complete and accurate. # diagrams that involve STL classes more complete and accurate.
BUILTIN_STL_SUPPORT = NO BUILTIN_STL_SUPPORT = YES
# If you use Microsoft's C++/CLI language, you should set this option to YES to # If you use Microsoft's C++/CLI language, you should set this option to YES to
# enable parsing support. # enable parsing support.
@ -605,7 +605,7 @@ RECURSIVE = YES
# excluded from the INPUT source files. This way you can easily exclude a # excluded from the INPUT source files. This way you can easily exclude a
# subdirectory from a directory tree whose root is specified with the INPUT tag. # subdirectory from a directory tree whose root is specified with the INPUT tag.
EXCLUDE = EXCLUDE = @FAIL_DOC_EXCLUDE@
# The EXCLUDE_SYMLINKS tag can be used select whether or not files or # The EXCLUDE_SYMLINKS tag can be used select whether or not files or
# directories that are symbolic links (a Unix filesystem feature) are excluded # directories that are symbolic links (a Unix filesystem feature) are excluded
@ -808,7 +808,7 @@ HTML_STYLESHEET =
# page will contain the date and time when the page was generated. Setting # page will contain the date and time when the page was generated. Setting
# this to NO can help when comparing the output of multiple runs. # this to NO can help when comparing the output of multiple runs.
HTML_TIMESTAMP = NO HTML_TIMESTAMP = YES
# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
# files or namespaces will be aligned in HTML using tables. If set to # files or namespaces will be aligned in HTML using tables. If set to
@ -951,7 +951,7 @@ QHG_LOCATION =
# the directory within the plugins directory should be the same as # the directory within the plugins directory should be the same as
# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before the help appears. # the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before the help appears.
GENERATE_ECLIPSEHELP = NO GENERATE_ECLIPSEHELP = YES
# A unique identifier for the eclipse help plugin. When installing the plugin # A unique identifier for the eclipse help plugin. When installing the plugin
# the directory name containing the HTML and XML files should also have # the directory name containing the HTML and XML files should also have
@ -1019,7 +1019,7 @@ SERVER_BASED_SEARCH = NO
# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
# generate Latex output. # generate Latex output.
GENERATE_LATEX = YES GENERATE_LATEX = NO
# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be # If a relative path is entered the value of OUTPUT_DIRECTORY will be

25
cmake/doxygen.cmake Normal file
View File

@ -0,0 +1,25 @@
### Setup doxygen documentation
find_package(Doxygen)
if(DOXYGEN_FOUND)
# Using a .in file means we can use CMake to insert project settings
# into the doxyfile. For example, CMake will replace @PROJECT_NAME@ in
# a configured file with the CMake PROJECT_NAME variable's value.
set(FAIL_DOC_OUTPUT "${PROJECT_BINARY_DIR}/doc")
set(FAIL_DOC_EXCLUDE "${PROJECT_SOURCE_DIR}/simulators ${PROJECT_SOURCE_DIR}/build ${PROJECT_SOURCE_DIR}/src/core/util/pstream.h")
file(MAKE_DIRECTORY ${FAIL_DOC_OUTPUT})
configure_file(${PROJECT_SOURCE_DIR}/cmake/Doxyfile.in
${PROJECT_BINARY_DIR}/Doxyfile @ONLY}
)
## call make doc to generate documentation
add_custom_target(doc
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
DEPENDS ${PROJECT_BINARY_DIR}/Doxyfile
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
COMMENT "[${PROJECT_NAME}] Generating Fail* documentation with Doxygen" VERBATIM
)
endif(DOXYGEN_FOUND)

View File

@ -2,14 +2,14 @@
if(EXISTS $ENV{T32SYS}) if(EXISTS $ENV{T32SYS})
SET(T32_SYS $ENV{T32SYS}) SET(T32_SYS $ENV{T32SYS})
message(STATUS "[FAIL*] T32 base directory: T32SYS=${T32_SYS}") message(STATUS "[Fail*] T32 base directory: T32SYS=${T32_SYS}")
else() else()
message(FATAL_ERROR "Please set env variable T32SYS to a valid T32 installation base directory.") message(FATAL_ERROR "Please set env variable T32SYS to a valid T32 installation base directory.")
endif() endif()
if(EXISTS $ENV{FAIL_ELF_PATH}) if(EXISTS $ENV{FAIL_ELF_PATH})
SET(T32_ELF_PATH $ENV{FAIL_ELF_PATH}) SET(T32_ELF_PATH $ENV{FAIL_ELF_PATH})
message(STATUS "[FAIL*] T32 ELF under test: ${T32_ELF_PATH}") message(STATUS "[Fail*] T32 ELF under test: ${T32_ELF_PATH}")
else() else()
message(FATAL_ERROR "Please set the FAIL_ELF_PATH enviroment variable to the binary under test.") message(FATAL_ERROR "Please set the FAIL_ELF_PATH enviroment variable to the binary under test.")
endif() endif()
@ -32,9 +32,9 @@ set(T32_EXE "${T32_SYS}/bin/pc_linux64/" CACHE INTERNAL "") # TODO: set pc_linux
add_subdirectory(${T32_ARCHITECTURE}) add_subdirectory(${T32_ARCHITECTURE})
message(STATUS "[FAIL*] T32 Architecture: ${T32_ARCHITECTURE}") message(STATUS "[Fail*] T32 Architecture: ${T32_ARCHITECTURE}")
message(STATUS "[FAIL*] T32 CPU name: ${T32_CPUNAME}") message(STATUS "[Fail*] T32 CPU name: ${T32_CPUNAME}")
message(STATUS "[FAIL*] T32 Executable: ${T32_EXE}") message(STATUS "[Fail*] T32 Executable: ${T32_EXE}")
add_custom_target(runt32 add_custom_target(runt32
COMMAND T32CONFIG=${PROJECT_BINARY_DIR}/cmm/config.t32 ${T32_EXE} & COMMAND T32CONFIG=${PROJECT_BINARY_DIR}/cmm/config.t32 ${T32_EXE} &

View File

@ -3,26 +3,6 @@ find_package(Boost 1.42 COMPONENTS thread REQUIRED)
include_directories(${Boost_INCLUDE_DIRS}) include_directories(${Boost_INCLUDE_DIRS})
link_directories(${Boost_LIBRARY_DIRS}) link_directories(${Boost_LIBRARY_DIRS})
### Setup doxygen documentation
# TODO: put into helpers.cmake (?)
find_package(Doxygen)
if(DOXYGEN_FOUND)
# Using a .in file means we can use CMake to insert project settings
# into the doxyfile. For example, CMake will replace @PROJECT_NAME@ in
# a configured file with the CMake PROJECT_NAME variable's value.
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in
${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY}
)
## call make doc to generate documentation
add_custom_target(doc
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "[${PROJECT_NAME}] Generating Fail* documentation with Doxygen" VERBATIM
)
endif(DOXYGEN_FOUND)
## Add CMakeLists from subdirectories ## ## Add CMakeLists from subdirectories ##
# The autogenerated header files # The autogenerated header files
add_subdirectory(config) add_subdirectory(config)

View File

@ -43,5 +43,16 @@ if(${LIB_IBERTY} STREQUAL LIB_IBERTY-NOTFOUND)
message(FATAL_ERROR "libiberty not found. Try installing binutils-dev: [ sudo aptitude install binutils-dev ]") message(FATAL_ERROR "libiberty not found. Try installing binutils-dev: [ sudo aptitude install binutils-dev ]")
endif() endif()
# objdump required by Diassembler.cc
set(THE_OBJDUMP "${ARCH_TOOL_PREFIX}objdump")
find_program(FAIL_OBJDUMP "${THE_OBJDUMP}" DOC "binutils object dump tool")
if(${FAIL_OBJDUMP} STREQUAL FAIL_OBJDUMP-NOTFOUND)
message(FATAL_ERROR "Cannot find objdump exeuctable (tried: ${THE_OBJDUMP}")
else()
message(STATUS "[Fail*] objdump binary -> ${FAIL_OBJDUMP}")
endif()
mark_as_advanced(FAIL_OBJDUMP)
add_library(fail-util ${SRCS}) add_library(fail-util ${SRCS})
target_link_libraries(fail-util ${PROTOBUF_LIBRARY} ${Boost_LIBRARIES} ${LIB_IBERTY} ) target_link_libraries(fail-util ${PROTOBUF_LIBRARY} ${Boost_LIBRARIES} ${LIB_IBERTY} )

View File

@ -11,7 +11,7 @@ namespace fail {
/** /**
* Get the demangled symbol name of a mangled string. * Get the demangled symbol name of a mangled string.
* @param name The mangled symbol * @param name The mangled symbol
* @return The according demangled name if found, else Demangler:::DEMANGLE_FAILED * @return The according demangled name if found, else Demangler::DEMANGLE_FAILED
*/ */
static std::string demangle(const std::string & name); static std::string demangle(const std::string & name);

View File

@ -9,6 +9,7 @@
#include <boost/regex.hpp> #include <boost/regex.hpp>
#include <boost/algorithm/string.hpp> #include <boost/algorithm/string.hpp>
#endif #endif
#include <stdlib.h>
namespace fail { namespace fail {
@ -21,7 +22,7 @@ namespace fail {
char * elfpath = getenv("FAIL_ELF_PATH"); char * elfpath = getenv("FAIL_ELF_PATH");
if(elfpath == NULL){ if(elfpath == NULL){
m_log << "FAIL_ELF_PATH not set :(" << std::endl; m_log << "FAIL_ELF_PATH not set :(" << std::endl;
return 0; exit(EXIT_FAILURE);
}else{ }else{
return init(elfpath); return init(elfpath);
} }
@ -44,7 +45,7 @@ namespace fail {
if(ex != 0){ if(ex != 0){
m_code.clear(); m_code.clear();
m_log << "Could not disassemble!" << std::endl; m_log << "Could not disassemble!" << std::endl;
return 0; exit(EXIT_FAILURE);
} }
} }
m_log << "disassembled " << m_code.size() << " lines." << std::endl; m_log << "disassembled " << m_code.size() << " lines." << std::endl;

View File

@ -9,8 +9,8 @@
namespace fail { namespace fail {
//! Inform about failed disassembly
struct DISASSEMBLER { struct DISASSEMBLER {
//! Inform about failed disassembly
static const std::string FAILED; static const std::string FAILED;
}; };
@ -40,7 +40,7 @@ namespace fail {
/** /**
* Get disassembler instruction * Get disassembler instruction
* @param address The instruction address * @param address The instruction address
* @return The according disassembled instruction if found, else DISASSEMBLER:FAILED * @return The according disassembled instruction if found, else DISASSEMBLER::FAILED
*/ */
const Instruction & disassemble(address_t address) const; const Instruction & disassemble(address_t address) const;