# 
# Mach Operating System
# Copyright (c) 1990 Carnegie-Mellon University
# All rights reserved.  The CMU software License Agreement specifies
# the terms and conditions for use and redistribution.
#
# HISTORY
# $Log:	Makefile,v $
# Revision 2.4  90/11/16  11:42:25  rwd
# 	Change AT386 to I386.
# 	[90/10/18            rwd]
# 
# Revision 2.3  90/09/27  13:51:20  rwd
# 	Add -O to CFLAGS.
# 	[90/09/26            rwd]
# 	Clean up depend for minit.
# 	[90/09/08            rwd]
# 
# Revision 2.2  90/09/08  00:06:16  rwd
# 	Added boot program.
# 	[90/09/03            rwd]
# 	Clean up.  Don't make deviceUser.c here.
# 	[90/08/07            rwd]
# 
#

INCLUDES= -I. -I/u/adam/mach-include -I/usr/include
DEFINES=
MIG= mig
MIGFLAGS= $(INCLUDES) $(DEFINES)
CFLAGS= -O $(INCLUDES) $(DEFINES)
PMAXLDFLAGS= -e __start 
I386LDFLAGS= -x -e __start
LDFLAGS= $(${TARGET_MACHINE}LDFLAGS?${${TARGET_MACHINE}LDFLAGS}:-x -e start) -L/u/adam/mach/release/i386/lib
LDLIBS		= -lthreads -lc		# -lc for syscall
#UXLIBS		= -lmach3_vus -lc
UXLIBS		= -lmach_sa -lc
#SALIBS		= -lmach3_sa
SALIBS		= -lmach_sa
# CFLAGS		= -MD -O
OBJS		= bsd_1Server.o \
		  excServer.o \
		  udev_memory_objectServer.o \
		  ufs_memory_objectServer.o \
		  bdev_fops.o \
		  bsd_copy.o \
		  bsd_descrip.o \
		  bsd_dops.o \
		  bsd_exception.o \
		  bsd_exec.o \
		  bsd_exit.o \
		  bsd_fops.o \
		  bsd_fops2.o \
		  bsd_fork.o \
		  bsd_host.o \
		  bsd_io.o \
		  bsd_ioctl.o \
		  bsd_itimer.o \
		  bsd_lookup.o \
		  bsd_machdep.o \
		  bsd_misc.o \
		  bsd_mman.o \
		  bsd_mount.o \
		  bsd_prot.o \
		  error_codes.o \
		  machine_ptrace.o \
		  bsd_select.o \
		  bsd_signal.o \
		  bsd_server_side.o \
		  bsd_special.o \
		  init_sysent.o \
		  mach_error.o \
		  mach_privileged_ports.o \
		  main.o \
		  mem_fops.o \
		  server_loop.o \
		  syscall.o \
		  tty_fops.o \
		  ufs_devpager.o \
		  ufs_alloc.o \
		  ufs_dir.o \
		  ufs_dops.o \
		  ufs_fops.o \
		  ufs_inode.o \
		  ufs_mount.o \
		  ufs_pager.o \
		  ufs_subr.o \
		  ufs_tables.o \
		  pipe_fops.o \
		  subr_cbuf.o \
		  subr_clib.o \
		  subr_copy.o \
		  subr_fops.o \
		  subr_timeout.o \
		  subr_uerror.o \
		  bzero.o \
		  map_file.o
#		  bcopy.o

BOOT_OBJS= boot.o error_codes.o mach_error.o mach_privileged_ports.o

all	: minit poe boot

clean	:
	rm -rf *

minit	: minit.c
	$(CC) $(CFLAGS) -MD -o minit minit.c

boot	: $(BOOT_OBJS)
	ld $(LDFLAGS) -o boot $(BOOT_OBJS) $(LDLIBS) $(UXLIBS)

poe	: $(OBJS) vers.o
	ld $(LDFLAGS) -o poe.out $(OBJS) vers.o $(LDLIBS) $(SALIBS)
	mv poe.out poe
	ls -s poe
	size poe

poe_ce	: $(OBJS) vers.o
	ld $(LDFLAGS) -o poe_ce.out $(OBJS) vers.o $(LDLIBS) $(UXLIBS)
	mv poe_ce.out poe_ce
	ls -s poe_ce
	size poe_ce

VERSION_FILES = conf/version.major \
		conf/version.minor \
		conf/version.variant \
		conf/version.edit \
		conf/version.patch

vers.c : ${VERSION_FILES} conf/copyright conf/newvers.sh
	@/bin/sh conf/newvers.sh conf/copyright `cat ${VERSION_FILES}`

bsd_1Server.c : bsd_1.defs
	$(MIG) $(MIGFLAGS) -MD bsd_1.defs

excServer.c : exc.defs
	$(MIG) $(MIGFLAGS) -MD exc.defs

ufs_memory_objectServer.c : memory_object.defs
	$(MIG) $(MIGFLAGS) -MD -DSUBSYSTEM=ufs_memory_object \
		-DSERVERPREFIX=ufs_ memory_object.defs

udev_memory_objectServer.c : memory_object.defs
	$(MIG) $(MIGFLAGS) -MD -DSUBSYSTEM=udev_memory_object \
		-DSERVERPREFIX=udev_ memory_object.defs

subr_mutex_sa.o : subr_mutex.c
	$(CC) $(CFLAGS) -c -DSA=1 subr_mutex.c
	mv subr_mutex.o subr_mutex_sa.o

subr_mutex_nsa.o : subr_mutex.c
	$(CC) $(CFLAGS) -c -DSA=0 subr_mutex.c
	mv subr_mutex.o subr_mutex_nsa.o

bcopy.o : /lib/libc.a
	ar x /lib/libc.a bcopy.o

bzero.o : /lib/libc.a
	ar x /lib/libc.a bzero.o

bsd_machdep.o:	machine/bsd_machdep.c
	$(CC) $(CFLAGS) -c -o bsd_machdep.o machine/bsd_machdep.c

machine_ptrace.o:	machine/machine_ptrace.c
	$(CC) $(CFLAGS) -c -o machine_ptrace.o machine/machine_ptrace.c

.EXIT:
	@md -u Makedep -d *.d

# -include Makedep
