bugfix about AirDistribution
[profile/ivi/automotive-message-broker.git] / CMakeLists.txt
1 project(automotive-message-broker)
2 cmake_minimum_required(VERSION 2.8.11)
3
4 set(CMAKE_BUILD_TYPE, Debug)
5
6 include(FindPkgConfig)
7 include(CMakeDependentOption)
8 include(GNUInstallDirs)
9
10 set(PROJECT_NAME "automotive-message-broker")
11 set(PROJECT_PRETTY_NAME "Automotive Message Broker")
12 set(PROJECT_SERIES "0.15")
13 set(PROJECT_MAJOR_VERSION "0.14")
14 set(PROJECT_MINOR_VERSION "803")
15 set(PROJECT_VERSION "${PROJECT_MAJOR_VERSION}.${PROJECT_MINOR_VERSION}")
16 set(PROJECT_CODENAME "")
17 set(PROJECT_QUALITY "alpha")
18
19 add_definitions(-DPROJECT_VERSION="${PROJECT_VERSION}")
20 add_definitions(-DPROJECT_NAME="${PROJECT_PRETTY_NAME}")
21 add_definitions(-DPROJECT_CODENAME="${PROJECT_CODENAME}")
22 add_definitions(-DPROJECT_QUALITY="${PROJECT_QUALITY}")
23 add_definitions(-DPROJECT_SERIES="${PROJECT_SERIES}")
24
25 set (LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)" )
26 set (LIB_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}" )
27 set (PLUGIN_INSTALL_PATH "${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}")
28 if (NOT DEFINED INCLUDE_INSTALL_DIR)
29         set (INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}")
30 endif()
31 set (DOC_INSTALL_DIR "${CMAKE_INSTALL_DOCDIR}/${PROJECT_NAME}/${PROJECT_SERIES}")
32 set (PLUGIN_SEGMENT_INSTALL_PATH "${CMAKE_INSTALL_SYSCONFDIR}/ambd/plugins.d")
33
34 option(qtmainloop "Use QCoreApplication mainloop " OFF)
35 option(websocket_plugin "websocket source and sink plugins" OFF)
36 option(obd2_plugin "OBD-II plugin" OFF)
37 option(database_plugin "Database plugins" OFF)
38 option(qt_bindings "AMB Qt DBus bindings" OFF)
39 option(opencvlux_plugin "OpenCV Lux plugin" OFF)
40 option(murphy_plugin "murphy policy framework plugin" OFF)
41 option(test_plugin "Test Plugin" ON)
42 option(bluemonkey_plugin "bluemonkey plugin" OFF)
43 option(gpsnmea_plugin "gps NMEA location plugin" OFF)
44 option(chrony_plugin "chrony plugin" OFF)
45 option(openxc_plugin "OpenXC plugin" OFF)
46 option(bluetooth_plugin "bluetooth plugin" OFF)
47 option(cansim_plugin "Can simulator plugin" OFF)
48 option(cangen_plugin "Can generator plugin" OFF)
49 option(enable_icecc "Enable icecc checking, for distributed compilation" ON)
50 option(enable_docs "enable Doxygen doc generation" OFF)
51 option(usebluez5 "use bluez 5 API" OFF)
52 option(xwalk_vehicle_extension "Crosswalk vehicle extension" OFF)
53 set(XWALK_EXTENSION_PATH "/automotive-message-broker/xwalk" CACHE PATH "directory the xwalk extension will be installed to")
54 set(QMAKE_INSTALL_PATH "/usr/bin/qmake" CACHE PATH "qmake executable path")
55
56 #turn on -fpic/-fpie:
57 set(CMAKE_POSITION_INDEPENDENT_CODE ON)
58 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpie -pie -std=c++14")
59
60 if (enable_icecc)
61         include (CMakeForceCompiler)
62         find_program(ICECC /usr/lib/icecc/bin/g++)
63                 if (ICECC)
64                         message(STATUS "icecc will be used for distributed compiling")
65                         cmake_force_cxx_compiler(${ICECC} icecc)
66                 else(ICECC)
67                         message(STATUS "Not using icecc")
68                 endif(ICECC)
69 endif(enable_icecc)
70
71 find_package(Boost REQUIRED)
72
73
74 pkg_check_modules(glib REQUIRED glib-2.0 gobject-2.0)
75
76 add_definitions(-DDBusServiceName="org.automotive.message.broker")
77
78 set(include_dirs ${libtool_INCLUDE_DIR} ${glib_INCLUDE_DIRS} ${gio_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} ${json_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/lib)
79 set(link_libraries -lamb ${glib_LIBRARIES} ${json_LIBRARIES} -L${CMAKE_CURRENT_BINARY_DIR}/lib)
80
81 if(usebluez5)
82         add_definitions(-DUSE_BLUEZ5)
83
84 endif(usebluez5)
85
86 include(CheckCSourceCompiles)
87 check_c_source_compiles("
88         #include <linux/can/bcm.h>
89         int main() { struct bcm_timeval t; return 0;}" have_bcm_timeval)
90
91 if(have_bcm_timeval)
92         add_definitions(-DHAVE_BCM_TIMEVAL)
93 endif(have_bcm_timeval)
94
95 set(ARCHIVE_NAME ${CMAKE_PROJECT_NAME}-${PROJECT_VERSION})
96 add_custom_target(dist COMMAND git archive --prefix=${ARCHIVE_NAME}/ HEAD | bzip2 > ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar.bz2 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
97
98 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake" "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY)
99 add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
100
101 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/RELEASE.in.md" "${CMAKE_CURRENT_SOURCE_DIR}/RELEASE.md" @ONLY)
102
103 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/TODO" "${CMAKE_CURRENT_SOURCE_DIR}/TODO.md" @ONLY)
104
105 # packaging stuff:
106 # Common things to every type of package
107 SET(CPACK_PACKAGE_DESCRIPTION "daemon that provides access vehicle data")
108 SET(CPACK_PACKAGE_NAME "automotive-message-broker")
109 SET(CPACK_PACKAGE_EXECUTABLES "ambd")
110 SET(CPACK_PACKAGE_VERSION "${PROJECT_VERSION}")
111 SET(CPACK_STRIP_FILES true)
112 SET(CPACK_PACKAGE_CONTACT "tripzero.kev@gmail.com")
113 SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/COPYING")
114
115 # Always build .tar.gz and .sh files
116 SET(CPACK_GENERATOR "STGZ;TGZ;TBZ2")
117
118 add_subdirectory(lib)
119 add_subdirectory(plugins)
120 add_subdirectory(ambd)
121 add_subdirectory(docs)
122 add_subdirectory(tests)
123 add_subdirectory(tools)
124 add_subdirectory(examples)
125 add_subdirectory(xwalk)
126 add_subdirectory(packaging.in)
127
128