diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 118 |
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/) |