#ident	"@(#):makefile	1.12"
#
# makefile for libc/m68k
#
#
# 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

M4=m4 m4.def
CC=cc
AS=as
AR=ar
STRIP=strip
CFLAGS=-O
PROF=
IGN=-ki

OBJECTS=\
gen/cuexit.o      gen/setjmp.o      gen/gen_def.o     gen/m68k_data.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/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/gtty.o        sys/ioctl.o       sys/kill.o        sys/link.o	\
sys/lseek.o       sys/mknod.o       sys/mount.o       sys/nexect.o	\
sys/nice.o        sys/open.o        sys/pause.o       sys/pipe.o	\
sys/plock.o       sys/profil.o      sys/ptrace.o      sys/read.o	\
sys/sbrk.o        sys/setgid.o      sys/setpgrp.o     sys/setuid.o	\
sys/semsys.o      sys/shmsys.o	    sys/stat.o        sys/stime.o	\
sys/stty.o        sys/sync.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/signal.o     			\
sys/getdents.o    sys/fstatfs.o     sys/getmsg.o      sys/getuniv.o \
sys/mkdir.o       sys/msgsys.o      sys/poll.o        sys/putmsg.o      \
sys/rmdir.o       sys/setuniv.o     sys/statfs.o      sys/uadmin.o	\
sys/advfs.o	  sys/rdebug.o	    sys/rfstart.o     sys/rfstop.o	\
sys/rfsys.o	  sys/rmount.o	    sys/rumount.o     sys/sysfs.o	\
sys/unadvfs.o     sys/getmname.o    sys/getrpid.o

POBJECTS=\
gen/cuexit.p      gen/setjmp.p      gen/gen_def.p     gen/m68k_data.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/execl.p       sys/execle.p	\
sys/execv.p       sys/execve.p      sys/exit.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/gtty.p        sys/ioctl.p       sys/kill.p        sys/link.p	\
sys/lseek.p       sys/mknod.p       sys/mount.p       sys/nexect.p	\
sys/nice.p        sys/open.p        sys/pause.p       sys/pipe.p	\
sys/plock.p       sys/profil.p      sys/ptrace.p      sys/read.p	\
sys/sbrk.p        sys/setgid.p      sys/setpgrp.p     sys/setuid.p	\
sys/semsys.p      sys/shmsys.p	    sys/stat.p        sys/stime.p	\
sys/stty.p        sys/sync.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/wait.p        sys/write.p	    sys/signal.p     			\
sys/getdents.p    sys/fstatfs.p     sys/getmsg.p      sys/getuniv.p 	\
sys/mkdir.p       sys/msgsys.p      sys/poll.p        sys/putmsg.p      \
sys/rmdir.p       sys/setuniv.p     sys/statfs.p      sys/uadmin.p	\
sys/advfs.p	  sys/rdebug.p	    sys/rfstart.p     sys/rfstop.p	\
sys/rfsys.p	  sys/rmount.p	    sys/rumount.p     sys/sysfs.p	\
sys/unadvfs.p     sys/getmname.p    sys/getrpid.p

all:
# compile crt runtime routines, a makefile exists in that directory
#
	cd crt; make -e $(IGN) nonprof
	$(PROF)cd crt; make -e $(IGN) prof "NONPROF=: "
	cd crt.68881; make -e $(IGN) nonprof
	$(PROF)cd crt.68881; make -e $(IGN) prof "NONPROF=: "
#
#
#  compile csu startup routines, makefile exists in that directory
#
	cd csu ; make -e $(IGN) nonprof 
	$(PROF)cd csu ; make -e $(IGN) prof
#
#  compile gen and sys directories
#
	make -e $(IGN) nonprof
	$(PROF)make -e $(IGN) prof "NONPROF=: "

nonprof: $(OBJECTS)

prof: $(POBJECTS)

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

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

