# $Copyright:	$
#Copyright (c) 1984, 1985, 1986, 1987, 1988, 1989, 1990 
#Sequent Computer Systems, Inc.   All rights reserved.
# 
#This software is furnished under a license and may be used
#only in accordance with the terms of that license and with the
#inclusion of the above copyright notice.   This software may not
#be provided or otherwise made available to, or used by, any
#other person.  No title to or ownership of the software is
#hereby transferred.

#	Copyright (c) 1984, 1986, 1987, 1988 AT&T
#	  All Rights Reserved

#	THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T
#	The copyright notice above does not evidence any
#	actual or intended publication of such source code.

#ident	"@(#)libc-i386:libc-i386/makefile	1.7.1.2"
#
# makefile for libc/i386
#
#
# The variable PROF is null by default, causing profiled object to be
# maintained.  If profiled object is not desired, the reassignment
# PROF=@# should appear in the make command line.
#

.SUFFIXES: .p

CC=cc
CFLAGS=-O -Wc,-bcs
PROF=
NONPROF=
INCLIBC=../inc
DEFLIST=
SDEFLIST=
INCLIST=-I$(INCLIBC)

POBJECTS=$(OBJECTS:.o=.p)

OBJECTS= \
crt/cerror.o \
crt/mcount.o \
crt/fpreal.o \
csu/crt0.o \
csu/crt1.o \
csu/crtn.o \
csu/mcrt0.o \
csu/mcrt1.o \
csu/pcrt1.o \
fp/fpgetmask.o \
fp/fpgetround.o \
fp/fpgetsticky.o \
fp/fpsetmask.o \
fp/fpsetround.o \
fp/fpsetsticky.o \
gen/abs.o \
gen/atof.o \
gen/biglitpow.o \
gen/cuexit.o \
gen/dtop.o \
gen/ecvt.o \
gen/fakcu.o \
gen/fpgetrnd.o \
gen/fpsetrnd.o \
gen/gen_def.o \
gen/i386_data.o \
gen/isnand.o \
gen/ltostr.o \
gen/memccpy.o \
gen/memchr.o \
gen/memcmp.o \
gen/memcpy.o \
gen/memset.o \
gen/ptod.o   \
gen/setjmp.o \
gen/strcat.o \
gen/strchr.o \
gen/strcmp.o \
gen/strcpy.o \
gen/strlen.o \
gen/strncat.o \
gen/strncmp.o \
gen/strncpy.o \
gen/strrchr.o \
gen/strtod.o \
gen/ldexp.o \
gen/frexp.o \
gen/mall_data.o \
sys/access.o \
sys/acct.o \
sys/advfs.o \
sys/alarm.o \
sys/chdir.o \
sys/chmod.o \
sys/chown.o \
sys/chroot.o \
sys/close.o \
sys/creat.o \
sys/dup.o \
sys/execl.o \
sys/execle.o \
sys/exect.o \
sys/execv.o \
sys/execve.o \
sys/exit.o \
sys/fcntl.o \
sys/fork.o \
sys/fstat.o \
sys/fstatfs.o \
sys/getdents.o \
sys/getegid.o \
sys/geteuid.o \
sys/getgid.o \
sys/getmsg.o \
sys/getpid.o \
sys/getppid.o \
sys/getuid.o \
sys/gtty.o \
sys/ioctl.o \
sys/kill.o \
sys/link.o \
sys/lseek.o \
sys/mkdir.o \
sys/mknod.o \
sys/mount.o \
sys/msgsys.o \
sys/nice.o \
sys/open.o \
sys/pause.o \
sys/pipe.o \
sys/plock.o \
sys/poll.o \
sys/profil.o \
sys/ptrace.o \
sys/putmsg.o \
sys/rdebug.o \
sys/read.o \
sys/rfstart.o \
sys/rfstop.o \
sys/rfsys.o \
sys/rmdir.o \
sys/rmount.o \
sys/rumount.o \
sys/sbrk.o \
sys/semsys.o \
sys/setgid.o \
sys/setpgrp.o \
sys/setuid.o \
sys/setuname.o \
sys/shmsys.o \
sys/signal.o \
sys/stat.o \
sys/statfs.o \
sys/stime.o \
sys/stty.o \
sys/sync.o \
sys/sysi86.o \
sys/syscall.o \
sys/sysfs.o \
sys/time.o \
sys/times.o \
sys/uadmin.o \
sys/ulimit.o \
sys/umask.o \
sys/umount.o \
sys/unadvfs.o \
sys/uname.o \
sys/unlink.o \
sys/ustat.o \
sys/utime.o \
sys/wait.o \
sys/write.o

