#############################################################################
# Copyright (c) 2013, 2014 ACIN
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License 2.0 which is available at
# http://www.eclipse.org/legal/epl-2.0.
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
# Martin Melik Merkumians - initial API and implementation and/or initial documentation
#############################################################################


#############################################################################
# PAHO MQTT Com Layer
#############################################################################
forte_add_network_layer(PAHOMQTT OFF "mqtt" MQTTComLayer MQTTComLayer "Enable Paho MQTT Com Layer")

forte_add_include_directories(${CMAKE_CURRENT_SOURCE_DIR})

if(FORTE_COM_PAHOMQTT)
  forte_add_sourcefile_hcpp( MQTTComLayer MQTTHandler MQTTClientConfigParser)
  
  forte_add_handler(MQTTHandler MQTTHandler)
  
  SET(FORTE_COM_PAHOMQTT_INCLUDE_DIR "" CACHE PATH "ABSOLUTE path to Paho MQTT src directory")
    SET(FORTE_COM_PAHOMQTT_LIB_DIR "" CACHE PATH "ABSOLUTE path to Paho MQTT library")
  
    IF("${FORTE_ARCHITECTURE}" STREQUAL "Posix")
    SET(FORTE_COM_PAHOMQTT_LIB "libpaho-mqtt3a.so" CACHE STRING "MQTT Library file in FORTE_COM_PAHOMQTT_LIB_DIR to be linked to forte")
    ELSEIF("${FORTE_ARCHITECTURE}" STREQUAL "Win32")
      SET(FORTE_COM_PAHOMQTT_LIB "paho-mqtt3a.dll" CACHE STRING "MQTT Library file in FORTE_COM_PAHOMQTT_LIB_DIR to be linked to forte. Static library is not working for windows")
      string(FIND ${FORTE_COM_PAHOMQTT_LIB} "static" DETECT)
      IF(NOT "${DETECT}" STREQUAL "-1")
        MESSAGE(WARNING "WARNING: Paho library doesn't support static libraries in Windows")
      ENDIF(NOT "${DETECT}" STREQUAL "-1")
    ELSE()
       SET(FORTE_COM_PAHOMQTT_LIB "libpaho-mqtt3a-static.a" CACHE STRING "MQTT Library file in FORTE_COM_PAHOMQTT_LIB_DIR to be linked to forte")
    ENDIF()
    forte_add_include_system_directories(${FORTE_COM_PAHOMQTT_INCLUDE_DIR})
    forte_add_link_directories(${FORTE_COM_PAHOMQTT_LIB_DIR})
    forte_add_link_library_beginning(${FORTE_COM_PAHOMQTT_LIB})
    forte_add_custom_configuration("#include <string>")
    forte_add_custom_configuration("extern std::string gMqttClientConfigFile\;")
    forte_add_custom_configuration("#cmakedefine FORTE_COM_PAHOMQTT")
  
    IF(NOT EXISTS ${FORTE_COM_PAHOMQTT_INCLUDE_DIR})
      MESSAGE(WARNING "WARNING: FORTE_COM_PAHOMQTT_INCLUDE_DIR not set or does not exist. This will probably make the compilation fail.")
    ENDIF(NOT EXISTS ${FORTE_COM_PAHOMQTT_INCLUDE_DIR})
    
    file(TO_CMAKE_PATH "${FORTE_COM_PAHOMQTT_LIB_DIR}/${FORTE_COM_PAHOMQTT_LIB}" FORTE_COM_PAHOMQTT_LIB_PATH)
    IF(NOT EXISTS ${FORTE_COM_PAHOMQTT_LIB_DIR}/${FORTE_COM_PAHOMQTT_LIB} AND NOT EXISTS ${FORTE_COM_PAHOMQTT_LIB})
      MESSAGE(WARNING "WARNING: PAHO MQTT library not found '${FORTE_COM_PAHOMQTT_LIB}'. Check the value of FORTE_COM_PAHOMQTT_LIB_DIR or define an absolute path for FORTE_COM_PAHOMQTT_LIB.")
    ENDIF(NOT EXISTS ${FORTE_COM_PAHOMQTT_LIB_DIR}/${FORTE_COM_PAHOMQTT_LIB} AND NOT EXISTS ${FORTE_COM_PAHOMQTT_LIB})
    
endif(FORTE_COM_PAHOMQTT)
