Subversion Repositories HomeAutomation

Rev

Rev 1659 | Rev 1661 | 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. set(CMAKE_BINARY_DIR ${CMAKE_BINARY_DIR}/build)
  6. set(CMAKE_CURRENT_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/build)
  7.  
  8. FIND_PROGRAM(SVN_EXECUTABLE svn DOC "subversion command line client")
  9.  
  10. MACRO(Subversion_GET_REVISION dir variable)
  11.     EXECUTE_PROCESS(COMMAND ${SVN_EXECUTABLE} info ${dir} OUTPUT_VARIABLE ${variable} OUTPUT_STRIP_TRAILING_WHITESPACE)
  12.     STRING(REGEX REPLACE "^(.*\n)?Revision: ([^\n]+).*" "\\2" ${variable} "${${variable}}")
  13. ENDMACRO(Subversion_GET_REVISION)
  14.  
  15. Subversion_GET_REVISION(${CMAKE_CURRENT_SOURCE_DIR} SUBVERSION_REVISION)
  16. MESSAGE(STATUS "Revision is ${SUBVERSION_REVISION}")
  17.  
  18. 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)
  19.  
  20. IF(${USE_PLUGIN_XORG})
  21.    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/Node.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)
  22. ENDIF(${USE_PLUGIN_XORG})
  23.  
  24. IF(NOT ${USE_PLUGIN_XORG})
  25.    add_executable(atomd src/common/common.cpp src/control/Code.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/Node.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)
  26. ENDIF(NOT ${USE_PLUGIN_XORG})
  27.  
  28. set(BOOST_LIBS thread-mt system-mt signals-mt program_options-mt filesystem-mt date_time-mt)
  29. find_package(Boost COMPONENTS ${BOOST_LIBS} REQUIRED)
  30. find_package(Threads REQUIRED)
  31.  
  32. target_link_libraries(atomic ${CMAKE_THREAD_LIBS_INIT})
  33. target_link_libraries(atomic ${Boost_LIBRARIES})
  34. target_link_libraries(atomic readline)
  35. target_link_libraries(atomd ${CMAKE_THREAD_LIBS_INIT})
  36. target_link_libraries(atomd ${Boost_LIBRARIES})
  37. target_link_libraries(atomd v8)
  38.  
  39. #NEEDED               libpthread.so.0
  40. #NEEDED               libboost_thread.so.1.42.0
  41. #NEEDED               libboost_system.so.1.42.0
  42. #NEEDED               libboost_signals.so.1.42.0
  43. #NEEDED               libboost_program_options.so.1.42.0
  44. #NEEDED               libboost_filesystem.so.1.42.0
  45. #NEEDED               libboost_date_time.so.1.42.0
  46. #NEEDED               libv8.so.2.2.18
  47. #NEEDED               libX11.so.6
  48. #NEEDED               libstdc++.so.6
  49. #NEEDED               libm.so.6
  50. #NEEDED               libgcc_s.so.1
  51. #NEEDED               libc.so.6
  52. #NEEDED               libreadline.so.6
  53. # objdump -p build/atomic | grep NEEDED
  54. # apt-file search libpthread | grep /usr/lib
  55.  
  56. IF(${USE_PLUGIN_XORG})
  57.     MESSAGE(STATUS "Building with Xorg support")
  58.     target_link_libraries(atomd X11)
  59.     set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.3.6), libgcc1 (>= 1:4.1), libv8 (>= 2.2.18), 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)")
  60. ENDIF(${USE_PLUGIN_XORG})
  61.  
  62. IF(NOT ${USE_PLUGIN_XORG})
  63.     MESSAGE(STATUS "Building without Xorg support")
  64.     set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.3.6), libgcc1 (>= 1:4.1), libv8-dev (>= 2.2.18), libboost-date-time-dev, libboost-filesystem-dev, libboost-program-options-dev, libboost-signals-dev, libboost-thread-dev, libreadline-dev, libv8-dev")
  65. ENDIF(NOT ${USE_PLUGIN_XORG})
  66.  
  67.  
  68. include_directories(src)
  69. include_directories(build)
  70. add_subdirectory(src)
  71.  
  72. SET(CPACK_PACKAGING_INSTALL_PREFIX "/")
  73.  
  74. install(TARGETS atomd RUNTIME DESTINATION usr/bin)
  75. install(TARGETS atomic RUNTIME DESTINATION usr/bin)
  76.  
  77. install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/script" DESTINATION usr/share/atom FILES_MATCHING PATTERN "*.js" PATTERN ".svn" EXCLUDE)
  78. install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/uscript" DESTINATION etc/atom FILES_MATCHING PATTERN "*" PATTERN ".svn" EXCLUDE)
  79. install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/storage" DESTINATION etc/atom FILES_MATCHING PATTERN "*" PATTERN ".svn" EXCLUDE)
  80. install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../Configuration/data.xml" DESTINATION usr/share/atom/protocol)
  81. install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/atom.conf.template" DESTINATION etc/atom)
  82.  
  83.  
  84. set(CPACK_PACKAGE_DESCRIPTION "Homeautomation Control Software")
  85. set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Contains atomd and atomic for controlling your can network. Works in unison with the hardware on project.auml.se.")
  86. set(CPACK_PACKAGE_NAME "atom")
  87.  
  88. set(CPACK_PACKAGE_CONTACT "Mattias Runge")
  89. set(CPACK_PACKAGE_VENDOR "project.auml.se")
  90. set(CPACK_PACKAGE_VERSION_MAJOR "1")
  91. set(CPACK_PACKAGE_VERSION_MINOR "5")
  92. set(CPACK_PACKAGE_VERSION_PATCH "${SUBVERSION_REVISION}")
  93. set(VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
  94.  
  95. set(CPACK_GENERATOR "DEB;")
  96. set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}-${CMAKE_SYSTEM_PROCESSOR}")
  97.  
  98. include(CPack)
  99.  
  100. CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/src/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)
  101.  
  102. # To enable the Xorg plugin
  103. # cmake -DUSE_PLUGIN_XORG=true ../
  104.