xref: /TaskScheduler/premake4.lua (revision f180001a)
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
78*f180001aSSergey 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
97*f180001aSSergey 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 {
13325869a1eSSergey Makeev		"TestFramework/UnitTest++/**.cpp",
13425869a1eSSergey Makeev                "TestFramework/UnitTest++/**.h",
13525869a1eSSergey Makeev	}
13625869a1eSSergey Makeev
137f27fe1eeSadminif isPosix or isOSX then
13825869a1eSSergey Makeev	excludes { "TestFramework/UnitTest++/Win32/**.*" }
13925869a1eSSergey Makeevelse
14025869a1eSSergey Makeev	excludes { "TestFramework/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 {
14825869a1eSSergey Makeev		"Squish/**.*",
14925869a1eSSergey Makeev	}
15025869a1eSSergey Makeev
15125869a1eSSergey Makeev	includedirs
15225869a1eSSergey Makeev	{
15325869a1eSSergey Makeev		"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	{
16625869a1eSSergey Makeev		"Squish", "Scheduler/Include", "TestFramework/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
1750bb199c0SSergey Makeevproject "Tests"
17653fd86e4SSergey Makeev 	flags {"NoPCH"}
17753fd86e4SSergey Makeev 	kind "ConsoleApp"
17853fd86e4SSergey Makeev 	files {
1790bb199c0SSergey Makeev 		"Tests/**.*",
1800bb199c0SSergey Makeev 	}
1810bb199c0SSergey Makeev
1820bb199c0SSergey Makeev	includedirs
1830bb199c0SSergey Makeev	{
1840bb199c0SSergey Makeev		"Squish", "Scheduler/Include", "TestFramework/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