|
8 | 8 | */ |
9 | 9 |
|
10 | 10 | import { execSync } from 'child_process'; |
11 | | -import { existsSync, mkdirSync, rmSync, unlinkSync, renameSync } from 'fs'; |
| 11 | +import { existsSync, mkdirSync, rmSync, unlinkSync, renameSync, writeFileSync } from 'fs'; |
12 | 12 | import { join } from 'path'; |
13 | 13 |
|
14 | 14 | const ZIG_VERSION = '0.13.0'; |
@@ -57,10 +57,24 @@ async function vendorLibsais() { |
57 | 57 | // Compile libsais (Zig's C backend has issues with libsais) |
58 | 58 | console.log('Compiling libsais...'); |
59 | 59 |
|
60 | | - // Use clang/gcc on all platforms for consistency |
61 | | - // This produces .a libraries that work with Zig's linker |
| 60 | + const compiler = platform === 'win32' ? 'gcc' : 'clang'; |
| 61 | + const wrapperDir = join(process.cwd(), 'src', 'libsais-wrapper'); |
| 62 | + |
| 63 | + // Compile libsais source files |
| 64 | + execSync( |
| 65 | + `cd ${libsaisDir} && ${compiler} -c -O3 -std=c99 libsais.c libsais64.c`, |
| 66 | + { stdio: 'inherit' } |
| 67 | + ); |
| 68 | + |
| 69 | + // Compile wrapper with include path to libsais headers |
| 70 | + execSync( |
| 71 | + `${compiler} -c -O3 -std=c99 -I ${libsaisDir} ${wrapperDir}/zig_wrapper.c -o ${libsaisDir}/zig_wrapper.o`, |
| 72 | + { stdio: 'inherit' } |
| 73 | + ); |
| 74 | + |
| 75 | + // Create static library |
62 | 76 | execSync( |
63 | | - `cd ${libsaisDir} && ${platform === 'win32' ? 'gcc' : 'clang'} -c -O3 -std=c99 libsais.c libsais64.c zig_wrapper.c && ar rcs libsais.a libsais.o libsais64.o zig_wrapper.o`, |
| 77 | + `cd ${libsaisDir} && ar rcs libsais.a libsais.o libsais64.o zig_wrapper.o`, |
64 | 78 | { stdio: 'inherit' } |
65 | 79 | ); |
66 | 80 |
|
|
0 commit comments