package = "LuaSocket"
version = "3.0rc2-1"
source = {
	url = "git://github.com/diegonehab/luasocket.git",
	tag = "v3.0-rc2",
}
description = {
	summary = "Network support for the Lua language",
	detailed = [[
		LuaSocket is a Lua extension library that is composed by two parts: a C core
		that provides support for the TCP and UDP transport layers, and a set of Lua
		modules that add support for functionality commonly needed by applications
		that deal with the Internet.
	]],
	homepage = "http://luaforge.net/projects/luasocket/",
	license = "MIT"
}
dependencies = {
   "lua >= 5.1"
}

local function make_plat(plat)
	local defines = {
	  unix = {
		 "LUASOCKET_DEBUG",
		 "LUASOCKET_API=__attribute__((visibility(\"default\")))",
		 "UNIX_API=__attribute__((visibility(\"default\")))",
		 "MIME_API=__attribute__((visibility(\"default\")))"
	  },
	  macosx = {
		 "LUASOCKET_DEBUG",
		 "UNIX_HAS_SUN_LEN",
		 "LUASOCKET_API=__attribute__((visibility(\"default\")))",
		 "UNIX_API=__attribute__((visibility(\"default\")))",
		 "MIME_API=__attribute__((visibility(\"default\")))"
	  },
	  win32 = {
		 "LUASOCKET_DEBUG",
		 "NDEBUG",
		 "LUASOCKET_API=__declspec(dllexport)",
		 "MIME_API=__declspec(dllexport)"
	  },
	  mingw32 = {
		 "LUASOCKET_DEBUG",
		 "LUASOCKET_INET_PTON",
		 "WINVER=0x0501",
		 "LUASOCKET_API=__declspec(dllexport)",
		 "MIME_API=__declspec(dllexport)"
	  }
	}
	local modules = {
		["socket.core"] = {
			sources = { "src/luasocket.c", "src/timeout.c", "src/buffer.c", "src/io.c", "src/auxiliar.c", "src/options.c", "src/inet.c", "src/except.c", "src/select.c", "src/tcp.c", "src/udp.c", "src/compat.c" },
			defines = defines[plat],
			incdir = "/src"
		},
		["mime.core"] = {
			sources = { "src/mime.c", "src/compat.c" },
			defines = defines[plat],
			incdir = "/src"
		},
		["socket.http"] = "src/http.lua",
		["socket.url"] = "src/url.lua",
		["socket.tp"] = "src/tp.lua",
		["socket.ftp"] = "src/ftp.lua",
		["socket.headers"] = "src/headers.lua",
		["socket.smtp"] = "src/smtp.lua",
		ltn12 = "src/ltn12.lua",
		socket = "src/socket.lua",
		mime = "src/mime.lua"
	}
	if plat == "unix" or plat == "macosx" or plat == "haiku" then
		modules["socket.core"].sources[#modules["socket.core"].sources+1] = "src/usocket.c"
		if plat == "haiku" then
			modules["socket.core"].libraries = {"network"}
		end
		modules["socket.unix"] = {
			sources = { "src/buffer.c", "src/auxiliar.c", "src/options.c", "src/timeout.c", "src/io.c", "src/usocket.c", "src/unix.c" },
			defines = defines[plat],
			incdir = "/src"
		}
		modules["socket.serial"] = {
			sources = { "src/buffer.c", "src/auxiliar.c", "src/options.c", "src/timeout.c", "src/io.c", "src/usocket.c", "src/serial.c" },
			defines = defines[plat],
			incdir = "/src"
		}
	end
	if plat == "win32" or plat == "mingw32" then
		modules["socket.core"].sources[#modules["socket.core"].sources+1] = "src/wsocket.c"
		modules["socket.core"].libraries = { "ws2_32" }
	end
	return { modules = modules }
end

build = {
	type = "builtin",
	platforms = {
		unix = make_plat("unix"),
		macosx = make_plat("macosx"),
		haiku = make_plat("haiku"),
		win32 = make_plat("win32"),
		mingw32 = make_plat("mingw32")
	},
	copy_directories = { "doc", "samples", "etc", "test" }
}