Skip to content

Commit 09f5e86

Browse files
committed
Lua 5.4 changes... oh boy!
1 parent 5799084 commit 09f5e86

5 files changed

Lines changed: 106 additions & 46 deletions

File tree

cmake/Modules/FindLuaBuild/LuaVanilla.cmake

Lines changed: 50 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,9 @@ if (LUA_VANILLA_VERSION MATCHES "^5\\.1")
185185
lbaselib.c ldblib.c liolib.c lmathlib.c loslib.c ltablib.c
186186
lstrlib.c loadlib.c linit.c)
187187
set(LUA_VANILLA_LUA_SOURCES lua.c )
188+
if (LUA_BUILD_LUA_COMPILER)
188189
set(LUA_VANILLA_LUAC_SOURCES luac.c print.c )
190+
endif()
189191
set(LUA_VANILLA_GENERATE_LUA_HPP true)
190192
elseif (LUA_VANILLA_VERSION MATCHES "^5\\.2")
191193
set(LUA_VANILLA_LIB_SOURCES lapi.c lcode.c lctype.c ldebug.c ldo.c ldump.c
@@ -194,7 +196,9 @@ elseif (LUA_VANILLA_VERSION MATCHES "^5\\.2")
194196
lauxlib.c lbaselib.c lbitlib.c lcorolib.c ldblib.c liolib.c
195197
lmathlib.c loslib.c lstrlib.c ltablib.c loadlib.c linit.c)
196198
set(LUA_VANILLA_LUA_SOURCES lua.c )
199+
if (LUA_BUILD_LUA_COMPILER)
197200
set(LUA_VANILLA_LUAC_SOURCES luac.c )
201+
endif()
198202
set(LUA_VANILLA_GENERATE_LUA_HPP false)
199203
elseif (LUA_VANILLA_VERSION MATCHES "^5\\.3")
200204
set(LUA_VANILLA_LIB_SOURCES lapi.c lcode.c lctype.c ldebug.c ldo.c ldump.c
@@ -203,7 +207,9 @@ elseif (LUA_VANILLA_VERSION MATCHES "^5\\.3")
203207
lbaselib.c lbitlib.c lcorolib.c ldblib.c liolib.c lmathlib.c
204208
loslib.c lstrlib.c ltablib.c lutf8lib.c loadlib.c linit.c)
205209
set(LUA_VANILLA_LUA_SOURCES lua.c )
210+
if (LUA_BUILD_LUA_COMPILER)
206211
set(LUA_VANILLA_LUAC_SOURCES luac.c )
212+
endif()
207213
set(LUA_VANILLA_GENERATE_LUA_HPP false)
208214
elseif (LUA_VANILLA_VERSION MATCHES "^5\\.4")
209215
if (LUA_VANILLA_VERSION MATCHES "work")
@@ -215,7 +221,9 @@ elseif (LUA_VANILLA_VERSION MATCHES "^5\\.4")
215221
lparser.c lstate.c lstring.c lstrlib.c ltable.c ltablib.c ltm.c lundump.c
216222
lutf8lib.c lvm.c lzio.c)
217223
set(LUA_VANILLA_LUA_SOURCES lua.c )
224+
if (LUA_BUILD_LUA_COMPILER)
218225
set(LUA_VANILLA_LUAC_SOURCES luac.c )
226+
endif()
219227
set(LUA_VANILLA_GENERATE_LUA_HPP false)
220228
else()
221229
MESSAGE(WARNING "Using Lua 5.4.0-work1 file list for ${LUA_VERSION} version")
@@ -225,14 +233,15 @@ else()
225233
lparser.c lstate.c lstring.c lstrlib.c ltable.c ltablib.c ltm.c lundump.c
226234
lutf8lib.c lvm.c lzio.c)
227235
set(LUA_VANILLA_LUA_SOURCES lua.c )
236+
if (LUA_BUILD_LUA_COMPILER)
228237
set(LUA_VANILLA_LUAC_SOURCES luac.c )
238+
endif()
229239
set(LUA_VANILLA_GENERATE_LUA_HPP false)
230240
endif()
231241

232242
set(LUA_VANILLA_SOURCE_DIR "${LUA_BUILD_TOPLEVEL}/src")
233243
prepend(LUA_VANILLA_LIB_SOURCES "${LUA_VANILLA_SOURCE_DIR}/" ${LUA_VANILLA_LIB_SOURCES})
234244
prepend(LUA_VANILLA_LUA_SOURCES "${LUA_VANILLA_SOURCE_DIR}/" ${LUA_VANILLA_LUA_SOURCES})
235-
prepend(LUA_VANILLA_LUAC_SOURCES "${LUA_VANILLA_SOURCE_DIR}/" ${LUA_VANILLA_LUAC_SOURCES})
236245

