浏览代码

Remove the little bit crazy cps crate

Lucien Greathouse 6 月之前
父节点
当前提交
1284a92fb1
共有 8 个文件被更改,包括 35 次插入65 次删除
  1. 1 34
      Cargo.lock
  2. 0 1
      generate/Cargo.toml
  3. 19 0
      generate/build.rs
  4. 1 0
      generate/src/builtin_types.rs
  5. 1 0
      generate/src/enums.rs
  6. 0 27
      generate/src/macros.rs
  7. 12 3
      generate/src/main.rs
  8. 1 0
      generate/src/mirrored_structs.rs

+ 1 - 34
Cargo.lock

@@ -104,7 +104,7 @@ dependencies = [
  "heck",
  "proc-macro2",
  "quote",
- "syn 2.0.100",
+ "syn",
 ]
 
 [[package]]
@@ -119,18 +119,6 @@ version = "1.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990"
 
-[[package]]
-name = "cps"
-version = "0.2.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "570e736c5c84982a931d819c7be0ad000f3aad769eb4e78b234dc9fa64b10415"
-dependencies = [
- "litrs",
- "proc-macro2",
- "quote",
- "syn 1.0.109",
-]
-
 [[package]]
 name = "fs-err"
 version = "2.11.0"
@@ -146,7 +134,6 @@ version = "0.1.0"
 dependencies = [
  "anyhow",
  "clap",
- "cps",
  "fs-err",
  "heck",
  "regex",
@@ -165,15 +152,6 @@ version = "1.70.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
 
-[[package]]
-name = "litrs"
-version = "0.2.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f9275e0933cf8bb20f008924c0cb07a0692fe54d8064996520bf998de9eb79aa"
-dependencies = [
- "proc-macro2",
-]
-
 [[package]]
 name = "memchr"
 version = "2.7.4"
@@ -248,17 +226,6 @@ version = "0.11.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
 
-[[package]]
-name = "syn"
-version = "1.0.109"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
-dependencies = [
- "proc-macro2",
- "quote",
- "unicode-ident",
-]
-
 [[package]]
 name = "syn"
 version = "2.0.100"

+ 0 - 1
generate/Cargo.toml

@@ -8,7 +8,6 @@ edition = "2021"
 [dependencies]
 anyhow = "1.0.82"
 clap = { version = "4.5.4", features = ["derive"] }
-cps = "0.2.3"
 fs-err = "2.11.0"
 heck = "0.5.0"
 regex = "1.10.4"

+ 19 - 0
generate/build.rs

@@ -1,9 +1,28 @@
+use std::env::var;
 use std::path::PathBuf;
 
 fn main() {
+    let out_dir = PathBuf::from(var("OUT_DIR").unwrap());
+
     let mut input_dir = PathBuf::from(env!("CARGO_WORKSPACE_DIR"));
     input_dir.push("input");
 
+    let builtin = fs_err::read_to_string(input_dir.join("BuiltinTypes.inc")).unwrap();
+    let builtin_out =
+        "macro_rules! all_builtin_types { () => { builtin_types!(".to_owned() + &builtin + ") }}";
+    fs_err::write(out_dir.join("builtin.rs"), builtin_out).unwrap();
+
+    let enums = fs_err::read_to_string(input_dir.join("Enums.h")).unwrap();
+    let enums_out =
+        "macro_rules! all_enums { () => { mirrored_enums!(".to_owned() + &enums + ") }}";
+    fs_err::write(out_dir.join("enums.rs"), enums_out).unwrap();
+
+    let structs = fs_err::read_to_string(input_dir.join("MirroredStructs.h")).unwrap();
+    let structs_out = "macro_rules! all_mirrored_structs { () => { mirrored_structs!(".to_owned()
+        + &structs
+        + ") }}";
+    fs_err::write(out_dir.join("mirrored_structs.rs"), structs_out).unwrap();
+
     for entry in fs_err::read_dir(input_dir).unwrap() {
         let entry = entry.unwrap();
         println!("cargo:rerun-if-changed={}", entry.path().display());

+ 1 - 0
generate/src/builtin_types.rs

@@ -0,0 +1 @@
+include!(concat!(env!("OUT_DIR"), "/builtin.rs"));

+ 1 - 0
generate/src/enums.rs

@@ -0,0 +1 @@
+include!(concat!(env!("OUT_DIR"), "/enums.rs"));

+ 0 - 27
generate/src/macros.rs

@@ -6,15 +6,6 @@ macro_rules! builtin_types {
     }
 }
 
-#[cps::cps]
-macro_rules! include_builtin_types {
-    () =>
-    let $($body:tt)* = cps::include!("input/BuiltinTypes.inc") in
-    {
-        builtin_types!($($body)*)
-    }
-}
-
 macro_rules! mirrored_structs {
     (
         $(struct $struct_name:ident {
@@ -55,15 +46,6 @@ macro_rules! mirrored_struct_field {
     };
 }
 
-#[cps::cps]
-macro_rules! include_mirrored_structs {
-    () =>
-    let $($body:tt)* = cps::include!("input/MirroredStructs.h") in
-    {
-        mirrored_structs!($($body)*)
-    }
-}
-
 macro_rules! mirrored_enums {
     (
         $(enum $enum_name:ident : $repr:ident {
@@ -107,12 +89,3 @@ macro_rules! enum_value {
         val
     }};
 }
-
-#[cps::cps]
-macro_rules! include_mirrored_enums {
-    () =>
-    let $($body:tt)* = cps::include!("input/Enums.h") in
-    {
-        mirrored_enums!($($body)*)
-    }
-}

+ 12 - 3
generate/src/main.rs

@@ -3,15 +3,24 @@ mod emit;
 #[macro_use]
 mod macros;
 
+#[macro_use]
+mod builtin_types;
+
+#[macro_use]
+mod enums;
+
+#[macro_use]
+mod mirrored_structs;
+
 use std::fmt::Write;
 use std::sync::OnceLock;
 
 use self::emit::{EnumMember, MirrorEnum, MirrorStruct, StructField};
 
-pub static BUILTIN_TYPES: &[&str] = &include_builtin_types!();
+pub static BUILTIN_TYPES: &[&str] = &all_builtin_types!();
 
 pub fn structs() -> &'static [MirrorStruct] {
-    static STRUCTS: &[MirrorStruct] = &include_mirrored_structs!();
+    static STRUCTS: &[MirrorStruct] = &all_mirrored_structs!();
 
     STRUCTS
 }
@@ -19,7 +28,7 @@ pub fn structs() -> &'static [MirrorStruct] {
 pub fn enums() -> &'static [MirrorEnum] {
     static ENUMS: OnceLock<Vec<MirrorEnum>> = OnceLock::new();
 
-    ENUMS.get_or_init(|| include_mirrored_enums!())
+    ENUMS.get_or_init(|| all_enums!())
 }
 
 fn main() {

+ 1 - 0
generate/src/mirrored_structs.rs

@@ -0,0 +1 @@
+include!(concat!(env!("OUT_DIR"), "/mirrored_structs.rs"));