Files
milsko/GNUmakefile
NishiOwO 81c47a9733 stuff
git-svn-id: http://svn2.nishi.boats/svn/milsko/trunk@131 b9cfdab3-6d41-4d17-bbe4-086880011989
2025-10-02 02:17:27 +00:00

118 lines
2.5 KiB
Makefile

# $Id$
ifeq ($(TARGET),)
TARGET = $(shell uname -s)
endif
ifeq ($(CC),)
CC = gcc
endif
CFLAGS = -Wall -Wextra -Iinclude
LDFLAGS =
LIBS =
ifeq ($(DEBUG),1)
CFLAGS += -g
endif
ifeq ($(VULKAN_NO_STRING_HELPER),1)
VK_STRING_HELPER_DEFINE =
else
VK_STRING_HELPER_DEFINE = -DHAS_VK_ENUM_STRING_HELPER
endif
L_CFLAGS = $(CFLAGS) -fPIC -D_MILSKO
L_LDFLAGS = $(LDFLAGS)
L_LIBS = $(LIBS)
E_CFLAGS = $(CFLAGS)
E_LDFLAGS = $(LDFLAGS) -Lsrc
E_LIBS = $(LIBS) -lMw
L_OBJS = src/core.o src/default.o src/draw.o src/lowlevel.o src/font.o src/boldfont.o src/error.o
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 src/widget/submenu.o
ifeq ($(TARGET),NetBSD)
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
UNIX = 1
else ifeq ($(TARGET),Linux)
L_LIBS += -ldl
UNIX = 1
VULKAN = 1
else ifeq ($(TARGET),Windows)
WINDOWS = 1
VULKAN = 1
else
$(error Add your platform definition)
endif
ifeq ($(UNIX),1)
L_CFLAGS += -DUSE_X11 $(VK_STRING_HELPER_DEFINE)
L_OBJS += src/backend/x11.o
L_LIBS += -lX11 -lXrender -lXext
GL = -lGL
E_LIBS += -lm
SO = .so
EXEC =
OPENGL = 1
else ifeq ($(WINDOWS),1)
L_CFLAGS += -DUSE_GDI $(VK_STRING_HELPER_DEFINE)
L_LDFLAGS += -Wl,--out-implib,src/libMw.lib -static-libgcc
L_OBJS += src/backend/gdi.o
L_LIBS += -lgdi32
GL = -lopengl32
SO = .dll
EXEC = .exe
OPENGL = 1
endif
EXAMPLES = examples/example$(EXEC) examples/rotate$(EXEC) examples/image$(EXEC)
ifeq ($(OPENGL),1)
L_OBJS += src/widget/opengl.o
EXAMPLES += examples/opengl$(EXEC)
endif
ifeq ($(VULKAN),1)
L_OBJS += src/widget/vulkan.o
EXAMPLES += examples/vulkan$(EXEC)
endif
.PHONY: all format clean lib examples
all: lib examples
lib: src/libMw$(SO)
examples: $(EXAMPLES)
format:
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"`
src/libMw$(SO): $(L_OBJS)
$(CC) $(L_LDFLAGS) -shared -o $@ $^ $(L_LIBS)
examples/opengl$(EXEC): examples/opengl.o src/libMw$(SO)
$(CC) $(E_LDFLAGS) -o $@ $< $(E_LIBS) $(GL)
examples/%$(EXEC): examples/%.o src/libMw$(SO)
$(CC) $(E_LDFLAGS) -o $@ $< $(E_LIBS)
src/%.o: src/%.c
$(CC) $(L_CFLAGS) -c -o $@ $<
examples/%.o: examples/%.c
$(CC) $(E_CFLAGS) -c -o $@ $<
clean:
rm -f src/*.dll src/*.so src/*.a src/*.lib */*.o */*/*.o examples/*.exe $(EXAMPLES) examples/opengl examples/vulkan