summaryrefslogtreecommitdiffstats
path: root/tools/windows_buildenv.bat
diff options
context:
space:
mode:
authorJan Holthuis <jan.holthuis@ruhr-uni-bochum.de>2020-12-16 22:36:25 +0100
committerJan Holthuis <jan.holthuis@ruhr-uni-bochum.de>2020-12-16 22:36:25 +0100
commit5503b8ff989a70a885452deb251536c8bca40dd4 (patch)
tree6f0e6362052e81427cae5a0bdec243b27b87640a /tools/windows_buildenv.bat
parentb71238d539303cde34c95b8f9be308e35d6989ec (diff)
parentfa60e3dfee1ce7ccbc1c7820cdb99fa4bbef29dc (diff)
Merge branch '2.3' of github.com:mixxxdj/mixxx into gh-action-deployment
Diffstat (limited to 'tools/windows_buildenv.bat')
-rw-r--r--tools/windows_buildenv.bat118
1 files changed, 108 insertions, 10 deletions
diff --git a/tools/windows_buildenv.bat b/tools/windows_buildenv.bat
index af9e705026..1f1960a79b 100644
--- a/tools/windows_buildenv.bat
+++ b/tools/windows_buildenv.bat
@@ -16,12 +16,26 @@ IF NOT DEFINED BUILDENV_BASEPATH (
SET BUILDENV_BASEPATH=%MIXXX_ROOT%\buildenv
)
-CALL :COMMAND_%1
+IF NOT DEFINED BUILD_ROOT (
+ SET BUILD_ROOT=%MIXXX_ROOT%\build
+)
+
+IF NOT DEFINED INSTALL_ROOT (
+ SET INSTALL_ROOT=%MIXXX_ROOT%\install
+)
+
+IF "%~1"=="" (
+ REM In case of manual start by double click no arguments are specified: Default to COMMAND_setup
+ CALL :COMMAND_setup
+ PAUSE
+) ELSE (
+ CALL :COMMAND_%1
+)
+
EXIT /B 0
:COMMAND_name
CALL :READ_ENVNAME
- ECHO "%RETVAL%"
IF DEFINED GITHUB_ENV (
ECHO BUILDENV_NAME=!RETVAL! >> !GITHUB_ENV!
)
@@ -32,24 +46,40 @@ EXIT /B 0
SET BUILDENV_NAME=%RETVAL%
SET BUILDENV_PATH=%BUILDENV_BASEPATH%\%BUILDENV_NAME%
- IF NOT EXIST %BUILDENV_BASEPATH% (
- MD %BUILDENV_BASEPATH%
+ IF NOT DEFINED GITHUB_ENV (
+ CALL :GENERATE_CMakeSettings_JSON
+
+ IF NOT EXIST %BUILDENV_BASEPATH% (
+ ECHO ### Create subdirectory buildenv ###
+ MD %BUILDENV_BASEPATH%
+ )
+
+ IF NOT EXIST %BUILD_ROOT% (
+ ECHO ### Create subdirectory build ###
+ MD %BUILD_ROOT%
+ )
+
+ IF NOT EXIST %INSTALL_ROOT% (
+ ECHO ### Create subdirectory install ###
+ MD %INSTALL_ROOT%
+ )
)
IF NOT EXIST %BUILDENV_PATH% (
- SET BUILDENV_URL=https://downloads.mixxx.org/builds/buildserver/2.3.x-windows/%BUILDENV_NAME%.zip
+ ECHO ### Download prebuild build environment ###
+ SET BUILDENV_URL=https://downloads.mixxx.org/builds/buildserver/2.3.x-windows/!BUILDENV_NAME!.zip
IF NOT EXIST !BUILDENV_PATH!.zip (
- ECHO Downloading !BUILDENV_URL!
+ ECHO ### Download prebuild build environment from !BUILDENV_URL! to !BUILDENV_PATH!.zip ###
BITSADMIN /transfer buildenvjob /download /priority normal !BUILDENV_URL! !BUILDENV_PATH!.zip
REM TODO: verify download using sha256sum?
)
- ECHO Unpacking !BUILDENV_PATH!.zip
+ ECHO ### Unpacking !BUILDENV_PATH!.zip ###
CALL :UNZIP "!BUILDENV_PATH!.zip" "!BUILDENV_BASEPATH!"
- ECHO Unpacking complete.
+ ECHO ### Unpacking complete. ###
DEL /f /q %BUILDENV_PATH%.zip
)
- ECHO Using build environment: !BUILDENV_PATH!
+ ECHO ### Build environment path: !BUILDENV_PATH! ###
ENDLOCAL
SET PATH=!BUILDENV_PATH!\bin;!PATH!
@@ -92,8 +122,76 @@ EXIT /B 0
:READ_ENVNAME
- SET /P BUILDENV_NAME=<%MIXXX_ROOT%\cmake\windows_build_environment_name
+ ECHO ### Read name of prebuild environment from: %MIXXX_ROOT%\packaging\windows\build_environment ###
+ SET /P BUILDENV_NAME=<%MIXXX_ROOT%\packaging\windows\build_environment
SET BUILDENV_NAME=!BUILDENV_NAME:PLATFORM=%PLATFORM%!
SET BUILDENV_NAME=!BUILDENV_NAME:CONFIGURATION=%CONFIGURATION%!
SET RETVAL=%BUILDENV_NAME%
+ ECHO "%RETVAL%"
+ GOTO :EOF
+
+:GENERATE_CMakeSettings_JSON
+REM Generate CMakeSettings.json which is read by MS Visual Studio to determine the supported CMake build environments
+ SET CMakeSettings=%MIXXX_ROOT%\CMakeSettings.json
+ IF EXIST %CMakeSettings% (
+ ECHO ### CMakeSettings.json exist: Rename old file to CMakeSettings__YYYY-MM-DD_HH-MM-SS.json ###
+ FOR /f "delims=" %%a in ('wmic OS Get localdatetime ^| find "."') do set DateTime=%%a
+ REN %CMakeSettings% CMakeSettings__!DateTime:~0,4!-!DateTime:~4,2!-!DateTime:~6,2!_!DateTime:~8,2!-!DateTime:~10,2!-!DateTime:~12,2!.json
+ )
+ ECHO ### Create new CMakeSettings.json ###
+ >>%CMakeSettings% echo {
+ >>%CMakeSettings% echo "configurations": [
+ SET configElementTermination=,
+ CALL :Configuration2CMakeSettings_JSON off Debug
+ CALL :Configuration2CMakeSettings_JSON legacy RelWithDebInfo
+ CALL :Configuration2CMakeSettings_JSON portable RelWithDebInfo
+ CALL :Configuration2CMakeSettings_JSON fastbuild RelWithDebInfo
+ SET configElementTermination=
+ CALL :Configuration2CMakeSettings_JSON native Release
+ >>%CMakeSettings% echo ]
+ >>%CMakeSettings% echo }
GOTO :EOF
+
+:Configuration2CMakeSettings_JSON <optimize> <configurationtype>
+ >>%CMakeSettings% echo {
+ >>%CMakeSettings% echo "buildRoot": "${projectDir}\\build\\!PLATFORM!__%1",
+ >>%CMakeSettings% echo "configurationType": "%2",
+ >>%CMakeSettings% echo "enableClangTidyCodeAnalysis": true,
+ >>%CMakeSettings% echo "generator": "Ninja",
+ >>%CMakeSettings% echo "inheritEnvironments": [ "msvc_!PLATFORM!_!PLATFORM!" ],
+ >>%CMakeSettings% echo "installRoot": "${projectDir}\\install\\!PLATFORM!__%1",
+ >>%CMakeSettings% echo "intelliSenseMode": "windows-msvc-!PLATFORM!",
+ >>%CMakeSettings% echo "name": "!PLATFORM!__%1",
+ >>%CMakeSettings% echo "variables": [
+ SET variableElementTermination=,
+ CALL :AddCMakeVar2CMakeSettings_JSON "BATTERY" "BOOL" "true"
+ CALL :AddCMakeVar2CMakeSettings_JSON "BROADCAST" "BOOL" "true"
+ CALL :AddCMakeVar2CMakeSettings_JSON "BULK" "BOOL" "true"
+ CALL :AddCMakeVar2CMakeSettings_JSON "CMAKE_EXPORT_COMPILE_COMMANDS" "BOOL" "true"
+ REM Replace all \ by \\ in CMAKE_PREFIX_PATH
+ CALL :AddCMakeVar2CMakeSettings_JSON "CMAKE_PREFIX_PATH" "PATH" "!CMAKE_PREFIX_PATH:\=\\!"
+ CALL :AddCMakeVar2CMakeSettings_JSON "DEBUG_ASSERTIONS_FATAL" "BOOL" "true"
+ CALL :AddCMakeVar2CMakeSettings_JSON "HID" "BOOL" "true"
+ CALL :AddCMakeVar2CMakeSettings_JSON "HSS1394" "BOOL" "true"
+ CALL :AddCMakeVar2CMakeSettings_JSON "KEYFINDER" "BOOL" "false"
+ CALL :AddCMakeVar2CMakeSettings_JSON "LOCALECOMPARE" "BOOL" "true"
+ CALL :AddCMakeVar2CMakeSettings_JSON "LILV" "BOOL" "true"
+ CALL :AddCMakeVar2CMakeSettings_JSON "MAD" "BOOL" "true"
+ CALL :AddCMakeVar2CMakeSettings_JSON "MEDIAFOUNDATION" "BOOL" "true"
+ CALL :AddCMakeVar2CMakeSettings_JSON "OPUS" "BOOL" "true"
+ CALL :AddCMakeVar2CMakeSettings_JSON "OPTIMIZE" "STRING" "%1"
+ CALL :AddCMakeVar2CMakeSettings_JSON "QTKEYCHAIN" "BOOL" "true"
+ CALL :AddCMakeVar2CMakeSettings_JSON "STATIC_DEPS" "BOOL" "true"
+ SET variableElementTermination=
+ CALL :AddCMakeVar2CMakeSettings_JSON "VINYLCONTROL" "BOOL" "true"
+ >>%CMakeSettings% echo ]
+ >>%CMakeSettings% echo }!configElementTermination!
+ GOTO :EOF
+
+:AddCMakeVar2CMakeSettings_JSON <varname> <vartype> <value>
+ >>%CMakeSettings% echo {
+ >>%CMakeSettings% echo "name": %1,
+ >>%CMakeSettings% echo "type": %2,
+ >>%CMakeSettings% echo "value": %3
+ >>%CMakeSettings% echo }!variableElementTermination!
+ GOTO :EOF