Use tinsel and public unfettered lib
This commit is contained in:
parent
184f0a9223
commit
0c1e38ab31
|
@ -1 +1 @@
|
|||
java temurin-18.0.2+101
|
||||
java temurin-21.0.0+35.0.LTS
|
||||
|
|
|
@ -0,0 +1,281 @@
|
|||
local toolchain = path(ENV.JAVA_HOME)
|
||||
|
||||
local src_java = path("src/java")
|
||||
local src_tmpl = path("src/templates")
|
||||
local src_native = path("src/native")
|
||||
local libs = path("libs")
|
||||
|
||||
local common_srcs = table.freeze({
|
||||
-- common
|
||||
"org/lwjgl/PointerWrapper.java",
|
||||
"org/lwjgl/PointerWrapperAbstract.java",
|
||||
"org/lwjgl/PointerBuffer.java",
|
||||
-- opencl
|
||||
"org/lwjgl/opencl/CLPlatform.java",
|
||||
"org/lwjgl/opencl/CLDevice.java",
|
||||
"org/lwjgl/opencl/CLContext.java",
|
||||
"org/lwjgl/opencl/CLCommandQueue.java",
|
||||
"org/lwjgl/opencl/CLMem.java",
|
||||
"org/lwjgl/opencl/CLBuildProgramCallback.java",
|
||||
"org/lwjgl/opencl/CLCompileProgramCallback.java",
|
||||
"org/lwjgl/opencl/CLContextCallback.java",
|
||||
"org/lwjgl/opencl/CLEventCallback.java",
|
||||
"org/lwjgl/opencl/CLLinkProgramCallback.java",
|
||||
"org/lwjgl/opencl/CLMemObjectDestructorCallback.java",
|
||||
"org/lwjgl/opencl/CLPrintfCallback.java",
|
||||
"org/lwjgl/opencl/CLProgramCallback.java",
|
||||
"org/lwjgl/opencl/CLNativeKernel.java",
|
||||
"org/lwjgl/opencl/CLFunctionAddress.java",
|
||||
-- opengl
|
||||
"org/lwjgl/opengl/GLSync.java",
|
||||
"org/lwjgl/opengl/AMDDebugOutputCallback.java",
|
||||
"org/lwjgl/opengl/ARBDebugOutputCallback.java",
|
||||
"org/lwjgl/opengl/KHRDebugCallback.java",
|
||||
-- opengles
|
||||
"org/lwjgl/opengles/EGLImageOES.java",
|
||||
"org/lwjgl/opengles/KHRDebugCallback.java",
|
||||
})
|
||||
common_srcs = map(common_srcs, function(p) return rootedpath(src_java, src_java .. p) end)
|
||||
|
||||
local sp = src_java.value
|
||||
|
||||
local compile_generators = task("compile_generators", function(env)
|
||||
local java = require("!java")
|
||||
java = java.withToolchain(toolchain)
|
||||
|
||||
local srcs_gen = walk_rootedpath{path = src_java .. "org/lwjgl/util/generator"}
|
||||
|
||||
-- compile common classes required by the generators
|
||||
local out_common = java.compileJar(env:derive(), {
|
||||
implicit = true,
|
||||
srcs = common_srcs,
|
||||
class_path = files({libs .. "unfettered.jar"}),
|
||||
extra_args = {
|
||||
"--source-path", sp,
|
||||
},
|
||||
})
|
||||
|
||||
-- compile the generators
|
||||
local out_gen = java.compileJar(env:derive(), {
|
||||
srcs = srcs_gen,
|
||||
class_path = files({out_common.classes}),
|
||||
extra_args = {
|
||||
"--source-path", sp,
|
||||
},
|
||||
-- TODO: need to track source path
|
||||
--__source_path = files()
|
||||
})
|
||||
|
||||
return {out_common.classes, out_gen.classes}
|
||||
end)
|
||||
|
||||
local generate = export(task("generate", function(env)
|
||||
local java = require("!java")
|
||||
java = java.withToolchain(toolchain)
|
||||
|
||||
-- all generator sources
|
||||
local srcs_openal = walk_rootedpath{path = src_tmpl .. "org/lwjgl/openal"}
|
||||
local srcs_opengl = walk_rootedpath{path = src_tmpl .. "org/lwjgl/opengl"}
|
||||
local srcs_opencl = walk_rootedpath{path = src_tmpl .. "org/lwjgl/opencl"}
|
||||
local srcs_opengles = walk_rootedpath{path = src_tmpl .. "org/lwjgl/opengles"}
|
||||
|
||||
local class_path = files(compile_generators())
|
||||
|
||||
local dest_props_java = {"genJavaPath"}
|
||||
local dest_props_native = {"genNativePath"}
|
||||
|
||||
local function with_dest_props(input, dest_props)
|
||||
input = table.clone(input)
|
||||
input.dest_props = dest_props
|
||||
return input
|
||||
end
|
||||
|
||||
local function compile(input)
|
||||
input.class_path = class_path
|
||||
local env = env:derive()
|
||||
return async(function()
|
||||
local output = java.compile(env, input)
|
||||
return map_rootedpath(output.root, output.files)
|
||||
end)
|
||||
--local output = java.compile(env, input)
|
||||
--output = map_rootedpath(output.root, output.files)
|
||||
--return async(function() return output end)
|
||||
end
|
||||
|
||||
local gen_openal = {
|
||||
srcs = srcs_openal,
|
||||
extra_args = {
|
||||
"--source-path", sp,
|
||||
|
||||
"-proc:only",
|
||||
"-processor",
|
||||
"org.lwjgl.util.generator.GeneratorProcessor",
|
||||
|
||||
"-Atypemap=org.lwjgl.util.generator.openal.ALTypeMap",
|
||||
"-Anovalidate=true",
|
||||
},
|
||||
}
|
||||
local gen_openal_java = {compile(with_dest_props(gen_openal, dest_props_java))}
|
||||
local gen_openal_native = compile(with_dest_props(gen_openal, dest_props_native))
|
||||
|
||||
local gen_opengl = {
|
||||
srcs = srcs_opengl,
|
||||
extra_args = {
|
||||
"--source-path", sp,
|
||||
|
||||
"-proc:only",
|
||||
"-processor",
|
||||
"org.lwjgl.util.generator.GeneratorProcessor",
|
||||
|
||||
"-Acontextspecific",
|
||||
"-Atypemap=org.lwjgl.util.generator.opengl.GLTypeMap",
|
||||
"-Anovalidate=true",
|
||||
},
|
||||
}
|
||||
local gen_opengl_java = {
|
||||
compile(with_dest_props(gen_opengl, dest_props_java)),
|
||||
compile(with_dest_props({
|
||||
srcs = srcs_opengl,
|
||||
extra_args = {
|
||||
"--source-path", sp,
|
||||
|
||||
"-proc:only",
|
||||
"-processor",
|
||||
"org.lwjgl.util.generator.opengl.GLReferencesGeneratorProcessor",
|
||||
|
||||
"-Acontextspecific",
|
||||
}
|
||||
}, dest_props_java)),
|
||||
compile(with_dest_props({
|
||||
srcs = srcs_opengl,
|
||||
extra_args = {
|
||||
"--source-path", sp,
|
||||
|
||||
"-proc:only",
|
||||
"-processor",
|
||||
"org.lwjgl.util.generator.opengl.GLGeneratorProcessor",
|
||||
|
||||
"-Acontextspecific",
|
||||
}
|
||||
}, dest_props_java)),
|
||||
}
|
||||
local gen_opengl_native = compile(with_dest_props(gen_opengl, dest_props_native))
|
||||
|
||||
local gen_opencl = {
|
||||
srcs = srcs_opencl,
|
||||
extra_args = {
|
||||
"--source-path", sp,
|
||||
|
||||
"-proc:only",
|
||||
"-processor",
|
||||
"org.lwjgl.util.generator.GeneratorProcessor",
|
||||
|
||||
"-Acontextspecific",
|
||||
"-Atypemap=org.lwjgl.util.generator.opencl.CLTypeMap",
|
||||
"-Anovalidate=true",
|
||||
},
|
||||
}
|
||||
local gen_opencl_java = {
|
||||
compile(with_dest_props(gen_opencl, dest_props_java)),
|
||||
compile(with_dest_props({
|
||||
srcs = srcs_opencl,
|
||||
extra_args = {
|
||||
"--source-path", sp,
|
||||
|
||||
"-proc:only",
|
||||
"-processor",
|
||||
"org.lwjgl.util.generator.opencl.CLGeneratorProcessor",
|
||||
|
||||
"-Acontextspecific",
|
||||
}
|
||||
}, dest_props_java)),
|
||||
}
|
||||
local gen_opencl_native = compile(with_dest_props(gen_opencl, dest_props_native))
|
||||
|
||||
local gen_opengles = {
|
||||
srcs = srcs_opengles,
|
||||
extra_args = {
|
||||
"--source-path", sp,
|
||||
|
||||
"-proc:only",
|
||||
"-processor",
|
||||
"org.lwjgl.util.generator.GeneratorProcessor",
|
||||
|
||||
"-Atypemap=org.lwjgl.util.generator.opengl.GLESTypeMap",
|
||||
"-Anovalidate=true",
|
||||
},
|
||||
}
|
||||
local gen_opengles_java = {
|
||||
compile(with_dest_props(gen_opengles, dest_props_java)),
|
||||
compile(with_dest_props({
|
||||
srcs = srcs_opengles,
|
||||
extra_args = {
|
||||
"--source-path", sp,
|
||||
|
||||
"-proc:only",
|
||||
"-processor",
|
||||
"org.lwjgl.util.generator.opengl.GLESGeneratorProcessor",
|
||||
}
|
||||
}, dest_props_java)),
|
||||
}
|
||||
local gen_opengles_native = compile(with_dest_props(gen_opengles, dest_props_native))
|
||||
|
||||
local gen_java = table.concat(gen_openal_java, gen_opengl_java, gen_opencl_java, gen_opengles_java)
|
||||
|
||||
local gen_native = {
|
||||
gen_openal_native,
|
||||
gen_opengl_native,
|
||||
gen_opencl_native,
|
||||
gen_opengles_native,
|
||||
}
|
||||
|
||||
local gen_java, gen_native = await(async(function()
|
||||
return table.concat(await(gen_java))
|
||||
end), async(function()
|
||||
return table.concat(await(gen_native))
|
||||
end))
|
||||
return { java = gen_java, native = gen_native }
|
||||
end))
|
||||
|
||||
compile_java = export(task("compile_java", function(env)
|
||||
local java = require("!java")
|
||||
java = java.withToolchain(toolchain)
|
||||
|
||||
local srcs_root = src_java .. "org/lwjgl"
|
||||
local ignore_a = srcs_root.value .. "/util/generator"
|
||||
local ignore_b = srcs_root.value .. "/util/test"
|
||||
local ignore_c = srcs_root.value .. "/test"
|
||||
local ignore_d = srcs_root.value .. "/util/mapped"
|
||||
|
||||
local srcs = table.clone(walk_rootedpath{path = srcs_root})
|
||||
filter(srcs, function(path)
|
||||
local p = path.path.value
|
||||
return not p:startswith(ignore_a, ignore_b, ignore_c, ignore_d)
|
||||
end)
|
||||
push_all(srcs, generate().java)
|
||||
table.freeze(srcs)
|
||||
|
||||
return java.compileJar(env:derive(), {
|
||||
srcs = srcs,
|
||||
class_path = files({
|
||||
libs .. "unfettered.jar",
|
||||
libs .. "jinput.jar",
|
||||
libs .. "AppleJavaExtensions.jar",
|
||||
})
|
||||
})
|
||||
end))
|
||||
|
||||
local build_symbol_list = task("build_symbol_list", function(env, srcs: {InputFile})
|
||||
env:memoize(srcs, function(srcs, output)
|
||||
local args = map(srcs, function(src) return src.path.value end)
|
||||
local output = exec_with_output("nm", "-j", "-g", table.unpack(args))
|
||||
check_status(output)
|
||||
local pat = compile_regex("^_J(ava|NI|avaCritical)_.*$", {multi_line = true});
|
||||
|
||||
local buf = ""
|
||||
pat.for_each_match(output.stdout, function(match)
|
||||
buf ..= match .. "\n"
|
||||
end)
|
||||
intrinsic.io.write_file(output, buf)
|
||||
end)
|
||||
end)
|
|
@ -40,7 +40,7 @@ import java.lang.reflect.Modifier;
|
|||
import java.nio.ByteBuffer;
|
||||
import java.util.*;
|
||||
|
||||
import dev.pfaff.unfettered.UnsafeUtil;
|
||||
import dev.pfaff.unfettered.Unfettered;
|
||||
|
||||
import static java.lang.invoke.MethodType.methodType;
|
||||
|
||||
|
@ -64,7 +64,7 @@ public class LWJGLUtil {
|
|||
private static final MethodHandle MH_findLibrary;
|
||||
|
||||
static {
|
||||
MethodHandles.Lookup l = UnsafeUtil.getTrustedLookup();
|
||||
MethodHandles.Lookup l = Unfettered.getTrustedLookup();
|
||||
try {
|
||||
MH_findLibrary = l.findVirtual(ClassLoader.class, "findLibrary", methodType(String.class, String.class));
|
||||
} catch (ReflectiveOperationException e) {
|
||||
|
|
|
@ -49,7 +49,7 @@ import javax.sound.sampled.AudioSystem;
|
|||
|
||||
import org.lwjgl.openal.AL10;
|
||||
|
||||
import dev.pfaff.unfettered.UnsafeUtil;
|
||||
import dev.pfaff.unfettered.Unfettered;
|
||||
|
||||
import static java.lang.invoke.MethodHandles.*;
|
||||
import static java.lang.invoke.MethodType.*;
|
||||
|
@ -66,7 +66,7 @@ public class WaveData {
|
|||
private static final MethodHandle MH_getWaveInputStream;
|
||||
|
||||
static {
|
||||
MethodHandles.Lookup l = UnsafeUtil.getTrustedLookup();
|
||||
MethodHandles.Lookup l = Unfettered.getTrustedLookup();
|
||||
try {
|
||||
Class<?> C_WaveFileReader = Class.forName("com.sun.media.sound.WaveFileReader");
|
||||
MethodHandle MH_WaveFileReader_constructor = l.findConstructor(C_WaveFileReader, methodType(void.class));
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
package dev.pfaff.unfettered;
|
||||
|
||||
import java.lang.invoke.MethodHandles;
|
||||
|
||||
public final class UnsafeUtil {
|
||||
public static MethodHandles.Lookup getTrustedLookup() {
|
||||
throw new RuntimeException("This is a stub");
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue