weld icon indicating copy to clipboard operation
weld copied to clipboard

Windows support

Open spease opened this issue 6 years ago • 5 comments

Found this library after someone at work mentioned they're a huge fan of Pandas. How difficult is Windows support likely to be?

spease avatar Feb 27 '18 05:02 spease

Windows support seems to be far away.

Have tried making it work and still failed. Logging here my attempts perhaps someone can pick it up:

  • install Visual Studio 2015 with C++ support for LLVM
  • build LLVM for llvm-config since it doesn't come by default in Windows binaries; this is needed by llvm-sys
  • download LLVM binaries for clang++.exe
  • install MinGW for make, ld, ar
  • using stable-x86_64-pc-windows-msvc in rustup
  • manually 'install' pthread with this guide
  • avoid double-defined timespec with #define HAVE_STRUCT_TIMESPEC before any #include <pthread.h> in /weld_rt/cpp
  • Makefile broken for Windows:
    • run with previously downloaded clang++
    • no -fPIC since it's not recognized
    • use -std=c++14 for the auto issues
  • path in build.rs seems broken for windows(?): D:\windows\like\path/weld_rt/cpp
  • cargo build needs (?) to be run through VS2015 x64 Native Tools

Current error when running with verbose:

Running `rustc --crate-name weld weld/lib.rs --crate-type cdylib --crate-type rlib --emit=dep-info,link -C opt-level=3 -C metadata=27e93382c9b8ee43 --out-dir D:\Workspace\weld\target\release\deps -L dependency=D:\Workspace\weld\target\release\deps --extern chrono=D:\Workspace\weld\target\release\deps\libchrono-a2baa92d0707e2bf.rlib --extern clap=D:\Workspace\weld\target\release\deps\libclap-1e52388b3f51d844.rlib --extern code_builder=D:\Workspace\weld\target\release\deps\libcode_builder-821196dd26a38c97.rlib --extern csv=D:\Workspace\weld\target\release\deps\libcsv-443f41e5f09809da.rlib --extern env_logger=D:\Workspace\weld\target\release\deps\libenv_logger-de75febf290fa1ae.rlib --extern fnv=D:\Workspace\weld\target\release\deps\libfnv-2a0af43baec9d0e7.rlib --extern lazy_static=D:\Workspace\weld\target\release\deps\liblazy_static-7c013a2d69184289.rlib --extern libc=D:\Workspace\weld\target\release\deps\liblibc-9129d6d4a27529a3.rlib --extern llvm_sys=D:\Workspace\weld\target\release\deps\libllvm_sys-6ac4b3f90d242631.rlib --extern log=D:\Workspace\weld\target\release\deps\liblog-8a4ec87aa0d54517.rlib --extern regex=D:\Workspace\weld\target\release\deps\libregex-7768ba1a9f896fb5.rlib --extern rustyline=D:\Workspace\weld\target\release\deps\librustyline-1d6010ea027c55a4.rlib --extern time=D:\Workspace\weld\target\release\deps\libtime-5897f05f751787c5.rlib -L native=D:\Workspace\weld/weld_rt/cpp -l dylib=stdc++ -l static=weldrt -L native=D:\Tools\LLVM-built\lib -L native=D:\Workspace\weld\target\release\build\llvm-sys-649a3ee014c1b33a\out`
error: linking with `C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\link.exe` failed: exit code: 1181
|

