# Copyright (c) 1999 Apple Computer, Inc.  All rights reserved.
# $Id: Jamfile,v 1.7 1999/10/28 01:49:19 lecroy Exp $


#
# Compiler definitions and flags
switch $(OS) {

case FREEBSD :
	CCFLAGS += -g -ansi -Wall ;
	C++FLAGS = $(CCFLAGS) ;
	
case RHAPSODY :
	CC = cc ;
	C++ = c++ ;
	LINK = c++ ;
	MIG = mig ;

	CCFLAGS += -D__MacOSX__ -DNeXT -arch ppc -Wall  -include PlatformHeader.h -include revision.h -Wredundant-decls -Wcast-qual -Wno-four-char-constants -fhandle-exceptions -fcommon ;

	FRAMEWORKS = -framework Foundation -framework NIAccess ;

	CCFLAGS += -g ;
	C++FLAGS = $(CCFLAGS) ;
}

#
# Optimization flags
OPTIM = -O0 ;


#
# Additional rules

rule UserObject
{
	switch $(>) {
		case *.defs	: MIG $(<) : $(>) ;
		case *		: ECHO "Unknown suffix on" $(>) ;
	}
}

rule MIG
{
	#
	# A lie to get Jam to execute our rule; we don't actually build a .o file.
	DEPENDS $(<) : $(>) ;
	TEMPORARY $(<) ;
	
	#
	# The actual rule
	DEPENDS $(<:S=.h) $(<:B)Server.c $(<:B)User.c : $(<) ;
	Clean clean : $(<:S=.h) $(<:B)Server.c $(<:B)User.c ;
}
actions MIG
{
	$(MIG) $(>) ;
}


#
# Where our headers are located
HDRS = . 
		QTFileLib
		OSMemoryLib
		APIModules
		APIModules/APICommonCode
		APIModules/OSMemory_Modules
		APIModules/QTSSAccessLogModule
		APIModules/QTSSFileModule
		APIModules/QTSSFlowControlModule
		APIModules/QTSSRawFileModule
		APIModules/QTSSReflectorModule
		APIModules/QTSSSvrControlModule
		APIModules/QTSSWebDebugModule
		APIModules/QTSSWebStatsModule
                APIModules/QTSSAccessModule.bproj
                APIModules/QTSSFilePrivsModule.bproj
		APIModules/QTSSSpamDefenseModule
		APIStubLib
		CommonUtilitiesLib
		RTCPUtilitiesLib
		PrefsSourceLib
		Server.tproj
		;

#
# Our interfaces
DEFS =  QTSCRPI.defs ;

#
# Our source files
CFILES = PrefsSourceLib/nilib2.c CommonUtilitiesLib/mycondition.c CommonUtilitiesLib/mymutex.c
	$(DEFS:B)Server.c CommonUtilitiesLib/base64.c
		 ;
CPPFILES =

# SERVER SOURCES

	Server.tproj/QTSSExpirationDate.cpp
	Server.tproj/QTSSCallbacks.cpp
	Server.tproj/QTSSDictionary.cpp
	Server.tproj/QTSSErrorLogModule.cpp
	Server.tproj/QTSSMessages.cpp
	Server.tproj/QTSSModule.cpp
	Server.tproj/QTSSModuleInterface.cpp
	Server.tproj/QTSSPrefs.cpp
	Server.tproj/QTSServer.cpp
	Server.tproj/QTSServerInterface.cpp
	Server.tproj/RTCPTask.cpp
	Server.tproj/RTPSession.cpp
	Server.tproj/RTPSessionInterface.cpp
	Server.tproj/RTPStream.cpp
	Server.tproj/RTSPProtocol.cpp
	Server.tproj/RTSPRequest.cpp
	Server.tproj/RTSPRequestInterface.cpp
	Server.tproj/RTSPRequestStream.cpp
	Server.tproj/RTSPResponseStream.cpp
	Server.tproj/RTSPSession.cpp
	Server.tproj/RTSPSessionInterface.cpp
	Server.tproj/main.cpp
	
# COMMON UTILITIES

	CommonUtilitiesLib/EventContext.cpp
	CommonUtilitiesLib/Exception.cpp
	CommonUtilitiesLib/IdleTask.cpp
	CommonUtilitiesLib/MyAssert.cpp
	CommonUtilitiesLib/OS.cpp
	CommonUtilitiesLib/OSCodeFragment.cpp
	CommonUtilitiesLib/OSCond.cpp
	CommonUtilitiesLib/OSFileSource.cpp
	CommonUtilitiesLib/OSHeap.cpp
	CommonUtilitiesLib/OSMutex.cpp
	CommonUtilitiesLib/OSQueue.cpp
	CommonUtilitiesLib/OSRef.cpp
	CommonUtilitiesLib/OSThread.cpp
	CommonUtilitiesLib/Socket.cpp
	CommonUtilitiesLib/SocketUtils.cpp
	CommonUtilitiesLib/ResizeableStringFormatter.cpp
	CommonUtilitiesLib/StringFormatter.cpp
	CommonUtilitiesLib/StringParser.cpp
	CommonUtilitiesLib/StringTranslator.cpp
	CommonUtilitiesLib/StrPtrLen.cpp
	CommonUtilitiesLib/Task.cpp
	CommonUtilitiesLib/TCPListenerSocket.cpp
	CommonUtilitiesLib/TCPSocket.cpp
	CommonUtilitiesLib/TimeoutTask.cpp
	CommonUtilitiesLib/UDPDemuxer.cpp
	CommonUtilitiesLib/UDPSocket.cpp
	CommonUtilitiesLib/UDPSocketPool.cpp
	CommonUtilitiesLib/UserAgentParser.cpp
	
