mirror of
https://github.com/buserror/mii_emu.git
synced 2024-11-22 01:30:51 +00:00
5650323d05
Also fixes a crashing bug in cg.c, and various other bits.
103 lines
2.6 KiB
Makefile
103 lines
2.6 KiB
Makefile
|
|
CC = gcc
|
|
CPPFLAGS += -Imui
|
|
# for bsd_queue.h
|
|
CPPFLAGS += -I../libmish/src
|
|
CPPFLAGS += -DUI_HAS_XCB=1 -DUI_HAS_XKB=1
|
|
OPTIMIZE ?= -O0 -g
|
|
CFLAGS += --std=gnu99 -Wall -Wextra
|
|
CFLAGS += $(OPTIMIZE)
|
|
CFLAGS += -Wno-unused-parameter -Wno-unused-function
|
|
# PIC is necessary for the shared library/plugin to work
|
|
CFLAGS += -fPIC
|
|
|
|
CPPFLAGS += ${shell pkg-config --cflags pixman-1}
|
|
LDLIBS += ${shell pkg-config --libs pixman-1}
|
|
LDLIBS += $(shell pkg-config --libs \
|
|
xcb xcb-shm xcb-randr \
|
|
xkbcommon-x11)
|
|
LDLIBS += -lm -ldl
|
|
|
|
O := $(BUILD_DIR)build-$(shell $(CC) -dumpmachine)
|
|
BIN := $(O)/bin
|
|
OBJ := $(O)/obj/libmui
|
|
LIB := $(O)/lib
|
|
|
|
MUI_SRC := $(wildcard mui/*.c)
|
|
SRC := $(MUI_SRC)
|
|
MUI_OBJ := ${patsubst %, $(OBJ)/%, ${notdir ${SRC:.c=.o}}}
|
|
|
|
SRC_VPATH := mui tests
|
|
SRC_VPATH += ../ui_gl
|
|
vpath %.c $(SRC_VPATH)
|
|
|
|
CPPFLAGS += -I../contrib
|
|
|
|
VERSION := ${shell git log -1 --date=short --pretty="%h %cd"}
|
|
CPPFLAGS += -DUI_VERSION="\"$(VERSION)\""
|
|
|
|
TARGET_LIB := $(LIB)/libmui.a
|
|
|
|
all : $(BIN)/mui_playground $(LIB)/ui_tests.so
|
|
|
|
.PHONY : static
|
|
|
|
static : $(TARGET_LIB)
|
|
|
|
ifeq ($(V),1)
|
|
Q :=
|
|
else
|
|
Q := @
|
|
endif
|
|
|
|
$(TARGET_LIB) : $(MUI_OBJ) | $(LIB)
|
|
@echo " AR $@"
|
|
$(Q)$(AR) rcs $@ $^
|
|
|
|
$(OBJ)/ui_tests.o : CPPFLAGS += -Itests -I../ui_gl
|
|
$(LIB)/ui_tests.so : $(OBJ)/mii_mui_slots.o
|
|
$(LIB)/ui_tests.so : $(OBJ)/mii_mui_loadbin.o
|
|
$(LIB)/ui_tests.so : $(OBJ)/mii_mui_1mb.o
|
|
$(LIB)/ui_tests.so : $(OBJ)/mii_mui_2dsk.o
|
|
$(LIB)/ui_tests.so : $(OBJ)/mii_mui_about.o
|
|
|
|
# use a .temp file, otherwise the playground tries to reload before the file
|
|
# is fully written, and it fails.
|
|
# the ${filter} are there to make the sure object files are linked before the .a
|
|
$(LIB)/ui_tests.so : $(OBJ)/ui_tests.o $(LIB)/libmui.a | $(O)
|
|
@echo " LDSO $@"
|
|
$(Q)$(CC) $(CPPFLAGS) $(CFLAGS) -shared -fPIC -o $@.temp \
|
|
${filter %.o, $^} ${filter %.a, $^} $(LDLIBS) && \
|
|
mv $@.temp $@
|
|
|
|
$(BIN)/mui_playground : $(OBJ)/mui_playground.o $(LIB)/libmui.a
|
|
|
|
$(OBJ)/%.o : %.c | $(OBJ)
|
|
@echo " CC" ${filter -O%, $(CPPFLAGS) $(CFLAGS)} "$<"
|
|
$(Q)$(CC) -MMD $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
|
|
|
|
$(BIN)/% : | $(BIN)
|
|
@echo " LD $@"
|
|
$(Q)$(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS)
|
|
|
|
$(O) $(OBJ) $(BIN) $(LIB):
|
|
@mkdir -p $@
|
|
|
|
clean :
|
|
rm -rf $(O)
|
|
|
|
# This is for development purpose. This will recompile the project
|
|
# everytime a file is modified.
|
|
watch :
|
|
while true; do \
|
|
clear; $(MAKE) -j all; \
|
|
inotifywait -qre close_write mui tests ../ui_gl; \
|
|
done
|
|
|
|
compile_commands.json: lsp
|
|
lsp:
|
|
{ $$(which gmake) CC=gcc V=1 --always-make --dry-run all ; } | \
|
|
sh ../utils/clangd_gen.sh >compile_commands.json
|
|
|
|
-include $(OBJ)/*.d
|