commit b0c76c485b6b050d6b76fdf6397d7d4b93ce1efc
parent 16fa6bfa5bfc26126ac712ac03528914b0d651f9
Author: lumidify <nobody@lumidify.org>
Date: Sat, 20 Feb 2021 21:15:18 +0100
Improve makefile, but possibly just make it ugly
Diffstat:
9 files changed, 47 insertions(+), 27 deletions(-)
diff --git a/Makefile b/Makefile
@@ -1,6 +1,33 @@
-include config.mk
+VERSION = -999
-OBJ += strtonum.o util.o memory.o color.o ltkd.o ini.o grid.o box.o scrollbar.o button.o label.o draw.o
+# FIXME: Using DEBUG here doesn't work because it somehow interferes with a predefined macro,
+# at least on OpenBSD
+DEV = 0
+USE_PANGO = 0
+
+CFLAGS += -DUSE_PANGO=$(USE_PANGO) -DDEV=$(DEV) -D_POSIX_C_SOURCE=200809L -w -std=c99 `pkg-config --cflags x11 fontconfig`
+LDFLAGS += -lm `pkg-config --libs x11 fontconfig`
+
+# Note: this macro magic for debugging and pango rendering seems ugly; it should probably be changed
+
+# debug
+DEV_1 = -g -Wall -Werror -Wextra -pedantic
+
+# stb rendering
+EXTRA_OBJ_0 = stb_truetype.o text_stb.o
+
+# pango rendering
+EXTRA_OBJ_1 = text_pango.o
+EXTRA_CFLAGS_1 += -DUSE_PANGO `pkg-config --cflags pangoxft`
+EXTRA_LDFLAGS_1 += `pkg-config --libs pangoxft`
+
+EXTRA_OBJ = $(EXTRA_OBJ_$(USE_PANGO))
+EXTRA_CFLAGS = $(EXTRA_CFLAGS_$(USE_PANGO)) $(DEV_$(DEV))
+EXTRA_LDFLAGS = $(EXTRA_LDFLAGS_$(USE_PANGO))
+
+OBJ = strtonum.o util.o memory.o color.o ltkd.o ini.o grid.o box.o scrollbar.o button.o label.o draw.o $(EXTRA_OBJ)
+CFLAGS += $(EXTRA_CFLAGS)
+LDFLAGS += $(EXTRA_LDFLAGS)
all: ltkd ltkc
diff --git a/color.c b/color.c
@@ -13,7 +13,7 @@ ltk_color_create(Display *dpy, int screen, Colormap cm, const char *hex, LtkColo
}
XAllocColor(dpy, cm, &col->xcolor);
/* FIXME: replace with XftColorAllocValue; error checking */
- #ifdef USE_PANGO
+ #if USE_PANGO == 1
XftColorAllocName(dpy, DefaultVisual(dpy, screen), cm, hex, &col->xftcolor);
#endif
}
diff --git a/color.h b/color.h
@@ -1,15 +1,17 @@
#ifndef _LTK_COLOR_H_
#define _LTK_COLOR_H_
-#ifdef USE_PANGO
+#if USE_PANGO == 1
#include <X11/Xft/Xft.h>
#endif
typedef struct {
XColor xcolor;
- #ifdef USE_PANGO
+ #if USE_PANGO == 1
XftColor xftcolor;
#endif
} LtkColor;
+void ltk_color_create(Display *dpy, int screen, Colormap cm, const char *hex, LtkColor *col);
+
#endif /* _LTK_COLOR_H_ */
diff --git a/config.mk b/config.mk
@@ -1,14 +0,0 @@
-VERSION = -999
-
-CFLAGS = -DDEBUG -D_POSIX_C_SOURCE=200809L -g -std=c99 -w -fno-common -Wall -Werror -Wextra `pkg-config --cflags x11 fontconfig` -pedantic
-LDFLAGS = -lm `pkg-config --libs x11 fontconfig`
-
-# Comment when enabling pango rendering:
-OBJ = stb_truetype.o text_stb.o
-
-# Uncomment to enable pango rendering:
-#OBJ = text_pango.o
-#CFLAGS += -DUSE_PANGO `pkg-config --cflags pangoxft`
-#LDFLAGS += `pkg-config --libs pangoxft`
-
-CC = cc
diff --git a/ltk.h b/ltk.h
@@ -160,7 +160,7 @@ int ltk_collide_rect(ltk_rect rect, int x, int y);
void ltk_window_set_active_widget(ltk_window *window, ltk_widget *widget);
void ltk_window_set_pressed_widget(ltk_window *window, ltk_widget *widget);
void ltk_fill_widget_defaults(ltk_widget *widget, const char *id, ltk_window * window,
- void (*draw) (void *), void (*change_state) (void *),
+ void (*draw) (void *, ltk_rect), void (*change_state) (void *),
void (*destroy) (void *, int), unsigned int needs_redraw,
ltk_widget_type type);
void ltk_widget_mouse_press_event(ltk_widget *widget, XEvent event);
diff --git a/ltkd.c b/ltkd.c
@@ -188,7 +188,7 @@ ltk_mainloop(ltk_window *window) {
FD_SET(listenfd, &rallfds);
maxfd = listenfd;
- printf("%d", window->xwindow);
+ printf("%lu", window->xwindow);
/*fflush(stdout);*/
daemonize();
@@ -327,7 +327,7 @@ get_sock_path(char *basedir, Window id) {
/* FIXME: MAKE SURE THIS IS ACTUALLY BIG ENOUGH! */
path = ltk_malloc(len + 20);
/* FIXME: also check for less than 0 */
- if (snprintf(path, len + 20, "%s/%d.sock", basedir, id) >= len + 20)
+ if (snprintf(path, len + 20, "%s/%lu.sock", basedir, id) >= len + 20)
ltk_fatal("Tell lumidify to fix his code.\n");
return path;
@@ -395,10 +395,10 @@ ltk_log_msg(const char *mode, const char *format, va_list args) {
time(&clock);
timeptr = localtime(&clock);
- strftime(&logtime, 25, "%Y-%m-%d %H:%M:%S", timeptr);
+ strftime(logtime, 25, "%Y-%m-%d %H:%M:%S", timeptr);
if (main_window)
- fprintf(stderr, "%s ltkd(%d) %s: ", logtime, main_window->xwindow, mode);
+ fprintf(stderr, "%s ltkd(%lu) %s: ", logtime, main_window->xwindow, mode);
else
fprintf(stderr, "%s ltkd(?) %s: ", logtime, mode);
vfprintf(stderr, format, args);
@@ -685,7 +685,7 @@ ltk_collide_rect(ltk_rect rect, int x, int y) {
void
ltk_fill_widget_defaults(ltk_widget *widget, const char *id, ltk_window *window,
- void (*draw) (void *), void (*change_state) (void *),
+ void (*draw) (void *, ltk_rect), void (*change_state) (void *),
void (*destroy) (void *, int), unsigned int needs_redraw,
ltk_widget_type type) {
if (id) {
diff --git a/memory.h b/memory.h
@@ -28,7 +28,7 @@
/* Requires: <stdlib.h> */
-#ifdef DEBUG
+#if DEV == 1
#define ltk_strdup(s) ltk_strdup_debug(s, __func__, __FILE__, __LINE__)
#define ltk_malloc(size) ltk_malloc_debug(size, __func__, __FILE__, __LINE__)
#define ltk_calloc(nmemb, size) ltk_calloc_debug(nmemb, size, __func__, __FILE__, __LINE__)
diff --git a/text.h b/text.h
@@ -14,7 +14,7 @@ void ltk_text_line_set_width(LtkTextLine *tl, int width);
void ltk_text_line_get_size(LtkTextLine *tl, int *w, int *h);
void ltk_text_line_destroy(LtkTextLine *tl);
-#ifdef USE_PANGO
+#if USE_PANGO == 1
#include <pango/pangoxft.h>
#endif
diff --git a/util.h b/util.h
@@ -38,3 +38,8 @@ char *ltk_strcat_useful(const char *str1, const char *str2);
declared here so they can be used by the utility functions */
void ltk_log_msg(const char *mode, const char *format, va_list args);
void ltk_cleanup(void);
+
+void ltk_fatal_errno(const char *format, ...);
+void ltk_warn_errno(const char *format, ...);
+void ltk_fatal(const char *format, ...);
+void ltk_warn(const char *format, ...);