2025-09-27 14:29:44 +00:00
|
|
|
# $Id$
|
|
|
|
|
|
|
|
|
|
TARGET = $(shell uname -s)
|
|
|
|
|
|
|
|
|
|
CC = gcc
|
2025-10-01 21:47:55 +00:00
|
|
|
CFLAGS = -Wall -Wextra -Iinclude -g
|
2025-09-27 14:29:44 +00:00
|
|
|
LDFLAGS =
|
|
|
|
|
LIBS =
|
|
|
|
|
|
2025-10-01 05:46:16 +00:00
|
|
|
L_CFLAGS = $(CFLAGS) -fPIC -D_MILSKO
|
2025-09-29 05:15:42 +00:00
|
|
|
L_LDFLAGS = $(LDFLAGS)
|
|
|
|
|
L_LIBS = $(LIBS)
|
|
|
|
|
|
|
|
|
|
E_CFLAGS = $(CFLAGS)
|
2025-09-29 05:18:52 +00:00
|
|
|
E_LDFLAGS = $(LDFLAGS) -Lsrc
|
2025-09-29 08:24:51 +00:00
|
|
|
E_LIBS = $(LIBS) -lMw
|
2025-09-29 05:15:42 +00:00
|
|
|
|
2025-10-01 21:47:55 +00:00
|
|
|
L_OBJS = src/core.o src/default.o src/draw.o src/lowlevel.o src/font.o src/boldfont.o src/error.o
|
2025-10-01 17:29:07 +00:00
|
|
|
L_OBJS += src/external/ds.o src/external/image.o
|
|
|
|
|
L_OBJS += src/widget/window.o src/widget/button.o src/widget/frame.o src/widget/menu.o
|
2025-09-27 14:29:44 +00:00
|
|
|
|
|
|
|
|
ifeq ($(TARGET),NetBSD)
|
2025-09-29 08:20:45 +00:00
|
|
|
CFLAGS += -I/usr/X11R7/include -I/usr/pkg/include
|
|
|
|
|
LDFLAGS += -L/usr/X11R7/lib -L/usr/pkg/lib -Wl,-R/usr/X11R7/lib -Wl,-R/usr/pkg/lib
|
2025-09-27 14:29:44 +00:00
|
|
|
UNIX = 1
|
|
|
|
|
else ifeq ($(TARGET),Linux)
|
2025-10-01 06:03:14 +00:00
|
|
|
L_LIBS += -ldl
|
2025-09-27 14:29:44 +00:00
|
|
|
UNIX = 1
|
2025-10-01 05:46:16 +00:00
|
|
|
VULKAN = 1
|
2025-09-28 21:15:34 +00:00
|
|
|
else ifeq ($(TARGET),Windows)
|
|
|
|
|
WINDOWS = 1
|
2025-09-27 14:29:44 +00:00
|
|
|
else
|
|
|
|
|
$(error Add your platform definition)
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
ifeq ($(UNIX),1)
|
2025-09-29 05:15:42 +00:00
|
|
|
L_CFLAGS += -DUSE_X11
|
2025-10-01 17:29:07 +00:00
|
|
|
L_OBJS += src/backend/x11.o
|
2025-10-01 05:46:16 +00:00
|
|
|
L_LIBS += -lX11 -lXrender -lXext
|
2025-09-29 08:20:45 +00:00
|
|
|
|
|
|
|
|
GL = -lGL
|
2025-09-29 05:15:42 +00:00
|
|
|
|
2025-09-29 06:40:08 +00:00
|
|
|
E_LIBS += -lm
|
|
|
|
|
|
2025-09-29 05:15:42 +00:00
|
|
|
SO = .so
|
|
|
|
|
EXEC =
|
2025-10-01 05:46:16 +00:00
|
|
|
|
|
|
|
|
OPENGL = 1
|
2025-09-28 21:15:34 +00:00
|
|
|
else ifeq ($(WINDOWS),1)
|
2025-09-29 05:15:42 +00:00
|
|
|
L_CFLAGS += -DUSE_GDI
|
2025-09-30 21:58:05 +00:00
|
|
|
L_LDFLAGS += -Wl,--out-implib,src/libMw.lib -static-libgcc
|
2025-10-01 17:29:07 +00:00
|
|
|
L_OBJS += src/backend/gdi.o
|
2025-10-01 05:46:16 +00:00
|
|
|
L_LIBS += -lgdi32
|
2025-09-29 08:20:45 +00:00
|
|
|
|
|
|
|
|
GL = -lopengl32
|
2025-09-29 05:15:42 +00:00
|
|
|
|
|
|
|
|
SO = .dll
|
|
|
|
|
EXEC = .exe
|
2025-10-01 05:46:16 +00:00
|
|
|
|
|
|
|
|
OPENGL = 1
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
EXAMPLES = examples/example$(EXEC) examples/rotate$(EXEC) examples/image$(EXEC)
|
|
|
|
|
|
|
|
|
|
ifeq ($(OPENGL),1)
|
2025-10-01 17:29:07 +00:00
|
|
|
L_OBJS += src/widget/opengl.o
|
2025-10-01 05:46:16 +00:00
|
|
|
EXAMPLES += examples/opengl$(EXEC)
|
2025-09-27 14:29:44 +00:00
|
|
|
endif
|
|
|
|
|
|
2025-10-01 05:46:16 +00:00
|
|
|
ifeq ($(VULKAN),1)
|
2025-10-01 17:29:07 +00:00
|
|
|
L_OBJS += src/widget/vulkan.o
|
2025-10-01 05:46:16 +00:00
|
|
|
EXAMPLES += examples/vulkan$(EXEC)
|
|
|
|
|
endif
|
2025-09-29 05:26:50 +00:00
|
|
|
|
2025-09-29 05:15:42 +00:00
|
|
|
.PHONY: all format clean lib examples
|
2025-09-27 14:29:44 +00:00
|
|
|
|
2025-10-01 05:37:09 +00:00
|
|
|
all: lib examples
|
2025-09-29 05:18:52 +00:00
|
|
|
lib: src/libMw$(SO)
|
2025-09-29 05:26:50 +00:00
|
|
|
examples: $(EXAMPLES)
|
2025-09-27 14:29:44 +00:00
|
|
|
|
2025-09-28 04:07:41 +00:00
|
|
|
format:
|
2025-09-30 17:47:03 +00:00
|
|
|
clang-format --verbose -i `find src include examples tools "(" -name "*.c" -or -name "*.h" ")" -and -not -name "stb_*.h"`
|
|
|
|
|
perltidy -b -bext='/' --paren-tightness=2 `find tools -name "*.pl"`
|
2025-09-28 04:07:41 +00:00
|
|
|
|
2025-09-29 05:18:52 +00:00
|
|
|
src/libMw$(SO): $(L_OBJS)
|
2025-09-29 08:24:51 +00:00
|
|
|
$(CC) $(L_LDFLAGS) -shared -o $@ $^ $(L_LIBS)
|
|
|
|
|
|
|
|
|
|
examples/opengl$(EXEC): examples/opengl.o src/libMw$(SO)
|
|
|
|
|
$(CC) $(E_LDFLAGS) -o $@ $< $(E_LIBS) $(GL)
|
2025-09-29 05:15:42 +00:00
|
|
|
|
2025-09-29 05:18:52 +00:00
|
|
|
examples/%$(EXEC): examples/%.o src/libMw$(SO)
|
|
|
|
|
$(CC) $(E_LDFLAGS) -o $@ $< $(E_LIBS)
|
2025-09-29 05:15:42 +00:00
|
|
|
|
|
|
|
|
src/%.o: src/%.c
|
|
|
|
|
$(CC) $(L_CFLAGS) -c -o $@ $<
|
|
|
|
|
|
2025-09-29 08:24:51 +00:00
|
|
|
examples/%.o: examples/%.c
|
2025-09-29 05:15:42 +00:00
|
|
|
$(CC) $(E_CFLAGS) -c -o $@ $<
|
2025-09-27 14:29:44 +00:00
|
|
|
|
|
|
|
|
clean:
|
2025-10-01 05:46:16 +00:00
|
|
|
rm -f src/*.dll src/*.so src/*.a src/*.lib */*.o */*/*.o examples/*.exe $(EXAMPLES) examples/opengl examples/vulkan
|