#	Copyright (c) 1984 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-m32:makefile	1.43"
#
#  makefile for libc/m32
#
#
# 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:

.SUFFIXES: .o .s .c .p

ROOT=
M4=m4
#M4=$(PFX)m4
M4ARGS=m4.def reg.def
CC=$(PFX)cc
OFLAG=-O
CFLAGS=$(OFLAG) $(DEFLIST) $(SDEFLIST) $(INCLIST)
PROF=
NONPROF=
INCLIBC=../inc
INC=/usr/include
DEFLIST=
SDEFLIST=
INCLIST=-I$(INCLIBC) -I$(INC)
MAKEARGS=	CC="$(CC)" OFLAG=$(OFLAG) ROOT=$(ROOT) M4=$(M4) $(IGN) -e

OBJECTS=\
csu/crt0.o	  csu/mcrt0.o	    csu/initfpu.o     \
gen/abs.o	  \
gen/ctype.o \
gen/getpfn.o	  gen/setjmp.o      gen/strstr.o      gen/strcpy.o	\
gen/strcmp.o	  gen/mktime.o	    gen/ttyio.o	      \
sys/access.o      sys/acct.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/execve.o	  sys/fcntl.o	      sys/fork.o	\
sys/fstat.o	  sys/getegid.o	    sys/geteuid.o     sys/getgid.o	\
sys/getpid.o	  sys/getppid.o	    sys/getuid.o      \
sys/ioctl.o	  sys/kill.o	    sys/link.o	      sys/lseek.o	\
sys/mknod.o	  sys/mount.o	    sys/msgsys.o      sys/nice.o	\
sys/open.o	  sys/pipe.o	      sys/profil.o	\
sys/plock.o	  sys/uadmin.o	    sys/phmat.o \
sys/ptrace.o	  sys/read.o	    sys/sbrk.o	      sys/semsys.o	\
sys/putmsg.o      sys/getmsg.o      sys/poll.o \
sys/setgid.o	  sys/getpgrp.o	    sys/setuid.o      sys/shmsys.o	\
sys/sigcall.o	  sys/sigops.o      sys/sigsysv.o     sys/setpgrp.o	  \
sys/stat.o	    sys/stime.o	      \
sys/sync.o	  sys/sys_local.o   sys/sys3b.o   \
sys/syscall.o     sys/time.o	\
sys/times.o	  sys/ulimit.o	    sys/umask.o	      sys/umount.o	\
sys/uname.o	  sys/unlink.o	    sys/ustat.o	      sys/utime.o	\
sys/wait.o	  sys/write.o	    \
sys/fstatfs.o	  sys/getdents.o    sys/mkdir.o	      \
sys/rmdir.o	  sys/statfs.o      sys/sysfs.o	      \
sys/fpathconf.o   sys/getgroups.o   sys/getitimer.o   sys/getpsr.o	\
sys/memctl.o      sys/pathconf.o    sys/rename.o      sys/setitimer.o 	\
sys/setpgid.o     sys/setpsr.o      sys/setsid.o      \
sys/sigfillset.o  sys/sigpending.o  sys/sigprocmask.o sys/sigret.o      \
sys/sigsuspend.o  sys/sysconf.o     sys/waitpid.o

