1 957c2372 2019-11-14 martijn LOCALBASE?= /usr
3 48b3e268 2021-06-01 martijn LIB= opensmtpd
5 957c2372 2019-11-14 martijn SRCS= opensmtpd.c iobuf.c ioev.c
6 957c2372 2019-11-14 martijn HDRS= opensmtpd.h
7 957c2372 2019-11-14 martijn MAN= osmtpd_run.3
8 8cd14444 2019-11-15 martijn LIBDIR?= ${LOCALBASE}/lib/
9 48b3e268 2021-06-01 martijn MANDIR?= ${LOCALBASE}/share/man/man3
11 957c2372 2019-11-14 martijn BINOWN?= root
12 957c2372 2019-11-14 martijn BINGRP?= root
13 957c2372 2019-11-14 martijn LIBPERM?= 755
14 48b3e268 2021-06-01 martijn MANOWN?= root
15 48b3e268 2021-06-01 martijn MANGRP?= root
16 48b3e268 2021-06-01 martijn MANPERM?= 644
18 957c2372 2019-11-14 martijn mkfile_path := ${abspath ${lastword ${MAKEFILE_LIST}}}
19 957c2372 2019-11-14 martijn CURDIR := ${dir ${mkfile_path}}
21 957c2372 2019-11-14 martijn CFLAGS+= -fPIC
22 957c2372 2019-11-14 martijn CFLAGS+= -I${CURDIR} -I${CURDIR}/openbsd-compat/
23 957c2372 2019-11-14 martijn CFLAGS+= -Wall
24 957c2372 2019-11-14 martijn CFLAGS+= -Wstrict-prototypes -Wmissing-prototypes
25 957c2372 2019-11-14 martijn CFLAGS+= -Wmissing-declarations
26 957c2372 2019-11-14 martijn CFLAGS+= -Wshadow -Wpointer-arith -Wcast-qual
27 957c2372 2019-11-14 martijn CFLAGS+= -Wsign-compare
29 8cd14444 2019-11-15 martijn LDLIBS+= -levent
31 957c2372 2019-11-14 martijn INSTALL?= install
32 48b3e268 2021-06-01 martijn LINK?= ln
34 957c2372 2019-11-14 martijn CLEANFILES= ${VERSION_SCRIPT}
36 957c2372 2019-11-14 martijn VERSION_SCRIPT= Symbols.map
37 957c2372 2019-11-14 martijn SYMBOL_LIST= ${CURDIR}/Symbols.list
39 957c2372 2019-11-14 martijn # Defines for OpenBSD-specific interfaces
40 957c2372 2019-11-14 martijn # Add a OS-specific defines here.
41 8224686b 2019-11-14 martijn NEED_EXPLICIT_BZERO?= 0
42 957c2372 2019-11-14 martijn NEED_RECALLOCARRAY?= 1
43 8224686b 2019-11-14 martijn NEED_REALLOCARRAY?= 0
44 957c2372 2019-11-14 martijn NEED_STRLCAT?= 1
45 957c2372 2019-11-14 martijn NEED_STRLCPY?= 1
46 957c2372 2019-11-14 martijn NEED_STRTONUM?= 1
48 48b3e268 2021-06-01 martijn MANFORMAT?= mangz
50 48b3e268 2021-06-01 martijn include ${CURDIR}/shlib_version
51 48b3e268 2021-06-01 martijn BASE_LIB=lib${LIB}.so
52 48b3e268 2021-06-01 martijn TARGET_LIB=lib${LIB}.so.${major}.${minor}.0
53 48b3e268 2021-06-01 martijn SONAME_LIB=lib${LIB}.so.${major}
55 48b3e268 2021-06-01 martijn LDFLAGS+= -shared -Wl,-soname=${SONAME_LIB}
57 957c2372 2019-11-14 martijn includes:
58 957c2372 2019-11-14 martijn @cd ${CURDIR}; for i in ${HDRS}; do \
59 957c2372 2019-11-14 martijn j="cmp -s $$i ${DESTDIR}${LOCALBASE}/include/$$i || \
60 48b3e268 2021-06-01 martijn ${INSTALL} -D -o ${BINOWN} -g ${BINGRP} -m 444 $$i\
61 98c7d52b 2021-06-01 martijn ${DESTDIR}${LOCALBASE}/include/$$i"; \
62 957c2372 2019-11-14 martijn echo $$j; \
63 957c2372 2019-11-14 martijn eval "$$j"; \
66 48b3e268 2021-06-01 martijn ifeq (${MANFORMAT}, mangz)
67 48b3e268 2021-06-01 martijn TARGET_MAN= ${MAN}.gz
68 48b3e268 2021-06-01 martijn CLEANFILES+= ${TARGET_MAN}
69 48b3e268 2021-06-01 martijn ${TARGET_MAN}: ${MAN}
70 48b3e268 2021-06-01 martijn mandoc -Tman ${MAN} | gzip > $@
72 48b3e268 2021-06-01 martijn TARGET_MAN= ${MAN}
75 957c2372 2019-11-14 martijn ${SRCS:.c=.d}:%.d:%.c
76 957c2372 2019-11-14 martijn ${CC} ${CFLAGS} -MM $< >$@
78 8224686b 2019-11-14 martijn ifeq (${NEED_EXPLICIT_BZERO}, 1)
79 8224686b 2019-11-14 martijn SRCS+= ${CURDIR}/openbsd-compat/explicit_bzero.c
80 8224686b 2019-11-14 martijn CFLAGS+= -DNEED_EXPLICIT_BZERO=1
82 8224686b 2019-11-14 martijn explicit_bzero.o: ${CURDIR}/openbsd-compat/explicit_bzero.c
83 8224686b 2019-11-14 martijn ${CC} ${CFLAGS} -c -o explicit_bzero.o ${CURDIR}/openbsd-compat/explicit_bzero.c
85 957c2372 2019-11-14 martijn ifeq (${NEED_RECALLOCARRAY}, 1)
86 957c2372 2019-11-14 martijn SRCS+= ${CURDIR}/openbsd-compat/recallocarray.c
87 957c2372 2019-11-14 martijn CFLAGS+= -DNEED_RECALLOCARRAY=1
89 957c2372 2019-11-14 martijn recallocarray.o: ${CURDIR}/openbsd-compat/recallocarray.c
90 957c2372 2019-11-14 martijn ${CC} ${CFLAGS} -c -o recallocarray.o ${CURDIR}/openbsd-compat/recallocarray.c
92 8224686b 2019-11-14 martijn ifeq (${NEED_REALLOCARRAY}, 1)
93 8224686b 2019-11-14 martijn SRCS+= ${CURDIR}/openbsd-compat/reallocarray.c
94 8224686b 2019-11-14 martijn CFLAGS+= -DNEED_REALLOCARRAY=1
96 8224686b 2019-11-14 martijn reallocarray.o: ${CURDIR}/openbsd-compat/reallocarray.c
97 8224686b 2019-11-14 martijn ${CC} ${CFLAGS} -c -o reallocarray.o ${CURDIR}/openbsd-compat/reallocarray.c
99 957c2372 2019-11-14 martijn ifeq (${NEED_STRLCAT}, 1)
100 957c2372 2019-11-14 martijn SRCS+= ${CURDIR}/openbsd-compat/strlcat.c
101 957c2372 2019-11-14 martijn CFLAGS+= -DNEED_STRLCAT=1
103 957c2372 2019-11-14 martijn strlcat.o: ${CURDIR}/openbsd-compat/strlcat.c
104 957c2372 2019-11-14 martijn ${CC} ${CFLAGS} -c -o strlcat.o ${CURDIR}/openbsd-compat/strlcat.c
106 957c2372 2019-11-14 martijn ifeq (${NEED_STRLCPY}, 1)
107 957c2372 2019-11-14 martijn SRCS+= ${CURDIR}/openbsd-compat/strlcpy.c
108 957c2372 2019-11-14 martijn CFLAGS+= -DNEED_STRLCPY=1
110 957c2372 2019-11-14 martijn strlcpy.o: ${CURDIR}/openbsd-compat/strlcpy.c
111 957c2372 2019-11-14 martijn ${CC} ${CFLAGS} -c -o strlcpy.o ${CURDIR}/openbsd-compat/strlcpy.c
113 957c2372 2019-11-14 martijn ifeq (${NEED_STRTONUM}, 1)
114 957c2372 2019-11-14 martijn SRCS+= ${CURDIR}/openbsd-compat/strtonum.c
115 957c2372 2019-11-14 martijn CFLAGS+= -DNEED_STRTONUM=1
117 957c2372 2019-11-14 martijn strtonum.o: ${CURDIR}/openbsd-compat/strtonum.c
118 957c2372 2019-11-14 martijn ${CC} ${CFLAGS} -c -o strtonum.o ${CURDIR}/openbsd-compat/strtonum.c
121 957c2372 2019-11-14 martijn OBJS= ${notdir ${SRCS:.c=.o}}
123 48b3e268 2021-06-01 martijn ${VERSION_SCRIPT}: ${SYMBOL_LIST}
124 48b3e268 2021-06-01 martijn { printf '{\n\tglobal:\n'; \
125 48b3e268 2021-06-01 martijn sed '/^[._a-zA-Z]/s/$$/;/; s/^/ /' ${SYMBOL_LIST}; \
126 48b3e268 2021-06-01 martijn printf '\n\tlocal:\n\t\t*;\n};\n'; } >$@.tmp && mv $@.tmp $@
128 48b3e268 2021-06-01 martijn ifdef VERSION_SCRIPT
129 48b3e268 2021-06-01 martijn ${TARGET_LIB}: ${VERSION_SCRIPT}
130 48b3e268 2021-06-01 martijn LDFLAGS+= -Wl,--version-script=${VERSION_SCRIPT}
133 957c2372 2019-11-14 martijn ${TARGET_LIB}: ${OBJS}
134 48b3e268 2021-06-01 martijn ${CC} ${LDFLAGS} -o $@ ${OBJS} ${LDLIBS}
136 48b3e268 2021-06-01 martijn .DEFAULT_GOAL= all
137 48b3e268 2021-06-01 martijn .PHONY: all
138 48b3e268 2021-06-01 martijn all: ${TARGET_LIB} ${TARGET_MAN}
140 957c2372 2019-11-14 martijn .PHONY: install
141 48b3e268 2021-06-01 martijn install: includes ${TARGET_LIB} ${TARGET_MAN}
142 48b3e268 2021-06-01 martijn ${INSTALL} -D -o ${BINOWN} -g ${BINGRP} -m ${LIBPERM} ${TARGET_LIB} ${DESTDIR}${LIBDIR}/${TARGET_LIB}
143 48b3e268 2021-06-01 martijn ${LINK} -s ${TARGET_LIB} ${DESTDIR}${LIBDIR}/${SONAME_LIB}
144 48b3e268 2021-06-01 martijn ${LINK} -s ${TARGET_LIB} ${DESTDIR}${LIBDIR}/${BASE_LIB}
145 48b3e268 2021-06-01 martijn ${INSTALL} -D -o ${MANOWN} -g ${MANGRP} -m ${MANPERM} ${TARGET_MAN} ${DESTDIR}${MANDIR}/${TARGET_MAN}
147 48b3e268 2021-06-01 martijn CLEANFILES+= *.o ${TARGET_LIB}
149 957c2372 2019-11-14 martijn .PHONY: clean
151 48b3e268 2021-06-01 martijn rm -f ${CLEANFILES}