@@ -198,6 +198,12 @@ erts_dir() ->
198
198
lists :concat ([code :root_dir (), " /erts-" , erlang :system_info (version )]).
199
199
200
200
default_env () ->
201
+ ErlInterfaceIncludeDir = erl_interface_dir (include ),
202
+ ErlInterfaceHeader = filename :join (ErlInterfaceIncludeDir , " erl_interface.h" ),
203
+ ErlInterfaceLibs = case filelib :is_file (ErlInterfaceHeader ) of
204
+ true -> [" erl_interface" , " ei" ];
205
+ false -> [" ei" ]
206
+ end ,
201
207
Arch = os :getenv (" REBAR_TARGET_ARCH" ),
202
208
Vsn = os :getenv (" REBAR_TARGET_ARCH_VSN" ),
203
209
[
@@ -236,12 +242,13 @@ default_env() ->
236
242
237
243
{" ERL_CFLAGS" , lists :concat (
238
244
[
239
- " -I\" " , erl_interface_dir ( include ) ,
245
+ " -I\" " , ErlInterfaceIncludeDir ,
240
246
" \" -I\" " , filename :join (erts_dir (), " include" ),
241
247
" \" "
242
248
])},
243
249
{" ERL_EI_LIBDIR" , lists :concat ([" \" " , erl_interface_dir (lib ), " \" " ])},
244
- {" ERL_LDFLAGS" , " -L$ERL_EI_LIBDIR -lerl_interface -lei" },
250
+ {" ERL_LDFLAGS" , lists :concat ([" -L$ERL_EI_LIBDIR" ] ++
251
+ [" -l" ++ EiLib || EiLib <- ErlInterfaceLibs ])},
245
252
{" ERLANG_ARCH" , rebar_api :wordsize ()},
246
253
{" ERLANG_TARGET" , rebar_api :get_arch ()},
247
254
@@ -293,7 +300,8 @@ default_env() ->
293
300
" $LINKER $PORT_IN_FILES $LDFLAGS $EXE_LDFLAGS /OUT:$PORT_OUT_FILE" },
294
301
% % ERL_CFLAGS are ok as -I even though strictly it should be /I
295
302
{" win32" , " ERL_LDFLAGS" ,
296
- " /LIBPATH:$ERL_EI_LIBDIR erl_interface.lib ei.lib" },
303
+ lists :concat ([" /LIBPATH:$ERL_EI_LIBDIR " ] ++
304
+ [EiLib ++ " .lib " || EiLib <- ErlInterfaceLibs ])},
297
305
{" win32" , " DRV_CFLAGS" , " /Zi /Wall $ERL_CFLAGS" },
298
306
{" win32" , " DRV_LDFLAGS" , " /DLL $ERL_LDFLAGS" }
299
307
].
0 commit comments