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