forked from CaffeineMC/sodium
-
Notifications
You must be signed in to change notification settings - Fork 4
/
build.gradle
152 lines (129 loc) · 4.95 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
import net.fabricmc.loom.task.RemapJarTask
plugins {
// Unlike most projects, we choose to pin the specific version of Loom.
// This prevents a lot of issues where the build script can fail randomly because the Fabric Maven server
// is not reachable for some reason, and it makes builds much more reproducible. Observation also shows that it
// really helps to improve startup times on slow connections.
id 'fabric-loom' version '1.3.8'
// Vineflower is a fork of the FernFlower decompiler which contains many enhancements and bug fixes, and generally
// produces much better source code. The Minecraft sources can be decompiled using it with the
// "genSourcesWithVineflower" task.
// (Note: Quiltflower was renamed to Vineflower in early July 2023.)
id 'io.github.juuxel.loom-vineflower' version '1.11.0'
// This dependency is only used to determine the state of the Git working tree so that build artifacts can be
// more easily identified. TODO: Lazily load GrGit via a service only when builds are performed.
id 'org.ajoberstar.grgit' version '5.0.0'
}
apply from: "${rootProject.projectDir}/gradle/fabric.gradle"
apply from: "${rootProject.projectDir}/gradle/java.gradle"
archivesBaseName = "${project.archives_base_name}-mc${project.minecraft_version}"
version = "${project.mod_version}${getVersionMetadata()}"
group = project.maven_group
loom {
mixin.defaultRefmapName = "mixins.sodium.refmap.json"
accessWidenerPath = file("src/main/resources/sodium.accesswidener")
}
configurations {
modIncludeImplementation
include.extendsFrom modIncludeImplementation
modImplementation.extendsFrom modIncludeImplementation
}
sourceSets {
api {
java {
compileClasspath += main.compileClasspath
}
}
main {
java {
compileClasspath += api.output
runtimeClasspath += api.output
}
}
}
tasks.register('apiJar', Jar) {
archiveClassifier.set "api-dev"
from sourceSets.api.output
}
tasks.register('remapApiJar', RemapJarTask) {
dependsOn apiJar
archiveClassifier.set "api"
input = apiJar.archiveFile.get().asFile
addNestedDependencies = false
}
build.dependsOn apiJar
build.dependsOn remapApiJar
jar {
from sourceSets.api.output.classesDirs
from sourceSets.api.output.resourcesDir
}
repositories {
// Log if any unknown repositories were added non-explicitly.
forEach { repo ->
if (repo.name == 'Fabric' || repo.name == 'Mojang' || repo.name == 'MavenRepo') {
// We know these exist already.
return
}
var url = repo.url as URI
var protocol = url.getScheme()
if (protocol == "file") {
// Local repositories are most likely safe.
return
}
println("[Sodium] Unknown repository \"${repo.name}\" with URL \"${url}\"")
}
Mojang {
content {
includeGroup('com.mojang')
}
}
Fabric {
content {
includeGroup('net.fabricmc.fabric-api')
includeGroup('net.fabricmc.unpick')
includeGroup('net.fabricmc')
}
}
// Most dependencies should be downloaded from maven central since they have the most strict security policy and most dependencies are just mirrored from maven central.
MavenRepo {
content {
// OW2 ASM is an exception which we download directly from their maven server which is signed with their PGP key.
excludeGroup('org.ow2.asm')
}
}
maven {
name 'ObjectWeb'
url 'https://repository.ow2.org/nexus/content/repositories/releases'
content {
includeGroup('org.ow2.asm')
}
}
}
dependencies {
// Fabric API
modIncludeImplementation(fabricApi.module("fabric-api-base", project.fabric_version))
modIncludeImplementation(fabricApi.module("fabric-block-view-api-v2", project.fabric_version))
modIncludeImplementation(fabricApi.module("fabric-rendering-fluids-v1", project.fabric_version))
// `fabricApi.module` does not work with deprecated modules, so add the module dependency manually.
// This is planned to be fixed in Loom 1.4.
// modIncludeImplementation(fabricApi.module("fabric-rendering-data-attachment-v1", project.fabric_version))
modIncludeImplementation("net.fabricmc.fabric-api:fabric-rendering-data-attachment-v1:0.3.38+73761d2e9a")
modIncludeImplementation(fabricApi.module("fabric-resource-loader-v0", project.fabric_version))
}
def getVersionMetadata() {
// CI builds only
if (project.hasProperty("build.release")) {
return "" // no tag whatsoever
}
if (grgit != null) {
def head = grgit.head()
def id = head.abbreviatedId
// Flag the build if the build tree is not clean
if (!grgit.status().clean) {
id += "-dirty"
}
return "+git.${id}"
}
// No tracking information could be found about the build
return "+unknown"
}