blob: d2596e03044d9a3a571f5321873b34b359bbc0f8 [file] [log] [blame]
Jia, Chunhuia835eaa2018-09-05 09:00:41 +08001cmake_minimum_required (VERSION 3.5 FATAL_ERROR)
2
3cmake_policy (SET CMP0054 NEW)
4
Jason M. Bills3f7c5e42018-10-03 14:00:41 -07005option (YOCTO "Use YOCTO depedencies system" OFF)
Jia, Chunhuia835eaa2018-09-05 09:00:41 +08006include (ExternalProject)
Patrick Williamsac0b7272022-09-01 15:09:18 -05007set (CMAKE_CXX_STANDARD 20)
Jia, Chunhuia835eaa2018-09-05 09:00:41 +08008set (CMAKE_CXX_STANDARD_REQUIRED ON)
9set (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
10
James Feist25690252019-12-23 12:25:49 -080011option (USING_ENTITY_MANAGER_DECORATORS
12 "Enable using EM decorators to map FRUs to entity IDs" ON)
13
James Feist13b00392019-08-19 16:16:08 -070014set (
15 CMAKE_CXX_FLAGS
16 "${CMAKE_CXX_FLAGS} \
17 -Werror \
18 -Wtype-limits \
19 -Wnull-dereference \
20"
21)
Jia, Chunhuia835eaa2018-09-05 09:00:41 +080022
23project (intel-ipmi-oem CXX)
24
25add_definitions (-DBOOST_ERROR_CODE_HEADER_ONLY)
26add_definitions (-DBOOST_SYSTEM_NO_DEPRECATED)
27add_definitions (-DBOOST_ALL_NO_LIB)
28add_definitions (-DBOOST_NO_RTTI)
29add_definitions (-DBOOST_NO_TYPEID)
Vernon Mauery9e7e17a2019-03-20 13:42:06 -070030add_definitions (-DBOOST_ASIO_DISABLE_THREADS)
Vernon Mauery8b69fae2019-03-20 13:43:11 -070031add_definitions (-DBOOST_COROUTINES_NO_DEPRECATION_WARNING)
Vernon Mauerya3702c12019-05-22 13:20:59 -070032add_definitions (-Wno-psabi)
Jia, Chunhuia835eaa2018-09-05 09:00:41 +080033
Jason M. Billsb08f84e2019-06-10 12:59:42 -070034if (NOT YOCTO) # headers that can't be built without yocto
Vernon Mauery62072072022-06-15 11:42:33 -070035
36 execute_process(
37 COMMAND ${CMAKE_CXX_COMPILER} -dumpmachine
38 OUTPUT_VARIABLE TRIPLE OUTPUT_STRIP_TRAILING_WHITESPACE)
39 message(STATUS "Target triple: ${TRIPLE}")
40
James Feist13b00392019-08-19 16:16:08 -070041 include_directories (SYSTEM non-yocto)
Vernon Mauerya3702c12019-05-22 13:20:59 -070042
Jia, Chunhuia835eaa2018-09-05 09:00:41 +080043 configure_file (CMakeLists.txt.in 3rdparty/CMakeLists.txt)
Jason M. Billsb08f84e2019-06-10 12:59:42 -070044 execute_process (COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
45 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3rdparty)
46 execute_process (COMMAND ${CMAKE_COMMAND} --build .
47 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3rdparty)
Jia, Chunhuia835eaa2018-09-05 09:00:41 +080048
49 set (CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/prefix ${CMAKE_PREFIX_PATH})
James Feist13b00392019-08-19 16:16:08 -070050 include_directories (SYSTEM ${CMAKE_BINARY_DIR}/prefix/include)
Vernon Mauery8b69fae2019-03-20 13:43:11 -070051 link_directories (${CMAKE_BINARY_DIR}/prefix/lib)
Vernon Mauery62072072022-06-15 11:42:33 -070052 link_directories (${CMAKE_BINARY_DIR}/prefix/lib/${TRIPLE})
Jia, Chunhuia835eaa2018-09-05 09:00:41 +080053
James Feist13b00392019-08-19 16:16:08 -070054 include_directories (SYSTEM ${CMAKE_BINARY_DIR}/sdbusplus-src)
Jia, Chunhuia835eaa2018-09-05 09:00:41 +080055 link_directories (${CMAKE_BINARY_DIR}/sdbusplus-src/.libs)
James Feist13b00392019-08-19 16:16:08 -070056 include_directories (SYSTEM ${CMAKE_BINARY_DIR}/phosphor-logging-src)
James Feistb9683922019-01-02 15:04:45 -080057 link_directories (${CMAKE_BINARY_DIR}/phosphor-logging-src/.libs)
James Feist13b00392019-08-19 16:16:08 -070058 include_directories (SYSTEM ${CMAKE_BINARY_DIR}/phosphor-ipmi-host/include)
59 include_directories (SYSTEM ${CMAKE_BINARY_DIR}/ipmid/user_channel)
60 include_directories (SYSTEM ${CMAKE_BINARY_DIR}) # link_directories (${CMAK
61 # E_BINARY_DIR}/sdbusplus-
62 # src/.libs)
Jason M. Bills3f7c5e42018-10-03 14:00:41 -070063endif ()
Jia, Chunhuia835eaa2018-09-05 09:00:41 +080064
Jason M. Bills3f7c5e42018-10-03 14:00:41 -070065if (YOCTO)
Jia, Chunhuia835eaa2018-09-05 09:00:41 +080066 find_package (PkgConfig REQUIRED)
67 pkg_check_modules (LOGGING phosphor-logging REQUIRED)
James Feist13b00392019-08-19 16:16:08 -070068 include_directories (SYSTEM ${LOGGING_INCLUDE_DIRS})
Jia, Chunhuia835eaa2018-09-05 09:00:41 +080069 link_directories (${LOGGING_LIBRARY_DIRS})
Jason M. Bills3f7c5e42018-10-03 14:00:41 -070070
Vernon Mauery8b69fae2019-03-20 13:43:11 -070071 pkg_check_modules (LIBIPMID libipmid REQUIRED)
James Feist13b00392019-08-19 16:16:08 -070072 include_directories (SYSTEM ${LIBIPMID_INCLUDE_DIRS})
Vernon Mauery8b69fae2019-03-20 13:43:11 -070073 link_directories (${LIBIPMID_LIBRARY_DIRS})
74
Ivan Mikhaylovac330b82023-05-25 13:48:59 +000075
76 pkg_check_modules (TINYXML2 tinyxml2 REQUIRED)
77 include_directories (SYSTEM ${TINYXML2_INCLUDE_DIRS})
78 link_directories (${TINYXML2_LIBRARY_DIRS})
79
Jia, Chunhuia835eaa2018-09-05 09:00:41 +080080endif ()
81
82include_directories (${CMAKE_CURRENT_SOURCE_DIR}/include)
83
James Feistb9683922019-01-02 15:04:45 -080084if (NOT YOCTO)
Jason M. Bills72867de2018-11-28 12:46:59 -080085 set (SENSOR_TEST_SRC tests/test_sensorcommands.cpp)
James Feistb9683922019-01-02 15:04:45 -080086
87 find_package (GTest REQUIRED)
Jason M. Bills3f7c5e42018-10-03 14:00:41 -070088
89 enable_testing ()
90
91 add_executable (runSensorTests ${SENSOR_TEST_SRC})
92 add_test (NAME test_sensorcommands COMMAND runSensorTests)
Jason M. Billsb08f84e2019-06-10 12:59:42 -070093 target_link_libraries (runSensorTests ${GTEST_BOTH_LIBRARIES}
94 ${CMAKE_THREAD_LIBS_INIT} sdbusplus -lsystemd)
Jason M. Bills3f7c5e42018-10-03 14:00:41 -070095endif ()
Vernon Mauerya3702c12019-05-22 13:20:59 -070096#
97# import OpenSSL (crypto)
98find_package (OpenSSL REQUIRED)
James Feist13b00392019-08-19 16:16:08 -070099include_directories (SYSTEM ${OPENSSL_INCLUDE_DIR})
Vernon Mauerya3702c12019-05-22 13:20:59 -0700100
Vernon Mauery0d0cd162020-01-31 10:04:10 -0800101include_directories (SYSTEM ${CMAKE_BINARY_DIR})
Vernon Mauery8b7c1562022-09-27 16:10:38 -0700102add_custom_command(OUTPUT include/ipmi-allowlist.hpp
103 COMMAND ./generate-allowlist.py
104 ARGS ipmi-allowlist.conf ${CMAKE_BINARY_DIR}/ipmi-allowlist.hpp
105 MAIN_DEPENDENCY ipmi-allowlist.conf
106 DEPENDS generate-allowlist.py
Vernon Mauery0d0cd162020-01-31 10:04:10 -0800107 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
108
Jason M. Billsb08f84e2019-06-10 12:59:42 -0700109add_library (zinteloemcmds
Kuiying Wang6d6dc7a2020-04-02 10:15:19 +0800110 SHARED src/oemcommands.cpp src/sensorcommands.cpp src/biosconfigcommands.cpp
Jason M. Billsb08f84e2019-06-10 12:59:42 -0700111 src/storagecommands.cpp src/multinodecommands.cpp
Vernon Maueryc8b0c462022-09-27 16:01:25 -0700112 src/firmware-update.cpp src/appcommands.cpp
Jason M. Billsb08f84e2019-06-10 12:59:42 -0700113 src/smbiosmdrv2handler.cpp src/manufacturingcommands.cpp
114 src/bmccontrolservices.cpp src/bridgingcommands.cpp
Agnieszka Szlendakd2220cc2020-04-17 15:00:12 +0200115 src/ipmi_to_redfish_hooks.cpp src/me_to_redfish_hooks.cpp
Vernon Mauery8b7c1562022-09-27 16:10:38 -0700116 src/chassiscommands.cpp src/allowlist-filter.cpp
117 include/ipmi-allowlist.hpp)
Richard Marian Thomaiyar6e056412018-11-14 23:26:49 +0530118set_target_properties (zinteloemcmds PROPERTIES VERSION "0.1.0")
119set_target_properties (zinteloemcmds PROPERTIES SOVERSION "0")
Vernon Mauery4ac799d2019-05-20 15:50:37 -0700120target_link_libraries (zinteloemcmds stdc++fs)
Vernon Mauery8b69fae2019-03-20 13:43:11 -0700121target_link_libraries (zinteloemcmds ipmid)
Richard Marian Thomaiyar6e056412018-11-14 23:26:49 +0530122target_link_libraries (zinteloemcmds sdbusplus)
James Feista128f492018-12-20 12:31:56 -0800123target_link_libraries (zinteloemcmds phosphor_logging)
Suryakanth Sekard509eb92018-11-15 17:44:11 +0530124target_link_libraries (zinteloemcmds -luserlayer)
125target_link_libraries (zinteloemcmds -lchannellayer)
Vernon Mauerya3702c12019-05-22 13:20:59 -0700126target_link_libraries (zinteloemcmds ${OPENSSL_CRYPTO_LIBRARY})
Yong Lid3f2ec32019-12-25 17:51:48 +0800127target_link_libraries (zinteloemcmds gpiodcxx)
Kuiying Wang6d6dc7a2020-04-02 10:15:19 +0800128target_link_libraries (zinteloemcmds tinyxml2)
129
James Feistb9683922019-01-02 15:04:45 -0800130install (TARGETS zinteloemcmds DESTINATION lib/ipmid-providers)
Rajashekar Gade Reddydf5e3272019-09-05 18:10:53 +0530131option (INTEL_PFR_ENABLED "Intel PFR Enabled" OFF)
Richard Marian Thomaiyar99d7d352019-11-11 12:11:35 +0530132option (BMC_VALIDATION_UNSECURE_FEATURE
133 "Enables unsecure features required by validation. Note: must
134 be turned off for production images."
135 OFF)
Yong Li38b58f52019-12-24 09:29:25 +0800136
Rajashekar Gade Reddydf5e3272019-09-05 18:10:53 +0530137target_compile_definitions (
138 zinteloemcmds PRIVATE
139 $<$<BOOL:${INTEL_PFR_ENABLED}>: -DINTEL_PFR_ENABLED>
Richard Marian Thomaiyar99d7d352019-11-11 12:11:35 +0530140 $<$<BOOL:${BMC_VALIDATION_UNSECURE_FEATURE}>:
141 -DBMC_VALIDATION_UNSECURE_FEATURE>
James Feist25690252019-12-23 12:25:49 -0800142 $<$<BOOL:${USING_ENTITY_MANAGER_DECORATORS}>:
143 -DUSING_ENTITY_MANAGER_DECORATORS>
Rajashekar Gade Reddydf5e3272019-09-05 18:10:53 +0530144)
Rui Zhangaedf5a92020-09-03 09:57:33 -0700145
146# Code Coverage
Vernon Mauerydcff1502022-09-28 11:12:46 -0700147if (FALSE)
Rui Zhangaedf5a92020-09-03 09:57:33 -0700148 # non-Debug build may generate misleading code coverage results.
149 set(CMAKE_BUILD_TYPE Debug)
150 message(WARNING "Using Debug build type!")
151 include(CodeCoverage)
152 APPEND_COVERAGE_COMPILER_FLAGS()
153 # check-code-coverage is a required name by
154 # openbmc-build-scripts/scripts/unit-test.py#L487.
155 SETUP_TARGET_FOR_COVERAGE_LCOV(
156 NAME check-code-coverage
157 EXECUTABLE runSensorTests
158 DEPENDENCIES runSensorTests
159 EXCLUDE "/usr/include/*" "/usr/local/include/*" "prefix/*"
160 )
161endif ()