コード例 #1
0
        /// <summary>
        /// Creates configuration target
        /// </summary>
        private void createConfigurationTarget(ProjectConfigurationInfo_CSharp configurationInfo)
        {
            m_file.WriteLine("CSAssembly( '" + configurationInfo.TargetName + "' )");
            m_file.WriteLine("{");
            m_file.WriteLine("  Using( .cs" + configurationInfo.Platform + "BaseConfig )");
            string postfix = ".exe";

            if (m_projectInfo.ProjectType == ProjectInfo.ProjectTypeEnum.CSHARP_LIBRARY)
            {
                postfix = ".dll";
            }
            m_file.WriteLine("  .CompilerOutput     = '" + configurationInfo.OutputFolderAbsolute + m_projectInfo.Name + postfix + "'");
            m_file.WriteLine("  .CompilerOptions    + ." + getFlagsVariableName(configurationInfo));
            m_file.WriteLine("                      + '\"%1\"'");
            m_file.WriteLine("  .CompilerInputFiles = .InputFiles");
            m_file.WriteLine("  .CompilerReferences = ." + getReferencesVariableName(configurationInfo));
            List <string> requiredTargets = new List <string>();

            foreach (ProjectInfo requiredProject in m_projectInfo.getRequiredProjects())
            {
                requiredTargets.Add("'" + requiredProject.Name + "'");
            }
            if (requiredTargets.Count != 0)
            {
                m_file.WriteLine("  .PreBuildDependencies = { " + Utils.join(", ", requiredTargets) + " }");
            }
            m_file.WriteLine("}");
            m_file.WriteLine("");
        }
コード例 #2
0
        /// <summary>
        /// Parses on configuration.
        /// </summary>
        private void parseConfiguration(EnvDTE.Configuration dteConfiguration)
        {
            // We create a new configuration-info object and fill it in...
            ProjectConfigurationInfo_CSharp configurationInfo = new ProjectConfigurationInfo_CSharp();

            configurationInfo.ParentProjectInfo = m_projectInfo;
            configurationInfo.Name     = Utils.call(() => dteConfiguration.ConfigurationName);
            configurationInfo.Platform = Utils.call(() => dteConfiguration.PlatformName);

            // We parse the configuration's properties, and set configuration
            // seetings from them...
            EnvDTE.Properties           dteProperties = Utils.call(() => (dteConfiguration.Properties));
            Dictionary <string, object> properties    = getProperties(dteProperties);

            // Whether to optimize...
            configurationInfo.Optimize = getBoolProperty(properties, "Optimize");

            // The output path and intermediate path...
            configurationInfo.OutputFolder       = getStringProperty(properties, "OutputPath");
            configurationInfo.IntermediateFolder = getStringProperty(properties, "IntermediatePath");

            // Whether to treat warnings as errors...
            configurationInfo.ThreatWarningsAsErrors = getBoolProperty(properties, "TreatWarningsAsErrors");

            // Defined constants (DEBUG, TRACE etc)...
            string definedConstants = getStringProperty(properties, "DefineConstants");

            foreach (string definedConstant in Utils.split(definedConstants, ';'))
            {
                configurationInfo.addDefinedConstant(definedConstant);
            }

            // Whether to add debug symbols to the output...
            configurationInfo.Debug = getBoolProperty(properties, "DebugSymbols");

            // Comma separated list of warnings to ignore...
            string warningsToIgnore = getStringProperty(properties, "NoWarn");

            foreach (string warningToIgnore in Utils.split(warningsToIgnore, ','))
            {
                configurationInfo.addWarningToIgnore(warningToIgnore);
            }

            // DebugInfo, e.g. "full"...
            configurationInfo.DebugInfo = getStringProperty(properties, "DebugInfo");

            // File alignment...
            configurationInfo.FileAlignment = getIntProperty(properties, "FileAlignment");

            // Warning level...
            configurationInfo.WarningLevel = getIntProperty(properties, "WarningLevel");

            // We add the configuration-info to the project-info...
            m_projectInfo.addConfigurationInfo(configurationInfo);
        }
コード例 #3
0
 /// <summary>
 /// Return the flags variable name for the configuration passed in.
 /// For example "Debug_x64_Compile_Flags".
 /// </summary>
 private string getFlagsVariableName(ProjectConfigurationInfo_CSharp configuration)
 {
     return(configuration.Name + "_" + configuration.Platform + "_Compile_Flags");
 }
コード例 #4
0
 /// <summary>
 /// Returns the reference variable name for the configuration passed in.
 /// For example "Debug_x64_References".
 /// </summary>
 private string getReferencesVariableName(ProjectConfigurationInfo_CSharp configuration)
 {
     return(configuration.Name + "_" + configuration.Platform + "_References");
 }
