# -*- CMakeLists.txt generated by CodeLite IDE. Do not edit by hand -*-

cmake_minimum_required(VERSION 2.8.11)

# Workspace name
project(mbpoll)

# This setting is useful for providing JSON file used by CodeLite for code completion
set(CMAKE_EXPORT_COMPILE_COMMANDS 1)

# Set default locations
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)

set(CONFIGURATION_NAME "Release")

# Projects


# Top project
# Define some variables
set(PROJECT_PATH "${CMAKE_SOURCE_DIR}/")



#{{{{ User Code 1
# Place your code here
# Modifies binary file paths if codelite is not used.
set (MBPOLL_CUSTOM_RTS_GPIO 1 CACHE BOOL "Enable custom Rts (if libpiduino found, only on ARM)")

if (NOT CL_USED)
  set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
  set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
  set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
endif (NOT CL_USED)

# Appends the cmake/modules path to MAKE_MODULE_PATH variable.
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})

find_package(PkgConfig REQUIRED)
pkg_check_modules (LIBMODBUS REQUIRED libmodbus>=3.1.4)

link_directories(${LIBMODBUS_LIBRARY_DIRS})
add_definitions(${LIBMODBUS_CFLAGS})
include_directories(BEFORE ${LIBMODBUS_INCLUDE_DIRS})
list(APPEND LINK_OPTIONS ${LIBMODBUS_LIBRARIES})

# search for the piduino package, if found, add the options ...
find_package(PIDUINO QUIET)
if (PIDUINO_FOUND)

  message (STATUS "PiDuino ${PIDUINO_VERSION} found !")
  if(PIDUINO_WITH_GPIO)
    link_directories(${PIDUINO_LIBRARY_DIRS})
    add_definitions(${PIDUINO_CFLAGS})
    add_definitions(-DMBPOLL_GPIO_RTS)
    include_directories(BEFORE ${PIDUINO_INCLUDE_DIRS})
    list(APPEND LINK_OPTIONS ${PIDUINO_LIBRARIES})
    set(PROGRAM_PERMISSIONS
      OWNER_WRITE OWNER_READ OWNER_EXECUTE
      GROUP_READ GROUP_EXECUTE
      WORLD_READ WORLD_EXECUTE
      SETUID)
  endif(PIDUINO_WITH_GPIO)

else (PIDUINO_FOUND)
  message (STATUS "PiDuino not found, disable MBPOLL_GPIO_RTS !")
endif (PIDUINO_FOUND)

if(NOT PIDUINO_WITH_GPIO)
  set(PROGRAM_PERMISSIONS
    OWNER_WRITE OWNER_READ OWNER_EXECUTE
    GROUP_READ GROUP_EXECUTE
    WORLD_READ WORLD_EXECUTE)
endif(NOT PIDUINO_WITH_GPIO)

include (GitVersion)
GetGitVersion(MBPOLL_VERSION)
WriteGitVersionFile(${CMAKE_CURRENT_BINARY_DIR}/version-git.h)
set(MBPOLL_VERSION
  ${MBPOLL_VERSION_MAJOR}.${MBPOLL_VERSION_MINOR}.${MBPOLL_VERSION_PATCH})
set (PROJECT_DESCRIPTION "ModBus Master Simulator")
#target_include_directories(mbpoll PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
#message("MBPOLL_VERSION=${MBPOLL_VERSION}")
#}}}}

include_directories(
    .
    src
    ${CMAKE_CURRENT_BINARY_DIR}

)


# Compiler options
add_definitions(-O2)
add_definitions(-Wall)
add_definitions(-Wno-unused-parameter)
add_definitions(-Wno-unused-function)
add_definitions(-Wno-unused-const-variable)
add_definitions(
    -DNDEBUG
)


# Linker options


if(WIN32)
    # Resource options
endif(WIN32)

# Library path
set(CMAKE_LDFLAGS "${CMAKE_LDFLAGS} -L. ")

