mirror of
https://github.com/OpenMW/openmw.git
synced 2025-04-01 08:36:40 +00:00
Add Lua/LuaJit and sol3 to openmw
This commit is contained in:
parent
c94339f248
commit
9e168fd9cc
7 changed files with 84 additions and 8 deletions
|
@ -1,4 +1,4 @@
|
||||||
#!/bin/sh -ex
|
#!/bin/sh -ex
|
||||||
|
|
||||||
curl -fSL -R -J https://gitlab.com/OpenMW/openmw-deps/-/raw/main/android/openmw-android-deps-20201129.zip -o ~/openmw-android-deps.zip
|
curl -fSL -R -J https://gitlab.com/OpenMW/openmw-deps/-/raw/main/android/openmw-android-deps-20201230.zip -o ~/openmw-android-deps.zip
|
||||||
unzip -o ~/openmw-android-deps -d /usr/lib/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr > /dev/null
|
unzip -o ~/openmw-android-deps -d /usr/lib/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr > /dev/null
|
||||||
|
|
|
@ -575,6 +575,11 @@ if [ -z $SKIP_DOWNLOAD ]; then
|
||||||
"https://gitlab.com/OpenMW/openmw-deps/-/raw/main/windows/lz4_win${BITS}_v1_9_2.7z" \
|
"https://gitlab.com/OpenMW/openmw-deps/-/raw/main/windows/lz4_win${BITS}_v1_9_2.7z" \
|
||||||
"lz4_win${BITS}_v1_9_2.7z"
|
"lz4_win${BITS}_v1_9_2.7z"
|
||||||
|
|
||||||
|
# LuaJIT
|
||||||
|
download "LuaJIT 2.1.0-beta3" \
|
||||||
|
"https://gitlab.com/OpenMW/openmw-deps/-/raw/main/windows/LuaJIT-2.1.0-beta3-msvc${MSVC_REAL_YEAR}-win${BITS}.7z" \
|
||||||
|
"LuaJIT-2.1.0-beta3-msvc${MSVC_REAL_YEAR}-win${BITS}.7z"
|
||||||
|
|
||||||
# Google test and mock
|
# Google test and mock
|
||||||
if [ ! -z $TEST_FRAMEWORK ]; then
|
if [ ! -z $TEST_FRAMEWORK ]; then
|
||||||
echo "Google test 1.10.0..."
|
echo "Google test 1.10.0..."
|
||||||
|
@ -934,6 +939,25 @@ printf "LZ4 1.9.2... "
|
||||||
}
|
}
|
||||||
cd $DEPS
|
cd $DEPS
|
||||||
echo
|
echo
|
||||||
|
# LuaJIT 2.1.0-beta3
|
||||||
|
printf "LuaJIT 2.1.0-beta3... "
|
||||||
|
{
|
||||||
|
if [ -d LuaJIT ]; then
|
||||||
|
printf "Exists. "
|
||||||
|
elif [ -z $SKIP_EXTRACT ]; then
|
||||||
|
rm -rf LuaJIT
|
||||||
|
eval 7z x -y LuaJIT-2.1.0-beta3-msvc${MSVC_REAL_YEAR}-win${BITS}.7z -o$(real_pwd)/LuaJIT $STRIP
|
||||||
|
fi
|
||||||
|
export LUAJIT_DIR="$(real_pwd)/LuaJIT"
|
||||||
|
add_cmake_opts -DLuaJit_INCLUDE_DIR="${LUAJIT_DIR}/include" \
|
||||||
|
-DLuaJit_LIBRARY="${LUAJIT_DIR}/lib/lua51.lib"
|
||||||
|
for CONFIGURATION in ${CONFIGURATIONS[@]}; do
|
||||||
|
add_runtime_dlls $CONFIGURATION "$(pwd)/LuaJIT/bin/lua51.dll"
|
||||||
|
done
|
||||||
|
echo Done.
|
||||||
|
}
|
||||||
|
cd $DEPS
|
||||||
|
echo
|
||||||
# Google Test and Google Mock
|
# Google Test and Google Mock
|
||||||
if [ ! -z $TEST_FRAMEWORK ]; then
|
if [ ! -z $TEST_FRAMEWORK ]; then
|
||||||
printf "Google test 1.10.0 ..."
|
printf "Google test 1.10.0 ..."
|
||||||
|
|
|
@ -18,10 +18,10 @@ declare -rA GROUPED_DEPS=(
|
||||||
|
|
||||||
libboost-filesystem-dev libboost-program-options-dev
|
libboost-filesystem-dev libboost-program-options-dev
|
||||||
libboost-system-dev libboost-iostreams-dev
|
libboost-system-dev libboost-iostreams-dev
|
||||||
|
|
||||||
libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libswresample-dev
|
libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libswresample-dev
|
||||||
libsdl2-dev libqt5opengl5-dev libopenal-dev libunshield-dev libtinyxml-dev
|
libsdl2-dev libqt5opengl5-dev libopenal-dev libunshield-dev libtinyxml-dev
|
||||||
libbullet-dev liblz4-dev libpng-dev libjpeg-dev
|
libbullet-dev liblz4-dev libpng-dev libjpeg-dev libluajit-5.1-dev
|
||||||
ca-certificates
|
ca-certificates
|
||||||
"
|
"
|
||||||
# TODO: add librecastnavigation-dev when debian is ready
|
# TODO: add librecastnavigation-dev when debian is ready
|
||||||
|
|
|
@ -394,6 +394,22 @@ endif()
|
||||||
find_package(SDL2 2.0.9 REQUIRED)
|
find_package(SDL2 2.0.9 REQUIRED)
|
||||||
find_package(OpenAL REQUIRED)
|
find_package(OpenAL REQUIRED)
|
||||||
|
|
||||||
|
option(USE_LUAJIT "Switch Lua/LuaJit (TRUE is highly recommended)" TRUE)
|
||||||
|
if(USE_LUAJIT)
|
||||||
|
find_package(LuaJit REQUIRED)
|
||||||
|
set(LUA_INCLUDE_DIR ${LuaJit_INCLUDE_DIR})
|
||||||
|
set(LUA_LIBRARIES ${LuaJit_LIBRARIES})
|
||||||
|
else(USE_LUAJIT)
|
||||||
|
find_package(Lua REQUIRED)
|
||||||
|
add_compile_definitions(NO_LUAJIT)
|
||||||
|
endif(USE_LUAJIT)
|
||||||
|
|
||||||
|
# Download sol - C++ library binding to Lua
|
||||||
|
file(DOWNLOAD
|
||||||
|
"https://github.com/ThePhD/sol2/releases/download/v3.2.2/sol.hpp" "${OpenMW_BINARY_DIR}/extern/sol3.2.2/sol/sol.hpp"
|
||||||
|
EXPECTED_MD5 ba113cf458f60672917108e69bb4d958)
|
||||||
|
set(SOL_INCLUDE_DIRS ${OpenMW_BINARY_DIR}/extern/sol3.2.2 ${OpenMW_SOURCE_DIR}/extern/sol_config)
|
||||||
|
|
||||||
include_directories(
|
include_directories(
|
||||||
BEFORE SYSTEM
|
BEFORE SYSTEM
|
||||||
"."
|
"."
|
||||||
|
@ -403,6 +419,8 @@ include_directories(
|
||||||
${OPENAL_INCLUDE_DIR}
|
${OPENAL_INCLUDE_DIR}
|
||||||
${OPENGL_INCLUDE_DIR}
|
${OPENGL_INCLUDE_DIR}
|
||||||
${BULLET_INCLUDE_DIRS}
|
${BULLET_INCLUDE_DIRS}
|
||||||
|
${LUA_INCLUDE_DIR}
|
||||||
|
${SOL_INCLUDE_DIRS}
|
||||||
)
|
)
|
||||||
|
|
||||||
link_directories(${SDL2_LIBRARY_DIRS} ${Boost_LIBRARY_DIRS})
|
link_directories(${SDL2_LIBRARY_DIRS} ${Boost_LIBRARY_DIRS})
|
||||||
|
@ -661,11 +679,10 @@ if (WIN32)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (BUILD_OPENMW)
|
if (BUILD_OPENMW)
|
||||||
if (OPENMW_UNITY_BUILD)
|
# \bigobj is required:
|
||||||
set_target_properties(openmw PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD} /bigobj")
|
# 1) for OPENMW_UNITY_BUILD;
|
||||||
else()
|
# 2) to compile lua binginds, because sol3 is heavily templated.
|
||||||
set_target_properties(openmw PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD}")
|
set_target_properties(openmw PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD} /bigobj")
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (BUILD_WIZARD)
|
if (BUILD_WIZARD)
|
||||||
|
@ -682,6 +699,11 @@ if (WIN32)
|
||||||
#set_target_properties(openmw PROPERTIES LINK_FLAGS_MINSIZEREL "/SUBSYSTEM:WINDOWS")
|
#set_target_properties(openmw PROPERTIES LINK_FLAGS_MINSIZEREL "/SUBSYSTEM:WINDOWS")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (BUILD_OPENMW AND APPLE)
|
||||||
|
# Without these flags LuaJit crashes on startup on OSX
|
||||||
|
set_target_properties(openmw PROPERTIES LINK_FLAGS "-pagezero_size 10000 -image_base 100000000")
|
||||||
|
endif()
|
||||||
|
|
||||||
# Apple bundling
|
# Apple bundling
|
||||||
if (OPENMW_OSX_DEPLOYMENT AND APPLE)
|
if (OPENMW_OSX_DEPLOYMENT AND APPLE)
|
||||||
if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.13 AND CMAKE_VERSION VERSION_LESS 3.13.4)
|
if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.13 AND CMAKE_VERSION VERSION_LESS 3.13.4)
|
||||||
|
|
|
@ -146,6 +146,7 @@ target_link_libraries(openmw
|
||||||
"osg-ffmpeg-videoplayer"
|
"osg-ffmpeg-videoplayer"
|
||||||
"oics"
|
"oics"
|
||||||
components
|
components
|
||||||
|
${LUA_LIBRARIES}
|
||||||
)
|
)
|
||||||
|
|
||||||
if(OSG_STATIC)
|
if(OSG_STATIC)
|
||||||
|
|
14
cmake/FindLuaJit.cmake
Normal file
14
cmake/FindLuaJit.cmake
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
# Once found, defines:
|
||||||
|
# LuaJit_FOUND
|
||||||
|
# LuaJit_INCLUDE_DIR
|
||||||
|
# LuaJit_LIBRARIES
|
||||||
|
|
||||||
|
include(LibFindMacros)
|
||||||
|
|
||||||
|
libfind_pkg_detect(LuaJit luajit
|
||||||
|
FIND_PATH luajit.h PATH_SUFFIXES luajit luajit-2.1
|
||||||
|
FIND_LIBRARY luajit-5.1 luajit
|
||||||
|
)
|
||||||
|
|
||||||
|
libfind_process(LuaJit)
|
||||||
|
|
15
extern/sol_config/sol/config.hpp
vendored
Normal file
15
extern/sol_config/sol/config.hpp
vendored
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
#ifndef SOL_SINGLE_CONFIG_HPP
|
||||||
|
#define SOL_SINGLE_CONFIG_HPP
|
||||||
|
|
||||||
|
#define SOL_SAFE_USERTYPE 1
|
||||||
|
#define SOL_SAFE_REFERENCES 1
|
||||||
|
#define SOL_SAFE_FUNCTION_CALLS 1
|
||||||
|
#define SOL_SAFE_FUNCTION 1
|
||||||
|
#define SOL_NO_NIL 0
|
||||||
|
|
||||||
|
#ifndef NO_LUAJIT
|
||||||
|
#define SOL_LUAJIT 1
|
||||||
|
#define SOL_EXCEPTIONS_SAFE_PROPAGATION 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // SOL_SINGLE_CONFIG_HPP
|
Loading…
Reference in a new issue