File: CMakeLists.txt

package info (click to toggle)
lsyncd 2.2.3-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, buster, sid, trixie
  • size: 484 kB
  • sloc: ansic: 2,640; sh: 81; makefile: 11
file content (112 lines) | stat: -rw-r--r-- 3,634 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# preamble
project( Lsyncd )
cmake_minimum_required( VERSION 2.8 )
set( LSYNCD_VERSION 2.2.3 )
set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/" )


# finding Lua
find_package( Lua REQUIRED )
include_directories ( ${LUA_INCLUDE_DIR} )


# setting Lsyncd sources
set( LSYNCD_SRC lsyncd.c runner.c defaults.c )


# selecting the file notification mechanisms to compile against
option( WITH_INOTIFY "Compile with inotify file notifications (Linux)" ON )
option( WITH_FSEVENTS "Compile with inotify file notifications (OSX)" OFF )

if( WITH_INOTIFY )
	set( LSYNCD_SRC ${LSYNCD_SRC} inotify.c )
endif( WITH_INOTIFY )

if( WITH_FSEVENTS )
	set( LSYNCD_SRC ${LSYNCD_SRC} fsevents.c )

	option( XNU_DIR "Path to the xnu sources" )

#	if( NOT XNU_DIR/bsd/sys/fsevents.h )
#		message( SEND_ERROR "Cannot find bsd/sys/fsevents.h in XNU_DIR" )
#	endif( )

	include_directories( ${XNU_DIR} )
endif( WITH_FSEVENTS )


# generating the config.h file
configure_file (
	"${PROJECT_SOURCE_DIR}/config.h.in"
	"${PROJECT_BINARY_DIR}/config.h"
)
include_directories("${PROJECT_BINARY_DIR}")


# building and compiling the part of lsyncd written in Lua
# also called "runner"
add_custom_command( OUTPUT runner.c
	COMMAND ${CMAKE_COMMAND} -E echo "Generating built-in runner linkable"
	COMMAND ${LUA_EXECUTABLE} ${PROJECT_SOURCE_DIR}/bin2carray.lua runner.out runner runner.c
	DEPENDS runner.out
)

# this supposes the Lua compiler 'luac' is sitting right next to the Lua interpreter 'lua'
add_custom_command( OUTPUT runner.out
	COMMAND ${CMAKE_COMMAND} -E echo "Compiling built-in runner"
	COMMAND ${LUA_COMPILER} -o runner.out ${PROJECT_SOURCE_DIR}/lsyncd.lua
	DEPENDS ${PROJECT_SOURCE_DIR}/lsyncd.lua
)

# building and compiling the built-in default configs:
#   rsync rysnc-ssh and direct
add_custom_command( OUTPUT defaults.c
	COMMAND ${CMAKE_COMMAND} -E echo "Generating built-in default configs"
	COMMAND ${LUA_EXECUTABLE} ${PROJECT_SOURCE_DIR}/bin2carray.lua defaults.out defaults defaults.c
	DEPENDS defaults.out
)

set( DEFAULT_CONFIGS
	${PROJECT_SOURCE_DIR}/default.lua
	${PROJECT_SOURCE_DIR}/default-rsync.lua
	${PROJECT_SOURCE_DIR}/default-rsyncssh.lua
	${PROJECT_SOURCE_DIR}/default-direct.lua
)

add_custom_command( OUTPUT defaults.out
	COMMAND ${CMAKE_COMMAND} -E echo "Compiling built-in default configs"
	COMMAND ${LUA_COMPILER} -o defaults.out ${DEFAULT_CONFIGS}
	DEPENDS ${DEFAULT_CONFIGS}
)

# the manpage
add_custom_target( manpage
	COMMAND ${CMAKE_COMMAND} -E echo "Updating the manpage"
	COMMAND ${CMAKE_COMMAND} -E make_directory doc/manpage
	COMMAND a2x --format=manpage --destination-dir=doc/manpage ${PROJECT_SOURCE_DIR}/doc/manpage/lsyncd.1.txt
	DEPENDS ${PROJECT_SOURCE_DIR}/doc/manpage/lsyncd.1.txt
)

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"
	COMMAND ${LUA_EXECUTABLE} tests/schedule.lua
	COMMAND ${LUA_EXECUTABLE} tests/l4rsyncdata.lua
	COMMAND ${LUA_EXECUTABLE} tests/filter-rsync.lua
	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
	COMMAND echo "Finished all successfull!"
)

# compiling and linking it all together
add_executable( lsyncd ${LSYNCD_SRC} )
target_link_libraries( lsyncd ${LUA_LIBRARIES} )

install( TARGETS lsyncd RUNTIME DESTINATION bin )
install( FILES doc/manpage/lsyncd.1 DESTINATION share/man/man1 )