CMakeLists.txt 3.58 KB
cmake_minimum_required(VERSION 3.5)
cmake_policy(SET CMP0048 NEW)
include(CheckCXXCompilerFlag)

project(FlashMQ VERSION 0.11.3 LANGUAGES CXX)

add_definitions(-DOPENSSL_API_COMPAT=0x10100000L)
add_definitions(-DFLASHMQ_VERSION=\"${PROJECT_VERSION}\")

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

SET(CMAKE_CXX_FLAGS "-msse4.2")

check_cxx_compiler_flag("-rdynamic" COMPILER_SUPPORTS_RDYNAMIC)
if (${COMPILER_SUPPORTS_RDYNAMIC})
    set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -rdynamic")
    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -rdynamic")
endif()

add_compile_options(-Wall)

add_executable(FlashMQ
    forward_declarations.h
    mainapp.h
    utils.h
    threaddata.h
    client.h
    session.h
    mqttpacket.h
    exceptions.h
    types.h
    subscriptionstore.h
    rwlockguard.h
    retainedmessage.h
    cirbuf.h
    logger.h
    authplugin.h
    configfileparser.h
    sslctxmanager.h
    timer.h
    iowrapper.h
    mosquittoauthoptcompatwrap.h
    settings.h
    listener.h
    unscopedlock.h
    scopedsocket.h
    bindaddr.h
    oneinstancelock.h
    evpencodectxmanager.h
    acltree.h
    enums.h
    threadlocalutils.h
    flashmq_plugin.h
    retainedmessagesdb.h
    persistencefile.h
    sessionsandsubscriptionsdb.h
    qospacketqueue.h
    threadglobals.h
    threadloop.h
    publishcopyfactory.h
    variablebyteint.h
    mqtt5properties.h
    globalstats.h
    derivablecounter.h
    packetdatatypes.h

    mainapp.cpp
    main.cpp
    utils.cpp
    threaddata.cpp
    client.cpp
    session.cpp
    mqttpacket.cpp
    exceptions.cpp
    types.cpp
    subscriptionstore.cpp
    rwlockguard.cpp
    retainedmessage.cpp
    cirbuf.cpp
    logger.cpp
    authplugin.cpp
    configfileparser.cpp
    sslctxmanager.cpp
    timer.cpp
    iowrapper.cpp
    mosquittoauthoptcompatwrap.cpp
    settings.cpp
    listener.cpp
    unscopedlock.cpp
    scopedsocket.cpp
    bindaddr.cpp
    oneinstancelock.cpp
    evpencodectxmanager.cpp
    acltree.cpp
    threadlocalutils.cpp
    flashmq_plugin.cpp
    retainedmessagesdb.cpp
    persistencefile.cpp
    sessionsandsubscriptionsdb.cpp
    qospacketqueue.cpp
    threadglobals.cpp
    threadloop.cpp
    publishcopyfactory.cpp
    variablebyteint.cpp
    mqtt5properties.cpp
    globalstats.cpp
    derivablecounter.cpp
    packetdatatypes.cpp

    )

target_link_libraries(FlashMQ pthread dl ssl crypto)

execute_process(COMMAND ../.get-os-codename-and-stamp.sh OUTPUT_VARIABLE OS_CODENAME)

install(TARGETS FlashMQ
  RUNTIME DESTINATION "/usr/bin/")

install(DIRECTORY DESTINATION "/var/lib/flashmq")
install(DIRECTORY DESTINATION "/var/log/flashmq")
install(FILES flashmq.conf DESTINATION "/etc/flashmq")
install(FILES debian/flashmq.service DESTINATION "/lib/systemd/system")

SET(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_SOURCE_DIR}/debian/conffiles;${CMAKE_CURRENT_SOURCE_DIR}/debian/preinst;${CMAKE_CURRENT_SOURCE_DIR}/debian/postinst;${CMAKE_CURRENT_SOURCE_DIR}/debian/postrm;${CMAKE_CURRENT_SOURCE_DIR}/debian/prerm")

SET(CPACK_GENERATOR "DEB")
SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "Wiebe Cazemier <wiebe@halfgaar.net>")
SET(CPACK_DEBIAN_PACKAGE_DESCRIPTION "Light-weight, high performance MQTT server capable of million+ messages per second.")
SET(CPACK_PACKAGE_HOMEPAGE_URL "https://www.flashmq.org/")
SET(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
SET(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
SET(CPACK_DEBIAN_PACKAGE_RELEASE ${OS_CODENAME})
SET(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
SET(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
SET(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
INCLUDE(CPack)