blob: 7b4acc39e109627921a1f13fe59b3e6bfd4523bf (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
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(MESSAGE_DIR src/message)
set(SERVICE_DIR src/service)
set(SRC_FILES
${SRC_DIR}/main.cpp
${SERVICE_DIR}/smtp.cpp
${SERVICE_DIR}/smtp.hpp
${SERVICE_DIR}/settings.hpp
${SERVICE_DIR}/settings.cpp
${MESSAGE_DIR}/sender.hpp
${MESSAGE_DIR}/sender.cpp
${MESSAGE_DIR}/builder/date.hpp
${MESSAGE_DIR}/builder/date.cpp
${MESSAGE_DIR}/builder/mail_to.hpp
${MESSAGE_DIR}/builder/mail_to.cpp
${MESSAGE_DIR}/builder/cc.hpp
${MESSAGE_DIR}/builder/cc.cpp
${MESSAGE_DIR}/builder/subject.hpp
${MESSAGE_DIR}/builder/subject.cpp
${MESSAGE_DIR}/builder/text.hpp
${MESSAGE_DIR}/builder/text.cpp
${MESSAGE_DIR}/builder/from.hpp
${MESSAGE_DIR}/builder/from.cpp
${MESSAGE_DIR}/builder/types/imessage_builder.hpp
${MESSAGE_DIR}/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/)
|