|
|
Darwin 0.2 Driver Kit
#
# Makefile for libDriver.
#
# Builds up to 32 targets:
# i386 and ppc
# both DEBUG and RELEASE
# both kernel and user mode
# both stripped and unstripped
#
# Currently the stripped versions are installed in /usr/local/lib/driverkit.
# Eventually they'll be installed in /usr/lib/driverkit.
#
MAKEFILEDIR = $(MAKEFILEPATH)/pb_makefiles
include $(MAKEFILEDIR)/platform.make
BUILD_NAME=libDriver
BUILD_VERS=.A
COMPAT_VERS=122
ifneq "" "$(wildcard /bin/mkdirs)"
MKDIRS = /bin/mkdirs
else
MKDIRS = /bin/mkdir -p
endif
INSTALL_DIR= /usr/lib/
INSTALL_LOCAL_DIR= /usr/local/lib/
INSTALLHDRS_LOCAL_DIR=$(SYSTEM_LIBRARY_DIR)/Frameworks/System.framework/Versions/B/PrivateHeaders/driverkit
AUDIOHDRS_LOCAL_DIR=$(SYSTEM_LIBRARY_DIR)/Frameworks/System.framework/Versions/B/PrivateHeaders/audio
#
# OBJROOT and SYMROOT are overridden by RC tools for builds from read-only
# source. OBJDIR is where libraries are built. .o files are placed in
# OBJROOT/xxx, where xxx is something like 68kDebug or i386Release.
#
#
OBJROOT= .
SYMROOT= .
OBJDIR=$(OBJROOT)/libs
SYMDIR=$(SYMROOT)/syms
#
# Directories containing 'mode-dependent' source.
#
SOURCE_DIRS= User Kernel ppc i386 eisa pci pcmcia
AR= ar
LD= ld
CC= cc
MIG= /usr/bin/mig
MACHINE=i386
MACHINE_LIST=ppc i386
BUS_LIST=eisa pci pcmcia
ARFLAGS= rucv
ARCHFULL_RC_CFLAGS = $(foreach X, $(RC_ARCHS),$(addprefix -arch , $(X)))
ARCHLESS_RC_CFLAGS = $(filter-out $(ARCHFULL_RC_CFLAGS), $(RC_CFLAGS))
#COMMON_CFLAGS = -g $(ARCHLESS_RC_CFLAGS) -fno-omit-frame-pointer -I.. -I. -MD -I$(LOCAL_DEVELOPER_DIR)/Headers -Wformat -Wno-precomp -D_POSIX_SOURCE -static
COMMON_CFLAGS = -g -nostdinc $(ARCHLESS_RC_CFLAGS) -fno-omit-frame-pointer -I.. -I. -MD -I$(NEXT_ROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks/System.framework/PrivateHeaders -I$(NEXT_ROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks/System.framework/Headers -I$(NEXT_ROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks/System.framework/PrivateHeaders/bsd -I$(NEXT_ROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks/System.framework/PrivateHeaders/machdep -I$(NEXT_ROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks/System.framework/Headers/bsd -F$(NEXT_ROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks -Wformat -Wno-precomp -traditional-cpp
DEBUG_CFLAGS= -g -DDEBUG -DDDM_DEBUG
PROFILE_CFLAGS= -pg
RELEASE_CFLAGS= -g -O2
#KERN_CFLAGS= -D_KERNEL -DKERNEL -DMACH_USER_API -DDRIVER_PRIVATE
KERN_CFLAGS= -static -DNCPUS=1 -D_KERNEL -DKERNEL -DMACH_USER_API -DDRIVER_PRIVATE
USER_CFLAGS=
ppc_CFLAGS= -msoft-float -force_cpusubtype_ALL -mcpu=604 -finline -fno-keep-inline-functions -Wno-four-char-constants
i386_CFLAGS= -force_cpusubtype_ALL
MD_CFLAGS= $(${MACHINE}_CFLAGS)
INSTALLFLAGS= -c -m 644
LIBINSTALLFLAGS= -c -m 555 -S "-S"
KERNLIBINSTALLFLAGS= -c -m 555
INSTALL= /usr/bin/install
#
# Source files common to all builds.
#
COMMON_MFILES= IODevice.m
COMMON_CFILES=
#
# Debug-only source files.
#
DEBUG_MFILES=
DEBUG_CFILES=
#
# Kernel/user dependent, machine independent source files appearing in
# both User/ and Kernel/.
#
# 8-Nov-91 - NX*Lock now in libsys...
#
MODE_MFILES= IOConfigTable.m generalFuncs.m
MODE_CFILES= memcpy.c
#
# Kernel-only and User-only source files.
#
KERNEL_MFILES= IODisk.m IOLogicalDisk.m IODiskPartition.m volCheck.m \
IODeviceDescription.m IODirectDevice.m NXSpinLock.m \
NXConditionLock.m NXLock.m generalFuncsPrivate.m IOBufDevice.m \
IONetwork.m IONetbufQueue.m devswAndVfssw.m IOEthernet.m \
IOEthernetDebugger.m IOSCSIController.m kernelDiskMethods.m \
SCSIDisk.m SCSIDiskPrivate.m SCSIDiskThread.m SCSIGeneric.m \
SCSIGlobals.m IODisplay.m IOMemoryContainer.m \
IOMemoryDescriptor.m IOSimpleMemoryDescriptor.m EventDriver.m \
EventInput.m EventIO.m IOEventSource.m KeyMap.m IOAudio.m \
AudioChannel.m AudioStream.m InputStream.m OutputStream.m \
AudioCommand.m audio_kern_server.m audio_server.m snd_server.m \
IOBuffer.m
KERNEL_CFILES= disk_label.c dma.c label_subr.c snd_reply.c audio_mix.c \
audio_peak.c audio_mulaw.c
USER_MFILES= IODeviceMaster.m NXConditionLock.m NXLock.m NXSpinLock.m
USER_CFILES=
#
# MI bus files
#
eisa_BUS_MFILES= IOEISADirectDevice.m IOEISADeviceDescription.m \
IOEISADMATransferBuffer.m
eisa_BUS_CFILES=
pci_BUS_MFILES= IOPCIDirectDevice.m IOPCIDeviceDescription.m
pci_BUS_CFILES=
pcmcia_BUS_MFILES= IOPCMCIADirectDevice.m IOPCMCIADeviceDescription.m \
IOPCMCIATuple.m
pcmcia_BUS_CFILES=
#
# User C files generated by mig.
#
CONFIG_CFILES= ConfigUser.c
DRIVER_SERVER_CFILES= driverServerUser.c
USER_MIG_CFILES= $(DRIVER_SERVER_CFILES)
#
# Kernel C files generated by mig
#
EVENT_CFILES= EventServer.c
KERNEL_MIG_CFILES= $(EVENT_CFILES)
AUDIO_SERVER_CFILES= audioServer.c
AUDIO_REPLY_CFILES= audioReplyUser.c
AUDIO_CFILES= $(AUDIO_SERVER_CFILES) $(AUDIO_REPLY_CFILES)
KERNEL_MIG_CFILES= $(EVENT_CFILES) $(AUDIO_CFILES)
#
# Force mig to run before audio source is compiled.
#
OTHER_KERN_DEPENDS= $(AUDIO_CFILES)
#
# Mig source.
#
CONFIG_MIG_SOURCE= Config.defs
DRIVER_SERVER_MIG_SOURCE= driverServer.defs
EVENT_MIG_SOURCE= Event.defs
AUDIO_SERVER_MIG_SOURCE= audio.defs
AUDIO_REPLY_MIG_SOURCE= audioReply.defs
#
# machine dependent source files - user, kernel, common.
#
i386_KERN_CFILES= $(eisa_BUS_CFILES) $(pci_BUS_CFILES) $(pcmcia_BUS_CFILES)
i386_USER_CFILES=
i386_CFILES=
i386_KERN_MFILES= $(eisa_BUS_MFILES) $(pci_BUS_MFILES) $(pcmcia_BUS_MFILES)\
IOFrameBufferDisplay.m \
IOSVGADisplay.m IOVPCodeDisplay.m \
IOMallocLow.m machdepFuncs.m
i386_USER_MFILES=
i386_MFILES=
ppc_USER_CFILES=
ppc_CFILES=
ppc_KERN_MFILES= IOPPCDirectDevice.m IOPPCDeviceDescription.m IOPropertyTable.m \
IODeviceTreeBus.m IOTreeDevice.m IOFramebuffer.m IODBDMA.m \
IOMacRiscPCI.m IOPCIDevice.m \
IOSmartDisplay.m IONDRVFramebuffer.m IONDRVInterface.m IONDRVLibraries.m
ppc_KERN_CFILES= IOPEFLoader.c IOPEFInternals.c
ppc_USER_MFILES=
ppc_MFILES=
MD_KERN_CFILES= $(${MACHINE}_KERN_CFILES)
MD_USER_CFILES= $(${MACHINE}_USER_CFILES)
MD_CFILES= $(${MACHINE}_CFILES)
MD_KERN_MFILES= $(${MACHINE}_KERN_MFILES)
MD_USER_MFILES= $(${MACHINE}_USER_MFILES)
MD_MFILES= $(${MACHINE}_MFILES)
#
# Other files to installsrc (in addition to *.[mch]).
#
OTHER_SOURCE= Makefile $(DRIVER_SERVER_MIG_SOURCE) \
Kernel/$(EVENT_MIG_SOURCE) \
Kernel/$(AUDIO_SERVER_MIG_SOURCE) \
Kernel/$(AUDIO_REPLY_MIG_SOURCE)
#
# Common targets.
#
first debug: $(MACHINE)kernrelease
debug: $(MACHINE)kerndebug
release: $(MACHINE)release
profile: $(MACHINE)profile
kerndebug: $(MACHINE)kerndebug
kernrelease: $(MACHINE)kernrelease
kernprofile: $(MACHINE)kernprofile
libs: libraries lipoize
all: libs
TARGET_LIST= release kernrelease profile
VPATH = $(BUILD_DIR):$(OBJDIR):$(SYMDIR):$(MODE_DIRS)
BUILD_DIRS = ppcRelease i386Release \
ppcProfile i386Profile \
ppcDebug i386Debug \
ppcKernRelease i386KernRelease \
ppcKernDebug i386KernDebug
#
# Object files.
#
COMMON_OFILES= $(COMMON_MFILES:.m=.o) \
$(COMMON_CFILES:.c=.o) \
$(MODE_MFILES:.m=.o) \
$(MODE_CFILES:.c=.o)
DEBUG_OFILES= $(DEBUG_MFILES:.m=.o) \
$(DEBUG_CFILES:.c=.o)
KERNEL_OFILES= $(KERNEL_MFILES:.m=.o) \
$(KERNEL_CFILES:.c=.o) \
$(KERNEL_MIG_CFILES:.c=.o)
BUS_OFILES= $(BUS_MFILES:.m=.o) \
$(BUS_CFILES:.c=.o)
USER_OFILES= $(USER_MFILES:.m=.o) \
$(USER_CFILES:.c=.o) \
$(USER_MIG_CFILES:.c=.o)
MD_OFILES= $(MD_MFILES:.m=.o) \
$(MD_CFILES:.c=.o)
#
# Enumerate all object files for each target.
#
KERN_MD_OFILES= $(COMMON_OFILES) \
$(KERNEL_OFILES) \
$(BUS_OFILES) \
$(MD_OFILES) \
$(MD_KERN_MFILES:.m=.o) \
$(MD_KERN_CFILES:.c=.o)
USER_MD_OFILES= $(COMMON_OFILES) \
$(USER_OFILES) \
$(MD_OFILES) \
$(MD_USER_MFILES:.m=.o) \
$(MD_USER_CFILES:.c=.o)
#
# Enumerate mode directories for each target. These get added to VPATH.
#
USER_DIRS= User
KERNEL_DIRS= Kernel:eisa:pci:pcmcia
#
# Recursive rules to invoke various target builds.
#
# $(MACHINE) must resolve to exactly one of {i386,ppc}
# at this time.
#
#
$(MACHINE)release: $(SYMDIR) always
@echo '********** Building $(BUILD_NAME)$(MACHINE).dylib **********'
ARCH_DIR="$(MACHINE)"; \
$(MAKE) $(SYMDIR)/$(BUILD_NAME)$(MACHINE).dylib \
"BUILD_DIR=$(OBJROOT)/$(MACHINE)Release" \
"MODE_DIRS=$(USER_DIRS):$$ARCH_DIR" \
"OBJROOT=$(OBJROOT)" \
"SYMROOT=$(SYMROOT)" \
"MACHINE=$(MACHINE)" \
"FRAMEWORK=System" \
"OFILES=$(USER_MD_OFILES)" \
"OTHER_CFLAGS=$(RELEASE_CFLAGS) $(USER_CFLAGS) \
$(MD_CFLAGS) -arch $(MACHINE)"
$(MACHINE)profile: $(SYMDIR) always
@echo '********** Building $(BUILD_NAME)$(MACHINE)_profile.dylib **********'
ARCH_DIR="$(MACHINE)"; \
$(MAKE) $(SYMDIR)/$(BUILD_NAME)$(MACHINE)_profile.dylib \
"BUILD_DIR=$(OBJROOT)/$(MACHINE)Profile" \
"MODE_DIRS=$(USER_DIRS):$$ARCH_DIR" \
"OBJROOT=$(OBJROOT)" \
"SYMROOT=$(SYMROOT)" \
"MACHINE=$(MACHINE)" \
"FRAMEWORK=System,_profile" \
"OFILES=$(USER_MD_OFILES)" \
"OTHER_CFLAGS=$(PROFILE_CFLAGS) $(USER_CFLAGS) \
$(MD_CFLAGS) -arch $(MACHINE)"
$(MACHINE)debug: $(SYMDIR) always
@echo '********** Building $(BUILD_NAME)$(MACHINE)_g.dylib ***********'
ARCH_DIR="$(MACHINE)"; \
$(MAKE) $(SYMDIR)/$(BUILD_NAME)$(MACHINE)_g.dylib \
"BUILD_DIR=$(OBJROOT)/$(MACHINE)Debug" \
"MODE_DIRS=$(USER_DIRS):$$ARCH_DIR" \
"OBJROOT=$(OBJROOT)" \
"SYMROOT=$(SYMROOT)" \
"MACHINE=$(MACHINE)" \
"FRAMEWORK=System" \
"OFILES=$(USER_MD_OFILES) $(DEBUG_OFILES)" \
"OTHER_CFLAGS=$(DEBUG_CFLAGS) $(USER_CFLAGS) \
$(MD_CFLAGS) -arch $(MACHINE)"
$(MACHINE)kernrelease: $(SYMDIR) always
@echo '********** Building $(BUILD_NAME)$(MACHINE)_kern.o **********'
ARCH_DIR="$(MACHINE)"; \
$(MAKE) $(SYMDIR)/$(BUILD_NAME)$(MACHINE)_kern.o \
"BUILD_DIR=$(OBJROOT)/$(MACHINE)KernRelease" \
"OFILES=$(KERN_MD_OFILES)" \
"OBJROOT=$(OBJROOT)" \
"SYMROOT=$(SYMROOT)" \
"MACHINE=$(MACHINE)" \
"MODE_DIRS=$(KERNEL_DIRS):$$ARCH_DIR" \
"OTHER_CFLAGS=$(RELEASE_CFLAGS) $(KERN_CFLAGS) \
$(MD_CFLAGS) -arch $(MACHINE)"
$(MACHINE)kernprofile: $(SYMDIR) always
@echo '********** Building $(BUILD_NAME)$(MACHINE)_kern.o **********'
ARCH_DIR="$(MACHINE)"; \
$(MAKE) $(SYMDIR)/$(BUILD_NAME)$(MACHINE)_kern.o \
"BUILD_DIR=$(OBJROOT)/$(MACHINE)KernProfile" \
"OFILES=$(KERN_MD_OFILES)" \
"OBJROOT=$(OBJROOT)" \
"SYMROOT=$(SYMROOT)" \
"MACHINE=$(MACHINE)" \
"MODE_DIRS=$(KERNEL_DIRS):$$ARCH_DIR" \
"OTHER_CFLAGS=$(PROFILE_CFLAGS) $(KERN_CFLAGS) \
$(MD_CFLAGS) -arch $(MACHINE)"
$(MACHINE)kerndebug: $(SYMDIR) always
@echo '********** Building $(BUILD_NAME)$(MACHINE)_kern_g.o **********'
ARCH_DIR="$(MACHINE)"; \
$(MAKE) $(SYMDIR)/$(BUILD_NAME)$(MACHINE)_kern_g.o \
"BUILD_DIR=$(OBJROOT)/$(MACHINE)KernDebug" \
"OFILES=$(KERN_MD_OFILES) $(DEBUG_OFILES)" \
"OBJROOT=$(OBJROOT)" \
"SYMROOT=$(SYMROOT)" \
"MACHINE=$(MACHINE)" \
"MODE_DIRS=$(KERNEL_DIRS):$$ARCH_DIR" \
"OTHER_CFLAGS=$(DEBUG_CFLAGS) $(KERN_CFLAGS) \
$(MD_CFLAGS) -arch $(MACHINE)"
#
# Project management make rules.
#
# Note that this clean rule doesn't delete the build directories
# in OBJROOT, but I think that's OK; RC does that for us.
clean: always
rm -rf $(BUILD_DIRS) *.d *~ libs syms Makedep tags
tags: always
rm -f tags
ctags -o $(SYMROOT)/tags *.[hm]
@for i in $(SOURCE_DIRS); \
do \
echo ================= make $@ for $$i =================; \
(cd $$i; ${MAKE} $@) || exit $?; \
done
always:
installsrc: SRCROOT $(SRCROOT)
#
# first install the common source (in this directory).
#
gnutar cf - *.[mch] $(OTHER_SOURCE) | (cd $(SRCROOT); gnutar xpf -)
#
# now install all of the mode-dependent source.
#
@for i in $(SOURCE_DIRS); \
do \
echo ================= make $@ for $$i =================; \
(cd $$i; ${MAKE} SRCROOT=$(SRCROOT)/$$i $@) || exit $?; \
done
USER_EXPORT_LIB_SUFFIXES= .dylib _profile.dylib
USER_LOCAL_LIB_SUFFIXES=
KERN_LIB_SUFFIXES= _kern.o
USER_LIB_SUFFIXES= $(USER_EXPORT_LIB_SUFFIXES) $(USER_LOCAL_LIB_SUFFIXES)
#
# We only export release versions of the user library to /usr/lib. All
# others go to /usr/local/lib.
#
EXPORT_LIB_SUFFIXES= $(USER_EXPORT_LIB_SUFFIXES)
LOCAL_LIB_SUFFIXES= $(KERN_LIB_SUFFIXES) $(USER_LOCAL_LIB_SUFFIXES)
install: DSTROOT $(DSTROOT)$(INSTALL_DIR) libraries lipoize install_only
#
# Target to just install, not build. Fat libraries must exist; this doesn't
# build them.
#
# FIXME - strip the archives on the way out to DSTROOT.
#
install_only: installhdrs DSTROOT $(DSTROOT)$(INSTALL_DIR) \
$(DSTROOT)$(INSTALL_LOCAL_DIR) ALWAYS
#
# Now our binaries.
#
@for libsuffix in $(EXPORT_LIB_SUFFIXES); do \
libname=`echo $(BUILD_NAME)$$libsuffix | sed -e 's/\./$(BUILD_VERS)./'`; \
liblinkname=$(BUILD_NAME)$$libsuffix; \
CWD=`pwd`; \
echo cd $(SYMROOT)/syms; \
cd $(SYMROOT)/syms; \
echo install $(LIBINSTALLFLAGS) $$libname \
$(DSTROOT)$(INSTALL_DIR); \
$(INSTALL) $(LIBINSTALLFLAGS) $$libname \
$(DSTROOT)$(INSTALL_DIR); \
echo cd $(DSTROOT)$(INSTALL_DIR); \
cd $(DSTROOT)$(INSTALL_DIR); \
echo ln -sf $$libname $$liblinkname; \
ln -sf $$libname $$liblinkname; \
echo cd $$CWD; \
cd $$CWD; \
done
@for libsuffix in $(LOCAL_LIB_SUFFIXES); do \
libname=$(BUILD_NAME)$$libsuffix; \
CWD=`pwd`; \
echo cd $(SYMROOT)/syms; \
cd $(SYMROOT)/syms; \
echo install $(KERNLIBINSTALLFLAGS) $$libname $(DSTROOT)$(INSTALL_LOCAL_DIR); \
$(INSTALL) $(KERNLIBINSTALLFLAGS) $$libname \
$(DSTROOT)$(INSTALL_LOCAL_DIR); \
echo cd $$CWD; \
cd $$CWD; \
done
#
# Build all of the individual archives as appropriate.
#
libraries: ALWAYS
@if [ -n "$(RC_ARCHS)" ]; then \
machines="$(RC_ARCHS)"; \
elif [ -n "$(MACHINE_LIST)" ]; then \
machines="$(MACHINE_LIST)"; \
elif [ -n "$(MACHINE)" ]; then \
machines="$(MACHINE)"; \
else \
echo no machine list found; \
exit 1; \
fi; \
echo Building architecture-specific libraries for $$machines...; \
for machine in $$machines; do \
$(MAKE) $(TARGET_LIST) \
"MACHINE=$$machine" \
"OBJROOT=$(OBJROOT)" \
"SYMROOT=$(SYMROOT)" \
"DSTROOT=$(DSTROOT)"; \
done
#
# Lipo the libraries for the various architectures together. This target
# assumes that the constituent libraries have already been built.
#
lipoize: ALWAYS
@if [ -n "$(RC_ARCHS)" ]; then \
machines="$(RC_ARCHS)"; \
elif [ -n "$(MACHINE_LIST)" ]; then \
machines="$(MACHINE_LIST)"; \
elif [ -n "$(MACHINE)" ]; then \
machines="$(MACHINE)"; \
else \
echo no machine list found; \
exit 1; \
fi; \
echo Building fat user archives...; \
echo cd $(SYMROOT)/syms; \
cd $(SYMROOT)/syms; \
for libsuffix in $(USER_LIB_SUFFIXES); do \
args=""; \
libname=`echo $(BUILD_NAME)$$libsuffix | sed -e 's/\./$(BUILD_VERS)./'`; \
for machine in $$machines; do \
args="$$args $(BUILD_NAME)""$$machine""$$libsuffix"; \
done; \
echo lipo -create -o $$libname $$args; \
lipo -create -o $$libname $$args; \
done; \
echo Building fat kernel relocatables...; \
for libsuffix in $(KERN_LIB_SUFFIXES); do \
args=""; \
libname=$(BUILD_NAME)$$libsuffix; \
for machine in $$machines; do \
args="$$args $(BUILD_NAME)""$$machine""$$libsuffix"; \
done; \
echo lipo -create -o $$libname $$args; \
lipo -create -o $$libname $$args; \
echo touch $$libname; \
touch $$libname; \
done
installhdrs: $(DSTROOT)/$(INSTALLHDRS_LOCAL_DIR) \
$(DSTROOT)/$(AUDIOHDRS_LOCAL_DIR)
#
# install mig source.
#
$(INSTALL) $(INSTALLFLAGS) $(DRIVER_SERVER_MIG_SOURCE) $(DSTROOT)/$(INSTALLHDRS_LOCAL_DIR)
$(INSTALL) $(INSTALLFLAGS) Kernel/$(EVENT_MIG_SOURCE) $(DSTROOT)/$(INSTALLHDRS_LOCAL_DIR)
$(INSTALL) $(INSTALLFLAGS) Kernel/$(AUDIO_SERVER_MIG_SOURCE) $(DSTROOT)/$(INSTALLHDRS_LOCAL_DIR)
$(INSTALL) $(INSTALLFLAGS) Kernel/$(AUDIO_REPLY_MIG_SOURCE) $(DSTROOT)/$(INSTALLHDRS_LOCAL_DIR)
$(INSTALL) $(INSTALLFLAGS) Kernel/audio_msgs.h $(DSTROOT)$(AUDIOHDRS_LOCAL_DIR)
ALWAYS:
$(BUILD_DIR) $(SRCROOT) $(DSTROOT)$(HEADER_DIR) $(OBJDIR) \
$(DSTROOT)/$(INSTALLHDRS_LOCAL_DIR) \
$(DSTROOT)/$(AUDIOHDRS_LOCAL_DIR) \
$(SYMDIR) $(DSTROOT)$(INSTALL_DIR) $(DSTROOT)$(INSTALL_LOCAL_DIR):
$(MKDIRS) $@
SRCROOT DSTROOT:
@if [ -n "${$@}" ]; \
then \
exit 0; \
else \
echo Must define $@; \
exit 1; \
fi
.c.o:
$(CC) $(COMMON_CFLAGS) $(OTHER_CFLAGS) -c $< \
-I$(BUILD_DIR) \
-dependency-file $(BUILD_DIR)/$(*F).d -o $(BUILD_DIR)/$(*F).o
md -u $(BUILD_DIR)/Makedep -f -d $(BUILD_DIR)/$(*F).d
.m.o:
$(CC) $(COMMON_CFLAGS) $(OTHER_CFLAGS) -c $< \
-I$(BUILD_DIR) \
-dependency-file $(BUILD_DIR)/$(*F).d -o $(BUILD_DIR)/$(*F).o
md -u $(BUILD_DIR)/Makedep -f -d $(BUILD_DIR)/$(*F).d
#
# Mig rules. We copy mig source down to the build directory because
# mig writes its output to cwd.
#
$(DRIVER_SERVER_CFILES): $(DRIVER_SERVER_MIG_SOURCE)
rm -f $(BUILD_DIR)/$(DRIVER_SERVER_CFILES)
rm -f $(BUILD_DIR)/$(DRIVER_SERVER_MIG_SOURCE)
cp $(DRIVER_SERVER_MIG_SOURCE) $(BUILD_DIR)
(cd $(BUILD_DIR); \
${MIG} -arch $(MACHINE) -server /dev/null \
$(DRIVER_SERVER_MIG_SOURCE))
$(CONFIG_CFILES): ../Config/$(CONFIG_MIG_SOURCE)
rm -f $(BUILD_DIR)/$(CONFIG_CFILES)
rm -f $(BUILD_DIR)/$(CONFIG_MIG_SOURCE)
cp ../Config/$(CONFIG_MIG_SOURCE) $(BUILD_DIR)
(cd $(BUILD_DIR); \
${MIG} -arch $(MACHINE) -server /dev/null $(CONFIG_MIG_SOURCE))
$(EVENT_CFILES): Kernel/$(EVENT_MIG_SOURCE)
rm -f $(BUILD_DIR)/$(EVENT_CFILES)
rm -f $(BUILD_DIR)/$(EVENT_MIG_SOURCE)
cp Kernel/$(EVENT_MIG_SOURCE) $(BUILD_DIR)
(cd $(BUILD_DIR); \
${MIG} -arch $(MACHINE) -user /dev/null \
$(EVENT_MIG_SOURCE))
$(AUDIO_SERVER_CFILES): Kernel/$(AUDIO_SERVER_MIG_SOURCE)
rm -f $(BUILD_DIR)/$(AUDIO_SERVER_CFILES)
rm -f $(BUILD_DIR)/$(AUDIO_SERVER_MIG_SOURCE)
cp Kernel/$(AUDIO_SERVER_MIG_SOURCE) $(BUILD_DIR)
(cd $(BUILD_DIR); \
${MIG} -arch $(MACHINE) -user /dev/null \
$(AUDIO_SERVER_MIG_SOURCE))
#
# FIXME: get rid of this sed hack to set timeout and SEND_SWITCH.
#
$(AUDIO_REPLY_CFILES): Kernel/$(AUDIO_REPLY_MIG_SOURCE)
rm -f $(BUILD_DIR)/$(AUDIO_REPLY_CFILES)
rm -f $(BUILD_DIR)/$(AUDIO_REPLY_MIG_SOURCE)
cp Kernel/$(AUDIO_REPLY_MIG_SOURCE) $(BUILD_DIR)
(cd $(BUILD_DIR); \
${MIG} -arch $(MACHINE) -server /dev/null \
$(AUDIO_REPLY_MIG_SOURCE))
sed '/msg_send/s/MSG_OPTION_NONE, 0/SEND_TIMEOUT|SEND_SWITCH, 1000/' \
$(BUILD_DIR)/audioReplyUser.c > $(BUILD_DIR)/tempr_user.c
rm -f $(BUILD_DIR)/audioReplyUser.c
sed '/msg_rpc/s/RCV_TIMEOUT, 0/RCV_TIMEOUT|SEND_SWITCH, 1000/' \
$(BUILD_DIR)/tempr_user.c > $(BUILD_DIR)/audioReplyUser.c
rm -f $(BUILD_DIR)/tempr_user.c
vers.o: $(OFILES)
rm -f $(BUILD_DIR)/vers.c
vers_string -l $(BUILD_NAME) > $(BUILD_DIR)/vers.c
$(CC) -arch $(MACHINE) $(ARCHLESS_RC_CFLAGS) -c $(BUILD_DIR)/vers.c \
-o $(BUILD_DIR)/vers.o
#
# Rules to build the libraries. Kernel versions only build and install
# unstripped .o's; the kernel project strips the end result when it
# installs. (Note we build .o's for the kernel version to ensure that
# all object files are linked in, even those which might only be needed
# by loadable modules.) User versions build stripped versions in OBJDIR and
# unstripped in SYMDIR for debug. Stripped archives eventually get
# installed in INSTALL_DIR.
#
# Kernel versions:
#
$(SYMDIR)/$(BUILD_NAME)$(MACHINE)_kern.o \
$(SYMDIR)/$(BUILD_NAME)$(MACHINE)_kern_g.o: $(BUILD_DIR) \
$(OTHER_KERN_DEPENDS) $(OFILES) vers.o
@echo ----building kernel library----
$(LD) -r -o $@ $(OFILES) vers.o
#
# User versions:
#
$(SYMDIR)/$(BUILD_NAME)$(MACHINE).dylib \
$(SYMDIR)/$(BUILD_NAME)$(MACHINE)_profile.dylib \
$(SYMDIR)/$(BUILD_NAME)$(MACHINE)_g.dylib: $(BUILD_DIR) $(OFILES) vers.o
@echo ----building user library----
@if [ -z "`vers_string -n`" ]; then \
echo libtool -o $@ $(OFILES) vers.o -dynamic -framework $(FRAMEWORK)\
-install_name $(INSTALL_DIR)$(BUILD_NAME)$(BUILD_VERS).dylib\
-compatibility_version $(COMPAT_VERS); \
libtool -o $@ $(OFILES) vers.o -dynamic -framework $(FRAMEWORK) \
-install_name $(INSTALL_DIR)$(BUILD_NAME)$(BUILD_VERS).dylib\
-seg1addr 0x66700000 \
-compatibility_version $(COMPAT_VERS); \
else \
echo libtool -o $@ $(OFILES) vers.o -dynamic -framework $(FRAMEWORK)\
-install_name $(INSTALL_DIR)$(BUILD_NAME)$(BUILD_VERS).dylib\
-compatibility_version $(COMPAT_VERS) \
-current_version "`vers_string -n`"; \
libtool -o $@ $(OFILES) vers.o -dynamic -framework $(FRAMEWORK) \
-install_name $(INSTALL_DIR)$(BUILD_NAME)$(BUILD_VERS).dylib\
-compatibility_version $(COMPAT_VERS) \
-seg1addr 0x66700000 \
-current_version "`vers_string -n`"; \
fi
-include $(BUILD_DIR)/Makedep
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.