1########################################################################
2#
3# Copyright (c) 2009, Secure Endpoints Inc.
4# All rights reserved.
5# 
6# Redistribution and use in source and binary forms, with or without
7# modification, are permitted provided that the following conditions
8# are met:
9# 
10# - Redistributions of source code must retain the above copyright
11#   notice, this list of conditions and the following disclaimer.
12# 
13# - Redistributions in binary form must reproduce the above copyright
14#   notice, this list of conditions and the following disclaimer in
15#   the documentation and/or other materials provided with the
16#   distribution.
17# 
18# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
21# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
22# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
23# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
24# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
28# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29# POSSIBILITY OF SUCH DAMAGE.
30# 
31
32RELDIR=lib\kadm5 
33
34!include ../../windows/NTMakefile.w32 
35
36dist_libkadm5clnt_la_SOURCES =	\
37	ad.c			\
38	chpass_c.c		\
39	client_glue.c		\
40	common_glue.c		\
41	create_c.c		\
42	delete_c.c		\
43	destroy_c.c		\
44	flush_c.c		\
45	free.c			\
46	get_c.c			\
47	get_princs_c.c		\
48	init_c.c		\
49	kadm5_locl.h		\
50	marshall.c		\
51	modify_c.c		\
52	private.h		\
53	privs_c.c		\
54	randkey_c.c		\
55	rename_c.c		\
56	send_recv.c		\
57	kadm5-pwcheck.h		\
58	admin.h
59
60dist_libkadm5srv_la_SOURCES =	\
61	acl.c			\
62	admin.h			\
63	bump_pw_expire.c	\
64	chpass_s.c		\
65	common_glue.c		\
66	context_s.c		\
67	create_s.c		\
68	delete_s.c		\
69	destroy_s.c		\
70	ent_setup.c		\
71	error.c			\
72	flush_s.c		\
73	free.c			\
74	get_princs_s.c		\
75	get_s.c			\
76	init_s.c		\
77	kadm5_locl.h		\
78	keys.c			\
79	log.c			\
80	marshall.c		\
81	modify_s.c		\
82	password_quality.c	\
83	private.h		\
84	privs_s.c		\
85	randkey_s.c		\
86	rename_s.c		\
87	server_glue.c		\
88	set_keys.c		\
89	setkey3_s.c		\
90	set_modifier.c		\
91	kadm5-pwcheck.h		\
92	admin.h
93
94LIBKADM5CLNT_OBJS=		    \
95	$(OBJ)\ad.obj		    \
96	$(OBJ)\chpass_c.obj	    \
97	$(OBJ)\client_glue.obj	    \
98	$(OBJ)\common_glue.obj	    \
99	$(OBJ)\create_c.obj	    \
100	$(OBJ)\delete_c.obj	    \
101	$(OBJ)\destroy_c.obj	    \
102	$(OBJ)\flush_c.obj	    \
103	$(OBJ)\free.obj		    \
104	$(OBJ)\get_c.obj	    \
105	$(OBJ)\get_princs_c.obj	    \
106	$(OBJ)\init_c.obj	    \
107	$(OBJ)\marshall.obj	    \
108	$(OBJ)\modify_c.obj	    \
109	$(OBJ)\privs_c.obj	    \
110	$(OBJ)\randkey_c.obj	    \
111	$(OBJ)\rename_c.obj	    \
112	$(OBJ)\send_recv.obj	    \
113	$(OBJ)\kadm5_err.obj
114
115LIBKADM5SRV_OBJS=		    \
116	$(OBJ)\acl.obj		    \
117	$(OBJ)\bump_pw_expire.obj   \
118	$(OBJ)\chpass_s.obj	    \
119	$(OBJ)\common_glue.obj	    \
120	$(OBJ)\context_s.obj	    \
121	$(OBJ)\create_s.obj	    \
122	$(OBJ)\delete_s.obj	    \
123	$(OBJ)\destroy_s.obj	    \
124	$(OBJ)\ent_setup.obj	    \
125	$(OBJ)\error.obj	    \
126	$(OBJ)\flush_s.obj	    \
127	$(OBJ)\free.obj		    \
128	$(OBJ)\get_princs_s.obj	    \
129	$(OBJ)\get_s.obj	    \
130	$(OBJ)\init_s.obj	    \
131	$(OBJ)\keys.obj		    \
132	$(OBJ)\log.obj		    \
133	$(OBJ)\marshall.obj	    \
134	$(OBJ)\modify_s.obj	    \
135	$(OBJ)\password_quality.obj \
136	$(OBJ)\privs_s.obj	    \
137	$(OBJ)\randkey_s.obj	    \
138	$(OBJ)\rename_s.obj	    \
139	$(OBJ)\server_glue.obj	    \
140	$(OBJ)\set_keys.obj	    \
141	$(OBJ)\setkey3_s.obj	    \
142	$(OBJ)\set_modifier.obj	    \
143	$(OBJ)\kadm5_err.obj
144
145
146proto_opts = -q -R "^(_|kadm5_c_|kadm5_s_|kadm5_log)" -P remove
147
148$(OBJ)\kadm5-protos.h: $(dist_libkadm5srv_la_SOURCES) $(dist_libkadm5clnt_la_SOURCES)
149	$(PERL) ..\..\cf\make-proto.pl $(proto_opts) \
150		-o $@ \
151		$(dist_libkadm5srv_la_SOURCES) \
152		$(dist_libkadm5clnt_la_SOURCES) \
153	|| $(RM) $@
154
155$(OBJ)\kadm5-private.h: $(dist_libkadm5srv_la_SOURCES) $(dist_libkadm5clnt_la_SOURCES)
156	$(PERL) ..\..\cf\make-proto.pl $(proto_opts) \
157		-p $@ \
158		$(dist_libkadm5srv_la_SOURCES) \
159		$(dist_libkadm5clnt_la_SOURCES) \
160	|| $(RM) $@
161
162$(OBJ)\iprop-commands.c $(OBJ)\iprop-commands.h: iprop-commands.in
163	cd $(OBJ)
164	$(CP) $(SRCDIR)\iprop-commands.in $(OBJ)
165	$(BINDIR)\slc.exe iprop-commands.in
166	cd $(SRCDIR)
167
168$(OBJ)\kadm5_err.h $(OBJ)kadm5_err.c: kadm5_err.et
169	cd $(OBJ)
170	$(BINDIR)\compile_et.exe $(SRCDIR)\kadm5_err.et
171	cd $(SRCDIR)
172
173$(KADM5INCDIR)\kadm5_err.h: $(OBJ)\kadm5_err.h
174
175KADM5INCDIR=$(INCDIR)\kadm5
176
177INCFILES=\
178	$(KADM5INCDIR)\kadm5_err.h	\
179	$(KADM5INCDIR)\admin.h	\
180	$(KADM5INCDIR)\private.h	\
181	$(KADM5INCDIR)\kadm5-protos.h	\
182	$(KADM5INCDIR)\kadm5-private.h	\
183	$(OBJ)\iprop-commands.h
184
185SBINPROGRAMS=$(SBINDIR)\iprop-log.exe
186
187LIBEXECPROGRAMS=$(LIBEXECDIR)\ipropd-master.exe $(LIBEXECDIR)\ipropd-slave.exe
188
189EXELIBDEPS= \
190	$(LIBKADM5SRV) \
191	$(LIBROKEN) \
192	$(LIBHEIMDAL) \
193	$(LIBHDB) \
194	$(LIBSQLITE) \
195	$(LIBSL) \
196	$(LIBCOMERR) \
197	$(LIBVERS)
198
199$(SBINDIR)\iprop-log.exe: $(OBJ)\iprop-log.obj $(OBJ)\iprop-commands.obj $(EXELIBDEPS) \
200		$(OBJ)\iprop-log-version.res
201	$(EXECONLINK)
202	$(EXEPREP)
203
204$(LIBEXECDIR)\ipropd-master.exe: $(OBJ)\ipropd_master.obj $(OBJ)\ipropd_common.obj \
205		$(EXELIBDEPS) $(OBJ)\ipropd-master-version.res
206	$(EXECONLINK)
207	$(EXEPREP)
208
209$(LIBEXECDIR)\ipropd-slave.exe: $(OBJ)\ipropd_slave.obj $(OBJ)\ipropd_common.obj \
210		$(EXELIBDEPS) $(OBJ)\ipropd-slave-version.res
211	$(EXECONLINK)
212	$(EXEPREP)
213
214$(LIBKADM5CLNT): $(LIBKADM5CLNT_OBJS)
215	$(LIBCON)
216
217LIBKADM5SRVRES=$(OBJ)\libkadm5srv-version.res
218
219$(LIBKADM5SRV): $(BINDIR)\libkadm5srv.dll
220
221$(BINDIR)\libkadm5srv.dll: $(LIBKADM5SRV_OBJS) $(LIBHEIMDAL) $(LIBROKEN) $(LIBHDB) $(LIBCOMERR) $(LIBSQLITE) $(LIBKADM5SRVRES) $(LIBHEIMBASE)
222	$(DLLGUILINK) -implib:$(LIBKADM5SRV) -def:libkadm5srv-exports.def
223	$(DLLPREP_NODIST)
224
225all:: $(INCFILES) $(LIBKADM5SRV) $(LIBKADM5CLNT)
226
227all-tools:: $(SBINPROGRAMS) $(LIBEXECPROGRAMS)
228
229clean::
230	-$(RM) $(INCFILES)
231	-$(RM) $(LIBKADM5CLNT)
232	-$(RM) $(LIBKADM5SRV)
233	-$(RM) $(BINDIR)\libkadm5srv.*
234	-$(RM) $(SBINPROGRAMS:.exe=.*)
235	-$(RM) $(LIBEXECPROGRAMS:.exe=.*)
236
237test:: test-binaries test-run
238
239test-binaries:	\
240	$(OBJ)\default_keys.exe	\
241	$(OBJ)\test_pw_quality.exe \
242	$(OBJ)\sample_passwd_check.dll
243
244$(OBJ)\default_keys.exe: $(OBJ)\default_keys.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHDB)
245	$(EXECONLINK)
246	$(EXEPREP_NODIST)
247
248$(OBJ)\test_pw_quality.exe: $(OBJ)\test_pw_quality.obj	\
249	$(LIBROKEN) $(LIBKADM5SRV) $(LIBVERS) $(LIBHEIMDAL)
250	$(EXECONLINK)
251	$(EXEPREP_NODIST)
252
253$(OBJ)\sample_passwd_check.dll: $(OBJ)\sample_passwd_check.obj $(LIBHEIMDAL)
254	$(DLLGUILINK) /DEF:<<
255EXPORTS
256	version DATA
257	check_length
258<<
259	$(DLLPREP_NODIST)
260
261test-run:
262	cd $(OBJ)
263	-default_keys.exe
264	-test_pw_quality.exe
265	cd $(SRCDIR)
266
267{$(OBJ)}.h{$(KADM5INCDIR)}.h:
268	$(CP) $< $@
269
270{}.h{$(KADM5INCDIR)}.h:
271	$(CP) $< $@
272
273{}.c{$(OBJ)}.obj::
274	$(C2OBJ_P) -I$(OBJ) -I$(KADM5INCDIR)
275
276test-exports:
277	$(PERL) ..\..\cf\w32-check-exported-symbols.pl --vs version-script.map --def libkadm5srv-exports.def
278
279test:: test-exports
280