diff options
author | starkos <unknown> | 2008-10-31 21:38:05 +0300 |
---|---|---|
committer | starkos <unknown> | 2008-10-31 21:38:05 +0300 |
commit | 608551f8f4bb15630a54bf21f1c48857feb89cb9 (patch) | |
tree | 8cf84989823ea063e60f805b8dedb619730bd5bc /premake4.lua | |
parent | 2dbd283813c78e65eea5537699c8104848233290 (diff) |
First integration of new Lua-based architecture
Diffstat (limited to 'premake4.lua')
-rw-r--r-- | premake4.lua | 140 |
1 files changed, 129 insertions, 11 deletions
diff --git a/premake4.lua b/premake4.lua index da62d67..98f5d9c 100644 --- a/premake4.lua +++ b/premake4.lua @@ -1,21 +1,139 @@ ---------------------------------------------------------------------------- --- Premake4 solution script for Premake4 --- Copyright (c) 2002-2008 Jason Perkins and the Premake project ---------------------------------------------------------------------------- +-- +-- Premake 4.x build configuration script +-- + solution "Premake4" - - configurations { "Debug", "Release" } + configurations { "Release", "Debug" } project "Premake4" + targetname "premake4" + language "C" + kind "ConsoleExe" + flags { "No64BitChecks", "ExtraWarnings", "FatalWarnings" } + includedirs { "src/host/lua-5.1.2/src" } - language "c" - defines { "_CRT_SECURE_NO_WARNINGS" } - files { "**.h", "**.c" } + files + { + "src/**.h", "src/**.c", "src/**.lua", "src/**.tmpl", + "tests/**.lua" + } + excludes + { + "src/premake.lua", + "src/host/lua-5.1.2/src/lua.c", + "src/host/lua-5.1.2/src/luac.c", + "src/host/lua-5.1.2/src/print.c", + "src/host/lua-5.1.2/**.lua", + "src/host/lua-5.1.2/etc/*.c" + } + configuration "Debug" - defines { "_DEBUG" } + targetdir "bin/debug" + defines "_DEBUG" + flags { "Symbols" } configuration "Release" - defines { "NDEBUG" } + targetdir "bin/release" + defines "NDEBUG" + flags { "OptimizeSize", "NoFramePointer" } + + configuration "vs.*" + defines { "_CRT_SECURE_NO_WARNINGS" } + + + + +-- +-- A more thorough cleanup +-- + + function onclean() + os.rmdir("bin") + os.rmdir("obj") -- get rid of this once "clean" is working properly + end + + + +-- +-- "Compile" action compiles scripts to bytecode and embeds into a static +-- data buffer in src/host/bytecode.c. +-- + + local function dumpfile(out, fname) + local func = loadfile(fname) + local dump = string.dump(func) + local len = string.len(dump) + out:write("\t\"") + for i=1,len do + out:write(string.format("\\%03o", string.byte(dump, i))) + end + out:write("\",\n") + return len + end + + local function dumptmpl(out, fname) + local f = io.open(fname) + local tmpl = f:read("*a") + f:close() + + local name = path.getbasename(fname) + local dump = "_TEMPLATES."..name.."=premake.template.loadstring('"..name.."',[["..tmpl.."]])" + local len = string.len(dump) + out:write("\t\"") + for i=1,len do + out:write(string.format("\\%03o", string.byte(dump, i))) + end + out:write("\",\n") + return len + end + + local function docompile() + local sizes = { } + + scripts, templates, actions = dofile("src/_manifest.lua") + + local out = io.open("src/host/bytecode.c", "w+b") + out:write("/* Precompiled bytecodes for built-in Premake scripts */\n") + out:write("/* To regenerate this file, run `premake --compile` (Premake 3.x) */\n\n") + + out:write("const char* builtin_bytecode[] = {\n") + + for i,fn in ipairs(scripts) do + print(fn) + s = dumpfile(out, "src/"..fn) + table.insert(sizes, s) + end + + for i,fn in ipairs(templates) do + print(fn) + s = dumptmpl(out, "src/"..fn) + table.insert(sizes, s) + end + + for i,fn in ipairs(actions) do + print(fn) + s = dumpfile(out, "src/"..fn) + table.insert(sizes, s) + end + + out:write("};\n\n"); + out:write("int builtin_sizes[] = {\n") + + for i,v in ipairs(sizes) do + out:write("\t"..v..",\n") + end + + out:write("\t0\n};\n"); + out:close() + + print("Done.") + end + + + premake.actions["compile"] = { + description = "Compile scripts to bytecode and embed in bytecode.c", + execute = docompile, + } |