about summary refs log tree commit diff
path: root/bam.lua
diff options
context:
space:
mode:
Diffstat (limited to 'bam.lua')
-rw-r--r--bam.lua109
1 files changed, 82 insertions, 27 deletions
diff --git a/bam.lua b/bam.lua
index 006ba20f..e59e88eb 100644
--- a/bam.lua
+++ b/bam.lua
@@ -113,8 +113,13 @@ client_depends = {}
 server_link_other = {}
 
 if family == "windows" then
-	table.insert(client_depends, CopyToDirectory(".", "other\\freetype\\lib\\freetype.dll"))
-	table.insert(client_depends, CopyToDirectory(".", "other\\sdl\\vc2005libs\\SDL.dll"))
+	if platform == "win32" then
+		table.insert(client_depends, CopyToDirectory(".", "other\\freetype\\lib32\\freetype.dll"))
+		table.insert(client_depends, CopyToDirectory(".", "other\\sdl\\lib32\\SDL.dll"))
+	else
+		table.insert(client_depends, CopyToDirectory(".", "other\\freetype\\lib64\\freetype.dll"))
+		table.insert(client_depends, CopyToDirectory(".", "other\\sdl\\lib64\\SDL.dll"))
+	end
 
 	if config.compiler.driver == "cl" then
 		client_link_other = {ResCompile("other/icons/teeworlds_cl.rc")}
@@ -130,6 +135,9 @@ function Intermediate_Output(settings, input)
 end
 
 function build(settings)
+	-- apply compiler settings
+	config.compiler:Apply(settings)
+	
 	--settings.objdir = Path("objs")
 	settings.cc.Output = Intermediate_Output
 
@@ -137,7 +145,10 @@ function build(settings)
 		settings.cc.flags:Add("/wd4244")
 	else
 		settings.cc.flags:Add("-Wall", "-fno-exceptions")
-		if platform == "macosx" then
+		if family == "windows" then
+			-- disable visibility attribute support for gcc on windows
+			settings.cc.defines:Add("NO_VIZ")
+		elseif platform == "macosx" then
 			settings.cc.flags:Add("-mmacosx-version-min=10.5", "-isysroot /Developer/SDKs/MacOSX10.5.sdk")
 			settings.link.flags:Add("-mmacosx-version-min=10.5", "-isysroot /Developer/SDKs/MacOSX10.5.sdk")
 		elseif config.stackprotector.value == 1 then
@@ -156,6 +167,11 @@ function build(settings)
 		else
 			settings.link.libs:Add("pthread")
 		end
+		
+		if platform == "solaris" then
+		    settings.link.flags:Add("-lsocket")
+		    settings.link.flags:Add("-lnsl")
+		end
 	elseif family == "windows" then
 		settings.link.libs:Add("gdi32")
 		settings.link.libs:Add("user32")
@@ -289,7 +305,7 @@ release_settings.debug = 0
 release_settings.optimize = 1
 release_settings.cc.defines:Add("CONF_RELEASE")
 
-if platform == "macosx" and arch == "ia32" then
+if platform == "macosx" then
 	debug_settings_ppc = debug_settings:Copy()
 	debug_settings_ppc.config_name = "debug_ppc"
 	debug_settings_ppc.config_ext = "_ppc_d"
@@ -304,32 +320,71 @@ if platform == "macosx" and arch == "ia32" then
 	release_settings_ppc.link.flags:Add("-arch ppc")
 	release_settings_ppc.cc.defines:Add("CONF_RELEASE")
 
-	debug_settings_x86 = debug_settings:Copy()
-	debug_settings_x86.config_name = "debug_x86"
-	debug_settings_x86.config_ext = "_x86_d"
-	debug_settings_x86.cc.flags:Add("-arch i386")
-	debug_settings_x86.link.flags:Add("-arch i386")
-	debug_settings_x86.cc.defines:Add("CONF_DEBUG")
-
-	release_settings_x86 = release_settings:Copy()
-	release_settings_x86.config_name = "release_x86"
-	release_settings_x86.config_ext = "_x86"
-	release_settings_x86.cc.flags:Add("-arch i386")
-	release_settings_x86.link.flags:Add("-arch i386")
-	release_settings_x86.cc.defines:Add("CONF_RELEASE")
-
 	ppc_d = build(debug_settings_ppc)