コード例 #5
0
        /// <summary>
        /// Creates compiler flags for the configuration passed in.
        /// </summary>
        private void createConfigurationFlagsVariable(ProjectConfigurationInfo_CSharp configurationInfo)
        {
            string variableName = getFlagsVariableName(configurationInfo);
            string flags        = "";

            // Target
            if (m_projectInfo.ProjectType == ProjectInfo.ProjectTypeEnum.CSHARP_EXECUTABLE)
            {
                flags += " /target:exe";
            }
            else if (m_projectInfo.ProjectType == ProjectInfo.ProjectTypeEnum.CSHARP_LIBRARY)
            {
                flags += " /target:library";
            }
            else if (m_projectInfo.ProjectType == ProjectInfo.ProjectTypeEnum.CSHARP_WINFORMS_EXECUTABLE)
            {
                flags += " /target:winexe";
            }

            // Platform
            flags += " /platform:" + configurationInfo.Platform;

            // Optimize...
            if (configurationInfo.Optimize == true)
            {
                flags += " /optimize+ ";
            }
            else
            {
                flags += " /optimize- ";
            }

            // Treat warnings as errors...
            if (configurationInfo.ThreatWarningsAsErrors == true)
            {
                flags += " /warnaserror+ ";
            }

            // Defined constants...
            foreach (string definedConstant in configurationInfo.getDefinedConstants())
            {
                flags += (" /define:" + definedConstant + " ");
            }

            // Debug build...
            if (configurationInfo.Debug == true)
            {
                flags += " /debug+ ";
            }

            // Type of debug info...
            if (configurationInfo.DebugInfo != "")
            {
                flags += (" /debug:" + configurationInfo.DebugInfo + " ");
            }

            // Warnings to ignore...
            List <string> warningsToIgnore = configurationInfo.getWarningsToIgnore();

            if (warningsToIgnore.Count > 0)
            {
                flags += " /nowarn:";
                foreach (string warningToIgnore in warningsToIgnore)
                {
                    flags += (warningToIgnore + ",");
                }
                flags = flags.TrimEnd(',') + " ";
            }

            // File alignment...
            flags += (" /filealign:" + configurationInfo.FileAlignment + " ");

            // Warning level...
            flags += (" /warn:" + configurationInfo.WarningLevel + " ");

            m_file.WriteLine("." + variableName + " = '" + flags + "'");
            m_file.WriteLine("");
        }
コード例 #6
0
 /// <summary>
 /// Returns the variable name for this data for this configuration.
 /// </summary>
 private string getReferencesVariableName(ProjectConfigurationInfo_CSharp configurationInfo)
 {
     return(configurationInfo.Name + "_REFERENCES");
 }
コード例 #7
0
 /// <summary>
 /// Returns the variable name for this data for this configuration.
 /// </summary>
 private string getFlagsVariableName(ProjectConfigurationInfo_CSharp configurationInfo)
 {
     return(configurationInfo.Name + "_FLAGS");
 }
コード例 #8
0
        /// <summary>
        /// Creates compiler flags for the configuration passed in.
        /// </summary>
        private void createConfigurationFlagsVariable(ProjectConfigurationInfo_CSharp configurationInfo)
        {
            string variableName = getFlagsVariableName(configurationInfo);
            string flags        = "";

            // Optimize...
            if (configurationInfo.Optimize == true)
            {
                flags += "-optimize+ ";
            }
            else
            {
                flags += "-optimize- ";
            }

            // Treat warnings as errors...
            if (configurationInfo.ThreatWarningsAsErrors == true)
            {
                flags += "-warnaserror+ ";
            }

            // Defined constants...
            foreach (string definedConstant in configurationInfo.getDefinedConstants())
            {
                flags += ("-define:" + definedConstant + " ");
            }

            // Debug build...
            if (configurationInfo.Debug == true)
            {
                flags += "-debug+ ";
            }

            // Type of debug info...
            if (configurationInfo.DebugInfo != "")
            {
                flags += ("-debug:" + configurationInfo.DebugInfo + " ");
            }

            // Warnings to ignore...
            List <string> warningsToIgnore = configurationInfo.getWarningsToIgnore();

            if (warningsToIgnore.Count > 0)
            {
                flags += "-nowarn:";
                foreach (string warningToIgnore in warningsToIgnore)
                {
                    flags += (warningToIgnore + ",");
                }
                flags = flags.TrimEnd(',') + " ";
            }

            // File alignment...
            flags += ("-filealign:" + configurationInfo.FileAlignment + " ");

            // Warning level...
            flags += ("-warn:" + configurationInfo.WarningLevel + " ");

            // We add the mono .net packages (if we are not in a cygwin build)...
            if (MakeItSoConfig.Instance.IsCygwinBuild == false)
            {
                flags += "-pkg:dotnet ";
            }

            // We add the flags to the makefile...
            m_file.WriteLine(variableName + " = " + flags);
        }
コード例 #9
0
 /// <summary>
 /// Returns the variable name for this data for this configuration.
 /// </summary>
 private string getOutputFolderVariableName(ProjectConfigurationInfo_CSharp configurationInfo)
 {
     return(configurationInfo.Name + "_OUTPUT_FOLDER");
 }
コード例 #10
0
        /// <summary>
        /// Returns the output folder for the configuration passed in.
        /// </summary>
        private string getOutputFolder(ProjectConfigurationInfo_CSharp configurationInfo)
        {
            string prefix = MakeItSoConfig.Instance.getProjectConfig(m_projectInfo.Name).CSharpFolderPrefix;

            return(Utils.addPrefixToFolderPath(configurationInfo.OutputFolder, prefix));
        }