1*03a02ad0SJames Feistcmake_minimum_required (VERSION 3.1 FATAL_ERROR)
2*03a02ad0SJames Feistset (BUILD_SHARED_LIBRARIES OFF)
3*03a02ad0SJames Feistinclude (ExternalProject)
4*03a02ad0SJames Feistset (CMAKE_CXX_STANDARD 17)
5*03a02ad0SJames Feistset (CMAKE_CXX_STANDARD_REQUIRED ON)
6*03a02ad0SJames Feistset (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
7*03a02ad0SJames Feistset (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti")
8*03a02ad0SJames Feistset (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-rtti")
9*03a02ad0SJames Feist
10*03a02ad0SJames Feistoption (YOCTO "Enable Building in Yocto" OFF)
11*03a02ad0SJames Feist
12*03a02ad0SJames Feistif (NOT YOCTO)
13*03a02ad0SJames Feist    externalproject_add (
14*03a02ad0SJames Feist        Boost URL
15*03a02ad0SJames Feist        https://dl.bintray.com/boostorg/release/1.66.0/source/boost_1_66_0.tar.gz
16*03a02ad0SJames Feist        URL_MD5 d275cd85b00022313c171f602db59fc5 SOURCE_DIR
17*03a02ad0SJames Feist        "${CMAKE_BINARY_DIR}/boost-src" BINARY_DIR
18*03a02ad0SJames Feist        "${CMAKE_BINARY_DIR}/boost-build" CONFIGURE_COMMAND "" BUILD_COMMAND ""
19*03a02ad0SJames Feist        INSTALL_COMMAND mkdir -p "${CMAKE_BINARY_DIR}/prefix/include/" && cp -R
20*03a02ad0SJames Feist        ${CMAKE_BINARY_DIR}/boost-src/boost ${CMAKE_BINARY_DIR}/prefix/include
21*03a02ad0SJames Feist    ) # requires apt install autoconf-archive and autoconf
22*03a02ad0SJames Feist    externalproject_add (sdbusplus-project PREFIX
23*03a02ad0SJames Feist                         ${CMAKE_BINARY_DIR}/sdbusplus-project GIT_REPOSITORY
24*03a02ad0SJames Feist                         https://github.com/openbmc/sdbusplus.git GIT_TAG
25*03a02ad0SJames Feist                         bed15f0cee4784acdf151cca14efdfb98cb9d397 SOURCE_DIR
26*03a02ad0SJames Feist                         ${CMAKE_BINARY_DIR}/sdbusplus-src BINARY_DIR
27*03a02ad0SJames Feist                         ${CMAKE_BINARY_DIR}/sdbusplus-build CONFIGURE_COMMAND
28*03a02ad0SJames Feist                         "" BUILD_COMMAND cd ${CMAKE_BINARY_DIR}/sdbusplus-src
29*03a02ad0SJames Feist                         && ./bootstrap.sh && ./configure --enable-transaction
30*03a02ad0SJames Feist                         && make -j libsdbusplus.la INSTALL_COMMAND ""
31*03a02ad0SJames Feist                         LOG_DOWNLOAD ON)
32*03a02ad0SJames Feist
33*03a02ad0SJames Feist    include_directories (${CMAKE_BINARY_DIR}/sdbusplus-src)
34*03a02ad0SJames Feist    include_directories (${CMAKE_BINARY_DIR}/nlohmann/include)
35*03a02ad0SJames Feist    include_directories (${CMAKE_BINARY_DIR}/nlohmann/include/nlohmann)
36*03a02ad0SJames Feist    include_directories (${CMAKE_BINARY_DIR}/phosphor-dbus-interfaces/include)
37*03a02ad0SJames Feist    link_directories (${CMAKE_BINARY_DIR}/sdbusplus-src/.libs)
38*03a02ad0SJames Feist
39*03a02ad0SJames Feist    include_directories (${CMAKE_BINARY_DIR}/boost-src)
40*03a02ad0SJames Feist    set (CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/boost-src ${CMAKE_PREFIX_PATH})
41*03a02ad0SJames Feist    option (ENABLE_TEST "Enable Google Test" OFF)
42*03a02ad0SJames Feist    if (ENABLE_TEST)
43*03a02ad0SJames Feist        hunter_add_package (GTest)
44*03a02ad0SJames Feist        find_package (GTest CONFIG REQUIRED)
45*03a02ad0SJames Feist        enable_testing ()
46*03a02ad0SJames Feist    endif ()
47*03a02ad0SJames Feistendif ()
48*03a02ad0SJames Feist
49*03a02ad0SJames Feistadd_definitions (-DBOOST_ERROR_CODE_HEADER_ONLY)
50*03a02ad0SJames Feistadd_definitions (-DBOOST_SYSTEM_NO_DEPRECATED)
51*03a02ad0SJames Feistadd_definitions (-DBOOST_ALL_NO_LIB)
52*03a02ad0SJames Feistadd_definitions (-DBOOST_NO_RTTI)
53*03a02ad0SJames Feistadd_definitions (-DBOOST_NO_TYPEID)
54*03a02ad0SJames Feistadd_definitions (-DBOOST_ASIO_DISABLE_THREADS)
55*03a02ad0SJames Feist
56*03a02ad0SJames Feistinclude_directories (${CMAKE_CURRENT_SOURCE_DIR}/include)
57*03a02ad0SJames Feistinclude_directories (${Boost_INCLUDE_DIRS})
58*03a02ad0SJames Feistinclude_directories (${CMAKE_CURRENT_SOURCE_DIR}/include)
59*03a02ad0SJames Feist
60*03a02ad0SJames Feistadd_executable (callback-manager src/callback_manager.cpp)
61*03a02ad0SJames Feist
62*03a02ad0SJames Feisttarget_link_libraries (callback-manager -lsystemd)
63*03a02ad0SJames Feisttarget_link_libraries (callback-manager stdc++fs)
64*03a02ad0SJames Feisttarget_link_libraries (callback-manager ${Boost_LIBRARIES})
65*03a02ad0SJames Feisttarget_link_libraries (callback-manager sdbusplus)
66*03a02ad0SJames Feist
67*03a02ad0SJames Feistif (NOT YOCTO)
68*03a02ad0SJames Feist    add_dependencies (callback-manager sdbusplus-project)
69*03a02ad0SJames Feistendif ()
70*03a02ad0SJames Feist
71*03a02ad0SJames Feistset (SERVICE_FILES ${PROJECT_SOURCE_DIR}/service_files/callback-manager.service)
72*03a02ad0SJames Feist
73*03a02ad0SJames Feistinstall (TARGETS callback-manager DESTINATION sbin)
74*03a02ad0SJames Feistinstall (FILES ${SERVICE_FILES} DESTINATION /lib/systemd/system/)
75