# PREFS SOURCE LIB
	PrefsSourceLib/FilePrefsSource.cpp	
	PrefsSourceLib/NetInfoPrefsSource.cpp


# OSMEMORY LIB

	OSMemoryLib/OSMemory.cpp

# RTCPUTILS LIB

	RTCPUtilitiesLib/RTCPAPPPacket.cpp
	RTCPUtilitiesLib/RTCPPacket.cpp
	RTCPUtilitiesLib/RTCPSRPacket.cpp

# QTFILE LIB

	QTFileLib/QTAtom.cpp
	QTFileLib/QTAtom_dref.cpp
	QTFileLib/QTAtom_elst.cpp
	QTFileLib/QTAtom_hinf.cpp
	QTFileLib/QTAtom_mdhd.cpp
	QTFileLib/QTAtom_mvhd.cpp
	QTFileLib/QTAtom_stco.cpp
	QTFileLib/QTAtom_stsc.cpp
	QTFileLib/QTAtom_stsd.cpp
	QTFileLib/QTAtom_stss.cpp
	QTFileLib/QTAtom_stsz.cpp
	QTFileLib/QTAtom_stts.cpp
	QTFileLib/QTAtom_tkhd.cpp
	QTFileLib/QTAtom_tref.cpp
	QTFileLib/QTFile.cpp
	QTFileLib/QTFile_FileControlBlock.cpp
	QTFileLib/QTHintTrack.cpp
	QTFileLib/QTRTPFile.cpp
	QTFileLib/QTTrack.cpp
	
# API STUB LIBRARY

	APIStubLib/QTSS_Private.cpp

# API MODULES / API COMMON CODE

	APIModules/APICommonCode/QTSSModuleUtils.cpp
	APIModules/APICommonCode/QTSSRollingLog.cpp
	APIModules/APICommonCode/SDPSourceInfo.cpp
	APIModules/APICommonCode/SourceInfo.cpp
	
# QTSS ACCESS LOG MODULE

	APIModules/QTSSAccessLogModule/QTSSAccessLogModule.cpp

# QTSS FILE MODULE

	APIModules/QTSSFileModule/QTSSFileModule.cpp

# QTSS FLOW CONTROL MODULE

	APIModules/QTSSFlowControlModule/QTSSFlowControlModule.cpp

# QTSS REFLECTOR MODULE

	APIModules/QTSSReflectorModule/QTSSReflectorModule.cpp
	APIModules/QTSSReflectorModule/ReflectorSession.cpp
	APIModules/QTSSReflectorModule/RelayOutput.cpp
	APIModules/QTSSReflectorModule/RelaySDPSourceInfo.cpp
	APIModules/QTSSReflectorModule/RTPSessionOutput.cpp
	APIModules/QTSSReflectorModule/SequenceNumberMap.cpp
	APIModules/QTSSReflectorModule/RCFSourceInfo.cpp
	
# QTSS SERVER CONTROL MODULE

	APIModules/QTSSSvrControlModule/QTSSvrControlModule.cpp

# QTSS WEB DEBUG MODULE

	APIModules/QTSSWebDebugModule/QTSSWebDebugModule.cpp

# QTSS AUTHORIZATION MODULE

	APIModules/QTSSFilePrivsModule.bproj/QTSSFilePrivsModule.cpp

# QTSS ACCESS MODULE
#        APIModules/QTSSAccessModule.bproj/QTSSAccessModule.cpp
#        APIModules/QTSSAccessModule.bproj/AccessChecker.cpp

# QTSS WEB STATS MODULE

	APIModules/QTSSWebStatsModule/QTSSWebStatsModule.cpp

;

#
# Our libraries
LIBS = atomic ;


#
# Build all of the objects
Objects $(DEFS) $(CFILES) $(CPPFILES) ;

#
# Link the QuickTimeStreamingServer
MainFromObjects QuickTimeStreamingServer : $(CFILES:S=.o) $(CPPFILES:S=.o) ;
LinkLibraries QuickTimeStreamingServer : lib$(LIBS) ;
LINKFLAGS on QuickTimeStreamingServer += $(FRAMEWORKS) ;
