1228f9247SSergey Makeevif not _ACTION then 2228f9247SSergey Makeev _ACTION="vs2010" 3228f9247SSergey Makeevend 4228f9247SSergey Makeev 5f27fe1eeSadminisPosix = false 6228f9247SSergey MakeevisVisualStudio = false 7f27fe1eeSadminisOSX = false 8228f9247SSergey Makeev 9228f9247SSergey Makeevif _ACTION == "vs2002" or _ACTION == "vs2003" or _ACTION == "vs2005" or _ACTION == "vs2008" or _ACTION == "vs2010" then 10228f9247SSergey Makeev isVisualStudio = true 11228f9247SSergey Makeevend 1253fd86e4SSergey Makeev 139c581545SSergey Makeevif _ACTION == "codeblocks" or _ACTION == "gmake" 14d5e144daSbombombythen 15d5e144daSbombomby isPosix = true 16d5e144daSbombombyend 17d5e144daSbombomby 18b65c7692SSergey Makeevif _ACTION == "xcode3" or os.is("macosx") 19f27fe1eeSadminthen 20f27fe1eeSadmin isOSX = true 21f27fe1eeSadminend 22f27fe1eeSadmin 23f27fe1eeSadmin 24f27fe1eeSadmin 2553fd86e4SSergey Makeevsolution "TaskScheduler" 2653fd86e4SSergey Makeev 2753fd86e4SSergey Makeev language "C++" 2853fd86e4SSergey Makeev 2953fd86e4SSergey Makeev location ( "Build/" .. _ACTION ) 3053fd86e4SSergey Makeev flags {"NoManifest", "ExtraWarnings", "StaticRuntime", "NoMinimalRebuild", "FloatFast", "EnableSSE2" } 3153fd86e4SSergey Makeev optimization_flags = { "OptimizeSpeed" } 3253fd86e4SSergey Makeev targetdir("Bin") 3316889716SSergey Makeev 345a8ca7bdSadminif isPosix or isOSX then 35f27fe1eeSadmin defines { "_XOPEN_SOURCE=600" } 36f27fe1eeSadminend 37f27fe1eeSadmin 38ce0d6945Ss.makeev_localif isOSX then 39ce0d6945Ss.makeev_local defines { "_DARWIN_C_SOURCE=1" } 40ce0d6945Ss.makeev_localend 41ce0d6945Ss.makeev_local 42ce0d6945Ss.makeev_local 4316889716SSergey Makeevif isVisualStudio then 4425869a1eSSergey Makeev debugdir ("Bin") 4516889716SSergey Makeevend 4616889716SSergey Makeev 4753fd86e4SSergey Makeev 4853fd86e4SSergey Makeev local config_list = { 4953fd86e4SSergey Makeev "Release", 5053fd86e4SSergey Makeev "Debug", 518112dedfSSergey Makeev "Instrumented_Release", 528112dedfSSergey Makeev "Instrumented_Debug" 5353fd86e4SSergey Makeev } 5453fd86e4SSergey Makeev local platform_list = { 5553fd86e4SSergey Makeev "x32", 5653fd86e4SSergey Makeev "x64" 5753fd86e4SSergey Makeev } 5853fd86e4SSergey Makeev 5953fd86e4SSergey Makeev configurations(config_list) 6053fd86e4SSergey Makeev platforms(platform_list) 6153fd86e4SSergey Makeev 6253fd86e4SSergey Makeev 6353fd86e4SSergey Makeev-- CONFIGURATIONS 6453fd86e4SSergey Makeev 658112dedfSSergey Makeevconfiguration "Instrumented_Release" 66f371f0bdSSergey Makeev defines { "NDEBUG", "MT_INSTRUMENTED_BUILD", "MT_UNICODE" } 678112dedfSSergey Makeev flags { "Symbols", optimization_flags } 688112dedfSSergey Makeev 698112dedfSSergey Makeevconfiguration "Instrumented_Debug" 70f371f0bdSSergey Makeev defines { "_DEBUG", "_CRTDBG_MAP_ALLOC", "MT_INSTRUMENTED_BUILD", "MT_UNICODE" } 718112dedfSSergey Makeev flags { "Symbols" } 728112dedfSSergey Makeev 736d35225cSSergey Makeevconfiguration "Release" 74f371f0bdSSergey Makeev defines { "NDEBUG", "MT_UNICODE" } 7553fd86e4SSergey Makeev flags { "Symbols", optimization_flags } 7653fd86e4SSergey Makeev 776d35225cSSergey Makeevconfiguration "Debug" 78f371f0bdSSergey Makeev defines { "_DEBUG", "_CRTDBG_MAP_ALLOC", "MT_UNICODE"} 7953fd86e4SSergey Makeev flags { "Symbols" } 8053fd86e4SSergey Makeev 8153fd86e4SSergey Makeevconfiguration "x32" 82228f9247SSergey Makeevif isVisualStudio then 83f180001aSSergey Makeev-- Compiler Warning (level 4) C4127. Conditional expression is constant 8433e9cadaSSergey Makeev buildoptions { "/wd4127" } 85228f9247SSergey Makeevelse 86770590f8SSergey Makeev buildoptions { "-std=c++11" } 87b65c7692SSergey Makeev if isPosix then 88770590f8SSergey Makeev linkoptions { "-rdynamic" } 8936fb9396SSergey Makeev if isOSX then 90bb7bf2d4SSergey Makeev buildoptions { "-Wno-invalid-offsetof -Wno-deprecated-declarations -fno-omit-frame-pointer" } 91bb7bf2d4SSergey Makeev --linkoptions { "-fsanitize=undefined" } 9236fb9396SSergey Makeev else 934372a638SSergey Makeev-- defines { "MT_THREAD_SANITIZER"} 94542e081bSs.makeev_local buildoptions { "-Wno-invalid-offsetof -fsanitize=address -fPIE -g -fno-omit-frame-pointer" } 95542e081bSs.makeev_local linkoptions { "-fsanitize=address -pie" } 96770590f8SSergey Makeev end 97228f9247SSergey Makeev end 98b65c7692SSergey Makeevend 9953fd86e4SSergey Makeev 10053fd86e4SSergey Makeevconfiguration "x64" 101228f9247SSergey Makeevif isVisualStudio then 102f180001aSSergey Makeev-- Compiler Warning (level 4) C4127. Conditional expression is constant 10333e9cadaSSergey Makeev buildoptions { "/wd4127" } 104228f9247SSergey Makeevelse 105770590f8SSergey Makeev buildoptions { "-std=c++11" } 106b65c7692SSergey Makeev if isPosix then 107770590f8SSergey Makeev linkoptions { "-rdynamic" } 10836fb9396SSergey Makeev if isOSX then 109bb7bf2d4SSergey Makeev buildoptions { "-Wno-invalid-offsetof -Wno-deprecated-declarations -fno-omit-frame-pointer" } 110bb7bf2d4SSergey Makeev --linkoptions { "-fsanitize=address" } 11136fb9396SSergey Makeev else 1124372a638SSergey Makeev-- defines { "MT_THREAD_SANITIZER"} 113bb7bf2d4SSergey Makeev buildoptions { "-Wno-invalid-offsetof -fsanitize=address -fPIE -g -fno-omit-frame-pointer" } 114bb7bf2d4SSergey Makeev linkoptions { "-fsanitize=address -pie" } 115770590f8SSergey Makeev end 116228f9247SSergey Makeev end 117b65c7692SSergey Makeevend 11853fd86e4SSergey Makeev 11953fd86e4SSergey Makeev 12053fd86e4SSergey Makeev-- give each configuration/platform a unique output directory 12153fd86e4SSergey Makeev 12253fd86e4SSergey Makeevfor _, config in ipairs(config_list) do 12353fd86e4SSergey Makeev for _, plat in ipairs(platform_list) do 12453fd86e4SSergey Makeev configuration { config, plat } 125a3f9d5daSSergey Makeev objdir ( "Build/" .. _ACTION .. "/tmp/" .. config .. "-" .. plat ) 12653fd86e4SSergey Makeev end 12753fd86e4SSergey Makeevend 12853fd86e4SSergey Makeev 1299b5ce562SSergey Makeevos.mkdir("./Bin") 13025869a1eSSergey Makeev 13153fd86e4SSergey Makeev-- SUBPROJECTS 13253fd86e4SSergey Makeev 13325869a1eSSergey Makeev 13425869a1eSSergey Makeevproject "UnitTest++" 13525869a1eSSergey Makeev kind "StaticLib" 136*bc48b7efSSergey Makeev defines { 137*bc48b7efSSergey Makeev "_CRT_SECURE_NO_WARNINGS" 138*bc48b7efSSergey Makeev } 139*bc48b7efSSergey Makeev 14025869a1eSSergey Makeev files { 1412f083884Ss.makeev_local "ThirdParty/UnitTest++/UnitTest++/**.cpp", 1422f083884Ss.makeev_local "ThirdParty/UnitTest++/UnitTest++/**.h", 14325869a1eSSergey Makeev } 14425869a1eSSergey Makeev 145f27fe1eeSadmin if isPosix or isOSX then 1462f083884Ss.makeev_local excludes { "ThirdParty/UnitTest++/UnitTest++/Win32/**.*" } 14725869a1eSSergey Makeev else 1482f083884Ss.makeev_local excludes { "ThirdParty/UnitTest++/UnitTest++/Posix/**.*" } 14925869a1eSSergey Makeev end 15025869a1eSSergey Makeev 15125869a1eSSergey Makeev 15225869a1eSSergey Makeevproject "Squish" 15325869a1eSSergey Makeev kind "StaticLib" 154*bc48b7efSSergey Makeev defines { 155*bc48b7efSSergey Makeev "_CRT_SECURE_NO_WARNINGS" 156*bc48b7efSSergey Makeev } 157*bc48b7efSSergey Makeev 15825869a1eSSergey Makeev files { 1592f083884Ss.makeev_local "ThirdParty/Squish/**.*", 16025869a1eSSergey Makeev } 16125869a1eSSergey Makeev 162*bc48b7efSSergey Makeev includedirs { 1632f083884Ss.makeev_local "ThirdParty/Squish" 16425869a1eSSergey Makeev } 16525869a1eSSergey Makeev 16625869a1eSSergey Makeevproject "TaskScheduler" 16725869a1eSSergey Makeev kind "StaticLib" 16825869a1eSSergey Makeev flags {"NoPCH"} 16925869a1eSSergey Makeev files { 17025869a1eSSergey Makeev "Scheduler/**.*", 171*bc48b7efSSergey Makeev "ThirdParty/Boost.Context/*.h", 17225869a1eSSergey Makeev } 17325869a1eSSergey Makeev 174*bc48b7efSSergey Makeev includedirs { 175*bc48b7efSSergey Makeev "ThirdParty/Squish", "Scheduler/Include", "ThirdParty/UnitTest++/UnitTest++", "ThirdParty/Boost.Context" 17625869a1eSSergey Makeev } 17725869a1eSSergey Makeev 178f27fe1eeSadmin if isPosix or isOSX then 17925869a1eSSergey Makeev excludes { "Src/Platform/Windows/**.*" } 18025869a1eSSergey Makeev else 18125869a1eSSergey Makeev excludes { "Src/Platform/Posix/**.*" } 18225869a1eSSergey Makeev end 18325869a1eSSergey Makeev 1842f083884Ss.makeev_localproject "TaskSchedulerTests" 18553fd86e4SSergey Makeev flags {"NoPCH"} 18653fd86e4SSergey Makeev kind "ConsoleApp" 18753fd86e4SSergey Makeev files { 1882f083884Ss.makeev_local "SchedulerTests/**.*", 1890bb199c0SSergey Makeev } 1900bb199c0SSergey Makeev 191*bc48b7efSSergey Makeev includedirs { 1922f083884Ss.makeev_local "ThirdParty/Squish", "Scheduler/Include", "ThirdParty/UnitTest++/UnitTest++" 1930bb199c0SSergey Makeev } 1940bb199c0SSergey Makeev 195f27fe1eeSadmin if isPosix or isOSX then 1960bb199c0SSergey Makeev excludes { "Src/Platform/Windows/**.*" } 1970bb199c0SSergey Makeev else 1980bb199c0SSergey Makeev excludes { "Src/Platform/Posix/**.*" } 1990bb199c0SSergey Makeev end 2000bb199c0SSergey Makeev 2010bb199c0SSergey Makeev links { 2020bb199c0SSergey Makeev "UnitTest++", "Squish", "TaskScheduler" 2030bb199c0SSergey Makeev } 2040bb199c0SSergey Makeev 205f27fe1eeSadmin if isPosix or isOSX then 206b53376a6SSergey Makeev links { "pthread" } 207b53376a6SSergey Makeev end 2080bb199c0SSergey Makeev 20979ba6b05SSergey Makeev 21079ba6b05SSergey Makeev 211