2 # @(#)Makefile 2.1 97/10/23
4 # Makefile to build SFS benchmark suite
7 # Copyright (c) 1992-1997,2001 by Standard Performance Evaluation Corporation
9 # Standard Performance Evaluation Corporation (SPEC)
10 # 6585 Merchant Place, Suite 100
13 # This tape contains benchmarks acquired from several sources who
14 # understand and agree with SPEC's goal of creating fair and objective
15 # benchmarks to measure computer performance.
17 # This copyright notice is placed here only to protect SPEC in the
18 # event the source is misused in any manner that is contrary to the
19 # spirit, the goals and the intent of SPEC.
21 # The source code is provided to the user or company under the license
22 # agreement for the SPEC Benchmark Suite for this tape.
25 # *****************************************************************
27 # * Copyright 1991,1992 Legato Systems, Inc. *
28 # * Copyright 1991,1992 Auspex Systems, Inc. *
29 # * Copyright 1991,1992 Data General Corporation *
30 # * Copyright 1991,1992 Digital Equipment Corporation *
31 # * Copyright 1991,1992 Interphase Corporation *
32 # * Copyright 1991,1992 Sun Microsystems, Inc. *
34 # *****************************************************************
37 # ----------------------- How to use this makefile --------------------
39 # The makefile is divided into 10 sections:
40 # 1) basic information
41 # 2) default compiler definitions
42 # 3) vendor specific definitions
43 # 4) OS feature specific definitions
44 # 5) final compiler definitions (includes specific vendor and feature defs)
45 # 6) source file definitions
46 # 7) object file definitions
47 # 8) rules and targets for building sfs
48 # 9) lint, install, clean, misc rules
51 # ---------------------- default compiler definitions -----------------
53 # For Solaris 2.X (SunOS 5.X) or later
57 CFLAGS = -v -Xc -D__sparc -D_POSIX_SOURCE
59 EXTRA_CFLAGS = -DPORTMAP
64 OSTYPE = -DSVR4 -DSOLARIS2
66 RPCLIB = rpc/librpclib.a
67 LIBS = -lm -lsocket -lnsl
70 # ---------------------- OS feature specific definitions ------------------
74 # A UNIX derivative that only supports the getfsent(3) family of calls
75 # should have the USEFSTAB variable set.
76 # A UNIX derivative that supports the getmntent(3) family of calls
77 # should have the line commented out.
80 # SFS uses the setsid(2) system call to form a new proces group
81 # This prevents 'synchronization' signals from causing parent shell (sh)
82 # to exit. SETPGRP_CALL allows you to specify the alternative use
83 # of the setpgrp(2) and which variation you are using.
85 # If you are linking with BSD libraries then uncomment the next line.
86 # SETPGRP_CALL = -DSETPGRP_BSD
88 # If you are linking with SYSV type libraries then uncomment the next line.
89 #SETPGRP_CALL = -DSETPGRP_SYSV
91 # if your client is failing the mount even when run as root then you should
92 # uncomment the RESVPORT_MOUNT to explicitly bind to a reserved port.
93 RESVPORT_MOUNT = -DRESVPORT
96 # ---------------------- final compiler definitions -----------------------
109 EXTRA_CFLAGS= -DNO_T_TYPES -DUSE_INTTYPES
115 # ---------------------- source file definitions ------------------
120 DOC = sfs.1 README sfs.1
122 SHELLFILES = sfs_mgr sfs_mcr sfs_rc
124 V2_HDR = sfs_c_def.h sfs_c_nfs.h
126 V3_HDR = sfs_c_def.h sfs_c_nfs.h
128 V2_SRC = sfs_2_ops.c sfs_2_vld.c
130 #V3_SRC = rfs_3_ops.c sfs_3_vld.c
131 V3_SRC = rfs_3_ops.c generic_hash.c profile.c
133 #C_SRC = sfs_c_clk.c sfs_c_dat.c rfs_c_dat.c sfs_c_dmp.c sfs_c_man.c
134 # sfs_c_pnt.c sfs_c_rnd.c sfs_c_sig.c sfs_c_bio.c
135 C_SRC = sfs_c_clk.c sfs_c_dat.c rfs_c_dat.c sfs_c_dmp.c \
136 sfs_c_rnd.c sfs_c_sig.c sfs_c_bio.c \
137 sfs_2_xdr.c sfs_3_xdr.c sfs_c_mnt.c sfs_c_chd.c sem.c\
140 C_COMMON_SRC = sfs_c_sub.c
144 M_PRIME_SRC = sfs_m_prm.c
146 M_SYNCD_SRC = sfs_m_snc.c
148 M_MSG_SRC = sfs_m_msg.c
150 M_COMMON_SRC = sfs_m_xdr.c
153 # ---------------------- object file definitions -------------------
156 V2_OBJ = sfs_2_ops.o sfs_2_vld.o
158 #V3_OBJ = rfs_3_ops.o sfs_3_vld.o
159 V3_OBJ = rfs_3_ops.o generic_hash.o profile.o
161 C_OBJ = sfs_c_clk.o sfs_c_dat.o rfs_c_dat.o sfs_c_dmp.o \
162 sfs_c_rnd.o sfs_c_sig.o sfs_c_bio.o \
163 sfs_2_xdr.o sfs_3_xdr.o sfs_c_mnt.o sfs_c_chd.o sem.o \
166 C_COMMON_OBJ = sfs_c_sub.o
169 M_PRIME_OBJ = sfs_m_prm.o
171 M_SYNCD_OBJ = sfs_m_snc.o
173 M_MSG_OBJ = sfs_m_msg.o
175 M_COMMON_OBJ = sfs_m_xdr.o
178 # ---------------------- rules and targets for building sfs ---------
181 BENCH = /home/ningning/rfs/trace_src
182 all: fix_perm install agefs
184 compile: fix_perm install
187 chmod 755 $(BENCH)/src
188 chmod 755 $(BENCH)/src/rpc
189 chmod 755 $(BENCH)/bin
191 sfs: $(V2_HDR) $(M_HDR) $(V2_OBJ) $(C_OBJ) \
192 $(C_COMMON_OBJ) $(M_COMMON_OBJ) $(M_MSG_OBJ) $(RPCLIB)
193 $(CC) -o $@ $(LDFLAGS) $(V2_OBJ) $(C_OBJ) $(C_COMMON_OBJ) \
194 $(M_COMMON_OBJ) $(M_MSG_OBJ) $(RPCLIB) $(LIBS) \
197 sfs3: $(V3_HDR) $(M_HDR) $(V3_OBJ) $(C_OBJ) \
198 $(C_COMMON_OBJ) $(M_COMMON_OBJ) $(M_MSG_OBJ) $(RPCLIB)
199 $(CC) -lpthread -o $@ $(LDFLAGS) $(V3_OBJ) $(C_OBJ) $(C_COMMON_OBJ) \
200 $(M_COMMON_OBJ) $(M_MSG_OBJ) $(RPCLIB) $(LIBS) \
204 sfs3.full_speed: $(V3_HDR) $(M_HDR) $(V3_OBJ) $(C_OBJ) \
205 $(C_COMMON_OBJ) $(M_COMMON_OBJ) $(M_MSG_OBJ) $(RPCLIB)
206 $(CC) -o $@ $(LDFLAGS) $(V3_OBJ) $(C_OBJ) $(C_COMMON_OBJ) \
207 $(M_COMMON_OBJ) $(M_MSG_OBJ) $(RPCLIB) $(LIBS) \
212 sfs_prime: $(V2_HDR) $(M_HDR) $(M_PRIME_OBJ) \
213 $(C_COMMON_OBJ) $(M_COMMON_OBJ) $(M_MSG_OBJ) $(RPCLIB)
214 $(CC) -o $@ $(LDFLAGS) $(M_PRIME_OBJ) $(C_COMMON_OBJ) \
215 $(M_COMMON_OBJ) $(M_MSG_OBJ) $(RPCLIB) $(LIBS) \
218 sfs_syncd: $(V2_HDR) $(M_HDR) $(M_SYNCD_OBJ) \
219 $(C_COMMON_OBJ) $(M_COMMON_OBJ) $(RPCLIB)
220 $(CC) -o $@ $(LDFLAGS) $(M_SYNCD_OBJ) $(C_COMMON_OBJ) \
221 $(M_COMMON_OBJ) $(RPCLIB) $(LIBS) $(EXTRA_LIBS)
224 $(CC) -c $(INCDIR) $(CFLAGS) $(EXTRA_CFLAGS) $(DEBUG) \
225 $(SETPGRP_CALL) $(FSTAB) $(OSTYPE) $(OPT) \
226 $(RESVPORT_MOUNT) $*.c
229 @cd rpc; make MACHID="${MACHID}"\
230 CC="${CC}" CFLAGS="${CFLAGS}" DEBUG="${DEBUG}"\
231 LDFLAGS="${LDFLAGS}" EXTRA_CFLAGS="${EXTRA_CFLAGS}" \
232 EXTRA_LDFLAGS="${EXTRA_LDFLAGS}" EXTRA_LIBS="${EXTRA_LIBS}" \
233 LIBS="${LIBS}" OSTYPE="${OSTYPE}" OPT="${OPT}" \
234 EXTRA_LINTFLAGS="${EXTRA_LINTFLAGS}" \
235 RESVPORT_MOUNT="${RESVPORT_MOUNT}"\
238 generic_hash.o: rfs_c_def.h generic_hash.h generic_hash.c
240 profile.o: rfs_c_def.h profile.h profile.c
242 rfs_3_ops.o: sfs_c_nfs.h sfs_c_def.h rfs_c_def.h rfs_3_ops.c
244 sfs_3_vld.o: sfs_c_nfs.h sfs_c_def.h sfs_3_vld.c
246 sfs_3_xdr.o: sfs_c_nfs.h sfs_c_def.h sfs_3_xdr.c
248 sfs_c_bio.o: sfs_c_nfs.h sfs_c_def.h rfs_c_def.h sfs_c_bio.c
250 sfs_c_chd.o: sfs_c_nfs.h sfs_c_def.h rfs_c_def.h sfs_m_def.h generic_hash.h profile.h sfs_c_chd.c
254 sfs_c_clk.o: sfs_c_nfs.h sfs_c_def.h sfs_c_clk.c
256 sfs_c_clnt.o: sfs_c_nfs.h sfs_c_def.h sfs_c_clnt.c
258 sfs_c_dat.o: sfs_c_def.h sfs_m_def.h sfs_c_nfs.h sfs_c_dat.c
259 rfs_c_dat.o: sfs_c_def.h rfs_c_def.h sfs_c_nfs.h rfs_c_dat.c
261 sfs_c_dmp.o: sfs_c_nfs.h sfs_c_def.h sfs_c_dmp.c
263 sfs_c_man.o: sfs_c_nfs.h sfs_c_def.h \
264 sfs_m_def.h sfs_c_man.c
266 sfs_c_mnt.o: sfs_c_nfs.h sfs_c_def.h rfs_c_def.h sfs_c_mnt.c
268 sfs_2_ops.o: sfs_c_nfs.h sfs_c_def.h sfs_2_ops.c
270 sfs_c_pnt.o: sfs_c_nfs.h sfs_c_def.h \
271 sfs_m_def.h sfs_c_pnt.c
273 sfs_c_rnd.o: sfs_c_rnd.c
275 sfs_c_sig.o: sfs_c_nfs.h sfs_c_def.h rfs_c_def.h sfs_c_sig.c
277 sfs_c_sub.o: sfs_c_nfs.h sfs_c_def.h sfs_c_sub.c
279 sfs_2_vld.o: sfs_c_nfs.h sfs_c_def.h sfs_2_vld.c
281 sfs_2_xdr.o: sfs_c_nfs.h sfs_c_def.h sfs_2_xdr.c
283 sfs_m_msg.o: sfs_c_nfs.h sfs_c_def.h \
284 sfs_m_def.h sfs_m_msg.c
286 sfs_m_prm.o: sfs_c_nfs.h sfs_c_def.h \
287 sfs_m_def.h sfs_m_prm.c
289 sfs_m_snc.o: sfs_c_nfs.h sfs_c_def.h \
290 sfs_m_def.h sfs_m_snc.c
292 sfs_m_xdr.o: sfs_m_def.h sfs_m_xdr.c
295 # ---------------------- lint, install, clean, misc rules -----------------
298 lint: lint_sfs lint_sfs3 lint_prime lint_syncd
300 lint_sfs: $(V2_HDR) $(M_HDR) $(V2_SRC) $(C_SRC) \
301 $(C_COMMON_SRC) $(M_COMMON_SRC) $(M_MSG_SRC)
302 lint -Dlint $(INCDIR) $(CFLAGS) $(EXTRA_CFLAGS) $(DEBUG) \
304 $(SETPGRP_CALL) $(FSTAB) $(OSTYPE) \
306 $(V2_SRC) $(C_SRC) $(C_COMMON_SRC) \
307 $(M_COMMON_SRC) $(M_MSG_SRC) \
308 $(LIBS) $(EXTRA_LIBS) \
311 lint_prime: $(V2_HDR) $(M_HDR) $(M_PRIME_SRC) \
312 $(C_COMMON_SRC) $(M_COMMON_SRC) $(M_MSG_SRC)
313 lint -Dlint $(INCDIR) $(CFLAGS) $(EXTRA_CFLAGS) $(DEBUG) \
315 $(SETPGRP_CALL) $(FSTAB) $(OSTYPE) \
317 $(M_PRIME_SRC) $(C_COMMON_SRC) \
318 $(M_COMMON_SRC) $(M_MSG_SRC) \
319 $(LIBS) $(EXTRA_LIBS) \
322 lint_syncd: $(V2_HDR) $(M_HDR) $(M_SYNCD_SRC) \
323 $(C_COMMON_SRC) $(M_COMMON_SRC)
324 lint -Dlint $(INCDIR) $(CFLAGS) $(EXTRA_CFLAGS) $(DEBUG) \
326 $(SETPGRP_CALL) $(FSTAB) $(OSTYPE) \
328 $(M_SYNCD_SRC) $(C_COMMON_SRC) $(M_COMMON_SRC) \
329 $(LIBS) $(EXTRA_LIBS) \
332 lint_sfs3: $(V3_HDR) $(M_HDR) $(V3_SRC) $(C_SRC) \
333 $(C_COMMON_SRC) $(M_COMMON_SRC) $(M_MSG_SRC)
334 lint -Dlint $(INCDIR) $(CFLAGS) $(EXTRA_CFLAGS) $(DEBUG) \
336 $(SETPGRP_CALL) $(FSTAB) $(OSTYPE) \
338 $(V3_SRC) $(C_SRC) $(C_COMMON_SRC) \
339 $(M_COMMON_SRC) $(M_MSG_SRC) \
340 $(LIBS) $(EXTRA_LIBS) \
343 install: sfs sfs3 sfs_syncd sfs_prime
344 chmod +x sfs_syncd sfs_prime \
345 sfs_mgr sfs_mcr sfs_ext_mon \
347 ./sfs_suchown $(RESVPORT_MOUNT) sfs sfs3
350 rm -f *.o sfs sfs_syncd sfs_prime \
352 lint.out sfs_*.shr1 core *.lint
354 ./sfs_suchown clobber
357 agefs: rfs_c_age.c profile.c
358 gcc -g -o agefs rfs_c_age.c profile.c
359 frag_count: frag_count.c
360 gcc -g -o frag_count frag_count.c
361 frag_collect:frag_collect
362 generate_xmgr: generate_xmgr.c
363 gcc -g -o generate_xmgr generate_xmgr.c