1 #/* Copyright (C) 1990, 1989 Transarc Corporation - All rights reserved */
7 INSTALL=${SRCDIR}bin/install
8 WASHTOOL=${SRCDIR}bin/washtool
10 #WASHTOOLRCSUPDATE=${WASHTOOL} rcsupdate
12 WASHTOOLFLAGS=-argument install
14 COMPILE_PART1=${WASHTOOL} ${WASHTOOLCMD}
15 COMPILE_PART2=${WASHTOOLFLAGS}
17 MKDIR_IF_NEEDED=[ -d $$1 ] || mkdir -p $$1
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".
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: "
34 -if test -f "${WASHTOOL}"; \
36 ${WASHTOOL} project . . -noretarget; \
37 ${WASHTOOL} destdir; \
42 ${WASHTOOL} project . . -noretarget
45 project: basics cmd comerr minproject # try and initialize project
48 ${COMPILE_PART1} config ${COMPILE_PART2}
50 pinstall: basics config
51 ${COMPILE_PART1} pinstall ${COMPILE_PART2}
53 procmgmt: basics config pinstall
54 ${COMPILE_PART1} procmgmt ${COMPILE_PART2}
56 util: basics pinstall procmgmt
57 ${COMPILE_PART1} util ${COMPILE_PART2}
59 audit: basics pinstall rx rxkad fsint
60 ${COMPILE_PART1} audit ${COMPILE_PART2}
63 ${COMPILE_PART1} comerr ${COMPILE_PART2}
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 ;; \
73 ${COMPILE_PART1} lwp ${COMPILE_PART2}
75 rxgen: minproject pinstall
76 ${COMPILE_PART1} rxgen ${COMPILE_PART2}
82 ${COMPILE_PART1} rx ${COMPILE_PART2}
85 ${COMPILE_PART1} rx ${COMPILE_PART2}
88 ${COMPILE_PART1} rxstat ${COMPILE_PART2}
91 ${COMPILE_PART1} rx ${COMPILE_PART2}
94 ${COMPILE_PART1} rx ${COMPILE_PART2}
98 kfsint: rxgen rxincls lwp
99 ${COMPILE_PART1} fsint ${COMPILE_PART2}
101 export2: project fsint
103 export: minproject fsint
104 @case ${SYS_NAME} in \
106 ${COMPILE_PART1} export ${COMPILE_PART2} ;; \
107 * ) echo skipping export for ${SYS_NAME} ;; \
110 afs: minproject export
111 ${COMPILE_PART1} afs ${COMPILE_PART2}
113 des: minproject config
114 if [ -f "obj/des/Makefile" ] ; then \
115 ${COMPILE_PART1} des ${COMPILE_PART2} ; \
117 ${COMPILE_PART1} des_stub ${COMPILE_PART2} ; \
120 sys: project des rx rxstat fsint
121 ${COMPILE_PART1} sys ${COMPILE_PART2}
124 ${WASHTOOL} object rxkad
125 ${WASHTOOL} object rxkad/domestic
126 ${COMPILE_PART1} rxkad ${COMPILE_PART2}
129 ${COMPILE_PART1} auth ${COMPILE_PART2}
131 auth: project comerr des lwp rx sys rxkad audit
132 ${COMPILE_PART1} auth ${COMPILE_PART2}
135 ${COMPILE_PART1} ubik ${COMPILE_PART2}
138 cd obj/ubik; $(MAKE) test SYS_NAME=${SYS_NAME}
140 ptserver: project ubik cmd comerr auth audit
141 ${COMPILE_PART1} ptserver ${COMPILE_PART2}
143 kauth: project ubik cmd auth comerr ptserver audit libacl
144 ${COMPILE_PART1} kauth ${COMPILE_PART2}
146 dauth: project ubik cmd auth comerr
147 ${COMPILE_PART1} dauth ${COMPILE_PART2}
149 libacl: project ptserver
150 ${COMPILE_PART1} libacl ${COMPILE_PART2}
153 ${COMPILE_PART1} dir ${COMPILE_PART2}
156 ${COMPILE_PART1} dir ${COMPILE_PART2}
158 # Removed from sgi_* case below:
159 # ${COMPILE_PART1} sgiefs ${COMPILE_PART2};;
161 case ${SYS_NAME} in \
163 echo "SGI efs not supported" ;; \
165 echo No efs stuff for ${SYS_NAME};; \
168 vol: project dir afs sgiefs
169 ${COMPILE_PART1} vol ${COMPILE_PART2}
171 vlserver: project vol audit
172 ${COMPILE_PART1} vlserver ${COMPILE_PART2}
174 viced: project vlserver audit
175 ${COMPILE_PART1} viced ${COMPILE_PART2}
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} ;; \
182 echo Not building MT viced for ${SYS_NAME} ;; \
185 volser: project tviced usd kauth audit
186 ${COMPILE_PART1} volser ${COMPILE_PART2}
188 venus: project volser ptserver
189 ${COMPILE_PART1} venus ${COMPILE_PART2}
190 ${COMPILE_PART1} venus/test ${COMPILE_PART2}
192 afsd: project sys kauth
193 ${COMPILE_PART1} afsd ${COMPILE_PART2}
196 ${COMPILE_PART1} null ${COMPILE_PART2}
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};; \
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};; \
210 fsprobe: project util fsint
211 ${COMPILE_PART1} fsprobe ${COMPILE_PART2}
213 scout: project gtx fsprobe
214 ${COMPILE_PART1} scout ${COMPILE_PART2}
217 ${COMPILE_PART1} mpp ${COMPILE_PART2}
220 ${COMPILE_PART1} package ${COMPILE_PART2}
222 package.files: package
223 ${DESTDIR}/bin/makepkgfiles afs.dev
225 uss: des kauth project rx vlserver vol
226 ${COMPILE_PART1} uss ${COMPILE_PART2}
229 case ${SYS_NAME} in \
230 *linux* ) echo skipping ntp for ${SYS_NAME} ;; \
231 * ) ${COMPILE_PART1} ntp ${COMPILE_PART2} ;; \
234 #convert: project ntp
235 # ${COMPILE_PART1} convert ${COMPILE_PART2}
237 bozo: project ntp audit
238 ${COMPILE_PART1} bozo ${COMPILE_PART2}
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
248 case ${SYS_NAME} in \
250 echo skip vfsck for ${SYS_NAME} ;; \
252 echo skip vfsck for ${SYS_NAME} ;; \
254 echo skip vfsck for ${SYS_NAME} ;; \
256 echo skip vfsck for ${SYS_NAME} ;; \
258 echo skip vfsck for ${SYS_NAME} ;; \
260 ${COMPILE_PART1} vfsck ${COMPILE_PART2} ;; \
263 login: project kauth rxkad
265 case ${SYS_NAME} in \
267 ${COMPILE_PART1} sgistuff ${COMPILE_PART2} ;; \
269 ${WASHTOOL} object login ; \
270 ${COMPILE_PART1} tsm41 ${COMPILE_PART2} ;; \
272 ${COMPILE_PART1} sia ${COMPILE_PART2} ;; \
274 ${COMPILE_PART1} login ${COMPILE_PART2} ;; \
275 sun4x_* | hp_ux11* | *linux* ) \
276 ${COMPILE_PART1} pam ${COMPILE_PART2} ;; \
278 ${COMPILE_PART1} login ${COMPILE_PART2} ;; \
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} ;; \
288 inetd: project kauth rxkad
289 ${COMPILE_PART1} inetd ${COMPILE_PART2}
292 ${COMPILE_PART1} rsh ${COMPILE_PART2}
294 rlogind: project rsh ftpd43+ login
295 case ${SYS_NAME} in \
297 ${COMPILE_PART1} rlogind ${COMPILE_PART2} ;; \
298 * ) echo skipping rlogind for ${SYS_NAME} ;; \
301 sgistuff: project rlogind
302 case ${SYS_NAME} in \
303 sgi_* ) ${COMPILE_PART1} sgistuff ${COMPILE_PART2} ;; \
304 * ) echo skipping sgistuff for ${SYS_NAME} ;; \
307 rcp: project rsh inetd
308 case ${SYS_NAME} in \
309 sgi_* ) echo skip rcp for ${SYS_NAME} ;; \
310 *) ${COMPILE_PART1} rcp ${COMPILE_PART2} ;; \
313 allrcmds: project rcp rlogind
344 libafs: minproject libafs_setup ${KERNELDIR}
345 ${COMPILE_PART1} libafs ${COMPILE_PART2}
347 libuafs: minproject libuafs_setup ${UKERNELDIR}
348 ${COMPILE_PART1} libuafs ${COMPILE_PART2}
350 afsweb: minproject kauth dauth
351 ${COMPILE_PART1} afsweb ${COMPILE_PART2}
354 ${COMPILE_PART1} update ${COMPILE_PART2}
357 ${COMPILE_PART1} log ${COMPILE_PART2}
360 ${COMPILE_PART1} bu_utils ${COMPILE_PART2}
363 ${COMPILE_PART1} usd ${COMPILE_PART2}
365 bubasics: project comerr
366 ${COMPILE_PART1} bubasics ${COMPILE_PART2}
368 butm: project bubasics usd
369 ${COMPILE_PART1} butm ${COMPILE_PART2}
371 butc: project bubasics butm budb bucoord cmd
372 ${COMPILE_PART1} butc ${COMPILE_PART2}
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} ;; \
379 echo Not building MT butc for ${SYS_NAME} ;; \
382 budb: project bubasics
383 ${COMPILE_PART1} budb ${COMPILE_PART2}
385 bucoord: project bubasics budb volser
386 ${COMPILE_PART1} bucoord ${COMPILE_PART2}
389 ${COMPILE_PART1} xstat ${COMPILE_PART2}
391 afsmonitor: project gtx xstat
392 ${COMPILE_PART1} afsmonitor ${COMPILE_PART2}
395 case ${SYS_NAME} in \
397 echo skip ircs for ${SYS_NAME} ;; \
399 ${COMPILE_PART1} ircs ${COMPILE_PART2} ;; \
403 case ${SYS_NAME} in \
405 echo skip wash for ${SYS_NAME} ;; \
407 ${COMPILE_PART1} wash ${COMPILE_PART2} ;; \
410 tests: rxtests ubiktests
412 # pthread based user space RX library
413 libafsrpc: rx rxkad des
414 ${COMPILE_PART1} libafsrpc ${COMPILE_PART2}
416 libafsauthent: ubik auth kauth libafsrpc
417 ${COMPILE_PART1} libafsauthent ${COMPILE_PART2}
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}
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}
437 # Use washtool to ensure MakefileProto is current and obj/libafs exists.
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 \
449 MKAFS_OSTYPE=HPUX;; \
451 MKAFS_OSTYPE=LINUX;; \
455 MKAFS_OSTYPE=IRIX;; \
457 MKAFS_OSTYPE=SOLARIS;; \
459 echo WARNING: No MakefileProto for sys ${SYS_NAME} ; \
461 obj/config/config src/libafs/MakefileProto.$$MKAFS_OSTYPE obj/libafs/Makefile ${SYS_NAME}
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 \
470 MKAFS_OSTYPE=HPUX;; \
472 MKAFS_OSTYPE=LINUX;; \
476 MKAFS_OSTYPE=SOLARIS;; \
480 MKAFS_OSTYPE=IRIX;; \
482 echo WARNING: No MakefileProto for sys ${SYS_NAME} ; \
484 obj/config/config src/libuafs/MakefileProto.$$MKAFS_OSTYPE obj/libuafs/Makefile ${SYS_NAME}
486 # "COMPILE_PART1=${COMPILE_PART1}" "COMPILE_PART2=${COMPILE_PART2}" SYS_NAME=${SYS_NAME} ;;
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}"
496 # sgi: "NON_SHARED=-non_shared"
498 # ${WASHTOOL} rcsupdate ${KERNELDIR} libafs
500 kupdate: updatekdir libafs_setup libuafs_setup
503 $(MAKE) libafs "WASHTOOL=${WASHTOOL}" "WASHTOOLFLAGS=-argument kinstall" SYS_NAME=${SYS_NAME} "CPUARCH=${CPUARCH}" "MPSP=${MPSP}" "DBG_DEFS=${DBG_DEFS}"
506 $(MAKE) libuafs "WASHTOOL=${WASHTOOL}" "WASHTOOLFLAGS=-argument ukinstall" SYS_NAME=${SYS_NAME} "CPUARCH=${CPUARCH}" "MPSP=${MPSP}" "DBG_DEFS=${DBG_DEFS}"
509 $(MAKE) libuafs "WASHTOOL=${WASHTOOL}" "WASHTOOLFLAGS=-argument webinstall" SYS_NAME=${SYS_NAME} "CPUARCH=${CPUARCH}" "MPSP=${MPSP}" "DBG_DEFS=${DBG_DEFS}"
512 ${WASHTOOL} every "cd obj/%s; $(MAKE) clean" -rootd obj
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'
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"
525 for file in `find [!NW]* -type d -print` ; do \
526 /bin/mkdir ../obj/$${file} ; \
528 echo "Create the obj file links"
530 for file in `find [!NW]* -type f -print` ; do \
531 /bin/ln -s `pwd`/$${file} ../obj/$${file} ; \