aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar progandy <code@progandy>2015-12-20 17:37:52 +0100
committerLibravatar progandy <code@progandy>2015-12-20 17:37:52 +0100
commit21014e606b9b28d792b98cf363f20c7df2136723 (patch)
tree946a056785f05744932f21538a90f5687deb299c
parentUpdate README screenshot (diff)
downloadsway-21014e606b9b28d792b98cf363f20c7df2136723.tar.gz
sway-21014e606b9b28d792b98cf363f20c7df2136723.tar.zst
sway-21014e606b9b28d792b98cf363f20c7df2136723.zip
make gdk-pixbuf dependency really optional
-rw-r--r--CMake/FindGdkPixbuf.cmake3
-rw-r--r--CMakeLists.txt24
-rw-r--r--include/client/cairo.h2
-rw-r--r--swaybg/CMakeLists.txt11
-rw-r--r--swaybg/main.c4
-rw-r--r--swaylock/CMakeLists.txt11
-rw-r--r--swaylock/main.c4
-rw-r--r--wayland/CMakeLists.txt11
-rw-r--r--wayland/cairo.c5
9 files changed, 62 insertions, 13 deletions
diff --git a/CMake/FindGdkPixbuf.cmake b/CMake/FindGdkPixbuf.cmake
index 53bb0501..4ea1d5b9 100644
--- a/CMake/FindGdkPixbuf.cmake
+++ b/CMake/FindGdkPixbuf.cmake
@@ -29,6 +29,7 @@ IF(NOT GDK_PIXBUF_FOUND AND NOT PKG_CONFIG_FOUND)
29 # Report results 29 # Report results
30 IF(GDK_PIXBUF_LIBRARIES AND GDK_PIXBUF_INCLUDE_DIRS) 30 IF(GDK_PIXBUF_LIBRARIES AND GDK_PIXBUF_INCLUDE_DIRS)
31 SET(GDK_PIXBUF_FOUND 1) 31 SET(GDK_PIXBUF_FOUND 1)
32 SET(GdkPixbuf_FOUND 1)
32 IF(NOT GdkPixbuf_FIND_QUIETLY) 33 IF(NOT GdkPixbuf_FIND_QUIETLY)
33 MESSAGE(STATUS "Found GdkPixbuf: ${GDK_PIXBUF_LIBRARIES}") 34 MESSAGE(STATUS "Found GdkPixbuf: ${GDK_PIXBUF_LIBRARIES}")
34 ENDIF(NOT GdkPixbuf_FIND_QUIETLY) 35 ENDIF(NOT GdkPixbuf_FIND_QUIETLY)
@@ -41,6 +42,8 @@ IF(NOT GDK_PIXBUF_FOUND AND NOT PKG_CONFIG_FOUND)
41 ENDIF(NOT GdkPixbuf_FIND_QUIETLY) 42 ENDIF(NOT GdkPixbuf_FIND_QUIETLY)
42 ENDIF(GdkPixbuf_FIND_REQUIRED) 43 ENDIF(GdkPixbuf_FIND_REQUIRED)
43 ENDIF(GDK_PIXBUF_LIBRARIES AND GDK_PIXBUF_INCLUDE_DIRS) 44 ENDIF(GDK_PIXBUF_LIBRARIES AND GDK_PIXBUF_INCLUDE_DIRS)
45ELSE(NOT GDK_PIXBUF_FOUND AND NOT PKG_CONFIG_FOUND)
46 SET(GdkPixbuf_FOUND 1)
44ENDIF(NOT GDK_PIXBUF_FOUND AND NOT PKG_CONFIG_FOUND) 47ENDIF(NOT GDK_PIXBUF_FOUND AND NOT PKG_CONFIG_FOUND)
45 48
46# Hide advanced variables from CMake GUIs 49# Hide advanced variables from CMake GUIs
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 31e79ca4..5cd9c67b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -46,6 +46,7 @@ option(enable-swaybg "Enables the wallpaper utility" YES)
46option(enable-swaybar "Enables the swaybar utility" YES) 46option(enable-swaybar "Enables the swaybar utility" YES)
47option(enable-swaygrab "Enables the swaygrab utility" YES) 47option(enable-swaygrab "Enables the swaygrab utility" YES)
48option(enable-swaymsg "Enables the swaymsg utility" YES) 48option(enable-swaymsg "Enables the swaymsg utility" YES)
49option(enable-gdk-pixbuf "Use Pixbuf to support more image formats" YES)
49 50
50find_package(JsonC REQUIRED) 51find_package(JsonC REQUIRED)
51find_package(PCRE REQUIRED) 52find_package(PCRE REQUIRED)
@@ -60,6 +61,17 @@ find_package(PAM)
60include(FeatureSummary) 61include(FeatureSummary)
61include(Manpage) 62include(Manpage)
62 63
64if (enable-gdk-pixbuf)
65 if (GDK_PIXBUF_FOUND)
66 set(WITH_GDK_PIXBUF YES)
67 add_definitions(-DWITH_GDK_PIXBUF)
68 else()
69 message(WARNING "gdk-pixbuf required but not found, only png images supported.")
70 endif()
71else()
72 message(STATUS "Building without gdk-pixbuf, only png images supported.")
73endif()
74
63include_directories(include) 75include_directories(include)
64 76
65add_subdirectory(protocols) 77add_subdirectory(protocols)
@@ -68,10 +80,10 @@ add_subdirectory(wayland)
68 80
69add_subdirectory(sway) 81add_subdirectory(sway)
70if(enable-swaybg) 82if(enable-swaybg)
71 if(CAIRO_FOUND AND PANGO_FOUND AND GDK_PIXBUF_FOUND) 83 if(CAIRO_FOUND AND PANGO_FOUND)
72 add_subdirectory(swaybg) 84 add_subdirectory(swaybg)
73 else() 85 else()
74 message(WARNING "Not building swaybg - cairo, pango, and gdk-pixbuf are required.") 86 message(WARNING "Not building swaybg - cairo, and pango are required.")
75 endif() 87 endif()
76endif() 88endif()
77if(enable-swaymsg) 89if(enable-swaymsg)
@@ -81,17 +93,17 @@ if(enable-swaygrab)
81 add_subdirectory(swaygrab) 93 add_subdirectory(swaygrab)
82endif() 94endif()
83if(enable-swaybar) 95if(enable-swaybar)
84 if(CAIRO_FOUND AND PANGO_FOUND AND GDK_PIXBUF_FOUND) 96 if(CAIRO_FOUND AND PANGO_FOUND)
85 add_subdirectory(swaybar) 97 add_subdirectory(swaybar)
86 else() 98 else()
87 message(WARNING "Not building swaybar - cairo, pango, and gdk-pixbuf are required.") 99 message(WARNING "Not building swaybar - cairo, and pango are required.")
88 endif() 100 endif()
89endif() 101endif()
90if(enable-swaylock) 102if(enable-swaylock)
91 if(CAIRO_FOUND AND PANGO_FOUND AND GDK_PIXBUF_FOUND AND PAM_FOUND) 103 if(CAIRO_FOUND AND PANGO_FOUND AND PAM_FOUND)
92 add_subdirectory(swaylock) 104 add_subdirectory(swaylock)
93 else() 105 else()
94 message(WARNING "Not building swaylock - cairo, pango, gdk-pixbuf, and PAM are required.") 106 message(WARNING "Not building swaylock - cairo, pango, and PAM are required.")
95 endif() 107 endif()
96endif() 108endif()
97 109
diff --git a/include/client/cairo.h b/include/client/cairo.h
index 98ced907..ad8390c4 100644
--- a/include/client/cairo.h
+++ b/include/client/cairo.h
@@ -1,8 +1,10 @@
1#ifndef _SWAY_CAIRO_H 1#ifndef _SWAY_CAIRO_H
2#define _SWAY_CAIRO_H 2#define _SWAY_CAIRO_H
3 3
4#ifdef WITH_GDK_PIXBUF
4#include <gdk-pixbuf/gdk-pixbuf.h> 5#include <gdk-pixbuf/gdk-pixbuf.h>
5 6
6cairo_surface_t* gdk_cairo_image_surface_create_from_pixbuf(const GdkPixbuf *gdkbuf); 7cairo_surface_t* gdk_cairo_image_surface_create_from_pixbuf(const GdkPixbuf *gdkbuf);
8#endif //WITH_GDK_PIXBUF
7 9
8#endif 10#endif
diff --git a/swaybg/CMakeLists.txt b/swaybg/CMakeLists.txt
index 4dc961ff..68098370 100644
--- a/swaybg/CMakeLists.txt
+++ b/swaybg/CMakeLists.txt
@@ -3,7 +3,6 @@ include_directories(
3 ${WAYLAND_CLIENT_INCLUDE_DIR} 3 ${WAYLAND_CLIENT_INCLUDE_DIR}
4 ${CAIRO_INCLUDE_DIRS} 4 ${CAIRO_INCLUDE_DIRS}
5 ${PANGO_INCLUDE_DIRS} 5 ${PANGO_INCLUDE_DIRS}
6 ${GDK_PIXBUF_INCLUDE_DIRS}
7) 6)
8 7
9add_executable(swaybg 8add_executable(swaybg
@@ -17,10 +16,18 @@ target_link_libraries(swaybg
17 ${WAYLAND_CURSOR_LIBRARIES} 16 ${WAYLAND_CURSOR_LIBRARIES}
18 ${CAIRO_LIBRARIES} 17 ${CAIRO_LIBRARIES}
19 ${PANGO_LIBRARIES} 18 ${PANGO_LIBRARIES}
20 ${GDK_PIXBUF_LIBRARIES}
21 m 19 m
22) 20)
23 21
22if (WITH_GDK_PIXBUF)
23 include_directories(
24 ${GDK_PIXBUF_INCLUDE_DIRS}
25 )
26 target_link_libraries(swaybg
27 ${GDK_PIXBUF_LIBRARIES}
28 )
29endif()
30
24install( 31install(
25 TARGETS swaybg 32 TARGETS swaybg
26 RUNTIME 33 RUNTIME
diff --git a/swaybg/main.c b/swaybg/main.c
index 2ae06c6f..b936be2b 100644
--- a/swaybg/main.c
+++ b/swaybg/main.c
@@ -56,6 +56,7 @@ int main(int argc, const char **argv) {
56 desktop_shell_set_background(registry->desktop_shell, output->output, window->surface); 56 desktop_shell_set_background(registry->desktop_shell, output->output, window->surface);
57 list_add(surfaces, window); 57 list_add(surfaces, window);
58 58
59#ifdef WITH_GDK_PIXBUF
59 GError *err = NULL; 60 GError *err = NULL;
60 GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file(argv[2], &err); 61 GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file(argv[2], &err);
61 if (!pixbuf) { 62 if (!pixbuf) {
@@ -63,6 +64,9 @@ int main(int argc, const char **argv) {
63 } 64 }
64 cairo_surface_t *image = gdk_cairo_image_surface_create_from_pixbuf(pixbuf); 65 cairo_surface_t *image = gdk_cairo_image_surface_create_from_pixbuf(pixbuf);
65 g_object_unref(pixbuf); 66 g_object_unref(pixbuf);
67#else
68 cairo_surface_t *image = cairo_image_surface_create_from_png(argv[2]);
69#endif //WITH_GDK_PIXBUF
66 if (!image) { 70 if (!image) {
67 sway_abort("Failed to read background image."); 71 sway_abort("Failed to read background image.");
68 } 72 }
diff --git a/swaylock/CMakeLists.txt b/swaylock/CMakeLists.txt
index 306be80e..950a170d 100644
--- a/swaylock/CMakeLists.txt
+++ b/swaylock/CMakeLists.txt
@@ -2,7 +2,6 @@ include_directories(
2 ${PROTOCOLS_INCLUDE_DIRS} 2 ${PROTOCOLS_INCLUDE_DIRS}
3 ${WAYLAND_CLIENT_INCLUDE_DIR} 3 ${WAYLAND_CLIENT_INCLUDE_DIR}
4 ${CAIRO_INCLUDE_DIRS} 4 ${CAIRO_INCLUDE_DIRS}
5 ${GDK_PIXBUF_INCLUDE_DIRS}
6 ${PANGO_INCLUDE_DIRS} 5 ${PANGO_INCLUDE_DIRS}
7 ${PAM_INCLUDE_DIRS} 6 ${PAM_INCLUDE_DIRS}
8) 7)
@@ -17,12 +16,20 @@ target_link_libraries(swaylock
17 ${WAYLAND_CLIENT_LIBRARIES} 16 ${WAYLAND_CLIENT_LIBRARIES}
18 ${WAYLAND_CURSOR_LIBRARIES} 17 ${WAYLAND_CURSOR_LIBRARIES}
19 ${CAIRO_LIBRARIES} 18 ${CAIRO_LIBRARIES}
20 ${GDK_PIXBUF_LIBRARIES}
21 ${PANGO_LIBRARIES} 19 ${PANGO_LIBRARIES}
22 ${PAM_LIBRARIES} 20 ${PAM_LIBRARIES}
23 m 21 m
24) 22)
25 23
24if (WITH_GDK_PIXBUF)
25 include_directories(
26 ${GDK_PIXBUF_INCLUDE_DIRS}
27 )
28 target_link_libraries(swaylock
29 ${GDK_PIXBUF_LIBRARIES}
30 )
31endif()
32
26install( 33install(
27 TARGETS swaylock 34 TARGETS swaylock
28 RUNTIME 35 RUNTIME
diff --git a/swaylock/main.c b/swaylock/main.c
index 82b88731..eccb902e 100644
--- a/swaylock/main.c
+++ b/swaylock/main.c
@@ -113,6 +113,7 @@ int main(int argc, char **argv) {
113 113
114 registry->input->notify = notify_key; 114 registry->input->notify = notify_key;
115 115
116#ifdef WITH_GDK_PIXBUF
116 GError *err = NULL; 117 GError *err = NULL;
117 GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file(argv[1], &err); // TODO: Parse i3lock arguments 118 GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file(argv[1], &err); // TODO: Parse i3lock arguments
118 if (!pixbuf) { 119 if (!pixbuf) {
@@ -120,6 +121,9 @@ int main(int argc, char **argv) {
120 } 121 }
121 cairo_surface_t *image = gdk_cairo_image_surface_create_from_pixbuf(pixbuf); 122 cairo_surface_t *image = gdk_cairo_image_surface_create_from_pixbuf(pixbuf);
122 g_object_unref(pixbuf); 123 g_object_unref(pixbuf);
124#else
125 cairo_surface_t *image = cairo_image_surface_create_from_png(argv[1]);
126#endif //WITH_GDK_PIXBUF
123 if (!image) { 127 if (!image) {
124 sway_abort("Failed to read background image."); 128 sway_abort("Failed to read background image.");
125 } 129 }
diff --git a/wayland/CMakeLists.txt b/wayland/CMakeLists.txt
index 6519cd7d..282ea1aa 100644
--- a/wayland/CMakeLists.txt
+++ b/wayland/CMakeLists.txt
@@ -1,7 +1,6 @@
1include_directories( 1include_directories(
2 ${PROTOCOLS_INCLUDE_DIRS} 2 ${PROTOCOLS_INCLUDE_DIRS}
3 ${PANGO_INCLUDE_DIRS} 3 ${PANGO_INCLUDE_DIRS}
4 ${GDK_PIXBUF_INCLUDE_DIRS}
5 ${XKBCOMMON_INCLUDE_DIRS} 4 ${XKBCOMMON_INCLUDE_DIRS}
6) 5)
7 6
@@ -17,6 +16,14 @@ target_link_libraries(sway-wayland
17 sway-common 16 sway-common
18 sway-protocols 17 sway-protocols
19 ${PANGO_LIBRARIES} 18 ${PANGO_LIBRARIES}
20 ${GDK_PIXBUF_LIBRARIES}
21 ${XKBCOMMON_LIBRARIES} 19 ${XKBCOMMON_LIBRARIES}
22 ) 20 )
21
22if (WITH_GDK_PIXBUF)
23 include_directories(
24 ${GDK_PIXBUF_INCLUDE_DIRS}
25 )
26 target_link_libraries(sway-wayland
27 ${GDK_PIXBUF_LIBRARIES}
28 )
29endif()
diff --git a/wayland/cairo.c b/wayland/cairo.c
index 10a15f40..7462b10a 100644
--- a/wayland/cairo.c
+++ b/wayland/cairo.c
@@ -1,7 +1,9 @@
1#include <gdk-pixbuf/gdk-pixbuf.h>
2#include <cairo/cairo.h> 1#include <cairo/cairo.h>
3#include "client/cairo.h" 2#include "client/cairo.h"
4 3
4#ifdef WITH_GDK_PIXBUF
5#include <gdk-pixbuf/gdk-pixbuf.h>
6
5#ifndef GDK_PIXBUF_CHECK_VERSION 7#ifndef GDK_PIXBUF_CHECK_VERSION
6#define GDK_PIXBUF_CHECK_VERSION(major,minor,micro) \ 8#define GDK_PIXBUF_CHECK_VERSION(major,minor,micro) \
7 (GDK_PIXBUF_MAJOR > (major) || \ 9 (GDK_PIXBUF_MAJOR > (major) || \
@@ -103,3 +105,4 @@ cairo_surface_t* gdk_cairo_image_surface_create_from_pixbuf(const GdkPixbuf *gdk
103 cairo_surface_mark_dirty(cs); 105 cairo_surface_mark_dirty(cs);
104 return cs; 106 return cs;
105} 107}
108#endif //WITH_GDK_PIXBUF