mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-08-02 14:57:31 +03:00
pkg/glslang: can build
This commit is contained in:
120
pkg/glslang/build.zig
Normal file
120
pkg/glslang/build.zig
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
const std = @import("std");
|
||||||
|
|
||||||
|
pub fn build(b: *std.Build) !void {
|
||||||
|
const target = b.standardTargetOptions(.{});
|
||||||
|
const optimize = b.standardOptimizeOption(.{});
|
||||||
|
|
||||||
|
_ = b.addModule("glslang", .{ .source_file = .{ .path = "main.zig" } });
|
||||||
|
|
||||||
|
const upstream = b.dependency("glslang", .{});
|
||||||
|
const lib = try buildGlslang(b, upstream, target, optimize);
|
||||||
|
b.installArtifact(lib);
|
||||||
|
|
||||||
|
{
|
||||||
|
const test_exe = b.addTest(.{
|
||||||
|
.name = "test",
|
||||||
|
.root_source_file = .{ .path = "main.zig" },
|
||||||
|
.target = target,
|
||||||
|
.optimize = optimize,
|
||||||
|
});
|
||||||
|
test_exe.linkLibrary(lib);
|
||||||
|
const tests_run = b.addRunArtifact(test_exe);
|
||||||
|
const test_step = b.step("test", "Run tests");
|
||||||
|
test_step.dependOn(&tests_run.step);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn buildGlslang(
|
||||||
|
b: *std.Build,
|
||||||
|
upstream: *std.Build.Dependency,
|
||||||
|
target: std.zig.CrossTarget,
|
||||||
|
optimize: std.builtin.OptimizeMode,
|
||||||
|
) !*std.Build.Step.Compile {
|
||||||
|
const lib = b.addStaticLibrary(.{
|
||||||
|
.name = "glslang",
|
||||||
|
.target = target,
|
||||||
|
.optimize = optimize,
|
||||||
|
});
|
||||||
|
lib.linkLibC();
|
||||||
|
lib.linkLibCpp();
|
||||||
|
lib.addIncludePath(upstream.path(""));
|
||||||
|
lib.addIncludePath(.{ .path = "override" });
|
||||||
|
|
||||||
|
var flags = std.ArrayList([]const u8).init(b.allocator);
|
||||||
|
defer flags.deinit();
|
||||||
|
|
||||||
|
lib.addCSourceFiles(.{
|
||||||
|
.dependency = upstream,
|
||||||
|
.flags = flags.items,
|
||||||
|
.files = &.{
|
||||||
|
// GenericCodeGen
|
||||||
|
"glslang/GenericCodeGen/CodeGen.cpp",
|
||||||
|
"glslang/GenericCodeGen/Link.cpp",
|
||||||
|
|
||||||
|
// MachineIndependent
|
||||||
|
//"MachineIndependent/glslang.y",
|
||||||
|
"glslang/MachineIndependent/glslang_tab.cpp",
|
||||||
|
"glslang/MachineIndependent/attribute.cpp",
|
||||||
|
"glslang/MachineIndependent/Constant.cpp",
|
||||||
|
"glslang/MachineIndependent/iomapper.cpp",
|
||||||
|
"glslang/MachineIndependent/InfoSink.cpp",
|
||||||
|
"glslang/MachineIndependent/Initialize.cpp",
|
||||||
|
"glslang/MachineIndependent/IntermTraverse.cpp",
|
||||||
|
"glslang/MachineIndependent/Intermediate.cpp",
|
||||||
|
"glslang/MachineIndependent/ParseContextBase.cpp",
|
||||||
|
"glslang/MachineIndependent/ParseHelper.cpp",
|
||||||
|
"glslang/MachineIndependent/PoolAlloc.cpp",
|
||||||
|
"glslang/MachineIndependent/RemoveTree.cpp",
|
||||||
|
"glslang/MachineIndependent/Scan.cpp",
|
||||||
|
"glslang/MachineIndependent/ShaderLang.cpp",
|
||||||
|
"glslang/MachineIndependent/SpirvIntrinsics.cpp",
|
||||||
|
"glslang/MachineIndependent/SymbolTable.cpp",
|
||||||
|
"glslang/MachineIndependent/Versions.cpp",
|
||||||
|
"glslang/MachineIndependent/intermOut.cpp",
|
||||||
|
"glslang/MachineIndependent/limits.cpp",
|
||||||
|
"glslang/MachineIndependent/linkValidate.cpp",
|
||||||
|
"glslang/MachineIndependent/parseConst.cpp",
|
||||||
|
"glslang/MachineIndependent/reflection.cpp",
|
||||||
|
"glslang/MachineIndependent/preprocessor/Pp.cpp",
|
||||||
|
"glslang/MachineIndependent/preprocessor/PpAtom.cpp",
|
||||||
|
"glslang/MachineIndependent/preprocessor/PpContext.cpp",
|
||||||
|
"glslang/MachineIndependent/preprocessor/PpScanner.cpp",
|
||||||
|
"glslang/MachineIndependent/preprocessor/PpTokens.cpp",
|
||||||
|
"glslang/MachineIndependent/propagateNoContraction.cpp",
|
||||||
|
|
||||||
|
// C Interface
|
||||||
|
"glslang/CInterface/glslang_c_interface.cpp",
|
||||||
|
|
||||||
|
// ResourceLimits
|
||||||
|
"glslang/ResourceLimits/ResourceLimits.cpp",
|
||||||
|
"glslang/ResourceLimits/resource_limits_c.cpp",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!target.isWindows()) {
|
||||||
|
lib.addCSourceFiles(.{
|
||||||
|
.dependency = upstream,
|
||||||
|
.flags = flags.items,
|
||||||
|
.files = &.{
|
||||||
|
"glslang/OSDependent/Unix/ossource.cpp",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
lib.addCSourceFiles(.{
|
||||||
|
.dependency = upstream,
|
||||||
|
.flags = flags.items,
|
||||||
|
.files = &.{
|
||||||
|
"glslang/OSDependent/Windows/ossource.cpp",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
lib.installHeadersDirectoryOptions(.{
|
||||||
|
.source_dir = upstream.path(""),
|
||||||
|
.install_dir = .header,
|
||||||
|
.install_subdir = "",
|
||||||
|
.include_extensions = &.{".h"},
|
||||||
|
});
|
||||||
|
|
||||||
|
return lib;
|
||||||
|
}
|
11
pkg/glslang/build.zig.zon
Normal file
11
pkg/glslang/build.zig.zon
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
.{
|
||||||
|
.name = "glslang",
|
||||||
|
.version = "13.1.1",
|
||||||
|
.paths = .{""},
|
||||||
|
.dependencies = .{
|
||||||
|
.glslang = .{
|
||||||
|
.url = "https://github.com/KhronosGroup/glslang/archive/refs/tags/13.1.1.tar.gz",
|
||||||
|
.hash = "1220481fe19def1172cd0728743019c0f440181a6342b62d03e24d05c70141516799",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
4
pkg/glslang/c.zig
Normal file
4
pkg/glslang/c.zig
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
pub usingnamespace @cImport({
|
||||||
|
@cInclude("glslang/Include/glslang_c_interface.h");
|
||||||
|
@cInclude("glslang/Public/resource_limits_c.h");
|
||||||
|
});
|
22
pkg/glslang/main.zig
Normal file
22
pkg/glslang/main.zig
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
pub const c = @import("c.zig");
|
||||||
|
|
||||||
|
test {
|
||||||
|
const input: c.glslang_input_t = .{
|
||||||
|
.language = c.GLSLANG_SOURCE_GLSL,
|
||||||
|
.stage = c.GLSLANG_STAGE_VERTEX,
|
||||||
|
.client = c.GLSLANG_CLIENT_VULKAN,
|
||||||
|
.client_version = c.GLSLANG_TARGET_VULKAN_1_2,
|
||||||
|
.target_language = c.GLSLANG_TARGET_SPV,
|
||||||
|
.target_language_version = c.GLSLANG_TARGET_SPV_1_5,
|
||||||
|
.code = "",
|
||||||
|
.default_version = 100,
|
||||||
|
.default_profile = c.GLSLANG_NO_PROFILE,
|
||||||
|
.force_default_version_and_profile = 0,
|
||||||
|
.forward_compatible = 0,
|
||||||
|
.messages = c.GLSLANG_MSG_DEFAULT_BIT,
|
||||||
|
.resource = c.glslang_default_resource(),
|
||||||
|
};
|
||||||
|
|
||||||
|
const shader = c.glslang_shader_create(&input);
|
||||||
|
_ = shader;
|
||||||
|
}
|
62
pkg/glslang/override/glslang/build_info.h
Normal file
62
pkg/glslang/override/glslang/build_info.h
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
// Copyright (C) 2020 The Khronos Group Inc.
|
||||||
|
//
|
||||||
|
// All rights reserved.
|
||||||
|
//
|
||||||
|
// Redistribution and use in source and binary forms, with or without
|
||||||
|
// modification, are permitted provided that the following conditions
|
||||||
|
// are met:
|
||||||
|
//
|
||||||
|
// Redistributions of source code must retain the above copyright
|
||||||
|
// notice, this list of conditions and the following disclaimer.
|
||||||
|
//
|
||||||
|
// Redistributions in binary form must reproduce the above
|
||||||
|
// copyright notice, this list of conditions and the following
|
||||||
|
// disclaimer in the documentation and/or other materials provided
|
||||||
|
// with the distribution.
|
||||||
|
//
|
||||||
|
// Neither the name of The Khronos Group Inc. nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived
|
||||||
|
// from this software without specific prior written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
|
// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
|
// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
|
// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
|
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
|
// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
// POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
#ifndef GLSLANG_BUILD_INFO
|
||||||
|
#define GLSLANG_BUILD_INFO
|
||||||
|
|
||||||
|
#define GLSLANG_VERSION_MAJOR 13
|
||||||
|
#define GLSLANG_VERSION_MINOR 1
|
||||||
|
#define GLSLANG_VERSION_PATCH 1
|
||||||
|
#define GLSLANG_VERSION_FLAVOR ""
|
||||||
|
|
||||||
|
#define GLSLANG_VERSION_GREATER_THAN(major, minor, patch) \
|
||||||
|
((GLSLANG_VERSION_MAJOR) > (major) || ((major) == GLSLANG_VERSION_MAJOR && \
|
||||||
|
((GLSLANG_VERSION_MINOR) > (minor) || ((minor) == GLSLANG_VERSION_MINOR && \
|
||||||
|
(GLSLANG_VERSION_PATCH) > (patch)))))
|
||||||
|
|
||||||
|
#define GLSLANG_VERSION_GREATER_OR_EQUAL_TO(major, minor, patch) \
|
||||||
|
((GLSLANG_VERSION_MAJOR) > (major) || ((major) == GLSLANG_VERSION_MAJOR && \
|
||||||
|
((GLSLANG_VERSION_MINOR) > (minor) || ((minor) == GLSLANG_VERSION_MINOR && \
|
||||||
|
(GLSLANG_VERSION_PATCH >= (patch))))))
|
||||||
|
|
||||||
|
#define GLSLANG_VERSION_LESS_THAN(major, minor, patch) \
|
||||||
|
((GLSLANG_VERSION_MAJOR) < (major) || ((major) == GLSLANG_VERSION_MAJOR && \
|
||||||
|
((GLSLANG_VERSION_MINOR) < (minor) || ((minor) == GLSLANG_VERSION_MINOR && \
|
||||||
|
(GLSLANG_VERSION_PATCH) < (patch)))))
|
||||||
|
|
||||||
|
#define GLSLANG_VERSION_LESS_OR_EQUAL_TO(major, minor, patch) \
|
||||||
|
((GLSLANG_VERSION_MAJOR) < (major) || ((major) == GLSLANG_VERSION_MAJOR && \
|
||||||
|
((GLSLANG_VERSION_MINOR) < (minor) || ((minor) == GLSLANG_VERSION_MINOR && \
|
||||||
|
(GLSLANG_VERSION_PATCH <= (patch))))))
|
||||||
|
|
||||||
|
#endif // GLSLANG_BUILD_INFO
|
Reference in New Issue
Block a user