aboutsummaryrefslogtreecommitdiff
path: root/src/host/genversion.lua
blob: 28f7206c547adab5e8670b30f026fca6c11ddca1 (plain)
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
----------------------------------------------------------------------------
-- Lua script to embed the rolling release version in luajit.h.
----------------------------------------------------------------------------
-- Copyright (C) 2005-2023 Mike Pall. All rights reserved.
-- Released under the MIT license. See Copyright Notice in luajit.h
----------------------------------------------------------------------------

local arg = {...}
local FILE_ROLLING_H = arg[1] or "luajit_rolling.h"
local FILE_RELVER_TXT = arg[2] or "luajit_relver.txt"
local FILE_LUAJIT_H = arg[3] or "luajit.h"

local function file_read(file)
  local fp = assert(io.open(file, "rb"), "run from the wrong directory")
  local data = assert(fp:read("*a"))
  fp:close()
  return data
end

local function file_write_mod(file, data)
  local fp = io.open(file, "rb")
  if fp then
    local odata = assert(fp:read("*a"))
    fp:close()
    if odata == data then return end
  end
  fp = assert(io.open(file, "wb"))
  assert(fp:write(data))
  assert(fp:close())
end

local text = file_read(FILE_ROLLING_H)
local relver = file_read(FILE_RELVER_TXT):match("(%d+)")

if relver then
  text = text:gsub("ROLLING", relver)
else
  io.stderr:write([[
**** WARNING Cannot determine rolling release version from git log.
**** WARNING The 'git' command must be available during the build.
]])
  file_write_mod(FILE_RELVER_TXT, "ROLLING\n") -- Fallback for install target.
end

file_write_mod(FILE_LUAJIT_H, text)