xref: /TaskScheduler/premake4.lua (revision 32bfc654)
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