xref: /TaskScheduler/premake4.lua (revision 82479a85)
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
9023e4c92cSs.makeev_local		buildoptions { "-Wno-invalid-offsetof -Wno-deprecated-declarations -fno-omit-frame-pointer" }
9123e4c92cSs.makeev_local		--linkoptions { "-fsanitize=undefined" }
9236fb9396SSergey Makeev	else
934372a638SSergey Makeev--		defines { "MT_THREAD_SANITIZER"}
94ddbc77efSs.makeev_local		buildoptions { "-Wno-invalid-offsetof -fPIE -g -fno-omit-frame-pointer" }
95ddbc77efSs.makeev_local--		buildoptions { "-Wno-invalid-offsetof -fsanitize=address -fPIE -g -fno-omit-frame-pointer" }
96ddbc77efSs.makeev_local--  		linkoptions { "-fsanitize=address -pie" }
97770590f8SSergey Makeev  	end
98228f9247SSergey Makeev  end
99b65c7692SSergey Makeevend
10053fd86e4SSergey Makeev
10153fd86e4SSergey Makeevconfiguration "x64"
102228f9247SSergey Makeevif isVisualStudio then
103f180001aSSergey Makeev-- Compiler Warning (level 4) C4127. Conditional expression is constant
10433e9cadaSSergey Makeev        buildoptions { "/wd4127"  }
105228f9247SSergey Makeevelse
106770590f8SSergey Makeev	buildoptions { "-std=c++11" }
107b65c7692SSergey Makeev  if isPosix then
108770590f8SSergey Makeev  	linkoptions { "-rdynamic" }
10936fb9396SSergey Makeev  	if isOSX then
11023e4c92cSs.makeev_local		buildoptions { "-Wno-invalid-offsetof -Wno-deprecated-declarations -fno-omit-frame-pointer" }
11123e4c92cSs.makeev_local		--linkoptions { "-fsanitize=undefined" }
11236fb9396SSergey Makeev	else
1134372a638SSergey Makeev--		defines { "MT_THREAD_SANITIZER"}
114*82479a85Ss.makeev_local		buildoptions { "-Wno-invalid-offsetof -fPIE -g -fno-omit-frame-pointer" }
115*82479a85Ss.makeev_local--		buildoptions { "-Wno-invalid-offsetof -fsanitize=address -fPIE -g -fno-omit-frame-pointer" }
116*82479a85Ss.makeev_local--  		linkoptions { "-fsanitize=address -pie" }
117770590f8SSergey Makeev  	end
118228f9247SSergey Makeev  end
119b65c7692SSergey Makeevend
12053fd86e4SSergey Makeev
12153fd86e4SSergey Makeev
12253fd86e4SSergey Makeev--  give each configuration/platform a unique output directory
12353fd86e4SSergey Makeev
12453fd86e4SSergey Makeevfor _, config in ipairs(config_list) do
12553fd86e4SSergey Makeev	for _, plat in ipairs(platform_list) do
12653fd86e4SSergey Makeev		configuration { config, plat }
127a3f9d5daSSergey Makeev		objdir    ( "Build/" .. _ACTION .. "/tmp/"  .. config  .. "-" .. plat )
12853fd86e4SSergey Makeev	end
12953fd86e4SSergey Makeevend
13053fd86e4SSergey Makeev
1319b5ce562SSergey Makeevos.mkdir("./Bin")
13225869a1eSSergey Makeev
13353fd86e4SSergey Makeev-- SUBPROJECTS
13453fd86e4SSergey Makeev
13525869a1eSSergey Makeev
13625869a1eSSergey Makeevproject "UnitTest++"
13725869a1eSSergey Makeev	kind "StaticLib"
138bc48b7efSSergey Makeev	defines {
139bc48b7efSSergey Makeev		"_CRT_SECURE_NO_WARNINGS"
140bc48b7efSSergey Makeev	}
141bc48b7efSSergey Makeev
14225869a1eSSergey Makeev	files {
1432f083884Ss.makeev_local		"ThirdParty/UnitTest++/UnitTest++/**.cpp",
1442f083884Ss.makeev_local		"ThirdParty/UnitTest++/UnitTest++/**.h",
14525869a1eSSergey Makeev	}
14625869a1eSSergey Makeev
147f27fe1eeSadmin	if isPosix or isOSX then
1482f083884Ss.makeev_local		excludes { "ThirdParty/UnitTest++/UnitTest++/Win32/**.*" }
14925869a1eSSergey Makeev	else
1502f083884Ss.makeev_local		excludes { "ThirdParty/UnitTest++/UnitTest++/Posix/**.*" }
15125869a1eSSergey Makeev	end
15225869a1eSSergey Makeev
15325869a1eSSergey Makeev
15425869a1eSSergey Makeevproject "Squish"
15525869a1eSSergey Makeev	kind "StaticLib"
156bc48b7efSSergey Makeev	defines {
157bc48b7efSSergey Makeev		"_CRT_SECURE_NO_WARNINGS"
158bc48b7efSSergey Makeev	}
159bc48b7efSSergey Makeev
16025869a1eSSergey Makeev	files {
1612f083884Ss.makeev_local		"ThirdParty/Squish/**.*",
16225869a1eSSergey Makeev	}
16325869a1eSSergey Makeev
164bc48b7efSSergey Makeev	includedirs {
1652f083884Ss.makeev_local		"ThirdParty/Squish"
16625869a1eSSergey Makeev	}
16725869a1eSSergey Makeev
16825869a1eSSergey Makeevproject "TaskScheduler"
16925869a1eSSergey Makeev    kind "StaticLib"
17025869a1eSSergey Makeev 	flags {"NoPCH"}
17125869a1eSSergey Makeev 	files {
17225869a1eSSergey Makeev 		"Scheduler/**.*",
173bc48b7efSSergey Makeev		 "ThirdParty/Boost.Context/*.h",
17425869a1eSSergey Makeev 	}
17525869a1eSSergey Makeev
176bc48b7efSSergey Makeev	includedirs {
177bc48b7efSSergey Makeev		"ThirdParty/Squish", "Scheduler/Include", "ThirdParty/UnitTest++/UnitTest++", "ThirdParty/Boost.Context"
17825869a1eSSergey Makeev	}
17925869a1eSSergey Makeev
180f27fe1eeSadmin	if isPosix or isOSX then
18125869a1eSSergey Makeev	excludes { "Src/Platform/Windows/**.*" }
18225869a1eSSergey Makeev	else
18325869a1eSSergey Makeev	excludes { "Src/Platform/Posix/**.*" }
18425869a1eSSergey Makeev	end
18525869a1eSSergey Makeev
1862f083884Ss.makeev_localproject "TaskSchedulerTests"
18753fd86e4SSergey Makeev 	flags {"NoPCH"}
18853fd86e4SSergey Makeev 	kind "ConsoleApp"
18953fd86e4SSergey Makeev 	files {
1902f083884Ss.makeev_local 		"SchedulerTests/**.*",
1910bb199c0SSergey Makeev 	}
1920bb199c0SSergey Makeev
193bc48b7efSSergey Makeev	includedirs {
1942f083884Ss.makeev_local		"ThirdParty/Squish", "Scheduler/Include", "ThirdParty/UnitTest++/UnitTest++"
1950bb199c0SSergey Makeev	}
1960bb199c0SSergey Makeev
197f27fe1eeSadmin	if isPosix or isOSX then
1980bb199c0SSergey Makeev	excludes { "Src/Platform/Windows/**.*" }
1990bb199c0SSergey Makeev	else
2000bb199c0SSergey Makeev	excludes { "Src/Platform/Posix/**.*" }
2010bb199c0SSergey Makeev	end
2020bb199c0SSergey Makeev
2030bb199c0SSergey Makeev	links {
2040bb199c0SSergey Makeev		"UnitTest++", "Squish", "TaskScheduler"
2050bb199c0SSergey Makeev	}
2060bb199c0SSergey Makeev
207f27fe1eeSadmin	if isPosix or isOSX then
208b53376a6SSergey Makeev		links { "pthread" }
209b53376a6SSergey Makeev	end
2100bb199c0SSergey Makeev
21179ba6b05SSergey Makeev
21279ba6b05SSergey Makeev
213