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 && ./bootstrap.sh BUILD_COMMAND cd && ./b2 --exec-prefix= --prefix= --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(MANAGMENT_DIR src/managment) set(FILE_DIR src/file) set(PARSER_DIR src/file/parser) set(MANAGER_BUILDER_DIR src/managment/builder) set(CONVERTER_DIR src/converter) set(SRC_FILES ${SRC_DIR}/main.cpp ${SERVICE_DIR}/smtp.cpp ${SERVICE_DIR}/smtp.hpp ${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 ${MANAGMENT_DIR}/mail.hpp ${MANAGMENT_DIR}/mail.cpp ${MANAGMENT_DIR}/settings.hpp ${MANAGMENT_DIR}/settings.cpp ${MANAGMENT_DIR}/logger.hpp ${MANAGMENT_DIR}/logger.cpp ${MANAGMENT_DIR}/general.hpp ${FILE_DIR}/mail.hpp ${FILE_DIR}/mail.cpp ${FILE_DIR}/settings.hpp ${FILE_DIR}/settings.cpp ${CONVERTER_DIR}/full.hpp ${CONVERTER_DIR}/full.cpp ${CONVERTER_DIR}/settings.hpp ${CONVERTER_DIR}/settings.cpp ${CONVERTER_DIR}/file.hpp ${CONVERTER_DIR}/file.cpp ${CONVERTER_DIR}/string.hpp ${CONVERTER_DIR}/string.cpp ${PARSER_DIR}/settings.hpp ${PARSER_DIR}/settings.cpp ${MANAGER_BUILDER_DIR}/settings.hpp ${MANAGER_BUILDER_DIR}/settings.cpp ${MANAGER_BUILDER_DIR}/mail.hpp ${MANAGER_BUILDER_DIR}/mail.cpp ) 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/)