diff --git a/CMakeLists.txt b/CMakeLists.txt index 1455822be..a392b65c1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,6 +10,8 @@ project(OpenTomb) list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) option(FORCE_SYSTEM_FREETYPE "Use system-provided FreeType instead of internal library." OFF) +option(FORCE_SYSTEM_LUA "Use system-provided LUA 5.3+ instead of internal library." OFF) +option(FORCE_SYSTEM_BULLET "Use system-provided BULLET instead of internal library." OFF) # Detect system FreeType @@ -27,12 +29,55 @@ endif () if (OPENTOMB_INTERNAL_FREETYPE) add_subdirectory(extern/freetype2) - set(FREETYPE_INCLUDE_DIRS "") + set(FREETYPE_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/extern/freetype2") set(FREETYPE_LIBRARIES freetype2) endif () -add_subdirectory(extern/bullet) -add_subdirectory(extern/lua) +# Detect system LUA + +if (FORCE_SYSTEM_LUA) + find_package(lua QUIET) + if (NOT LUA_FOUND) + message(WARNING "LUA not found. Enabling internal LUA support.") + set(OPENTOMB_INTERNAL_LUA ON) + else () + # Set minimal version + set (LUA_MIN_VERSION 5.3) + if (LUA_VERSION_STRING VERSION_EQUAL LUA_MIN_VERSION OR LUA_VERSION_STRING VERSION_GREATER LUA_MIN_VERSION) + set(OPENTOMB_INTERNAL_LUA OFF) + else () + message(WARNING "Incorrect LUA version found. Enabling internal LUA support.") + endif () + endif () +else () + set(OPENTOMB_INTERNAL_LUA ON) +endif () + +if (OPENTOMB_INTERNAL_LUA) + add_subdirectory(extern/lua) + set(LUA_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/extern/lua") + set(LUA_LIBRARIES lua5.3) +endif () + +# Detect system BULLET + +if (FORCE_SYSTEM_BULLET) + find_package(bullet QUIET) + if (NOT BULLET_FOUND) + message(WARNING "BULLET not found. Enabling internal BULLET support.") + set(OPENTOMB_INTERNAL_BULLET ON) + else() + set(OPENTOMB_INTERNAL_BULLET OFF) + endif () +else () + set(OPENTOMB_INTERNAL_BULLET ON) +endif () + +if (OPENTOMB_INTERNAL_BULLET) + add_subdirectory(extern/bullet) + set(BULLET_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/extern/bullet") + set(BULLET_LIBRARIES bullet) +endif () set(OPENTOMB_SRCS src/core/avl.c @@ -248,6 +293,8 @@ set_target_properties(${PROJECT_NAME} PROPERTIES C_STANDARD 99 CXX_STANDARD 11) target_include_directories( ${PROJECT_NAME} PRIVATE ${FREETYPE_INCLUDE_DIRS} + ${LUA_INCLUDE_DIR} + ${BULLET_INCLUDE_DIRS} ${PNG_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIRS} ${SDL2_INCLUDE_DIR} @@ -257,9 +304,9 @@ target_include_directories( target_link_libraries( ${PROJECT_NAME} - bullet ${FREETYPE_LIBRARIES} - lua5.3 + ${LUA_LIBRARIES} + ${BULLET_LIBRARIES} ${PNG_LIBRARIES} ${OPENAL_LIBRARY} ${SDL2_LIBRARY} diff --git a/src/controls.cpp b/src/controls.cpp index b29173332..818359506 100644 --- a/src/controls.cpp +++ b/src/controls.cpp @@ -6,12 +6,7 @@ #include #include -extern "C" { -#include -#include -#include -} - +#include "core/lua.h" #include "core/system.h" #include "core/console.h" #include "core/vmath.h" diff --git a/src/core/console.c b/src/core/console.c index 1ccbee063..e1cdbb972 100644 --- a/src/core/console.c +++ b/src/core/console.c @@ -1,14 +1,13 @@ #include #include +#include + #include #include #include -#include -#include -#include -#include +#include "../core/lua.h" #include "utf8_32.h" #include "gl_font.h" diff --git a/src/core/lua.h b/src/core/lua.h new file mode 100755 index 000000000..c40cfee05 --- /dev/null +++ b/src/core/lua.h @@ -0,0 +1,16 @@ +#ifndef __OT_CORE_LUA_H +#define __OT_CORE_LUA_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "lua.h" +#include "lualib.h" +#include "lauxlib.h" + +#ifdef __cplusplus +} +#endif + +#endif /* __OT_CORE_LUA_H */ diff --git a/src/core/system.c b/src/core/system.c index 450b9b40b..11d7c6889 100644 --- a/src/core/system.c +++ b/src/core/system.c @@ -12,9 +12,7 @@ #include #include -#include -#include -#include +#include "../core/lua.h" #include "system.h" #include "utf8_32.h" diff --git a/src/engine.cpp b/src/engine.cpp index 2fa8b1b79..c9d53d805 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -8,12 +8,8 @@ #include #include -extern "C" { -#include -#include -#include -} +#include "core/lua.h" #include "core/system.h" #include "core/gl_util.h" #include "core/gl_font.h" diff --git a/src/entity.cpp b/src/entity.cpp index 8a25aa8e4..9ef903aa5 100644 --- a/src/entity.cpp +++ b/src/entity.cpp @@ -1,12 +1,7 @@ #include #include -extern "C" { -#include -#include -#include -} - +#include "core/lua.h" #include "core/console.h" #include "core/vmath.h" #include "core/obb.h" diff --git a/src/game.cpp b/src/game.cpp index 908623b2f..3921a35b4 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -2,12 +2,7 @@ #include #include -extern "C" { -#include -#include -#include -} - +#include "core/lua.h" #include "core/system.h" #include "core/console.h" #include "core/vmath.h" diff --git a/src/gameflow.cpp b/src/gameflow.cpp index 1ddfe293a..47c517579 100644 --- a/src/gameflow.cpp +++ b/src/gameflow.cpp @@ -1,9 +1,4 @@ -extern "C" { -#include -#include -#include -} - +#include "core/lua.h" #include "core/gl_text.h" #include "core/console.h" #include "script/script.h" diff --git a/src/physics/hair.cpp b/src/physics/hair.cpp index e6878ed30..74d6f77dd 100644 --- a/src/physics/hair.cpp +++ b/src/physics/hair.cpp @@ -1,11 +1,7 @@ #include -extern "C" { -#include -#include -#include -} +#include "../core/lua.h" #include "hair.h" struct hair_setup_s *Hair_GetSetup(struct lua_State *lua, int stack_pos) diff --git a/src/physics/ragdoll.cpp b/src/physics/ragdoll.cpp index 7a8fc9bad..b76a21024 100644 --- a/src/physics/ragdoll.cpp +++ b/src/physics/ragdoll.cpp @@ -1,12 +1,8 @@ #include #include -extern "C" { -#include -#include -#include -} +#include "../core/lua.h" #include "../core/vmath.h" #include "ragdoll.h" #include "../mesh.h" diff --git a/src/resource.cpp b/src/resource.cpp index 6b4f8cf60..2674a0ad3 100644 --- a/src/resource.cpp +++ b/src/resource.cpp @@ -6,12 +6,7 @@ #include #include -extern "C" { -#include -#include -#include -} - +#include "core/lua.h" #include "core/system.h" #include "core/vmath.h" #include "core/gl_util.h" diff --git a/src/script/script.cpp b/src/script/script.cpp index 22a5083f1..ffab4a8cc 100644 --- a/src/script/script.cpp +++ b/src/script/script.cpp @@ -3,11 +3,7 @@ #include #include -extern "C" { -#include -#include -#include -} +#include "../core/lua.h" #include "script.h" #include "../core/system.h" diff --git a/src/script/script_audio.cpp b/src/script/script_audio.cpp index 41c7881ef..e6d50c845 100644 --- a/src/script/script_audio.cpp +++ b/src/script/script_audio.cpp @@ -3,11 +3,7 @@ #include #include -extern "C" { -#include -#include -#include -} +#include "../core/lua.h" #include "script.h" diff --git a/src/script/script_character.cpp b/src/script/script_character.cpp index 2a604758c..230832545 100644 --- a/src/script/script_character.cpp +++ b/src/script/script_character.cpp @@ -3,11 +3,7 @@ #include #include -extern "C" { -#include -#include -#include -} +#include "../core/lua.h" #include "script.h" diff --git a/src/script/script_entity.cpp b/src/script/script_entity.cpp index 193ea763e..caae08b07 100644 --- a/src/script/script_entity.cpp +++ b/src/script/script_entity.cpp @@ -3,11 +3,7 @@ #include #include -extern "C" { -#include -#include -#include -} +#include "../core/lua.h" #include "script.h" diff --git a/src/script/script_skeletal_model.cpp b/src/script/script_skeletal_model.cpp index 2928fd5ee..8a8aea436 100644 --- a/src/script/script_skeletal_model.cpp +++ b/src/script/script_skeletal_model.cpp @@ -3,11 +3,7 @@ #include #include -extern "C" { -#include -#include -#include -} +#include "../core/lua.h" #include "script.h" diff --git a/src/script/script_world.cpp b/src/script/script_world.cpp index b3edd4b4a..6f3cec84d 100644 --- a/src/script/script_world.cpp +++ b/src/script/script_world.cpp @@ -3,11 +3,7 @@ #include #include -extern "C" { -#include -#include -#include -} +#include "../core/lua.h" #include "script.h" diff --git a/src/trigger.cpp b/src/trigger.cpp index 336850ed0..e5e486878 100644 --- a/src/trigger.cpp +++ b/src/trigger.cpp @@ -4,12 +4,7 @@ #include #include -extern "C" { -#include -#include -#include -} - +#include "core/lua.h" #include "core/system.h" #include "core/console.h" #include "core/vmath.h" diff --git a/src/world.cpp b/src/world.cpp index 076523f93..419d8e896 100644 --- a/src/world.cpp +++ b/src/world.cpp @@ -4,12 +4,7 @@ #include #include -extern "C" { -#include -#include -#include -} - +#include "core/lua.h" #include "core/avl.h" #include "core/gl_util.h" #include "core/console.h"