1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
CPPFLAGS:=$(shell dpkg-buildflags --get CPPFLAGS)
CFLAGS:=$(shell dpkg-buildflags --get CFLAGS)
CFLAGS+=-std=gnu99 -g -Wall -Wextra -pedantic -O2 -funroll-loops -ftree-vectorize
LIBS=-lm
LDFLAGS:=$(shell dpkg-buildflags --get LDFLAGS)
PREFIX=/usr
BINDIR=$(PREFIX)/bin
MAN1DIR=$(PREFIX)/share/man/man1
SRCS=ioping.c
OBJS=$(SRCS:.c=.o)
BINS=ioping
MANS=ioping.1
MANS_F=$(MANS:.1=.txt) $(MANS:.1=.pdf)
DOCS=README LICENSE changelog
SPEC=ioping.spec
PACKAGE=ioping
VERSION=$(shell cat version)
DISTDIR=$(PACKAGE)-$(VERSION)
DISTFILES=$(SRCS) $(MANS) $(DOCS) $(SPEC) Makefile
PACKFILES=$(BINS) $(MANS) $(MANS_F) $(DOCS)
STRIP=strip
TARGET=$(shell ${CC} -dumpmachine | cut -d- -f 2)
ifdef MINGW
CC=i686-w64-mingw32-gcc
STRIP=i686-w64-mingw32-strip
TARGET=win32
BINS:=$(BINS:=.exe)
endif
all: $(BINS)
version: $(DISTFILES)
test ! -d .git || git describe --tags --dirty=+ | sed 's/^v//;s/-/./g' > $@
clean:
$(RM) -f $(OBJS) $(BINS) $(MANS_F)
strip: $(BINS)
$(STRIP) $^
install: $(BINS) $(MANS)
mkdir -p $(DESTDIR)$(BINDIR)
install -s -m 0755 $(BINS) $(DESTDIR)$(BINDIR)
mkdir -p $(DESTDIR)$(MAN1DIR)
install -m 644 $(MANS) $(DESTDIR)$(MAN1DIR)
%.o: %.c
$(CC) $(CFLAGS) $(CPPFLAGS) -DVERSION=\"${VERSION}\" -c -o $@ $<
%.ps: %.1
man -t ./$< > $@
%.pdf: %.ps
ps2pdf $< $@
%.txt: %.1
MANWIDTH=80 man ./$< | col -b > $@
$(BINS): $(OBJS)
$(CC) -o $@ $^ $(CFLAGS) $(LDFLAGS) $(LIBS)
dist: version $(DISTFILES)
tar -cz --transform='s,^,$(DISTDIR)/,S' $^ -f $(DISTDIR).tar.gz
binary-tgz: $(PACKFILES)
${STRIP} ${BINS}
tar czf ${PACKAGE}-${VERSION}-${TARGET}.tgz $^
binary-zip: $(PACKFILES)
${STRIP} ${BINS}
zip ${PACKAGE}-${VERSION}-${TARGET}.zip $^
.PHONY: all clean install dist
|