237246
# download, just for the sake of download + extract
238247
# or pull from local folder
@@ -242,7 +251,7 @@ if (LUA_LOCAL_DIR)
242251
file(COPY "${LUA_LOCAL_DIR}/include"
243252
DESTINATION "${LUA_BUILD_TOPLEVEL}")
244253
add_custom_target(LUA_VANILLA
245-
DEPENDS "${LUA_VANILLA_LIB_SOURCES}" "${LUA_VANILLA_LUA_SOURCES}" "${LUA_VANILLA_LUAC_SOURCES}")
254+
DEPENDS "${LUA_VANILLA_LIB_SOURCES}" "${LUA_VANILLA_LUA_SOURCES}")
246255
set(LUA_VANILLA_INCLUDE_DIRS ${LUA_VANILLA_INCLUDE_DIRS} "${LUA_VANILLA_SOURCE_DIR}" "${LUA_BUILD_TOPLEVEL}/include")
247256
else()
248257
ExternalProject_Add(LUA_VANILLA
@@ -262,7 +271,7 @@ else()
262271
BUILD_COMMAND ""
263272
INSTALL_COMMAND ""
264273
TEST_COMMAND ""
265-
BUILD_BYPRODUCTS "${LUA_VANILLA_LIB_SOURCES}" "${LUA_VANILLA_LUA_SOURCES}" "${LUA_VANILLA_LUAC_SOURCES}")
274+
BUILD_BYPRODUCTS "${LUA_VANILLA_LIB_SOURCES}" "${LUA_VANILLA_LUA_SOURCES}")
266275

267276
# make a quick lua.hpp for 5.1 targets that don't have it
268277
if (LUA_VANILLA_GENERATE_LUA_HPP)
@@ -386,48 +395,47 @@ if (UNIX)
386395
endif()
387396

388397
# LuaC Compiler
389-
add_executable(${luacompiler} ${LUA_VANILLA_LUAC_SOURCES})
390-
if (BUILD_LUA_AS_DLL)
391-
# TODO: figure out how to make DLL internal symbols for lua public so we don't have to do this
392-
target_sources(${luacompiler} PRIVATE ${LUA_VANILLA_LIB_SOURCES})
393-
endif()
394-
set_target_properties(${luacompiler}
395-
PROPERTIES
396-
LANGUAGE C
397-
LINKER_LANGUAGE C
398-
C_STANDARD 99
399-
C_EXTENSIONS TRUE
400-
OUTPUT_NAME luac-${LUA_VANILLA_VERSION})
401-
target_include_directories(${luacompiler}
402-
PRIVATE "${LUA_VANILLA_INCLUDE_DIRS}")
403-
target_compile_definitions(${luacompiler}
404-
PUBLIC LUA_COMPAT_ALL ${LUA_VANILLA_DLL_DEFINE}
405-
PRIVATE LUA_COMPAT_ALL ${LUA_VANILLA_DLL_DEFINE})
406-
if (MSVC)
407-
target_compile_options(${luacompiler}
408-
PRIVATE /W1)
409-
else()
410-
target_compile_options(${luacompiler}
411-
PRIVATE -w)
412-
endif()
413-
if (WIN32)
414-
#target_compile_definitions(${luacompiler}
415-
# PRIVATE LUA_USE_WINDOWS)
416-
else()
417-
target_compile_definitions(${luacompiler}
418-
PRIVATE LUA_USE_LINUX)
419-
endif()
420-
target_link_libraries(${luacompiler} PRIVATE ${liblua})
421-
if (CMAKE_DL_LIBS)
422-
target_link_libraries(${luacompiler} PRIVATE ${CMAKE_DL_LIBS})
423-
endif()
424-
if (UNIX)
425-
# TODO: make readline optional?
426-
target_link_libraries(${luacompiler} PRIVATE m readline)
398+
if (LUA_BUILD_LUA_COMPILER)
399+
set_target_properties(${luacompiler}
400+
PROPERTIES
401+
LANGUAGE C
402+
LINKER_LANGUAGE C
403+
C_STANDARD 99
404+
C_EXTENSIONS TRUE
405+
OUTPUT_NAME luac-${LUA_VANILLA_VERSION})
406+
target_include_directories(${luacompiler}
407+
PRIVATE "${LUA_VANILLA_INCLUDE_DIRS}")
408+
target_compile_definitions(${luacompiler}
409+
PUBLIC LUA_COMPAT_ALL ${LUA_VANILLA_DLL_DEFINE}
410+
PRIVATE LUA_COMPAT_ALL ${LUA_VANILLA_DLL_DEFINE})
411+
if (MSVC)
412+
target_compile_options(${luacompiler}
413+
PRIVATE /W1)
414+
else()
415+
target_compile_options(${luacompiler}
416+
PRIVATE -w)
417+
endif()
418+
if (WIN32)
419+
#target_compile_definitions(${luacompiler}
420+
# PRIVATE LUA_USE_WINDOWS)
421+
else()
422+
target_compile_definitions(${luacompiler}
423+
PRIVATE LUA_USE_LINUX)
424+
endif()
425+
target_link_libraries(${luacompiler} PRIVATE ${liblua})
426+
if (CMAKE_DL_LIBS)
427+
target_link_libraries(${luacompiler} PRIVATE ${CMAKE_DL_LIBS})
428+
endif()
429+
if (UNIX)
430+
# TODO: make readline optional?
431+
target_link_libraries(${luacompiler} PRIVATE m readline)
432+
endif()
427433
endif()
428434

