diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 528 |
1 files changed, 528 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000000..5694a7e144 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,528 @@ +# Copyright (c) 2014, Ford Motor Company +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following +# disclaimer in the documentation and/or other materials provided with the +# distribution. +# +# Neither the name of the Ford Motor Company nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +cmake_minimum_required(VERSION 2.8.0) + +set (PROJECT smartDeviceLinkCore) + +#Jenkins integration section +#dont modify this section if you dont know details about integration with Jenkins!!! +set (HMI "web" CACHE STRING "HMI type") +option(HMI2 "Use Qt HMI" OFF) +option(EXTENDED_MEDIA_MODE "Turn on and off extended Madia Manager features relates to PulseAudio A2DP and GStreamer" OFF) +option(BUILD_SHARED_LIBS "Build all libraries as shared (if ON) or static (if OFF)" OFF) +option(BUILD_BT_SUPPORT "Bluetooth support" OFF) +option(BUILD_USB_SUPPORT "libusb support" OFF) +option(BUILD_AOA_SUPPORT "libaoa support" OFF) +option(BUILD_MME_SUPPORT "Apple devices support" OFF) +option(BUILD_AVAHI_SUPPORT "libavahi support" OFF) +option(BUILD_RWLOCK_SUPPORT "rwlocks support" OFF) +option(BUILD_BACKTRACE_SUPPORT "backtrace support" ON) +option(BUILD_TESTS "Possibility to build and run tests" OFF) +option(TIME_TESTER "Enable profiling time test util" ON) +option(ENABLE_LOG "Logging feature" ON) +option(ENABLE_GCOV "gcov code coverage feature" OFF) +option(ENABLE_SECURITY "Security Ford protocol protection" ON) +option(EXTENDED_POLICY_FLAG "Build with specific features and extended functionality" OFF) + +set(OS_TYPE_OPTION "$ENV{OS_TYPE}") +set(DEBUG_OPTION "$ENV{DEBUG}") +set(HMI_TYPE_OPTION "$ENV{HMI_TYPE}") +set(TARGET_OPTION "$ENV{TARGET}") +set(MEDIA_MODE_OPTION "$ENV{MEDIA_MODE}") +set(HMI_ADAPTER_OPTION "$ENV{HMI_ADAPTER}") +set(ENABLE_LOG_OPTION "$ENV{ENABLE_LOG}") +set(ARCH_TYPE_OPTION "$ENV{ARCH_TYPE}") + +add_custom_target(pasa-tarball + COMMAND ${CMAKE_SOURCE_DIR}/tools/Utils/export-customer-specific.sh ${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} pasa + COMMAND tar -cz -C /tmp/PASA -f ${CMAKE_BINARY_DIR}/pasa.tar.gz . + DEPENDS HMI_API MOBILE_API v4_protocol_v1_2_no_extra +) + +add_custom_target(ford-tarball + COMMAND ${CMAKE_SOURCE_DIR}/tools/Utils/export-customer-specific.sh ${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} FORD + COMMAND tar -czv -C /tmp/FORD -f ${CMAKE_BINARY_DIR}/ford.tar.gz . + DEPENDS HMI_API MOBILE_API v4_protocol_v1_2_no_extra +) + +add_custom_target(genivi-tarball + COMMAND ${CMAKE_SOURCE_DIR}/tools/Utils/export-customer-specific.sh ${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} genivi + COMMAND tar -czv -C /tmp/GENIVI -f ${CMAKE_BINARY_DIR}/genivi.tar.gz . + DEPENDS HMI_API MOBILE_API v4_protocol_v1_2_no_extra +) + +if (ARCH_TYPE_OPTION) + if (NOT (${ARCH_TYPE_OPTION} STREQUAL "x86") AND NOT (${ARCH_TYPE_OPTION} STREQUAL "armv7")) + message(AUTHOR_WARNING "HW architecture is not defined, using x86. Allowed values are x86/armv7 (case sensitive)") + set(ARCH_TYPE_OPTION "x86") + endif () +else () + set(ARCH_TYPE_OPTION "x86") +endif() + +set(objcopy "objcopy") +if (OS_TYPE_OPTION) + if (${OS_TYPE_OPTION} STREQUAL "QNX") + message(STATUS "Jenkins integration: set build process for QNX") + #do not use include after project() command. + #Such usecase results in infinite cycle of reinitialization of compiler and other variables + INCLUDE("./qnx_6.5.0_linux_x86.cmake") + set(objcopy "nto${ARCH_TYPE_OPTION}-objcopy") + #tests are not supported yet for QNX build + set (BUILD_TESTS OFF) + endif() +endif() + +if (HMI_TYPE_OPTION) + if (${HMI_TYPE_OPTION} STREQUAL "HTML5") + message(STATUS "Jenkins integration: select HTML5 HMI") + set (HMI "web") + elseif (${HMI_TYPE_OPTION} STREQUAL "NONE") + message(STATUS "Jenkins integration: select HMI none") + set (HMI "no") + else () + message(STATUS "Jenkins integration: select QML HMI none") + set (HMI "qt") + endif() +endif() + +if (MEDIA_MODE_OPTION) + if (${MEDIA_MODE_OPTION} STREQUAL "EXTENDED_MEDIA") + message(STATUS "Jenkins integration: select extended media mode") + set (EXTENDED_MEDIA_MODE ON) + endif() +endif() + +if (DEBUG_OPTION) + if (${DEBUG_OPTION} STREQUAL "DBG_OFF") + message(STATUS "Jenkins integration: build release version") + set(CMAKE_BUILD_TYPE "Release" CACHE STRING "" FORCE) + endif() +endif() + +if (HMI_ADAPTER_OPTION) + if (${HMI_ADAPTER_OPTION} STREQUAL "MESSAGEBROKER") + message(STATUS "Jenkins integration: selected HMI adapter MESSAGEBROKER") + set (HMIADAPTER "messagebroker") + elseif (${HMI_ADAPTER_OPTION} STREQUAL "DBUS") + message(STATUS "Jenkins integration: selected HMI adapter DBUS") + set (HMIADAPTER "dbus") + elseif (${HMI_ADAPTER_OPTION} STREQUAL "MQUEUE") + message(STATUS "Jenkins integration: selected HMI adapter MQUEUE") + set (HMIADAPTER "mqueue") + endif() +endif() + +if (ENABLE_LOG_OPTION) + if (${ENABLE_LOG_OPTION} STREQUAL "LOG_OFF") + message(STATUS "Jenkins integration: Log is turned off") + set (ENABLE_LOG OFF) + endif() +endif() + +#Jenkins integration section end + +project (${PROJECT}) + +#ADD_DEPENDENCIES(${PROJECT} Policy) + +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/") + +# Please do not change compiler/linker flags if You do not know how particular +# flag is handled by CMake +set(CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_BINARY_DIR}) +set(ARCHIVE_OUTPUT_DIRECTORY ./bin) +set(CMAKE_CXX_FLAGS "-fPIC -g3 -ggdb3 -std=gnu++0x -Wall -Werror -Wuninitialized") +if (ENABLE_GCOV) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage") + add_definitions(-DGCOV_ENABLED) +endif() +set(CMAKE_CXX_FLAGS_RELEASE "-fPIC -s -O2") #It will be appended to CMAKE_CXX_FLAGS in release + +#include_directories( +# ../../../src/components/policy/ +# ../../../src/components/rpc_base/ +#) + +if (CMAKE_SYSTEM_NAME STREQUAL "Linux") + add_definitions(-DOS_LINUX) +elseif(CMAKE_SYSTEM_NAME STREQUAL "QNX") + add_definitions(-DOS_QNX) + SET(BUILD_BT_SUPPORT OFF) + SET(BUILD_AVAHI_SUPPORT OFF) + SET(BUILD_BACKTRACE_SUPPORT OFF) + SET(EXTENDED_MEDIA_MODE OFF) +endif() + +if (BUILD_AOA_SUPPORT) +if (CMAKE_SYSTEM_NAME STREQUAL "QNX") + add_definitions(-DAOA_SUPPORT) + set(BUILD_USB_SUPPORT OFF) + message(STATUS "AOA support is enabled") +else () + message(FATAL_ERROR "Library libAOA is supported on QNX only") +endif() +endif(BUILD_AOA_SUPPORT) + +if (BUILD_USB_SUPPORT) + add_definitions(-DUSB_SUPPORT) + message(STATUS "USB support is enabled") +endif() + + +if (BUILD_BT_SUPPORT) + add_definitions(-DBLUETOOTH_SUPPORT) + message(STATUS "Bluetooth support is enabled") +endif() + +if (BUILD_MME_SUPPORT) + add_definitions(-DMME_SUPPORT) + message(STATUS "MME support is enabled") +endif(BUILD_MME_SUPPORT) + +if (BUILD_AVAHI_SUPPORT) + add_definitions(-DAVAHI_SUPPORT) +# --- Check libavahi-common, libavahi-client availability + find_package(Libavahi) + message(STATUS "Avahi support is enabled") +endif() + +if (BUILD_RWLOCK_SUPPORT) + add_definitions(-DRWLOCK_SUPPORT) +endif() + +if (BUILD_BACKTRACE_SUPPORT) + add_definitions(-DBACKTRACE_SUPPORT) +endif() + +if(ENABLE_LOG) + add_definitions(-DENABLE_LOG) + set(install-3rd_party_logger "install-3rd_party_logger") +endif() + +if (TIME_TESTER) + add_definitions(-DTIME_TESTER) +endif() + +# TODO(AK): check current OS here +add_definitions(-DOS_POSIX) + +# FIXME(DC): weird logic +IF(CMAKE_C_FLAGS_DEBUG) + SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEBUG" ) + add_definitions(-DDEBUG) +ELSE (CMAKE_C_FLAGS_DEBUG) + SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DRELEASE" ) + add_definitions(-DRELEASE) +ENDIF(CMAKE_C_FLAGS_DEBUG) + + +if (EXTENDED_MEDIA_MODE) +add_definitions(-DEXTENDED_MEDIA_MODE) +# required to find 'glibconfig.h' +find_package(PkgConfig) +pkg_check_modules(GLIB2 REQUIRED glib-2.0) +add_definitions(${GLIB2_CFLAGS}) +endif() + +# --- Interface generator + +find_package(PythonInterp) +if(NOT PYTHONINTERP_FOUND) + message(STATUS "Python interpreter is not found") + message(STATUS "To install it type in the command line:") + message(STATUS "sudo apt-get install python") + message(FATAL_ERROR "Exiting!") +endif(NOT PYTHONINTERP_FOUND) + +if (HMI STREQUAL "qt") + cmake_minimum_required(VERSION 2.8.11) + if (CMAKE_SYSTEM_NAME STREQUAL "QNX") + set(qt_version "4.8.5") + else () + set(qt_version "5.1.0") + endif () + + execute_process( + COMMAND ${CMAKE_SOURCE_DIR}/FindQt.sh -v ${qt_version} + OUTPUT_VARIABLE qt_bin_dir + ) + message(STATUS "Binary directory Qt ${qt_version} is ${qt_bin_dir}") + set(ENV{PATH} ${qt_bin_dir}:$ENV{PATH}) + + if (CMAKE_SYSTEM_NAME STREQUAL "QNX") + find_package(Qt4 ${qt_version} REQUIRED QtCore QtGui QtDBus QtDeclarative) + else () + find_package(Qt5Core REQUIRED) + find_package(Qt5DBus REQUIRED) + find_package(Qt5Qml REQUIRED) + find_package(Qt5Quick REQUIRED) + set(qmlplugindump_binary ${qt_bin_dir}/qmlplugindump) + endif () +endif() + +set(INTEFRACE_GENERATOR "${PROJECT_SOURCE_DIR}/tools/InterfaceGenerator/Generator.py") +set(INTEFRACE_GENERATOR_CMD ${PYTHON_EXECUTABLE} -B ${INTEFRACE_GENERATOR}) +file(GLOB_RECURSE INTERFACE_GENERATOR_DEPENDENCIES "${PROJECT_SOURCE_DIR}/tools/InterfaceGenerator/*.*") + +macro (GenerateInterface arg_xml_name arg_namespace parser_type) + string(REGEX MATCH "^[a-zA-Z_0-9]*[^.]" file_name ${arg_xml_name}) # TODO: make expression more robust + + set(hpp_file + "${CMAKE_CURRENT_BINARY_DIR}/${file_name}.h" + "${CMAKE_CURRENT_BINARY_DIR}/${file_name}_schema.h" + ) + + set(cpp_file "${CMAKE_CURRENT_BINARY_DIR}/${file_name}_schema.cc") + set(full_xml_name "${CMAKE_CURRENT_SOURCE_DIR}/${arg_xml_name}") + + add_custom_command( OUTPUT ${hpp_file} ${cpp_file} + COMMAND ${INTEFRACE_GENERATOR_CMD} ${full_xml_name} ${arg_namespace} ${CMAKE_CURRENT_BINARY_DIR} "--parser-type" "${parser_type}" + DEPENDS ${INTERFACE_GENERATOR_DEPENDENCIES} ${full_xml_name} + COMMENT "Generating files:\n ${hpp_file}\n ${cpp_file}\nfrom:\n ${arg_xml_name} ..." + VERBATIM + ) + + include_directories ( + ../../../src/components/smart_objects/include + ../../../src/components/formatters/include/ + ${CMAKE_SOURCE_DIR}/src/components/formatters/include/ + ${CMAKE_BINARY_DIR} + ) + + add_library("${file_name}" ${cpp_file}) +endmacro(GenerateInterface) + +# --- Useful macro +macro(create_test NAME SOURCES LIBS) + add_executable("${NAME}" ${SOURCES}) + target_link_libraries("${NAME}" ${LIBS}) + target_link_libraries("${NAME}" Utils) + if(CMAKE_SYSTEM_NAME STREQUAL "QNX") + add_test(${NAME} ${CMAKE_SOURCE_DIR}/qnx/remote_run_test.sh ${NAME}) + else() + add_test(${NAME} ${NAME}) + endif() +endmacro(create_test) + +# --replace in list macro +macro(LIST_REPLACE LIST INDEX NEWVALUE) + list(INSERT ${LIST} ${INDEX} ${NEWVALUE}) + MATH(EXPR __INDEX "${INDEX} + 1") + list (REMOVE_AT ${LIST} ${__INDEX}) +endmacro(LIST_REPLACE) + + +# Building application + +# --- Type HMI +if (HMI STREQUAL "qt") + set(QT_HMI ON) + add_definitions(-DQT_HMI) +elseif (HMI STREQUAL "web") + set(WEB_HMI ON) + add_definitions(-DWEB_HMI) +else () + set(HMI "no") + add_definitions(-DNO_HMI) +endif () + +if (HMI STREQUAL "qt" AND NOT DEFINED HMIADAPTER) + set(HMIADAPTER "dbus") +endif() +if (HMI STREQUAL "web" AND NOT DEFINED HMIADAPTER) + set(HMIADAPTER "messagebroker") +endif() +if (HMI STREQUAL "no" AND NOT DEFINED HMIADAPTER) + set(HMIADAPTER "mqueue") +endif() + +if (HMIADAPTER STREQUAL "dbus") + set(HMI_DBUS_API ON) + add_definitions(-DDBUS_HMIADAPTER) + add_definitions(-DHMI_DBUS_API) + set(install-3rd_party_dbus "install-3rd_party_dbus") +endif() +if (HMIADAPTER STREQUAL "messagebroker") + set(HMI_JSON_API ON) + add_definitions(-DMESSAGEBROKER_HMIADAPTER) + add_definitions(-DHMI_JSON_API) +endif() +if (HMIADAPTER STREQUAL "mqueue") + set(HMI_JSON_API ON) + add_definitions(-DMQUEUE_HMIADAPTER) + add_definitions(-DHMI_JSON_API) +endif() + +# --- Directory with SDL interfaces, global types and ProtocolLib component +include_directories( + ${CMAKE_SOURCE_DIR}/src/components/include + ${CMAKE_SOURCE_DIR}/src/components/protocol/include +) + +# --- 3rd party libs +INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/src/3rd_party/set_3rd_party_paths.cmake) + +set(3RD_PARTY_SOURCE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/src/3rd_party) +set(3RD_PARTY_BINARY_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/src/3rd_party) + +set (install-3rd_party_logger_var "") +set (install-3rd_party_dbus_var "") +set (is_logger_actual 1) +set (is_dbus_actual 1) +if(ENABLE_LOG) + #build logger + execute_process( + COMMAND /bin/bash -c "cd ${CMAKE_CURRENT_SOURCE_DIR} && grep .commit_hash ${3RD_PARTY_INSTALL_PREFIX_ARCH}/lib/liblog4cxx.so 1>/dev/null 2>&1; if [ $? == 0 ]; then VAR1=\$(readelf -p .commit_hash ${3RD_PARTY_INSTALL_PREFIX_ARCH}/lib/liblog4cxx.so 2>/dev/null); VAR1=\$(echo $VAR1 | awk '{print \$NF}'); VAR2=\$(git log --pretty=\"format:%H\" -1 ${3RD_PARTY_SOURCE_DIRECTORY}/apache-log4cxx-0.10.0); if [[ \$VAR1 == \$VAR2 ]]; then exit 0; else exit 1; fi; else exit 1; fi" + RESULT_VARIABLE is_logger_actual + ) + if(is_logger_actual EQUAL 0) + message(STATUS "Logger is actual.") + else() + message(STATUS "Need to rebuild logger.") + + add_custom_target(3rd_party_logger + make + WORKING_DIRECTORY ${3RD_PARTY_BINARY_DIRECTORY} + ) + #install logger + #install either to default place with sudo or none-default plase without sudo. + #to install with sudo to none-default place use manual installation + add_custom_target(install-3rd_party_logger + COMMAND /bin/bash -c \"if [ ! ${is_logger_actual} == 0 ]\; then USE_DEFAULT_3RD_PARTY_PATH=${USE_DEFAULT_3RD_PARTY_PATH}\; if [[ \\$$USE_DEFAULT_3RD_PARTY_PATH == "true" ]]\; then sudo make install\; else make install\; fi\; fi\" + DEPENDS 3rd_party_logger + WORKING_DIRECTORY ${3RD_PARTY_BINARY_DIRECTORY} + ) + set (install-3rd_party_logger_var "install-3rd_party_logger") + endif() +endif() + +if (HMIADAPTER STREQUAL "dbus") +#build d-bus + execute_process( + COMMAND /bin/bash -c "grep .commit_hash ${3RD_PARTY_INSTALL_PREFIX_ARCH}/lib/libdbus-1.so 1>/dev/null 2>&1; if [ $? == 0 ]; then VAR1=\$(readelf -p .commit_hash ${3RD_PARTY_INSTALL_PREFIX_ARCH}/lib/libdbus-1.so 2>/dev/null); VAR1=\$(echo $VAR1 | awk '{print \$NF}'); VAR2=\$(git log --pretty=\"format:%H\" -1 ${3RD_PARTY_SOURCE_DIRECTORY}/dbus-1.7.8); if [[ \$VAR1 == \$VAR2 ]]; then exit 0; else exit 1; fi; else exit 1; fi" + RESULT_VARIABLE is_dbus_actual + ) + if(is_dbus_actual EQUAL 0) + message(STATUS "D-Bus is actual.") + else() + message(STATUS "Need to rebuild D-Bus.") + + add_custom_target(3rd_party_dbus + make + WORKING_DIRECTORY ${3RD_PARTY_BINARY_DIRECTORY} + ) + #install d-bus + #install either to default place with sudo or none default plase without sudo. + #to install with sudo to none default place use manual installation + add_custom_target(install-3rd_party_dbus + COMMAND /bin/bash -c \"if [ ! ${is_dbus_actual} == 0 ]\; then USE_DEFAULT_3RD_PARTY_PATH=${USE_DEFAULT_3RD_PARTY_PATH}\; if [[ \\$$USE_DEFAULT_3RD_PARTY_PATH == "true" ]]\; then sudo make install\; else make install\; fi\; fi\" + DEPENDS 3rd_party_dbus + WORKING_DIRECTORY ${3RD_PARTY_BINARY_DIRECTORY} + ) + set (install-3rd_party_dbus_var "install-3rd_party_dbus") + endif() +endif() + +add_subdirectory(${3RD_PARTY_SOURCE_DIRECTORY} ${3RD_PARTY_BINARY_DIRECTORY} EXCLUDE_FROM_ALL) +add_custom_target(install-3rd_party + DEPENDS ${install-3rd_party_logger_var} + DEPENDS ${install-3rd_party_dbus_var} + WORKING_DIRECTORY ${3RD_PARTY_BINARY_DIRECTORY} +) + +if(ENABLE_SECURITY) + add_definitions(-DENABLE_SECURITY) + set(SecurityManagerLibrary SecurityManager) + set(SecurityManagerIncludeDir ${CMAKE_SOURCE_DIR}/src/components/security_manager/include) + set(SecurityManagerTestIncludeDir ${CMAKE_SOURCE_DIR}/test/components/security_manager/include) +endif() + +set(RTLIB rt) +if(CMAKE_SYSTEM_NAME STREQUAL "QNX") +set(RTLIB ) +endif() + +# Building tests +if(BUILD_TESTS) + enable_testing() + add_definitions(-DBUILD_TESTS) + # Framework GoogleTest is also integrated together gmock + # and must not be added separately + add_subdirectory(./src/3rd_party-static/gmock-1.7.0) +endif() + +# --- 3rd party libs (static) +add_subdirectory(./src/3rd_party-static) + +# --- Tools +add_subdirectory(./tools) + +# --- Components +add_subdirectory(./src/components) + +# --- Main application +add_subdirectory(./src/appMain) + +# --- Plugins +add_subdirectory(./src/plugins) + + +# Building tests +if(BUILD_TESTS) + # Directory test is deprecated. Use src/components/<name>/test + include(Dart) + #add_subdirectory(./test) +endif() + +# Building documentation + +# At first creating directory for generated documentation. Unfortunately doxygen +# cannot generate it byself +FIND_PACKAGE(Doxygen) + IF(DOXYGEN_FOUND) + option(DOXYGEN_ENABLE_DIAGRAMS "Enable graphical diagram generation" ON) + + if(DOXYGEN_ENABLE_DIAGRAMS) + set(DOXYGEN_ENABLE_DIAGRAMS_PARAM "YES") + else(DOXYGEN_ENABLE_DIAGRAMS) + set(DOXYGEN_ENABLE_DIAGRAMS_PARAM "NO") + endif() + configure_file("${PROJECT_SOURCE_DIR}/Doxyfile" "${PROJECT_BINARY_DIR}/Doxyfile") + file(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/doc/doxygen") + ADD_CUSTOM_TARGET(doxygen COMMAND ${DOXYGEN_EXECUTABLE} "${PROJECT_BINARY_DIR}/Doxyfile") + ELSE(DOXYGEN_FOUND) + MESSAGE(STATUS "Doxygen not found. Documentation will not be generated") + MESSAGE(STATUS "To enable documentation generation please install doxygen and graphviz packages") + MESSAGE(STATUS "sudo apt-get install doxygen graphviz") + MESSAGE(STATUS "To enable processing of MscGen comments please install mscgen") + MESSAGE(STATUS "sudo apt-get install mscgen") +ENDIF(DOXYGEN_FOUND) |