1@ECHO OFF
2
3SETLOCAL
4
5SET EXITCODE=0
6
7SET clean=false
8SET addon=
9
10SETLOCAL EnableDelayedExpansion
11FOR %%b IN (%*) DO (
12  IF %%b == clean (
13    SET clean=true
14  ) ELSE (
15    SET addon=!addon! %%b
16  )
17)
18SETLOCAL DisableDelayedExpansion
19
20rem set Visual C++ build environment
21call "%VS140COMNTOOLS%..\..\VC\bin\amd64\vcvars64.bat" || call "%VS140COMNTOOLS%..\..\VC\bin\vcvars32.bat"
22
23SET WORKDIR=%WORKSPACE%
24
25IF "%WORKDIR%" == "" (
26  SET WORKDIR=%CD%\..\..
27)
28
29rem setup some paths that we need later
30SET CUR_PATH=%CD%
31SET BASE_PATH=%WORKDIR%\cmake
32SET SCRIPTS_PATH=%BASE_PATH%\scripts\windows
33SET ADDONS_PATH=%BASE_PATH%\addons
34SET ADDON_DEPENDS_PATH=%ADDONS_PATH%\output
35SET ADDONS_BUILD_PATH=%ADDONS_PATH%\build
36SET ADDONS_DEFINITION_PATH=%ADDONS_PATH%\addons
37
38SET ERRORFILE=%ADDONS_PATH%\make-addons.error
39
40IF %clean% == true (
41  rem remove the build directory if it exists
42  IF EXIST "%ADDONS_BUILD_PATH%" (
43    RMDIR "%ADDONS_BUILD_PATH%" /S /Q > NUL
44  )
45
46  rem remove the build directory if it exists
47  IF EXIST "%ADDON_DEPENDS_PATH%" (
48    RMDIR "%ADDON_DEPENDS_PATH%" /S /Q > NUL
49  )
50
51  GOTO END
52)
53
54rem create the depends directory
55IF NOT EXIST "%ADDON_DEPENDS_PATH%" MKDIR "%ADDON_DEPENDS_PATH%"
56
57rem create the build directory
58IF NOT EXIST "%ADDONS_BUILD_PATH%" MKDIR "%ADDONS_BUILD_PATH%"
59
60rem go into the build directory
61CD "%ADDONS_BUILD_PATH%"
62
63ECHO --------------------------------------------------
64ECHO Preparing addons development environment
65ECHO --------------------------------------------------
66
67SET ADDONS_TO_BUILD=
68IF "%addon%" NEQ "" (
69  SET ADDONS_TO_BUILD=%addon%
70) ELSE (
71  SETLOCAL EnableDelayedExpansion
72  FOR /D %%a IN (%ADDONS_DEFINITION_PATH%\*) DO (
73    SET ADDONS_TO_BUILD=!ADDONS_TO_BUILD! %%~nxa
74  )
75  SETLOCAL DisableDelayedExpansion
76)
77
78rem execute cmake to generate Visual Studio 12 project files
79cmake "%ADDONS_PATH%" -G "Visual Studio 16 2019" ^
80      -DCMAKE_BUILD_TYPE=Release ^
81      -DCMAKE_USER_MAKE_RULES_OVERRIDE="%SCRIPTS_PATH%/CFlagOverrides.cmake" ^
82      -DCMAKE_USER_MAKE_RULES_OVERRIDE_CXX="%SCRIPTS_PATH%/CXXFlagOverrides.cmake" ^
83      -DCMAKE_INSTALL_PREFIX=%WORKDIR%\addons ^
84      -DCMAKE_SOURCE_DIR=%WORKDIR% ^
85      -DBUILD_DIR=%ADDONS_BUILD_PATH% ^
86      -DADDON_DEPENDS_PATH=%ADDON_DEPENDS_PATH% ^
87      -DPACKAGE_ZIP=ON ^
88      -DADDONS_TO_BUILD="%ADDONS_TO_BUILD%"
89IF ERRORLEVEL 1 (
90  ECHO cmake error level: %ERRORLEVEL% > %ERRORFILE%
91  GOTO ERROR
92)
93
94rem everything was fine
95GOTO END
96
97:ERROR
98rem something went wrong
99ECHO Failed to prepare addons development environment
100ECHO See %ERRORFILE% for more details
101SET EXITCODE=1
102
103:END
104rem go back to the original directory
105cd %CUR_PATH%
106
107rem exit the script with the defined exitcode
108EXIT /B %EXITCODE%
109