lua part 1

This commit is contained in:
luis
2026-03-18 01:13:14 -03:00
parent aa968ba82e
commit 6d6aa1a723
40 changed files with 650 additions and 6 deletions
+4
View File
@@ -52,3 +52,7 @@ if(BUILD_TESTING)
GIT_SHALLOW 1)
FetchContent_MakeAvailable(Catch2)
endif()
if (ELUNA)
add_subdirectory(lualib)
endif()
+20
View File
@@ -0,0 +1,20 @@
set(LUA_VERSION "lua52" CACHE STRING "Lua version to use")
set_property(CACHE LUA_VERSION PROPERTY STRINGS luajit lua51 lua52 lua53 lua54)
MESSAGE(STATUS "Lua version: ${LUA_VERSION}")
if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0")
cmake_policy(SET CMP0135 NEW)
endif()
option(LUA_STATIC "link lua statically" OFF)
if (LUA_STATIC)
MESSAGE(STATUS "Lua linking: static")
else()
MESSAGE(STATUS "Lua linking: dynamic")
endif()
if (LUA_VERSION MATCHES "luajit")
add_subdirectory(luajit)
else()
add_subdirectory(lua)
endif()
+67
View File
@@ -0,0 +1,67 @@
# BSD-3-Clause
# Copyright (c) 2022, Rochet2 <[email protected]>
# All rights reserved.
project (lua C)
include(FetchContent)
FetchContent_Declare(
lua52
URL https://www.lua.org/ftp/lua-5.2.4.tar.gz
URL_HASH SHA256=b9e2e4aad6789b3b63a056d442f7b39f0ecfca3ae0f1fc0ae4e9614401b69f4b
)
FetchContent_MakeAvailable(lua52)
set(LUA_SOURCE_FOLDER "${lua52_SOURCE_DIR}/src")
file(GLOB LOCAL_SOURCES_H "${LUA_SOURCE_FOLDER}/*.h")
file(GLOB LOCAL_SOURCES_C "${LUA_SOURCE_FOLDER}/*.c")
list(REMOVE_ITEM LOCAL_SOURCES_C "${LUA_SOURCE_FOLDER}/lua.c")
list(REMOVE_ITEM LOCAL_SOURCES_C "${LUA_SOURCE_FOLDER}/luac.c")
if (LUA_STATIC)
add_library(lualib STATIC ${LOCAL_SOURCES_H} ${LOCAL_SOURCES_C})
set_property(TARGET lualib PROPERTY POSITION_INDEPENDENT_CODE ON)
else()
add_library(lualib SHARED ${LOCAL_SOURCES_H} ${LOCAL_SOURCES_C})
set_property(TARGET lualib PROPERTY POSITION_INDEPENDENT_CODE ON)
endif()
add_library(lualib_static STATIC ${LOCAL_SOURCES_H} ${LOCAL_SOURCES_C})
set_target_properties(lualib PROPERTIES LINKER_LANGUAGE C)
set_target_properties(lualib_static PROPERTIES LINKER_LANGUAGE C)
target_include_directories(lualib PUBLIC "${LUA_SOURCE_FOLDER}" "${CMAKE_CURRENT_SOURCE_DIR}")
target_include_directories(lualib_static PUBLIC "${LUA_SOURCE_FOLDER}" "${CMAKE_CURRENT_SOURCE_DIR}")
if (WIN32)
set_target_properties(lualib PROPERTIES OUTPUT_NAME lua52)
install(TARGETS lualib DESTINATION "${CMAKE_INSTALL_PREFIX}")
if (NOT LUA_STATIC)
install(FILES $<TARGET_PDB_FILE:lualib> DESTINATION "${CMAKE_INSTALL_PREFIX}" OPTIONAL)
endif()
else()
set_target_properties(lualib PROPERTIES OUTPUT_NAME lua52)
install(TARGETS lualib DESTINATION "${CMAKE_INSTALL_PREFIX}/lib")
install(TARGETS lualib_static DESTINATION "${CMAKE_INSTALL_PREFIX}/lib")
endif()
if (WIN32)
target_compile_definitions(lualib PRIVATE _CRT_SECURE_NO_WARNINGS)
target_compile_definitions(lualib_static PRIVATE _CRT_SECURE_NO_WARNINGS)
if (NOT LUA_STATIC)
target_compile_definitions(lualib PRIVATE LUA_BUILD_AS_DLL)
endif()
elseif (APPLE)
target_compile_definitions(lualib PUBLIC LUA_USE_MACOSX)
target_compile_definitions(lualib_static PUBLIC LUA_USE_MACOSX)
target_compile_options(lualib PRIVATE -Wno-deprecated-declarations -Wno-empty-body)
target_compile_options(lualib_static PRIVATE -Wno-deprecated-declarations -Wno-empty-body)
target_link_libraries(lualib readline)
target_link_libraries(lualib_static readline)
elseif (UNIX)
target_compile_definitions(lualib PUBLIC LUA_USE_LINUX)
target_link_libraries(lualib ${CMAKE_DL_LIBS} m readline)
target_compile_definitions(lualib_static PUBLIC LUA_USE_LINUX)
target_link_libraries(lualib_static ${CMAKE_DL_LIBS} m readline)
set_target_properties(lualib PROPERTIES OUTPUT_NAME lua52)
set_target_properties(lualib_static PROPERTIES OUTPUT_NAME lua52)
endif()
+10
View File
@@ -0,0 +1,10 @@
#ifndef LUA_HPP
#define LUA_HPP
extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
#endif
+2
View File
@@ -0,0 +1,2 @@
# Placeholder for luajit - using lua52 instead
message(STATUS "Using lua52 instead of luajit")