summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorJustin Dickow <jjdickow@gmail.com>2014-10-20 17:44:41 -0400
committerJustin Dickow <jjdickow@gmail.com>2014-10-20 17:44:41 -0400
commit34e7256493ff0e6594029b9857d7e2aa31f5dbeb (patch)
tree367306b507c52d3af211533810adbc22004e0192 /CMakeLists.txt
parent2eef966e9b5fd4d94dd98820095eb765e200c64b (diff)
downloadsdl_core-34e7256493ff0e6594029b9857d7e2aa31f5dbeb.tar.gz
SDL 3.8!
Signed-off-by: Justin Dickow <jjdickow@gmail.com>
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt528
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)