xref: /titanic_41/usr/src/lib/libbc/sparc/Makefile (revision fa9e4066f08beec538e775443c5be79dd423fcab)
1#
2# CDDL HEADER START
3#
4# The contents of this file are subject to the terms of the
5# Common Development and Distribution License, Version 1.0 only
6# (the "License").  You may not use this file except in compliance
7# with the License.
8#
9# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10# or http://www.opensolaris.org/os/licensing.
11# See the License for the specific language governing permissions
12# and limitations under the License.
13#
14# When distributing Covered Code, include this CDDL HEADER in each
15# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16# If applicable, add the following below this CDDL HEADER, with the
17# fields enclosed by brackets "[]" replaced with your own identifying
18# information: Portions Copyright [yyyy] [name of copyright owner]
19#
20# CDDL HEADER END
21#
22#
23# Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
24# Use is subject to license terms.
25#
26# ident	"%Z%%M%	%I%	%E% SMI"
27#
28# This builds all objects needed for libbc.
29#
30
31LIBRARY= libc.a
32# Default rules in ../../Makefile.targ not used.
33VERS= bogus
34DYNLIB4X= libc.so.1.9
35DYNLIBS5= libc.so.2.9
36#DYNLIBS5 is also defined in ../Makefile
37
38M4= m4
39ECHO=	echo
40
41# objects are grouped by source directory.
42
43COMPATCOM= \
44gtty.o      lockf.o     pause.o     stty.o      tell.o      ulimit.o \
45utime.o
46
47COMPAT4.1=\
48ftime.o     nice.o      rand.o      vlimit.o    vtimes.o    getpw.o times.o
49
50COMPATSYS5=\
51nice.o      rand.o      getpw.o     times.o
52
53CRTSPARC =\
54_ftou.o      misalign.o  ptr_call.o \
55start_float.o \
56alloc_pbuf.o mon.o muldiv.o
57
58GENCOM=\
59_crypt.o _nlist.o _perror.o _psignal.o a64l.o abs.o alarm.o\
60asctime.o atof.o atoi.o atol.o bcmp.o bsearch.o\
61clock.o closedir.o crypt.o ctime.o ctype_.o\
62drand48.o dysize.o errlst.o execvp.o exit.o exportent.o ecvt.o\
63fabs.o fmod.o frexp.o\
64fstab.o ftok.o ftw.o getacinfo.o getauid.o getauditflags.o \
65getcwd.o getenv.o getfaudflgs.o getgraent.o getlogin.o \
66getopt.o getsubopt.o getpwaent.o  getttyent.o\
67getttynam.o getusershell.o grpauth.o hsearch.o\
68ieee_globals.o index.o isatty.o \
69issecure.o jcsetpgrp.o\
70l64a.o labeltostring.o ldexp.o lfind.o lsearch.o\
71madvise.o mallopt.o \
72euc.multibyte.o iso.multibyte.o xccs.multibyte.o \
73mblib.o mbstowcs.o mbtowc.o wcstombs.o wctomb.o \
74memalign.o memccpy.o memchr.o memcmp.o\
75mkstemp.o mktemp.o mlock.o mlockall.o\
76mntent.o modf.o msync.o munlock.o munlockall.o\
77nl_cxtime.o nl_strncmp.o  ndbm.o on_exit.o\
78opendir.o optind.o perror.o plock.o \
79posix_sig.o posix_tty.o popen.o psignal.o putenv.o \
80pwdauth.o pwdnm.o qsort.o\
81random.o readdir.o realpath.o regex.o rindex.o scandir.o seekdir.o\
82setlocale.o setregid.o setreuid.o setrgid.o setruid.o sigfpe.o siglist.o\
83ssignal.o strchr.o stricmp.o \
84strftime.o strncat.o \
85strpbrk.o strptime.o strrchr.o strspn.o strstr.o \
86strtod.o strtok.o strtol.o swab.o syslog.o\
87telldir.o tfind.o time.o tsearch.o \
88ualarm.o usleep.o valloc.o string_decim.o \
89file_decim.o func_decim.o econvert.o seconvert.o gconvert.o \
90decimal_bin.o float_decim.o double_decim.o \
91pack_float.o _unpack_dble.o unpack_float.o \
92_base_S.o _base_il.o _base_sup.o _big_power.o _small_power.o \
93_sprintf_sup.o _times_power.o qeconvert.o \
94_Q_neg.o _Q_add.o _Q_sub.o _Q_mul.o _Q_div.o _Q_cmp.o \
95_Q_cmpe.o _Q_stoq.o _Q_dtoq.o _Q_itoq.o _Q_utoq.o _Q_qtos.o _Q_qtod.o \
96_Q_qtoi.o _Q_qtou.o _Q_sqrt.o _Qfaddsub.o _Qfcompare.o _Qfdiv.o \
97_Qfmul.o _Qfpack.o _Qfunpack.o _Qfutility.o _Q_fcc.o _Q_get_rp_rd.o \
98calloc.o malloc.o \
99getpass.o localtime.o ttyslot.o
100
101GENCOMSPARC=\
102alloca.o   ffs.o insque.o    remque.o    isinf.o     base_conv.o
103
104GEN4.2=\
105nlist.o     timezone.o  sleep.o  system.o
106
107GENSYS5=\
108assert.o    nlist.o     sgetl.o    sleep.o      sputl.o     system.o \
109sighold.o
110
111STDIOCOM=\
112clrerr.o    ctermid.o   cuserid.o   doprnt.o    doscan.o    fdopen.o \
113feof.o      ferror.o    fgetc.o     fgets.o     fileno.o    findiop.o \
114fputc.o     fputs.o     fread.o     fseek.o     ftell.o \
115fwrite.o    getc.o      getchar.o   gets.o      getw.o      iob.o \
116putc.o      putchar.o   puts.o      putw.o      remove.o \
117rew.o       scanf.o     setbuffer.o setvbuf.o   tmpnam.o    tempnam.o \
118tmpfile.o   ungetc.o
119
120STDIO4.2=\
121filbuf.o    fopen.o     fprintf.o   printf.o    flsbuf.o  setbuf.o \
122sprintf.o   vfprintf.o  vprintf.o   vsprintf.o
123
124STDIOSYS5=\
125filbuf.o    fopen.o     fprintf.o   flsbuf.o    printf.o    setbuf.o \
126sprintf.o   vfprintf.o  vprintf.o   vsprintf.o
127
128SYSCOM=\
129_access.o acct.o  adjtime.o close.o _creat.o dup.o dup2.o \
130fchdir.o fchmod.o fchown.o fchroot.o \
131fdlist.o flock.o  fpathconf.o fsync.o ftruncate.o getdents.o \
132getdtablesize.o getgid.o  getitimer.o getpid.o gettimeofday.o \
133getuid.o ioctl.o kill.o lseek.o mincore.o mprotect.o munmap.o\
134_open.o poll.o profil.o setitimer.o \
135rlimit.o _statfs.o  sync.o umask.o uname.o\
136execl.o execle.o execv.o mkfifo.o msgsys.o\
137pathconf.o semsys.o shmsys.o unmount.o wait.o setuid.o\
138setgid.o _stat.o seteuid.o setegid.o signalmap.o utimes.o syscall.o \
139maperror.o sigsetjmp.o accept.o bind.o connect.o getpeername.o \
140getsockname.o getsockopt.o listen.o recv.o send.o \
141setsockopt.o shutdown.o socket.o socketpair.o setsid.o sigaction.o
142
143SYSCOMSPARC=\
144_exit.o     brk.o       cerror.o    errno.o     \
145getegid.o   geteuid.o   getppid.o   mmap.o      pipe.o      putmsg.o \
146sbrk.o      _syscall.o  getmsg.o    _read.o     _write.o \
147_readv.o    _writev.o	sendsig.o
148
149SYS4.2=\
150access.o    chdir.o     chmod.o     chown.o     chroot.o    \
151creat.o     execve.o    getpgrp.o   link.o      mkdir.o  \
152mknod.o     open.o      readlink.o  rename.o    rmdir.o  \
153setpgrp.o   stat.o      symlink.o   truncate.o  unlink.o     \
154statfs.o    fcntl.o     read.o      write.o     readv.o \
155writev.o    setjmp.o	mount.o
156
157SYS4.2SPARC=\
158getgroups.o setgroups.o
159
160SYSSYS5=\
161access.o    chdir.o     chmod.o     chown.o     chroot.o \
162creat.o     execve.o    getgroups.o getpgrp.o   link.o \
163mkdir.o     mknod.o     open.o      readlink.o  rename.o \
164rmdir.o     setgroups.o setpgrp.o   stat.o      statfs.o \
165stime.o     symlink.o   truncate.o  unlink.o    fcntl.o \
166read.o      write.o     readv.o     writev.o    setjmp.o \
167mount.o
168
169#SSYSSPARC=\
170#_getpgrp.o  _kill.o     _lseek.o    _mknod.o    _mount.o    _setpgrp.o \
171#umount.o
172
173INET=\
174inet_addr.o        inet_lnaof.o     inet_makeaddr.o  inet_netof.o \
175inet_network.o     inet_ntoa.o
176
177NET=\
178ether_addr.o bindresvport.o getrpcport.o rcmd.o \
179rexec.o ruserpass.o authunix.o
180
181NETSPARC= htonl.o     htons.o         ntohl.o          ntohs.o
182
183YP= yp_bind.o
184
185YP= yp_bind.o
186PSEUDO_SRCS= adjtime.s fchdir.s \
187fchmod.s   fchown.s    fchroot.s      \
188fpathconf.s getitimer.s    getpid.s    \
189mincore.s   mprotect.s munmap.s    \
190profil.s    setitimer.s \
191sync.s     sysconf.s   umask.s         ustat.s \
192acct.s    stime.s      \
193utimes.s poll.s
194
195#
196# libbc build rules
197pics/%.o s5pics/%.o : ../libc/compat/common/%.c
198	$(COMPILE.c) -o $@ $<
199	$(POST_PROCESS_O)
200
201pics/%.o : ../libc/compat/4.1/%.c
202	$(COMPILE.c) -o $@ $<
203	$(POST_PROCESS_O)
204
205s5pics/%.o : ../libc/compat/sys5/%.c
206	$(COMPILE.c) -o $@ $<
207	$(POST_PROCESS_O)
208
209pics/%.o s5pics/%.o : ../libc/crt/sparc/%.s
210	$(BUILD.s)
211	$(POST_PROCESS_O)
212
213pics/%.o s5pics/%.o : ../libc/crt/sparc/%.c
214	$(COMPILE.c) -o $@ $<
215	$(POST_PROCESS_O)
216
217pics/%.o s5pics/%.o : ../csu/common/%.c
218	$(COMPILE.c) -o $@ $<
219	$(POST_PROCESS_O)
220
221pics/%.o s5pics/%.o : ../libc/gen/common/%.S
222	$(BUILD.s)
223	$(POST_PROCESS_O)
224
225pics/%.o s5pics/%.o : ../libc/gen/common/%.c
226	$(COMPILE.c) -o $@ $<
227	$(POST_PROCESS_O)
228
229pics/%.o s5pics/%.o : ../libc/gen/common/sparc/%.s
230	$(BUILD.s)
231	$(POST_PROCESS_O)
232
233pics/%.o s5pics/%.o : ../libc/gen/common/sparc/%.c
234	$(COMPILE.c) -o $@ $<
235	$(POST_PROCESS_O)
236
237pics/%.o : ../libc/gen/4.2/%.c
238	$(COMPILE.c) -o $@ $<
239	$(POST_PROCESS_O)
240
241s5pics/%.o : ../libc/gen/sys5/%.c
242	$(COMPILE.c) -o $@ $<
243	$(POST_PROCESS_O)
244
245pics/%.o s5pics/%.o : ../libc/inet/%.c
246	$(COMPILE.c) -o $@ $<
247	$(POST_PROCESS_O)
248
249pics/%.o s5pics/%.o : ../libc/net/%.c
250	$(COMPILE.c) -o $@ $<
251	$(POST_PROCESS_O)
252
253pics/%.o s5pics/%.o : ../libc/net/sparc/%.c
254	$(COMPILE.c) -o $@ $<
255	$(POST_PROCESS_O)
256
257pics/%.o s5pics/%.o : ../libc/stdio/common/%.c
258	$(COMPILE.c) -o $@ $<
259	$(POST_PROCESS_O)
260
261pics/%.o : ../libc/stdio/4.2/%.c
262	$(COMPILE.c) -o $@ $<
263	$(POST_PROCESS_O)
264
265s5pics/%.o : ../libc/stdio/sys5/%.c
266	$(COMPILE.c) -o $@ $<
267	$(POST_PROCESS_O)
268
269pics/%.o s5pics/%.o : ../libc/sys/common/%.s
270	$(BUILD.s)
271	$(POST_PROCESS_O)
272
273pics/%.o s5pics/%.o : ../libc/sys/common/%.c
274	$(COMPILE.c) -o $@ $<
275	$(POST_PROCESS_O)
276
277pics/%.o s5pics/%.o : ../libc/sys/common/sparc/%.s
278	$(BUILD.s)
279	$(POST_PROCESS_O)
280
281pics/%.o : ../libc/sys/4.2/%.c
282	$(COMPILE.c) -o $@ $<
283	$(POST_PROCESS_O)
284
285pics/%.o : ../libc/sys/4.2/sparc/%.s
286	$(BUILD.s)
287	$(POST_PROCESS_O)
288
289s5pics/%.o : ../libc/sys/sys5/%.c
290	$(COMPILE.c) -o $@ $<
291	$(POST_PROCESS_O)
292
293s5pics/%.o : ../libc/sys/sys5/sparc/%.s
294	$(BUILD.s)
295	$(POST_PROCESS_O)
296
297s5pics/%.o : ../libc/stdio/sys5/%.c
298	$(COMPILE.c) -o $@ $<
299	$(POST_PROCESS_O)
300
301pics/%.o s5pics/%.o : ../libc/rpc/%.c
302	$(COMPILE.c) -o $@ $<
303	$(POST_PROCESS_O)
304
305pics/%.o s5pics/%.o : ../libc/yp/%.c
306	$(COMPILE.c) -o $@ $<
307	$(POST_PROCESS_O)
308
309
310# include common library definitions
311include ../../Makefile.lib
312
313C99MODE=	$(C99_DISABLE)
314
315#
316# The BCP include files depend on old preprocessor semantics.
317#
318CCMODE = -Xt
319
320# the bcp libraries go in /usr/4lib. override ROOTLIBDIR from ../../Makefile.lib
321# and save it so we can find the libraries with which to link
322ROOTLIBDIR=     $(ROOT)/usr/4lib
323
324CPPFLAGS= -Dsparc \
325	-I. -Iinc -I../inc/include -I../inc/include/sys $(CPPFLAGS.master)
326ASFLAGS=  -P -D__STDC__ -DLOCORE -D_SYS_SYS_S -D_ASM $(CPPFLAGS)
327LDLIBS= -t -R/usr/ucblib -L$(ROOT)/usr/ucblib $(LDLIBS.lib) \
328	-lucb -lc -lnsl -lsocket
329
330# SONAME is used by DYNFLAGS
331$(DYNLIB4X) :=	SONAME = $(DYNLIB4X)
332$(DYNLIBS5) :=	SONAME = $(DYNLIBS5)
333
334pics/%.o:= ASFLAGS += -K pic -DPIC
335pics/%.o:= CPPFLAGS += -K pic -DPIC
336s5pics/%.o:= ASFLAGS += -K pic -DPIC
337
338BUILD.s=  $(AS) $(ASFLAGS) $< -o $@
339
340# libbc method of building an archive
341BUILD.AR= $(RM) $@ ; \
342	$(AR) q $@ $(OBJECTS:%=$(DIR)/%)
343
344# the TXTS macro is used for NSE bootstrapping.
345TXTS=	inc/SYS.h inc/PIC.h inc/machine/asm_linkage.h
346
347LIBS = $(DYNLIB4X) $(DYNLIBS5)
348
349OBJECTS= $(COMPATCOM) $(COMPAT4.1) $(CRTSPARC) $(GENCOM) \
350$(GENCOMSPARC) $(GEN4.2) $(STDIOCOM) $(STDIO4.2) \
351$(INET) $(NET) $(NETSPARC) $(YP) \
352$(SYSCOM) $(SYSCOMSPARC) $(SYS4.2)
353
354#
355# Since this library is strictly for binary compability with ancient
356# applications, we deactivate CTF to avoid kicking up dust.
357#
358CTFCONVERT_POST = :
359CTFMERGE_LIB = :
360
361S5OBJECTS= $(COMPATCOM) $(COMPATSYS5) $(CRTSPARC) $(GENCOM) \
362$(GENCOMSPARC) $(GENSYS5) $(STDIOCOM) $(STDIOSYS5) \
363$(SYSCOM) $(SYSCOMSPARC) $(SYSSYS5) $(SSYS5SPARC) \
364$(INET) $(NET) $(NETSPARC) $(YP)
365
366S5PICOBJS=	$(S5OBJECTS:%=s5pics/%)
367
368CLEANFILES= ../libc/yp/ypupdate_prot.c ../inc/include/rpcsvc/ypupdate_prot.h \
369	../libc/compat/sys5/epoch.h \
370	$(S5PICOBJS)
371CLOBBERFILES= ../libc/compat/sys5/mkepoch
372
373# conditional assignments
374s5pics/%.o:= CPPFLAGS = -Dsparc -DS5EMUL -K pic -DPIC -I. -Iinc \
375	-I../inc/5include -I../inc/include -I../inc/include/sys \
376	$(CPPFLAGS.master)
377
378s5pics/%.o := CFLAGS += -xregs=no%appl
379pics/%.o := CFLAGS += -xregs=no%appl
380
381$(DYNLIB4X):= DIR = pics
382$(DYNLIBS5):= DIR = s5pics
383
384.KEEP_STATE:
385
386# Declare that all .o's can be made in parallel.
387.PARALLEL:	$(PICS) $(S5PICOBJS)
388
389all: $(TXTS) $(LIBS)
390
391$(DYNLIB4X): pics .WAIT $(PICS)
392	$(CC) -o $@ -G $(DYNFLAGS) $(PICS) $(LDLIBS)
393	$(POST_PROCESS_SO)
394
395$(DYNLIBS5): s5pics .WAIT $(S5PICOBJS)
396	$(CC) -o $@ -G $(DYNFLAGS) $(S5PICOBJS) $(LDLIBS)
397	$(POST_PROCESS_SO)
398
399# include common library targets
400include ../../Makefile.targ
401
402s5pics:
403	-@mkdir -p $@
404
405# special cases
406PSEUDO_POBJS= $(PSEUDO_SRCS:%.s=pics/%.o)
407PSEUDO_PS5OBJS= $(PSEUDO_SRCS:%.s=s5pics/%.o)
408
409$(PSEUDO_POBJS) $(PSEUDO_PS5OBJS):
410	@(echo '#include "SYS.h"'; \
411	echo '  SYSCALL($(@F:.o=))'; \
412	echo '  RET'; \
413	echo '  SET_SIZE($(@F:.o=))') >  tmp.$(@F:.o=).s
414	$(AS) $(ASFLAGS) -o $@ tmp.$(@F:.o=).s
415	$(POST_PROCESS_O)
416	@$(RM) tmp.$(@F:.o=).s
417
418s5pics/times.o : ../libc/compat/sys5/epoch.h ../libc/compat/sys5/times.c
419	$(COMPILE.c) -o $@ ../libc/compat/sys5/times.c
420	$(POST_PROCESS_O)
421
422../libc/compat/sys5/epoch.h: ../libc/compat/sys5/mkepoch
423	../libc/compat/sys5/mkepoch > $@
424
425../libc/compat/sys5/mkepoch: ../libc/compat/sys5/mkepoch.c
426	$(NATIVECC) -O -o $@ ../libc/compat/sys5/mkepoch.c
427
428pics/maperror.o s5pics/maperror.o: ../libc/sys/common/maperror.c
429	$(CC) -I../libc/sys/common $(CPPFLAGS) $(CFLAGS) -c -o $@ ../libc/sys/common/maperror.c
430
431#
432# The following rules generate the .h file and XDR routines from the
433# rpcgen source. Objects built here, look for it here. Further, when
434# building ypupdated it should look here too, but doesn't at the moment.
435#
436# It would be nice to use a ".x.h" rule for this, but that causes problems.
437#
438pics/yp_update.o \
439s5pics/yp_update.o : ../inc/include/rpcsvc/ypupdate_prot.h ../libc/yp/yp_update.c
440	$(COMPILE.c) -o $@ ../libc/yp/yp_update.c
441	$(POST_PROCESS_O)
442
443pics/ypupdate_prot.o s5pics/ypupdate_prot.o : ../inc/include/rpcsvc/ypupdate_prot.h\
444				../libc/yp/ypupdate_prot.c
445	$(COMPILE.c) -o $@ ../libc/yp/ypupdate_prot.c
446	$(POST_PROCESS_O)
447
448../libc/yp/ypupdate_prot.c: ../libc/yp/ypupdate_prot.x
449	$(RM) $@
450	$(RPCGEN) -c -o $@ ../libc/yp/ypupdate_prot.x
451
452../libc/yp/ypupdate_prot.h: ../libc/yp/ypupdate_prot.x
453	$(RM) $@ ../libc/yp/ypupdate_prot.h
454	$(RPCGEN) -h -o ../libc/yp/ypupdate_prot.h ../libc/yp/ypupdate_prot.x
455
456../inc/include/rpcsvc/ypupdate_prot.h: ../libc/yp/ypupdate_prot.h
457	cp ../libc/yp/ypupdate_prot.h $@
458