generated from tommyettinger/libgdx-library-template
-
Notifications
You must be signed in to change notification settings - Fork 1
/
build.gradle
183 lines (157 loc) · 6.55 KB
/
build.gradle
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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
buildscript {
repositories {
mavenLocal()
mavenCentral()
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
gradlePluginPortal()
}
dependencies {
classpath 'com.vanniktech:gradle-maven-publish-plugin:0.29.0'
}
}
plugins {
id "de.undercouch.download" version "5.0.1"
}
apply plugin: 'java-library'
apply plugin: 'com.vanniktech.maven.publish'
//Obviously, change the next line to match your project name.
def projectName = 'gdx-lwjgl3-angle-vulkan'
//Change this to whatever Maven Central group you might publish to,
//which is probably not this one if you aren't Tommy Ettinger.
group 'com.github.dgzt.gdx.lwjgl3'
version "$VERSION_NAME" // You can set the version in gradle.properties .
import com.vanniktech.maven.publish.JavaLibrary
import com.vanniktech.maven.publish.JavadocJar
// This just makes sure that a Javadoc JAR and a sources JAR are produced.
mavenPublishing {
configure(new JavaLibrary(new JavadocJar.Javadoc(), true))
}
// This sets the Javadoc JAR to have hopefully the correct name. This may need adjustment.
mavenPlainJavadocJar.archiveBaseName.set(projectName)
// There's pretty much no reason to use any encoding other than UTF-8 .
[compileJava, compileTestJava, javadoc]*.options*.encoding = 'UTF-8'
// Disable JDK 8's doclint
// http://blog.joda.org/2014/02/turning-off-doclint-in-jdk-8-javadoc.html
if (JavaVersion.current().isJava8Compatible()) {
allprojects {
tasks.withType(Javadoc).tap {
configureEach {
// The -quiet is because of some sort of weird JDK JavaCompiler bug:
// https://discuss.gradle.org/t/passing-arguments-to-compiler-and-javadoc/1661
options.addStringOption('Xdoclint:none,-missing', '-quiet')
}
}
}
}
compileJava {
// The default Java language level this targets is 8, which is as low as current
// (Java 20 and newer) JDKs will permit you to target.
// Targeting Java 7 is the lowest version you could need to go at this point, and
// to target 7 you need to be using Java 19 or lower. The default used for JitPack
// builds in this configuration uses Java 21 to build, so you would need to change
// jitpack.yml to use openjdk17 instead of openjdk21 if you really want to target 7.
// libGDX itself targets a mix of Java 7 (for most backends) and 8 (for LWJGL3).
// You must use 8 if any libraries you use need Java 8 (some that
// come to mind are simple-graphs and jdkgdxds, plus anything that needs LWJGL3).
sourceCompatibility = 8
targetCompatibility = 8
if (JavaVersion.current().isJava9Compatible()) {
options.release.set(8)
}
}
compileTestJava {
// LWJGL3 needs Java 8 starting in libGDX 1.11.0, which forces tests that use LWJGL3
// to use Java 8 or higher. Using options.release enforces compatibility with Java 8,
// including how NIO Buffers behave (which broke compatibility in Java 9).
sourceCompatibility = 8
targetCompatibility = 8
if (JavaVersion.current().isJava9Compatible()) {
options.release.set(8)
}
}
// JavaDocs will be published inside the docs/ folder, which you can easily put on GitHub Pages
// in your repo settings.
// You may instead want to remove this line if frequent doc changes use up too much repo space,
// or if you use a different version control host that doesn't host HTML like this.
javadoc.destinationDir = file('docs/apidocs')
jar {
archiveBaseName.set(projectName)
manifest {
attributes 'Implementation-Title': projectName, 'Implementation-Version': archiveVersion
}
}
repositories {
// You can uncomment mavenLocal() if you need self-built versions, but it can be a problem with GWT or other sources dependencies.
//mavenLocal()
mavenCentral()
maven { url 'https://s01.oss.sonatype.org' }
google()
maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
maven { url 'https://s01.oss.sonatype.org/content/repositories/snapshots/' }
// JitPack is a good repo to have if you depend on commit versions.
// Having the below repo might cause problems if uploading to Maven Central.
maven { url 'https://jitpack.io' }
}
dependencies {
// Change gdxVersion in gradle.properties to update or downgrade.
// Libraries that don't use libGDX directly can change the next line
// from `api` to `testImplementation` .
api "com.badlogicgames.gdx:gdx:$gdxVersion"
api "com.badlogicgames.gdx:gdx-backend-lwjgl3:$gdxVersion"
implementation "org.lwjgl:lwjgl-opengles:$lwjgl3Version"
implementation "org.lwjgl:lwjgl-opengles:$lwjgl3Version:natives-linux"
implementation "org.lwjgl:lwjgl-opengles:$lwjgl3Version:natives-windows"
implementation "org.lwjgl:lwjgl-egl:$lwjgl3Version"
testImplementation "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
testImplementation "junit:junit:4.13.2"
}
tasks.register('setupExternalNativesDirs') {
doLast {
file("build").mkdir();
file("src/main/resources/windows64").mkdirs();
file("src/main/resources/linux64").mkdirs();
}
doNotTrackState("Don't track state")
}
tasks.register('fetchAngleWindows64NativesZIP', Download) {
dependsOn setupExternalNativesDirs
src 'https://github.com/Dgzt/angle-vulkan-natives/releases/download/v6727/angle-windows-x64.zip'
dest 'build/angle-windows-x64.zip'
onlyIfModified true
useETag "all"
}
tasks.register('fetchAngleWLinux64NativesZIP', Download) {
dependsOn setupExternalNativesDirs
src 'https://github.com/Dgzt/angle-vulkan-natives/releases/download/v6727/angle-linux-x64.zip'
dest 'build/angle-linux-x64.zip'
onlyIfModified true
useETag "all"
}
tasks.register('extractWindows64Natives', Copy) {
dependsOn fetchAngleWindows64NativesZIP
from zipTree("build/angle-windows-x64.zip")
include "dist/libEGL.dll"
include "dist/libGLESv2.dll"
include "dist/vulkan-1.dll"
eachFile { fcp ->
fcp.path = fcp.path.replaceFirst("dist/", '')
}
into "src/main/resources/windows64"
doNotTrackState("Don't track state")
}
tasks.register('extractLinux64Natives', Copy) {
dependsOn fetchAngleWLinux64NativesZIP
from zipTree("build/angle-linux-x64.zip")
include "dist/libEGL.so"
include "dist/libGLESv2.so"
include "dist/libvulkan.so.1"
eachFile { fcp ->
fcp.path = fcp.path.replaceFirst("dist/", '')
}
into "src/main/resources/linux64"
doNotTrackState("Don't track state")
}
tasks.register('fetchExternalNatives', Copy) {
dependsOn extractWindows64Natives
dependsOn extractLinux64Natives
}