aboutsummaryrefslogtreecommitdiff
path: root/etc/environments/default-clang.bat
blob: 52e0e4abbe8fb7de628b5b3fce64068fe277573b (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
@echo off

rem file      : etc/environments/default-clang.bat
rem copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
rem license   : TBC; see accompanying LICENSE file

rem
rem Environment setup script for C/C++ compilation with Clang targeting
rem MSVC.
rem

rem %1  - target
rem %2  - bbot executable
rem %3+ - bbot options

setlocal EnableExtensions EnableDelayedExpansion

rem If the MSVC variable is set, then set up the environment via the MSVC
rem command prompt rather than letting Clang find some default (note that
rem in the latter case, clang++ should be in PATH).
rem
rem Note also that MSVC_VER must always be set.

rem set "MSVC=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community"
rem set "MSVC_VER=14.1"

set "MSVC=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community"
set "MSVC_VER=14.2"

set "VCVARS32=VC\Auxiliary\Build\vcvarsamd64_x86.bat"
set "VCVARS64=VC\Auxiliary\Build\vcvars64.bat"

set "CXX=clang++"

rem Based on target determine what we are building.
rem
if "_%1_" == "_x86_64-microsoft-win32-msvc%MSVC_VER%_" (
  set "VCVARS=%VCVARS64%"
  set "mode=config.cc.coptions+=-m64"
) else (
  if "_%1_" == "_i686-microsoft-win32-msvc%MSVC_VER%_" (
    set "VCVARS=%VCVARS32%"
    set "mode=config.cc.coptions+=-m32"
  ) else (
    if "_%1_" == "_i386-microsoft-win32-msvc%MSVC_VER%_" (
      set "VCVARS=%VCVARS32%"
      set "mode=config.cc.coptions+=-m32"
    ) else (
      echo error: unknown target %1
      goto error
    )
  )
)

if not "_%MSVC%_" == "__" (
  call "%MSVC%\%VCVARS%"
  if errorlevel 1 goto error
)

%2 %3 %4 %5 %6 %7 %8 %9 cc config.c=cl config.cxx=%CXX% %mode%
if errorlevel 1 goto error

goto end

:error
@echo off
endlocal
exit /b 1

:end
endlocal