duckdb / duckdb_delta

DuckDB extension for Delta Lake
MIT License
121 stars 14 forks source link

Enable windows builds #34

Closed samansmink closed 3 months ago

samansmink commented 3 months ago

This PR adds the windows builds (not yet the mingw) unfortunately. It's been a bit of a struggle though.

I've have to apply weird tricks to get this to compile, most problematic is the inlining of the fii header and adding this weird snippet to it:

// This trickery is from https://github.com/mozilla/cbindgen/issues/402#issuecomment-578680163
struct im_an_unused_struct_that_tricks_msvc_into_compilation {
    ExternResult<KernelBoolSlice> field;
    ExternResult<bool> field2;
    ExternResult<EngineBuilder*> field3;
    ExternResult<Handle<SharedExternEngine>> field4;
    ExternResult<Handle<SharedSnapshot>> field5;
    ExternResult<uintptr_t> field6;
    ExternResult<ArrowFFIData*> field7;
    ExternResult<Handle<SharedScanDataIterator>> field8;
    ExternResult<Handle<SharedScan>> field9;
    ExternResult<Handle<SharedScan>> field10;
};

The rest was actually not so bad once i figured out which windows libraries i need to link to..