-	x86_d = build(debug_settings_x86)
 	ppc_r = build(release_settings_ppc)
-	x86_r = build(release_settings_x86)
-	DefaultTarget("game_debug_x86")
-	PseudoTarget("release", ppc_r, x86_r)
-	PseudoTarget("debug", ppc_d, x86_d)
 
-	PseudoTarget("server_release", "server_release_x86", "server_release_ppc")
-	PseudoTarget("server_debug", "server_debug_x86", "server_debug_ppc")
-	PseudoTarget("client_release", "client_release_x86", "client_release_ppc")
-	PseudoTarget("client_debug", "client_debug_x86", "client_debug_ppc")
+	if arch == "ia32" or arch == "amd64" then
+		debug_settings_x86 = debug_settings:Copy()
+		debug_settings_x86.config_name = "debug_x86"
+		debug_settings_x86.config_ext = "_x86_d"
+		debug_settings_x86.cc.flags:Add("-arch i386")
+		debug_settings_x86.link.flags:Add("-arch i386")
+		debug_settings_x86.cc.defines:Add("CONF_DEBUG")
+
+		release_settings_x86 = release_settings:Copy()
+		release_settings_x86.config_name = "release_x86"
+		release_settings_x86.config_ext = "_x86"
+		release_settings_x86.cc.flags:Add("-arch i386")
+		release_settings_x86.link.flags:Add("-arch i386")
+		release_settings_x86.cc.defines:Add("CONF_RELEASE")
+	
+		x86_d = build(debug_settings_x86)
+		x86_r = build(release_settings_x86)
+	end
+
+	if arch == "amd64" then
+		debug_settings_x86_64 = debug_settings:Copy()
+		debug_settings_x86_64.config_name = "debug_x86_64"
+		debug_settings_x86_64.config_ext = "_x86_64_d"
+		debug_settings_x86_64.cc.flags:Add("-arch x86_64")
+		debug_settings_x86_64.link.flags:Add("-arch x86_64")
+		debug_settings_x86_64.cc.defines:Add("CONF_DEBUG")
+
+		release_settings_x86_64 = release_settings:Copy()
+		release_settings_x86_64.config_name = "release_x86_64"
+		release_settings_x86_64.config_ext = "_x86_64"
+		release_settings_x86_64.cc.flags:Add("-arch x86_64")
+		release_settings_x86_64.link.flags:Add("-arch x86_64")
+		release_settings_x86_64.cc.defines:Add("CONF_RELEASE")
+
+		x86_64_d = build(debug_settings_x86_64)
+		x86_64_r = build(release_settings_x86_64)
+	end
+
+	DefaultTarget("game_debug_x86")
+	
+	if arch == "ia32" then
+		PseudoTarget("release", ppc_r, x86_r)
+		PseudoTarget("debug", ppc_d, x86_d)
+		PseudoTarget("server_release", "server_release_x86", "server_release_ppc")
+		PseudoTarget("server_debug", "server_debug_x86", "server_debug_ppc")
+		PseudoTarget("client_release", "client_release_x86", "client_release_ppc")
+		PseudoTarget("client_debug", "client_debug_x86", "client_debug_ppc")
+	elseif arch == "amd64" then
+		PseudoTarget("release", ppc_r, x86_r, x86_64_r)
+		PseudoTarget("debug", ppc_d, x86_d, x86_64_d)
+		PseudoTarget("server_release", "server_release_x86", "server_release_x86_64", "server_release_ppc")
+		PseudoTarget("server_debug", "server_debug_x86", "server_release_x86_64", "server_debug_ppc")
+		PseudoTarget("client_release", "client_release_x86", "server_release_x86_64", "client_release_ppc")
+		PseudoTarget("client_debug", "client_debug_x86", "server_release_x86_64", "client_debug_ppc")
+	else
+		PseudoTarget("release", ppc_r)
+		PseudoTarget("debug", ppc_d)
+		PseudoTarget("server_release", "server_release_ppc")
+		PseudoTarget("server_debug", "server_debug_ppc")
+		PseudoTarget("client_release", "client_release_ppc")
+		PseudoTarget("client_debug", "client_debug_ppc")
+	end
 else
 	build(debug_settings)
 	build(release_settings)