aboutsummaryrefslogtreecommitdiff log msg author committer range
path: root/bootstrap-clang.bat
blob: 00302e9e37a84955c089b063f3b1c21059557f6d (plain)
 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126  @echo off rem file : bootstrap-clang.bat rem license : MIT; see accompanying LICENSE file setlocal EnableDelayedExpansion goto start :usage echo. echo Usage: %0 [/?] ^ [^...] echo. echo The batch file expects to find the libbutl\ or libbutl-*\ directory echo either in the current directory ^(build2 root^) or one level up. The echo result is saved as build2\b-boot.exe. echo. echo Example usage: echo. echo %0 clang++ echo. echo See the INSTALL file for details. echo. goto end :start if "_%1_" == "_/?_" goto usage rem Compiler executable. rem if "_%1_" == "__" ( echo error: compiler executable expected, run %0 /? for details goto error ) else ( set "cxx=%1" ) rem See if there is libbutl or libbutl-* in the current directory and one rem directory up. Note that globbing returns paths in alphabetic order. rem if exist libbutl\ ( set "libbutl=libbutl" ) else ( for /D %%d in (libbutl-*) do set "libbutl=%%d" ) if "_%libbutl%_" == "__" ( if exist ..\libbutl\ ( set "libbutl=..\libbutl" ) else ( for /D %%d in (..\libbutl-*) do set "libbutl=%%d" ) ) if "_%libbutl%_" == "__" ( echo error: unable to find libbutl, run %0 /? for details goto error ) rem All the source directories. rem set "src=build2" set "src=%src% libbuild2" set "src=%src% libbuild2\script" set "src=%src% libbuild2\build\script" set "src=%src% libbuild2\config" set "src=%src% libbuild2\dist" set "src=%src% libbuild2\test" set "src=%src% libbuild2\test\script" set "src=%src% libbuild2\install" set "src=%src% libbuild2\bin" set "src=%src% libbuild2\c" set "src=%src% libbuild2\cc" set "src=%src% libbuild2\cxx" set "src=%src% libbuild2\version" set "src=%src% libbuild2\in" set "src=%src% %libbutl%\libbutl" rem Get the compile options. rem rem Note that we compile in the C++14 mode to be consistent with other rem bootstrap scripts/makefiles (see bootstrap-mingw.bat for details). rem rem Clang 8 has a bunch of apparently harmless linker warnings that can be rem worked around by passing an obscure internal option. Clang 9 doesn't rem have this problem. To keep things simple, let's just suppress this rem warning. rem set "ops=-m64 -std=c++1y -D_MT -D_CRT_SECURE_NO_WARNINGS -Xlinker /ignore:4217" :ops_next shift if "_%1_" == "__" ( goto ops_done ) else ( set "ops=%ops% %1" goto ops_next ) :ops_done rem Compile. rem rem Note that echo does not override errorlevel. rem rem Filter out *.test.cxx sources. rem set "r=" for %%d in (%src%) do ( for /F "tokens=*" %%i in ('dir /b "%%d\*.cxx" ^| findstr /v "\.test\.cxx"') do set "r=!r! %%d\%%i" ) echo on %cxx% -I%libbutl% -I. -DBUILD2_BOOTSTRAP -DBUILD2_HOST_TRIPLET=\"x86_64-microsoft-win32-msvc\" %ops% -o build2\b-boot.exe %r% -lshell32 -limagehlp @echo off if errorlevel 1 goto error goto end :error endlocal exit /b 1 :end endlocal