File tree Expand file tree Collapse file tree 2 files changed +38
-6
lines changed Expand file tree Collapse file tree 2 files changed +38
-6
lines changed Original file line number Diff line number Diff line change @@ -13,7 +13,6 @@ rust-version = "1.70"
13
13
big_integer = [" dep:num-bigint" ]
14
14
default = [" nif_version_2_15" ]
15
15
derive = []
16
- alternative_nif_init_name = []
17
16
allocator = []
18
17
nif_version_2_14 = []
19
18
nif_version_2_15 = [" nif_version_2_14" ]
Original file line number Diff line number Diff line change @@ -136,25 +136,58 @@ impl From<InitMacroInput> for proc_macro2::TokenStream {
136
136
}
137
137
} ;
138
138
139
+ let nif_init_name = {
140
+ let lib_name = std:: env:: var ( "CARGO_CRATE_NAME" ) . unwrap ( ) ;
141
+ format ! ( "{lib_name}_nif_init" )
142
+ } ;
143
+
144
+ let nif_init_name = Ident :: new ( & nif_init_name, Span :: call_site ( ) ) ;
145
+
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
+
139
167
quote ! {
140
168
#maybe_warning
141
169
142
- #[ cfg( unix ) ]
170
+ #[ cfg( not ( windows ) ) ]
143
171
#[ no_mangle]
144
- extern "C" fn nif_init( ) -> * const rustler:: codegen_runtime:: DEF_NIF_ENTRY {
145
- unsafe { rustler:: codegen_runtime:: internal_write_symbols( ) } ;
172
+ extern "C" fn #nif_init_name( ) -> * const :: rustler:: codegen_runtime:: DEF_NIF_ENTRY {
173
+ unsafe {
174
+ :: rustler:: codegen_runtime:: internal_write_symbols( )
175
+ }
176
+
146
177
#inner
147
178
}
148
179
149
180
#[ cfg( windows) ]
150
181
#[ no_mangle]
151
- extern "C" fn nif_init ( callbacks: * mut rustler:: codegen_runtime:: DynNifCallbacks ) -> * const rustler:: codegen_runtime:: DEF_NIF_ENTRY {
182
+ extern "C" fn #nif_init_name ( callbacks: * mut :: rustler:: codegen_runtime:: DynNifCallbacks ) -> * const :: rustler:: codegen_runtime:: DEF_NIF_ENTRY {
152
183
unsafe {
153
- rustler:: codegen_runtime:: internal_set_symbols( * callbacks) ;
184
+ :: rustler:: codegen_runtime:: internal_set_symbols( * callbacks) ;
154
185
}
155
186
156
187
#inner
157
188
}
189
+
190
+ #maybe_primary_nif_init
158
191
}
159
192
}
160
193
}
You can’t perform that action at this time.
0 commit comments