Beispiel #1
0
            public override bool Equals(object obj)
            {
                PrebuiltStaticLibrary other = obj as PrebuiltStaticLibrary;

                if (other == null)
                {
                    return(false);
                }
                return(ModuleName == other.ModuleName && LibraryPath == other.LibraryPath && ArmMode == other.ArmMode);
            }
Beispiel #2
0
            public ProjectSettings(Project project, List <Project.Configuration> configurations, Resolver resolver)
            {
                Project.Configuration configurationDebug   = configurations.FirstOrDefault(conf => conf.Target.GetFragment <Optimization>() == Optimization.Debug);
                Project.Configuration configurationRelease = configurations.FirstOrDefault(conf => conf.Target.GetFragment <Optimization>() == Optimization.Release);
                Project.Configuration configurationRetail  = configurations.FirstOrDefault(conf => conf.Target.GetFragment <Optimization>() == Optimization.Retail);

                if (configurationDebug == null || configurationRelease == null || configurationRetail == null)
                {
                    throw new Error("Android makefiles require a debug, release and final configuration. ");
                }

                configurationDebug.Defines.Add("_DEBUG");
                configurationRelease.Defines.Add("NDEBUG");
                configurationRetail.Defines.Add("NDEBUG");

                _includePaths = "";
                foreach (string includePath in configurationDebug.IncludePaths)
                {
                    using (resolver.NewScopedParameter("Path", includePath))
                    {
                        _includePaths += resolver.Resolve(Template.IncludePathTemplate) + "\r\n";
                    }
                }

                _sourcePaths = "";
                Strings sourceFiles = project.GetSourceFilesForConfigurations(configurations);

                ResolveProjectPaths(project, sourceFiles);
                foreach (string sourcePath in sourceFiles)
                {
                    string extension = sourcePath.Substring(sourcePath.LastIndexOf('.'));
                    if (project.SourceFilesCompileExtensions.Contains(extension))
                    {
                        if (!configurationDebug.ResolvedSourceFilesBuildExclude.Contains(sourcePath))
                        {
                            using (resolver.NewScopedParameter("Path", sourcePath))
                            {
                                _sourcePaths += resolver.Resolve(Template.SourceFileTemplate) + "\r\n";
                            }
                        }
                    }
                }

                _moduleName = project.Name;

                Options.SelectOption(configurationDebug,
                                     Options.Option(Options.AndroidMakefile.ArmMode.Thumb, () => _armMode = RemoveLineTag),
                                     Options.Option(Options.AndroidMakefile.ArmMode.Arm, () => _armMode   = "arm")
                                     );

                Options.SelectOption(configurationDebug,
                                     Options.Option(Options.AndroidMakefile.ShortCommands.Disable, () => _shortCommands = "false"),
                                     Options.Option(Options.AndroidMakefile.ShortCommands.Enable, () => _shortCommands  = "true")
                                     );

                Options.SelectOption(configurationDebug,
                                     Options.Option(Options.AndroidMakefile.GroupStaticLibraries.Disable, () => _groupStaticLibraries = "false"),
                                     Options.Option(Options.AndroidMakefile.GroupStaticLibraries.Enable, () => _groupStaticLibraries  = "true")
                                     );

                Strings compilerFlagsDebug   = Options.GetStrings <Options.AndroidMakefile.CompilerFlags>(configurationDebug);
                Strings compilerFlagsRelease = Options.GetStrings <Options.AndroidMakefile.CompilerFlags>(configurationRelease);
                Strings compilerFlagsFinal   = Options.GetStrings <Options.AndroidMakefile.CompilerFlags>(configurationRetail);

                _cFlagsDebug   = configurationDebug.Defines.Select(define => "-D" + define).Union(compilerFlagsDebug).DefaultIfEmpty("").Aggregate((first, next) => first + " " + next);
                _cFlagsRelease = configurationRelease.Defines.Select(define => "-D" + define).Union(compilerFlagsRelease).DefaultIfEmpty("").Aggregate((first, next) => first + " " + next);
                _cFlagsFinal   = configurationRetail.Defines.Select(define => "-D" + define).Union(compilerFlagsFinal).DefaultIfEmpty("").Aggregate((first, next) => first + " " + next);

                //Strings compilerExportedFlagsDebug = Options.GetStrings<Options.AndroidMakefile.CompilerExportedFlags>(configurationDebug);
                //Strings compilerExportedFlagsRelease = Options.GetStrings<Options.AndroidMakefile.CompilerExportedFlags>(configurationRelease);
                //Strings compilerExportedFlagsFinal = Options.GetStrings<Options.AndroidMakefile.CompilerExportedFlags>(configurationRetail);
                Strings exportedDefinesDebug   = Options.GetStrings <Options.AndroidMakefile.ExportedDefines>(configurationDebug);
                Strings exportedDefinesRelease = Options.GetStrings <Options.AndroidMakefile.ExportedDefines>(configurationRelease);
                Strings exportedDefinesFinal   = Options.GetStrings <Options.AndroidMakefile.ExportedDefines>(configurationRetail);

                _cFlagsExportedDebug   = exportedDefinesDebug.Select(define => "-D" + define).Union(compilerFlagsDebug).DefaultIfEmpty("").Aggregate((first, next) => first + " " + next);
                _cFlagsExportedRelease = exportedDefinesRelease.Select(define => "-D" + define).Union(compilerFlagsRelease).DefaultIfEmpty("").Aggregate((first, next) => first + " " + next);
                _cFlagsExportedFinal   = exportedDefinesFinal.Select(define => "-D" + define).Union(compilerFlagsFinal).DefaultIfEmpty("").Aggregate((first, next) => first + " " + next);

                List <PrebuiltStaticLibrary> allPrebuiltStaticLibrariesDebug   = new List <PrebuiltStaticLibrary>();
                List <PrebuiltStaticLibrary> allPrebuiltStaticLibrariesRelease = new List <PrebuiltStaticLibrary>();
                List <PrebuiltStaticLibrary> allPrebuiltStaticLibrariesFinal   = new List <PrebuiltStaticLibrary>();

                foreach (var library in Options.GetObjects <Options.AndroidMakefile.PrebuiltStaticLibraries>(configurationDebug))
                {
                    PrebuiltStaticLibrary internalLibrary = new PrebuiltStaticLibrary(project, library);
                    allPrebuiltStaticLibrariesDebug.Add(internalLibrary);
                }
                foreach (var library in Options.GetObjects <Options.AndroidMakefile.PrebuiltStaticLibraries>(configurationRelease))
                {
                    PrebuiltStaticLibrary internalLibrary = new PrebuiltStaticLibrary(project, library);
                    allPrebuiltStaticLibrariesRelease.Add(internalLibrary);
                }
                foreach (var library in Options.GetObjects <Options.AndroidMakefile.PrebuiltStaticLibraries>(configurationRetail))
                {
                    PrebuiltStaticLibrary internalLibrary = new PrebuiltStaticLibrary(project, library);
                    allPrebuiltStaticLibrariesFinal.Add(internalLibrary);
                }
                IEnumerable <PrebuiltStaticLibrary> prebuiltStaticLibraries        = allPrebuiltStaticLibrariesDebug.Intersect(allPrebuiltStaticLibrariesRelease).Intersect(allPrebuiltStaticLibrariesFinal);
                IEnumerable <PrebuiltStaticLibrary> prebuiltStaticLibrariesDebug   = allPrebuiltStaticLibrariesDebug.Except(prebuiltStaticLibraries);
                IEnumerable <PrebuiltStaticLibrary> prebuiltStaticLibrariesRelease = allPrebuiltStaticLibrariesRelease.Except(prebuiltStaticLibraries);
                IEnumerable <PrebuiltStaticLibrary> prebuiltStaticLibrariesFinal   = allPrebuiltStaticLibrariesFinal.Except(prebuiltStaticLibraries);

                _prebuiltStaticLibraries        = prebuiltStaticLibraries.Any() ? prebuiltStaticLibraries.Select(item => { using (resolver.NewScopedParameter("item", item)) return(resolver.Resolve(Template.PrebuiltStaticLibraryTemplate)); }).Aggregate((first, next) => first + "\r\n" + next) : "";
                _prebuiltStaticLibrariesDebug   = prebuiltStaticLibrariesDebug.Any() ? prebuiltStaticLibrariesDebug.Select(item => { using (resolver.NewScopedParameter("item", item)) return(resolver.Resolve(Template.PrebuiltStaticLibraryTemplate)); }).Aggregate((first, next) => first + "\r\n" + next) : "";
                _prebuiltStaticLibrariesRelease = prebuiltStaticLibrariesRelease.Any() ? prebuiltStaticLibrariesRelease.Select(item => { using (resolver.NewScopedParameter("item", item)) return(resolver.Resolve(Template.PrebuiltStaticLibraryTemplate)); }).Aggregate((first, next) => first + "\r\n" + next) : "";
                _prebuiltStaticLibrariesFinal   = prebuiltStaticLibrariesFinal.Any() ? prebuiltStaticLibrariesFinal.Select(item => { using (resolver.NewScopedParameter("item", item)) return(resolver.Resolve(Template.PrebuiltStaticLibraryTemplate)); }).Aggregate((first, next) => first + "\r\n" + next) : "";

                switch (configurationDebug.Output)
                {
                case Project.Configuration.OutputType.Lib:
                    _buildType = Template.BuildStaticLibraryTemplate;
                    break;

                case Project.Configuration.OutputType.Dll:
                    _buildType = Template.BuildSharedLibraryTemplate;
                    break;

                default:
                    _buildType = RemoveLineTag;
                    break;
                }
            }