1cmake_minimum_required (VERSION 3.1 FATAL_ERROR) 2set (BUILD_SHARED_LIBRARIES OFF) 3include (ExternalProject) 4set (CMAKE_CXX_STANDARD 20) 5set (CMAKE_CXX_STANDARD_REQUIRED ON) 6 7project (hsbp-manager CXX) 8 9set ( 10 CMAKE_CXX_FLAGS 11 "${CMAKE_CXX_FLAGS} -lstdc++fs \ 12 -Werror \ 13 -Wall \ 14 -Wextra \ 15 -Wshadow \ 16 -Wnon-virtual-dtor \ 17 -Wold-style-cast \ 18 -Wcast-align \ 19 -Wunused \ 20 -Woverloaded-virtual \ 21 -Wpedantic \ 22 -Wconversion \ 23 -Wmisleading-indentation \ 24 -Wduplicated-cond \ 25 -Wduplicated-branches \ 26 -Wlogical-op \ 27 -Wnull-dereference \ 28 -Wuseless-cast \ 29 -Wdouble-promotion \ 30 -Wformat=2 \ 31 " 32) 33# Temporarily disable rtti 34# See https://github.com/chriskohlhoff/asio/issues/533 35# -fno-rtti 36 37option (YOCTO "Enable Building in Yocto" OFF) 38 39if (NOT YOCTO) 40 externalproject_add ( 41 Boost URL 42 https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.tar.gz 43 URL_MD5 e425bf1f1d8c36a3cd464884e74f007a SOURCE_DIR 44 "${CMAKE_BINARY_DIR}/boost-src" BINARY_DIR 45 "${CMAKE_BINARY_DIR}/boost-build" CONFIGURE_COMMAND "" BUILD_COMMAND "" 46 INSTALL_COMMAND mkdir -p "${CMAKE_BINARY_DIR}/prefix/include/" && cp -R 47 ${CMAKE_BINARY_DIR}/boost-src/boost ${CMAKE_BINARY_DIR}/prefix/include 48 ) # requires apt install autoconf-archive and autoconf 49 externalproject_add (sdbusplus-project PREFIX 50 ${CMAKE_BINARY_DIR}/sdbusplus-project GIT_REPOSITORY 51 https://github.com/openbmc/sdbusplus.git GIT_TAG 52 8a97100b806225df40c490eb748c9a4e1b3c11b3 SOURCE_DIR 53 ${CMAKE_BINARY_DIR}/sdbusplus-src BINARY_DIR 54 ${CMAKE_BINARY_DIR}/sdbusplus-build CONFIGURE_COMMAND 55 "" BUILD_COMMAND cd ${CMAKE_BINARY_DIR}/sdbusplus-src 56 && meson build -Ddefault_library=static && ninja -C 57 build libsdbusplus.a INSTALL_COMMAND "" 58 LOG_DOWNLOAD ON) 59 60 include_directories (SYSTEM ${CMAKE_BINARY_DIR}/sdbusplus-src) 61 link_directories (${CMAKE_BINARY_DIR}/sdbusplus-src/build) 62 63 include_directories (SYSTEM ${CMAKE_BINARY_DIR}/boost-src) 64 set (CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/boost-src ${CMAKE_PREFIX_PATH}) 65endif () 66 67add_definitions (-DBOOST_ERROR_CODE_HEADER_ONLY) 68add_definitions (-DBOOST_SYSTEM_NO_DEPRECATED) 69add_definitions (-DBOOST_ALL_NO_LIB) 70add_definitions (-DBOOST_NO_RTTI) 71add_definitions (-DBOOST_NO_TYPEID) 72add_definitions (-DBOOST_ASIO_DISABLE_THREADS) 73 74include_directories (${CMAKE_CURRENT_SOURCE_DIR}/include) 75 76add_executable (hsbp-manager src/hsbp_manager.cpp) 77 78target_link_libraries (hsbp-manager -lsystemd) 79target_link_libraries (hsbp-manager i2c) 80target_link_libraries (hsbp-manager ${Boost_LIBRARIES}) 81target_link_libraries (hsbp-manager sdbusplus) 82target_link_libraries (hsbp-manager stdc++fs) 83target_link_libraries (hsbp-manager gpiodcxx) 84 85if (NOT YOCTO) 86 add_dependencies (hsbp-manager sdbusplus-project) 87endif () 88 89set (SERVICE_FILES ${PROJECT_SOURCE_DIR}/service_files/hsbp-manager.service) 90 91install (TARGETS hsbp-manager DESTINATION bin) 92install (FILES ${SERVICE_FILES} DESTINATION /lib/systemd/system/) 93