SYSOBJECTS=\
_sys/_access.o      _sys/_acct.o		\
_sys/_chdir.o	    _sys/_chmod.o	      _sys/_chown.o	\
_sys/_chroot.o	  _sys/_close.o              \
_sys/_execve.o	  _sys/_exit.o	    _sys/_fcntl.o	      _sys/_fork.o	\
_sys/_fstat.o	  _sys/_getegid.o	    _sys/_geteuid.o     _sys/_getgid.o	\
_sys/_getpid.o	  _sys/_getppid.o	    _sys/_getuid.o      \
_sys/_ioctl.o	  _sys/_kill.o	    _sys/_link.o	      _sys/_lseek.o	\
_sys/_mknod.o	  _sys/_mount.o	    _sys/_msgsys.o      _sys/_nice.o	\
_sys/_open.o	  _sys/_pipe.o	      _sys/_profil.o	\
_sys/_plock.o	  _sys/_uadmin.o \
_sys/_ptrace.o	  _sys/_read.o	    _sys/_sbrk.o	      _sys/_semsys.o	\
_sys/_putmsg.o      _sys/_getmsg.o      _sys/_poll.o \
_sys/_setgid.o	  _sys/_getpgrp.o	    _sys/_setuid.o      _sys/_shmsys.o	\
_sys/_stat.o	    _sys/_stime.o	      \
_sys/_sync.o        _sys/_sys_local.o \
_sys/_syscall.o     _sys/_time.o	\
_sys/_times.o	  _sys/_ulimit.o	    _sys/_umask.o	      _sys/_umount.o	\
_sys/_uname.o	  _sys/_unlink.o	    _sys/_ustat.o	      _sys/_utime.o	\
_sys/_write.o	    \
_sys/_fstatfs.o	  _sys/_getdents.o    _sys/_mkdir.o	      \
_sys/_rmdir.o	  _sys/_statfs.o      _sys/_sysfs.o	      \
_sys/_fpathconf.o   _sys/_getgroups.o   _sys/_getitimer.o   _sys/_getpsr.o	\
_sys/_memctl.o      _sys/_pathconf.o    _sys/_rename.o      _sys/_setitimer.o 	\
_sys/_setpgid.o     _sys/_setpsr.o      _sys/_setsid.o      _sys/_sigaction.o	\
_sys/_sigfillset.o  _sys/_sigpending.o  _sys/_sigprocmask.o _sys/_sigret.o      \
_sys/_sigsuspend.o  _sys/_sysconf.o     _sys/_waitpid.o

DOLLAROBJECTS=\
sc/__access.o      sc/__acct.o		\
sc/__chdir.o	    sc/__chmod.o	      sc/__chown.o	\
sc/__chroot.o	  sc/__close.o	\
sc/__execve.o	  sc/__exit.o	    sc/__fcntl.o	      sc/__fork.o	\
sc/__fstat.o	  sc/__getegid.o	    sc/__geteuid.o     sc/__getgid.o	\
sc/__getpid.o	  sc/__getppid.o	    sc/__getuid.o      \
sc/__ioctl.o	  sc/__kill.o	    sc/__link.o	      sc/__lseek.o	\
sc/__mknod.o	  sc/__mount.o	    sc/__msgsys.o      sc/__nice.o	\
sc/__open.o	  sc/__pipe.o	      sc/__profil.o	\
sc/__plock.o	  sc/__uadmin.o	   \
sc/__ptrace.o	  sc/__read.o	    sc/__sbrk.o	      sc/__semsys.o	\
sc/__putmsg.o      sc/__getmsg.o      sc/__poll.o \
sc/__setgid.o	  sc/__getpgrp.o	    sc/__setuid.o      sc/__shmsys.o	\
sc/__stat.o	    sc/__stime.o	      \
sc/__sync.o        sc/__sys_local.o \
sc/__syslocal.o	  sc/__syscall.o     sc/__time.o	\
sc/__times.o	  sc/__ulimit.o	    sc/__umask.o	      sc/__umount.o	\
sc/__uname.o	  sc/__unlink.o	    sc/__ustat.o	      sc/__utime.o	\
sc/__write.o	    \
sc/__fstatfs.o	  sc/__getdents.o    sc/__mkdir.o	      \
sc/__rmdir.o	  sc/__statfs.o      sc/__sysfs.o	      \
sc/__fpathconf.o   sc/__getgroups.o   sc/__getitimer.o   sc/__getpsr.o	\
sc/__memctl.o      sc/__pathconf.o    sc/__rename.o      sc/__setitimer.o 	\
sc/__setpgid.o     sc/__setpsr.o      sc/__setsid.o      sc/__sigaction.o	\
sc/__sigfillset.o  sc/__sigpending.o  sc/__sigprocmsk.o sc/__sigret.o      \
sc/__sigsuspend.o  sc/__sysconf.o     sc/__waitpid.o


