aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile350
1 files changed, 84 insertions, 266 deletions
diff --git a/Makefile b/Makefile
index e75a5a7..5ee0e25 100644
--- a/Makefile
+++ b/Makefile
@@ -1,272 +1,90 @@
-# bus - simple message broadcasting IPC system
-# See LICENSE file for copyright and license details.
-
-PREFIX = /usr
-BIN = /bin
-BINDIR = ${PREFIX}${BIN}
-LIB = /lib
-LIBDIR = ${PREFIX}${LIB}
-INCLUDE = /include
-INCLUDEDIR = ${PREFIX}${INCLUDE}
-DATA = /share
-DATADIR = ${PREFIX}${DATA}
-LICENSEDIR = ${DATADIR}/licenses
-MANDIR = ${DATADIR}/man
-INFODIR = $(DATADIR)/info
-DOCDIR = $(DATADIR)/doc
-
-PKGNAME = bus
-
-
-MAN1 = bus bus-broadcast bus-create bus-listen bus-remove bus-wait bus-chmod bus-chown bus-chgrp
-MAN3 = bus_create bus_unlink bus_open bus_close bus_read bus_write bus_poll bus_chmod bus_chown
-MAN5 = bus
-MAN7 = libbus
-
-EXAMPLES = audio-volume-control daemon-dependencies nonblocking telephony-and-music timed
-EXAMPLE_audio-volume-control = amixer cleanup init monitor README
-EXAMPLE_daemon-dependencies = announce.c await-ready.c await-started.c cleanup.c d-network d-ntp \
- d-ssh init.c Makefile README require.c start-daemon.c test-daemon.c
-EXAMPLE_nonblocking = cleanup.c init.c Makefile poll.c README write.c
-EXAMPLE_telephony-and-music = cleanup.c end-call.c init.c Makefile monitor.c README receive-or-make-call.c
-EXAMPLE_timed = cleanup.c init.c Makefile poll.c read.c README slow-poll.c write.c
-
-
-FLAGS = -std=c99 -Wall -Wextra -pedantic -O2
-
-LIB_MAJOR = 3
-LIB_MINOR = 1
-LIB_VERSION = ${LIB_MAJOR}.${LIB_MINOR}
-VERSION = 3.1.6
-
-
-
-default: bus man info
-all: bus doc
-doc: man info pdf dvi ps
-man: man1 man3 man5 man7
-bus: bin lib
-bin: bin/bus
-lib: so a
-so: bin/libbus.so.${LIB_VERSION} bin/libbus.so.${LIB_MAJOR} bin/libbus.so
-a: bin/libbus.a
-man1: $(foreach M,${MAN1},bin/${M}.1)
-man3: $(foreach M,${MAN3},bin/${M}.3)
-man5: $(foreach M,${MAN5},bin/${M}.5)
-man7: $(foreach M,${MAN7},bin/${M}.7)
-info: bin/bus.info
-pdf: bin/bus.pdf
-dvi: bin/bus.dvi
-ps: bin/bus.ps
-
-bin/%.1: doc/man/%.1
- @echo SED $@
- @mkdir -p bin
- @sed 's/%VERSION%/${VERSION}/g' < $< > $@
-
-bin/%.3: doc/man/%.3
- @echo SED $@
- @mkdir -p bin
- @sed 's/%VERSION%/${VERSION}/g' < $< > $@
-
-bin/%.5: doc/man/%.5
- @echo SED $@
- @mkdir -p bin
- @sed 's/%VERSION%/${VERSION}/g' < $< > $@
-
-bin/%.7: doc/man/%.7
- @echo SED $@
- @mkdir -p bin
- @sed 's/%VERSION%/${VERSION}/g' < $< > $@
-
-bin/libbus.a: obj/bus-fpic.o
- @echo AR $@
- @mkdir -p bin
- @ar rcs $@ $^
-
-bin/bus: obj/cmdline-nofpic.o obj/bus-nofpic.o
- @echo CC -o $@
- @mkdir -p bin
- @${CC} ${FLAGS} -lrt -o $@ $^ ${LDFLAGS}
-
-bin/libbus.so.${LIB_VERSION}: obj/bus-fpic.o
- @echo CC -o $@
- @mkdir -p bin
- @${CC} ${FLAGS} -lrt -shared -Wl,-soname,libbus.so.${LIB_MAJOR} -o $@ $^ ${LDFLAGS}
-
-bin/libbus.so.${LIB_MAJOR}:
- @echo LN -s $@
- @mkdir -p bin
- @ln -sf libbus.so.${LIB_VERSION} $@
-
-bin/libbus.so:
- @echo LN -s $@
- @mkdir -p bin
- @ln -sf libbus.so.${LIB_VERSION} $@
-
-obj/%-nofpic.o: src/%.c src/*.h
- @echo CC -c $@
- @mkdir -p obj
- @${CC} ${FLAGS} -c -o $@ ${CPPFLAGS} ${CFLAGS} $<
-
-obj/%-fpic.o: src/%.c src/*.h
- @echo CC -c $@
- @mkdir -p obj
- @${CC} ${FLAGS} -fPIC -c -o $@ ${CPPFLAGS} ${CFLAGS} $<
-
-bin/%.info: doc/info/%.texinfo
- @echo MAKEINFO $@
- @mkdir -p bin
- @$(MAKEINFO) $<
- @mv $*.info $@
-
-bin/%.pdf: doc/info/%.texinfo
- @echo TEXI2PDF $@
- @! test -d obj/pdf || rm -rf obj/pdf
- @mkdir -p bin obj/pdf
- @cd obj/pdf && texi2pdf ../../"$<" < /dev/null
- @mv obj/pdf/$*.pdf $@
-
-bin/%.dvi: doc/info/%.texinfo
- @echo TEXI2DVI $@
- @! test -d obj/dvi || rm -rf obj/dvi
- @mkdir -p bin obj/dvi
- @cd obj/dvi && $(TEXI2DVI) ../../"$<" < /dev/null
- @mv obj/dvi/$*.dvi $@
-
-bin/%.ps: doc/info/%.texinfo
- @echo TEXI2PS $@
- @! test -d obj/ps || rm -rf obj/ps
- @mkdir -p bin obj/ps
- @cd obj/ps && texi2pdf --ps ../../"$<" < /dev/null
- @mv obj/ps/$*.ps $@
-
-
-
-install: install-bus install-man install-info install-examples
-install-all: install-bus install-doc
-install-lib: install-so install-a install-h
-install-doc: install-man install-info install-pdf install-dvi install-ps install-examples
-install-man: install-man1 install-man3 install-man5 install-man7
-install-bus: install-bin install-lib install-license
-
-install-bin: bin/bus
- @echo INSTALL bus
- @install -dm755 -- "${DESTDIR}${BINDIR}"
- @install -m755 $^ -- "${DESTDIR}${BINDIR}"
-
-install-so: bin/libbus.so.${LIB_VERSION}
- @echo INSTALL libbus.so
- @install -dm755 -- "${DESTDIR}${LIBDIR}"
- @install -m755 $^ -- "${DESTDIR}${LIBDIR}"
- @ln -sf -- "libbus.so.${LIB_VERSION}" "${DESTDIR}${LIBDIR}/libbus.so.${LIB_MAJOR}"
- @ln -sf -- "libbus.so.${LIB_VERSION}" "${DESTDIR}${LIBDIR}/libbus.so"
-
-install-a: bin/libbus.a
- @echo INSTALL libbus.a
- @install -dm755 -- "${DESTDIR}${LIBDIR}"
- @install -m644 $^ -- "${DESTDIR}${LIBDIR}"
-
-install-h:
- @echo INSTALL bus.h
- @install -dm755 -- "${DESTDIR}${INCLUDEDIR}"
- @install -m644 src/bus.h -- "${DESTDIR}${INCLUDEDIR}"
-
-install-license:
- @echo INSTALL LICENSE
- @install -dm755 -- "${DESTDIR}${LICENSEDIR}/${PKGNAME}"
- @install -m644 LICENSE -- "${DESTDIR}${LICENSEDIR}/${PKGNAME}"
-
-install-man1: $(foreach M,${MAN1},bin/${M}.1)
- @echo 'INSTALL *.1'
- @install -dm755 -- "${DESTDIR}${MANDIR}/man1"
- @install -m644 $^ -- "${DESTDIR}${MANDIR}/man1"
-
-install-man3: $(foreach M,${MAN3},bin/${M}.3)
- @echo 'INSTALL *.3'
- @install -dm755 -- "${DESTDIR}${MANDIR}/man3"
- @install -m644 $^ -- "${DESTDIR}${MANDIR}/man3"
- @ln -sf -- "bus_poll.3" "${DESTDIR}${MANDIR}/man3/bus_poll_start.3"
- @ln -sf -- "bus_poll.3" "${DESTDIR}${MANDIR}/man3/bus_poll_stop.3"
- @ln -sf -- "bus_poll.3" "${DESTDIR}${MANDIR}/man3/bus_poll_timed.3"
- @ln -sf -- "bus_read.3" "${DESTDIR}${MANDIR}/man3/bus_read_timed.3"
- @ln -sf -- "bus_write.3" "${DESTDIR}${MANDIR}/man3/bus_write_timed.3"
-
-install-man5: $(foreach M,${MAN5},bin/${M}.5)
- @echo 'INSTALL *.5'
- @install -dm755 -- "${DESTDIR}${MANDIR}/man5"
- @install -m644 $^ -- "${DESTDIR}${MANDIR}/man5"
-
-install-man7: $(foreach M,${MAN7},bin/${M}.7)
- @echo 'INSTALL *.7'
- @install -dm755 -- "${DESTDIR}${MANDIR}/man7"
- @install -m644 $^ -- "${DESTDIR}${MANDIR}/man7"
-
-install-info: bin/bus.info
- @echo INSTALL bus.info
- @install -dm755 -- "$(DESTDIR)$(INFODIR)"
- @install -m644 $< -- "$(DESTDIR)$(INFODIR)/$(PKGNAME).info"
-
-install-pdf: bin/bus.pdf
- @echo INSTALL bus.pdf
- @install -dm755 -- "$(DESTDIR)$(DOCDIR)"
- @install -m644 $< -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME).pdf"
-
-install-dvi: bin/bus.dvi
- @echo INSTALL bus.dvi
- @install -dm755 -- "$(DESTDIR)$(DOCDIR)"
- @install -m644 $< -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME).dvi"
-
-install-ps: bin/bus.ps
- @echo INSTALL bus.ps
- @install -dm755 -- "$(DESTDIR)$(DOCDIR)"
- @install -m644 $< -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME).ps"
-
-install-examples:
- @echo INSTALL examples
- @install -dm755 -- $(foreach E,$(EXAMPLES),"$(DESTDIR)$(DOCDIR)/$(PKGNAME)/examples/$(E)")
- @$(foreach E,$(EXAMPLES),cp -- $(foreach F,$(EXAMPLE_$(E)),doc/examples/$(E)/$(F)) \
- "$(DESTDIR)$(DOCDIR)/$(PKGNAME)/examples/$(E)" &&) true
-
-
+.POSIX:
+
+CONFIGFILE = config.mk
+include $(CONFIGFILE)
+
+LIB_MAJOR = 3
+LIB_MINOR = 1
+LIB_VERSION = $(LIB_MAJOR).$(LIB_MINOR)
+VERSION = 3.1.7
+
+MAN1 = bus.1 bus-broadcast.1 bus-create.1 bus-listen.1 bus-remove.1 bus-wait.1 bus-chmod.1 bus-chown.1 bus-chgrp.1
+MAN3 = bus_create.3 bus_unlink.3 bus_open.3 bus_close.3 bus_read.3 bus_write.3 bus_poll.3 bus_chmod.3 bus_chown.3
+MAN5 = bus.5
+MAN7 = libbus.7
+
+LOBJ = libbus.lo
+OBJ = bus.o libbus.o
+HDR = bus.h arg.h
+
+all: bus libbus.a libbus.so
+
+$(OBJ): $(@:.o=.c) $(HDR)
+$(LOBJ): $(@:.lo=.c) $(HDR)
+
+bus: $(OBJ)
+ $(CC) -o $@ $(OBJ) $(LDFLAGS)
+
+.o.a:
+ $(AR) $(ARFLAGS) $@ $<
+
+.c.lo:
+ $(CC) $(CFLAGS) -fPIC -c -o $@ $<
+
+.lo.so:
+ $(CC) -shared -Wl,-soname,$@.$(LIB_MAJOR) -o $@ $< $(LDFLAGS)
+
+bus.pdf: bus.texinfo fdl.texinfo
+ texi2pdf bus.texinfo < /dev/null
+
+install: bus libbus.a libbus.so
+ mkdir -p -- "$(DESTDIR)$(PREFIX)/bin"
+ mkdir -p -- "$(DESTDIR)$(PREFIX)/lib"
+ mkdir -p -- "$(DESTDIR)$(PREFIX)/include"
+ mkdir -p -- "$(DESTDIR)$(PREFIX)/licenses/bus"
+ mkdir -p -- "$(DESTDIR)$(MANPREFIX)/man1"
+ mkdir -p -- "$(DESTDIR)$(MANPREFIX)/man3"
+ mkdir -p -- "$(DESTDIR)$(MANPREFIX)/man5"
+ mkdir -p -- "$(DESTDIR)$(MANPREFIX)/man7"
+ cp -- bus "$(DESTDIR)$(PREFIX)/bin"
+ cp -- libbus.a "$(DESTDIR)$(PREFIX)/lib"
+ cp -- libbus.so "$(DESTDIR)$(PREFIX)/lib/libbus.so.$(LIB_VERSION)"
+ cp -- bus.h "$(DESTDIR)$(PREFIX)/include"
+ cp -- LICENSE "$(DESTDIR)$(PREFIX)/licenses/bus"
+ ln -sf -- libbus.so.$(LIB_VERSION) "$(DESTDIR)$(PREFIX)/lib/libbus.so.$(LIB_MAJOR)"
+ ln -sf -- libbus.so.$(LIB_VERSION) "$(DESTDIR)$(PREFIX)/lib/libbus.so"
+ cp -- $(MAN1) "$(DESTDIR)$(MANPREFIX)/man1"
+ cp -- $(MAN3) "$(DESTDIR)$(MANPREFIX)/man3"
+ cp -- $(MAN5) "$(DESTDIR)$(MANPREFIX)/man5"
+ cp -- $(MAN7) "$(DESTDIR)$(MANPREFIX)/man7"
+ ln -sf -- bus_poll.3 "$(DESTDIR)$(MANPREFIX)/man3/bus_poll_start.3"
+ ln -sf -- bus_poll.3 "$(DESTDIR)$(MANPREFIX)/man3/bus_poll_stop.3"
+ ln -sf -- bus_poll.3 "$(DESTDIR)$(MANPREFIX)/man3/bus_poll_timed.3"
+ ln -sf -- bus_read.3 "$(DESTDIR)$(MANPREFIX)/man3/bus_read_timed.3"
+ ln -sf -- bus_write.3 "$(DESTDIR)$(MANPREFIX)/man3/bus_write_timed.3"
uninstall:
- -rm -- "${DESTDIR}${BINDIR}/bus"
- -rm -- "${DESTDIR}${LIBDIR}/libbus.so.${LIB_VERSION}"
- -rm -- "${DESTDIR}${LIBDIR}/libbus.so.${LIB_MAJOR}"
- -rm -- "${DESTDIR}${LIBDIR}/libbus.so"
- -rm -- "${DESTDIR}${LIBDIR}/libbus.a"
- -rm -- "${DESTDIR}${INCLUDEDIR}/bus.h"
- -rm -- "${DESTDIR}${LICENSEDIR}/${PKGNAME}/LICENSE"
- -rmdir -- "${DESTDIR}${LICENSEDIR}/${PKGNAME}"
- -rm -- $(foreach M,${MAN1},"${DESTDIR}${MANDIR}/man1/${M}.1")
- -rm -- $(foreach M,${MAN3},"${DESTDIR}${MANDIR}/man3/${M}.3")
- -rm -- "${DESTDIR}${MANDIR}/man3/bus_poll_start.3"
- -rm -- "${DESTDIR}${MANDIR}/man3/bus_poll_stop.3"
- -rm -- "${DESTDIR}${MANDIR}/man3/bus_poll_timed.3"
- -rm -- "${DESTDIR}${MANDIR}/man3/bus_read_timed.3"
- -rm -- "${DESTDIR}${MANDIR}/man3/bus_write_timed.3"
- -rm -- $(foreach M,${MAN5},"${DESTDIR}${MANDIR}/man5/${M}.5")
- -rm -- $(foreach M,${MAN7},"${DESTDIR}${MANDIR}/man7/${M}.7")
- -rm -- "$(DESTDIR)$(INFODIR)/$(PKGNAME).info"
- -rm -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME).pdf"
- -rm -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME).dvi"
- -rm -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME).ps"
- -$(foreach E,$(EXAMPLES),rm -- \
- $(foreach F,$(EXAMPLE_$(E)),"$(DESTDIR)$(DOCDIR)/$(PKGNAME)/examples/$(E)/$(F)");)
- -rmdir -- $(foreach E,$(EXAMPLES),"$(DESTDIR)$(DOCDIR)/$(PKGNAME)/examples/$(E)")
-
-
+ -rm -f -- "$(DESTDIR)$(PREFIX)/bin/bus"
+ -rm -f -- "$(DESTDIR)$(PREFIX)/lib/libbus.a"
+ -rm -f -- "$(DESTDIR)$(PREFIX)/lib/libbus.so.$(LIB_VERSION)"
+ -rm -f -- "$(DESTDIR)$(PREFIX)/lib/libbus.so.$(LIB_MAJOR)"
+ -rm -f -- "$(DESTDIR)$(PREFIX)/lib/libbus.so"
+ -rm -f -- "$(DESTDIR)$(PREFIX)/include/bus.h"
+ -rm -rf -- "$(DESTDIR)$(PREFIX)/licenses/bus"
+ -cd "$(DESTDIR)$(MANPREFIX)/man1" && rm -f -- $(MAN1)
+ -cd "$(DESTDIR)$(MANPREFIX)/man3" && rm -f -- $(MAN3)
+ -cd "$(DESTDIR)$(MANPREFIX)/man5" && rm -f -- $(MAN5)
+ -cd "$(DESTDIR)$(MANPREFIX)/man7" && rm -f -- $(MAN7)
+ -rm -f -- "$(DESTDIR)$(MANPREFIX)/man3/bus_poll_start.3"
+ -rm -f -- "$(DESTDIR)$(MANPREFIX)/man3/bus_poll_stop.3"
+ -rm -f -- "$(DESTDIR)$(MANPREFIX)/man3/bus_poll_timed.3"
+ -rm -f -- "$(DESTDIR)$(MANPREFIX)/man3/bus_read_timed.3"
+ -rm -f -- "$(DESTDIR)$(MANPREFIX)/man3/bus_write_timed.3"
clean:
- @echo cleaning
- @-rm -rf obj bin
-
-
+ -rm -f -- bus *.o *.lo *.a *.so *.log *.toc *.aux *.pdf
-.PHONY: default all doc bin bus lib so a man man1 man3 man5 man7 info pdf dvi \
- ps install install-all install-doc install-man install-bin install-so \
- install-a install-h install-lib install-license install-man1 install-bus \
- install-man3 install-man5 install-man7 install-info install-pdf install-dvi \
- install-ps install-examples uninstall clean
+.SUFFIXES:
+.SUFFIXES: .so .a .o .lo .c .pdf
+.PHONY: all install uninstall clean