Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 39 additions & 28 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,52 +1,61 @@
# What is this E1126 warning about?
# cmake-lint: disable=E1126
cmake_minimum_required(VERSION 3.26)
set(LUA_VERSION 5.4.6)
set(LUA_VERSION 5.4.8)
project(Lua
VERSION ${LUA_VERSION}
DESCRIPTION "Lua and LuaRocks packaged by DEVCOM"
HOMEPAGE_URL https://github.com/DevelopersCommunity/cmake-lua
LANGUAGES C
)
)

# https://www.lua.org/ftp/
set(LUA_TARBALL lua-${CMAKE_PROJECT_VERSION}.tar.gz)
set(LUA_TARBALL_SHA256 7d5ea1b9cb6aa0b59ca3dde1c6adcb57ef83a1ba8e5432c0ecd06bf439b3ad88)
set(LUA_TARBALL_SHA256
4f18ddae154e793e46eeab727c59ef1c0c0c2b744e7b94219710d76f530629ae)

if(NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/${LUA_TARBALL})
file(DOWNLOAD https://www.lua.org/ftp/${LUA_TARBALL}
${CMAKE_CURRENT_LIST_DIR}/${LUA_TARBALL}
EXPECTED_HASH SHA256=${LUA_TARBALL_SHA256}
)
)

file(ARCHIVE_EXTRACT INPUT ${CMAKE_CURRENT_LIST_DIR}/${LUA_TARBALL}
DESTINATION ${CMAKE_CURRENT_LIST_DIR}
)
)
endif()

if(WIN32)
set(LUAROCKS_VERSION 3.9.2)
set(LUAROCKS_TARBALL luarocks-${LUAROCKS_VERSION}-windows-64.zip)

if(NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/${LUAROCKS_TARBALL})
file(DOWNLOAD http://luarocks.github.io/luarocks/releases/${LUAROCKS_TARBALL}
${CMAKE_CURRENT_LIST_DIR}/${LUAROCKS_TARBALL}
)
file(ARCHIVE_EXTRACT INPUT ${CMAKE_CURRENT_LIST_DIR}/${LUAROCKS_TARBALL}
set(LUAROCKS_VERSION 3.12.2)
set(LUAROCKS_ZIPFILE luarocks-${LUAROCKS_VERSION}-windows-64.zip)
set(LUAROCKS_ZIPFILE_SHA256
d3f4ddda6926618cadf560170a7c18a5ceead5997ba10832cd0e3b624c7de886)

if(NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/${LUAROCKS_ZIPFILE})
file(DOWNLOAD
http://luarocks.github.io/luarocks/releases/${LUAROCKS_ZIPFILE}
${CMAKE_CURRENT_LIST_DIR}/${LUAROCKS_ZIPFILE}
EXPECTED_HASH SHA256=${LUAROCKS_ZIPFILE_SHA256}
)
file(ARCHIVE_EXTRACT INPUT ${CMAKE_CURRENT_LIST_DIR}/${LUAROCKS_ZIPFILE}
DESTINATION ${CMAKE_CURRENT_LIST_DIR}
)
OUTPUT ${CMAKE_CURRENT_LIST_DIR}/luarocks-${LUAROCKS_VERSION}-windows-64
)
endif()

set(LUA_LOGO lua-logo-nolabel.ps)
if(NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/${LUA_LOGO})
file(DOWNLOAD https://www.lua.org/images/${LUA_LOGO}
${CMAKE_CURRENT_LIST_DIR}/${LUA_LOGO}
)
)
endif()

add_custom_command(OUTPUT lua.ico
COMMAND magick ${CMAKE_CURRENT_LIST_DIR}/${LUA_LOGO} -resize 256x256 lua.ico
MAIN_DEPENDENCY ${CMAKE_CURRENT_LIST_DIR}/${LUA_LOGO}
COMMENT "Generating Lua icon"
)
add_custom_target(luaicon ALL DEPENDS lua.ico)
)
add_custom_target(luaicon ALL DEPENDS lua.ico COMMENT "icon")
endif()

set(LUA_SRC lua-${CMAKE_PROJECT_VERSION}/src)
Expand Down Expand Up @@ -89,11 +98,11 @@ set(LIB

set(LUA
${LUA_SRC}/lua.c
)
)

set (LUAC
set(LUAC
${LUA_SRC}/luac.c
)
)

add_executable(lua ${LUA} ${LIB})
add_executable(luac ${LUAC} ${LIB})
Expand All @@ -111,17 +120,19 @@ add_library(lualib SHARED ${LIB})
target_sources(lualib
PUBLIC
FILE_SET include TYPE HEADERS BASE_DIRS ${LUA_SRC}
FILES ${LUA_SRC}/lauxlib.h ${LUA_SRC}/lua.h ${LUA_SRC}/lua.hpp ${LUA_SRC}/luaconf.h ${LUA_SRC}/lualib.h
)
FILES ${LUA_SRC}/lauxlib.h ${LUA_SRC}/lua.h ${LUA_SRC}/lua.hpp
${LUA_SRC}/luaconf.h ${LUA_SRC}/lualib.h
)

if(WIN32)
target_compile_definitions(lualib PUBLIC LUA_BUILD_AS_DLL)
set_property(TARGET lualib PROPERTY OUTPUT_NAME lua${CMAKE_PROJECT_VERSION_MAJOR}${CMAKE_PROJECT_VERSION_MINOR})
set_property(TARGET lualib PROPERTY OUTPUT_NAME
lua${CMAKE_PROJECT_VERSION_MAJOR}${CMAKE_PROJECT_VERSION_MINOR})

install(PROGRAMS
${CMAKE_CURRENT_LIST_DIR}/luarocks-${LUAROCKS_VERSION}-windows-64/luarocks.exe
${CMAKE_CURRENT_LIST_DIR}/luarocks-${LUAROCKS_VERSION}-windows-64/luarocks-admin.exe
TYPE BIN)
set(EXE_DIR
${CMAKE_CURRENT_LIST_DIR}/luarocks-${LUAROCKS_VERSION}-windows-64/)
install(PROGRAMS ${EXE_DIR}/luarocks.exe ${EXE_DIR}/luarocks-admin.exe
TYPE BIN)
else()
set_property(TARGET lualib PROPERTY OUTPUT_NAME lua)
endif()
Expand All @@ -144,7 +155,7 @@ if(WIN32)
else()
install(FILES ${LUA_DOC}/lua.1 ${LUA_DOC}/luac.1
DESTINATION man/man1
)
)
endif()
set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY FALSE)
set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_CURRENT_LIST_DIR}/LICENSE.txt)
Expand Down