commit 0a60e49
shrub
·
2026-02-08 00:06:32 +0000 UTC
parent 402198d
bmake
M
Makefile
+184,
-178
1@@ -1,199 +1,205 @@
2-# wld: Makefile
3-
4-include config.mk
5-
6-PREFIX ?= /usr
7-LIBDIR ?= $(PREFIX)/lib
8-INCLUDEDIR ?= $(PREFIX)/include
9-PKGCONFIGDIR ?= $(LIBDIR)/pkgconfig
10-
11-PKG_CONFIG ?= pkg-config
12-WAYLAND_SCANNER ?= wayland-scanner
13-
14-VERSION_MAJOR := 0
15-VERSION_MINOR := 0
16-VERSION := $(VERSION_MAJOR).$(VERSION_MINOR)
17-
18-WLD_LIB_LINK := libwld.so
19-WLD_LIB_SONAME := $(WLD_LIB_LINK).$(VERSION_MAJOR)
20-WLD_LIB := $(WLD_LIB_LINK).$(VERSION)
21-
22-TARGETS := wld.pc
23-CLEAN_FILES :=
24-
25-WLD_REQUIRES = fontconfig pixman-1
26-WLD_REQUIRES_PRIVATE = freetype2
27-WLD_SOURCES = \
28- buffer.c \
29- buffered_surface.c \
30- color.c \
31- context.c \
32- font.c \
33- renderer.c \
34+# wld bmake
35+
36+.include "config.mk"
37+
38+PREFIX?= /usr
39+LIBDIR?= ${PREFIX}/lib
40+INCLUDEDIR?= ${PREFIX}/include
41+PKGCONFIGDIR?= ${LIBDIR}/pkgconfig
42+
43+PKG_CONFIG?= pkg-config
44+WAYLAND_SCANNER?=wayland-scanner
45+INSTALL?= install
46+AR?= ar
47+CC?= cc
48+
49+VERSION_MAJOR=0
50+VERSION_MINOR=0
51+VERSION=${VERSION_MAJOR}.${VERSION_MINOR}
52+
53+WLD_LIB_LINK=libwld.so
54+WLD_LIB_SONAME=${WLD_LIB_LINK}.${VERSION_MAJOR}
55+WLD_LIB=${WLD_LIB_LINK}.${VERSION}
56+
57+WLD_REQUIRES=fontconfig pixman-1
58+WLD_REQUIRES_PRIVATE=freetype2
59+
60+WLD_SOURCES= \
61+ buffer.c \
62+ buffered_surface.c \
63+ color.c \
64+ context.c \
65+ font.c \
66+ renderer.c \
67 surface.c
68-WLD_HEADERS = wld.h
69-
70-ifeq ($(ENABLE_DRM),1)
71- WLD_REQUIRES_PRIVATE += libdrm
72- WLD_SOURCES += drm.c dumb.c
73- WLD_HEADERS += drm.h
74-
75- ifneq ($(findstring intel,$(DRM_DRIVERS)),)
76- WLD_REQUIRES_PRIVATE += libdrm_intel
77- WLD_SOURCES += intel.c intel/batch.c
78- WLD_CPPFLAGS += -DWITH_DRM_INTEL=1
79- endif
80-
81- ifneq ($(findstring nouveau,$(DRM_DRIVERS)),)
82- WLD_REQUIRES_PRIVATE += libdrm_nouveau
83- WLD_SOURCES += nouveau.c
84- WLD_CPPFLAGS += -DWITH_DRM_NOUVEAU=1
85- endif
86-endif
87-
88-ifeq ($(ENABLE_PIXMAN),1)
89- WLD_SOURCES += pixman.c
90- WLD_HEADERS += pixman.h
91-endif
92-
93-ifeq ($(ENABLE_WAYLAND),1)
94- WLD_REQUIRES_PRIVATE += wayland-client
95- WLD_SOURCES += wayland.c
96- WLD_HEADERS += wayland.h
97-
98- ifneq ($(findstring shm,$(WAYLAND_INTERFACES)),)
99- WLD_SOURCES += wayland-shm.c
100- WLD_CPPFLAGS += -DWITH_WAYLAND_SHM=1
101- endif
102-
103- ifneq ($(findstring drm,$(WAYLAND_INTERFACES)),)
104- WLD_SOURCES += wayland-drm.c protocol/wayland-drm-protocol.c
105- WLD_CPPFLAGS += -DWITH_WAYLAND_DRM=1
106- endif
107-endif
108-
109-ifeq ($(if $(V),$(V),0), 0)
110- define quiet
111- @echo " $1 $@"
112- @$(if $2,$2,$($1))
113- endef
114-else
115- quiet = $(if $2,$2,$($1))
116-endif
117-
118-WLD_STATIC_OBJECTS = $(WLD_SOURCES:%.c=%.o)
119-WLD_SHARED_OBJECTS = $(WLD_SOURCES:%.c=%.lo)
120-WLD_PACKAGES = $(WLD_REQUIRES) $(WLD_REQUIRES_PRIVATE)
121-WLD_PACKAGE_CFLAGS ?= $(call pkgconfig,$(WLD_PACKAGES),cflags,CFLAGS)
122-WLD_PACKAGE_LIBS ?= $(call pkgconfig,$(WLD_PACKAGES),libs,LIBS)
123-
124-ifeq ($(shell uname),OpenBSD)
125- WLD_PACKAGE_LIBS += -lc
126-endif
127-
128-
129-FINAL_CFLAGS = $(CFLAGS) -fvisibility=hidden -std=c99 -Wvla
130-FINAL_CPPFLAGS = $(CPPFLAGS)
131-
132-# Warning/error flags
133-FINAL_CFLAGS += -Werror=implicit-function-declaration -Werror=implicit-int \
134- -Werror=pointer-sign -Werror=pointer-arith \
135- -Wall -Wno-missing-braces
136-
137-ifeq ($(shell uname),NetBSD)
138- # Needed for mkostemp
139- FINAL_CPPFLAGS += -D_NETBSD_SOURCE
140-endif
141-
142-ifeq ($(shell uname),Linux)
143- FINAL_CPPFLAGS += -D_POSIX_C_SOURCE=200809L
144-endif
145-
146-ifeq ($(ENABLE_DEBUG),1)
147- FINAL_CPPFLAGS += -DENABLE_DEBUG=1
148- FINAL_CFLAGS += -g
149-else
150- FINAL_CPPFLAGS += -DNDEBUG
151-endif
152-
153-ifeq ($(ENABLE_STATIC),1)
154- TARGETS += libwld.a
155- CLEAN_FILES += $(WLD_STATIC_OBJECTS)
156-endif
157-
158-ifeq ($(ENABLE_SHARED),1)
159- TARGETS += $(WLD_LIB) $(WLD_LIB_LINK) $(WLD_LIB_SONAME)
160- CLEAN_FILES += $(WLD_SHARED_OBJECTS)
161-endif
162-
163-CLEAN_FILES += $(TARGETS)
164-
165-compile = $(call quiet,CC) $(FINAL_CPPFLAGS) $(FINAL_CFLAGS) -c -o $@ $< \
166- -MMD -MP -MF .deps/$(basename $<).d -MT $(basename $@).o -MT $(basename $@).lo
167-link = $(call quiet,CCLD,$(CC)) $(LDFLAGS) -o $@ $^
168-pkgconfig = $(sort $(foreach pkg,$(1),$(if $($(pkg)_$(3)),$($(pkg)_$(3)), \
169- $(shell $(PKG_CONFIG) --$(2) $(pkg)))))
170
171-.PHONY: all
172-all: $(TARGETS)
173-
174-include $(foreach dir,intel protocol,$(dir)/local.mk)
175+WLD_HEADERS=wld.h
176+
177+.if ${ENABLE_DRM} == 1
178+WLD_REQUIRES_PRIVATE+=libdrm
179+WLD_SOURCES+=drm.c dumb.c
180+WLD_HEADERS+=drm.h
181+
182+.if !empty(DRM_DRIVERS:Mintel)
183+WLD_REQUIRES_PRIVATE+=libdrm_intel
184+WLD_SOURCES+=intel.c intel/batch.c
185+WLD_CPPFLAGS+=-DWITH_DRM_INTEL=1
186+.endif
187+
188+.if !empty(DRM_DRIVERS:Mnouveau)
189+WLD_REQUIRES_PRIVATE+=libdrm_nouveau
190+WLD_SOURCES+=nouveau.c
191+WLD_CPPFLAGS+=-DWITH_DRM_NOUVEAU=1
192+.endif
193+.endif
194+
195+.if ${ENABLE_PIXMAN} == 1
196+WLD_SOURCES+=pixman.c
197+WLD_HEADERS+=pixman.h
198+.endif
199+
200+.if ${ENABLE_WAYLAND} == 1
201+WLD_REQUIRES_PRIVATE+=wayland-client
202+WLD_SOURCES+=wayland.c
203+WLD_HEADERS+=wayland.h
204+
205+.if !empty(WAYLAND_INTERFACES:Mshm)
206+WLD_SOURCES+=wayland-shm.c
207+WLD_CPPFLAGS+=-DWITH_WAYLAND_SHM=1
208+.endif
209+
210+.if !empty(WAYLAND_INTERFACES:Mdrm)
211+WLD_SOURCES+=wayland-drm.c protocol/wayland-drm-protocol.c
212+WLD_CPPFLAGS+=-DWITH_WAYLAND_DRM=1
213+WAYLAND_DRM_XML=protocol/wayland-drm.xml
214+.endif
215+.endif
216+
217+WLD_PACKAGES=${WLD_REQUIRES} ${WLD_REQUIRES_PRIVATE}
218+WLD_PKG_CFLAGS!=${PKG_CONFIG} --cflags ${WLD_PACKAGES}
219+WLD_PKG_LIBS!=${PKG_CONFIG} --libs ${WLD_PACKAGES}
220+
221+.if ${.MAKE.OS} == "OpenBSD"
222+WLD_PKG_LIBS+=-lc
223+.endif
224+
225+CPPFLAGS+=${WLD_PKG_CFLAGS} ${WLD_CPPFLAGS}
226+
227+CFLAGS+=-fvisibility=hidden -std=c99 -Wvla
228+CFLAGS+=-Wall -Werror=implicit-function-declaration \
229+ -Werror=implicit-int -Werror=pointer-sign \
230+ -Werror=pointer-arith
231+
232+.if ${.MAKE.OS} == "NetBSD"
233+CPPFLAGS+=-D_NETBSD_SOURCE
234+.endif
235+
236+.if ${.MAKE.OS} == "Linux"
237+CPPFLAGS+=-D_POSIX_C_SOURCE=200809L
238+.endif
239+
240+.if ${ENABLE_DEBUG} == 1
241+CPPFLAGS+=-DENABLE_DEBUG=1
242+CFLAGS+=-g
243+.else
244+CPPFLAGS+=-DNDEBUG
245+.endif
246+
247+STATIC_OBJECTS=${WLD_SOURCES:R:S/$/.o/g}
248+SHARED_OBJECTS=${WLD_SOURCES:R:S/$/.lo/g}
249+
250+DEPFLAGS=-MMD -MP -MF .deps/${.TARGET:T:R}.d
251+
252+.SUFFIXES: .c .o .lo
253
254 .deps:
255- @mkdir "$@"
256+ @mkdir -p $@
257
258-%.o: %.c | .deps
259- $(compile) $(WLD_CPPFLAGS) $(WLD_PACKAGE_CFLAGS)
260+.c.o: .deps
261+ @echo " CC $@"
262+ @${CC} ${CPPFLAGS} ${CFLAGS} ${DEPFLAGS} -c $< -o $@
263
264-%.lo: %.c | .deps
265- $(compile) $(WLD_CPPFLAGS) $(WLD_PACKAGE_CFLAGS) -fPIC
266+.c.lo: .deps
267+ @echo " CC $@"
268+ @${CC} ${CPPFLAGS} ${CFLAGS} -fPIC ${DEPFLAGS} -c $< -o $@
269
270-wayland-drm.o wayland-drm.lo: protocol/wayland-drm-client-protocol.h
271+.if defined(WAYLAND_DRM_XML)
272+protocol/wayland-drm-protocol.c: ${WAYLAND_DRM_XML}
273+ @echo " GEN $@"
274+ @${WAYLAND_SCANNER:Uwayland-scanner} private-code ${.ALLSRC} $@
275
276-wld.pc: wld.pc.in
277- $(call quiet,GEN,sed) \
278- -e "s:@VERSION@:$(VERSION):" \
279- -e "s:@PREFIX@:$(PREFIX):" \
280- -e "s:@LIBDIR@:$(LIBDIR):" \
281- -e "s:@INCLUDEDIR@:$(INCLUDEDIR):" \
282- -e "s:@WLD_REQUIRES@:$(WLD_REQUIRES):" \
283- -e "s:@WLD_REQUIRES_PRIVATE@:$(WLD_REQUIRES_PRIVATE):" \
284- $< > $@
285+protocol/wayland-drm-client-protocol.h: ${WAYLAND_DRM_XML}
286+ @echo " GEN $@"
287+ @${WAYLAND_SCANNER:Uwayland-scanner} client-header ${.ALLSRC} $@
288+
289+wayland-drm.o wayland-drm.lo: protocol/wayland-drm-client-protocol.h
290+.endif
291
292-libwld.a: $(WLD_STATIC_OBJECTS)
293- $(call quiet,AR) cr $@ $^
294+.if ${ENABLE_STATIC} == 1
295+libwld.a: ${STATIC_OBJECTS}
296+ @echo " AR $@"
297+ @${AR} rc $@ ${.ALLSRC}
298+ @ranlib $@
299+.endif
300
301-$(WLD_LIB): $(WLD_SHARED_OBJECTS)
302- $(link) $(WLD_PACKAGE_LIBS) -shared -Wl,-soname,$(WLD_LIB_SONAME),-no-undefined
303+.if ${ENABLE_SHARED} == 1
304+${WLD_LIB}: ${SHARED_OBJECTS}
305+ @echo " LINK $@"
306+ @${CC} -shared -Wl,-soname,${WLD_LIB_SONAME} \
307+ -o $@ ${.ALLSRC} ${WLD_PKG_LIBS}
308
309-$(WLD_LIB_SONAME) $(WLD_LIB_LINK): $(WLD_LIB)
310- $(call quiet,SYM,ln -sf) $< $@
311+${WLD_LIB_SONAME}: ${WLD_LIB}
312+ ln -sf ${WLD_LIB} $@
313
314-$(foreach dir,LIB PKGCONFIG,$(DESTDIR)$($(dir)DIR)) $(DESTDIR)$(INCLUDEDIR)/wld:
315- mkdir -p $@
316+${WLD_LIB_LINK}: ${WLD_LIB_SONAME}
317+ ln -sf ${WLD_LIB_SONAME} $@
318+.endif
319
320-.PHONY: install-wld.pc
321-install-wld.pc: wld.pc | $(DESTDIR)$(PKGCONFIGDIR)
322- install -m 644 $< $(DESTDIR)$(PKGCONFIGDIR)
323+wld.pc: wld.pc.in
324+ @echo " GEN $@"
325+ @sed -e "s:@VERSION@:${VERSION}:" \
326+ -e "s:@PREFIX@:${PREFIX}:" \
327+ -e "s:@LIBDIR@:${LIBDIR}:" \
328+ -e "s:@INCLUDEDIR@:${INCLUDEDIR}:" \
329+ -e "s:@WLD_REQUIRES@:${WLD_REQUIRES}:" \
330+ -e "s:@WLD_REQUIRES_PRIVATE@:${WLD_REQUIRES_PRIVATE}:" \
331+ ${.ALLSRC} > $@
332+
333+.MAIN: all
334+.PHONY: all
335+all: wld.pc
336+.if ${ENABLE_STATIC} == 1
337+all: libwld.a
338+.endif
339+.if ${ENABLE_SHARED} == 1
340+all: ${WLD_LIB} ${WLD_LIB_SONAME} ${WLD_LIB_LINK}
341+.endif
342
343-.PHONY: install-libwld.a
344-install-libwld.a: libwld.a | $(DESTDIR)$(LIBDIR)
345- install -m 644 $< $(DESTDIR)$(LIBDIR)
346+.PHONY: install
347+install: all
348+ ${INSTALL} -d ${DESTDIR}${LIBDIR}
349+ ${INSTALL} -d ${DESTDIR}${INCLUDEDIR}/wld
350+ ${INSTALL} -d ${DESTDIR}${PKGCONFIGDIR}
351
352-.PHONY: install-$(WLD_LIB)
353-install-$(WLD_LIB): $(WLD_LIB) | $(DESTDIR)$(LIBDIR)
354- install -m 755 $< $(DESTDIR)$(LIBDIR)
355+ ${INSTALL} -m644 wld.pc ${DESTDIR}${PKGCONFIGDIR}
356+ ${INSTALL} -m644 ${WLD_HEADERS} ${DESTDIR}${INCLUDEDIR}/wld
357
358-.PHONY: install-$(WLD_LIB_LINK) install-$(WLD_LIB_SONAME)
359-install-$(WLD_LIB_LINK) install-$(WLD_LIB_SONAME): install-$(WLD_LIB) | $(DESTDIR)$(LIBDIR)
360- ln -sf $(WLD_LIB) $(DESTDIR)$(LIBDIR)/${@:install-%=%}
361+.if ${ENABLE_STATIC} == 1
362+ ${INSTALL} -m644 libwld.a ${DESTDIR}${LIBDIR}
363+.endif
364
365-.PHONY: install
366-install: $(TARGETS:%=install-%) | $(foreach dir,LIB PKGCONFIG,$(DESTDIR)$($(dir)DIR)) $(DESTDIR)$(INCLUDEDIR)/wld
367- install -m 644 $(WLD_HEADERS) $(DESTDIR)$(INCLUDEDIR)/wld
368+.if ${ENABLE_SHARED} == 1
369+ ${INSTALL} -m755 ${WLD_LIB} ${DESTDIR}${LIBDIR}
370+ cd ${DESTDIR}${LIBDIR} && ln -sf ${WLD_LIB} ${WLD_LIB_SONAME}
371+ cd ${DESTDIR}${LIBDIR} && ln -sf ${WLD_LIB_SONAME} ${WLD_LIB_LINK}
372+.endif
373
374 .PHONY: clean
375 clean:
376- rm -rf $(CLEAN_FILES)
377+ rm -f ${STATIC_OBJECTS} ${SHARED_OBJECTS} \
378+ libwld.a ${WLD_LIB} ${WLD_LIB_LINK} \
379+ ${WLD_LIB_SONAME} wld.pc
380+ rm -rf .deps protocol/wayland-drm-protocol.c \
381+ protocol/wayland-drm-client-protocol.h
382
383--include .deps/*.d
384+.sinclude ".deps/*.d"
+14,
-15
1@@ -1,20 +1,19 @@
2-# wld: config.mk
3+# wld: config.mk (BSD make)
4
5-CC = gcc
6-CFLAGS = -pipe
7+CC=gcc
8+CFLAGS=-pipe
9
10-ENABLE_DEBUG = 1
11-ENABLE_STATIC = 1
12-ENABLE_SHARED = 1
13+ENABLE_DEBUG=1
14+ENABLE_STATIC=1
15+ENABLE_SHARED=1
16
17-ENABLE_PIXMAN = 1
18-ENABLE_DRM = 1
19-ENABLE_WAYLAND = 1
20+ENABLE_PIXMAN=1
21+ENABLE_DRM=1
22+ENABLE_WAYLAND=1
23
24-DRM_DRIVERS = intel nouveau
25-WAYLAND_INTERFACES = shm
26-
27-ifeq ($(ENABLE_DRM),1)
28- WAYLAND_INTERFACES += drm
29-endif
30+DRM_DRIVERS=intel nouveau
31+WAYLAND_INTERFACES=shm
32
33+.if ${ENABLE_DRM} == 1
34+WAYLAND_INTERFACES+= drm
35+.endif