429435
# set externally-visible target indicator
430436
set(LUA_LIBRARIES ${liblua})
431437
set(LUA_INTERPRETER ${luainterpreter})
432-
set(LUA_COMPILER ${luacompiler})
438+
if (LUA_BUILD_LUA_COMPILER)
439+
set(LUA_COMPILER ${luacompiler})
440+
endif()
433441
set(LUA_INCLUDE_DIRS "${LUA_VANILLA_SOURCE_DIR}")

include/sol/compatibility.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,9 @@
4242
#ifndef COMPAT53_INCLUDE_SOURCE
4343
#define COMPAT53_INCLUDE_SOURCE 1
4444
#endif // Build Compat Layer Inline
45+
4546
#include "compatibility/compat-5.3.h"
47+
#include "compatibility/compat-5.4.h"
4648

4749
#endif // SOL_NO_COMPAT
4850

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#ifndef NOT_KEPLER_PROJECT_COMPAT54_H_
2+
#define NOT_KEPLER_PROJECT_COMPAT54_H_
3+
4+
#if defined(__cplusplus) && !defined(COMPAT53_LUA_CPP)
5+
extern "C" {
6+
#endif
7+
#include <lua.h>
8+
#include <lauxlib.h>
9+
#include <lualib.h>
10+
#if defined(__cplusplus) && !defined(COMPAT53_LUA_CPP)
11+
}
12+
#endif
13+
14+
#if defined(LUA_VERSION_NUM) && LUA_VERSION_NUM == 504
15+
16+
#if !defined(LUA_ERRGCMM)
17+
/* So Lua 5.4 actually removes this, which breaks sol2...
18+
man, this API is quite unstable...!
19+
*/
20+
# define LUA_ERRGCMM (LUA_ERRERR + 2)
21+
#endif /* LUA_ERRGCMM define */
22+
23+
#endif // Lua 5.4 only
24+
25+
#endif // NOT_KEPLER_PROJECT_COMPAT54_H_

single/include/sol/forward.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
2121

2222
// This file was generated with a script.
23-
// Generated 2019-07-26 02:13:25.323566 UTC
24-
// This header was generated with sol v3.0.3 (revision eb5c442)
23+
// Generated 2019-08-12 18:06:54.421648 UTC
24+
// This header was generated with sol v3.0.3 (revision 5799084)
2525
// https://github.com/ThePhD/sol2
2626

2727
#ifndef SOL_SINGLE_INCLUDE_FORWARD_HPP

single/include/sol/sol.hpp

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
2121

2222
// This file was generated with a script.
23-
// Generated 2019-07-26 02:13:25.052030 UTC
24-
// This header was generated with sol v3.0.3 (revision eb5c442)
23+
// Generated 2019-08-12 18:06:53.939935 UTC
24+
// This header was generated with sol v3.0.3 (revision 5799084)
2525
// https://github.com/ThePhD/sol2
2626

2727
#ifndef SOL_SINGLE_INCLUDE_HPP
@@ -2185,6 +2185,7 @@ namespace sol {
21852185
#ifndef COMPAT53_INCLUDE_SOURCE
21862186
#define COMPAT53_INCLUDE_SOURCE 1
21872187
#endif // Build Compat Layer Inline
2188+
21882189
// beginning of sol/compatibility/compat-5.3.h
21892190

21902191
#ifndef KEPLER_PROJECT_COMPAT53_H_
@@ -3431,6 +3432,30 @@ COMPAT53_API void luaL_requiref(lua_State *L, const char *modname,
34313432

34323433
// end of sol/compatibility/compat-5.3.h
34333434

3435+
// beginning of sol/compatibility/compat-5.4.h
3436+
3437+
#ifndef NOT_KEPLER_PROJECT_COMPAT54_H_
3438+
#define NOT_KEPLER_PROJECT_COMPAT54_H_
3439+
3440+
#if defined(__cplusplus) && !defined(COMPAT53_LUA_CPP)
3441+
extern "C" {
3442+
#endif
3443+
#if defined(__cplusplus) && !defined(COMPAT53_LUA_CPP)
3444+
}
3445+
#endif
3446+
3447+
#if defined(LUA_VERSION_NUM) && LUA_VERSION_NUM == 504
3448+
3449+
#if !defined(LUA_ERRGCMM)
3450+
/* So Lua 5.4 actually removes this, which breaks sol2...
3451+
man, this API is quite unstable...!
3452+
*/
3453+
# define LUA_ERRGCMM (LUA_ERRERR + 2)
3454+
#endif /* LUA_ERRGCMM define */
3455+
3456+
#endif // Lua 5.4 only
3457+
3458+
#endif // NOT_KEPLER_PROJECT_COMPAT54_H_// end of sol/compatibility/compat-5.4.h
34343459

34353460
#endif // SOL_NO_COMPAT
34363461

0 commit comments

Comments
 (0)