POBJECTS=\
csu/crt0.p	csu/mcrt0.p	csu/initfpu.p     \
gen/abs.p	\
gen/ctype.p	\
gen/getpfn.p    gen/setjmp.p    gen/strstr.p     gen/strcpy.p	\
gen/strcmp.p	gen/mktime.p    gen/ttyio.p	 \
sys/access.p    sys/acct.p	\
sys/alarm.p	sys/chdir.p	sys/chmod.p	 sys/chown.p	\
sys/chroot.p	sys/close.p	sys/creat.p	 sys/dup.p		\
sys/execve.p	sys/fcntl.p	 sys/fork.p	\
sys/fstat.p	sys/getegid.p	sys/geteuid.p    sys/getgid.p	\
sys/getpid.p	sys/getppid.p	sys/getuid.p     \
sys/ioctl.p	sys/kill.p	sys/link.p	 sys/lseek.p	\
sys/mknod.p	sys/mount.p	sys/msgsys.p     sys/nice.p	\
sys/open.p	sys/pipe.p	 sys/profil.p	\
sys/plock.p	sys/phmat.p \
sys/ptrace.p	sys/read.p	sys/sbrk.p	 sys/semsys.p	\
sys/putmsg.p    sys/getmsg.p    sys/poll.p       \
sys/setgid.p	sys/getpgrp.p	sys/setuid.p     sys/shmsys.p	\
sys/sigcall.p	sys/sigops.p    sys/sigsysv.p    sys/setpgrp.p	  \
sys/stat.p	sys/stime.p	\
sys/sync.p	sys/sys_local.p   sys/sys3b.p  \
sys/_syslocal.p  sys/syscall.p    sys/time.p	\
sys/times.p	sys/ulimit.p	sys/umask.p	 sys/umount.p	\
sys/uname.p	sys/unlink.p	sys/ustat.p	 sys/utime.p	\
sys/fstatfs.p   sys/getdents.p  sys/mkdir.p      \
sys/rmdir.p	sys/statfs.p    sys/sysfs.p 	 \
sys/wait.p	sys/write.p	sys/uadmin.p	 \
sys/fpathconf.p   sys/getgroups.p   sys/getitimer.p   sys/getpsr.p	\
sys/memctl.p      sys/pathconf.p    sys/rename.p      sys/setitimer.p 	\
sys/setpgid.p     sys/setpsr.p      sys/setsid.p      \
sys/sigfillset.p  sys/sigpending.p  sys/sigret.p      \
sys/sigsuspend.p  sys/sysconf.p     sys/waitpid.p

all:
	$(NONPROF)$(MAKE) $(MAKEARGS) nonprof PROF=@#
	$(PROF)$(MAKE) $(MAKEARGS) prof NONPROF=@#

prof:	$(VERIFY) $(POBJECTS)
	$(PROF)cd crt ; $(MAKE) $(MAKEARGS) prof NONPROF=@#

nonprof: $(VERIFY) $(OBJECTS) $(SYSOBJECTS) $(DOLLAROBJECTS)
	$(NONPROF)cd crt ; $(MAKE) $(MAKEARGS) nonprof PROF=@#

.c.o:
	$(CC) $(CFLAGS) -c $*.c && mv $(*F).o $*.o

.c.p:
	$(CC) $(CFLAGS) -c -p $*.c && mv $(*F).o $*.p

.s.o:
	$(M4) $(M4ARGS) -DMCOUNT=\;  $*.s >$(*F).s
	$(CC) $(CFLAGS) -c $(*F).s && mv $(*F).o $*.o
	-rm $(*F).s

.s.p:
	$(M4) $(M4ARGS) mcount.def  $*.s >$(*F).s
	$(CC) $(CFLAGS) -c -p $(*F).s  && mv $(*F).o $*.p
	-rm $(*F).s

archive:
	#
	# (m88k)
	# 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 sigcall.o sigcall.x
	#mv signal.o signal.x
	mv kill.o kill.x
	mv getpid.o getpid.x
	mv cerror.o cerror.x
	-rm -f old_toupper.o old_tolower.o
#
#	Comment the following line if you are on a sun
	$(LORDER) *.o | tsort >objlist
#
#	Uncomment the following line if you are on a sun
#	cp ../objlist .
	mv cuexit.x cuexit.o
	mv fakcu.x fakcu.o
	#mv sigcall.x sigcall.o
	#mv signal.x signal.o
	mv kill.x kill.o
	mv getpid.x getpid.o
	mv cerror.x cerror.o
	#
	# build the archive with the modules in correct order.
	$(AR) q ../lib.libc `cat objlist` \
	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` \
	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

verify:
	@echo ; \
	echo "routine"; \
	echo "	TARGET:    $(TARGET)"; \
	echo "	ROOT:      $(ROOT)"; \
	echo "	SRC:       $(SRC)"; \
	echo "	CC:        $(CC)"; \
	echo "	DEFLIST:   $(DEFLIST)"; \
	echo "	CFLAGS:    $(CFLAGS)"; \
	echo ; \
	$(CHKYN) "Continue" || exit 1 ;
