コード例 #1
0
ファイル: GeneratedProject.cs プロジェクト: kmnaxin/BSPTools
        internal ToolFlags GetToolFlags(Dictionary <string, string> systemDict, Dictionary <string, string> frameworkDict, IDictionary frameworkIDs)
        {
            var flags = new ToolFlags {
                CXXFLAGS = "-fno-exceptions -ffunction-sections -Os", LDFLAGS = "-Wl,-gc-sections -Wl,-Map," + MapFileName, CFLAGS = "-ffunction-sections -Os"
            };

            if (DataSections)
            {
                flags.CXXFLAGS += " -fdata-sections";
                flags.CFLAGS   += " -fdata-sections";
            }

            var mcuFlags = MCU.ExpandToolFlags(systemDict, null);

            flags = flags.Merge(mcuFlags);
            Dictionary <string, string> primaryDict = new Dictionary <string, string>(systemDict);

            foreach (var fwObj in _Frameworks)
            {
                if (fwObj.AdditionalSystemVars != null)
                {
                    foreach (var sv in fwObj.AdditionalSystemVars)
                    {
                        primaryDict[sv.Key] = sv.Value;
                    }
                }

                flags.IncludeDirectories = LoadedBSP.Combine(flags.IncludeDirectories, VariableHelper.ExpandVariables(fwObj.AdditionalIncludeDirs, primaryDict, frameworkDict));
                flags.PreprocessorMacros = LoadedBSP.Combine(flags.PreprocessorMacros, VariableHelper.ExpandVariables(fwObj.AdditionalPreprocessorMacros, primaryDict, frameworkDict)?.Where(m => !string.IsNullOrEmpty(m))?.ToArray());
            }

            if (MCU.BSP.BSP.ConditionalFlags != null)
            {
                foreach (var cf in MCU.BSP.BSP.ConditionalFlags)
                {
                    if (cf.FlagCondition.IsTrue(primaryDict, frameworkDict, frameworkIDs))
                    {
                        flags = flags.Merge(LoadedBSP.ConfiguredMCU.ExpandToolFlags(cf.Flags, primaryDict, frameworkDict));
                    }
                }
            }

            if (!string.IsNullOrEmpty(_LinkerScript))
            {
                flags.LinkerScript = VariableHelper.ExpandVariables(_LinkerScript, primaryDict, frameworkDict);
            }

            return(flags);
        }