クリーンアップ: プロジェクト整理と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:
Moe Charm
2025-09-02 12:31:33 +09:00
parent 05bf22cdf6
commit 2c795fa554
37 changed files with 764 additions and 73 deletions

View 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
)

View 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

View 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

View 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

View 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
)

View 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

View 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のみなら 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

View 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

View 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

View File

@ -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!

View File

@ -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...
)

View 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

View 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
)
)

View 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

View 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

View 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!

View 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

View 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

View 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

View 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

View 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