Merge pull request #5014 from Montellese/binary_addons
[vuplus_xbmc] / tools / buildsteps / win32 / make-addons.bat
1 @ECHO OFF
2
3 SETLOCAL
4
5 SET EXITCODE=0
6
7 SET getdepends=true
8 SET install=false
9 SET noclean=false
10 SET addon=
11 FOR %%b in (%1, %2, %3, %4) DO (
12   IF %%b == nodepends (
13     SET getdepends=false
14   ) ELSE ( IF %%b == install (
15     SET install=true
16   ) ELSE ( IF %%b == noclean (
17     SET noclean=true
18   ) ELSE ( IF %%b == clean (
19     SET noclean=false
20   ) ELSE (
21     SET addon=%%b
22   ))))
23 )
24
25 rem set Visual C++ build environment
26 call "%VS120COMNTOOLS%..\..\VC\bin\vcvars32.bat"
27
28 SET WORKDIR=%WORKSPACE%
29
30 IF "%WORKDIR%" == "" (
31   SET WORKDIR=%CD%\..\..\..
32 )
33
34 rem setup some paths that we need later
35 SET CUR_PATH=%CD%
36 SET BASE_PATH=%WORKDIR%\project\cmake
37 SET SCRIPTS_PATH=%BASE_PATH%\scripts\windows
38 SET ADDONS_PATH=%BASE_PATH%\addons
39 SET ADDON_DEPENDS_PATH=%ADDONS_PATH%\output
40 SET ADDONS_BUILD_PATH=%ADDONS_PATH%\build
41
42 SET ERRORFILE=%BASE_PATH%\make-addons.error
43
44 rem determine whether make-addon-depends.bat should be called with noclean or not
45 SET addon_depends_mode=clean
46 IF %noclean% == true (
47   SET addon_depends_mode=noclean
48 )
49
50 IF %getdepends% == true (
51   ECHO --------------------------------------------------
52   ECHO Building addon dependencies
53   ECHO --------------------------------------------------
54
55   CALL make-addon-depends.bat %addon_depends_mode%
56   IF ERRORLEVEL 1 (
57     ECHO make-addon-depends error level: %ERRORLEVEL% > %ERRORFILE%
58     GOTO ERROR
59   )
60
61   ECHO.
62 )
63
64 IF %noclean% == false (
65   rem remove the build directory if it exists
66   IF EXIST "%ADDONS_BUILD_PATH%" (
67     RMDIR "%ADDONS_BUILD_PATH%" /S /Q > NUL
68   )
69 )
70
71 rem create the build directory
72 IF NOT EXIST "%ADDONS_BUILD_PATH%" MKDIR "%ADDONS_BUILD_PATH%"
73
74 rem go into the build directory
75 CD "%ADDONS_BUILD_PATH%"
76
77 rem determine the proper install path for the built addons
78 IF %install% == true (
79   SET ADDONS_INSTALL_PATH=%WORKDIR%\addons
80 ) ELSE (
81   SET ADDONS_INSTALL_PATH=%WORKDIR%\project\Win32BuildSetup\BUILD_WIN32\Xbmc\xbmc-addons
82 )
83
84 ECHO --------------------------------------------------
85 ECHO Building addons
86 ECHO --------------------------------------------------
87
88 SET ADDONS_TO_BUILD="all"
89 IF "%addon%" NEQ "" (
90   SET ADDONS_TO_BUILD="%addon%"
91 )
92
93 rem execute cmake to generate makefiles processable by nmake
94 cmake "%ADDONS_PATH%" -G "NMake Makefiles" ^
95       -DCMAKE_BUILD_TYPE=Release ^
96       -DCMAKE_USER_MAKE_RULES_OVERRIDE="%SCRIPTS_PATH%/xbmc-c-flag-overrides.cmake" ^
97       -DCMAKE_USER_MAKE_RULES_OVERRIDE_CXX="%SCRIPTS_PATH%/xbmc-cxx-flag-overrides.cmake" ^
98       -DCMAKE_INSTALL_PREFIX=%ADDONS_INSTALL_PATH% ^
99       -DXBMCROOT=%WORKDIR% ^
100       -DCMAKE_PREFIX_PATH=%ADDON_DEPENDS_PATH% ^
101       -DPACKAGE_ZIP=1 ^
102       -DARCH_DEFINES="-DTARGET_WINDOWS -DNOMINMAX -D_CRT_SECURE_NO_WARNINGS -D_USE_32BIT_TIME_T -D_WINSOCKAPI_" ^
103       -DADDONS_TO_BUILD="%ADDONS_TO_BUILD%"
104 IF ERRORLEVEL 1 (
105   ECHO cmake error level: %ERRORLEVEL% > %ERRORFILE%
106   GOTO ERROR
107 )
108
109 rem execute nmake to build the addons
110 nmake %addon%
111 IF ERRORLEVEL 1 (
112   ECHO nmake error level: %ERRORLEVEL% > %ERRORFILE%
113   GOTO ERROR
114 )
115
116 rem everything was fine
117 GOTO END
118
119 :ERROR
120 rem something went wrong
121 ECHO Failed to build addons
122 ECHO See %ERRORFILE% for more details
123 SET EXITCODE=1
124
125 :END
126 rem go back to the original directory
127 cd %CUR_PATH%
128
129 rem exit the script with the defined exitcode
130 EXIT /B %EXITCODE%