]> git.sur5r.net Git - openldap/blob - Makefile
Added support for SLEEPYCAT DB2.
[openldap] / Makefile
1 #
2 # You will usually NOT need to edit this file at all:  instead, edit the
3 # Make-common file.  See the LDAP INSTALL file for more information.
4 #
5 #-----------------------------------------------------------------------------
6 # Copyright (c) 1994 Regents of the University of Michigan.
7 # All rights reserved.
8 #
9 # Redistribution and use in source and binary forms are permitted
10 # provided that this notice is preserved and that due credit is given
11 # to the University of Michigan at Ann Arbor. The name of the University
12 # may not be used to endorse or promote products derived from this
13 # software without specific prior written permission. This software
14 # is provided ``as is'' without express or implied warranty.
15 #
16 #       LDAP lightweight X.500 Directory access top level makefile
17 #
18 #-----------------------------------------------------------------------------
19 #
20 ############################################################################
21 #                                                                          #
22 # Usually you will not need to edit anything in this file                  #
23 #                                                                          #
24 ############################################################################
25 #
26 # Note that these definitions of standard Unix utilities are only used
27 # in this Makefile.  The Make-common (and .make-platform) files have a
28 # similar set of definitions that are used in all the other LDAP Makefiles.
29 #
30 RM=rm -f
31 MV=mv -f
32 CP=cp
33 CAT=cat
34 PWD=pwd
35 TAIL=tail
36 CHMOD=chmod
37 FIND=find
38 SED=sed
39 LN=ln -s
40 MKDIR=mkdir
41 GREP=grep
42 DIRNAME=dirname
43 BASENAME=basename
44 TAR=tar
45 COMPRESS=compress
46 CO=co
47 CI=ci
48
49
50 SRCDIRS= include libraries clients servers doc
51 TESTDIR= tests
52
53 #
54 # LDAPSRC is used by the links rule
55 #
56 LDAPSRC= ..
57
58
59 #
60 # rules to make the software
61 #
62
63 all: makeconfig
64         @echo "making all"
65         @for i in $(SRCDIRS); do \
66             echo; echo "  cd $$i; $(MAKE) $(MFLAGS) all"; \
67             ( cd $$i; $(MAKE) $(MFLAGS) all ); \
68         done
69
70 lib-only: makeconfig
71         @echo "making libraries only"
72         @echo "  cd include; $(MAKE) $(MFLAGS) all"; \
73                 cd include; $(MAKE) $(MFLAGS) all
74         @echo "  cd libraries; $(MAKE) $(MFLAGS) all"; \
75                 cd libraries; $(MAKE) $(MFLAGS) all
76
77
78 #
79 # rules to install the software
80 #
81
82 install:        makeconfig
83         @for i in $(SRCDIRS); do \
84             echo; echo "cd $$i; $(MAKE) $(MFLAGS) install"; \
85             ( cd $$i; $(MAKE) $(MFLAGS) install ); \
86         done
87
88 inst-lib:       makeconfig
89         @echo "cd libraries; $(MAKE) $(MFLAGS) install"
90         @( cd libraries; $(MAKE) $(MFLAGS) install )
91
92
93 #
94 # rules to test the LDAP software
95 #
96 test:   all
97         @echo " cd $(TESTDIR); $(MAKE) $(MFLAGS) all"; \
98         ( cd $(TESTDIR); $(MAKE) $(MFLAGS) all );
99
100 #
101 # rules to make clean
102 #
103
104 clean:  FORCE
105         @if [ -f .makefiles ]; then \
106             for i in $(SRCDIRS) $(TESTDIR); do \
107                 echo; echo "cd $$i; $(MAKE) $(MFLAGS) clean"; \
108                 ( cd $$i; $(MAKE) $(MFLAGS) clean ); \
109             done; \
110         fi; \
111         ( for d in ./obj-*; do \
112             if [ $$d != "./obj-*" ]; then \
113                 ( echo "making clean in $$d..."; \
114                   cd $$d; $(MAKE) $(MFLAGS) clean; ) \
115             else \
116                 exit 0; \
117             fi; \
118         done )
119
120 veryclean:      FORCE
121         @echo; echo "cd build; $(MAKE) $(MFLAGS) -f Make-template veryclean"; \
122         ( cd build; $(MAKE) $(MFLAGS) -f Make-template veryclean ); \
123         if [ -f .makefiles ]; then \
124             for i in $(SRCDIRS) $(TESTDIR); do \
125                 echo; echo "cd $$i; $(MAKE) $(MFLAGS) veryclean"; \
126                 ( cd $$i; $(MAKE) $(MFLAGS) veryclean ); \
127             done; \
128             echo "finding and removing Makefiles..."; \
129             for i in `$(FIND) . -type d -print`; do \
130                 if [ -f $$i/Make-template ]; then \
131                     echo "removing file $$i/Makefile"; \
132                     $(RM) $$i/Makefile; \
133                 fi; \
134             done; \
135             echo "removing file .makefiles"; \
136             $(RM) .makefiles; \
137         fi; \
138         ( for d in ./obj-*; do \
139             if [ $$d != "./obj-*" ]; then \
140                 echo "removing $$d..."; $(RM) -r $$d; \
141             else \
142                 exit 0; \
143             fi; \
144         done ); \
145         if [ -f .make-platform ]; then \
146             echo "removing link .make-platform"; \
147             $(RM) .make-platform; \
148         else \
149             exit 0; \
150         fi
151
152
153 #
154 # rules to make depend
155 #
156 #
157 depend: makeconfig
158         @echo "making depend everywhere"; \
159         echo "  cd include; $(MAKE) $(MFLAGS) all"; \
160                 ( cd include; $(MAKE) $(MFLAGS) all ); \
161         for i in $(SRCDIRS); do \
162             echo; echo "cd $$i; $(MAKE) $(MFLAGS) depend"; \
163             ( cd $$i; $(MAKE) $(MFLAGS) depend ); \
164         done; \
165         $(MAKE) $(MFLAGS) makefiles
166
167 #
168 # rules to check out and in Make-template files
169 #
170 co-mktmpls:     FORCE
171         @echo "checking out Make-template files..."; \
172         for mkfile in `$(FIND) . -name Make-template -type f -print`; do \
173             $(CO) -l $$mkfile; \
174         done
175
176 ci-mktmpls:     FORCE
177         @echo "enter a one-word log message:"; \
178         read logmsg; \
179         echo "checking in Make-template files..."; \
180         for mkfile in `$(FIND) . -name Make-template -type f -print`; do \
181             $(CI) -m$$logmsg -u $$mkfile; \
182         done
183
184
185 lib-depend:     makeconfig
186         @echo "cd libraries; $(MAKE) $(MFLAGS) depend"
187         @( cd libraries; $(MAKE) $(MFLAGS) depend )"
188
189 #
190 # rules to cut a new ldap distribution
191 #
192 distribution:   makeconfig checkin tar
193
194 checkin:        FORCE
195         @-VERSION=V`cat ./build/version | $(SED) -e 's/\.//'` ; \
196         echo "Checking in version $$VERSION"; \
197         for i in `$(FIND) . -name \*,v -print | \
198                 $(SED) -e 's%RCS/%%' -e 's%,v%%'`; \
199             do ( \
200                 ci -m"pre-version $$VERSION check-in" -u $$i; \
201                 rcs -N$$VERSION: $$i ) \
202             done
203
204 tar:    veryclean
205 #       $(RM) ./Make-common;  \
206 #       $(CP) ./Make-common.dist ./Make-common; \
207 #       $(CHMOD) 644 ./Make-common; \
208 #       $(RM) ./include/ldapconfig.h.edit; \
209 #       $(CP) ./include/ldapconfig.h.dist ./include/ldapconfig.h.edit; \
210 #       $(CHMOD) 644 ./include/ldapconfig.h.edit; 
211         @PWD=`pwd`; \
212         BASE=`$(BASENAME) $$PWD`; XFILE=/tmp/ldap-x.$$$$; \
213         ( cd .. ; $(CAT) $$BASE/exclude >$$XFILE; \
214           $(FIND) $$BASE -name RCS -print >> $$XFILE ; \
215           $(FIND) $$BASE -name CVS -print >> $$XFILE ; \
216           $(FIND) $$BASE -name obj-\* -print >> $$XFILE ; \
217           $(FIND) $$BASE -name tags -print >> $$XFILE ; \
218           $(TAR) cvfX ./$$BASE.tar $$XFILE $$BASE; \
219         ); \
220         $(RM) $$XFILE; \
221         echo "compressing ../$$BASE.tar..."; \
222         $(COMPRESS) ../$$BASE.tar 
223
224 #
225 # rule to force check for change of platform
226 #
227 platform:       FORCE
228         @if [ -f .make-platform ]; then \
229             echo "removing old link .make-platform"; \
230             $(RM) .make-platform; \
231         fi; \
232         $(MAKE) $(MFLAGS) .make-platform
233
234
235 makeconfig:     .makefiles buildtools
236
237 .make-platform:
238         @if [ -f /usr/bin/swconfig ]; then \
239             UNAME=./build/uname.sh; \
240         elif [ -f /bin/uname ]; then \
241             UNAME=/bin/uname; \
242         elif [ -f /usr/bin/uname ]; then \
243             UNAME=/usr/bin/uname; \
244         else \
245             UNAME=./build/uname.sh; \
246         fi; \
247         if [ -z "$$UNAME" ]; then \
248             echo "unknown platform (no $$UNAME or /usr/bin/uname)"; \
249             echo "see the file  build/PORTS  for more information."; \
250             exit 1; \
251         else \
252             OS=`$$UNAME -s` ; OSRELEASE=`$$UNAME -r` ; \
253             OSVERSION=`$$UNAME -v` ; \
254             case $$OS in \
255             SunOS) \
256                 if [ $$OSRELEASE -gt "5" -o $$OSRELEASE -lt "4" ]; then \
257                     echo "SunOS release $$OSRELEASE unknown..."; exit 1; \
258                 fi; \
259                 if [ $$OSRELEASE -ge "5" ]; then \
260                         MINORVER=`echo $$OSRELEASE|sed 's/^.*\.//'` ; \
261                         if [ $$MINORVER -ge "6" ]; then \
262                                 PLATFORM="sunos56" ; \
263                         else \
264                         PLATFORM="sunos5"; \
265                         fi; \
266                 else \
267                     PLATFORM="sunos4"; \
268                 fi; \
269                 ;; \
270             ULTRIX) \
271                 PLATFORM="ultrix" \
272                 ;; \
273             OSF1) \
274                 PLATFORM="osf1" \
275                 ;; \
276             AIX) \
277                 PLATFORM="aix" \
278                 ;; \
279             HP-UX) \
280                 PLATFORM="hpux" \
281                 ;; \
282             Linux) \
283                 PLATFORM="linux" \
284                 ;; \
285             NetBSD) \
286                 PLATFORM="netbsd" \
287                 ;; \
288             FreeBSD) \
289                 PLATFORM="freebsd" \
290                 ;; \
291             NeXTSTEP) \
292                 PLATFORM="nextstep" \
293                 ;; \
294             SCO) \
295                 PLATFORM="sco" \
296                 ;; \
297             IRIX|IRIX64) \
298                 PLATFORM="irix" \
299                 ;; \
300             *) echo "unknown platform ($$OS $$OSVERSION $$OSRELEASE)..."; \
301                echo "see the file  build/PORTS  for more information."; \
302                 exit 1; \
303                 ;; \
304             esac; \
305         fi; \
306         CC=$(CC); \
307         OLDIFS="$$IFS"; \
308         IFS=":"; \
309         for dir in $$PATH; do \
310             if [ -f $$dir/gcc ]; then \
311                 CC=gcc; \
312                 break; \
313             fi; \
314         done; \
315         IFS="$$OLDIFS"; \
316         $(LN) ./build/platforms/$$PLATFORM-$$CC/Make-platform .make-platform; \
317         echo ""; \
318         echo "** Set platform to $$PLATFORM with compiler $$CC..."; \
319         echo ""
320
321 Make-common: Make-common.dist
322         @if [ -f Make-common ]; then \
323                 echo "Make-common.dist newer than Make-common, check for new options" ;\
324                 echo "or touch Make-common to ignore."; \
325                 exit 1; \
326         fi; \
327         cp Make-common.dist Make-common; \
328         echo "Make-common installed from distribution." ; \
329         echo "  Edit as needed before making!"  ; \
330         exit 1
331 #
332 # rule to build Makefiles by concatenating Make-template file in each
333 # subdirectory with global Make-common, .make-platform, and
334 # build/Make-append files
335 #
336 .makefiles:     Make-common .make-platform build/Make-append
337         @echo "making Makefiles..."; \
338         HDRFILE=/tmp/Makehdr.$$$$; \
339         DEFSFILE=/tmp/Makedefs.$$$$; \
340         $(CAT) build/Make-append ./.make-platform ./Make-common > $$DEFSFILE; \
341         echo "# --------------------------------------------------------" >  $$HDRFILE; \
342         echo "#  This file was automatically generated.  Do not edit it."  >> $$HDRFILE; \
343         echo "#  Instead, edit the Make-common file (located in the root"  >> $$HDRFILE; \
344         echo "#  (of the LDAP distribution).  See the LDAP INSTALL file"   >> $$HDRFILE; \
345         echo "#  for more information." >> $$HDRFILE; \
346         echo "# --------------------------------------------------------" >> $$HDRFILE; \
347         echo "#" >> $$HDRFILE; \
348         for i in `$(FIND) . -type d -print`; do \
349             if [ -f $$i/Make-template ]; then \
350                 echo "  creating $$i/Makefile"; \
351                 $(RM) $$i/Makefile; \
352                 $(CAT) $$HDRFILE $$i/Make-template $$DEFSFILE > $$i/Makefile; \
353                 $(CHMOD) 444 $$i/Makefile; \
354             fi; \
355         done; \
356         $(RM) .makefiles; \
357         touch .makefiles; \
358         $(RM) $$HDRFILE $$DEFSFILE
359
360 #
361 # rule to always build makefiles
362 #
363 makefiles:      FORCE
364         $(RM) .makefiles
365         $(MAKE) $(MFLAGS) .makefiles
366
367 #
368 # rule to create any tools we need to build everything else
369 #
370 buildtools:     FORCE
371         @echo "making buildtools"
372         @echo "  cd build; $(MAKE) $(MFLAGS)"
373         @( cd build; $(MAKE) $(MFLAGS) )
374
375 #
376 # rule to make a shadow (linked) build area
377 #
378 links:  FORCE
379         @if [ -f /usr/bin/swconfig ]; then \
380             UNAME=./build/uname.sh; \
381         elif [ -f /bin/uname ]; then \
382             UNAME=/bin/uname; \
383         elif [ -f /usr/bin/uname ]; then \
384             UNAME=/usr/bin/uname; \
385         else \
386             UNAME=./build/uname.sh; \
387         fi; \
388         if [ ! -z "$(DEST)" ]; then \
389             DEST="$(DEST)"; \
390         else \
391             DEST=./obj-`$$UNAME -s`-`$$UNAME -r` ; \
392         fi; \
393         echo "making links in $$DEST..."; \
394         LINKLIST=/tmp/ldaplinklist.$$$$; \
395         $(RM) $$LINKLIST; \
396         $(MKDIR) $$DEST; \
397         cd $$DEST; $(LN) $(LDAPSRC) .src; \
398         $(LN) .src/Makefile . ; \
399         $(CP) .src/Make-common . ; $(CHMOD) 644 ./Make-common; \
400         for d in build $(SRCDIRS) $(TESTDIR); do \
401                 ( $(MKDIR) $$d; cd $$d; $(LN) ../.src/$$d .src; \
402                   $(LN) .src/Make-template . ; \
403                   $(MAKE) $(MFLAGS) MKDIR="$(MKDIR)" LN="$(LN)" \
404                         -f Make-template links ) ; \
405         done; \
406         echo ""; echo "Now type:"; echo "  cd $$DEST"; echo "and make there"
407
408 FORCE: