@@ -21,7 +21,7 @@ if(LUAU_STATIC_CRT)
21
21
set (CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>" )
22
22
endif ()
23
23
24
- project (Luau LANGUAGES CXX C)
24
+ project (Luau LANGUAGES CXX C VERSION 0.607 )
25
25
add_library (Luau.Common INTERFACE )
26
26
add_library (Luau.Ast STATIC )
27
27
add_library (Luau.Compiler STATIC )
@@ -46,10 +46,6 @@ if(LUAU_BUILD_CLI)
46
46
set_target_properties (Luau.Reduce.CLI PROPERTIES OUTPUT_NAME luau-reduce)
47
47
set_target_properties (Luau.Compile.CLI PROPERTIES OUTPUT_NAME luau-compile)
48
48
set_target_properties (Luau.Bytecode.CLI PROPERTIES OUTPUT_NAME luau-bytecode)
49
-
50
- install (
51
- TARGETS Luau.Repl.CLI Luau.Analyze.CLI Luau.Ast.CLI Luau.Reduce.CLI Luau.Compile.CLI Luau.Bytecode.CLI
52
- )
53
49
endif ()
54
50
55
51
if (LUAU_BUILD_TESTS)
@@ -65,54 +61,64 @@ endif()
65
61
# Proxy target to make it possible to depend on private VM headers
66
62
add_library (Luau.VM.Internals INTERFACE )
67
63
64
+ include (CMakePackageConfigHelpers)
65
+ include (GenerateExportHeader)
66
+ include (GNUInstallDirs)
68
67
include (Sources .cmake)
69
68
70
- target_include_directories (Luau.Common INTERFACE Common/include )
69
+ target_include_directories (Luau.Common INTERFACE
70
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /Common/include >
71
+ $<INSTALL_INTERFACE:include >
72
+ )
71
73
72
74
target_compile_features (Luau.Ast PUBLIC cxx_std_17)
73
- target_include_directories (Luau.Ast PUBLIC Ast/include )
75
+ target_include_directories (Luau.Ast PUBLIC
76
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /Ast/include >
77
+ $<INSTALL_INTERFACE:include >
78
+ )
74
79
target_link_libraries (Luau.Ast PUBLIC Luau.Common)
75
80
76
81
target_compile_features (Luau.Compiler PUBLIC cxx_std_17)
77
- target_include_directories (Luau.Compiler PUBLIC Compiler/include )
82
+ target_include_directories (Luau.Compiler PUBLIC
83
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /Compiler/include >
84
+ $<INSTALL_INTERFACE:include >
85
+ )
78
86
target_link_libraries (Luau.Compiler PUBLIC Luau.Ast)
79
87
80
88
target_compile_features (Luau.Config PUBLIC cxx_std_17)
81
- target_include_directories (Luau.Config PUBLIC Config/include )
89
+ target_include_directories (Luau.Config PUBLIC
90
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /Config/include >
91
+ $<INSTALL_INTERFACE:include >
92
+ )
82
93
target_link_libraries (Luau.Config PUBLIC Luau.Ast)
83
94
84
95
target_compile_features (Luau.Analysis PUBLIC cxx_std_17)
85
- target_include_directories (Luau.Analysis PUBLIC Analysis/include )
96
+ target_include_directories (Luau.Analysis PUBLIC
97
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /Analysis/include >
98
+ $<INSTALL_INTERFACE:include >
99
+ )
86
100
target_link_libraries (Luau.Analysis PUBLIC Luau.Ast Luau.Config)
87
101
88
102
target_compile_features (Luau.CodeGen PRIVATE cxx_std_17)
89
- target_include_directories (Luau.CodeGen PUBLIC CodeGen/include )
103
+ target_include_directories (Luau.CodeGen PUBLIC
104
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /CodeGen/include >
105
+ $<INSTALL_INTERFACE:include >
106
+ )
90
107
target_link_libraries (Luau.CodeGen PRIVATE Luau.VM Luau.VM.Internals) # Code generation needs VM internals
91
108
target_link_libraries (Luau.CodeGen PUBLIC Luau.Common)
92
109
93
110
target_compile_features (Luau.VM PRIVATE cxx_std_11)
94
- target_include_directories (Luau.VM PUBLIC VM/include )
111
+ target_include_directories (Luau.VM PUBLIC
112
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /VM/include >
113
+ $<INSTALL_INTERFACE:include >
114
+ )
95
115
target_link_libraries (Luau.VM PUBLIC Luau.Common)
96
116
97
117
target_include_directories (isocline PUBLIC extern/isocline/include )
98
118
99
- target_include_directories (Luau.VM.Internals INTERFACE VM/src)
100
-
101
- install (
102
- TARGETS Luau.VM Luau.CodeGen Luau.Common Luau.Ast Luau.Analysis Luau.Compiler Luau.Config
103
- EXPORT LuauTargets
104
- )
105
- install (
106
- DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR} /VM/include/"
107
- DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR} /CodeGen/include/"
108
- DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR} /Ast/include/"
109
- DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR} /Compiler/include/"
110
- DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR} /Analysis/include/"
111
- DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR} /Common/include/"
112
- DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR} /Config/include/"
113
- DESTINATION "include"
114
- FILES_MATCHING
115
- PATTERN "*.h"
119
+ target_include_directories (Luau.VM.Internals INTERFACE
120
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /VM/src>
121
+ $<INSTALL_INTERFACE:include >
116
122
)
117
123
118
124
set (LUAU_OPTIONS)
@@ -292,3 +298,60 @@ foreach(LIB Luau.Ast Luau.Compiler Luau.Config Luau.Analysis Luau.CodeGen Luau.V
292
298
endif ()
293
299
endif ()
294
300
endforeach ()
301
+
302
+ configure_package_config_file(
303
+ "${CMAKE_CURRENT_SOURCE_DIR} /LuauConfig.cmake.in"
304
+ "${CMAKE_CURRENT_BINARY_DIR} /LuauConfig.cmake"
305
+ INSTALL_DESTINATION "lib/cmake/Luau"
306
+ )
307
+ write_basic_package_version_file(
308
+ "${CMAKE_CURRENT_BINARY_DIR} /LuauConfigVersion.cmake"
309
+ VERSION "${PROJECT_VERSION} "
310
+ COMPATIBILITY AnyNewerVersion
311
+ )
312
+ export (
313
+ TARGETS Luau.Ast Luau.Analysis Luau.CodeGen Luau.VM Luau.Compiler Luau.Config Luau.Common Luau.VM.Internals
314
+ FILE "${CMAKE_CURRENT_BINARY_DIR} /LuauExport.cmake"
315
+ )
316
+
317
+ install (
318
+ TARGETS Luau.Ast Luau.Analysis Luau.CodeGen Luau.VM Luau.Compiler Luau.Config Luau.Common Luau.VM.Internals
319
+ EXPORT LuauTargets
320
+ LIBRARY DESTINATION "lib"
321
+ ARCHIVE DESTINATION "lib"
322
+ INCLUDES DESTINATION "include"
323
+ )
324
+ install (
325
+ EXPORT LuauTargets
326
+ FILE LuauTargets.cmake
327
+ NAMESPACE Luau::
328
+ DESTINATION "lib/cmake/Luau"
329
+ )
330
+ install (
331
+ FILES
332
+ "${CMAKE_CURRENT_BINARY_DIR} /LuauConfig.cmake"
333
+ "${CMAKE_CURRENT_BINARY_DIR} /LuauConfigVersion.cmake"
334
+ DESTINATION "lib/cmake/Luau"
335
+ )
336
+ install (
337
+ DIRECTORY
338
+ "${CMAKE_CURRENT_SOURCE_DIR} /Common/include/"
339
+ "${CMAKE_CURRENT_SOURCE_DIR} /Ast/include/"
340
+ "${CMAKE_CURRENT_SOURCE_DIR} /Compiler/include/"
341
+ "${CMAKE_CURRENT_SOURCE_DIR} /Config/include/"
342
+ "${CMAKE_CURRENT_SOURCE_DIR} /Analysis/include/"
343
+ "${CMAKE_CURRENT_SOURCE_DIR} /CodeGen/include/"
344
+ "${CMAKE_CURRENT_SOURCE_DIR} /VM/include/"
345
+ "${CMAKE_CURRENT_SOURCE_DIR} /VM/src/"
346
+ "${CMAKE_CURRENT_SOURCE_DIR} /Common/include/"
347
+ "${CMAKE_CURRENT_SOURCE_DIR} /Config/include/"
348
+ DESTINATION "include"
349
+ FILES_MATCHING PATTERN "*.h"
350
+ )
351
+
352
+ if (LUAU_BUILD_CLI)
353
+ install (
354
+ TARGETS Luau.Repl.CLI Luau.Analyze.CLI Luau.Ast.CLI Luau.Reduce.CLI Luau.Compile.CLI Luau.Bytecode.CLI
355
+ RUNTIME DESTINATION "bin"
356
+ )
357
+ endif ()
0 commit comments