1# Copyright (c) 2011 Tim van der Molen <tim@kariliq.nl> 2# 3# Permission to use, copy, modify, and distribute this software for any 4# purpose with or without fee is hereby granted, provided that the above 5# copyright notice and this permission notice appear in all copies. 6# 7# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 8# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 9# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 10# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 11# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 12# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 13# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 14 15.if exists(config.mk) 16.include "config.mk" 17.endif 18 19PROG= siren 20VERSION!= cat version 21DIST= ${PROG}-${VERSION} 22 23SRCS+= argv.c bind.c browser.c cache.c command.c conf.c dir.c \ 24 format.c history.c input.c library.c log.c menu.c msg.c \ 25 option.c path.c player.c playlist.c plugin.c prompt.c queue.c \ 26 screen.c siren.c track.c view.c xmalloc.c 27OBJS= ${SRCS:S,c$,o,} 28 29IP_SRCS= ${IP:S,^,ip/,:S,$,.c,} 30IP_LIBS= ${IP_SRCS:S,.c$,.so,} 31IP_OBJS= ${IP_SRCS:S,.c$,.lo,} 32 33OP_SRCS= ${OP:S,^,op/,:S,$,.c,} 34OP_LIBS= ${OP_SRCS:S,.c$,.so,} 35OP_OBJS= ${OP_SRCS:S,.c$,.lo,} 36 37CC?= cc 38CTAGS?= ctags 39MKDEP?= mkdep 40 41INSTALL_DIR= install -dm 755 42INSTALL_BIN= install -m 555 43INSTALL_LIB= install -m 444 44INSTALL_MAN= install -m 444 45 46CFLAGS+= -Wall -W -Wbad-function-cast -Wcast-align -Wcast-qual \ 47 -Wformat=2 -Wpointer-arith -Wshadow -Wundef -Wwrite-strings 48CPPCHECKFLAGS?= -I /usr/include -I /usr/local/include --enable=all --force \ 49 --quiet 50MKDEPFLAGS?= -a 51 52.PHONY: all clean cleandir cleanlog cppcheck depend dist install manlint 53 54.SUFFIXES: .c .lo .o .so 55 56.c.lo: 57 ${CC} ${CFLAGS} ${CFLAGS_LIB} ${CPPFLAGS} ${CPPFLAGS_${@:T:R}} -c -o \ 58 $@ $< 59 60.c.o: 61 ${CC} ${CFLAGS} ${CPPFLAGS} -c -o $@ $< 62 63.lo.so: 64 ${CC} -o $@ $< ${LDFLAGS} ${LDFLAGS_LIB} ${LDFLAGS_${@:T:R}} 65 66all: ${PROG} ${IP_LIBS} ${OP_LIBS} 67 68${PROG}: ${OBJS} 69 ${CC} -o $@ ${OBJS} ${LDFLAGS} ${LDFLAGS_PROG} 70 71.depend: ${SRCS} ${IP_SRCS} ${OP_SRCS} ${PROG}.h 72 ${MKDEP} ${MKDEPFLAGS} ${CPPFLAGS} ${SRCS} 73.for src in ${IP_SRCS} ${OP_SRCS} 74 ${MKDEP} ${MKDEPFLAGS} ${CPPFLAGS_${src:T:R}} ${src} 75.endfor 76 77clean: 78 rm -f core *.core ${PROG} ${OBJS} 79 rm -f ${IP_LIBS} ${IP_OBJS} 80 rm -f ${OP_LIBS} ${OP_OBJS} 81 82cleandir: clean cleanlog 83 rm -f .depend tags config.h config.mk 84 85cleanlog: 86 rm -f *.log 87 88cppcheck: 89 cppcheck ${CPPCHECKFLAGS} *.c */*.c 90 91depend: .depend 92 93dist: 94 hg archive -X .hg\* -r ${DIST} ${DIST} 95 chmod -R go+rX ${DIST} 96 GZIP=-9 tar -czf ${DIST}.tar.gz ${DIST} 97 rm -fr ${DIST} 98 sha256 ${DIST}.tar.gz > ${DIST}.tar.gz.sha256 99 gpg -b ${DIST}.tar.gz 100 101install: 102 ${INSTALL_DIR} ${DESTDIR}${BINDIR} 103 ${INSTALL_DIR} ${DESTDIR}${MANDIR}/man1 104 ${INSTALL_DIR} ${DESTDIR}${PLUGINDIR} 105 ${INSTALL_DIR} ${DESTDIR}${PLUGINDIR}/ip 106 ${INSTALL_DIR} ${DESTDIR}${PLUGINDIR}/op 107 ${INSTALL_BIN} ${PROG} ${DESTDIR}${BINDIR} 108 ${INSTALL_MAN} ${PROG}.1 ${DESTDIR}${MANDIR}/man1 109.if !empty(IP_LIBS) 110 ${INSTALL_LIB} ${IP_LIBS} ${DESTDIR}${PLUGINDIR}/ip 111.endif 112.if !empty(OP_LIBS) 113 ${INSTALL_LIB} ${OP_LIBS} ${DESTDIR}${PLUGINDIR}/op 114.endif 115 116manlint: 117 mandoc -Tlint -Wstyle ${PROG}.1 118 119tags: ${SRCS} ${IP_SRCS} ${OP_SRCS} ${PROG}.h 120 ${CTAGS} -dtw ${SRCS} ${IP_SRCS} ${OP_SRCS} 121 122uninstall: 123 rm -f ${DESTDIR}${BINDIR}/${PROG} 124 rm -f ${DESTDIR}${MANDIR}/man1/${PROG}.1 125 rm -fr ${DESTDIR}${PLUGINDIR} 126