parent
6a3b098681
commit
7d739c4542
|
|
@ -83,6 +83,7 @@
|
||||||
pkgs.cargo
|
pkgs.cargo
|
||||||
pkgs.rust-analyzer
|
pkgs.rust-analyzer
|
||||||
pkgs.clippy
|
pkgs.clippy
|
||||||
|
pkgs.rustfmt
|
||||||
|
|
||||||
pkgs.git
|
pkgs.git
|
||||||
|
|
||||||
|
|
@ -107,7 +108,7 @@
|
||||||
args:
|
args:
|
||||||
(import ./pkgs/graphite.nix {
|
(import ./pkgs/graphite.nix {
|
||||||
pkgs = pkgs // {
|
pkgs = pkgs // {
|
||||||
inherit graphene-raster-nodes-shaders;
|
inherit raster-nodes-shaders;
|
||||||
};
|
};
|
||||||
inherit
|
inherit
|
||||||
info
|
info
|
||||||
|
|
@ -126,7 +127,7 @@
|
||||||
dev = true;
|
dev = true;
|
||||||
};
|
};
|
||||||
#TODO: graphene-cli = import ./pkgs/graphene-cli.nix { inherit info pkgs inputs deps libs tools; };
|
#TODO: graphene-cli = import ./pkgs/graphene-cli.nix { inherit info pkgs inputs deps libs tools; };
|
||||||
graphene-raster-nodes-shaders = import ./pkgs/graphene-raster-nodes-shaders.nix {
|
raster-nodes-shaders = import ./pkgs/raster-nodes-shaders.nix {
|
||||||
inherit
|
inherit
|
||||||
info
|
info
|
||||||
pkgs
|
pkgs
|
||||||
|
|
|
||||||
|
|
@ -78,7 +78,7 @@ deps.crane.lib.buildPackage (
|
||||||
env =
|
env =
|
||||||
common.env
|
common.env
|
||||||
// {
|
// {
|
||||||
GRAPHENE_RASTER_NODES_SHADER_PATH = pkgs.graphene-raster-nodes-shaders;
|
RASTER_NODES_SHADER_PATH = pkgs.raster-nodes-shaders;
|
||||||
}
|
}
|
||||||
// (
|
// (
|
||||||
if embeddedResources then
|
if embeddedResources then
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
}:
|
}:
|
||||||
|
|
||||||
(deps.crane.lib.overrideToolchain (_: deps.rustGPU.toolchain)).buildPackage {
|
(deps.crane.lib.overrideToolchain (_: deps.rustGPU.toolchain)).buildPackage {
|
||||||
pname = "graphene-raster-nodes-shaders";
|
pname = "raster-nodes-shaders";
|
||||||
inherit (info) version src;
|
inherit (info) version src;
|
||||||
|
|
||||||
cargoVendorDir = deps.crane.lib.vendorMultipleCargoDeps {
|
cargoVendorDir = deps.crane.lib.vendorMultipleCargoDeps {
|
||||||
|
|
@ -25,11 +25,11 @@
|
||||||
env = deps.rustGPU.env;
|
env = deps.rustGPU.env;
|
||||||
|
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
cargo build -r -p graphene-raster-nodes-shaders
|
cargo build -r -p raster-nodes-shaders
|
||||||
'';
|
'';
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
cp target/spirv-builder/spirv-unknown-naga-wgsl/release/deps/graphene_raster_nodes_shaders_entrypoint.wgsl $out
|
cp target/spirv-builder/spirv-unknown-naga-wgsl/release/deps/raster_nodes_shaders_entrypoint.wgsl $out
|
||||||
'';
|
'';
|
||||||
|
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
|
@ -13,8 +13,8 @@ license = "Apache-2.0"
|
||||||
[features]
|
[features]
|
||||||
default = ["gpu", "shader-nodes"]
|
default = ["gpu", "shader-nodes"]
|
||||||
gpu = ["editor/gpu"]
|
gpu = ["editor/gpu"]
|
||||||
native = []
|
|
||||||
shader-nodes = ["graphene-std/shader-nodes", "gpu"]
|
shader-nodes = ["graphene-std/shader-nodes", "gpu"]
|
||||||
|
native = []
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
crate-type = ["cdylib", "rlib"]
|
crate-type = ["cdylib", "rlib"]
|
||||||
|
|
|
||||||
|
|
@ -1,60 +0,0 @@
|
||||||
{
|
|
||||||
inputs = {
|
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
||||||
flake-utils.url = "github:numtide/flake-utils";
|
|
||||||
rust-overlay = {
|
|
||||||
url = "github:oxalica/rust-overlay";
|
|
||||||
inputs = {
|
|
||||||
nixpkgs.follows = "nixpkgs";
|
|
||||||
flake-utils.follows = "flake-utils";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
outputs =
|
|
||||||
{
|
|
||||||
self,
|
|
||||||
nixpkgs,
|
|
||||||
flake-utils,
|
|
||||||
rust-overlay,
|
|
||||||
}:
|
|
||||||
flake-utils.lib.eachDefaultSystem (
|
|
||||||
system:
|
|
||||||
let
|
|
||||||
overlays = [ (import rust-overlay) ];
|
|
||||||
pkgs = import nixpkgs {
|
|
||||||
inherit system overlays;
|
|
||||||
};
|
|
||||||
toolchain = pkgs.rust-bin.stable.latest.default.override {
|
|
||||||
extensions = [
|
|
||||||
"rust-src"
|
|
||||||
"clippy"
|
|
||||||
"rust-analyzer"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
buildInputs = with pkgs; [
|
|
||||||
llvm
|
|
||||||
];
|
|
||||||
in
|
|
||||||
{
|
|
||||||
devShells.default = pkgs.mkShell {
|
|
||||||
stdenv = pkgs.clangStdenv;
|
|
||||||
packages = with pkgs; [
|
|
||||||
bacon
|
|
||||||
valgrind
|
|
||||||
kcachegrind
|
|
||||||
cargo-flamegraph
|
|
||||||
];
|
|
||||||
nativeBuildInputs = with pkgs; [
|
|
||||||
lld
|
|
||||||
toolchain
|
|
||||||
llvm
|
|
||||||
cargo
|
|
||||||
];
|
|
||||||
inherit buildInputs;
|
|
||||||
|
|
||||||
LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath buildInputs;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
@ -1,86 +0,0 @@
|
||||||
# This is a helper file for people using NixOS as their operating system.
|
|
||||||
# If you don't know what this file does, you can safely ignore it.
|
|
||||||
|
|
||||||
# If you are using Nix as your package manager, you can run 'nix-shell'
|
|
||||||
# in the root directory of the project and Nix will open a bash shell
|
|
||||||
# with all the packages needed to build and run Graphite installed.
|
|
||||||
# A shell.nix file is used in the Nix ecosystem to define a development
|
|
||||||
# environment with specific dependencies. When you enter a Nix shell using
|
|
||||||
# this file, it ensures that all the specified tools and libraries are
|
|
||||||
# available regardless of the host system's configuration. This provides
|
|
||||||
# a reproducible development environment across different machines and developers.
|
|
||||||
|
|
||||||
# You can enter the Nix shell and run Graphite like normal with:
|
|
||||||
# > npm start
|
|
||||||
# Or you can run it like this without needing to first enter the Nix shell:
|
|
||||||
# > nix-shell --command "npm start"
|
|
||||||
|
|
||||||
let
|
|
||||||
# Get oxalica's Rust overlay for better Rust integration
|
|
||||||
rust-overlay-source = builtins.fetchGit {
|
|
||||||
url = "https://github.com/oxalica/rust-overlay";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Import it so we can use it in Nix
|
|
||||||
rust-overlay = import rust-overlay-source;
|
|
||||||
|
|
||||||
# Import system packages overlaid with the Rust overlay
|
|
||||||
pkgs = import <nixpkgs> {
|
|
||||||
overlays = [ rust-overlay ];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Define the rustc we need
|
|
||||||
rustc-wasm = pkgs.rust-bin.stable.latest.default.override {
|
|
||||||
targets = [ "wasm32-unknown-unknown" ];
|
|
||||||
# wasm-pack needs this
|
|
||||||
extensions = [
|
|
||||||
"rust-src"
|
|
||||||
"rust-analyzer"
|
|
||||||
"clippy"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
in
|
|
||||||
# Make a shell with the dependencies we need
|
|
||||||
pkgs.mkShell {
|
|
||||||
packages = with pkgs; [
|
|
||||||
rustc-wasm
|
|
||||||
nodejs
|
|
||||||
cargo
|
|
||||||
cargo-watch
|
|
||||||
cargo-nextest
|
|
||||||
cargo-expand
|
|
||||||
wasm-pack
|
|
||||||
binaryen
|
|
||||||
wasm-bindgen-cli
|
|
||||||
vulkan-loader
|
|
||||||
libxkbcommon
|
|
||||||
llvm
|
|
||||||
gcc-unwrapped.lib
|
|
||||||
llvmPackages.libcxxStdenv
|
|
||||||
pkg-config
|
|
||||||
# used for profiling
|
|
||||||
gnuplot
|
|
||||||
samply
|
|
||||||
cargo-flamegraph
|
|
||||||
|
|
||||||
# For Rawkit tests
|
|
||||||
libraw
|
|
||||||
|
|
||||||
# Use Mold as a linker
|
|
||||||
mold
|
|
||||||
];
|
|
||||||
|
|
||||||
# Hacky way to run Cargo through Mold
|
|
||||||
LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [
|
|
||||||
pkgs.openssl
|
|
||||||
pkgs.vulkan-loader
|
|
||||||
pkgs.libxkbcommon
|
|
||||||
pkgs.llvmPackages.libcxxStdenv
|
|
||||||
pkgs.gcc-unwrapped.lib
|
|
||||||
pkgs.llvm
|
|
||||||
pkgs.libraw
|
|
||||||
];
|
|
||||||
shellHook = ''
|
|
||||||
alias cargo='mold --run cargo'
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
@ -7,7 +7,7 @@ authors = ["Graphite Authors <contact@graphite.rs>"]
|
||||||
license = "MIT OR Apache-2.0"
|
license = "MIT OR Apache-2.0"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["wasm", "wgpu", "shader-nodes"]
|
default = ["wasm", "wgpu"]
|
||||||
gpu = []
|
gpu = []
|
||||||
wgpu = ["gpu", "graph-craft/wgpu", "graphene-application-io/wgpu"]
|
wgpu = ["gpu", "graph-craft/wgpu", "graphene-application-io/wgpu"]
|
||||||
wasm = [
|
wasm = [
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,8 @@ pub fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
env_logger::builder().filter_level(log::LevelFilter::Debug).init();
|
env_logger::builder().filter_level(log::LevelFilter::Debug).init();
|
||||||
|
|
||||||
// Skip building the shader if they are provided externally
|
// Skip building the shader if they are provided externally
|
||||||
println!("cargo:rerun-if-env-changed=GRAPHENE_RASTER_NODES_SHADER_PATH");
|
println!("cargo:rerun-if-env-changed=RASTER_NODES_SHADER_PATH");
|
||||||
if !std::env::var("GRAPHENE_RASTER_NODES_SHADER_PATH").unwrap_or_default().is_empty() {
|
if !std::env::var("RASTER_NODES_SHADER_PATH").unwrap_or_default().is_empty() {
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -49,6 +49,6 @@ pub fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
// needs to be fixed upstream
|
// needs to be fixed upstream
|
||||||
let path_to_wgsl = path_to_spv.with_extension("wgsl");
|
let path_to_wgsl = path_to_spv.with_extension("wgsl");
|
||||||
|
|
||||||
println!("cargo::rustc-env=GRAPHENE_RASTER_NODES_SHADER_PATH={}", path_to_wgsl.display());
|
println!("cargo::rustc-env=RASTER_NODES_SHADER_PATH={}", path_to_wgsl.display());
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
pub const WGSL_SHADER: &str = include_str!(env!("GRAPHENE_RASTER_NODES_SHADER_PATH"));
|
pub const WGSL_SHADER: &str = include_str!(env!("RASTER_NODES_SHADER_PATH"));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue