diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 92 |
1 files changed, 50 insertions, 42 deletions
@@ -1,82 +1,90 @@ -version = 26 +# Include configure options +ifneq (clean,$(filter clean,$(MAKECMDGOALS))) +-include config.mk +endif -srcdir = . -VPATH = $(srcdir) +# sxiv version +VERSION = 26 -PREFIX = /usr/local +# PREFIX for install +PREFIX ?= /usr/local MANPREFIX = $(PREFIX)/share/man # autoreload backend: inotify/nop AUTORELOAD = inotify -# enable features requiring giflib (-lgif) -HAVE_GIFLIB = 1 - -# enable features requiring libexif (-lexif) -HAVE_LIBEXIF = 1 - -cflags = -std=c99 -Wall -pedantic $(CFLAGS) -cppflags = -I. $(CPPFLAGS) -D_XOPEN_SOURCE=700 \ - -DHAVE_GIFLIB=$(HAVE_GIFLIB) -DHAVE_LIBEXIF=$(HAVE_LIBEXIF) \ +# CFLAGS, any optimization flags goes here +CFLAGS ?= -std=c99 -Wall -pedantic + +ifeq ($(HAVE_LIBEXIF), 1) + OPTIONAL_LIBS += -lexif +else + HAVE_LIBEXIF = 0 +endif +ifeq ($(HAVE_LIBGIF), 1) + OPTIONAL_LIBS += -lgif +else + HAVE_LIBGIF = 0 +endif + +CPPFLAGS = -D_XOPEN_SOURCE=700 \ + -DHAVE_LIBGIF=$(HAVE_LIBGIF) -DHAVE_LIBEXIF=$(HAVE_LIBEXIF) \ -I/usr/include/freetype2 -I$(PREFIX)/include/freetype2 -lib_exif_0 = -lib_exif_1 = -lexif -lib_gif_0 = -lib_gif_1 = -lgif -ldlibs = $(LDLIBS) -lImlib2 -lX11 -lXft -lfontconfig \ - $(lib_exif_$(HAVE_LIBEXIF)) $(lib_gif_$(HAVE_GIFLIB)) +LDLIBS = -lImlib2 -lX11 -lXft -lfontconfig $(OPTIONAL_LIBS) -objs = autoreload_$(AUTORELOAD).o commands.o image.o main.o options.o \ +OBJS = autoreload_$(AUTORELOAD).o commands.o image.o main.o options.o \ thumbs.o util.o window.o -all: sxiv - .PHONY: all clean install uninstall .SUFFIXES: .SUFFIXES: .c .o -$(V).SILENT: -sxiv: $(objs) +all: sxiv + +sxiv: $(OBJS) @echo "LINK $@" - $(CC) $(LDFLAGS) -o $@ $(objs) $(ldlibs) + $(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS) -$(objs): Makefile sxiv.h commands.lst config.h +.c.o: + @echo "CC $@" + $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< + +$(OBJS): Makefile sxiv.h commands.lst config.h config.mk options.o: version.h window.o: icon/data.h -.c.o: - @echo "CC $@" - $(CC) $(cflags) $(cppflags) -c -o $@ $< +config.mk: + @echo "GEN $@" + @echo "# 0 = disable, 1 = enable" > config.mk + @for lib in exif gif; do \ + if echo "int main(){}" | $(CC) "-l$$lib" -o /dev/null -x c - 2>/dev/null ; then \ + echo "HAVE_LIB$$lib=1" | tr '[:lower:]' '[:upper:]' >> config.mk ; \ + fi \ + done config.h: @echo "GEN $@" - cp $(srcdir)/config.def.h $@ + cp config.def.h $@ version.h: Makefile .git/index @echo "GEN $@" - v="$$(cd $(srcdir); git describe 2>/dev/null)"; \ - echo "#define VERSION \"$${v:-$(version)}\"" >$@ - -.git/index: + v="$$(git describe 2>/dev/null)"; \ + echo "#define VERSION \"$${v:-$(VERSION)}\"" >$@ clean: - rm -f *.o sxiv + $(RM) *.o sxiv install: all @echo "INSTALL bin/sxiv" - mkdir -p $(DESTDIR)$(PREFIX)/bin - cp sxiv $(DESTDIR)$(PREFIX)/bin/ - chmod 755 $(DESTDIR)$(PREFIX)/bin/sxiv + install -Dt $(DESTDIR)$(PREFIX)/bin sxiv @echo "INSTALL sxiv.1" mkdir -p $(DESTDIR)$(MANPREFIX)/man1 - sed "s!PREFIX!$(PREFIX)!g; s!VERSION!$(version)!g" sxiv.1 \ + sed "s!PREFIX!$(PREFIX)!g; s!VERSION!$(VERSION)!g" sxiv.1 \ >$(DESTDIR)$(MANPREFIX)/man1/sxiv.1 chmod 644 $(DESTDIR)$(MANPREFIX)/man1/sxiv.1 @echo "INSTALL share/sxiv/" - mkdir -p $(DESTDIR)$(PREFIX)/share/sxiv/exec - cp exec/* $(DESTDIR)$(PREFIX)/share/sxiv/exec/ - chmod 755 $(DESTDIR)$(PREFIX)/share/sxiv/exec/* + install -Dt $(DESTDIR)$(PREFIX)/share/sxiv/exec exec/* uninstall: @echo "REMOVE bin/sxiv" |