parisc-linux-initial-support-20011008
[openafs.git] / src / libafs / MakefileProto.LINUX.in
1 # Copyright 2000, International Business Machines Corporation and others.
2 # All Rights Reserved.
3
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
7
8 # MakefileProto for Linux i386 systems
9 #
10 DEST=@DEST@
11 TOP_INCDIR=@TOP_INCDIR@
12 TOP_LIBDIR=@TOP_LIBDIR@
13 TOP_SRCDIR=@TOP_SRCDIR@
14 prefix=@prefix@
15 exec_prefix=@exec_prefix@
16 bindir=@bindir@
17 sbindir=@sbindir@
18 libexecdir=@libexecdir@
19 libdir=@libdir@
20 includedir=@includedir@
21 mandir=@mandir@
22 afssrvbindir=@afssrvbindir@
23 afssrvsbindir=@afssrvsbindir@
24 afssrvlibexecdir=@afssrvlibexecdir@
25 afskerneldir=@afskerneldir@
26 SYS_NAME=@AFS_SYSNAME@
27
28 include config/Makefile.${SYS_NAME}
29
30 # OS specific object files:
31 AFS_OS_OBJS = \
32         osi_alloc.o \
33         osi_cred.o \
34         osi_groups.o \
35         osi_inode.o \
36         osi_file.o \
37         osi_misc.o \
38         osi_module.o \
39         osi_sleep.o \
40         osi_vfsops.o \
41         osi_vm.o \
42         osi_vnodeops.o \
43         xdr.o \
44         xdr_array.o \
45         xdr_int64.o
46
47 AFS_OS_NFSOBJS =
48
49 AFS_OS_NONFSOBJS =
50
51
52 # System specific build commands and flags
53 CC = gcc
54 LD = ld
55 # -Wall
56 <i386_linux22 i386_linux24>
57 CCFLAGS =   -O2 -fomit-frame-pointer \
58         -fno-strength-reduce -pipe -march=i486 -malign-loops=2 -malign-jumps=2 \
59         -malign-functions=2
60 DEFINES = -D__KERNEL__  -DCPU=586 -DKERNEL -D_KERNEL -DMODULE ${SMP_DEF} ${KDEFINES}
61 <alpha_linux_22 alpha_linux_24>
62 CCFLAGS = -O2 -fomit-frame-pointer -fno-strength-reduce -pipe -mno-fp-regs -ffixed-8
63 DEFINES = -D__KERNEL__ -DKERNEL -D_KERNEL -DMODULE ${SMP_DEF}
64 <s390_linux22 s390_linux24>
65 CCFLAGS =   -O -fomit-frame-pointer -fno-strength-reduce \
66         -fno-strict-aliasing -fsigned-char 
67 DEFINES = -D__KERNEL__  -D__s390__ -DKERNEL -D_KERNEL -DMODULE ${SMP_DEF}
68 <sparc_linux22 sparc_linux24>
69 LD = ld -m elf32_sparc
70 CCFLAGS =   -O2 -fomit-frame-pointer \
71         -fno-strength-reduce -pipe -mcpu=v8 -mno-fpu -fcall-used-g5 -fcall-used-g7
72 DEFINES = -D__KERNEL__  -DCPU=sparc -DKERNEL -D_KERNEL -DMODULE ${SMP_DEF}
73 <sparc64_linux22 sparc64_linux24>
74 CC = sparc64-linux-gcc
75 LD = ld -m elf64_sparc
76 CCFLAGS =   -O2 -fomit-frame-pointer \
77         -fno-strength-reduce -pipe -mcpu=ultrasparc -m64 -mno-fpu -mcmodel=medlow -ffixed-g4 -fcall-used-g5 -fcall-used-g7 -Wno-sign-compare
78 DEFINES = -D__KERNEL__  -DCPU=sparc64 -DKERNEL -D_KERNEL -DMODULE ${SMP_DEF}
79 <ppc_linux22 ppc_linux24>
80 CCFLAGS =   -O2 -fomit-frame-pointer -fno-strength-reduce \
81         -fno-strict-aliasing -fsigned-char -msoft-float -pipe \
82         -fno-builtin -ffixed-r2
83 DEFINES = -D__KERNEL__  -D__powerpc__ -DKERNEL -D_KERNEL -DMODULE ${SMP_DEF}
84 <parisc_linux24>
85 CCFLAGS =   -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -fno-strength-reduce \
86         -fno-strict-aliasing -fsigned-char -mno-space-regs -mfast-indirect-calls \
87         -mdisable-fpregs -ffunction-sections -march=1.1 -mschedule=7100
88 DEFINES = -D__KERNEL__  -D__linux__ -DKERNEL -D_KERNEL -DMODULE ${SMP_DEF}
89 <ia64_linux24>
90 CCFLAGS =   -O2 -fomit-frame-pointer -fno-strict-aliasing -pipe \
91         -ffixed-r13 -mfixed-range=f10-f15,f32-f127 -falign-functions=32 -mb-step
92 DEFINES = -D__KERNEL__ -DKERNEL -D_KERNEL ${SMP_DEF} -DMODULE
93 <all>
94 INCLUDES = -I. -I../ -I${TOP_SRCDIR}/config
95
96 CFLAGS = $(CCFLAGS) $(DEFINES) $(INCLUDES)
97
98 # Name of directory to hold object files and libraries.
99 KOBJ = MODLOAD
100 MPS = @MPS@
101
102 # COMPDIRS is called in Makefile.common to do the actual builds.
103 COMPDIRS=linux_compdirs
104 INSTDIRS=linux_instdirs
105 DESTDIRS=linux_destdirs
106
107 include Makefile.common
108
109 LINUX_VERS=@LINUX_VERSION@
110 LINUX_KERNEL_PATH=@LINUX_KERNEL_PATH@
111 LINUX_MODULE_NAME=
112 LOCAL_SMP_DEF=
113
114 setup:
115         -$(RM) -f h net netinet sys rpc
116         -ln -s rx rpc
117         for m in ${MPS} ; do \
118                 KDIR=$(KOBJ)-${LINUX_VERS}${LINUX_MODULE_NAME}-$$m; \
119                 mkdir -p $${KDIR}; \
120                 ln -fs ../Makefile $${KDIR}/Makefile ; \
121                 ln -fs ../Makefile.common $${KDIR}/Makefile.common; \
122                 ln -fs ../config $${KDIR}/config; \
123         done 
124         
125 # Compile SP and MP clients as requested
126
127 ${COMPDIRS} ${INSTDIRS} ${DESTDIRS}:
128         $(RM) -f h 
129         ln -s ${LINUX_KERNEL_PATH}/include/linux h 
130         $(RM) -f linux 
131         ln -s ${LINUX_KERNEL_PATH}/include/linux linux 
132         $(RM) -f net 
133         ln -s ${LINUX_KERNEL_PATH}/include/linux net 
134         $(RM) -f netinet 
135         ln -s ${LINUX_KERNEL_PATH}/include/linux netinet 
136         $(RM) -f sys
137         ln -s ${LINUX_KERNEL_PATH}/include/linux sys
138         $(RM) -f asm-generic
139         ln -s ${LINUX_KERNEL_PATH}/include/asm-generic asm-generic
140         $(RM) -f asm
141 <alpha_linux_22 alpha_linux_24>
142         ln -s ${LINUX_KERNEL_PATH}/include/asm-alpha asm
143 <i386_linux22 i386_linux24>
144         ln -s ${LINUX_KERNEL_PATH}/include/asm-i386 asm
145 <s390_linux22 s390_linux24>
146         ln -s ${LINUX_KERNEL_PATH}/include/asm-s390 asm
147 <ppc_linux22 ppc_linux24>
148         ln -s ${LINUX_KERNEL_PATH}/include/asm-ppc asm 
149 <sparc_linux22 sparc_linux24>
150         ln -s ${LINUX_KERNEL_PATH}/include/asm-sparc asm
151 <sparc64_linux22 sparc64_linux24>
152         ln -s ${LINUX_KERNEL_PATH}/include/asm-sparc64 asm
153 <ia64_linux24>
154         ln -s ${LINUX_KERNEL_PATH}/include/asm-ia64 asm
155 <all>
156         for m in ${MPS} ; do \
157                 KDIR=${KOBJ}-${LINUX_VERS}${LINUX_MODULE_NAME}-$$m ; \
158                 echo Building in directory: $${KDIR} ; \
159                 if [ "$$m" = "MP" ] ; then \
160                         SMP_DEF="-DAFS_SMP @RHCONFIG_MP@ ${LOCAL_SMP_DEF}" ; \
161                         TARG="libafs.mp" ; \
162                 elif [ "$$m" = "EP" ] ; then \
163                         SMP_DEF="-DAFS_SMP @RHCONFIG_MP@ ${LOCAL_SMP_DEF}" ; \
164                         TARG="libafs.ep" ; \
165                 else  \
166                         SMP_DEF="@RHCONFIG_SP@ ${LOCAL_SMP_DEF}" ; \
167                         TARG=libafs ; \
168                 fi ; \
169                 cd $${KDIR} ; \
170                 $(MAKE) SMP_DEF="$${SMP_DEF}" $@_$${TARG} CLIENT=${LINUX_VERS}${LINUX_MODULE_NAME} || exit $$?; \
171                 cd ../ ; \
172         done
173
174 linux_compdirs_libafs: libafs
175 linux_compdirs_libafs.mp: libafs.mp
176 linux_compdirs_libafs.ep: libafs.ep
177 linux_instdirs_libafs: install_libafs
178 linux_instdirs_libafs.mp: install_libafs.mp
179 linux_instdirs_libafs.ep: install_libafs.ep
180 linux_destdirs_libafs: dest_libafs
181 linux_destdirs_libafs.mp: dest_libafs.mp
182 linux_destdirs_libafs.ep: dest_libafs.ep
183
184
185 # Below this line are targets when in the COMMON directory:
186 # For Linux there is no kernel NFS server.
187 LIBAFS = libafs-${CLIENT}.o
188 LIBAFS_MP = libafs-${CLIENT}.mp.o
189 LIBAFS_EP = libafs-${CLIENT}.ep.o
190
191 INST_LIBAFS = ${DESTDIR}${afskerneldir}/${LIBAFS}
192 INST_LIBAFS_MP = ${DESTDIR}${afskerneldir}/${LIBAFS_MP}
193 INST_LIBAFS_EP = ${DESTDIR}${afskerneldir}/${LIBAFS_EP}
194
195 DEST_LIBAFS = ${DEST}/root.client/usr/vice/etc/modload/${LIBAFS}
196 DEST_LIBAFS_MP = ${DEST}/root.client/usr/vice/etc/modload/${LIBAFS_MP}
197 DEST_LIBAFS_EP = ${DEST}/root.client/usr/vice/etc/modload/${LIBAFS_EP}
198
199
200 libafs: $(LIBAFS) 
201         echo SP Build Complete
202
203 libafs.mp: $(LIBAFS_MP)
204         echo MP Build Complete
205
206 libafs.ep: $(LIBAFS_EP)
207         echo EP Build Complete
208
209 ${LIBAFS}: $(AFSAOBJS) $(AFSNONFSOBJS)
210         $(RM) -f $@
211         $(LD) -r -o $@ $(AFSAOBJS) $(AFSNONFSOBJS)
212
213 ${LIBAFS_MP}: $(AFSAOBJS) $(AFSNONFSOBJS)
214         $(RM) -f $@
215         $(LD) -r -o $@ $(AFSAOBJS) $(AFSNONFSOBJS)
216
217 ${LIBAFS_EP}: $(AFSAOBJS) $(AFSNONFSOBJS)
218         $(RM) -f $@
219         $(LD) -r -o $@ $(AFSAOBJS) $(AFSNONFSOBJS)
220
221 install_libafs: $(INST_LIBAFS) 
222         echo SP Install Complete
223
224 install_libafs.mp: $(INST_LIBAFS_MP)
225         echo MP Install Complete
226
227 install_libafs.ep: $(INST_LIBAFS_EP)
228         echo EP Install Complete
229
230 dest_libafs:    $(DEST_LIBAFS) 
231         echo SP Install Complete
232
233 dest_libafs.mp: $(DEST_LIBAFS_MP)
234         echo MP Install Complete
235
236 dest_libafs.ep: $(DEST_LIBAFS_EP)
237         echo EP Install Complete
238
239 $(INST_LIBAFS): $(LIBAFS)
240         ${INSTALL} -f $? $@
241
242 $(INST_LIBAFS_MP): $(LIBAFS_MP)
243         ${INSTALL} -f $? $@
244
245 $(INST_LIBAFS_EP): $(LIBAFS_EP)
246         ${INSTALL} -f $? $@
247
248 $(DEST_LIBAFS): $(LIBAFS)
249         ${INSTALL} -f $? $@
250
251 $(DEST_LIBAFS_MP): $(LIBAFS_MP)
252         ${INSTALL} -f $? $@
253
254 $(DEST_LIBAFS_EP): $(LIBAFS_EP)
255         ${INSTALL} -f $? $@
256
257
258 # Linux specific objects
259 osi_alloc.o: $(AFS)/osi_alloc.c
260         $(CRULE1)
261 osi_cred.o: $(AFS)/osi_cred.c
262         $(CRULE1)
263 osi_groups.o: $(AFS)/osi_groups.c
264         $(CRULE1)
265 osi_file.o: $(AFS)/osi_file.c
266         $(CRULE1)
267 osi_inode.o: $(AFS)/osi_inode.c
268         $(CRULE1)
269 osi_misc.o: $(AFS)/osi_misc.c
270         $(CRULE1)
271 osi_module.o: $(AFS)/osi_module.c
272         $(CRULE1)
273 osi_sleep.o: $(AFS)/osi_sleep.c
274         $(CRULE1)
275 osi_vfsops.o: $(AFS)/osi_vfsops.c
276         $(CRULE1)
277 osi_vm.o: $(AFS)/osi_vm.c
278         $(CRULE1)
279 osi_vnodeops.o: $(AFS)/osi_vnodeops.c
280         $(CRULE1)
281 xdr.o: $(RX)/xdr.c
282         $(CRULE1)
283 xdr_int64.o: $(RX)/xdr_int64.c
284         $(CRULE1)
285 xdr_array.o: $(RX)/xdr_array.c
286         $(CRULE1)