i3status/Makefile
Olivier Gayot 03c8908ec6 Stop requiring CAP_NET_ADMIN
Since the following commit in the Linux kernel tree

  0fdc100bdc4b ethtool: allow non-netadmin to query settings

it is no longer necessary to have the CAP_NET_ADMIN capability to query
a device speed using ioctl(..., SIOCETHTOOL) in conjonction with the
ETHTOOL_GSET ethtool command.

The mentioned commit landed first in the 2.6.37 version of the Kernel.
This version is no longer maintained nowdays.

Since it is not necessary anymore, it is strongly prefered from a
security standpoint to drop the CAP_NET_ADMIN capability from the
binary.

Signed-off-by: Olivier Gayot <olivier.gayot@sigexec.com>
2018-06-25 11:53:05 +02:00

136 lines
3.5 KiB
Makefile
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

TOPDIR=$(shell pwd)
ifndef PREFIX
PREFIX=/usr
endif
ifndef MANPREFIX
MANPREFIX=$(PREFIX)
endif
ifndef SYSCONFDIR
ifeq ($(PREFIX),/usr)
SYSCONFDIR=/etc
else
SYSCONFDIR=$(PREFIX)/etc
endif
endif
PKG_CONFIG ?= pkg-config
CFLAGS+=-Wall -Wshadow -Wpointer-arith -Wcast-qual -Wsign-compare
CFLAGS+=-g
CFLAGS+=-std=gnu99
CFLAGS+=-pedantic
CPPFLAGS+=-DSYSCONFDIR=\"$(SYSCONFDIR)\"
CPPFLAGS+=-DVERSION=\"${I3STATUS_VERSION}\"
CFLAGS+=-Iinclude
LIBS+=-lconfuse
LIBS+=-lyajl
LIBS+=-lpulse
LIBS+=-lm
LIBS+=-lpthread
ifeq ($(wildcard .git),)
# not in git repository
VERSION := $(shell [ -f $(TOPDIR)/I3STATUS_VERSION ] && cat $(TOPDIR)/I3STATUS_VERSION | cut -d '-' -f 1)
I3STATUS_VERSION := '$(shell [ -f $(TOPDIR)/I3STATUS_VERSION ] && cat $(TOPDIR)/I3STATUS_VERSION)'
else
VERSION:=$(shell git describe --tags --abbrev=0)
I3STATUS_VERSION:="$(shell git describe --tags --always) ($(shell git log --pretty=format:%cd --date=short -n1))"
endif
OS:=$(shell uname)
ifeq ($(OS),Linux)
CPPFLAGS+=-DLINUX
CPPFLAGS+=-D_GNU_SOURCE
CFLAGS += $(shell $(PKG_CONFIG) --cflags libnl-genl-3.0)
LIBS += $(shell $(PKG_CONFIG) --libs libnl-genl-3.0)
LIBS+=-lasound
endif
ifeq ($(OS),GNU/kFreeBSD)
LIBS+=-lbsd
endif
ifneq (, $(filter $(OS), DragonFly FreeBSD OpenBSD))
CFLAGS+=-I/usr/local/include/
LDFLAGS+=-L/usr/local/lib/
endif
ifeq ($(OS),NetBSD)
LIBS+=-lprop
endif
# This probably applies for any pkgsrc based system
ifneq (, $(filter $(OS), NetBSD DragonFly))
CFLAGS+=-I/usr/pkg/include/
LDFLAGS+=-L/usr/pkg/lib/
endif
V ?= 0
ifeq ($(V),0)
# Dont print command lines which are run
.SILENT:
endif
CFLAGS+=$(EXTRA_CFLAGS)
# Fallback for libyajl 1 which did not include yajl_version.h. We need
# YAJL_MAJOR from that file to decide which code path should be used.
CFLAGS += -idirafter yajl-fallback
OBJS:=$(sort $(wildcard src/*.c *.c))
OBJS:=$(OBJS:.c=.o)
ifeq ($(OS),OpenBSD)
OBJS:=$(filter-out src/pulse.o, $(OBJS))
LIBS:=$(filter-out -lpulse, $(LIBS))
endif
src/%.o: src/%.c include/i3status.h
$(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
@echo " CC $<"
%.o: %.c include/%.h
$(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
@echo " CC $<"
all: i3status manpage
i3status: ${OBJS}
$(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
@echo " LD $@"
test: i3status
LC_ALL=C ./travis/run-tests.pl
clean:
rm -f *.o src/*.o
distclean: clean
rm -f i3status man/i3status.1
manpage:
$(MAKE) -C man
install:
install -m 755 -d $(DESTDIR)$(PREFIX)/bin
install -m 755 -d $(DESTDIR)$(SYSCONFDIR)
install -m 755 -d $(DESTDIR)$(MANPREFIX)/share/man/man1
install -m 755 i3status $(DESTDIR)$(PREFIX)/bin/i3status
install -m 644 i3status.conf $(DESTDIR)$(SYSCONFDIR)/i3status.conf
install -m 644 man/i3status.1 $(DESTDIR)$(MANPREFIX)/share/man/man1
release:
[ -f i3status-${VERSION} ] || rm -rf i3status-${VERSION}
mkdir i3status-${VERSION}
find . -maxdepth 1 -type f \( -regex ".*\.\(c\|conf\|h\)" -or -name "README.md" -or -name "Makefile" -or -name "LICENSE" -or -name "CHANGELOG" \) -exec cp '{}' i3status-${VERSION} \;
mkdir i3status-${VERSION}/src
mkdir i3status-${VERSION}/man
find src -maxdepth 1 -type f \( -regex ".*\.\(c\|h\)" \) -exec cp '{}' i3status-${VERSION}/src \;
find man -maxdepth 1 -type f \( -regex ".*\.\(1\|man\|conf\)" -or -name "Makefile" \) -exec cp '{}' i3status-${VERSION}/man \;
cp -r include i3status-${VERSION}
cp -r yajl-fallback i3status-${VERSION}
cp -r contrib i3status-${VERSION}
echo ${I3STATUS_VERSION} > i3status-${VERSION}/I3STATUS_VERSION
tar cjf i3status-${VERSION}.tar.bz2 i3status-${VERSION}
rm -rf i3status-${VERSION}