blob: ac3687f73ef2fbab8eb513ddda2fc5acbaf67db8 [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)
7set (CMAKE_CXX_STANDARD 17)
8set (CMAKE_CXX_STANDARD_REQUIRED ON)
9set (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
10
11set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti")
12
13project (intel-ipmi-oem CXX)
14
15add_definitions (-DBOOST_ERROR_CODE_HEADER_ONLY)
16add_definitions (-DBOOST_SYSTEM_NO_DEPRECATED)
17add_definitions (-DBOOST_ALL_NO_LIB)
18add_definitions (-DBOOST_NO_RTTI)
19add_definitions (-DBOOST_NO_TYPEID)
Vernon Mauery9e7e17a2019-03-20 13:42:06 -070020add_definitions (-DBOOST_ASIO_DISABLE_THREADS)
Vernon Mauery8b69fae2019-03-20 13:43:11 -070021add_definitions (-DBOOST_COROUTINES_NO_DEPRECATION_WARNING)
Vernon Mauerya3702c12019-05-22 13:20:59 -070022add_definitions (-Wno-psabi)
Jia, Chunhuia835eaa2018-09-05 09:00:41 +080023
Jason M. Bills3f7c5e42018-10-03 14:00:41 -070024if (NOT YOCTO)
Vernon Mauerya3702c12019-05-22 13:20:59 -070025 # headers that can't be built without yocto
26 include_directories (non-yocto)
27
Jia, Chunhuia835eaa2018-09-05 09:00:41 +080028 configure_file (CMakeLists.txt.in 3rdparty/CMakeLists.txt)
Vernon Mauery8b69fae2019-03-20 13:43:11 -070029 execute_process (
30 COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
31 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3rdparty
32 )
33 execute_process (
34 COMMAND ${CMAKE_COMMAND} --build .
35 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3rdparty
36 )
Jia, Chunhuia835eaa2018-09-05 09:00:41 +080037
38 set (CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/prefix ${CMAKE_PREFIX_PATH})
39 include_directories (${CMAKE_BINARY_DIR}/prefix/include)
Vernon Mauery8b69fae2019-03-20 13:43:11 -070040 link_directories (${CMAKE_BINARY_DIR}/prefix/lib)
Jia, Chunhuia835eaa2018-09-05 09:00:41 +080041
Jia, Chunhuia835eaa2018-09-05 09:00:41 +080042 include_directories (${CMAKE_BINARY_DIR}/sdbusplus-src)
43 link_directories (${CMAKE_BINARY_DIR}/sdbusplus-src/.libs)
James Feistb9683922019-01-02 15:04:45 -080044 include_directories (${CMAKE_BINARY_DIR}/phosphor-logging-src)
45 link_directories (${CMAKE_BINARY_DIR}/phosphor-logging-src/.libs)
Yong Li0669d192019-05-06 14:01:46 +080046 include_directories (${CMAKE_BINARY_DIR}/intel-dbus-interfaces-src)
47 link_directories (${CMAKE_BINARY_DIR}/intel-dbus-interfaces-src/.libs)
Vernon Mauery5480ef62019-03-20 13:43:11 -070048 include_directories (${CMAKE_BINARY_DIR}/phosphor-ipmi-host/include)
Suryakanth Sekard509eb92018-11-15 17:44:11 +053049 include_directories (${CMAKE_BINARY_DIR}/ipmid/user_channel)
James Feistb9683922019-01-02 15:04:45 -080050 include_directories (${CMAKE_BINARY_DIR}) # link_directories
51 # (${CMAKE_BINARY_DIR}/sdbusplus-
52 # src/.libs)
Jason M. Bills3f7c5e42018-10-03 14:00:41 -070053endif ()
Jia, Chunhuia835eaa2018-09-05 09:00:41 +080054
Jason M. Bills3f7c5e42018-10-03 14:00:41 -070055if (YOCTO)
Jia, Chunhuia835eaa2018-09-05 09:00:41 +080056 find_package (PkgConfig REQUIRED)
57 pkg_check_modules (LOGGING phosphor-logging REQUIRED)
58 include_directories (${LOGGING_INCLUDE_DIRS})
59 link_directories (${LOGGING_LIBRARY_DIRS})
Jason M. Bills3f7c5e42018-10-03 14:00:41 -070060
Vernon Mauery8b69fae2019-03-20 13:43:11 -070061 pkg_check_modules (LIBIPMID libipmid REQUIRED)
62 include_directories (${LIBIPMID_INCLUDE_DIRS})
63 link_directories (${LIBIPMID_LIBRARY_DIRS})
64
Jia, Chunhuia835eaa2018-09-05 09:00:41 +080065endif ()
66
67include_directories (${CMAKE_CURRENT_SOURCE_DIR}/include)
68
James Feistb9683922019-01-02 15:04:45 -080069if (NOT YOCTO)
Jason M. Bills72867de2018-11-28 12:46:59 -080070 set (SENSOR_TEST_SRC tests/test_sensorcommands.cpp)
James Feistb9683922019-01-02 15:04:45 -080071
72 find_package (GTest REQUIRED)
Jason M. Bills3f7c5e42018-10-03 14:00:41 -070073
74 enable_testing ()
75
76 add_executable (runSensorTests ${SENSOR_TEST_SRC})
77 add_test (NAME test_sensorcommands COMMAND runSensorTests)
Vernon Mauery8b69fae2019-03-20 13:43:11 -070078 target_link_libraries (
79 runSensorTests ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}
Vernon Mauery53870d72019-06-04 14:21:10 -070080 sdbusplus -lsystemd
Vernon Mauery8b69fae2019-03-20 13:43:11 -070081 )
Jason M. Bills3f7c5e42018-10-03 14:00:41 -070082endif ()
83
84include_directories (${CMAKE_CURRENT_SOURCE_DIR}/include)
85
Vernon Mauerya3702c12019-05-22 13:20:59 -070086#
87# import OpenSSL (crypto)
88find_package (OpenSSL REQUIRED)
89include_directories (${OPENSSL_INCLUDE_DIR})
90
Vernon Mauery8b69fae2019-03-20 13:43:11 -070091add_library (
92 zinteloemcmds SHARED src/oemcommands.cpp src/sensorcommands.cpp
Vernon Mauery52ce6622019-05-22 09:19:46 -070093 src/storagecommands.cpp src/multinodecommands.cpp src/firmware-update.cpp
Vernon Mauerya3702c12019-05-22 13:20:59 -070094 src/smbioshandler.cpp src/smbiosmdrv2handler.cpp
95 src/manufacturingcommands.cpp src/bmccontrolservices.cpp
Jason M. Bills99b78ec2019-01-18 10:42:18 -080096 src/bridgingcommands.cpp src/ipmi_to_redfish_hooks.cpp
Vernon Mauery8b69fae2019-03-20 13:43:11 -070097)
Richard Marian Thomaiyar6e056412018-11-14 23:26:49 +053098set_target_properties (zinteloemcmds PROPERTIES VERSION "0.1.0")
99set_target_properties (zinteloemcmds PROPERTIES SOVERSION "0")
Vernon Mauery4ac799d2019-05-20 15:50:37 -0700100target_link_libraries (zinteloemcmds stdc++fs)
Vernon Mauery8b69fae2019-03-20 13:43:11 -0700101target_link_libraries (zinteloemcmds ipmid)
Richard Marian Thomaiyar6e056412018-11-14 23:26:49 +0530102target_link_libraries (zinteloemcmds sdbusplus)
James Feista128f492018-12-20 12:31:56 -0800103target_link_libraries (zinteloemcmds phosphor_logging)
Yong Li0669d192019-05-06 14:01:46 +0800104target_link_libraries (zinteloemcmds intel_dbus)
Suryakanth Sekard509eb92018-11-15 17:44:11 +0530105target_link_libraries (zinteloemcmds -luserlayer)
106target_link_libraries (zinteloemcmds -lchannellayer)
Vernon Mauerya3702c12019-05-22 13:20:59 -0700107target_link_libraries (zinteloemcmds ${OPENSSL_CRYPTO_LIBRARY})
Jason M. Billse2d1aee2018-10-03 15:57:18 -0700108
James Feistb9683922019-01-02 15:04:45 -0800109install (TARGETS zinteloemcmds DESTINATION lib/ipmid-providers)