File tree Expand file tree Collapse file tree 3 files changed +24
-7
lines changed Expand file tree Collapse file tree 3 files changed +24
-7
lines changed Original file line number Diff line number Diff line change @@ -19,7 +19,6 @@ nif_version_2_15 = ["nif_version_2_14"]
1919nif_version_2_16  = [" nif_version_2_15" 
2020nif_version_2_17  = [" nif_version_2_16" 
2121serde  = [" dep:serde" 
22- staticlib  = [" rustler_codegen/staticlib" 
2322
2423[dependencies ]
2524inventory  = " 0.3" 
Original file line number Diff line number Diff line change @@ -12,9 +12,6 @@ edition = "2021"
1212name  = " rustler_codegen" 
1313proc-macro  = true 
1414
15- [features ]
16- staticlib  = []
17- 
1815[dependencies ]
1916syn  = { version  = " 2.0" features  = [" full" " extra-traits" 
2017quote  = " 1.0" 
Original file line number Diff line number Diff line change @@ -136,15 +136,34 @@ impl From<InitMacroInput> for proc_macro2::TokenStream {
136136            } 
137137        } ; 
138138
139-         let  nif_init_name = if   cfg ! ( feature =  "staticlib" )   { 
139+         let  nif_init_name = { 
140140            let  lib_name = std:: env:: var ( "CARGO_CRATE_NAME" ) . unwrap ( ) ; 
141141            format ! ( "{lib_name}_nif_init" ) 
142-         }  else  { 
143-             "nif_init" . to_string ( ) 
144142        } ; 
145143
146144        let  nif_init_name = Ident :: new ( & nif_init_name,  Span :: call_site ( ) ) ; 
147145
146+         let  should_generate_primary_nif = std:: env:: var ( "RUSTLER_PRIMARY_NIF_INIT" ) . is_ok ( ) 
147+             || std:: env:: var ( "CARGO_PRIMARY_PACKAGE" ) . is_ok ( ) ; 
148+ 
149+         let  maybe_primary_nif_init = if  should_generate_primary_nif { 
150+             quote !  { 
151+                 #[ cfg( not( windows) ) ] 
152+                 #[ no_mangle] 
153+                 fn  nif_init( )  -> * const  :: rustler:: codegen_runtime:: DEF_NIF_ENTRY  { 
154+                     #nif_init_name( ) 
155+                 } 
156+ 
157+                 #[ cfg( windows) ] 
158+                 #[ no_mangle] 
159+                 fn  nif_init( callbacks:  * mut  :: rustler:: codegen_runtime:: DynNifCallbacks )  -> * const  :: rustler:: codegen_runtime:: DEF_NIF_ENTRY  { 
160+                     #nif_init_name( callbacks) 
161+                 } 
162+             } 
163+         }  else  { 
164+             quote ! ( ) 
165+         } ; 
166+ 
148167        quote !  { 
149168            #maybe_warning
150169
@@ -167,6 +186,8 @@ impl From<InitMacroInput> for proc_macro2::TokenStream {
167186
168187                #inner
169188            } 
189+ 
190+             #maybe_primary_nif_init
170191        } 
171192    } 
172193} 
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments