summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authoreportnov <eportnov@ibs.ru>2022-09-09 11:10:14 +0300
committereportnov <eportnov@ibs.ru>2022-09-09 12:41:59 +0300
commit9fa4addff6f90a8b5697a594e034f5517d64dd25 (patch)
treeb429545eba770ea5aadd030b40f62ca8ab5b208a /CMakeLists.txt
downloadobmc-sila-smtp-9fa4addff6f90a8b5697a594e034f5517d64dd25.tar.xz
first comit
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt118
1 files changed, 118 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..4d93f95
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,118 @@
+cmake_minimum_required(VERSION 3.5)
+
+project(smtp LANGUAGES CXX)
+
+cmake_policy(SET CMP0054 NEW)
+
+set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -fno-rtti")
+# Silence sdbusplus warnings
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-parameter")
+set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Os -flto")
+set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0")
+
+if(NOT ${YOCTO_DEPENDENCIES})
+ include(ExternalProject)
+
+ ExternalProject_Add(
+ Boost
+ URL "https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.tar.bz2"
+ URL_MD5 "33334dd7f862e8ac9fe1cc7c6584fb6d"
+ SOURCE_DIR ${CMAKE_BINARY_DIR}/src/boost
+ BINARY_DIR ${CMAKE_BINARY_DIR}/libs/boost
+ CONFIGURE_COMMAND cd <SOURCE_DIR> && ./bootstrap.sh
+ BUILD_COMMAND cd <SOURCE_DIR> && ./b2 --exec-prefix=<BINARY_DIR>
+ --prefix=<BINARY_DIR> --with-system --with-coroutine install
+ INSTALL_COMMAND ""
+ UPDATE_COMMAND "")
+
+ set(CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/libs/boost/ ${CMAKE_PREFIX_PATH})
+ include_directories(SYSTEM ${CMAKE_BINARY_DIR}/libs/boost/include)
+ link_directories(SYSTEM ${CMAKE_BINARY_DIR}/libs/boost/lib)
+
+ ExternalProject_Add(
+ sdbusplus-project
+ PREFIX ${CMAKE_BINARY_DIR}/sdbusplus-project
+ GIT_REPOSITORY https://github.com/openbmc/sdbusplus.git
+ GIT_TAG afe80cf2e5dc4aefe3b041adeb0230e61929bf12
+ SOURCE_DIR ${CMAKE_BINARY_DIR}/sdbusplus-src
+ BINARY_DIR ${CMAKE_BINARY_DIR}/sdbusplus-build
+ CONFIGURE_COMMAND ""
+ BUILD_COMMAND cd ${CMAKE_BINARY_DIR}/sdbusplus-src && ./bootstrap.sh &&
+ ./configure --enable-transaction && make -j libsdbusplus.la
+ INSTALL_COMMAND ""
+ LOG_DOWNLOAD ON
+ UPDATE_COMMAND "")
+
+ include_directories(${CMAKE_BINARY_DIR}/sdbusplus-src)
+ link_directories(${CMAKE_BINARY_DIR}/sdbusplus-src/.libs)
+
+ # Boost related definitions
+ add_definitions(-DBOOST_COROUTINES_NO_DEPRECATION_WARNING)
+ 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)
+else()
+ # Include Boost library. This allows specify exact version of BOOST to be
+ # used, especially important while using valgrind, to point BOOST that is
+ # compiled with valgrind support
+ if(${BOOST_VERSION})
+ find_package(Boost ${BOOST_VERSION} EXACT)
+ else()
+ find_package(Boost 1.69 REQUIRED COMPONENTS coroutine context)
+ endif()
+ message("++ Using Boost version: " ${Boost_VERSION})
+
+ include_directories(${Boost_INCLUDE_DIRS})
+ link_directories(${Boost_LIBRARY_DIRS})
+endif()
+
+include_directories(src)
+
+set(SRC_DIR src)
+set(SRC_FILES
+ ${SRC_DIR}/main.cpp
+ ${SRC_DIR}/smtp_service.cpp
+ ${SRC_DIR}/smtp_service.hpp
+ ${SRC_DIR}/message_sender.hpp
+ ${SRC_DIR}/message_sender.cpp
+ ${SRC_DIR}/settings_storage.hpp
+
+ ${SRC_DIR}/message_builder/date.hpp
+ ${SRC_DIR}/message_builder/date.cpp
+ ${SRC_DIR}/message_builder/mail_to.hpp
+ ${SRC_DIR}/message_builder/mail_to.cpp
+ ${SRC_DIR}/message_builder/cc.hpp
+ ${SRC_DIR}/message_builder/cc.cpp
+ ${SRC_DIR}/message_builder/subject.hpp
+ ${SRC_DIR}/message_builder/subject.cpp
+ ${SRC_DIR}/message_builder/text.hpp
+ ${SRC_DIR}/message_builder/text.cpp
+ ${SRC_DIR}/message_builder/from.hpp
+ ${SRC_DIR}/message_builder/from.cpp
+
+ ${SRC_DIR}/message_builder/types/idecorator.hpp
+ )
+
+add_executable(smtp ${SRC_FILES})
+if(NOT ${YOCTO_DEPENDENCIES})
+ add_dependencies(smtp sdbusplus-project)
+endif()
+target_link_libraries(smtp boost_context)
+target_link_libraries(smtp sdbusplus)
+target_link_libraries(smtp systemd)
+target_link_libraries(smtp curl)
+
+#target_link_libraries(curl_smtp curl)
+#target_link_libraries (${PROJECT_NAME} ${Boost_LIBRARIES})
+#target_link_libraries (${PROJECT_NAME} ${SDBUSPLUSPLUS_LIBRARIES}
+# phosphor_logging)
+install(TARGETS smtp DESTINATION bin)
+install(FILES ${PROJECT_SOURCE_DIR}/xyz.openbmc_project.SMTP.service
+ DESTINATION /lib/systemd/system/)