# Define the C sources
set ( C_SRCS
    ${CMAKE_SOURCE_DIR}/src/mbpoll.c
    ${CMAKE_SOURCE_DIR}/src/custom-rts.c
    ${CMAKE_SOURCE_DIR}/src/serial.c
)

set_source_files_properties(
    ${C_SRCS} PROPERTIES COMPILE_FLAGS 
    " -O2 -Wall -Wno-unused-parameter -Wno-unused-function -Wno-unused-const-variable")

if(WIN32)
    enable_language(RC)
    set(CMAKE_RC_COMPILE_OBJECT
        "<CMAKE_RC_COMPILER> ${RC_OPTIONS} -O coff -i <SOURCE> -o <OBJECT>")
endif(WIN32)



#{{{{ User Code 2
# Place your code here
# uninstall target
configure_file(
    "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
    "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
    IMMEDIATE @ONLY)
add_custom_target(uninstall
    COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)

#}}}}

add_executable(mbpoll ${RC_SRCS} ${CXX_SRCS} ${C_SRCS})
target_link_libraries(mbpoll ${LINK_OPTIONS})



#{{{{ User Code 3
# Place your code here
install(TARGETS mbpoll RUNTIME DESTINATION bin
        PERMISSIONS ${PROGRAM_PERMISSIONS})

### Debian Package generation
set(CPACK_PACKAGE_NAME ${PROJECT_NAME})
set(CPACK_PACKAGE_VERSION "${MBPOLL_VERSION_MAJOR}.${MBPOLL_VERSION_MINOR}.${MBPOLL_VERSION_PATCH}")
set(CPACK_PACKAGE_VERSION_MAJOR "${MBPOLL_VERSION_MAJOR}")
set(CPACK_PACKAGE_VERSION_MINOR "${MBPOLL_VERSION_MINOR}")
set(CPACK_PACKAGE_VERSION_PATCH "${MBPOLL_VERSION_PATCH}")
set(CPACK_PACKAGE_CONTACT "Pascal JEAN <pascal.jean@piduino.org>")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PROJECT_NAME} - ${PROJECT_DESCRIPTION}")
set(CPACK_PACKAGE_DESCRIPTION_FILE "${PROJECT_SOURCE_DIR}/package_description.txt")
set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/COPYING")

set(CPACK_GENERATOR "DEB")

if (CPACK_GENERATOR STREQUAL "DEB")

  set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://github.com/epsilonrt/mbpoll")
  
  find_program(dpkg_query NAMES dpkg-query)
  find_program(dpkg_cmd NAMES dpkg)

  if (NOT CPACK_DEBIAN_PACKAGE_ARCHITECTURE)
    if (dpkg_cmd)
      execute_process(COMMAND ${dpkg_cmd} --print-architecture RESULT_VARIABLE ret OUTPUT_VARIABLE arch OUTPUT_STRIP_TRAILING_WHITESPACE)
      if (ret EQUAL 0)
        set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "${arch}")
      else (ret EQUAL 0)
        message(WARNING "Unable to get debian architecture !")
      endif (ret EQUAL 0)
    endif (dpkg_cmd)
  endif (NOT CPACK_DEBIAN_PACKAGE_ARCHITECTURE)

  message(STATUS "Debian architecture ${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}")

  set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}_${CPACK_PACKAGE_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}")
  message(STATUS "Debian package name is ${CPACK_PACKAGE_FILE_NAME}.deb")
  
  if(PIDUINO_WITH_GPIO)
    set(CPACK_DEBIAN_PACKAGE_DEPENDS "libmodbus5  (>= 3.1.4),libpiduino (>= ${PIDUINO_VERSION})")
  else(PIDUINO_WITH_GPIO)
    set(CPACK_DEBIAN_PACKAGE_DEPENDS "libmodbus5  (>= 3.1.4)")
  endif(PIDUINO_WITH_GPIO)
  set(CPACK_DEBIAN_PACKAGE_SECTION "utils")
endif (CPACK_GENERATOR STREQUAL "DEB")

include(CPack)
#}}}}

