Files
hakorune/tools/windows/llvm-build-attempts/build_win_env_and_build.bat
Moe Charm 2c795fa554 クリーンアップ: プロジェクト整理と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>
2025-09-02 12:31:33 +09:00

132 lines
4.7 KiB
Batchfile
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@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のみなら 0libffi無効 / JITも使うなら 1libffi有効
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