1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214
|
---
-- Premake 5.x build configuration script
-- Use this script to configure the project with Premake5.
---
--
-- Remember my location; I will need it to locate sub-scripts later.
--
local corePath = _SCRIPT_DIR
--
-- Disable deprecation warnings for myself, so that older development
-- versions of Premake can be used to bootstrap new builds.
--
premake.api.deprecations "off"
--
-- Register supporting actions and options.
--
newaction {
trigger = "embed",
description = "Embed scripts in scripts.c; required before release builds",
execute = function ()
include (path.join(corePath, "scripts/embed.lua"))
end
}
newaction {
trigger = "package",
description = "Creates source and binary packages",
execute = function ()
include (path.join(corePath, "scripts/package.lua"))
end
}
newaction {
trigger = "test",
description = "Run the automated test suite",
execute = function ()
test = require "self-test"
premake.action.call("self-test")
end
}
newoption {
trigger = "test-only",
description = "When testing, run only the specified suite or test"
}
newoption {
trigger = "to",
value = "path",
description = "Set the output location for the generated files"
}
newoption {
trigger = "no-curl",
description = "Disable Curl 3rd party lib"
}
newoption {
trigger = "no-zlib",
description = "Disable Zlib/Zip 3rd party lib"
}
newoption {
trigger = "bytecode",
description = "Embed scripts as bytecode instead of stripped souce code"
}
--
-- Define the project. Put the release configuration first so it will be the
-- default when folks build using the makefile. That way they don't have to
-- worry about the /scripts argument and all that.
--
-- TODO: Switch to these new APIs once they've had a chance to land everywhere
--
-- defaultConfiguration "Release"
-- symbols "On"
--
solution "Premake5"
configurations { "Release", "Debug" }
location ( _OPTIONS["to"] )
flags { "No64BitChecks", "StaticRuntime", "MultiProcessorCompile" }
warnings "Extra"
if not _OPTIONS["no-zlib"] then
defines { "PREMAKE_COMPRESSION" }
end
if not _OPTIONS["no-curl"] then
defines { "CURL_STATICLIB", "PREMAKE_CURL"}
end
filter "configurations:Debug"
defines "_DEBUG"
flags { "Symbols" }
filter "configurations:Release"
defines "NDEBUG"
optimize "Full"
flags { "NoBufferSecurityCheck", "NoRuntimeChecks" }
filter "action:vs*"
defines { "_CRT_SECURE_NO_DEPRECATE", "_CRT_SECURE_NO_WARNINGS", "_CRT_NONSTDC_NO_WARNINGS" }
filter { "system:windows", "configurations:Release" }
flags { "NoIncrementalLink", "LinkTimeOptimization" }
project "Premake5"
targetname "premake5"
language "C"
kind "ConsoleApp"
includedirs { "contrib/lua/src", "contrib/luashim" }
links { "lua-lib" }
-- optional 3rd party libraries
if not _OPTIONS["no-zlib"] then
includedirs { "contrib/zlib", "contrib/libzip" }
links { "zip-lib", "zlib-lib" }
end
if not _OPTIONS["no-curl"] then
includedirs { "contrib/curl/include" }
links { "curl-lib" }
end
files
{
"*.txt", "**.lua",
"src/**.h", "src/**.c",
"modules/**"
}
excludes
{
"contrib/**.*",
"binmodules/**.*"
}
filter "configurations:Debug"
targetdir "bin/debug"
debugargs { "--scripts=%{prj.location}/%{path.getrelative(prj.location, prj.basedir)} test"}
debugdir "%{path.getrelative(prj.location, prj.basedir)}"
filter "configurations:Release"
targetdir "bin/release"
filter "system:windows"
links { "ole32", "ws2_32", "advapi32" }
filter "system:linux or bsd or hurd"
defines { "LUA_USE_POSIX", "LUA_USE_DLOPEN" }
links { "m" }
linkoptions { "-rdynamic" }
filter "system:linux or hurd"
links { "dl", "rt" }
filter { "system:not windows", "system:not macosx" }
if not _OPTIONS["no-curl"] then
links { "mbedtls-lib" }
end
filter "system:macosx"
defines { "LUA_USE_MACOSX" }
links { "CoreServices.framework", "Foundation.framework", "Security.framework", "readline" }
filter { "system:macosx", "action:gmake" }
toolset "clang"
filter { "system:solaris" }
linkoptions { "-Wl,--export-dynamic" }
filter "system:aix"
defines { "LUA_USE_POSIX", "LUA_USE_DLOPEN" }
links { "m" }
-- optional 3rd party libraries
group "contrib"
include "contrib/lua"
include "contrib/luashim"
if not _OPTIONS["no-zlib"] then
include "contrib/zlib"
include "contrib/libzip"
end
if not _OPTIONS["no-curl"] then
include "contrib/mbedtls"
include "contrib/curl"
end
group "Binary Modules"
include "binmodules/example"
--
-- A more thorough cleanup.
--
if _ACTION == "clean" then
os.rmdir("bin")
os.rmdir("build")
end
|