cflags_for_lib = $(shell pkg-config --silence-errors --cflags $(1) 2>/dev/null)
ldflags_for_lib = $(shell pkg-config --exists 2>/dev/null $(1) && pkg-config --libs $(1) 2>/dev/null || echo -l$(2))
-ifeq ($(shell pkg-config --exists xcb-util 2>/dev/null || echo 1),1)
-I3_CPPFLAGS += -DXCB_COMPAT
-CFLAGS += $(call cflags_for_lib, xcb-atom)
-CFLAGS += $(call cflags_for_lib, xcb-aux)
-else
-CFLAGS += $(call cflags_for_lib, xcb-util)
-endif
-CFLAGS += $(call cflags_for_lib, xcb)
LIBS += -L $(TOPDIR) -li3
-LIBS += $(call ldflags_for_lib, xcb-event,xcb-event)
+
+# XCB common stuff
+XCB_CFLAGS := $(call cflags_for_lib, xcb)
+XCB_CFLAGS += $(call cflags_for_lib, xcb-event)
+XCB_LIBS := $(call ldflags_for_lib, xcb,xcb)
+XCB_LIBS += $(call ldflags_for_lib, xcb-event,xcb-event)
ifeq ($(shell pkg-config --exists xcb-util 2>/dev/null || echo 1),1)
-LIBS += $(call ldflags_for_lib, xcb-atom,xcb-atom)
-LIBS += $(call ldflags_for_lib, xcb-aux,xcb-aux)
+XCB_CFLAGS += $(call cflags_for_lib, xcb-atom)
+XCB_CFLAGS += $(call cflags_for_lib, xcb-aux)
+XCB_LIBS += $(call ldflags_for_lib, xcb-atom,xcb-atom)
+XCB_LIBS += $(call ldflags_for_lib, xcb-aux,xcb-aux)
else
-LIBS += $(call ldflags_for_lib, xcb-util)
+XCB_CFLAGS += $(call cflags_for_lib, xcb-util)
+XCB_LIBS += $(call ldflags_for_lib, xcb-util)
endif
-LIBS += $(call ldflags_for_lib, xcb,xcb)
# XCB keyboard stuff
XCB_KBD_CFLAGS := $(call cflags_for_lib, xcb-keysyms)
i3_config_wizard_SOURCES_GENERATED = i3-config-wizard/cfgparse.tab.c i3-config-wizard/cfgparse.yy.c
i3_config_wizard_SOURCES := $(filter-out $(i3_config_wizard_SOURCES_GENERATED),$(wildcard i3-config-wizard/*.c))
i3_config_wizard_HEADERS := $(wildcard i3-config-wizard/*.h)
-i3_config_wizard_CFLAGS = $(XCB_KBD_CFLAGS) $(X11_CFLAGS)
-i3_config_wizard_LIBS = $(XCB_KBD_LIBS) $(X11_LIBS)
+i3_config_wizard_CFLAGS = $(XCB_CFLAGS) $(XCB_KBD_CFLAGS) $(X11_CFLAGS)
+i3_config_wizard_LIBS = $(XCB_LIBS) $(XCB_KBD_LIBS) $(X11_LIBS)
i3_config_wizard_OBJECTS := $(i3_config_wizard_SOURCES_GENERATED:.c=.o) $(i3_config_wizard_SOURCES:.c=.o)
i3_dump_log_SOURCES := $(wildcard i3-dump-log/*.c)
i3_dump_log_HEADERS := $(wildcard i3-dump-log/*.h)
-i3_dump_log_CFLAGS =
-i3_dump_log_LIBS =
+i3_dump_log_CFLAGS = $(XCB_CFLAGS)
+i3_dump_log_LIBS = $(XCB_LIBS)
i3_dump_log_OBJECTS := $(i3_dump_log_SOURCES:.c=.o)
i3_input_SOURCES := $(wildcard i3-input/*.c)
i3_input_HEADERS := $(wildcard i3-input/*.h)
-i3_input_CFLAGS = $(XCB_KBD_CFLAGS)
-i3_input_LIBS = $(XCB_KBD_LIBS)
+i3_input_CFLAGS = $(XCB_CFLAGS) $(XCB_KBD_CFLAGS)
+i3_input_LIBS = $(XCB_LIBS) $(XCB_KBD_LIBS)
i3_input_OBJECTS := $(i3_input_SOURCES:.c=.o)
i3_msg_SOURCES := $(wildcard i3-msg/*.c)
i3_msg_HEADERS := $(wildcard i3-msg/*.h)
-i3_msg_CFLAGS =
-i3_msg_LIBS =
+i3_msg_CFLAGS = $(XCB_CFLAGS)
+i3_msg_LIBS = $(XCB_LIBS)
i3_msg_OBJECTS := $(i3_msg_SOURCES:.c=.o)
i3_nagbar_SOURCES := $(wildcard i3-nagbar/*.c)
i3_nagbar_HEADERS := $(wildcard i3-nagbar/*.h)
-i3_nagbar_CFLAGS =
-i3_nagbar_LIBS =
+i3_nagbar_CFLAGS = $(XCB_CFLAGS)
+i3_nagbar_LIBS = $(XCB_LIBS)
i3_nagbar_OBJECTS := $(i3_nagbar_SOURCES:.c=.o)
i3bar_SOURCES := $(wildcard i3bar/src/*.c)
i3bar_HEADERS := $(wildcard i3bar/include/*.h)
-i3bar_CFLAGS = $(X11_CFLAGS) $(YAJL_CFLAGS) $(LIBEV_CFLAGS)
-i3bar_LIBS = $(X11_LIBS) $(YAJL_LIBS) $(LIBEV_LIBS)
+i3bar_CFLAGS = $(XCB_CFLAGS) $(X11_CFLAGS) $(YAJL_CFLAGS) $(LIBEV_CFLAGS)
+i3bar_LIBS = $(XCB_LIBS) $(X11_LIBS) $(YAJL_LIBS) $(LIBEV_LIBS)
i3bar_OBJECTS := $(i3bar_SOURCES:.c=.o)
i3_SOURCES := $(filter-out $(i3_SOURCES_GENERATED),$(wildcard src/*.c))
i3_HEADERS_CMDPARSER := $(wildcard include/GENERATED_*.h)
i3_HEADERS := $(filter-out $(i3_HEADERS_CMDPARSER),$(wildcard include/*.h))
-i3_CFLAGS = $(XCB_KBD_CFLAGS) $(XCB_WM_CFLAGS) $(X11_CFLAGS) $(XCURSOR_CFLAGS) $(YAJL_CFLAGS) $(LIBEV_CFLAGS) $(PCRE_CFLAGS) $(LIBSN_CFLAGS)
-i3_LIBS = $(XCB_KBD_LIBS) $(XCB_WM_LIBS) $(X11_LIBS) $(XCURSOR_LIBS) $(YAJL_LIBS) $(LIBEV_LIBS) $(PCRE_LIBS) $(LIBSN_LIBS) -lm
+i3_CFLAGS = $(XCB_CFLAGS) $(XCB_KBD_CFLAGS) $(XCB_WM_CFLAGS) $(X11_CFLAGS) $(XCURSOR_CFLAGS) $(YAJL_CFLAGS) $(LIBEV_CFLAGS) $(PCRE_CFLAGS) $(LIBSN_CFLAGS)
+i3_LIBS = $(XCB_LIBS) $(XCB_KBD_LIBS) $(XCB_WM_LIBS) $(X11_LIBS) $(XCURSOR_LIBS) $(YAJL_LIBS) $(LIBEV_LIBS) $(PCRE_LIBS) $(LIBSN_LIBS) -lm
i3_OBJECTS := $(i3_SOURCES_GENERATED:.c=.o) $(i3_SOURCES:.c=.o)