181 lines
4.3 KiB
Makefile
181 lines
4.3 KiB
Makefile
.POSIX:
|
|
|
|
NAME = sfeed
|
|
VERSION = 1.6
|
|
|
|
# curses theme, see themes/ directory.
|
|
SFEED_THEME = mono
|
|
|
|
# paths
|
|
PREFIX = /usr/local
|
|
MANPREFIX = ${PREFIX}/man
|
|
DOCPREFIX = ${PREFIX}/share/doc/${NAME}
|
|
|
|
RANLIB = ranlib
|
|
|
|
# use system flags.
|
|
SFEED_CFLAGS = ${CFLAGS}
|
|
SFEED_LDFLAGS = ${LDFLAGS}
|
|
SFEED_CPPFLAGS = -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=700 -D_BSD_SOURCE
|
|
|
|
# uncomment for conservative locked I/O.
|
|
#SFEED_CPPFLAGS = -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=700 -D_BSD_SOURCE \
|
|
# -DGETNEXT=getchar
|
|
|
|
# set $SFEED_CURSES to empty to not build sfeed_curses.
|
|
SFEED_CURSES = sfeed_curses
|
|
SFEED_CURSES_CFLAGS = ${CFLAGS}
|
|
SFEED_CURSES_CPPFLAGS = -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=700 -D_BSD_SOURCE \
|
|
-DSFEED_THEME=\"themes/${SFEED_THEME}.h\" ${SFEED_CPPFLAGS}
|
|
SFEED_CURSES_LDFLAGS = ${LDFLAGS} -lcurses
|
|
|
|
# Linux: some distros use ncurses and require -lncurses.
|
|
#SFEED_CURSES_LDFLAGS = ${LDFLAGS} -lncurses
|
|
|
|
# Gentoo Linux: some distros might also require -ltinfo and -D_DEFAULT_SOURCE
|
|
# to prevent warnings about feature test macros.
|
|
#SFEED_CURSES_LDFLAGS = ${LDFLAGS} -lcurses -ltinfo
|
|
|
|
# FreeBSD: unset feature test macros for SIGWINCH etc.
|
|
#SFEED_CURSES_CPPFLAGS =
|
|
|
|
# use minicurses with hardcoded escape sequences (not the system curses).
|
|
#SFEED_CURSES_CPPFLAGS = -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=700 -D_BSD_SOURCE \
|
|
# -DSFEED_THEME=\"themes/${SFEED_THEME}.h\" -DSFEED_MINICURSES
|
|
#SFEED_CURSES_LDFLAGS = ${LDFLAGS}
|
|
|
|
BIN = \
|
|
sfeed\
|
|
sfeed_atom\
|
|
${SFEED_CURSES}\
|
|
sfeed_frames\
|
|
sfeed_gopher\
|
|
sfeed_html\
|
|
sfeed_mbox\
|
|
sfeed_opml_import\
|
|
sfeed_plain\
|
|
sfeed_twtxt\
|
|
sfeed_web\
|
|
sfeed_xmlenc
|
|
SCRIPTS = \
|
|
sfeed_content\
|
|
sfeed_markread\
|
|
sfeed_opml_export\
|
|
sfeed_update
|
|
|
|
SRC = ${BIN:=.c}
|
|
HDR = \
|
|
minicurses.h\
|
|
util.h\
|
|
xml.h
|
|
|
|
LIBUTIL = libutil.a
|
|
LIBUTILSRC = \
|
|
util.c
|
|
LIBUTILOBJ = ${LIBUTILSRC:.c=.o}
|
|
|
|
LIBXML = libxml.a
|
|
LIBXMLSRC = \
|
|
xml.c
|
|
LIBXMLOBJ = ${LIBXMLSRC:.c=.o}
|
|
|
|
COMPATSRC = \
|
|
strlcat.c\
|
|
strlcpy.c
|
|
COMPATOBJ =\
|
|
strlcat.o\
|
|
strlcpy.o
|
|
|
|
LIB = ${LIBUTIL} ${LIBXML} ${COMPATOBJ}
|
|
|
|
MAN1 = ${BIN:=.1}\
|
|
${SCRIPTS:=.1}
|
|
MAN5 = \
|
|
sfeed.5\
|
|
sfeedrc.5
|
|
DOC = \
|
|
LICENSE\
|
|
README\
|
|
README.xml
|
|
|
|
all: ${BIN}
|
|
|
|
${BIN}: ${LIB} ${@:=.o}
|
|
|
|
OBJ = ${SRC:.c=.o} ${LIBXMLOBJ} ${LIBUTILOBJ} ${COMPATOBJ}
|
|
|
|
${OBJ}: ${HDR}
|
|
|
|
.o:
|
|
${CC} -o $@ $< ${LIB} ${SFEED_LDFLAGS}
|
|
|
|
.c.o:
|
|
${CC} -o $@ -c $< ${SFEED_CFLAGS} ${SFEED_CPPFLAGS}
|
|
|
|
sfeed_curses.o: sfeed_curses.c themes/${SFEED_THEME}.h
|
|
${CC} -o $@ -c sfeed_curses.c ${SFEED_CURSES_CFLAGS} ${SFEED_CURSES_CPPFLAGS}
|
|
|
|
sfeed_curses: ${LIB} sfeed_curses.o
|
|
${CC} -o $@ sfeed_curses.o ${LIB} ${SFEED_CURSES_LDFLAGS}
|
|
|
|
${LIBUTIL}: ${LIBUTILOBJ}
|
|
${AR} -rc $@ $?
|
|
${RANLIB} $@
|
|
|
|
${LIBXML}: ${LIBXMLOBJ}
|
|
${AR} -rc $@ $?
|
|
${RANLIB} $@
|
|
|
|
dist:
|
|
rm -rf "${NAME}-${VERSION}"
|
|
mkdir -p "${NAME}-${VERSION}"
|
|
cp -fR ${MAN1} ${MAN5} ${DOC} ${HDR} \
|
|
${SRC} ${LIBXMLSRC} ${LIBUTILSRC} ${COMPATSRC} ${SCRIPTS} \
|
|
themes Makefile \
|
|
sfeedrc.example style.css \
|
|
"${NAME}-${VERSION}"
|
|
# make tarball
|
|
tar cf - "${NAME}-${VERSION}" | \
|
|
gzip -c > "${NAME}-${VERSION}.tar.gz"
|
|
rm -rf "${NAME}-${VERSION}"
|
|
|
|
clean:
|
|
rm -f ${BIN} ${OBJ} ${LIB}
|
|
|
|
install: all
|
|
# installing executable files and scripts.
|
|
mkdir -p "${DESTDIR}${PREFIX}/bin"
|
|
cp -f ${BIN} ${SCRIPTS} "${DESTDIR}${PREFIX}/bin"
|
|
for f in ${BIN} ${SCRIPTS}; do chmod 755 "${DESTDIR}${PREFIX}/bin/$$f"; done
|
|
# installing example files.
|
|
mkdir -p "${DESTDIR}${DOCPREFIX}"
|
|
cp -f sfeedrc.example\
|
|
style.css\
|
|
README\
|
|
README.xml\
|
|
"${DESTDIR}${DOCPREFIX}"
|
|
# installing manual pages for general commands: section 1.
|
|
mkdir -p "${DESTDIR}${MANPREFIX}/man1"
|
|
cp -f ${MAN1} "${DESTDIR}${MANPREFIX}/man1"
|
|
for m in ${MAN1}; do chmod 644 "${DESTDIR}${MANPREFIX}/man1/$$m"; done
|
|
# installing manual pages for file formats: section 5.
|
|
mkdir -p "${DESTDIR}${MANPREFIX}/man5"
|
|
cp -f ${MAN5} "${DESTDIR}${MANPREFIX}/man5"
|
|
for m in ${MAN5}; do chmod 644 "${DESTDIR}${MANPREFIX}/man5/$$m"; done
|
|
|
|
uninstall:
|
|
# removing executable files and scripts.
|
|
for f in ${BIN} ${SCRIPTS}; do rm -f "${DESTDIR}${PREFIX}/bin/$$f"; done
|
|
# removing example files.
|
|
rm -f \
|
|
"${DESTDIR}${DOCPREFIX}/sfeedrc.example"\
|
|
"${DESTDIR}${DOCPREFIX}/style.css"\
|
|
"${DESTDIR}${DOCPREFIX}/README"\
|
|
"${DESTDIR}${DOCPREFIX}/README.xml"
|
|
-rmdir "${DESTDIR}${DOCPREFIX}"
|
|
# removing manual pages.
|
|
for m in ${MAN1}; do rm -f "${DESTDIR}${MANPREFIX}/man1/$$m"; done
|
|
for m in ${MAN5}; do rm -f "${DESTDIR}${MANPREFIX}/man5/$$m"; done
|
|
|
|
.PHONY: all clean dist install uninstall
|