summaryrefslogtreecommitdiff
path: root/build_windows_targets.bat
blob: 11a9ba7e1ef4c69537ed41d0c46af5c1da640d57 (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
echo off
REM
REM This Windows batch file builds this repository for the following targets:
REM 64/32-bit Release/Debug
REM It uses CMake to genererate the project files and then invokes msbuild
REM to build them.
REM The update_external_sources.bat batch file must be executed before running
REM this batch file
REM
REM Arguments:
REM None: Runs CMake and builds all 4 combinations
REM Argument contains:
REM     cmake (case insensitive): Deletes build and build32 and runs just CMake on both
REM     32: Deletes build32, runs CMake and builds 32-bit versions
REM     64: Deletes build, runs CMake and builds 64-bit versions
REM Example:
REM build_windows_targets.bat 64
REM deletes build, creates build, runs CMake and compiles 64-bit Debug and Release.

set do_cmake=0
set do_32=1
set do_64=1
if "%1"=="" goto no_args
set do_cmake=0
set do_32=0
set do_64=0
for %%a in (%*) do (
    echo.%%a | %WINDIR%\system32\find.exe /I "cmake">Nul && (set do_cmake=1)
    echo.%%a | %WINDIR%\system32\find.exe "32">Nul && (set do_32=1)
    echo.%%a | %WINDIR%\system32\find.exe "64">Nul && (set do_64=1)
)
:no_args
if %do_cmake%==0 (
    if %do_32%==0 (
        if %do_64%==0 (
            echo No valid parameters specified.
            exit /b 1
        )
    )
)

REM Determine the appropriate CMake strings for the current version of Visual Studio
echo Determining VS version
python .\determine_vs_version.py > vsversion.tmp
set /p VS_VERSION=< vsversion.tmp
echo Detected Visual Studio Version as %VS_VERSION%
del /Q /F vsversion.tmp

if %do_cmake%==1 (
    rmdir /Q /S build
    rmdir /Q /S build32
    mkdir build
    pushd build
    echo Generating 64-bit CMake files for Visual Studio %VS_VERSION%
    cmake -G "Visual Studio %VS_VERSION% Win64" ..
    popd
    mkdir build32
    pushd build32
    echo Generating 32-bit CMake files for Visual Studio %VS_VERSION%
    cmake -G "Visual Studio %VS_VERSION%" ..
    popd
)

REM *******************************************
REM 64-bit build
REM *******************************************
if %do_64%==1 (
    rmdir /Q /S build
    mkdir build
    pushd build
    echo Generating 64-bit CMake files for Visual Studio %VS_VERSION%
    cmake -G "Visual Studio %VS_VERSION% Win64" ..
    echo Building 64-bit Debug 
    msbuild ALL_BUILD.vcxproj /p:Platform=x64 /p:Configuration=Debug /maxcpucount /verbosity:quiet
    if errorlevel 1 (
       echo.
       echo 64-bit Debug build failed!
       popd
       exit /b 1
    )   
   
    echo Building 64-bit Release 
    msbuild ALL_BUILD.vcxproj /p:Platform=x64 /p:Configuration=Release /maxcpucount /verbosity:quiet
    if errorlevel 1 (
       echo.
       echo 64-bit Release build failed!
       popd
       exit /b 1
    )   
    popd
)
 
REM *******************************************
REM 32-bit build
REM *******************************************
  
if %do_32%==1 (
    rmdir /Q /S build32
    mkdir build32
    pushd build32
    echo Generating 32-bit CMake files for Visual Studio %VS_VERSION%
    cmake -G "Visual Studio %VS_VERSION%" ..
    echo Building 32-bit Debug 
    msbuild ALL_BUILD.vcxproj /p:Platform=x86 /p:Configuration=Debug /maxcpucount /verbosity:quiet
    if errorlevel 1 (
       echo.
       echo 32-bit Debug build failed!
       popd
       exit /b 1
    )   
       
    echo Building 32-bit Release 
    msbuild ALL_BUILD.vcxproj /p:Platform=x86 /p:Configuration=Release /maxcpucount /verbosity:quiet
    if errorlevel 1 (
       echo.
       echo 32-bit Release build failed!
       popd
       exit /b 1
    )   
    popd
)
exit /b 0