Makefile (raw) (4415B)
1 .POSIX: 2 3 NAME = sfeed 4 VERSION = 2.2 5 6 # curses theme, see themes/ directory. 7 SFEED_THEME = mono 8 9 # paths 10 PREFIX = /usr/local 11 MANPREFIX = ${PREFIX}/man 12 DOCPREFIX = ${PREFIX}/share/doc/${NAME} 13 14 RANLIB = ranlib 15 16 # use system flags. 17 SFEED_CFLAGS = ${CFLAGS} 18 SFEED_LDFLAGS = ${LDFLAGS} 19 SFEED_CPPFLAGS = -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=700 -D_BSD_SOURCE 20 21 # uncomment for conservative locked I/O. 22 #SFEED_CPPFLAGS = -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=700 -D_BSD_SOURCE \ 23 # -DGETNEXT=getchar 24 25 # set $SFEED_CURSES to empty to not build sfeed_curses. 26 SFEED_CURSES = sfeed_curses 27 SFEED_CURSES_CFLAGS = ${CFLAGS} 28 SFEED_CURSES_CPPFLAGS = -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=700 -D_BSD_SOURCE \ 29 -DSFEED_THEME=\"themes/${SFEED_THEME}.h\" 30 SFEED_CURSES_LDFLAGS = ${LDFLAGS} -lcurses 31 32 # Linux: some distros use ncurses and require -lncurses. 33 #SFEED_CURSES_LDFLAGS = ${LDFLAGS} -lncurses 34 35 # Gentoo Linux: some distros might also require -ltinfo and -D_DEFAULT_SOURCE 36 # to prevent warnings about feature test macros. 37 #SFEED_CURSES_LDFLAGS = ${LDFLAGS} -lncurses -ltinfo 38 39 # FreeBSD: unset feature test macros for SIGWINCH etc. 40 #SFEED_CURSES_CPPFLAGS = 41 42 # use minicurses with hardcoded escape sequences (not the system curses). 43 #SFEED_CURSES_CPPFLAGS = -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=700 -D_BSD_SOURCE \ 44 # -DSFEED_THEME=\"themes/${SFEED_THEME}.h\" -DSFEED_MINICURSES 45 #SFEED_CURSES_LDFLAGS = ${LDFLAGS} 46 47 BIN = \ 48 sfeed\ 49 sfeed_atom\ 50 ${SFEED_CURSES}\ 51 sfeed_frames\ 52 sfeed_gopher\ 53 sfeed_html\ 54 sfeed_json\ 55 sfeed_mbox\ 56 sfeed_opml_import\ 57 sfeed_plain\ 58 sfeed_twtxt\ 59 sfeed_web\ 60 sfeed_xmlenc 61 SCRIPTS = \ 62 sfeed_content\ 63 sfeed_markread\ 64 sfeed_opml_export\ 65 sfeed_update\ 66 sfeed_read 67 68 SRC = ${BIN:=.c} 69 HDR = \ 70 minicurses.h\ 71 util.h\ 72 xml.h 73 74 LIBUTIL = libutil.a 75 LIBUTILSRC = \ 76 util.c 77 LIBUTILOBJ = ${LIBUTILSRC:.c=.o} 78 79 LIBXML = libxml.a 80 LIBXMLSRC = \ 81 xml.c 82 LIBXMLOBJ = ${LIBXMLSRC:.c=.o} 83 84 COMPATSRC = \ 85 strlcat.c\ 86 strlcpy.c 87 COMPATOBJ =\ 88 strlcat.o\ 89 strlcpy.o 90 91 LIB = ${LIBUTIL} ${LIBXML} ${COMPATOBJ} 92 93 MAN1 = ${BIN:=.1}\ 94 ${SCRIPTS:=.1} 95 MAN5 = \ 96 sfeed.5\ 97 sfeedrc.5 98 DOC = \ 99 LICENSE\ 100 README\ 101 README.xml 102 103 all: ${BIN} 104 105 ${BIN}: ${LIB} ${@:=.o} 106 107 OBJ = ${SRC:.c=.o} ${LIBXMLOBJ} ${LIBUTILOBJ} ${COMPATOBJ} 108 109 ${OBJ}: ${HDR} 110 111 .o: 112 ${CC} -o $@ $< ${LIB} ${SFEED_LDFLAGS} 113 114 .c.o: 115 ${CC} -o $@ -c $< ${SFEED_CFLAGS} ${SFEED_CPPFLAGS} 116 117 sfeed_curses.o: sfeed_curses.c themes/${SFEED_THEME}.h 118 ${CC} -o $@ -c sfeed_curses.c ${SFEED_CURSES_CFLAGS} ${SFEED_CURSES_CPPFLAGS} 119 120 sfeed_curses: ${LIB} sfeed_curses.o 121 ${CC} -o $@ sfeed_curses.o ${LIB} ${SFEED_CURSES_LDFLAGS} 122 123 ${LIBUTIL}: ${LIBUTILOBJ} 124 ${AR} -rc $@ $? 125 ${RANLIB} $@ 126 127 ${LIBXML}: ${LIBXMLOBJ} 128 ${AR} -rc $@ $? 129 ${RANLIB} $@ 130 131 dist: 132 rm -rf "${NAME}-${VERSION}" 133 mkdir -p "${NAME}-${VERSION}" 134 cp -fR ${MAN1} ${MAN5} ${DOC} ${HDR} \ 135 ${SRC} ${LIBXMLSRC} ${LIBUTILSRC} ${COMPATSRC} ${SCRIPTS} \ 136 themes Makefile \ 137 sfeedrc.example style.css \ 138 "${NAME}-${VERSION}" 139 # make tarball 140 tar cf - "${NAME}-${VERSION}" | \ 141 gzip -c > "${NAME}-${VERSION}.tar.gz" 142 rm -rf "${NAME}-${VERSION}" 143 144 clean: 145 rm -f ${BIN} ${OBJ} ${LIB} 146 147 install: all 148 # installing executable files and scripts. 149 mkdir -p "${DESTDIR}${PREFIX}/bin" 150 cp -fRP ${BIN} ${SCRIPTS} "${DESTDIR}${PREFIX}/bin" 151 for f in ${BIN} ${SCRIPTS}; do chmod 755 "${DESTDIR}${PREFIX}/bin/$$f"; done 152 # installing example files. 153 mkdir -p "${DESTDIR}${DOCPREFIX}" 154 cp -f sfeedrc.example\ 155 style.css\ 156 README\ 157 README.xml\ 158 "${DESTDIR}${DOCPREFIX}" 159 # installing manual pages for general commands: section 1. 160 mkdir -p "${DESTDIR}${MANPREFIX}/man1" 161 cp -f ${MAN1} "${DESTDIR}${MANPREFIX}/man1" 162 for m in ${MAN1}; do chmod 644 "${DESTDIR}${MANPREFIX}/man1/$$m"; done 163 # installing manual pages for file formats: section 5. 164 mkdir -p "${DESTDIR}${MANPREFIX}/man5" 165 cp -f ${MAN5} "${DESTDIR}${MANPREFIX}/man5" 166 for m in ${MAN5}; do chmod 644 "${DESTDIR}${MANPREFIX}/man5/$$m"; done 167 168 uninstall: 169 # removing executable files and scripts. 170 for f in ${BIN} ${SCRIPTS}; do rm -f "${DESTDIR}${PREFIX}/bin/$$f"; done 171 # removing example files. 172 rm -f \ 173 "${DESTDIR}${DOCPREFIX}/sfeedrc.example"\ 174 "${DESTDIR}${DOCPREFIX}/style.css"\ 175 "${DESTDIR}${DOCPREFIX}/README"\ 176 "${DESTDIR}${DOCPREFIX}/README.xml" 177 -rmdir "${DESTDIR}${DOCPREFIX}" 178 # removing manual pages. 179 for m in ${MAN1}; do rm -f "${DESTDIR}${MANPREFIX}/man1/$$m"; done 180 for m in ${MAN5}; do rm -f "${DESTDIR}${MANPREFIX}/man5/$$m"; done 181 182 .PHONY: all clean dist install uninstall