summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt171
1 files changed, 94 insertions, 77 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 68dd7fa3..48f03e2e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,39 +4,44 @@ project(sway C)
4 4
5set(FALLBACK_CONFIG_DIR "/etc/sway" CACHE PATH 5set(FALLBACK_CONFIG_DIR "/etc/sway" CACHE PATH
6 "Fallback config directory defaults to /etc/sway") 6 "Fallback config directory defaults to /etc/sway")
7add_definitions('-DFALLBACK_CONFIG_DIR=\"${FALLBACK_CONFIG_DIR}\"') 7add_definitions(-DFALLBACK_CONFIG_DIR=\"${FALLBACK_CONFIG_DIR}\")
8 8
9set(CMAKE_C_FLAGS "-g") 9set(CMAKE_C_FLAGS "-g")
10set(CMAKE_C_STANDARD 99) 10set(CMAKE_C_STANDARD 99)
11SET(CMAKE_C_EXTENSIONS OFF) 11set(CMAKE_C_EXTENSIONS OFF)
12set(CMAKE_CURRENT_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/bin") 12set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)
13set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") 13add_definitions(
14add_definitions("-Wall -Wextra -Wno-unused-parameter -D_GNU_SOURCE") 14 -D_GNU_SOURCE
15)
16set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
17set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wextra")
18set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-parameter")
19
15list(INSERT CMAKE_MODULE_PATH 0 20list(INSERT CMAKE_MODULE_PATH 0
16 "${CMAKE_CURRENT_SOURCE_DIR}/CMake") 21 ${CMAKE_CURRENT_SOURCE_DIR}/CMake
17 22)
18if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git") 23if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git)
19 execute_process( 24 execute_process(
20 COMMAND git describe --always 25 COMMAND git describe --always
21 OUTPUT_VARIABLE GIT_COMMIT_HASH 26 OUTPUT_VARIABLE GIT_COMMIT_HASH
22 OUTPUT_STRIP_TRAILING_WHITESPACE 27 OUTPUT_STRIP_TRAILING_WHITESPACE
23 WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" 28 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
24 ) 29 )
25 execute_process( 30 execute_process(
26 COMMAND git rev-parse --abbrev-ref HEAD 31 COMMAND git rev-parse --abbrev-ref HEAD
27 OUTPUT_VARIABLE GIT_BRANCH 32 OUTPUT_VARIABLE GIT_BRANCH
28 OUTPUT_STRIP_TRAILING_WHITESPACE 33 OUTPUT_STRIP_TRAILING_WHITESPACE
29 WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" 34 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
30 ) 35 )
31endif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git") 36endif()
32 37
33add_definitions("-DSWAY_GIT_VERSION=\"g${GIT_COMMIT_HASH}\"") 38add_definitions(-DSWAY_GIT_VERSION=\"${GIT_COMMIT_HASH}\")
34add_definitions("-DSWAY_GIT_BRANCH=\"${GIT_BRANCH}\"") 39add_definitions(-DSWAY_GIT_BRANCH=\"${GIT_BRANCH}\")
35 40
36string(TIMESTAMP CURRENT_DATE "%Y-%m-%d" UTC) 41string(TIMESTAMP CURRENT_DATE "%Y-%m-%d" UTC)
37add_definitions('-DSWAY_VERSION_DATE="${CURRENT_DATE}"') 42add_definitions(-DSWAY_VERSION_DATE=\"${CURRENT_DATE}\")
38 43
39include_directories("${CMAKE_CURRENT_SOURCE_DIR}/include") 44include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
40 45
41add_subdirectory(swaybg) 46add_subdirectory(swaybg)
42add_subdirectory(swaymsg) 47add_subdirectory(swaymsg)
@@ -50,68 +55,78 @@ find_package(PCRE REQUIRED)
50find_package(Wayland REQUIRED) 55find_package(Wayland REQUIRED)
51find_package(JsonC REQUIRED) 56find_package(JsonC REQUIRED)
52 57
53FILE(GLOB sources ${PROJECT_SOURCE_DIR}/sway/*.c) 58file(GLOB sources ${PROJECT_SOURCE_DIR}/sway/*.c)
54FILE(GLOB common ${PROJECT_SOURCE_DIR}/common/*.c) 59file(GLOB common ${PROJECT_SOURCE_DIR}/common/*.c)
55 60
56include(Wayland) 61include(Wayland)
57WAYLAND_ADD_PROTOCOL_SERVER(proto-desktop-shell "${PROJECT_SOURCE_DIR}/protocols/desktop-shell.xml" desktop-shell) 62WAYLAND_ADD_PROTOCOL_SERVER(proto-desktop-shell
63 ${PROJECT_SOURCE_DIR}/protocols/desktop-shell.xml
64 desktop-shell
65)
58 66
59include_directories( 67include_directories(
60 ${WLC_INCLUDE_DIRS} 68 ${WLC_INCLUDE_DIRS}
61 ${PCRE_INCLUDE_DIRS} 69 ${PCRE_INCLUDE_DIRS}
62 ${JSONC_INCLUDE_DIRS} 70 ${JSONC_INCLUDE_DIRS}
63 ${XKBCOMMON_INCLUDE_DIRS} 71 ${XKBCOMMON_INCLUDE_DIRS}
64 ${CMAKE_CURRENT_BINARY_DIR} 72 ${CMAKE_CURRENT_BINARY_DIR}
65) 73)
66 74
67add_executable(sway 75add_executable(sway
68 ${sources} 76 ${sources}
69 ${common} 77 ${common}
70 ${proto-desktop-shell} 78 ${proto-desktop-shell}
71) 79)
72 80
73target_link_libraries(sway 81target_link_libraries(sway
74 ${WLC_LIBRARIES} 82 ${WLC_LIBRARIES}
75 ${XKBCOMMON_LIBRARIES} 83 ${XKBCOMMON_LIBRARIES}
76 ${PCRE_LIBRARIES} 84 ${PCRE_LIBRARIES}
77 ${JSONC_LIBRARIES} 85 ${JSONC_LIBRARIES}
78 ${WAYLAND_SERVER_LIBRARIES} 86 ${WAYLAND_SERVER_LIBRARIES}
79) 87)
80 88
81install( 89install(
82 TARGETS sway 90 TARGETS sway
83 RUNTIME DESTINATION bin 91 RUNTIME
84 COMPONENT runtime) 92 DESTINATION bin
93 COMPONENT runtime
94)
85install( 95install(
86 FILES "${CMAKE_CURRENT_SOURCE_DIR}/config" 96 FILES ${CMAKE_CURRENT_SOURCE_DIR}/config
87 DESTINATION "${FALLBACK_CONFIG_DIR}" 97 DESTINATION ${FALLBACK_CONFIG_DIR}
88 COMPONENT configuration) 98 COMPONENT configuration
99)
89 100
90add_custom_target(man ALL) 101add_custom_target(man ALL)
91 102
92function (add_manpage name section) 103function(add_manpage name section)
93 add_custom_command( 104 add_custom_command(
94 OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${name}.${section}" 105 OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${name}.${section}
95 COMMAND "${A2X_COMMAND}" 106 COMMAND ${A2X_COMMAND}
96 --no-xmllint 107 --no-xmllint
97 --doctype manpage 108 --doctype manpage
98 --format manpage 109 --format manpage
99 -D "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" 110 -D ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
100 "${CMAKE_CURRENT_SOURCE_DIR}/${name}.${section}.txt" 111 ${CMAKE_CURRENT_SOURCE_DIR}/${name}.${section}.txt
101 DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${name}.${section}.txt" 112 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${name}.${section}.txt
102 COMMENT "Generating manpage for ${name}.${section}") 113 COMMENT Generating manpage for ${name}.${section}
103 114 )
104 add_custom_target("man-${name}.${section}" 115
105 DEPENDS 116 add_custom_target(man-${name}.${section}
106 "${CMAKE_CURRENT_BINARY_DIR}/${name}.${section}") 117 DEPENDS
107 add_dependencies(man 118 ${CMAKE_CURRENT_BINARY_DIR}/${name}.${section}
108 "man-${name}.${section}") 119 )
109 120 add_dependencies(man
110 install( 121 man-${name}.${section}
111 FILES "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${name}.${section}" 122 )
112 DESTINATION "share/man/man${section}" 123
113 COMPONENT documentation) 124 install(
114endfunction () 125 FILES ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${name}.${section}
126 DESTINATION share/man/man${section}
127 COMPONENT documentation
128 )
129endfunction()
115 130
116add_manpage(sway 1) 131add_manpage(sway 1)
117add_manpage(sway 5) 132add_manpage(sway 5)
@@ -119,10 +134,12 @@ add_manpage(swaymsg 1)
119add_manpage(swaygrab 1) 134add_manpage(swaygrab 1)
120 135
121install( 136install(
122 FILES "${CMAKE_CURRENT_SOURCE_DIR}/sway.desktop" 137 FILES ${CMAKE_CURRENT_SOURCE_DIR}/sway.desktop
123 DESTINATION share/wayland-sessions 138 DESTINATION share/wayland-sessions
124 COMPONENT data) 139 COMPONENT data
140)
125install( 141install(
126 FILES "${CMAKE_CURRENT_SOURCE_DIR}/sway-xorg.desktop" 142 FILES ${CMAKE_CURRENT_SOURCE_DIR}/sway-xorg.desktop
127 DESTINATION share/xsessions 143 DESTINATION share/xsessions
128 COMPONENT data) 144 COMPONENT data
145)