thornWM/makefile
2025-05-23 15:41:23 +00:00

86 lines
2.5 KiB
Makefile

CC = cc
CFLAGS = -Wall -pipe -Og -g -march=native
USEXRANDR = 1
SHAREPATH = /usr/local/share/thornWM
DOCPATH = /usr/local/share/man
PROGPATH = /usr/local/bin
CONFPATH = /etc/xdg/thornWM
ifeq ($(USEXRANDR), 1)
XFLAGS+=-lXrandr
CFLAGS+=-DL_XRANDR
else
XFLAGS+=-lXinerama
endif
LUA_VERSION = 5.1
ifeq ($(LUA_VERSION), jit)
CFLAGS += `pkg-config --cflags luajit || echo -I/usr/include/lua{,5.1}`
else ifeq ($(LUA_VERSION), 5.1)
CFLAGS += `pkg-config --cflags lua5.1 --silence-errors`
else ifeq ($(LUA_VERSION), 5.2)
CFLAGS += `pkg-config --cflags lua5.2 --silence-errors`
else ifeq ($(LUA_VERSION), 5.3)
CFLAGS += `pkg-config --cflags lua5.3 --silence-errors`
else ifeq ($(LUA_VERSION), 5.4)
CFLAGS += `pkg-config --cflags lua5.4 --silence-errors`
else
$(error Invalid Lua version $(LUA_VERSION))
endif
all: libs docs
libs: lib/x.so lib/c.so
docs: docs/thornWM.x.3 docs/thornWM.c.3 docs/thornWM.async.3 docs/thornWM.ewmh.3 docs/thornWM.tree.3
install: installProgram installLibs installDocs
uninstall: uninstallProgram uninstallLibs uninstallDocs
.PHONY: all libs docs install uninstall installProgram installLibs installDocs uninstallProgram uninstallLibs uninstallDocs
# PROGRAM
installProgram:
mkdir -p $(PROGPATH) $(CONFPATH)
cp thornWM $(PROGPATH)/
cp config.lua $(CONFPATH)/
uninstallProgram:
rm -f $(PROGPATH)/thornWM $(CONFPATH)/config.lua
rmdir --ignore-fail-on-non-empty $(PROGPATH) $(CONFPATH)
# LIBS
lib/x.so: src/x.c src/common.h makefile
@echo $(CC) $< $@
@$(CC) $< -o $@ -lX11 $(CFLAGS) -shared -fPIC $(XFLAGS)
lib/c.so: src/c.c src/common.h makefile
@echo $(CC) $< $@
@$(CC) $< -o $@ $(CFLAGS) -shared -fPIC
installLibs: libs
mkdir -p $(SHAREPATH)/lib
cp lib/* $(SHAREPATH)/lib/
uninstallLibs:
rm -f $(SHAREPATH)/*.lua $(SHAREPATH)/*.so
rmdir --ignore-fail-on-non-empty $(SHAREPATH) $(SHAREPATH)/lib
# DOCS
docs/thornWM.%.3: src/%.c docs/genDocs
docs/genDocs $< $@
docs/thornWM.%.3: lib/%.lua docs/genDocs
docs/genDocs $< $@
docs/thornWM.%.3: lib/%/init.lua docs/genDocs
docs/genDocs $< $@
installDocs: docs
mkdir -p $(DOCPATH)/man{1,3}
cp docs/thornWM.1 $(DOCPATH)/man1/
cp docs/*.3 $(DOCPATH)/man3/
uninstallDocs:
rm -f $(DOCPATH)/man3/thornWM.x.3 $(DOCPATH)/man3/thornWM.async.3 $(DOCPATH)/man3/thornWM.c.3 \
$(DOCPATH)/man3/thornWM.ewmh.3 $(DOCPATH)/man3/thornWM.tree.3 $(DOCPATH)/man1/thornWM.1
rmdir --ignore-fail-on-non-empty $(DOCPATH)
clean:
rm -fv -- lib/*.so docs/*.3
.PHONY: all libs docs intsall installProgram installDocs installLibs clean