1## src/Makefile
2
3## -- User-modifiable variables -- ##
4srcdir		= @srcdir@
5top_srcdir	= @top_srcdir@
6subdir		= src
7
8## == The code below shouldn't need to be touched at all == ##
9
10include ../Rules.mk
11
12## -- Private variables -- ##
13ALL_LDFLAGS	= ${LDFLAGS} ${LIBS}
14
15INCLUDES	= -I. -I${srcdir} -I${top_builddir}
16DEFINES		= -DPATCHLEVEL=\"${PATCHLEVEL}\" -DSYSCONFDIR=\"${sysconfdir}\" \
17		-D_GNU_SOURCE=1 -DPKGLIBDIR=\"${pkglibdir}\" -DHAVE_SYSTEM_H=1 \
18		-DBUILTIN=1
19WFLAGS		= @WFLAGS@
20WFLAGS_GCC	= -Wshadow -Wpointer-arith -Waggregate-return \
21		-Wstrict-prototypes -Wmissing-prototypes -Wcast-qual \
22		-Wbad-function-cast -Wsign-compare -Wchar-subscripts \
23		-Wcomment -Wformat -Wformat-nonliteral -Wformat-security \
24		-Wimplicit -Wmain -Wmissing-braces -Wparentheses \
25		-Wreturn-type -Wswitch \
26		-Wmissing-noreturn -Wmissing-declarations @WFLAGS_3X@
27WFLAGS_ICC	= -Wall -wd193,279,810,869,1418,1419
28WFLAGS_3X	= -Wsequence-point -Wdiv-by-zero -W -Wunused \
29		-Wno-unused-parameter -Wno-unused-function
30ALL_CFLAGS	= ${INCLUDES} ${DEFINES} ${WFLAGS} ${CFLAGS} @PCRE_CFLAGS@
31
32LIBS		= @PCRE_LIBS@ @LIBS@
33
34SOURCES		= ccze.c ccze-color.c ccze-plugin.c ccze-wordcolor.c \
35		$(addprefix mod_,$(addsuffix .c, ${ALL_PLUGINS})) \
36		ccze-dump.c ccze-cssdump.c ccze-compat.c
37HEADERS		= ccze.h ccze-compat.h ccze-private.h
38ALL_PLUGINS	= @ALL_PLUGINS@
39S_PLUGINS	= @S_PLUGINS@
40SH_PLUGINS	= $(filter-out ${S_PLUGINS},${ALL_PLUGINS})
41PLUGIN_SHOBJS	= $(addsuffix .so,${SH_PLUGINS})
42PLUGIN_SOBJS	= $(addsuffix .o,$(addprefix mod_,${S_PLUGINS}))
43PLUGIN_OBJS	= ${PLUGIN_SHOBJS} ${PLUGIN_SOBJS}
44CLEANFILES	= ccze-dump ccze-cssdump
45DISTCLEANFILES	= ccze-builtins.c
46OBJECTS		= ccze.o ccze-color.o ccze-plugin.o ccze-wordcolor.o \
47		ccze-builtins.o ccze-compat.o
48
49## -- Standard targets -- ##
50all: ${PROGRAM} ${PLUGIN_SHOBJS} ccze-dump ccze-cssdump
51
52install: all
53	${INSTALL} -d ${DESTDIR}${bindir}
54	${INSTALL_PROGRAM} ${PROGRAM} ccze-cssdump ${DESTDIR}${bindir}/
55	${INSTALL} -d ${DESTDIR}${includedir}
56	${INSTALL_DATA} ${srcdir}/ccze.h ${DESTDIR}${includedir}
57ifneq (${SH_PLUGINS},)
58	${INSTALL} -d ${DESTDIR}${pkglibdir}
59	${INSTALL_DATA} ${PLUGIN_SHOBJS} ${DESTDIR}${pkglibdir}/
60endif
61
62install-strip:
63	${MAKE} INSTALL_PROGRAM='${INSTALL_PROGRAM} -s' \
64		INSTALL_DATA='${INSTALL_DATA} -s' install
65
66uninstall:
67	rm -f ${DESTDIR}${bindir}/${PROGRAM} \
68	      ${DESTDIR}${bindir}/ccze-cssdump \
69	      ${DESTDIR}${includedir}/ccze.h
70ifneq (${SH_PLUGINS},)
71	rm -f $(addprefix ${DESTDIR}${pkglibdir}/,${PLUGIN_SHOBJS})
72endif
73
74## -- Specific targets -- ##
75${PROGRAM}: ${OBJECTS} ${PLUGIN_SOBJS}
76	${CC} -rdynamic ${ALL_CFLAGS} -o $@ $^ ${ALL_LDFLAGS}
77ccze-dump ccze-cssdump: %: %.o ccze-compat.o ccze-color.c
78	${CC} ${ALL_CFLAGS} -o $@ $@.o ccze-compat.o
79ccze-builtins.c: Makefile
80	echo '#include <ccze.h>' >$@
81	echo '#include "ccze-private.h"' >>$@
82	echo >>$@
83ifneq (${S_PLUGINS},)
84	for p in ${S_PLUGINS}; do \
85		echo "extern ccze_plugin_t ccze_$${p}_info;" >>$@; \
86	done
87endif
88	echo "void" >>$@
89	echo "ccze_plugin_load_all_builtins (void)" >>$@
90	echo "{" >>$@
91ifneq (${S_PLUGINS},)
92	for p in ${S_PLUGINS}; do \
93		echo "  ccze_plugin_add (&ccze_$${p}_info);" >>$@; \
94	done
95endif
96	echo "}" >>$@
97%.o: %.c ccze.h
98	${CC} -c ${CPPFLAGS} ${ALL_CFLAGS} $<
99%.so: mod_%.c ccze.h
100	${CC} -fPIC -DPIC ${ALL_CFLAGS} ${ALL_LDFLAGS} -o $@ $< -shared
101
102## -- Dependencies -- ##
103ccze.o: ccze.c ${top_builddir}/system.h ccze.h ccze-private.h \
104	${top_srcdir}/ChangeLog
105ccze-color.o: ccze-color.c ${top_builddir}/system.h ccze.h ccze-private.h
106ccze-plugin.o: ccze-plugin.c ${top_builddir}/system.h ccze.h ccze-private.h
107ccze-wordcolor.o: ccze-wordcolor.c ${top_builddir}/system.h ccze.h \
108		  ccze-private.h
109ccze-compat.o: ccze-compat.c ${top_builddir}/system.h ccze-compat.h \
110	       ccze.h
111${top_builddir}/system.h: ${top_builddir}/config.status
112