1# $NetBSD: Makefile.rules.inc,v 1.7 2012/09/05 19:31:04 christos Exp $
2
3SRCS+= ${HEIMSRCS:N*.et:N*.in:N*.asn1}
4
5.for et_src in ${HEIMSRCS:M*.et}
6CLEANFILES+=		${et_src:.et=.c} ${et_src:.et=.h}
7DPSRCS+=		${et_src:.et=.c} ${et_src:.et=.h}
8COMPILE_ET_INCS+=	${et_src:.et=.h}
9OBJS+=			${et_src:.et=.o}
10
11${et_src:.et=.c} ${et_src:.et=.h}: ${et_src} ${TOOL_COMPILE_ET}
12	${TOOL_COMPILE_ET} ${.ALLSRC:[1]}
13
14.endfor
15
16.for src in ${HEIMSRCS:M*.asn1}
17ASN1_FILES.${src}	?= asn1_${src:.asn1=_asn1.x}
18
19.if ${ASN1_FILES.${src}:[\#]} == 1
20ASN1_OPTS.${src} ?= --one-code-file
21.endif
22
23CLEANFILES+=				\
24	${src:.asn1=_asn1_files}	\
25	${src:.asn1=_asn1-template.c}	\
26	${ASN1_FILES.${src}}		\
27	${ASN1_FILES.${src}:.x=.c}	\
28	${src:.asn1=_asn1.h}		\
29	${src:.asn1=_asn1.hx}		\
30	${src:.asn1=_asn1-priv.h}	\
31	${src:.asn1=_asn1-priv.hx}	\
32	${src:.asn1=.ts}
33
34ASN1_INCS += ${src:.asn1=_asn1.h}
35
36DPSRCS +=	${src:.asn1=_asn1.h} ${src:.asn1=_asn1-priv.h}
37OBJS +=		${ASN1_FILES.${src}:.x=.o}
38
39${ASN1_FILES.${src}} ${src:.asn1=_asn1.h} ${src:.asn1=_asn1-priv.h}: \
40	 ${src:.asn1=.ts}
41
42.if exists(${src:.asn1=.opt})
43${src:.asn1=.ts}: ${src} ${src:.asn1=.opt} ${TOOL_ASN1_COMPILE}
44	@touch $@
45	${TOOL_ASN1_COMPILE}			\
46		${ASN1_OPTS.${src}}		\
47		--option-file=${.ALLSRC:[2]}	\
48		${.ALLSRC:[1]} ${src:.asn1=_asn1}
49	@${TOOL_SED} -E 						\
50	    -e 's,#include <(.*)_asn1\.h>,#include <krb5/\1_asn1.h>,'	\
51	    2> /dev/null < ${src:.asn1=_asn1.hx} > ${src:.asn1=_asn1.h}
52	@cmp -s ${src:.asn1=_asn1-priv.hx} ${src:.asn1=_asn1-priv.h}	\
53	    2> /dev/null ||						\
54	    cp ${src:.asn1=_asn1-priv.hx} ${src:.asn1=_asn1-priv.h}
55.else
56${src:.asn1=.ts}: ${src} ${TOOL_ASN1_COMPILE}
57	@touch $@
58	${TOOL_ASN1_COMPILE}			\
59		${ASN1_OPTS.${src}}		\
60		${.ALLSRC:[1]} ${src:.asn1=_asn1}
61	@${TOOL_SED} -E 						\
62	    -e 's,#include <(.*)_asn1\.h>,#include <krb5/\1_asn1.h>,'	\
63	    2> /dev/null < ${src:.asn1=_asn1.hx} > ${src:.asn1=_asn1.h}
64	@cmp -s ${src:.asn1=_asn1-priv.hx} ${src:.asn1=_asn1-priv.h}	\
65	    2> /dev/null ||						\
66	    cp ${src:.asn1=_asn1-priv.hx} ${src:.asn1=_asn1-priv.h}
67.endif
68
69.if ${MKREPRO:Uno} == "yes"
70NORMALIZE_SRC=-e "s@${NETBSDSRCDIR}@/usr/src@g"
71.endif
72
73.for x2c in ${ASN1_FILES.${src}}
74${x2c:.x=.c}: ${x2c}
75	@${TOOL_SED} ${NORMALIZE_SRC} < ${x2c} > ${x2c}.r
76	@cmp -s ${x2c}.r ${x2c:.x=.c} 2> /dev/null || cp ${x2c}.r ${x2c:.x=.c}
77	@rm -f ${x2c}.r
78.endfor
79
80.endfor
81
82#
83# and for slc:
84
85.for slc_src in ${HEIMSRCS:M*.in}
86CLEANFILES+=	${slc_src:.in=.c} ${slc_src:.in=.h}
87DPSRCS+=	${slc_src:.in=.c} ${slc_src:.in=.h}
88OBJS+=		${slc_src:.in=.o}
89SLC_INCS+=	${slc_src:.in=.h}
90
91${slc_src:.in=.c} ${slc_src:.in=.h}: ${slc_src}
92	${TOOL_SLC} ${.ALLSRC}
93
94.endfor
95
96#
97# And a tiny bit of logic for bsd.prog.mk:
98
99.if defined(PROG) && defined(OBJS)
100OBJS.${PROG} += ${OBJS}
101.endif
102
103.if defined(LIB) && exists(version-script.map) && !defined(NO_VERSION_SCRIPT)
104version-script.map:
105
106LDFLAGS.lib${LIB} += -Wl,--version-script=${version-script.map:P}
107.endif
108