Skip to content

Commit

Permalink
[ADD] Add lua package finding in CMakeLists.txt. Default to BUILTIN v…
Browse files Browse the repository at this point in the history
…ersion.
  • Loading branch information
paintdream committed May 27, 2023
1 parent c88d6e9 commit 006c657
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 9 deletions.
53 changes: 44 additions & 9 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ ENABLE_TESTING()
OPTION (ENABLE_COROUTINE "Enable Iris Coroutine support" ON)
OPTION (ENABLE_LUA "Enable Lua Binding support" ON)

SET (FIND_LUA_VERSION "BUILTIN" CACHE STRING "Lua version")
SET_PROPERTY (CACHE FIND_LUA_VERSION PROPERTY STRINGS "BUILTIN" "5.1" "5.2" "5.3" "5.4")

IF (ENABLE_COROUTINE)
SET (CMAKE_CXX_STANDARD 20)
ELSE (ENABLE_COROUTINE)
Expand All @@ -21,7 +24,7 @@ ELSE (ENABLE_COROUTINE)
ENDIF (ENABLE_COROUTINE)

INCLUDE_DIRECTORIES ("${PROJECT_BINARY_DIR}")
STRING (REPLACE "/" "\\" LOCAL_SOURCE_DIR "${PROJECT_SOURCE_DIR}")
STRING (REPLACE "/" "\\" BUILTIN_SOURCE_DIR "${PROJECT_SOURCE_DIR}")

FILE (GLOB_RECURSE IRIS_DISPATCHER_DEMO_SRC
"${PROJECT_SOURCE_DIR}/src/iris_common.h"
Expand Down Expand Up @@ -114,24 +117,56 @@ ENDIF (ENABLE_COROUTINE)
IF (ENABLE_LUA)
FILE (GLOB_RECURSE IRIS_LUA_DEMO_SRC
"${PROJECT_SOURCE_DIR}/src/optional/iris_lua.h"
"${PROJECT_SOURCE_DIR}/src/optional/lua/src/*.h"
"${PROJECT_SOURCE_DIR}/src/optional/lua/src/*.hpp"
"${PROJECT_SOURCE_DIR}/src/optional/lua/src/*.c"
"${PROJECT_SOURCE_DIR}/test/iris_lua_demo.cpp"
)

LIST (REMOVE_ITEM IRIS_LUA_DEMO_SRC "${PROJECT_SOURCE_DIR}/src/optional/lua/src/lua.c")
LIST (REMOVE_ITEM IRIS_LUA_DEMO_SRC "${PROJECT_SOURCE_DIR}/src/optional/lua/src/luac.c")
IF (${FIND_LUA_VERSION} STREQUAL "BUILTIN")
SET (ENABLE_LUA_BUILTIN ON)
ELSE (${FIND_LUA_VERSION} STREQUAL "BUILTIN")
SET (ENABLE_LUA_BUILTIN OFF)
ENDIF (${FIND_LUA_VERSION} STREQUAL "BUILTIN")

IF (ENABLE_LUA_BUILTIN)
MESSAGE (STATUS "Use built-in lua version.")
# default to lua 5.4
FILE (GLOB_RECURSE IRIS_LUA_CORE_SRC
"${PROJECT_SOURCE_DIR}/src/optional/lua/src/*.h"
"${PROJECT_SOURCE_DIR}/src/optional/lua/src/*.hpp"
"${PROJECT_SOURCE_DIR}/src/optional/lua/src/*.c"
)

LIST (REMOVE_ITEM IRIS_LUA_CORE_SRC "${PROJECT_SOURCE_DIR}/src/optional/lua/src/lua.c")
LIST (REMOVE_ITEM IRIS_LUA_CORE_SRC "${PROJECT_SOURCE_DIR}/src/optional/lua/src/luac.c")
SET (LUALIB)
ELSE (ENABLE_LUA_BUILTIN)
FIND_PACKAGE (Lua ${FIND_LUA_VERSION} REQUIRED)
IF (LUA_FOUND)
MESSAGE (STATUS "Find lua version " ${FIND_LUA_VERSION})
FILE (GLOB_RECURSE IRIS_LUA_CORE_SRC
"${LUA_INCLUDE_DIR}/*.h"
"${LUA_INCLUDE_DIR}/*.hpp"
)

SET (LUALIB ${LUA_LIBRARIES})
ELSE (LUA_FOUND)
MESSAGE (FATAL_ERROR "Enable to find lua with version " ${FIND_LUA_VERSION})
ENDIF (LUA_FOUND)
ENDIF (ENABLE_LUA_BUILTIN)

ADD_EXECUTABLE (iris_lua_demo ${IRIS_LUA_DEMO_SRC})
ADD_EXECUTABLE (iris_lua_demo ${IRIS_LUA_DEMO_SRC} ${IRIS_LUA_CORE_SRC})

IF (ENABLE_COROUTINE)
TARGET_COMPILE_DEFINITIONS(iris_lua_demo PRIVATE USE_LUA_COROUTINE)
TARGET_COMPILE_DEFINITIONS (iris_lua_demo PRIVATE USE_LUA_COROUTINE)
ENDIF (ENABLE_COROUTINE)

IF (NOT ENABLE_LUA_BUILTIN)
TARGET_INCLUDE_DIRECTORIES (iris_lua_demo PUBLIC ${LUA_INCLUDE_DIR})
TARGET_COMPILE_DEFINITIONS (iris_lua_demo PUBLIC USE_LUA_LIBRARY)
ENDIF (NOT ENABLE_LUA_BUILTIN)

ADD_TEST (test_lua iris_lua_demo)

IF (NOT MSVC)
TARGET_LINK_LIBRARIES(iris_lua_demo m ${STDLIB})
TARGET_LINK_LIBRARIES(iris_lua_demo m ${STDLIB} ${LUALIB})
ENDIF (NOT MSVC)
ENDIF (ENABLE_LUA)
6 changes: 6 additions & 0 deletions src/optional/iris_lua.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,15 @@ SOFTWARE.
#include <array>

extern "C" {
#if !USE_LUA_LIBRARY
#include "lua/src/lua.h"
#include "lua/src/lualib.h"
#include "lua/src/lauxlib.h"
#else
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
#endif
}

// compatible with old lua versions
Expand Down
1 change: 1 addition & 0 deletions test/iris_lua_demo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,7 @@ int main(void) {
#endif

bool ret = lua.run<bool>("\
print(_VERSION)\n\
local a = example_t.create()\n\
local b = example_t.create()\n\
b:join_value_required(a)\n\
Expand Down

0 comments on commit 006c657

Please sign in to comment.