T.vs2010_flags = { } local vs10_flags = T.vs2010_flags local sln, prj function vs10_flags.setup() _ACTION = "vs2010" sln = solution "MySolution" configurations { "Debug" } platforms {} prj = project "MyProject" language "C++" kind "ConsoleApp" uuid "AE61726D-187C-E440-BD07-2556188A6565" includedirs{"foo/bar"} end function vs10_flags.teardown() sln = nil prj = nil end local function get_buffer() io.capture() premake.bake.buildconfigs() sln.vstudio_configs = premake.vstudio.buildconfigs(sln) prj = premake.solution.getproject(sln, 1) premake.vs2010_vcxproj(prj) local buffer = io.endcapture() return buffer end function vs10_flags.sseSet() flags {"EnableSSE"} local buffer = get_buffer() test.string_contains(buffer,'StreamingSIMDExtensions') end function vs10_flags.sse2Set() flags {"EnableSSE2"} local buffer = get_buffer() test.string_contains(buffer,'StreamingSIMDExtensions2') end function vs10_flags.extraWarningNotSet_warningLevelIsThree() local buffer = get_buffer() test.string_contains(buffer,'Level3') end function vs10_flags.extraWarning_warningLevelIsFour() flags {"ExtraWarnings"} local buffer = get_buffer() test.string_contains(buffer,'Level4') end function vs10_flags.extraWarning_treatWarningsAsError_setToTrue() flags {"FatalWarnings"} local buffer = get_buffer() test.string_contains(buffer,'true') end function vs10_flags.floatFast_floatingPointModel_setToFast() flags {"FloatFast"} local buffer = get_buffer() test.string_contains(buffer,'Fast') end function vs10_flags.floatStrict_floatingPointModel_setToStrict() flags {"FloatStrict"} local buffer = get_buffer() test.string_contains(buffer,'Strict') end function vs10_flags.nativeWideChar_TreatWChar_tAsBuiltInType_setToTrue() flags {"NativeWChar"} local buffer = get_buffer() test.string_contains(buffer,'true') end function vs10_flags.nativeWideChar_TreatWChar_tAsBuiltInType_setToFalse() flags {"NoNativeWChar"} local buffer = get_buffer() test.string_contains(buffer,'false') end function vs10_flags.noExceptions_exceptionHandling_setToFalse() flags {"NoExceptions"} local buffer = get_buffer() test.string_contains(buffer,'false') end function vs10_flags.structuredExceptions_exceptionHandling_setToAsync() flags {"SEH"} local buffer = get_buffer() test.string_contains(buffer,'Async') end function vs10_flags.noFramePointer_omitFramePointers_setToTrue() flags {"NoFramePointer"} local buffer = get_buffer() test.string_contains(buffer,'true') end function vs10_flags.noRTTI_runtimeTypeInfo_setToFalse() flags {"NoRTTI"} local buffer = get_buffer() test.string_contains(buffer,'false') end function vs10_flags.callingconvention_fastcall() flags {"FastCall"} local buffer = get_buffer() test.string_contains(buffer,'FastCall') end function vs10_flags.callingconvention_stdcall() flags {"StdCall"} local buffer = get_buffer() test.string_contains(buffer,'StdCall') end function vs10_flags.optimizeSize_optimization_setToMinSpace() flags {"OptimizeSize"} local buffer = get_buffer() test.string_contains(buffer,'MinSpace') end function vs10_flags.optimizeSpeed_optimization_setToMaxSpeed() flags {"OptimizeSpeed"} local buffer = get_buffer() test.string_contains(buffer,'MaxSpeed') end function vs10_flags.optimizeSpeed_optimization_setToMaxSpeed() flags {"Optimize"} local buffer = get_buffer() test.string_contains(buffer,'Full') end local debug_string = "Symbols" local release_string = "Optimize" function vs10_flags.debugHasNoStaticRuntime_runtimeLibrary_setToMultiThreadedDebugDLL() flags {debug_string} local buffer = get_buffer() test.string_contains(buffer,'MultiThreadedDebugDLL') end function vs10_flags.debugAndStaticRuntime_runtimeLibrary_setToMultiThreadedDebug() flags {debug_string,"StaticRuntime"} local buffer = get_buffer() test.string_contains(buffer,'MultiThreadedDebug') end function vs10_flags.releaseHasNoStaticRuntime_runtimeLibrary_setToMultiThreadedDLL() flags {release_string} local buffer = get_buffer() test.string_contains(buffer,'MultiThreadedDLL') end function vs10_flags.releaseAndStaticRuntime_runtimeLibrary_setToMultiThreaded() flags {release_string,"StaticRuntime"} local buffer = get_buffer() test.string_contains(buffer,'MultiThreaded') end function vs10_flags.debugAndMinimalRebuildAndSymbols_minimalRebuild_setToFalse() flags {debug_string,"EnableMinimalRebuild"} local buffer = get_buffer() test.string_contains(buffer,'true') end function vs10_flags.debugYetNotMinimalRebuild_minimalRebuild_setToTrue() flags {debug_string} local buffer = get_buffer() test.string_contains(buffer,'true') end function vs10_flags.release_minimalRebuild_setToFalse() flags {release_string} local buffer = get_buffer() test.string_contains(buffer,'false') end --there is not an option for /Z7 OldStyle --/ZI is not compatible with /clr or x64_64 --minimal Rebuild requires /Zi in x86_64 function vs10_flags.symbols_32BitBuild_DebugInformationFormat_setToEditAndContinue() flags{"Symbols"} platforms{'x32'} local buffer = get_buffer() test.string_contains(buffer,'EditAndContinue') end function vs10_flags.symbols_64BitBuild_DebugInformationFormat_setToProgramDatabase() flags{"Symbols"} platforms{"x64"} local buffer = get_buffer() test.string_contains(buffer,'ProgramDatabase') end function vs10_flags.symbolsAndNoEditAndContinue_DebugInformationFormat_setToProgramDatabase() flags{"Symbols","NoEditAndContinue"} local buffer = get_buffer() test.string_contains(buffer,'ProgramDatabase') end function vs10_flags.symbolsAndRelease_DebugInformationFormat_setToProgramDatabase() flags{"Symbols",release_string} local buffer = get_buffer() test.string_contains(buffer,'ProgramDatabase') end function vs10_flags.symbolsManaged_DebugInformationFormat_setToProgramDatabase() flags{"Symbols","Managed"} local buffer = get_buffer() test.string_contains(buffer,'ProgramDatabase') end function vs10_flags.noSymbols_DebugInformationFormat_blockIsEmpty() local buffer = get_buffer() test.string_contains(buffer,'') end function vs10_flags.noSymbols_bufferDoesNotContainprogramDataBaseFile() local buffer = get_buffer() test.string_does_not_contain(buffer,'.*.*') end function vs10_flags.symbols_bufferContainsprogramDataBaseFile() flags{"Symbols"} local buffer = get_buffer() test.string_contains(buffer,'.*%$%(OutDir%)MyProject%.pdb.*') end function vs10_flags.WithOutManaged_bufferContainsKeywordWin32Proj() local buffer = get_buffer() test.string_contains(buffer,'.*Win32Proj.*') end function vs10_flags.WithOutManaged_bufferDoesNotContainKeywordManagedCProj() local buffer = get_buffer() test.string_does_not_contain(buffer,'.*ManagedCProj.*') end T.vs2010_managedFlag = { } local vs10_managedFlag = T.vs2010_managedFlag local function vs10_managedFlag_setOnProject() local sln = solution "Sol" configurations { "Debug" } language "C++" kind "ConsoleApp" local prj = project "Prj" flags {"Managed"} return sln,prj end local function get_managed_buffer(sln,prj) io.capture() premake.bake.buildconfigs() sln.vstudio_configs = premake.vstudio.buildconfigs(sln) prj = premake.solution.getproject(sln, 1) premake.vs2010_vcxproj(prj) local buffer = io.endcapture() return buffer end function vs10_managedFlag.setup() end function vs10_managedFlag.managedSetOnProject_CLRSupport_setToTrue() local sln, prj = vs10_managedFlag_setOnProject() local buffer = get_managed_buffer(sln,prj) test.string_contains(buffer, '' ..'.*true' ..'.*') end function vs10_managedFlag.globals_bufferContainsKeywordManagedCProj() local sln, prj = vs10_managedFlag_setOnProject() local buffer = get_managed_buffer(sln,prj) test.string_contains(buffer,'.*ManagedCProj.*') end function vs10_managedFlag.globals_bufferDoesNotContainKeywordWin32Proj() local sln, prj = vs10_managedFlag_setOnProject() local buffer = get_managed_buffer(sln,prj) test.string_does_not_contain(buffer,'.*Win32Proj.*') end function vs10_managedFlag.globals_FrameworkVersion_setToV4() local sln, prj = vs10_managedFlag_setOnProject() local buffer = get_managed_buffer(sln,prj) test.string_contains(buffer,'.*v4.0.*') end function vs10_managedFlag.withFloatFast_FloatingPointModelNotFoundInBuffer() local sln, prj = vs10_managedFlag_setOnProject() flags {"FloatStrict"} local buffer = get_managed_buffer(sln,prj) test.string_does_not_contain(buffer,'.*') end function vs10_managedFlag.debugWithStaticRuntime_flagIgnoredAndRuntimeSetToMDd() local sln, prj = vs10_managedFlag_setOnProject() flags {"Symbols","StaticRuntime"} local buffer = get_managed_buffer(sln,prj) test.string_contains(buffer,'MultiThreadedDebugDLL') end function vs10_managedFlag.notDebugWithStaticRuntime_flagIgnoredAndRuntimeSetToMD() local sln, prj = vs10_managedFlag_setOnProject() flags {"StaticRuntime"} local buffer = get_managed_buffer(sln,prj) test.string_contains(buffer,'MultiThreadedDLL') end function vs10_managedFlag.noOptimisationFlag_basicRuntimeChecksNotFoundInBuffer() local sln, prj = vs10_managedFlag_setOnProject() local buffer = get_managed_buffer(sln,prj) test.string_does_not_contain(buffer,'.*') end function vs10_managedFlag.applictionWithOutWinMain_EntryPointSymbolNotFoundInBuffer() local sln, prj = vs10_managedFlag_setOnProject() local buffer = get_managed_buffer(sln,prj) test.string_does_not_contain(buffer,'.*') end