Use cflags instead of patching luaconf for compat

Gets rid of compiler warnings when a C module defines some
compatibility flags, e.g. luasocket.
This commit is contained in:
mpeterv 2016-03-28 19:58:14 +03:00
parent 2c41a94fcd
commit 06f2e38f50

View File

@ -358,11 +358,11 @@ class Lua(Program):
self.set_compat() self.set_compat()
self.add_options_to_version_suffix() self.add_options_to_version_suffix()
self.defines = []
self.redefines = [] self.redefines = []
self.add_compat_to_defines() self.compat_cflags = []
self.set_package_paths() self.set_package_paths()
self.add_package_paths_to_defines() self.add_package_paths_redefines()
self.add_compat_cflags_and_redefines()
@staticmethod @staticmethod
def major_version_from_source(): def major_version_from_source():
@ -422,7 +422,7 @@ class Lua(Program):
os.path.join(".", "?" + so_extension)) os.path.join(".", "?" + so_extension))
self.package_cpath = ";".join(cmodule_path_parts) self.package_cpath = ";".join(cmodule_path_parts)
def add_package_paths_to_defines(self): def add_package_paths_redefines(self):
package_path = self.package_path.replace("\\", "\\\\") package_path = self.package_path.replace("\\", "\\\\")
package_cpath = self.package_cpath.replace("\\", "\\\\") package_cpath = self.package_cpath.replace("\\", "\\\\")
self.redefines.extend([ self.redefines.extend([
@ -432,8 +432,7 @@ class Lua(Program):
"#define LUA_CPATH_DEFAULT \"{}\"".format(package_cpath) "#define LUA_CPATH_DEFAULT \"{}\"".format(package_cpath)
]) ])
def patch_defines(self): def patch_redefines(self):
defines = "\n".join(self.defines)
redefines = "\n".join(self.redefines) redefines = "\n".join(self.redefines)
luaconf_h = open(os.path.join("src", "luaconf.h"), "rb") luaconf_h = open(os.path.join("src", "luaconf.h"), "rb")
@ -441,15 +440,11 @@ class Lua(Program):
luaconf_h.close() luaconf_h.close()
body, _, tail = luaconf_src.rpartition(b"#endif") body, _, tail = luaconf_src.rpartition(b"#endif")
header, _, main = body.partition(b"#define")
first_define, main = main.split(b"\n", 1)
luaconf_h = open(os.path.join("src", "luaconf.h"), "wb") luaconf_h = open(os.path.join("src", "luaconf.h"), "wb")
luaconf_h.write(header + b"#define" + first_define + b"\n") luaconf_h.write(body)
luaconf_h.write(defines.encode("UTF-8") + b"\n") luaconf_h.write(redefines.encode("UTF-8"))
luaconf_h.write(main) luaconf_h.write(b"\n#endif")
luaconf_h.write(redefines.encode("UTF-8") + b"\n")
luaconf_h.write(b"#endif")
luaconf_h.write(tail) luaconf_h.write(tail)
luaconf_h.close() luaconf_h.close()
@ -467,7 +462,7 @@ class Lua(Program):
self.fetch() self.fetch()
print("Building " + self.title + self.version_suffix) print("Building " + self.title + self.version_suffix)
self.patch_defines() self.patch_redefines()
self.make() self.make()
if self.cached_build_path is not None: if self.cached_build_path is not None:
@ -549,7 +544,7 @@ class RioLua(Lua):
else: else:
self.compat = "default" if opts.compat in ["default", "5.2"] else opts.compat self.compat = "default" if opts.compat in ["default", "5.2"] else opts.compat
def add_compat_to_defines(self): def add_compat_cflags_and_redefines(self):
if self.major_version == "5.1": if self.major_version == "5.1":
if self.compat == "none": if self.compat == "none":
self.redefines.extend([ self.redefines.extend([
@ -559,13 +554,13 @@ class RioLua(Lua):
]) ])
elif self.major_version == "5.2": elif self.major_version == "5.2":
if self.compat == "default": if self.compat == "default":
self.defines.append("#define LUA_COMPAT_ALL") self.compat_cflags.append("-DLUA_COMPAT_ALL")
else: else:
if self.compat in ["5.1", "all"]: if self.compat in ["5.1", "all"]:
self.defines.append("#define LUA_COMPAT_5_1") self.compat_cflags.append("-DLUA_COMPAT_5_1")
if self.compat in ["default", "5.2", "all"]: if self.compat in ["default", "5.2", "all"]:
self.defines.append("#define LUA_COMPAT_5_2") self.compat_cflags.append("-DLUA_COMPAT_5_2")
def make(self): def make(self):
if self.major_version == "5.3": if self.major_version == "5.3":
@ -609,6 +604,8 @@ class RioLua(Lua):
else: else:
cflags = [] cflags = []
cflags.extend(self.compat_cflags)
if opts.cflags is not None: if opts.cflags is not None:
cflags.extend(opts.cflags.split()) cflags.extend(opts.cflags.split())
@ -737,12 +734,16 @@ class LuaJIT(Lua):
def set_compat(self): def set_compat(self):
self.compat = "5.2" if opts.compat in ["all", "5.2"] else "default" self.compat = "5.2" if opts.compat in ["all", "5.2"] else "default"
def add_compat_to_defines(self): def add_compat_cflags_and_redefines(self):
if self.compat != "default": if self.compat == "5.2":
self.defines.append("#define LUAJIT_ENABLE_LUA52COMPAT") self.compat_cflags.append("-DLUAJIT_ENABLE_LUA52COMPAT")
def make(self):
cflags = list(self.compat_cflags)
if opts.cflags is not None:
cflags.extend(opts.cflags.split())
@staticmethod
def make():
if opts.target == "cl": if opts.target == "cl":
os.chdir("src") os.chdir("src")
run("msvcbuild.bat") run("msvcbuild.bat")
@ -753,10 +754,10 @@ class LuaJIT(Lua):
else: else:
make = "make" make = "make"
if opts.cflags is None: if not cflags:
run(make) run(make)
else: else:
run(make, "XCFLAGS=" + opts.cflags) run(make, "XCFLAGS=" + " ".join(cflags))
def make_install(self): def make_install(self):
luajit_file = exe("luajit") luajit_file = exe("luajit")