Initial IBM OpenAFS 1.0 tree
[openafs.git] / src / Makefile
1 #/* Copyright (C) 1990, 1989 Transarc Corporation - All rights reserved */
2
3
4 SHELL=/bin/sh
5 DESTDIR=dest/
6 SRCDIR=${DESTDIR}
7 INSTALL=${SRCDIR}bin/install
8 WASHTOOL=${SRCDIR}bin/washtool
9
10 #WASHTOOLRCSUPDATE=${WASHTOOL} rcsupdate
11 WASHTOOLCMD=make
12 WASHTOOLFLAGS=-argument install
13
14 COMPILE_PART1=${WASHTOOL} ${WASHTOOLCMD}
15 COMPILE_PART2=${WASHTOOLFLAGS}
16
17 MKDIR_IF_NEEDED=[ -d $$1 ] || mkdir -p $$1
18
19 # To compile AFS from scratch in the src tree run "make SYS_NAME=<type>".
20 #   This recursively calls "make install ..." and does not depend on the
21 #   existence of any non-standard programs.
22 # To compile a package and all its predecessors using washtool run
23 #   "make <package>".  This requires that @sys works, and that washtool,
24 #   rcsupdate and our version of ci and co exist.
25 # To compile for the kernel type "make blibafs".  This assumes washtool,
26 #   install, rxgen, compile_et and others already exist and runs it with
27 #   "-argument kinstall".
28
29 all:
30         set ${SYS_NAME}/dest; $(MKDIR_IF_NEEDED)
31         $(MAKE) install "COMPILE_PART1=cd obj; cd" "COMPILE_PART2=; $(MAKE) install SYS_NAME=${SYS_NAME} DESTDIR=`pwd`/${SYS_NAME}/dest/ SRCDIR=`pwd`/${SYS_NAME}/dest/" SYS_NAME=${SYS_NAME} "WASHTOOL=echo No washtool: "
32
33 basics:
34         -if test -f "${WASHTOOL}"; \
35          then \
36                 ${WASHTOOL} project . . -noretarget; \
37                 ${WASHTOOL} destdir; \
38         fi
39 #       test -d ${DESTDIR}
40
41 minproject: basics
42         ${WASHTOOL} project . . -noretarget
43         ${WASHTOOL} destdir
44
45 project: basics cmd comerr minproject   # try and initialize project
46
47 config: basics
48         ${COMPILE_PART1} config ${COMPILE_PART2}
49
50 pinstall: basics config
51         ${COMPILE_PART1} pinstall ${COMPILE_PART2}
52
53 procmgmt: basics config pinstall
54         ${COMPILE_PART1} procmgmt ${COMPILE_PART2}
55
56 util: basics pinstall procmgmt
57         ${COMPILE_PART1} util ${COMPILE_PART2}
58
59 audit: basics pinstall rx rxkad fsint
60         ${COMPILE_PART1} audit ${COMPILE_PART2}
61
62 comerr: basics util
63         ${COMPILE_PART1} comerr ${COMPILE_PART2}
64
65 cmd: basics comerr
66         ${COMPILE_PART1} cmd ${COMPILE_PART2}
67         @case ${SYS_NAME} in \
68         sgi_6* | sun4x_57 | hp_ux11* ) \
69                 ${COMPILE_PART1} cmd ${COMPILE_PART2} install64 ;; \
70         esac
71
72 lwp: project util
73         ${COMPILE_PART1} lwp ${COMPILE_PART2}
74
75 rxgen: minproject pinstall
76         ${COMPILE_PART1} rxgen ${COMPILE_PART2}
77
78 rxobj:
79         ${WASHTOOL} object rx
80
81 kernrx: 
82         ${COMPILE_PART1} rx ${COMPILE_PART2}
83
84 rx: project lwp rxgen
85         ${COMPILE_PART1} rx ${COMPILE_PART2}
86
87 rxstat: rx
88         ${COMPILE_PART1} rxstat ${COMPILE_PART2}
89
90 rxincls: rxobj
91         ${COMPILE_PART1} rx ${COMPILE_PART2}
92
93 rxtests: rxobj
94         ${COMPILE_PART1} rx ${COMPILE_PART2}
95
96 fsint: project kfsint
97
98 kfsint: rxgen rxincls lwp
99         ${COMPILE_PART1} fsint ${COMPILE_PART2}
100
101 export2: project fsint
102
103 export: minproject fsint
104         @case ${SYS_NAME} in \
105         rs_aix*)        \
106             ${COMPILE_PART1} export ${COMPILE_PART2} ;; \
107           * ) echo skipping export for ${SYS_NAME} ;; \
108         esac
109
110 afs: minproject export
111         ${COMPILE_PART1} afs ${COMPILE_PART2}
112
113 des: minproject config
114         if [ -f "obj/des/Makefile" ] ; then \
115            ${COMPILE_PART1} des ${COMPILE_PART2} ; \
116         else \
117            ${COMPILE_PART1} des_stub ${COMPILE_PART2} ; \
118         fi
119
120 sys: project des rx rxstat fsint
121         ${COMPILE_PART1} sys ${COMPILE_PART2}
122
123 rxkad: project des
124         ${WASHTOOL} object rxkad
125         ${WASHTOOL} object rxkad/domestic
126         ${COMPILE_PART1} rxkad ${COMPILE_PART2}
127
128 kernauth: 
129         ${COMPILE_PART1} auth ${COMPILE_PART2}
130
131 auth: project comerr des lwp rx sys rxkad audit
132         ${COMPILE_PART1} auth ${COMPILE_PART2}
133
134 ubik: project auth 
135         ${COMPILE_PART1} ubik ${COMPILE_PART2}
136
137 ubiktests: ubik sys
138         cd obj/ubik; $(MAKE) test SYS_NAME=${SYS_NAME} 
139
140 ptserver: project ubik cmd comerr auth audit
141         ${COMPILE_PART1} ptserver ${COMPILE_PART2}
142
143 kauth: project ubik cmd auth comerr ptserver audit libacl
144         ${COMPILE_PART1} kauth ${COMPILE_PART2}
145
146 dauth: project ubik cmd auth comerr
147         ${COMPILE_PART1} dauth ${COMPILE_PART2}
148
149 libacl: project ptserver
150         ${COMPILE_PART1} libacl ${COMPILE_PART2}
151
152 kerndir: minproject 
153         ${COMPILE_PART1} dir ${COMPILE_PART2}
154
155 dir: project libacl
156         ${COMPILE_PART1} dir ${COMPILE_PART2}
157
158 # Removed from sgi_* case below:
159 # ${COMPILE_PART1} sgiefs ${COMPILE_PART2};;
160 sgiefs:
161         case ${SYS_NAME} in \
162         sgi_*) \
163                 echo "SGI efs not supported" ;; \
164         *) \
165                 echo No efs stuff for ${SYS_NAME};; \
166         esac
167
168 vol: project dir afs sgiefs
169         ${COMPILE_PART1} vol ${COMPILE_PART2}
170
171 vlserver: project vol audit
172         ${COMPILE_PART1} vlserver ${COMPILE_PART2}
173
174 viced: project vlserver audit
175         ${COMPILE_PART1} viced  ${COMPILE_PART2}
176
177 tviced: project viced vlserver libafsrpc libafsauthent
178         case ${SYS_NAME} in \
179         alpha_dux*|sgi_*|sun4x_*|rs_aix*|*linux*|hp_ux*) \
180                 ${COMPILE_PART1} tviced  ${COMPILE_PART2} ;; \
181         *) \
182                 echo Not building MT viced for ${SYS_NAME} ;; \
183         esac
184
185 volser: project tviced usd kauth audit
186         ${COMPILE_PART1} volser ${COMPILE_PART2}
187
188 venus: project volser ptserver
189         ${COMPILE_PART1} venus ${COMPILE_PART2}
190         ${COMPILE_PART1} venus/test ${COMPILE_PART2}
191
192 afsd: project sys kauth
193         ${COMPILE_PART1} afsd ${COMPILE_PART2}
194
195 null: project
196         ${COMPILE_PART1} null ${COMPILE_PART2}
197
198 gtx: project null auth # kauth rxkad ?
199         case ${SYS_NAME} in \
200           rs_aix* | sun4x_5? | sgi_6? | *linux*) \
201                 rm -f ${DESTDIR}lib/afs/libtermlib.a; \
202                 ln -s libnull.a ${DESTDIR}lib/afs/libtermlib.a; \
203                 ${COMPILE_PART1} gtx ${COMPILE_PART2};; \
204           *) \
205                 rm -f ${DESTDIR}lib/afs/libtermlib.a; \
206                 ln -s /usr/lib/libtermlib.a ${DESTDIR}lib/afs/libtermlib.a; \
207                 ${COMPILE_PART1} gtx ${COMPILE_PART2};; \
208         esac
209
210 fsprobe: project util fsint
211         ${COMPILE_PART1} fsprobe ${COMPILE_PART2}
212
213 scout: project gtx fsprobe
214         ${COMPILE_PART1} scout ${COMPILE_PART2}
215
216 mpp: project
217         ${COMPILE_PART1} mpp ${COMPILE_PART2}
218
219 package: project mpp
220         ${COMPILE_PART1} package ${COMPILE_PART2}
221
222 package.files: package
223         ${DESTDIR}/bin/makepkgfiles afs.dev
224
225 uss: des kauth project rx vlserver vol
226         ${COMPILE_PART1} uss ${COMPILE_PART2}
227
228 ntp: project volser
229         case ${SYS_NAME} in \
230           *linux* ) echo skipping ntp for ${SYS_NAME} ;; \
231           * ) ${COMPILE_PART1} ntp ${COMPILE_PART2} ;; \
232         esac
233
234 #convert: project ntp
235 #       ${COMPILE_PART1} convert ${COMPILE_PART2}
236
237 bozo: project ntp audit
238         ${COMPILE_PART1} bozo ${COMPILE_PART2}
239
240
241 # Removed from respective case statements below:
242 # ${COMPILE_PART1} vfsckaix42 ${COMPILE_PART2} ;;
243 # ${COMPILE_PART1} vfscksol25 ${COMPILE_PART2} ;;
244 # ${COMPILE_PART1} vfscksol26 ${COMPILE_PART2} ;;
245 # ${COMPILE_PART1} vfscksol27 ${COMPILE_PART2} ;;
246 vfsck:  minproject vol
247         set -x; \
248         case ${SYS_NAME} in \
249         sgi_* | *linux*) \
250                 echo skip vfsck for ${SYS_NAME} ;; \
251         rs_aix42)       \
252                 echo skip vfsck for ${SYS_NAME} ;; \
253         sun4x_55 )  \
254                 echo skip vfsck for ${SYS_NAME} ;; \
255         sun4x_56 )  \
256                 echo skip vfsck for ${SYS_NAME} ;; \
257         sun4x_57 )  \
258                 echo skip vfsck for ${SYS_NAME} ;; \
259          * ) \
260                 ${COMPILE_PART1} vfsck ${COMPILE_PART2} ;; \
261         esac
262
263 login: project kauth rxkad
264         set -x; \
265         case ${SYS_NAME} in \
266         sgi_* ) \
267                 ${COMPILE_PART1} sgistuff ${COMPILE_PART2} ;; \
268         rs_aix42 ) \
269                 ${WASHTOOL} object login ; \
270                 ${COMPILE_PART1} tsm41 ${COMPILE_PART2} ;; \
271         alpha_dux* ) \
272                 ${COMPILE_PART1} sia ${COMPILE_PART2} ;; \
273         sun4x_55 ) \
274                  ${COMPILE_PART1} login ${COMPILE_PART2} ;; \
275         sun4x_* | hp_ux11* | *linux* ) \
276                 ${COMPILE_PART1} pam ${COMPILE_PART2} ;; \
277         * ) \
278                 ${COMPILE_PART1} login ${COMPILE_PART2} ;; \
279         esac
280
281 ftpd43+: project kauth rxkad
282         case ${SYS_NAME} in \
283         rs_aix* | sun4x_55 | *linux*) \
284                 ${COMPILE_PART1} ftpd43+ ${COMPILE_PART2} ;; \
285         * )     echo skip ftpd43+ for ${SYS_NAME} ;; \
286         esac
287
288 inetd: project kauth rxkad
289         ${COMPILE_PART1} inetd ${COMPILE_PART2} 
290
291 rsh: project inetd
292         ${COMPILE_PART1} rsh ${COMPILE_PART2} 
293
294 rlogind: project rsh ftpd43+ login
295         case ${SYS_NAME} in \
296         rs_aix*) \
297                 ${COMPILE_PART1} rlogind ${COMPILE_PART2} ;; \
298         * )     echo skipping rlogind for ${SYS_NAME} ;; \
299         esac
300
301 sgistuff: project rlogind
302         case ${SYS_NAME} in \
303         sgi_* ) ${COMPILE_PART1} sgistuff ${COMPILE_PART2} ;; \
304         * )     echo skipping sgistuff for ${SYS_NAME} ;; \
305         esac
306
307 rcp: project rsh inetd
308         case ${SYS_NAME} in \
309         sgi_* ) echo skip rcp for ${SYS_NAME} ;; \
310         *)      ${COMPILE_PART1} rcp ${COMPILE_PART2} ;; \
311         esac
312
313 allrcmds: project rcp rlogind
314
315 KERNELDIR= \
316   afs \
317   dir \
318   rx \
319   fsint \
320   auth \
321   rxkad \
322   util \
323   libacl \
324   vlserver \
325   sgiefs  \
326   rxstat
327
328
329 UKERNELDIR= \
330   afs \
331   dir \
332   rx \
333   fsint \
334   util \
335   auth \
336   rxkad \
337   vlserver \
338   kauth \
339   des \
340   afsweb \
341   rxstat
342
343
344 libafs: minproject libafs_setup ${KERNELDIR}
345         ${COMPILE_PART1} libafs ${COMPILE_PART2}
346
347 libuafs: minproject libuafs_setup ${UKERNELDIR}
348         ${COMPILE_PART1} libuafs ${COMPILE_PART2}
349
350 afsweb: minproject kauth dauth 
351         ${COMPILE_PART1} afsweb ${COMPILE_PART2}
352
353 update: project auth
354         ${COMPILE_PART1} update ${COMPILE_PART2}
355
356 log: project auth 
357         ${COMPILE_PART1} log ${COMPILE_PART2}
358
359 bu_utils: project
360         ${COMPILE_PART1} bu_utils ${COMPILE_PART2}
361
362 usd: project
363         ${COMPILE_PART1} usd ${COMPILE_PART2}
364
365 bubasics: project comerr
366         ${COMPILE_PART1} bubasics ${COMPILE_PART2}
367
368 butm: project bubasics usd
369         ${COMPILE_PART1} butm ${COMPILE_PART2}
370
371 butc: project bubasics butm budb bucoord cmd
372         ${COMPILE_PART1} butc ${COMPILE_PART2}
373
374 tbutc: project bubasics butm budb bucoord cmd butc
375         case ${SYS_NAME} in \
376         alpha_dux*|sgi_*|sun4x_*|rs_aix4*|*linux*|hp_ux*) \
377                 ${COMPILE_PART1} tbutc ${COMPILE_PART2} ;; \
378         *) \
379                 echo Not building MT butc for ${SYS_NAME} ;; \
380         esac
381
382 budb: project bubasics
383         ${COMPILE_PART1} budb ${COMPILE_PART2}
384
385 bucoord: project bubasics budb volser
386         ${COMPILE_PART1} bucoord ${COMPILE_PART2}
387
388 xstat: project
389         ${COMPILE_PART1} xstat ${COMPILE_PART2}
390
391 afsmonitor: project gtx xstat
392         ${COMPILE_PART1} afsmonitor ${COMPILE_PART2}
393
394 ircs: project
395         case ${SYS_NAME} in \
396         sgi_* ) \
397                 echo skip ircs for ${SYS_NAME} ;; \
398         *) \
399                 ${COMPILE_PART1} ircs ${COMPILE_PART2} ;; \
400         esac
401
402 wash: project
403         case ${SYS_NAME} in \
404         sgi_* ) \
405                 echo skip wash for ${SYS_NAME} ;; \
406         *) \
407                 ${COMPILE_PART1} wash ${COMPILE_PART2} ;; \
408         esac
409
410 tests: rxtests ubiktests
411
412 # pthread based user space RX library
413 libafsrpc: rx rxkad des
414         ${COMPILE_PART1} libafsrpc  ${COMPILE_PART2}
415
416 libafsauthent: ubik auth kauth libafsrpc
417         ${COMPILE_PART1} libafsauthent  ${COMPILE_PART2}
418
419 libadmin: libafsauthent bozo
420         ${COMPILE_PART1} libadmin ${COMPILE_PART2}
421         ${COMPILE_PART1} libadmin/adminutil ${COMPILE_PART2}
422         ${COMPILE_PART1} libadmin/vos ${COMPILE_PART2}
423         ${COMPILE_PART1} libadmin/client ${COMPILE_PART2}
424         ${COMPILE_PART1} libadmin/kas ${COMPILE_PART2}
425         ${COMPILE_PART1} libadmin/pts ${COMPILE_PART2}
426         ${COMPILE_PART1} libadmin/bos ${COMPILE_PART2}
427         ${COMPILE_PART1} libadmin/cfg ${COMPILE_PART2}
428         ${COMPILE_PART1} libadmin/test ${COMPILE_PART2}
429         ${COMPILE_PART1} libadmin/samples ${COMPILE_PART2}
430
431 finale: project cmd comerr afsd allrcmds butc tbutc libafs libuafs audit kauth log package \
432         ptserver scout bu_utils ubik uss bozo vfsck volser \
433         venus update xstat afsmonitor dauth tests libafsrpc \
434         libafsauthent libadmin
435         ${COMPILE_PART1} finale ${COMPILE_PART2}
436
437 # Use washtool to ensure MakefileProto is current and obj/libafs exists.
438
439 libafs_setup: config minproject export
440 # How about if no RCSUPDATE exists?
441 #   Well then you're going to lose.  Or, if you insist, set
442 #   WASHTOOLRCSUPDATE to be a no-op
443 # Warning: The next few lines are _extremely_ sensitive to spaces and tabs.
444         ${WASHTOOL} object libafs
445         case ${SYS_NAME} in \
446         alpha_dux4* ) \
447                 MKAFS_OSTYPE=DUX;; \
448         hp_ux* ) \
449                 MKAFS_OSTYPE=HPUX;; \
450         *linux*) \
451                 MKAFS_OSTYPE=LINUX;; \
452         rs_aix* ) \
453                 MKAFS_OSTYPE=AIX;; \
454         sgi_* ) \
455                 MKAFS_OSTYPE=IRIX;; \
456         sun4x_5* ) \
457                 MKAFS_OSTYPE=SOLARIS;; \
458         * ) \
459                 echo WARNING: No MakefileProto for sys ${SYS_NAME} ; \
460         esac; \
461         obj/config/config src/libafs/MakefileProto.$$MKAFS_OSTYPE obj/libafs/Makefile ${SYS_NAME}
462
463 libuafs_setup: config minproject export
464 # How about if no RCSUPDATE exists?
465 #   Well then you're going to lose.  Or, if you insist, set
466 #   WASHTOOLRCSUPDATE to be a no-op
467         ${WASHTOOL} object libuafs
468         case ${SYS_NAME} in \
469         hp_ux* ) \
470                 MKAFS_OSTYPE=HPUX;; \
471         *linux*) \
472                 MKAFS_OSTYPE=LINUX;; \
473         rs_aix* ) \
474                 MKAFS_OSTYPE=AIX;; \
475         sun4x_5* ) \
476                 MKAFS_OSTYPE=SOLARIS;; \
477         alpha_dux4* ) \
478                 MKAFS_OSTYPE=DUX;; \
479         sgi_6* ) \
480                 MKAFS_OSTYPE=IRIX;; \
481         * ) \
482                 echo WARNING: No MakefileProto for sys ${SYS_NAME} ; \
483         esac; \
484         obj/config/config src/libuafs/MakefileProto.$$MKAFS_OSTYPE obj/libuafs/Makefile ${SYS_NAME}
485
486 # "COMPILE_PART1=${COMPILE_PART1}" "COMPILE_PART2=${COMPILE_PART2}" SYS_NAME=${SYS_NAME} ;; 
487
488 install:
489         $(MAKE) finale "SYS_NAME=${SYS_NAME}" "WASHTOOL=${WASHTOOL}" \
490                 "COMPILE_PART1=${COMPILE_PART1}" \
491                 "COMPILE_PART2=${COMPILE_PART2}" \
492                  DESTDIR=`pwd`/${SYS_NAME}/dest/ \
493                  SRCDIR=`pwd`/${SYS_NAME}/dest/ \
494                  "DBG_DEFS=${DBG_DEFS}"
495
496 # sgi: "NON_SHARED=-non_shared"
497 #updatekdir:
498 #       ${WASHTOOL} rcsupdate ${KERNELDIR} libafs
499
500 kupdate: updatekdir libafs_setup libuafs_setup
501
502 blibafs:
503         $(MAKE) libafs "WASHTOOL=${WASHTOOL}" "WASHTOOLFLAGS=-argument kinstall" SYS_NAME=${SYS_NAME} "CPUARCH=${CPUARCH}" "MPSP=${MPSP}" "DBG_DEFS=${DBG_DEFS}"
504
505 blibuafs:
506         $(MAKE) libuafs "WASHTOOL=${WASHTOOL}" "WASHTOOLFLAGS=-argument ukinstall" SYS_NAME=${SYS_NAME} "CPUARCH=${CPUARCH}" "MPSP=${MPSP}" "DBG_DEFS=${DBG_DEFS}"
507
508 bwebafs: sys
509         $(MAKE) libuafs "WASHTOOL=${WASHTOOL}" "WASHTOOLFLAGS=-argument webinstall" SYS_NAME=${SYS_NAME} "CPUARCH=${CPUARCH}" "MPSP=${MPSP}" "DBG_DEFS=${DBG_DEFS}"
510
511 clean:
512         ${WASHTOOL} every "cd obj/%s; $(MAKE) clean" -rootd obj
513
514 checklist:
515         ${WASHTOOL} every -command \
516           'cd rcs/%s; echo ; echo In %s:; if test x = "x`/bin/ls RCS/*,v`"; then exit 0; else rlog -I RCS/*,v; fi'
517
518 links:
519         echo "Remove the obj directory"
520         - /bin/rm -rf @sys/obj/* ;
521         - /bin/rm -rf @sys/dest/* ;
522         - /bin/mkdir @sys/obj ;
523         echo "Create the obj directories"
524         cd src; \
525         for file in `find [!NW]* -type d -print` ; do \
526                 /bin/mkdir ../obj/$${file} ; \
527         done;
528         echo "Create the obj file links"
529         cd src; \
530         for file in `find [!NW]* -type f -print` ; do \
531                 /bin/ln -s `pwd`/$${file} ../obj/$${file} ; \
532         done;