xref: /openbmc/boost-dbus/CMakeLists.txt (revision 70f79f4d)
1# Copyright (c) Benjamin Kietzman (github.com/bkietz)
2#
3# Distributed under the Boost Software License, Version 1.0. (See accompanying
4# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
6set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
7
8###############
9# CMake options
10cmake_minimum_required(VERSION 2.8)
11
12set(CMAKE_CXX_STANDARD 14)
13set(CMAKE_CXX_STANDARD_REQUIRED ON)
14
15option(HUNTER_ENABLED "Enable hunter package pulling" OFF)
16
17include("cmake/HunterGate.cmake")
18HunterGate(
19    URL "https://github.com/ruslo/hunter/archive/v0.18.64.tar.gz"
20    SHA1 "baf9c8cc4f65306f0e442b5419967b4c4c04589a"
21)
22
23project(boost-dbus CXX)
24
25###############
26# C++ options
27set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
28include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
29include_directories(${CMAKE_CURRENT_SOURCE_DIR}/test)
30
31###############
32# import Boost
33add_definitions(-DBOOST_ERROR_CODE_HEADER_ONLY)
34add_definitions(-DBOOST_SYSTEM_NO_DEPRECATED)
35add_definitions(-DBOOST_ALL_NO_LIB)
36add_definitions(-DBOOST_NO_RTTI)
37add_definitions(-DBOOST_NO_TYPEID)
38hunter_add_package(Boost)
39find_package(Boost REQUIRED)
40
41include_directories(${Boost_INCLUDE_DIRS})
42link_directories(${Boost_LIBRARY_DIRS})
43
44###############
45# import D-Bus
46hunter_add_package(dbus)
47find_package(dbus REQUIRED) # Include functions provided by PkgConfig module.
48include_directories(${DBUS_INCLUDE_DIRS})
49
50hunter_add_package(pthread-stubs)
51find_package (Threads)
52
53##############
54# Install
55add_library(boost-dbus INTERFACE)
56target_include_directories(boost-dbus INTERFACE
57                           $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
58                           $<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include>
59			   ${DBUS_INCLUDE_DIRS})
60
61target_link_libraries(boost-dbus INTERFACE ${DBUS_LIBRARIES})
62install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/ DESTINATION include)
63
64##############
65# Tests
66enable_testing()
67
68add_executable(dbustests "test/avahi.cpp" "test/message.cpp" "test/error.cpp" "test/dbusPropertiesServer.cpp")
69
70##############
71# import GTest
72hunter_add_package(GTest)
73find_package(GTest REQUIRED)
74include_directories(${GTEST_INCLUDE_DIRS})
75
76if (${HUNTER_ENABLED})
77    find_package(GMock CONFIG REQUIRED)
78    target_link_libraries(dbustests GMock::main)
79else()
80    find_package(GMock REQUIRED)
81    target_link_libraries(dbustests ${GTEST_BOTH_LIBRARIES} gmock)
82endif()
83target_link_libraries(dbustests ${CMAKE_THREAD_LIBS_INIT})
84add_test(dbustests dbustests "--gtest_output=xml:${test_name}.xml")
85
86target_link_libraries(dbustests boost-dbus)
87
88
89# export targets for find_package config mode
90export(TARGETS boost-dbus
91       FILE ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}Targets.cmake)
92
93file(WRITE
94    ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}Config.cmake
95    "include(\${CMAKE_CURRENT_LIST_DIR}/${CMAKE_PROJECT_NAME}Targets.cmake)\n")
96
97install(FILES
98        ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}Config.cmake
99        DESTINATION lib/cmake/${CMAKE_PROJECT_NAME})
100
101install(TARGETS boost-dbus
102        EXPORT ${CMAKE_PROJECT_NAME}Targets
103        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
104	LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
105        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
106
107install(EXPORT ${CMAKE_PROJECT_NAME}Targets
108	DESTINATION lib/cmake/${CMAKE_PROJECT_NAME})
109