rofi/Makefile

131 lines
2.8 KiB
Makefile
Raw Normal View History

2014-01-20 08:40:50 +00:00
QUIET?=@
2014-02-01 21:31:07 +00:00
CFLAGS?=-Wall -Wextra -O3 -g
VERSION?=0.14.2
2014-01-19 13:18:42 +00:00
2014-03-01 16:27:52 +00:00
PROGRAM=rofi
2014-01-19 13:18:42 +00:00
2012-08-27 10:24:30 +00:00
PREFIX?=$(DESTDIR)/usr
2014-01-20 08:40:50 +00:00
BIN_DIR?=$(PREFIX)/bin
MAN_DIR?=$(PREFIX)/share/man/man1
MAN_PAGE=$(PROGRAM).1
2012-06-29 17:10:13 +00:00
2014-01-19 13:18:42 +00:00
SOURCE_DIR=source
CONFIG_DIR=config
2014-01-19 13:18:42 +00:00
DOC_DIR=doc
BUILD_DIR=build
2014-01-19 13:18:42 +00:00
SOURCES=$(wildcard $(SOURCE_DIR)/*.c $(CONFIG_DIR)/*.c )
OBJECTS=$(SOURCES:%.c=$(BUILD_DIR)/%.o)
2014-01-19 13:18:42 +00:00
HEADERS=$(wildcard include/*.h)
2014-01-20 08:40:50 +00:00
OTHERS=Makefile LICENSE README.md
INSTALL_MANPAGE_PATH=$(MAN_DIR)/$(MAN_PAGE).gz
INSTALL_PROGRAM=$(BIN_DIR)/$(PROGRAM)
2014-01-20 08:40:50 +00:00
DIST_TARGET=$(BUILD_DIR)/$(PROGRAM)-$(VERSION).tar.xz
2014-01-20 08:40:50 +00:00
CFLAGS+=-DMANPAGE_PATH="\"$(INSTALL_MANPAGE_PATH)\""
CFLAGS+=-std=c99
2014-01-19 13:18:42 +00:00
CFLAGS+=-Iinclude/
CFLAGS+=-DVERSION="\"$(VERSION)\""
2013-01-20 12:01:13 +00:00
# Check deps.
ifeq (${DEBUG},1)
CFLAGS+=-DTIMING=1 -g3
LDADD+=-lrt
endif
2013-01-20 12:01:13 +00:00
2014-01-27 21:15:05 +00:00
ifeq (${QC_MODE},1)
CFLAGS+=-D__QC_MODE__
endif
CLANG=$(shell which clang 2>/dev/null)
2014-02-05 19:42:54 +00:00
ifneq (${CLANG},${EMPTY})
$(info Using clang compiler: ${CLANG})
CC=${CLANG}
endif
##
# Check dependencies
##
2013-01-20 12:01:13 +00:00
PKG_CONFIG?=$(shell which pkg-config)
ifeq (${PKG_CONFIG},${EMPTY})
$(error Failed to find pkg-config. Please install pkg-config)
endif
2014-01-31 12:57:49 +00:00
CFLAGS+=$(shell ${PKG_CONFIG} --cflags x11 xinerama xft libxdg-basedir )
LDADD+=$(shell ${PKG_CONFIG} --libs x11 xinerama xft libxdg-basedir )
2013-01-20 12:01:13 +00:00
ifeq (${LDADD},${EMPTY})
$(error Failed to find the required dependencies: x11, xinerama, xft)
endif
##
# Check for i3.
##
I3?=$(shell which i3)
ifneq (${I3},${EMPTY})
$(info I3 mode is enabled)
CFLAGS+=-DI3 -I${PREFIX}/include/
endif
2014-01-19 13:18:42 +00:00
all: $(BUILD_DIR)/$(PROGRAM)
$(BUILD_DIR):
2014-01-20 08:40:50 +00:00
$(info Creating build dir)
$(QUIET)mkdir -p $@
$(QUIET)mkdir -p $@/$(SOURCE_DIR)
$(QUIET)mkdir -p $@/$(CONFIG_DIR)
2012-06-29 17:10:13 +00:00
2014-01-20 08:40:50 +00:00
# Objects depend on header files and makefile too.
2014-02-03 21:49:07 +00:00
$(BUILD_DIR)/%.o: %.c Makefile $(HEADERS) | $(BUILD_DIR)
$(info Compiling $< -> $@)
$(QUIET) $(CC) $(CFLAGS) -c -o $@ $<
2012-06-29 17:10:13 +00:00
2014-01-19 13:18:42 +00:00
$(BUILD_DIR)/$(PROGRAM): $(OBJECTS)
2014-01-20 08:40:50 +00:00
$(info Linking $@)
$(QUIET)$(CC) -o $@ $^ $(LDADD) $(LDFLAGS)
2012-06-29 17:10:13 +00:00
2014-01-20 08:40:50 +00:00
install: $(INSTALL_PROGRAM) $(INSTALL_MANPAGE_PATH)
2012-08-27 10:24:30 +00:00
2014-01-20 08:40:50 +00:00
$(INSTALL_PROGRAM): $(BUILD_DIR)/$(PROGRAM)
$(info Install $^ -> $@ )
$(QUIET)install -Dm 755 $^ $@
$(BUILD_DIR)/$(MAN_PAGE).gz: $(DOC_DIR)/$(MAN_PAGE)
$(info Creating man page)
$(QUIET) gzip -c $^ > $@
$(INSTALL_MANPAGE_PATH): $(BUILD_DIR)/$(MAN_PAGE).gz
$(info Install $^ -> $@)
$(QUIET) install -Dm 644 $^ $(INSTALL_MANPAGE_PATH)
2012-06-29 17:10:13 +00:00
clean:
2014-01-20 08:40:50 +00:00
$(info Clean build dir)
$(QUIET)rm -rf $(BUILD_DIR)
2014-01-10 09:35:38 +00:00
indent:
2014-01-19 13:18:42 +00:00
@astyle --style=linux -S -C -D -N -H -L -W3 -f $(SOURCES) $(HEADERS)
2014-01-20 08:40:50 +00:00
dist: $(DIST_TARGET)
$(BUILD_DIR)/$(PROGRAM)-$(VERSION): $(SOURCES) $(HEADERS) $(DOC_DIR)/$(MAN_PAGE) $(OTHERS) | $(BUILD_DIR)
$(info Create release directory)
$(QUIET)mkdir -p $@
$(QUIET)cp -a --parents $^ $@
$(DIST_TARGET): $(BUILD_DIR)/$(PROGRAM)-$(VERSION)
$(info Creating release tarball: $@)
$(QUIET) tar -C $(BUILD_DIR) -cavvJf $@ $(PROGRAM)-$(VERSION)