PWB1/sys/source/s4/makefile

LIB = /lib
DD = tmp

CC = cc
CCFLAGS = -O
USRINC = /usr/include/

LD = -ld
LDFLAGS = -x

.c.o:
	$(CC) -c $(CCFLAGS) $<
	$(LD) -r $(LDFLAGS) $*.o
	mv a.out $*.o

AS = -as

.s.o:
	$(AS) -o $*.o $<
	$(LD) -r $(LDFLAGS) $*.o
	mv a.out $*.o

AR = ar


#------
# install: Create and install libc.a & *crt.o.
#------
install: in_libc.a in_crt0


#------
# libc.a: Create libc.a in local directory.
#------
libc.a: abort.o abs.o access.o alarm.o alloc.o malloc.o area.o atof.o atoi.o atol.o \
	chdir.o chmod.o chown.o ctime.o dup.o execl.o execv.o exect.o rin.o \
	fltpr.o fork.o fstat.o getcsw.o getgid.o getpw.o \
	getuid.o gtty.o hmul.o kill.o \
	ladd.o ldfps.o link.o locv.o longops.o ltod.o

libc.a:	makdir.o mcount.o mknod.o mktemp.o \
	mon.o mount.o nice.o nlist.o \
	perror.o pipe.o printf.o ptrace.o putc.o qsort.o reset.o \
	setgid.o setuid.o signal.o sleep.o snstat.o stime.o \
	stty.o sync.o time.o times.o \
	umount.o unlink.o wait.o close.o creat.o errlst.o \
	exit.o ffltpr.o getc.o getchr.o

libc.a:	getpid.o itol.o lseek.o nargs.o open.o prof.o \
	putchr.o read.o sbrk.o seek.o tell.o \
	stat.o write.o cerror.o csv.o ltoi.o setjmp.o _exit.o \
	acct.o realloc.o cleanup.o setpgrp.o \
	strlen.o strcpy.o strcat.o strcmp.o

libc.a:
	-rm -f libc.a tmp.a
	$(AR) r tmp.a abort.o abs.o access.o alarm.o \
			realloc.o alloc.o malloc.o area.o atof.o atoi.o atol.o
	$(AR) r tmp.a chdir.o chmod.o chown.o ctime.o dup.o execl.o execv.o exect.o rin.o
	$(AR) r tmp.a fltpr.o fork.o fstat.o getcsw.o getgid.o getpw.o \
			getuid.o gtty.o hmul.o kill.o
	$(AR) r tmp.a ladd.o ldfps.o link.o locv.o longops.o ltod.o
	$(AR) r tmp.a makdir.o mcount.o mknod.o mktemp.o \
			mon.o mount.o nice.o nlist.o
	$(AR) r tmp.a perror.o pipe.o printf.o ptrace.o putc.o qsort.o reset.o
	$(AR) r tmp.a setgid.o setuid.o signal.o sleep.o snstat.o stime.o \
			stty.o sync.o time.o times.o
	$(AR) r tmp.a umount.o unlink.o wait.o close.o creat.o errlst.o \
			exit.o ffltpr.o getc.o getchr.o
	$(AR) r tmp.a getpid.o itol.o lseek.o nargs.o open.o prof.o \
			putchr.o read.o sbrk.o seek.o tell.o
	$(AR) r tmp.a stat.o write.o cerror.o csv.o ltoi.o setjmp.o _exit.o
	$(AR) r tmp.a acct.o cleanup.o setpgrp.o \
			strlen.o strcpy.o strcat.o strcmp.o
	-chmod 644 tmp.a
	mv tmp.a libc.a


#------
# in_libc.a: Create libc.a, if it isn't already, and move it to $(LIB)/libc.a.
#------
in_libc.a: libc.a
	-mv $(LIB)/libc.a $(LIB)/$(DD)libc.a
	mv libc.a $(LIB)/libc.a
	-chown bin $(LIB)/libc.a
	-rm -f $(LIB)/$(DD)libc.a
	ls -l $(LIB)/libc.a


#------
# in_crt0: Create & install crt0.o, fcrt0.o, mcrt0.o.
#------
in_crt0: crt0.o fcrt0.o mcrt0.o
	-chmod 644 crt0.o fcrt0.o mcrt0.o
	mv crt0.o $(LIB)/crt0.o
	mv fcrt0.o $(LIB)/fcrt0.o
	mv mcrt0.o $(LIB)/mcrt0.o
	-chown bin $(LIB)/crt0.o $(LIB)/fcrt0.o $(LIB)/mcrt0.o
	ls -l $(LIB)/crt0.o $(LIB)/fcrt0.o $(LIB)/mcrt0.o


