commit b930e33
uint
·
2026-07-14 12:35:04 +0000 UTC
parent 7ab90a2
build libmaus in configure script, update Makefile
M
Makefile
+11,
-11
1@@ -1,26 +1,24 @@
2 CC = cc
3 CFLAGS = -std=c99 -Wall -Wextra
4 CPPFLAGS = -Iinclude -Ilibmaus/include
5-
6-LDFLAGS = -lgrapheme
7+LDFLAGS =
8+LDLIBS = -lgrapheme
9
10 include platform.mk
11
12 SRCS = source/cterm.c \
13- source/utils.c \
14- source/font.c \
15- source/term.c \
16- source/draw.c \
17- libmaus/source/maus.c \
18- libmaus/source/maus_x11.c \
19- libmaus/source/utils.c
20+ source/utils.c \
21+ source/font.c \
22+ source/term.c \
23+ source/draw.c
24+
25 OUT = cterm
26
27 all:
28- ${CC} ${SRCS} ${CFLAGS} -O2 ${CPPFLAGS} ${LDFLAGS} -o ${OUT}
29+ ${CC} ${CFLAGS} -Os ${CPPFLAGS} ${SRCS} ${LDFLAGS} -o ${OUT} ${LDLIBS}
30
31 debug:
32- ${CC} ${SRCS} ${CFLAGS} -g ${CPPFLAGS} ${LDFLAGS} -o ${OUT}
33+ ${CC} ${CFLAGS} -g ${CPPFLAGS} ${SRCS} ${LDFLAGS} -o ${OUT} ${LDLIBS}
34
35 clean:
36 rm -f ${OUT}
37@@ -29,3 +27,5 @@ compile_flags:
38 rm -f compile_flags.txt
39 for f in ${CPPFLAGS} ${CFLAGS}; do echo $$f >> compile_flags.txt; done
40
41+.PHONY: all debug clean compile_flags
42+
+61,
-48
1@@ -1,51 +1,64 @@
2 #!/bin/sh
3+set -eu
4
5-PLATFORM=$(uname)
6-
7-if [ -n "$WAYLAND_DISPLAY" ]; then
8- UNIX_BACKEND=-DBACKEND_WAY
9-elif [ -n "$DISPLAY" ]; then
10- UNIX_BACKEND=-DBACKEND_X11
11-else
12- echo "Neither Xorg or Wayland detected! Aborting..." >&2
13- exit 1
14-fi
15-
16-LINUX_LDFLAGS="-lX11 -lXext"
17-LINUX_CPPFLAGS="-D_XOPEN_SOURCE=700 $UNIX_BACKEND"
18-
19-FREEBSD_LDFLAGS="-lX11 -lXext"
20-FREEBSD_CPPFLAGS="$UNIX_BACKEND"
21-
22-OPENBSD_LDFLAGS="-I/usr/X11R6/include -L/usr/X11R6/lib -lX11 -lXext"
23-OPENBSD_CPPFLAGS="$UNIX_BACKEND"
24-
25-MACOS_LDFLAGS="-framework Cocoa -framework CoreVideo -framework IOKit -framework CoreGraphics -framework CoreFoundation -framework Carbon"
26-
27-{
28- case "$PLATFORM" in
29- Linux)
30- echo "# Linux"
31- echo "LDFLAGS += $LINUX_LDFLAGS"
32- echo "CPPFLAGS += $LINUX_CPPFLAGS"
33- ;;
34- FreeBSD)
35- echo "# FreeBSD"
36- echo "LDFLAGS += $FREEBSD_LDFLAGS"
37- echo "CPPFLAGS += $FREEBSD_CPPFLAGS"
38- ;;
39- OpenBSD)
40- echo "# OpenBSD"
41- echo "LDFLAGS += $OPENBSD_LDFLAGS"
42- echo "CPPFLAGS += $OPENBSD_CPPFLAGS"
43- ;;
44- Darwin)
45- echo "# Darwin"
46- echo "LDFLAGS += $MACOS_LDFLAGS"
47- ;;
48- *) # TODO: some better default option
49- echo "Unsupported platform: $PLATFORM" >&2
50+PLATFORM=$(uname -s)
51+CPPFLAGS=
52+LDFLAGS="-Llibmaus/build"
53+
54+case "$PLATFORM" in
55+ Darwin)
56+ BACKEND=mac
57+ LDLIBS="-lmaus_mac \
58+ -framework Cocoa \
59+ -framework CoreVideo \
60+ -framework IOKit \
61+ -framework CoreGraphics \
62+ -framework CoreFoundation \
63+ -framework Carbon"
64+ ;;
65+
66+ Linux|FreeBSD|OpenBSD)
67+ if [ -n "${WAYLAND_DISPLAY:-}" ]; then
68+ BACKEND=way
69+ CPPFLAGS=-DBACKEND_WAY
70+ LDLIBS="-lmaus_way -lwayland-client"
71+ elif [ -n "${DISPLAY:-}" ]; then
72+ BACKEND=x11
73+ CPPFLAGS=-DBACKEND_X11
74+ LDLIBS="-lmaus_x11 -lX11 -lXext"
75+ else
76+ echo "No X11 or Wayland display found" >&2
77 exit 1
78- ;;
79- esac
80-} > platform.mk
81+ fi
82+
83+ case "$PLATFORM" in
84+ Linux)
85+ CPPFLAGS="-D_XOPEN_SOURCE=700 $CPPFLAGS"
86+ ;;
87+ OpenBSD)
88+ CPPFLAGS="-I/usr/X11R6/include $CPPFLAGS"
89+ LDFLAGS="-L/usr/X11R6/lib $LDFLAGS"
90+ ;;
91+ esac
92+ ;;
93+
94+ *)
95+ echo "Unsupported platform: $PLATFORM" >&2
96+ exit 1
97+ ;;
98+esac
99+
100+(
101+ cd libmaus
102+ rm -rf build/
103+ ./configure --backend="$BACKEND"
104+ make
105+)
106+
107+cat >platform.mk <<EOF
108+CPPFLAGS += $CPPFLAGS
109+LDFLAGS += $LDFLAGS
110+LDLIBS += $LDLIBS
111+EOF
112+
113+echo "Configuration done"