diff --git a/SConscript b/SConscript index f133ffd44d..d7614f2a03 100644 --- a/SConscript +++ b/SConscript @@ -70,7 +70,8 @@ AddSconsOption('renderer', False, False, "Build the save renderer.") AddSconsOption('wall', False, False, "Error on all warnings.") AddSconsOption('no-warnings', False, False, "Disable all compiler warnings.") AddSconsOption('nolua', False, False, "Disable Lua.") -AddSconsOption('luajit', False, False, "Enable LuaJIT.") +AddSconsOption('luajit', False, False, "Enable LuaJIT") +AddSconsOption('lua52', False, False, "Compile using lua 5.2") AddSconsOption('nofft', False, False, "Disable FFT.") AddSconsOption("output", False, True, "Executable output name.") @@ -254,29 +255,41 @@ def findLibs(env, conf): #Look for Lua luaver = "lua5.1" if GetOption('luajit'): - if not conf.CheckLib(['luajit-5.1', 'luajit']): + if not conf.CheckLib(['luajit-5.1', 'luajit5.1', 'luajit']): FatalError("luajit development library not found or not installed") + env.Append(CPPDEFINES=["LUAJIT"]) luaver = "luajit" + elif GetOption('lua52'): + if not conf.CheckLib(['lua5.2', 'lua-5.2', 'lua52']): + FatalError("lua5.2 development library not found or not installed") + env.Append(CPPDEFINES=["LUA_COMPAT_ALL"]) + luaver = "lua5.2" else: if not conf.CheckLib(['lua5.1', 'lua-5.1', 'lua51', 'lua']): - if conf.CheckLib(['lua5.2', 'lua-5.2', 'lua52']): - env.Append(CPPDEFINES=["LUA_COMPAT_ALL"]) - luaver = "lua5.2" - elif platform != "Darwin" or not conf.CheckFramework("Lua"): + if platform != "Darwin" or not conf.CheckFramework("Lua"): FatalError("lua5.1 development library not found or not installed") + if platform == "Linux": try: env.ParseConfig("pkg-config --cflags {0}".format(luaver)) env.ParseConfig("pkg-config --libs {0}".format(luaver)) + env.Append(CPPDEFINES=["LUA_R_INCL"]) except: pass - - #Look for lua.h - if not conf.CheckCHeader('lua.h'): - if conf.CheckCHeader('lua5.1/lua.h'): - env.Append(CPPDEFINES=["LUA_INC"]) + else: + #Look for lua.h + foundheader = False + if GetOption('luajit'): + foundheader = conf.CheckCHeader('luajit-2.0/lua.h') + elif GetOption('lua52'): + foundheader = conf.CheckCHeader('lua5.2/lua.h') else: - FatalError("lua.h not found") + foundheader = conf.CheckCHeader('lua5.1/lua.h') + if not foundheader: + if conf.CheckCHeader('lua.h'): + env.Append(CPPDEFINES=["LUA_R_INCL"]) + else: + FatalError("lua.h not found") #Look for fftw if not GetOption('nofft') and not conf.CheckLib(['fftw3f', 'fftw3f-3', 'libfftw3f-3']): diff --git a/src/lua/LuaCompat.h b/src/lua/LuaCompat.h index f7e843d9a2..e8cd01fae6 100644 --- a/src/lua/LuaCompat.h +++ b/src/lua/LuaCompat.h @@ -6,14 +6,22 @@ extern "C" { #endif -#ifdef LUA_INC -#include "lua5.1/lua.h" -#include "lua5.1/lauxlib.h" -#include "lua5.1/lualib.h" -#else +#if defined(LUA_R_INCL) #include "lua.h" #include "lauxlib.h" #include "lualib.h" +#elif LUA_VERSION_NUM >= 502 +#include "lua5.2/lua.h" +#include "lua5.2/lauxlib.h" +#include "lua5.2/lualib.h" +#elif defined(LUAJIT) +#include "luajit-2.0/lua.h" +#include "luajit-2.0/lauxlib.h" +#include "luajit-2.0/lualib.h" +#else +#include "lua5.1/lua.h" +#include "lua5.1/lauxlib.h" +#include "lua5.1/lualib.h" #endif #if LUA_VERSION_NUM >= 502