Makefile - ltk - GUI toolkit for X11 (WIP)
HTML git clone git://lumidify.org/ltk.git (fast, but not encrypted)
HTML git clone https://lumidify.org/ltk.git (encrypted, but very slow)
HTML git clone git://4kcetb7mo7hj6grozzybxtotsub5bempzo4lirzc3437amof2c2impyd.onion/ltk.git (over tor)
DIR Log
DIR Files
DIR Refs
DIR README
DIR LICENSE
---
Makefile (4609B)
---
1 # Yes, I know this is a mess.
2
3 .POSIX:
4 .SUFFIXES: .c .o
5
6 NAME = test
7 VERSION = -999-prealpha0
8
9 # NOTE/FIXME: stb backend is currently broken
10 # Note: The stb backend should not be used with untrusted font files.
11 # FIXME: Using DEBUG here doesn't work because it somehow
12 # interferes with a predefined macro, at least on OpenBSD.
13 DEV = 1
14 MEMDEBUG = 0
15 SANITIZE = 0
16 USE_PANGO = 1
17 USE_XRANDR = 1
18
19 # Note: this macro magic for debugging and pango rendering seems ugly; it should probably be changed
20
21 # debug
22 DEV_CFLAGS_1 = -g -Wall -Wextra -pedantic
23 SANITIZE_FLAGS_1 = -g -fsanitize=address,undefined
24 # don't include default flags when debugging so possible
25 # optimization flags don't interfere with it
26 DEV_CFLAGS_0 = $(CFLAGS)
27 DEV_LDFLAGS_0 = $(LDFLAGS)
28
29 # stb rendering
30 EXTRA_OBJ_0 = src/ltk/stb_truetype.o src/ltk/text_stb.o
31
32 # pango rendering
33 EXTRA_OBJ_1 = src/ltk/text_pango.o
34 EXTRA_CFLAGS_1 = `pkg-config --cflags pangoxft`
35 EXTRA_LDFLAGS_1 = `pkg-config --libs pangoxft`
36
37 # xrandr support (dynamic dpi)
38 EXTRA_CFLAGS_XRANDR_0 =
39 EXTRA_CFLAGS_XRANDR_1 = `pkg-config --cflags xrandr`
40 EXTRA_LDFLAGS_XRANDR_0 =
41 EXTRA_LDFLAGS_XRANDR_1 = `pkg-config --libs xrandr`
42
43 EXTRA_OBJ = $(EXTRA_OBJ_$(USE_PANGO))
44 EXTRA_CFLAGS = $(SANITIZE_FLAGS_$(SANITIZE)) $(DEV_CFLAGS_$(DEV)) $(EXTRA_CFLAGS_$(USE_PANGO)) $(EXTRA_CFLAGS_XRANDR_$(USE_XRANDR))
45 EXTRA_LDFLAGS = $(SANITIZE_FLAGS_$(SANITIZE)) $(DEV_LDFLAGS_$(DEV)) $(EXTRA_LDFLAGS_$(USE_PANGO)) $(EXTRA_LDFLAGS_XRANDR_$(USE_XRANDR))
46
47 LTK_CFLAGS = $(EXTRA_CFLAGS) -DUSE_XRANDR=$(USE_XRANDR) -DUSE_PANGO=$(USE_PANGO) -DDEV=$(DEV) -DMEMDEBUG=$(MEMDEBUG) -I ./src -std=c99 `pkg-config --cflags x11 fontconfig xext xcursor imlib2` -D_POSIX_C_SOURCE=200809L
48 LTK_LDFLAGS = $(EXTRA_LDFLAGS) -lm `pkg-config --libs x11 fontconfig xext xcursor imlib2`
49
50 OBJ_LTK = \
51 src/ltk/num.o \
52 src/ltk/util.o \
53 src/ltk/memory.o \
54 src/ltk/window.o \
55 src/ltk/color_xlib.o \
56 src/ltk/rect.o \
57 src/ltk/widget.o \
58 src/ltk/ltk.o \
59 src/ltk/button.o \
60 src/ltk/checkbutton.o \
61 src/ltk/radiobutton.o \
62 src/ltk/combobox.o \
63 src/ltk/graphics_xlib.o \
64 src/ltk/surface_cache.o \
65 src/ltk/event_xlib.o \
66 src/ltk/grid.o \
67 src/ltk/config.o \
68 src/ltk/clipboard_xlib.o \
69 src/ltk/txtbuf.o \
70 src/ltk/ctrlsel.o \
71 src/ltk/label.o \
72 src/ltk/image_imlib.o \
73 src/ltk/image_widget.o \
74 src/ltk/entry.o \
75 src/ltk/menu.o \
76 src/ltk/box.o \
77 src/ltk/scrollbar.o \
78 $(EXTRA_OBJ)
79
80 OBJ_LTKD = \
81 src/ltkd/box.o \
82 src/ltkd/button.o \
83 src/ltkd/cmd.o \
84 src/ltkd/entry.o \
85 src/ltkd/err.o \
86 src/ltkd/grid.o \
87 src/ltkd/image_widget.o \
88 src/ltkd/label.o \
89 src/ltkd/ltkd.o \
90 src/ltkd/menu.o \
91 src/ltkd/util.o \
92 src/ltkd/widget.o
93
94 OBJ_TEST = examples/ltk/test.o
95 # Note: This could be improved so a change in a header only causes the .c files
96 # which include that header to be recompiled, but the compile times are
97 # currently so short that I don't really care.
98 HDR_LTK = \
99 src/ltk/button.h \
100 src/ltk/checkbutton.h \
101 src/ltk/radiobutton.h \
102 src/ltk/combobox.h \
103 src/ltk/color.h \
104 src/ltk/label.h \
105 src/ltk/rect.h \
106 src/ltk/widget.h \
107 src/ltk/ltk.h \
108 src/ltk/grid.h \
109 src/ltk/memory.h \
110 src/ltk/stb_truetype.h \
111 src/ltk/text.h \
112 src/ltk/util.h \
113 src/ltk/widget_internal.h \
114 src/ltk/graphics.h \
115 src/ltk/surface_cache.h \
116 src/ltk/macros.h \
117 src/ltk/event.h \
118 src/ltk/eventdefs.h \
119 src/ltk/graphics_xlib.h \
120 src/ltk/label.h \
121 src/ltk/config.h \
122 src/ltk/array.h \
123 src/ltk/clipboard_xlib.h \
124 src/ltk/clipboard.h \
125 src/ltk/txtbuf.h \
126 src/ltk/ctrlsel.h \
127 src/ltk/image.h \
128 src/ltk/image_widget.h \
129 src/ltk/entry.h \
130 src/ltk/menu.h \
131 src/ltk/box.h \
132 src/ltk/scrollbar.h
133
134 HDR_LTKD = \
135 src/ltkd/cmd.h \
136 src/ltkd/cmd_helpers.h \
137 src/ltkd/err.h \
138 src/ltkd/khash.h \
139 src/ltkd/ltkd.h \
140 src/ltkd/proto_types.h \
141 src/ltkd/widget.h
142
143 all: examples/ltk/test src/ltkd/ltkd src/ltkd/ltkc src/ltkd/ltkc_img
144
145 test: examples/ltk/test
146
147 ltkd: src/ltkd/ltkd
148
149 ltkc: src/ltkd/ltkc
150
151 ltkc_img: src/ltkd/ltkc_img
152
153 examples/ltk/test: $(OBJ_LTK) $(OBJ_TEST)
154 $(CC) -o $@ $(OBJ_LTK) $(OBJ_TEST) $(LTK_LDFLAGS)
155
156 src/ltkd/ltkd: $(OBJ_LTK) $(OBJ_LTKD)
157 $(CC) -o $@ $(OBJ_LTK) $(OBJ_LTKD) $(LTK_LDFLAGS)
158
159 src/ltkd/ltkc: $(OBJ_LTK) src/ltkd/ltkc.o src/ltkd/util.o
160 $(CC) -o $@ $(OBJ_LTK) src/ltkd/ltkc.o src/ltkd/util.o $(LTK_LDFLAGS)
161
162 src/ltkd/ltkc_img: $(OBJ_LTK) src/ltkd/ltkc_img.o
163 $(CC) -o $@ $(OBJ_LTK) src/ltkd/ltkc_img.o $(LTK_LDFLAGS)
164
165 $(OBJ_LTK) : $(HDR_LTK)
166
167 $(OBJ_TEST) : $(HDR_LTK)
168
169 $(OBJ_LTKD) : $(HDR_LTK) $(HDR_LTKD)
170
171 .c.o:
172 $(CC) -c -o $@ $< $(LTK_CFLAGS)
173
174 .PHONY: clean
175
176 clean:
177 rm -f src/ltkd/*.o src/ltk/*.o src/ltkd/ltkd src/ltkd/ltkc src/ltkd/ltkc_img examples/ltk/test examples/ltk/*.o