quickjs/premake5.lua
Andrew 2ead907a60 JS_STRICT_NAN_BOXING
JS_STRICT_NAN_BOXING option allows compact packaging for 32 **and ** 64 bit versions.

JS_STRICT_NAN_BOXING is the only option that enables x64 builds using MSVC
2020-10-11 18:24:37 -07:00

110 lines
2.5 KiB
Lua

-----------------------------------------------------------------------------------------------------------------------
(function()
-- generate "quickjs-version.h" using VERSION file
local file = io.open("VERSION", "r")
local vers = file:read()
file:close()
vars = vers:gsub("%s+", "")
file = io.open("quickjs-version.h", "w+")
file:write("#define QUICKJS_VERSION \"" .. vers .. "\"")
file:close()
end)()
workspace "quickjs-msvc"
-- Premake output folder
location(path.join(".build", _ACTION))
defines {"JS_STRICT_NAN_BOXING"} -- this option enables x64 build
platforms { "x86", "x64", "arm32", "arm64" }
-- Configuration settings
configurations { "Debug", "Release" }
filter "platforms:x86"
architecture "x86"
filter "platforms:x64"
architecture "x86_64"
filter "platforms:arm32"
architecture "ARM"
filter "platforms:arm64"
architecture "ARM64"
filter "system:windows"
removeplatforms { "arm32" }
-- Debug configuration
filter { "configurations:Debug" }
defines { "DEBUG" }
symbols "On"
optimize "Off"
-- Release configuration
filter { "configurations:Release" }
defines { "NDEBUG" }
optimize "Speed"
inlining "Auto"
filter { "language:not C#" }
defines { "_CRT_SECURE_NO_WARNINGS" }
buildoptions { "/std:c++latest" }
systemversion "latest"
filter { }
targetdir ".bin/%{cfg.longname}/"
exceptionhandling "Off"
rtti "Off"
--vectorextensions "AVX2"
-----------------------------------------------------------------------------------------------------------------------
project "quickjs"
language "C"
kind "StaticLib"
files {
"cutils.h",
"cutils.c",
"libregexp.c",
"libunicode.c",
"quickjs.c",
"quickjs-libc.c",
"libregexp.h",
"libregexp-opcode.h",
"libunicode.h",
"libunicode-table.h",
"list.h",
"quickjs.h",
"quickjs-atom.h",
"quickjs-libc.h",
"quickjs-opcode.h"
}
-----------------------------------------------------------------------------------------------------------------------
project "qjsc"
language "C"
kind "ConsoleApp"
links { "quickjs" }
files {
"qjsc.c"
}
-----------------------------------------------------------------------------------------------------------------------
project "qjs"
language "C"
kind "ConsoleApp"
links { "quickjs" }
dependson { "qjsc" }
files {
"qjs.c",
"repl.js",
"repl.c"
}
-- Compile repl.js and save bytecode into repl.c
prebuildcommands { "\"%{cfg.buildtarget.directory}/qjsc.exe\" -c -o \"../../repl.c\" -m \"../../repl.js\"" }