blob: 0b5f66227d7f9a2fb51cd445d46a72d6e80e4361 [file] [log] [blame]
cmake_minimum_required (VERSION 3.6)
project (peci-pcie CXX)
include (ExternalProject)
set (CMAKE_CXX_STANDARD 20)
set (CMAKE_CXX_STANDARD_REQUIRED ON)
add_executable (peci-pcie src/peci_pcie.cpp)
option (
WAIT_FOR_OS_STANDBY
"Wait for the OS Standby state to indicate that BIOS is complete before starting the PCIe scan"
OFF
)
option (
USE_RDENDPOINTCFG
"Use the RdEndpointConfig PECI command to read PCI data"
OFF
)
target_compile_definitions (
peci-pcie PRIVATE $<$<BOOL:${WAIT_FOR_OS_STANDBY}>: -DWAIT_FOR_OS_STANDBY>
peci-pcie PRIVATE $<$<BOOL:${USE_RDENDPOINTCFG}>: -DUSE_RDENDPOINTCFG>
)
option (YOCTO "Enable Building in Yocto" OFF)
if (NOT YOCTO)
add_dependencies (peci-pcie libpeci)
externalproject_add (libpeci PREFIX ${CMAKE_BINARY_DIR}/libpeci
GIT_REPOSITORY https://github.com/openbmc/libpeci.git
GIT_TAG bc641112abc99b4a972665aa984023a6713a21ac
INSTALL_COMMAND "")
externalproject_get_property (libpeci SOURCE_DIR)
include_directories (${SOURCE_DIR})
externalproject_get_property (libpeci BINARY_DIR)
add_library (peci SHARED IMPORTED)
set_target_properties (peci
PROPERTIES IMPORTED_LOCATION
${BINARY_DIR}/libpeci.so)
endif ()
target_include_directories (peci-pcie PRIVATE ${CMAKE_SOURCE_DIR})
target_link_libraries (peci-pcie peci sdbusplus -lsystemd)
include_directories (${CMAKE_CURRENT_SOURCE_DIR}/include)
install (TARGETS peci-pcie
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib/static)
find_package (Boost 1.66 REQUIRED)
include_directories (${BOOST_SRC_DIR})
add_definitions (-DBOOST_ERROR_CODE_HEADER_ONLY)
add_definitions (-DBOOST_SYSTEM_NO_DEPRECATED)
add_definitions (-DBOOST_ALL_NO_LIB)
add_definitions (-DBOOST_NO_RTTI)
add_definitions (-DBOOST_NO_TYPEID)
add_definitions (-DBOOST_ASIO_DISABLE_THREADS)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti")
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-rtti")
find_package (PkgConfig REQUIRED)
pkg_get_variable(SYSTEMD_SYSTEM_UNIT_DIR systemd systemdsystemunitdir)
set (SERVICE_FILES
${PROJECT_SOURCE_DIR}/service_files/xyz.openbmc_project.PCIe.service)
install (FILES ${SERVICE_FILES} DESTINATION "${SYSTEMD_SYSTEM_UNIT_DIR}")