blob: 6b44e9aa338e727045c0f4cdcb827869ba59faa4 [file] [log] [blame]
Feist, Jamesc95cf672019-08-29 16:10:35 -07001cmake_minimum_required (VERSION 3.1 FATAL_ERROR)
2set (BUILD_SHARED_LIBRARIES OFF)
3include (ExternalProject)
Patrick Williamsffcaad82022-09-01 15:09:18 -05004set (CMAKE_CXX_STANDARD 20)
Feist, Jamesc95cf672019-08-29 16:10:35 -07005set (CMAKE_CXX_STANDARD_REQUIRED ON)
Feist, Jamesc95cf672019-08-29 16:10:35 -07006
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 \
Jason M. Billsa83c8272020-12-09 12:16:34 -080031 "
Feist, Jamesc95cf672019-08-29 16:10:35 -070032)
Jason M. Billsa83c8272020-12-09 12:16:34 -080033# Temporarily disable rtti
34# See https://github.com/chriskohlhoff/asio/issues/533
35# -fno-rtti
Feist, Jamesc95cf672019-08-29 16:10:35 -070036
37option (YOCTO "Enable Building in Yocto" OFF)
38
39if (NOT YOCTO)
40 externalproject_add (
41 Boost URL
Rohit Chandeldad853a2021-05-14 02:10:46 +053042 https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.tar.gz
43 URL_MD5 e425bf1f1d8c36a3cd464884e74f007a SOURCE_DIR
Feist, Jamesc95cf672019-08-29 16:10:35 -070044 "${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
Patrick Williams6fc0ed72022-07-25 06:58:53 -050052 8a97100b806225df40c490eb748c9a4e1b3c11b3 SOURCE_DIR
Feist, Jamesc95cf672019-08-29 16:10:35 -070053 ${CMAKE_BINARY_DIR}/sdbusplus-src BINARY_DIR
54 ${CMAKE_BINARY_DIR}/sdbusplus-build CONFIGURE_COMMAND
55 "" BUILD_COMMAND cd ${CMAKE_BINARY_DIR}/sdbusplus-src
Patrick Williams0d26db32020-06-01 07:45:28 -050056 && meson build -Ddefault_library=static && ninja -C
57 build libsdbusplus.a INSTALL_COMMAND ""
Feist, Jamesc95cf672019-08-29 16:10:35 -070058 LOG_DOWNLOAD ON)
59
60 include_directories (SYSTEM ${CMAKE_BINARY_DIR}/sdbusplus-src)
Patrick Williams0d26db32020-06-01 07:45:28 -050061 link_directories (${CMAKE_BINARY_DIR}/sdbusplus-src/build)
Feist, Jamesc95cf672019-08-29 16:10:35 -070062
63 include_directories (SYSTEM ${CMAKE_BINARY_DIR}/boost-src)
64 set (CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/boost-src ${CMAKE_PREFIX_PATH})
Feist, Jamesc95cf672019-08-29 16:10:35 -070065endif ()
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)
James Feist0b236ab2019-10-02 09:09:16 -070082target_link_libraries (hsbp-manager stdc++fs)
Rohit Chandel52639be2021-04-14 15:10:41 +053083target_link_libraries (hsbp-manager gpiodcxx)
Feist, Jamesc95cf672019-08-29 16:10:35 -070084
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/)