lsyncd/CMakeLists.txt

121 lines
3.8 KiB
CMake
Raw Normal View History

2018-03-22 08:14:13 +00:00
# Preamble
2014-04-29 14:11:27 +00:00
project( Lsyncd )
cmake_minimum_required( VERSION 2.8 )
2018-03-12 10:50:08 +00:00
set( LSYNCD_VERSION 3.0.0-devel )
2014-04-29 14:11:27 +00:00
set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/" )
2018-03-22 08:14:13 +00:00
# Finding Lua
2016-12-13 13:53:01 +00:00
find_package( Lua REQUIRED )
2014-04-29 14:11:27 +00:00
include_directories ( ${LUA_INCLUDE_DIR} )
2018-03-22 08:14:13 +00:00
# Setting Lsyncd sources.
# Order here doesn't matter as being linked together.
set( LSYNCD_SRC
core/core.c
core/smem.c
luacode.c
)
2014-04-29 14:11:27 +00:00
2018-03-22 08:14:13 +00:00
# Tell systemd via the sd-daemon library about the status of Lsyncd.
option( WITH_SYSTEMD "Communicate Lsyncd status to systemd" ON )
2014-04-29 14:11:27 +00:00
2018-03-22 08:14:13 +00:00
# Selecting the file notification mechanisms to compile against.
2014-04-29 14:11:27 +00:00
option( WITH_INOTIFY "Compile with inotify file notifications (Linux)" ON )
if( WITH_INOTIFY )
2018-03-13 15:09:41 +00:00
set( LSYNCD_SRC ${LSYNCD_SRC} core/inotify.c )
2014-04-29 14:11:27 +00:00
endif( WITH_INOTIFY )
2018-03-13 15:09:41 +00:00
2018-03-22 08:14:13 +00:00
# Generating the config.h file.
2014-04-29 14:11:27 +00:00
configure_file (
"${PROJECT_SOURCE_DIR}/config.h.in"
"${PROJECT_BINARY_DIR}/config.h"
)
include_directories("${PROJECT_BINARY_DIR}")
2018-03-22 08:14:13 +00:00
# Building and compiling the part of lsyncd written in Lua
#
# Order here matters as the scripts lua will be executed in this order
# on initialization of Lsyncd.
#
2018-03-12 16:03:56 +00:00
set( LUA_CODE
${PROJECT_SOURCE_DIR}/mantle/array.lua
${PROJECT_SOURCE_DIR}/mantle/counter.lua
${PROJECT_SOURCE_DIR}/mantle/queue.lua
${PROJECT_SOURCE_DIR}/mantle/lock.lua
${PROJECT_SOURCE_DIR}/mantle/delay.lua
${PROJECT_SOURCE_DIR}/mantle/inotify.lua
${PROJECT_SOURCE_DIR}/mantle/combiner.lua
${PROJECT_SOURCE_DIR}/mantle/inlet.lua
${PROJECT_SOURCE_DIR}/mantle/filter.lua
2018-03-15 16:11:45 +00:00
${PROJECT_SOURCE_DIR}/mantle/sync.lua
2018-03-15 16:49:12 +00:00
${PROJECT_SOURCE_DIR}/mantle/syncmaster.lua
2018-03-16 08:36:32 +00:00
${PROJECT_SOURCE_DIR}/mantle/monitor.lua
${PROJECT_SOURCE_DIR}/mantle/fwriter.lua
2018-03-19 07:50:29 +00:00
${PROJECT_SOURCE_DIR}/mantle/statusfile.lua
${PROJECT_SOURCE_DIR}/mantle/useralarm.lua
2018-03-19 08:02:30 +00:00
${PROJECT_SOURCE_DIR}/mantle/mci.lua
2018-03-19 07:50:29 +00:00
${PROJECT_SOURCE_DIR}/mantle/user.lua
${PROJECT_SOURCE_DIR}/mantle/string.lua
2018-03-19 08:22:11 +00:00
${PROJECT_SOURCE_DIR}/mantle/version.lua
2018-03-13 15:09:41 +00:00
${PROJECT_SOURCE_DIR}/default/default.lua
${PROJECT_SOURCE_DIR}/default/rsync.lua
${PROJECT_SOURCE_DIR}/default/rsyncssh.lua
${PROJECT_SOURCE_DIR}/default/direct.lua
2018-03-15 16:11:45 +00:00
${PROJECT_SOURCE_DIR}/mantle/userenv.lua
2014-04-29 14:11:27 +00:00
)
2018-03-22 08:14:13 +00:00
# Creates the Lua bytecode from Lua source
2018-03-12 16:03:56 +00:00
add_custom_command( OUTPUT luacode.out
COMMAND ${CMAKE_COMMAND} -E echo "Compiling luacode"
COMMAND ${LUA_COMPILER} -o luacode.out ${LUA_CODE}
DEPENDS ${LUA_CODE}
2016-11-25 14:09:27 +00:00
)
2014-04-29 14:11:27 +00:00
2018-03-22 08:14:13 +00:00
# Transforms the Lua bytecode into c constants
# It may be possible to use the linker directly to link binary
# Code into the resulting ELF-file, but this proofed to be more
# portable and easier.
add_custom_command( OUTPUT luacode.c
COMMAND ${CMAKE_COMMAND} -E echo "Generating luacode linkable"
COMMAND ${LUA_EXECUTABLE} ${PROJECT_SOURCE_DIR}/bin2carray.lua luacode.out luacode luacode.c
DEPENDS luacode.out
)
# The manpage
add_custom_target( manpage
2016-11-25 14:09:27 +00:00
COMMAND ${CMAKE_COMMAND} -E echo "Updating the manpage"
2016-05-30 14:23:14 +00:00
COMMAND a2x --format=manpage doc/manpage/lsyncd.1.txt
2016-11-25 14:09:27 +00:00
DEPENDS doc/manpage/lsyncd.1.txt
)
2014-04-29 14:11:27 +00:00
2018-03-22 08:14:13 +00:00
# The test suite.
2017-01-05 09:37:43 +00:00
add_custom_target( tests
COMMAND echo "Running the tests"
COMMAND echo "Note you are expected to:"
COMMAND echo " * have lua-posix installed"
COMMAND echo " * have a passwordless ssh access to localhost"
2018-03-22 08:14:13 +00:00
COMMAND echo "/tmp will be used as testbase"
2018-03-09 10:07:53 +00:00
COMMAND ${LUA_EXECUTABLE} tests/schedule.lua
COMMAND ${LUA_EXECUTABLE} tests/l4rsyncdata.lua
COMMAND ${LUA_EXECUTABLE} tests/filter-rsync.lua
2018-03-09 10:07:53 +00:00
COMMAND ${LUA_EXECUTABLE} tests/exclude-rsync.lua
COMMAND ${LUA_EXECUTABLE} tests/exclude-rsyncssh.lua
COMMAND ${LUA_EXECUTABLE} tests/churn-rsync.lua
COMMAND ${LUA_EXECUTABLE} tests/churn-rsyncssh.lua
COMMAND ${LUA_EXECUTABLE} tests/churn-direct.lua
2018-03-22 08:14:13 +00:00
COMMAND echo "Finished all successfully!"
2017-01-05 09:37:43 +00:00
)
2018-03-22 08:14:13 +00:00
# Compiling and linking it all together.
2014-04-29 14:11:27 +00:00
add_executable( lsyncd ${LSYNCD_SRC} )
target_link_libraries( lsyncd ${LUA_LIBRARIES} )
2018-03-22 08:14:13 +00:00
# Installing.
install( TARGETS lsyncd RUNTIME DESTINATION bin )
2016-12-13 13:53:01 +00:00
install( FILES doc/manpage/lsyncd.1 DESTINATION man )
2018-03-09 09:27:41 +00:00