.c~.o .c~.p:
	$(GET) $(*D)/s.$(*F).c && /bin/mv $(*F).c $*.c
	@echo $*.c:
	$(NONPROF)$(CC) $(DEFLIST) $(SDEFLIST) $(INCLIST)$(CFLAGS) -c $*.c  && \
	$(NONPROF)mv $(*F).o $*.o
	$(PROF)$(CC) $(DEFLIST) $(INCLIST) -p $(CFLAGS) -c $*.c  && \
	$(PROF) mv $(*F).o $*.p
	-rm $*.c

.s~.o .s~.p:
	$(GET) $(*D)/s.$(*F).s && /bin/mv $(*F).s $*.s
	@echo $*.s:
	$(NONPROF)$(M4) $(SDEFLIST) -DMCOUNT=\# $*.s   > $(*F).s && \
	$(NONPROF)$(CC) $(DEFLIST) $(INCLIST) $(CFLAGS) -c $(*F).s && \
	$(NONPROF)mv $(*F).o $*.o
	$(PROF)$(M4) mcount.def  $*.s   > $(*F).s   && \
	$(PROF)$(CC) $(DEFLIST) $(INCLIST) $(CFLAGS) -c $(*F).s  && \
	$(PROF)mv $(*F).o $*.p
	-rm $*.s $(*F).s

archive10:
#
# 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.
	$(PROF)for i in *.no ; do mv $$i `basename $$i .no`.o ; done
	mv cuexit.o cuexit.x
	mv fakcu.o fakcu.x
	$(LORDER) *.o | tsort >objlist
	mv cuexit.x cuexit.o
	mv fakcu.x fakcu.o
#
# build the archive with the modules in correct order.
	$(AR) q ../lib.libc `cat objlist` cuexit.o fakcu.o
	#$(STRIP) -r ../lib.libc
	$(AR) ts ../lib.libc >../lib.contents
#
# build the profiled library archive, first renaming the
#	.p (profiled object) modules to .o
	$(PROF)for i in *.p ; do mv $$i `basename $$i .p`.o ; done
	$(PROF)for i in *.np ; do mv $$i `basename $$i .np`.o ; done
	mv cuexit.o cuexit.x
	mv fakcu.o fakcu.x
	$(LORDER) *.o | tsort >objlist
	mv cuexit.x cuexit.o
	mv fakcu.x fakcu.o
	$(PROF)$(AR) q ../libp.libc `cat objlist` cuexit.o fakcu.o
	#$(PROF)$(STRIP) -r ../libp.libc
	$(PROF)$(AR) ts ../libp.libc >../libp.contents

archive881:
#
# 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.
	$(PROF)for i in *.fo ; do mv $$i `basename $$i .fo`.o ; done
	mv cuexit.o cuexit.x
	mv fakcu.o fakcu.x
	$(LORDER) *.o | tsort >objlist
	mv cuexit.x cuexit.o
	mv fakcu.x fakcu.o
#
# build the archive with the modules in correct order.
	$(AR) q ../lib.libmc `cat objlist` cuexit.o fakcu.o
	#$(STRIP) -r ../lib.libmc
	$(AR) ts ../lib.libmc >../libmc.contents
#
# build the profiled library archive, first renaming the
#	.p (profiled object) modules to .o
	$(PROF)for i in *.fp ; do mv $$i `basename $$i .fp`.o ; done
	mv cuexit.o cuexit.x
	mv fakcu.o fakcu.x
	$(LORDER) *.o | tsort >objlist
	mv cuexit.x cuexit.o
	mv fakcu.x fakcu.o
	$(PROF)$(AR) q ../libp.libmc `cat objlist` cuexit.o fakcu.o
	#$(PROF)$(STRIP) -r ../libmp.libc
	$(PROF)$(AR) ts ../libp.libmc >../libmp.contents

clean:
	-rm -f *.[ops]

clobber: clean
	-rm -f */*.[op]
