クリーンアップ: プロジェクト整理とGitHub公開準備
## 🧹 ルートディレクトリ整理 - batファイル(21個) → tools/windows/llvm-build-attempts/へ移動 - ログファイル → logs/archive/へ移動 - LLVM実行ファイル(計104MB) → .gitignoreに追加して削除 ## 📝 .gitignore更新 - app_*_llvm, app_link, string_len_app を除外 - 大容量バイナリファイルのアップロード防止 ## 🔧 追加のリファクタリング - src/jit/lower/builder/tls.rs: TLS関連を独立モジュール化 ## 📊 整理結果 - ルートディレクトリ: 0個の一時ファイル(完全クリーン) - リポジトリサイズ: 189MB(適切) - 最大追跡ファイル: 5.2MB(許容範囲内) GitHub公開準備完了!🚀 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
19
tools/windows/llvm-build-attempts/build_clean_aot.bat
Normal file
19
tools/windows/llvm-build-attempts/build_clean_aot.bat
Normal file
@ -0,0 +1,19 @@
|
||||
@echo off
|
||||
chcp 437 >nul
|
||||
set "LLVM_SYS_180_PREFIX=C:\LLVM-18"
|
||||
set "LLVM_SYS_180_FFI_WORKAROUND=1"
|
||||
set "LLVM_SYS_180_NO_LIBFFI=1"
|
||||
set "PATH=C:\LLVM-18\bin;%PATH%"
|
||||
|
||||
echo Cleaning and building Nyash with LLVM AOT (no libffi)...
|
||||
cargo clean
|
||||
cargo build --bin nyash --release --features llvm
|
||||
|
||||
echo.
|
||||
echo Checking output...
|
||||
if exist target\release\nyash.exe (
|
||||
echo SUCCESS: nyash.exe created
|
||||
dir target\release\nyash.exe
|
||||
) else (
|
||||
echo ERROR: nyash.exe not found
|
||||
)
|
||||
17
tools/windows/llvm-build-attempts/build_llvm_clean.bat
Normal file
17
tools/windows/llvm-build-attempts/build_llvm_clean.bat
Normal file
@ -0,0 +1,17 @@
|
||||
@echo off
|
||||
echo Cleaning environment and building with LLVM...
|
||||
|
||||
REM Remove old environment variables
|
||||
set LLVM_CONFIG_PATH=
|
||||
set LLVM_SYS_180_NO_LIBFFI=
|
||||
set LLVM_SYS_180_FFI_WORKAROUND=
|
||||
|
||||
REM Set new environment variables
|
||||
set LLVM_SYS_180_PREFIX=C:\LLVM-18
|
||||
set PATH=C:\LLVM-18\bin;%PATH%
|
||||
set LLVM_SYS_NO_LIBFFI=1
|
||||
set LLVM_SYS_180_STRICT_VERSIONING=0
|
||||
set RUST_LOG=llvm_sys=trace
|
||||
|
||||
echo Building with verbose output...
|
||||
cargo +stable-x86_64-pc-windows-msvc build --release --features llvm -vv
|
||||
10
tools/windows/llvm-build-attempts/build_llvm_simple.bat
Normal file
10
tools/windows/llvm-build-attempts/build_llvm_simple.bat
Normal file
@ -0,0 +1,10 @@
|
||||
@echo off
|
||||
set LLVM_SYS_180_PREFIX=C:\LLVM-18
|
||||
set LLVM_SYS_NO_LIBFFI=1
|
||||
set LLVM_SYS_180_STRICT_VERSIONING=0
|
||||
set PATH=C:\LLVM-18\bin;%PATH%
|
||||
|
||||
echo LLVM_SYS_180_PREFIX=%LLVM_SYS_180_PREFIX%
|
||||
echo Building with 24 threads...
|
||||
|
||||
cargo build --release --features llvm -j24
|
||||
34
tools/windows/llvm-build-attempts/build_llvm_windows.bat
Normal file
34
tools/windows/llvm-build-attempts/build_llvm_windows.bat
Normal file
@ -0,0 +1,34 @@
|
||||
@echo off
|
||||
setlocal enabledelayedexpansion
|
||||
|
||||
echo [build_llvm_windows] Starting LLVM build...
|
||||
|
||||
REM Set LLVM path
|
||||
set "LLVM_SYS_180_PREFIX=C:\Program Files\LLVM"
|
||||
set "PATH=C:\Program Files\LLVM\bin;%PATH%"
|
||||
|
||||
REM Check LLVM
|
||||
where clang.exe >nul 2>&1
|
||||
if errorlevel 1 (
|
||||
echo [build_llvm_windows] ERROR: clang.exe not found
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo [build_llvm_windows] LLVM found, building nyash...
|
||||
|
||||
REM Build nyash with LLVM
|
||||
cargo build --release --features llvm
|
||||
|
||||
if errorlevel 1 (
|
||||
echo [build_llvm_windows] ERROR: cargo build failed
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo [build_llvm_windows] Build successful!
|
||||
|
||||
REM Build ny-echo-lite
|
||||
echo [build_llvm_windows] Building ny-echo-lite...
|
||||
powershell -ExecutionPolicy Bypass -File tools\build_llvm.ps1 apps\tests\ny-echo-lite\main.nyash -Out app_echo.exe
|
||||
|
||||
echo [build_llvm_windows] Done!
|
||||
endlocal
|
||||
20
tools/windows/llvm-build-attempts/build_nyash_exe.bat
Normal file
20
tools/windows/llvm-build-attempts/build_nyash_exe.bat
Normal file
@ -0,0 +1,20 @@
|
||||
@echo off
|
||||
chcp 437 >nul
|
||||
set "LLVM_SYS_180_PREFIX=C:\LLVM-18"
|
||||
set "LLVM_SYS_180_FFI_WORKAROUND=1"
|
||||
set "PATH=C:\LLVM-18\bin;%PATH%"
|
||||
|
||||
echo Building Nyash executable with LLVM support without libffi...
|
||||
set "LLVM_SYS_NO_LIBFFI=1"
|
||||
cargo build --bin nyash --release --features llvm
|
||||
|
||||
echo.
|
||||
echo Checking output...
|
||||
if exist target\release\nyash.exe (
|
||||
echo SUCCESS: nyash.exe created
|
||||
dir target\release\nyash.exe
|
||||
) else (
|
||||
echo ERROR: nyash.exe not found
|
||||
echo Listing exe files:
|
||||
dir target\release\*.exe
|
||||
)
|
||||
52
tools/windows/llvm-build-attempts/build_win_aot.bat
Normal file
52
tools/windows/llvm-build-attempts/build_win_aot.bat
Normal file
@ -0,0 +1,52 @@
|
||||
@echo off
|
||||
setlocal ENABLEDELAYEDEXPANSION
|
||||
chcp 65001 >nul
|
||||
|
||||
echo [Nyash AOT Build - libffi disabled]
|
||||
echo ===================================
|
||||
|
||||
REM Set LLVM environment variables
|
||||
set "LLVM_SYS_180_PREFIX=C:\LLVM-18"
|
||||
set "LLVM_SYS_NO_LIBFFI=1"
|
||||
set "LLVM_SYS_180_FFI_WORKAROUND=1"
|
||||
|
||||
echo LLVM_SYS_180_PREFIX=%LLVM_SYS_180_PREFIX%
|
||||
echo LLVM_SYS_NO_LIBFFI=%LLVM_SYS_NO_LIBFFI%
|
||||
|
||||
REM Verify LLVM installation
|
||||
if not exist "%LLVM_SYS_180_PREFIX%\include\llvm-c\Core.h" (
|
||||
echo ERROR: Core.h not found at %LLVM_SYS_180_PREFIX%\include\llvm-c\Core.h
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
if not exist "%LLVM_SYS_180_PREFIX%\lib\cmake\llvm\LLVMConfig.cmake" (
|
||||
echo ERROR: LLVMConfig.cmake not found at %LLVM_SYS_180_PREFIX%\lib\cmake\llvm\LLVMConfig.cmake
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo LLVM installation verified successfully!
|
||||
|
||||
REM Add LLVM to PATH
|
||||
set "PATH=%LLVM_SYS_180_PREFIX%\bin;%PATH%"
|
||||
|
||||
REM Clean and build
|
||||
echo.
|
||||
echo Cleaning previous build...
|
||||
cargo clean
|
||||
|
||||
echo.
|
||||
echo Building Nyash with LLVM AOT support (no libffi)...
|
||||
cargo build --bin nyash --release --features llvm
|
||||
|
||||
REM Check result
|
||||
echo.
|
||||
if exist "target\release\nyash.exe" (
|
||||
echo SUCCESS: nyash.exe built successfully!
|
||||
echo.
|
||||
dir target\release\nyash.exe
|
||||
) else (
|
||||
echo ERROR: Build failed - nyash.exe not found
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
endlocal
|
||||
131
tools/windows/llvm-build-attempts/build_win_env_and_build.bat
Normal file
131
tools/windows/llvm-build-attempts/build_win_env_and_build.bat
Normal file
@ -0,0 +1,131 @@
|
||||
@echo off
|
||||
setlocal ENABLEDELAYEDEXPANSION
|
||||
chcp 65001 >nul
|
||||
|
||||
rem =============================
|
||||
rem User config (編集ポイント)
|
||||
rem =============================
|
||||
rem LLVM のプレフィックス(ヘッダ/Core.h と CMake/LLVMConfig.cmake がある場所)
|
||||
rem 例) 自前CMake: C:\LLVM-18
|
||||
rem 例) vcpkg: C:\vcpkg\installed\x64-windows
|
||||
set "LLVM_PREFIX=C:\LLVM-18"
|
||||
|
||||
rem AOTのみなら 0(libffi無効) / JITも使うなら 1(libffi有効)
|
||||
set "USE_LIBFFI=0"
|
||||
|
||||
rem libffi のプレフィックス(USE_LIBFFI=1 のとき使用; vcpkg推奨)
|
||||
set "LIBFFI_PREFIX=C:\vcpkg\installed\x64-windows"
|
||||
|
||||
rem Cargo 子プロセスへ PATH を強制注入(有効化=1)
|
||||
set "FORCE_CARGO_PATH=1"
|
||||
|
||||
rem =============================
|
||||
rem VS 開発環境(MSVC x64)を有効化
|
||||
rem =============================
|
||||
if exist "%ProgramFiles%\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat" (
|
||||
call "%ProgramFiles%\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat" -arch=x64
|
||||
) else if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\2022\BuildTools\Common7\Tools\VsDevCmd.bat" (
|
||||
call "%ProgramFiles(x86)%\Microsoft Visual Studio\2022\BuildTools\Common7\Tools\VsDevCmd.bat" -arch=x64
|
||||
)
|
||||
|
||||
rem =============================
|
||||
rem 前提チェック
|
||||
rem =============================
|
||||
if not exist "%LLVM_PREFIX%\include\llvm-c\Core.h" (
|
||||
echo [ERROR] Core.h not found: "%LLVM_PREFIX%\include\llvm-c\Core.h"
|
||||
echo LLVM_PREFIX をヘッダがある場所に直してください。
|
||||
exit /b 2
|
||||
)
|
||||
if not exist "%LLVM_PREFIX%\lib\cmake\llvm\LLVMConfig.cmake" (
|
||||
echo [ERROR] LLVMConfig.cmake not found: "%LLVM_PREFIX%\lib\cmake\llvm\LLVMConfig.cmake"
|
||||
echo LLVM_PREFIX を CMake 定義がある場所に直してください。
|
||||
exit /b 2
|
||||
)
|
||||
if not exist "%LLVM_PREFIX%\lib\LLVMCore.lib" (
|
||||
echo [WARN] LLVMCore.lib が見つかりません: "%LLVM_PREFIX%\lib\LLVMCore.lib"
|
||||
)
|
||||
if not exist "%LLVM_PREFIX%\lib\LLVMSupport.lib" (
|
||||
echo [WARN] LLVMSupport.lib が見つかりません: "%LLVM_PREFIX%\lib\LLVMSupport.lib"
|
||||
)
|
||||
|
||||
rem =============================
|
||||
rem 衝突しやすい環境変数を掃除
|
||||
rem =============================
|
||||
set LLVM_CONFIG_PATH=
|
||||
set LLVM_SYS_180_NO_LIBFFI=
|
||||
set LLVM_SYS_180_FFI_WORKAROUND=
|
||||
|
||||
rem =============================
|
||||
rem このシェル限定の環境を設定
|
||||
rem =============================
|
||||
set "LLVM_SYS_180_PREFIX=%LLVM_PREFIX%"
|
||||
set "LLVM_SYS_180_INCLUDE_DIR=%LLVM_PREFIX%\include"
|
||||
set "LLVM_SYS_180_LIB_DIR=%LLVM_PREFIX%\lib"
|
||||
set "LLVM_SYS_180_STRICT_VERSIONING=0"
|
||||
set "PATH=%LLVM_PREFIX%\bin;%PATH%"
|
||||
|
||||
if "%USE_LIBFFI%"=="1" (
|
||||
set "LLVM_SYS_NO_LIBFFI="
|
||||
if exist "%LIBFFI_PREFIX%\lib\ffi.lib" (
|
||||
set "LIB=%LIBFFI_PREFIX%\lib;%LIB%"
|
||||
set "PATH=%LIBFFI_PREFIX%\bin;%PATH%"
|
||||
) else (
|
||||
echo [WARN] libffi not found at "%LIBFFI_PREFIX%\lib\ffi.lib" (JIT想定なら vcpkg で libffi を追加してください)
|
||||
)
|
||||
) else (
|
||||
rem AOT-only
|
||||
set "LLVM_SYS_NO_LIBFFI=1"
|
||||
)
|
||||
|
||||
rem =============================
|
||||
rem 現在の設定を表示
|
||||
rem =============================
|
||||
echo [ENV] LLVM_SYS_180_PREFIX=%LLVM_SYS_180_PREFIX%
|
||||
echo [ENV] LLVM_SYS_180_INCLUDE_DIR=%LLVM_SYS_180_INCLUDE_DIR%
|
||||
echo [ENV] LLVM_SYS_180_LIB_DIR=%LLVM_SYS_180_LIB_DIR%
|
||||
echo [ENV] LLVM_SYS_NO_LIBFFI=%LLVM_SYS_NO_LIBFFI%
|
||||
echo [ENV] LLVM_SYS_180_STRICT_VERSIONING=%LLVM_SYS_180_STRICT_VERSIONING%
|
||||
where cl
|
||||
where link
|
||||
where clang
|
||||
|
||||
rem =============================
|
||||
rem Cargo 子プロセスへ PATH を強制注入(必要なら)
|
||||
rem =============================
|
||||
if "%FORCE_CARGO_PATH%"=="1" (
|
||||
if not exist ".cargo" mkdir ".cargo"
|
||||
> ".cargo\config.toml" (
|
||||
echo [env]
|
||||
echo LLVM_SYS_180_PREFIX = "%LLVM_SYS_180_PREFIX:\=\\%"
|
||||
echo LLVM_SYS_180_INCLUDE_DIR = "%LLVM_SYS_180_INCLUDE_DIR:\=\\%"
|
||||
echo LLVM_SYS_180_LIB_DIR = "%LLVM_SYS_180_LIB_DIR:\=\\%"
|
||||
if "%USE_LIBFFI%"=="1" (echo LLVM_SYS_NO_LIBFFI = "") else (echo LLVM_SYS_NO_LIBFFI = "1")
|
||||
echo LLVM_SYS_180_STRICT_VERSIONING = "0"
|
||||
echo PATH = { value = "%LLVM_SYS_180_PREFIX:\=\\%\bin;{PATH}", force = true }
|
||||
)
|
||||
echo [INFO] Wrote .cargo\config.toml
|
||||
)
|
||||
|
||||
rem =============================
|
||||
rem Rust toolchain を MSVC に固定&ビルド
|
||||
rem =============================
|
||||
echo [INFO] Using MSVC toolchain...
|
||||
rustup default stable-x86_64-pc-windows-msvc
|
||||
|
||||
set "RUST_LOG=llvm_sys=trace"
|
||||
echo [INFO] Cleaning...
|
||||
cargo clean
|
||||
|
||||
echo [INFO] Building nyash (release, feature=llvm)...
|
||||
cargo +stable-x86_64-pc-windows-msvc build --release --features llvm -vv -j24
|
||||
if errorlevel 1 (
|
||||
echo [ERROR] cargo build failed. 上の末尾(link.exe の行/ffi.libの有無)を確認してください。
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo [OK] Build complete.
|
||||
echo [HINT] AOT→EXE: powershell -ExecutionPolicy Bypass -File tools\build_llvm.ps1 apps\tests\ny-echo-lite\main.nyash -Out app_echo.exe
|
||||
|
||||
endlocal
|
||||
exit /b 0
|
||||
|
||||
20
tools/windows/llvm-build-attempts/build_win_llvm.bat
Normal file
20
tools/windows/llvm-build-attempts/build_win_llvm.bat
Normal file
@ -0,0 +1,20 @@
|
||||
@echo off
|
||||
echo Building Nyash with LLVM for Windows...
|
||||
|
||||
REM Set environment variables
|
||||
set LLVM_SYS_180_PREFIX=C:\LLVM-18
|
||||
set LLVM_SYS_180_FFI_WORKAROUND=1
|
||||
set LLVM_SYS_NO_LIBFFI=1
|
||||
|
||||
echo Environment variables:
|
||||
echo LLVM_SYS_180_PREFIX = %LLVM_SYS_180_PREFIX%
|
||||
echo LLVM_SYS_180_FFI_WORKAROUND = %LLVM_SYS_180_FFI_WORKAROUND%
|
||||
echo LLVM_SYS_NO_LIBFFI = %LLVM_SYS_NO_LIBFFI%
|
||||
|
||||
echo.
|
||||
echo Building...
|
||||
cargo build --release --features llvm
|
||||
|
||||
echo.
|
||||
echo Done!
|
||||
pause
|
||||
16
tools/windows/llvm-build-attempts/build_windows_llvm.bat
Normal file
16
tools/windows/llvm-build-attempts/build_windows_llvm.bat
Normal file
@ -0,0 +1,16 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
REM Set LLVM path
|
||||
set "LLVM_SYS_180_PREFIX=C:\Program Files\LLVM"
|
||||
|
||||
REM Build nyash with LLVM feature
|
||||
echo Building nyash with LLVM backend...
|
||||
cargo build --release --features llvm
|
||||
|
||||
REM Build ny-echo-lite to exe
|
||||
echo Building ny-echo-lite...
|
||||
powershell -ExecutionPolicy Bypass -File tools\build_llvm.ps1 apps\tests\ny-echo-lite\main.nyash -Out app_echo.exe
|
||||
|
||||
echo Done!
|
||||
endlocal
|
||||
@ -0,0 +1,9 @@
|
||||
@echo off
|
||||
set "LLVM_SYS_180_PREFIX=C:\LLVM-18"
|
||||
set "LLVM_SYS_180_FFI_WORKAROUND=1"
|
||||
set "PATH=C:\LLVM-18\bin;%PATH%"
|
||||
|
||||
echo Building Nyash with LLVM support...
|
||||
cargo build --release --features llvm
|
||||
|
||||
echo Done!
|
||||
@ -0,0 +1,20 @@
|
||||
@echo off
|
||||
echo Using existing LLVM at C:\LLVM-18
|
||||
|
||||
REM Set environment variables
|
||||
set "LLVM_SYS_180_PREFIX=C:\LLVM-18"
|
||||
set "LLVM_SYS_180_NO_LIBFFI=1"
|
||||
set "LLVM_SYS_180_FFI_WORKAROUND=1"
|
||||
set "PATH=C:\LLVM-18\bin;%PATH%"
|
||||
|
||||
echo.
|
||||
echo Building Nyash without libffi (AOT only)...
|
||||
cargo build --bin nyash --release --features llvm --no-default-features --features cli,plugins
|
||||
|
||||
echo.
|
||||
if exist target\release\nyash.exe (
|
||||
echo SUCCESS: nyash.exe created!
|
||||
dir target\release\nyash.exe
|
||||
) else (
|
||||
echo Build failed. Trying alternative approach...
|
||||
)
|
||||
13
tools/windows/llvm-build-attempts/build_with_setx.bat
Normal file
13
tools/windows/llvm-build-attempts/build_with_setx.bat
Normal file
@ -0,0 +1,13 @@
|
||||
@echo off
|
||||
echo Setting system environment variables for LLVM...
|
||||
|
||||
REM Set system-wide environment variables
|
||||
setx LLVM_SYS_180_PREFIX "C:\LLVM-18"
|
||||
setx LLVM_SYS_NO_LIBFFI "1"
|
||||
setx LLVM_SYS_180_FFI_WORKAROUND "1"
|
||||
|
||||
echo.
|
||||
echo Environment variables set. Please open a NEW command prompt and run:
|
||||
echo cargo build --bin nyash --release --features llvm
|
||||
echo.
|
||||
pause
|
||||
13
tools/windows/llvm-build-attempts/check_build.bat
Normal file
13
tools/windows/llvm-build-attempts/check_build.bat
Normal file
@ -0,0 +1,13 @@
|
||||
@echo off
|
||||
set "LLVM_SYS_180_PREFIX=C:\LLVM-18"
|
||||
set "LLVM_SYS_180_FFI_WORKAROUND=1"
|
||||
|
||||
echo Checking build status...
|
||||
dir target\release\*.exe 2>nul
|
||||
if errorlevel 1 (
|
||||
echo No exe files in target\release
|
||||
dir target\x86_64-pc-windows-msvc\release\*.exe 2>nul
|
||||
if errorlevel 1 (
|
||||
echo No exe files in Windows target either
|
||||
)
|
||||
)
|
||||
37
tools/windows/llvm-build-attempts/check_llvm_env.bat
Normal file
37
tools/windows/llvm-build-attempts/check_llvm_env.bat
Normal file
@ -0,0 +1,37 @@
|
||||
@echo off
|
||||
echo === LLVM Environment Check ===
|
||||
echo.
|
||||
echo LLVM_SYS_180_PREFIX = %LLVM_SYS_180_PREFIX%
|
||||
echo.
|
||||
|
||||
echo Checking if LLVM files exist...
|
||||
if exist "C:\LLVM-18\include\llvm-c\Core.h" (
|
||||
echo [OK] Core.h found at C:\LLVM-18\include\llvm-c\Core.h
|
||||
) else (
|
||||
echo [ERROR] Core.h NOT FOUND
|
||||
)
|
||||
|
||||
if exist "C:\LLVM-18\lib\cmake\llvm\LLVMConfig.cmake" (
|
||||
echo [OK] LLVMConfig.cmake found at C:\LLVM-18\lib\cmake\llvm\LLVMConfig.cmake
|
||||
) else (
|
||||
echo [ERROR] LLVMConfig.cmake NOT FOUND
|
||||
)
|
||||
|
||||
echo.
|
||||
echo Setting environment variables...
|
||||
set "LLVM_SYS_180_PREFIX=C:\LLVM-18"
|
||||
set "LLVM_SYS_180_FFI_WORKAROUND=1"
|
||||
set "LLVM_SYS_NO_LIBFFI=1"
|
||||
|
||||
echo.
|
||||
echo After setting:
|
||||
echo LLVM_SYS_180_PREFIX = %LLVM_SYS_180_PREFIX%
|
||||
echo LLVM_SYS_180_FFI_WORKAROUND = %LLVM_SYS_180_FFI_WORKAROUND%
|
||||
echo LLVM_SYS_NO_LIBFFI = %LLVM_SYS_NO_LIBFFI%
|
||||
|
||||
echo.
|
||||
echo Testing cargo environment...
|
||||
cargo --version
|
||||
rustc --version
|
||||
|
||||
pause
|
||||
17
tools/windows/llvm-build-attempts/create_dummy_ffi.bat
Normal file
17
tools/windows/llvm-build-attempts/create_dummy_ffi.bat
Normal file
@ -0,0 +1,17 @@
|
||||
@echo off
|
||||
echo Creating dummy ffi.lib to bypass linker error...
|
||||
cd C:\LLVM-18\lib
|
||||
|
||||
REM Create empty C file
|
||||
echo // Dummy ffi functions > ffi_dummy.c
|
||||
echo void ffi_call() {} >> ffi_dummy.c
|
||||
echo void ffi_prep_cif() {} >> ffi_dummy.c
|
||||
echo void ffi_prep_closure_loc() {} >> ffi_dummy.c
|
||||
|
||||
REM Compile to object file
|
||||
cl /c ffi_dummy.c
|
||||
|
||||
REM Create library
|
||||
lib /OUT:ffi.lib ffi_dummy.obj
|
||||
|
||||
echo Done! Created C:\LLVM-18\lib\ffi.lib
|
||||
8
tools/windows/llvm-build-attempts/install_libffi.bat
Normal file
8
tools/windows/llvm-build-attempts/install_libffi.bat
Normal file
@ -0,0 +1,8 @@
|
||||
@echo off
|
||||
echo Installing libffi using vcpkg...
|
||||
cd C:\vcpkg
|
||||
git pull
|
||||
.\bootstrap-vcpkg.bat
|
||||
.\vcpkg integrate install
|
||||
.\vcpkg install libffi:x64-windows
|
||||
echo Done!
|
||||
36
tools/windows/llvm-build-attempts/install_llvm_and_build.bat
Normal file
36
tools/windows/llvm-build-attempts/install_llvm_and_build.bat
Normal file
@ -0,0 +1,36 @@
|
||||
@echo off
|
||||
echo Installing LLVM 18.0.x via vcpkg and building Nyash...
|
||||
|
||||
REM Check if vcpkg exists
|
||||
if not exist "C:\vcpkg\vcpkg.exe" (
|
||||
echo ERROR: vcpkg not found at C:\vcpkg\vcpkg.exe
|
||||
echo Please install vcpkg first
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo Step 1: Installing LLVM via vcpkg with 24 threads...
|
||||
cd C:\vcpkg
|
||||
vcpkg install "llvm[core]:x64-windows"
|
||||
|
||||
echo Step 2: Setting environment variables...
|
||||
set LLVM_SYS_180_PREFIX=C:\vcpkg\installed\x64-windows
|
||||
set LLVM_SYS_NO_LIBFFI=1
|
||||
set LLVM_SYS_180_STRICT_VERSIONING=0
|
||||
set PATH=C:\vcpkg\installed\x64-windows\bin;%PATH%
|
||||
|
||||
echo Step 3: Checking LLVM installation...
|
||||
if exist "C:\vcpkg\installed\x64-windows\bin\llvm-config.exe" (
|
||||
echo LLVM installed successfully!
|
||||
C:\vcpkg\installed\x64-windows\bin\llvm-config.exe --version
|
||||
) else (
|
||||
echo ERROR: llvm-config.exe not found
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo Step 4: Building Nyash with LLVM support...
|
||||
cd C:\git\nyash-project\nyash
|
||||
cargo clean
|
||||
cargo build --release --features llvm -j24
|
||||
|
||||
echo Done!
|
||||
pause
|
||||
29
tools/windows/llvm-build-attempts/install_vcpkg_llvm.bat
Normal file
29
tools/windows/llvm-build-attempts/install_vcpkg_llvm.bat
Normal file
@ -0,0 +1,29 @@
|
||||
@echo off
|
||||
echo Installing vcpkg and LLVM...
|
||||
|
||||
REM Clone vcpkg if not exists
|
||||
if not exist "C:\vcpkg" (
|
||||
echo Cloning vcpkg...
|
||||
cd C:\
|
||||
git clone https://github.com/Microsoft/vcpkg.git
|
||||
)
|
||||
|
||||
REM Bootstrap vcpkg
|
||||
cd C:\vcpkg
|
||||
echo Bootstrapping vcpkg...
|
||||
call bootstrap-vcpkg.bat
|
||||
|
||||
REM Integrate vcpkg with Visual Studio
|
||||
echo Integrating vcpkg...
|
||||
vcpkg integrate install
|
||||
|
||||
REM Install LLVM and libffi
|
||||
echo Installing LLVM and libffi via vcpkg (this may take a while)...
|
||||
vcpkg install llvm[clang]:x64-windows
|
||||
vcpkg install libffi:x64-windows
|
||||
|
||||
echo.
|
||||
echo Installation complete!
|
||||
echo LLVM should be installed at: C:\vcpkg\installed\x64-windows
|
||||
echo.
|
||||
pause
|
||||
4
tools/windows/llvm-build-attempts/run_build_aot.bat
Normal file
4
tools/windows/llvm-build-attempts/run_build_aot.bat
Normal file
@ -0,0 +1,4 @@
|
||||
@echo off
|
||||
echo Running PowerShell build script for AOT-only LLVM...
|
||||
powershell -ExecutionPolicy Bypass -File build_aot_only.ps1
|
||||
pause
|
||||
5
tools/windows/llvm-build-attempts/set_env_and_build.bat
Normal file
5
tools/windows/llvm-build-attempts/set_env_and_build.bat
Normal file
@ -0,0 +1,5 @@
|
||||
@echo off
|
||||
setx LLVM_SYS_180_PREFIX "C:\LLVM-18"
|
||||
setx LLVM_SYS_180_FFI_WORKAROUND "1"
|
||||
setx LLVM_SYS_NO_LIBFFI "1"
|
||||
echo Environment variables set. Please restart PowerShell and run: cargo build --release --features llvm
|
||||
20
tools/windows/llvm-build-attempts/set_system_env.bat
Normal file
20
tools/windows/llvm-build-attempts/set_system_env.bat
Normal file
@ -0,0 +1,20 @@
|
||||
@echo off
|
||||
echo Setting system-wide environment variables...
|
||||
|
||||
REM Set system environment variables (requires admin)
|
||||
setx LLVM_SYS_180_PREFIX "C:\LLVM-18" /M
|
||||
setx LLVM_SYS_180_FFI_WORKAROUND "1" /M
|
||||
setx LLVM_SYS_NO_LIBFFI "1" /M
|
||||
|
||||
echo.
|
||||
echo System environment variables set!
|
||||
echo Please restart your command prompt for changes to take effect.
|
||||
echo.
|
||||
echo For user-level variables (no admin required):
|
||||
setx LLVM_SYS_180_PREFIX "C:\LLVM-18"
|
||||
setx LLVM_SYS_180_FFI_WORKAROUND "1"
|
||||
setx LLVM_SYS_NO_LIBFFI "1"
|
||||
|
||||
echo.
|
||||
echo User environment variables also set!
|
||||
pause
|
||||
Reference in New Issue
Block a user