From 21f17e871ea3de419f682a8088337ba6ae1d015e Mon Sep 17 00:00:00 2001
From: Jude Melton-Houghton <jwmhjwmh@gmail.com>
Date: Thu, 7 Apr 2022 10:54:17 -0400
Subject: Compile Lua as C++ (#11683)

Co-authored-by: sfan5 <sfan5@live.de>
---
 lib/lua/src/CMakeLists.txt | 18 ++++--------------
 lib/lua/src/luaconf.h      | 14 +++++++++++---
 2 files changed, 15 insertions(+), 17 deletions(-)

(limited to 'lib/lua/src')

diff --git a/lib/lua/src/CMakeLists.txt b/lib/lua/src/CMakeLists.txt
index 8f6cc1213..2ca4f4168 100644
--- a/lib/lua/src/CMakeLists.txt
+++ b/lib/lua/src/CMakeLists.txt
@@ -31,24 +31,14 @@ set(LUA_CORE_SRC
 	lvm.c
 	lzio.c
 )
-set(LUA_LIB_HEADERS
-	lua.h
-	lualib.h
-	lauxlib.h
-	luaconf.h
-)
-
-include_directories(${CMAKE_CURRENT_SOURCE_DIR}
-		${CMAKE_CURRENT_BINARY_DIR})
 
-# Lua library.
+# Lua library
 add_library(lua STATIC ${LUA_CORE_SRC})
 target_link_libraries(lua ${LIBS})
-set(LUA_STATIC_LIB lua)
-set(LUA_LIBS lua)
-
-set_target_properties(${LUA_LIBS} PROPERTIES
+set_target_properties(lua PROPERTIES
 	VERSION ${LUA_VERSION}
 	CLEAN_DIRECT_OUTPUT 1
 )
 
+# Compile code as C++
+set_source_files_properties(${LUA_CORE_SRC} PROPERTIES LANGUAGE CXX)
diff --git a/lib/lua/src/luaconf.h b/lib/lua/src/luaconf.h
index e2cb26163..1521f0cbc 100644
--- a/lib/lua/src/luaconf.h
+++ b/lib/lua/src/luaconf.h
@@ -143,6 +143,14 @@
 #define LUA_INTEGER	ptrdiff_t
 
 
+/* MINETEST-SPECIFIC CHANGE: make sure API functions conform to the C ABI. */
+#if defined(__cplusplus)
+#define LUAI_API_EXTERN extern "C"
+#else
+#define LUAI_API_EXTERN extern
+#endif
+
+
 /*
 @@ LUA_API is a mark for all core API functions.
 @@ LUALIB_API is a mark for all standard library functions.
@@ -154,14 +162,14 @@
 #if defined(LUA_BUILD_AS_DLL)
 
 #if defined(LUA_CORE) || defined(LUA_LIB)
-#define LUA_API __declspec(dllexport)
+#define LUA_API LUAI_API_EXTERN __declspec(dllexport)
 #else
-#define LUA_API __declspec(dllimport)
+#define LUA_API LUAI_API_EXTERN __declspec(dllimport)
 #endif
 
 #else
 
-#define LUA_API		extern
+#define LUA_API		LUAI_API_EXTERN
 
 #endif
 
-- 
cgit v1.2.3