@@ -90,18 +90,21 @@ pub enum Kernel {
9090 Cuda {
9191 cuda_capabilities : Option < Vec < String > > ,
9292 cuda_flags : Option < Vec < String > > ,
93+ cxx_flags : Option < Vec < String > > ,
9394 depends : Vec < Dependencies > ,
9495 include : Option < Vec < String > > ,
9596 src : Vec < String > ,
9697 } ,
9798 #[ serde( rename_all = "kebab-case" ) ]
9899 Metal {
100+ cxx_flags : Option < Vec < String > > ,
99101 depends : Vec < Dependencies > ,
100102 include : Option < Vec < String > > ,
101103 src : Vec < String > ,
102104 } ,
103105 #[ serde( rename_all = "kebab-case" ) ]
104106 Rocm {
107+ cxx_flags : Option < Vec < String > > ,
105108 depends : Vec < Dependencies > ,
106109 rocm_archs : Option < Vec < String > > ,
107110 include : Option < Vec < String > > ,
@@ -110,11 +113,19 @@ pub enum Kernel {
110113}
111114
112115impl Kernel {
116+ pub fn cxx_flags ( & self ) -> Option < & [ String ] > {
117+ match self {
118+ Kernel :: Cuda { cxx_flags, .. }
119+ | Kernel :: Metal { cxx_flags, .. }
120+ | Kernel :: Rocm { cxx_flags, .. } => cxx_flags. as_deref ( ) ,
121+ }
122+ }
123+
113124 pub fn include ( & self ) -> Option < & [ String ] > {
114125 match self {
115- Kernel :: Cuda { include, .. } => include . as_deref ( ) ,
116- Kernel :: Metal { include, .. } => include . as_deref ( ) ,
117- Kernel :: Rocm { include, .. } => include. as_deref ( ) ,
126+ Kernel :: Cuda { include, .. }
127+ | Kernel :: Metal { include, .. }
128+ | Kernel :: Rocm { include, .. } => include. as_deref ( ) ,
118129 }
119130 }
120131
@@ -128,17 +139,15 @@ impl Kernel {
128139
129140 pub fn depends ( & self ) -> & [ Dependencies ] {
130141 match self {
131- Kernel :: Cuda { depends, .. } => depends ,
132- Kernel :: Metal { depends, .. } => depends ,
133- Kernel :: Rocm { depends, .. } => depends,
142+ Kernel :: Cuda { depends, .. }
143+ | Kernel :: Metal { depends, .. }
144+ | Kernel :: Rocm { depends, .. } => depends,
134145 }
135146 }
136147
137148 pub fn src ( & self ) -> & [ String ] {
138149 match self {
139- Kernel :: Cuda { src, .. } => src,
140- Kernel :: Metal { src, .. } => src,
141- Kernel :: Rocm { src, .. } => src,
150+ Kernel :: Cuda { src, .. } | Kernel :: Metal { src, .. } | Kernel :: Rocm { src, .. } => src,
142151 }
143152 }
144153}
@@ -233,6 +242,7 @@ fn convert_kernels(v1_kernels: HashMap<String, v1::Kernel>) -> Result<HashMap<St
233242 kernels. insert (
234243 format ! ( "{name}_rocm" ) ,
235244 Kernel :: Rocm {
245+ cxx_flags : None ,
236246 rocm_archs : kernel. rocm_archs ,
237247 depends : kernel. depends . clone ( ) ,
238248 include : kernel. include . clone ( ) ,
@@ -246,6 +256,7 @@ fn convert_kernels(v1_kernels: HashMap<String, v1::Kernel>) -> Result<HashMap<St
246256 Kernel :: Cuda {
247257 cuda_capabilities : kernel. cuda_capabilities ,
248258 cuda_flags : None ,
259+ cxx_flags : None ,
249260 depends : kernel. depends ,
250261 include : kernel. include ,
251262 src : kernel. src ,
0 commit comments