1*c95cf671SFeist, Jamescmake_minimum_required (VERSION 3.1 FATAL_ERROR) 2*c95cf671SFeist, Jamesset (BUILD_SHARED_LIBRARIES OFF) 3*c95cf671SFeist, Jamesinclude (ExternalProject) 4*c95cf671SFeist, Jamesset (CMAKE_CXX_STANDARD 17) 5*c95cf671SFeist, Jamesset (CMAKE_CXX_STANDARD_REQUIRED ON) 6*c95cf671SFeist, Jamesset (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH}) 7*c95cf671SFeist, Jamesif (NOT YOCTO) # to download gtest 8*c95cf671SFeist, James include ("cmake/HunterGate.cmake") 9*c95cf671SFeist, James huntergate (URL "https://github.com/ruslo/hunter/archive/v0.18.64.tar.gz" 10*c95cf671SFeist, James SHA1 "baf9c8cc4f65306f0e442b5419967b4c4c04589a") 11*c95cf671SFeist, Jamesendif () 12*c95cf671SFeist, James 13*c95cf671SFeist, Jamesproject (hsbp-manager CXX) 14*c95cf671SFeist, James 15*c95cf671SFeist, Jamesset ( 16*c95cf671SFeist, James CMAKE_CXX_FLAGS 17*c95cf671SFeist, James "${CMAKE_CXX_FLAGS} -lstdc++fs \ 18*c95cf671SFeist, James -Werror \ 19*c95cf671SFeist, James -Wall \ 20*c95cf671SFeist, James -Wextra \ 21*c95cf671SFeist, James -Wshadow \ 22*c95cf671SFeist, James -Wnon-virtual-dtor \ 23*c95cf671SFeist, James -Wold-style-cast \ 24*c95cf671SFeist, James -Wcast-align \ 25*c95cf671SFeist, James -Wunused \ 26*c95cf671SFeist, James -Woverloaded-virtual \ 27*c95cf671SFeist, James -Wpedantic \ 28*c95cf671SFeist, James -Wconversion \ 29*c95cf671SFeist, James -Wmisleading-indentation \ 30*c95cf671SFeist, James -Wduplicated-cond \ 31*c95cf671SFeist, James -Wduplicated-branches \ 32*c95cf671SFeist, James -Wlogical-op \ 33*c95cf671SFeist, James -Wnull-dereference \ 34*c95cf671SFeist, James -Wuseless-cast \ 35*c95cf671SFeist, James -Wdouble-promotion \ 36*c95cf671SFeist, James -Wformat=2 \ 37*c95cf671SFeist, James -fno-rtti" 38*c95cf671SFeist, James) 39*c95cf671SFeist, James 40*c95cf671SFeist, Jamesoption (YOCTO "Enable Building in Yocto" OFF) 41*c95cf671SFeist, James 42*c95cf671SFeist, Jamesif (NOT YOCTO) 43*c95cf671SFeist, James externalproject_add ( 44*c95cf671SFeist, James Boost URL 45*c95cf671SFeist, James https://dl.bintray.com/boostorg/release/1.69.0/source/boost_1_69_0.tar.gz 46*c95cf671SFeist, James URL_MD5 b50944c0c13f81ce2c006802a1186f5a SOURCE_DIR 47*c95cf671SFeist, James "${CMAKE_BINARY_DIR}/boost-src" BINARY_DIR 48*c95cf671SFeist, James "${CMAKE_BINARY_DIR}/boost-build" CONFIGURE_COMMAND "" BUILD_COMMAND "" 49*c95cf671SFeist, James INSTALL_COMMAND mkdir -p "${CMAKE_BINARY_DIR}/prefix/include/" && cp -R 50*c95cf671SFeist, James ${CMAKE_BINARY_DIR}/boost-src/boost ${CMAKE_BINARY_DIR}/prefix/include 51*c95cf671SFeist, James ) # requires apt install autoconf-archive and autoconf 52*c95cf671SFeist, James externalproject_add (sdbusplus-project PREFIX 53*c95cf671SFeist, James ${CMAKE_BINARY_DIR}/sdbusplus-project GIT_REPOSITORY 54*c95cf671SFeist, James https://github.com/openbmc/sdbusplus.git GIT_TAG 55*c95cf671SFeist, James bed15f0cee4784acdf151cca14efdfb98cb9d397 SOURCE_DIR 56*c95cf671SFeist, James ${CMAKE_BINARY_DIR}/sdbusplus-src BINARY_DIR 57*c95cf671SFeist, James ${CMAKE_BINARY_DIR}/sdbusplus-build CONFIGURE_COMMAND 58*c95cf671SFeist, James "" BUILD_COMMAND cd ${CMAKE_BINARY_DIR}/sdbusplus-src 59*c95cf671SFeist, James && ./bootstrap.sh && ./configure --enable-transaction 60*c95cf671SFeist, James && make -j libsdbusplus.la INSTALL_COMMAND "" 61*c95cf671SFeist, James LOG_DOWNLOAD ON) 62*c95cf671SFeist, James 63*c95cf671SFeist, James include_directories (SYSTEM ${CMAKE_BINARY_DIR}/sdbusplus-src) 64*c95cf671SFeist, James link_directories (${CMAKE_BINARY_DIR}/sdbusplus-src/.libs) 65*c95cf671SFeist, James 66*c95cf671SFeist, James include_directories (SYSTEM ${CMAKE_BINARY_DIR}/boost-src) 67*c95cf671SFeist, James set (CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/boost-src ${CMAKE_PREFIX_PATH}) 68*c95cf671SFeist, James 69*c95cf671SFeist, James option (HUNTER_ENABLED "Enable hunter package pulling" ON) 70*c95cf671SFeist, James hunter_add_package (GTest) 71*c95cf671SFeist, James 72*c95cf671SFeist, James find_package (GTest CONFIG REQUIRED) 73*c95cf671SFeist, Jamesendif () 74*c95cf671SFeist, James 75*c95cf671SFeist, Jamesadd_definitions (-DBOOST_ERROR_CODE_HEADER_ONLY) 76*c95cf671SFeist, Jamesadd_definitions (-DBOOST_SYSTEM_NO_DEPRECATED) 77*c95cf671SFeist, Jamesadd_definitions (-DBOOST_ALL_NO_LIB) 78*c95cf671SFeist, Jamesadd_definitions (-DBOOST_NO_RTTI) 79*c95cf671SFeist, Jamesadd_definitions (-DBOOST_NO_TYPEID) 80*c95cf671SFeist, Jamesadd_definitions (-DBOOST_ASIO_DISABLE_THREADS) 81*c95cf671SFeist, James 82*c95cf671SFeist, Jamesinclude_directories (${CMAKE_CURRENT_SOURCE_DIR}/include) 83*c95cf671SFeist, James 84*c95cf671SFeist, Jamesadd_executable (hsbp-manager src/hsbp_manager.cpp) 85*c95cf671SFeist, James 86*c95cf671SFeist, Jamestarget_link_libraries (hsbp-manager -lsystemd) 87*c95cf671SFeist, Jamestarget_link_libraries (hsbp-manager i2c) 88*c95cf671SFeist, Jamestarget_link_libraries (hsbp-manager ${Boost_LIBRARIES}) 89*c95cf671SFeist, Jamestarget_link_libraries (hsbp-manager sdbusplus) 90*c95cf671SFeist, James 91*c95cf671SFeist, Jamesif (NOT YOCTO) 92*c95cf671SFeist, James add_dependencies (hsbp-manager sdbusplus-project) 93*c95cf671SFeist, Jamesendif () 94*c95cf671SFeist, James 95*c95cf671SFeist, Jamesset (SERVICE_FILES ${PROJECT_SOURCE_DIR}/service_files/hsbp-manager.service) 96*c95cf671SFeist, James 97*c95cf671SFeist, Jamesinstall (TARGETS hsbp-manager DESTINATION bin) 98*c95cf671SFeist, Jamesinstall (FILES ${SERVICE_FILES} DESTINATION /lib/systemd/system/) 99