#
#	File:		FeatureList
#
#	Contains:	This script is a wrapper for ParseFeatures for specific builds. The
#				main thing that it does is strip ": ROM" from the feature list.
#				The script part should be rolled into ParseFeatures.
#
#				PLEASE try to keep this in sync with BBSStartup
#
#	Written by:	Kurt Clark.
#
#	Copyright:	© 1992-1993 by Apple Computer, Inc., all rights reserved.
#
#	Change History (most recent first):
#
#				 1/29/17	HQX		Add conditionals for "Custer" (Mirrored Drive Door G4 ROM v10.2.1)
#									resources, change TNTPlus to hasPCI.
#				  1/9/17	HQX		Add Classic flag
#				12/28/16	HQX		Finally realise how this works. Patch to emulate the missing
#									"ParseFeatures" command. Added NewWorld and TNTPlus flags.
#
#	  <SM25>	12/13/93	PN		Roll in KAOs and Horror changes to support Malcom and AJ
#									machines
#	  <SM24>	11/10/93	fau		Update from SuperMunggio <SMG2-3>.
#	  <SMG3>	 9/23/93	chp		Add TNT debug flag pseudo-feature.
#	  <SMG2>	 8/25/93	chp		Added hasGrandCentral feature for TNT interrupt/DMA controller.
#	  <SM22>	 11/9/93	KW		somehow removed DBLite...put back in.
#	  <SM21>	 11/9/93	KW		added forSTP601 and forSTPnop
#	  <SM20>	 11/8/93	SAM		Added hadROMGibbly.
#	  <SM19>	 10/6/93	RC		Rolled in change from MC Jesus which adds the flag forPDMProto
#	   <MC2>	 10/4/93	RC		Add forPDMProto to list (to support EVT2/3 PDM and EVT1 Cold
#									Fusion)
#	  <SM18>	 9/30/93	IH		Split hasDisplayMgr feature into hasDisplayMgr and
#									hasDisplayMgrWindows. This allows the display manager in the
#									gibbly without patching out the window manager on PDM.
#	  <SM17>	 9/25/93	PN		Adding DBLite feature
#	  <SM16>	  9/2/93	SKH		change hasSCSIDiskMode to hasSCSIDiskModeFeature
#	  <SM15>	  8/4/93	JDR		removed hasNewSoundMgr since there is only the one version, and
#									that is 3.0.
#	  <SM14>	  8/3/93	BH		Added hasManEject
#	  <SM13>	 7/21/93	RC		Changed PowerPCNativeComponents to SupportNativeComponents
#	  <SM12>	 7/14/93	RC		added hasAMIC feature flag
#	  <SM11>	  7/7/93	RC		added feature flag for native component Mgr support
#	  <SM10>	  7/1/93	BT		Add hasCacheTypeCPU for Figment.
#	   <SM9>	 6/28/93	PN		Add feature hasMACE into the list
#	   <SM8>	  6/6/93	BT		Add hasRISCV0ResMgrPatches to featurelist.
#	   <SM7>	 5/30/93	SAM		Moved ROM_EM to Tidbits.
#	   <SM6>	 5/21/93	CSS		Add international features: hasDoubleByte, Script_Char_Extra,
#									hasPenFraction, hasFullKerning, hasGlyphState.
#	   <SM5>	 5/20/93	BT		Update build to only include Figment under conditional compile
#									flag "hasNewHeapMgr"
#	   <SM4>	 3/31/93	kc		Add code to remove case dependencys from command line arguments.
#	   <SM3>	 3/27/93	IH		Add hasDisplayMgr to available features.
#	   <SM2>	  3/5/93	RC		added hasCAppleTalkInROM for PDM version of AppleTalk (all
#									written in C)
#	  <SM12>	  2/5/93	SAM		Removed ÔRISCÕ conditional.
#	  <SM11>	  2/2/93	GMR		Added hasSwim3 feature.
#	  <SM10>	12/17/92	RB		Added the features hasYMCA, hasHMC, hasCPUIDRegister.
#	   <SM9>	 12/8/92	RC		Added "RISC" to the FeatureList
#	   <SM8>	 12/3/92	RB		Added the feature has2MegROMOrMore.
#	   <SM7>	11/30/92	EH		Add hasPratt for the Blackbird memory controller chip.
#	   <SM4>	11/30/92	kc		Add forRomulator.
#	   <SM5>	11/29/92	PW		Removed the COUSIN_ITT feature (hasAsyncSCSI is all we need).
#	   <SM4>	11/24/92	RB		Added the feature hasROM_EM so it can be easily taken out.
#	   <SM3>	11/23/92	kc		Add DefineOverides as a second parameter.
#	   <SM2>	11/11/92	RB		Added the features hasSCSIDiskMode, hasAppleTalkInROM,
#									hasNewAge, hasVideoIn, hasAsyncSCSI, hasDSP and hasNewSoundMgr
#									COUSIN_ITT.
#
#
#

Set cdg5Features "¶
	Vanilla					¶
	LatestHack				¶
	hasPCI					¶
	BlueBox					¶
	NewWorld				¶
	CusterBacklightParcel	¶
	CusterUSBShimKeyboard	¶
	cdg5HappyMac			¶
	NKDebugShim				¶
	NKShowLog				¶
	ExtraNKLogging			¶
	DebugAlways				¶
	SkipTbxiValidation		¶
	TbxiPatchG4Version		¶
	TbxiDisableAppleKiwi	¶
	Wedge					¶
"

