-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
164 lines (146 loc) · 4.6 KB
/
Copy pathCMakeLists.txt
File metadata and controls
164 lines (146 loc) · 4.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
# What is this E1126 warning about?
# cmake-lint: disable=E1126
cmake_minimum_required(VERSION 3.26)
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
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.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 COMMENT "icon")
endif()
set(LUA_SRC lua-${CMAKE_PROJECT_VERSION}/src)
set(LUA_DOC lua-${CMAKE_PROJECT_VERSION}/doc)
set(LIB
${LUA_SRC}/lapi.c
${LUA_SRC}/lcode.c
${LUA_SRC}/lctype.c
${LUA_SRC}/ldebug.c
${LUA_SRC}/ldo.c
${LUA_SRC}/ldump.c
${LUA_SRC}/lfunc.c
${LUA_SRC}/lgc.c
${LUA_SRC}/llex.c
${LUA_SRC}/lmem.c
${LUA_SRC}/lobject.c
${LUA_SRC}/lopcodes.c
${LUA_SRC}/lparser.c
${LUA_SRC}/lstate.c
${LUA_SRC}/lstring.c
${LUA_SRC}/ltable.c
${LUA_SRC}/ltm.c
${LUA_SRC}/lundump.c
${LUA_SRC}/lvm.c
${LUA_SRC}/lzio.c
${LUA_SRC}/lauxlib.c
${LUA_SRC}/lbaselib.c
${LUA_SRC}/lcorolib.c
${LUA_SRC}/ldblib.c
${LUA_SRC}/liolib.c
${LUA_SRC}/lmathlib.c
${LUA_SRC}/loadlib.c
${LUA_SRC}/loslib.c
${LUA_SRC}/lstrlib.c
${LUA_SRC}/ltablib.c
${LUA_SRC}/lutf8lib.c
${LUA_SRC}/linit.c
)
set(LUA
${LUA_SRC}/lua.c
)
set(LUAC
${LUA_SRC}/luac.c
)
add_executable(lua ${LUA} ${LIB})
add_executable(luac ${LUAC} ${LIB})
if(NOT WIN32)
include(CheckLibraryExists)
check_library_exists(m pow "" LIBEXISTS)
if(LIBEXISTS)
target_link_libraries(lua PUBLIC m)
target_link_libraries(luac PUBLIC m)
endif()
endif()
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
)
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(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()
install(TARGETS lua luac)
install(TARGETS lualib FILE_SET include)
install(FILES ${CMAKE_CURRENT_LIST_DIR}/LICENSE.txt TYPE DOC)
if(WIN32)
set(CPACK_GENERATOR ZIP WIX)
install(FILES
${CMAKE_CURRENT_BINARY_DIR}/lua.pdb
${CMAKE_CURRENT_BINARY_DIR}/luac.pdb
${CMAKE_CURRENT_BINARY_DIR}/lua54.pdb
DESTINATION bin)
set(CPACK_WIX_UPGRADE_GUID "3e5a792d-9d31-41d5-a93f-629ab7c7683d")
set(CPACK_WIX_PRODUCT_ICON lua.ico)
list(APPEND CPACK_WIX_EXTENSIONS WixUtilExtension)
list(APPEND CPACK_WIX_PATCH_FILE ${CMAKE_CURRENT_LIST_DIR}/WixPatch.xml)
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)
set(CPACK_PACKAGE_INSTALL_DIRECTORY ${CMAKE_PROJECT_NAME})
set(CPACK_PACKAGE_VENDOR DEVCOM)
include(CPack)