summaryrefslogtreecommitdiffstats
path: root/tools
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
parentb71238d539303cde34c95b8f9be308e35d6989ec (diff)
parentfa60e3dfee1ce7ccbc1c7820cdb99fa4bbef29dc (diff)
Merge branch '2.3' of github.com:mixxxdj/mixxx into gh-action-deployment
Diffstat (limited to 'tools')
-rwxr-xr-xtools/macos_buildenv.sh33
-rwxr-xr-xtools/ubuntu_buildenv.sh10
-rw-r--r--tools/windows_buildenv.bat118
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