aboutsummaryrefslogtreecommitdiff
path: root/c-api
diff options
context:
space:
mode:
authorPhilipp Janda <siffiejoe@gmx.net>2017-08-07 20:22:18 +0200
committerPhilipp Janda <siffiejoe@gmx.net>2017-08-07 20:22:18 +0200
commitf608371c71644f5db60a3c83b2c7a44f1eb30eea (patch)
treec98a08855a0006843772e57a68c1b6dd30a8a419 /c-api
parent8b2d71e601d1b9695aea084bb5bf7aa7dc0ca230 (diff)
downloadlua-compat-5.3-f608371c71644f5db60a3c83b2c7a44f1eb30eea.tar.gz
lua-compat-5.3-f608371c71644f5db60a3c83b2c7a44f1eb30eea.tar.bz2
lua-compat-5.3-f608371c71644f5db60a3c83b2c7a44f1eb30eea.zip
Fix compilation issues with recent LuaJIT 2.1.
Protect macros with `#ifndef`. Use "compat53" prefix instead of "lua" prefix for the mode where static versions of the C API functions are created. Fixes #19.
Diffstat (limited to 'c-api')
-rw-r--r--c-api/compat-5.3.c2
-rw-r--r--c-api/compat-5.3.h63
2 files changed, 39 insertions, 26 deletions
diff --git a/c-api/compat-5.3.c b/c-api/compat-5.3.c
index d7d127f..b913196 100644
--- a/c-api/compat-5.3.c
+++ b/c-api/compat-5.3.c
@@ -263,7 +263,6 @@ COMPAT53_API const char *luaL_tolstring (lua_State *L, int idx, size_t *len) {
263} 263}
264 264
265 265
266#if !defined(COMPAT53_IS_LUAJIT)
267static int compat53_countlevels (lua_State *L) { 266static int compat53_countlevels (lua_State *L) {
268 lua_Debug ar; 267 lua_Debug ar;
269 int li = 1, le = 1; 268 int li = 1, le = 1;
@@ -418,7 +417,6 @@ COMPAT53_API int luaL_execresult (lua_State *L, int stat) {
418 return 3; 417 return 3;
419 } 418 }
420} 419}
421#endif /* not COMPAT53_IS_LUAJIT */
422 420
423 421
424COMPAT53_API void luaL_buffinit (lua_State *L, luaL_Buffer_53 *B) { 422COMPAT53_API void luaL_buffinit (lua_State *L, luaL_Buffer_53 *B) {
diff --git a/c-api/compat-5.3.h b/c-api/compat-5.3.h
index ba90d81..0083eb4 100644
--- a/c-api/compat-5.3.h
+++ b/c-api/compat-5.3.h
@@ -24,10 +24,9 @@ extern "C" {
24# undef COMPAT53_INCLUDE_SOURCE 24# undef COMPAT53_INCLUDE_SOURCE
25#else /* COMPAT53_PREFIX */ 25#else /* COMPAT53_PREFIX */
26/* - make all functions static and include the source. 26/* - make all functions static and include the source.
27 * - don't mess with the symbol names of functions
28 * - compat-5.3.c doesn't need to be compiled (and linked) separately 27 * - compat-5.3.c doesn't need to be compiled (and linked) separately
29 */ 28 */
30# define COMPAT53_PREFIX lua 29# define COMPAT53_PREFIX compat53
31# undef COMPAT53_API 30# undef COMPAT53_API
32# if defined(__GNUC__) || defined(__clang__) 31# if defined(__GNUC__) || defined(__clang__)
33# define COMPAT53_API __attribute__((__unused__)) static 32# define COMPAT53_API __attribute__((__unused__)) static
@@ -55,25 +54,39 @@ extern "C" {
55 * luaL_loadfilex 54 * luaL_loadfilex
56 */ 55 */
57 56
58/* PUC-Rio Lua uses lconfig_h as include guard for luaconf.h, 57#ifndef LUA_OK
59 * LuaJIT uses luaconf_h. If you use PUC-Rio's include files 58# define LUA_OK 0
60 * but LuaJIT's library, you will need to define the macro 59#endif
61 * COMPAT53_IS_LUAJIT yourself! */ 60#ifndef LUA_OPADD
62#if !defined(COMPAT53_IS_LUAJIT) && defined(luaconf_h) 61# define LUA_OPADD 0
63# define COMPAT53_IS_LUAJIT 62#endif
63#ifndef LUA_OPSUB
64# define LUA_OPSUB 1
65#endif
66#ifndef LUA_OPMUL
67# define LUA_OPMUL 2
68#endif
69#ifndef LUA_OPDIV
70# define LUA_OPDIV 3
71#endif
72#ifndef LUA_OPMOD
73# define LUA_OPMOD 4
74#endif
75#ifndef LUA_OPPOW
76# define LUA_OPPOW 5
77#endif
78#ifndef LUA_OPUNM
79# define LUA_OPUNM 6
80#endif
81#ifndef LUA_OPEQ
82# define LUA_OPEQ 0
83#endif
84#ifndef LUA_OPLT
85# define LUA_OPLT 1
86#endif
87#ifndef LUA_OPLE
88# define LUA_OPLE 2
64#endif 89#endif
65
66#define LUA_OK 0
67#define LUA_OPADD 0
68#define LUA_OPSUB 1
69#define LUA_OPMUL 2
70#define LUA_OPDIV 3
71#define LUA_OPMOD 4
72#define LUA_OPPOW 5
73#define LUA_OPUNM 6
74#define LUA_OPEQ 0
75#define LUA_OPLT 1
76#define LUA_OPLE 2
77 90
78typedef size_t lua_Unsigned; 91typedef size_t lua_Unsigned;
79 92
@@ -106,10 +119,14 @@ COMPAT53_API void lua_copy (lua_State *L, int from, int to);
106#define lua_len COMPAT53_CONCAT(COMPAT53_PREFIX, _len) 119#define lua_len COMPAT53_CONCAT(COMPAT53_PREFIX, _len)
107COMPAT53_API void lua_len (lua_State *L, int i); 120COMPAT53_API void lua_len (lua_State *L, int i);
108 121
109#define luaL_newlibtable(L, l) \ 122#ifndef luaL_newlibtable
123# define luaL_newlibtable(L, l) \
110 (lua_createtable(L, 0, sizeof(l)/sizeof(*(l))-1)) 124 (lua_createtable(L, 0, sizeof(l)/sizeof(*(l))-1))
111#define luaL_newlib(L, l) \ 125#endif
126#ifndef luaL_newlib
127# define luaL_newlib(L, l) \
112 (luaL_newlibtable(L, l), luaL_register(L, NULL, l)) 128 (luaL_newlibtable(L, l), luaL_register(L, NULL, l))
129#endif
113 130
114#define lua_pushglobaltable(L) \ 131#define lua_pushglobaltable(L) \
115 lua_pushvalue(L, LUA_GLOBALSINDEX) 132 lua_pushvalue(L, LUA_GLOBALSINDEX)
@@ -152,7 +169,6 @@ COMPAT53_API void *luaL_testudata (lua_State *L, int i, const char *tname);
152#define luaL_tolstring COMPAT53_CONCAT(COMPAT53_PREFIX, L_tolstring) 169#define luaL_tolstring COMPAT53_CONCAT(COMPAT53_PREFIX, L_tolstring)
153COMPAT53_API const char *luaL_tolstring (lua_State *L, int idx, size_t *len); 170COMPAT53_API const char *luaL_tolstring (lua_State *L, int idx, size_t *len);
154 171
155#if !defined(COMPAT53_IS_LUAJIT)
156#define luaL_traceback COMPAT53_CONCAT(COMPAT53_PREFIX, L_traceback) 172#define luaL_traceback COMPAT53_CONCAT(COMPAT53_PREFIX, L_traceback)
157COMPAT53_API void luaL_traceback (lua_State *L, lua_State *L1, const char *msg, int level); 173COMPAT53_API void luaL_traceback (lua_State *L, lua_State *L1, const char *msg, int level);
158 174
@@ -161,7 +177,6 @@ COMPAT53_API int luaL_fileresult (lua_State *L, int stat, const char *fname);
161 177
162#define luaL_execresult COMPAT53_CONCAT(COMPAT53_PREFIX, L_execresult) 178#define luaL_execresult COMPAT53_CONCAT(COMPAT53_PREFIX, L_execresult)
163COMPAT53_API int luaL_execresult (lua_State *L, int stat); 179COMPAT53_API int luaL_execresult (lua_State *L, int stat);
164#endif /* COMPAT53_IS_LUAJIT */
165 180
166#define lua_callk(L, na, nr, ctx, cont) \ 181#define lua_callk(L, na, nr, ctx, cont) \
167 ((void)(ctx), (void)(cont), lua_call(L, na, nr)) 182 ((void)(ctx), (void)(cont), lua_call(L, na, nr))