~aurelien-riv/livewallpaper/snap

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
# include and link directories
include_directories(
	${CMAKE_SOURCE_DIR}/include
	${DEPS_INCLUDE_DIRS}
)

link_directories(
	${DEPS_LIBRARY_DIRS}
)

# public livewallpaper header
# Do not use file(GLOB ...) because the order is important!
set(_public_headers
	core.h
	util.h
	error.h
	color.h
	random.h
	range.h
	noise.h
	output.h
	texture.h
	cairo-texture.h
	shader.h
	program.h
	background.h
	wallpaper.h
	matrix.h
	buffer.h
)
foreach(_header ${_public_headers})
	# relative path to absolute path
	list(APPEND LW_PUBLIC_HEADERS "${CMAKE_SOURCE_DIR}/include/livewallpaper/${_header}")
endforeach(_header)

### livewallpaper core library ###
file(GLOB LW_CORE_SOURCES *.c)

add_library(livewallpaper-core SHARED ${LW_CORE_SOURCES})
target_link_libraries(livewallpaper-core ${DEPS_LIBRARIES})

set_target_properties(
	livewallpaper-core PROPERTIES
	COMPILE_FLAGS "${DEPS_CFLAGS_STR}"
	LINK_FLAGS "${DEPS_LDFLAGS_STR}"
	VERSION "${LIVEWALLPAPER_VERSION}"
)

install(TARGETS livewallpaper-core DESTINATION lib)

### gobject introspection ###
_find_required_program(G_IR_SCANNER_EXECUTABLE g-ir-scanner)
_find_required_program(G_IR_COMPILER_EXECUTABLE g-ir-compiler)
_find_required_program(SED_EXECUTABLE sed)

set(LW_GIR_NAMESPACE LW)
set(LW_GIR_VERSION 1.0)
set(LW_GIR_INCLUDES --include=GObject-2.0  --include=Gdk-3.0 --include=GdkPixbuf-2.0)
set(LW_GIR_PACKAGES --pkg=gobject-2.0 --pkg=gdk-3.0 --pkg=gdk-pixbuf-2.0)
set(LW_GIR_PREFIX Lw)
set(LW_GIR_FILES ${LW_PUBLIC_HEADERS} ${LW_CORE_SOURCES})

set(LW_GIR_OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${LW_GIR_NAMESPACE}-${LW_GIR_VERSION}.gir)
set(LW_GIR_TYPELIB ${CMAKE_CURRENT_BINARY_DIR}/${LW_GIR_NAMESPACE}-${LW_GIR_VERSION}.typelib)

add_custom_command(
	OUTPUT ${LW_GIR_OUTPUT}
	COMMAND ${G_IR_SCANNER_EXECUTABLE} --quiet --namespace=${LW_GIR_NAMESPACE}
		--nsversion=${LW_GIR_VERSION} ${LW_GIR_PACKAGES} ${LW_GIR_FILES}
		--identifier-prefix=${LW_GIR_PREFIX} --library=livewallpaper-core
		--library-path=${CMAKE_CURRENT_BINARY_DIR} ${LW_GIR_INCLUDES}
		-I${CMAKE_SOURCE_DIR}/include --output=${LW_GIR_OUTPUT}.in --warn-all
	COMMAND ${SED_EXECUTABLE} -e 's/name="wb/name="b/g' ${LW_GIR_OUTPUT}.in > ${LW_GIR_OUTPUT}
	DEPENDS livewallpaper-core
)

add_custom_command(
	OUTPUT ${LW_GIR_TYPELIB}
	COMMAND ${G_IR_COMPILER_EXECUTABLE} ${LW_GIR_OUTPUT} -o ${LW_GIR_TYPELIB}
	DEPENDS ${LW_GIR_OUTPUT}
)

add_custom_target(livewallpaper-typelib ALL DEPENDS ${LW_GIR_TYPELIB})

install(FILES ${LW_GIR_TYPELIB} DESTINATION lib/girepository-1.0)