]> git.sur5r.net Git - i3/i3lock/blobdiff - Makefile
Merge pull request #140 from bluetech/fix-locale-discovery
[i3/i3lock] / Makefile
index 0f0c9b771d5459719e61328e79be47fcab366e63..e1b6e43e923c72c072ba77b3aff5e66b3982c273 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,51 +1,67 @@
-# slock - simple screen locker
-# © 2006-2007 Anselm R. Garbe, Sander van Dijk
-# © 2009 Michael Stapelberg
+TOPDIR=$(shell pwd)
+UNAME=$(shell uname)
 
-include config.mk
+INSTALL=install
+PREFIX=/usr
+SYSCONFDIR=/etc
+PKG_CONFIG=pkg-config
 
-SRC = i3lock.c
-OBJ = ${SRC:.c=.o}
+# Check if pkg-config is installed, we need it for building CFLAGS/LIBS
+ifeq ($(shell which $(PKG_CONFIG) 2>/dev/null 1>/dev/null || echo 1),1)
+$(error "$(PKG_CONFIG) was not found")
+endif
 
-all: options i3lock
+CFLAGS += -std=c99
+CFLAGS += -pipe
+CFLAGS += -Wall
+CPPFLAGS += -D_GNU_SOURCE
+CFLAGS += $(shell $(PKG_CONFIG) --cflags cairo xcb-xinerama xcb-atom xcb-image xcb-xkb xkbcommon xkbcommon-x11)
+LIBS += $(shell $(PKG_CONFIG) --libs cairo xcb-xinerama xcb-atom xcb-image xcb-xkb xkbcommon xkbcommon-x11)
+LIBS += -lev
+LIBS += -lm
 
-options:
-       @echo i3lock build options:
-       @echo "CFLAGS   = ${CFLAGS}"
-       @echo "LDFLAGS  = ${LDFLAGS}"
-       @echo "CC       = ${CC}"
+# OpenBSD lacks PAM, use bsd_auth(3) instead.
+ifneq ($(UNAME),OpenBSD)
+  LIBS += -lpam
+endif
 
-.c.o:
-       @echo CC $<
-       @${CC} -c ${CFLAGS} $<
+FILES:=$(wildcard *.c)
+FILES:=$(FILES:.c=.o)
 
-${OBJ}: config.mk
+ifeq ($(wildcard .git),)
+  # not in git repository
+  VERSION := $(shell [ -f $(TOPDIR)/I3LOCK_VERSION ] && cat $(TOPDIR)/I3LOCK_VERSION | cut -d '-' -f 1)
+  I3LOCK_VERSION:='$(shell [ -f $(TOPDIR)/I3LOCK_VERSION ] && cat $(TOPDIR)/I3LOCK_VERSION)'
+else
+  VERSION:=$(shell git describe --tags --abbrev=0)
+  I3LOCK_VERSION:="$(shell git describe --tags --always) ($(shell git log --pretty=format:%cd --date=short -n1))"
+endif
+CPPFLAGS += -DVERSION=\"${I3LOCK_VERSION}\"
 
-i3lock: ${OBJ}
-       @echo CC -o $@
-       @${CC} -o $@ ${OBJ} ${LDFLAGS}
+.PHONY: install clean uninstall
 
-clean:
-       @echo cleaning
-       @rm -f i3lock ${OBJ} i3lock-${VERSION}.tar.gz
+all: i3lock
 
-dist: clean
-       @echo creating dist tarball
-       @mkdir -p i3lock-${VERSION}
-       @cp -R LICENSE Makefile README config.mk ${SRC} slock-${VERSION}
-       @tar -cf i3lock-${VERSION}.tar i3lock-${VERSION}
-       @gzip i3lock-${VERSION}.tar
-       @rm -rf i3lock-${VERSION}
+i3lock: ${FILES}
+       $(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
+
+clean:
+       rm -f i3lock ${FILES} i3lock-${VERSION}.tar.gz
 
 install: all
-       @echo installing executable file to $(DESTDIR)$(PREFIX)/bin
        $(INSTALL) -d $(DESTDIR)$(PREFIX)/bin
-       $(INSTALL) -d $(MANDIR)/man1
-       $(INSTALL) -m 4755 i3lock $(DESTDIR)$(PREFIX)/bin/i3lock
-       $(INSTALL) -m 644 i3lock.1 $(MANDIR)/man1/i3lock.1
+       $(INSTALL) -d $(DESTDIR)$(SYSCONFDIR)/pam.d
+       $(INSTALL) -m 755 i3lock $(DESTDIR)$(PREFIX)/bin/i3lock
+       $(INSTALL) -m 644 i3lock.pam $(DESTDIR)$(SYSCONFDIR)/pam.d/i3lock
 
 uninstall:
-       @echo removing executable file from $(DESTDIR)$(PREFIX)/bin
-       @rm -f $(DESTDIR)$(PREFIX)/bin/i3lock
+       rm -f $(DESTDIR)$(PREFIX)/bin/i3lock
 
-.PHONY: all options clean dist install uninstall
+dist: clean
+       [ ! -d i3lock-${VERSION} ] || rm -rf i3lock-${VERSION}
+       [ ! -e i3lock-${VERSION}.tar.bz2 ] || rm i3lock-${VERSION}.tar.bz2
+       mkdir i3lock-${VERSION}
+       cp *.c *.h i3lock.1 i3lock.pam Makefile LICENSE README.md CHANGELOG i3lock-${VERSION}
+       sed -e 's/^\s*I3LOCK_VERSION:=\(.*\)/I3LOCK_VERSION:=$(shell /bin/echo '${I3LOCK_VERSION}' | sed 's/\\/\\\\/g')/g;s/^VERSION:=\(.*\)/VERSION:=${VERSION}/g' Makefile > i3lock-${VERSION}/Makefile
+       tar cfj i3lock-${VERSION}.tar.bz2 i3lock-${VERSION}
+       rm -rf i3lock-${VERSION}