# -*- CMakeLists.txt generated by CodeLite IDE. Do not edit by hand -*- cmake_minimum_required(VERSION 2.9) # 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. include(CheckSymbolExists) set(CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE) check_symbol_exists(getopt "getopt.h" HAVE_GETOPT) if (NOT HAVE_GETOPT) set (GETOPT_SOURCES 3rdparty/getopt/getopt.c) include_directories(BEFORE 3rdparty/getopt) endif (NOT HAVE_GETOPT) 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) if(WIN32) # Import libmodbus library from sources located in libmodbus/src set(LIBMODBUS_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/libmodbus/src ${CMAKE_SOURCE_DIR}/libmodbus/src/win32) file(GLOB_RECURSE LIBMODBUS_SRCS RELATIVE ${CMAKE_SOURCE_DIR} "libmodbus/src/*.c") # message (STATUS "LIBMODBUS_SRCS ${LIBMODBUS_SRCS}") find_program (CSCRIPT_PATH NAMES cscript REQUIRED) # message (STATUS "CSCRIPT_PATH ${CSCRIPT_PATH}") else(WIN32) 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}) endif(WIN32) include_directories(BEFORE ${LIBMODBUS_INCLUDE_DIRS}) # 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} ) if(MSVC) add_definitions(-D_CRT_SECURE_NO_WARNINGS) else(MSVC) # Compiler options add_definitions(-O2) add_definitions(-Wall) add_definitions(-Wno-unused-parameter) add_definitions(-Wno-unused-function) add_definitions(-Wno-unused-const-variable) set_source_files_properties( ${C_SRCS} PROPERTIES COMPILE_FLAGS " -O2 -Wall -Wno-unused-parameter -Wno-unused-function -Wno-unused-const-variable") endif(MSVC) add_definitions( -DNDEBUG ) # Linker options if(WIN32) # Resource options set(RC_SRCS ${CMAKE_SOURCE_DIR}/libmodbus/src/win32/modbus.rc ) list(APPEND LINK_OPTIONS wsock32 ws2_32) 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 ${LIBMODBUS_SRCS} ${GETOPT_SOURCES} ) if(WIN32) enable_language(RC) set(CMAKE_RC_COMPILE_OBJECT " ${RC_OPTIONS} -O coff -i -o ") 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}) if(WIN32) add_custom_command( TARGET mbpoll PRE_BUILD WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/libmodbus/src/win32 COMMAND ${CSCRIPT_PATH} ${CMAKE_SOURCE_DIR}/libmodbus/src/win32/configure.js VERBATIM) endif(WIN32) ### 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 ") 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) #}}}}