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 3816889716SSergey Makeevif isVisualStudio then 3925869a1eSSergey Makeev debugdir ("Bin") 4016889716SSergey Makeevend 4116889716SSergey Makeev 4253fd86e4SSergey Makeev 4353fd86e4SSergey Makeev local config_list = { 4453fd86e4SSergey Makeev "Release", 4553fd86e4SSergey Makeev "Debug", 468112dedfSSergey Makeev "Instrumented_Release", 478112dedfSSergey Makeev "Instrumented_Debug" 4853fd86e4SSergey Makeev } 4953fd86e4SSergey Makeev local platform_list = { 5053fd86e4SSergey Makeev "x32", 5153fd86e4SSergey Makeev "x64" 5253fd86e4SSergey Makeev } 5353fd86e4SSergey Makeev 5453fd86e4SSergey Makeev configurations(config_list) 5553fd86e4SSergey Makeev platforms(platform_list) 5653fd86e4SSergey Makeev 5753fd86e4SSergey Makeev 5853fd86e4SSergey Makeev-- CONFIGURATIONS 5953fd86e4SSergey Makeev 608112dedfSSergey Makeevconfiguration "Instrumented_Release" 61f371f0bdSSergey Makeev defines { "NDEBUG", "MT_INSTRUMENTED_BUILD", "MT_UNICODE" } 628112dedfSSergey Makeev flags { "Symbols", optimization_flags } 638112dedfSSergey Makeev 648112dedfSSergey Makeevconfiguration "Instrumented_Debug" 65f371f0bdSSergey Makeev defines { "_DEBUG", "_CRTDBG_MAP_ALLOC", "MT_INSTRUMENTED_BUILD", "MT_UNICODE" } 668112dedfSSergey Makeev flags { "Symbols" } 678112dedfSSergey Makeev 686d35225cSSergey Makeevconfiguration "Release" 69f371f0bdSSergey Makeev defines { "NDEBUG", "MT_UNICODE" } 7053fd86e4SSergey Makeev flags { "Symbols", optimization_flags } 7153fd86e4SSergey Makeev 726d35225cSSergey Makeevconfiguration "Debug" 73f371f0bdSSergey Makeev defines { "_DEBUG", "_CRTDBG_MAP_ALLOC", "MT_UNICODE"} 7453fd86e4SSergey Makeev flags { "Symbols" } 7553fd86e4SSergey Makeev 7653fd86e4SSergey Makeevconfiguration "x32" 77228f9247SSergey Makeevif isVisualStudio then 78f180001aSSergey Makeev-- Compiler Warning (level 4) C4127. Conditional expression is constant 7933e9cadaSSergey Makeev buildoptions { "/wd4127" } 80228f9247SSergey Makeevelse 81770590f8SSergey Makeev buildoptions { "-std=c++11" } 82b65c7692SSergey Makeev if isPosix then 83770590f8SSergey Makeev linkoptions { "-rdynamic" } 8436fb9396SSergey Makeev if isOSX then 857f96f495SSergey Makeev buildoptions { "-Wno-invalid-offsetof -Wno-deprecated-declarations -fsanitize=address -fno-omit-frame-pointer" } 86b930228eSSergey Makeev linkoptions { "-fsanitize=address" } 8736fb9396SSergey Makeev else 884372a638SSergey Makeev-- defines { "MT_THREAD_SANITIZER"} 89f3505206SSergey Makeev buildoptions { "-Wno-invalid-offsetof -fsanitize=undefined -fPIE -g -fno-omit-frame-pointer" } 90f3505206SSergey Makeev linkoptions { "-fsanitize=undefined -pie" } 91770590f8SSergey Makeev end 92228f9247SSergey Makeev end 93b65c7692SSergey Makeevend 9453fd86e4SSergey Makeev 9553fd86e4SSergey Makeevconfiguration "x64" 96228f9247SSergey Makeevif isVisualStudio then 97f180001aSSergey Makeev-- Compiler Warning (level 4) C4127. Conditional expression is constant 9833e9cadaSSergey Makeev buildoptions { "/wd4127" } 99228f9247SSergey Makeevelse 100770590f8SSergey Makeev buildoptions { "-std=c++11" } 101b65c7692SSergey Makeev if isPosix then 102770590f8SSergey Makeev linkoptions { "-rdynamic" } 10336fb9396SSergey Makeev if isOSX then 1047f96f495SSergey Makeev buildoptions { "-Wno-invalid-offsetof -Wno-deprecated-declarations -fsanitize=address -fno-omit-frame-pointer" } 105b930228eSSergey Makeev linkoptions { "-fsanitize=address" } 10636fb9396SSergey Makeev else 1074372a638SSergey Makeev-- defines { "MT_THREAD_SANITIZER"} 108f3505206SSergey Makeev buildoptions { "-Wno-invalid-offsetof -fsanitize=undefined -fPIE -g -fno-omit-frame-pointer" } 109f3505206SSergey Makeev linkoptions { "-fsanitize=undefined -pie" } 110770590f8SSergey Makeev end 111228f9247SSergey Makeev end 112b65c7692SSergey Makeevend 11353fd86e4SSergey Makeev 11453fd86e4SSergey Makeev 11553fd86e4SSergey Makeev-- give each configuration/platform a unique output directory 11653fd86e4SSergey Makeev 11753fd86e4SSergey Makeevfor _, config in ipairs(config_list) do 11853fd86e4SSergey Makeev for _, plat in ipairs(platform_list) do 11953fd86e4SSergey Makeev configuration { config, plat } 120a3f9d5daSSergey Makeev objdir ( "Build/" .. _ACTION .. "/tmp/" .. config .. "-" .. plat ) 12153fd86e4SSergey Makeev end 12253fd86e4SSergey Makeevend 12353fd86e4SSergey Makeev 1249b5ce562SSergey Makeevos.mkdir("./Bin") 12525869a1eSSergey Makeev 12653fd86e4SSergey Makeev-- SUBPROJECTS 12753fd86e4SSergey Makeev 12825869a1eSSergey Makeev 12925869a1eSSergey Makeevproject "UnitTest++" 13025869a1eSSergey Makeev kind "StaticLib" 13125869a1eSSergey Makeev defines { "_CRT_SECURE_NO_WARNINGS" } 13225869a1eSSergey Makeev files { 133*2f083884Ss.makeev_local "ThirdParty/UnitTest++/UnitTest++/**.cpp", 134*2f083884Ss.makeev_local "ThirdParty/UnitTest++/UnitTest++/**.h", 13525869a1eSSergey Makeev } 13625869a1eSSergey Makeev 137f27fe1eeSadminif isPosix or isOSX then 138*2f083884Ss.makeev_local excludes { "ThirdParty/UnitTest++/UnitTest++/Win32/**.*" } 13925869a1eSSergey Makeevelse 140*2f083884Ss.makeev_local excludes { "ThirdParty/UnitTest++/UnitTest++/Posix/**.*" } 14125869a1eSSergey Makeevend 14225869a1eSSergey Makeev 14325869a1eSSergey Makeev 14425869a1eSSergey Makeevproject "Squish" 14525869a1eSSergey Makeev kind "StaticLib" 14625869a1eSSergey Makeev defines { "_CRT_SECURE_NO_WARNINGS" } 14725869a1eSSergey Makeev files { 148*2f083884Ss.makeev_local "ThirdParty/Squish/**.*", 14925869a1eSSergey Makeev } 15025869a1eSSergey Makeev 15125869a1eSSergey Makeev includedirs 15225869a1eSSergey Makeev { 153*2f083884Ss.makeev_local "ThirdParty/Squish" 15425869a1eSSergey Makeev } 15525869a1eSSergey Makeev 15625869a1eSSergey Makeev 15725869a1eSSergey Makeevproject "TaskScheduler" 15825869a1eSSergey Makeev kind "StaticLib" 15925869a1eSSergey Makeev flags {"NoPCH"} 16025869a1eSSergey Makeev files { 16125869a1eSSergey Makeev "Scheduler/**.*", 16225869a1eSSergey Makeev } 16325869a1eSSergey Makeev 16425869a1eSSergey Makeev includedirs 16525869a1eSSergey Makeev { 166*2f083884Ss.makeev_local "ThirdParty/Squish", "Scheduler/Include", "ThirdParty/UnitTest++/UnitTest++" 16725869a1eSSergey Makeev } 16825869a1eSSergey Makeev 169f27fe1eeSadmin if isPosix or isOSX then 17025869a1eSSergey Makeev excludes { "Src/Platform/Windows/**.*" } 17125869a1eSSergey Makeev else 17225869a1eSSergey Makeev excludes { "Src/Platform/Posix/**.*" } 17325869a1eSSergey Makeev end 17425869a1eSSergey Makeev 175*2f083884Ss.makeev_localproject "TaskSchedulerTests" 17653fd86e4SSergey Makeev flags {"NoPCH"} 17753fd86e4SSergey Makeev kind "ConsoleApp" 17853fd86e4SSergey Makeev files { 179*2f083884Ss.makeev_local "SchedulerTests/**.*", 1800bb199c0SSergey Makeev } 1810bb199c0SSergey Makeev 1820bb199c0SSergey Makeev includedirs 1830bb199c0SSergey Makeev { 184*2f083884Ss.makeev_local "ThirdParty/Squish", "Scheduler/Include", "ThirdParty/UnitTest++/UnitTest++" 1850bb199c0SSergey Makeev } 1860bb199c0SSergey Makeev 187f27fe1eeSadmin if isPosix or isOSX then 1880bb199c0SSergey Makeev excludes { "Src/Platform/Windows/**.*" } 1890bb199c0SSergey Makeev else 1900bb199c0SSergey Makeev excludes { "Src/Platform/Posix/**.*" } 1910bb199c0SSergey Makeev end 1920bb199c0SSergey Makeev 1930bb199c0SSergey Makeev links { 1940bb199c0SSergey Makeev "UnitTest++", "Squish", "TaskScheduler" 1950bb199c0SSergey Makeev } 1960bb199c0SSergey Makeev 197f27fe1eeSadmin 198f27fe1eeSadmin if isPosix or isOSX then 199b53376a6SSergey Makeev links { "pthread" } 200b53376a6SSergey Makeev end 2010bb199c0SSergey Makeev 20279ba6b05SSergey Makeev 20379ba6b05SSergey Makeev 204