Try harder to clean up libmapi++ bits.
[jelmer/openchange.git] / Makefile
1 # Makefile for OpenChange
2 # Written by Jelmer Vernooij <jelmer@openchange.org>, 2005.
3
4 default: all
5
6 # Until we add proper dependencies for all the C files:
7 .NOTPARALLEL:
8
9 config.mk: config.status config.mk.in
10         ./config.status
11
12 config.status: configure
13         ./configure
14
15 configure: configure.ac
16         ./autogen.sh
17
18 samba:
19         ./script/installsamba4.sh all
20
21 samba-git: 
22         ./script/installsamba4.sh git-all
23
24 ifneq ($(MAKECMDGOALS), samba)
25 ifneq ($(MAKECMDGOALS), samba-git)
26 include config.mk
27 endif
28 endif
29
30 #################################################################
31 # top level compilation rules
32 #################################################################
33
34 all:            $(OC_IDL)               \
35                 $(OC_LIBS)              \
36                 $(OC_TOOLS)             \
37                 $(OC_TORTURE)           \
38                 $(OC_SERVER)            \
39                 $(SWIGDIRS-ALL)         \
40                 $(PYMAPIALL)            \
41                 $(COVERAGE_INIT)        \
42                 $(OPENCHANGE_QT4)
43
44 install:        all                     \
45                 installlib              \
46                 installpc               \
47                 installheader           \
48                 $(OC_TOOLS_INSTALL)     \
49                 $(OC_SERVER_INSTALL)    \
50                 $(OC_TORTURE_INSTALL)   \
51                 $(SWIGDIRS-INSTALL)     \
52                 $(PYMAPIINSTALL) \
53                 installnagios
54
55 installlib:     $(OC_LIBS_INSTALL)
56 installpc:      $(OC_LIBS_INSTALLPC)
57 installheader:  $(OC_LIBS_INSTALLHEADERS)
58
59 uninstall::     $(OC_LIBS_UNINSTALL)    \
60                 $(OC_TOOLS_UNINSTALL)   \
61                 $(OC_SERVER_UNINSTALL)  \
62                 $(OC_TORTURE_UNINSTALL) \
63                 $(SWIGDIRS-UNINSTALL) \
64                 $(PYMAPIUNINSTALL)
65
66 dist:: distclean
67         ./autogen.sh
68
69 distclean:: clean
70         rm -rf autom4te.cache
71         rm -f Doxyfile
72         rm -f libmapi/Doxyfile
73         rm -f libmapiadmin/Doxyfile
74         rm -f libocpf/Doxyfile
75         rm -f libmapi++/Doxyfile
76         rm -f mapiproxy/Doxyfile
77         rm -f config.status config.log
78         rm -f stamp-h1
79         rm -f utils/mapitest/Doxyfile
80         rm -f intltool-extract intltool-merge intltool-update
81         rm -rf apidocs
82         rm -rf gen_ndr
83         rm -f tags
84
85 clean::
86         rm -f *~
87         rm -f */*~
88         rm -f */*/*~
89         rm -f doc/examples/mapi_sample1
90         rm -f doc/examples/fetchappointment
91         rm -f doc/examples/fetchmail
92
93 re:: clean install
94
95 #################################################################
96 # Suffixes compilation rules
97 #################################################################
98
99 .SUFFIXES: .c .o .h .po .idl .cpp
100
101 .idl.h:
102         @echo "Generating $@"
103         @$(PIDL) --outputdir=gen_ndr --header -- $<
104
105 .c.o:
106         @echo "Compiling $<"
107         @$(CC) $(CFLAGS) -c $< -o $@
108
109 .c.po:
110         @echo "Compiling $< with -fPIC"
111         @$(CC) $(CFLAGS) -fPIC -c $< -o $@
112
113 .cpp.po:
114         @echo "Compiling $< with -fPIC"
115         $(CXX) $(CXXFLAGS) -fPIC -c $< -o $@
116
117 #################################################################
118 # IDL compilation rules
119 #################################################################
120
121 idl: gen_ndr gen_ndr/ndr_exchange.h gen_ndr/ndr_property.h
122
123 exchange.idl: mapitags_enum.h mapicodes_enum.h
124
125 gen_ndr:
126         @echo "Creating the gen_ndr directory"
127         mkdir -p gen_ndr
128
129 gen_ndr/ndr_%.h gen_ndr/ndr_%.c: %.idl %.h
130         @echo "Generating $@"
131         @$(PIDL) --outputdir=gen_ndr --ndr-parser -- $<
132
133 gen_ndr/ndr_%_c.h gen_ndr/ndr_%_c.c: %.idl %.h
134         @echo "Generating $@"
135         @$(PIDL) --outputdir=gen_ndr --client -- $<
136
137 gen_ndr/ndr_%_s.c: %.idl
138         @echo "Generating $@"
139         @$(PIDL) --outputdir=gen_ndr --server -- $<
140
141
142
143 #################################################################
144 # libmapi compilation rules
145 #################################################################
146
147 LIBMAPI_SO_VERSION = 0
148
149 libmapi:        idl                                     \
150                 libmapi/version.h                       \
151                 libmapi/proto.h                         \
152                 libmapi.$(SHLIBEXT).$(PACKAGE_VERSION)  
153
154 libmapi-install:        libmapi                 \
155                         libmapi-installpc       \
156                         libmapi-installlib      \
157                         libmapi-installheader   \
158                         libmapi-installscript
159
160 libmapi-uninstall:      libmapi-uninstallpc     \
161                         libmapi-uninstalllib    \
162                         libmapi-uninstallheader \
163                         libmapi-uninstallscript
164
165 libmapi-clean::
166         rm -f libmapi/*.o libmapi/*.po
167         rm -f libmapi/*.gcno libmapi/*.gcda libmapi/*.gcov
168         rm -f libmapi/tests/*.o libmapi/tests/*.po
169         rm -f libmapi/tests/*.gcno libmapi/tests/*.gcda
170         rm -f libmapi/socket/*.o libmapi/socket/*.po
171         rm -f libmapi/socket/*.gcno libmapi/socket/*.gcda
172         rm -f libmapi/util/*.o libmapi/util/*.po
173         rm -f libmapi/util/*.gcno libmapi/util/*.gcda
174         rm -f libmapi/version.h
175 ifneq ($(SNAPSHOT), no)
176         rm -f libmapi/utf8_convert.yy.c
177         rm -f libmapi/mapicode.c libmapi/mapicode.h
178         rm -f libmapi/mapitags.c libmapi/mapitags.h
179         rm -f libmapi/mapi_nameid.h libmapi/mapi_nameid_private.h
180         rm -f libmapi/proto.h
181         rm -f libmapi/proto_private.h
182         rm -f mapicodes_enum.h
183         rm -f mapitags_enum.h
184 endif
185         rm -f gen_ndr/ndr_exchange*
186         rm -f gen_ndr/exchange.h
187         rm -f gen_ndr/ndr_property*
188         rm -f gen_ndr/property.h
189         rm -f ndr_mapi.o ndr_mapi.po
190         rm -f ndr_mapi.gcno ndr_mapi.gcda
191         rm -f *~
192         rm -f */*~
193         rm -f */*/*~
194         rm -f libmapi.$(SHLIBEXT).$(PACKAGE_VERSION) libmapi.$(SHLIBEXT).$(LIBMAPI_SO_VERSION) \
195                   libmapi.$(SHLIBEXT)
196
197 clean:: libmapi-clean
198
199 libmapi-distclean::
200         rm -f libmapi.pc
201
202 distclean:: libmapi-distclean
203
204 libmapi-installpc:
205         @echo "[*] install: libmapi pc files"
206         $(INSTALL) -d $(DESTDIR)$(libdir)/pkgconfig
207         $(INSTALL) -m 0644 libmapi.pc $(DESTDIR)$(libdir)/pkgconfig
208
209 libmapi-installlib:
210         @echo "[*] install: libmapi library"
211         $(INSTALL) -d $(DESTDIR)$(libdir)
212         $(INSTALL) -m 0755 libmapi.$(SHLIBEXT).$(PACKAGE_VERSION) $(DESTDIR)$(libdir)
213         ln -sf libmapi.$(SHLIBEXT).$(PACKAGE_VERSION) $(DESTDIR)$(libdir)/libmapi.$(SHLIBEXT)
214 ifeq ($(MANUALLY_CREATE_SYMLINKS), yes)
215         ln -sf libmapi.$(SHLIBEXT).$(PACKAGE_VERSION) $(DESTDIR)$(libdir)/libmapi.$(SHLIBEXT).$(LIBMAPI_SO_VERSION)
216 endif
217
218 libmapi-installheader:
219         @echo "[*] install: libmapi headers"
220         $(INSTALL) -d $(DESTDIR)$(includedir)/libmapi 
221         $(INSTALL) -d $(DESTDIR)$(includedir)/libmapi/socket 
222         $(INSTALL) -d $(DESTDIR)$(includedir)/gen_ndr
223         $(INSTALL) -m 0644 libmapi/dlinklist.h $(DESTDIR)$(includedir)/libmapi/
224         $(INSTALL) -m 0644 libmapi/libmapi.h $(DESTDIR)$(includedir)/libmapi/
225         $(INSTALL) -m 0644 libmapi/proto.h $(DESTDIR)$(includedir)/libmapi/
226         $(INSTALL) -m 0644 libmapi/nspi.h $(DESTDIR)$(includedir)/libmapi/
227         $(INSTALL) -m 0644 libmapi/emsmdb.h $(DESTDIR)$(includedir)/libmapi/
228         $(INSTALL) -m 0644 libmapi/mapi_ctx.h $(DESTDIR)$(includedir)/libmapi/
229         $(INSTALL) -m 0644 libmapi/mapi_provider.h $(DESTDIR)$(includedir)/libmapi/
230         $(INSTALL) -m 0644 libmapi/mapi_id_array.h $(DESTDIR)$(includedir)/libmapi/
231         $(INSTALL) -m 0644 libmapi/mapi_notification.h $(DESTDIR)$(includedir)/libmapi/
232         $(INSTALL) -m 0644 libmapi/mapi_object.h $(DESTDIR)$(includedir)/libmapi/
233         $(INSTALL) -m 0644 libmapi/mapi_profile.h $(DESTDIR)$(includedir)/libmapi/
234         $(INSTALL) -m 0644 libmapi/mapi_nameid.h $(DESTDIR)$(includedir)/libmapi/
235         $(INSTALL) -m 0644 libmapi/mapidefs.h $(DESTDIR)$(includedir)/libmapi/
236         $(INSTALL) -m 0644 libmapi/version.h $(DESTDIR)$(includedir)/libmapi/
237         $(INSTALL) -m 0644 libmapi/mapicode.h $(DESTDIR)$(includedir)/libmapi/
238         $(INSTALL) -m 0644 libmapi/socket/netif.h $(DESTDIR)$(includedir)/libmapi/socket/
239         $(INSTALL) -m 0644 gen_ndr/exchange.h $(DESTDIR)$(includedir)/gen_ndr/
240         $(INSTALL) -m 0644 gen_ndr/property.h $(DESTDIR)$(includedir)/gen_ndr/
241
242 libmapi-installscript:
243         $(INSTALL) -d $(DESTDIR)$(datadir)/setup/profiles
244         $(INSTALL) -m 0644 setup/profiles/oc_profiles* $(DESTDIR)$(datadir)/setup/profiles/
245
246 libmapi-uninstallpc:
247         rm -f $(DESTDIR)$(libdir)/pkgconfig/libmapi.pc
248
249 libmapi-uninstalllib:
250         rm -f $(DESTDIR)$(libdir)/libmapi.*
251
252 libmapi-uninstallheader:
253         rm -rf $(DESTDIR)$(includedir)/libmapi
254         rm -f $(DESTDIR)$(includedir)/gen_ndr/exchange.h
255         rm -f $(DESTDIR)$(includedir)/gen_ndr/property.h
256
257 libmapi-uninstallscript:
258         rm -f $(DESTDIR)$(datadir)/setup/profiles/oc_profiles*
259         rm -rf $(DESTDIR)$(datadir)/setup/profiles
260
261 libmapi.$(SHLIBEXT).$(PACKAGE_VERSION):                 \
262         libmapi/IABContainer.po                         \
263         libmapi/IProfAdmin.po                           \
264         libmapi/IMAPIContainer.po                       \
265         libmapi/IMAPIFolder.po                          \
266         libmapi/IMAPIProp.po                            \
267         libmapi/IMAPISession.po                         \
268         libmapi/IMAPISupport.po                         \
269         libmapi/IStream.po                              \
270         libmapi/IMAPITable.po                           \
271         libmapi/IMessage.po                             \
272         libmapi/IMsgStore.po                            \
273         libmapi/IStoreFolder.po                         \
274         libmapi/IUnknown.po                             \
275         libmapi/IMSProvider.po                          \
276         libmapi/IXPLogon.po                             \
277         libmapi/FXICS.po                                \
278         libmapi/utils.po                                \
279         libmapi/property.po                             \
280         libmapi/cdo_mapi.po                             \
281         libmapi/lzfu.po                                 \
282         libmapi/mapi_object.po                          \
283         libmapi/mapi_id_array.po                        \
284         libmapi/mapitags.po                             \
285         libmapi/mapidump.po                             \
286         libmapi/mapicode.po                             \
287         libmapi/mapi_nameid.po                          \
288         libmapi/emsmdb.po                               \
289         libmapi/nspi.po                                 \
290         libmapi/simple_mapi.po                          \
291         libmapi/util/lcid.po                            \
292         libmapi/util/codepage.po                        \
293         libmapi/freebusy.po                             \
294         libmapi/x500.po                                 \
295         ndr_mapi.po                                     \
296         gen_ndr/ndr_exchange.po                         \
297         gen_ndr/ndr_exchange_c.po                       \
298         gen_ndr/ndr_property.po                         \
299         libmapi/socket/interface.po                     \
300         libmapi/socket/netif.po                         \
301         libmapi/utf8_convert.yy.po
302         @echo "Linking $@"
303         @$(CC) $(DSOOPT) $(CFLAGS) $(LDFLAGS) -Wl,-soname,libmapi.$(SHLIBEXT).$(LIBMAPI_SO_VERSION) -o $@ $^ $(LIBS)
304
305
306 libmapi.$(SHLIBEXT).$(LIBMAPI_SO_VERSION): libmapi.$(SHLIBEXT).$(PACKAGE_VERSION)
307         ln -fs $< $@
308
309 libmapi/version.h: VERSION
310         @./script/mkversion.sh  VERSION libmapi/version.h $(PACKAGE_VERSION) $(top_builddir)/
311
312 libmapi/utf8_convert.yy.c:      libmapi/utf8_convert.l
313         @echo "Generating $@"
314         @$(FLEX) -Plibmapi_utf8_convert_ -t $< > $@
315
316 # Avoid warnings:
317 libmapi/utf8_convert.yy.o: CFLAGS=
318 libmapi/utf8_convert.yy.po: CFLAGS=
319
320 libmapi/proto.h libmapi/proto_private.h:                \
321         libmapi/nspi.c                                  \
322         libmapi/emsmdb.c                                \
323         libmapi/cdo_mapi.c                              \
324         libmapi/simple_mapi.c                           \
325         libmapi/mapitags.c                              \
326         libmapi/mapicode.c                              \
327         libmapi/mapidump.c                              \
328         libmapi/mapi_object.c                           \
329         libmapi/mapi_id_array.c                         \
330         libmapi/mapi_nameid.c                           \
331         libmapi/property.c                              \
332         libmapi/IABContainer.c                          \
333         libmapi/IProfAdmin.c                            \
334         libmapi/IMAPIContainer.c                        \
335         libmapi/IMAPIFolder.c                           \
336         libmapi/IMAPIProp.c                             \
337         libmapi/IMAPISession.c                          \
338         libmapi/IMAPISupport.c                          \
339         libmapi/IMAPITable.c                            \
340         libmapi/IMSProvider.c                           \
341         libmapi/IMessage.c                              \
342         libmapi/IMsgStore.c                             \
343         libmapi/IStoreFolder.c                          \
344         libmapi/IUnknown.c                              \
345         libmapi/IStream.c                               \
346         libmapi/IXPLogon.c                              \
347         libmapi/FXICS.c                                 \
348         libmapi/freebusy.c                              \
349         libmapi/x500.c                                  \
350         libmapi/lzfu.c                                  \
351         libmapi/utils.c                                 \
352         libmapi/util/lcid.c                             \
353         libmapi/util/codepage.c                         \
354         libmapi/socket/interface.c                      \
355         libmapi/socket/netif.c          
356         @echo "Generating $@"
357         @./script/mkproto.pl --private=libmapi/proto_private.h --public=libmapi/proto.h $^
358
359 libmapi/emsmdb.c: libmapi/emsmdb.h gen_ndr/ndr_exchange_c.h
360
361 libmapi/mapitags.c libmapi/mapicode.c mapitags_enum.h mapicodes_enum.h: \
362         libmapi/conf/mapi-properties                                    \
363         libmapi/conf/mapi-codes                                         \
364         libmapi/conf/mapi-named-properties                              \
365         libmapi/conf/mparse.pl
366         @./libmapi/conf/build.sh
367
368 #################################################################
369 # libmapi++ compilation rules
370 #################################################################
371
372 LIBMAPIPP_SO_VERSION = 0
373
374 libmapixx: libmapi \
375         libmapipp.$(SHLIBEXT).$(PACKAGE_VERSION) \
376         libmapixx-tests \
377         libmapixx-examples
378
379 libmapipp.$(SHLIBEXT).$(PACKAGE_VERSION):       \
380         libmapi++/src/attachment.po             \
381         libmapi++/src/folder.po                 \
382         libmapi++/src/mapi_exception.po         \
383         libmapi++/src/message.po                \
384         libmapi++/src/object.po                 \
385         libmapi++/src/session.po
386         @echo "Linking $@"
387         @$(CXX) $(DSOOPT) $(CXXFLAGS) $(LDFLAGS) -Wl,-soname,libmapipp.$(SHLIBEXT).$(LIBMAPIPP_SO_VERSION) -o $@ $^ $(LIBS)
388
389 libmapixx-installpc:
390
391 libmapixx-clean: libmapixx-tests-clean libmapixx-libs-clean
392
393 clean:: libmapixx-clean
394
395 libmapixx-install: libmapixx-installheader libmapixx-installlib
396
397 libmapixx-uninstall: libmapixx-uninstallheader libmapixx-uninstalllib
398
399 libmapixx-installheader:
400         @echo "[*] install: libmapi++ headers"
401         $(INSTALL) -d $(DESTDIR)$(includedir)/libmapi++
402         $(INSTALL) -m 0644 libmapi++/attachment.h $(DESTDIR)$(includedir)/libmapi++/
403         $(INSTALL) -m 0644 libmapi++/clibmapi.h $(DESTDIR)$(includedir)/libmapi++/
404         $(INSTALL) -m 0644 libmapi++/folder.h $(DESTDIR)$(includedir)/libmapi++/
405         $(INSTALL) -m 0644 libmapi++/libmapi++.h $(DESTDIR)$(includedir)/libmapi++/
406         $(INSTALL) -m 0644 libmapi++/mapi_exception.h $(DESTDIR)$(includedir)/libmapi++/
407         $(INSTALL) -m 0644 libmapi++/message.h $(DESTDIR)$(includedir)/libmapi++/
408         $(INSTALL) -m 0644 libmapi++/message_store.h $(DESTDIR)$(includedir)/libmapi++/
409         $(INSTALL) -m 0644 libmapi++/object.h $(DESTDIR)$(includedir)/libmapi++/
410         $(INSTALL) -m 0644 libmapi++/profile.h $(DESTDIR)$(includedir)/libmapi++/
411         $(INSTALL) -m 0644 libmapi++/property_container.h $(DESTDIR)$(includedir)/libmapi++/
412         $(INSTALL) -m 0644 libmapi++/session.h $(DESTDIR)$(includedir)/libmapi++/
413
414 libmapixx-libs-clean:
415         rm -f libmapi++/src/*.po
416         rm -f libmapipp.$(SHLIBEXT)*
417
418 libmapixx-installlib:
419         @echo "[*] install: libmapi++ library"
420         $(INSTALL) -d $(DESTDIR)$(libdir)
421         $(INSTALL) -m 0755 libmapipp.$(SHLIBEXT).$(PACKAGE_VERSION) $(DESTDIR)$(libdir)
422         ln -sf libmapi.$(SHLIBEXT).$(PACKAGE_VERSION) $(DESTDIR)$(libdir)/libmapipp.$(SHLIBEXT)
423 ifeq ($(MANUALLY_CREATE_SYMLINKS), yes)
424         ln -sf libmapi.$(SHLIBEXT).$(PACKAGE_VERSION) $(DESTDIR)$(libdir)/libmapipp.$(SHLIBEXT).$(LIBMAPIPP_SO_VERSION)
425 endif
426
427 libmapixx-uninstallheader:
428         rm -rf $(DESTDIR)$(includedir)/libmapi++
429
430 libmapixx-uninstalllib:
431         rm -f $(DESTDIR)$(libdir)/libmapipp.*
432
433 libmapixx-tests:        libmapixx-test          \
434                         libmapixx-attach        \
435                         libmapixx-exception
436
437 libmapixx-tests-clean:  libmapixx-test-clean    \
438                         libmapixx-attach-clean  \
439                         libmapixx-exception-clean 
440
441 libmapixx-test: bin/libmapixx-test
442
443 libmapixx-test-clean:
444         rm -f bin/libmapixx-test
445         rm -f libmapi++/tests/*.o
446
447 clean:: libmapixx-tests-clean
448
449 bin/libmapixx-test:     libmapi++/tests/test.cpp        \
450                 libmapipp.$(SHLIBEXT).$(PACKAGE_VERSION) \
451                 libmapi.$(SHLIBEXT).$(PACKAGE_VERSION)
452         @echo "Linking sample application $@"
453         @$(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) 
454
455 clean:: libmapixx-test-clean
456
457 libmapixx-attach: bin/libmapixx-attach
458
459 libmapixx-attach-clean:
460         rm -f bin/libmapixx-attach
461         rm -f libmapi++/tests/*.po
462
463 bin/libmapixx-attach: libmapi++/tests/attach_test.po    \
464                 libmapipp.$(SHLIBEXT).$(PACKAGE_VERSION) \
465                 libmapi.$(SHLIBEXT).$(PACKAGE_VERSION)
466         @echo "Linking sample application $@"
467         @$(CXX) $(CXXFLAGS) -o $@ $^ $(LIBS)
468
469 clean:: libmapixx-attach-clean
470
471 libmapixx-exception: bin/libmapixx-exception
472  
473 bin/libmapixx-exception: libmapi++/tests/exception_test.cpp \
474                 libmapipp.$(SHLIBEXT).$(PACKAGE_VERSION) \
475                 libmapi.$(SHLIBEXT).$(PACKAGE_VERSION)
476         @echo "Linking exception test application $@"
477         @$(CXX) $(CXXFLAGS) -o $@ $^ $(LIBS)
478
479 libmapixx-exception-clean:
480         rm -f bin/libmapixx-exception
481         rm -f libmapi++/tests/*.o
482
483 clean:: libmapixx-exception-clean
484
485 libmapixx-examples: libmapi++/examples/foldertree \
486                   libmapi++/examples/messages
487
488 libmapixx-foldertree-clean:
489         rm -f libmapi++/examples/foldertree
490         rm -f libmapi++/examples/*.o
491
492 libmapixx-messages-clean:
493         rm -f libmapi++/examples/messages
494         rm -f libmapi++/examples/*.o
495
496 libmapi++/examples/foldertree: libmapi++/examples/foldertree.cpp        \
497                 libmapipp.$(SHLIBEXT).$(PACKAGE_VERSION) \
498                 libmapi.$(SHLIBEXT).$(PACKAGE_VERSION)
499         @echo "Linking foldertree example application $@"
500         @$(CXX) $(CXXFLAGS) -o $@ $^ $(LIBS)
501
502 clean:: libmapixx-foldertree-clean
503
504 libmapi++/examples/messages: libmapi++/examples/messages.cpp    \
505                 libmapipp.$(SHLIBEXT).$(PACKAGE_VERSION) \
506                 libmapi.$(SHLIBEXT).$(PACKAGE_VERSION)
507         @echo "Linking messages example application $@"
508         @$(CXX) $(CXXFLAGS) -o $@ $^ $(LIBS)
509
510 clean:: libmapixx-messages-clean
511
512 #################################################################
513 # libmapiadmin compilation rules
514 #################################################################
515
516 LIBMAPIADMIN_SO_VERSION = 0
517
518 libmapiadmin:   libmapiadmin/proto.h                            \
519                 libmapiadmin.$(SHLIBEXT).$(PACKAGE_VERSION)
520
521 libmapiadmin-install:   libmapiadmin-installpc          \
522                         libmapiadmin-installlib         \
523                         libmapiadmin-installheader
524
525 libmapiadmin-uninstall: libmapiadmin-uninstallpc        \
526                         libmapiadmin-uninstalllib       \
527                         libmapiadmin-uninstallheader
528
529 libmapiadmin-clean::
530         rm -f libmapiadmin/*.o libmapiadmin/*.po
531         rm -f libmapiadmin/*.gcno libmapiadmin/*.gcda
532 ifneq ($(SNAPSHOT), no)
533         rm -f libmapiadmin/proto.h
534         rm -f libmapiadmin/proto_private.h
535 endif
536         rm -f libmapiadmin.$(SHLIBEXT).$(PACKAGE_VERSION) libmapiadmin.$(SHLIBEXT).$(LIBMAPIADMIN_SO_VERSION) \
537                   libmapiadmin.$(SHLIBEXT)
538
539 clean:: libmapiadmin-clean
540
541 libmapiadmin-distclean::
542         rm -f libmapiadmin.pc
543
544 distclean:: libmapiadmin-distclean
545
546 libmapiadmin-installpc:
547         @echo "[*] install: libmapiadmin pc files"
548         $(INSTALL) -d $(DESTDIR)$(libdir)/pkgconfig
549         $(INSTALL) -m 0644 libmapiadmin.pc $(DESTDIR)$(libdir)/pkgconfig
550
551 libmapiadmin-installlib:
552         @echo "[*] install: libmapiadmin library"
553         $(INSTALL) -d $(DESTDIR)$(libdir)
554         $(INSTALL) -m 0755 libmapiadmin.$(SHLIBEXT).$(PACKAGE_VERSION) $(DESTDIR)$(libdir)
555         ln -sf libmapiadmin.$(SHLIBEXT).$(PACKAGE_VERSION) $(DESTDIR)$(libdir)/libmapiadmin.$(SHLIBEXT)
556 ifeq ($(MANUALLY_CREATE_SYMLINKS), yes)
557         ln -sf libmapiadmin.$(SHLIBEXT).$(PACKAGE_VERSION) $(DESTDIR)$(libdir)/libmapiadmin.$(SHLIBEXT).$(LIBMAPI_SO_VERSION)
558 endif
559
560 libmapiadmin-installheader:
561         @echo "[*] install: libmapiadmin headers"
562         $(INSTALL) -d $(DESTDIR)$(includedir)/libmapiadmin 
563         $(INSTALL) -m 0644 libmapiadmin/proto.h $(DESTDIR)$(includedir)/libmapiadmin/
564         $(INSTALL) -m 0644 libmapiadmin/libmapiadmin.h $(DESTDIR)$(includedir)/libmapiadmin/
565
566 libmapiadmin-uninstallpc:
567         rm -f $(DESTDIR)$(libdir)/pkgconfig/libmapiadmin.pc
568
569 libmapiadmin-uninstalllib:
570         rm -f $(DESTDIR)$(libdir)/libmapiadmin.*
571
572 libmapiadmin-uninstallheader:
573         rm -rf $(DESTDIR)$(includedir)/libmapiadmin
574
575 libmapiadmin.$(SHLIBEXT).$(PACKAGE_VERSION):    \
576         libmapiadmin/mapiadmin_user.po          \
577         libmapiadmin/mapiadmin.po               \
578         libmapi.$(SHLIBEXT).$(PACKAGE_VERSION)
579         @echo "Linking $@"
580         @$(CC) $(DSOOPT) $(LDFLAGS) -Wl,-soname,libmapiadmin.$(SHLIBEXT).$(LIBMAPIADMIN_SO_VERSION) -o $@ $^ $(LIBS) $(LIBMAPIADMIN_LIBS) 
581
582 libmapiadmin/proto.h libmapiadmin/proto_private.h:      \
583         libmapiadmin/mapiadmin.c                        \
584         libmapiadmin/mapiadmin_user.c                   
585         @echo "Generating $@"
586         @./script/mkproto.pl -private=libmapiadmin/proto_private.h --public=libmapiadmin/proto.h $^
587
588
589
590 #################################################################
591 # libocpf compilation rules
592 #################################################################
593
594 LIBOCPF_SO_VERSION = 0
595
596 libocpf:        libocpf/proto.h                         \
597                 libocpf.$(SHLIBEXT).$(PACKAGE_VERSION)
598
599 libocpf-install:        libocpf-installpc       \
600                         libocpf-installlib      \
601                         libocpf-installheader
602
603 libocpf-uninstall:      libocpf-uninstallpc     \
604                         libocpf-uninstalllib    \
605                         libocpf-uninstallheader
606
607 libocpf-clean::
608         rm -f libocpf/*.o libocpf/*.po
609         rm -f libocpf/*.gcno libocpf/*.gcda
610 ifneq ($(SNAPSHOT), no)
611         rm -f libocpf/lex.yy.c
612         rm -f libocpf/ocpf.tab.c libocpf/ocpf.tab.h
613         rm -f libocpf/proto.h
614         rm -f libocpf/proto_private.h
615 endif
616         rm -f libocpf.$(SHLIBEXT).$(PACKAGE_VERSION) libocpf.$(SHLIBEXT).$(LIBOCPF_SO_VERSION) \
617                   libocpf.$(SHLIBEXT)
618
619 clean:: libocpf-clean
620
621 libocpf-distclean::
622         rm -f libocpf.pc
623
624 distclean:: libocpf-distclean
625
626 libocpf-installpc:
627         @echo "[*] install: libocpf pc files"
628         $(INSTALL) -d $(DESTDIR)$(libdir)/pkgconfig
629         $(INSTALL) -m 0644 libocpf.pc $(DESTDIR)$(libdir)/pkgconfig
630
631 libocpf-installlib:
632         @echo "[*] install: libocpf library"
633         $(INSTALL) -d $(DESTDIR)$(libdir)
634         $(INSTALL) -m 0755 libocpf.$(SHLIBEXT).$(PACKAGE_VERSION) $(DESTDIR)$(libdir)
635         ln -sf libocpf.$(SHLIBEXT).$(PACKAGE_VERSION) $(DESTDIR)$(libdir)/libocpf.$(SHLIBEXT)
636 ifeq ($(MANUALLY_CREATE_SYMLINKS), yes)
637         ln -sf libocpf.$(SHLIBEXT).$(PACKAGE_VERSION) $(DESTDIR)$(libdir)/libocpf.$(SHLIBEXT).$(LIBOCPF_SO_VERSION)
638 endif
639
640 libocpf-installheader:
641         @echo "[*] install: libocpf headers"
642         $(INSTALL) -d $(DESTDIR)$(includedir)/libocpf
643         $(INSTALL) -m 0644 libocpf/ocpf.h $(DESTDIR)$(includedir)/libocpf/
644         $(INSTALL) -m 0644 libocpf/proto.h $(DESTDIR)$(includedir)/libocpf/
645
646 libocpf-uninstallpc:
647         rm -f $(DESTDIR)$(libdir)/pkgconfig/libocpf.pc
648
649 libocpf-uninstalllib:
650         rm -f $(DESTDIR)$(libdir)/libocpf.*
651
652 libocpf-uninstallheader:
653         rm -rf $(DESTDIR)$(includedir)/libocpf
654
655 libocpf.$(SHLIBEXT).$(PACKAGE_VERSION):         \
656         libocpf/ocpf.tab.po                     \
657         libocpf/lex.yy.po                       \
658         libocpf/ocpf_public.po                  \
659         libocpf/ocpf_dump.po                    \
660         libocpf/ocpf_api.po                     \
661         libocpf/ocpf_write.po                   \
662         libmapi.$(SHLIBEXT).$(PACKAGE_VERSION)
663         @echo "Linking $@"
664         @$(CC) $(DSOOPT) $(LDFLAGS) -Wl,-soname,libocpf.$(SHLIBEXT).$(LIBOCPF_SO_VERSION) -o $@ $^ $(LIBS)
665
666 libocpf.$(SHLIBEXT).$(LIBOCPF_SO_VERSION): libocpf.$(SHLIBEXT).$(PACKAGE_VERSION)
667         ln -fs $< $@
668
669 libocpf/proto.h:        libocpf/ocpf_public.c   \
670                         libocpf/ocpf_dump.c     \
671                         libocpf/ocpf_api.c      \
672                         libocpf/ocpf_write.c
673                         @echo "Generating $@"
674                         @./script/mkproto.pl --private=libocpf/proto_private.h \
675                         --public=libocpf/proto.h $^
676
677 libocpf/lex.yy.c:               libocpf/lex.l
678         @echo "Generating $@"
679         @$(FLEX) -t $< > $@
680
681 libocpf/ocpf.tab.c:     libocpf/ocpf.y
682         @echo "Generating $@"
683         @$(BISON) -pocpf_yy -d $< -o $@
684
685 # Avoid warnings
686 libocpf/lex.yy.o: CFLAGS=
687 libocpf/ocpf.tab.o: CFLAGS=
688
689
690
691 #################################################################
692 # torture suite compilation rules
693 #################################################################
694
695 torture:        torture/torture_proto.h         \
696                 torture/openchange.$(SHLIBEXT)
697
698 torture-install:
699         @echo "[*] install: openchange torture suite"
700         $(INSTALL) -d $(DESTDIR)$(TORTURE_MODULESDIR)
701         $(INSTALL) -m 0755 torture/openchange.$(SHLIBEXT) $(DESTDIR)$(TORTURE_MODULESDIR)
702
703 torture-uninstall:
704         rm -f $(DESTDIR)$(TORTURE_MODULESDIR)/openchange.*
705
706 torture-clean::
707         rm -f torture/*.$(SHLIBEXT)
708 ifneq ($(SNAPSHOT), no)
709         rm -f torture/torture_proto.h
710 endif
711         rm -f torture/*.o torture/*.po torture/*.gcno torture/*.gcda
712
713 clean:: torture-clean
714
715 torture/openchange.$(SHLIBEXT):                 \
716         torture/nspi_profile.po                 \
717         torture/nspi_resolvenames.po            \
718         torture/mapi_restrictions.po            \
719         torture/mapi_criteria.po                \
720         torture/mapi_copymail.po                \
721         torture/mapi_sorttable.po               \
722         torture/mapi_bookmark.po                \
723         torture/mapi_fetchmail.po               \
724         torture/mapi_sendmail.po                \
725         torture/mapi_sendmail_html.po           \
726         torture/mapi_deletemail.po              \
727         torture/mapi_newmail.po                 \
728         torture/mapi_sendattach.po              \
729         torture/mapi_fetchattach.po             \
730         torture/mapi_fetchappointment.po        \
731         torture/mapi_sendappointment.po         \
732         torture/mapi_fetchcontacts.po           \
733         torture/mapi_sendcontacts.po            \
734         torture/mapi_fetchtasks.po              \
735         torture/mapi_sendtasks.po               \
736         torture/mapi_common.po                  \
737         torture/mapi_permissions.po             \
738         torture/mapi_createuser.po              \
739         torture/exchange_createuser.po          \
740         torture/mapi_namedprops.po              \
741         torture/mapi_recipient.po               \
742         torture/openchange.po                   \
743         libmapi.$(SHLIBEXT).$(PACKAGE_VERSION)
744         @echo "Linking $@"
745         @$(CC) -o $@ $(DSOOPT) $^ -L. $(LIBS)
746
747 torture/torture_proto.h: torture/mapi_restrictions.c    \
748         torture/mapi_criteria.c         \
749         torture/mapi_deletemail.c       \
750         torture/mapi_newmail.c          \
751         torture/mapi_fetchmail.c        \
752         torture/mapi_sendattach.c       \
753         torture/mapi_sorttable.c        \
754         torture/mapi_bookmark.c         \
755         torture/mapi_copymail.c         \
756         torture/mapi_fetchattach.c      \
757         torture/mapi_sendmail.c         \
758         torture/mapi_sendmail_html.c    \
759         torture/nspi_profile.c          \
760         torture/nspi_resolvenames.c     \
761         torture/mapi_fetchappointment.c \
762         torture/mapi_sendappointment.c  \
763         torture/mapi_fetchcontacts.c    \
764         torture/mapi_sendcontacts.c     \
765         torture/mapi_fetchtasks.c       \
766         torture/mapi_sendtasks.c        \
767         torture/mapi_common.c           \
768         torture/mapi_permissions.c      \
769         torture/mapi_namedprops.c       \
770         torture/mapi_recipient.c        \
771         torture/mapi_createuser.c       \
772         torture/exchange_createuser.c   \
773         torture/openchange.c
774         @echo "Generating $@"
775         @./script/mkproto.pl --private=torture/torture_proto.h --public=torture/torture_proto.h $^
776
777 #################################################################
778 # mapiproxy compilation rules
779 #################################################################
780 LIBMAPIPROXY_SO_VERSION = 0
781 LIBMAPISERVER_SO_VERSION = 0
782
783 .PHONY: mapiproxy
784
785 mapiproxy:              idl                                     \
786                         libmapiproxy                            \
787                         libmapiserver                           \
788                         libmapistore                            \
789                         mapiproxy/dcesrv_mapiproxy.$(SHLIBEXT)  \
790                         mapiproxy-modules                       \
791                         mapiproxy-servers
792
793 mapiproxy-install:      mapiproxy                               \
794                         mapiproxy-modules-install               \
795                         mapiproxy-servers-install               \
796                         libmapiproxy-install                    \
797                         libmapiserver-install                   \
798                         libmapistore-install
799         $(INSTALL) -d $(DESTDIR)$(SERVER_MODULESDIR)
800         $(INSTALL) -m 0755 mapiproxy/dcesrv_mapiproxy.$(SHLIBEXT) $(DESTDIR)$(SERVER_MODULESDIR)
801
802 mapiproxy-uninstall:    mapiproxy-modules-uninstall             \
803                         mapiproxy-servers-uninstall             \
804                         libmapiproxy-uninstall                  \
805                         libmapiserver-uninstall                 \
806                         libmapistore-uninstall
807         rm -f $(DESTDIR)$(SERVER_MODULESDIR)/dcesrv_mapiproxy.*
808         rm -f $(DESTDIR)$(libdir)/libmapiproxy.*
809         rm -f $(DESTDIR)$(includedir)/libmapiproxy.h
810
811 mapiproxy-clean::       mapiproxy-modules-clean                 \
812                         mapiproxy-servers-clean                 \
813                         libmapiproxy-clean                      \
814                         libmapiserver-clean                     \
815                         libmapistore-clean
816         rm -f mapiproxy/*.o mapiproxy/*.po
817         rm -f mapiproxy/*.gcno mapiproxy/*.gcda
818         rm -f mapiproxy/dcesrv_mapiproxy.$(SHLIBEXT)
819
820 clean:: mapiproxy-clean
821
822
823 mapiproxy/dcesrv_mapiproxy.$(SHLIBEXT):         mapiproxy/dcesrv_mapiproxy.po           \
824                                                 mapiproxy/dcesrv_mapiproxy_nspi.po      \
825                                                 mapiproxy/dcesrv_mapiproxy_rfr.po       \
826                                                 mapiproxy/dcesrv_mapiproxy_unused.po    \
827                                                 ndr_mapi.po                             \
828                                                 gen_ndr/ndr_exchange.po                         
829
830         @echo "Linking $@"
831         @$(CC) -o $@ $(DSOOPT) $^ -L. $(LIBS) -Lmapiproxy mapiproxy/libmapiproxy.$(SHLIBEXT).$(PACKAGE_VERSION)
832
833 mapiproxy/dcesrv_mapiproxy.c: gen_ndr/ndr_exchange_s.c gen_ndr/ndr_exchange.c
834
835
836 ###############
837 # libmapiproxy
838 ###############
839
840 libmapiproxy: mapiproxy/libmapiproxy.$(SHLIBEXT).$(PACKAGE_VERSION)
841
842 libmapiproxy-install:
843         $(INSTALL) -m 0755 mapiproxy/libmapiproxy.$(SHLIBEXT).$(PACKAGE_VERSION) $(DESTDIR)$(libdir)
844         ln -sf libmapiproxy.$(SHLIBEXT).$(PACKAGE_VERSION) $(DESTDIR)$(libdir)/libmapiproxy.$(SHLIBEXT)
845         $(INSTALL) -m 0644 mapiproxy/libmapiproxy/libmapiproxy.h $(DESTDIR)$(includedir)/
846         $(INSTALL) -m 0644 mapiproxy/libmapiproxy.pc $(DESTDIR)$(libdir)/pkgconfig
847
848 libmapiproxy-clean:
849         rm -f mapiproxy/libmapiproxy/*.po mapiproxy/libmapiproxy/*.o
850         rm -f mapiproxy/libmapiproxy/*.gcno mapiproxy/libmapiproxy/*.gcda
851 ifneq ($(SNAPSHOT), no)
852         rm -f mapiproxy/libmapiproxy/openchangedb_property.c
853 endif
854         rm -f mapiproxy/libmapiproxy.$(SHLIBEXT).$(PACKAGE_VERSION)
855         rm -f mapiproxy/libmapiproxy.$(SHLIBEXT).$(LIBMAPIPROXY_SO_VERSION)
856
857 libmapiproxy-uninstall:
858         rm -f $(DESTDIR)$(libdir)/libmapiproxy.*
859         rm -f $(DESTDIR)$(includedir)/libmapiproxy.h
860         rm -f $(DESTDIR)$(libdir)/pkgconfig/libmapiproxy.pc
861
862 libmapiproxy-distclean:
863         rm -f mapiproxy/libmapiproxy.pc
864
865 distclean::libmapiproxy-distclean
866
867 mapiproxy/libmapiproxy/openchangedb_property.c: libmapi/conf/mapi-properties libmapi/conf/mparse.pl
868         @./libmapi/conf/mparse.pl --parser=openchangedb_property --outputdir=mapiproxy/libmapiproxy/ \
869                                   libmapi/conf/mapi-properties
870
871 mapiproxy/libmapiproxy.$(SHLIBEXT).$(PACKAGE_VERSION):  mapiproxy/libmapiproxy/dcesrv_mapiproxy_module.po       \
872                                                         mapiproxy/libmapiproxy/dcesrv_mapiproxy_server.po       \
873                                                         mapiproxy/libmapiproxy/dcesrv_mapiproxy_session.po      \
874                                                         mapiproxy/libmapiproxy/openchangedb.po                  \
875                                                         mapiproxy/libmapiproxy/openchangedb_property.po         \
876                                                         mapiproxy/libmapiproxy/mapi_handles.po                  \
877                                                         mapiproxy/libmapiproxy/entryid.po                       \
878                                                         libmapi.$(SHLIBEXT).$(PACKAGE_VERSION)
879         @$(CC) -o $@ $(DSOOPT) -Wl,-soname,libmapiproxy.$(SHLIBEXT).$(LIBMAPIPROXY_SO_VERSION) $^ -L. $(LIBS) $(TDB_LIBS)
880
881 mapiproxy/libmapiproxy.$(SHLIBEXT).$(LIBMAPIPROXY_SO_VERSION): libmapiproxy.$(SHLIBEXT).$(PACKAGE_VERSION)
882         ln -fs $< $@
883
884
885 #################
886 # libmapiserver
887 #################
888
889 libmapiserver: mapiproxy/libmapiserver.$(SHLIBEXT).$(PACKAGE_VERSION)
890
891 libmapiserver-install:
892         $(INSTALL) -m 0755 mapiproxy/libmapiserver.$(SHLIBEXT).$(PACKAGE_VERSION) $(DESTDIR)$(libdir)
893         ln -sf libmapiserver.$(SHLIBEXT).$(PACKAGE_VERSION) $(DESTDIR)$(libdir)/libmapiserver.$(SHLIBEXT)
894         $(INSTALL) -m 0644 mapiproxy/libmapiserver/libmapiserver.h $(DESTDIR)$(includedir)/
895         $(INSTALL) -m 0644 mapiproxy/libmapiserver.pc $(DESTDIR)$(libdir)/pkgconfig
896
897 libmapiserver-clean:
898         rm -f mapiproxy/libmapiserver/*.po mapiproxy/libmapiserver/*.o
899         rm -f mapiproxy/libmapiserver/*.gcno mapiproxy/libmapiserver/*.gcda
900         rm -f mapiproxy/libmapiserver.$(SHLIBEXT).$(PACKAGE_VERSION)
901         rm -f mapiproxy/libmapiserver.$(SHLIBEXT).$(LIBMAPISERVER_SO_VERSION)
902
903 libmapiserver-uninstall:
904         rm -f $(DESTDIR)$(libdir)/libmapiserver.*
905         rm -f $(DESTDIR)$(includedir)/libmapiserver.h
906         rm -f $(DESTDIR)$(libdir)/pkgconfig/libmapiserver.pc
907
908 libmapiserver-distclean:
909         rm -f mapiproxy/libmapiserver.pc
910
911 distclean:: libmapiserver-distclean
912
913 mapiproxy/libmapiserver.$(SHLIBEXT).$(PACKAGE_VERSION): mapiproxy/libmapiserver/libmapiserver_oxcstor.po        \
914                                                         mapiproxy/libmapiserver/libmapiserver_oxcprpt.po        \
915                                                         mapiproxy/libmapiserver/libmapiserver_oxcfold.po        \
916                                                         mapiproxy/libmapiserver/libmapiserver_oxctabl.po        \
917                                                         mapiproxy/libmapiserver/libmapiserver_oxcmsg.po         \
918                                                         mapiproxy/libmapiserver/libmapiserver_oxcnotif.po       \
919                                                         mapiproxy/libmapiserver/libmapiserver_oxorule.po         \
920                                                         ndr_mapi.po                             \
921                                                         gen_ndr/ndr_exchange.po
922         @$(CC) -o $@ $(DSOOPT) -Wl,-soname,libmapiserver.$(SHLIBEXT).$(LIBMAPIPROXY_SO_VERSION) $^ $(LIBS)
923
924 mapiproxy/libmapiserver.$(SHLIBEXT).$(LIBMAPISERVER_SO_VERSION): libmapiserver.$(SHLIBEXT).$(PACKAGE_VERSION)
925         ln -fs $< $@
926
927
928 ################
929 # libmapistore
930 ################
931 LIBMAPISTORE_SO_VERSION = 0
932
933 libmapistore:   mapiproxy/libmapistore.$(SHLIBEXT).$(PACKAGE_VERSION)   \
934                 $(OC_MAPISTORE)                                         \
935                 mapistore_test
936
937 libmapistore-install:   $(OC_MAPISTORE_INSTALL)
938         $(INSTALL) -m 0755 mapiproxy/libmapistore.$(SHLIBEXT).$(PACKAGE_VERSION) $(DESTDIR)$(libdir)
939         ln -sf libmapistore.$(SHLIBEXT).$(PACKAGE_VERSION) $(DESTDIR)$(libdir)/libmapistore.$(SHLIBEXT)
940         $(INSTALL) -d $(DESTDIR)$(includedir)/mapistore
941         $(INSTALL) -m 0644 mapiproxy/libmapistore/mapistore.h $(DESTDIR)$(includedir)/mapistore/
942         $(INSTALL) -m 0644 mapiproxy/libmapistore/mapistore_errors.h $(DESTDIR)$(includedir)/mapistore/
943         $(INSTALL) -m 0644 mapiproxy/libmapiserver.pc $(DESTDIR)$(libdir)/pkgconfig
944
945 libmapistore-clean:     $(OC_MAPISTORE_CLEAN)
946         rm -f mapiproxy/libmapistore/*.po mapiproxy/libmapistore/*.o
947         rm -f mapiproxy/libmapistore/*.gcno mapiproxy/libmapistore/*.gcda
948         rm -f mapiproxy/libmapistore.$(SHLIBEXT).$(PACKAGE_VERSION)
949         rm -f mapiproxy/libmapistore.$(SHLIBEXT).$(LIBMAPISTORE_SO_VERSION)
950
951 libmapistore-uninstall: $(OC_MAPISTORE_UNINSTALL)
952         rm -f $(DESTDIR)$(libdir)/libmapistore.*
953         rm -rf $(DESTDIR)$(includedir)/mapistore
954         rm -f $(DESTDIR)$(libdir)/pkgconfig/libmapistore.pc
955
956 libmapistore-distclean: libmapistore-clean
957         rm -f mapiproxy/libmapistore.pc
958
959 distclean:: libmapistore-distclean
960
961 mapiproxy/libmapistore.$(SHLIBEXT).$(PACKAGE_VERSION):  mapiproxy/libmapistore/mapistore_interface.po   \
962                                                         mapiproxy/libmapistore/mapistore_processing.po  \
963                                                         mapiproxy/libmapistore/mapistore_backend.po     \
964                                                         mapiproxy/libmapistore/mapistore_tdb_wrap.po
965         @$(CC) -o $@ $(DSOOPT) $(LDFLAGS) -Wl,-soname,libmapistore.$(SHLIBEXT).$(LIBMAPISTORE_SO_VERSION) $^ -L. $(LIBS) $(TDB_LIBS)
966
967 mapiproxy/libmapistore.$(SHLIBEXT).$(LIBMAPISTORE_SO_VERSION): libmapistore.$(SHLIBEXT).$(PACKAGE_VERSION)
968         ln -fs $< $@
969
970 #####################
971 # mapistore backends
972 #####################
973
974 mapistore_sqlite3: mapiproxy/libmapistore/backends/mapistore_sqlite3.$(SHLIBEXT)
975
976 mapistore_sqlite3-install:
977         $(INSTALL) -d $(DESTDIR)$(libdir)/mapistore_backends
978         $(INSTALL) -m 0755 mapiproxy/libmapistore/backends/mapistore_sqlite3.$(SHLIBEXT) $(DESTDIR)$(libdir)/mapistore_backends/
979
980 mapistore_sqlite3-uninstall:
981         rm -rf $(DESTDIR)$(libdir)/mapistore_backends
982
983 mapistore_sqlite3-clean:
984         rm -f mapiproxy/libmapistore/backends/mapistore_sqlite3.o
985         rm -f mapiproxy/libmapistore/backends/mapistore_sqlite3.po
986         rm -f mapiproxy/libmapistore/backends/mapistore_sqlite3.gcno
987         rm -f mapiproxy/libmapistore/backends/mapistore_sqlite3.gcda
988
989 clean:: mapistore_sqlite3-clean
990
991 mapistore_sqlite3-distclean: mapistore_sqlite3-clean
992         rm -f mapiproxy/libmapistore/backends/mapistore_sqlite3.so
993
994 distclean:: mapistore_sqlite3-distclean
995
996 mapiproxy/libmapistore/backends/mapistore_sqlite3.$(SHLIBEXT): mapiproxy/libmapistore/backends/mapistore_sqlite3.po
997         @echo "Linking mapistore module $@"
998         @$(CC) $(SQLITE_CFLAGS) -o $@ $(DSOOPT) $(LDFLAGS) $^ -L. $(LIBS) $(SQLITE_LIBS)        \
999         -Lmapiproxy mapiproxy/libmapistore.$(SHLIBEXT).$(PACKAGE_VERSION)
1000
1001 #######################
1002 # mapistore test tools
1003 #######################
1004
1005 mapistore_test: bin/mapistore_test
1006
1007 bin/mapistore_test:     mapiproxy/libmapistore/tests/mapistore_test.o           \
1008                         mapiproxy/libmapistore.$(SHLIBEXT).$(PACKAGE_VERSION)
1009         @echo "Linking $@"
1010         @$(CC) -o $@ $^ $(LDFLAGS) $(LIBS) -lpopt
1011
1012 mapistore_clean:
1013         rm -f mapiproxy/libmapistore/tests/*.o
1014         rm -f mapiproxy/libmapistore/tests/*.gcno
1015         rm -f mapiproxy/libmapistore/tests/*.gcda
1016         rm -f bin/mapistore_test
1017
1018 clean:: mapistore_clean
1019
1020 ####################
1021 # mapiproxy modules
1022 ####################
1023
1024 mapiproxy-modules:      mapiproxy/modules/mpm_downgrade.$(SHLIBEXT)     \
1025                         mapiproxy/modules/mpm_pack.$(SHLIBEXT)          \
1026                         mapiproxy/modules/mpm_cache.$(SHLIBEXT)         \
1027                         mapiproxy/modules/mpm_dummy.$(SHLIBEXT)         
1028
1029 mapiproxy-modules-install: mapiproxy-modules
1030         $(INSTALL) -d $(DESTDIR)$(modulesdir)/dcerpc_mapiproxy/
1031         $(INSTALL) -m 0755 mapiproxy/modules/mpm_downgrade.$(SHLIBEXT) $(DESTDIR)$(modulesdir)/dcerpc_mapiproxy/
1032         $(INSTALL) -m 0755 mapiproxy/modules/mpm_pack.$(SHLIBEXT) $(DESTDIR)$(modulesdir)/dcerpc_mapiproxy/
1033         $(INSTALL) -m 0755 mapiproxy/modules/mpm_cache.$(SHLIBEXT) $(DESTDIR)$(modulesdir)/dcerpc_mapiproxy/
1034         $(INSTALL) -m 0755 mapiproxy/modules/mpm_dummy.$(SHLIBEXT) $(DESTDIR)$(modulesdir)/dcerpc_mapiproxy/
1035
1036 mapiproxy-modules-uninstall:
1037         rm -rf $(DESTDIR)$(modulesdir)/dcerpc_mapiproxy
1038
1039 mapiproxy-modules-clean::
1040         rm -f mapiproxy/modules/*.o mapiproxy/modules/*.po
1041         rm -f mapiproxy/modules/*.gcno mapiproxy/modules/*.gcda
1042         rm -f mapiproxy/modules/*.so
1043
1044 clean:: mapiproxy-modules-clean
1045
1046 mapiproxy/modules/mpm_downgrade.$(SHLIBEXT): mapiproxy/modules/mpm_downgrade.po
1047         @echo "Linking $@"
1048         @$(CC) -o $@ $(DSOOPT) $^ -L. $(LIBS) -Lmapiproxy mapiproxy/libmapiproxy.$(SHLIBEXT).$(PACKAGE_VERSION)
1049
1050 mapiproxy/modules/mpm_pack.$(SHLIBEXT): mapiproxy/modules/mpm_pack.po   \
1051                                         ndr_mapi.po                     \
1052                                         gen_ndr/ndr_exchange.po
1053         @echo "Linking $@"
1054         @$(CC) -o $@ $(DSOOPT) $^ -L. $(LIBS) -Lmapiproxy mapiproxy/libmapiproxy.$(SHLIBEXT).$(PACKAGE_VERSION)
1055
1056 mapiproxy/modules/mpm_cache.$(SHLIBEXT): mapiproxy/modules/mpm_cache.po         \
1057                                          mapiproxy/modules/mpm_cache_ldb.po     \
1058                                          mapiproxy/modules/mpm_cache_stream.po  \
1059                                          ndr_mapi.po                            \
1060                                          gen_ndr/ndr_exchange.po
1061         @echo "Linking $@"
1062         @$(CC) -o $@ $(DSOOPT) $^ -L. $(LIBS) -Lmapiproxy mapiproxy/libmapiproxy.$(SHLIBEXT).$(PACKAGE_VERSION)
1063
1064 mapiproxy/modules/mpm_dummy.$(SHLIBEXT): mapiproxy/modules/mpm_dummy.po
1065         @echo "Linking $@"
1066         @$(CC) -o $@ $(DSOOPT) $^ -L. $(LIBS) -Lmapiproxy mapiproxy/libmapiproxy.$(SHLIBEXT).$(PACKAGE_VERSION)
1067
1068
1069 ####################
1070 # mapiproxy servers
1071 ####################
1072 provision-install: python-install
1073         $(INSTALL) -d $(DESTDIR)$(datadir)/setup/AD
1074         $(INSTALL) -m 0644 setup/AD/oc_provision* $(DESTDIR)$(datadir)/setup/AD/
1075         $(INSTALL) -m 0644 setup/AD/prefixMap.txt $(DESTDIR)$(datadir)/setup/AD/
1076         $(INSTALL) -d $(DESTDIR)$(datadir)/setup/openchangedb
1077         $(INSTALL) -m 0644 setup/openchangedb/oc_provision* $(DESTDIR)$(datadir)/setup/openchangedb/
1078
1079 provision-uninstall: python-uninstall
1080         rm -f $(DESTDIR)$(datadir)/setup/AD/oc_provision_configuration.ldif
1081         rm -f $(DESTDIR)$(datadir)/setup/AD/oc_provision_schema.ldif
1082         rm -f $(DESTDIR)$(datadir)/setup/AD/oc_provision_schema_modify.ldif
1083         rm -f $(DESTDIR)$(datadir)/setup/AD/oc_provision_schema_ADSC.ldif
1084         rm -f $(DESTDIR)$(datadir)/setup/AD/prefixMap.txt
1085         rm -rf $(DESTDIR)$(datadir)/setup/AD
1086         rm -rf $(DESTDIR)$(datadir)/setup/openchangedb
1087
1088 mapiproxy-servers:      mapiproxy/servers/exchange_nsp.$(SHLIBEXT)              \
1089                         mapiproxy/servers/exchange_emsmdb.$(SHLIBEXT)           \
1090                         mapiproxy/servers/exchange_ds_rfr.$(SHLIBEXT)
1091
1092 mapiproxy-servers-install: mapiproxy-servers provision-install
1093         $(INSTALL) -d $(DESTDIR)$(modulesdir)/dcerpc_mapiproxy_server/
1094         $(INSTALL) -m 0755 mapiproxy/servers/exchange_nsp.$(SHLIBEXT) $(DESTDIR)$(modulesdir)/dcerpc_mapiproxy_server/
1095         $(INSTALL) -m 0755 mapiproxy/servers/exchange_emsmdb.$(SHLIBEXT) $(DESTDIR)$(modulesdir)/dcerpc_mapiproxy_server/
1096         $(INSTALL) -m 0755 mapiproxy/servers/exchange_ds_rfr.$(SHLIBEXT) $(DESTDIR)$(modulesdir)/dcerpc_mapiproxy_server/
1097
1098 mapiproxy-servers-uninstall: provision-uninstall
1099         rm -rf $(DESTDIR)$(modulesdir)/dcerpc_mapiproxy_server
1100
1101 mapiproxy-servers-clean::
1102         rm -f mapiproxy/servers/default/nspi/*.o mapiproxy/servers/default/nspi/*.po
1103         rm -f mapiproxy/servers/default/nspi/*.gcno mapiproxy/servers/default/nspi/*.gcda
1104         rm -f mapiproxy/servers/default/emsmdb/*.o mapiproxy/servers/default/emsmdb/*.po
1105         rm -f mapiproxy/servers/default/emsmdb/*.gcno mapiproxy/servers/default/emsmdb/*.gcda
1106         rm -f mapiproxy/servers/default/rfr/*.o mapiproxy/servers/default/rfr/*.po
1107         rm -f mapiproxy/servers/default/rfr/*.gcno mapiproxy/servers/default/rfr/*.gcda
1108         rm -f mapiproxy/servers/*.so
1109
1110 clean:: mapiproxy-servers-clean
1111
1112 mapiproxy/servers/exchange_nsp.$(SHLIBEXT):     mapiproxy/servers/default/nspi/dcesrv_exchange_nsp.po   \
1113                                                 mapiproxy/servers/default/nspi/emsabp.po                \
1114                                                 mapiproxy/servers/default/nspi/emsabp_tdb.po            \
1115                                                 mapiproxy/servers/default/nspi/emsabp_property.po       
1116         @echo "Linking $@"
1117         @$(CC) -o $@ $(DSOOPT) $^ -L. $(LIBS) -Lmapiproxy mapiproxy/libmapiproxy.$(SHLIBEXT).$(PACKAGE_VERSION)
1118
1119 mapiproxy/servers/exchange_emsmdb.$(SHLIBEXT):  mapiproxy/servers/default/emsmdb/dcesrv_exchange_emsmdb.po      \
1120                                                 mapiproxy/servers/default/emsmdb/emsmdbp.po                     \
1121                                                 mapiproxy/servers/default/emsmdb/emsmdbp_object.po              \
1122                                                 mapiproxy/servers/default/emsmdb/oxcstor.po                     \
1123                                                 mapiproxy/servers/default/emsmdb/oxcprpt.po                     \
1124                                                 mapiproxy/servers/default/emsmdb/oxcfold.po                     \
1125                                                 mapiproxy/servers/default/emsmdb/oxctabl.po                     \
1126                                                 mapiproxy/servers/default/emsmdb/oxcmsg.po                      \
1127                                                 mapiproxy/servers/default/emsmdb/oxcnotif.po                    \
1128                                                 mapiproxy/servers/default/emsmdb/oxorule.po                     
1129         @echo "Linking $@"
1130         @$(CC) -o $@ $(DSOOPT) $^ -L. $(LIBS) -Lmapiproxy mapiproxy/libmapiproxy.$(SHLIBEXT).$(PACKAGE_VERSION) \
1131                                                 mapiproxy/libmapiserver.$(SHLIBEXT).$(PACKAGE_VERSION)          \
1132                                                 mapiproxy/libmapistore.$(SHLIBEXT).$(PACKAGE_VERSION)
1133
1134 mapiproxy/servers/exchange_ds_rfr.$(SHLIBEXT):  mapiproxy/servers/default/rfr/dcesrv_exchange_ds_rfr.po
1135         @echo "Linking $@"
1136         @$(CC) -o $@ $(DSOOPT) $^ -L. $(LIBS) -Lmapiproxy mapiproxy/libmapiproxy.$(SHLIBEXT).$(PACKAGE_VERSION)
1137
1138 #################################################################
1139 # Tools compilation rules
1140 #################################################################
1141
1142 ###################
1143 # openchangeclient
1144 ###################
1145
1146 openchangeclient:       bin/openchangeclient
1147
1148 openchangeclient-install:       openchangeclient
1149         $(INSTALL) -d $(DESTDIR)$(bindir) 
1150         $(INSTALL) -m 0755 bin/openchangeclient $(DESTDIR)$(bindir)
1151
1152 openchangeclient-uninstall:
1153         rm -f $(DESTDIR)$(bindir)/openchangeclient
1154
1155 openchangeclient-clean::
1156         rm -f bin/openchangeclient
1157         rm -f utils/openchangeclient.o
1158         rm -f utils/openchangeclient.gcno
1159         rm -f utils/openchangeclient.gcda
1160         rm -f utils/openchange-tools.o
1161         rm -f utils/openchange-tools.gcno
1162         rm -f utils/openchange-tools.gcda
1163
1164 clean:: openchangeclient-clean
1165
1166 bin/openchangeclient:   utils/openchangeclient.o                        \
1167                         utils/openchange-tools.o                        \
1168                         libmapi.$(SHLIBEXT).$(PACKAGE_VERSION)          \
1169                         libocpf.$(SHLIBEXT).$(PACKAGE_VERSION)
1170         @echo "Linking $@"
1171         @$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(LIBS) -lpopt
1172
1173
1174 ##############
1175 # mapiprofile
1176 ##############
1177
1178 mapiprofile:            bin/mapiprofile
1179
1180 mapiprofile-install:    mapiprofile
1181         $(INSTALL) -d $(DESTDIR)$(bindir) 
1182         $(INSTALL) -m 0755 bin/mapiprofile $(DESTDIR)$(bindir)
1183
1184 mapiprofile-uninstall:
1185         rm -f $(DESTDIR)$(bindir)/mapiprofile
1186
1187 mapiprofile-clean::
1188         rm -f bin/mapiprofile
1189         rm -f utils/mapiprofile.o
1190         rm -f utils/mapiprofile.gcno
1191         rm -f utils/mapiprofile.gcda
1192
1193 clean:: mapiprofile-clean
1194
1195 bin/mapiprofile:        utils/mapiprofile.o                     \
1196                         utils/openchange-tools.o                \
1197                         libmapi.$(SHLIBEXT).$(PACKAGE_VERSION)
1198         @echo "Linking $@"
1199         @$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(LIBS) -lpopt
1200
1201
1202 ###################
1203 #openchangepfadmin
1204 ###################
1205
1206 openchangepfadmin:      bin/openchangepfadmin
1207
1208 openchangepfadmin-install:      openchangepfadmin
1209         $(INSTALL) -d $(DESTDIR)$(bindir) 
1210         $(INSTALL) -m 0755 bin/openchangepfadmin $(DESTDIR)$(bindir)
1211
1212 openchangepfadmin-uninstall:
1213         rm -f $(DESTDIR)$(bindir)/openchangepfadmin
1214
1215 openchangepfadmin-clean::
1216         rm -f bin/openchangepfadmin
1217         rm -f utils/openchangepfadmin.o
1218         rm -f utils/openchangepfadmin.gcno
1219         rm -f utils/openchangepfadmin.gcda
1220
1221 clean:: openchangepfadmin-clean
1222
1223 bin/openchangepfadmin:  utils/openchangepfadmin.o                       \
1224                         utils/openchange-tools.o                        \
1225                         libmapi.$(SHLIBEXT).$(PACKAGE_VERSION)          \
1226                         libmapiadmin.$(SHLIBEXT).$(PACKAGE_VERSION)
1227         @echo "Linking $@"
1228         @$(CC) -o $@ $^ $(LDFLAGS) $(LIBS) $(LIBMAPIADMIN_LIBS) -lpopt                  
1229
1230
1231 ###################
1232 # exchange2mbox
1233 ###################
1234
1235 exchange2mbox:          bin/exchange2mbox
1236
1237 exchange2mbox-install:  exchange2mbox
1238         $(INSTALL) -d $(DESTDIR)$(bindir)
1239         $(INSTALL) -m 0755 bin/exchange2mbox $(DESTDIR)$(bindir)
1240
1241 exchange2mbox-uninstall:
1242         rm -f $(DESTDIR)$(bindir)/exchange2mbox
1243
1244 exchange2mbox-clean::
1245         rm -f bin/exchange2mbox
1246         rm -f utils/exchange2mbox.o
1247         rm -f utils/exchange2mbox.gcno
1248         rm -f utils/exchange2mbox.gcda
1249         rm -f utils/openchange-tools.o
1250         rm -f utils/openchange-tools.gcno
1251         rm -f utils/openchange-tools.gcda
1252
1253 clean:: exchange2mbox-clean
1254
1255 bin/exchange2mbox:      utils/exchange2mbox.o                           \
1256                         utils/openchange-tools.o                        \
1257                         libmapi.$(SHLIBEXT).$(PACKAGE_VERSION)
1258         @echo "Linking $@"
1259         @$(CC) -o $@ $^ $(LIBS) $(LDFLAGS) -lpopt  $(MAGIC_LIBS)
1260
1261
1262 ###################
1263 # exchange2ical
1264 ###################
1265
1266 exchange2ical:          bin/exchange2ical
1267
1268 exchange2ical-install:  exchange2ical
1269         $(INSTALL) -d $(DESTDIR)$(bindir)
1270         $(INSTALL) -m 0755 bin/exchange2ical $(DESTDIR)$(bindir)
1271
1272 exchange2ical-uninstall:
1273         rm -f $(DESTDIR)$(bindir)/exchange2ical
1274
1275 exchange2ical-clean::
1276         rm -f bin/exchange2ical
1277         rm -f utils/exchange2ical_tool.o
1278         rm -f utils/exchange2ical_tool.gcno
1279         rm -f utils/exchange2ical_tool.gcda
1280         rm -f libexchange2ical/libexchange2ical.o
1281         rm -f libexchange2ical/libexchange2ical.gcno
1282         rm -f libexchange2ical/libexchange2ical.gcda
1283         rm -f libexchange2ical/exchange2ical.o
1284         rm -f libexchange2ical/exchange2ical.gcno
1285         rm -f libexchange2ical/exchange2ical.gcda
1286         rm -f libexchange2ical/exchange2ical_utils.o
1287         rm -f libexchange2ical/exchange2ical_utils.gcno
1288         rm -f libexchange2ical/exchange2ical_utils.gcda
1289         rm -f libexchange2ical/exchange2ical_component.o
1290         rm -f libexchange2ical/exchange2ical_component.gcno
1291         rm -f libexchange2ical/exchange2ical_component.gcda
1292         rm -f libexchange2ical/exchange2ical_property.o
1293         rm -f libexchange2ical/exchange2ical_property.gcno
1294         rm -f libexchange2ical/exchange2ical_property.gcda
1295         rm -f libexchange2ical/libical2exchange.o
1296         rm -f libexchange2ical/libical2exchange.gcno
1297         rm -f libexchange2ical/libical2exchange.gcda
1298         rm -f libexchange2ical/ical2exchange.o
1299         rm -f libexchange2ical/ical2exchange.gcno
1300         rm -f libexchange2ical/ical2exchange.gcda
1301         rm -f libexchange2ical/ical2exchange_property.o
1302         rm -f libexchange2ical/ical2exchange_property.gcno
1303         rm -f libexchange2ical/ical2exchange_property.gcda
1304         rm -f libexchange2ical/openchange-tools.o
1305         rm -f libexchange2ical/openchange-tools.gcno
1306         rm -f libexchange2ical/openchange-tools.gcda
1307
1308
1309 clean:: exchange2ical-clean
1310
1311 bin/exchange2ical:      utils/exchange2ical_tool.o      \
1312                         libexchange2ical/libexchange2ical.o             \
1313                         libexchange2ical/exchange2ical.o                \
1314                         libexchange2ical/exchange2ical_component.o      \
1315                         libexchange2ical/exchange2ical_property.o       \
1316                         libexchange2ical/exchange2ical_utils.o          \
1317                         libexchange2ical/libical2exchange.o     \
1318                         libexchange2ical/ical2exchange.o        \
1319                         libexchange2ical/ical2exchange_property.o       \
1320                         utils/openchange-tools.o                        \
1321                         libmapi.$(SHLIBEXT).$(PACKAGE_VERSION)
1322         @echo "Linking $@"
1323         @$(CC) $(LDFLAGS) -o $@ $^ $(LIBS) $(ICAL_LIBS) -lpopt
1324
1325
1326 ###################
1327 # mapitest
1328 ###################
1329
1330 mapitest:       libmapi                 \
1331                 utils/mapitest/proto.h  \
1332                 bin/mapitest
1333
1334 mapitest-install:       mapitest
1335         $(INSTALL) -d $(DESTDIR)$(bindir)
1336         $(INSTALL) -m 0755 bin/mapitest $(DESTDIR)$(bindir)
1337
1338 mapitest-uninstall:
1339         rm -f $(DESTDIR)$(bindir)/mapitest
1340
1341 mapitest-clean:
1342         rm -f bin/mapitest
1343         rm -f utils/mapitest/*.o
1344         rm -f utils/mapitest/*.gcno
1345         rm -f utils/mapitest/*.gcda
1346         rm -f utils/mapitest/modules/*.o
1347         rm -f utils/mapitest/modules/*.gcno
1348         rm -f utils/mapitest/modules/*.gcda
1349 ifneq ($(SNAPSHOT), no)
1350         rm -f utils/mapitest/proto.h
1351         rm -f utils/mapitest/mapitest_proto.h
1352 endif
1353
1354 clean:: mapitest-clean
1355
1356 bin/mapitest:   utils/mapitest/mapitest.o                       \
1357                 utils/openchange-tools.o                        \
1358                 utils/mapitest/mapitest_suite.o                 \
1359                 utils/mapitest/mapitest_print.o                 \
1360                 utils/mapitest/mapitest_stat.o                  \
1361                 utils/mapitest/mapitest_common.o                \
1362                 utils/mapitest/module.o                         \
1363                 utils/mapitest/modules/module_oxcstor.o         \
1364                 utils/mapitest/modules/module_oxcfold.o         \
1365                 utils/mapitest/modules/module_oxomsg.o          \
1366                 utils/mapitest/modules/module_oxcmsg.o          \
1367                 utils/mapitest/modules/module_oxcprpt.o         \
1368                 utils/mapitest/modules/module_oxctable.o        \
1369                 utils/mapitest/modules/module_oxorule.o         \
1370                 utils/mapitest/modules/module_oxcnotif.o        \
1371                 utils/mapitest/modules/module_oxcfxics.o        \
1372                 utils/mapitest/modules/module_nspi.o            \
1373                 utils/mapitest/modules/module_noserver.o        \
1374                 utils/mapitest/modules/module_errorchecks.o     \
1375                 utils/mapitest/modules/module_lcid.o            \
1376                 utils/mapitest/modules/module_mapidump.o        \
1377                 libmapi.$(SHLIBEXT).$(PACKAGE_VERSION)          
1378         @echo "Linking $@"
1379         @$(CC) -o $@ $^ $(LDFLAGS) $(LIBS) -lpopt
1380
1381 utils/mapitest/proto.h:                                 \
1382         utils/mapitest/mapitest_suite.c                 \
1383         utils/mapitest/mapitest_print.c                 \
1384         utils/mapitest/mapitest_stat.c                  \
1385         utils/mapitest/mapitest_common.c                \
1386         utils/mapitest/module.c                         \
1387         utils/mapitest/modules/module_oxcstor.c         \
1388         utils/mapitest/modules/module_oxcfold.c         \
1389         utils/mapitest/modules/module_oxomsg.c          \
1390         utils/mapitest/modules/module_oxcmsg.c          \
1391         utils/mapitest/modules/module_oxcprpt.c         \
1392         utils/mapitest/modules/module_oxctable.c        \
1393         utils/mapitest/modules/module_oxorule.c         \
1394         utils/mapitest/modules/module_oxcnotif.c        \
1395         utils/mapitest/modules/module_oxcfxics.c        \
1396         utils/mapitest/modules/module_nspi.c            \
1397         utils/mapitest/modules/module_noserver.c        \
1398         utils/mapitest/modules/module_errorchecks.c     \
1399         utils/mapitest/modules/module_lcid.c            \
1400         utils/mapitest/modules/module_mapidump.c
1401         @echo "Generating $@"
1402         @./script/mkproto.pl --private=utils/mapitest/mapitest_proto.h --public=utils/mapitest/proto.h $^
1403
1404 #####################
1405 # openchangemapidump
1406 #####################
1407
1408 openchangemapidump:             bin/openchangemapidump
1409
1410 openchangemapidump-install:     openchangemapidump
1411         $(INSTALL) -d $(DESTDIR)$(bindir)
1412         $(INSTALL) -m 0755 bin/openchangemapidump $(DESTDIR)$(bindir)
1413
1414 openchangemapidump-uninstall:
1415         rm -f bin/openchangemapidump
1416         rm -f $(DESTDIR)$(bindir)/openchangemapidump
1417
1418 openchangemapidump-clean::
1419         rm -f bin/openchangemapidump
1420         rm -f utils/backup/openchangemapidump.o
1421         rm -f utils/backup/openchangemapidump.gcno
1422         rm -f utils/backup/openchangemapidump.gcda
1423         rm -f utils/backup/openchangebackup.o
1424         rm -f utils/backup/openchangebackup.gcno
1425         rm -f utils/backup/openchangebackup.gcda
1426
1427 clean:: openchangemapidump-clean
1428
1429 bin/openchangemapidump: utils/backup/openchangemapidump.o               \
1430                         utils/backup/openchangebackup.o                 \
1431                         utils/openchange-tools.o                        \
1432                         libmapi.$(SHLIBEXT).$(PACKAGE_VERSION)
1433         @echo "Linking $@"
1434         @$(CC) -o $@ $^ $(LDFLAGS) $(LIBS) -lpopt
1435
1436
1437 ###############
1438 # schemaIDGUID
1439 ###############
1440
1441 schemaIDGUID:           bin/schemaIDGUID
1442
1443 schemaIDGUID-install:   schemaIDGUID
1444         $(INSTALL) -m 0755 bin/schemaIDGUID $(DESTDIR)$(bindir)
1445
1446 schemaIDGUID-uninstall:
1447         rm -f $(DESTDIR)$(bindir)/schemaIDGUID
1448
1449 schemaIDGUID-clean::
1450         rm -f bin/schemaIDGUID
1451         rm -f utils/schemaIDGUID.o
1452         rm -f utils/schemaIDGUID.gcno
1453         rm -f utils/schemaIDGUID.gcda
1454
1455 clean:: schemaIDGUID-clean
1456
1457 bin/schemaIDGUID: utils/schemaIDGUID.o
1458         @echo "Linking $@"
1459         @$(CC) $(CFLAGS) -o $@ $^ $(LIBS)
1460
1461
1462 ##################
1463 # locale_codepage
1464 ##################
1465
1466 locale_codepage:        bin/locale_codepage
1467
1468 locale_codepage-install:        locale_codepage
1469         $(INSTALL) -m 0755 bin/locale_codepage $(DESTDIR)$(bindir)
1470
1471 locale_codepage-uninstall:
1472         rm -f bin/locale_codepage
1473         rm -f $(DESTDIR)$(bindir)/locale_codepage
1474
1475 locale_codepage-clean::
1476         rm -f bin/locale_codepage
1477         rm -f libmapi/tests/locale_codepage.o
1478
1479 clean:: locale_codepage-clean
1480
1481 bin/locale_codepage: libmapi/tests/locale_codepage.o libmapi.$(SHLIBEXT).$(PACKAGE_VERSION)
1482         @echo "Linking $@"
1483         @$(CC) -o $@ $^ $(LDFLAGS) $(LIBS) -lpopt
1484
1485 ###################
1486 # python code
1487 ###################
1488
1489 pythonscriptdir = python
1490
1491 pymapi: $(pythonscriptdir)/mapi.$(SHLIBEXT)
1492
1493 pymapi/%: CFLAGS+=`$(PYTHON_CONFIG) --cflags` -fPIC
1494
1495 $(pythonscriptdir)/mapi.$(SHLIBEXT): $(patsubst %.c,%.o,$(wildcard pymapi/*.c)) libmapi.$(SHLIBEXT).$(PACKAGE_VERSION)
1496         $(CC) -o $@ $^ `$(PYTHON_CONFIG) --libs` $(DSOOPT)
1497
1498 pymapi-install::
1499         $(INSTALL) -d $(DESTDIR)$(PYCDIR)
1500         $(INSTALL) -m 0755 $(pythonscriptdir)/mapi.$(SHLIBEXT) $(DESTDIR)$(PYCDIR)
1501
1502 pymapi-uninstall::
1503         rm -f $(DESTDIR)$(PYCDIR)/mapi.$(SHLIBEXT)
1504
1505 PYTHON_MODULES = $(patsubst $(pythonscriptdir)/%,%,$(shell find  $(pythonscriptdir) -name "*.py"))
1506
1507 python-install::
1508         @echo "Installing Python modules"
1509         @$(foreach MODULE, $(PYTHON_MODULES), \
1510                 $(INSTALL) -d $(DESTDIR)$(pythondir)/$(dir $(MODULE)); \
1511                 $(INSTALL) -m 0644 $(pythonscriptdir)/$(MODULE) $(DESTDIR)$(pythondir)/$(dir $(MODULE)); \
1512         )
1513
1514 python-uninstall::
1515         rm -rf $(DESTDIR)$(pythondir)/openchange
1516
1517 EPYDOC_OPTIONS = --no-private --url http://www.openchange.org/ --no-sourcecode
1518
1519 epydoc::
1520         PYTHONPATH=$(pythonscriptdir):$(PYTHONPATH) epydoc $(EPYDOC_OPTIONS) openchange
1521
1522 check-python:
1523         PYTHONPATH=$(pythonscriptdir):$(PYTHONPATH) trial openchange
1524
1525 check:: check-python
1526
1527 ###################
1528 # nagios plugin
1529 ###################
1530
1531 nagiosdir = $(libdir)/nagios
1532
1533 installnagios:
1534         $(INSTALL) -d $(DESTDIR)$(nagiosdir)
1535         $(INSTALL) -m 0755 script/check_exchange $(DESTDIR)$(nagiosdir)
1536
1537 ###################
1538 # libmapi examples
1539 ###################
1540 examples:
1541         cd doc/examples && make && cd ${OLD_PWD}
1542
1543 examples-clean::
1544         rm -f doc/examples/mapi_sample1
1545         rm -f doc/examples/fetchappointment
1546         rm -f doc/examples/fetchmail
1547
1548 clean:: examples-clean
1549
1550 examples-install examples-uninstall:
1551
1552 manpages = \
1553                 doc/man/man1/exchange2mbox.1                            \
1554                 doc/man/man1/mapiprofile.1                              \
1555                 doc/man/man1/openchangeclient.1                         \
1556                 doc/man/man1/openchangepfadmin.1                        \
1557                 $(wildcard apidocs/man/man3/*)
1558
1559 installman: doxygen
1560         @./script/installman.sh $(DESTDIR)$(mandir) $(manpages)
1561
1562
1563 uninstallman:
1564         @./script/uninstallman.sh $(DESTDIR)$(mandir) $(manpages)
1565
1566 doxygen:        
1567         @if test ! -d apidocs ; then                                            \
1568                 echo "Doxify API documentation: HTML and man pages";            \
1569                 mkdir -p apidocs/html;                                          \
1570                 mkdir -p apidocs/man;                                           \
1571                 $(DOXYGEN) Doxyfile;                                            \
1572                 $(DOXYGEN) libmapi/Doxyfile;                                    \
1573                 $(DOXYGEN) libmapiadmin/Doxyfile;                               \
1574                 $(DOXYGEN) libocpf/Doxyfile;                                    \
1575                 $(DOXYGEN) libmapi++/Doxyfile;                                  \
1576                 $(DOXYGEN) mapiproxy/Doxyfile;                                  \
1577                 $(DOXYGEN) utils/mapitest/Doxyfile;                             \
1578                 cp -f doc/doxygen/index.html apidocs/html;                      \
1579                 cp -f doc/doxygen/pictures/* apidocs/html/overview;             \
1580                 cp -f doc/doxygen/pictures/* apidocs/html/libmapi;              \
1581                 cp -f doc/doxygen/pictures/* apidocs/html/libmapiadmin;         \
1582                 cp -f doc/doxygen/pictures/* apidocs/html/libmapi++;            \
1583                 cp -f doc/doxygen/pictures/* apidocs/html/libocpf;              \
1584                 cp -f doc/doxygen/pictures/* apidocs/html/mapitest;             \
1585                 cp -f doc/doxygen/pictures/* apidocs/html/mapiproxy;            \
1586                 cp -f mapiproxy/documentation/pictures/* apidocs/html/mapiproxy;\
1587                 rm -f apidocs/man/man3/todo.3;                                  \
1588                 rm -f apidocs/man/man3/bug.3;                                   \
1589                 rm -f apidocs/man/man3/*.c.3;                                   \
1590         fi                                                              
1591
1592 etags:
1593         etags `find $(srcdir) -name "*.[ch]"`
1594
1595 ctags:
1596         ctags `find $(srcdir) -name "*.[ch]"`
1597
1598 swigperl-all:
1599         @echo "Creating Perl bindings ..."
1600         @$(MAKE) -C swig/perl all
1601
1602 swigperl-install:
1603         @echo "Install Perl bindings ..."
1604         @$(MAKE) -C swig/perl install
1605
1606 swigperl-uninstall:
1607         @echo "Uninstall Perl bindings ..."
1608         @$(MAKE) -C swig/perl uninstall
1609
1610 distclean::
1611         @$(MAKE) -C swig/perl distclean
1612
1613 clean::
1614         @echo "Cleaning Perl bindings ..."
1615         @$(MAKE) -C swig/perl clean
1616
1617 .PRECIOUS: exchange.h gen_ndr/ndr_exchange.h gen_ndr/ndr_exchange.c gen_ndr/ndr_exchange_c.c gen_ndr/ndr_exchange_c.h
1618
1619 test:: check
1620
1621 check:: torture/openchange.$(SHLIBEXT) libmapi.$(SHLIBEXT).$(LIBMAPI_SO_VERSION)
1622         # FIXME: Set up server
1623         LD_LIBRARY_PATH=`pwd` $(SMBTORTURE) --load-module torture/openchange.$(SHLIBEXT) ncalrpc: OPENCHANGE
1624         ./bin/mapitest --mapi-calls 
1625
1626 ####################################
1627 # coverage tests
1628 #
1629 # this could be better integrated...
1630 ####################################
1631 coverage-init:
1632         lcov --base-directory . --directory . --capture --initial --output-file oc_cov.info
1633
1634 coverage::
1635         rm -f libmapi/\<stdout\>.gcov
1636         rm -f ./libocpf/lex.yy.gcda
1637         rm -f libocpf/\<stdout\>.gcov
1638         rm -f ./\<stdout\>.gcov
1639         lcov --base-directory .  --directory . --output-file oc_cov.info --capture
1640         genhtml -o covresults oc_cov.info
1641
1642 coverage-clean::
1643         rm -rf oc_cov.info
1644         rm -rf covresults
1645         rm -f test.gcno
1646
1647 clean:: coverage-clean
1648
1649 # This should be the last line in the makefile since other distclean rules may 
1650 # need config.mk
1651 distclean::
1652         rm -f config.mk
1653
1654 ####################################
1655 # Qt4 widgets
1656 ####################################
1657 openchange_qt4: qt-lib qt-demoapp
1658
1659 qt-lib: libqtmapi
1660
1661 qt-demoapp: qt/demo/demoapp.moc qt/demo/demoapp 
1662
1663 # No install yet - we need to finish this first
1664
1665 qt-clean::
1666         rm -f qt/demo/demoapp
1667         rm -f qt/demo/*.o
1668         rm -f qt/lib/*.o
1669         rm -f qt/demo/*.moc
1670         rm -f qt/lib/*.moc
1671         rm -f libqtmapi*
1672
1673 clean:: qt-clean
1674
1675 qt/demo/demoapp.moc:    qt/demo/demoapp.h
1676         $(MOC) -i qt/demo/demoapp.h -o qt/demo/demoapp.moc
1677
1678 qt/lib/foldermodel.moc: qt/lib/foldermodel.h
1679         $(MOC) -i qt/lib/foldermodel.h -o qt/lib/foldermodel.moc
1680
1681 qt/lib/messagesmodel.moc:       qt/lib/messagesmodel.h
1682         $(MOC) -i qt/lib/messagesmodel.h -o qt/lib/messagesmodel.moc
1683
1684 .cpp.o:
1685         $(CXX) $(CXXFLAGS) $(QT4_CXXFLAGS) -fPIC -c $< -o $@
1686
1687 libqtmapi: libmapi                                      \
1688         qt/lib/foldermodel.moc                          \
1689         qt/lib/messagesmodel.moc                        \
1690         libqtmapi.$(SHLIBEXT).$(PACKAGE_VERSION)
1691
1692 LIBQTMAPI_SO_VERSION = 0
1693
1694 libqtmapi.$(SHLIBEXT).$(PACKAGE_VERSION):       \
1695         qt/lib/foldermodel.o                    \
1696         qt/lib/messagesmodel.o
1697         @echo "Linking $@"
1698         @$(CXX) $(DSOOPT) $(CXXFLAGS) $(LDFLAGS) -Wl,-soname,libqtmapi.$(SHLIBEXT).$(LIBQTMAPI_SO_VERSION) -o $@ $^ $(LIBS)
1699
1700
1701 qt/demo/demoapp: qt/demo/demoapp.o                              \
1702         qt/demo/main.o                                  \
1703         libmapi.$(SHLIBEXT).$(PACKAGE_VERSION)          \
1704         libmapipp.$(SHLIBEXT).$(PACKAGE_VERSION)        \
1705         libqtmapi.$(SHLIBEXT).$(PACKAGE_VERSION)
1706         @echo "Linking $@"
1707         @$(CXX) $(CXXFLAGS) -o $@ $^ $(QT4_LIBS) $(LDFLAGS) $(LIBS)
1708         # we don't yet install this...
1709         ln -sf libqtmapi.$(SHLIBEXT).$(PACKAGE_VERSION) libqtmapi.$(SHLIBEXT)
1710         ln -sf libqtmapi.$(SHLIBEXT).$(PACKAGE_VERSION) libqtmapi.$(SHLIBEXT).$(LIBQTMAPI_SO_VERSION)
1711