Blob


1 LOCALBASE?= /usr
3 SRCS= opensmtpd.c iobuf.c ioev.c
4 HDRS= opensmtpd.h
5 MAN= osmtpd_run.3
6 LIBDIR?= ${LOCALBASE}/lib/
7 MANDIR?= ${LOCALBASE}/man/man
9 BINOWN?= root
10 BINGRP?= root
11 LIBPERM?= 755
13 mkfile_path := ${abspath ${lastword ${MAKEFILE_LIST}}}
14 CURDIR := ${dir ${mkfile_path}}
16 CFLAGS+= -fPIC
17 CFLAGS+= -I${CURDIR} -I${CURDIR}/openbsd-compat/
18 CFLAGS+= -Wall
19 CFLAGS+= -Wstrict-prototypes -Wmissing-prototypes
20 CFLAGS+= -Wmissing-declarations
21 CFLAGS+= -Wshadow -Wpointer-arith -Wcast-qual
22 CFLAGS+= -Wsign-compare
24 LDFLAGS+= -shared
25 LDLIBS+= -levent
27 INSTALL?= install
29 CLEANFILES= ${VERSION_SCRIPT}
31 VERSION_SCRIPT= Symbols.map
32 SYMBOL_LIST= ${CURDIR}/Symbols.list
34 TARGET_LIB= libopensmtpd.so
36 # Defines for OpenBSD-specific interfaces
37 # Add a OS-specific defines here.
38 NEED_EXPLICIT_BZERO?= 0
39 NEED_RECALLOCARRAY?= 1
40 NEED_REALLOCARRAY?= 0
41 NEED_STRLCAT?= 1
42 NEED_STRLCPY?= 1
43 NEED_STRTONUM?= 1
45 .PHONY: all
46 all: ${TARGET_LIB}
48 includes:
49 @cd ${CURDIR}; for i in ${HDRS}; do \
50 j="cmp -s $$i ${DESTDIR}${LOCALBASE}/include/$$i || \
51 ${INSTALL} ${INSTALL_COPY} -o ${BINOWN} -g ${BINGRP} -m 444 $$i\
52 ${DESTDIR}${LOCALBASE}/include/"; \
53 echo $$j; \
54 eval "$$j"; \
55 done;
57 ${SRCS:.c=.d}:%.d:%.c
58 ${CC} ${CFLAGS} -MM $< >$@
60 ifeq (${NEED_EXPLICIT_BZERO}, 1)
61 SRCS+= ${CURDIR}/openbsd-compat/explicit_bzero.c
62 CFLAGS+= -DNEED_EXPLICIT_BZERO=1
64 explicit_bzero.o: ${CURDIR}/openbsd-compat/explicit_bzero.c
65 ${CC} ${CFLAGS} -c -o explicit_bzero.o ${CURDIR}/openbsd-compat/explicit_bzero.c
66 endif
67 ifeq (${NEED_RECALLOCARRAY}, 1)
68 SRCS+= ${CURDIR}/openbsd-compat/recallocarray.c
69 CFLAGS+= -DNEED_RECALLOCARRAY=1
71 recallocarray.o: ${CURDIR}/openbsd-compat/recallocarray.c
72 ${CC} ${CFLAGS} -c -o recallocarray.o ${CURDIR}/openbsd-compat/recallocarray.c
73 endif
74 ifeq (${NEED_REALLOCARRAY}, 1)
75 SRCS+= ${CURDIR}/openbsd-compat/reallocarray.c
76 CFLAGS+= -DNEED_REALLOCARRAY=1
78 reallocarray.o: ${CURDIR}/openbsd-compat/reallocarray.c
79 ${CC} ${CFLAGS} -c -o reallocarray.o ${CURDIR}/openbsd-compat/reallocarray.c
80 endif
81 ifeq (${NEED_STRLCAT}, 1)
82 SRCS+= ${CURDIR}/openbsd-compat/strlcat.c
83 CFLAGS+= -DNEED_STRLCAT=1
85 strlcat.o: ${CURDIR}/openbsd-compat/strlcat.c
86 ${CC} ${CFLAGS} -c -o strlcat.o ${CURDIR}/openbsd-compat/strlcat.c
87 endif
88 ifeq (${NEED_STRLCPY}, 1)
89 SRCS+= ${CURDIR}/openbsd-compat/strlcpy.c
90 CFLAGS+= -DNEED_STRLCPY=1
92 strlcpy.o: ${CURDIR}/openbsd-compat/strlcpy.c
93 ${CC} ${CFLAGS} -c -o strlcpy.o ${CURDIR}/openbsd-compat/strlcpy.c
94 endif
95 ifeq (${NEED_STRTONUM}, 1)
96 SRCS+= ${CURDIR}/openbsd-compat/strtonum.c
97 CFLAGS+= -DNEED_STRTONUM=1
99 strtonum.o: ${CURDIR}/openbsd-compat/strtonum.c
100 ${CC} ${CFLAGS} -c -o strtonum.o ${CURDIR}/openbsd-compat/strtonum.c
101 endif
103 OBJS= ${notdir ${SRCS:.c=.o}}
106 ${TARGET_LIB}: ${OBJS}
107 ${CC} ${LDFLAGS} -o $@ $^ ${LDLIBS}
109 .PHONY: install
110 install: ${TARGET_LIB}
111 ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${LIBPERM} ${TARGET_LIB} ${LIBDIR}
113 .PHONY: clean
114 clean:
115 rm -f *.o *.so