quickjs/premake5.lua
2020-10-27 13:27:28 -07:00

119 lines
2.8 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 on Windows/MSVC
"CONFIG_BIGNUM",
"CONFIG_JSX", -- native JSX support - enables JSX literals
}
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",
"libbf.c",
"libregexp.h",
"libregexp-opcode.h",
"libunicode.h",
"libunicode-table.h",
"list.h",
"quickjs.h",
"quickjs-atom.h",
"quickjs-libc.h",
"quickjs-opcode.h",
"quickjs-jsx.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",
"qjscalc.js",
"qjscalc.c"
}
-- Compile repl.js and save bytecode into repl.c
prebuildcommands { "\"%{cfg.buildtarget.directory}/qjsc.exe\" -c -o \"../../repl.c\" -m \"../../repl.js\"" }
prebuildcommands { "\"%{cfg.buildtarget.directory}/qjsc.exe\" -c -o \"../../qjscalc.c\" -m \"../../qjscalc.js\"" }