Subversion Repositories HomeAutomation

Rev

Rev 1651 | Rev 1653 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | SVN | RSS feed

  1. cmake_minimum_required(VERSION 2.8)
  2.  
  3. PROJECT(atom)
  4.  
  5. FIND_PROGRAM(SVN_EXECUTABLE svn DOC "subversion command line client")
  6.  
  7. MACRO(Subversion_GET_REVISION dir variable)
  8.     EXECUTE_PROCESS(COMMAND ${SVN_EXECUTABLE} info ${dir} OUTPUT_VARIABLE ${variable} OUTPUT_STRIP_TRAILING_WHITESPACE)
  9.     STRING(REGEX REPLACE "^(.*\n)?Revision: ([^\n]+).*" "\\2" ${variable} "${${variable}}")
  10. ENDMACRO(Subversion_GET_REVISION)
  11.  
  12. Subversion_GET_REVISION(${CMAKE_CURRENT_SOURCE_DIR} SUBVERSION_REVISION)
  13. MESSAGE(STATUS "Revision is ${SUBVERSION_REVISION}")
  14.  
  15. add_executable(atomic src/common/common.cpp src/atomic.cpp src/logging/Logger.cpp src/common/IoService.cpp src/net/Subscriber.cpp src/common/Byteset.cpp src/net/SerialClient.cpp src/net/UdpClient.cpp src/net/TcpClient.cpp src/net/Client.cpp src/net/Manager.cpp)
  16. add_executable(atomd src/common/common.cpp src/control/Code.cpp src/vm/plugin/Xorg.cpp src/vm/plugin/Storage.cpp src/storage/Store.cpp src/storage/Manager.cpp src/vm/plugin/Socket.cpp src/vm/plugin/Console.cpp src/vm/plugin/Module.cpp src/vm/plugin/Timer.cpp src/vm/plugin/System.cpp src/vm/Plugin.cpp src/vm/Manager.cpp src/timer/Subscriber.cpp src/control/Module.cpp src/control/Node.cpp src/control/Manager.cpp src/common/IoService.cpp src/net/Subscriber.cpp src/can/Monitor.cpp src/can/Message.cpp src/xml/Node.cpp src/can/Protocol.cpp src/common/Bitset.cpp src/common/Byteset.cpp src/can/Network.cpp src/broker/Subscriber.cpp src/broker/Message.cpp src/broker/Manager.cpp src/config/Manager.cpp src/logging/Logger.cpp src/timer/Timer.cpp src/timer/Manager.cpp src/net/SerialClient.cpp src/net/UdpClient.cpp src/net/TcpClient.cpp src/net/Client.cpp src/net/Manager.cpp src/atomd.cpp)
  17.  
  18.  
  19. set(BOOST_LIBS thread system signals program_options filesystem date_time)
  20. find_package(Boost COMPONENTS ${BOOST_LIBS} REQUIRED)
  21. find_package(Threads REQUIRED)
  22.  
  23. target_link_libraries(atomic ${CMAKE_THREAD_LIBS_INIT})
  24. target_link_libraries(atomic ${Boost_LIBRARIES})
  25. target_link_libraries(atomic readline)
  26. target_link_libraries(atomd ${CMAKE_THREAD_LIBS_INIT})
  27. target_link_libraries(atomd ${Boost_LIBRARIES})
  28. target_link_libraries(atomd v8)
  29.  
  30. IF(${USE_PLUGIN_XORG})
  31. MESSAGE(STATUS "Building with Xorg support")
  32. target_link_libraries(atomd X11)
  33. set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.3.6), libgcc1 (>= 1:4.1), libv8-dev (>= 2.2.18), libboost-iostreams-dev, libboost-date-time-dev, libboost-filesystem-dev, libboost-program-options-dev, libboost-signals-dev, libboost-thread-dev, libreadline-dev, libv8-dev, libx11-dev (>= 2:1.3)")
  34. ENDIF(${USE_PLUGIN_XORG})
  35.  
  36. IF(NOT ${USE_PLUGIN_XORG})
  37. MESSAGE(STATUS "Building without Xorg support")
  38. set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.3.6), libgcc1 (>= 1:4.1), libv8-dev (>= 2.2.18), libboost-iostreams-dev, libboost-date-time-dev, libboost-filesystem-dev, libboost-program-options-dev, libboost-signals-dev, libboost-thread-dev, libreadline-dev, libv8-dev")
  39. ENDIF(NOT ${USE_PLUGIN_XORG})
  40.  
  41.  
  42. include_directories(src)
  43. include_directories(build)
  44. add_subdirectory(src)
  45.  
  46. install(TARGETS atomd RUNTIME DESTINATION bin)
  47. install(TARGETS atomic RUNTIME DESTINATION bin)
  48.  
  49. FILE(GLOB script_common_files "${CMAKE_CURRENT_SOURCE_DIR}/script/common/*.js")
  50. INSTALL(FILES ${script_common_files} DESTINATION share/atom/script/common)
  51.  
  52. FILE(GLOB script_interface_files "${CMAKE_CURRENT_SOURCE_DIR}/script/interface/*.js")
  53. INSTALL(FILES ${script_interface_files} DESTINATION share/atom/script/interface)
  54.  
  55. FILE(GLOB script_plugin_files "${CMAKE_CURRENT_SOURCE_DIR}/script/plugin/*.js")
  56. INSTALL(FILES ${script_plugin_files} DESTINATION share/atom/script/plugin)
  57.  
  58. FILE(GLOB script_user_files "${CMAKE_CURRENT_SOURCE_DIR}/script/user/*.js")
  59. INSTALL(FILES ${script_user_files} DESTINATION share/atom/script/user)
  60.  
  61. INSTALL(FILES "${CMAKE_CURRENT_SOURCE_DIR}/storage/Remote_Yamaha_RAV34" DESTINATION share/atom/storage)
  62. INSTALL(FILES "${CMAKE_CURRENT_SOURCE_DIR}/storage/Remote_LG_MKJ42519615" DESTINATION share/atom/storage)
  63. INSTALL(FILES "${CMAKE_CURRENT_SOURCE_DIR}/storage/Remote_Leadtek_PVR2000" DESTINATION share/atom/storage)
  64. INSTALL(FILES "${CMAKE_CURRENT_SOURCE_DIR}/storage/RemoteList" DESTINATION share/atom/storage)
  65. INSTALL(FILES "${CMAKE_CURRENT_SOURCE_DIR}/storage/Xorg_Keymap" DESTINATION share/atom/storage)
  66.  
  67. INSTALL(FILES "${CMAKE_CURRENT_SOURCE_DIR}/atom.conf.template" DESTINATION share/atom)
  68.  
  69. set(CPACK_PACKAGE_DESCRIPTION "Homeautomation Control Software")
  70. set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Contains atomd and atomic for controlling your can network. Works in unison with the hardware on project.auml.se.")
  71. set(CPACK_PACKAGE_NAME "Atom")
  72.  
  73. set(CPACK_PACKAGE_CONTACT "Mattias Runge")
  74. set(CPACK_PACKAGE_VENDOR "project.auml.se")
  75. set(CPACK_PACKAGE_VERSION_MAJOR "1")
  76. set(CPACK_PACKAGE_VERSION_MINOR "5")
  77. set(CPACK_PACKAGE_VERSION_PATCH "${SUBVERSION_REVISION}")
  78. set(VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
  79.  
  80. set(CPACK_GENERATOR "DEB;")
  81. set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}-${CMAKE_SYSTEM_PROCESSOR}")
  82.  
  83. include(CPack)
  84.  
  85. CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/src/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)
  86.  
  87. # To enable the Xorg plugin
  88. # cmake -DUSE_PLUGIN_XORG=true ../
  89.