Subversion Repositories HomeAutomation

Rev

Rev 1741 | Rev 1945 | 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_CXX_FLAGS "-g -Wall -O0")
  6.  
  7. find_program(SVN_EXECUTABLE svn DOC "subversion command line client")
  8. macro(GET_SVN_REVISION dir variable)
  9.     execute_process(COMMAND ${SVN_EXECUTABLE} info ${dir} OUTPUT_VARIABLE ${variable} OUTPUT_STRIP_TRAILING_WHITESPACE)
  10.     string(REGEX REPLACE "^(.*\n)?Revision: ([^\n]+).*" "\\2" ${variable} "${${variable}}")
  11. endmacro(GET_SVN_REVISION)
  12.  
  13. include(FindX11)
  14.  
  15. include_directories(${CMAKE_CURRENT_BINARY_DIR})
  16. include_directories(src)
  17. add_subdirectory(src)
  18.  
  19. set(CMAKE_BUILD_TYPE Release)
  20.  
  21. set(BOOST_LIBS thread-mt system-mt signals-mt program_options-mt filesystem-mt date_time-mt)
  22. find_package(Boost COMPONENTS ${BOOST_LIBS} REQUIRED)
  23. find_package(Threads REQUIRED)
  24.  
  25.  
  26. if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/AtomSvnRev")
  27.     file(READ "${CMAKE_CURRENT_SOURCE_DIR}/AtomSvnRev" SUBVERSION_REVISION)
  28. else(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/AtomSvnRev")
  29.     GET_SVN_REVISION(${CMAKE_CURRENT_SOURCE_DIR} SUBVERSION_REVISION)        
  30. endif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/AtomSvnRev")
  31.  
  32.  
  33. set(CMAKE_INSTALL_PREFIX / CACHE INTERNAL "")
  34. set(CPACK_PACKAGING_INSTALL_PREFIX "/")
  35. set(CPACK_PACKAGE_DESCRIPTION "Homeautomation Control Software")
  36. set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Contains atomd and atomic for controlling your can network. Works in unison with the hardware on project.auml.se.")
  37. set(CPACK_PACKAGE_NAME "atom")
  38. set(CPACK_PACKAGE_CONTACT "Mattias Runge")
  39. set(CPACK_PACKAGE_VENDOR "project.auml.se")
  40. set(CPACK_PACKAGE_VERSION_MAJOR "1")
  41. set(CPACK_PACKAGE_VERSION_MINOR "5")
  42. set(CPACK_PACKAGE_VERSION_PATCH "${SUBVERSION_REVISION}")
  43. set(CPACK_GENERATOR "DEB;")
  44. set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.3.6), libgcc1 (>= 1:4.1)")
  45. set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}-${CMAKE_SYSTEM_PROCESSOR}")
  46.  
  47. set(VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
  48.  
  49. set(ATOMD_FILES 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/CanDaemon.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)
  50. set(ATOMD_LIBS ${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES} v8)
  51.  
  52. set(ATOMIC_FILES 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)
  53. set(ATOMIC_LIBS ${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES} readline)
  54.  
  55. if(${X11_FOUND})
  56.     message(STATUS "Building with Xorg support")
  57.     set(USE_PLUGIN_XORG ON)
  58.     set(ATOMD_FILES ${ATOMD_FILES} src/vm/plugin/Xorg.cpp)
  59.     set(ATOMD_LIBS ${ATOMD_LIBS} ${X11_LIBRARIES})
  60. endif(${X11_FOUND})
  61.  
  62. add_executable(atomd ${ATOMD_FILES})
  63. target_link_libraries(atomd ${ATOMD_LIBS})
  64.  
  65. add_executable(atomic ${ATOMIC_FILES})
  66. target_link_libraries(atomic ${ATOMIC_LIBS})
  67.  
  68. #NEEDED               libpthread.so.0
  69. #NEEDED               libboost_thread.so.1.42.0
  70. #NEEDED               libboost_system.so.1.42.0
  71. #NEEDED               libboost_signals.so.1.42.0
  72. #NEEDED               libboost_program_options.so.1.42.0
  73. #NEEDED               libboost_filesystem.so.1.42.0
  74. #NEEDED               libboost_date_time.so.1.42.0
  75. #NEEDED               libv8.so.2.2.18
  76. #NEEDED               libX11.so.6
  77. #NEEDED               libstdc++.so.6
  78. #NEEDED               libm.so.6
  79. #NEEDED               libgcc_s.so.1
  80. #NEEDED               libc.so.6
  81. #NEEDED               libreadline.so.6
  82. # objdump -p build/atomic | grep NEEDED
  83. # apt-file search libpthread | grep /usr/lib
  84.  
  85. # TODO: Fix dependencies
  86.  
  87. message(STATUS "SVN revision is ${SUBVERSION_REVISION}")
  88.  
  89. install(TARGETS atomd RUNTIME DESTINATION usr/bin)
  90. install(TARGETS atomic RUNTIME DESTINATION usr/bin)
  91. install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/script" DESTINATION usr/share/atom FILES_MATCHING PATTERN "*.js" PATTERN ".svn" EXCLUDE)
  92. install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/uscript" DESTINATION etc/atom DIRECTORY_PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_WRITE WORLD_EXECUTE FILE_PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ GROUP_WRITE WORLD_READ WORLD_WRITE FILES_MATCHING PATTERN "*" PATTERN ".svn" EXCLUDE)
  93. install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/storage" DESTINATION etc/atom DIRECTORY_PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_WRITE WORLD_EXECUTE FILE_PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ GROUP_WRITE WORLD_READ WORLD_WRITE FILES_MATCHING PATTERN "*" PATTERN ".svn" EXCLUDE)
  94. install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/atom.conf.template" DESTINATION etc/atom)
  95. # install upstart file
  96. install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/debian/atom.conf" DESTINATION etc/init)
  97.  
  98. if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/../../Configuration/data.xml")
  99. install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../Configuration/data.xml" DESTINATION usr/share/atom/protocol)
  100. else(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/../../Configuration/data.xml")
  101. install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/Configuration/data.xml" DESTINATION usr/share/atom/protocol)
  102. endif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/../../Configuration/data.xml")
  103.  
  104. include(CPack)
  105.  
  106. configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)
  107.