@@ -25,16 +25,13 @@ public class CSCGenerater
2525
2626 private static string [ ] AdapterSrc = new string [ ]
2727 {
28- "glue/Binder.define.cs" ,
29- "glue/Binder.funcser.cs" ,
28+ "glue/Binder.impl.cs" ,
3029 "Tools/CustomBinder.cs" ,
3130 "Tools/ObjectStore.cs" ,
3231 } ;
3332
3433 private static string [ ] AdapterWrapperSrc = new string [ ]
3534 {
36- "glue/Binder.define.cs" ,
37- "glue/Binder.funcdeser.cs" ,
3835 "Tools/CustomBinder.cs" ,
3936 "Tools/ObjectStore.wrapper.cs" ,
4037 "Tools/ScriptEngine.cs" ,
@@ -49,11 +46,11 @@ public class CSCGenerater
4946 private static HashSet < string > IgnoreRefSet = new HashSet < string > ( ) ;
5047 private static Dictionary < string , CSCGenerater > WrapperDic = new Dictionary < string , CSCGenerater > ( ) ;
5148
52- public static void Init ( string cscDir , string adapterDir , string outDir , string dllRefDir , HashSet < string > ignoreRefSet )
49+ public static void Init ( string cscDir , string adapterDir , string outDir , HashSet < string > ignoreRefSet )
5350 {
5451 CSCPath = Path . Combine ( cscDir , Utils . IsWin32 ( ) ? "csc.exe" : "csc" ) ;
5552 OutDir = outDir ;
56- DllRefDir = dllRefDir ;
53+ DllRefDir = outDir ;
5754 AdapterDir = adapterDir ;
5855 IgnoreRefSet = ignoreRefSet ;
5956 AdapterCompiler = new CSCGenerater ( Path . Combine ( outDir , "Adapter.gen.dll" ) ) ;
@@ -62,36 +59,66 @@ public static void Init(string cscDir,string adapterDir, string outDir,string dl
6259 AdapterCompiler . AddSource ( Path . Combine ( adapterDir , file ) ) ;
6360
6461 SetWrapper ( "Adapter.wrapper.dll" ) ;
62+ foreach ( var file in AdapterWrapperSrc )
63+ AdapterWrapperCompiler . AddSource ( Path . Combine ( adapterDir , file ) ) ;
6564 }
6665
6766 public static void SetWrapper ( string dllName )
6867 {
6968 if ( ! WrapperDic . TryGetValue ( dllName , out AdapterWrapperCompiler ) )
7069 {
7170 AdapterWrapperCompiler = new CSCGenerater ( Path . Combine ( OutDir , dllName ) ) ;
72- foreach ( var file in AdapterWrapperSrc )
73- AdapterWrapperCompiler . AddSource ( Path . Combine ( AdapterDir , file ) ) ;
71+ // foreach (var file in AdapterWrapperSrc)
72+ // AdapterWrapperCompiler.AddSource(Path.Combine(AdapterDir, file));
7473 AdapterWrapperCompiler . AddDefine ( "WRAPPER_SIDE" ) ;
7574 if ( ! Utils . IsWin32 ( ) )
7675 AdapterWrapperCompiler . AddDefine ( "IOS" ) ;
7776
7877 WrapperDic [ dllName ] = AdapterWrapperCompiler ;
78+
79+ if ( dllName != "Adapter.wrapper.dll" )
80+ AdapterWrapperCompiler . AddReference ( "Adapter.wrapper.dll" ) ;
7981 }
8082 }
8183
8284 public static void End ( )
8385 {
8486 AdapterCompiler . Gen ( ) ;
8587 //AdapterWrapperCompiler.Gen();
86- foreach ( var wrapper in WrapperDic . Values )
88+ var list = GetSortedList ( ) ;
89+ foreach ( var wrapper in list )
8790 {
8891 wrapper . Gen ( ) ;
8992 }
9093 }
9194
95+ private static List < CSCGenerater > GetSortedList ( )
96+ {
97+ foreach ( var wrapper in WrapperDic . Values )
98+ {
99+ CountRef ( wrapper ) ;
100+ }
101+ var list = new List < CSCGenerater > ( WrapperDic . Values ) ;
102+ list . Sort ( ( a , b ) => { return b . RefCount - a . RefCount ; } ) ;
103+ return list ;
104+ }
105+
106+ private static void CountRef ( CSCGenerater gener )
107+ {
108+ foreach ( var depend in gener . refSet )
109+ {
110+ if ( WrapperDic . TryGetValue ( depend , out var dependGener ) )
111+ {
112+ dependGener . RefCount ++ ;
113+ CountRef ( dependGener ) ;
114+ }
115+ }
116+ }
117+
92118
93119 public string outName { get ; private set ; }
94- HashSet < string > refSet = new HashSet < string > ( ) ;
120+ public HashSet < string > refSet = new HashSet < string > ( ) ;
121+ public int RefCount = 0 ;
95122 HashSet < string > srcSet = new HashSet < string > ( ) ;
96123 HashSet < string > defineSet = new HashSet < string > ( ) ;
97124
0 commit comments