1+ plugins {
2+ id ' c'
3+ }
4+
5+ group = ' org.keplerproject'
6+ version = ' 1.0-SNAPSHOT'
7+
8+ def LUA_MAJOR_VERSION = " Lua55"
9+ def LUA_VERSION = " lua-5.5.0"
10+ def LUA_HOME = layout. buildDirectory. dir(" $LUA_VERSION " ). getOrNull()
11+ def LUA_SRC = layout. buildDirectory. dir(" $LUA_VERSION /src" ). getOrNull()
12+
13+ if (! layout. buildDirectory. asFile. get(). exists()) {
14+ layout. buildDirectory. asFile. get(). mkdir()
15+ }
16+
17+ repositories {
18+ mavenCentral()
19+ }
20+
21+ model {
22+ platforms {
23+ x86 {
24+ architecture " x86"
25+ }
26+ x64 {
27+ architecture " x86_64"
28+ }
29+ arm64 {
30+ architecture " aarch64"
31+ }
32+ }
33+ }
34+
35+ model {
36+ components {
37+ " $LUA_VERSION " (NativeLibrarySpec ) {
38+ targetPlatform myTargetPlatform
39+ sources {
40+ c {
41+ exportedHeaders {
42+ srcDir " ${ LUA_SRC} "
43+ }
44+ }
45+ }
46+ }
47+
48+ " luajava4${ LUA_MAJOR_VERSION} " (NativeLibrarySpec ) {
49+ targetPlatform myTargetPlatform
50+ sources {
51+ c {
52+ lib library : " $LUA_VERSION " , linkage : ' static'
53+ exportedHeaders {
54+ srcDir project(' :c' ). layout. projectDirectory. dir(' src/main/c' )
55+ srcDir project(' :c:lua52' ). layout. projectDirectory. dir(' src/main/c' )
56+ srcDir project(' :c:lua53' ). layout. projectDirectory. dir(' src/main/c' )
57+ srcDir project(' :c:lua54' ). layout. projectDirectory. dir(' src/main/c' )
58+ srcDir " src/main/c"
59+ srcDir " src/main/compatible"
60+ srcDir layout. buildDirectory. dir(' headers' )
61+ srcDir " ${ System.properties['java.home']} /include"
62+ srcDir " ${ System.properties['java.home']} /include/linux"
63+ srcDir " ${ System.properties['java.home']} /include/win32"
64+ srcDir " ${ System.properties['java.home']} /include/darwin"
65+ }
66+ source {
67+ srcDir project(' :c' ). layout. projectDirectory. dir(' src/main/c' )
68+ srcDir project(' :c:lua52' ). layout. projectDirectory. dir(' src/main/c' )
69+ srcDir project(' :c:lua53' ). layout. projectDirectory. dir(' src/main/c' )
70+ srcDir " src/main/c"
71+ include " **/*.c"
72+ }
73+ }
74+ }
75+
76+ binaries. all {
77+ checkedBy $. tasks. buildLua
78+ checkedBy $. tasks. generateHeader
79+
80+ if (toolChain in VisualCpp ) {
81+ cppCompiler. define ' WIN64'
82+ cppCompiler. define " LUAJAVA_VERSION" , " \" $LUAJAVA_VERSION \" "
83+ linker. args " lua.lib" , " /LIBPATH:${ LUA_SRC} "
84+ } else {
85+ cCompiler. define " LUAJAVA_VERSION" , " \" $LUAJAVA_VERSION \" "
86+ linker. args " -L${ LUA_SRC} " , ' -llua' , * additionLinkerArgs
87+ }
88+ }
89+ }
90+ }
91+ }
92+
93+ tasks. register(' generateHeader' ) {
94+ group(" luajava" )
95+ generateCHeader(layout. buildDirectory. get())
96+ }
97+
98+ tasks. register(" buildLua" ) {
99+ group(" lua" )
100+ downloadLua(LUA_VERSION , layout. buildDirectory. get())
101+ decompressLuaSource(LUA_VERSION , layout. buildDirectory. get(), LUA_HOME )
102+ doBuildLua(LUA_SRC )
103+ }
104+
105+ build {
106+ doLast {
107+ copyOutput(LUA_MAJOR_VERSION , LUA_VERSION , LUA_SRC )
108+ }
109+ }
0 commit comments