diff options
author | Jan Holthuis <jan.holthuis@ruhr-uni-bochum.de> | 2020-12-16 22:36:25 +0100 |
---|---|---|
committer | Jan Holthuis <jan.holthuis@ruhr-uni-bochum.de> | 2020-12-16 22:36:25 +0100 |
commit | 5503b8ff989a70a885452deb251536c8bca40dd4 (patch) | |
tree | 6f0e6362052e81427cae5a0bdec243b27b87640a /tools | |
parent | b71238d539303cde34c95b8f9be308e35d6989ec (diff) | |
parent | fa60e3dfee1ce7ccbc1c7820cdb99fa4bbef29dc (diff) |
Merge branch '2.3' of github.com:mixxxdj/mixxx into gh-action-deployment
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/macos_buildenv.sh | 33 | ||||
-rwxr-xr-x | tools/ubuntu_buildenv.sh | 10 | ||||
-rw-r--r-- | tools/windows_buildenv.bat | 118 |
3 files changed, 148 insertions, 13 deletions
diff --git a/tools/macos_buildenv.sh b/tools/macos_buildenv.sh index bd7433f801..d077362eea 100755 --- a/tools/macos_buildenv.sh +++ b/tools/macos_buildenv.sh @@ -23,7 +23,7 @@ THIS_SCRIPT_NAME=${BASH_SOURCE[0]} MIXXX_ROOT="$(realpath "$(dirname "$THIS_SCRIPT_NAME")/..")" -read -d'\n' BUILDENV_NAME BUILDENV_SHA256 < "${MIXXX_ROOT}/cmake/macos_build_environment" +read -d'\n' BUILDENV_NAME BUILDENV_SHA256 < "${MIXXX_ROOT}/packaging/macos/build_environment" [ -z "$BUILDENV_BASEPATH" ] && BUILDENV_BASEPATH="${MIXXX_ROOT}/buildenv" @@ -46,7 +46,7 @@ case "$COMMAND" in export MACOSX_DEPLOYMENT_TARGET="${match[1]}" fi else - echo "Build environment did not match expected pattern. Check ${MIXXX_ROOT}/cmake/macos_build_environment file." >&2 + echo "Build environment did not match expected pattern. Check ${MIXXX_ROOT}/packaging/macos/build_environment file." >&2 return fi @@ -78,12 +78,41 @@ case "$COMMAND" in echo "Build environment found: ${BUILDENV_PATH}" fi + export SDKROOT="${BUILDENV_BASEPATH}/MacOSX10.13.sdk" + if [ -d "${SDKROOT}" ]; then + if [ "$1" != "--profile" ]; then + echo "macOS 10.13 SDK found: ${SDKROOT}" + fi + else + echo "macOS 10.13 SDK not found, downloading it..." + curl -L "https://github.com/phracker/MacOSX-SDKs/releases/download/10.15/MacOSX10.13.sdk.tar.xz" -o "${SDKROOT}.tar.xz" + OBSERVED_SHA256=$(shasum -a 256 "${SDKROOT}.tar.xz"|cut -f 1 -d' ') + EXPECTED_SHA256="a3a077385205039a7c6f9e2c98ecdf2a720b2a819da715e03e0630c75782c1e4" + if [[ $OBSERVED_SHA256 == $EXPECTED_SHA256 ]]; then + echo "Download matched expected SHA256 sum $EXPECTED_SHA256" + else + echo "ERROR: Download did not match expected SHA256 checksum!" + echo "Expected $EXPECTED_SHA256" + echo "Got $OBSERVED_SHA256" + exit 1 + fi + echo "Extracting MacOSX10.13.sdk.tar.xz..." + tar xf "${SDKROOT}.tar.xz" -C "${BUILDENV_BASEPATH}" && \ + echo "Successfully extacted MacOSX10.13.sdk.tar.xz" + rm "${SDKROOT}.tar.xz" + fi + + export CC="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" + export CXX="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++" export CMAKE_PREFIX_PATH="${BUILDENV_PATH}" export Qt5_DIR="$(find "${BUILDENV_PATH}" -type d -path "*/cmake/Qt5")" export QT_QPA_PLATFORM_PLUGIN_PATH="$(find "${BUILDENV_PATH}" -type d -path "*/plugins")" export PATH="${BUILDENV_PATH}/bin:${PATH}" echo_exported_variables() { + echo "CC=${CC}" + echo "CXX=${CXX}" + echo "SDKROOT=${SDKROOT}" echo "MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET}" echo "CMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" echo "Qt5_DIR=${Qt5_DIR}" diff --git a/tools/ubuntu_buildenv.sh b/tools/ubuntu_buildenv.sh index 021b4687f4..1dd882c6ca 100755 --- a/tools/ubuntu_buildenv.sh +++ b/tools/ubuntu_buildenv.sh @@ -13,7 +13,7 @@ case "$COMMAND" in source /etc/lsb-release 2>/dev/null case "${DISTRIB_CODENAME}" in bionic) - PACKAGES_EXTRA="libfaad-dev libmp4v2-dev" + PACKAGES_EXTRA="libmp4v2-dev" ;; focal) PACKAGES_EXTRA="libavcodec-dev libavutil-dev" @@ -28,11 +28,18 @@ case "$COMMAND" in sudo apt-get update sudo apt-get install -y --no-install-recommends \ ccache \ + cmake \ + debhelper \ + devscripts \ + docbook-to-man \ libavformat-dev \ libchromaprint-dev \ + libdistro-info-perl \ libebur128-dev \ + libfaad-dev \ libfftw3-dev \ libflac-dev \ + libhidapi-dev \ libid3tag0-dev \ liblilv-dev \ libmad0-dev \ @@ -55,6 +62,7 @@ case "$COMMAND" in libupower-glib-dev \ libusb-1.0-0-dev \ libwavpack-dev \ + markdown \ portaudio19-dev \ protobuf-compiler \ qt5-default \ 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 |