all:
	$(PROF)make -e $(IGN) prof NONPROF=@#
	$(NONPROF)make -e $(IGN) nonprof PROF=@#

nonprof: $& $(OBJECTS)

prof: $& $(POBJECTS)

.c.o .c.p:
	$(NONPROF)@echo $*.c:
	$(NONPROF)$(CC) $(DEFLIST) $(SDEFLIST) $(INCLIST) $(CFLAGS)  -c $*.c
	$(NONPROF)mv $(*F).o $*.o
	$(PROF)@echo $*.c:
	$(PROF)$(CC) $(DEFLIST) $(INCLIST) $(CFLAGS) -c -p $*.c  && mv $(*F).o $*.p

.s.o .s.p:
	$(NONPROF)@echo $*.s:
	$(NONPROF)$(M4) m4.def $(SDEFLIST) -DMCOUNT=/  $*.s   > $(*F).s   
	$(NONPROF)$(CC) -P $(CFLAGS) $(*F).s
	$(NONPROF)mv $(*F).i $(*F).s
	$(NONPROF)$(CC) $(DEFLIST) $(CFLAGS) -c $(*F).s && mv $(*F).o $*.o
	$(PROF)@echo $*.s:
	$(PROF)$(M4) m4.def $(SDEFLIST) mcount.def $*.s   > $(*F).s 
	$(PROF)$(CC) -P $(CFLAGS) $(*F).s
	$(PROF)mv $(*F).i $(*F).s
	$(PROF)$(CC) $(DEFLIST) $(CFLAGS) -c -p $(*F).s  && mv $(*F).o $*.p
	-rm $(*F).s

archive:
	#
	# Note that "archive" is invoked with libc/object as current directory.
	#
	# figure out the correct ordering for all the archive modules except
	#	cuexit and fakcu, which must go at end of archive.
	mv cuexit.o cuexit.x
	mv fakcu.o fakcu.x
	#mv fpstart.o fpstart.x
	#mv fpstart0.o fpstart0.x
	mv signal.o signal.x
	#mv getflth0.o getflth0.x
	#mv getflth1.o getflth1.x
	#mv getflts0.o getflts0.x
	#mv getflts1.o getflts1.x
	mv kill.o kill.x
	mv getpid.o getpid.x
	mv cerror.o cerror.x
	mv fpsetmask.o fpsetmask.x
	$(LORDER) *.o | tsort >objlist
	mv cuexit.x cuexit.o
	mv fakcu.x fakcu.o
	#mv fpstart.x fpstart.o
	#mv fpstart0.x fpstart0.o
	mv signal.x signal.o
	#mv getflth0.x getflth0.o
	#mv getflth1.x getflth1.o
	#mv getflts0.x getflts0.o
	#mv getflts1.x getflts1.o
	mv kill.x kill.o
	mv getpid.x getpid.o
	mv cerror.x cerror.o
	mv fpsetmask.x fpsetmask.o
	#
	# build the archive with the modules in correct order.
	$(AR) q ../lib.libc \
	`cat objlist` \
	signal.o fpsetmask.o \
	kill.o getpid.o cerror.o cuexit.o fakcu.o 
	$(PROF)#
	$(PROF)# build the profiled library archive, first renaming the
	$(PROF)#	.p (profiled object) modules to .o
	$(PROF)for i in *.p ; do mv $$i `basename $$i .p`.o ; done
	if [ "$(PROF)" != "@#" ]; \
	then \
	$(PROF)$(AR) q ../libp.libc \
	`cat objlist` \
	signal.o fpsetmask.o \
	kill.o getpid.o cerror.o cuexit.o fakcu.o  ; \
	fi

clean:
	-rm -f *.o
	-rm -f *.p
	-rm -f *.s

clobber: clean
	-rm -f */*.o
	-rm -f */*.p

# This guy has problems when the optimizer runs on him
#gen/ecvt.o gen/ecvt.p:
#	$(NONPROF)@echo $*.c:
#	$(NONPROF)$(CC) $(DEFLIST) $(SDEFLIST) $(INCLIST) -c $*.c
#	$(NONPROF)mv $(*F).o $*.o
#	$(PROF)@echo $*.c:
#	$(PROF)$(CC) $(DEFLIST) $(INCLIST) -c -p $*.c  && mv $(*F).o $*.p