#------
# clean: Remove all .o files.
#------
clean:
	-rm -f abort.o abs.o access.o alarm.o alloc.o area.o atof.o atoi.o atol.o
	-rm -f chdir.o chmod.o chown.o ctime.o dup.o execl.o execv.o exect.o rin.o
	-rm -f fltpr.o fork.o fstat.o getcsw.o getgid.o getpw.o \
			getuid.o gtty.o hmul.o kill.o
	-rm -f ladd.o ldfps.o link.o locv.o longops.o ltod.o
	-rm -f makdir.o malloc.o mcount.o mknod.o mktemp.o \
			mon.o mount.o nice.o nlist.o
	-rm -f perror.o pipe.o printf.o ptrace.o putc.o qsort.o reset.o
	-rm -f setgid.o setuid.o signal.o sleep.o snstat.o stime.o \
			stty.o sync.o time.o times.o
	-rm -f umount.o unlink.o wait.o close.o creat.o errlst.o \
			exit.o ffltpr.o getc.o getchr.o
	-rm -f getpid.o itol.o lseek.o nargs.o open.o prof.o \
			putchr.o read.o sbrk.o seek.o tell.o
	-rm -f stat.o write.o cerror.o csv.o ltoi.o setjmp.o _exit.o
	-rm -f acct.o realloc.o cleanup.o setpgrp.o  \
			strlen.o strcpy.o strcat.o strcmp.o
	-rm -f crt0.o fcrt0.o mcrt0.o


#------
# Dependencies for individual .o files.
#------
abort.o:	abort.s
abs.o:	abs.s
access.o:	access.s
alarm.o:	alarm.s
alloc.o:	alloc.c
malloc.o:	malloc.c
area.o:	area.c
atof.o:	atof.s
atoi.o:	atoi.c
atol.o:	atol.c

chdir.o:	chdir.s
chmod.o:	chmod.s
chown.o:	chown.s
ctime.o:	ctime.c
dup.o:	dup.s
execl.o:	execl.s
execv.o:	execv.s
exect.o:	exect.s
rin.o:	rin.c

fltpr.o:	fltpr.s
fork.o:	fork.s
fstat.o:	fstat.s
getcsw.o:	getcsw.s
getgid.o:	getgid.s
getpw.o:	getpw.c
getuid.o:	getuid.s
gtty.o:	gtty.s
hmul.o:	hmul.s
kill.o:	kill.s

ladd.o:	ladd.s
ldfps.o:	ldfps.s
link.o:	link.s
locv.o:	locv.s
longops.o:	longops.s
ltod.o:	ltod.s

makdir.o:	makdir.s
mcount.o:	mcount.s
mknod.o:	mknod.s
mktemp.o:	mktemp.c
mon.o:	mon.c
mount.o:	mount.s
nice.o:	nice.s
nlist.o:	nlist.c

perror.o:	perror.c
pipe.o:	pipe.s
printf.o:	printf.s
ptrace.o:	ptrace.s
putc.o:	putc.s
qsort.o:	qsort.c
reset.o:	reset.s

setgid.o:	setgid.s
setuid.o:	setuid.s
signal.o:	signal.s
sleep.o:	sleep.s
snstat.o:	snstat.s
stime.o:	stime.s
stty.o:	stty.s
sync.o:	sync.s
time.o:	time.s
times.o:	times.s

umount.o:	umount.s
unlink.o:	unlink.s
wait.o:	wait.s
close.o:	close.s
creat.o:	creat.s
errlst.o:	errlst.c
exit.o:	exit.s
ffltpr.o:	ffltpr.s
getc.o:	getc.s
getchr.o:	getchr.s

getpid.o:	getpid.s
itol.o:	itol.s
lseek.o:	lseek.c
nargs.o:	nargs.s
open.o:	open.s
prof.o:	prof.s
putchr.o:	putchr.s
read.o:	read.s
sbrk.o:	sbrk.s
seek.o:	seek.s
tell.o:	tell.s

stat.o:	stat.s
write.o:	write.s
cerror.o:	cerror.s
csv.o:	csv.s
ltoi.o:	ltoi.s
setjmp.o:	setjmp.s
_exit.o:	_exit.s

acct.o:	acct.s
realloc.o:	realloc.c
cleanup.o:	cleanup.s
setpgrp.o:	setpgrp.s
strlen.o:	strlen.c
strcpy.o:	strcpy.c
strcat.o:	strcat.c
strcmp.o:	strcmp.c

crt0.o:	crt0.s
	$(AS) -o crt0.o crt0.s
fcrt0.o:	fcrt0.s
	$(AS) -o fcrt0.o fcrt0.s
mcrt0.o:	mcrt0.s
	$(AS) -o mcrt0.o mcrt0.s