Skip to content

RV Build Shared #19

Open
Open
@m-kurtenacker

Description

@m-kurtenacker

if -DBUILD_SHARED_LIBS=ON is not set explicitly; and LLVM was build with LINK_DYLIB, Thorin will be build as a shared library, while RV is being build as a static archive. This fails when libthorin is being linked:

[139/144] Linking CXX shared library lib/libthorin.so
FAILED: lib/libthorin.so 
: && /usr/bin/c++ -fPIC -g   -shared -Wl,-soname,libthorin.so -o lib/libthorin.so thorin/src/thorin/CMakeFiles/thorin.dir/continuation.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/debug.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/def.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/enums.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/primop.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/rec_stream.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/type.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/world.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/analyses/cfg.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/analyses/domtree.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/analyses/free_defs.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/analyses/looptree.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/analyses/schedule.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/analyses/scope.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/analyses/verify.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/be/codegen.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/be/c/c.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/transform/cleanup_world.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/transform/closure_conversion.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/transform/codegen_prepare.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/transform/dead_load_opt.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/transform/hls_channels.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/transform/hls_kernel_launch.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/transform/hoist_enters.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/transform/flatten_tuples.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/transform/importer.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/transform/inliner.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/transform/lift_builtins.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/transform/mangle.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/transform/partial_evaluation.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/transform/rewrite.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/transform/plugin_execute.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/transform/resolve_loads.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/transform/split_slots.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/util/hash.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/util/stream.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/util/symbol.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/util/graphviz_dump.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/util/scoped_dump.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/be/llvm/cpu.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/be/llvm/llvm.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/be/llvm/amdgpu.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/be/llvm/amdgpu_hsa.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/be/llvm/amdgpu_pal.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/be/llvm/nvvm.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/be/llvm/parallel.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/be/llvm/runtime.cpp.o thorin/src/thorin/CMakeFiles/thorin.dir/be/llvm/vectorize.cpp.o  -Wl,-rpath,/home/matthias/Documents/DFKI/llvm-local/install/lib  _deps/rv-build/src/libRV.a  /home/matthias/Documents/DFKI/llvm-local/install/lib/libLLVM-16.so  -ldl  /home/matthias/Documents/DFKI/llvm-local/install/lib/libLLVM-16.so && :
/usr/bin/ld: _deps/rv-build/src/libRV.a(NatBuilder.cpp.o): warning: relocation against `_ZN2rv17numConstLoadMasksE' in read-only section `.text'
/usr/bin/ld: _deps/rv-build/src/libRV.a(PlatformInfo.cpp.o): relocation R_X86_64_PC32 against symbol `_ZTVN2rv15ResolverServiceE' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: bad value

Thorin sets BUILD_SHARED_LIBS to on if nothing is specified explicitly, but the Target for libRV is added before that. We should probably set options like that in the meta repository instead of relying on the individual projects to do it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions