blob: 2b4e9475c92b84ae7780adfdd4545d03805b98c8 [file] [log] [blame]
James Feist03a02ad2019-02-06 12:38:50 -08001cmake_minimum_required (VERSION 3.1 FATAL_ERROR)
2set (BUILD_SHARED_LIBRARIES OFF)
3include (ExternalProject)
Patrick Williamsffcaad82022-09-01 15:09:18 -05004set (CMAKE_CXX_STANDARD 20)
James Feist03a02ad2019-02-06 12:38:50 -08005set (CMAKE_CXX_STANDARD_REQUIRED ON)
James Feist03a02ad2019-02-06 12:38:50 -08006set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti")
7set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-rtti")
8
9option (YOCTO "Enable Building in Yocto" OFF)
10
11if (NOT YOCTO)
12 externalproject_add (
13 Boost URL
Patrick Williams9dc4abd2020-06-01 10:20:22 -050014 https://dl.bintray.com/boostorg/release/1.71.0/source/boost_1_71_0.tar.gz
15 URL_MD5 5f521b41b79bf8616582c4a8a2c10177 SOURCE_DIR
James Feist03a02ad2019-02-06 12:38:50 -080016 "${CMAKE_BINARY_DIR}/boost-src" BINARY_DIR
17 "${CMAKE_BINARY_DIR}/boost-build" CONFIGURE_COMMAND "" BUILD_COMMAND ""
18 INSTALL_COMMAND mkdir -p "${CMAKE_BINARY_DIR}/prefix/include/" && cp -R
19 ${CMAKE_BINARY_DIR}/boost-src/boost ${CMAKE_BINARY_DIR}/prefix/include
20 ) # requires apt install autoconf-archive and autoconf
21 externalproject_add (sdbusplus-project PREFIX
22 ${CMAKE_BINARY_DIR}/sdbusplus-project GIT_REPOSITORY
23 https://github.com/openbmc/sdbusplus.git GIT_TAG
Patrick Williams6fc0ed72022-07-25 06:58:53 -050024 8a97100b806225df40c490eb748c9a4e1b3c11b3 SOURCE_DIR
James Feist03a02ad2019-02-06 12:38:50 -080025 ${CMAKE_BINARY_DIR}/sdbusplus-src BINARY_DIR
26 ${CMAKE_BINARY_DIR}/sdbusplus-build CONFIGURE_COMMAND
27 "" BUILD_COMMAND cd ${CMAKE_BINARY_DIR}/sdbusplus-src
Patrick Williams0d26db32020-06-01 07:45:28 -050028 && meson build -Ddefault_library=static && ninja -C
29 build libsdbusplus.a INSTALL_COMMAND ""
James Feist03a02ad2019-02-06 12:38:50 -080030 LOG_DOWNLOAD ON)
31
32 include_directories (${CMAKE_BINARY_DIR}/sdbusplus-src)
33 include_directories (${CMAKE_BINARY_DIR}/nlohmann/include)
34 include_directories (${CMAKE_BINARY_DIR}/nlohmann/include/nlohmann)
35 include_directories (${CMAKE_BINARY_DIR}/phosphor-dbus-interfaces/include)
Patrick Williams0d26db32020-06-01 07:45:28 -050036 link_directories (${CMAKE_BINARY_DIR}/sdbusplus-src/build)
James Feist03a02ad2019-02-06 12:38:50 -080037
38 include_directories (${CMAKE_BINARY_DIR}/boost-src)
39 set (CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/boost-src ${CMAKE_PREFIX_PATH})
James Feist03a02ad2019-02-06 12:38:50 -080040endif ()
41
42add_definitions (-DBOOST_ERROR_CODE_HEADER_ONLY)
43add_definitions (-DBOOST_SYSTEM_NO_DEPRECATED)
44add_definitions (-DBOOST_ALL_NO_LIB)
45add_definitions (-DBOOST_NO_RTTI)
46add_definitions (-DBOOST_NO_TYPEID)
47add_definitions (-DBOOST_ASIO_DISABLE_THREADS)
48
49include_directories (${CMAKE_CURRENT_SOURCE_DIR}/include)
50include_directories (${Boost_INCLUDE_DIRS})
51include_directories (${CMAKE_CURRENT_SOURCE_DIR}/include)
52
53add_executable (callback-manager src/callback_manager.cpp)
54
55target_link_libraries (callback-manager -lsystemd)
56target_link_libraries (callback-manager stdc++fs)
57target_link_libraries (callback-manager ${Boost_LIBRARIES})
58target_link_libraries (callback-manager sdbusplus)
59
60if (NOT YOCTO)
61 add_dependencies (callback-manager sdbusplus-project)
62endif ()
63
64set (SERVICE_FILES ${PROJECT_SOURCE_DIR}/service_files/callback-manager.service)
65
66install (TARGETS callback-manager DESTINATION sbin)
67install (FILES ${SERVICE_FILES} DESTINATION /lib/systemd/system/)