public void ApplyMod( XCMod mod )
{
PBXGroup modGroup = this.GetGroup( mod.group );
Debug.Log( "Adding libraries..." );
PBXGroup librariesGroup = this.GetGroup( "Libraries" );
foreach( XCModFile libRef in mod.libs ) {
string completeLibPath = System.IO.Path.Combine( "usr/lib", libRef.filePath );
this.AddFile( completeLibPath, modGroup, "SDKROOT", true, libRef.isWeak );
}
Debug.Log( "Adding frameworks..." );
PBXGroup frameworkGroup = this.GetGroup( "Frameworks" );
foreach( string framework in mod.frameworks ) {
string[] filename = framework.Split( ':' );
bool isWeak = ( filename.Length > 1 ) ? true : false;
string completePath = System.IO.Path.Combine( "System/Library/Frameworks", filename[0] );
this.AddFile( completePath, frameworkGroup, "SDKROOT", true, isWeak );
}
Debug.Log( "Adding files..." );
foreach( string filePath in mod.files ) {
string absoluteFilePath = System.IO.Path.Combine( mod.path, filePath );
if( filePath.EndsWith(".framework") )
this.AddFile( absoluteFilePath, frameworkGroup, "GROUP", true, false);
else
this.AddFile( absoluteFilePath, modGroup );
}
Debug.Log( "Adding folders..." );
foreach( string folderPath in mod.folders ) {
string absoluteFolderPath = System.IO.Path.Combine( mod.path, folderPath );
this.AddFolder( absoluteFolderPath, modGroup, (string[])mod.excludes.ToArray( typeof(string) ) );
}
Debug.Log( "Adding headerpaths..." );
foreach( string headerpath in mod.headerpaths ) {
string absoluteHeaderPath = System.IO.Path.Combine( mod.path, headerpath );
this.AddHeaderSearchPaths( absoluteHeaderPath );
}
Debug.Log( "Configure build settings..." );
Hashtable buildSettings = mod.buildSettings;
if (mod.buildSettings != null)
{
if( buildSettings.ContainsKey("OTHER_LDFLAGS") )
{
Debug.Log( " Adding other linker flags..." );
ArrayList otherLinkerFlags = (ArrayList) buildSettings["OTHER_LDFLAGS"];
foreach( string linker in otherLinkerFlags )
{
string _linker = linker;
if( !_linker.StartsWith("-") )
_linker = "-" + _linker;
this.AddOtherLDFlags( _linker );
}
}
if( buildSettings.ContainsKey("GCC_ENABLE_CPP_EXCEPTIONS") )
{
Debug.Log( " GCC_ENABLE_CPP_EXCEPTIONS = " + buildSettings["GCC_ENABLE_CPP_EXCEPTIONS"] );
this.GccEnableCppExceptions( (string) buildSettings["GCC_ENABLE_CPP_EXCEPTIONS"] );
}
if( buildSettings.ContainsKey("GCC_ENABLE_OBJC_EXCEPTIONS") )
{
Debug.Log( " GCC_ENABLE_OBJC_EXCEPTIONS = " + buildSettings["GCC_ENABLE_OBJC_EXCEPTIONS"] );
this.GccEnableObjCExceptions( (string) buildSettings["GCC_ENABLE_OBJC_EXCEPTIONS"] );
}
}
this.Consolidate();
}