#
# Mach Operating System
# Copyright (c) 1993,1992 Carnegie Mellon University
# All Rights Reserved.
# 
# Permission to use, copy, modify and distribute this software and its
# documentation is hereby granted, provided that both the copyright
# notice and this permission notice appear in all copies of the
# software, derivative works or modified versions, and any portions
# thereof, and that both notices appear in supporting documentation.
# 
# CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
# CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
# ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
# 
# Carnegie Mellon requests users of this software to return to
# 
#  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
#  School of Computer Science
#  Carnegie Mellon University
#  Pittsburgh PA 15213-3890
# 
# any improvements or extensions that they make and grant Carnegie Mellon
# the rights to redistribute these changes.
#  
#
# HISTORY
# $Log:	Makefile,v $
# Revision 2.6  93/04/14  11:47:16  mrt
# 	Updated for ODE make
# 	[92/08/18            mrt]
# 	Added MACHID_SUN4_ROUTINES.
# 	[93/01/18            berman]
# 	Added alpha.  Run machid.defs through CPP because it uses ifdefs.
# 	[92/12/02            af]
# 
# Revision 2.2  92/01/22  23:10:21  rpd
# 	Created.
# 	[92/01/17            rpd]
# 


DEPENDENCIES 	=
LIBRARIES 	= libmachid.a
EXPLIB_TARGETS	= export_libmachid.a
EXPDIR		= /lib/
IDIR		= /lib/
ILIST		= libmachid.a

# Ar truncates the file  names
LIB_LONG_NAMES	=


# routines from machid.defs

MACHID_VAX_ROUTINES = vax_thread_state

MACHID_I386_ROUTINES = i386_thread_state

MACHID_PMAX_ROUTINES = mips_thread_state

MACHID_SUN3_ROUTINES = sun3_thread_state

MACHID_SUN4_ROUTINES = sparc_thread_state

MACHID_ALPHA_ROUTINES = alpha_thread_state

MACHID_ROUTINES = mach_type mach_register mach_lookup mach_port \
	host_ports host_processor_sets host_tasks host_threads \
	host_processors processor_set_threads processor_set_tasks \
	task_threads host_basic_info host_sched_info host_load_info \
	processor_set_default host_kernel_version processor_basic_info \
	processor_set_basic_info processor_set_sched_info task_unix_info \
	task_basic_info task_thread_times_info thread_basic_info \
	thread_sched_info task_terminate task_suspend \
	task_resume thread_terminate thread_suspend thread_resume \
	thread_abort processor_set_destroy processor_start \
	processor_exit vm_region vm_read thread_priority \
	thread_max_priority task_priority processor_set_max_priority \
	port_names port_type port_get_refs port_get_receive_status \
	port_get_set_status processor_get_assignment \
	thread_get_assignment task_get_assignment \
	host_processor_set_priv host_processor_set_names \
	processor_set_create task_create thread_create processor_assign \
	thread_assign thread_assign_default task_assign \
	task_assign_default thread_policy processor_set_policy_enable \
	processor_set_policy_disable host_default_pager vm_statistics \
	host_kernel_task task_host thread_host processor_host \
	${MACHID_${TARGET_MACHINE}_ROUTINES}

# routines from machid_debug.defs

MACHID_DEBUG_ROUTINES = port_get_srights port_space_info \
	port_dnrequest_info host_stack_usage processor_set_stack_usage \
	host_zone_info port_kernel_object mach_kernel_object \
	vm_region_info vm_object_info vm_object_pages

# routines from machid_dpager.defs

MACHID_DPAGER_ROUTINES = default_pager_info default_pager_objects \
	default_pager_object_pages

# mig rules


MACHID_USER_SRCS = ${MACHID_ROUTINES:S/$/.c/g}
MACHID_SRCS =  ${MACHID_USER_SRCS} machid_server.c

MACHID_DEBUG_USER_SRCS = ${MACHID_DEBUG_ROUTINES:S/$/.c/g}
MACHID_DEBUG_SRCS = ${MACHID_DEBUG_USER_SRCS} machid_debug_server.c

MACHID_DPAGER_USER_SRCS = ${MACHID_DPAGER_ROUTINES:S/$/.c/g}
MACHID_DPAGER_SRCS = ${MACHID_DPAGER_USER_SRCS} machid_dpager_server.c

MIG_HDRS = machid.h machid_debug.h machid_dpager.h


OFILES = machid_lib.o machid_vmstuff.o \
	machid_server.o ${MACHID_ROUTINES:S/$/.o/g} \
	machid_debug_server.o ${MACHID_DEBUG_ROUTINES:S/$/.o/g} \
	machid_dpager_server.o ${MACHID_DPAGER_ROUTINES:S/$/.o/g}


.include <${RULES_MK}>


# mig rules to generate intermediate source files in the object directory
# Make all the mig targets depend on a single "timestamp" source. Othewise
# the mig rule gets run once for each target.


${MACHID_SRCS} : machid_stamp
machid_stamp:	machid.defs
	${MIG} ${_MIGFLAGS_} -i ./ -user '${MACHID_USER_SRCS}' \
		-server machid_server.c  ${machid.defs:P} && \
	touch machid_stamp

${MACHID_DEBUG_SRCS} : machid_debug_stamp
machid_debug_stamp:    machid_debug.defs
	${MIG} ${_MIGFLAGS_} -i ./ -user '${MACHID_DEBUG_USER_SRCS}' \
		-server machid_debug_server.c  ${machid_debug.defs:P} && \
	touch machid_debug_stamp

${MACHID_DPAGER_SRCS} : machid_dpager_stamp
machid_dpager_stamp:	machid_dpager.defs
	${MIG} ${_MIGFLAGS_} -i ./ -user '${MACHID_DPAGER_USER_SRCS}' \
		-server machid_dpager_server.c  ${machid_dpager.defs:P} && \
	touch machid_dpager_stamp

