Overhauled building

- config.h -> config.def.h
- Create config.h during make, if it does not exist
- Nice make output
- Use XFLAGS and XLIBS to include additional compile-time features,
  which depend on third-party libraries
master
Bert 2011-09-08 15:41:18 +02:00
parent 8f34b7e95c
commit b96c106337
5 changed files with 59 additions and 24 deletions

3
.gitignore vendored
View File

@ -1,5 +1,6 @@
config.h
*.o
sxiv
cscope.out
release
tags
release

View File

@ -1,30 +1,64 @@
all: sxiv
VERSION = git-20110908
VERSION = git-20110906
CC = gcc
DESTDIR =
PREFIX = /usr/local
CFLAGS = -Wall -pedantic -O2 -DVERSION=\"$(VERSION)\" -DHAVE_GIFLIB
CC = gcc
CFLAGS = -Wall -pedantic -O2
LDFLAGS =
LIBS = -lX11 -lImlib2 -lgif
LIBS = -lX11 -lImlib2
PREFIX = /usr/local
MANPREFIX = $(PREFIX)/share/man
SRC = commands.c image.c main.c options.c thumbs.c util.c window.c
OBJ = $(SRC:.c=.o)
sxiv: $(OBJ)
$(CC) $(LDFLAGS) -o $@ $(OBJ) $(LIBS)
all: options sxiv
options:
@echo "sxiv build options:"
@echo "CC = $(CC)"
@echo "CFLAGS = $(CFLAGS)"
@echo "XFLAGS = $(XFLAGS)"
@echo "LDFLAGS = $(LDFLAGS)"
@echo "XLIBS = $(XLIBS)"
@echo "PREFIX = $(PREFIX)"
.c.o:
@echo "CC $<"
@$(CC) $(CFLAGS) $(XFLAGS) -DVERSION=\"$(VERSION)\" -c -o $@ $<
$(OBJ): Makefile config.h
.c.o:
$(CC) $(CFLAGS) -c -o $@ $<
config.h:
@echo "creating $@ from config.def.h"
@cp config.def.h $@
install: all
install -D -m 755 -o root -g root sxiv $(DESTDIR)$(PREFIX)/bin/sxiv
mkdir -p $(DESTDIR)$(PREFIX)/share/man/man1
sed "s/VERSION/$(VERSION)/g" sxiv.1 > $(DESTDIR)$(PREFIX)/share/man/man1/sxiv.1
chmod 644 $(DESTDIR)$(PREFIX)/share/man/man1/sxiv.1
sxiv: $(OBJ)
@echo "CC -o $@"
@$(CC) $(LDFLAGS) -o $@ $(OBJ) $(LIBS) $(XLIBS)
clean:
rm -f $(OBJ) sxiv
@echo "cleaning"
@rm -f $(OBJ) sxiv sxiv-$(VERSION).tar.gz
dist: clean
@echo "creating dist tarball"
@mkdir -p sxiv-$(VERSION)
@cp LICENSE Makefile Makefile.netbsd README.md config.def.h \
sxiv.1 $(SRC) sxiv-$(VERSION)
@tar -cf sxiv-$(VERSION).tar sxiv-$(VERSION)
@gzip sxiv-$(VERSION).tar
@rm -rf sxiv-$(VERSION)
install: all
@echo "installing executable file to $(DESTDIR)$(PREFIX)/bin"
@install -D -m 755 sxiv $(DESTDIR)$(PREFIX)/bin/sxiv
@echo "installing manual page to $(DESTDIR)$(MANPREFIX)/man1"
@mkdir -p $(DESTDIR)$(MANPREFIX)/man1
@sed "s/VERSION/$(VERSION)/g" sxiv.1 > $(DESTDIR)$(MANPREFIX)/man1/sxiv.1
@chmod 644 $(DESTDIR)$(MANPREFIX)/man1/sxiv.1
uninstall:
@echo "removing executable file from $(DESTDIR)$(PREFIX)/bin"
@rm -f $(DESTDIR)$(PREFIX)/bin/sxiv
@echo "removing manual page from $(DESTDIR)$(MANPREFIX)/man1"
@rm -f $(DESTDIR)$(MANPREFIX)/man1/sxiv.1

View File

@ -1,4 +1,4 @@
.include "Makefile"
CFLAGS = -Wall -pedantic -O2 -DVERSION=\"$(VERSION)\" -DHAVE_GIFLIB -I/usr/X11R7/include -I/usr/pkg/include
CFLAGS = -Wall -pedantic -O2 -I/usr/X11R7/include -I/usr/pkg/include
LDFLAGS = -L/usr/X11R7/lib -Wl,-R/usr/X11R7/lib -L/usr/pkg/lib -Wl,-R/usr/pkg/lib

View File

@ -18,7 +18,7 @@
#include <unistd.h>
#ifdef HAVE_GIFLIB
#ifdef GIF_SUPPORT
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
@ -59,7 +59,7 @@ void img_init(img_t *img, win_t *win) {
}
}
#ifdef HAVE_GIFLIB
#ifdef GIF_SUPPORT
/* Originally based on, but in its current form merely inspired by Imlib2's
* src/modules/loaders/loader_gif.c:load(), written by Carsten Haitzler.
*/
@ -223,7 +223,7 @@ int img_load_gif(img_t *img, const fileinfo_t *file) {
return !err;
}
#endif /* HAVE_GIFLIB */
#endif /* GIF_SUPPORT */
int img_load(img_t *img, const fileinfo_t *file) {
const char *fmt;
@ -241,7 +241,7 @@ int img_load(img_t *img, const fileinfo_t *file) {
imlib_context_set_anti_alias(img->aa);
fmt = imlib_image_format();
#ifdef HAVE_GIFLIB
#ifdef GIF_SUPPORT
if (!strcmp(fmt, "gif"))
img_load_gif(img, file);
#else