1228f9247SSergey Makeevif not _ACTION then 2228f9247SSergey Makeev _ACTION="vs2010" 3228f9247SSergey Makeevend 4228f9247SSergey Makeev 5f27fe1eeSadminisPosix = false 6228f9247SSergey MakeevisVisualStudio = false 7f27fe1eeSadminisOSX = false 8228f9247SSergey Makeev 9*32bfc654SDmitry Tsarevichif _ACTION == "vs2002" or _ACTION == "vs2003" or _ACTION == "vs2005" or _ACTION == "vs2008" or _ACTION == "vs2010" or _ACTION == "vs2012" 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 ) 30*32bfc654SDmitry Tsarevichif isVisualStudio then 31*32bfc654SDmitry Tsarevich flags {"NoManifest", "ExtraWarnings", "StaticRuntime", "NoMinimalRebuild", "FloatFast" } 32*32bfc654SDmitry Tsarevichelse 3353fd86e4SSergey Makeev flags {"NoManifest", "ExtraWarnings", "StaticRuntime", "NoMinimalRebuild", "FloatFast", "EnableSSE2" } 34*32bfc654SDmitry Tsarevichend 3553fd86e4SSergey Makeev optimization_flags = { "OptimizeSpeed" } 3653fd86e4SSergey Makeev targetdir("Bin") 3716889716SSergey Makeev 385a8ca7bdSadminif isPosix or isOSX then 39f27fe1eeSadmin defines { "_XOPEN_SOURCE=600" } 40f27fe1eeSadminend 41f27fe1eeSadmin 42ce0d6945Ss.makeev_localif isOSX then 43ce0d6945Ss.makeev_local defines { "_DARWIN_C_SOURCE=1" } 44ce0d6945Ss.makeev_localend 45ce0d6945Ss.makeev_local 4616889716SSergey Makeevif isVisualStudio then 47*32bfc654SDmitry Tsarevich defines { "_ALLOW_RTCc_IN_STL=1" } 4825869a1eSSergey Makeev debugdir ("Bin") 4916889716SSergey Makeevend 5016889716SSergey Makeev 5153fd86e4SSergey Makeev local config_list = { 5253fd86e4SSergey Makeev "Release", 5353fd86e4SSergey Makeev "Debug", 548112dedfSSergey Makeev "Instrumented_Release", 558112dedfSSergey Makeev "Instrumented_Debug" 5653fd86e4SSergey Makeev } 5753fd86e4SSergey Makeev local platform_list = { 5853fd86e4SSergey Makeev "x32", 5953fd86e4SSergey Makeev "x64" 6053fd86e4SSergey Makeev } 6153fd86e4SSergey Makeev 6253fd86e4SSergey Makeev configurations(config_list) 6353fd86e4SSergey Makeev platforms(platform_list) 6453fd86e4SSergey Makeev 6553fd86e4SSergey Makeev 6653fd86e4SSergey Makeev-- CONFIGURATIONS 6753fd86e4SSergey Makeev 688112dedfSSergey Makeevconfiguration "Instrumented_Release" 69f371f0bdSSergey Makeev defines { "NDEBUG", "MT_INSTRUMENTED_BUILD", "MT_UNICODE" } 708112dedfSSergey Makeev flags { "Symbols", optimization_flags } 718112dedfSSergey Makeev 728112dedfSSergey Makeevconfiguration "Instrumented_Debug" 73f371f0bdSSergey Makeev defines { "_DEBUG", "_CRTDBG_MAP_ALLOC", "MT_INSTRUMENTED_BUILD", "MT_UNICODE" } 748112dedfSSergey Makeev flags { "Symbols" } 758112dedfSSergey Makeev 766d35225cSSergey Makeevconfiguration "Release" 77f371f0bdSSergey Makeev defines { "NDEBUG", "MT_UNICODE" } 7853fd86e4SSergey Makeev flags { "Symbols", optimization_flags } 7953fd86e4SSergey Makeev 806d35225cSSergey Makeevconfiguration "Debug" 81f371f0bdSSergey Makeev defines { "_DEBUG", "_CRTDBG_MAP_ALLOC", "MT_UNICODE"} 8253fd86e4SSergey Makeev flags { "Symbols" } 8353fd86e4SSergey Makeev 8453fd86e4SSergey Makeevconfiguration "x32" 85228f9247SSergey Makeevif isVisualStudio then 86f180001aSSergey Makeev-- Compiler Warning (level 4) C4127. Conditional expression is constant 8733e9cadaSSergey Makeev buildoptions { "/wd4127" } 88*32bfc654SDmitry Tsarevich flags { "EnableSSE2" } 89228f9247SSergey Makeevelse 90770590f8SSergey Makeev buildoptions { "-std=c++11" } 91b65c7692SSergey Makeev if isPosix then 92770590f8SSergey Makeev linkoptions { "-rdynamic" } 9336fb9396SSergey Makeev if isOSX then 9423e4c92cSs.makeev_local buildoptions { "-Wno-invalid-offsetof -Wno-deprecated-declarations -fno-omit-frame-pointer" } 9523e4c92cSs.makeev_local --linkoptions { "-fsanitize=undefined" } 9636fb9396SSergey Makeev else 974372a638SSergey Makeev-- defines { "MT_THREAD_SANITIZER"} 98ddbc77efSs.makeev_local buildoptions { "-Wno-invalid-offsetof -fPIE -g -fno-omit-frame-pointer" } 99ddbc77efSs.makeev_local-- buildoptions { "-Wno-invalid-offsetof -fsanitize=address -fPIE -g -fno-omit-frame-pointer" } 100ddbc77efSs.makeev_local-- linkoptions { "-fsanitize=address -pie" } 101770590f8SSergey Makeev end 102228f9247SSergey Makeev end 103b65c7692SSergey Makeevend 10453fd86e4SSergey Makeev 10553fd86e4SSergey Makeevconfiguration "x64" 106228f9247SSergey Makeevif isVisualStudio then 107f180001aSSergey Makeev-- Compiler Warning (level 4) C4127. Conditional expression is constant 10833e9cadaSSergey Makeev buildoptions { "/wd4127" } 109228f9247SSergey Makeevelse 110770590f8SSergey Makeev buildoptions { "-std=c++11" } 111b65c7692SSergey Makeev if isPosix then 112770590f8SSergey Makeev linkoptions { "-rdynamic" } 11336fb9396SSergey Makeev if isOSX then 11423e4c92cSs.makeev_local buildoptions { "-Wno-invalid-offsetof -Wno-deprecated-declarations -fno-omit-frame-pointer" } 11523e4c92cSs.makeev_local --linkoptions { "-fsanitize=undefined" } 11636fb9396SSergey Makeev else 1174372a638SSergey Makeev-- defines { "MT_THREAD_SANITIZER"} 11882479a85Ss.makeev_local buildoptions { "-Wno-invalid-offsetof -fPIE -g -fno-omit-frame-pointer" } 11982479a85Ss.makeev_local-- buildoptions { "-Wno-invalid-offsetof -fsanitize=address -fPIE -g -fno-omit-frame-pointer" } 12082479a85Ss.makeev_local-- linkoptions { "-fsanitize=address -pie" } 121770590f8SSergey Makeev end 122228f9247SSergey Makeev end 123b65c7692SSergey Makeevend 12453fd86e4SSergey Makeev 12553fd86e4SSergey Makeev 12653fd86e4SSergey Makeev-- give each configuration/platform a unique output directory 12753fd86e4SSergey Makeev 12853fd86e4SSergey Makeevfor _, config in ipairs(config_list) do 12953fd86e4SSergey Makeev for _, plat in ipairs(platform_list) do 13053fd86e4SSergey Makeev configuration { config, plat } 131a3f9d5daSSergey Makeev objdir ( "Build/" .. _ACTION .. "/tmp/" .. config .. "-" .. plat ) 13253fd86e4SSergey Makeev end 13353fd86e4SSergey Makeevend 13453fd86e4SSergey Makeev 1359b5ce562SSergey Makeevos.mkdir("./Bin") 13625869a1eSSergey Makeev 13753fd86e4SSergey Makeev-- SUBPROJECTS 13853fd86e4SSergey Makeev 13925869a1eSSergey Makeev 14025869a1eSSergey Makeevproject "UnitTest++" 14125869a1eSSergey Makeev kind "StaticLib" 142bc48b7efSSergey Makeev defines { 143bc48b7efSSergey Makeev "_CRT_SECURE_NO_WARNINGS" 144bc48b7efSSergey Makeev } 145bc48b7efSSergey Makeev 14625869a1eSSergey Makeev files { 1472f083884Ss.makeev_local "ThirdParty/UnitTest++/UnitTest++/**.cpp", 1482f083884Ss.makeev_local "ThirdParty/UnitTest++/UnitTest++/**.h", 14925869a1eSSergey Makeev } 15025869a1eSSergey Makeev 151f27fe1eeSadmin if isPosix or isOSX then 1522f083884Ss.makeev_local excludes { "ThirdParty/UnitTest++/UnitTest++/Win32/**.*" } 15325869a1eSSergey Makeev else 1542f083884Ss.makeev_local excludes { "ThirdParty/UnitTest++/UnitTest++/Posix/**.*" } 15525869a1eSSergey Makeev end 15625869a1eSSergey Makeev 15725869a1eSSergey Makeev 15825869a1eSSergey Makeevproject "Squish" 15925869a1eSSergey Makeev kind "StaticLib" 160bc48b7efSSergey Makeev defines { 161bc48b7efSSergey Makeev "_CRT_SECURE_NO_WARNINGS" 162bc48b7efSSergey Makeev } 163bc48b7efSSergey Makeev 16425869a1eSSergey Makeev files { 1652f083884Ss.makeev_local "ThirdParty/Squish/**.*", 16625869a1eSSergey Makeev } 16725869a1eSSergey Makeev 168bc48b7efSSergey Makeev includedirs { 1692f083884Ss.makeev_local "ThirdParty/Squish" 17025869a1eSSergey Makeev } 17125869a1eSSergey Makeev 17225869a1eSSergey Makeevproject "TaskScheduler" 17325869a1eSSergey Makeev kind "StaticLib" 17425869a1eSSergey Makeev flags {"NoPCH"} 17525869a1eSSergey Makeev files { 17625869a1eSSergey Makeev "Scheduler/**.*", 177bc48b7efSSergey Makeev "ThirdParty/Boost.Context/*.h", 17825869a1eSSergey Makeev } 17925869a1eSSergey Makeev 180bc48b7efSSergey Makeev includedirs { 181bc48b7efSSergey Makeev "ThirdParty/Squish", "Scheduler/Include", "ThirdParty/UnitTest++/UnitTest++", "ThirdParty/Boost.Context" 18225869a1eSSergey Makeev } 18325869a1eSSergey Makeev 184f27fe1eeSadmin if isPosix or isOSX then 18525869a1eSSergey Makeev excludes { "Src/Platform/Windows/**.*" } 18625869a1eSSergey Makeev else 18725869a1eSSergey Makeev excludes { "Src/Platform/Posix/**.*" } 18825869a1eSSergey Makeev end 18925869a1eSSergey Makeev 1902f083884Ss.makeev_localproject "TaskSchedulerTests" 19153fd86e4SSergey Makeev flags {"NoPCH"} 19253fd86e4SSergey Makeev kind "ConsoleApp" 19353fd86e4SSergey Makeev files { 1942f083884Ss.makeev_local "SchedulerTests/**.*", 1950bb199c0SSergey Makeev } 1960bb199c0SSergey Makeev 197bc48b7efSSergey Makeev includedirs { 1982f083884Ss.makeev_local "ThirdParty/Squish", "Scheduler/Include", "ThirdParty/UnitTest++/UnitTest++" 1990bb199c0SSergey Makeev } 2000bb199c0SSergey Makeev 201f27fe1eeSadmin if isPosix or isOSX then 2020bb199c0SSergey Makeev excludes { "Src/Platform/Windows/**.*" } 2030bb199c0SSergey Makeev else 2040bb199c0SSergey Makeev excludes { "Src/Platform/Posix/**.*" } 2050bb199c0SSergey Makeev end 2060bb199c0SSergey Makeev 2070bb199c0SSergey Makeev links { 2080bb199c0SSergey Makeev "UnitTest++", "Squish", "TaskScheduler" 2090bb199c0SSergey Makeev } 2100bb199c0SSergey Makeev 211f27fe1eeSadmin if isPosix or isOSX then 212b53376a6SSergey Makeev links { "pthread" } 213b53376a6SSergey Makeev end 2140bb199c0SSergey Makeev 21579ba6b05SSergey Makeev 216