= note: "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\amd64\\link.exe" "/NOLOGO" "/NXCOMPAT" "/LIBPATH:C:\\Users\\Dimebag\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "D:\\Workspace\\weld\\target\\release\\deps\\weld.weld0-83ccacaa57f1671ef52a4580a67f9d2e.rs.rcgu.o" "D:\\Workspace\\weld\\target\\release\\deps\\weld.weld1-83ccacaa57f1671ef52a4580a67f9d2e.rs.rcgu.o" "D:\\Workspace\\weld\\target\\release\\deps\\weld.weld10-83ccacaa57f1671ef52a4580a67f9d2e.rs.rcgu.o" "D:\\Workspace\\weld\\target\\release\\deps\\weld.weld11-83ccacaa57f1671ef52a4580a67f9d2e.rs.rcgu.o" "D:\\Workspace\\weld\\target\\release\\deps\\weld.weld12-83ccacaa57f1671ef52a4580a67f9d2e.rs.rcgu.o" "D:\\Workspace\\weld\\target\\release\\deps\\weld.weld13-83ccacaa57f1671ef52a4580a67f9d2e.rs.rcgu.o" "D:\\Workspace\\weld\\target\\release\\deps\\weld.weld14-83ccacaa57f1671ef52a4580a67f9d2e.rs.rcgu.o" "D:\\Workspace\\weld\\target\\release\\deps\\weld.weld15-83ccacaa57f1671ef52a4580a67f9d2e.rs.rcgu.o" "D:\\Workspace\\weld\\target\\release\\deps\\weld.weld2-83ccacaa57f1671ef52a4580a67f9d2e.rs.rcgu.o" "D:\\Workspace\\weld\\target\\release\\deps\\weld.weld3-83ccacaa57f1671ef52a4580a67f9d2e.rs.rcgu.o" "D:\\Workspace\\weld\\target\\release\\deps\\weld.weld4-83ccacaa57f1671ef52a4580a67f9d2e.rs.rcgu.o" "D:\\Workspace\\weld\\target\\release\\deps\\weld.weld5-83ccacaa57f1671ef52a4580a67f9d2e.rs.rcgu.o" "D:\\Workspace\\weld\\target\\release\\deps\\weld.weld6-83ccacaa57f1671ef52a4580a67f9d2e.rs.rcgu.o" "D:\\Workspace\\weld\\target\\release\\deps\\weld.weld7-83ccacaa57f1671ef52a4580a67f9d2e.rs.rcgu.o" "D:\\Workspace\\weld\\target\\release\\deps\\weld.weld8-83ccacaa57f1671ef52a4580a67f9d2e.rs.rcgu.o" "D:\\Workspace\\weld\\target\\release\\deps\\weld.weld9-83ccacaa57f1671ef52a4580a67f9d2e.rs.rcgu.o" "/OUT:D:\\Workspace\\weld\\target\\release\\deps\\weld.dll" "/DEF:C:\\Users\\Dimebag\\AppData\\Local\\Temp\\rustc.MAToAolukTs0\\lib.def" "D:\\Workspace\\weld\\target\\release\\deps\\weld.crate.allocator.rcgu.o" "/OPT:REF,ICF" "/DEBUG" "/NATVIS:C:\\Users\\Dimebag\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\intrinsic.natvis" "/NATVIS:C:\\Users\\Dimebag\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\liballoc.natvis" "/NATVIS:C:\\Users\\Dimebag\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\libcore.natvis" "/LIBPATH:D:\\Workspace\\weld\\target\\release\\deps" "/LIBPATH:D:\\Workspace\\weld/weld_rt/cpp" "/LIBPATH:D:\\Tools\\LLVM-built\\lib" "/LIBPATH:D:\\Workspace\\weld\\target\\release\\build\\llvm-sys-649a3ee014c1b33a\\out" "/LIBPATH:C:\\Users\\Dimebag\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "weldrt.lib" "stdc++.lib" "D:\\Workspace\\weld\\target\\release\\deps\\libllvm_sys-6ac4b3f90d242631.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\libcode_builder-821196dd26a38c97.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\libfnv-2a0af43baec9d0e7.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\libchrono-a2baa92d0707e2bf.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\libnum_integer-9ac6670ef3e52ee2.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\libnum_traits-44b65ab179b9185f.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\libtime-5897f05f751787c5.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\libwinapi-a1379860788f5839.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\libenv_logger-de75febf290fa1ae.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\libregex-7dd06a51f75e4a51.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\libutf8_ranges-de5c7c09befdb3f8.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\libregex_syntax-c2a7a0ecf882d0c0.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\libucd_util-d3be9cfa2a3c4740.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\libthread_local-b1d37edc6e6e512c.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\liblazy_static-a3d75c41ee644319.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\libunreachable-255bb46d4067fa1d.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\libvoid-a43357dd853afc9a.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\libaho_corasick-ff59e6b1674197ef.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\libmemchr-1dc99cb78e7cac0f.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\libregex-7768ba1a9f896fb5.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\libutf8_ranges-023a22b053927b20.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\libregex_syntax-fb621d183de6d3b7.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\libthread_local-b74ae56006af2673.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\libthread_id-533be5d1d26236d8.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\libkernel32-f6d9b211cc77f1ad.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\libwinapi-762da079ca58f8b8.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\libaho_corasick-1628e44406412720.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\libmemchr-a6bfee3af76e163c.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\liblibc-9129d6d4a27529a3.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\liblog-8a4ec87aa0d54517.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\liblog-bc93f8442b2d974b.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\libcfg_if-ed64651c5ddf2ba7.rlib" "D:\\Workspace\\weld\\target\\release\\deps\\liblazy_static-7c013a2d69184289.rlib" "C:\\Users\\Dimebag\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libstd-a2acd5f5dca269de.rlib" "C:\\Users\\Dimebag\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libpanic_unwind-af367b4bf1f63fec.rlib" "C:\\Users\\Dimebag\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libunwind-a1c17caf251336a7.rlib" "C:\\Users\\Dimebag\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liblibc-88975955845d914b.rlib" "C:\\Users\\Dimebag\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liballoc_system-3bfe42d2b50eccc6.rlib" "C:\\Users\\Dimebag\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liballoc-7c8c2618a28cd3f2.rlib" "C:\\Users\\Dimebag\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcore-bb4237926b8207c3.rlib" "C:\\Users\\Dimebag\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcompiler_builtins-19c7c2c4d55ff072.rlib" "advapi32.lib" "gdi32.lib" "kernel32.lib" "msimg32.lib" "opengl32.lib" "setupapi.lib" "user32.lib" "winspool.lib" "kernel32.lib" "advapi32.lib" "ws2_32.lib" "userenv.lib" "shell32.lib" "msvcrt.lib" "/DLL" "/IMPLIB:D:\\Workspace\\weld\\target\\release\\deps\\weld.dll.lib"

