summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt129
1 files changed, 91 insertions, 38 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a4358b5b7e..b85caa972c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright (c) 2014, Ford Motor Company
+# Copyright (c) 2015, Ford Motor Company
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -28,7 +28,7 @@
# 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)
+cmake_minimum_required(VERSION 2.8.11)
set (PROJECT smartDeviceLinkCore)
@@ -36,13 +36,13 @@ set (PROJECT smartDeviceLinkCore)
#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(EXTENDED_MEDIA_MODE "Turn on and off extended Media 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" ON)
option(BUILD_USB_SUPPORT "libusb support" ON)
-option(BUILD_BACKTRACE_SUPPORT "backtrace support" ON)
-option(BUILD_TESTS "Possibility to build and run tests" OFF)
-option(TELEMETRY_MONITOR "Enable profiling time test util" ON)
+option(BUILD_BACKTRACE_SUPPORT "backtrace support" OFF)
+option(BUILD_TESTS "Possibility to build and run tests" ON)
+option(TELEMETRY_MONITOR "Enable profiling time test util" OFF)
option(ENABLE_LOG "Logging feature" ON)
option(ENABLE_GCOV "gcov code coverage feature" OFF)
option(ENABLE_SANITIZE "Sanitize tool" OFF)
@@ -63,17 +63,29 @@ set(POLICY_OPTION "$ENV{POLICY_TYPE}")
set(SECURITY_OPTION "$ENV{SECURITY_MODE}")
set(COMPONENTS_DIR ${CMAKE_SOURCE_DIR}/src/components)
set(SNAPSHOT_TAG "$ENV{SNAPSHOT_TAG}")
-
set(CMAKE_CXX_COMPILER $ENV{CMAKE_CXX_COMPILER})
set(CMAKE_C_COMPILER $ENV{CMAKE_C_COMPILER})
+set(BUILDDIR "$ENV{BUILDDIR}")
+
+project (${PROJECT})
+
+if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
+ if(QT_PORT)
+ message(STATUS "Build QT port")
+ set(ARCH_TYPE_OPTION "x86")
+ else()
+ set(ARCH_TYPE_OPTION "x86_64")
+ endif()
-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")
+ 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()
endif()
if (HMI_TYPE_OPTION)
@@ -155,24 +167,6 @@ endif()
#Jenkins integration section end
-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 -cz -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 -cz -C /tmp/GENIVI -f ${CMAKE_BINARY_DIR}/genivi.tar.gz .
-)
-
-
project (${PROJECT})
#ADD_DEPENDENCIES(${PROJECT} Policy)
@@ -184,6 +178,30 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
set(CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_BINARY_DIR})
set(ARCHIVE_OUTPUT_DIRECTORY ./bin)
+if(MSVC)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /GF /GR /EHsc /W3 /D_CONSOLE")
+ # /WD4996 - disable warning C4996.
+ # 'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS
+ # to disable deprecated API warnings
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4996")
+ # /WD4503 - disable warning C4503.
+ # xmemory0(592): warning C4503: 'std::_Tree<std::_Tmap_traits<_Kty,_Ty,_Pr,_Alloc,false>>::_Insert_nohint' :
+ # decorated name length exceeded, name was truncated
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4503")
+ if(QT_PORT)
+ #Add MSVS 2010 for Qt specific flags
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /DWIN32")
+ else()
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /DWIN64 /Zc:wchar_t /favor:blend")# Add MSVS specific flags
+ endif()
+ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MD -DNDEBUG")
+ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd -DDEBUG")
+
+ # /NOLOGO option prevents display of the copyright message and version number
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /nologo")
+
+ add_definitions(-D_CRT_SECURE_NO_WARNINGS)
+else()
set(CMAKE_CXX_FLAGS "-fPIC -std=gnu++0x -Wall -Werror -Wno-deprecated-declarations -Wuninitialized -Wvla")
if(ENABLE_SANITIZE)
@@ -195,6 +213,15 @@ if(ENABLE_GCOV)
endif()
set(CMAKE_CXX_FLAGS_RELEASE " -DNDEBUG -s -O2")
set(CMAKE_CXX_FLAGS_DEBUG " -DDEBUG -g3 -ggdb3")
+endif()
+
+if(QT_PORT)
+ set(CMAKE_AUTOMOC ON)
+ find_package(Qt5 REQUIRED Core Network)
+ include_directories(
+ ${Qt5Core_INCLUDE_DIRS}
+ ${Qt5Network_INCLUDE_DIRS})
+endif ()
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
add_definitions(-DOS_LINUX)
@@ -235,14 +262,33 @@ if (ENABLE_EXTENDED_POLICY)
endif()
# TODO(AK): check current OS here
+if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
+ add_definitions(-DOS_WINDOWS)
+ if(QT_PORT)
+ add_definitions(-DQT_PORT)
+ else()
+ add_definitions(-DWIN_NATIVE)
+ # AN: Temporary set WIN_NATIVE option to ON
+ # until cmd files refactoring will be done.
+ # WIN_NATIVE option should be passed from cmd
+ set(WIN_NATIVE ON)
+ endif()
+else()
+
add_definitions(-DOS_POSIX)
+ if(ENABLE_LOG)
+ add_definitions(-DLOG4CXX_LOGGER)
+ endif()
+endif()
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})
+ add_definitions(-DEXTENDED_MEDIA_MODE)
+ if (NOT ${CMAKE_SYSTEM_NAME} MATCHES "Windows")
+ # required to find 'glibconfig.h'
+ find_package(PkgConfig)
+ pkg_check_modules(GLIB2 REQUIRED glib-2.0)
+ add_definitions(${GLIB2_CFLAGS})
+ endif()
endif()
@@ -251,8 +297,10 @@ endif()
find_package(PythonInterp)
if(NOT PYTHONINTERP_FOUND)
message(STATUS "Python interpreter is not found")
+ if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
message(STATUS "To install it type in the command line:")
message(STATUS "sudo apt-get install python")
+ endif()
message(FATAL_ERROR "Exiting!")
endif(NOT PYTHONINTERP_FOUND)
@@ -409,7 +457,7 @@ if(FORCE_3RD_PARTY)
endif()
endif()
-if(ENABLE_LOG)
+if((ENABLE_LOG) AND (CMAKE_SYSTEM_NAME STREQUAL "Linux"))
if(NO_REBUILD_3RD_PARTY_LOGGER)
message(STATUS "Not rebuilding logger.")
else()
@@ -618,7 +666,7 @@ add_custom_target(install-3rd_party
WORKING_DIRECTORY ${3RD_PARTY_BINARY_DIRECTORY}
)
-if(ENABLE_LOG)
+if((ENABLE_LOG) AND NOT (QT_PORT) AND NOT (WIN_NATIVE))
include_directories ( ${LOG4CXX_INCLUDE_DIRECTORY} )
endif()
@@ -634,7 +682,9 @@ if(ENABLE_HMI_PTU_DECRYPTION)
add_definitions(-DUSE_HMI_PTU_DECRYPTION)
endif()
+if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set(RTLIB rt)
+endif()
if(CMAKE_SYSTEM_NAME STREQUAL "QNX")
set(RTLIB )
endif()
@@ -665,6 +715,9 @@ add_subdirectory(./src/appMain)
add_subdirectory(./src/plugins)
+ADD_DEPENDENCIES(${PROJECT} Policy)
+ADD_DEPENDENCIES(${PROJECT} copy_library_Policy)
+
# Building tests
if(BUILD_TESTS)
# Directory test is deprecated. Use src/components/<name>/test