sbsv1_os/e32toolp/makmake/_secure_trgtype.pm
changeset 0 83f4b4db085c
child 1 d4b442d23379
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1_os/e32toolp/makmake/_secure_trgtype.pm	Tue Feb 02 01:39:43 2010 +0200
@@ -0,0 +1,424 @@
+# Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+# this package controls target types known to the build system
+# To add new types to the system, simply add an entry to the %Types data structure.
+# Look at the existing types for an appropriate example
+# 
+#
+
+package Trgtype;
+
+require Exporter;
+@ISA=qw(Exporter);
+@EXPORT=qw(
+	Trg_GetL
+	Trg_List
+);
+
+use strict;
+use Genutl;
+
+my %Types=(
+	ANI=>{
+		'Exports'=>{
+			MARM=>['CreateCAnimDllL__Fv'],
+			EABI=>['_Z15CreateCAnimDllLv'],
+			WINS=>['?CreateCAnimDllL@@YAPAVCAnimDll@@XZ'],
+			X86=>['?CreateCAnimDllL@@YAPAVCAnimDll@@XZ'],
+			x86gcc=>['_Z15CreateCAnimDllLv']
+		},
+		UID2=>'0x10003b22',
+	},
+	APP=>{
+		'Exports'=>{
+			MARM=>['NewApplication__Fv'],
+			EABI=>['_Z14NewApplicationv'],
+			WINS=>['?NewApplication@@YAPAVCApaApplication@@XZ'],
+			X86=>['?NewApplication@@YAPAVCApaApplication@@XZ'],
+		},
+		NeedUID3=>1,
+		UID2=>'0x100039ce',
+		Deprecated=>"Convert to EXE",
+	},
+	CTL=>{
+		'Exports'=>{
+			MARM=>['CreateControlL__FRC7TDesC16'],
+			EABI=>['_Z14CreateControlLRK7TDesC16'], 
+			WINS=>['?CreateControlL@@YAXABVTDesC16@@@Z'],
+			X86=>['?CreateControlL@@YAXABVTDesC16@@@Z'],
+		},
+		UID2=>'0x10003a34',
+		Deprecated=>"Convert to application",
+	},
+	DLL=>{
+		NeedDeffile=>1,
+	},	
+	EPOCEXE=>{
+		Basic=>'EXEDLL',
+		'Exports'=>{
+			WINS=>['?WinsMain@@YAHXZ'],
+		},
+	},
+	EXE=>{
+		Basic=>'EXE',
+	},
+	EXEDLL=>{
+		Basic=>'EXEDLL',
+		NeedDeffile=>1,
+	},
+	EXEXP=>{
+		Basic=>'EXE',
+		NeedDeffile=>1,
+	},
+	FSY=>{
+		'Exports'=>{
+			MARM=>['CreateFileSystem'],
+			EABI=>['CreateFileSystem'],
+			WINS=>['CreateFileSystem'],
+			X86=>['CreateFileSystem'],
+			x86gcc=>['CreateFileSystem']
+		},
+		UID2=>'0x100039df',
+	},
+	IMPLIB=>{
+		NeedDeffile=>1,
+		Basic=>'IMPLIB',
+	},	
+	KDLL=>{
+		FirstLib=>'EKLL.LIB',
+#		Kernel=>1,
+		System=>1,
+	},
+	KEXT=>{
+		FirstLib=>'EEXT.LIB',
+#		Kernel=>1,
+		System=>1,
+	},
+	KLIB=>{
+		Basic=>'LIB',
+#		Kernel=>1,
+		System=>1,
+	},
+	LDD=>{
+		FirstLib=>'EDEV.LIB',
+#		Kernel=>1,
+		System=>1,
+		'Exports'=>{
+			MARM=>['CreateLogicalDevice__Fv'],
+			EABI=>['_Z19CreateLogicalDevicev'],
+			WINS=>['?CreateLogicalDevice@@YAPAVDLogicalDevice@@XZ'],
+			X86=>['?CreateLogicalDevice@@YAPAVDLogicalDevice@@XZ'],
+			x86gcc=>['_Z19CreateLogicalDevicev']
+		},
+		UID2=>'0x100000af',
+	},
+	LIB=>{
+		Basic=>'LIB',
+	},
+	ECOMIIC=>{
+		'Exports'=>{
+			MARM=>['ImplementationGroupProxy__FRi'],
+			EABI=>['_Z24ImplementationGroupProxyRi'], 
+			WINS=>['?ImplementationGroupProxy@@YAPBUTImplementationProxy@@AAH@Z'],
+			X86=>['?ImplementationGroupProxy@@YAPBUTImplementationProxy@@AAH@Z'],
+		},
+		Path=>'System\Libs\Plugins',
+		UID2=>'0x10009D8D',
+		Deprecated=>"Convert to PLUGIN (ECOM)",
+	},
+	PLUGIN=>{
+		'Exports'=>{
+			MARM=>['ImplementationGroupProxy__FRi'],
+			EABI=>['_Z24ImplementationGroupProxyRi'],
+			WINS=>['?ImplementationGroupProxy@@YAPBUTImplementationProxy@@AAH@Z'],
+			X86=>['?ImplementationGroupProxy@@YAPBUTImplementationProxy@@AAH@Z'],
+			x86gcc=>['_Z24ImplementationGroupProxyRi']
+		},
+		ResourcePath=>'Resource\Plugins',
+		UID2=>'0x10009D8D',
+	},
+	PLUGIN3=>{
+		'Exports'=>{
+			MARM=>['ImplementationGroupProxy__FRi'],
+			EABI=>['_Z24ImplementationGroupProxyRi'],
+			WINS=>['?ImplementationGroupProxy@@YAPBUTImplementationProxy3@@AAH@Z'],
+			X86=>['?ImplementationGroupProxy@@YAPBUTImplementationProxy3@@AAH@Z'],
+			x86gcc=>['_Z24ImplementationGroupProxyRi']
+		},
+		ResourcePath=>'Resource\Plugins',
+		UID2=>'0x10009D93',
+	},
+	MDA=>{
+		'Exports'=>{
+			MARM=>['NewMediaLibraryL__Fv'],
+			EABI=>['_Z16NewMediaLibraryLv'],
+			WINS=>['?NewMediaLibraryL@@YAPAVCMdaLibrary@@XZ'],
+			X86=>['?NewMediaLibraryL@@YAPAVCMdaLibrary@@XZ'],
+		},
+		UID2=>'0x1000393f',
+		Deprecated=>"Convert to ???",
+	},
+	MDL=>{
+		'Exports'=>{
+			MARM=>['CreateRecognizer__Fv'],
+			EABI=>['_Z16CreateRecognizerv'],
+			WINS=>['?CreateRecognizer@@YAPAVCApaDataRecognizerType@@XZ'],
+			X86=>['?CreateRecognizer@@YAPAVCApaDataRecognizerType@@XZ'],
+		},
+		UID2=>'0x10003a19',
+		Deprecated=>"Convert to PLUGIN (ECOM)",
+	},
+	RDL=>{
+		'Exports'=>{
+			MARM=>['CreateRecognizer__Fv'],
+			EABI=>['_Z16CreateRecognizerv'],
+			WINS=>['?CreateRecognizer@@YAPAVCApaFileRecognizerType@@XZ'],
+		},
+		UID2=>'0x10003a37',
+		Deprecated=>"Convert to PLUGIN (ECOM)",
+	},
+	NOTIFIER=>{
+		'Exports'=>{
+			MARM=>['NotifierArray__Fv'],
+			EABI=>['_Z13NotifierArrayv'],
+			WINS=>['?NotifierArray@@YAPAV?$CArrayPtr@VMEikSrvNotifierBase@@@@XZ'],
+			X86=>['?NotifierArray@@YAPAV?$CArrayPtr@VMEikSrvNotifierBase@@@@XZ'],
+		},
+		Path=>'System\Notifiers',
+		UID2=>'0x10005522',
+		Deprecated=>"Convert to PLUGIN (ECOM)",
+	},
+	NOTIFIER2=>{
+		'Exports'=>{
+			MARM=>['NotifierArray__Fv'],
+			EABI=>['_Z13NotifierArrayv'],
+			WINS=>['?NotifierArray@@YAPAV?$CArrayPtr@VMEikSrvNotifierBase2@@@@XZ'],
+			X86=>['?NotifierArray@@YAPAV?$CArrayPtr@VMEikSrvNotifierBase2@@@@XZ'],
+		},
+		Path=>'System\Notifiers',
+		UID2=>'0x101fdfae',
+		Deprecated=>"Convert to PLUGIN (ECOM)",
+	},
+	TEXTNOTIFIER2=>{
+		'Exports'=>{
+			MARM=>['NotifierArray__Fv'],
+			EABI=>['_Z13NotifierArrayv'],
+			WINS=>['?NotifierArray@@YAPAV?$CArrayPtr@VMNotifierBase2@@@@XZ'],
+			X86=>['?NotifierArray@@YAPAV?$CArrayPtr@VMNotifierBase2@@@@XZ'],
+			x86gcc=>['_Z13NotifierArrayv']
+		},
+		Path=>'System\Notifiers',
+		UID2=>'0x101fe38b',
+		# Not deprecated - the Text Window Server will have AllFiles, 
+		# so it can continue scanning for binaries
+	},
+	PDD=>{
+		FirstLib=>'EDEV.LIB',
+#		Kernel=>1,
+		System=>1,
+		'Exports'=>{
+			MARM=>['CreatePhysicalDevice__Fv'],
+			EABI=>['_Z20CreatePhysicalDevicev'],
+			WINS=>['?CreatePhysicalDevice@@YAPAVDPhysicalDevice@@XZ'],
+			X86=>['?CreatePhysicalDevice@@YAPAVDPhysicalDevice@@XZ'],
+			x86gcc=>['_Z20CreatePhysicalDevicev']
+		},
+		UID2=>'0x100039d0',
+	},
+	PDL=>{
+		'Exports'=>{
+			MARM=>['NewPrinterDeviceL__Fv'],
+			EABI=>['_Z17NewPrinterDeviceLv'],
+			WINS=>['?NewPrinterDeviceL@@YAPAVCPrinterDevice@@XZ'],
+			X86=>['?NewPrinterDeviceL@@YAPAVCPrinterDevice@@XZ'],
+			x86gcc=>['_Z17NewPrinterDeviceLv']
+		},
+		UID2=>'0x10003b1c',
+		ResourcePath=>'Resource\Printers',
+	},
+	STDDLL=>{
+		NeedDeffile=>1,
+		UID2=>'0x20004C45',
+	},
+	STDEXE=>{
+		Basic=>'EXE',
+		UID2=>'0x20004C45',
+	},
+	STDLIB=>{
+		Basic=>'LIB',
+	},
+	VAR=>{
+		'Exports'=>{
+			MARM=>['VariantInitialise__Fv'],
+			EABI=>['_Z17VariantInitialisev'],
+			X86=>['?VariantInitialise@@YAPAVAsic@@XZ'],
+			x86gcc=>['_Z17VariantInitialisev']
+		},
+		FirstLib=>'EVAR.LIB',
+#		Kernel=>1,
+		System=>1,
+	},
+	VAR2=>{
+		'Exports'=>{
+			MARM=>['VariantInitialise'],
+			EABI=>['VariantInitialise'],
+			X86=>['VariantInitialise'],
+			x86gcc=>['VariantInitialise']
+		},
+		FirstLib=>'EVAR.LIB',
+		System=>1,
+	},
+	NONE=>{
+		Basic=>'IMPLIB',
+	},
+);
+
+sub Trg_GetL ($$$) {
+#	takes target type, followed by a ref to a data structure
+#	to fill with exports, second UID and default targetpath, etc.,
+#
+#	dies upon error
+
+	my ($Candidate, $TrgHash_ref)=@_;
+	$Candidate= uc $Candidate;
+
+#	Is type in our list?
+	unless (defined $Types{$Candidate}) {
+		die "ERROR: Target type \"$Candidate\" not supported\n";
+	}
+
+#	Get the data
+	my %TrgHash=%{$Types{$Candidate}};
+
+
+#	Set the defaults
+	$TrgHash{Name}=$Candidate;
+
+	
+	unless ($TrgHash{Basic}) {
+		$TrgHash{Basic}='DLL';
+	}
+
+	unless ($TrgHash{FirstLib}) {
+		$TrgHash{FirstLib}='';
+	}
+
+	unless ($TrgHash{Kernel}) {
+		$TrgHash{Kernel}=0;
+	}
+
+	unless ($TrgHash{System}) {
+		$TrgHash{System}=0;
+	}
+
+	unless ($TrgHash{Exports}{MARM}) {
+		$TrgHash{Exports}{MARM}=[];
+	}
+	else {
+		unless (@{$TrgHash{Exports}{MARM}}<=2) {
+			die "INTERNAL ERROR: Too many MARM exports defined for type \"$TrgHash{Name}\" in Trgtype.pm\n";
+		}
+	}
+
+	unless ($TrgHash{Exports}{EABI}) {
+		$TrgHash{Exports}{EABI}=[];
+	}
+	else {
+		unless (@{$TrgHash{Exports}{EABI}}<=2) {
+			die "INTERNAL ERROR: Too many EABI exports defined for type \"$TrgHash{Name}\" in Trgtype.pm\n";
+		}
+	}
+
+	unless ($TrgHash{Exports}{WINS}) {
+		$TrgHash{Exports}{'WINS'}=[];
+	}
+	else {
+		unless (@{$TrgHash{Exports}{WINS}}<=2) {
+			die "INTERNAL ERROR: Too many WINS exports defined for type \"$TrgHash{Name}\" in Trgtype.pm\n";
+		}
+	}
+
+	unless ($TrgHash{Exports}{X86}) {
+		$TrgHash{Exports}{X86}=[];
+	}
+	else {
+		unless (@{$TrgHash{Exports}{X86}}<=2) {
+			die "INTERNAL ERROR: Too many X86 exports defined for type \"$TrgHash{Name}\" in Trgtype.pm\n";
+		}
+	}
+
+	unless ($TrgHash{Exports}{x86gcc}) {
+		$TrgHash{Exports}{x86gcc}=[];
+	}
+	else {
+		unless (@{$TrgHash{Exports}{x86gcc}}<=2) {
+			die "INTERNAL ERROR: Too many x86gcc exports defined for type \"$TrgHash{Name}\" in Trgtype.pm\n";
+		}
+	}
+
+
+	unless ($TrgHash{NeedDeffile}) {
+		$TrgHash{NeedDeffile}=0;
+	}
+
+	unless ($TrgHash{NeedUID3}) {
+		$TrgHash{NeedUID3}=0;
+	}
+
+	unless ($TrgHash{Path}) {
+		$TrgHash{Path}='';
+	}
+	else {
+		# apply terminating backslash
+		$TrgHash{Path}=~s-^(.*[^\\])$-$1\\-o;
+		# apply Z drive
+		$TrgHash{Path}="Z\\$TrgHash{Path}";
+	}
+
+	unless ($TrgHash{ResourcePath}) {
+		$TrgHash{ResourcePath}='';
+	}
+	else {
+		# apply terminating backslash & Z drive
+		$TrgHash{ResourcePath}=~s-^(.*[^\\])$-Z\\$1\\-o;
+	}
+
+	unless ($TrgHash{UID2}) {
+		$TrgHash{UID2}='';
+	}
+	else {
+		$TrgHash{UID2}=&Genutl_AnyToHex($TrgHash{UID2});
+		unless (defined $TrgHash{UID2}) {
+			die "INTERNAL ERROR: UID2 badly defined for type \"$TrgHash{Name}\" in Trgtype.pm\n";
+		}
+	}
+
+#	Deprecated target warnings
+
+	if ($TrgHash{Deprecated}) {
+		print "MIGRATION_NOTE: type \"$TrgHash{Name}\" is deprecated - $TrgHash{Deprecated}\n";
+	}
+	
+#	Pass the data
+	%{$TrgHash_ref}=%TrgHash;
+}
+
+sub Trg_List () {
+#	returns a list of known poly types
+
+	sort keys %Types;
+}
+
+
+1;