rofinn / Interfaces.jl

An implementation of interfaces for Julia
MIT License
7 stars 3 forks source link

Unable to compile on windows using GCC / MinGW #6

Open jonbarkerlondon opened 8 years ago

jonbarkerlondon commented 8 years ago

I get the following warnings when compiling the .O: (I turned off all warnings as errors in order to continue)

C:\Users\jbarker.julia\v0.5\Interfaces\deps\src\mutable_union.c:1:0: warning: - fPIC ignored for target (all code is position independent)

include "mutable_union.h"

^ C:\Users\jbarker.julia\v0.5\Interfaces\deps\src\mutable_union.c: In function 'jl_type_mutable_union_append': C:\Users\jbarker.julia\v0.5\Interfaces\deps\src\mutable_union.c:49:9: warning: implicit declaration of function 'jl_svec_append' [-Wimplicit-function-declaration] jl_svec_t new_types = jl_svec_append(_union->types, jl_svec_fill(1, t) ); ^ C:\Users\jbarker.julia\v0.5\Interfaces\deps\src\mutable_union.c:49:32: warning: initialization makes pointer from integer without a cast jl_svec_t new_types = jl_svec_append(_union->types, jl_svec_fill(1, t) ); ^

I get the following errors when compiling the .SO:

C:\Users\jbarker.julia\v0.5\Interfaces\deps\usr\lib\mutable_union.o:mutable_uni on.c:(.text+0x49): undefined reference to _imp__jl_gc_queue_root' C:\Users\jbarker\.julia\v0.5\Interfaces\deps\usr\lib\mutable_union.o:mutable_uni on.c:(.text+0x63): undefined reference to_impjl_simplevector_type' C:\Users\jbarker.julia\v0.5\Interfaces\deps\usr\lib\mutable_union.o:mutable_uni on.c:(.text+0xf0): undefined reference to _imp__jl_type_union' C:\Users\jbarker\.julia\v0.5\Interfaces\deps\usr\lib\mutable_union.o:mutable_uni on.c:(.text+0x107): undefined reference to_impjl_uniontype_type' C:\Users\jbarker.julia\v0.5\Interfaces\deps\usr\lib\mutable_union.o:mutable_uni on.c:(.text+0x112): undefined reference to _imp__jl_bottom_type' C:\Users\jbarker\.julia\v0.5\Interfaces\deps\usr\lib\mutable_union.o:mutable_uni on.c:(.text+0x129): undefined reference to_impjl_alloc_svec_uninit' C:\Users\jbarker.julia\v0.5\Interfaces\deps\usr\lib\mutable_union.o:mutable_uni on.c:(.text+0x133): undefined reference to `_impjl_int64_type' C:\Users\jbarker.julia\v0.5\Interfaces\deps\usr\lib\mutable_union.o:mutable_uni on.c:(.text+0x151): undefined reference to_imp__jl_float64_type' C:\Users\jbarker.julia\v0.5\Interfaces\deps\usr\lib\mutable_union.o:mutable_uni on.c:(.text+0x175): undefined reference to_impjl_type_union' C:\Users\jbarker.julia\v0.5\Interfaces\deps\usr\lib\mutable_union.o:mutable_uni on.c:(.text+0x18c): undefined reference to_imp__jl_uniontype_type' C:\Users\jbarker.julia\v0.5\Interfaces\deps\usr\lib\mutable_union.o:mutable_uni on.c:(.text+0x1a5): undefined reference to_impjl_svec_fill' C:\Users\jbarker.julia\v0.5\Interfaces\deps\usr\lib\mutable_union.o:mutable_uni on.c:(.text+0x1b8): undefined reference to_imp__jl_alloc_svec_uninit' C:\Users\jbarker.julia\v0.5\Interfaces\deps\usr\lib\mutable_union.o:mutable_uni on.c:(.text+0x1ed): undefined reference to_impjl_emptysvec' C:\Users\jbarker.julia\v0.5\Interfaces\deps\usr\lib\mutable_union.o:mutable_uni on.c:(.text+0x211): undefined reference to`_impjl_uniontype_type' C:\Users\jbarker.julia\v0.5\Interfaces\deps\usr\lib\mutable_union.o:mutable_uni on.c:(.text+0x21c): undefined reference to _imp__jl_bottom_type' C:\Users\jbarker\.julia\v0.5\Interfaces\deps\usr\lib\mutable_union.o:mutable_uni on.c:(.text+0x23c): undefined reference to_imp__jl_svec_fill' C:\Users\jbarker.julia\v0.5\Interfaces\deps\usr\lib\mutable_union.o:mutable_uni on.c:(.text+0x251): undefined reference to `jl_svec_append' collect2.exe: error: ld returned 1 exit status

With the second GCC, it is finding the libjulia.a file correctly in the path supplied to the executable, but complaining that the exports are not available.

rofinn commented 8 years ago

@jonbarkerlondon Interfaces.jl only works on the julia 0.4 prereleases as a prototype. Unfortunately, as of (0.4.1?) a change to how unions work in base has broken the mutable union approach we use. If you're interested in the approach Interfaces.jl took you may be interested in protocols which was proposed here Not sure if it'll make it into 0.5, but maybe 0.6?

jonbarkerlondon commented 8 years ago

Thanks for the response.