aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
blob: 685e8fc71ef34dd8fd456f5ecfd7fc179e6c2995 (plain)
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
cmake_minimum_required(VERSION 3.1.0)

project(sway C)

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g")
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_EXTENSIONS OFF)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)
add_definitions(
	-D_GNU_SOURCE
	)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wextra")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-parameter")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
if (CMAKE_COMPILER_IS_GNUCC)
    if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 7.0)
        set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wimplicit-fallthrough=0")
    endif()
endif()

list(INSERT CMAKE_MODULE_PATH 0
	${CMAKE_CURRENT_SOURCE_DIR}/CMake
	)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git)
	execute_process(
		COMMAND git describe --always --tags
		OUTPUT_VARIABLE GIT_COMMIT_HASH
		OUTPUT_STRIP_TRAILING_WHITESPACE
		WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
		)
	execute_process(
		COMMAND git rev-parse --abbrev-ref HEAD
		OUTPUT_VARIABLE GIT_BRANCH
		OUTPUT_STRIP_TRAILING_WHITESPACE
		WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
		)
endif()

add_definitions(-DSWAY_GIT_VERSION=\"${GIT_COMMIT_HASH}\")
add_definitions(-DSWAY_GIT_BRANCH=\"${GIT_BRANCH}\")

string(TIMESTAMP CURRENT_DATE "%Y-%m-%d" UTC)
add_definitions(-DSWAY_VERSION_DATE=\"${CURRENT_DATE}\")

option(enable-swaylock "Enables the swaylock utility" YES)
option(enable-swaybg "Enables the wallpaper utility" YES)
option(enable-swaybar "Enables the swaybar utility" YES)
option(enable-swaygrab "Enables the swaygrab utility" YES)
option(enable-swaymsg "Enables the swaymsg utility" YES)
option(enable-gdk-pixbuf "Use Pixbuf to support more image formats" YES)
option(zsh-completions "Zsh shell completions" NO)
option(default-wallpaper "Installs the default wallpaper" YES)
option(LD_LIBRARY_PATH "Configure sway's default LD_LIBRARY_PATH")

if (LD_LIBRARY_PATH)
	add_definitions(-D_LD_LIBRARY_PATH="${LD_LIBRARY_PATH}")
endif()

find_package(JsonC REQUIRED)
find_package(PCRE REQUIRED)
find_package(WLC REQUIRED)
find_package(Wayland REQUIRED)
find_package(XKBCommon REQUIRED)
find_package(Cairo REQUIRED)
find_package(Pango REQUIRED)
find_package(GdkPixbuf)
find_package(PAM)

find_package(LibInput REQUIRED)

find_package(Backtrace)
if(Backtrace_FOUND)
	include_directories("${Backtrace_INCLUDE_DIRS}")
	add_definitions(-DSWAY_Backtrace_FOUND=1)
	set(LINK_LIBRARIES, "${LINK_LIBRARIES} ${Backtrace_LIBRARIES}")
	set(SWAY_Backtrace_HEADER "${Backtrace_HEADER}")
endif()

if (CMAKE_SYSTEM_NAME STREQUAL FreeBSD)
	find_package(EpollShim REQUIRED)
endif (CMAKE_SYSTEM_NAME STREQUAL FreeBSD)

include(FeatureSummary)
include(Manpage)
include(GNUInstallDirs)

if (enable-gdk-pixbuf)
	if (GDK_PIXBUF_FOUND)
		set(WITH_GDK_PIXBUF YES)
		add_definitions(-DWITH_GDK_PIXBUF)
	else()
		message(WARNING "gdk-pixbuf required but not found, only png images supported.")
	endif()
else()
	message(STATUS "Building without gdk-pixbuf, only png images supported.")
endif()

include_directories(include)

add_subdirectory(protocols)
add_subdirectory(common)
add_subdirectory(wayland)

add_subdirectory(sway)
if(enable-swaybg)
	if(CAIRO_FOUND AND PANGO_FOUND)
		add_subdirectory(swaybg)
	else()
		message(WARNING "Not building swaybg - cairo, and pango are required.")
	endif()
endif()
if(enable-swaymsg)
	add_subdirectory(swaymsg)
endif()
if(enable-swaygrab)
	add_subdirectory(swaygrab)
endif()
if(enable-swaybar)
	if(CAIRO_FOUND AND PANGO_FOUND)
		add_subdirectory(swaybar)
	else()
		message(WARNING "Not building swaybar - cairo, and pango  are required.")
	endif()
endif()
if(enable-swaylock)
	if(CAIRO_FOUND AND PANGO_FOUND AND PAM_FOUND)
		add_subdirectory(swaylock)
	else()
		message(WARNING "Not building swaylock - cairo, pango, and PAM are required.")
	endif()
endif()
if(zsh-completions)
	add_subdirectory(completions/zsh)
endif()
install(
	FILES ${CMAKE_CURRENT_SOURCE_DIR}/sway.desktop
	DESTINATION ${CMAKE_INSTALL_FULL_DATAROOTDIR}/wayland-sessions
	COMPONENT data
	)

if(default-wallpaper)
	install(
        DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/assets/
		DESTINATION ${CMAKE_INSTALL_FULL_DATADIR}/sway
		COMPONENT data
        FILES_MATCHING PATTERN "*Wallpaper*"
		)
endif()

feature_summary(WHAT ALL)