Set	AvailableFeatures  "{cdg5Features}			¶
						hasBCScreen				¶
						hasROMGibbly			¶
						hasManEject				¶
						hasCacheTypeCPU			¶
						forPDMProto				¶
						hasAMIC					¶
						SupportNativeComponents	¶
						hasRISCV0ResMgrPatches	¶
						hasNewHeapMgr			¶
						hasPDMMaceEnet			¶
						hasMace					¶
						hasMixedMode			¶
						kHasNewFloppyDriver		¶
						nonVectorizedRom		¶
						hasSCSIDiskModeFeature	¶
						hasDataAccessPACK		¶
						hasSysSevenResources	¶
						hasVMinROM				¶
						has2MegROMOrMore		¶
						hasCAppleTalkInROM		¶
						hasAppleTalkInROM		¶
						hasNewAge				¶
						hasVideoIn				¶
						hasAsyncSCSI			¶
						hasDSP					¶
						BadBlockSparingEnabled	¶
						CubeE					¶
						ForROM					¶
						IopADB					¶
						LC930					¶
						DBLite					¶
						NewBuildSystem			¶
						OssADB					¶
						PadForOverpatch 		¶
						PwrMgrADB				¶
						ROMFastTraps			¶
						ROMinRAM				¶
						Supports24Bit			¶
						SystemSevenOrLater		¶
						SystemSixOrLater		¶
						TheFuture				¶
						ViaADB					¶
						forADBKeyboards 		¶
						forAppleTalk20			¶
						forCyclone				¶
						forLocalizability		¶
						forNonADBKeyboards		¶
						forPDMDebug 			¶
						forTNTDebug 			¶
						forRomulator			¶
						forSmurf				¶
						forSTP601				¶
						forSTP601v1				¶
						forSTPnop				¶
						has040MMU				¶
						hasADBKeyLayouts		¶
						hasASC					¶
						hasAliasMgr 			¶
						hasApple2Fonts			¶
						hasAppleEventMgr		¶
						hasBalloonHelp			¶
						hasBattery				¶
						hasCQD					¶
						hasCommToolbox			¶
						hasCPUIDRegister		¶
						hasDAFB					¶
						hasDisplayMgr			¶
						hasDisplayMgrWindows	¶
						hasDJMEMC				¶
						hasDataAccessMgr		¶
						hasEDisk				¶
						hasEclipseVIA2			¶
						hasEditionMgr			¶
						hasEgret				¶
						hasExtendedCharacterSet ¶
						hasFMC					¶
						hasGDU					¶
						hasGlue					¶
						hasGrandCentral			¶
						hasHarpoVIA 			¶
						hasHMC					¶
						hasIdle 				¶
						hasIopScc				¶
						hasIopSwim				¶
						hasJaws 				¶
						hasLCDScreen			¶
						hasMDU					¶
						hasMMU					¶
						hasMSC					¶
						hasMac2VIA2 			¶
						hasMagic				¶
						hasNetBoot				¶
						hasNiagra				¶
						hasNonADBKeyLayouts 	¶
						hasNormandy 			¶
						hasOrwell				¶
						hasOss					¶
						hasPSC					¶
						hasPictureUtilities 	¶
						hasPortableKeyLayouts	¶
						hasPowerMgr 			¶
						hasPratt	 			¶
						BlackBirdDebug	 		¶
						hasProtectedPRAM		¶
						hasPwrControls			¶
						hasPwrMgrClock			¶
						hasRBV					¶
						hasSCSI96				¶
						hasSWIM2				¶
						hasSwim3				¶
						hasSlotMgr				¶
						hasSonora				¶
						hasSplineFonts			¶
						hasTrueType2Byte		¶
						hasVDAC					¶
						hasVIAClock 			¶
						hasVISA2				¶
						hasVISADecoder			¶
						hasWaimeaVIA2			¶
						hasYMCA					¶
						isUniversal				¶
						nonSerializedIO 		¶
						onHafMac				¶
						onMac32 				¶
						onNuMac 				¶
						pre70					¶
						hasDoubleByte			¶
						Script_Char_Extra		¶
						hasPenFraction			¶
						hasFullKerning			¶
						hasGlyphState			¶
						useROMFonts				"




#	# ParseFeatures is lost to the ages...
#	If	"` ParseFeatures -a "{AvailableFeatures}" -f ": ROM {1}" `" =~ /': ROM '(Å)¨1/
#		Set Defines "{¨1}"
#	Else
#		Exit 1
#	End
	
#	Set Defines "-d "
	
	# This block of code replaces it...
	For Feature in {AvailableFeatures}
		Set Defines "{Defines} -d {Feature}=`Evaluate " {1} " =~ /Å {Feature} Å/`"
	End
	
	# Ugh!
	Set Defines "`Echo {Defines} | StreamEdit -e '¥,° Replace /=1/ "=TRUE" -c °' -e '¥,° Replace /=0/ "=FALSE" -c °'`"
	
	For Override in {2}

		If "{Override}" =~ /(Å)¨1=(Å)¨2/
			Set Name {¨1}
			Set Value {¨2}
		Else
			Set Name {Override}
			Set Value TRUE
		End

		If {Value} =~ /true/
			Set Value 1 #TRUE # to allow overrides to work right!
		Else If {Value} =~ /false/
			Set Value 0 #FALSE
		End

		If "{Defines}" =~ /(Å)¨3{Name}=[Â ¶t]+(Å)¨4/
			Set Defines "{¨3} {Name}={Value} {¨4}"
		Else
			Set Defines "{Defines} -d {Name}={Value}"
		End
	End

	Echo {Defines}

	Exit