= note: LINK : fatal error LNK1181: cannot open input file 'weldrt.lib'

error: aborting due to previous error

error: Could not compile `weld`.

Caused by:
process didn't exit successfully: `rustc --crate-name weld weld/lib.rs --crate-type cdylib --crate-type rlib --emit=dep-info,link -C opt-level=3 -C metadata=27e93382c9b8ee43 --out-dir D:\Workspace\weld\target\release\deps -L dependency=D:\Workspace\weld\target\release\deps --extern chrono=D:\Workspace\weld\target\release\deps\libchrono-a2baa92d0707e2bf.rlib --extern clap=D:\Workspace\weld\target\release\deps\libclap-1e52388b3f51d844.rlib --extern code_builder=D:\Workspace\weld\target\release\deps\libcode_builder-821196dd26a38c97.rlib --extern csv=D:\Workspace\weld\target\release\deps\libcsv-443f41e5f09809da.rlib --extern env_logger=D:\Workspace\weld\target\release\deps\libenv_logger-de75febf290fa1ae.rlib --extern fnv=D:\Workspace\weld\target\release\deps\libfnv-2a0af43baec9d0e7.rlib --extern lazy_static=D:\Workspace\weld\target\release\deps\liblazy_static-7c013a2d69184289.rlib --extern libc=D:\Workspace\weld\target\release\deps\liblibc-9129d6d4a27529a3.rlib --extern llvm_sys=D:\Workspace\weld\target\release\deps\libllvm_sys-6ac4b3f90d242631.rlib --extern log=D:\Workspace\weld\target\release\deps\liblog-8a4ec87aa0d54517.rlib --extern regex=D:\Workspace\weld\target\release\deps\libregex-7768ba1a9f896fb5.rlib --extern rustyline=D:\Workspace\weld\target\release\deps\librustyline-1d6010ea027c55a4.rlib --extern time=D:\Workspace\weld\target\release\deps\libtime-5897f05f751787c5.rlib -L native=D:\Workspace\weld/weld_rt/cpp -l dylib=stdc++ -l static=weldrt -L native=D:\Tools\LLVM-built\lib -L native=D:\Workspace\weld\target\release\build\llvm-sys-649a3ee014c1b33a\out` (exit code: 101)

radujica avatar Aug 25 '18 09:08 radujica

Bump would love to try it on windows :)

machineko avatar May 28 '19 15:05 machineko

A lot of those previous issues (toolchain setup etc) could be addressed with cross (https://github.com/rust-embedded/cross) I believe

spease avatar May 28 '19 15:05 spease

Hello, any updates on this issue?

espetro avatar Dec 26 '20 12:12 espetro

This is interesting, let me necro bump it

ZeaMays14142 avatar Mar 19 '24 20:03 ZeaMays14142