1 # Copyright 2000, International Business Machines Corporation and others.
4 # This software has been released under the terms of the IBM Public
5 # License. For details, see the LICENSE file in the top-level source
6 # directory or online at http://www.openafs.org/dl/license10.html
11 INSTALL=${SRCDIR}bin/install
12 WASHTOOL=${SRCDIR}bin/washtool
14 #WASHTOOLRCSUPDATE=${WASHTOOL} rcsupdate
16 WASHTOOLFLAGS=-argument install
18 COMPILE_PART1=${WASHTOOL} ${WASHTOOLCMD}
19 COMPILE_PART2=${WASHTOOLFLAGS}
21 MKDIR_IF_NEEDED=[ -d $$1 ] || mkdir -p $$1
23 # To compile AFS from scratch in the src tree run "make SYS_NAME=<type>".
24 # This recursively calls "make install ..." and does not depend on the
25 # existence of any non-standard programs.
26 # To compile a package and all its predecessors using washtool run
27 # "make <package>". This requires that @sys works, and that washtool,
28 # rcsupdate and our version of ci and co exist.
29 # To compile for the kernel type "make blibafs". This assumes washtool,
30 # install, rxgen, compile_et and others already exist and runs it with
31 # "-argument kinstall".
34 set ${SYS_NAME}/dest; $(MKDIR_IF_NEEDED)
35 $(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/" "COMPILE_PART3=; $(MAKE) test SYS_NAME=${SYS_NAME} DESTDIR=`pwd`/${SYS_NAME}/dest/ SRCDIR=`pwd`/${SYS_NAME}/dest/" SYS_NAME=${SYS_NAME} "WASHTOOL=echo No washtool: "
38 -if test -f "${WASHTOOL}"; \
40 ${WASHTOOL} project . . -noretarget; \
41 ${WASHTOOL} destdir; \
46 ${WASHTOOL} project . . -noretarget
49 project: basics cmd comerr minproject # try and initialize project
52 ${COMPILE_PART1} config ${COMPILE_PART2}
54 pinstall: basics config
55 ${COMPILE_PART1} pinstall ${COMPILE_PART2}
57 procmgmt: basics config pinstall
58 ${COMPILE_PART1} procmgmt ${COMPILE_PART2}
60 util: basics pinstall procmgmt
61 ${COMPILE_PART1} util ${COMPILE_PART2}
63 audit: basics pinstall rx rxkad fsint
64 ${COMPILE_PART1} audit ${COMPILE_PART2}
67 ${COMPILE_PART1} comerr ${COMPILE_PART2}
70 ${COMPILE_PART1} cmd ${COMPILE_PART2}
71 @case ${SYS_NAME} in \
72 sgi_6* | sun4x_57 | sun4x_58 | hp_ux11* | sparc64_linux* | alpha_linux* ) \
73 ${COMPILE_PART1} cmd ${COMPILE_PART2} install64 ;; \
77 ${COMPILE_PART1} lwp ${COMPILE_PART2}
79 rxgen: minproject pinstall
80 ${COMPILE_PART1} rxgen ${COMPILE_PART2}
86 ${COMPILE_PART1} rx ${COMPILE_PART2}
89 ${COMPILE_PART1} rx ${COMPILE_PART2}
92 ${COMPILE_PART1} rxstat ${COMPILE_PART2}
95 ${COMPILE_PART1} rx ${COMPILE_PART2}
98 ${COMPILE_PART1} rx ${COMPILE_PART3}
100 fsint: project kfsint
102 kfsint: rxgen rxincls lwp
103 ${COMPILE_PART1} fsint ${COMPILE_PART2}
105 export2: project fsint
107 export: minproject fsint
108 @case ${SYS_NAME} in \
110 ${COMPILE_PART1} export ${COMPILE_PART2} ;; \
111 * ) echo skipping export for ${SYS_NAME} ;; \
114 afs: minproject export
115 ${COMPILE_PART1} afs ${COMPILE_PART2}
117 des: minproject config
118 if [ -f "obj/des/Makefile" ] ; then \
119 ${COMPILE_PART1} des ${COMPILE_PART2} ; \
121 ${COMPILE_PART1} des_stub ${COMPILE_PART2} ; \
124 sys: project des rx rxstat fsint
125 ${COMPILE_PART1} sys ${COMPILE_PART2}
128 ${WASHTOOL} object rxkad
129 ${WASHTOOL} object rxkad/domestic
130 ${COMPILE_PART1} rxkad ${COMPILE_PART2}
133 ${COMPILE_PART1} auth ${COMPILE_PART2}
135 auth: project comerr des lwp rx sys rxkad audit
136 ${COMPILE_PART1} auth ${COMPILE_PART2}
139 ${COMPILE_PART1} ubik ${COMPILE_PART2}
141 # cd obj/ubik; $(MAKE) test SYS_NAME=${SYS_NAME}
143 ${COMPILE_PART1} ubik ${COMPILE_PART3}
145 ptserver: project ubik cmd comerr auth audit
146 ${COMPILE_PART1} ptserver ${COMPILE_PART2}
148 kauth: project ubik cmd auth comerr ptserver audit libacl
149 ${COMPILE_PART1} kauth ${COMPILE_PART2}
151 dauth: project ubik cmd auth comerr
152 ${COMPILE_PART1} dauth ${COMPILE_PART2}
154 libacl: project ptserver
155 ${COMPILE_PART1} libacl ${COMPILE_PART2}
158 ${COMPILE_PART1} dir ${COMPILE_PART2}
161 ${COMPILE_PART1} dir ${COMPILE_PART2}
163 # Removed from sgi_* case below:
164 # ${COMPILE_PART1} sgiefs ${COMPILE_PART2};;
166 case ${SYS_NAME} in \
168 echo "SGI efs not supported" ;; \
170 echo No efs stuff for ${SYS_NAME};; \
173 vol: project dir afs sgiefs
174 ${COMPILE_PART1} vol ${COMPILE_PART2}
176 vlserver: project vol audit
177 ${COMPILE_PART1} vlserver ${COMPILE_PART2}
179 viced: project vlserver audit
180 ${COMPILE_PART1} viced ${COMPILE_PART2}
182 tviced: project viced vlserver libafsrpc libafsauthent
183 case ${SYS_NAME} in \
184 alpha_dux*|sgi_*|sun4x_*|rs_aix*|*linux*|hp_ux110) \
185 ${COMPILE_PART1} tviced ${COMPILE_PART2} ;; \
187 echo Not building MT viced for ${SYS_NAME} ;; \
190 volser: project tviced usd kauth audit
191 ${COMPILE_PART1} volser ${COMPILE_PART2}
193 venus: project volser ptserver
194 ${COMPILE_PART1} venus ${COMPILE_PART2}
195 ${COMPILE_PART1} venus/test ${COMPILE_PART2}
197 afsd: project sys kauth
198 ${COMPILE_PART1} afsd ${COMPILE_PART2}
201 ${COMPILE_PART1} null ${COMPILE_PART2}
203 gtx: project null auth # kauth rxkad ?
204 case ${SYS_NAME} in \
205 rs_aix* | sun4x_5? | sgi_6? | *linux* | ppc_darwin* | *fbsd*) \
206 rm -f ${DESTDIR}lib/afs/libtermlib.a; \
207 ln -s libnull.a ${DESTDIR}lib/afs/libtermlib.a; \
208 ${COMPILE_PART1} gtx ${COMPILE_PART2};; \
210 rm -f ${DESTDIR}lib/afs/libtermlib.a; \
211 ln -s /usr/lib/libtermlib.a ${DESTDIR}lib/afs/libtermlib.a; \
212 ${COMPILE_PART1} gtx ${COMPILE_PART2};; \
215 fsprobe: project util fsint
216 ${COMPILE_PART1} fsprobe ${COMPILE_PART2}
218 scout: project gtx fsprobe
219 ${COMPILE_PART1} scout ${COMPILE_PART2}
222 ${COMPILE_PART1} mpp ${COMPILE_PART2}
225 ${COMPILE_PART1} package ${COMPILE_PART2}
227 package.files: package
228 ${DESTDIR}/bin/makepkgfiles afs.dev
230 uss: des kauth project rx vlserver vol
231 ${COMPILE_PART1} uss ${COMPILE_PART2}
234 case ${SYS_NAME} in \
235 sun4x_58 ) echo skipping ntp for ${SYS_NAME} ;; \
236 *linux* ) echo skipping ntp for ${SYS_NAME} ;; \
237 ppc_darwin* | *fbsd* ) echo skipping ntp for ${SYS_NAME} ;; \
238 * ) ${COMPILE_PART1} ntp ${COMPILE_PART2} ;; \
241 #convert: project ntp
242 # ${COMPILE_PART1} convert ${COMPILE_PART2}
244 bozo: project ntp audit
245 ${COMPILE_PART1} bozo ${COMPILE_PART2}
248 # Removed from respective case statements below:
249 # ${COMPILE_PART1} vfsckaix42 ${COMPILE_PART2} ;;
250 # ${COMPILE_PART1} vfscksol25 ${COMPILE_PART2} ;;
251 # ${COMPILE_PART1} vfscksol26 ${COMPILE_PART2} ;;
252 # ${COMPILE_PART1} vfscksol27 ${COMPILE_PART2} ;;
253 vfsck: minproject vol
255 case ${SYS_NAME} in \
256 sgi_* | *linux* | rs_aix42 | ppc_darwin* | hp_ux* | *fbsd* ) \
257 echo skip vfsck for ${SYS_NAME} ;; \
259 ${COMPILE_PART1} vfsck ${COMPILE_PART2} ;; \
262 login: project kauth rxkad
264 case ${SYS_NAME} in \
266 ${COMPILE_PART1} sgistuff ${COMPILE_PART2} ;; \
268 ${WASHTOOL} object login ; \
269 ${COMPILE_PART1} tsm41 ${COMPILE_PART2} ;; \
271 ${COMPILE_PART1} sia ${COMPILE_PART2} ;; \
273 ${COMPILE_PART1} login ${COMPILE_PART2} ;; \
274 sun4x_* | hp_ux11* | *linux* | *fbsd* ) \
275 ${COMPILE_PART1} pam ${COMPILE_PART2} ;; \
277 echo Skipping login for ${SYS_NAME} ;; \
279 ${COMPILE_PART1} login ${COMPILE_PART2} ;; \
282 ftpd43+: project kauth rxkad
283 case ${SYS_NAME} in \
284 rs_aix* | sun4x_55 | *linux*) \
285 ${COMPILE_PART1} ftpd43+ ${COMPILE_PART2} ;; \
286 * ) echo skip ftpd43+ for ${SYS_NAME} ;; \
289 inetd: project kauth rxkad
290 ${COMPILE_PART1} inetd ${COMPILE_PART2}
293 ${COMPILE_PART1} rsh ${COMPILE_PART2}
295 rlogind: project rsh ftpd43+ login
296 case ${SYS_NAME} in \
298 ${COMPILE_PART1} rlogind ${COMPILE_PART2} ;; \
299 * ) echo skipping rlogind for ${SYS_NAME} ;; \
302 sgistuff: project rlogind
303 case ${SYS_NAME} in \
304 sgi_* ) ${COMPILE_PART1} sgistuff ${COMPILE_PART2} ;; \
305 * ) echo skipping sgistuff for ${SYS_NAME} ;; \
308 rcp: project rsh inetd
309 case ${SYS_NAME} in \
310 sgi_* ) echo skip rcp for ${SYS_NAME} ;; \
311 *) ${COMPILE_PART1} rcp ${COMPILE_PART2} ;; \
314 allrcmds: project rcp rlogind
345 libafs: minproject libafs_setup ${KERNELDIR}
346 ${COMPILE_PART1} libafs ${COMPILE_PART2}
348 libuafs: minproject libuafs_setup ${UKERNELDIR}
350 case ${SYS_NAME} in \
352 echo Skipping libuafs for ${SYS_NAME} ;; \
354 ${COMPILE_PART1} libuafs ${COMPILE_PART2} ;; \
357 afsweb: minproject kauth dauth
358 ${COMPILE_PART1} afsweb ${COMPILE_PART2}
361 ${COMPILE_PART1} update ${COMPILE_PART2}
364 ${COMPILE_PART1} log ${COMPILE_PART2}
367 ${COMPILE_PART1} bu_utils ${COMPILE_PART2}
370 ${COMPILE_PART1} usd ${COMPILE_PART2}
372 bubasics: project comerr
373 ${COMPILE_PART1} bubasics ${COMPILE_PART2}
375 butm: project bubasics usd
376 ${COMPILE_PART1} butm ${COMPILE_PART2}
378 butc: project bubasics butm budb bucoord cmd
379 ${COMPILE_PART1} butc ${COMPILE_PART2}
381 tbutc: project bubasics butm budb bucoord cmd butc
382 case ${SYS_NAME} in \
383 alpha_dux*|sgi_*|sun4x_*|rs_aix4*|*linux*|hp_ux110) \
384 ${COMPILE_PART1} tbutc ${COMPILE_PART2} ;; \
386 echo Not building MT butc for ${SYS_NAME} ;; \
389 budb: project bubasics
390 ${COMPILE_PART1} budb ${COMPILE_PART2}
392 bucoord: project bubasics budb volser
393 ${COMPILE_PART1} bucoord ${COMPILE_PART2}
396 ${COMPILE_PART1} xstat ${COMPILE_PART2}
398 afsmonitor: project gtx xstat
399 ${COMPILE_PART1} afsmonitor ${COMPILE_PART2}
402 case ${SYS_NAME} in \
404 echo skip ircs for ${SYS_NAME} ;; \
406 ${COMPILE_PART1} ircs ${COMPILE_PART2} ;; \
410 case ${SYS_NAME} in \
412 echo skip wash for ${SYS_NAME} ;; \
414 ${COMPILE_PART1} wash ${COMPILE_PART2} ;; \
417 tests: rxtests ubiktests
419 # pthread based user space RX library
420 libafsrpc: rx rxkad des
421 case ${SYS_NAME} in \
422 alpha_dux*|sgi_*|sun4x_*|rs_aix*|*linux*|hp_ux110) \
423 ${COMPILE_PART1} libafsrpc ${COMPILE_PART2} ;; \
425 echo Not building MT libafsrpc for ${SYS_NAME} ;; \
428 libafsauthent: ubik auth kauth libafsrpc
429 case ${SYS_NAME} in \
430 alpha_dux*|sgi_*|sun4x_*|rs_aix*|*linux*|hp_ux110) \
431 ${COMPILE_PART1} libafsauthent ${COMPILE_PART2} ;; \
433 echo Not building MT libafsrpc for ${SYS_NAME} ;; \
437 ${COMPILE_PART1} libadmin ${COMPILE_PART2}
438 ${COMPILE_PART1} libadmin/adminutil ${COMPILE_PART2}
439 ${COMPILE_PART1} libadmin/vos ${COMPILE_PART2}
440 ${COMPILE_PART1} libadmin/client ${COMPILE_PART2}
441 ${COMPILE_PART1} libadmin/kas ${COMPILE_PART2}
442 ${COMPILE_PART1} libadmin/pts ${COMPILE_PART2}
443 ${COMPILE_PART1} libadmin/bos ${COMPILE_PART2}
444 ${COMPILE_PART1} libadmin/cfg ${COMPILE_PART2}
445 ${COMPILE_PART1} libadmin/test ${COMPILE_PART2}
446 ${COMPILE_PART1} libadmin/samples ${COMPILE_PART2}
448 libadmin: libafsauthent bozo
449 case ${SYS_NAME} in \
450 alpha_dux*|sgi_*|sun4x_*|rs_aix*|*linux*|hp_ux110) \
451 $(MAKE) libadmin_real SYS_NAME=$(SYS_NAME) \
452 WASHTOOL="$(WASHTOOL)" \
453 COMPILE_PART1="$(COMPILE_PART1)" \
454 COMPILE_PART2="$(COMPILE_PART2)" \
455 SRCDIR=$(SRCDIR) DESTDIR=$(DESTDIR) \
456 DBG_DEFS=$(DBG_DEFS) ;; \
458 echo Not building MT libadmin for ${SYS_NAME} ;; \
461 finale: project cmd comerr afsd allrcmds butc tbutc libafs libuafs audit kauth log package \
462 ptserver scout bu_utils ubik uss bozo vfsck volser \
463 venus update xstat afsmonitor dauth tests libafsrpc \
464 libafsauthent libadmin
465 ${COMPILE_PART1} finale ${COMPILE_PART2}
467 # Use washtool to ensure MakefileProto is current and obj/libafs exists.
469 libafs_setup: config minproject export
470 # How about if no RCSUPDATE exists?
471 # Well then you're going to lose. Or, if you insist, set
472 # WASHTOOLRCSUPDATE to be a no-op
473 # Warning: The next few lines are _extremely_ sensitive to spaces and tabs.
474 ${WASHTOOL} object libafs
475 case ${SYS_NAME} in \
479 MKAFS_OSTYPE=HPUX;; \
481 MKAFS_OSTYPE=LINUX;; \
483 MKAFS_OSTYPE=FBSD;; \
487 MKAFS_OSTYPE=IRIX;; \
489 MKAFS_OSTYPE=SOLARIS;; \
491 MKAFS_OSTYPE=DARWIN;; \
493 echo WARNING: No MakefileProto for sys ${SYS_NAME} ; \
495 obj/config/config src/libafs/MakefileProto.$$MKAFS_OSTYPE obj/libafs/Makefile ${SYS_NAME}
497 libuafs_setup: config minproject export
498 # How about if no RCSUPDATE exists?
499 # Well then you're going to lose. Or, if you insist, set
500 # WASHTOOLRCSUPDATE to be a no-op
501 ${WASHTOOL} object libuafs
502 case ${SYS_NAME} in \
504 MKAFS_OSTYPE=HPUX;; \
506 MKAFS_OSTYPE=LINUX;; \
508 MKAFS_OSTYPE=FBSD;; \
512 MKAFS_OSTYPE=SOLARIS;; \
516 MKAFS_OSTYPE=IRIX;; \
518 MKAFS_OSTYPE=DARWIN;; \
520 echo WARNING: No MakefileProto for sys ${SYS_NAME} ; \
522 obj/config/config src/libuafs/MakefileProto.$$MKAFS_OSTYPE obj/libuafs/Makefile ${SYS_NAME}
524 # "COMPILE_PART1=${COMPILE_PART1}" "COMPILE_PART2=${COMPILE_PART2}" SYS_NAME=${SYS_NAME} ;;
528 $(MAKE) $(TARGET) "SYS_NAME=${SYS_NAME}" "WASHTOOL=${WASHTOOL}" \
529 "COMPILE_PART1=${COMPILE_PART1}" \
530 "COMPILE_PART2=${COMPILE_PART2}" \
531 DESTDIR=`pwd`/${SYS_NAME}/dest/ \
532 SRCDIR=`pwd`/${SYS_NAME}/dest/ \
533 "DBG_DEFS=${DBG_DEFS}"
535 # sgi: "NON_SHARED=-non_shared"
537 # ${WASHTOOL} rcsupdate ${KERNELDIR} libafs
539 kupdate: updatekdir libafs_setup libuafs_setup
542 $(MAKE) libafs "WASHTOOL=${WASHTOOL}" "WASHTOOLFLAGS=-argument kinstall" SYS_NAME=${SYS_NAME} "CPUARCH=${CPUARCH}" "MPSP=${MPSP}" "DBG_DEFS=${DBG_DEFS}"
545 $(MAKE) libuafs "WASHTOOL=${WASHTOOL}" "WASHTOOLFLAGS=-argument ukinstall" SYS_NAME=${SYS_NAME} "CPUARCH=${CPUARCH}" "MPSP=${MPSP}" "DBG_DEFS=${DBG_DEFS}"
548 $(MAKE) libuafs "WASHTOOL=${WASHTOOL}" "WASHTOOLFLAGS=-argument webinstall" SYS_NAME=${SYS_NAME} "CPUARCH=${CPUARCH}" "MPSP=${MPSP}" "DBG_DEFS=${DBG_DEFS}"
551 ${WASHTOOL} every "cd obj/%s; $(MAKE) clean" -rootd obj
554 ${WASHTOOL} every -command \
555 'cd rcs/%s; echo ; echo In %s:; if test x = "x`/bin/ls RCS/*,v`"; then exit 0; else rlog -I RCS/*,v; fi'
558 echo "Remove the obj directory"
559 - /bin/rm -rf @sys/obj/* ;
560 - /bin/rm -rf @sys/dest/* ;
561 - /bin/mkdir @sys/obj ;
562 echo "Create the obj directories"
565 for file in `find [!NW]* -type d -print` ; do \
566 /bin/mkdir $${here}/obj/$${file} ; \
568 echo "Create the obj file links"
571 for file in `find [!NW]* -type f -print` ; do \
572 /bin/ln -s `pwd`/$${file} $${here}/obj/$${file} ; \