diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 285a0460920..3567dcf9d5a 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -26,7 +26,7 @@ jobs:
buildenv_basepath: /home/runner/buildenv
buildenv_script: tools/ubuntu_buildenv.sh
artifacts_name: Ubuntu 18.04 DEB
- artifacts_path: cmake_build/*.deb
+ artifacts_path: build/*.deb
qt_qpa_platform: offscreen
- name: Ubuntu 20.04 (gcc)
os: ubuntu-20.04
@@ -45,7 +45,7 @@ jobs:
buildenv_basepath: /home/runner/buildenv
buildenv_script: tools/ubuntu_buildenv.sh
artifacts_name: Ubuntu 20.04 DEB
- artifacts_path: cmake_build/*.deb
+ artifacts_path: build/*.deb
qt_qpa_platform: offscreen
- name: macOS 10.15
os: macos-10.15
@@ -62,7 +62,7 @@ jobs:
buildenv_basepath: /Users/runner/buildenv
buildenv_script: tools/macos_buildenv.sh
artifacts_name: macOS DMG
- artifacts_path: cmake_build/*.dmg
+ artifacts_path: build/*.dmg
qt_qpa_platform: offscreen
- name: Windows 2019 (MSVC)
os: windows-2019
@@ -84,7 +84,7 @@ jobs:
buildenv_basepath: C:\buildenv
buildenv_script: tools/windows_buildenv.bat
artifacts_name: Windows Installer
- artifacts_path: cmake_build/*.msi
+ artifacts_path: build/*.msi
qt_qpa_platform: windows
env:
@@ -133,7 +133,7 @@ jobs:
# Decrypt the certificate
openssl enc -aes-256-cbc -d -md sha512 \
-k "${MACOS_CODESIGN_OPENSSL_PASSWORD}" \
- -in /Users/runner/work/mixxx/mixxx/cmake/macos_developer_id_codesign_certificate.p12.enc \
+ -in /Users/runner/work/mixxx/mixxx/packaging/certificates/macos_developer_id_codesign_certificate.p12.enc \
-out ~/certificate.p12
# Create a temporary keychain for the certificate and import it.
@@ -182,7 +182,7 @@ jobs:
${{ matrix.os }}-${{ matrix.compiler_cache }}
- name: "Create build directory"
- run: mkdir cmake_build
+ run: mkdir build
- name: "Configure"
run: >-
@@ -201,7 +201,7 @@ jobs:
-DQTKEYCHAIN=ON
-DVINYLCONTROL=ON
..
- working-directory: cmake_build
+ working-directory: build
env:
CC: ${{ matrix.cc }}
CXX: ${{ matrix.cxx }}
@@ -216,7 +216,7 @@ jobs:
- name: "Build"
run: cmake --build .
- working-directory: cmake_build
+ working-directory: build
env:
CC: ${{ matrix.cc }}
CXX: ${{ matrix.cxx }}
@@ -231,7 +231,7 @@ jobs:
- name: "Test"
run: ctest --timeout 45 ${{ matrix.ctest_args }}
- working-directory: cmake_build
+ working-directory: build
env:
# Render analyzer waveform tests to an offscreen buffer
QT_QPA_PLATFORM: ${{ matrix.qt_qpa_platform }}
@@ -241,29 +241,29 @@ jobs:
- name: Benchmark
run: cmake --build . --target mixxx-benchmark
- working-directory: cmake_build
+ working-directory: build
env:
# Render analyzer waveform tests to an offscreen buffer
QT_QPA_PLATFORM: ${{ matrix.qt_qpa_platform }}
- name: "Package"
run: cpack -G ${{ matrix.cpack_generator }} -V
- working-directory: cmake_build
+ working-directory: build
- name: "Package for PPA"
if: startsWith(matrix.os, 'ubuntu')
run: cpack -G External -D DEB_SOURCEPKG=ON
- working-directory: cmake_build
+ working-directory: build
- name: "[macOS] Sign Package"
if: runner.os == 'macOS' && env.MACOS_CODESIGN_OPENSSL_PASSWORD != null && env.MACOS_CODESIGN_CERTIFICATE_PASSWORD != null
- run: codesign --verbose=4 --options runtime --sign "${APPLE_CODESIGN_IDENTITY}" --entitlements ../build/osx/entitlements.plist *.dmg
- working-directory: cmake_build
+ run: codesign --verbose=4 --options runtime --sign "${APPLE_CODESIGN_IDENTITY}" --entitlements ../packaging/macos/entitlements.plist *.dmg
+ working-directory: build
- name: "[Windows] Sign Package"
if: runner.os == 'Windows' && env.WINDOWS_CODESIGN_CERTIFICATE_PATH != null && env.WINDOWS_CODESIGN_CERTIFICATE_PASSWORD != null
run: signtool sign /f $Env:WINDOWS_CODESIGN_CERTIFICATE_PATH /p $Env:WINDOWS_CODESIGN_CERTIFICATE_PASSWORD *.msi
- working-directory: cmake_build
+ working-directory: build
- name: "[macOS] Upload build to downloads.mixxx.org"
# skip deploying Ubuntu builds to downloads.mixxx.org because these are deployed to the PPA
@@ -273,7 +273,7 @@ jobs:
FILE_TO_DEPLOY: ${{ matrix.artifacts_path }}
OS: ${{ runner.os }}
DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY_PASSWORD: ${{ secrets.DOWNLOADS_HOSTGATOR_DOT_MIXXX_DOT_ORG_KEY_PASSWORD }}
- SSH_KEY: build/certificates/downloads-hostgator.mixxx.org.key
+ SSH_KEY: packaging/certificates/downloads-hostgator.mixxx.org.key
- name: "Upload GitHub Actions artifacts"
uses: actions/upload-artifact@v2
diff --git a/.gitignore b/.gitignore
index 8e892abc364..c21f958e1bf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,22 +16,14 @@
*~
.#*
-dist32
-dist64
-
src/mixxx.rc.include
src/mixxx.res
-.sconf_temp
-.sconsign.branch
-.sconsign.dblite
-
*.sqlite
*.cfg
!/res/keyboard/*.cfg
-cache
__pycache__
lib/*/*.a
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3ac909e9877..3094239a07e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1102,7 +1102,7 @@ if (APPLE)
set_target_properties(mixxx PROPERTIES
MACOSX_BUNDLE true
- MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/cmake/macos_bundle.plist.in"
+ MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/packaging/macos/bundle.plist.in"
)
endif()
else()
@@ -2590,11 +2590,11 @@ set(CPACK_DEBIAN_UPLOAD_PPA_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/packaging/CPackD
set(CPACK_WIX_UPGRADE_GUID "921DC99C-4DCF-478D-B950-50685CB9E6BE")
-set(CPACK_WIX_LICENSE_RTF "${CMAKE_CURRENT_SOURCE_DIR}/build/wix/LICENSE.rtf")
+set(CPACK_WIX_LICENSE_RTF "${CMAKE_CURRENT_SOURCE_DIR}/packaging/wix/LICENSE.rtf")
set(CPACK_WIX_PRODUCT_ICON "${CMAKE_SOURCE_DIR}/res/images/ic_mixxx.ico")
set(CPACK_WIX_PROPERTY_ARPHELPLINK "${CPACK_PACKAGE_HOMEPAGE_URL}")
-set(CPACK_WIX_UI_BANNER "${CMAKE_CURRENT_SOURCE_DIR}/build/wix/images/banner.bmp")
-set(CPACK_WIX_UI_DIALOG "${CMAKE_CURRENT_SOURCE_DIR}/build/wix/images/dialog.bmp")
+set(CPACK_WIX_UI_BANNER "${CMAKE_CURRENT_SOURCE_DIR}/packaging/wix/images/banner.bmp")
+set(CPACK_WIX_UI_DIALOG "${CMAKE_CURRENT_SOURCE_DIR}/packaging/wix/images/dialog.bmp")
set(CPACK_PROJECT_CONFIG_FILE "${CMAKE_SOURCE_DIR}/packaging/CPackConfig.cmake" )
@@ -2628,7 +2628,7 @@ if(APPLE AND MACOS_BUNDLE)
set(BUNDLE_NAME "${MIXXX_INSTALL_PREFIX}")
set(BUNDLE_DIRS "${CMAKE_PREFIX_PATH}/lib;${Qt5Widgets_DIR}/../..")
- set(APPLE_CODESIGN_ENTITLEMENTS "${CMAKE_CURRENT_SOURCE_DIR}/build/osx/entitlements.plist")
+ set(APPLE_CODESIGN_ENTITLEMENTS "${CMAKE_CURRENT_SOURCE_DIR}/packaging/macos/entitlements.plist")
configure_file(cmake/modules/BundleInstall.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/BundleInstall.cmake" @ONLY)
install(SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/BundleInstall.cmake")
diff --git a/README.md b/README.md
index 760a4cce278..074c51eb78a 100644
--- a/README.md
+++ b/README.md
@@ -38,9 +38,12 @@ bug list][easybugs] and get started!
* Jenkins [![Build status](https://img.shields.io/jenkins/s/https/builds.mixxx.org/job/master-release.svg)](https://builds.mixxx.org/job/master-release)
First, you must install all of Mixxx's dependencies. To compile Mixxx using
-[SCons], run:
+[CMake], run:
- $ scons
+ $ mkdir build
+ $ cd build
+ $ cmake ..
+ $ cmake --build .
Please see our helpful guides on the [wiki] for more information:
- [Compiling on Linux]
@@ -98,7 +101,7 @@ license.
[compiling on macOS]: https://mixxx.org/wiki/doku.php/compiling_on_os_x
[compiling on windows]: https://mixxx.org/wiki/doku.php/compiling_on_windows
[mailing list]: https://lists.sourceforge.net/lists/listinfo/mixxx-devel
-[SCons]: https://www.scons.org/
+[CMake]: https://cmake.org/
[launchpad 2.3.0]: https://launchpad.net/mixxx/+milestone/2.3.0
[wiki roadmap]: https://mixxx.org/wiki/doku.php/development_roadmap
[easybugs]: https://bugs.launchpad.net/mixxx/+bugs?field.searchtext=&orderby=-importance&search=Search&field.status%3Alist=NEW&field.status%3Alist=CONFIRMED&field.status%3Alist=TRIAGED&field.status%3Alist=INPROGRESS&field.status%3Alist=INCOMPLETE_WITH_RESPONSE&field.status%3Alist=INCOMPLETE_WITHOUT_RESPONSE&assignee_option=any&field.assignee=&field.bug_reporter=&field.bug_commenter=&field.subscriber=&field.structural_subscriber=&field.tag=easy&field.tags_combinator=ANY&field.has_cve.used=&field.omit_dupes.used=&field.omit_dupes=on&field.affects_me.used=&field.has_patch.used=&field.has_branches.used=&field.has_branches=on&field.has_no_branches.used=&field.has_no_branches=on&field.has_blueprints.used=&field.has_blueprints=on&field.has_no_blueprints.used=&field.has_no_blueprints=on
diff --git a/SConscript b/SConscript
deleted file mode 100644
index 265043b9566..00000000000
--- a/SConscript
+++ /dev/null
@@ -1,1157 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-from __future__ import print_function
-import os
-import SCons
-import shutil
-import subprocess
-import time
-import datetime
-import glob
-import uuid
-from xml.dom import minidom
-import SCons.Script as SCons
-
-from build import util, depends
-
-mixxx_version = util.get_mixxx_version()
-branch_name = util.get_branch_name()
-vcs_revision = util.get_revision()
-vcs_name = util.get_current_vcs()
-print("WE ARE IN:", os.getcwd())
-print("Building ", branch_name, " - rev.", vcs_revision)
-
-plugins = []
-
-# Grab these from the SConstruct above us
-Import('build')
-Import('sources')
-
-env = build.env
-flags = build.flags
-
-# Make a static library of all Mixxx's sources. This library will be linked into
-# both mixxx and mixxx-test.
-mixxx_lib = env.StaticLibrary('libmixxx',
- [source for source in sources
- if str(source) != 'src/main.cpp'])
-# mixxx.qrc must not be bundled into libmixxx.a since the linker will not link
-# it into the resulting binary unless it is on the link command-line explicitly
-# (it has no link-time symbols that are needed by anything in Mixxx).
-mixxx_qrc = env.StaticObject(env.Qrc5('res/mixxx.cc', 'res/mixxx.qrc'))
-# libmixxx.a needs to precede all other libraries so that symbols it requires
-# end up in the linker's list of unresolved symbols before other libraries are
-# searched for symbols.
-env.Prepend(LIBS=mixxx_lib)
-mixxx_main = env.StaticObject('src/main.cpp')
-
-#Tell SCons to build Mixxx
-#=========================
-if build.platform_is_windows:
- dist_dir = 'dist%s' % build.bitwidth
- # Populate the stuff that changes in the .rc file
- fo = open(File('src/mixxx.rc.include').abspath, "w")
-
- str_list = []
- str_list.append('#define VER_FILEVERSION ')
- # Remove anything after ~ or - in the version number and replace the dots with commas
- str_list.append(mixxx_version.partition('~')[0].partition('-')[0].replace('.',','))
- if vcs_revision:
- str_list.append(','+str(vcs_revision))
- str_list.append('\n')
-
- str_list.append('#define VER_PRODUCTVERSION ')
- str_list.append(mixxx_version.partition('~')[0].partition('-')[0].replace('.',','))
- if vcs_revision:
- str_list.append(','+str(vcs_revision))
- str_list.append('\n')
-
- import datetime
- now = datetime.datetime.now()
- str_list.append('#define CUR_YEAR "'+str(now.year)+'"\n\n')
-
- if build.build_is_debug:
- str_list.append('#define DEBUG 1\n')
- if 'pre' in mixxx_version.lower():
- str_list.append('#define PRERELEASE 1\n')
-
- fo.write(''.join(str_list))
- fo.close()
-
- mixxx_rc = env.RES('src/mixxx.rc')
- mixxx_bin = env.Program('mixxx',
- [mixxx_main, mixxx_qrc, mixxx_rc],
- LINKCOM = [env['LINKCOM'], 'mt.exe -nologo -manifest ${TARGET}.manifest -outputresource:$TARGET;1'])
-elif build.platform_is_osx:
- # Bug #1258435: executable name must match CFBundleExecutable in the
- # Info.plist. For codesigned bundles it seems the CFBundleExecutable
- # must match the bundle name or else we SIGILL at startup (not sure
- # why).
- mixxx_bin = env.Program('Mixxx', [mixxx_main, mixxx_qrc])
-else:
- mixxx_bin = env.Program('mixxx', [mixxx_main, mixxx_qrc])
-
-# For convenience, copy the Mixxx binary out of the build directory to the
-# root. Don't do it on windows because the binary can't run on its own and needs
-# the DLLs present with it.
-if not build.platform_is_windows:
- copy_mixxx_bin = Command("../mixxx", mixxx_bin, Copy("$TARGET", "$SOURCE"))
- Default(copy_mixxx_bin)
-else:
- Default(mixxx_bin)
-
-test_bin = None
-def define_test_targets(default=False):
- global test_bin
- test_files = Glob('src/test/*.cpp', strings=True)
- test_env = env.Clone()
-
- test_env.Append(CPPPATH="lib/googletest-1.8.x/googletest/include")
- test_env.Append(LIBPATH="lib/googletest-1.8.x/googletest")
- test_env.Append(LIBS=['gtest'])
-
- test_env.Append(CPPPATH="lib/googletest-1.8.x/googlemock/include")
- test_env.Append(LIBPATH="lib/googletest-1.8.x/googlemock")
- test_env.Append(LIBS=['gmock'])
-
- test_env.Append(CPPPATH="lib/benchmark/include")
- test_env.Append(LIBPATH="lib/benchmark")
- test_env.Append(LIBS=['benchmark'])
-
- test_files = [test_env.StaticObject(filename)
- if filename !='src/test/main.cpp' else filename
- for filename in test_files]
-
- if build.platform_is_windows:
- # For SHGetValueA in Google's benchmark library.
- test_env.Append(LIBS=['Shlwapi'])
-
- # We want a terminal for tests.
- if build.toolchain_is_msvs:
- test_env['LINKFLAGS'].remove('/subsystem:windows,6.01')
- test_env['LINKFLAGS'].append('/subsystem:console,6.01')
- elif build.toolchain_is_gnu:
- test_env['LINKFLAGS'].remove('--subsystem,windows')
- test_env['LINKFLAGS'].append('--subsystem,console')
-
- # Currently both executables are built with /subsystem:windows
- # and the console is attached manually
- test_bin = test_env.Program(
- 'mixxx-test', [test_files, mixxx_qrc, mixxx_rc],
- LINKCOM = [env['LINKCOM'], 'mt.exe -nologo -manifest ${TARGET}.manifest -outputresource:$TARGET;1'])
- else:
- test_bin = test_env.Program('mixxx-test', [test_files, mixxx_qrc])
-
- if not build.platform_is_windows:
- copy_test_bin = Command("../mixxx-test", test_bin, Copy("$TARGET", "$SOURCE"))
- env.Alias('mixxx-test', copy_test_bin)
- # Running mixxx-test via a Command is hacky because it expects a
- # target. Using the source '../mixxx-test' makes the Command
- # depend on the Copy.
- run_test = Command('mixxx-test-results', '../mixxx-test', './mixxx-test')
- env.Alias('test', run_test)
-
- if default:
- Default(copy_test_bin)
- else:
- env.Alias('mixxx-test', test_bin)
- if default:
- Default(test_bin)
-
-
-# If the 'test' flag is 1, then build the mixxx-test target by default. If
-# 'test' is in the target list then run mixxx-test.
-build_tests_by_default = int(build.flags['test']) != 0
-build_tests = 'mixxx-test' in COMMAND_LINE_TARGETS
-run_tests = 'test' in COMMAND_LINE_TARGETS
-if build_tests or run_tests or build_tests_by_default:
- define_test_targets(default=build_tests_by_default)
-
-def construct_version(build, mixxx_version, branch_name, vcs_revision):
- if branch_name.startswith('release-'):
- branch_name = branch_name.replace('release-', '')
-
- # Include build type in the filename.
- build_type = 'release' if build.build_is_release else 'debug'
-
- # New, simpler logic: mixxx version, branch name, git revision,
- # release/build. Example: mixxx-1.12.0-master-gitXXXX-release
- return "%s-%s-%s%s-%s" % (mixxx_version, branch_name, vcs_name,
- vcs_revision, build_type)
-
-def ubuntu_construct_version(build, mixxx_version, branch_name, vcs_revision,
- ubuntu_version, distro_version):
- # The format of a Debian/Ubuntu version is:
- #
- # [epoch:]upstream_version[-debian_revision]
- #
- # A detailed description of the valid characters and sorting order of
- # versions can be found here:
- # https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version
- #
- # For package upgrades to work correctly, we want the following
- # orderings on package versions:
- #
- # nightly build < pre-alpha < alpha < beta < rc1 < rc2 < final release
- #
- # The sorting rules are complicated but the key detail is: "The lexical
- # comparison is a comparison of ASCII values modified so that all the
- # letters sort earlier than all the non-letters and so that a tilde
- # sorts before anything, even the end of a part."
- #
- # The Mixxx version stored in src/defs_version.h (the "mixxx_version"
- # parameter to this function) is formatted like:
- #
- # Pre Alpha: 2.0.0-alpha-pre
- # Alpha: 2.0.0-alpha
- # Beta: 2.0.0-beta
- # RC: 2.0.0-rc1
- # Final: 2.0.0
- #
- # Since hyphens are a separator character between the upstream version
- # and Debian version, we replace these with tildes.
- #
- # Other goals:
- # - We would like to know the branch and commit of a package.
- # - We would like the PPA to trump the official Debian package.
- #
- # The following versions are sorted from low to high order:
- # 1.9.9
- # 2.0.0~alpha~pre
- # 2.0.0~alpha
- # 2.0.0~beta~pre
- # 2.0.0~beta
- # 2.0.0~dfsg4 <- official Debian package version
- # 2.0.0~rc1
- # 2.0.0
- # 2.0.1~alpha~pre
- #
- # Our official Debian packages have a ~dfsg section, so in this case an
- # rc1 package in our PPA would trump an official Debian package
- # (probably not what we want but not too bad since we would probably
- # publish a "2.0.0" final to our PPA before the official Debian package
- # is even released.
- #
- # Note in the above sorted list that if the branch name were included
- # after the mixxx_version, 2.0.0~master would sort earlier than
- # 2.0.0~rc1~master! To prevent branch and revision tags from
- # interfering with package ordering we include them in the
- # debian_revision portion of the version. This ensures they are only
- # used for sorting if the upstream version of two packages is identical.
- upstream_version = mixxx_version.replace('-', '~')
- assert '_' not in upstream_version
-
- # Strip underscores and dashes in the branch name.
- branch_name = branch_name.strip('_-')
- assert branch_name and branch_name != '(no branch)'
-
- return "%s-%s~%s~%s%s~%s" % (upstream_version, ubuntu_version, branch_name,
- vcs_name, vcs_revision, distro_version)
-
-#Set up the install target
-#=========================
-
-#Mixxx binary
-binary_files = [mixxx_bin];
-if test_bin is not None:
- binary_files.append(test_bin)
-
-if build.bundle_pdbs:
- binary_files.append(env.SideEffect('mixxx.pdb', mixxx_bin))
-
-#Skins
-skin_files = Glob('#res/skins/*')
-
-#Controller mappings
-controllermappings_files = Glob('#res/controllers/*')
-
-# Translation files
-# QT 5 translations have been separated into several files, and most of the qt_xx.qm files contain just shortcuts to load the qtbase, qtmultimedia etc files.
-translation_files = Glob('#res/translations/*.qm') + Glob(os.path.join(build.env['QTDIR'], 'translations/qt_*.qm')) + Glob(os.path.join(build.env['QTDIR'], 'translations/qtbase_*.qm')) + Glob(os.path.join(build.env['QTDIR'], 'translations/qtmultimedia_*.qm')) + Glob(os.path.join(build.env['QTDIR'], 'translations/qtscript_*.qm')) + Glob(os.path.join(build.env['QTDIR'], 'translations/qtxmlpatterns_*.qm'))
-
-
-# Font files
-font_files = Glob('#res/fonts/*')
-
-#Keyboard mapping(s)
-keyboardmappings_files = Glob('#res/keyboard/*')
-
-#Documentation
-docs_files = Glob('#./LICENSE')
-docs_files += Glob('#./README')
-docs_files += Glob('#./Mixxx-Manual.pdf')
-
-#.desktop file for KDE/GNOME menu
-dotdesktop_files = Glob('#res/linux/mixxx.desktop')
-
-#.appdata.xml file for KDE/GNOME AppStream iniative
-dotappstream_files = Glob('#res/linux/mixxx.appdata.xml')
-
-#udev rule file for USB HID and Bulk controllers
-hidudev_files = Glob('#res/linux/mixxx-usb-uaccess.rules')
-
-#Icon file for menu entry
-icon_files = Glob('#res/images/mixxx_icon.svg')
-
-#Images for preferences dialog
-image_files = Glob('#res/images/preferences/*') # These are compiled in to the "mixxx" binary through mixxx.qrc
-
-#Windows DLLs
-
-dll_files = []
-if build.toolchain_is_msvs and not build.static_dependencies:
- # skip the MSVC DLLs in case they're in there too
- dll_files.extend(Glob('%s/*.dll' % build.winlib_path))
- dll_files.extend(Glob('%s/lib/*.dll' % build.winlib_path))
-
- if build.bundle_pdbs:
- dll_files.extend(Glob('%s/*.pdb' % build.winlib_path))
- dll_files.extend(Glob('%s/lib/*.pdb' % build.winlib_path))
-elif build.crosscompile and build.platform_is_windows and build.toolchain_is_gnu and not build.static_dependencies:
- # We're cross-compiling, grab these from the crosscompile bin
- # folder. How should we be doing this?
- dll_files = Glob('#/../../mixxx-win%slib-crossmingw' % build.bitwidth)
-
-qt_modules = depends.Qt.enabled_modules(build)
-
-if build.platform_is_windows:
- suffix = 'd.dll' if build.build_is_debug else '.dll'
- if not build.static_qt:
- qt_modules = ['$QTDIR/lib/' + module.replace('Qt', 'Qt5') + suffix
- for module in qt_modules]
- dll_files.extend(qt_modules)
- # https://doc.qt.io/qt-5/windows-deployment.html
- # "If dynamic OpenGL is used, you additionally need to include the
- # libraries required for ANGLE and software rendering. For ANGLE, both
- # libEGL.dll and libGLESv2.dll from Qt's lib directory are required as
- # well as the HLSL compiler from DirectX. The HLSL compiler library,
- # d3dcompiler_XX.dll, where XX is the version number that ANGLE
- # (libGLESv2) was linked against."
- dll_files.extend(['$QTDIR/bin/libEGL' + suffix,
- '$QTDIR/bin/libGLESv2' + suffix])
- d3dcompiler_path = util.find_d3dcompiler_dll(build.env)
- if d3dcompiler_path:
- dll_files.append(d3dcompiler_path)
-
-# Qt imageformats plugin
-imgfmtdll_files = []
-qt_imagesformats = depends.Qt.enabled_imageformats(build)
-
-suffix = 'd.dll' if build.build_is_debug else '.dll'
-if not build.static_qt:
- imgfmtdll_files.extend(['$QTDIR/plugins/imageformats/' + module + suffix for module in qt_imagesformats])
-# We don't have Qt's dll pdb files in our release build environements, so only if build is debug
-pdbSuffix = 'd.pdb' if (build.bundle_pdbs and build.build_is_debug) else ''
-if pdbSuffix:
- imgfmtdll_files.extend(['$QTDIR/plugins/imageformats/' + module + pdbSuffix for module in qt_imagesformats])
-
-sqldll_files = []
-if int(flags.get('qt_sqlite_plugin', 0)):
- # TODO(rryan): Add the SQLite DLL For Qt5.
- pass
-
-if build.platform_is_linux or build.platform_is_bsd:
- flags['prefix'] = ARGUMENTS.get('prefix', '/usr/local')
- if not os.path.exists(flags['prefix']):
- print("Error: Prefix path does not exist!")
- Exit(1)
- else:
- #install_root is used in Debian/Ubuntu packaging (check the debian/rules file in the Ubuntu package)
- #Basically, the flags['prefix'] is compiled into strings in Mixxx, whereas the install_root is not. When you're
- #building a Debian package, pbuilder wants to install Mixxx to a temporary directory, but you still need
- #the compiled-in strings using /usr as the prefix. That's why we have install_root and flags['prefix'].
- install_root = ARGUMENTS.get('install_root', flags['prefix'])
- print("Install root: " + install_root)
- unix_share_path = os.path.join(install_root,
- env.get('SHAREDIR', default='share'))
- unix_bin_path = os.path.join(install_root,
- env.get('BINDIR', default='bin'))
-
- binary = env.Install(unix_bin_path, binary_files)
- skins = env.Install(os.path.join(unix_share_path, 'mixxx', 'skins'), skin_files)
- fonts = env.Install(os.path.join(unix_share_path, 'mixxx', 'fonts'), font_files)
- controllermappings = env.Install(os.path.join(unix_share_path, 'mixxx', 'controllers'), controllermappings_files)
- translations = env.Install(os.path.join(unix_share_path, 'mixxx', 'translations'), translation_files)
- keyboardmappings = env.Install(os.path.join(unix_share_path, 'mixxx', 'keyboard'), keyboardmappings_files)
- dotdesktop = env.Install(os.path.join(unix_share_path, 'applications'), dotdesktop_files)
- dotappstream = env.Install(os.path.join(unix_share_path, 'appdata'), dotappstream_files)
- docs = env.Install(os.path.join(unix_share_path, 'doc', 'mixxx'), docs_files)
- icon = env.Install(os.path.join(unix_share_path, 'pixmaps'), icon_files)
-
- # NOTE(rryan): Hack to detect when we're Debian packaging.
- building_debian_package = 'debian/tmp/usr' in install_root
- udev_root = '/etc/udev/rules.d'
- hidudev = env.Install(udev_root, hidudev_files)
-
- #Makes each of those Install builders get fired off when you run "scons install" :)
- env.Alias('install', binary)
- env.Alias('install', skins)
- env.Alias('install', fonts)
- env.Alias('install', controllermappings)
- env.Alias('install', translations)
- env.Alias('install', keyboardmappings)
- env.Alias('install', docs)
- env.Alias('install', dotdesktop)
- env.Alias('install', dotappstream)
- env.Alias('install', icon)
-
- if not building_debian_package and os.access(udev_root, os.W_OK):
- env.Alias('install', hidudev)
-
-
-#Build the Mixxx.app bundle
-if build.platform_is_osx and 'bundle' in COMMAND_LINE_TARGETS:
- #Mixxx build variables
- VOLNAME="Mixxx" #tmp tmp tmp, it's unclean to pass this into build_dmg this way. perhaps pass it in the env?
- ARCH = 'ppc' if build.machine in ['powerpc', 'powerpc64'] else 'macintel'
- ARCH += ("64" if build.machine_is_64bit else "32")
-
- DMG_ICON="#res/osx/VolumeIcon.icns"
-
- # In Qt 5, the SQLite driver was moved out of QtSql and into a plugin.
- sql_dylibs = ["libqsqlite.dylib"]
-
- qt_plugins = (
- [("iconengines", e) for e in ["libqsvgicon.dylib"]] +
- # Left out libqmng and libqtiff to save space.
- [("imageformats", e) for e in
- ["libqgif.dylib", "libqjpeg.dylib", "libqsvg.dylib"]] +
- # Cocoa support moved to a plugin in Qt 5.
- [("platforms", "libqcocoa.dylib")] +
- [("sqldrivers", e) for e in sql_dylibs] +
- [("styles", "libqmacstyle.dylib")]
- )
-
- resource_map = {}
- for tfile in translation_files:
- resource_map[str(tfile)] = 'translations'
-
- qtdir = build.env['QTDIR']
- qt_frameworks = depends.Qt.find_framework_libdir(qtdir)
- if not qt_frameworks:
- raise Exception('Could not find frameworks in Qt directory: %s' % qtdir)
- #qt_menu.nib for Cocoa Qt 4.7+
- menu_nib = os.path.join(qt_frameworks, 'QtGui.framework',
- 'Resources', 'qt_menu.nib')
- otool_local_paths = [os.path.expanduser("~/Library/Frameworks"),
- qt_frameworks,
- "/Library/Frameworks",
- "/Network/Library/Frameworks",
- "/usr/local/lib",
- "/opt/local/lib",
- "/sw/local/lib"]
- otool_system_paths = ["/System/Library/Frameworks",
- "/Network/Library/Frameworks",
- "/usr/lib"]
- mixxx_osxlib_path = SCons.ARGUMENTS.get('osxlib', None)
- if mixxx_osxlib_path:
- otool_local_paths = [mixxx_osxlib_path,] + otool_local_paths
-
- qtplugindir = SCons.ARGUMENTS.get('qtplugindir', None)
- if not qtplugindir:
- #qtplugindir = '/Developer/Applications/Qt/'
- qtplugindir = qtdir
- sources = [mixxx_bin,
- '#res/osx/application.icns',
- Dir('#res/skins/'),
- Dir('#res/controllers/'),
- Dir('#res/fonts/'),
- translation_files,
- Dir('#res/keyboard/'),
- Dir('#res/doc/'),
- Dir(menu_nib),
- File("#README"),
- File("#LICENSE")]
- bundle = env.App(
- "Mixxx_bundle",
- sources,
- PLUGINS=plugins, ##XXX test what happens if we don't pass any plugins
- #Qt plugins ((Qt *NEEDS* its plugins in specific locations or it refuses to find them, however this is clearly awkward to write out like this.. maybe))
- QT_HACK = [(p_tgt_dir, os.path.join(qtplugindir, "plugins", p_tgt_dir, p)) for p_tgt_dir, p in qt_plugins], #sigh :(
- APP_RESOURCES_MAP=resource_map,
- IDENTIFIER="org.mixxx.mixxx",
- DISPLAY_NAME="Mixxx",
- VERSION=mixxx_version,
- SHORT_VERSION=mixxx_version,
- COPYRIGHT="Copyright © 2001-%s Mixxx Development Team" % datetime.datetime.now().year,
- MINIMUM_OSX_VERSION=util.get_osx_min_version(),
- CATEGORY="public.app-category.music",
- OTOOL_LOCAL_PATHS=otool_local_paths,
- OTOOL_SYSTEM_PATHS=otool_system_paths,
- FOR_APP_STORE=int(build.flags['macappstore']) > 0,
- )
- env.Alias('bundle', bundle)
-
- codesign_installer_identity = SCons.ARGUMENTS.get('osx_codesign_installer_identity', None)
- codesign_application_identity = SCons.ARGUMENTS.get('osx_codesign_application_identity', None)
- codesign_keychain = SCons.ARGUMENTS.get('osx_codesign_keychain', None)
- codesign_keychain_password = SCons.ARGUMENTS.get('osx_codesign_keychain_password', None)
- codesign_entitlements = SCons.ARGUMENTS.get('osx_codesign_entitlements', None)
- # CodeSign needs to take sources for it source so that there is an input
- # that changse. Otherwise SCons will think the CodeSign target is up to
- # date and not run it.
- codesign = env.CodeSign(
- 'Mixxx_codesign',
- sources,
- CODESIGN_INSTALLER_IDENTITY=codesign_installer_identity,
- CODESIGN_APPLICATION_IDENTITY=codesign_application_identity,
- CODESIGN_KEYCHAIN=codesign_keychain,
- CODESIGN_KEYCHAIN_PASSWORD=codesign_keychain_password,
- CODESIGN_ENTITLEMENTS=codesign_entitlements)
- env.AlwaysBuild(codesign)
- env.Alias('sign', codesign)
-
- package_name = 'mixxx'
- package_version = construct_version(build, mixxx_version, branch_name,
- vcs_revision)
- dmg_name = '%s-%s-%s' % (package_name, package_version, ARCH)
- dmg = env.Dmg(dmg_name, [bundle, ] + docs_files, VOLNAME=VOLNAME, ICON = DMG_ICON)
- env.Alias('package', dmg)
-
-if build.platform_is_windows:
- base_dist_dir = '#' + dist_dir
- skins = env.Install(os.path.join(base_dist_dir, "skins"), skin_files)
- controllermappings = env.Install(os.path.join(base_dist_dir, "controllers"), controllermappings_files)
- fonts = env.Install(os.path.join(base_dist_dir, "fonts"), font_files)
- translations = env.Install(os.path.join(base_dist_dir, "translations"), translation_files)
- keyboardmappings = env.Install(os.path.join(base_dist_dir, "keyboard"), keyboardmappings_files)
- docs = env.Install(os.path.join(base_dist_dir, "doc/"), docs_files)
- #icon = env.Install(base_dist_dir+"", icon_files)
- dlls = env.Install(base_dist_dir+"/", dll_files)
- binary = env.Install(base_dist_dir+"/", binary_files)
-
- #Always trigger these install builders when compiling on Windows
- env.Alias('mixxx', skins)
- env.Alias('mixxx', controllermappings)
- env.Alias('mixxx', fonts)
- env.Alias('mixxx', translations)
- env.Alias('mixxx', keyboardmappings)
- env.Alias('mixxx', docs)
- env.Alias('mixxx', dlls)
- #env.Alias('mixxx', icon)
- env.Alias('mixxx', binary)
-
- binaries_to_codesign = [binary, dlls]
-
- # imageformats DLL
- if imgfmtdll_files:
- imageformats_dll = env.Install(os.path.join(base_dist_dir, "imageformats"), imgfmtdll_files)
- binaries_to_codesign.append(imageformats_dll)
- env.Alias('mixxx', imageformats_dll)
-
- # QSQLite DLL
- if sqldll_files:
- sql_dlls = env.Install(os.path.join(base_dist_dir, "sqldrivers"), sqldll_files)
- binaries_to_codesign.append(sql_dlls)
- env.Alias('mixxx', sql_dlls)
-
- if 'sign' in COMMAND_LINE_TARGETS:
- codesign_subject_name = SCons.ARGUMENTS.get('windows_codesign_subject_name', '')
- if not codesign_subject_name:
- raise Exception('Code-signing was requested but windows_codesign_subject_name was not provided.')
- codesign = env.SignTool(
- 'Mixxx_signtool',
- binaries_to_codesign,
- SUBJECT_NAME=codesign_subject_name)
- env.Alias('sign', codesign)
-
-def BuildRelease(target, source, env):
- print("==== Mixxx Post-Build Checks ====")
- print("You have built version %s" % mixxx_version)
- if build.build_is_debug:
- print("YOU ARE ABOUT TO PACKAGE A DEBUG BUILD!!")
- print("Binary has size ", end='')
- if build.platform_is_windows:
- os.system('for %I in ('+dist_dir+'\mixxx.exe) do @echo %~zI')
- else:
- os.system('ls -lh '+dist_dir+'/mixxx.exe | cut -d \' \' -f 5')
- print("Installer file ", end='')
- package_name = 'mixxx'
-
- package_version = construct_version(build, mixxx_version, branch_name,
- vcs_revision)
- arch = "x64" if build.machine_is_64bit else "x86"
- msi_name = '%s-%s-%s.msi' % (package_name, package_version, arch)
- print(msi_name)
- print("Top line of README, check version:")
- if build.platform_is_windows:
- os.system('for /l %l in (1,1,1) do @for /f "tokens=1,2* delims=:" %a in (\'findstr /n /r "^" README ^| findstr /r "^%l:"\') do @echo %b')
- else:
- os.system('head -n 1 README')
- print("Top 2 lines of LICENSE, check version and copyright dates:")
- if build.platform_is_windows:
- os.system('for /l %l in (1,1,2) do @for /f "tokens=1,2* delims=:" %a in (\'findstr /n /r "^" LICENSE ^| findstr /r "^%l:"\') do @echo %b')
- else:
- os.system('head -n 2 LICENSE')
-
- #if (raw_input("Go ahead and build installer (yes/[no])? ") == "yes"):
- if True:
- # TODO(XXX): Installing a runtime isn't specific to MSVS?
- if build.toolchain_is_msvs:
- redist_file = 'vc_redist.%s.exe' % arch
- print("Searching for the Visual C++ DLL installer package" + redist_file)
- # Check for the runtime installer in the winlib root.
- redist_path = '%s' % os.path.join(build.winlib_path, redist_file)
- print(" ", redist_path,)
- if not os.path.isfile(redist_path):
- raise Exception('Could not find the MSVC++ runtime installer.')
-
- print("Now building installation package...")
-
- print("Looking for WIX Toolset...")
- wix_path = None
- if not build.crosscompile and build.platform_is_windows:
- wix_directory = os.getenv('WIX')
- wix_path = '%s' % os.path.join(wix_directory, "bin")
- elif build.crosscompile and build.platform_is_windows:
- # TODO(XXX) How to handle that ? what does this exactly means ?
- raise NotImplementedError
-
- if not wix_directory:
- raise Exception ('Cannot find WIX Toolkit. Do you have it installed?')
- else:
- print(" Found Wix Toolset in " + wix_path)
-
- WinSDK_path = 'build\\wix'
-
- if not os.path.isfile(os.path.join(WinSDK_path, 'wisubstg.vbs')):
- raise Exception ('can not find ' + WinSDK_path + '\wisubstg.vbs')
-
- if not os.path.isfile(os.path.join(WinSDK_path, 'WiLangId.vbs')):
- raise Exception ('can not find ' + WinSDK_path + '\WiLangId.vbs')
-
- # Generating random ProductID (should change on every run)
- # and put it in mixxx.wxs using the template
- ProductID = str(uuid.uuid1()).upper()
- with open("build/wix/ProductID.wxi.in", "rt") as fin:
- with open("build/wix/ProductID.wxi", "wt") as fout:
- for line in fin:
- fout.write(line.replace('@PRODUCT_ID@', ProductID))
- fin.close()
- fout.close()
-
- # The default language
- defaultLanguage="en-us"
- # The langIds contained in the installer. starting with LangId of the default language
- langIds="1033"
-
- winArch = "x64" if build.machine_is_64bit else "x86"
-
- # Auto-create wxs file for each subdir and compile them
- print("*** Building intermediate files")
- for subdir in next(os.walk(dist_dir))[1]:
- print(" " + dist_dir + "\\" + subdir)
- # Exclude doc and imageformats helper DLLs, they are bundled elsewhere
- if subdir in ['doc', 'imageformats']:
- continue
- command = '"%(wix)s\\heat.exe" dir %(distdir)s\%(sub)s -nologo -sfrag -suid -ag -srd -cg %(sub)sComp -dr %(sub)sDir -out build\wix\subdirs\%(sub)s.wxs -sw5150 -var var.%(sub)sVar' % \
- {'wix': wix_path,
- 'distdir': dist_dir,
- 'sub': subdir}
- print("Using Command: " + command)
- subprocess.check_call(command)
- command = '"%(wix)s\\candle.exe" -nologo -dWINLIBPATH=%(winlibpath)s -dPlatform=%(arch)s -d%(sub)sVar=%(distdir)s\%(sub)s -arch %(arch)s -out build\wix\subdirs\%(sub)s.wixobj build\wix\subdirs\%(sub)s.wxs' % \
- {'wix': wix_path,
- 'winlibpath': build.winlib_path,
- 'arch': winArch,
- 'distdir': dist_dir,
- 'sub': subdir}
- print("Using Command: " + command)
- subprocess.check_call(command)
-
- # Handle QT's imageformats helper DLLs if dynamic QT
- imageformats = "no"
- if os.path.exists(os.path.join(dist_dir,"imageformats")) and not build.static_qt:
- imageformats = "yes"
- command = '"%(wix)s\\heat.exe" dir %(distdir)s\%(sub)s -nologo -sfrag -suid -ag -srd -cg %(sub)sComp -dr %(sub)sDir -out build\wix\subdirs\%(sub)s.wxs -sw5150 -var var.%(sub)sVar' % \
- {'wix': wix_path,
- 'distdir': dist_dir,
- 'sub': "imageformats"}
- print("Using Command: " + command)
- subprocess.check_call(command)
-
- command = '"%(wix)s\\candle.exe" -nologo -dWINLIBPATH=%(winlibpath)s -dPlatform=%(arch)s -d%(sub)sVar=%(distdir)s\%(sub)s -arch %(arch)s -out build\wix\subdirs\%(sub)s.wixobj build\wix\subdirs\%(sub)s.wxs' % \
- {'wix': wix_path,
- 'winlibpath': build.winlib_path,
- 'arch': winArch,
- 'distdir': dist_dir,
- 'sub': "imageformats"}
- print("Using Command: " + command)
- subprocess.check_call(command)
-
- # Harvest main DLL from install dir
- command = '"%(wix)s\\heat.exe" dir %(distdir)s -nologo -sfrag -suid -ag -srd -cg mainDLLCompGroup -dr INSTALLDIR -out build\wix\subdirs\mainDLL.wxs -sw5150 -var var.SourceDir -t build\wix\only-dll.xslt' % \
- {'wix': wix_path,
- 'distdir': dist_dir}
- print("Using Command: " + command)
- subprocess.check_call(command)
-
- command = '"%(wix)s\\candle.exe" -nologo -dWINLIBPATH=%(winlibpath)s -dPlatform=%(arch)s -dSourceDir=%(distdir)s -arch %(arch)s -out build\wix\subdirs\mainDLL.wixobj build\wix\subdirs\mainDLL.wxs' % \
- {'wix': wix_path,
- 'winlibpath': build.winlib_path,
- 'arch': winArch,
- 'distdir': dist_dir}
- print("Using Command: " + command)
- subprocess.check_call(command)
-
- # Harvest main PDB from install dir if they exist
- isPdb = "no"
- if build.bundle_pdbs and glob.glob(os.path.join(dist_dir, "*.pdb")):
- isPdb = "yes"
- command = '"%(wix)s\\heat.exe" dir %(distdir)s -nologo -sfrag -suid -ag -srd -cg mainPDBCompGroup -dr INSTALLDIR -out build\wix\subdirs\mainPDB.wxs -sw5150 -var var.SourceDir -t build\wix\only-pdb.xslt' % \
- {'wix': wix_path,
- 'distdir': dist_dir}
- print("Using Command: " + command)
- subprocess.check_call(command)
-
- command = '"%(wix)s\\candle.exe" -nologo -dWINLIBPATH=%(winlibpath)s -dPlatform=%(arch)s -dSourceDir=%(distdir)s -arch %(arch)s -out build\wix\subdirs\mainPDB.wixobj build\wix\subdirs\mainPDB.wxs' % \
- {'wix': wix_path,
- 'winlibpath': build.winlib_path,
- 'arch': winArch,
- 'distdir': dist_dir}
- print("Using Command: " + command)
- subprocess.check_call(command)
-
- # Compile main wix files
- command = '"%(wix)s\\candle.exe" -nologo -dWINLIBPATH=%(winlibpath)s -dPlatform=%(arch)s -dImageformats=%(isimageformats)s -dPDB=%(isPDB)s -arch %(arch)s -out build\wix\mixxx.wixobj build\wix\mixxx.wxs' % \
- {'wix': wix_path,
- 'winlibpath': build.winlib_path,
- 'isimageformats': imageformats,
- 'isPDB': isPdb,
- 'arch': winArch}
- print("Using Command: " + command)
- subprocess.check_call(command)
-
- # Build package for default language
- print("*** Building package for default language " + defaultLanguage)
- command = '"%(wix)s\\light.exe" -cc .\ -nologo -sw1076 -spdb -ext WixUIExtension -cultures:%(deflang)s -loc build\wix\Localization\mixxx_%(deflang)s.wxl -out %(package_name)s build\wix\*.wixobj build\wix\subdirs\*.wixobj' % \
- {'wix': wix_path,
- 'deflang': defaultLanguage,
- 'package_name': 'part.' + msi_name}
- print("Using Command: " + command)
- subprocess.check_call(command)
-
- bundlelocfile = open("build/wix/bundle/bundleloc.wxs", "w")
- bundlelocfile.write("\n")
- bundlelocfile.write("\n")
- bundlelocfile.write(" \n")
- bundlelocfile.write(" \n")
-
- for file in glob.glob('build\wix\Localization\mixxx_*.wxl'):
- doc = minidom.parse(file)
- wixloc = doc.getElementsByTagName("WixLocalization")[0]
- culture = wixloc.getAttribute("Culture")
- strings = doc.getElementsByTagName("String")
- LCID = None
- for string in strings:
- if string.getAttribute('Id') == "Language":
- LCID = string.firstChild.data
- break
-
- if not LCID:
- print("LCID not found, skipping file " + file)
- continue
-
- bundlelocfile.write(" \n" %\
- {'culture': culture,
- 'LCID': LCID}
- )
-
- # Do not build localized MSI if it's default language
- if culture == defaultLanguage:
- continue
-
- print("*** Building package transform for locale %(culture)s LangID %(LCID)s" % \
- {'culture': culture,
- 'LCID': LCID})
-
- command = '"%(wix)s\\light.exe" -cc .\ -reusecab -nologo -sw1076 -spdb -ext WixUIExtension -cultures:%(lang)s,%(deflang)s -loc %(wxl_file)s -out %(lang)s.msi build\wix\*.wixobj build\wix\subdirs\*.wixobj' % \
- {'wix': wix_path,
- 'lang': culture,
- 'deflang': defaultLanguage,
- 'wxl_file': file}
- print("Using Command: " + command)
- subprocess.check_call(command)
-
- command = '"%(wix)s\\torch.exe" -nologo -p -t language %(package_name)s %(lang)s.msi -o %(lang)s.mst' % \
- {'wix': wix_path,
- 'lang': culture,
- 'package_name': 'part.' + msi_name}
- print("Using Command: " + command)
- subprocess.check_call(command)
-
- command = 'cscript "%(winsdk)s\wisubstg.vbs" %(package_name)s %(lang)s.mst %(langid)s' % \
- {'winsdk': WinSDK_path,
- 'lang': culture,
- 'package_name': 'part.' + msi_name,
- 'langid': LCID}
- print("Using Command: " + command)
- subprocess.check_call(command)
-
- langIds = langIds + "," + LCID
- os.remove(culture + ".msi")
- os.remove(culture + ".mst")
-
- print("*** Add all supported languages to MSI Package attribute")
- command = 'cscript "%(winsdk)s\WiLangId.vbs" %(package_name)s Package %(langid)s' % \
- {'winsdk': WinSDK_path,
- 'package_name': 'part.' + msi_name,
- 'langid': langIds}
- print("Using Command: " + command)
- subprocess.check_call(command)
-
- bundlelocfile.write(" \n")
- bundlelocfile.write(" \n")
- bundlelocfile.write("\n")
- bundlelocfile.close()
-
- # Everything is OK, now rename the msi to final name
- if os.path.isfile(msi_name):
- os.remove(msi_name)
- os.rename('part.' + msi_name, msi_name)
-
- print("*** Compiling Bundle")
- # Compile bundle wix file
- command = '"%(wix)s\\candle.exe" -ext WixUtilExtension -ext WixBalExtension -nologo -dWINLIBPATH=%(winlibpath)s -dPlatform=%(arch)s -dMSIPackage=%(package_name)s -arch %(arch)s -out build\\wix\\bundle\\bundle.wixobj build\\wix\\bundle\\bundle.wxs' % \
- {'wix': wix_path,
- 'winlibpath': build.winlib_path,
- 'arch': winArch,
- 'package_name': msi_name}
- print("Using Command: " + command)
- subprocess.check_call(command)
- # bundle localisation references
- command = '"%(wix)s\\candle.exe" -ext WixUtilExtension -ext WixBalExtension -nologo -dWINLIBPATH=%(winlibpath)s -dPlatform=%(arch)s -dMSIPackage=%(package_name)s -arch %(arch)s -out build\\wix\\bundle\\bundleloc.wixobj build\\wix\\bundle\\bundleloc.wxs' % \
- {'wix': wix_path,
- 'winlibpath': build.winlib_path,
- 'arch': winArch,
- 'package_name': msi_name}
- print("Using Command: " + command)
- subprocess.check_call(command)
- exe_name = os.path.splitext(msi_name)[0] + '.exe'
- command = '"%(wix)s\\light.exe" -cc .\ -nologo -sw1076 -spdb -ext WixUtilExtension -ext WixBalExtension -dMSIPackage=%(msi_name)s -cultures:%(deflang)s -loc build\wix\Localization\mixxx_%(deflang)s.wxl -out %(package_name)s build\\wix\\bundle\\*.wixobj' % \
- {'wix': wix_path,
- 'deflang': defaultLanguage,
- 'msi_name': msi_name,
- 'package_name': exe_name}
- print("Using Command: " + command)
- subprocess.check_call(command)
-
- if 'sign' in COMMAND_LINE_TARGETS:
- from build.windows import signtool
- codesign_subject_name = SCons.ARGUMENTS.get('windows_codesign_subject_name', '')
- if not codesign_subject_name:
- raise Exception('Code-signing was requested but windows_codesign_subject_name was not provided.')
-
- print("*** Signing Bundle")
- # In addition to simply signing the installer executable, we have to
- # extract and sign the "burn engine". See
- # http://wixtoolset.org/documentation/manual/v3/overview/insignia.html for details.
- command = ("%(wix)s\\insignia.exe -ib %(package_name)s -o setup.exe" % {
- "wix": wix_path,
- "package_name": exe_name,
- })
- print("Using Command: " + command)
- subprocess.check_call(command)
-
- # Imperatively sign the file since the whole WiX process is imperative.
- signtool.signtool_path(codesign_subject_name, 'setup.exe')
-
- command = ("%(wix)s\\insignia.exe -ab setup.exe %(package_name)s -o %(package_name)s" % {
- "wix": wix_path,
- "package_name": exe_name,
- })
- print("Using Command: " + command)
- subprocess.check_call(command)
-
- # Now sign the final package imperatively.
- signtool.signtool_path(codesign_subject_name, exe_name)
-
- # Some cleaning before leaving
- for file in glob.glob('*.cab'):
- os.remove(file)
- for file in glob.glob('build\wix\*.wixobj'):
- os.remove(file)
- for file in glob.glob('build\wix\subdirs\*.wixobj'):
- os.remove(file)
- for file in glob.glob('build\wix\subdirs\*.wxs'):
- os.remove(file)
- os.remove(msi_name)
-
- else:
- print("Aborted building installer")
-
-# Do release things
-versionbld = Builder(action = BuildRelease, suffix = '.foo', src_suffix = '.bar')
-env.Append(BUILDERS = {'BuildRelease' : versionbld})
-
-if 'makerelease' in COMMAND_LINE_TARGETS:
- makerelease = env.BuildRelease('', binary_files)
- env.Alias('makerelease', makerelease)
-
-def ubuntu_append_changelog(debian_dir,
- package_name, package_version,
- description,
- distro='lucid',
- urgency='low',
- author="Mixxx Buildbot "):
- now_formatted = time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime())
- new_entry = [
- "%s (%s) %s; urgency=%s" % (package_name, package_version, distro, urgency),
- "",
- description,
- "",
- " -- %s %s" % (author, now_formatted),
- "",
- ]
- lines = []
- with open(os.path.join(debian_dir, 'changelog'), 'r') as changelog:
- lines = list(changelog)
- with open(os.path.join(debian_dir, 'changelog'), 'w') as changelog:
- changelog.writelines(["%s\n" % x for x in new_entry])
- changelog.writelines(lines)
-
-def ubuntu_cleanup():
- os.system('rm -rf ubuntu')
- os.mkdir('ubuntu')
-
-# Build the Ubuntu package
-def BuildUbuntuPackage(target, source, env):
- global mixxx_version
- print("==== Mixxx Post-Build Checks ====")
- print("You have built version " + mixxx_version)
- print("\n\n")
-
- print("Top line of README, check version:")
- os.system('head -n 1 README')
- print()
- print("Top 2 lines of LICENSE, check version and copyright dates:")
- os.system('head -n 2 LICENSE')
- print()
- print("Top line of debian/ubuntu changelog, check version:")
- os.system('head -n 1 build/debian/changelog')
- print()
-
- print("Now building DEB package...")
- print()
-
- arch = 'amd64' if build.machine_is_64bit else 'i386'
-
- package_target = ARGUMENTS.get('package', None)
- ubuntu_distros = ARGUMENTS.get('ubuntu_dist', None)
- if ubuntu_distros is None:
- print("You did not specify an Ubuntu distribution to target. Specify one with the ubuntu_dist flag.")
- # TODO(XXX) default to their current distro? the .pbuilderrc does this
- return
- ubuntu_version = ARGUMENTS.get('ubuntu_version', '0ubuntu1')
- ubuntu_ppa = ARGUMENTS.get('ubuntu_ppa', None)
-
- ubuntu_distros = ubuntu_distros.split(',')
-
- # Big hack for beta PPA upload. We need LP to believe that our original
- # package version is always changing otherwise it will reject our orig
- # source tarball.
- if ubuntu_ppa and 'mixxxbetas' in ubuntu_ppa:
- mixxx_version = '%s-%s%s' % (mixxx_version, vcs_name, vcs_revision)
-
- # Destroy ubuntu/ and create it
- ubuntu_cleanup()
-
- package_name = 'mixxx'
-
- # directory and original tarball need to have the upstream-release
- # version, NOT the package version. For example:
- # upstream version: 1.10.0-beta1
- # package version: 1.10.0-beta1-0ubuntu1~bzr2206
- # directory name: mixxx-1.10.0-beta1
- # original tarball: mixxx_1.10.0-beta1.orig.tar.gz
-
- mixxx_dir = '%s-%s' % (package_name, mixxx_version)
- # The underscore is super important here to make the deb package work
- mixxx_tarball = "%s_%s.orig.tar.gz" % (package_name, mixxx_version)
-
- build_dir = os.path.join('ubuntu', mixxx_dir)
-
- if os.path.exists(build_dir):
- print("* Cleaning up %s (cwd: %s)" % (build_dir, os.getcwd()))
- print
- os.system('rm -rf %s' % build_dir) # be careful.
-
- # TODO: make a get flags arg to accept a revision which can override this and checkout of a specific SVN rev for the package
-
- # Export the source folder
- print("* Exporting source folder from current workspace (%s rev: %s)" % (vcs_name,
- vcs_revision))
- print()
- util.export_source('.', build_dir)
-
- # Copy a patch to be included in the exported build sources (this can also be something like src/SConscript, /build/debian/rules)
- if os.path.exists('post-export-patch'):
- print("* Applying post export patch")
- print()
- os.system('cp --dereference -r post-export-patch/* %s' % build_dir)
-
- # Write a build.h to the exported directory. Later code looks for a
- # build.h in the mixxx/ directory and moves it to build.build_dir/
- # instead of generating.
- util.write_build_header(os.path.join(build_dir, 'build.h'))
-
- os.chdir('ubuntu')
-
- # Tar the source code
- print("* Tarring source directory to '%s' ... (this can take a couple minutes)" % os.path.join(os.getcwd(), mixxx_tarball))
- print()
- os.system('rm -f "%s"' % mixxx_tarball) #Remove old tarball
- os.system('tar --exclude build/debian --exclude=debian --exclude=debian/* -czf "%s" %s' % (mixxx_tarball, mixxx_dir))
-
- os.chdir(mixxx_dir)
- # Copy the debian folder from /build/debian to exported source folder root
- print("* Copying Debian build directory from build/debian to debian (cwd: %s)" % os.getcwd())
- print()
- os.system('cp -r build/debian .')
- os.system('cp res/linux/mixxx-usb-uaccess.rules ./debian/mixxx.mixxx-usb.udev')
-
- scons_flags = ' '.join([
- 'optimize=portable',
- 'virtualize=0',
- 'mad=1',
- 'localecompare=1',
- 'qt_sqlite_plugin=0',
- 'build=' + build.build,
- ])
-
- # Replace environment variables in the rules file.
- # TODO(rryan) something more elegant? I don't know a better way. When
- # Ubuntu build servers build us we don't get the chance to pass
- # environment variables in.
- with open('debian/rules', 'r') as fr:
- rules = fr.read()
- rules = rules.replace('MIXXX_SCONS_FLAGS = ""',
- 'MIXXX_SCONS_FLAGS = %s' % scons_flags)
-
- with open('debian/rules', 'w') as fw:
- fw.write(rules)
-
- for ubuntu_distro in ubuntu_distros:
- # if a control.$distro file exists, use it
- if os.path.exists('debian/control.%s' % ubuntu_distro):
- os.system('cp debian/control.%s debian/control' % ubuntu_distro)
- package_version = ubuntu_construct_version(build, mixxx_version,
- branch_name, vcs_revision,
- ubuntu_version, ubuntu_distro)
-
- ubuntu_signing_identity = SCons.ARGUMENTS.get('ubuntu_signing_identity', "Mixxx Buildbot ")
-
- # Add a changelog record for this package
- if build.build_is_debug:
- description = " * Experimental build of branch '%s' at revision %s" % (branch_name, vcs_revision)
- ubuntu_append_changelog('debian', package_name, package_version,
- description, distro=ubuntu_distro,
- author=ubuntu_signing_identity)
- else:
- description = " * New upstream release."
- ubuntu_append_changelog('debian', package_name, package_version,
- description,
- distro=ubuntu_distro,
- author=ubuntu_signing_identity)
-
- # Run pbuilder
- print("* Starting pbuilder ... (cwd: %s)" % os.getcwd())
- print()
-
- num_jobs = GetOption('num_jobs')
- command = ['MIXXX_SCONS_FLAGS="%s"' % scons_flags,
- 'ARCH=%s' % arch,
- 'DIST=%s' % ubuntu_distro,
- # Pass the scons -jX option in in
- # DEB_BUILD_OPTIONS. The Debian package rules file
- # reads this option to set the -jX flag on the scons
- # commands it runs. We disable Debian package
- # optimizations via noopt because we handle our own
- # optimization flags.
- 'DEB_BUILD_OPTIONS="noopt parallel=%s"' % num_jobs]
-
-
- if package_target == 'source':
- command.extend(['debuild',
- # Preserve the MIXXX_SCONS_FLAGS and DEB_BUILD_OPTIONS
- # environment variable.
- '-eMIXXX_SCONS_FLAGS',
- '-eDEB_BUILD_OPTIONS',
- '-S', '-sa',])
- else:
- command.extend(['pdebuild', '--', '--buildresult ./'])
- result = os.system(' '.join(command))
-
- source_changes_file = os.path.join(
- '..', '%s_%s_source.changes' % (package_name, package_version))
- if package_target == 'source':
- if result == 0 and os.path.exists(source_changes_file):
- print("* Done! Signed source package is in ubuntu/")
- print()
- else:
- print("* Build failed.")
- print()
- raise Exception('Ubuntu source package build/signing failed.')
- else:
- result_file = "%s_%s_%s.deb" % (package_name, package_version, arch)
-
- # Since we might build for multiple distros we need to
- # insert the distro name into the filename.
- # HACK(rryan): filenames for Ubuntu packaging in general
- # are a big mess but we only distribute files in this
- # code path (package_target != 'source') via
- # downloads.mixxx.org so we may as well make the
- # filenames match the Windows/OSX builds.
- version = construct_version(build, mixxx_version,
- branch_name, vcs_revision)
- dest_filename = '-'.join((package_name, version,
- ubuntu_distro, arch))
- dest_deb_filename = "%s.deb" % dest_filename
- # Also rename the source tarball.
- dest_tar_filename = "%s.tar.gz" % dest_filename
-
- # ubuntu/ is one folder up
- dest_deb_file = os.path.join('..', dest_deb_filename)
- dest_tar_file = os.path.join('..', dest_tar_filename)
-
- source_tar_file = os.path.join('..', mixxx_tarball)
- if os.path.exists(source_tar_file):
- shutil.move(source_tar_file, dest_tar_file)
-
- if result == 0 and os.path.exists(result_file):
- print("* Found package '%s'. Copying to ubuntu/" % result_file)
- print()
- shutil.move(result_file, dest_deb_file)
- else:
- print("* Build failed.")
- print()
- raise Exception('Ubuntu package build failed.')
-
- # print("Signing the .deb changes file...")
- # os.system('sudo debsign /var/cache/pbuilder/result/*.changes')
-
- if ubuntu_ppa is not None:
- # dput this changes file to the PPA
- dput_command = 'dput %s %s' % (ubuntu_ppa, source_changes_file)
- print("* Uploading package for", ubuntu_distro, "to launchpad:", dput_command)
- result = os.system(dput_command)
- if result == 0:
- print("* Package upload succeeded.")
- else:
- print("* Package upload failed.")
- print()
- raise Exception('Ubuntu package upload failed.')
-
- # Return back to the starting directory, otherwise you'll get a .sconsign.dblite error!
- os.chdir('../..')
- print("* Returning to starting working directory ... (cwd: " + os.getcwd() + ")")
- print()
-
-#Build the Ubuntu package if "makeubuntu" was passed as an argument
-versiondebbld = Builder(action = BuildUbuntuPackage) #, suffix = '.foo', src_suffix = '.bar')
-env.Append(BUILDERS = {'BuildUbuntuPackage' : versiondebbld})
-
-if 'makeubuntu' in COMMAND_LINE_TARGETS:
- makeubuntu = env.BuildUbuntuPackage("blah", "src/defs_version.h" ) #(binary_files)
- env.Alias('makeubuntu', makeubuntu)
diff --git a/SConscript.env b/SConscript.env
deleted file mode 100644
index 2ced2f7245b..00000000000
--- a/SConscript.env
+++ /dev/null
@@ -1,155 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-import sys, os, platform
-import SCons
-import SCons.Script
-import logging
-import fnmatch
-import shutil
-
-from build import util, mixxx, depends
-
-print('SConscript.env cwd: ' + os.getcwd())
-Import('build')
-
-# Grab the created environment from the MixxxBuild
-env = build.env
-
-# We are in the variant_dir (win|mac|lin)XX_build, and the 'src' subdirectory
-# may not exist yet.
-try:
- os.mkdir('src')
-except:
- pass
-
-# TODO(rryan): This logic should be written in a more SCons-friendly way, since
-# it depends on the cwd being the variant_dir to work properly.
-if os.path.exists('../build.h'):
- # If a build.h exists in the project root mixxx/ directory then use that
- # instead of writing our own. This is mostly since when we build Debian
- # packages we don't have any of the Git metadata so we can't write one
- # ourselves.
- shutil.copy('../build.h', 'src/build.h')
-else:
- util.write_build_header('src/build.h')
-
-conf = Configure(env, custom_tests = { 'CheckForPKGConfig' : util.CheckForPKGConfig,
- 'CheckForPKG' : util.CheckForPKG })
-
-if not conf.CheckCXX():
- print("Building with CXX: %s" % env['CXX'])
- print("A compiler with C++11 support is required.")
- Exit(1)
-
-available_features = [depends.MixxxCore]
-extra_features = build.get_features()
-available_features.extend(extra_features)
-
-# Instantiate the features
-available_features = [feature_class() for feature_class in available_features]
-
-visited_dependencies = set()
-active_dependencies = []
-unmet_dependencies = False
-# Don't configure if the user is askign for help or a clean.
-should_configure = not GetOption('help') and not GetOption('clean')
-if not should_configure:
- print('Skipping dependency configuration.')
-
-def visit_dependency(dependency_class, build, conf):
- """Recursively configure all dependencies.
-
- Skip over dependencies we have already setup.
- """
- global unmet_dependencies
-
- if dependency_class in visited_dependencies:
- return
- visited_dependencies.add(dependency_class)
- dependency = dependency_class()
-
- try:
- if should_configure:
- print("Configuring %s" % dependency.name)
- dependency.configure(build, conf)
- except Exception as e:
- logging.error("Unmet dependency: %s" % e)
- unmet_dependencies = True
- active_dependencies.append(dependency)
-
- for sub_dependency in dependency.depends(build):
- visit_dependency(sub_dependency, build, conf)
-
-for feature in available_features:
- try:
- if should_configure:
- print("Configuring %s" % feature.name)
- feature.configure(build, conf)
-
- # Only process the feature's dependencies if it's enabled
- if feature.enabled(build):
- active_dependencies.append(feature)
- for dependency in feature.depends(build):
- visit_dependency(dependency, build, conf)
- except Exception as e:
- logging.error("Unmet dependency: %s" % e)
- unmet_dependencies = True
-
-if unmet_dependencies:
- logging.error("Build had unmet dependencies. Exiting.")
- Exit(1)
-
-sources = []
-
-# Query each active dependency for sources they require
-for dependency in active_dependencies:
- dep_sources = dependency.sources(build)
- if dep_sources is not None:
- sources.extend(dep_sources)
- # If there's additional env variables that need to be set after the
- # configure checks have run, then we'll take care of that now.
- dependency.post_dependency_check_configure(build, conf)
-
-env = conf.Finish()
-
-#Tell SCons to build libraries that are bundled with Mixxx
-#===================================================
-
-print("Features Summary:")
-print("================")
-
-for feature in available_features:
- message = "Enabled" if feature.enabled(build) else "Disabled"
-
- # If the plugin has a status message, show it instead
- if len(feature.status) > 0:
- message = "%s" % feature.status
-
- print("%035s... %s" % (feature.description(), message))
-
-build_flags = ' '.join(sorted(
- [('%s=%s' % (k,v) if v is not None else k) for k,v in build.flags.items() if v is not None]))
-
-### Put flags info into a file
-with open("src/build.h", "a") as f:
- f.write('#define BUILD_FLAGS "' + build_flags + '"\n')
-
-# Print the build flags. This is useful if the flags have been cached,
-# ie. if you just run "scons" and want to see the flags that you used last time.
-print("================")
-print("Building with flags: %s" % build_flags)
-print("Building with CC: %s" % env['CC'])
-print("Building with CXX: %s" % env['CXX'])
-print("Building with CCFLAGS: %s" % env['CCFLAGS'])
-print("Building with CPPDEFINES: %s" % ' '.join(['-D'+'='.join(pair) if not isinstance(pair, str) else '-D'+pair for pair in env['CPPDEFINES']]))
-print("Building with CXXFLAGS: %s" % env['CXXFLAGS'])
-print("Building with LINKFLAGS: %s" % env['LINKFLAGS'])
-print("Building with LIBS: %s" % ' '.join(env['LIBS']))
-print("Building with PATH: %s" % env['ENV']['PATH'])
-if build.platform_is_windows:
- print("Building with INCLUDE: %s" % env['ENV']['INCLUDE'])
- print("Building with LIB: %s" % env['ENV']['LIB'])
- print("Building with LIBPATH: %s" % env['ENV']['LIBPATH'])
-print("================")
-
-Export('sources')
diff --git a/SConstruct b/SConstruct
deleted file mode 100644
index 9be53debac7..00000000000
--- a/SConstruct
+++ /dev/null
@@ -1,99 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-import os
-
-# machine-system settings we support
-#
-# iX86-mingw32-
-# iX86-apple-darwin9
-# x86_64-apple-darwin9
-# powerpc-apple-darwin9
-# poperpc64-apple-darwin9
-# iX86-linux-gnu
-# x86_64-linux-gnu
-
-# target = [windows, osx, bsd, linux]
-# machine = [iX86, x86_64, powerpc, powerpc64]
-# toolchain = [gnu, msvc]
-# build = [debug, release]
-# optimize = [off, portable, native, legacy, fastbuild, 0, 1, 2]
-
-# If you don't specify your platform, we autodetect platform/machine using
-# python. If you don't specify your machine then we pick iX86 by default
-#
-# default toolchain: gnu (you'll get an error on Windows if unspecified)
-# default build: debug
-
-import logging
-logging.getLogger().setLevel(logging.DEBUG)
-
-from build import mixxx, features, depends
-target = ARGUMENTS.get('target', None)
-machine = ARGUMENTS.get('machine', None)
-build_type = ARGUMENTS.get('build', None)
-toolchain = ARGUMENTS.get('toolchain', None)
-
-available_features = [features.Mad,
- features.CoreAudio,
- features.MediaFoundation,
- features.HSS1394,
- features.HID,
- features.Bulk,
- features.MacAppStoreException,
- features.VinylControl,
- features.LiveBroadcasting,
- features.Opus,
- features.Profiling,
- features.BuildTime,
- features.Verbose,
- features.Optimize,
- features.FAAD,
- features.FFmpeg,
- features.WavPack,
- features.ModPlug,
- features.TestSuite,
- features.ColorDiagnostics,
- features.Sanitizers,
- features.LocaleCompare,
- features.Lilv,
- features.Battery,
- features.QtKeychain,
-
- # "Features" of dubious quality
- features.PerfTools,
- features.AsmLib,
- ]
-
-build = mixxx.MixxxBuild(target, machine, build_type,
- toolchain, available_features)
-Export('build')
-
-# Run our configuration stuff to setup our build environment (detect
-# platform/arch, find libraries, etc)
-
-# If the variant_dir does not exist then we will not chdir into it when calling
-# SConscript.env, making the imperative logic (e.g. writing build.h) in
-# SConscript.env behave differently on the first invocation vs. subsequent
-# invocations.
-try:
- os.mkdir(build.build_dir)
-except:
- pass
-SConscript('SConscript.env', variant_dir=build.build_dir, duplicate=0)
-
-# Grab the list of sources generated by SConscript.env
-Import('sources')
-
-# Produce compile_commands.json, which is used by clang-tidy and related tools.
-build.env.Tool("compile_commands")
-build.env.Alias("compiledb", build.env.CompilationDatabase('compile_commands.json'))
-# Build compile_commands.json by default.
-build.env.Default("compile_commands.json")
-
-# Setup and build the "mixxx" executable target. Also sets up our install
-# targets for each platform.
-SConscript('SConscript', variant_dir=build.build_dir, duplicate=0,
- exports=['build', 'sources'])
-
-#On OS X, if the bundle has been built, copy it up:
-#Command("Mixxx.app", os.path.join(build.build_dir, "Mixxx.app"), Copy("$TARGET", "$SOURCE"))
diff --git a/build/__init__.py b/build/__init__.py
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/build/appveyor/build_mixxx.bat b/build/appveyor/build_mixxx.bat
deleted file mode 100644
index 25fab66409c..00000000000
--- a/build/appveyor/build_mixxx.bat
+++ /dev/null
@@ -1,188 +0,0 @@
-@echo off
-SETLOCAL ENABLEDELAYEDEXPANSION
-
-REM ==================================
-REM Path setup and initial checks
-REM ==================================
-
-IF "%ProgramW6432%" =="" (
-SET PROGRAMFILES_PATH=%ProgramFiles%
-) else (
-REM doublequote the whole SET command prevents an error with parentheses
-SET "PROGRAMFILES_PATH=%ProgramFiles(x86)%"
-)
-
-rem ====== Edit to suit your environment =========
-SET VCVERSION=141
-SET PARAM_VCVARSVER=14.1
-SET "BUILDTOOLS_PATH=%PROGRAMFILES_PATH%\Microsoft Visual Studio\2017\BuildTools\VC"
-SET BUILDTOOLS_SCRIPT=Auxiliary\Build\vcvarsall.bat
-
-IF EXIST "%BUILDTOOLS_PATH%" (
-echo Building with preconfigured path at: "%BUILDTOOLS_PATH%"
-) ELSE (
-call :function_get_product
-IF ERRORLEVEL 1 (
-echo.
-echo Could not find "%BUILDTOOLS_PATH%" and the detection of product didn't work
-echo Edit the %~nx0 file and/or install the required software
-echo http://landinghub.visualstudio.com/visual-cpp-build-tools
-echo https://www.microsoft.com/en-us/download/details.aspx?id=8279
-exit /b 1
-)
-REM END NO PRODUCT
-)
-REM END EXIST BUILDTOOLS_PATH
-
-REM Check whether we have a 64-bit compiler available.
-call :function_has_64bit
-IF ERRORLEVEL 1 (
-echo Using 32-bit compiler.
-SET COMPILER_X86=x86
-SET COMPILER_X64=x86_amd64
-) ELSE (
-echo Using 64-bit compiler.
-SET COMPILER_X86=amd64_x86
-SET COMPILER_X64=amd64
-)
-
-REM ==================================
-REM Parameter reading and variable setup
-REM ==================================
-REM ^ is the escape character.
-if "%3" == "" (
- echo Missing parameters. Usage: ^(Note: keep same case and order^)
- echo.
- echo build_mixxx.bat x64^|x86 debug^|release^|release-fastbuild ^ [skiptest] [skipinstaller]
- echo.
- echo skiptest means that we don't want to build and execute the mixxx-test.
- echo skipinstaller means that we don't want to generate the installer after the build.
- echo.
- echo Example: build_mixxx.bat x64 release c:\mixxx\environments\2.3-j00013-x64-release-static-36f44bd2-minimal
- exit /b 1
-)
-
-set MACHINE_X86="%1" == "x86"
-if "%2" == "release" (
- set CONFIG_RELEASE=1==1
- set PARAM_OPTIMIZE=portable
-)
-if "%2" == "release-fastbuild" (
- set CONFIG_RELEASE=1==1
- set PARAM_OPTIMIZE=fastbuild
-)
-if "%2" == "debug" (
- set CONFIG_RELEASE=0==1
- set PARAM_OPTIMIZE=portable
-)
-if "%4" == "skiptest" (
- set PARAM_TEST=0
-) else (
- set PARAM_TEST=1
-)
-if "%4" == "skipinstaller" (
- set PARAM_INSTALLER=
-) else (
- if "%5" == "skipinstaller" (
- set PARAM_INSTALLER=
- ) else (
- set PARAM_INSTALLER=makerelease
- )
-)
-set WINLIB_DIR=%3
-
-SET BIN_DIR=%WINLIB_DIR%\bin
-SET LIB_DIR=%WINLIB_DIR%\lib
-SET INCLUDE_DIR=%WINLIB_DIR%\include
-FOR /D %%G IN (%WINLIB_DIR%\Qt-*) DO SET QTDIR=%%G
-IF "!QTDIR!" EQU "" (
-echo QT not found on %WINLIB_DIR%
-exit /b 1
-)
-
-
-
-if NOT EXIST "%BIN_DIR%\scons.py" (
-echo.
-echo You need to obtain and copy SCons to the folder:
-echo %BIN_DIR%
-exit /b 1
-)
-
-if NOT EXIST "%QTDIR%" (
-echo.
-echo Could not find Qt %QT_VERSION% at "%QT_DIR%".
-exit /b 1
-)
-
-REM Everything prepared. Setup the compiler.
-if %MACHINE_X86% (
-call "%BUILDTOOLS_PATH%\%BUILDTOOLS_SCRIPT%" %COMPILER_X86% -vcvars_ver=%PARAM_VCVARSVER%
-set MACHINE_TYPE=x86
-) else (
-call "%BUILDTOOLS_PATH%\%BUILDTOOLS_SCRIPT%" %COMPILER_X64% -vcvars_ver=%PARAM_VCVARSVER%
-set MACHINE_TYPE=x86_64
-)
-
-if %CONFIG_RELEASE% (
-set BUILD_TYPE=release
-) else (
-set BUILD_TYPE=debug
-)
-
-rem /MP Use all CPU cores.
-rem /FS force synchronous PDB writes (prevents PDB corruption with /MP)
-rem /EHsc Do not handle SEH in try / except blocks.
-set CXXFLAGS=/MP /FS /EHsc
-set CFLAGS=/MP /FS /EHsc
-
-REM Now build Mixxx.
-set PATH=%BIN_DIR%;%PATH%
-scons.py %SCONS_NUMBER_PROCESSORS% mixxx %PARAM_INSTALLER% toolchain=msvs winlib=%WINLIB_DIR% build=%BUILD_TYPE% staticlibs=1 staticqt=1 debug_assertions_fatal=1 verbose=0 machine=%MACHINE_TYPE% qtdir=%QTDIR% hss1394=1 mediafoundation=1 opus=1 localecompare=1 optimize=%PARAM_OPTIMIZE% virtualize=0 test=%PARAM_TEST% qt_sqlite_plugin=0 build_number_in_title_bar=0 bundle_pdbs=0
-
-IF ERRORLEVEL 1 (
-echo ==============================
-echo.
-echo Building Mixxx failed.
-echo.
-REM For debugging, print the configuration log.
-REM echo Printing config.log:
-REM type config.log
-ENDLOCAL
-exit /b 1
-) else (
-echo Mixxx built successfully
-ENDLOCAL
-)
-EXIT /b 0
-
-:function_get_product
-FOR %%Y IN (2019,2017) DO (
- FOR %%P IN (Community,Professional,Enterprise) DO (
- SET "LOCAL_VS_PATH=%PROGRAMFILES_PATH%\Microsoft Visual Studio\%%Y\%%P\VC"
- IF EXIST "!LOCAL_VS_PATH!" (
- SET "BUILDTOOLS_PATH=!LOCAL_VS_PATH!"
- ECHO Using Visual Studio %%Y %%P at: !LOCAL_VS_PATH!
- EXIT /B 0
- )
- )
- REM FOR
- SET "LOCAL_BT_PATH=%PROGRAMFILES_PATH%\Microsoft Visual Studio\%%Y\BuildTools\VC"
- IF EXIST "!LOCAL_BT_PATH!" (
- SET "BUILDTOOLS_PATH=!LOCAL_BT_PATH!"
- ECHO Using BuildTools %%Y at: !LOCAL_BT_PATH!
- EXIT /B 0
- )
- REM BT
-)
-REM FOR
-EXIT /B 1
-
-:function_has_64bit
-FOR /F %%G IN ('dir "%BUILDTOOLS_PATH%\Tools\MSVC\%PARAM_VCVARSVER%*" /b /ad-h /o-n') DO (
- set "LOCAL_64_CL=%BUILDTOOLS_PATH%\Tools\MSVC\%%G\bin\Hostx64\x64\cl.exe"
- if EXIST "!LOCAL_64_CL!" (
- EXIT /B 0
- )
-)
-EXIT /B 1
diff --git a/build/compile_commands.py b/build/compile_commands.py
deleted file mode 100644
index 7d393e8efcb..00000000000
--- a/build/compile_commands.py
+++ /dev/null
@@ -1,197 +0,0 @@
-# Copyright 2015 MongoDB Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import json
-import SCons
-import itertools
-
-# Implements the ability for SCons to emit a compilation database for the MongoDB project. See
-# http://clang.llvm.org/docs/JSONCompilationDatabase.html for details on what a compilation
-# database is, and why you might want one. The only user visible entry point here is
-# 'env.CompilationDatabase'. This method takes an optional 'target' to name the file that
-# should hold the compilation database, otherwise, the file defaults to compile_commands.json,
-# which is the name that most clang tools search for by default.
-
-# TODO: Is there a better way to do this than this global? Right now this exists so that the
-# emitter we add can record all of the things it emits, so that the scanner for the top level
-# compilation database can access the complete list, and also so that the writer has easy
-# access to write all of the files. But it seems clunky. How can the emitter and the scanner
-# communicate more gracefully?
-__COMPILATION_DB_ENTRIES=[]
-
-# Cribbed from Tool/cc.py and Tool/c++.py. It would be better if
-# we could obtain this from SCons.
-_CSuffixes = ['.c']
-if not SCons.Util.case_sensitive_suffixes('.c', '.C'):
- _CSuffixes.append('.C')
-
-_CXXSuffixes = ['.cpp', '.cc', '.cxx', '.c++', '.C++']
-if SCons.Util.case_sensitive_suffixes('.c', '.C'):
- _CXXSuffixes.append('.C')
-
-# We make no effort to avoid rebuilding the entries. Someday, perhaps we could and even
-# integrate with the cache, but there doesn't seem to be much call for it.
-class __CompilationDbNode(SCons.Node.Python.Value):
- def __init__(self, value):
- SCons.Node.Python.Value.__init__(self, value)
- self.Decider(changed_since_last_build_node)
-
-
-def changed_since_last_build_node(node, target, prev_ni, repo_node=None):
- """ Dummy decider to force always building"""
- return True
-
-
-def makeEmitCompilationDbEntry(comstr):
- """
- Effectively this creates a lambda function to capture:
- * command line
- * source
- * target
- :param comstr: unevaluated command line
- :return: an emitter which has captured the above
- """
- user_action = SCons.Action.Action(comstr)
-
- def EmitCompilationDbEntry(target, source, env):
- """
- This emitter will be added to each c/c++ object build to capture the info needed
- for clang tools
- :param target: target node(s)
- :param source: source node(s)
- :param env: Environment for use building this node
- :return: target(s), source(s)
- """
-
- dbtarget = __CompilationDbNode(source)
-
- entry = env.__COMPILATIONDB_Entry(
- target=dbtarget,
- source=[],
- __COMPILATIONDB_UTARGET=target,
- __COMPILATIONDB_USOURCE=source,
- __COMPILATIONDB_UACTION=user_action,
- __COMPILATIONDB_ENV=env)
-
- # TODO: Technically, these next two lines should not be required: it should be fine to
- # cache the entries. However, they don't seem to update properly. Since they are quick
- # to re-generate disable caching and sidestep this problem.
- env.AlwaysBuild(entry)
- env.NoCache(entry)
-
- __COMPILATION_DB_ENTRIES.append(dbtarget)
-
- return target, source
-
- return EmitCompilationDbEntry
-
-
-def CompilationDbEntryAction(target, source, env, **kw):
- """
- Create a dictionary with evaluated command line, target, source
- and store that info as an attribute on the target
- (Which has been stored in __COMPILATION_DB_ENTRIES array
- :param target: target node(s)
- :param source: source node(s)
- :param env: Environment for use building this node
- :param kw:
- :return: None
- """
-
- command = env['__COMPILATIONDB_UACTION'].strfunction(
- target=env['__COMPILATIONDB_UTARGET'],
- source=env['__COMPILATIONDB_USOURCE'],
- env=env['__COMPILATIONDB_ENV'],)
-
- entry = {
- "directory": env.Dir('#').abspath,
- "command": command,
- "file": str(env['__COMPILATIONDB_USOURCE'][0])
- }
-
- target[0].write(entry)
-
-
-def WriteCompilationDb(target, source, env):
- entries = []
-
- for s in __COMPILATION_DB_ENTRIES:
- entries.append(s.read())
-
- with open(str(target[0]), 'w') as target_file:
- json.dump(entries, target_file,
- sort_keys=True,
- indent=4,
- separators=(',', ': '))
-
-
-def ScanCompilationDb(node, env, path):
- return __COMPILATION_DB_ENTRIES
-
-def generate(env, **kwargs):
-
- static_obj, shared_obj = SCons.Tool.createObjBuilders(env)
-
- env['COMPILATIONDB_COMSTR'] = kwargs.get(
- 'COMPILATIONDB_COMSTR', 'Building compilation database $TARGET')
-
- components_by_suffix = itertools.chain(
- itertools.product(_CSuffixes, [
- (static_obj, SCons.Defaults.StaticObjectEmitter, '$CCCOM'),
- (shared_obj, SCons.Defaults.SharedObjectEmitter, '$SHCCCOM'),
- ]),
- itertools.product(_CXXSuffixes, [
- (static_obj, SCons.Defaults.StaticObjectEmitter, '$CXXCOM'),
- (shared_obj, SCons.Defaults.SharedObjectEmitter, '$SHCXXCOM'),
- ]),
- )
-
- for entry in components_by_suffix:
- suffix = entry[0]
- builder, base_emitter, command = entry[1]
-
- # Assumes a dictionary emitter
- emitter = builder.emitter[suffix]
- builder.emitter[suffix] = SCons.Builder.ListEmitter(
- [
- emitter,
- makeEmitCompilationDbEntry(command),
- ]
- )
-
- env['BUILDERS']['__COMPILATIONDB_Entry'] = SCons.Builder.Builder(
- action=SCons.Action.Action(CompilationDbEntryAction, None),
- )
-
- env['BUILDERS']['__COMPILATIONDB_Database'] = SCons.Builder.Builder(
- action=SCons.Action.Action(WriteCompilationDb, "$COMPILATIONDB_COMSTR"),
- target_scanner=SCons.Scanner.Scanner(
- function=ScanCompilationDb,
- node_class=None)
- )
-
- def CompilationDatabase(env, target):
- result = env.__COMPILATIONDB_Database(
- target=target,
- source=[])
-
- env.AlwaysBuild(result)
- env.NoCache(result)
-
- return result
-
- env.AddMethod(CompilationDatabase, 'CompilationDatabase')
-
-def exists(env):
- return True
diff --git a/build/crossmingw.py b/build/crossmingw.py
deleted file mode 100644
index 52ee299348e..00000000000
--- a/build/crossmingw.py
+++ /dev/null
@@ -1,153 +0,0 @@
-import os
-import os.path
-import string
-
-import SCons.Action
-import SCons.Builder
-import SCons.Tool
-import SCons.Util
-
-# This is what we search for to find mingw:
-prefixes = SCons.Util.Split("""
- mingw32-
- i386-mingw32msvc-
- i486-mingw32msvc-
- i586-mingw32msvc-
- i686-mingw32msvc-
-""")
-
-
-def find(env):
- for prefix in prefixes:
- # First search in the SCons path and then the OS path:
- if env.WhereIs(prefix + 'gcc') or SCons.Util.WhereIs(prefix + 'gcc'):
- return prefix
-
- return ''
-
-
-def shlib_generator(target, source, env, for_signature):
- cmd = SCons.Util.CLVar(['$SHLINK', '$SHLINKFLAGS'])
-
- dll = env.FindIxes(target, 'SHLIBPREFIX', 'SHLIBSUFFIX')
- if dll:
- cmd.extend(['-o', dll])
-
- cmd.extend(['$SOURCES', '$_LIBDIRFLAGS', '$_LIBFLAGS'])
-
- implib = env.FindIxes(target, 'LIBPREFIX', 'LIBSUFFIX')
- if implib:
- cmd.append('-Wl,--out-implib,' + implib.get_string(for_signature))
-
- def_target = env.FindIxes(target, 'WIN32DEFPREFIX', 'WIN32DEFSUFFIX')
- if def_target:
- cmd.append('-Wl,--output-def,' + def_target.get_string(for_signature))
-
- return [cmd]
-
-
-def shlib_emitter(target, source, env):
- dll = env.FindIxes(target, 'SHLIBPREFIX', 'SHLIBSUFFIX')
- no_import_lib = env.get('no_import_lib', 0)
-
- if not dll:
- raise SCons.Errors.UserError, "A shared library should have exactly one target with the suffix: %s" % env.subst("$SHLIBSUFFIX")
-
- if not no_import_lib and \
- not env.FindIxes(target, 'LIBPREFIX', 'LIBSUFFIX'):
-
- # Append an import library to the list of targets.
- target.append(env.ReplaceIxes(dll,
- 'SHLIBPREFIX', 'SHLIBSUFFIX',
- 'LIBPREFIX', 'LIBSUFFIX'))
-
- # Append a def file target if there isn't already a def file target
- # or a def file source. There is no option to disable def file
- # target emitting, because I can't figure out why someone would ever
- # want to turn it off.
- def_source = env.FindIxes(source, 'WIN32DEFPREFIX', 'WIN32DEFSUFFIX')
- def_target = env.FindIxes(target, 'WIN32DEFPREFIX', 'WIN32DEFSUFFIX')
- if not def_source and not def_target:
- target.append(env.ReplaceIxes(dll,
- 'SHLIBPREFIX', 'SHLIBSUFFIX',
- 'WIN32DEFPREFIX', 'WIN32DEFSUFFIX'))
-
- return (target, source)
-
-# TODO: Backported to old scons version
-# shlib_action = SCons.Action.CommandGenerator(shlib_generator)
-shlib_action = SCons.Action.Action(shlib_generator, generator=1)
-
-res_action = SCons.Action.Action('$RCCOM', '$RCCOMSTR')
-
-res_builder = SCons.Builder.Builder(action=res_action, suffix='.res.o',
- source_scanner=SCons.Tool.SourceFileScanner)
-SCons.Tool.SourceFileScanner.add_scanner('.rc', SCons.Defaults.CScan)
-
-
-def generate(env):
- mingw_prefix = find(env)
-
- if mingw_prefix:
- dir = os.path.dirname(env.WhereIs(
- mingw_prefix + 'gcc') or SCons.Util.WhereIs(mingw_prefix + 'gcc'))
-
- # The mingw bin directory must be added to the path:
- path = env['ENV'].get('PATH', [])
- if not path:
- path = []
- if SCons.Util.is_String(path):
- path = string.split(path, os.pathsep)
-
- env['ENV']['PATH'] = string.join([dir] + path, os.pathsep)
-
- # Most of mingw is the same as gcc and friends...
- gnu_tools = ['gcc', 'g++', 'gnulink', 'ar', 'gas']
- for tool in gnu_tools:
- SCons.Tool.Tool(tool)(env)
-
- #... but a few things differ:
- env['CC'] = mingw_prefix + 'gcc'
- env['SHCCFLAGS'] = SCons.Util.CLVar('$CCFLAGS')
- env['CXX'] = mingw_prefix + 'g++'
- env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS')
- env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -shared')
- env['SHLINKCOM'] = shlib_action
- env.Append(SHLIBEMITTER=[shlib_emitter])
- # This line isn't required and breaks C++ linking
- # env['LINK'] = mingw_prefix + 'g++'
- env['AS'] = mingw_prefix + 'as'
- env['AR'] = mingw_prefix + 'ar'
- env['RANLIB'] = mingw_prefix + 'ranlib'
- env['WIN32DEFPREFIX'] = ''
- env['WIN32DEFSUFFIX'] = '.def'
- env['SHOBJSUFFIX'] = '.o'
- env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 1
-
- env['RC'] = mingw_prefix + 'windres'
- env['RCFLAGS'] = SCons.Util.CLVar('')
- env['RCINCFLAGS'] = '$( ${_concat(RCINCPREFIX, CPPPATH, RCINCSUFFIX, __env__, RDirs, TARGET)} $)'
- env['RCINCPREFIX'] = '--include-dir '
- env['RCINCSUFFIX'] = ''
- env['RCCOM'] = '$RC $RCINCFLAGS $RCINCPREFIX $SOURCE.dir $RCFLAGS -i $SOURCE -o $TARGET'
- env['BUILDERS']['RES'] = res_builder
-
- # Some setting from the platform also have to be overridden:
- env['OBJPREFIX'] = ''
- env['OBJSUFFIX'] = '.o'
- env['LIBPREFIX'] = 'lib'
- env['LIBSUFFIX'] = '.a'
- env['SHOBJPREFIX'] = '$OBJPREFIX'
- env['SHOBJSUFFIX'] = '$OBJSUFFIX'
- env['PROGPREFIX'] = ''
- env['PROGSUFFIX'] = '.exe'
- env['LIBPREFIX'] = 'lib'
- env['LIBSUFFIX'] = '.lib'
- env['SHLIBPREFIX'] = 'lib'
- env['SHLIBSUFFIX'] = '.dll'
- env['LIBPREFIXES'] = ['$LIBPREFIX']
- env['LIBSUFFIXES'] = ['$LIBSUFFIX']
-
-
-def exists(env):
- return find(env)
diff --git a/build/depends.py b/build/depends.py
deleted file mode 100644
index e14aeab5a67..00000000000
--- a/build/depends.py
+++ /dev/null
@@ -1,1660 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import os
-import subprocess
-
-from . import util
-from .mixxx import Dependence, Feature
-import SCons.Script as SCons
-
-
-class PortAudio(Dependence):
-
- def configure(self, build, conf):
- if not conf.CheckLib('portaudio'):
- raise Exception(
- 'Did not find libportaudio.a, portaudio.lib, or the PortAudio-v19 development header files.')
- elif build.platform_is_linux:
- build.env.ParseConfig('pkg-config portaudio-2.0 --silence-errors --cflags --libs')
-
- if build.platform_is_windows and build.static_dependencies:
- conf.CheckLib('advapi32')
-
- def sources(self, build):
- return ['src/soundio/sounddeviceportaudio.cpp']
-
-
-class PortMIDI(Dependence):
-
- def configure(self, build, conf):
- # Check for PortTime
- libs = ['porttime', 'libporttime']
- headers = ['porttime.h']
-
- # Depending on the library configuration PortTime might be statically
- # linked with PortMidi. We treat either presence of the lib or the
- # header as success.
- if not conf.CheckLib(libs) and not conf.CheckHeader(headers):
- raise Exception("Did not find PortTime or its development headers.")
-
- # Check for PortMidi
- libs = ['portmidi', 'libportmidi']
- headers = ['portmidi.h']
- if build.platform_is_windows and build.static_dependencies:
- conf.CheckLib('advapi32')
- if build.platform_is_windows:
- # We have this special branch here because on Windows we might want
- # to link PortMidi statically which we don't want to do on other
- # platforms.
- # TODO(rryan): Remove this? Don't want to break anyone but the
- # static/dynamic choice should be made by the whether the .a is an
- # import library for a shared library or a static library.
- libs.append('portmidi_s')
-
- if not conf.CheckLib(libs) or not conf.CheckHeader(headers):
- raise Exception("Did not find PortMidi or its development headers.")
-
- def sources(self, build):
- return ['src/controllers/midi/portmidienumerator.cpp',
- 'src/controllers/midi/portmidicontroller.cpp']
-
-
-class OpenGL(Dependence):
-
- def configure(self, build, conf):
- if build.platform_is_osx:
- build.env.AppendUnique(FRAMEWORKS='OpenGL')
-
- # Check for OpenGL (it's messy to do it for all three platforms).
- if (not conf.CheckLib('GL') and
- not conf.CheckLib('opengl32') and
- not conf.CheckCHeader('OpenGL/gl.h') and
- not conf.CheckCHeader('GL/gl.h')):
- raise Exception('Did not find OpenGL development files')
-
- if (not conf.CheckLib('GLU') and
- not conf.CheckLib('glu32') and
- not conf.CheckCHeader('OpenGL/glu.h')):
- raise Exception('Did not find GLU development files')
-
-
-class SecurityFramework(Dependence):
- """The iOS/OS X security framework is used to implement sandboxing."""
- def configure(self, build, conf):
- if not build.platform_is_osx:
- return
- build.env.Append(CPPPATH='/System/Library/Frameworks/Security.framework/Headers/')
- build.env.Append(LINKFLAGS='-framework Security')
-
-
-class CoreServices(Dependence):
- def configure(self, build, conf):
- if not build.platform_is_osx:
- return
- build.env.Append(CPPPATH='/System/Library/Frameworks/CoreServices.framework/Headers/')
- build.env.Append(LINKFLAGS='-framework CoreServices')
-
-class Foundation(Dependence):
- def configure(self, build, conf):
- if not build.platform_is_osx:
- return
- build.env.Append(CPPPATH='/System/Library/Frameworks/Foundation.framework/Headers/')
- build.env.Append(LINKFLAGS='-framework Foundation')
-
-class IOKit(Dependence):
- """Used for battery measurements and controlling the screensaver on OS X and iOS."""
- def configure(self, build, conf):
- if not build.platform_is_osx:
- return
- build.env.Append(
- CPPPATH='/System/Library/Frameworks/IOKit.framework/Headers/')
- build.env.Append(LINKFLAGS='-framework IOKit')
-
-class UPower(Dependence):
- """UPower is used to get battery measurements on Linux and BSD."""
- def configure(self, build, conf):
- if not build.platform_is_linux and not build.platform_is_bsd:
- return
- build.env.ParseConfig(
- 'pkg-config upower-glib --silence-errors --cflags --libs')
-
-class OggVorbis(Dependence):
-
- def configure(self, build, conf):
- libs = ['libvorbisfile', 'vorbisfile']
- if not conf.CheckLib(libs):
- Exception('Did not find libvorbisfile.a, libvorbisfile.lib, '
- 'or the libvorbisfile development headers.')
-
- libs = ['libvorbis', 'vorbis']
- if not conf.CheckLib(libs):
- raise Exception(
- 'Did not find libvorbis.a, libvorbis.lib, or the libvorbis development headers.')
-
- libs = ['libogg', 'ogg']
- if not conf.CheckLib(libs):
- raise Exception(
- 'Did not find libogg.a, libogg.lib, or the libogg development headers')
-
- # libvorbisenc only exists on Linux, OSX and mingw32 on Windows. On
- # Windows with MSVS it is included in vorbisfile.dll. libvorbis and
- # libogg are included from build.py so don't add here.
- if not build.platform_is_windows or build.toolchain_is_gnu:
- vorbisenc_found = conf.CheckLib(['libvorbisenc', 'vorbisenc'])
- if not vorbisenc_found:
- raise Exception(
- 'Did not find libvorbisenc.a, libvorbisenc.lib, or the libvorbisenc development headers.')
-
- def sources(self, build):
- return ['src/sources/soundsourceoggvorbis.cpp']
-
-class SndFile(Dependence):
-
- def configure(self, build, conf):
- if not conf.CheckLib(['sndfile', 'libsndfile', 'libsndfile-1']):
- raise Exception(
- "Did not find libsndfile or it\'s development headers")
- build.env.Append(CPPDEFINES='__SNDFILE__')
- if conf.CheckDeclaration('SFC_SET_COMPRESSION_LEVEL', '#include "sndfile.h"'):
- build.env.Append(CPPDEFINES='SFC_SUPPORTS_SET_COMPRESSION_LEVEL')
-
- if build.platform_is_windows and build.static_dependencies:
- build.env.Append(CPPDEFINES='FLAC__NO_DLL')
- conf.CheckLib('g72x')
-
- def sources(self, build):
- return ['src/sources/soundsourcesndfile.cpp']
-
-
-class FLAC(Dependence):
- def configure(self, build, conf):
- if not conf.CheckHeader('FLAC/stream_decoder.h'):
- raise Exception('Did not find libFLAC development headers')
- libs = ['libFLAC', 'FLAC']
- if not conf.CheckLib(libs):
- raise Exception('Did not find libFLAC development libraries')
-
- if build.platform_is_windows and build.static_dependencies:
- build.env.Append(CPPDEFINES='FLAC__NO_DLL')
-
- def sources(self, build):
- return ['src/sources/soundsourceflac.cpp',]
-
-
-class Qt(Dependence):
- DEFAULT_QT5DIRS64 = {'linux': '/usr/lib/x86_64-linux-gnu/qt5',
- 'bsd': '/usr/local/lib/qt5',
- 'osx': '/Library/Frameworks',
- 'windows': 'C:\\qt\\5.11.1'}
-
- DEFAULT_QT5DIRS32 = {'linux': '/usr/lib/i386-linux-gnu/qt5',
- 'bsd': '/usr/local/lib/qt5',
- 'osx': '/Library/Frameworks',
- 'windows': 'C:\\qt\\5.11.1'}
-
- @staticmethod
- def uic(build):
- return build.env.Uic5
-
- @staticmethod
- def find_framework_libdir(qtdir):
- # Try pkg-config on Linux
- pkg_config_cmd = ['pkg-config', '--variable=libdir', 'Qt5Core']
- try:
- output = subprocess.check_output(pkg_config_cmd)
- except OSError:
- # pkg-config is not installed
- pass
- except subprocess.CalledProcessError:
- # pkg-config failed to find Qt5Core
- pass
- else:
- core = output.decode('utf-8').rstrip()
- if os.path.isdir(core):
- return core
-
- for d in (os.path.join(qtdir, x) for x in ['', 'Frameworks', 'lib']):
- core = os.path.join(d, 'QtCore.framework')
- if os.path.isdir(core):
- return d
- return None
-
- @staticmethod
- def enabled_modules(build):
- qt_modules = [
- # Keep alphabetized.
- 'QtConcurrent',
- 'QtCore',
- 'QtGui',
- 'QtNetwork',
- 'QtOpenGL',
- 'QtScript',
- 'QtScriptTools',
- 'QtSql',
- 'QtSvg',
- 'QtTest',
- 'QtWidgets',
- 'QtXml',
- ]
- if build.platform_is_windows:
- qt_modules.extend([
- # Keep alphabetized.
- 'QtAccessibilitySupport',
- 'QtEventDispatcherSupport',
- 'QtFontDatabaseSupport',
- 'QtThemeSupport',
- 'QtWindowsUIAutomationSupport',
- ])
- return qt_modules
-
- @staticmethod
- def enabled_imageformats(build):
- qt_imageformats = [
- # Keep alphabetized.
- 'qdds',
- 'qgif',
- 'qicns',
- 'qico',
- 'qjp2',
- 'qjpeg',
- 'qmng',
- 'qsvg',
- 'qtga',
- 'qtiff',
- 'qwbmp',
- 'qwebp',
- ]
- return qt_imageformats
-
- def satisfy(self):
- pass
-
- def configure(self, build, conf):
- qt_modules = Qt.enabled_modules(build)
-
- # Emit various Qt defines
- build.env.Append(CPPDEFINES=['QT_TABLET_SUPPORT'])
- build.env.Append(CPPDEFINES=['QT_USE_QSTRINGBUILDER'])
-
- if build.static_qt:
- build.env.Append(CPPDEFINES='QT_NODLL')
- else:
- build.env.Append(CPPDEFINES='QT_SHARED')
-
- # Set qt_sqlite_plugin flag if we should package the Qt SQLite plugin.
- build.flags['qt_sqlite_plugin'] = util.get_flags(
- build.env, 'qt_sqlite_plugin', 0)
-
- # Link in SQLite library if Qt is compiled statically
- if build.platform_is_windows and build.static_dependencies \
- and build.flags['qt_sqlite_plugin'] == 0 :
- conf.CheckLib('sqlite3');
-
- # Enable Qt include paths
- if build.platform_is_linux or build.platform_is_bsd:
- if not conf.CheckForPKG('Qt5Core', '5.0'):
- raise Exception('Qt >= 5.0 not found')
-
- if not conf.CheckLib('Qt5X11Extras'):
- raise Exception('Could not find Qt5X11Extras or its development headers')
-
- qt_modules.extend(['QtDBus'])
- # This automatically converts QtXXX to Qt5XXX where appropriate.
- build.env.EnableQt5Modules(qt_modules, debug=False)
-
- if build.architecture_is_x86:
- # Note that -reduce-relocations is enabled by default in Qt5.
- # So we must build the Mixxx *executable* with position
- # independent code. -pie / -fPIE must not be used, and Clang
- # -flto must not be used when producing ELFs (i.e. on Linux).
- # http://lists.qt-project.org/pipermail/development/2012-January/001418.html
- # https://github.com/qt/qtbase/blob/c5307203f5c0b0e588cc93e70764c090dd4c2ce0/dist/changes-5.4.2#L37-L45
- # https://codereview.qt-project.org/#/c/111787/
- # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65886#c30
- build.env.Append(CCFLAGS='-fPIC')
-
- elif build.platform_is_osx:
- qtdir = build.env['QTDIR']
- build.env.Append(
- LINKFLAGS=' '.join('-framework %s' % m for m in qt_modules)
- )
- framework_path = Qt.find_framework_libdir(qtdir)
- if not framework_path:
- raise Exception(
- 'Could not find frameworks in Qt directory: %s' % qtdir)
- # Necessary for raw includes of headers like #include
- build.env.Append(CPPPATH=[os.path.join(framework_path, '%s.framework' % m, 'Headers')
- for m in qt_modules])
- # Framework path needs to be altered for CCFLAGS as well since a
- # header include of QtCore/QObject.h looks for a QtCore.framework on
- # the search path and a QObject.h in QtCore.framework/Headers.
- build.env.Append(CCFLAGS=['-F%s' % os.path.join(framework_path)])
- build.env.Append(LINKFLAGS=['-F%s' % os.path.join(framework_path)])
-
- # Copied verbatim from qt5.py.
- # TODO(rryan): Get our fixes merged upstream so we can use qt5.py for OS X.
- module_defines = {
- 'QtScript' : ['QT_SCRIPT_LIB'],
- 'QtSvg' : ['QT_SVG_LIB'],
- 'QtSql' : ['QT_SQL_LIB'],
- 'QtXml' : ['QT_XML_LIB'],
- 'QtOpenGL' : ['QT_OPENGL_LIB'],
- 'QtGui' : ['QT_GUI_LIB'],
- 'QtNetwork' : ['QT_NETWORK_LIB'],
- 'QtCore' : ['QT_CORE_LIB'],
- 'QtWidgets' : ['QT_WIDGETS_LIB'],
- }
- for module in qt_modules:
- build.env.AppendUnique(CPPDEFINES=module_defines.get(module, []))
- build.env["QT5_MOCCPPPATH"] = build.env["CPPPATH"]
- elif build.platform_is_windows:
- # This automatically converts QtCore to QtCore[45][d] where
- # appropriate.
- build.env.EnableQt5Modules(qt_modules,
- staticdeps=build.static_qt,
- debug=build.build_is_debug)
-
- if build.static_qt:
- # Pulled from qt-4.8.2-source\mkspecs\win32-msvc2010\qmake.conf
- # QtCore
- build.env.Append(LIBS = 'kernel32')
- build.env.Append(LIBS = 'user32') # QtGui, QtOpenGL, libHSS1394
- build.env.Append(LIBS = 'shell32')
- build.env.Append(LIBS = 'uuid')
- build.env.Append(LIBS = 'ole32') # QtGui,
- build.env.Append(LIBS = 'advapi32') # QtGui, portaudio, portmidi
- build.env.Append(LIBS = 'ws2_32') # QtGui, QtNetwork, libshout
- # QtGui
- build.env.Append(LIBS = 'gdi32') #QtOpenGL, libshout
- build.env.Append(LIBS = 'comdlg32')
- build.env.Append(LIBS = 'oleaut32')
- build.env.Append(LIBS = 'imm32')
- build.env.Append(LIBS = 'winmm')
- build.env.Append(LIBS = 'winspool')
- # QtOpenGL
- build.env.Append(LIBS = 'glu32')
- build.env.Append(LIBS = 'opengl32')
-
- # QtNetwork openssl-linked
- build.env.Append(LIBS = 'crypt32')
-
- # New libraries required by Qt5.
- build.env.Append(LIBS = 'dwmapi') # qtwindows
- build.env.Append(LIBS = 'iphlpapi') # qt5network
- build.env.Append(LIBS = 'libEGL') # qt5opengl
- build.env.Append(LIBS = 'libGLESv2') # qt5opengl
- build.env.Append(LIBS = 'mpr') # qt5core
- build.env.Append(LIBS = 'netapi32') # qt5core
- build.env.Append(LIBS = 'userenv') # qt5core
- build.env.Append(LIBS = 'uxtheme') # ?
- build.env.Append(LIBS = 'version') # ?
- build.env.Append(LIBS = 'wtsapi32') # ?
-
- build.env.Append(LIBS = 'qtfreetype')
- build.env.Append(LIBS = 'qtharfbuzz')
- build.env.Append(LIBS = 'qtlibpng')
- build.env.Append(LIBS = 'qtpcre2')
-
- # NOTE(rryan): If you are adding a plugin here, you must also
- # update src/mixxxapplication.cpp to define a Q_IMPORT_PLUGIN
- # for it. Not all imageformats plugins are built as .libs when
- # building Qt statically on Windows. Check the build environment
- # to see exactly what's available as a standalone .lib vs linked
- # into Qt .libs by default.
-
- # iconengines plugins
- build.env.Append(LIBPATH=[
- os.path.join(build.env['QTDIR'],'plugins/iconengines')])
- build.env.Append(LIBS = 'qsvgicon')
-
- # imageformats plugins
- build.env.Append(LIBPATH=[
- os.path.join(build.env['QTDIR'],'plugins/imageformats')])
- build.env.Append(LIBS = 'qico')
- build.env.Append(LIBS = 'qsvg')
- build.env.Append(LIBS = 'qtga')
- build.env.Append(LIBS = 'qgif')
- build.env.Append(LIBS = 'qjpeg')
-
- # platform plugins (new in Qt5 for Windows)
- build.env.Append(LIBPATH=[
- os.path.join(build.env['QTDIR'],'plugins/platforms')])
- build.env.Append(LIBS = 'qwindows')
-
- # styles (new in Qt5 for Windows)
- build.env.Append(LIBPATH=[
- os.path.join(build.env['QTDIR'],'plugins/styles')])
- build.env.Append(LIBS = 'qwindowsvistastyle')
-
- # sqldrivers (new in Qt5? or did we just start enabling them)
- build.env.Append(LIBPATH=[
- os.path.join(build.env['QTDIR'],'plugins/sqldrivers')])
- build.env.Append(LIBS = 'qsqlite')
-
- # Set the rpath for linux/bsd/macOS.
- if not build.platform_is_windows:
- qtdir = build.env['QTDIR']
- libdir_path = Qt.find_framework_libdir(qtdir)
- if os.path.isdir(libdir_path):
- build.env.Append(LINKFLAGS=['-Wl,-rpath,%s' % libdir_path])
- build.env.Append(LINKFLAGS="-L" + libdir_path)
-
- # Mixxx requires C++17 support
- if build.platform_is_windows:
- # MSVC
- build.env.Append(CXXFLAGS='/std:c++17')
- # Fix build of googletest 1.8.x
- # https://developercommunity.visualstudio.com/content/problem/225156/google-test-does-not-work-with-stdc17.html
- # https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/
- build.env.Append(CXXFLAGS='/Zc:__cplusplus')
- else:
- # GCC/Clang
- build.env.Append(CXXFLAGS='-std=c++17')
- if build.platform_is_osx and build.compiler_is_clang:
- # Aligned allocation is only supported since macOS 10.13,
- # but not for the minimum supported version macOS 10.11
- build.env.Append(CXXFLAGS='-fno-aligned-allocation')
-
-
-class TestHeaders(Dependence):
- def configure(self, build, conf):
- build.env.Append(CPPPATH="#lib/googletest-1.8.x/googletest/include")
-
-class FidLib(Dependence):
- def sources(self, build):
- symbol = None
- if build.platform_is_windows:
- if build.toolchain_is_msvs:
- symbol = 'T_MSVC'
- elif build.crosscompile:
- # Not sure why, but fidlib won't build with mingw32msvc and
- # T_MINGW
- symbol = 'T_LINUX'
- elif build.toolchain_is_gnu:
- symbol = 'T_MINGW'
- else:
- symbol = 'T_LINUX'
-
- return [build.env.StaticObject('lib/fidlib/fidlib.c',
- CPPDEFINES=symbol)]
-
- def configure(self, build, conf):
- build.env.Append(CPPPATH='#lib/fidlib/')
-
-
-class ReplayGain(Dependence):
-
- def sources(self, build):
- return ["lib/replaygain/replaygain.cpp"]
-
- def configure(self, build, conf):
- build.env.Append(CPPPATH="#lib/replaygain")
-
-# For Rekordbox removable device binary database file parsing
-class Kaitai(Dependence):
-
- def sources(self, build):
- return ["lib/kaitai/kaitaistream.cpp"]
-
- def configure(self, build, conf):
- build.env.Append(CPPDEFINES=['KS_STR_ENCODING_NONE'])
- build.env.Append(CPPPATH="#lib/kaitai")
-
-# For determining MP3 timing offset cases in Rekordbox library feature
-class MP3GuessEnc(Dependence):
-
- def sources(self, build):
- return [
- "lib/mp3guessenc-0.27.4/mp3guessenc.c",
- "lib/mp3guessenc-0.27.4/tags.c",
- "lib/mp3guessenc-0.27.4/decode.c",
- "lib/mp3guessenc-0.27.4/bit_utils.c",
- ]
-
- def configure(self, build, conf):
- build.env.Append(CPPPATH='#lib/mp3guessenc-0.27.4/')
-
-
-class Ebur128Mit(Dependence):
- INTERNAL_PATH = 'lib/libebur128'
- INTERNAL_LINK = False
-
- def sources(self, build):
- if self.INTERNAL_LINK:
- return ['%s/ebur128/ebur128.c' % self.INTERNAL_PATH]
-
- def configure(self, build, conf, env=None):
- if env is None:
- env = build.env
- if not conf.CheckLib(['ebur128', 'libebur128']):
- self.INTERNAL_LINK = True;
- env.Append(CPPPATH=['#%s/ebur128' % self.INTERNAL_PATH])
- import sys
- if not conf.CheckHeader('sys/queue.h') or sys.platform.startswith('openbsd'):
- # OpenBSD's queue.h lacks the STAILQ_* macros
- env.Append(CPPPATH=['#%s/ebur128/queue' % self.INTERNAL_PATH])
-
-
-class SoundTouch(Dependence):
- SOUNDTOUCH_INTERNAL_PATH = 'lib/soundtouch'
- INTERNAL_LINK = True
-
- def sources(self, build):
- if self.INTERNAL_LINK:
- env = build.env.Clone()
- soundtouch_dir = env.Dir(self.SOUNDTOUCH_INTERNAL_PATH)
- SCons.Export('env')
- SCons.Export('build')
- env.SConscript(env.File('SConscript', soundtouch_dir))
-
- build.env.Append(LIBPATH=self.SOUNDTOUCH_INTERNAL_PATH)
- build.env.Append(LIBS=['soundtouch'])
- return ['src/engine/bufferscalers/enginebufferscalest.cpp']
-
- def configure(self, build, conf, env=None):
- if env is None:
- env = build.env
-
- if build.platform_is_linux or build.platform_is_bsd:
- # Try using system lib
- if conf.CheckForPKG('soundtouch', '2.1.1'):
- # System Lib found
- if not conf.CheckLib(['SoundTouch']):
- raise Exception(
- "Could not find libSoundTouch or its development headers.")
- build.env.ParseConfig('pkg-config soundtouch --silence-errors --cflags --libs')
- self.INTERNAL_LINK = False
-
- if self.INTERNAL_LINK:
- # The system includes all start with , i.e.
- # we must omit the "soundtouch" path component here!
- env.Append(CPPPATH=['#/lib'])
-
- # Prevents circular import.
- from .features import Optimize
-
- # If we do not want optimizations then disable them.
- optimize = (build.flags['optimize'] if 'optimize' in build.flags
- else Optimize.get_optimization_level(build))
- if optimize == Optimize.LEVEL_OFF:
- env.Append(CPPDEFINES='SOUNDTOUCH_DISABLE_X86_OPTIMIZATIONS')
-
-class RubberBand(Dependence):
- def sources(self, build):
- sources = ['src/engine/bufferscalers/enginebufferscalerubberband.cpp', ]
- return sources
-
- def configure(self, build, conf, env=None):
- if env is None:
- env = build.env
- if not conf.CheckLib(['rubberband', 'librubberband']):
- raise Exception(
- "Could not find librubberband or its development headers.")
-
-
-class QueenMaryDsp(Dependence):
- def sources(self, build):
- return [
- #"#lib/qm-dsp/base/KaiserWindow.cpp",
- "#lib/qm-dsp/base/Pitch.cpp",
- #"#lib/qm-dsp/base/SincWindow.cpp",
- "#lib/qm-dsp/dsp/chromagram/Chromagram.cpp",
- "#lib/qm-dsp/dsp/chromagram/ConstantQ.cpp",
- "#lib/qm-dsp/dsp/keydetection/GetKeyMode.cpp",
- #"#lib/qm-dsp/dsp/mfcc/MFCC.cpp",
- "#lib/qm-dsp/dsp/onsets/DetectionFunction.cpp",
- "#lib/qm-dsp/dsp/onsets/PeakPicking.cpp",
- "#lib/qm-dsp/dsp/phasevocoder/PhaseVocoder.cpp",
- "#lib/qm-dsp/dsp/rateconversion/Decimator.cpp",
- #"#lib/qm-dsp/dsp/rateconversion/DecimatorB.cpp",
- #"#lib/qm-dsp/dsp/rateconversion/Resampler.cpp",
- #"#lib/qm-dsp/dsp/rhythm/BeatSpectrum.cpp",
- #"#lib/qm-dsp/dsp/segmentation/ClusterMeltSegmenter.cpp",
- #"#lib/qm-dsp/dsp/segmentation/Segmenter.cpp",
- #"#lib/qm-dsp/dsp/segmentation/cluster_melt.c",
- #"#lib/qm-dsp/dsp/segmentation/cluster_segmenter.c",
- "#lib/qm-dsp/dsp/signalconditioning/DFProcess.cpp",
- "#lib/qm-dsp/dsp/signalconditioning/FiltFilt.cpp",
- "#lib/qm-dsp/dsp/signalconditioning/Filter.cpp",
- "#lib/qm-dsp/dsp/signalconditioning/Framer.cpp",
- "#lib/qm-dsp/dsp/tempotracking/DownBeat.cpp",
- "#lib/qm-dsp/dsp/tempotracking/TempoTrack.cpp",
- "#lib/qm-dsp/dsp/tempotracking/TempoTrackV2.cpp",
- "#lib/qm-dsp/dsp/tonal/ChangeDetectionFunction.cpp",
- "#lib/qm-dsp/dsp/tonal/TCSgram.cpp",
- "#lib/qm-dsp/dsp/tonal/TonalEstimator.cpp",
- "#lib/qm-dsp/dsp/transforms/FFT.cpp",
- #"#lib/qm-dsp/dsp/wavelet/Wavelet.cpp",
- "#lib/qm-dsp/ext/kissfft/kiss_fft.c",
- "#lib/qm-dsp/ext/kissfft/tools/kiss_fftr.c",
- #"#lib/qm-dsp/hmm/hmm.c",
- "#lib/qm-dsp/maths/Correlation.cpp",
- #"#lib/qm-dsp/maths/CosineDistance.cpp",
- "#lib/qm-dsp/maths/KLDivergence.cpp",
- "#lib/qm-dsp/maths/MathUtilities.cpp",
- #"#lib/qm-dsp/maths/pca/pca.c",
- #"#lib/qm-dsp/thread/Thread.cpp"
- ]
-
- def configure(self, build, conf):
- build.env.Append(CPPPATH="#lib/qm-dsp")
- build.env.Append(CPPPATH="#lib/qm-dsp/include")
- build.env.Append(CPPDEFINES='kiss_fft_scalar=double')
- if not build.platform_is_windows:
- build.env.Append(CPPDEFINES='USE_PTHREADS')
-
-
-class TagLib(Dependence):
- def configure(self, build, conf):
- libs = ['tag']
- if not conf.CheckLib(libs):
- raise Exception(
- "Could not find libtag or its development headers.")
-
- # Karmic seems to have an issue with mp4tag.h where they don't include
- # the files correctly. Adding this folder to the include path should fix
- # it, though might cause issues. This is safe to remove once we
- # deprecate Karmic support. rryan 2/2011
- build.env.Append(CPPPATH='/usr/include/taglib/')
-
- if build.platform_is_windows and build.static_dependencies:
- build.env.Append(CPPDEFINES='TAGLIB_STATIC')
-
-
-class Chromaprint(Dependence):
- def configure(self, build, conf):
- if not conf.CheckLib(['chromaprint', 'libchromaprint', 'chromaprint_p', 'libchromaprint_p']):
- raise Exception(
- "Could not find libchromaprint or its development headers.")
- if build.platform_is_windows and build.static_dependencies:
- build.env.Append(CPPDEFINES='CHROMAPRINT_NODLL')
-
- # On Windows, we link chromaprint with FFTW3.
- if not conf.CheckLib(['fftw', 'libfftw', 'fftw3', 'libfftw3', 'libfftw-3.3']):
- raise Exception(
- "Could not find fftw3 or its development headers.")
-
-
-class ProtoBuf(Dependence):
- def configure(self, build, conf):
- libs = ['libprotobuf-lite', 'protobuf-lite', 'libprotobuf', 'protobuf']
- if build.platform_is_windows:
- if not build.static_dependencies:
- build.env.Append(CPPDEFINES='PROTOBUF_USE_DLLS')
- # SCons is supposed to check this for us by calling 'exists' in build/protoc.py.
- protoc_binary = build.env['PROTOC']
- if build.env.WhereIs(protoc_binary) is None:
- raise Exception("Can't locate '%s' the protobuf compiler." % protoc_binary)
- if not conf.CheckLib(libs):
- raise Exception(
- "Could not find libprotobuf or its development headers.")
-
-class FpClassify(Dependence):
-
- def enabled(self, build):
- return build.toolchain_is_gnu
-
- # This is a wrapper around the fpclassify function that prevents inlining
- # It is compiled without optimization and allows to use these function
- # from -ffast-math optimized objects
- def sources(self, build):
- # add this file without fast-math flag
- env = build.env.Clone()
- if '-ffast-math' in env['CCFLAGS']:
- env['CCFLAGS'].remove('-ffast-math')
- return env.Object('src/util/fpclassify.cpp')
-
-class QtScriptByteArray(Dependence):
- def configure(self, build, conf):
- build.env.Append(CPPPATH='#lib/qtscript-bytearray')
-
- def sources(self, build):
- return ['lib/qtscript-bytearray/bytearrayclass.cpp',
- 'lib/qtscript-bytearray/bytearrayprototype.cpp']
-
-class PortAudioRingBuffer(Dependence):
- def configure(self, build, conf):
- build.env.Append(CPPPATH='#lib/portaudio')
-
- def sources(self, build):
- return ['lib/portaudio/pa_ringbuffer.c']
-
-# https://github.com/rigtorp/SPSCQueue
-class RigtorpSPSCQueue(Dependence):
- def configure(self, build, conf):
- build.env.Append(CPPPATH='#lib/rigtorp/SPSCQueue/include')
-
-class Reverb(Dependence):
- def configure(self, build, conf):
- build.env.Append(CPPPATH='#lib/reverb')
-
- def sources(self, build):
- return ['lib/reverb/Reverb.cc']
-
-class LAME(Dependence):
- def configure(self, build, conf):
- if not conf.CheckLib(['libmp3lame', 'libmp3lame-static']):
- raise Exception("Could not find libmp3lame.")
-
-class MixxxCore(Feature):
-
- def description(self):
- return "Mixxx Core Features"
-
- def enabled(self, build):
- return True
-
- def sources(self, build):
- sources = ["src/control/control.cpp",
- "src/control/controlaudiotaperpot.cpp",
- "src/control/controlbehavior.cpp",
- "src/control/controleffectknob.cpp",
- "src/control/controlindicator.cpp",
- "src/control/controllinpotmeter.cpp",
- "src/control/controllogpotmeter.cpp",
- "src/control/controlmodel.cpp",
- "src/control/controlobject.cpp",
- "src/control/controlobjectscript.cpp",
- "src/control/controlpotmeter.cpp",
- "src/control/controlproxy.cpp",
- "src/control/controlpushbutton.cpp",
- "src/control/controlttrotary.cpp",
- "src/control/controlencoder.cpp",
-
- "src/controllers/dlgcontrollerlearning.cpp",
- "src/controllers/dlgprefcontroller.cpp",
- "src/controllers/dlgprefcontrollers.cpp",
- "src/dialog/dlgabout.cpp",
- "src/dialog/dlgdevelopertools.cpp",
- "src/dialog/dlgreplacecuecolor.cpp",
-
- "src/preferences/configobject.cpp",
- "src/preferences/dialog/dlgprefautodj.cpp",
- "src/preferences/dialog/dlgprefdeck.cpp",
- "src/preferences/dialog/dlgprefcolors.cpp",
- "src/preferences/dialog/dlgprefcrossfader.cpp",
- "src/preferences/dialog/dlgprefeffects.cpp",
- "src/preferences/dialog/dlgprefeq.cpp",
- "src/preferences/dialog/dlgpreferences.cpp",
- "src/preferences/dialog/dlgprefinterface.cpp",
- "src/preferences/dialog/dlgpreflibrary.cpp",
- "src/preferences/dialog/dlgprefnovinyl.cpp",
- "src/preferences/dialog/dlgprefrecord.cpp",
- "src/preferences/dialog/dlgprefreplaygain.cpp",
- "src/preferences/dialog/dlgprefsound.cpp",
- "src/preferences/dialog/dlgprefsounditem.cpp",
- "src/preferences/dialog/dlgprefwaveform.cpp",
- "src/preferences/dialog/dlgprefbeats.cpp",
- "src/preferences/dialog/dlgprefkey.cpp",
- "src/preferences/settingsmanager.cpp",
- "src/preferences/replaygainsettings.cpp",
- "src/preferences/broadcastsettings.cpp",
- "src/preferences/broadcastsettings_legacy.cpp",
- "src/preferences/broadcastsettingsmodel.cpp",
- "src/preferences/effectsettingsmodel.cpp",
- "src/preferences/broadcastprofile.cpp",
- "src/preferences/upgrade.cpp",
- "src/preferences/colorpaletteeditor.cpp",
- "src/preferences/colorpaletteeditormodel.cpp",
- "src/preferences/colorpalettesettings.cpp",
- "src/preferences/dlgpreferencepage.cpp",
-
- "src/effects/effectmanifest.cpp",
- "src/effects/effectmanifestparameter.cpp",
-
- "src/effects/effectchain.cpp",
- "src/effects/effect.cpp",
- "src/effects/effectparameter.cpp",
-
- "src/effects/effectrack.cpp",
- "src/effects/effectchainslot.cpp",
- "src/effects/effectslot.cpp",
- "src/effects/effectparameterslotbase.cpp",
- "src/effects/effectparameterslot.cpp",
- "src/effects/effectbuttonparameterslot.cpp",
- "src/effects/effectsmanager.cpp",
- "src/effects/effectchainmanager.cpp",
- "src/effects/effectsbackend.cpp",
-
- "src/effects/builtin/builtinbackend.cpp",
- "src/effects/builtin/bitcrushereffect.cpp",
- "src/effects/builtin/balanceeffect.cpp",
- "src/effects/builtin/linkwitzriley8eqeffect.cpp",
- "src/effects/builtin/bessel4lvmixeqeffect.cpp",
- "src/effects/builtin/bessel8lvmixeqeffect.cpp",
- "src/effects/builtin/threebandbiquadeqeffect.cpp",
- "src/effects/builtin/biquadfullkilleqeffect.cpp",
- "src/effects/builtin/loudnesscontoureffect.cpp",
- "src/effects/builtin/graphiceqeffect.cpp",
- "src/effects/builtin/parametriceqeffect.cpp",
- "src/effects/builtin/flangereffect.cpp",
- "src/effects/builtin/filtereffect.cpp",
- "src/effects/builtin/moogladder4filtereffect.cpp",
- "src/effects/builtin/reverbeffect.cpp",
- "src/effects/builtin/echoeffect.cpp",
- "src/effects/builtin/autopaneffect.cpp",
- "src/effects/builtin/phasereffect.cpp",
- "src/effects/builtin/metronomeeffect.cpp",
- "src/effects/builtin/tremoloeffect.cpp",
-
- "src/engine/effects/engineeffectsmanager.cpp",
- "src/engine/effects/engineeffectrack.cpp",
- "src/engine/effects/engineeffectchain.cpp",
- "src/engine/effects/engineeffect.cpp",
-
- "src/engine/sync/basesyncablelistener.cpp",
- "src/engine/sync/enginesync.cpp",
- "src/engine/sync/synccontrol.cpp",
- "src/engine/sync/internalclock.cpp",
-
- "src/engine/engineworker.cpp",
- "src/engine/engineworkerscheduler.cpp",
- "src/engine/enginebuffer.cpp",
- "src/engine/bufferscalers/enginebufferscale.cpp",
- "src/engine/bufferscalers/enginebufferscalelinear.cpp",
- "src/engine/channels/engineaux.cpp",
- "src/engine/channels/enginechannel.cpp",
- "src/engine/channels/enginedeck.cpp",
- "src/engine/channels/enginemicrophone.cpp",
- "src/engine/filters/enginefilterbiquad1.cpp",
- "src/engine/filters/enginefiltermoogladder4.cpp",
- "src/engine/filters/enginefilterbessel4.cpp",
- "src/engine/filters/enginefilterbessel8.cpp",
- "src/engine/filters/enginefilterbutterworth4.cpp",
- "src/engine/filters/enginefilterbutterworth8.cpp",
- "src/engine/filters/enginefilterlinkwitzriley2.cpp",
- "src/engine/filters/enginefilterlinkwitzriley4.cpp",
- "src/engine/filters/enginefilterlinkwitzriley8.cpp",
- "src/engine/filters/enginefilter.cpp",
- "src/engine/engineobject.cpp",
- "src/engine/enginepregain.cpp",
- "src/engine/enginemaster.cpp",
- "src/engine/enginedelay.cpp",
- "src/engine/enginevumeter.cpp",
- "src/engine/enginesidechaincompressor.cpp",
- "src/engine/sidechain/enginesidechain.cpp",
- "src/engine/sidechain/networkoutputstreamworker.cpp",
- "src/engine/sidechain/networkinputstreamworker.cpp",
- "src/engine/enginexfader.cpp",
- "src/engine/channelmixer_autogen.cpp",
- "src/engine/positionscratchcontroller.cpp",
- "src/engine/controls/bpmcontrol.cpp",
- "src/engine/controls/clockcontrol.cpp",
- "src/engine/controls/cuecontrol.cpp",
- "src/engine/controls/enginecontrol.cpp",
- "src/engine/controls/keycontrol.cpp",
- "src/engine/controls/loopingcontrol.cpp",
- "src/engine/controls/quantizecontrol.cpp",
- "src/engine/controls/ratecontrol.cpp",
- "src/engine/readaheadmanager.cpp",
- "src/engine/enginetalkoverducking.cpp",
- "src/engine/cachingreader/cachingreader.cpp",
- "src/engine/cachingreader/cachingreaderchunk.cpp",
- "src/engine/cachingreader/cachingreaderworker.cpp",
-
- "src/analyzer/trackanalysisscheduler.cpp",
- "src/analyzer/analyzerthread.cpp",
- "src/analyzer/analyzerwaveform.cpp",
- "src/analyzer/analyzergain.cpp",
- "src/analyzer/analyzerbeats.cpp",
- "src/analyzer/analyzerkey.cpp",
- "src/analyzer/analyzerebur128.cpp",
- "src/analyzer/analyzersilence.cpp",
- "src/analyzer/plugins/analyzersoundtouchbeats.cpp",
- "src/analyzer/plugins/analyzerqueenmarybeats.cpp",
- "src/analyzer/plugins/analyzerqueenmarykey.cpp",
- "src/analyzer/plugins/buffering_utils.cpp",
-
- "src/audio/types.cpp",
- "src/audio/signalinfo.cpp",
- "src/audio/streaminfo.cpp",
-
- "src/controllers/controller.cpp",
- "src/controllers/controllerdebug.cpp",
- "src/controllers/controllerengine.cpp",
- "src/controllers/controllerenumerator.cpp",
- "src/controllers/controllerlearningeventfilter.cpp",
- "src/controllers/controllermanager.cpp",
- "src/controllers/controllerpresetfilehandler.cpp",
- "src/controllers/controllerpresetinfo.cpp",
- "src/controllers/controllerpresetinfoenumerator.cpp",
- "src/controllers/controlpickermenu.cpp",
- "src/controllers/controllermappingtablemodel.cpp",
- "src/controllers/controllerinputmappingtablemodel.cpp",
- "src/controllers/controlleroutputmappingtablemodel.cpp",
- "src/controllers/delegates/controldelegate.cpp",
- "src/controllers/delegates/midichanneldelegate.cpp",
- "src/controllers/delegates/midiopcodedelegate.cpp",
- "src/controllers/delegates/midibytedelegate.cpp",
- "src/controllers/delegates/midioptionsdelegate.cpp",
- "src/controllers/learningutils.cpp",
- "src/controllers/midi/midimessage.cpp",
- "src/controllers/midi/midiutils.cpp",
- "src/controllers/midi/midicontroller.cpp",
- "src/controllers/midi/midicontrollerpreset.cpp",
- "src/controllers/midi/midicontrollerpresetfilehandler.cpp",
- "src/controllers/midi/midienumerator.cpp",
- "src/controllers/midi/midioutputhandler.cpp",
- "src/controllers/softtakeover.cpp",
- "src/controllers/keyboard/keyboardeventfilter.cpp",
- "src/controllers/colormapper.cpp",
- "src/controllers/colormapperjsproxy.cpp",
-
- "src/main.cpp",
- "src/mixxx.cpp",
- "src/mixxxapplication.cpp",
- "src/errordialoghandler.cpp",
-
- "src/sources/audiosource.cpp",
- "src/sources/audiosourcestereoproxy.cpp",
- "src/sources/metadatasourcetaglib.cpp",
- "src/sources/readaheadframebuffer.cpp",
- "src/sources/soundsource.cpp",
- "src/sources/soundsourceprovider.cpp",
- "src/sources/soundsourceproviderregistry.cpp",
- "src/sources/soundsourceproxy.cpp",
-
- "src/widget/controlwidgetconnection.cpp",
- "src/widget/wbasewidget.cpp",
- "src/widget/wwidget.cpp",
- "src/widget/wwidgetgroup.cpp",
- "src/widget/wtrackwidgetgroup.cpp",
- "src/widget/wwidgetstack.cpp",
- "src/widget/wsizeawarestack.cpp",
- "src/widget/wlabel.cpp",
- "src/widget/wtracktext.cpp",
- "src/widget/wnumber.cpp",
- "src/widget/wbeatspinbox.cpp",
- "src/widget/wnumberdb.cpp",
- "src/widget/wnumberpos.cpp",
- "src/widget/wnumberrate.cpp",
- "src/widget/wknob.cpp",
- "src/widget/wknobcomposed.cpp",
- "src/widget/wdisplay.cpp",
- "src/widget/wvumeter.cpp",
- "src/widget/wpushbutton.cpp",
- "src/widget/weffectpushbutton.cpp",
- "src/widget/whotcuebutton.cpp",
- "src/widget/wslidercomposed.cpp",
- "src/widget/wstatuslight.cpp",
- "src/widget/woverview.cpp",
- "src/widget/woverviewlmh.cpp",
- "src/widget/woverviewhsv.cpp",
- "src/widget/woverviewrgb.cpp",
- "src/widget/wspinny.cpp",
- "src/widget/wskincolor.cpp",
- "src/widget/wsearchlineedit.cpp",
- "src/widget/wpixmapstore.cpp",
- "src/widget/paintable.cpp",
- "src/widget/wimagestore.cpp",
- "src/widget/hexspinbox.cpp",
- "src/widget/wtrackproperty.cpp",
- "src/widget/wstarrating.cpp",
- "src/widget/weffectchain.cpp",
- "src/widget/weffect.cpp",
- "src/widget/weffectselector.cpp",
- "src/widget/weffectparameter.cpp",
- "src/widget/weffectparameterknob.cpp",
- "src/widget/weffectparameterknobcomposed.cpp",
- "src/widget/weffectbuttonparameter.cpp",
- "src/widget/weffectparameterbase.cpp",
- "src/widget/wtime.cpp",
- "src/widget/wrecordingduration.cpp",
- "src/widget/wkey.cpp",
- "src/widget/wbattery.cpp",
- "src/widget/wcombobox.cpp",
- "src/widget/wsplitter.cpp",
- "src/widget/wcoverart.cpp",
- "src/widget/wcoverartlabel.cpp",
- "src/widget/wcoverartmenu.cpp",
- "src/widget/wcolorpicker.cpp",
- "src/widget/wcolorpickeraction.cpp",
- "src/widget/wcuemenupopup.cpp",
- "src/widget/wsingletoncontainer.cpp",
- "src/widget/wmainmenubar.cpp",
-
- "src/musicbrainz/tagfetcher.cpp",
- "src/musicbrainz/gzip.cpp",
- "src/musicbrainz/crc.c",
- "src/musicbrainz/chromaprinter.cpp",
- "src/musicbrainz/musicbrainz.cpp",
- "src/musicbrainz/musicbrainzxml.cpp",
- "src/musicbrainz/web/acoustidlookuptask.cpp",
- "src/musicbrainz/web/musicbrainzrecordingstask.cpp",
-
- "src/widget/wtracktableview.cpp",
- "src/widget/wtracktableviewheader.cpp",
- "src/widget/wlibrarysidebar.cpp",
- "src/widget/wlibrary.cpp",
- "src/widget/wlibrarytableview.cpp",
- "src/widget/wanalysislibrarytableview.cpp",
- "src/widget/wlibrarytextbrowser.cpp",
- "src/widget/wtrackmenu.cpp",
-
- "src/database/mixxxdb.cpp",
- "src/database/schemamanager.cpp",
-
- "src/library/trackcollection.cpp",
- "src/library/trackcollectionmanager.cpp",
- "src/library/externaltrackcollection.cpp",
- "src/library/basesqltablemodel.cpp",
- "src/library/basetrackcache.cpp",
- "src/library/basetracktablemodel.cpp",
- "src/library/columncache.cpp",
- "src/library/librarytablemodel.cpp",
- "src/library/searchquery.cpp",
- "src/library/searchqueryparser.cpp",
- "src/library/analysislibrarytablemodel.cpp",
- "src/library/missingtablemodel.cpp",
- "src/library/hiddentablemodel.cpp",
- "src/library/proxytrackmodel.cpp",
- "src/library/coverart.cpp",
- "src/library/coverartcache.cpp",
- "src/library/coverartutils.cpp",
- "src/library/trackcollectioniterator.cpp",
- "src/library/trackmodeliterator.cpp",
- "src/library/trackprocessing.cpp",
-
- "src/library/crate/cratestorage.cpp",
- "src/library/crate/cratefeature.cpp",
- "src/library/crate/cratefeaturehelper.cpp",
- "src/library/crate/cratetablemodel.cpp",
-
- "src/library/playlisttablemodel.cpp",
- "src/library/libraryfeature.cpp",
- "src/library/analysisfeature.cpp",
- "src/library/autodj/autodjfeature.cpp",
- "src/library/autodj/autodjprocessor.cpp",
- "src/library/dao/directorydao.cpp",
- "src/library/mixxxlibraryfeature.cpp",
- "src/library/basetracksetfeature.cpp",
- "src/library/baseplaylistfeature.cpp",
- "src/library/playlistfeature.cpp",
- "src/library/setlogfeature.cpp",
- "src/library/autodj/dlgautodj.cpp",
- "src/library/dlganalysis.cpp",
- "src/library/dlgcoverartfullsize.cpp",
- "src/library/dlghidden.cpp",
- "src/library/dlgmissing.cpp",
- "src/library/dlgtagfetcher.cpp",
- "src/library/dlgtrackinfo.cpp",
- "src/library/dlgtrackmetadataexport.cpp",
-
- "src/library/browse/browsetablemodel.cpp",
- "src/library/browse/browsethread.cpp",
- "src/library/browse/browsefeature.cpp",
- "src/library/browse/foldertreemodel.cpp",
-
- "src/library/export/trackexportdlg.cpp",
- "src/library/export/trackexportwizard.cpp",
- "src/library/export/trackexportworker.cpp",
-
- "src/library/recording/recordingfeature.cpp",
- "src/library/recording/dlgrecording.cpp",
- "src/recording/recordingmanager.cpp",
- "src/engine/sidechain/enginerecord.cpp",
-
- # External Library Features
- "src/library/baseexternallibraryfeature.cpp",
- "src/library/baseexternaltrackmodel.cpp",
- "src/library/baseexternalplaylistmodel.cpp",
- "src/library/rhythmbox/rhythmboxfeature.cpp",
-
- "src/library/banshee/bansheefeature.cpp",
- "src/library/banshee/bansheeplaylistmodel.cpp",
- "src/library/banshee/bansheedbconnection.cpp",
-
- "src/library/itunes/itunesfeature.cpp",
- "src/library/traktor/traktorfeature.cpp",
- "src/library/serato/seratofeature.cpp",
- "src/library/serato/seratoplaylistmodel.cpp",
-
- "src/library/rekordbox/rekordboxfeature.cpp",
- "src/library/rekordbox/rekordbox_pdb.cpp",
- "src/library/rekordbox/rekordbox_anlz.cpp",
-
- "src/library/sidebarmodel.cpp",
- "src/library/library.cpp",
-
- "src/library/scanner/libraryscanner.cpp",
- "src/library/scanner/libraryscannerdlg.cpp",
- "src/library/scanner/scannertask.cpp",
- "src/library/scanner/importfilestask.cpp",
- "src/library/scanner/recursivescandirectorytask.cpp",
-
- "src/library/dao/cuedao.cpp",
- "src/library/dao/trackdao.cpp",
- "src/library/dao/playlistdao.cpp",
- "src/library/dao/libraryhashdao.cpp",
- "src/library/dao/settingsdao.cpp",
- "src/library/dao/analysisdao.cpp",
- "src/library/dao/autodjcratesdao.cpp",
-
- "src/library/librarycontrol.cpp",
- "src/library/starrating.cpp",
- "src/library/stardelegate.cpp",
- "src/library/stareditor.cpp",
- "src/library/bpmdelegate.cpp",
- "src/library/previewbuttondelegate.cpp",
- "src/library/colordelegate.cpp",
- "src/library/coverartdelegate.cpp",
- "src/library/locationdelegate.cpp",
- "src/library/tableitemdelegate.cpp",
-
- "src/library/treeitemmodel.cpp",
- "src/library/treeitem.cpp",
-
- "src/library/parser.cpp",
- "src/library/parserpls.cpp",
- "src/library/parserm3u.cpp",
- "src/library/parsercsv.cpp",
-
- "src/library/trackloader.cpp",
-
- "src/network/jsonwebtask.cpp",
- "src/network/webtask.cpp",
-
- "src/widget/wwaveformviewer.cpp",
-
- "src/waveform/sharedglcontext.cpp",
- "src/waveform/waveform.cpp",
- "src/waveform/waveformfactory.cpp",
- "src/waveform/waveformwidgetfactory.cpp",
- "src/waveform/vsyncthread.cpp",
- "src/waveform/guitick.cpp",
- "src/waveform/visualsmanager.cpp",
- "src/waveform/visualplayposition.cpp",
- "src/waveform/renderers/waveformwidgetrenderer.cpp",
- "src/waveform/renderers/waveformrendererabstract.cpp",
- "src/waveform/renderers/waveformrenderbackground.cpp",
- "src/waveform/renderers/waveformrendermark.cpp",
- "src/waveform/renderers/waveformrendermarkrange.cpp",
- "src/waveform/renderers/waveformrenderbeat.cpp",
- "src/waveform/renderers/waveformrendererendoftrack.cpp",
- "src/waveform/renderers/waveformrendererpreroll.cpp",
-
- "src/waveform/renderers/waveformrendererfilteredsignal.cpp",
- "src/waveform/renderers/waveformrendererhsv.cpp",
- "src/waveform/renderers/waveformrendererrgb.cpp",
- "src/waveform/renderers/qtwaveformrendererfilteredsignal.cpp",
- "src/waveform/renderers/qtwaveformrenderersimplesignal.cpp",
- "src/waveform/renderers/qtvsynctestrenderer.cpp",
-
- "src/waveform/renderers/waveformsignalcolors.cpp",
-
- "src/waveform/renderers/waveformrenderersignalbase.cpp",
- "src/waveform/renderers/waveformmark.cpp",
- "src/waveform/renderers/waveformmarkset.cpp",
- "src/waveform/renderers/waveformmarkrange.cpp",
- "src/waveform/renderers/glwaveformrenderersimplesignal.cpp",
- "src/waveform/renderers/glwaveformrendererrgb.cpp",
- "src/waveform/renderers/glwaveformrendererfilteredsignal.cpp",
- "src/waveform/renderers/glslwaveformrenderersignal.cpp",
- "src/waveform/renderers/glvsynctestrenderer.cpp",
-
- "src/waveform/waveformmarklabel.cpp",
- "src/waveform/widgets/waveformwidgetabstract.cpp",
- "src/waveform/widgets/emptywaveformwidget.cpp",
- "src/waveform/widgets/softwarewaveformwidget.cpp",
- "src/waveform/widgets/hsvwaveformwidget.cpp",
- "src/waveform/widgets/rgbwaveformwidget.cpp",
- "src/waveform/widgets/qthsvwaveformwidget.cpp",
- "src/waveform/widgets/qtrgbwaveformwidget.cpp",
- "src/waveform/widgets/qtwaveformwidget.cpp",
- "src/waveform/widgets/qtsimplewaveformwidget.cpp",
- "src/waveform/widgets/qtvsynctestwidget.cpp",
- "src/waveform/widgets/glwaveformwidget.cpp",
- "src/waveform/widgets/glsimplewaveformwidget.cpp",
- "src/waveform/widgets/glvsynctestwidget.cpp",
-
- "src/waveform/widgets/glslwaveformwidget.cpp",
-
- "src/waveform/widgets/glrgbwaveformwidget.cpp",
-
- "src/skin/imginvert.cpp",
- "src/skin/imgloader.cpp",
- "src/skin/imgcolor.cpp",
- "src/skin/skinloader.cpp",
- "src/skin/legacyskinparser.cpp",
- "src/skin/colorschemeparser.cpp",
- "src/skin/tooltips.cpp",
- "src/skin/skincontext.cpp",
- "src/skin/svgparser.cpp",
- "src/skin/pixmapsource.cpp",
- "src/skin/launchimage.cpp",
-
- "src/track/beatfactory.cpp",
- "src/track/beatgrid.cpp",
- "src/track/beatmap.cpp",
- "src/track/beatutils.cpp",
- "src/track/beats.cpp",
- "src/track/bpm.cpp",
- "src/track/cue.cpp",
- "src/track/cueinfo.cpp",
- "src/track/cueinfoimporter.cpp",
- "src/track/keyfactory.cpp",
- "src/track/keys.cpp",
- "src/track/keyutils.cpp",
- "src/track/playcounter.cpp",
- "src/track/replaygain.cpp",
- "src/track/serato/beatgrid.cpp",
- "src/track/serato/markers.cpp",
- "src/track/serato/markers2.cpp",
- "src/track/serato/tags.cpp",
- "src/track/serato/beatsimporter.cpp",
- "src/track/serato/cueinfoimporter.cpp",
- "src/track/track.cpp",
- "src/track/globaltrackcache.cpp",
- "src/track/trackfile.cpp",
- "src/track/trackmetadata.cpp",
- "src/track/tracknumbers.cpp",
- "src/track/albuminfo.cpp",
- "src/track/trackinfo.cpp",
- "src/track/trackrecord.cpp",
- "src/track/trackref.cpp",
- "src/track/taglib/trackmetadata_ape.cpp",
- "src/track/taglib/trackmetadata_common.cpp",
- "src/track/taglib/trackmetadata_file.cpp",
- "src/track/taglib/trackmetadata_id3v2.cpp",
- "src/track/taglib/trackmetadata_mp4.cpp",
- "src/track/taglib/trackmetadata_riff.cpp",
- "src/track/taglib/trackmetadata_xiph.cpp",
-
- "src/mixer/auxiliary.cpp",
- "src/mixer/baseplayer.cpp",
- "src/mixer/basetrackplayer.cpp",
- "src/mixer/deck.cpp",
- "src/mixer/microphone.cpp",
- "src/mixer/playerinfo.cpp",
- "src/mixer/playermanager.cpp",
- "src/mixer/previewdeck.cpp",
- "src/mixer/sampler.cpp",
- "src/mixer/samplerbank.cpp",
-
- "src/soundio/sounddevice.cpp",
- "src/soundio/sounddevicenetwork.cpp",
- "src/engine/sidechain/enginenetworkstream.cpp",
- "src/soundio/soundmanager.cpp",
- "src/soundio/soundmanagerconfig.cpp",
- "src/soundio/soundmanagerutil.cpp",
-
- "src/encoder/encoder.cpp",
- "src/encoder/encoderbroadcastsettings.cpp",
- "src/encoder/encoderflacsettings.cpp",
- "src/encoder/encodermp3.cpp",
- "src/encoder/encodermp3settings.cpp",
- "src/encoder/encodersndfileflac.cpp",
- "src/encoder/encodervorbis.cpp",
- "src/encoder/encodervorbissettings.cpp",
- "src/encoder/encoderwave.cpp",
- "src/encoder/encoderwavesettings.cpp",
- 'src/encoder/encoderopussettings.cpp',
-
- "src/util/sleepableqthread.cpp",
- "src/util/statsmanager.cpp",
- "src/util/stat.cpp",
- "src/util/statmodel.cpp",
- "src/util/dnd.cpp",
- "src/util/duration.cpp",
- "src/util/time.cpp",
- "src/util/timer.cpp",
- "src/util/performancetimer.cpp",
- "src/util/threadcputimer.cpp",
- "src/util/version.cpp",
- "src/util/rlimit.cpp",
- "src/util/battery/battery.cpp",
- "src/util/valuetransformer.cpp",
- "src/util/sandbox.cpp",
- "src/util/file.cpp",
- "src/util/mac.cpp",
- "src/util/task.cpp",
- "src/util/taskmonitor.cpp",
- "src/util/experiment.cpp",
- "src/util/xml.cpp",
- "src/util/tapfilter.cpp",
- "src/util/movinginterquartilemean.cpp",
- "src/util/cache.cpp",
- "src/util/console.cpp",
- "src/util/color/color.cpp",
- "src/util/color/colorpalette.cpp",
- "src/util/color/predefinedcolorpalettes.cpp",
- "src/util/db/dbconnection.cpp",
- "src/util/db/dbconnectionpool.cpp",
- "src/util/db/dbconnectionpooler.cpp",
- "src/util/db/dbconnectionpooled.cpp",
- "src/util/db/dbid.cpp",
- "src/util/db/fwdsqlquery.cpp",
- "src/util/db/fwdsqlqueryselectresult.cpp",
- "src/util/db/sqllikewildcardescaper.cpp",
- "src/util/db/sqlqueryfinisher.cpp",
- "src/util/db/sqlstringformatter.cpp",
- "src/util/db/sqltransaction.cpp",
- "src/util/sample.cpp",
- "src/util/samplebuffer.cpp",
- "src/util/readaheadsamplebuffer.cpp",
- "src/util/rotary.cpp",
- "src/util/logger.cpp",
- "src/util/logging.cpp",
- "src/util/cmdlineargs.cpp",
- "src/util/screensaver.cpp",
- "src/util/indexrange.cpp",
- "src/util/desktophelper.cpp",
- "src/util/widgethelper.cpp",
- "src/util/widgetrendertimer.cpp",
- "src/util/workerthread.cpp",
- "src/util/workerthreadscheduler.cpp"
- ]
-
- proto_args = {
- 'PROTOCPROTOPATH': ['src'],
- 'PROTOCPYTHONOUTDIR': '', # set to None to not generate python
- 'PROTOCOUTDIR': os.path.join(build.build_dir, 'src'),
- 'PROTOCCPPOUTFLAGS': '',
- #'PROTOCCPPOUTFLAGS': "dllexport_decl=PROTOCONFIG_EXPORT:"
- }
- proto_sources = SCons.Glob('src/proto/*.proto')
- proto_objects = [build.env.Protoc([], proto_source, **proto_args)[0]
- for proto_source in proto_sources]
- sources.extend(proto_objects)
-
- # Uic these guys (they're moc'd automatically after this) - Generates
- # the code for the QT UI forms.
- ui_files = [
- 'src/controllers/dlgcontrollerlearning.ui',
- 'src/controllers/dlgprefcontrollerdlg.ui',
- 'src/controllers/dlgprefcontrollersdlg.ui',
- 'src/dialog/dlgaboutdlg.ui',
- 'src/dialog/dlgdevelopertoolsdlg.ui',
- 'src/dialog/dlgreplacecuecolordlg.ui',
- 'src/library/autodj/dlgautodj.ui',
- 'src/library/dlganalysis.ui',
- 'src/library/dlgcoverartfullsize.ui',
- 'src/library/dlghidden.ui',
- 'src/library/dlgmissing.ui',
- 'src/library/dlgtagfetcher.ui',
- 'src/library/dlgtrackinfo.ui',
- 'src/library/export/dlgtrackexport.ui',
- 'src/library/recording/dlgrecording.ui',
- 'src/preferences/dialog/dlgprefautodjdlg.ui',
- 'src/preferences/dialog/dlgprefbeatsdlg.ui',
- 'src/preferences/dialog/dlgprefdeckdlg.ui',
- 'src/preferences/dialog/dlgprefcolorsdlg.ui',
- 'src/preferences/dialog/dlgprefcrossfaderdlg.ui',
- 'src/preferences/dialog/dlgpreflv2dlg.ui',
- 'src/preferences/dialog/dlgprefeffectsdlg.ui',
- 'src/preferences/dialog/dlgprefeqdlg.ui',
- 'src/preferences/dialog/dlgpreferencesdlg.ui',
- 'src/preferences/dialog/dlgprefinterfacedlg.ui',
- 'src/preferences/dialog/dlgprefkeydlg.ui',
- 'src/preferences/dialog/dlgpreflibrarydlg.ui',
- 'src/preferences/dialog/dlgprefnovinyldlg.ui',
- 'src/preferences/dialog/dlgprefrecorddlg.ui',
- 'src/preferences/dialog/dlgprefreplaygaindlg.ui',
- 'src/preferences/dialog/dlgprefsounddlg.ui',
- 'src/preferences/dialog/dlgprefsounditem.ui',
- 'src/preferences/dialog/dlgprefvinyldlg.ui',
- 'src/preferences/dialog/dlgprefwaveformdlg.ui',
- ]
-
- # In Python 3.x, map() returns a "map object" (instead of a list),
- # which is evaluated on-demand rather than at once. To invoke uic
- # for all *.ui files at once, we need to cast it to a list here.
- list(map(Qt.uic(build), ui_files))
-
- if build.platform_is_windows:
- # Add Windows resource file with icons and such
- # force manifest file creation, apparently not necessary for all
- # people but necessary for this committers handicapped windows
- # installation -- bkgood
- if build.toolchain_is_msvs:
- build.env.Append(LINKFLAGS="/MANIFEST")
- elif build.platform_is_osx:
- # Need extra room for code signing (App Store)
- build.env.Append(LINKFLAGS="-Wl,-headerpad,ffff")
- build.env.Append(LINKFLAGS="-Wl,-headerpad_max_install_names")
-
- return sources
-
- def configure(self, build, conf):
- # Evaluate this define. There are a lot of different things around the
- # codebase that use different defines. (AMD64, x86_64, x86, i386, i686,
- # EM64T). We need to unify them together.
- if not build.machine == 'alpha':
- build.env.Append(CPPDEFINES=build.machine)
-
- # TODO(rryan): Quick hack to get the build number in title bar. Clean up
- # later.
- if int(SCons.ARGUMENTS.get('build_number_in_title_bar', 0)):
- build.env.Append(CPPDEFINES='MIXXX_BUILD_NUMBER_IN_TITLE_BAR')
-
- if build.build_is_debug:
- build.env.Append(CPPDEFINES='MIXXX_BUILD_DEBUG')
- build.env.Append(CPPDEFINES='MIXXX_DEBUG_ASSERTIONS_ENABLED')
- elif build.build_is_release:
- build.env.Append(CPPDEFINES='MIXXX_BUILD_RELEASE')
- # Disable assert.h assertions in release mode. Some libraries use
- # this as a signal for when to enable code that should be disabled
- # in release mode.
- build.env.Append(CPPDEFINES='NDEBUG')
-
- # In a release build we want to disable all Q_ASSERTs in Qt headers
- # that we include. We can't define QT_NO_DEBUG because that would
- # mean turning off QDebug output. qt_noop() is what Qt defined
- # Q_ASSERT to be when QT_NO_DEBUG is defined in Qt 5.9 and earlier.
- # Now it is defined as static_cast(false&&(x)) to support use
- # in constexpr functions. We still use qt_noop on Windows since we
- # can't specify static_cast(false&&(x)) in a commandline
- # macro definition, but it seems VS 2015 isn't bothered by the use
- # qt_noop here, so we can keep it.
- if build.platform_is_windows:
- build.env.Append(CPPDEFINES="'Q_ASSERT(x)=qt_noop()'")
- else:
- build.env.Append(CPPDEFINES="'Q_ASSERT(x)=static_cast(false&&(x))'")
-
- if int(SCons.ARGUMENTS.get('debug_assertions_fatal', 0)):
- build.env.Append(CPPDEFINES='MIXXX_DEBUG_ASSERTIONS_FATAL')
- build.env.Append(CPPDEFINES='MIXXX_DEBUG_ASSERTIONS_ENABLED')
-
- if build.toolchain_is_gnu:
- # Default GNU Options
- build.env.Append(CCFLAGS='-pipe')
- build.env.Append(CCFLAGS='-Wall')
- build.env.Append(CCFLAGS='-Wextra')
-
- if build.compiler_is_gcc and build.gcc_major_version >= 9:
- # Avoid many warnings from GCC 9 about implicitly defined copy assignment
- # operators that are deprecated for classes with a user-provided copy
- # constructor. This affects both Qt 5.12 and Mixxx.
- build.env.Append(CXXFLAGS='-Wno-deprecated-copy')
-
- if build.compiler_is_clang:
- # Quiet down Clang warnings about inconsistent use of override
- # keyword until Qt fixes qt_metacall.
- build.env.Append(CCFLAGS='-Wno-inconsistent-missing-override')
-
- # Do not warn about use of the deprecated 'register' keyword
- # since it produces noise from libraries we depend on using it.
- build.env.Append(CCFLAGS='-Wno-deprecated-register')
-
- # Warn about implicit fallthrough.
- build.env.Append(CCFLAGS='-Wimplicit-fallthrough')
-
- # Enable thread-safety analysis.
- # http://clang.llvm.org/docs/ThreadSafetyAnalysis.html
- build.env.Append(CCFLAGS='-Wthread-safety')
-
- # Always generate debugging info.
- build.env.Append(CCFLAGS='-g')
- elif build.toolchain_is_msvs:
- # Validate the specified winlib directory exists
- mixxx_lib_path = build.winlib_path
- if not os.path.exists(mixxx_lib_path):
- raise Exception("Winlib path does not exist! Please specify your winlib directory"
- "path by running 'scons winlib=[path]'")
- Script.Exit(1)
-
- # Set include and library paths to work with this
- build.env.Append(CPPPATH=[mixxx_lib_path,
- os.path.join(mixxx_lib_path, 'include')])
- build.env.Append(LIBPATH=[mixxx_lib_path, os.path.join(mixxx_lib_path, 'lib')])
-
- # Find executables (e.g. protoc) in the winlib path
- build.env.AppendENVPath('PATH', mixxx_lib_path)
- build.env.AppendENVPath('PATH', os.path.join(mixxx_lib_path, 'bin'))
-
- # Valid values of /MACHINE are: {ARM|EBC|X64|X86}
- # http://msdn.microsoft.com/en-us/library/5wy54dk2.aspx
- if build.architecture_is_x86:
- if build.machine_is_64bit:
- build.env.Append(LINKFLAGS='/MACHINE:X64')
- else:
- build.env.Append(LINKFLAGS='/MACHINE:X86')
- elif build.architecture_is_arm:
- build.env.Append(LINKFLAGS='/MACHINE:ARM')
- else:
- raise Exception('Invalid machine type for Windows build.')
-
- # Build with multiple processes. TODO(XXX) make this configurable.
- # http://msdn.microsoft.com/en-us/library/bb385193.aspx
- build.env.Append(CCFLAGS='/MP')
-
- # Generate debugging information for compilation units and
- # executables linked if we are creating a debug build or bundling
- # PDBs is enabled. Having PDB files for our releases is helpful for
- # debugging, but increases link times and memory usage
- # significantly.
- if build.build_is_debug or build.bundle_pdbs:
- build.env.Append(LINKFLAGS='/DEBUG')
- build.env.Append(CCFLAGS='/Zi /Fd${TARGET}.pdb')
-
- if build.build_is_debug:
- # Important: We always build Mixxx with the Multi-Threaded DLL
- # runtime because Mixxx loads DLLs at runtime. Since this is a
- # debug build, use the debug version of the MD runtime.
- build.env.Append(CCFLAGS='/MDd')
- else:
- # Important: We always build Mixxx with the Multi-Threaded DLL
- # runtime because Mixxx loads DLLs at runtime.
- build.env.Append(CCFLAGS='/MD')
-
- if build.platform_is_windows:
- build.env.Append(CPPDEFINES='__WINDOWS__')
- # Restrict ATL to XP-compatible SDK functions.
- # TODO(rryan): Remove once we ditch XP support.
- build.env.Append(CPPDEFINES='_ATL_XP_TARGETING')
- build.env.Append(
- CPPDEFINES='_ATL_MIN_CRT') # Helps prevent duplicate symbols
- # Need this on Windows until we have UTF16 support in Mixxx
- # use stl min max defines
- # http://connect.microsoft.com/VisualStudio/feedback/details/553420/std-cpp-max-and-std-cpp-min-not-available-in-visual-c-2010
- build.env.Append(CPPDEFINES='NOMINMAX')
- build.env.Append(CPPDEFINES='UNICODE')
- build.env.Append(
- CPPDEFINES='WIN%s' % build.bitwidth) # WIN32 or WIN64
- # Tobias: Don't remove this line
- # I used the Windows API in foldertreemodel.cpp
- # to quickly test if a folder has subfolders
- build.env.Append(LIBS='shell32')
-
- # Causes the cmath headers to declare M_PI and friends.
- # http://msdn.microsoft.com/en-us/library/4hwaceh6.aspx
- # We could define this in our headers but then include order
- # matters since headers we don't control may include cmath first.
- build.env.Append(CPPDEFINES='_USE_MATH_DEFINES')
-
- elif build.platform_is_linux:
- build.env.Append(CPPDEFINES='__LINUX__')
-
- # Check for pkg-config >= 0.15.0
- if not conf.CheckForPKGConfig('0.15.0'):
- raise Exception('pkg-config >= 0.15.0 not found.')
-
- if not conf.CheckLib(['X11', 'libX11']):
- raise Exception(
- "Could not find libX11 or its development headers.")
-
- elif build.platform_is_osx:
- # Stuff you may have compiled by hand
- if os.path.isdir('/usr/local/include'):
- build.env.Append(LIBPATH=['/usr/local/lib'])
- # Use -isystem instead of -I to avoid compiler warnings from
- # system libraries. This cuts down on Mixxx's compilation output
- # significantly when using Homebrew installed to /usr/local.
- build.env.Append(CCFLAGS=['-isystem', '/usr/local/include'])
-
- elif build.platform_is_bsd:
- build.env.Append(CPPDEFINES='__BSD__')
- build.env.Append(CPPPATH=['/usr/include',
- '/usr/local/include',
- '/usr/X11R6/include/'])
- build.env.Append(LIBPATH=['/usr/lib/',
- '/usr/local/lib',
- '/usr/X11R6/lib'])
- build.env.Append(LIBS='pthread')
-
- # Define for things that would like to special case UNIX (Linux or BSD)
- if build.platform_is_bsd or build.platform_is_linux:
- build.env.Append(CPPDEFINES='__UNIX__')
-
- # Add the src/ directory to the include path
- build.env.Append(CPPPATH=['src'])
-
- # Set up flags for config/track listing files
- # SETTINGS_PATH not needed for windows and MacOSX because we now use QDesktopServices::storageLocation(QDesktopServices::DataLocation)
- if build.platform_is_linux or \
- build.platform_is_bsd:
- mixxx_files = [
- # TODO(XXX) Trailing slash not needed anymore as we switches from String::append
- # to QDir::filePath elsewhere in the code. This is candidate for removal.
- ('SETTINGS_PATH', '.mixxx/'),
- ('SETTINGS_FILE', 'mixxx.cfg')]
- elif build.platform_is_osx:
- mixxx_files = [
- ('SETTINGS_FILE', 'mixxx.cfg')]
- elif build.platform_is_windows:
- mixxx_files = [
- ('SETTINGS_FILE', 'mixxx.cfg')]
-
- # Escape the filenames so they don't end up getting screwed up in the
- # shell.
- mixxx_files = [(k, r'\"%s\"' % v) for k, v in mixxx_files]
- build.env.Append(CPPDEFINES=mixxx_files)
-
- # Say where to find resources on Unix. TODO(XXX) replace this with a
- # RESOURCE_PATH that covers Win and OSX too:
- if build.platform_is_linux or build.platform_is_bsd:
- prefix = SCons.ARGUMENTS.get('prefix', '/usr/local')
- share_path = os.path.join (prefix, build.env.get(
- 'SHAREDIR', default='share'), 'mixxx')
- build.env.Append(
- CPPDEFINES=('UNIX_SHARE_PATH', r'\"%s\"' % share_path))
- lib_path = os.path.join(prefix, build.env.get(
- 'LIBDIR', default='lib'), 'mixxx')
-
- def depends(self, build):
- return [SoundTouch, ReplayGain, Ebur128Mit, PortAudio, PortMIDI, Qt, TestHeaders,
- FidLib, SndFile, FLAC, OggVorbis, OpenGL, TagLib, ProtoBuf,
- Chromaprint, RubberBand, SecurityFramework, CoreServices, IOKit,
- QtScriptByteArray, Reverb, FpClassify, PortAudioRingBuffer, LAME,
- QueenMaryDsp, Kaitai, MP3GuessEnc, RigtorpSPSCQueue]
-
- def post_dependency_check_configure(self, build, conf):
- """Sets up additional things in the Environment that must happen
- after the Configure checks run."""
- if build.platform_is_windows:
- if build.toolchain_is_msvs:
- if not build.static_dependencies or build.build_is_debug:
- build.env.Append(LINKFLAGS=['/nodefaultlib:LIBCMT.lib',
- '/nodefaultlib:LIBCMTd.lib'])
-
- build.env.Append(LINKFLAGS='/entry:mainCRTStartup')
- # Makes the program not launch a shell first. 6.01 declares the
- # minimum version to be Windows 7.
- # https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-options/subsystemversion-compiler-option
- build.env.Append(LINKFLAGS='/subsystem:windows,6.01')
- # Force MSVS to generate a manifest (MSVC2010)
- build.env.Append(LINKFLAGS='/manifest')
- elif build.toolchain_is_gnu:
- # Makes the program not launch a shell first
- build.env.Append(LINKFLAGS='--subsystem,windows')
- build.env.Append(LINKFLAGS='-mwindows')
diff --git a/build/features.py b/build/features.py
deleted file mode 100644
index 2dea3ff0034..00000000000
--- a/build/features.py
+++ /dev/null
@@ -1,1229 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import os
-from . import util
-from .mixxx import Feature
-import SCons.Script as SCons
-from . import depends
-
-class HSS1394(Feature):
- def description(self):
- return "HSS1394 MIDI device support"
-
- def enabled(self, build):
- if build.platform_is_windows or build.platform_is_osx:
- build.flags['hss1394'] = util.get_flags(build.env, 'hss1394', 1)
- else:
- build.flags['hss1394'] = util.get_flags(build.env, 'hss1394', 0)
- if int(build.flags['hss1394']):
- return True
- return False
-
- def add_options(self, build, vars):
- if build.platform_is_windows or build.platform_is_osx:
- vars.Add('hss1394',
- 'Set to 1 to enable HSS1394 MIDI device support.', 1)
-
- def configure(self, build, conf):
- if not self.enabled(build):
- return
- if build.platform_is_windows or build.platform_is_osx:
-# if not conf.CheckHeader('HSS1394/HSS1394.h'): # WTF this gives tons of cmath errors on MSVC
-# raise Exception('Did not find HSS1394 development headers')
- if not conf.CheckLib(['libhss1394', 'hss1394']):
- raise Exception('Did not find HSS1394 development library')
-
- build.env.Append(CPPDEFINES='__HSS1394__')
-
- if build.platform_is_windows and build.static_dependencies:
- conf.CheckLib('user32')
-
- def sources(self, build):
- return ['src/controllers/midi/hss1394controller.cpp',
- 'src/controllers/midi/hss1394enumerator.cpp']
-
-
-class HID(Feature):
- INTERNAL_LINK = False
- HIDAPI_INTERNAL_PATH = 'lib/hidapi'
-
- def description(self):
- return "HID controller support"
-
- def enabled(self, build):
- build.flags['hid'] = util.get_flags(build.env, 'hid', 1)
- if int(build.flags['hid']):
- return True
- return False
-
- def add_options(self, build, vars):
- vars.Add('hid', 'Set to 1 to enable HID controller support.', 1)
-
- def configure(self, build, conf):
- if not self.enabled(build):
- return
-
- if build.platform_is_linux or build.platform_is_bsd:
- # Try using system lib
- if not conf.CheckLib(['hidapi-libusb', 'libhidapi-libusb']):
- # No System Lib found
- self.INTERNAL_LINK = True
- build.env.ParseConfig(
- 'pkg-config libusb-1.0 --silence-errors --cflags --libs')
- if (not conf.CheckLib(['libusb-1.0', 'usb-1.0']) or
- not conf.CheckHeader('libusb-1.0/libusb.h')):
- raise Exception(
- 'Did not find the libusb 1.0 development library or its header file')
- else:
- build.env.ParseConfig('pkg-config hidapi-libusb --silence-errors --cflags --libs')
-
-
- # Optionally add libpthread and librt. Some distros need this.
- conf.CheckLib(['pthread', 'libpthread'])
- conf.CheckLib(['rt', 'librt'])
-
- # -pthread tells GCC to do the right thing regardless of system
- build.env.Append(CCFLAGS='-pthread')
- build.env.Append(LINKFLAGS='-pthread')
-
- else:
- self.INTERNAL_LINK = True
- if build.platform_is_windows and not conf.CheckLib(['setupapi', 'libsetupapi']):
- raise Exception('Did not find the setupapi library, exiting.')
- elif build.platform_is_osx:
- build.env.AppendUnique(FRAMEWORKS=['IOKit', 'CoreFoundation', 'AppKit'])
-
- build.env.Append(CPPDEFINES='__HID__')
- if self.INTERNAL_LINK:
- build.env.Append(
- CPPPATH=[os.path.join('#' + self.HIDAPI_INTERNAL_PATH, 'hidapi')])
-
- def sources(self, build):
- sources = ['src/controllers/hid/hidcontroller.cpp',
- 'src/controllers/hid/hidcontrollerpreset.cpp',
- 'src/controllers/hid/hidenumerator.cpp',
- 'src/controllers/hid/hidcontrollerpresetfilehandler.cpp']
-
- if self.INTERNAL_LINK:
- if build.platform_is_windows:
- # Requires setupapi.lib which is included by the above check for
- # setupapi.
- sources.append(
- os.path.join(self.HIDAPI_INTERNAL_PATH, "windows/hid.c"))
- elif build.platform_is_linux:
- # hidapi compiles the libusb implementation by default on Linux
- sources.append(
- os.path.join(self.HIDAPI_INTERNAL_PATH, 'libusb/hid.c'))
- elif build.platform_is_osx:
- sources.append(
- os.path.join(self.HIDAPI_INTERNAL_PATH, 'mac/hid.c'))
-
- return sources
-
-
-class Bulk(Feature):
- def description(self):
- return "USB Bulk controller support"
-
- def enabled(self, build):
- # For now only make Bulk default on Linux only. Turn on for all
- # platforms after the 1.11.0 release.
- is_default = 1 if build.platform_is_linux else 0
- build.flags['bulk'] = util.get_flags(build.env, 'bulk', is_default)
- if int(build.flags['bulk']):
- return True
- return False
-
- def add_options(self, build, vars):
- is_default = 1 if build.platform_is_linux else 0
- vars.Add('bulk',
- 'Set to 1 to enable USB Bulk controller support.', is_default)
-
- def configure(self, build, conf):
- if not self.enabled(build):
- return
-
- build.env.ParseConfig(
- 'pkg-config libusb-1.0 --silence-errors --cflags --libs')
- if (not conf.CheckLib(['libusb-1.0', 'usb-1.0']) or
- not conf.CheckHeader('libusb-1.0/libusb.h')):
- raise Exception(
- 'Did not find the libusb 1.0 development library or its header file, exiting!')
-
- build.env.Append(CPPDEFINES='__BULK__')
-
- def sources(self, build):
- sources = ['src/controllers/bulk/bulkcontroller.cpp',
- 'src/controllers/bulk/bulkenumerator.cpp']
- if not int(build.flags['hid']):
- sources.append(
- ['src/controllers/hid/hidcontrollerpresetfilehandler.cpp',
- 'src/controllers/hid/hidcontrollerpreset.cpp'])
- return sources
-
-
-class Mad(Feature):
- def description(self):
- return "MAD MP3 Decoder"
-
- def default(self, build):
- return 0 if build.platform_is_osx else 1
-
- def enabled(self, build):
- build.flags['mad'] = util.get_flags(build.env, 'mad',
- self.default(build))
- if int(build.flags['mad']):
- return True
- return False
-
- def add_options(self, build, vars):
- vars.Add('mad', 'Set to 1 to enable MAD MP3 decoder support.',
- self.default(build))
-
- def configure(self, build, conf):
- if not self.enabled(build):
- return
- if not conf.CheckLib(['libmad', 'mad']):
- raise Exception(
- 'Did not find libmad.a, libmad.lib, or the libmad development header files - exiting!')
- if not conf.CheckLib(['libid3tag', 'id3tag', 'libid3tag-release']):
- raise Exception(
- 'Did not find libid3tag.a, libid3tag.lib, or the libid3tag development header files - exiting!')
- build.env.Append(CPPDEFINES='__MAD__')
-
- def sources(self, build):
- return ['src/sources/soundsourcemp3.cpp']
-
-
-class CoreAudio(Feature):
-
- def description(self):
- return "CoreAudio MP3/AAC Decoder"
-
- def default(self, build):
- return 1 if build.platform_is_osx else 0
-
- def enabled(self, build):
- build.flags['coreaudio'] = util.get_flags(
- build.env, 'coreaudio', self.default(build))
- if int(build.flags['coreaudio']):
- return True
- return False
-
- def add_options(self, build, vars):
- vars.Add(
- 'coreaudio', 'Set to 1 to enable CoreAudio MP3/AAC decoder support.',
- self.default(build))
-
- def configure(self, build, conf):
- if not self.enabled(build):
- return
-
- if not build.platform_is_osx:
- raise Exception('CoreAudio is only supported on OS X!')
-
- build.env.Append(CPPPATH='#lib/apple/')
- build.env.AppendUnique(FRAMEWORKS=['AudioToolbox', 'CoreFoundation'])
- build.env.Append(CPPDEFINES='__COREAUDIO__')
-
- def sources(self, build):
- return ['src/sources/soundsourcecoreaudio.cpp',
- 'src/sources/v1/legacyaudiosourceadapter.cpp',
- 'lib/apple/CAStreamBasicDescription.cpp']
-
-
-class MediaFoundation(Feature):
- FLAG = 'mediafoundation'
-
- def description(self):
- return "Media Foundation AAC Decoder Plugin"
-
- def enabled(self, build):
- build.flags[self.FLAG] = util.get_flags(build.env, self.FLAG, 0)
- if int(build.flags[self.FLAG]):
- return True
- return False
-
- def add_options(self, build, vars):
- if build.platform_is_windows:
- vars.Add(
- self.FLAG, "Set to 1 to enable the Media Foundation AAC decoder plugin (Windows Vista with KB2117917 or Windows 7 required)", 0)
-
- def configure(self, build, conf):
- if not self.enabled(build):
- return
- if not build.platform_is_windows:
- raise Exception("Media Foundation is only supported on Windows!")
- if not conf.CheckLib('Ole32'):
- raise Exception('Did not find Ole32.lib - exiting!')
- if not conf.CheckLib(['Mfuuid']):
- raise Exception('Did not find Mfuuid.lib - exiting!')
- if not conf.CheckLib(['Mfplat']):
- raise Exception('Did not find Mfplat.lib - exiting!')
- if not conf.CheckLib(['Mfreadwrite']): # Only available on Windows 7 and up, or properly updated Vista
- raise Exception('Did not find Mfreadwrite.lib - exiting!')
- build.env.Append(CPPDEFINES='__MEDIAFOUNDATION__')
-
- def sources(self, build):
- return ['src/sources/soundsourcemediafoundation.cpp']
-
-
-class VinylControl(Feature):
- def description(self):
- return "Vinyl Control"
-
- def enabled(self, build):
- build.flags['vinylcontrol'] = util.get_flags(build.env,
- 'vinylcontrol', 0)
- # Existence of the macappstore option forces vinylcontrol off due to
- # licensing issues.
- if 'macappstore' in build.flags and int(build.flags['macappstore']):
- return False
- if int(build.flags['vinylcontrol']):
- return True
- return False
-
- def add_options(self, build, vars):
- vars.Add('vinylcontrol', 'Set to 1 to enable vinyl control support', 1)
-
- def configure(self, build, conf):
- if not self.enabled(build):
- return
- build.env.Append(CPPDEFINES='__VINYLCONTROL__')
- build.env.Append(CPPPATH='#lib/xwax')
-
- def sources(self, build):
- sources = ['src/vinylcontrol/vinylcontrol.cpp',
- 'src/vinylcontrol/vinylcontrolxwax.cpp',
- 'src/preferences/dialog/dlgprefvinyl.cpp',
- 'src/vinylcontrol/vinylcontrolsignalwidget.cpp',
- 'src/vinylcontrol/vinylcontrolmanager.cpp',
- 'src/vinylcontrol/vinylcontrolprocessor.cpp',
- 'src/vinylcontrol/steadypitch.cpp',
- 'src/engine/controls/vinylcontrolcontrol.cpp', ]
- if build.platform_is_windows:
- sources.append("lib/xwax/timecoder_win32.cpp")
- sources.append("lib/xwax/lut_win32.cpp")
- else:
- sources.append("lib/xwax/timecoder.c")
- sources.append("lib/xwax/lut.c")
-
- return sources
-
-
-class ModPlug(Feature):
- def description(self):
- return "Modplug module decoder plugin"
-
- def enabled(self, build):
- # Default to enabled on but only throw an error if it was explicitly
- # requested and is not available.
- if 'modplug' in build.flags:
- return int(build.flags['modplug']) > 0
- build.flags['modplug'] = util.get_flags(build.env, 'modplug', 1)
- if int(build.flags['modplug']):
- return True
- return False
-
- def add_options(self, build, vars):
- vars.Add('modplug',
- 'Set to 1 to enable libmodplug based module tracker support.',
- 1)
-
- def configure(self, build, conf):
- if not self.enabled(build):
- return
-
- # Only block the configure if modplug was explicitly requested.
- explicit = 'modplug' in SCons.ARGUMENTS
-
- if not conf.CheckHeader('libmodplug/modplug.h'):
- if explicit:
- raise Exception('Could not find libmodplug development headers.')
- else:
- build.flags['modplug'] = 0
- return
-
- if not conf.CheckLib(['modplug', 'libmodplug'], autoadd=True):
- if explicit:
- raise Exception('Could not find libmodplug shared library.')
- else:
- build.flags['modplug'] = 0
- return
-
- build.env.Append(CPPDEFINES='__MODPLUG__')
-
- def sources(self, build):
- depends.Qt.uic(build)('src/preferences/dialog/dlgprefmodplugdlg.ui')
- return ['src/sources/soundsourcemodplug.cpp',
- 'src/preferences/dialog/dlgprefmodplug.cpp']
-
-
-class FAAD(Feature):
- def description(self):
- return "FAAD AAC audio file decoder plugin"
-
- def default(self, build):
- return 1 if build.platform_is_linux else 0
-
- def enabled(self, build):
- build.flags['faad'] = util.get_flags(build.env, 'faad', self.default(build))
- if int(build.flags['faad']):
- return True
- return False
-
- def add_options(self, build, vars):
- vars.Add('faad',
- 'Set to 1 to enable building the FAAD AAC decoder plugin.', 0)
-
- def configure(self, build, conf):
- if not self.enabled(build):
- return
-
- build.env.Append(CPPDEFINES='__FAAD__')
- have_mp4v2_h = conf.CheckHeader('mp4v2/mp4v2.h')
- if have_mp4v2_h:
- build.env.Append(CPPDEFINES = '__MP4V2__')
- have_mp4 = conf.CheckLib(['mp4v2', 'libmp4v2', 'mp4'])
-
- if not have_mp4:
- raise Exception(
- 'Could not find libmp4, libmp4v2 or the libmp4v2 development headers.')
-
- def sources(self, build):
- return ['src/sources/soundsourcem4a.cpp',
- 'src/sources/libfaadloader.cpp']
-
-
-class WavPack(Feature):
- def description(self):
- return "WavPack audio file support plugin"
-
- def enabled(self, build):
- build.flags['wv'] = util.get_flags(build.env, 'wv', 0)
- if int(build.flags['wv']):
- return True
- return False
-
- def add_options(self, build, vars):
- vars.Add('wv',
- 'Set to 1 to enable building the WavPack support plugin.', 0)
-
- def configure(self, build, conf):
- if not self.enabled(build):
- return
-
- build.env.Append(CPPDEFINES='__WV__')
- if not conf.CheckLib(['wavpack', 'wv']):
- raise Exception(
- 'Could not find libwavpack, libwv or its development headers.')
-
- def sources(self, build):
- return ['src/sources/soundsourcewv.cpp']
-
-
-class ColorDiagnostics(Feature):
- def description(self):
- return "Color Diagnostics"
-
- def enabled(self, build):
- build.flags['color'] = util.get_flags(build.env, 'color', 0)
- return bool(int(build.flags['color']))
-
- def add_options(self, build, vars):
- vars.Add('color', "Set to 1 to enable Clang color diagnostics.", 0)
-
- def configure(self, build, conf):
- if not self.enabled(build):
- return
-
- if not build.compiler_is_clang:
- raise Exception('Color diagnostics are only available using clang.')
-
- build.env.Append(CCFLAGS='-fcolor-diagnostics')
-
-
-class Sanitizers(Feature):
- # Known sanitizers, their names, and their -fsanitize=foo argument.
- SANITIZERS = [('asan', 'AddressSanitizer', 'address'),
- ('ubsan', 'UndefinedBehaviorSanitizer', 'undefined'),
- ('tsan', 'ThreadSanitizer', 'thread')]
- def description(self):
- return "Clang Sanitizers (asan, ubsan, tsan, etc.)"
-
- def enabled(self, build):
- any_enabled = False
- for keyword, _, _ in Sanitizers.SANITIZERS:
- build.flags[keyword] = util.get_flags(build.env, keyword, 0)
- any_enabled = any_enabled or bool(int(build.flags[keyword]))
- return any_enabled
-
- def add_options(self, build, vars):
- for keyword, name, _ in Sanitizers.SANITIZERS:
- vars.Add(keyword, "Set to 1 to enable the Clang %s." % name, 0)
-
- def configure(self, build, conf):
- if not self.enabled(build):
- return
-
- if not build.compiler_is_clang:
- raise Exception('Sanitizers are only available when using clang.')
-
- sanitizers = []
- for keyword, _, fsanitize in Sanitizers.SANITIZERS:
- if bool(int(build.flags[keyword])):
- sanitizers.append(fsanitize)
-
- # The Optimize feature below checks whether we are enabled and prevents
- # -fomit-frame-pointer if any sanitizer is enabled.
- build.env.Append(CCFLAGS="-fsanitize=%s" % ','.join(sanitizers))
- build.env.Append(LINKFLAGS="-fsanitize=%s" % ','.join(sanitizers))
-
-
-class PerfTools(Feature):
- def description(self):
- return "Google PerfTools"
-
- def enabled(self, build):
- build.flags['perftools'] = util.get_flags(build.env, 'perftools', 0)
- build.flags['perftools_profiler'] = util.get_flags(
- build.env, 'perftools_profiler', 0)
- if int(build.flags['perftools']):
- return True
- return False
-
- def add_options(self, build, vars):
- vars.Add(
- "perftools", "Set to 1 to enable linking against libtcmalloc and Google's performance tools. You must install libtcmalloc from google-perftools to use this option.", 0)
- vars.Add("perftools_profiler", "Set to 1 to enable linking against libprofiler, Google's CPU profiler. You must install libprofiler from google-perftools to use this option.", 0)
-
- def configure(self, build, conf):
- if not self.enabled(build):
- return
-
- if not conf.CheckLib('tcmalloc'):
- raise Exception('Could not find tcmalloc. Please install it or compile Mixxx with perftools=0.')
-
- if int(build.flags['perftools_profiler']) and not conf.CheckLib('profiler'):
- raise Exception('Could not find the google-perftools profiler. Please install it or compile Mixxx with perftools_profiler=0.')
-
-
-class AsmLib(Feature):
- def description(self):
- return "Agner Fog\'s ASMLIB"
-
- def enabled(self, build):
- if build.build_is_debug:
- return False
- build.flags['asmlib'] = util.get_flags(build.env, 'asmlib', 0)
- if int(build.flags['asmlib']):
- return True
- return False
-
- def add_options(self, build, vars):
- vars.Add(
- 'asmlib', 'Set to 1 to enable linking against Agner Fog\'s hand-optimized asmlib, found at http://www.agner.org/optimize/', 0)
-
- def configure(self, build, conf):
- if build.build_is_debug:
- self.status = "Disabled (due to debug build)"
- return
- if not self.enabled(build):
- return
-
- build.env.Append(LIBPATH='lib/asmlib')
- if build.platform_is_linux:
- #Use ASMLIB's functions instead of the compiler's
- build.env.Append(CCFLAGS='-fno-builtin')
- build.env.Prepend(LIBS='":libaelf%so.a"' % build.bitwidth)
- elif build.platform_is_osx:
- #Use ASMLIB's functions instead of the compiler's
- build.env.Append(CCFLAGS='-fno-builtin')
- build.env.Prepend(LIBS='":libamac%so.a"' % build.bitwidth)
- elif build.platform_is_windows:
- #Use ASMLIB's functions instead of the compiler's
- build.env.Append(CCFLAGS='/Oi-')
- build.env.Prepend(LIBS='libacof%so' % build.bitwidth)
-
-
-class BuildTime(Feature):
- def description(self):
- return "Use __DATE__ and __TIME__"
-
- def enabled(self, build):
- build.flags['buildtime'] = util.get_flags(build.env, 'buildtime', 1)
- if int(build.flags['buildtime']):
- return True
- return False
-
- def add_options(self, build, vars):
- vars.Add(
- 'buildtime', 'Set to 0 to disable build time (__DATE__ and __TIME__) usage.', 1)
-
- def configure(self, build, conf):
- # Distributions like openSUSE use tools (e. g. build-compare) to detect
- # whether a built binary differs from a former build to avoid unneeded
- # publishing of packages.
- # If __DATE__ and __TIME__ are used the built binary differs always but
- # the tools cannot detect the root and publish a new package although
- # the only change is caused by __DATE__ and __TIME__.
- # So let distributions disable __DATE__ and __TIME__ via buildtime=0.
- if not self.enabled(build):
- build.env.Append(CPPDEFINES='DISABLE_BUILDTIME')
-
-
-class Verbose(Feature):
- def description(self):
- return "Verbose compilation output"
-
- def enabled(self, build):
- build.flags['verbose'] = util.get_flags(build.env, 'verbose', 1)
- if int(build.flags['verbose']):
- return True
- return False
-
- def add_options(self, build, vars):
- vars.Add('verbose', 'Compile files verbosely.', 1)
-
- def configure(self, build, conf):
- if not self.enabled(build):
- build.env['CCCOMSTR'] = '[CC] $SOURCE'
- build.env['CXXCOMSTR'] = '[CXX] $SOURCE'
- build.env['ASCOMSTR'] = '[AS] $SOURCE'
- build.env['ARCOMSTR'] = '[AR] $TARGET'
- build.env['RANLIBCOMSTR'] = '[RANLIB] $TARGET'
- build.env['LDMODULECOMSTR'] = '[LD] $TARGET'
- build.env['LINKCOMSTR'] = '[LD] $TARGET'
-
- build.env['QT5_LUPDATECOMSTR'] = '[LUPDATE] $SOURCE'
- build.env['QT5_LRELEASECOMSTR'] = '[LRELEASE] $SOURCE'
- build.env['QT5_QRCCOMSTR'] = '[QRC] $SOURCE'
- build.env['QT5_UICCOMSTR'] = '[UIC5] $SOURCE'
- build.env['QT5_MOCCOMSTR'] = '[MOC] $SOURCE'
-
-
-class Profiling(Feature):
- def description(self):
- return "profiling (e.g. gprof) support"
-
- def enabled(self, build):
- build.flags['profiling'] = util.get_flags(build.env, 'profiling', 0)
- if int(build.flags['profiling']):
- if build.platform_is_linux or build.platform_is_osx or build.platform_is_bsd:
- return True
- return False
-
- def add_options(self, build, vars):
- if not build.platform_is_windows:
- vars.Add('profiling',
- '(DEVELOPER) Set to 1 to enable profiling using gprof (Linux). Disables -fomit-frame-pointer.', 0)
-
- def configure(self, build, conf):
- if not self.enabled(build):
- return
- if build.platform_is_linux or build.platform_is_bsd:
- build.env.Append(CCFLAGS='-pg')
- build.env.Append(LINKFLAGS='-pg')
-
-
-class TestSuite(Feature):
- def description(self):
- return "Mixxx Test Suite"
-
- def enabled(self, build):
- build.flags['test'] = (util.get_flags(build.env, 'test', 0) or
- 'test' in SCons.COMMAND_LINE_TARGETS or
- 'mixxx-test' in SCons.COMMAND_LINE_TARGETS)
- if int(build.flags['test']):
- return True
- return False
-
- def add_options(self, build, vars):
- vars.Add('test', 'Set to 1 to build Mixxx test fixtures.', 0)
-
- def configure(self, build, conf):
- if not self.enabled(build):
- return
-
- def sources(self, build):
- # Build the gtest library, but don't return any sources.
-
- # Clone our main environment so we don't change any settings in the
- # Mixxx environment
- env = build.env.Clone()
- SCons.Export('env')
- SCons.Export('build')
-
- # -pthread tells GCC to do the right thing regardless of system
- if build.toolchain_is_gnu:
- env.Append(CCFLAGS='-pthread')
- env.Append(LINKFLAGS='-pthread')
-
- # Build gtest
- env.Append(CPPPATH="#lib/googletest-1.8.x/googletest/include")
- gtest_dir = env.Dir("lib/googletest-1.8.x/googletest")
- env.SConscript(env.File('SConscript', gtest_dir))
- build.env.Append(LIBPATH=gtest_dir)
- build.env.Append(LIBS=['gtest'])
-
- # Build gmock
- env.Append(CPPPATH="#lib/googletest-1.8.x/googlemock/include")
- gmock_dir = env.Dir("lib/googletest-1.8.x/googlemock")
- env.SConscript(env.File('SConscript', gmock_dir))
- build.env.Append(LIBPATH=gmock_dir)
- build.env.Append(LIBS=['gmock'])
-
- # Build the benchmark library
- env.Append(CPPPATH="#lib/benchmark/include")
- benchmark_dir = env.Dir("lib/benchmark")
- env.SConscript(env.File('SConscript', benchmark_dir))
- build.env.Append(LIBPATH=benchmark_dir)
- build.env.Append(LIBS=['benchmark'])
-
- return []
-
-
-class LiveBroadcasting(Feature):
- INTERNAL_LINK = False
-
- def description(self):
- return "Live Broadcasting Support"
-
- def enabled(self, build):
- build.flags['shoutcast'] = util.get_flags(build.env, 'shoutcast', 1)
- if int(build.flags['shoutcast']):
- return True
- return False
-
- def add_options(self, build, vars):
- vars.Add('shoutcast', 'Set to 1 to enable live broadcasting support', 1)
-
- def configure(self, build, conf):
- if not self.enabled(build):
- return
-
- build.env.Append(CPPDEFINES='__BROADCAST__')
-
- if build.platform_is_linux:
- # Check if system lib is lower at least 2.4.4 and not suffering bug
- # https://bugs.launchpad.net/mixxx/+bug/1833225
- if not conf.CheckForPKG('shout', '2.4.4'):
- self.INTERNAL_LINK = True
-
- if not self.INTERNAL_LINK:
- self.INTERNAL_LINK = not conf.CheckLib(['libshout', 'shout'])
-
- if self.INTERNAL_LINK:
- print("Using internal shout_mixxx from lib/libshout")
- build.env.Append(CPPPATH='include')
- build.env.Append(CPPPATH='src')
- return
-
- if build.platform_is_windows and build.static_dependencies:
- conf.CheckLib('winmm')
- conf.CheckLib('ws2_32')
- conf.CheckLib('gdi32')
-
- def sources(self, build):
- if self.INTERNAL_LINK:
- # Clone our main environment so we don't change any settings in the
- # Mixxx environment
- libshout_env = build.env.Clone()
- libshout_env['LIB_OUTPUT'] = '#lib/libshout/lib'
-
- if build.toolchain_is_gnu:
- libshout_env.Append(CCFLAGS='-pthread')
- libshout_env.Append(LINKFLAGS='-pthread')
-
- libshout_env.Append(CPPPATH="#lib/libshout")
- libshout_dir = libshout_env.Dir("#lib/libshout")
-
- env = libshout_env
- SCons.Export('env')
- SCons.Export('build')
- env.SConscript(
- env.File('SConscript', libshout_dir),
- variant_dir="lib/libshout2",
- duplicate=0,
- exports=['build'])
-
- build.env.Append(CPPPATH="#lib/libshout/include")
- build.env.Append(LIBPATH='#lib/libshout/lib')
- build.env.Append(LIBS=['shout_mixxx', 'ogg', 'vorbis', 'theora', 'speex', 'ssl', 'crypto'])
-
- depends.Qt.uic(build)('src/preferences/dialog/dlgprefbroadcastdlg.ui')
- return ['src/preferences/dialog/dlgprefbroadcast.cpp',
- 'src/broadcast/broadcastmanager.cpp',
- 'src/engine/sidechain/shoutconnection.cpp']
-
-
-class Opus(Feature):
- def description(self):
- return "Opus (RFC 6716) support"
-
- def enabled(self, build):
- # Default Opus to on but only throw an error if it was explicitly
- # requested.
- if 'opus' in build.flags:
- return int(build.flags['opus']) > 0
- build.flags['opus'] = util.get_flags(build.env, 'opus', 1)
- if int(build.flags['opus']):
- return True
- return False
-
- def add_options(self, build, vars):
- vars.Add('opus', 'Set to 1 to enable Opus (RFC 6716) support \
- (supported are Opus 1.0 and above and Opusfile 0.2 and above)', 1)
-
- def configure(self, build, conf):
- if not self.enabled(build):
- return
-
- # Only block the configure if opus was explicitly requested.
- explicit = 'opus' in SCons.ARGUMENTS
-
- # Support for Opus (RFC 6716)
- # More info http://http://www.opus-codec.org/
- if not conf.CheckLib(['opusfile', 'libopusfile']) or not conf.CheckLib(['opus', 'libopus']):
- if explicit:
- raise Exception('Could not find opus or libopusfile.')
- else:
- build.flags['opus'] = 0
- return
-
- if build.platform_is_windows and build.static_dependencies:
- for opus_lib in ['celt', 'silk_common', 'silk_float']:
- if not conf.CheckLib(opus_lib):
- raise Exception('Missing opus static library %s -- exiting' % opus_lib)
-
- if build.platform_is_linux or build.platform_is_bsd:
- build.env.ParseConfig('pkg-config opusfile opus --silence-errors --cflags --libs')
-
- build.env.Append(CPPDEFINES='__OPUS__')
-
- def sources(self, build):
- return ['src/sources/soundsourceopus.cpp',
- 'src/encoder/encoderopus.cpp']
-
-
-class FFmpeg(Feature):
- def description(self):
- return "FFmpeg 4.x support"
-
- def enabled(self, build):
- build.flags['ffmpeg'] = util.get_flags(build.env, 'ffmpeg', 0)
- if int(build.flags['ffmpeg']):
- return True
- return False
-
- def add_options(self, build, vars):
- vars.Add('ffmpeg', 'Set to 1 to enable FFmpeg 4.x support', 0)
-
- def configure(self, build, conf):
- if not self.enabled(build):
- return
-
- # FFmpeg is multimedia library that can be found http://ffmpeg.org/
- if build.platform_is_linux or build.platform_is_osx \
- or build.platform_is_bsd:
- # Check for libavcodec, libavformat
- if not conf.CheckForPKG('libavcodec', '58'):
- raise Exception('Missing libavcodec or it\'s too old! It can '
- 'be separated from main package so check your '
- 'operating system packages.')
- if not conf.CheckForPKG('libavformat', '58'):
- raise Exception('Missing libavformat or it\'s too old! '
- 'It can be separated from main package so '
- 'check your operating system packages.')
- if not conf.CheckForPKG('libswresample', '3.1'):
- raise Exception('Missing libswresample or it\'s too old! '
- 'It can be separated from main package so '
- 'check your operating system packages.')
-
- # Needed to build new FFmpeg
- build.env.Append(CCFLAGS='-D__STDC_CONSTANT_MACROS')
- build.env.Append(CCFLAGS='-D__STDC_LIMIT_MACROS')
- build.env.Append(CCFLAGS='-D__STDC_FORMAT_MACROS')
-
- # Grabs the libs and cflags for FFmpeg
- build.env.ParseConfig('pkg-config libswresample --silence-errors \
- --cflags --libs')
- build.env.ParseConfig('pkg-config libavcodec --silence-errors \
- --cflags --libs')
- build.env.ParseConfig('pkg-config libavformat --silence-errors \
- --cflags --libs')
- build.env.ParseConfig('pkg-config libavutil --silence-errors \
- --cflags --libs')
-
- build.env.Append(CPPDEFINES='__FFMPEG__')
- self.status = "Enabled"
-
- else:
- raise Exception('Building with FFmpeg 4.x is not supported'
- 'for your platform')
-
- def sources(self, build):
- return ['src/sources/soundsourceffmpeg.cpp']
-
-
-class Optimize(Feature):
- LEVEL_OFF = 'off'
- LEVEL_PORTABLE = 'portable'
- LEVEL_NATIVE = 'native'
- LEVEL_LEGACY = 'legacy'
- LEVEL_FASTBUILD = 'fastbuild'
- LEVEL_DEFAULT = LEVEL_PORTABLE
-
- def description(self):
- return "Optimization and Tuning"
-
- @staticmethod
- def get_optimization_level(build):
- optimize_level = build.env.get('optimize', None)
- if optimize_level is None:
- optimize_level = SCons.ARGUMENTS.get('optimize',
- Optimize.LEVEL_DEFAULT)
-
- try:
- optimize_integer = int(optimize_level)
- if optimize_integer == 0:
- optimize_level = Optimize.LEVEL_OFF
- elif optimize_integer == 1:
- # Level 1 was a legacy (compiler optimizations only) build.
- optimize_level = Optimize.LEVEL_LEGACY
- elif optimize_integer in xrange(2, 10):
- # Levels 2 through 9 map to portable.
- optimize_level = Optimize.LEVEL_PORTABLE
- except:
- pass
-
- # Support common aliases for off.
- if optimize_level in ('none', 'disable', 'disabled'):
- optimize_level = Optimize.LEVEL_OFF
-
- if optimize_level not in (Optimize.LEVEL_OFF, Optimize.LEVEL_PORTABLE,
- Optimize.LEVEL_NATIVE, Optimize.LEVEL_LEGACY,
- Optimize.LEVEL_FASTBUILD):
- raise Exception("optimize={} is not supported. "
- "Use portable, native, legacy or off"
- .format(optimize_level))
- return optimize_level
-
- def enabled(self, build):
- build.flags['optimize'] = Optimize.get_optimization_level(build)
- return build.flags['optimize'] != Optimize.LEVEL_OFF
-
- def add_options(self, build, vars):
- vars.Add(
- 'optimize', 'Set to:\n' \
- ' portable: sse2 CPU (>= Pentium 4)\n' \
- ' fastbuild: portable, but without costly optimization steps\n' \
- ' native: optimized for the CPU of this system\n' \
- ' legacy: pure i386 code' \
- ' off: no optimization' \
- , Optimize.LEVEL_DEFAULT)
-
- def build_status(self, level, text=None):
- if text is None:
- return level
- return '%s: %s' % (level, text)
-
- def configure(self, build, conf):
- if not self.enabled(build):
- return
-
- optimize_level = build.flags['optimize']
-
- if optimize_level == Optimize.LEVEL_OFF:
- self.status = self.build_status(optimize_level, "no optimization")
- return
-
- if build.toolchain_is_msvs:
- fastbuild_enabled = optimize_level == Optimize.LEVEL_FASTBUILD
-
- # /GL : http://msdn.microsoft.com/en-us/library/0zza0de8.aspx
- # !!! /GL is incompatible with /ZI, which is set by mscvdebug
- build.env.Append(CCFLAGS='/GL-' if fastbuild_enabled else '/GL')
-
- # Use the fastest floating point math library
- # http://msdn.microsoft.com/en-us/library/e7s85ffb.aspx
- # http://msdn.microsoft.com/en-us/library/ms235601.aspx
- build.env.Append(CCFLAGS='/fp:fast')
-
- # Do link-time code generation (and don't show a progress indicator
- # -- this relies on ANSI control characters and tends to overwhelm
- # Jenkins logs) Should we turn on PGO ?
- # http://msdn.microsoft.com/en-us/library/xbf3tbeh.aspx
- build.env.Append(LINKFLAGS='/LTCG:OFF' if fastbuild_enabled else '/LTCG:NOSTATUS')
-
- # Suggested for unused code removal
- # http://msdn.microsoft.com/en-us/library/ms235601.aspx
- # http://msdn.microsoft.com/en-us/library/xsa71f43.aspx
- # http://msdn.microsoft.com/en-us/library/bxwfs976.aspx
- build.env.Append(CCFLAGS='/Gy')
- build.env.Append(LINKFLAGS='/OPT:REF')
- build.env.Append(LINKFLAGS='/OPT:ICF')
-
- # Don't worry about aligning code on 4KB boundaries
- # build.env.Append(LINKFLAGS = '/OPT:NOWIN98')
- # ALBERT: NOWIN98 is not supported in MSVC 2010.
-
- # http://msdn.microsoft.com/en-us/library/59a3b321.aspx
- # In general, you should pick /O2 over /Ox
- build.env.Append(CCFLAGS='/O2')
-
- if optimize_level == Optimize.LEVEL_PORTABLE or fastbuild_enabled:
- # fastbuild/portable-binary: sse2 CPU (>= Pentium 4)
- self.status = self.build_status(optimize_level,
- "sse2 CPU (>= Pentium 4)")
- # SSE and SSE2 are core instructions on x64
- # and consequently raise a warning message from compiler with this flag on x64.
- if not build.machine_is_64bit:
- build.env.Append(CCFLAGS='/arch:SSE2')
- build.env.Append(CPPDEFINES=['__SSE__', '__SSE2__'])
- elif optimize_level == Optimize.LEVEL_NATIVE:
- self.status = self.build_status(
- optimize_level, "tuned for this CPU (%s)" % build.machine)
- build.env.Append(CCFLAGS='/favor:' + build.machine)
- elif optimize_level == Optimize.LEVEL_LEGACY:
- self.status = self.build_status(optimize_level,
- "pure i386 code")
- else:
- # Not possible to reach this code if enabled is written
- # correctly.
- raise Exception("optimize={} is not supported. "
- "Use portable, native, legacy or off"
- .format(optimize_level))
-
- # SSE and SSE2 are core instructions on x64
- if build.machine_is_64bit:
- build.env.Append(CPPDEFINES=['__SSE__', '__SSE2__'])
-
- elif build.toolchain_is_gnu:
- # Portable is fast enough on GNU.
- if optimize_level == Optimize.LEVEL_FASTBUILD:
- optimize_level = Optimize.LEVEL_PORTABLE
-
- # Common flags to all optimizations.
- # -ffast-math will prevent a performance penalty by denormals
- # (floating point values almost Zero are treated as Zero)
- # unfortunately that work only on 64 bit CPUs or with sse2 enabled
-
- # the following optimisation flags makes the engine code ~3 times
- # faster, measured on a Atom CPU.
- build.env.Append(CCFLAGS='-O3')
- build.env.Append(CCFLAGS='-ffast-math')
- build.env.Append(CCFLAGS='-funroll-loops')
-
- # set -fomit-frame-pointer when we don't profile and are not using
- # Clang sanitizers.
- # Note: It is only included in -O on machines where it does not
- # interfere with debugging
- if not int(build.flags['profiling']) and not Sanitizers().enabled(build):
- build.env.Append(CCFLAGS='-fomit-frame-pointer')
-
- if optimize_level == Optimize.LEVEL_PORTABLE:
- # portable: sse2 CPU (>= Pentium 4)
- if build.architecture_is_x86:
- self.status = self.build_status(optimize_level,
- "sse2 CPU (>= Pentium 4)")
- build.env.Append(CCFLAGS='-mtune=generic')
- # -mtune=generic pick the most common, but compatible options.
- # on arm platforms equivalent to -march=arch
- if not build.machine_is_64bit:
- # the sse flags are not set by default on 32 bit builds
- # but are not supported on arm builds
- build.env.Append(CCFLAGS='-msse2')
- build.env.Append(CCFLAGS='-mfpmath=sse')
- # TODO(rryan): macOS can use SSE3, and possibly SSE 4.1 once
- # we require macOS 10.12.
- # https://stackoverflow.com/questions/45917280/mac-osx-minumum-support-sse-version
- elif build.architecture_is_arm:
- self.status = self.build_status(optimize_level)
- build.env.Append(CCFLAGS='-mfloat-abi=hard')
- build.env.Append(CCFLAGS='-mfpu=neon')
- else:
- self.status = self.build_status(optimize_level)
- # this sets macros __SSE2_MATH__ __SSE_MATH__ __SSE2__ __SSE__
- # This should be our default build for distribution
- # It's a little sketchy, but turning on SSE2 will gain
- # 100% performance in our filter code and allows us to
- # turns on denormal zeroing.
- # We don't really support CPU's earlier than Pentium 4,
- # which is the class of CPUs this decision affects.
- # The downside of this is that we aren't truly
- # i386 compatible, so builds that claim 'i386' will crash.
- # -- rryan 2/2011
- # Note: SSE2 is a core part of x64 CPUs
- elif optimize_level == Optimize.LEVEL_NATIVE:
- self.status = self.build_status(
- optimize_level, "tuned for this CPU (%s)" % build.machine)
- build.env.Append(CCFLAGS='-march=native')
- # Note: requires gcc >= 4.2.0
- # macros like __SSE2_MATH__ __SSE_MATH__ __SSE2__ __SSE__
- # are set automatically
- if build.architecture_is_arm:
- self.status = self.build_status(optimize_level)
- build.env.Append(CCFLAGS='-mfloat-abi=hard')
- build.env.Append(CCFLAGS='-mfpu=neon')
- elif optimize_level == Optimize.LEVEL_LEGACY:
- if build.architecture_is_x86:
- self.status = self.build_status(
- optimize_level, "pure i386 code")
- build.env.Append(CCFLAGS='-mtune=generic')
- # -mtune=generic pick the most common, but compatible options.
- # on arm platforms equivalent to -march=arch
- else:
- self.status = self.build_status(optimize_level)
- else:
- # Not possible to reach this code if enabled is written
- # correctly.
- raise Exception("optimize={} is not supported. "
- "Use portable, native, fastbuild, legacy or off"
- .format(optimize_level))
-
- # what others do:
- # soundtouch uses just -O3 and -msse in Ubuntu Trusty
- # rubberband uses just -O2 in Ubuntu Trusty
- # fftw3 (used by rubberband) in Ubuntu Trusty
- # -O3 -fomit-frame-pointer -mtune=native -malign-double
- # -fstrict-aliasing -fno-schedule-insns -ffast-math
-
-
-class MacAppStoreException(Feature):
- def description(self):
- return "Build for Mac App Store"
-
- def enabled(self, build):
- build.flags['macappstore'] = util.get_flags(build.env,
- 'macappstore', 0)
- if int(build.flags['macappstore']):
- # Existence of the macappstore option forces vinylcontrol off due to
- # licensing issues.
- build.flags['vinylcontrol'] = 0
- return True
- return False
-
- def add_options(self, build, vars):
- vars.Add('macappstore', 'Set to 1 to indicate the build is for the Mac App Store', 0)
-
- def configure(self, build, conf):
- if not self.enabled(build):
- return
- build.env.Append(CPPDEFINES='__MACAPPSTORE__')
-
-class LocaleCompare(Feature):
- def description(self):
- return "Locale Aware Compare for SQLite"
-
- def default(self, build):
- return 1 if build.platform_is_linux else 0
-
- def enabled(self, build):
- build.flags['localecompare'] = util.get_flags(build.env, 'localecompare',
- self.default(build))
- if int(build.flags['localecompare']):
- return True
- return False
-
- def add_options(self, build, vars):
- vars.Add('localecompare',
- 'Set to 1 to enable Locale Aware Compare support for SQLite.',
- self.default(build))
-
- def configure(self, build, conf):
- if not self.enabled(build):
- return
- if int(util.get_flags(build.env, 'qt_sqlite_plugin', 0)):
- raise Exception('WARNING: localecompare is not compatible with the Qt SQLite plugin')
- if not conf.CheckLib(['sqlite3']):
- raise Exception('Missing libsqlite3 -- exiting!')
- build.env.Append(CPPDEFINES='__SQLITE3__')
-
-class Lilv(Feature):
- def description(self):
- return "Lilv library for LV2 support"
-
- def enabled(self, build):
- build.flags['lilv'] = util.get_flags(build.env, 'lilv', 0)
- if int(build.flags['lilv']):
- return True
- return False
-
- def add_options(self, build, vars):
- default = 1
- # We do not have lilv set up in the Windows build server environment (yet)
- if build.platform_is_windows:
- default = 0
- vars.Add('lilv', 'Set to 1 to enable Lilv library for LV2 support', default)
-
- def configure(self, build, conf):
- if not self.enabled(build):
- return
-
- if build.platform_is_linux or build.platform_is_osx \
- or build.platform_is_bsd:
- # Check for liblilv-0
- if not conf.CheckLib('lilv-0'):
- raise Exception('Missing liblilv-0 (needs at least 0.5)')
-
- build.env.Append(CPPDEFINES='__LILV__')
-
- def sources(self, build):
- return ['src/effects/lv2/lv2backend.cpp',
- 'src/effects/lv2/lv2effectprocessor.cpp',
- 'src/effects/lv2/lv2manifest.cpp',
- 'src/preferences/dialog/dlgpreflv2.cpp']
-
-class Battery(Feature):
- def description(self):
- return "Battery meter support."
-
- def enabled(self, build):
- build.flags['battery'] = util.get_flags(build.env, 'battery', 1)
- if int(build.flags['battery']):
- return True
- return False
-
- def add_options(self, build, vars):
- vars.Add('battery',
- 'Set to 1 to enable battery meter support.')
-
- def configure(self, build, conf):
- if not self.enabled(build):
- return
-
- build.env.Append(CPPDEFINES='__BATTERY__')
-
- def sources(self, build):
- if build.platform_is_windows:
- return ["src/util/battery/batterywindows.cpp"]
- elif build.platform_is_osx:
- return ["src/util/battery/batterymac.cpp"]
- elif build.platform_is_linux or build.platform_is_bsd:
- return ["src/util/battery/batterylinux.cpp"]
- else:
- raise Exception('Battery support is not implemented for the target platform.')
-
- def depends(self, build):
- return [depends.IOKit, depends.UPower]
-
-class QtKeychain(Feature):
- def description(self):
- return "Secure credentials storage support for Live Broadcasting profiles"
-
- def enabled(self, build):
- build.flags['qtkeychain'] = util.get_flags(build.env, 'qtkeychain', 1)
- if int(build.flags['qtkeychain']):
- return True
- return False
-
- def add_options(self, build, vars):
- vars.Add('qtkeychain', 'Set to 1 to enable secure credentials storage support for Live Broadcasting profiles', 0)
-
- def configure(self, build, conf):
- if not self.enabled(build):
- return
- if not conf.CheckLib('qt5keychain'):
- raise Exception("Could not find qt5keychain.")
- build.env.Append(CPPDEFINES='__QTKEYCHAIN__')
diff --git a/build/mixxx.py b/build/mixxx.py
deleted file mode 100644
index 3208ea6315d..00000000000
--- a/build/mixxx.py
+++ /dev/null
@@ -1,706 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from __future__ import with_statement
-
-import logging
-import os
-import platform
-import re
-import shlex
-import shutil
-import subprocess
-import sys
-
-import SCons
-from SCons import Script
-
-from . import util
-
-
-class MixxxBuild(object):
-
- def __init__(self, target, machine, build, toolchain, available_features):
- self.available_features = available_features
- self.host_platform = self.detect_platform()
- self.host_machine = self.detect_machine()
- self.flags = {}
-
- if target is None:
- target = self.host_platform
-
- if machine is None:
- machine = self.host_machine
-
- if toolchain is None:
- if self.host_platform == 'windows':
- raise Exception(
- 'must specify toolchain on Windows (msvs or gnu)')
- else:
- toolchain = 'gnu'
-
- if build is None:
- build = 'debug'
-
- if not build in ['debug', 'release']:
- raise Exception("invalid build type")
-
- if target not in ['windows', 'osx', 'linux', 'bsd']:
- raise Exception("invalid target platform")
-
- if machine.lower() not in ['x86_64', 'x86', 'i686', 'i586',
- 'alpha', 'hppa', 's390',
- 'sparc', 'ia64', 'armel', 'armhf', 'hurd-i386',
- 'armv5tel', 'armv5tejl', 'armv6l', 'armv6hl',
- 'armv7l', 'armv7hl', 'armv7hnl',
- 'sh3', 'sh4',
- 'kfreebsd-amd64', 'kfreebsd-i386',
- 'i486', 'i386', 'ppc', 'ppc64', 'powerpc',
- 'powerpc64', 'powerpcspe', 's390x',
- 'amd64', 'em64t', 'intel64', 'arm64',
- 'ppc64el', 'ppc64le', 'm68k',
- 'mips', 'mipsel', 'mipsr6', 'mipsr6el',
- 'mips64', 'mips64r6', 'mips64el', 'mips64r6el',
- 'mipsn32', 'mipsn32el', 'mipsn32r6', 'mipsn32r6el',
- 'mipsisa32r6', 'mipsisa32r6el', 'mipsisa64r6', 'mipsisa64r6el',
- 'aarch64']:
- raise Exception("invalid machine type")
-
- if toolchain not in ['gnu', 'msvs']:
- raise Exception('invalid toolchain type')
-
- if toolchain == 'msvs' and self.host_platform != 'windows':
- raise Exception(
- 'cannot use msvs toolchain on non-windows platform')
-
- self.platform = target
- self.platform_is_posix = self.platform in ['linux', 'osx', 'bsd']
- self.platform_is_linux = self.platform == 'linux'
- self.platform_is_osx = self.platform == 'osx'
- self.platform_is_bsd = self.platform == 'bsd'
- self.platform_is_windows = self.platform == 'windows'
-
- self.machine = machine
- self.build = build
- self.build_is_debug = build == 'debug'
- self.build_is_release = build == 'release'
-
- self.toolchain = toolchain
- self.toolchain_is_gnu = self.toolchain == 'gnu'
- self.toolchain_is_msvs = self.toolchain == 'msvs'
-
- self.crosscompile = self.host_platform != self.platform
-
- flags_force32 = int(Script.ARGUMENTS.get('force32', 0))
- flags_force64 = int(Script.ARGUMENTS.get('force64', 0))
- if flags_force32 and flags_force64:
- logging.error('Both force32 and force64 cannot be enabled at once')
- Script.Exit(1)
-
- if flags_force32:
- if self.machine in ['powerpc', 'powerpc64', 'ppc', 'ppc64']:
- self.machine = 'powerpc'
- else:
- self.machine = 'x86'
- elif flags_force64:
- if self.machine in ['powerpc', 'powerpc64', 'ppc', 'ppc64']:
- self.machine = 'powerpc64'
- else:
- self.machine = 'x86_64'
- self.machine_is_64bit = self.machine.lower(
- ) in ['x86_64', 'powerpc64', 'ppc64', 'amd64', 'em64t', 'intel64']
- self.bitwidth = 64 if self.machine_is_64bit else 32
- self.architecture_is_x86 = self.machine.lower(
- ) in ['x86', 'x86_64', 'i386', 'i486', 'i586', 'i686', 'em64t',
- 'intel64', 'amd64']
- self.architecture_is_powerpc = self.machine.lower(
- ) in ['powerpc', 'powerpc64', 'ppc', 'ppc64']
- self.architecture_is_arm = self.machine.lower().startswith('arm')
-
- self.build_dir = util.get_build_dir(self.platform, self.bitwidth)
-
- # Currently this only works for Windows
- self.static_dependencies = int(Script.ARGUMENTS.get('staticlibs', 0))
- self.static_qt = int(Script.ARGUMENTS.get('staticqt', 0))
-
- self.bundle_pdbs = self.platform_is_windows and (
- self.build_is_debug or Script.ARGUMENTS.get('bundle_pdbs', '') in ('yes', 'y', '1'))
-
- self.scons_version = (
- 'unknown' if SCons.__version__.startswith('__VERSION')
- else '%s (%s, %s)' % (
- SCons.__version__,
- SCons.__build__,
- SCons.__date__,
- ))
- logging.info("SCons version: %s" % self.scons_version)
- logging.info("Python version: %s" % sys.version.replace('\n', ''))
- logging.info("Target Platform: %s" % self.platform)
- logging.info("Target Machine: %s" % self.machine)
- logging.info("Build: %s" % self.build)
- logging.info("Toolchain: %s" % self.toolchain)
- logging.info(
- "Crosscompile: %s" % ("YES" if self.crosscompile else "NO"))
- if self.platform_is_windows:
- self.winlib_path = Script.ARGUMENTS.get('winlib', '')
- logging.info("Winlib Path: %s" % self.winlib_path)
- logging.info("Static dependencies: %s" % (
- "YES" if self.static_dependencies else "NO"))
- logging.info("Static Qt: %s" % (
- "YES" if self.static_qt else "NO"))
-
- if self.crosscompile:
- logging.info("Host Platform: %s" % self.host_platform)
- logging.info("Host Machine: %s" % self.host_machine)
-
- if self.crosscompile and self.host_platform != 'linux':
- raise Exception(
- 'Cross-compiling on a non-Linux host not currently supported')
-
- tools = ['default', 'qt5', 'protoc']
- toolpath = ['#build/']
- extra_arguments = {}
- from . import depends
- if self.machine_is_64bit:
- default_qtdir = depends.Qt.DEFAULT_QT5DIRS64.get(self.platform, '')
- else:
- default_qtdir = depends.Qt.DEFAULT_QT5DIRS32.get(self.platform, '')
-
- # Try fallback to pkg-config on Linux
- if not os.path.isdir(default_qtdir) and self.platform == 'linux':
- pkg_config_cmd = ['pkg-config', '--variable=includedir', 'Qt5Core']
- try:
- output = subprocess.check_output(pkg_config_cmd)
- except OSError:
- # pkg-config is not installed
- pass
- except subprocess.CalledProcessError:
- # pkg-config failed to find Qt5Core
- pass
- else:
- default_qtdir = output.decode('utf-8').rstrip()
-
- # Ugly hack to check the qtdir argument
- qtdir = Script.ARGUMENTS.get(
- 'qtdir', os.environ.get('QTDIR', default_qtdir)).rstrip()
-
- # Validate the specified qtdir exists
- if not os.path.isdir(qtdir):
- logging.error("Qt path (%s) does not exist or Qt is not installed." % qtdir)
- logging.error(
- "Please specify your Qt path by running 'scons qtdir=[path]'")
- Script.Exit(1)
- # And that it doesn't contain qt3 or qt4
- elif 'qt3' in qtdir or 'qt/3' in qtdir or 'qt4' in qtdir:
- logging.error("Mixxx now requires Qt 5. Please set the qtdir build flag to the path to your Qt 5 installation.")
- Script.Exit(1)
- logging.info("Qt path: %s" % qtdir)
- extra_arguments['QTDIR'] = qtdir
-
- if self.platform_is_osx:
- tools.append('OSConsX')
- toolpath.append('#/build/osx/')
- if self.platform_is_windows and self.toolchain_is_msvs:
- # NOTE(rryan): Don't use the SCons mssdk tool since it does not
- # support x64.
- # In SConscript.env we use the MSVS tool to let you generate a
- # Visual Studio solution. Consider removing this.
- tools.extend(['msvs', 'signtool'])
- toolpath.append('#/build/windows/')
- # SCons's built-in Qt tool attempts to link 'qt' into your binary if
- # you don't do this.
- extra_arguments['QT_LIB'] = ''
- # Causes SCons to bypass MSVC environment detection altogether
- # and depend on environment variables.
- # TODO(rryan): Expose SCons MSVC auto-detection options.
- extra_arguments['MSVC_USE_SCRIPT'] = None
-
- # Setup the appropriate toolchains for cross-compiling
- if self.crosscompile:
- if self.platform_is_windows:
- tools.append('crossmingw')
- if self.platform_is_osx:
- tools.append('crossosx')
-
- self.env = Script.Environment(
- tools=tools, toolpath=toolpath, ENV=os.environ,
- **extra_arguments)
- self.read_environment_variables()
-
- # Now that environment variables have been read, we can detect the compiler.
- if self.toolchain_is_msvs:
- self.compiler_is_gcc = False
- self.compiler_is_clang = False
- else:
- cc_version_cmd = shlex.split(self.env['CC']) + ['--version']
- cc_version = subprocess.check_output(cc_version_cmd).decode('utf-8')
- self.compiler_is_gcc = 'gcc' in cc_version.lower()
- self.compiler_is_clang = 'clang' in cc_version.lower()
-
- # Determine the major compiler version (only GCC)
- if self.compiler_is_gcc:
- self.gcc_major_version = None
- gcc_version_cmd = shlex.split(self.env['CC']) + ['-dumpversion']
- gcc_version = subprocess.check_output(gcc_version_cmd).decode('utf-8')
- # If match is None we don't know the version.
- if not gcc_version is None:
- version_split = gcc_version.split('.')
- if version_split:
- self.gcc_major_version = int(version_split[0])
-
- self.virtualize_build_dir()
-
- if self.toolchain_is_gnu:
- if flags_force32:
- self.env.Append(CCFLAGS='-m32')
- elif flags_force64:
- self.env.Append(CCFLAGS='-m64')
-
- self.setup_platform_sdk()
-
- if self.platform_is_osx:
- if self.architecture_is_powerpc:
- self.env.Append(CCFLAGS='-arch ppc')
- self.env.Append(LINKFLAGS='-arch ppc')
- else:
- if self.bitwidth == 32:
- self.env.Append(CCFLAGS='-arch i386')
- self.env.Append(LINKFLAGS='-arch i386')
- elif self.bitwidth == 64:
- self.env.Append(CCFLAGS='-arch x86_64')
- self.env.Append(LINKFLAGS='-arch x86_64')
-
- if self.crosscompile:
- crosscompile_root = Script.ARGUMENTS.get('crosscompile_root', '')
-
- if crosscompile_root == '':
- print("Your build setup indicates this is a cross-compile, but you did not specify 'crosscompile_root', which is required.")
- Script.Exit(1)
-
- crosscompile_root = os.path.abspath(crosscompile_root)
- self.env.Append(CPPPATH=os.path.join(crosscompile_root, 'include'))
- self.env.Append(LIBPATH=os.path.join(crosscompile_root, 'lib'))
- self.env.Append(LIBPATH=os.path.join(crosscompile_root, 'bin'))
-
- self.install_options()
-
- def detect_platform(self):
- if os.name == 'nt' or sys.platform == 'win32':
- return 'windows'
- # Should cover {Net,Open,Free,DragonFly}BSD, but only tested on OpenBSD
- if 'bsd' in sys.platform:
- return 'bsd'
- if sys.platform.startswith('linux'):
- return 'linux'
- if sys.platform.startswith('darwin'):
- return 'osx'
- logging.error("Couldn't determine platform. os.name: %s sys.platform: %s"
- % (os.name, sys.platform))
- return 'invalid'
-
- def detect_machine(self):
- return platform.machine()
-
- def setup_platform_sdk(self):
- if self.platform_is_windows:
- self.setup_windows_platform_sdk()
- elif self.platform_is_osx:
- self.setup_osx_platform_sdk()
-
- def setup_windows_platform_sdk(self):
- mssdk_dir = Script.ARGUMENTS.get('mssdk_dir', None)
- if mssdk_dir is None:
- print("Skipping Windows SDK setup because no SDK path was specified.")
- print("Specify the path to your platform SDK with mssdk_dir.")
- return
- env_update_tuples = []
- include_path = os.path.join(mssdk_dir, 'Include')
-
- if not os.path.exists(include_path):
- raise Exception('No "Include" subfolder exists in the specified mssdk_dir.')
- env_update_tuples.append(('INCLUDE', include_path))
- mfc_path = os.path.join(include_path, 'mfc')
- if os.path.exists(mfc_path):
- env_update_tuples.append(('INCLUDE', mfc_path))
- atl_path = os.path.join(include_path, 'atl')
- if os.path.exists(atl_path):
- env_update_tuples.append(('INCLUDE', atl_path))
-
- bin_path = os.path.join(mssdk_dir, 'Bin')
- if self.machine_is_64bit:
- bin_path = os.path.join(bin_path, 'x64')
- if not os.path.exists(bin_path):
- raise Exception('No "Bin" subfolder exists in the specified mssdk_dir.')
- env_update_tuples.append(('PATH', bin_path))
-
- lib_path = os.path.join(mssdk_dir, 'Lib')
- if self.machine_is_64bit:
- lib_path = os.path.join(lib_path, 'x64')
- if not os.path.exists(lib_path):
- raise Exception('No "Lib" subfolder exists in the specified mssdk_dir.')
- env_update_tuples.append(('LIB', lib_path))
- env_update_tuples.append(('LIBPATH', lib_path))
-
- for variable, directory in env_update_tuples:
- self.env.PrependENVPath(variable, directory)
-
-
- def setup_osx_platform_sdk(self):
- sysroot = Script.ARGUMENTS.get('sysroot', '')
- if sysroot:
- self.env.Append(CCFLAGS=['-isysroot', sysroot])
-
- # If no sysroot was specified, pick one automatically. The only platform
- # we pick one automatically on is OS X.
- if self.platform_is_osx:
- if '-isysroot' in self.env['CXXFLAGS'] or '-isysroot' in self.env['CFLAGS']:
- print("Skipping OS X automatic sysroot selection because -isysroot is in your CCFLAGS.")
- return
-
- print("Automatically detecting Mac OS X SDK.")
-
-
- # Returns a version like "10.8.0". We strip off the last ".0".
- osx_min_version = util.get_osx_min_version()
- assert osx_min_version.endswith('.0')
- osx_min_version = osx_min_version[:len(osx_min_version) - 2]
- osx_stdlib = 'libc++'
-
- print("XCode developer directory:" + os.popen('xcode-select -p').readline().strip())
-
- available_sdks = []
- macosx_matcher = re.compile(r'^MacOSX\d+\.\d+\.sdk.*\((.*)\)$')
- for line in os.popen('xcodebuild -version -sdk'):
- match = macosx_matcher.match(line)
- if not match:
- continue
- version = match.group(1)
- print("Found OS X SDK:"+ version)
- available_sdks.append(version)
-
- def version_sorter(version):
- assert version.startswith('macosx')
- major_version, minor_version = version.replace('macosx', '').split('.')
- return int(major_version), int(minor_version)
-
- # Use the latest SDK.
- for sdk in sorted(available_sdks, reverse=True, key=version_sorter):
- sdk_path = os.popen(
- 'xcodebuild -version -sdk %s Path' % sdk).readline().strip()
- if sdk_path:
- print("Automatically selected OS X SDK:" + sdk_path)
-
- common_flags = ['-isysroot', sdk_path,
- '-mmacosx-version-min=%s' % osx_min_version,
- '-stdlib=%s' % osx_stdlib]
- link_flags = [
- '-Wl,-syslibroot,' + sdk_path,
- ]
- self.env.Append(CCFLAGS=common_flags)
- self.env.Append(LINKFLAGS=common_flags + link_flags)
- return
-
- print("Could not find a supported Mac OS X SDK.")
- print("Make sure that XCode is installed, you have installed "
- "the command line tools, and have selected an SDK path with "
- "xcode-select.")
-
- def read_environment_variables(self):
- # Import environment variables from the terminal. Note that some
- # variables correspond to variables inside the SCons env with different
- # names, eg. the shell's "CFLAGS" ---> SCons' "CCFLAGS".
- if 'CC' in os.environ:
- self.env['CC'] = os.environ['CC']
- if 'CFLAGS' in os.environ:
- self.env['CCFLAGS'] += SCons.Util.CLVar(os.environ['CFLAGS'])
- if 'CXX' in os.environ:
- self.env['CXX'] = os.environ['CXX']
- if 'CXXFLAGS' in os.environ:
- self.env['CXXFLAGS'] += SCons.Util.CLVar(os.environ['CXXFLAGS'])
- if 'LDFLAGS' in os.environ:
- self.env['LINKFLAGS'] += SCons.Util.CLVar(os.environ['LDFLAGS'])
-
- # Allow installation directories to be specified.
- prefix = Script.ARGUMENTS.get('prefix', '/usr/local')
- if 'LIBDIR' in os.environ:
- self.env['LIBDIR'] = os.path.relpath(os.environ['LIBDIR'], prefix)
- if 'BINDIR' in os.environ:
- self.env['BINDIR'] = os.path.relpath(os.environ['BINDIR'], prefix)
- if 'SHAREDIR' in os.environ:
- self.env['SHAREDIR'] = \
- os.path.relpath(os.environ['SHAREDIR'], prefix)
-
- # Initialize this as a list, fixes a bug where first CPPDEFINE would get
- # mangled
- self.env['CPPDEFINES'] = []
- self.env['LIBS'] = []
- self.env['LIBPATH'] = []
-
- def get_cache_dir(self):
- # Global cache directory Put all project files in it so a rm -rf cache
- # will clean up the config
- if 'CACHEDIR' not in self.env:
- self.env['CACHEDIR'] = str(Script.Dir('#cache/'))
- if not os.path.isdir(self.env['CACHEDIR']):
- os.mkdir(self.env['CACHEDIR'])
-
- ## Avoid spreading .sconsign files everywhere
- # env.SConsignFile(env['CACHEDIR']+'/scons_signatures')
- ## WARNING - We found that the above line causes SCons to randomly not find
- ## dependencies for some reason. It might not happen right away, but
- # a good number of users found that it caused weird problems - Albert
- # (May 15/08)
-
- return str(self.env['CACHEDIR'])
-
- def install_options(self):
- cachefile = os.path.join(self.get_cache_dir(), 'custom.py')
- vars = Script.Variables(cachefile)
- vars.Add('prefix', 'Set to your install prefix', '/usr/local')
- vars.Add('virtualize',
- 'Dynamically swap out the build directory when switching Git branches.', 1)
- vars.Add('qtdir', 'Set to your Qt 5 directory', '/usr/share/qt5')
- vars.Add('qt_sqlite_plugin', 'Set to 1 to package the Qt SQLite plugin.'
- '\n Set to 0 if SQLite support is compiled into QtSQL.', 0)
- vars.Add('target',
- 'Set the build target for cross-compiling (windows, osx, linux, bsd).', '')
- vars.Add(
- 'machine', 'Set the machine type for cross-compiling (x86_64, x86, powerpc, powerpc64).', '')
- vars.Add('toolchain',
- 'Specify the toolchain to use for building (gnu, msvs). Default is gnu.', 'gnu')
- vars.Add('crosscompile_root',
- 'Set the path to the root of a cross-compile sandbox.', '')
- vars.Add('force32', 'Force a 32-bit compile', 0)
- vars.Add('force64', 'Force a 64-bit compile', 0)
- vars.Add('sysroot', 'Specify a custom sysroot', '')
- vars.Add('debug_assertions_fatal',
- 'Whether debug assertions are fatal.', False)
-
- for feature_class in self.available_features:
- # Instantiate the feature
- feature = feature_class()
-
- # Add the feature to the feature list
- feature.add_options(self, vars)
-
- vars.Update(self.env)
- Script.Help(vars.GenerateHelpText(self.env))
-
- # Save the options to cache
- vars.Save(cachefile, self.env)
-
- def virtualize_build_dir(self):
- # WARNING: Do not use SCons self.env.SConsignFile to change the location
- # of .sconsign.dblite or turn build_dir into a symlink. It will mostly
- # seem to work fine but eventually cause strange build issues (not
- # re-building a necessary object file, etc.) and cause instability.
- # See also: asantoni's warning in get_cache_dir. rryan 6/2013
- should_virtualize = int(Script.ARGUMENTS.get('virtualize', 1))
- if not should_virtualize:
- return
-
- branch_name = util.get_branch_name()
- if not branch_name:
- # happens in case of tarball builds, detached HEADs have
- # branch_name = '(no branch)'
- return
-
- # TODO(rryan) what other branch name characters aren't allowed in
- # filenames?
- branch_name = re.sub('[/<>|"]', '_', branch_name).lower()
-
- cache_dir = self.get_cache_dir()
- branch_build_dir = os.path.join(cache_dir, branch_name)
- virtual_build_dir = os.path.join(branch_build_dir, self.build_dir)
- virtual_sconsign_file = os.path.join(
- branch_build_dir, 'sconsign.dblite')
- virtual_sconf_temp_dir = os.path.join(
- branch_build_dir, 'sconf_temp')
- virtual_custom_file = os.path.join(branch_build_dir, 'custom.py')
- old_branch_build_dir = ''
- old_virtual_build_dir = ''
- old_virtual_sconsign_file = ''
- old_virtual_sconf_temp_dir = ''
- old_virtual_custom_file = ''
-
- # Clean up symlinks from our original method of virtualizing.
- if os.path.islink(self.build_dir):
- print("os.unlink " + self.build_dir)
- os.unlink(self.build_dir)
-
- sconsign_file = '.sconsign.dblite'
- sconsign_branch_file = '.sconsign.branch' # contains the branch name of last build
- sconf_temp_dir = '.sconf_temp' # contains the configure test files
- custom_file = 'cache/custom.py' # contains custom build flags
- sconsign_branch = ''
- is_branch_different = True
- if os.path.isfile(sconsign_branch_file):
- with open(sconsign_branch_file, 'r') as f:
- sconsign_branch = f.readline()
- sconsign_branch = sconsign_branch.strip()
-
- # Check if there was a checkout of a different branch since the last
- # build.
- is_branch_different = sconsign_branch != branch_name
- if not is_branch_different:
- # nothing to do
- return
-
- print("branch has changed %s -> %s" % (sconsign_branch, branch_name))
-
- if sconsign_branch:
- old_branch_build_dir = os.path.join(cache_dir, sconsign_branch)
- old_virtual_build_dir = os.path.join(
- old_branch_build_dir, self.build_dir)
- old_virtual_sconsign_file = os.path.join(
- old_branch_build_dir, 'sconsign.dblite')
- old_virtual_sconf_temp_dir = os.path.join(
- old_branch_build_dir, 'sconf_temp')
- old_virtual_custom_file = os.path.join(
- old_branch_build_dir, 'custom.py')
- if os.path.isdir(self.build_dir):
- if os.path.isdir(old_virtual_build_dir):
- raise Exception("%s already exists. "
- "build virtualization cannot continue. Please "
- "move or delete it." % old_virtual_build_dir)
- print("shutil.move %s -> %s" % (self.build_dir, old_virtual_build_dir))
- # move build dir from last build to cache, named with the old
- # branch name
- shutil.move(self.build_dir, old_virtual_build_dir)
-
- if os.path.isfile(sconsign_file):
- print("shutil.move %s -> %s" % (sconsign_file, old_virtual_sconsign_file))
- # move sconsdign.dblite as well
- shutil.move(sconsign_file, old_virtual_sconsign_file)
-
- if os.path.isdir(sconf_temp_dir):
- print("shutil.move %s -> %s" % (sconf_temp_dir, old_virtual_sconf_temp_dir))
- # move sconf_temp dir as well
- shutil.move(sconf_temp_dir, old_virtual_sconf_temp_dir)
-
- if os.path.isfile(custom_file):
- print("shutil.move %s -> %s" % (custom_file, old_virtual_custom_file))
- # and move custom.py
- shutil.move(custom_file, old_virtual_custom_file)
-
- # all files are saved now so remove .sconsign.branch file
- # to avoid a new copy after an exception below
- os.remove(sconsign_branch_file)
-
- # Now there should be no folder self.build_dir, .sconsign.dblite, or
- # .sconf_temp directory.
- if os.path.isdir(branch_build_dir):
- if os.path.isdir(virtual_build_dir):
- # found a build_dir in cache from a previous build
- if os.path.isdir(self.build_dir):
- raise Exception('%s exists without a .sconsign.branch file so '
- 'build virtualization cannot continue. Please '
- 'move or delete it.' % self.build_dir)
- print("shutil.move %s -> %s" % (virtual_build_dir, self.build_dir))
- shutil.move(virtual_build_dir, self.build_dir)
- if os.path.isfile(virtual_sconsign_file):
- if os.path.isfile(sconsign_file):
- raise Exception('%s exists without a .sconsign.branch file so '
- 'build virtualization cannot continue. Please '
- 'move or delete it.' % sconsign_file)
- print("shutil.move %s -> %s" % (virtual_sconsign_file, sconsign_file))
- shutil.move(virtual_sconsign_file, sconsign_file)
- if os.path.isdir(virtual_sconf_temp_dir):
- if os.path.isdir(sconf_temp_dir):
- raise Exception('%s exists without a .sconsign.branch file so '
- 'build virtualization cannot continue. Please '
- 'move or delete it.' % sconf_temp_dir)
- print("shutil.move %s -> %s" % (virtual_sconf_temp_dir, sconf_temp_dir))
- shutil.move(virtual_sconf_temp_dir, sconf_temp_dir)
- if os.path.isfile(virtual_custom_file):
- if os.path.isfile(custom_file):
- raise Exception('%s exists without a .sconsign.branch file so '
- 'build virtualization cannot continue. Please '
- 'move or delete it.' % custom_file)
- print("shutil.move %s -> %s" % (virtual_custom_file, custom_file))
- shutil.move(virtual_custom_file, custom_file)
- else:
- # no cached build dir found, assume this is a branch from the old branch
- # if not, no problem because scons will rebuild all changed files in any case
- # copy the old_virtual_dir back
- if sconsign_branch:
- if os.path.isdir(old_virtual_build_dir):
- if os.path.isdir(self.build_dir):
- raise Exception('%s exists without a .sconsign.branch file so '
- 'build virtualization cannot continue. Please '
- 'move or delete it.' % self.build_dir)
- print("shutil.copytree %s -> %s" % (old_virtual_build_dir, self.build_dir))
- shutil.copytree(old_virtual_build_dir, self.build_dir)
- if os.path.isfile(old_virtual_sconsign_file):
- if os.path.isfile(sconsign_file):
- raise Exception('%s exists without a .sconsign.branch file so '
- 'build virtualization cannot continue. Please '
- 'move or delete it.' % sconsign_file)
- print("shutil.copy %s -> %s" % (old_virtual_sconsign_file, sconsign_file))
- shutil.copy(old_virtual_sconsign_file, sconsign_file)
- if os.path.isdir(old_virtual_sconf_temp_dir):
- if os.path.isdir(sconf_temp_dir):
- raise Exception('%s exists without a .sconsign.branch file so '
- 'build virtualization cannot continue. Please '
- 'move or delete it.' % sconf_temp_dir)
- print("shutil.copytree %s -> %s" % (old_virtual_sconf_temp_dir, sconf_temp_dir))
- shutil.copytree(old_virtual_sconf_temp_dir, sconf_temp_dir)
- if os.path.isfile(old_virtual_custom_file):
- if os.path.isfile(custom_file):
- raise Exception('%s exists without a .sconsign.branch file so '
- 'build virtualization cannot continue. Please '
- 'move or delete it.' % custom_file)
- print("shutil.copy %s -> %s" % (old_virtual_custom_file, custom_file))
- shutil.copy(old_virtual_custom_file, custom_file)
-
- # create build dir in cache folder for later move
- print("os.makedirs" + branch_build_dir)
- os.makedirs(branch_build_dir)
-
- with open(sconsign_branch_file, 'w+') as f:
- print("touch" + sconsign_branch_file)
- f.write(branch_name)
-
- def get_features(self):
- return self.available_features
-
-
-class Dependence(object):
-
- def _get_name(self):
- return self.__class__.__name__
- name = property(_get_name)
-
- def sources(self, build):
- return []
-
- def satisfy(self):
- pass
-
- def depends(self, build):
- return []
-
- def configure(self, build, conf):
- pass
-
- def post_dependency_check_configure(self, build, conf):
- pass
-
-
-class Feature(Dependence):
-
- def _get_name(self):
- return self.__class__.__name__
- name = property(_get_name)
- status = ""
-
- def satisfy(self, build):
- raise NotImplementedError()
-
- def description(self):
- raise NotImplementedError()
-
- def enabled(self, build):
- return False
-
- def add_options(self, build, vars):
- pass
diff --git a/build/osx/OSConsX.py b/build/osx/OSConsX.py
deleted file mode 100644
index 1aa7da5f72c..00000000000
--- a/build/osx/OSConsX.py
+++ /dev/null
@@ -1,720 +0,0 @@
-"""
-OSConsX.py - scons support for building applications on OS X using SCons.
-
-Functions to build .app bundles and .dmg images, and to use otool(1) to trace
-out the needed libraries.
-
-usage:
-
-env = Environment(tools = ['OSConsX', toolpath=['path/to/osconsx'])
-env.App('
-
-By January 16th 2009
-License: 2-clause BSD (XXX put a proper notice here)
-
-
-Please email me with questions/comments/patches!
-
-TODO:
-- add a CheckFramework() call that looks for a framework (and maybe adds to
- CXXFLAGS||CPPATH||LINKFLAGS if found)
- """
-
-import sys
-import os
-import shutil
-import stat
-import SCons
-from SCons.Builder import Builder
-from SCons.Script import Copy, Dir, Execute, File, Glob, Mkdir
-import otool
-
-# Dev info:
-# http://doc.trolltech.com/qq/qq09-mac-deployment.html
-# http://www.scons.org/wiki/MacOSX
-# (not very featureful, but the tip about resource forks might be important
-# (wait did I say important? I meant out of date. see CpMac(1))
-
-# oooh, you can use warnings! just call "warn()"
-
-
-def system(s):
- """
- Wrap system() to give us feedback on what it's doing.
-
- Anything using this call should be fixed to use SCons's declarative style
- (once you figure that out, right nick?)
- """
- print(s),
- sys.stdout.flush() # ignore line buffering..
- result = os.system(s)
- print()
- return result
-
-
-def no_sources(target, source, env):
- """
- An emitter that forces null sources.
-
- So that we don't need to have the user explicitly say there are no
- dependencies (SCons assumes that if you are building 'X.out' then you need
- 'X.in')
- """
- return target, []
-
-
-def InstallDir(target, source, env): # XXX this belongs not in this module
- """
- Copies the given source dir inside of the given target dir.
- """
- # XXX could be rewritten better with schemey-recursion as "if source is
- # File: env.Install(), elif source is Dir, scan the dir and recurse"
- # SCons doesn't really like using directories as targets. Like, at all.
- # Mkdir(os.path.join(str(target), str(source)))
- # translate install(a/, b/) to install(a/b/, [files in b])
- contents = Glob(
- os.path.join(str(source), "*")
- ) # XXX there's probably a cleaner way that SCons has to do this
- # print("contents:", contents)
- files = filter(lambda f: isinstance(f, SCons.Node.FS.File), contents)
- folders = filter(lambda f: isinstance(f, SCons.Node.FS.Dir), contents)
- # print(map(str, folders))
- name = os.path.basename(str(source))
-
- # install the files local to this
- nodes = env.Install(Dir(os.path.join(str(target), name)), files)
-
- # now recursively install the subfolders
- for f in folders:
- nodes += InstallDir(Dir(os.path.join(str(target), name)), f, env)
- return nodes
-
-
-# okay, this works. It could be done better (make better use of SCons's
-# declarativity, look at http://frungy.org/~tpot/weblog/2008/05/02#scons-rpm2
-# for ideas) Specifically, this does file copying by itself, instead of telling
-# SCons about it.
-# On the other hand, the files it is copying are not really part of the build
-# process, they are tmp files, so maybe it works....
-# BUG: scons doesn't track that it's built the .dmg. It decides it needs to
-# build it every time "because it doesn't exist".
-def build_dmg(target, source, env):
- """
- Builds a *.dmg file.
-
- Takes the given source files, makes a temporary directory, copies them all
- there, and then packages that directory into a .dmg.
- """
- # TODO: make emit_dmg emit that we are making the Dmg that we are making
-
- # since we are building into a single .dmg, coerce target to point at the
- # actual name
- assert len(target) == 1
- target = target[0]
-
- # I'm going to let us overwrite the .dmg for now - Albert
- # huhh? why do I have to say +.dmg here? I thought scons was supposed to
- # handle that
- # if os.path.exists(str(target)+".dmg"):
- # raise Exception(".dmg target already exists.")
-
- # if 'DMG_DIR' in env: .... etc fill me in please
- dmg = (
- os.tmpnam() + "-" + env["VOLNAME"].strip() + "-dmg"
- ) # create a directory to build the .dmg root from
-
- # is os.system the best thing for this? Can't we declare that these files
- # need to be moved somehow? aah there must be a more SCons-ey (i.e.
- # declarative) way to do all this; the trouble with doing
- os.mkdir(dmg)
- for f in source:
- print("Copying", f)
- a, b = str(f), os.path.join(dmg, os.path.basename(str(f.path)))
- if isinstance(f, SCons.Node.FS.Dir):
- # XXX there's a lot of cases that could throw this off,
- # particularly if you try to pass in subdirs
- copier = shutil.copytree
- elif isinstance(f, SCons.Node.FS.File):
- copier = shutil.copy
- else:
- raise Exception(
- "%s is neither Dir nor File node? Bailing out." % f
- )
-
- try:
- copier(a, b)
- except Exception as e:
- print("ERRRR", e)
- raise Exception("Error copying %s: " % (a,), e)
-
- # Symlink Applications to /Applications
- os.system("ln -s /Applications %s" % os.path.join(dmg, "Applications"))
-
- if env["ICON"]:
- env["ICON"] = File(str(env["ICON"]))
- # make sure the given file is an icon; scons does this wrapping for us
- # on sources and targets but not on environment vars (obviously, that
- # would be stupid).
- # XXX this doesn't seem to work, at least not on MacOS 10.5
- # the MacFUSE people have solved it, though, see "._" in
- # http://www.google.com/codesearch/p?hl=en#OXKFx3-7cSY/tags/macfuse-1.0.0/filesystems-objc/FUSEObjC/FUSEFileSystem.m&q=volumeicon
- # appearently it requires making a special volume header file named
- # "._$VOLNAME" with a binary blob in it But also the Qt4 dmg has a
- # working icon, and it has no ._$VOLNAME file
-
- # XXX bug: will crash if not given an icon file
- shutil.copy(str(env["ICON"]), os.path.join(dmg, ".VolumeIcon.icns"))
- # is there an sconsey way to declare this? Would be nice so that it
- # could write what
- system('SetFile -a C "%s"' % dmg)
-
- # TODO(rryan): hdiutil has a bug where if srcfolder is greater than 100M it
- # fails to create a DMG with error -5341. The actual size of the resulting
- # DMG is not affected by the -size parameter -- I think it's just the size
- # of the "partition" in the DMG. Hard-coding 150M is a band-aid to get the
- # build working again while we figure out the right solution.
- if system(
- "hdiutil create -size 150M -srcfolder %s -format UDBZ -ov "
- "-volname %s %s" % (dmg, env["VOLNAME"], target)
- ):
- raise Exception("hdiutil create failed")
-
- shutil.rmtree(dmg)
-
-
-Dmg = Builder(action=build_dmg, suffix=".dmg")
-
-
-class Bundle(SCons.Node.Node):
- """
- Bundle Node.
-
- Until SCons gets its shit together and is able to handle having directories
- as targets, we use this
- """
-
- def __init__(self, path):
- path = str(path) # decast the object from being a File or a Dir
- self.path = path
- SCons.Node.Node.__init__(self)
- self.clear()
- assert self.path == path, "Node constructor overwrote .path :("
-
- def __str__(self):
- return self.path
-
- def __repr__(self):
- return 'Bundle("%s")' % self.path
-
-
-def write_file(target, source, env):
- data = env["DATA"]
- for t in target:
- f = open(str(t), "wb")
- f.write(data)
- f.close()
-
-
-# should be in a different module, really
-Writer = Builder(action=write_file, emitter=no_sources)
-
-
-def build_app(target, source, env):
- """
- Build App.
-
- PLUGINS - a list of plugins to install; as a feature/hack/bug (inspired by
- Qt, but probably needed by other libs) you can pass a tuple where the first
- is the file/node and the second is the folder under PlugIns/ that you want
- it installed to
- """
- # TODO: make it strip(1) the installed binary (saves about 1Mb)
-
- # EEEP: this code is pretty flakey because I can't figure out how to force;
- # have asked the scons list about it
-
- # This doesn't handle Frameworks correctly, only .dylibs
- # useful to know:
- # http://developer.apple.com/documentation/MacOSX/Conceptual/BPFrameworks/
- # Concepts/FrameworkAnatomy.html#//apple_ref/doc/uid/20002253
- # ^ so you do have to copy in and _entire_ framework to be sure...
- # but for some frameworks it's okay to pretend they are regular
-
- bundle = target[0]
- binary = source[0]
-
- # this is copied from emit_app, which is unfortunate
- contents = Dir(os.path.join(str(bundle), "Contents"))
- MacOS = Dir(os.path.join(str(contents), "MacOS/"))
- frameworks = Dir(
- os.path.join(str(contents), "Frameworks")
- ) # we put both frameworks and standard unix sharedlibs in here
- plugins = Dir(os.path.join(str(contents), "PlugIns"))
-
- # installed_bin = source[-1] #env['APP_INSTALLED_BIN']
- installed_bin = os.path.join(str(MacOS), os.path.basename(str(binary)))
-
- strip = bool(env.get("STRIP", False))
-
- otool_local_paths = env.get("OTOOL_LOCAL_PATHS", [])
- otool_system_paths = env.get("OTOOL_SYSTEM_PATHS", [])
-
- # TODO: expose the ability to override the list of System dirs
- # ugh, I really don't like this... I wish I could package it up nicer. I
- # could use a Builder but then I would have to pass in to the builder
- # installed_bin which seems backwards since
-
- # could we use patch_lib on the initial binary itself????
-
- def embed_lib(abs):
- """
- Get the path to embed library abs in the bundle.
- """
- name = os.path.basename(abs)
- return os.path.join(str(frameworks), name)
-
- def relative(emb):
- """
- Compute the path of the given embedded binary relative to the binary.
-
- (i.e. @executable_path/../+...)
- """
- # assume that we start in X.app/Contents/, since we know necessarily
- # that @executable_path/../ gives us that so then we only need
- base = os.path.abspath(str(installed_bin))
- emb = os.path.abspath(emb) # XXX is abspath really necessary?
- # the path from Contents/ down to the file. Since we are taking away
- # the length of the common prefix we are left with only what is unique
- # to the embedded library's path
- down = emb[len(os.path.commonprefix([base, emb])) :]
- return os.path.join("@executable_path/../", down)
-
- # todo: precache all this shit, in case we have to change the install names
- # of a lot of libraries
-
- def automagic_references(embedded): # XXX bad name
- "modify a binary file to patch up all it's references"
-
- for ref in otool.dependencies(embedded):
- if ref in locals:
- embd = locals[ref][
- 1
- ] # the path that this reference is getting embedded at
- otool.change_ref(str(embedded), ref, relative(embd))
-
- def patch_lib(embedded):
- otool.change_id(
- embedded, relative(embedded)
- ) # change the name the library knows itself as
- automagic_references(embedded)
- if strip:
- # XXX stripping seems to only work on libs compiled a certain way,
- # todo: try out ALL the options, see if can adapt it to work on
- # every sort of lib
- system("strip -S '%s' 2>/dev/null" % embedded)
- # (the stripping fails with ""symbols referenced by relocation
- # entries that can't be stripped"" for some obscure Apple-only
- # reason sometimes, related to their hacks to gcc---it depends on
- # how the file was compiled; since we don't /really/ care about
- # this we just let it silently fail)
-
- # Workarounds for a bug/feature in SCons such that it doesn't necessarily
- # run the source builders before the target builders (wtf scons??)
- Execute(Mkdir(contents))
- Execute(Mkdir(MacOS))
- Execute(Mkdir(frameworks))
- Execute(Mkdir(plugins))
-
- # XXX locals should be keyed by absolute path to the lib, not by reference;
- # that way it's easy to tell when a lib referenced in two different ways is
- # actually the same XXX rename locals => embeds
- # precache the list of names of libs we are using so we can figure out if a
- # lib is local or not (and therefore a ref to it needs to be updated)
-
- # XXX it seems kind of wrong to only look at the basename (even if, by the
- # nature of libraries, that must be enough) but there is no easy way to
- # compute the abspath
-
- locals = {}
- # [ref] => (absolute_path, embedded_path) (ref is the original reference
- # from looking at otool -L; we use this to decide if two libs are the same)
-
- # XXX it would be handy if embed_dependencies returned the otool list for
- # each ref it reads..
- binary_rpaths = otool.rpaths(str(binary))
- otool_local_paths = binary_rpaths + otool_local_paths
- for ref, path in otool.embed_dependencies(
- str(binary), LOCAL=otool_local_paths, SYSTEM=otool_system_paths
- ):
- locals[ref] = (path, embed_lib(path))
-
- # XXX bad name #list of tuples (source, embed) of plugins to stick under
- # the plugins/ dir
- plugins_l = []
- for p in env["PLUGINS"]: # build any necessary dirs for plugins (siiiigh)
- embedded_p = os.path.join(str(plugins), os.path.basename(str(p)))
- plugins_l.append((str(p), embedded_p))
-
- for subdir, p in env["QT_HACK"]:
- Execute(Mkdir(os.path.join(str(plugins), subdir)))
- embedded_p = os.path.join(
- str(plugins), subdir, os.path.basename(str(p))
- )
- plugins_l.append((p, embedded_p))
-
- print("Scanning plugins for new dependencies:")
- for p, ep in plugins_l:
- print("Scanning plugin", p)
- for ref, path in otool.embed_dependencies(
- p, LOCAL=otool_local_paths, SYSTEM=otool_system_paths
- ):
- if ref not in locals:
- locals[ref] = path, embed_lib(path)
- else:
- assert path == locals[ref][0], "Path '%s' is not '%s'" % (
- path,
- locals[ref][0],
- )
-
- # we really should have a libref-to-abspath function somewhere... right now
- # it's inline in embed_dependencies() better yet, make a Frameworks type
- # that you say Framework("QtCore") and then can use that as a dependency
- print("Installing main binary:")
- Execute(Copy(installed_bin, binary))
- # e.g. this SHOULD be an env.Install() call, but if scons decides to run
- # build_app before that env.Install then build_app fails and brings the
- # rest of the build with it, of course
- for ref in otool.dependencies(str(installed_bin)):
- if ref in locals:
- embedded = locals[ref][1]
- otool.change_ref(
- str(installed_bin), ref, relative(embedded)
- ) # change the reference to the library in the program binary
- if strip:
- system("strip '%s'" % installed_bin)
-
- print("Installing embedded libs:")
- for ref, (abs, embedded) in locals.items():
- real_abs = os.path.realpath(abs)
- print("installing", real_abs, "to", embedded)
- # NOTE(rryan): abs can be a symlink. we want to copy the binary it is
- # pointing to. os.path.realpath does this for us.
- Execute(Copy(embedded, real_abs))
- if not os.access(embedded, os.W_OK):
- print("Adding write permissions to %s" % embedded_p)
- mode = os.stat(embedded).st_mode
- os.chmod(embedded, mode | stat.S_IWUSR)
- patch_lib(embedded)
-
- print("Installing plugins:")
- for p, embedded_p in plugins_l:
- real_p = os.path.realpath(p)
- print("installing", real_p, "to", embedded_p)
- # NOTE(rryan): p can be a symlink. we want to copy the binary it is
- # pointing to. os.path.realpath does this for us.
- Execute(Copy(embedded_p, real_p)) # :/
- patch_lib(str(embedded_p))
-
-
-def emit_app(target, source, env):
- """
- The first source is the binary program file, the rest are files/folders to
- include in the App's Resources directory.
-
- extra variables available:
- ICON - the filename of the icon file to use, used in package metadata. If
- not specified defaults to 'application.icns' (which should be in your
- sources list, but if you spec a file not in there it'll actually add it for
- you)
- SIGNATURE - the bundle signature, a four byte code. If not specified uses
- the first four characters of the bundle name.
- PLUGINS - a list of files/folders to place in Contents/PlugIns (Adium uses
- Contents/PlugIns, Audacity uses plug-ins AND Contents/plug-ins..., Apple
- Mail uses Contents/PlugIns, so that's what we should stick with)
- IDENTIFIER - An identifier string that specifies the application type of
- the bundle in reverse DNS format.
- DISPLAY_NAME - The application name to be encoded in the Plist and menu
- bar.
- SHORT_VERSION - Specifies the release version number of the bundle, which
- identifies a released iteration of the application. The release version
- number is a string comprised of three period-separated integers
- COPYRIGHT - Human readable copyright (NSHumanReadableCopyright)
- CATEGORY - Your application's category.
- """
- # TODO: implement a FRAMEWORKS= arg, or maybe a Framework() builder so that
- # we can declare "this app depends on these frameworks"; then look in
- # env['FRAMEWORKS'] and env['LIBS'] and figure out the library dependencies
- # *ahead of time* so that we can get scons to copy them (and so that we
- # needn't redo their install_name's &c all the time)
-
- # bah, unless we decide to change the interface so you pass the app icon in
- # as a separate param, then we *have* to change Mixxx to work properly with
- # the Resources/ dir
-
- assert len(target) == 1
- bundle = target[0]
- # pull the binary off the front since it's a special case
- binary, resources = source[0], source[1:]
- try:
- icon = env["ICON"]
- except KeyError:
- icon = "application.icns"
-
- try:
- plugins = env["PLUGINS"]
- except KeyError:
- plugins = env["PLUGINS"] = []
-
- # so, this doesn't work realistically because if the passed in icon is a
- # remote path then shit clashes but still it might be useful.
- # XXX think this through.
- # if icon not in [str(ff) for ff in source]:
- # source.append(File(icon))
-
- bundle_type = "APPL"
-
- try:
- bundle_signature = env["SIGNATURE"]
- except KeyError:
- bundle_signature = str(bundle)[:4].lower()
- assert len(bundle_signature) == 4, "Bundle signature must be four bytes"
-
- # coerce the target to a Bundle
- # XXX huh, that's weird, it builds fine now... oh shit it's because it
- # caches types in its database
- # we don't need to tell it Bundle(), we just need to postpend the .app
- # it seems that if we tell Builder "suffix = '.app'" then it _at that
- # point_ assumes that $NAME.app is a file, which then causes "TypeError:
- # Tried to lookup File 'Mixxx.app' as a Dir.:"
- # so just work around that here
- if type(bundle) != Bundle:
- bundle = Bundle(str(bundle).replace("_bundle", "") + ".app")
-
- bundle_identifier = env["IDENTIFIER"]
- bundle_version = env["VERSION"]
- bundle_display_name = env["DISPLAY_NAME"]
- bundle_short_version_string = env["SHORT_VERSION"]
- human_readable_copyright = env["COPYRIGHT"]
- application_category_type = env["CATEGORY"]
- minimum_osx_version = env["MINIMUM_OSX_VERSION"]
-
- # BUG: if the icon file is changed but nothing else then the plist doesn't
- # get rebuilt (but since it's a str() and not a Node() there's no clean way
- # to hook this in)
- # Precache some the important paths
- # idea: hide these in the env[]?
- bundle = Dir(str(bundle)) # coerce the bundle target into being a Dir
- contents = Dir(os.path.join(str(bundle), "Contents"))
- # Following variable is unused
- # frameworks = Dir(
- # os.path.join(str(contents), "Frameworks")
- # ) # we put both frameworks and standard unix sharedlibs in here
-
- env["APP_RESOURCES"] = Dir(os.path.join(str(contents), "Resources"))
-
- # env['APP_INSTALLED_BIN'] = installed_bin
-
- # Generate the .plist and PkgInfo files
-
- # The contents of the PkgInfo file are the 4-byte package type followed by
- # the 4-byte signature of your application. Thus, for the TextEdit
- # application, whose type is 'APPL' and whose signature is 'ttxt', the file
- # would contain the ASCII string "APPLttxt".
- # So, we use the first four characters of the app
- env.Writer(
- File(os.path.join(str(contents), "PkgInfo")),
- [],
- DATA="%s%s" % (bundle_type, bundle_signature),
- )
-
- # Bug #1258435: executable name must match CFBundleExecutable otherwise
- # case-sensitive file systems break. Don't use binary.name.title() here.
- plist_data = {
- "CFBundleExecutable": binary.name,
- "CFBundleIconFile": icon,
- "CFBundlePackageType": bundle_type,
- "CFBundleSignature": bundle_signature,
- "CFBundleIdentifier": bundle_identifier,
- "CFBundleDisplayName": bundle_display_name,
- "CFBundleVersion": bundle_version,
- "CFBundleShortVersionString": bundle_short_version_string,
- "NSHumanReadableCopyright": human_readable_copyright,
- "NSPrincipalClass": "NSApplication",
- "NSHighResolutionCapable": "True",
- "LSApplicationCategoryType": application_category_type,
- "LSMinimumSystemVersion": minimum_osx_version,
- }
- if env["FOR_APP_STORE"]:
- plist_data["ForAppStore"] = "yes"
- env.Plist(os.path.join(str(contents), "Info"), PLIST=plist_data)
-
- # NB: only need CFBundleExecutale if the binary name differs from the
- # bundle name
- # todo:
- """Application Keys
-
- At a minimum, all applications should contain the following keys in their
- information property list file:
- CFBundleDisplayName
- CFBundleIdentifier
- CFBundleName
- CFBundlePackageType
- CFBundleShortVersionString
- CFBundleSignature
- CFBundleVersion
- LSHasLocalizedDisplayName
- NSHumanReadableCopyright
- NSAppleScriptEnabled"""
- # further: we should support generating document associations
-
- resource_map = env.get("APP_RESOURCES_MAP", {})
-
- for i in resources:
- path = resource_map.get(str(i), "")
- target = env["APP_RESOURCES"]
- if path != "":
- target = Dir(os.path.join(str(target), path))
- if isinstance(i, SCons.Node.FS.Dir):
- InstallDir(target, i, env)
- elif isinstance(i, SCons.Node.FS.File) or isinstance(i, str):
- env.Install(target, i)
-
- plugins = env["PLUGINS"]
-
- return bundle, source + plugins # +[installed_bin]
-
-
-App = Builder(action=build_app, emitter=emit_app)
-
-
-def codesign_path(identity, keychain, entitlements, path):
- print("Codesigning: ", path)
- command = "codesign -f -s '%s'%s%s %s" % (
- identity,
- " --keychain %s" % keychain if keychain else "",
- " --entitlements %s" % entitlements if entitlements else "",
- path,
- )
- if system(command) != 0:
- raise Exception("codesign failed: " + command)
-
-
-def do_codesign(target, source, env):
- # target[0] is a File object, coerce to string to get its path (usually
- # something like osxXX_build/Mixxx)
- bundle = str(target[0]).replace("_codesign", "")
-
- # HACK(XXX) SCons can't have a Dir which is a target so we append .app here
- # since our actual target (the thing we want to codesign) is the bundle
- # folder.
- if not bundle.endswith(".app"):
- bundle += ".app"
-
- binary_path = os.path.join(bundle, "Contents", "MacOS")
- frameworks_path = os.path.join(bundle, "Contents", "Frameworks")
- plugins_path = os.path.join(bundle, "Contents", "PlugIns")
-
- keychain = env.get("CODESIGN_KEYCHAIN", None)
- keychain_password = env.get("CODESIGN_KEYCHAIN_PASSWORD", None)
- # Following variable is unused
- # installer_identity = env.get("CODESIGN_INSTALLER_IDENTITY", None)
- application_identity = env.get("CODESIGN_APPLICATION_IDENTITY", None)
- entitlements = env.get("CODESIGN_ENTITLEMENTS", None)
- if application_identity is not None:
- if keychain and keychain_password is not None:
- print("Unlocking keychain:")
- if (
- system(
- "security unlock-keychain -p '%s' %s"
- % (keychain_password, keychain)
- )
- != 0
- ):
- raise Exception("Could not unlock keychain.")
-
- # Codesign the frameworks.
- for root, dirs, files in os.walk(frameworks_path):
- for framework in dirs + files:
- codesign_path(
- application_identity,
- keychain,
- entitlements,
- os.path.join(root, framework),
- )
- # Don't descend.
- del dirs[:]
-
- # Codesign plugins.
- for root, dirs, files in os.walk(plugins_path):
- for filename in files:
- codesign_path(
- application_identity,
- keychain,
- entitlements,
- os.path.join(root, filename),
- )
-
- # Codesign binaries.
- for root, dirs, files in os.walk(binary_path):
- for filename in files:
- codesign_path(
- application_identity,
- keychain,
- entitlements,
- os.path.join(root, filename),
- )
-
- # Codesign the bundle.
- codesign_path(application_identity, keychain, entitlements, bundle)
-
-
-CodeSign = Builder(action=do_codesign)
-
-
-def build_plist(target, source, env):
- d = env["PLIST"]
- assert len(target) == 1
- target = target[0]
-
- # XXX what happens if PLIST isn't passed in?
- # todo: make this support more than just . but to do that means
- # more research and fuck that at this point
-
- # this is a bad way to do this, should really use an XML writer... but fuck
- # that
- outer_template = (
- ''
- ''
- ''
- "%s"
- ""
- )
- inner_template = "%s%s"
-
- inner = str.join("\n", [inner_template % (k, v) for k, v in d.items()])
- plist = outer_template % inner
-
- f = open(str(target), "w")
- f.write(plist)
- f.close()
-
-
-Plist = Builder(action=build_plist, emitter=no_sources, suffix="plist")
-
-# TODO: want to be able to say env.Append(FRAMEWORKS=['QtCore']) and have it
-# get translated properly... is there any way to do that here?
-
-
-def generate(env):
- env["BUILDERS"]["App"] = App
- env["BUILDERS"]["Dmg"] = Dmg
- env["BUILDERS"]["Plist"] = Plist
- env["BUILDERS"][
- "Writer"
- ] = Writer # this should be in a different module, really
- env["BUILDERS"]["CodeSign"] = CodeSign
-
-
-def exists(env):
- return os.platform == "darwin"
diff --git a/build/osx/README b/build/osx/README
deleted file mode 100644
index dd4ccb8b7c0..00000000000
--- a/build/osx/README
+++ /dev/null
@@ -1 +0,0 @@
-This directory contains files needed to create the OS X package.
diff --git a/build/osx/crossosx.py b/build/osx/crossosx.py
deleted file mode 100644
index a89dfca8b01..00000000000
--- a/build/osx/crossosx.py
+++ /dev/null
@@ -1,142 +0,0 @@
-import os
-import os.path
-import string
-
-import SCons.Action
-import SCons.Builder
-import SCons.Tool
-import SCons.Util
-
-# This is what we search for to find mingw:
-prefixes = SCons.Util.Split("""
- i686-apple-darwin9-
- powerpc-apple-darwin9-
- x86_64-apple-darwin9-
-""")
-
-def find(env):
- for prefix in prefixes:
- # First search in the SCons path and then the OS path:
- if env.WhereIs(prefix + 'gcc') or SCons.Util.WhereIs(prefix + 'gcc'):
- return prefix
-
- return ''
-
-def shlib_generator(target, source, env, for_signature):
- cmd = SCons.Util.CLVar(['$SHLINK', '$SHLINKFLAGS'])
-
- dll = env.FindIxes(target, 'SHLIBPREFIX', 'SHLIBSUFFIX')
- if dll: cmd.extend(['-o', dll])
-
- cmd.extend(['$SOURCES', '$_LIBDIRFLAGS', '$_LIBFLAGS'])
-
- implib = env.FindIxes(target, 'LIBPREFIX', 'LIBSUFFIX')
- if implib: cmd.append('-Wl,--out-implib,'+implib.get_string(for_signature))
-
- def_target = env.FindIxes(target, 'WIN32DEFPREFIX', 'WIN32DEFSUFFIX')
- if def_target: cmd.append('-Wl,--output-def,'+def_target.get_string(for_signature))
-
- return [cmd]
-
-def shlib_emitter(target, source, env):
- dll = env.FindIxes(target, 'SHLIBPREFIX', 'SHLIBSUFFIX')
- no_import_lib = env.get('no_import_lib', 0)
-
- if not dll:
- raise SCons.Errors.UserError, "A shared library should have exactly one target with the suffix: %s" % env.subst("$SHLIBSUFFIX")
-
- if not no_import_lib and \
- not env.FindIxes(target, 'LIBPREFIX', 'LIBSUFFIX'):
-
- # Append an import library to the list of targets.
- target.append(env.ReplaceIxes(dll,
- 'SHLIBPREFIX', 'SHLIBSUFFIX',
- 'LIBPREFIX', 'LIBSUFFIX'))
-
- # Append a def file target if there isn't already a def file target
- # or a def file source. There is no option to disable def file
- # target emitting, because I can't figure out why someone would ever
- # want to turn it off.
- def_source = env.FindIxes(source, 'WIN32DEFPREFIX', 'WIN32DEFSUFFIX')
- def_target = env.FindIxes(target, 'WIN32DEFPREFIX', 'WIN32DEFSUFFIX')
- if not def_source and not def_target:
- target.append(env.ReplaceIxes(dll,
- 'SHLIBPREFIX', 'SHLIBSUFFIX',
- 'WIN32DEFPREFIX', 'WIN32DEFSUFFIX'))
-
- return (target, source)
-
-# TODO: Backported to old scons version
-#shlib_action = SCons.Action.CommandGenerator(shlib_generator)
-shlib_action = SCons.Action.Action(shlib_generator,generator=1)
-
-res_action = SCons.Action.Action('$RCCOM', '$RCCOMSTR')
-
-res_builder = SCons.Builder.Builder(action=res_action, suffix='.res.o',
- source_scanner=SCons.Tool.SourceFileScanner)
-SCons.Tool.SourceFileScanner.add_scanner('.rc', SCons.Defaults.CScan)
-
-def generate(env):
- gcc_prefix = find(env)
-
- if gcc_prefix:
- dir = os.path.dirname(env.WhereIs(gcc_prefix + 'gcc') or SCons.Util.WhereIs(gcc_prefix + 'gcc'))
-
- # The mingw bin directory must be added to the path:
- path = env['ENV'].get('PATH', [])
- if not path:
- path = []
- if SCons.Util.is_String(path):
- path = string.split(path, os.pathsep)
-
- env['ENV']['PATH'] = string.join([dir] + path, os.pathsep)
-
- # Most of mingw is the same as gcc and friends...
- gnu_tools = ['gcc', 'g++', 'gnulink', 'ar', 'gas']
- for tool in gnu_tools:
- SCons.Tool.Tool(tool)(env)
-
- #... but a few things differ:
- env['CC'] = gcc_prefix + 'gcc'
- env['SHCCFLAGS'] = SCons.Util.CLVar('$CCFLAGS')
- env['CXX'] = gcc_prefix + 'g++'
- env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS')
- env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -shared')
- env['SHLINKCOM'] = shlib_action
- env.Append(SHLIBEMITTER = [shlib_emitter])
- # This line isn't required and breaks C++ linking
- #env['LINK'] = gcc_prefix + 'g++'
- env['AS'] = gcc_prefix + 'as'
- env['AR'] = gcc_prefix + 'ar'
- env['RANLIB'] = gcc_prefix + 'ranlib'
- env['WIN32DEFPREFIX'] = ''
- env['WIN32DEFSUFFIX'] = '.def'
- env['SHOBJSUFFIX'] = '.o'
- env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 1
-
- env['RC'] = gcc_prefix + 'windres'
- env['RCFLAGS'] = SCons.Util.CLVar('')
- env['RCINCFLAGS'] = '$( ${_concat(RCINCPREFIX, CPPPATH, RCINCSUFFIX, __env__, RDirs, TARGET)} $)'
- env['RCINCPREFIX'] = '--include-dir '
- env['RCINCSUFFIX'] = ''
- env['RCCOM'] = '$RC $RCINCFLAGS $RCINCPREFIX $SOURCE.dir $RCFLAGS -i $SOURCE -o $TARGET'
- #env['BUILDERS']['RES'] = res_builder
-
- # Some setting from the platform also have to be overridden:
- env['OBJPREFIX'] = ''
- env['OBJSUFFIX'] = '.o'
- env['LIBPREFIX'] = 'lib'
- env['LIBSUFFIX'] = '.a'
- env['SHOBJPREFIX'] = '$OBJPREFIX'
- env['SHOBJSUFFIX'] = '$OBJSUFFIX'
- env['PROGPREFIX'] = ''
- env['PROGSUFFIX'] = ''
- env['LIBPREFIX'] = 'lib'
- env['LIBSUFFIX'] = '.a'
- env['SHLIBPREFIX'] = 'lib'
- env['SHLIBSUFFIX'] = '.dylib'
- env['LIBPREFIXES'] = [ '$LIBPREFIX' ]
- env['LIBSUFFIXES'] = [ '$LIBSUFFIX' ]
-
-def exists(env):
- return find(env)
diff --git a/build/osx/golden_environment b/build/osx/golden_environment
deleted file mode 100644
index 4cefc5cced1..00000000000
--- a/build/osx/golden_environment
+++ /dev/null
@@ -1 +0,0 @@
-2.3-j00004-497fe02e-osx10.11-x86_64-release
diff --git a/build/osx/install_environment.sh b/build/osx/install_environment.sh
deleted file mode 100755
index 65e7d6088b6..00000000000
--- a/build/osx/install_environment.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/bash
-
-set -e
-set -x
-
-BASEURL=$1
-ENVIRONMENT_NAME=$2
-ENVIRONMENTS_PATH=$3
-
-mkdir -p ${ENVIRONMENTS_PATH}
-curl ${BASEURL}/${ENVIRONMENT_NAME}.tar.gz -o ${ENVIRONMENTS_PATH}/${ENVIRONMENT_NAME}.tar.gz
-tar zxf ${ENVIRONMENTS_PATH}/${ENVIRONMENT_NAME}.tar.gz -C ${ENVIRONMENTS_PATH}
-rm ${ENVIRONMENTS_PATH}/${ENVIRONMENT_NAME}.tar.gz
diff --git a/build/osx/otool.py b/build/osx/otool.py
deleted file mode 100644
index 04820ae76af..00000000000
--- a/build/osx/otool.py
+++ /dev/null
@@ -1,239 +0,0 @@
-import os
-import subprocess
-import sys
-
-
-# This page is REALLY USEFUL: http://www.cocoadev.com/index.pl?ApplicationLinking
-# question: why do dylibs embed their install name in themselves? that would seem to imply the system keeps a cache of all the "install names", but that's not what the docs seem to say.
-# todo: change the install names (-id) in a working .app to garbage and see if the app still runs.
-# question: Frameworks can have included resources besides the DyLib (the basic structure is X.framework/X and X.framework/Resources).
-# If you're embedding the framework, these resources might need to come along for the ride.
-# but how the fuck does the framework find these files, if it needs them?
-# for Qt it doesn't matter because none of their bundles have Resources
-# http://developer.apple.com/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/FrameworkAnatomy.html says "resources such as a shared library, nib files, image files, strings files, information property lists, documentation, header files, and so on."
-# you wouldn't need to embed Headers, but all the other things are potentially very important!
-# see: http://developer.apple.com/documentation/MacOSX/Conceptual/BPFrameworks/Tasks/CreatingFrameworks.html#//apple_ref/doc/uid/20002258-106880
-
-# OKAY BOWYZ: http://developer.apple.com/documentation/CoreFoundation/Conceptual/CFBundles/Concepts/SearchAlgorithm.html#//apple_ref/doc/uid/20001120
-# so basically: Apple has a magic ObjC API that handles doing lookups in the current bundle for you (probably asks "Where was I loaded from plz?" and just uses that dir as the root dir)
-# so YES, we do need to make sure to copy in the entirety of each framework's Resources/
-
-# also good: http://lapcatsoftware.com/blog/2007/08/11/embedding-frameworks-in-loadable-bundles/
-# also important: otool -D = get install name, install_name_tool -id = set install name
-
-# so here's my algorithm:
-# copy X.framework/Versions
-# use `cp -R` to copy the symlinks (it's weird like that: -R is meant for Recursive but if you use it on a symlink and nothing else it makes a copy of the symlink instead of copying the file the symlink was pointing at)
-# also, the symlinks in a framework bundle are relative symlinks, so we shouldn't need to patch them
-# so maybe: use `cp -R X.framework`
-
-# QUESTIONS:
-# Does Qt have an umbrella framework?
-# Do Apple load lists mean that the libs are loaded at runtime for sure, or is it safe to ignore ones that aren't found (so long as the app doesn't try to actually load that library)?
-# Is the working dir of an app set to it's .app dir or .app/Contents/MacOS?
-
-# Assumption: the loadlinks inside of an embeddable framework are all relative
-
-
-def system(s):
- "wrap system() to give us feedback on what it's doing"
- "anything using this call should be fixed to use SCons's declarative style (once you figure that out, right nick?)"
- print(s),
- sys.stdout.flush() # ignore line buffering..
- result = os.system(s)
- print()
- return result
-
-
-SYSTEM_FRAMEWORKS = ["/System/Library/Frameworks"]
-SYSTEM_LIBPATH = ["/usr/lib"] # anything else?
-# paths to libs that we should copy in
-LOCAL_FRAMEWORKS = [
- os.path.expanduser("~/Library/Frameworks"),
- "/Library/Frameworks",
- "/Network/Library/Frameworks",
-]
-LOCAL_LIBPATH = list(
- filter(
- lambda x: os.path.isdir(x),
- ["/usr/local/lib", "/opt/local/lib", "/sw/local/lib"],
- )
-)
-
-# however
-FRAMEWORKS = LOCAL_FRAMEWORKS + SYSTEM_FRAMEWORKS
-LIBPATH = LOCAL_LIBPATH + SYSTEM_LIBPATH
-
-# otool parsing
-def otool(binary):
- "return in a list of strings the OS X 'install names' of Mach-O binaries (dylibs and programs)"
- "Do not run this on object code archive (.a) files, it is not designed for that."
- # if not os.path.exists(binary): raise Exception("'%s' not found." % binary)
- if not type(binary) == str:
- raise ValueError("otool() requires a path (as a string)")
- print("otool(%s)" % binary)
- stdin, stdout, stderr = os.popen3('otool -L "%s"' % binary)
- try:
- header = (
- stdout.readline()
- ) # discard the first line since it is just the name of the file or an error message (or if reading .as, the first item on the list)
- if not binary + ":\n" == header:
- # as far as I know otool -L only parses .dylibs and .a (but if it does anything else we should cover that case here)
- if header.startswith("Archive : "):
- raise Exception("'%s' an archive (.a) file." % binary)
- else:
- raise Exception(stderr.readline().strip())
-
- def parse(l):
- return l[1 : l.rfind("(") - 1]
-
- return [parse(l[:-1]) for l in stdout] # [:-1] is for stripping the trailing \n
- finally:
- stdin.close()
- stdout.close()
- stderr.close()
-
-
-def dependencies(binary):
- l = otool(binary)
-
- # sometimes otool -L outputs the -id field, as the first row, which is not what we are trying to ask for here. Strip it out.
- # XXX this is NOT strictly correct; IF there is a library with the exact same filename as this library
- # AND we depend on it AND it happens to be the first in the loadlist, then this will break mysteriously
- # there might be a combination of flags to otool that avoids this, or something, but bah
- # it seems that dylibs have -id's, and program binaries do not. but I don't want to rely on that since I haven't an Apple doc proclaiming it, and anyway to tell the two apart requires other otool trickery that I just don't trust.
- # This will work in probably every library that exists in reality, so it's "ok"
- if os.path.basename(l[0]) == os.path.basename(binary):
- id = l.pop(0)
- # print("Removing -id field result %s from %s" % (id, binary))
- return l
-
-
-# TODO: allow passing a heuristic function (or maybe even just a list of prefixes) that will decide whether to add a lib to the dependency list. It's taking waay too long to search out everything.
-def embed_dependencies(
- binary,
- # Defaults from
- # http://www.kernelthread.com/mac/osx/programming.html
- LOCAL=[
- os.path.expanduser("~/Library/Frameworks"),
- "/Library/Frameworks",
- "/Network/Library/Frameworks",
- "/usr/local/lib",
- "/opt/local/lib",
- "/sw/local/lib",
- ],
- SYSTEM=["/System/Library/Frameworks", "/Network/Library/Frameworks", "/usr/lib"],
-):
-
- # Todo: split out the detection of frameworks vs regular dylibs -- return them as separate lists
- "recursively locates all the dependent libs of a binary using `otool -L`"
- "all output will be absolute paths"
- "binary is a file path"
- "this will crash if it cannot examine a referenced dylib, just as the app you are trying to find dependencies for will crash"
- "LOCAL: a list of paths to consider to be for installed libs that must therefore be bundled. Override this if you are not getting the right libs."
- "SYSTEM: a list of system library search paths that should be searched for system libs but should not be recursed into; this is needed. Override this if you want to bunde the system libs for some reason." # XXX it's useful to expose LOCAL but is this really needed?
- "this is a badly named function"
- "Note: sometimes Mach-O binaries depend on themselves. Deal with it."
- # "ignore_missing means whether to ignore if we can't load a binary for examination (e.g. if you have references to plugins) XXX is the list"
- # binary = os.path.abspath(binary)
- todo = dependencies(binary)
- done = []
- orig = []
- # aaah this code is so bad. it can be factored but i can't can't can't so TODO: REFACTOR
-
- while (
- todo
- ): # this was written with recursion before, but because of the possibility of loops in the network of libs recursion would require passing a collector variable around in the recursion and when you get to that point you might as well just use a loop
- e = (
- todo.pop()
- ) # because of how this is written, popping from the end is a depth-first search. Popping from the front would be a breadth-first search. Neat!
- # Figure out the absolute path to the library
- # todo: this would make sense as a separate function, but the @ case would be awkward to handle and it's iffy about what it should
- if e.startswith("/"):
- p = e
- elif e.startswith("@") and not e.startswith(
- "@rpath"
- ): # it's a relative load path
- raise Exception(
- "Unable to make heads nor tails, sah, of install name '%s'. Relative paths are for already-bundled binaries, this function does not support them."
- % e
- )
- else:
- # experiments show that giving an unspecified path is asking dyld(1) to find the library for us. This covers that case.
- # i will not do further experiments to figure out what dyld(1)'s specific search algorithm is (whether it looks at frameworks separate from dylibs) because that's not the public interface
- e_stripped = e.replace("@rpath/", "") if e.startswith("@rpath/") else e
- for P in (
- [""] + LOCAL + SYSTEM
- ): # XXX should local have priority over system or vice versa? (also, '' is the handle the relative case)
- p = os.path.abspath(os.path.join(P, e_stripped))
- # print("SEARCHING IN LIBPATH; TRYING", p)
- if os.path.exists(p):
- break
- else:
- p = e_stripped # fallthrough to the exception below #XXX icky bad logic, there must be a way to avoid saying exists() twice
-
- if not os.path.exists(p):
- raise Exception(
- "Dependent library '%s' not found. Make sure it is installed." % e
- )
-
- # sometimes the todo list will have redundant items placed on it; in the case that the items are named the same that could be avoided by relying on set() semantics
- # however there are many equivalent ways to name files in Unix, so we have to check here after getting abspath
- # proof that this makes the algorithm terminate: we record the absolute path to the file; even if there are multiple abspaths to one file (as can happen with symlinks sometimes) each different path means a different symlink file, of which there are only a finite number (since it's a finite disk)
- if p not in done and not any(p.startswith(P) for P in SYSTEM):
- done.append(p)
- orig.append(e)
- todo.extend(dependencies(p))
-
- assert all(e.startswith("/") for e in done), (
- "embed_dependencies() is broken, some path in this list is not absolute: %s"
- % (done,)
- )
- return sorted(zip(orig, done))
-
-
-def change_id(binary, id):
- "there is no way to "
- return system("install_name_tool -id '%s' '%s'" % (id, binary))
-
-
-def change_ref(binary, orig, new):
- assert orig in dependencies(binary), (
- "change_ref: '%s' not in otool -L '%s', the change will fail." % (orig, binary)
- ) # since install_name_tool(1) always fails silently, there's *no* way to tell if it worked or not; try to catch the one bad case we know of manually (and expensively)
- return system("install_name_tool -change '%s' '%s' '%s'" % (orig, new, binary))
-
-
-# but what are we *really* doing here? The overall goal?
-# I'm looking for
-# So if I have Mixxx and I want to run it
-# I look at what Mixxx depends on
-# then in that list I filter out System libs
-# then I take the remainder and copy them into the frameworks dir
-# then I look at each of them and see what they depend on, and keep copying in and pruning
-# then within all the binaries that I've taken in I use install_name_tool to change the local/ load paths to @executuable_path/../Frameworks/$name
-
-#
-
-# keywords: @executable_path, @loader_path, @rpath. TODO: document these.
-
-
-def rpaths(binary):
- """Returns a list of the LC_RPATH load commands in the provided binary."""
- print("otool(%s)" % binary)
- p = subprocess.Popen(
- ["otool", "-l", binary],
- stdin=subprocess.PIPE,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE,
- )
- stdout, stderr = p.communicate()
-
- lines = stdout.split("\n")
- rpaths = []
- for i, line in enumerate(lines):
- if line.strip() == "cmd LC_RPATH":
- path_line = lines[i + 2].strip().replace("path ", "")
- path_line = path_line[: path_line.rindex("(") - 1]
- rpaths.append(path_line)
- return rpaths
diff --git a/build/osx/product_definition.plist b/build/osx/product_definition.plist
deleted file mode 100644
index 08f8cf585f6..00000000000
--- a/build/osx/product_definition.plist
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
- arch
-
- x86_64
-
- os
-
- 10.12.0
-
-
-
diff --git a/build/protoc.py b/build/protoc.py
deleted file mode 100644
index 2dbae677733..00000000000
--- a/build/protoc.py
+++ /dev/null
@@ -1,80 +0,0 @@
-"""
-protoc.py: Protoc Builder for SCons
-
-This Builder invokes protoc to generate C++ and Python
-from a .proto file.
-
-NOTE: Java is not currently supported."""
-
-__author__ = "Scott Stafford"
-
-import SCons.Action
-import SCons.Builder
-import SCons.Defaults
-import SCons.Node.FS
-import SCons.Util
-
-from SCons.Script import Dir
-
-import os.path
-protocs = 'protoc'
-
-ProtocAction = SCons.Action.Action('$PROTOCCOM', '$PROTOCCOMSTR')
-def ProtocEmitter(target, source, env):
- dirOfCallingSConscript = Dir('.').srcnode()
- env.Prepend(PROTOCPROTOPATH = dirOfCallingSConscript.path)
-
- source_with_corrected_path = []
- for src in source:
- commonprefix = os.path.commonprefix([dirOfCallingSConscript.path, src.srcnode().path])
- if len(commonprefix)>0:
- source_with_corrected_path.append( src.srcnode().path[len(commonprefix + os.sep):] )
- else:
- source_with_corrected_path.append( src.srcnode().path )
-
- source = source_with_corrected_path
-
- for src in source:
- modulename = os.path.splitext(src)[0]
-
- if env['PROTOCOUTDIR']:
- #base = os.path.join(env['PROTOCOUTDIR'] , modulename)
- base = os.path.join(modulename)
- target.extend( [ base + '.pb.cc', base + '.pb.h' ] )
-
- if env['PROTOCPYTHONOUTDIR']:
- base = os.path.join(env['PROTOCPYTHONOUTDIR'] , modulename)
- target.append( base + '_pb2.py' )
-
- try:
- target.append(env['PROTOCFDSOUT'])
- except KeyError:
- pass
-
- #~ print("PROTOC SOURCE:", [str(s) for s in source])
- #~ print("PROTOC TARGET:", [str(s) for s in target])
-
- return target, source
-
-ProtocBuilder = SCons.Builder.Builder(action = ProtocAction,
- emitter = ProtocEmitter,
- srcsuffix = '$PROTOCSRCSUFFIX')
-
-def generate(env):
- """Add Builders and construction variables for protoc to an Environment."""
- try:
- bld = env['BUILDERS']['Protoc']
- except KeyError:
- bld = ProtocBuilder
- env['BUILDERS']['Protoc'] = bld
-
- env['PROTOC'] = env.Detect(protocs) or 'protoc'
- env['PROTOCFLAGS'] = SCons.Util.CLVar('')
- env['PROTOCPROTOPATH'] = SCons.Util.CLVar('')
- env['PROTOCCOM'] = '$PROTOC ${["-I%s"%x for x in PROTOCPROTOPATH]} $PROTOCFLAGS --cpp_out=$PROTOCCPPOUTFLAG$PROTOCOUTDIR ${PROTOCPYTHONOUTDIR and ("--python_out="+PROTOCPYTHONOUTDIR) or ""} ${PROTOCFDSOUT and ("-o"+PROTOCFDSOUT) or ""} ${SOURCES}'
- env['PROTOCOUTDIR'] = '${SOURCE.dir}'
- env['PROTOCPYTHONOUTDIR'] = "python"
- env['PROTOCSRCSUFFIX'] = '.proto'
-
-def exists(env):
- return env.Detect(protocs)
diff --git a/build/qt5.py b/build/qt5.py
deleted file mode 100644
index 9a4aa73f041..00000000000
--- a/build/qt5.py
+++ /dev/null
@@ -1,1023 +0,0 @@
-
-"""SCons.Tool.qt5
-
-Tool-specific initialization for Qt5.
-
-There normally shouldn't be any need to import this module directly.
-It will usually be imported through the generic SCons.Tool.Tool()
-selection method.
-
-"""
-
-#
-# Copyright (c) 2001-7,2010,2011,2012 The SCons Foundation
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-
-import os.path
-import re
-import subprocess
-import sys
-
-import SCons.Action
-import SCons.Builder
-import SCons.Defaults
-import SCons.Scanner
-import SCons.Tool
-import SCons.Util
-
-class ToolQt5Warning(SCons.Warnings.Warning):
- pass
-
-class GeneratedMocFileNotIncluded(ToolQt5Warning):
- pass
-
-class QtdirNotFound(ToolQt5Warning):
- pass
-
-SCons.Warnings.enableWarningClass(ToolQt5Warning)
-
-try:
- sorted
-except NameError:
- # Pre-2.4 Python has no sorted() function.
- #
- # The pre-2.4 Python list.sort() method does not support
- # list.sort(key=) nor list.sort(reverse=) keyword arguments, so
- # we must implement the functionality of those keyword arguments
- # by hand instead of passing them to list.sort().
- def sorted(iterable, cmp=None, key=None, reverse=0):
- if key is not None:
- result = [(key(x), x) for x in iterable]
- else:
- result = iterable[:]
- if cmp is None:
- # Pre-2.3 Python does not support list.sort(None).
- result.sort()
- else:
- result.sort(cmp)
- if key is not None:
- result = [t1 for t0,t1 in result]
- if reverse:
- result.reverse()
- return result
-
-qrcinclude_re = re.compile(r']*>([^<]*)', re.M)
-
-def transformToWinePath(path) :
- return os.popen('winepath -w "%s"'%path).read().strip().replace('\\','/')
-
-header_extensions = [".h", ".hxx", ".hpp", ".hh"]
-if SCons.Util.case_sensitive_suffixes('.h', '.H'):
- header_extensions.append('.H')
-# TODO: The following two lines will work when integrated back to SCons
-# TODO: Meanwhile the third line will do the work
-#cplusplus = __import__('c++', globals(), locals(), [])
-#cxx_suffixes = cplusplus.CXXSuffixes
-cxx_suffixes = [".c", ".cxx", ".cpp", ".cc"]
-
-def checkMocIncluded(target, source, env):
- moc = target[0]
- cpp = source[0]
- # looks like cpp.includes is cleared before the build stage :-(
- # not really sure about the path transformations (moc.cwd? cpp.cwd?) :-/
- path = SCons.Defaults.CScan.path_function(env, moc.cwd)
- includes = SCons.Defaults.CScan(cpp, env, path)
- if not moc in includes:
- SCons.Warnings.warn(
- GeneratedMocFileNotIncluded,
- "Generated moc file '%s' is not included by '%s'" %
- (str(moc), str(cpp)))
-
-def find_file(filename, paths, node_factory):
- for dir in paths:
- node = node_factory(filename, dir)
- if node.rexists():
- return node
- return None
-
-class _Automoc:
- """
- Callable class, which works as an emitter for Programs, SharedLibraries and
- StaticLibraries.
- """
-
- def __init__(self, objBuilderName):
- self.objBuilderName = objBuilderName
- # some regular expressions:
- # Q_OBJECT detection
- self.qo_search = re.compile(r'[^A-Za-z0-9]Q_OBJECT[^A-Za-z0-9]')
- # cxx and c comment 'eater'
- self.ccomment = re.compile(r'/\*(.*?)\*/',re.S)
- self.cxxcomment = re.compile(r'//.*$',re.M)
- # we also allow Q_OBJECT in a literal string
- self.literal_qobject = re.compile(r'"[^\n]*Q_OBJECT[^\n]*"')
-
- def create_automoc_options(self, env):
- """
- Create a dictionary with variables related to Automocing,
- based on the current environment.
- Is executed once in the __call__ routine.
- """
- moc_options = {'auto_scan' : True,
- 'auto_scan_strategy' : 0,
- 'gobble_comments' : 0,
- 'debug' : 0,
- 'auto_cpppath' : True,
- 'cpppaths' : []}
- try:
- if int(env.subst('$QT5_AUTOSCAN')) == 0:
- moc_options['auto_scan'] = False
- except ValueError:
- pass
- try:
- moc_options['auto_scan_strategy'] = int(env.subst('$QT5_AUTOSCAN_STRATEGY'))
- except ValueError:
- pass
- try:
- moc_options['gobble_comments'] = int(env.subst('$QT5_GOBBLECOMMENTS'))
- except ValueError:
- pass
- try:
- moc_options['debug'] = int(env.subst('$QT5_DEBUG'))
- except ValueError:
- pass
- try:
- if int(env.subst('$QT5_AUTOMOC_SCANCPPPATH')) == 0:
- moc_options['auto_cpppath'] = False
- except ValueError:
- pass
- if moc_options['auto_cpppath']:
- paths = env.get('QT5_AUTOMOC_CPPPATH', [])
- if not paths:
- paths = env.get('CPPPATH', [])
- moc_options['cpppaths'].extend(paths)
-
- return moc_options
-
- def __automoc_strategy_simple(self, env, moc_options,
- cpp, cpp_contents, out_sources):
- """
- Default Automoc strategy (Q_OBJECT driven): detect a header file
- (alongside the current cpp/cxx) that contains a Q_OBJECT
- macro...and MOC it.
- If a Q_OBJECT macro is also found in the cpp/cxx itself,
- it gets MOCed too.
- """
-
- h=None
- for h_ext in header_extensions:
- # try to find the header file in the corresponding source
- # directory
- hname = self.splitext(cpp.name)[0] + h_ext
- h = find_file(hname, [cpp.get_dir()]+moc_options['cpppaths'], env.File)
- if h:
- if moc_options['debug']:
- print("scons: qt5: Scanning '%s' (header of '%s')" % (str(h), str(cpp)))
- h_contents = h.get_text_contents()
- if moc_options['gobble_comments']:
- h_contents = self.ccomment.sub('', h_contents)
- h_contents = self.cxxcomment.sub('', h_contents)
- h_contents = self.literal_qobject.sub('""', h_contents)
- break
- if not h and moc_options['debug']:
- print("scons: qt5: no header for '%s'." % (str(cpp)))
- if h and self.qo_search.search(h_contents):
- # h file with the Q_OBJECT macro found -> add moc_cpp
- moc_cpp = env.Moc5(h)
- if moc_options['debug']:
- print("scons: qt5: found Q_OBJECT macro in '%s', moc'ing to '%s'" % (str(h), str(moc_cpp)))
-
- # Now, check whether the corresponding CPP file
- # includes the moc'ed output directly...
- inc_path_removed = os.path.split(str(moc_cpp[0]))[1]
- inc_moc_cpp = r'^\s*#\s*include\s+"%s"' % inc_path_removed
- if cpp and re.search(inc_moc_cpp, cpp_contents, re.M):
- if moc_options['debug']:
- print("scons: qt5: CXX file '%s' directly includes the moc'ed output '%s', no compiling required" % (str(cpp), str(moc_cpp)))
- env.Depends(cpp, moc_cpp)
- else:
- moc_o = self.objBuilder(moc_cpp)
- if moc_options['debug']:
- print("scons: qt5: compiling '%s' to '%s'" % (str(cpp), str(moc_o)))
- out_sources.extend(moc_o)
- if cpp and self.qo_search.search(cpp_contents):
- # cpp file with Q_OBJECT macro found -> add moc
- # (to be included in cpp)
- moc = env.Moc5(cpp)
- env.Ignore(moc, moc)
- if moc_options['debug']:
- print("scons: qt5: found Q_OBJECT macro in '%s', moc'ing to '%s'" % (str(cpp), str(moc)))
-
- def __automoc_strategy_include_driven(self, env, moc_options,
- cpp, cpp_contents, out_sources):
- """
- Automoc strategy #1 (include driven): searches for "include"
- statements of MOCed files in the current cpp/cxx file.
- This strategy tries to add support for the compilation
- of the qtsolutions...
- """
- if self.splitext(str(cpp))[1] in cxx_suffixes:
- added = False
- h_moc = "%s%s%s" % (env.subst('$QT5_XMOCHPREFIX'),
- self.splitext(cpp.name)[0],
- env.subst('$QT5_XMOCHSUFFIX'))
- cxx_moc = "%s%s%s" % (env.subst('$QT5_XMOCCXXPREFIX'),
- self.splitext(cpp.name)[0],
- env.subst('$QT5_XMOCCXXSUFFIX'))
- inc_h_moc = r'#include\s+"%s"' % h_moc
- inc_cxx_moc = r'#include\s+"%s"' % cxx_moc
-
- # Search for special includes in qtsolutions style
- if cpp and re.search(inc_h_moc, cpp_contents):
- # cpp file with #include directive for a MOCed header found -> add moc
-
- # Try to find header file
- h=None
- hname=""
- for h_ext in header_extensions:
- # Try to find the header file in the
- # corresponding source directory
- hname = self.splitext(cpp.name)[0] + h_ext
- h = find_file(hname, [cpp.get_dir()]+moc_options['cpppaths'], env.File)
- if h:
- if moc_options['debug']:
- print("scons: qt5: Scanning '%s' (header of '%s')" % (str(h), str(cpp)))
- h_contents = h.get_text_contents()
- if moc_options['gobble_comments']:
- h_contents = self.ccomment.sub('', h_contents)
- h_contents = self.cxxcomment.sub('', h_contents)
- h_contents = self.literal_qobject.sub('""', h_contents)
- break
- if not h and moc_options['debug']:
- print("scons: qt5: no header for '%s'." % (str(cpp)))
- if h and self.qo_search.search(h_contents):
- # h file with the Q_OBJECT macro found -> add moc_cpp
- moc_cpp = env.XMoc5(h)
- env.Ignore(moc_cpp, moc_cpp)
- added = True
- # Removing file from list of sources, because it is not to be
- # compiled but simply included by the cpp/cxx file.
- for idx, s in enumerate(out_sources):
- if hasattr(s, "sources") and len(s.sources) > 0:
- if str(s.sources[0]) == h_moc:
- out_sources.pop(idx)
- break
- if moc_options['debug']:
- print("scons: qt5: found Q_OBJECT macro in '%s', moc'ing to '%s'" % (str(h), str(h_moc)))
- else:
- if moc_options['debug']:
- print("scons: qt5: found no Q_OBJECT macro in '%s', but a moc'ed version '%s' gets included in '%s'" % (str(h), inc_h_moc, cpp.name))
-
- if cpp and re.search(inc_cxx_moc, cpp_contents):
- # cpp file with #include directive for a MOCed cxx file found -> add moc
- if self.qo_search.search(cpp_contents):
- moc = env.XMoc5(target=cxx_moc, source=cpp)
- env.Ignore(moc, moc)
- added = True
- if moc_options['debug']:
- print("scons: qt5: found Q_OBJECT macro in '%s', moc'ing to '%s'" % (str(cpp), str(moc)))
- else:
- if moc_options['debug']:
- print("scons: qt5: found no Q_OBJECT macro in '%s', although a moc'ed version '%s' of itself gets included" % (cpp.name, inc_cxx_moc))
-
- if not added:
- # Fallback to default Automoc strategy (Q_OBJECT driven)
- self.__automoc_strategy_simple(env, moc_options, cpp,
- cpp_contents, out_sources)
-
- def __call__(self, target, source, env):
- """
- Smart autoscan function. Gets the list of objects for the Program
- or Lib. Adds objects and builders for the special qt5 files.
- """
- moc_options = self.create_automoc_options(env)
-
- # some shortcuts used in the scanner
- self.splitext = SCons.Util.splitext
- self.objBuilder = getattr(env, self.objBuilderName)
-
- # The following is kind of hacky to get builders working properly (FIXME)
- objBuilderEnv = self.objBuilder.env
- self.objBuilder.env = env
- mocBuilderEnv = env.Moc5.env
- env.Moc5.env = env
- xMocBuilderEnv = env.XMoc5.env
- env.XMoc5.env = env
-
- # make a deep copy for the result; MocH objects will be appended
- out_sources = source[:]
-
- for obj in source:
- if not moc_options['auto_scan']:
- break
- if isinstance(obj,str): # big kludge!
- print("scons: qt5: '%s' MAYBE USING AN OLD SCONS VERSION AND NOT CONVERTED TO 'File'. Discarded." % str(obj))
- continue
- if not obj.has_builder():
- # binary obj file provided
- if moc_options['debug']:
- print("scons: qt5: '%s' seems to be a binary. Discarded." % str(obj))
- continue
- cpp = obj.sources[0]
- if not self.splitext(str(cpp))[1] in cxx_suffixes:
- if moc_options['debug']:
- print("scons: qt5: '%s' is no cxx file. Discarded." % str(cpp))
- # c or fortran source
- continue
- try:
- cpp_contents = cpp.get_text_contents()
- if moc_options['gobble_comments']:
- cpp_contents = self.ccomment.sub('', cpp_contents)
- cpp_contents = self.cxxcomment.sub('', cpp_contents)
- cpp_contents = self.literal_qobject.sub('""', cpp_contents)
- except: continue # may be an still not generated source
-
- if moc_options['auto_scan_strategy'] == 0:
- # Default Automoc strategy (Q_OBJECT driven)
- self.__automoc_strategy_simple(env, moc_options,
- cpp, cpp_contents, out_sources)
- else:
- # Automoc strategy #1 (include driven)
- self.__automoc_strategy_include_driven(env, moc_options,
- cpp, cpp_contents, out_sources)
-
- # restore the original env attributes (FIXME)
- self.objBuilder.env = objBuilderEnv
- env.Moc5.env = mocBuilderEnv
- env.XMoc5.env = xMocBuilderEnv
-
- # We return the set of source entries as sorted sequence, else
- # the order might accidentally change from one build to another
- # and trigger unwanted rebuilds. For proper sorting, a key function
- # has to be specified...FS.Entry (and Base nodes in general) do not
- # provide a __cmp__, for performance reasons.
- return (target, sorted(set(out_sources), key=lambda entry : str(entry)))
-
-AutomocShared = _Automoc('SharedObject')
-AutomocStatic = _Automoc('StaticObject')
-
-def _detect(env):
- """Not really safe, but fast method to detect the Qt5 library"""
- # TODO: check output of "moc -v" for correct version >= 5.0.0
- try: return env['QT5DIR']
- except KeyError: pass
-
- try: return env['QTDIR']
- except KeyError: pass
-
- try: return os.environ['QT5DIR']
- except KeyError: pass
-
- try: return os.environ['QTDIR']
- except KeyError: pass
-
- moc = env.WhereIs('moc-qt5') or env.WhereIs('moc5') or env.WhereIs('moc')
- if moc:
- QT5DIR = os.path.dirname(os.path.dirname(moc))
- SCons.Warnings.warn(
- QtdirNotFound,
- "QT5DIR variable is not defined, using moc executable as a hint (QT5DIR=%s)" % QT5DIR)
- return QT5DIR
-
- raise SCons.Errors.StopError(
- QtdirNotFound,
- "Could not detect Qt 5 installation")
- return None
-
-
-def __scanResources(node, env, path, arg):
- # Helper function for scanning .qrc resource files
- # I've been careful on providing names relative to the qrc file
- # If that was not needed this code could be simplified a lot
- def recursiveFiles(basepath, path) :
- result = []
- for item in os.listdir(os.path.join(basepath, path)) :
- itemPath = os.path.join(path, item)
- if os.path.isdir(os.path.join(basepath, itemPath)) :
- result += recursiveFiles(basepath, itemPath)
- else:
- result.append(itemPath)
- return result
- contents = node.get_text_contents()
- includes = qrcinclude_re.findall(contents)
- qrcpath = os.path.dirname(node.path)
- dirs = [included for included in includes if os.path.isdir(os.path.join(qrcpath,included))]
- # dirs need to include files recursively
- for dir in dirs :
- includes.remove(dir)
- includes+=recursiveFiles(qrcpath,dir)
- return includes
-
-#
-# Scanners
-#
-__qrcscanner = SCons.Scanner.Scanner(name = 'qrcfile',
- function = __scanResources,
- argument = None,
- skeys = ['.qrc'])
-
-#
-# Emitters
-#
-def __qrc_path(head, prefix, tail, suffix):
- if head:
- if tail:
- return os.path.join(head, "%s%s%s" % (prefix, tail, suffix))
- else:
- return "%s%s%s" % (prefix, head, suffix)
- else:
- return "%s%s%s" % (prefix, tail, suffix)
-def __qrc_emitter(target, source, env):
- sourceBase, sourceExt = os.path.splitext(SCons.Util.to_String(source[0]))
- sHead = None
- sTail = sourceBase
- if sourceBase:
- sHead, sTail = os.path.split(sourceBase)
-
- t = __qrc_path(sHead, env.subst('$QT5_QRCCXXPREFIX'),
- sTail, env.subst('$QT5_QRCCXXSUFFIX'))
-
- return t, source
-
-#
-# Action generators
-#
-def __moc_generator_from_h(source, target, env, for_signature):
- pass_defines = False
- try:
- if int(env.subst('$QT5_CPPDEFINES_PASSTOMOC')) == 1:
- pass_defines = True
- except ValueError:
- pass
-
- if pass_defines:
- return '$QT5_MOC $QT5_MOCDEFINES $QT5_MOCFROMHFLAGS $QT5_MOCINCFLAGS -o $TARGET $SOURCE'
- else:
- return '$QT5_MOC $QT5_MOCFROMHFLAGS $QT5_MOCINCFLAGS -o $TARGET $SOURCE'
-
-def __moc_generator_from_cxx(source, target, env, for_signature):
- pass_defines = False
- try:
- if int(env.subst('$QT5_CPPDEFINES_PASSTOMOC')) == 1:
- pass_defines = True
- except ValueError:
- pass
-
- if pass_defines:
- return ['$QT5_MOC $QT5_MOCDEFINES $QT5_MOCFROMCXXFLAGS $QT5_MOCINCFLAGS -o $TARGET $SOURCE',
- SCons.Action.Action(checkMocIncluded,None)]
- else:
- return ['$QT5_MOC $QT5_MOCFROMCXXFLAGS $QT5_MOCINCFLAGS -o $TARGET $SOURCE',
- SCons.Action.Action(checkMocIncluded,None)]
-
-def __mocx_generator_from_h(source, target, env, for_signature):
- pass_defines = False
- try:
- if int(env.subst('$QT5_CPPDEFINES_PASSTOMOC')) == 1:
- pass_defines = True
- except ValueError:
- pass
-
- if pass_defines:
- return '$QT5_MOC $QT5_MOCDEFINES $QT5_MOCFROMHFLAGS $QT5_MOCINCFLAGS -o $TARGET $SOURCE'
- else:
- return '$QT5_MOC $QT5_MOCFROMHFLAGS $QT5_MOCINCFLAGS -o $TARGET $SOURCE'
-
-def __mocx_generator_from_cxx(source, target, env, for_signature):
- pass_defines = False
- try:
- if int(env.subst('$QT5_CPPDEFINES_PASSTOMOC')) == 1:
- pass_defines = True
- except ValueError:
- pass
-
- if pass_defines:
- return ['$QT5_MOC $QT5_MOCDEFINES $QT5_MOCFROMCXXFLAGS $QT5_MOCINCFLAGS -o $TARGET $SOURCE',
- SCons.Action.Action(checkMocIncluded,None)]
- else:
- return ['$QT5_MOC $QT5_MOCFROMCXXFLAGS $QT5_MOCINCFLAGS -o $TARGET $SOURCE',
- SCons.Action.Action(checkMocIncluded,None)]
-
-def __qrc_generator(source, target, env, for_signature):
- name_defined = False
- try:
- if env.subst('$QT5_QRCFLAGS').find('-name') >= 0:
- name_defined = True
- except ValueError:
- pass
-
- if name_defined:
- return '$QT5_RCC $QT5_QRCFLAGS $SOURCE -o $TARGET'
- else:
- qrc_suffix = env.subst('$QT5_QRCSUFFIX')
- src = str(source[0])
- head, tail = os.path.split(src)
- if tail:
- src = tail
- qrc_suffix = env.subst('$QT5_QRCSUFFIX')
- if src.endswith(qrc_suffix):
- qrc_stem = src[:-len(qrc_suffix)]
- else:
- qrc_stem = src
- return '$QT5_RCC $QT5_QRCFLAGS -name %s $SOURCE -o $TARGET' % qrc_stem
-
-def _find_qtdirs(qt5dir, module):
- QT5LIBDIR = os.path.join(qt5dir,"lib")
- QT5INCDIR = os.path.join(qt5dir,"includedir")
- if sys.platform.startswith('linux'):
- if any(os.access(os.path.join(path, 'pkg-config'), os.X_OK) for path in os.environ["PATH"].split(os.pathsep)):
- try:
- if not module in ["Qt5DBus", "Qt5Assistant"]:
- module5 = module.replace('Qt','Qt5')
- else:
- module5 = module
- if not os.path.isdir(QT5LIBDIR):
- QT5LIBDIR = subprocess.Popen(["pkg-config", "--variable=libdir", module5], stdout = subprocess.PIPE).communicate()[0].rstrip().decode('utf-8')
- if not os.path.isdir(QT5INCDIR):
- QT5INCDIR = subprocess.Popen(["pkg-config", "--variable=includedir", module5], stdout = subprocess.PIPE).communicate()[0].rstrip().decode('utf-8')
- finally:
- pass
- return QT5LIBDIR, QT5INCDIR, os.path.join(QT5INCDIR,module)
-
-#
-# Builders
-#
-__ts_builder = SCons.Builder.Builder(
- action = SCons.Action.Action('$QT5_LUPDATECOM','$QT5_LUPDATECOMSTR'),
- suffix = '.ts',
- source_factory = SCons.Node.FS.Entry)
-__qm_builder = SCons.Builder.Builder(
- action = SCons.Action.Action('$QT5_LRELEASECOM','$QT5_LRELEASECOMSTR'),
- src_suffix = '.ts',
- suffix = '.qm')
-__qrc_builder = SCons.Builder.Builder(
- action = SCons.Action.CommandGeneratorAction(__qrc_generator, {'cmdstr':'$QT5_QRCCOMSTR'}),
- source_scanner = __qrcscanner,
- src_suffix = '$QT5_QRCSUFFIX',
- suffix = '$QT5_QRCCXXSUFFIX',
- prefix = '$QT5_QRCCXXPREFIX',
- single_source = 1)
-__ex_moc_builder = SCons.Builder.Builder(
- action = SCons.Action.CommandGeneratorAction(__moc_generator_from_h, {'cmdstr':'$QT5_MOCCOMSTR'}))
-__ex_uic_builder = SCons.Builder.Builder(
- action = SCons.Action.Action('$QT5_UICCOM', '$QT5_UICCOMSTR'),
- src_suffix = '.ui')
-
-
-#
-# Wrappers (pseudo-Builders)
-#
-def Ts5(env, target, source=None, *args, **kw):
- """
- A pseudo-Builder wrapper around the LUPDATE executable of Qt5.
- lupdate [options] [source-file|path]... -ts ts-files
- """
- if not SCons.Util.is_List(target):
- target = [target]
- if not source:
- source = target[:]
- if not SCons.Util.is_List(source):
- source = [source]
-
- # Check QT5_CLEAN_TS and use NoClean() function
- clean_ts = False
- try:
- if int(env.subst('$QT5_CLEAN_TS')) == 1:
- clean_ts = True
- except ValueError:
- pass
-
- result = []
- for t in target:
- obj = __ts_builder.__call__(env, t, source, **kw)
- # Prevent deletion of the .ts file, unless explicitly specified
- if not clean_ts:
- env.NoClean(obj)
- # Always make our target "precious", such that it is not deleted
- # prior to a rebuild
- env.Precious(obj)
- # Add to resulting target list
- result.extend(obj)
-
- return result
-
-def Qm5(env, target, source=None, *args, **kw):
- """
- A pseudo-Builder wrapper around the LRELEASE executable of Qt5.
- lrelease [options] ts-files [-qm qm-file]
- """
- if not SCons.Util.is_List(target):
- target = [target]
- if not source:
- source = target[:]
- if not SCons.Util.is_List(source):
- source = [source]
-
- result = []
- for t in target:
- result.extend(__qm_builder.__call__(env, t, source, **kw))
-
- return result
-
-def Qrc5(env, target, source=None, *args, **kw):
- """
- A pseudo-Builder wrapper around the RCC executable of Qt5.
- rcc [options] qrc-files -o out-file
- """
- if not SCons.Util.is_List(target):
- target = [target]
- if not source:
- source = target[:]
- if not SCons.Util.is_List(source):
- source = [source]
-
- result = []
- for t, s in zip(target, source):
- result.extend(__qrc_builder.__call__(env, t, s, **kw))
-
- return result
-
-def ExplicitMoc5(env, target, source, *args, **kw):
- """
- A pseudo-Builder wrapper around the MOC executable of Qt5.
- moc [options]
- """
- if not SCons.Util.is_List(target):
- target = [target]
- if not SCons.Util.is_List(source):
- source = [source]
-
- result = []
- for t in target:
- # Is it a header or a cxx file?
- result.extend(__ex_moc_builder.__call__(env, t, source, **kw))
-
- return result
-
-def ExplicitUic5(env, target, source, *args, **kw):
- """
- A pseudo-Builder wrapper around the UIC executable of Qt5.
- uic [options]
- """
- if not SCons.Util.is_List(target):
- target = [target]
- if not SCons.Util.is_List(source):
- source = [source]
-
- result = []
- for t in target:
- result.extend(__ex_uic_builder.__call__(env, t, source, **kw))
-
- return result
-
-def generate(env):
- """Add Builders and construction variables for qt5 to an Environment."""
-
- suffixes = [
- '-qt5',
- '-qt5.exe',
- '5',
- '5.exe',
- '',
- '.exe',
- ]
- command_suffixes = ['-qt5', '5', '']
-
- def locateQt5Command(env, command, qtdir) :
- triedPaths = []
- for suffix in suffixes :
- fullpath = os.path.join(qtdir,'bin',command + suffix)
- if os.access(fullpath, os.X_OK) :
- return fullpath
- triedPaths.append(fullpath)
-
- fullpath = env.Detect([command+s for s in command_suffixes])
- if not (fullpath is None) : return fullpath
-
- raise Exception("Qt5 command '" + command + "' not found. Tried: " + ', '.join(triedPaths))
-
- CLVar = SCons.Util.CLVar
- Action = SCons.Action.Action
- Builder = SCons.Builder.Builder
-
- env['QT5DIR'] = _detect(env)
- # TODO: 'Replace' should be 'SetDefault'
-# env.SetDefault(
- env.Replace(
- QT5DIR = _detect(env),
- QT5_BINPATH = os.path.join('$QT5DIR', 'bin'),
- # TODO: This is not reliable to QT5DIR value changes but needed in order to support '-qt5' variants
- QT5_MOC = locateQt5Command(env,'moc', env['QT5DIR']),
- QT5_UIC = locateQt5Command(env,'uic', env['QT5DIR']),
- QT5_RCC = locateQt5Command(env,'rcc', env['QT5DIR']),
- QT5_LUPDATE = locateQt5Command(env,'lupdate', env['QT5DIR']),
- QT5_LRELEASE = locateQt5Command(env,'lrelease', env['QT5DIR']),
-
- QT5_AUTOSCAN = 1, # Should the qt5 tool try to figure out, which sources are to be moc'ed?
- QT5_AUTOSCAN_STRATEGY = 0, # While scanning for files to moc, should we search for includes in qtsolutions style?
- QT5_GOBBLECOMMENTS = 0, # If set to 1, comments are removed before scanning cxx/h files.
- QT5_CPPDEFINES_PASSTOMOC = 1, # If set to 1, all CPPDEFINES get passed to the moc executable.
- QT5_CLEAN_TS = 0, # If set to 1, translation files (.ts) get cleaned on 'scons -c'
- QT5_AUTOMOC_SCANCPPPATH = 1, # If set to 1, the CPPPATHs (or QT5_AUTOMOC_CPPPATH) get scanned for moc'able files
- QT5_AUTOMOC_CPPPATH = [], # Alternative paths that get scanned for moc files
-
- # Some Qt5 specific flags. I don't expect someone wants to
- # manipulate those ...
- QT5_UICFLAGS = CLVar(''),
- QT5_MOCFROMHFLAGS = CLVar(''),
- QT5_MOCFROMCXXFLAGS = CLVar('-i'),
- QT5_QRCFLAGS = '',
- QT5_LUPDATEFLAGS = '',
- QT5_LRELEASEFLAGS = '',
-
- # suffixes/prefixes for the headers / sources to generate
- QT5_UISUFFIX = '.ui',
- QT5_UICDECLPREFIX = 'ui_',
- QT5_UICDECLSUFFIX = '.h',
- QT5_MOCINCPREFIX = '-I',
- QT5_MOCHPREFIX = 'moc_',
- QT5_MOCHSUFFIX = '$CXXFILESUFFIX',
- QT5_MOCCXXPREFIX = '',
- QT5_MOCCXXSUFFIX = '.moc',
- QT5_QRCSUFFIX = '.qrc',
- QT5_QRCCXXSUFFIX = '$CXXFILESUFFIX',
- QT5_QRCCXXPREFIX = 'qrc_',
- QT5_MOCDEFPREFIX = '-D',
- QT5_MOCDEFSUFFIX = '',
- QT5_MOCDEFINES = '${_defines(QT5_MOCDEFPREFIX, CPPDEFINES, QT5_MOCDEFSUFFIX, __env__)}',
- QT5_MOCCPPPATH = [],
- QT5_MOCINCFLAGS = '$( ${_concat(QT5_MOCINCPREFIX, QT5_MOCCPPPATH, INCSUFFIX, __env__, RDirs)} $)',
-
- # Commands for the qt5 support ...
- QT5_UICCOM = '$QT5_UIC $QT5_UICFLAGS -o $TARGET $SOURCE',
- QT5_LUPDATECOM = '$QT5_LUPDATE $QT5_LUPDATEFLAGS $SOURCES -ts $TARGET',
- QT5_LRELEASECOM = '$QT5_LRELEASE $QT5_LRELEASEFLAGS -qm $TARGET $SOURCES',
-
- # Specialized variables for the Extended Automoc support
- # (Strategy #1 for qtsolutions)
- QT5_XMOCHPREFIX = 'moc_',
- QT5_XMOCHSUFFIX = '.cpp',
- QT5_XMOCCXXPREFIX = '',
- QT5_XMOCCXXSUFFIX = '.moc',
-
- )
-
- try:
- env.AddMethod(Ts5, "Ts5")
- env.AddMethod(Qm5, "Qm5")
- env.AddMethod(Qrc5, "Qrc5")
- env.AddMethod(ExplicitMoc5, "ExplicitMoc5")
- env.AddMethod(ExplicitUic5, "ExplicitUic5")
- except AttributeError:
- # Looks like we use a pre-0.98 version of SCons...
- from SCons.Script.SConscript import SConsEnvironment
- SConsEnvironment.Ts5 = Ts5
- SConsEnvironment.Qm5 = Qm5
- SConsEnvironment.Qrc5 = Qrc5
- SConsEnvironment.ExplicitMoc5 = ExplicitMoc5
- SConsEnvironment.ExplicitUic5 = ExplicitUic5
-
- # Interface builder
- uic5builder = Builder(
- action = SCons.Action.Action('$QT5_UICCOM', '$QT5_UICCOMSTR'),
- src_suffix='$QT5_UISUFFIX',
- suffix='$QT5_UICDECLSUFFIX',
- prefix='$QT5_UICDECLPREFIX',
- single_source = True
- #TODO: Consider the uiscanner on new scons version
- )
- env['BUILDERS']['Uic5'] = uic5builder
-
- # Metaobject builder
- mocBld = Builder(action={}, prefix={}, suffix={})
- for h in header_extensions:
- act = SCons.Action.CommandGeneratorAction(__moc_generator_from_h, {'cmdstr':'$QT5_MOCCOMSTR'})
- mocBld.add_action(h, act)
- mocBld.prefix[h] = '$QT5_MOCHPREFIX'
- mocBld.suffix[h] = '$QT5_MOCHSUFFIX'
- for cxx in cxx_suffixes:
- act = SCons.Action.CommandGeneratorAction(__moc_generator_from_cxx, {'cmdstr':'$QT5_MOCCOMSTR'})
- mocBld.add_action(cxx, act)
- mocBld.prefix[cxx] = '$QT5_MOCCXXPREFIX'
- mocBld.suffix[cxx] = '$QT5_MOCCXXSUFFIX'
- env['BUILDERS']['Moc5'] = mocBld
-
- # Metaobject builder for the extended auto scan feature
- # (Strategy #1 for qtsolutions)
- xMocBld = Builder(action={}, prefix={}, suffix={})
- for h in header_extensions:
- act = SCons.Action.CommandGeneratorAction(__mocx_generator_from_h, {'cmdstr':'$QT5_MOCCOMSTR'})
- xMocBld.add_action(h, act)
- xMocBld.prefix[h] = '$QT5_XMOCHPREFIX'
- xMocBld.suffix[h] = '$QT5_XMOCHSUFFIX'
- for cxx in cxx_suffixes:
- act = SCons.Action.CommandGeneratorAction(__mocx_generator_from_cxx, {'cmdstr':'$QT5_MOCCOMSTR'})
- xMocBld.add_action(cxx, act)
- xMocBld.prefix[cxx] = '$QT5_XMOCCXXPREFIX'
- xMocBld.suffix[cxx] = '$QT5_XMOCCXXSUFFIX'
- env['BUILDERS']['XMoc5'] = xMocBld
-
- # Add the Qrc5 action to the CXX file builder (registers the
- # *.qrc extension with the Environment)
- cfile_builder, cxxfile_builder = SCons.Tool.createCFileBuilders(env)
- qrc_act = SCons.Action.CommandGeneratorAction(__qrc_generator, {'cmdstr':'$QT5_QRCCOMSTR'})
- cxxfile_builder.add_action('$QT5_QRCSUFFIX', qrc_act)
- cxxfile_builder.add_emitter('$QT5_QRCSUFFIX', __qrc_emitter)
-
- # We use the emitters of Program / StaticLibrary / SharedLibrary
- # to scan for moc'able files
- # We can't refer to the builders directly, we have to fetch them
- # as Environment attributes because that sets them up to be called
- # correctly later by our emitter.
- env.AppendUnique(PROGEMITTER =[AutomocStatic],
- SHLIBEMITTER=[AutomocShared],
- LIBEMITTER =[AutomocStatic],
- )
-
- # TODO: Does dbusxml2cpp need an adapter
- try:
- env.AddMethod(enable_modules, "EnableQt5Modules")
- except AttributeError:
- # Looks like we use a pre-0.98 version of SCons...
- from SCons.Script.SConscript import SConsEnvironment
- SConsEnvironment.EnableQt5Modules = enable_modules
-
-def enable_modules(self, modules, debug=False, crosscompiling=False, staticdeps=False) :
- validModules = [
- # Qt Essentials
- 'QtCore',
- 'QtGui',
- 'QtMultimedia',
- 'QtMultimediaQuick_p',
- 'QtMultimediaWidgets',
- 'QtNetwork',
- 'QtPlatformSupport',
- 'QtQml',
- 'QtQmlDevTools',
- 'QtQuick',
- 'QtQuickParticles',
- 'QtSql',
- 'QtQuickTest',
- 'QtTest',
- 'QtWebKit',
- 'QtWebKitWidgets',
- 'QtWidgets',
- # Qt Add-Ons
- 'QtAccessibilitySupport',
- 'QtConcurrent',
- 'QtDBus',
- 'QtEventDispatcherSupport',
- 'QtFontDatabaseSupport',
- 'QtOpenGL',
- 'QtPrintSupport',
- 'QtDeclarative',
- 'QtScript',
- 'QtScriptTools',
- 'QtSvg',
- 'QtThemeSupport',
- 'QtUiTools',
- 'QtWindowsUIAutomationSupport',
- 'QtXml',
- 'QtXmlPatterns',
- # Qt Tools
- 'QtHelp',
- 'QtDesigner',
- 'QtDesignerComponents',
- # Other
- 'QtCLucene',
- 'QtConcurrent',
- 'QtV8'
- ]
- pclessModules = [
- ]
- staticModules = [
- ]
- if sys.platform == "win32" and staticdeps :
- staticModules.extend(validModules)
- invalidModules=[]
- for module in modules:
- if module not in validModules :
- invalidModules.append(module)
- if invalidModules :
- raise Exception("Modules %s are not Qt5 modules. Valid Qt5 modules are: %s"% (
- str(invalidModules),str(validModules)))
-
- moduleDefines = {
- 'QtScript' : ['QT_SCRIPT_LIB'],
- 'QtSvg' : ['QT_SVG_LIB'],
- 'QtSql' : ['QT_SQL_LIB'],
- 'QtXml' : ['QT_XML_LIB'],
- 'QtOpenGL' : ['QT_OPENGL_LIB'],
- 'QtGui' : ['QT_GUI_LIB'],
- 'QtNetwork' : ['QT_NETWORK_LIB'],
- 'QtCore' : ['QT_CORE_LIB'],
- 'QtWidgets' : ['QT_WIDGETS_LIB'],
- }
- for module in modules :
- try : self.AppendUnique(CPPDEFINES=moduleDefines[module])
- except: pass
- debugSuffix = ''
- if (sys.platform.startswith("linux") or sys.platform.startswith("darwin") or
- sys.platform.find("bsd") >= 0) and not crosscompiling :
- if debug : debugSuffix = '_debug'
- # Call _find_qtdirs with QtCore to get at least one initialized for later usage with RPATH
- qt_dirs = _find_qtdirs("$QT5DIR","QtCore")
- for module in modules :
- if module not in pclessModules : continue
- qt_dirs = _find_qtdirs("$QT5DIR",module)
- self.AppendUnique(LIBS=[module.replace('Qt','Qt5')+debugSuffix])
- self.AppendUnique(LIBPATH=[qt_dirs[0]])
- self.AppendUnique(CPPPATH=[qt_dirs[1]])
- self.AppendUnique(CPPPATH=[qt_dirs[2]])
- pcmodules = [module.replace('Qt','Qt5')+debugSuffix for module in modules if module not in pclessModules ]
- if 'Qt5DBus' in pcmodules:
- self.AppendUnique(CPPPATH=[os.path.join(_find_qtdirs("$QT5DIR","Qt5DBus")[2])])
- if "Qt5Assistant" in pcmodules:
- self.AppendUnique(CPPPATH=[os.path.join(_find_qtdirs("$QT5DIR","Qt5Assistant")[2])])
- pcmodules.remove("Qt5Assistant")
- pcmodules.append("Qt5AssistantClient")
- if qt_dirs[0]:
- self.AppendUnique(RPATH=[qt_dirs[0]])
- self.ParseConfig('pkg-config %s --libs --cflags'% ' '.join(pcmodules))
- self["QT5_MOCCPPPATH"] = self["CPPPATH"]
- return
- if sys.platform == "win32" or crosscompiling :
- if crosscompiling:
- transformedQtdir = transformToWinePath(self['QT5DIR'])
- self['QT5_MOC'] = "QT5DIR=%s %s"%( transformedQtdir, self['QT5_MOC'])
- self.AppendUnique(CPPPATH=[os.path.join("$QT5DIR","include")])
- try: modules.remove("QtDBus")
- except: pass
- if debug : debugSuffix = 'd'
- if "QtAssistant" in modules:
- self.AppendUnique(CPPPATH=[os.path.join("$QT5DIR","include","QtAssistant")])
- modules.remove("QtAssistant")
- modules.append("QtAssistantClient")
- self.AppendUnique(LIBS=['qtmain'+debugSuffix])
- self.AppendUnique(LIBS=[lib.replace("Qt","Qt5")+debugSuffix for lib in modules if lib not in staticModules])
- self.PrependUnique(LIBS=[lib.replace("Qt", "Qt5")+debugSuffix for lib in modules if lib in staticModules])
- if 'QtOpenGL' in modules:
- self.AppendUnique(LIBS=['opengl32'])
- self.AppendUnique(CPPPATH=[ '$QT5DIR/include/'])
- self.AppendUnique(CPPPATH=[ '$QT5DIR/include/'+module for module in modules])
- if crosscompiling :
- self["QT5_MOCCPPPATH"] = [
- path.replace('$QT5DIR', transformedQtdir)
- for path in self['CPPPATH'] ]
- else :
- self["QT5_MOCCPPPATH"] = self["CPPPATH"]
- self.AppendUnique(LIBPATH=[os.path.join('$QT5DIR','lib')])
- return
-
- """
- if sys.platform=="darwin" :
- # TODO: Test debug version on Mac
- self.AppendUnique(LIBPATH=[os.path.join('$QT5DIR','lib')])
- self.AppendUnique(LINKFLAGS="-F$QT5DIR/lib")
- self.AppendUnique(LINKFLAGS="-L$QT5DIR/lib") #TODO clean!
- if debug : debugSuffix = 'd'
- for module in modules :
-# self.AppendUnique(CPPPATH=[os.path.join("$QT5DIR","include")])
-# self.AppendUnique(CPPPATH=[os.path.join("$QT5DIR","include",module)])
-# port qt5-mac:
- self.AppendUnique(CPPPATH=[os.path.join("$QT5DIR","include", "qt5")])
- self.AppendUnique(CPPPATH=[os.path.join("$QT5DIR","include", "qt5", module)])
- if module in staticModules :
- self.AppendUnique(LIBS=[module+debugSuffix]) # TODO: Add the debug suffix
- self.AppendUnique(LIBPATH=[os.path.join("$QT5DIR","lib")])
- else :
-# self.Append(LINKFLAGS=['-framework', module])
-# port qt5-mac:
- self.Append(LIBS=module)
- if 'QtOpenGL' in modules:
- self.AppendUnique(LINKFLAGS="-F/System/Library/Frameworks")
- self.Append(LINKFLAGS=['-framework', 'AGL']) #TODO ughly kludge to avoid quotes
- self.Append(LINKFLAGS=['-framework', 'OpenGL'])
- self["QT5_MOCCPPPATH"] = self["CPPPATH"]
- return
-# This should work for mac but doesn't
-# env.AppendUnique(FRAMEWORKPATH=[os.path.join(env['QT5DIR'],'lib')])
-# env.AppendUnique(FRAMEWORKS=['QtCore','QtGui','QtOpenGL', 'AGL'])
- """
-
-def exists(env):
- return _detect(env)
diff --git a/build/util.py b/build/util.py
deleted file mode 100644
index ce547688b22..00000000000
--- a/build/util.py
+++ /dev/null
@@ -1,229 +0,0 @@
-from SCons import Script
-import os
-import os.path
-import re
-import stat
-
-CURRENT_VCS = None
-
-
-def get_current_vcs():
- if CURRENT_VCS is not None:
- return CURRENT_VCS
- if on_git():
- return "git"
- return "tar"
-
-
-def on_git():
- cwd = os.getcwd()
- basename = " "
- while len(basename) > 0:
- try:
- os.stat(os.path.join(cwd, ".git"))
- return True
- except:
- pass
- cwd, basename = os.path.split(cwd)
- return False
-
-
-def get_revision():
- global CURRENT_VCS
- if CURRENT_VCS is None:
- CURRENT_VCS = get_current_vcs()
- if CURRENT_VCS == "git":
- return get_git_revision()
- if CURRENT_VCS == "tar":
- return ""
- return None
-
-
-def get_modified():
- global CURRENT_VCS
- if CURRENT_VCS is None:
- CURRENT_VCS = get_current_vcs()
- if CURRENT_VCS == "git":
- return get_git_modified()
- if CURRENT_VCS == "tar":
- return ""
- return None
-
-
-def get_branch_name():
- global CURRENT_VCS
- if CURRENT_VCS is None:
- CURRENT_VCS = get_current_vcs()
- if CURRENT_VCS == "git":
- return get_git_branch_name()
- if CURRENT_VCS == "tar":
- return ""
- return None
-
-
-def export_source(source, dest):
- global CURRENT_VCS
- if CURRENT_VCS is None:
- CURRENT_VCS = get_current_vcs()
- if CURRENT_VCS == "git":
- return export_git(source, dest)
- return None
-
-
-def get_git_revision():
- return os.popen("git rev-list HEAD --first-parent --count").read().strip()
-
-
-def get_git_modified():
- modified_matcher = re.compile(
- "^#.*: (?P.*?)$") # note output might be translated
- modified_files = []
- for line in os.popen("git status").read().splitlines():
- match = modified_matcher.match(line)
- if match:
- match = match.groupdict()
- modified_files.append(match['filename'].strip())
- return "\n".join(modified_files)
-
-
-def get_git_branch_name():
- # this returns the branch name or 'HEAD' in case of detached HEAD
- branch_name = os.popen(
- "git rev-parse --abbrev-ref HEAD").readline().strip()
- if branch_name == 'HEAD':
- # Use APPVEYOR_REPO_BRANCH variable if building on appveyor or (no branch) if unset
- branch_name = os.getenv("APPVEYOR_REPO_BRANCH", '(no branch)')
- # Add PR# to branch name if building a PR in appveyor to avoid package naming collision
- PRnum = os.getenv("APPVEYOR_PULL_REQUEST_NUMBER")
- if PRnum != None:
- branch_name += ("-PR" + PRnum)
- return branch_name
-
-
-def export_git(source, dest):
- os.mkdir(dest)
- return os.system('git archive --format tar HEAD %s | tar x -C %s' % (source, dest))
-
-
-def get_build_dir(platformString, bitwidth):
- build_dir = '%s%s_build' % (platformString[0:3], bitwidth)
- return build_dir
-
-
-def get_mixxx_version():
- """Get Mixxx version number from defs_version.h"""
- # have to handle out-of-tree building, that's why the '#' :(
- defs = Script.File('#src/_version.h')
- version = ""
-
- for line in open(str(defs)).readlines():
- if line.strip().startswith("#define MIXXX_VERSION "):
- version = line
- break
-
- if version == "":
- raise ValueError("Version not found")
-
- version = version.split()[-1].replace('"', '')
-
- # Check if version respect constraints
- # 3 numbers separated by a dot, then maybe a (dash or tilde) and some string
- # See src/defs_version.h comment
- versionMask = '^\d+\.\d+\.\d+([-~].+)?$'
- if not re.match(versionMask, version):
- raise ValueError("Version format mismatch. See src/defs_version.h comment")
-
- return version
-
-
-def get_flags(env, argflag, default=0):
- """
- * get value passed as an argument to scons as argflag=value
- * if no value is passed to scons use stored value
- * if no value is stored, use default
- Returns the value and stores it in env[argflag]
- """
- flags = Script.ARGUMENTS.get(argflag, -1)
- if int(flags) < 0:
- if argflag in env:
- flags = env[argflag]
- else: # default value
- flags = default
- env[argflag] = flags
- return flags
-
-
-# Checks for pkg-config on Linux
-def CheckForPKGConfig(context, version='0.0.0'):
- context.Message(
- "Checking for pkg-config (at least version %s)... " % version)
- ret = context.TryAction(
- "pkg-config --atleast-pkgconfig-version=%s" % version)[0]
- context.Result(ret)
- return ret
-
-
-# Uses pkg-config to check for a minimum version
-def CheckForPKG(context, name, version=""):
- if version == "":
- context.Message("Checking for %s... \t" % name)
- ret = context.TryAction("pkg-config --exists '%s'" % name)[0]
- else:
- context.Message(
- "Checking for %s (%s or higher)... \t" % (name, version))
- ret = context.TryAction(
- "pkg-config --atleast-version=%s '%s'" % (version, name))[0]
- context.Result(ret)
- return ret
-
-
-def write_build_header(path):
- f = open(path, 'w')
- try:
- branch_name = get_branch_name()
- modified = len(get_modified()) > 0
- # Do not emit BUILD_BRANCH on release branches.
- if branch_name and not branch_name.startswith('release'):
- f.write('#define BUILD_BRANCH "%s"\n' % branch_name)
- f.write('#define BUILD_REV "%s%s"\n' % (get_revision(),
- '+' if modified else ''))
- finally:
- f.close()
- os.chmod(path, stat.S_IRWXU | stat.S_IRWXG |stat.S_IRWXO)
-
-def get_osx_min_version():
- """Gets the minimum required OS X version from product_definition.plist."""
- # Mixxx 2.0 supported OS X 10.6 and up.
- # Mixxx >2.0 requires C++11 which is only available with libc++ and OS X
- # 10.7 onwards. std::promise/std::future requires OS X 10.8.
- # Mixxx >2.2 switched to Qt 5, which requires macOS 10.11.
- # Use SCons to get the path relative to the repository root.
- product_definition = str(Script.File('#build/osx/product_definition.plist'))
- p = os.popen("/usr/libexec/PlistBuddy -c 'Print os:0' %s" % product_definition)
- min_version = p.readline().strip()
- result_code = p.close()
- assert result_code is None, "Can't read macOS min version: %s" % min_version
- return min_version
-
-
-def find_d3dcompiler_dll(env):
- """Returns the path to d3dcompiler_xx.dll for bundling with Mixxx."""
- # On our Windows 7 build environment, d3dcompiler_xx.dll lives next to our
- # cl.exe for MSVC 14.0.
- #
- # https://code.woboq.org/qt5/qttools/src/shared/winutils/utils.cpp.html#924
- # windeployqt checks for d3dcompiler_xx.dll in:
- #
- # - The %SDK%/redist/D3D folder (Windows 8 SDK and above).
- # - The Qt SDK bin folder (Not present for our builds of Qt).
- # - The first folder in the %PATH% containing a file matching the pattern.
- #
- # Since we currently use the Windows 7 SDK, and the Qt SDK folder does not
- # have this DLL, let's search the path.
- paths = env['ENV']['PATH'].split(';')
- for path in paths:
- for version in range(47, 40, -1):
- dll_path = os.path.join(path, 'd3dcompiler_%d.dll' % version)
- if os.path.exists(dll_path):
- return dll_path
- return None
diff --git a/build/windows/__init__.py b/build/windows/__init__.py
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/build/windows/install_buildenv.bat b/build/windows/install_buildenv.bat
deleted file mode 100644
index c9467875c09..00000000000
--- a/build/windows/install_buildenv.bat
+++ /dev/null
@@ -1,89 +0,0 @@
-@ECHO OFF
-SETLOCAL enableDelayedExpansion
-
-REM Base URL to download winlibs from.
-SET BASEURL=%1
-
-REM The winlib name to install.
-SET WINLIB_NAME=%2
-
-REM The local directory to cache build environments in.
-SET WINLIBS_PATH=%3
-
-IF EXIST "%WINLIBS_PATH%\%WINLIB_NAME%" (
- echo %WINLIB_NAME% already exists at %WINLIBS_PATH%
- REM TODO(XXX) check fingerprint on build environment?
- ENDLOCAL && EXIT /B 0
-)
-
-REM Install build env base dir
-IF NOT EXIST "%WINLIBS_PATH%" MKDIR "%WINLIBS_PATH%"
-
-where /q 7za
-IF ERRORLEVEL 1 (
- where /q 7z
- IF ERRORLEVEL 1 (
- REM In case it is not present in PATH
- IF EXIST "%PROGRAMFILES%\7-zip\7z.exe" (
- set "ZIP=%PROGRAMFILES%\7-zip\7z.exe"
- ) else (
- call :get_powershell_version
- IF !POWERSHELL! LSS 5 (
- echo Could not find 7z or 7za on the path, and cannot use powershell ^(version !POWERSHELL!^)
- echo Either install http://7-zip.org ^(and add it to the PATH^) and retry
- echo or download %BASEURL%/%WINLIB_NAME%.zip
- echo yourself and unzip it at %WINLIBS_PATH%
- ENDLOCAL && EXIT /b 1
- )
- )
- ) else (
- set ZIP=7z
- )
-) else (
- set ZIP=7za
-)
-
-echo Installing winlib %WINLIB_NAME%.
-CD "%WINLIBS_PATH%"
-echo ..Downloading %WINLIB_NAME%.zip
-where /q curl
-IF ERRORLEVEL 1 (
- call :get_powershell_version
- IF !POWERSHELL! LSS 3 (
- echo curl not found and cannot use powershell ^(version !POWERSHELL!^)
- echo Please download %WINLIB_NAME%.zip
- echo from %BASEURL%/
- echo and unzip it yourself at %WINLIBS_PATH%
- ENDLOCAL && EXIT /b 1
- ) else (
- powershell -Command "& {Invoke-WebRequest -Uri %BASEURL%/%WINLIB_NAME%.zip -OutFile \"%WINLIBS_PATH%/%WINLIB_NAME%.zip\"}"
- IF ERRORLEVEL 1 ENDLOCAL && EXIT /b 1
- )
-) else (
- curl -fsS -L -o %WINLIB_NAME%.zip %BASEURL%/%WINLIB_NAME%.zip
- IF ERRORLEVEL 1 ENDLOCAL && EXIT /b 1
-)
-REM TODO(XXX) check fingerprint on zip file.
-
-echo ..unzipping %WINLIB_NAME%.zip
-IF "!ZIP!" NEQ "" (
- "!ZIP!" x %WINLIB_NAME%.zip
- IF ERRORLEVEL 1 ENDLOCAL && EXIT /b 1
-) ELSE (
- powershell -Command "& {Expand-Archive \"%WINLIBS_PATH%/%WINLIB_NAME%.zip\" \"%WINLIBS_PATH%\\\"}"
- IF ERRORLEVEL 1 ENDLOCAL && EXIT /b 1
-)
-DEL %WINLIB_NAME%.zip
-
-ENDLOCAL
-EXIT /B 0
-
-:get_powershell_version
- where /q powershell
- if ERRORLEVEL 1 (
- set POWERSHELL=0
- ) else (
- REM DETECT powershell major version
- FOR /F "tokens=* USEBACKQ" %%F IN (`powershell -Command "& {$PSVersionTable.PSVersion.Major}"`) DO ( set POWERSHELL=%%F )
- )
-EXIT /B 1
diff --git a/build/windows/signtool.py b/build/windows/signtool.py
deleted file mode 100644
index d62836171a7..00000000000
--- a/build/windows/signtool.py
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/usr/bin/env python
-
-import os
-from SCons.Builder import Builder
-
-def signtool_path(subject_name, path):
- print("Running signtool: ", path)
- command = "signtool sign /sm /n \"%s\" /v %s" % (subject_name, path)
- if os.system(command) != 0:
- raise Exception('signtool failed: ' + command)
-
-def do_signtool(target, source, env):
- print('do_signtool', target, source, env)
- subject_name = env.get('SUBJECT_NAME', '')
-
- for s in source:
- path = str(s)
- if path.endswith('.exe') or path.endswith('.dll'):
- signtool_path(subject_name, path)
-
-SignTool = Builder(action = do_signtool)
-
-def generate(env):
- env['BUILDERS']['SignTool'] = SignTool
-
-def exists(env):
- return os.platform == 'windows'
diff --git a/build/wix/Localization/README-Translations.md b/build/wix/Localization/README-Translations.md
deleted file mode 100644
index 78a6d5b7fc7..00000000000
--- a/build/wix/Localization/README-Translations.md
+++ /dev/null
@@ -1,66 +0,0 @@
-
-Transifex doesn't handle wxl files.
-So we convert the english one to a pot file and convert back the translated po files to wxl using
-https://github.com/sblaisot/wxl-po-tools
-
-Adding strings and Updating source pot
-======================================
-
-* Add strings to mixxx_en-us.wxl
-* Update translation source .pot file
-`build/wix/Localization$ /path/to/wxl2pot.py -l Language mixxx_en-us.wxl po/mixxx.pot`
-* push new strings to transifex
-```
-$ tx push -s -r mixxxdj-windows-installer.mixxxpot
-Pushing translations for resource mixxxdj-windows-installer.mixxxpot:
-Pushing source file (build/wix/Localization/po/mixxx.pot)
-Done.
-```
-* Update all translations to include the new strings (see next paragraph)
-
-
-Updating translations from Transifex
-======================================
-
-First, pull new translations from Transifex
-
-`$ tx pull -r mixxxdj-windows-installer.mixxxpot -a --minimum-perc=1`
-
-Then, rebuild wxl files from po files
-
-```
-$ cd build/wix/Localization
-build/wix/Localization$ for i in po/*.po; do destfile=${i#po/}; /path/to/po2wxl.py -l Language -f -p 1 $i mixxx_${destfile%.po}.wxl; done
-```
-
-Explanations for the above line :
-For each po file in the po subdirectory, call po2wxl to transform it to wxl file with the following options :
-* `-l Language` add a string with Id Language containing the auto-determined LCID
-* `-f` Overwrite the wxl file if it already exists
-* `-p 60` don't transform po files if less than 60% of strings are translated
-
-NOTES
-=====
-
-Adding new languages
---------------------
-
-You can't add new languages from Transifex that are not in wix toolset translation, or package generation will not work.
-List of available (base) translations of wixUI is here: http://wixtoolset.org/documentation/manual/v3/wixui/wixui_localization.html
-
-Bad characters
---------------
-
-Sometimes, you can face the following error message after pulling translations from Transifex:
-
-```path\to\mixxx\build\wix\mixxx.wxs(67) : error LGHT0311 : A string was provided with characters that are not available in the specified database code page '1250'. Either change these characters to ones that exist in the database's code page, or update the database's code page by modifying one of the following attributes: Product/@Codepage, Module/@Codepage, Patch/@Codepage, PatchCreation/@Codepage, or WixLocalization/@Codepage.```
-
-This is because a translation you pulled contain a character that is not part of the default codepage used by wix for that language. This happens sometimes with UTF-8 encoded translations from Transifex.
-In this case, you need to replace the UTF-8 or UTF-16 char in the translation with the equivalent char in the codepage.
-
-This has happened in the past for the ro-RO language and the following characters:
-
-| faulty char (error) | replacement (OK) |
-|:---:|:--:|
-| ț | ţ |
-| ș | ş |
diff --git a/build/wix/Localization/mixxx_ca-ES.wxl b/build/wix/Localization/mixxx_ca-ES.wxl
deleted file mode 100644
index 94195cb30fe..00000000000
--- a/build/wix/Localization/mixxx_ca-ES.wxl
+++ /dev/null
@@ -1,104 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- 1027
-
-
-
- Mixxx
- Mixxx
- L'equip de desenvolupadors del Mixxx
- Programari de DJ digital de codi obert
-
-
-
-
- Aquesta aplicació requereix Windows 7 o una versió més recent.
- Ja teniu instal·lada aquesta versió del Mixxx o una més recent.
- Heu d'instal·lar la versió de 64 bits d'aquest producte en un Windows de 64 bits.
- Heu d'instal·lar la versió de 32 bits d'aquest producte en un Windows de 32 bits.
- Esteu a punt d'instal·lar la versió de 32 bits en un sistema operatiu de 64 bits. Recomanem utilitzar la versió de 64 bits per a un millor rendiment. Podeu baixar l'instal·lador de la versió de 64 bits des de http://mixxx.org/download/
- Esteu instal·lant el Mixxx en un sistema operatiu obsolet. Algunes funcionalitats poden no funcionar correctament. Recomanem actualitzar el sistema operatiu.
- Esteu a punt d'instal·lar la versió de 32 bits tot i que teniu instal·lada una versió de 64 bits. Això pot provocar un comportament no desitjat. Desinstal·leu primer la versió existent del Mixxx o baixeu l'instal·lador de 64 bits per actualitzar la versió (a no ser que sapigueu exactament què esteu fent).
- Esteu a punt d'instal·lar la versió de 64 bits tot i que teniu instal·lada una versió de 32 bits. Això pot provocar un comportament no desitjat. Desinstal·leu primer la versió existent del Mixxx o baixeu l'instal·lador de 32 bits per a actualitzar la versió (a no ser que sapigueu exactament què esteu fent).
- S'ha detectat una versió anterior del Mixxx. Atès la limitació de l'instal·lador, no és possible actualitzar automàticament. Desinstal·leu la versió existent abans d'instal·lar aquesta versió.
- L'instal·lador no ha trobat les llibreries de Microsoft Visual C++ 2015 en aquest ordinador. Probablement es tracta d'un error de l'instal·lador que hauríeu de reportar als desenvolupadors del Mixxx.
-
-
- {\WixUI_Font_Title}Avís
-
-
- Inicia el Mixxx en acabar la instal·lació.
-
-
- El paquet complet.
- L'aplicació.
- L'aplicació Mixxx incloent les configuracions per defecte de diversos controladors.
- Fitxers PDB de depuració
- Instal·la els fitxers PDB del Mixxx per utilitzar-los amb un depurador. Això és útil per depurar el Mixxx i poder enviar traces entenedores a l'equip de desenvolupadors.
- Crea una icona a l'escriptori
- Afegeix un accés directe al Mixxx a l'escriptori
- Manual d'usuari
- El Manual d'usuari del Mixxx en format PDF i disponible a http://mixxx.org/manual/
- Traduccions
- Fitxers de recursos addicionals que permeten mostrar el Mixxx en idiomes alternatius a l'anglès.
-
-
- [WixBundleName] Configuració
- [WixBundleName]
- Confirmeu que voleu cancel·lar?
- Versió prèvia
-
- /install | /repair | /uninstall | /layout [directory] - instal·la, repara, desinstal·la or
genera una copia completa en el directori indicat.
La opció per defectes és instal·la.
/passive | /quiet - mostra una interfície mínima sense preguntes, o bé no mostra ni pregunta res.
Per defecte, es mostra la interfície i es demana confirmació.
/norestart - descarta els intents de reiniciar per part de l'instal·lador. Per defecte, es demana a l'usuari si vol reiniciar.
/log log.txt - Escriu el log de la instal·lació en el fitxer indicat. Per defecte es crea en el directori %TEMP%.
- &Tanca
-
- Aquesta aplicació instal·larà el Mixxx en el vostre ordinador.
Primer instal·larà les llibreries de tercers necessaries, i després el Mixxx.
Feu clic a Instal·la per continuar o Tanca per sortir.
- Versió [WixBundleVersion]
- &Opcions
- &Instal·la
- &Tanca
-
- Carpeta de destinació:
- &Navega
- &Accepta
- &Cancel·la
-
- Les següents aplicacions estan utilitzant fitxers que cal actualitzar:
- Tanca les &aplicacions i intenta reiniciar-les després.
- &No tanquis les aplicacions. Serà necessari reiniciar.
- Accepta
- &Cancel·la
-
- Processant:
- Inicialitzant...
- &Cancel·la
-
- &Repara
- &Desinstal·la
- &Tanca
-
-
-
-
- &Inicia
- Heu de reiniciar l'ordinador abans de poder utilitzar l'aplicació.
- &Reinicia
- &Tanca
-
-
-
-
- Hi ha hagut un o més problemes durant la instal·lació. Si us plau, corregiu-los i intenteu-ho de nou. Per a més informació consulteu el <a href="#">fitxer de log</a>.
- Heu de reiniciar l'ordinador per acabar de restaurar el sistema a abans de la instal·lació.
- &Reinicia
- &Tanca
-
diff --git a/build/wix/Localization/mixxx_cs-CZ.wxl b/build/wix/Localization/mixxx_cs-CZ.wxl
deleted file mode 100644
index 2b1e3f4e4fd..00000000000
--- a/build/wix/Localization/mixxx_cs-CZ.wxl
+++ /dev/null
@@ -1,104 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- 1029
-
-
-
- Mixxx
- Mixxx
- Vývojáři Mixxxu
- Program s otevřeným zdrojovým kódem pro diskžokeje
-
-
-
-
- Tento výrobek vyžaduje Windows 7 nebo vyšší.
- Již je nainstalována stejná nebo novější verze tohoto výrobku.
- Do 64bitových Windows musíte nainstalovat 64bitovou verzi tohoto výrobku.
- Do 32bitových Windows musíte nainstalovat 32bitovou verzi tohoto výrobku.
- Chystáte se nainstalovat 32bitovou verzi do 64bitového operačního systému. Doporučujeme použít 64bitovou verzi kvůli lepšímu výkonu. Instalační balíček pro 64bitový systém můžete stáhnout z http://mixxx.org/download/
- Instalujete Mixxx do zastaralého operačního systému. Některé funkce nemusí pracovat dobře, nebo nebudou pracovat vůbec. Doporučujeme vám povýšení operačního sytému.
- Chystáte se nainstalovat 32bitovou verzi, ale již je nainstalována 64bitová verze.
To může vést k neobvyklému chování. Odinstalujte, prosím, nejprve stávající verzi Mixxxu, nebo pro povýšení verze stáhněte instalační balíček pro 64bitový systém (pokud přesně nevíte, co děláte).
- Chystáte se nainstalovat 64bitovou verzi, ale již je nainstalována 32bitová verze.
To může vést k neobvyklému chování. Odinstalujte, prosím, nejprve stávající verzi Mixxxu, nebo pro povýšení verze stáhněte instalační balíček pro 32bitový systém (pokud přesně nevíte, co děláte).
- Byla zjištěna starší verze Mixxxu. Protože byl změněn instalátor, není možné povýšení provést hladce. Odinstalujte, prosím, starší verzi, předtím než začnete instalovat tuto.
- Installer was not able to find Microsoft Visual C++ 2015 Redistributable on this system. This is likely an installer bug that should be reported to Mixxx developers.
-
-
- {\WixUI_Font_Title}Varování
-
-
- Spustit Mixxx, když existuje nastavení.
-
-
- Úplný balíček.
- Hlavní aplikace
- Hlavní aplikace Mixxxu včetně přednastavení ovladačů.
- Soubory ladění PDB
- Nainstalujte soubory PDB Mixxxu k použití s ladičem. Toto je užitečné na ladění Mixxxu a poskytuje vývojářskému družstvu čitelné stopy.
- Klávesová zkratka
- Přidat klávesovou zkratku pro Mixxx na pracovní plochu
- Uživatelská příručka
- Uživatelská příručka Mixxxu v podobě PDF, dostupná též na http://mixxx.org/manual/
- Překlady
- Zdrojové soubory, které Mixxx umožní provedení instalace Mixxxu v jiných jazycích, než je americká angličtina
-
-
- [wixBundleName]Instalace
- [WixBundleName]
- Chcete opravdu ukončit instalaci ?
- Předchozí verze
-
- /install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or
creates a complete local copy of the bundle in directory.
Install is the default.
/passive | /quiet - displays minimal user interface with no prompts or displays no user interface
and no prompts. By default user interface and all prompts are displayed.
/norestart - suppress any attempts to restart. By default user interface will prompt before restart.
/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.
- Zavřít.
-
- Mixx bude nainstalován na váš počítač.
Nejprve nainstaluje požadované knihovny, potom samotní Mixx.
Kliknete Instalovat pro pokračování nebo Zavřít pro ukončení.
- Verze [WixBundleVersion]
- Možnosti
- Instalovat
- Ukončit
-
- Umístnení instalace
- Prohledávat
- OK
- Ukončit
-
- Tyto aplikace používají soubory, které je třeba aktualizovat:
- Zavřít aplikace a pokusit se je restartovat.
- Nezavírejte tyto aplikace. Požaduje se restart.
- OK
- Ukončit
-
- Spracováva se:
- Načítávam...
- Ukončit
-
- Opravit
- Odinstalovat
- Ukončit
-
-
-
-
- Spustit
- Prosím restartujte počítač pro bezchybný chod softwaru.
- Restartovat
- Ukončit
-
-
-
-
- One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the <a href="#">log file</a>.
- Je potřebné restartovat počítač pro dokončení vrácení instalace.
- Restartovat
- Ukončit
-
diff --git a/build/wix/Localization/mixxx_de-DE.wxl b/build/wix/Localization/mixxx_de-DE.wxl
deleted file mode 100644
index 15623815de7..00000000000
--- a/build/wix/Localization/mixxx_de-DE.wxl
+++ /dev/null
@@ -1,104 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- 1031
-
-
-
- Mixxx
- Mixxx
- Das Mixxx-Entwicklungsteam
- Open-Source Digital DJ-Software
-
-
-
-
- Dieses Produkt erfordert Windows 7 oder höher.
- Die gleiche oder eine neuere Version dieses Produkts ist bereits installiert.
- Sie müssen die 64-Bit-Version dieses Produkts auf 64-Bit-Windows installieren.
- Sie müssen die 32-Bit-Version dieses Produkts auf 32-Bit-Windows installieren.
- Sie installieren gerade die 32-Bit-Version auf einem 64-Bit-Betriebssystem. Wir empfehlen stattdessen die 64-Bit-Version für eine bessere Performance zu installieren. Sie können das 64-Bit-Installationspaket hier herunterladen: http://mixxx.org/download/
- Sie installieren Mixxx auf einem veralteten Betriebssystem. Einige Funktionen arbeiten möglicherweise nicht korrekt oder überhaupt nicht. Wir empfehlen die Aktualisierung Ihres Betriebssystems.
- Sie sind dabei, die 32-Bit-Version zu installieren, aber eine 64-Bit-Version ist bereits installiert. Dies kann zu unerwünschtem Verhalten führen. Bitte deinstallieren Sie zuerst die vorhandene Mixxx Version oder laden Sie das 64-Bit-Installationspaket zum Aktualisieren (es sei denn, Sie wissen genau was Sie tun.)
- Sie sind dabei, die 64-Bit-Version zu installieren, aber eine 32-Bit-Version ist bereits installiert. Dies kann zu unerwünschtem Verhalten führen. Bitte deinstallieren Sie zuerst die vorhandene Mixxx Version oder laden Sie das 32-Bit-Installationspaket zum Aktualisieren (es sei denn, Sie wissen genau was Sie tun.)
- Eine ältere Version von Mixxx wurde erkannt. Da wir die Installer-Software geändert haben, können wir nicht problemlos aktualisieren. Bitte deinstallieren Sie die ältere Version vor der Installation dieser neuen Version.
- Das Installationsprogramm war nicht in der Lage Microsoft Visual C ++ 2015 Redistributable auf diesem System zu finden. Dies ist wahrscheinlich ein Bug des Installationsprogramms, der an Mixxx-Entwickler gemeldet werden sollte.
-
-
- {\WixUI_Font_Title}Warnung
-
-
- Mixxx starten wenn das Setup abgeschlossen ist.
-
-
- Das Komplettpaket.
- Kernanwendung
- Die Mixxx Kernanwendung einschließlich Controller-Voreinstellungen.
- PDB-Debug-Dateien
- Installiere Mixxx PDB-Dateien für die Verwendung mit einem Debugger. Dies ist nützlich, um Mixxx zu debuggen und dem Entwicklungsteam lesbare Backtraces zur Verfügung zu stellen.
- Desktop-Verknüpfung
- Auf Ihrem Desktop eine Verknüpfung zu Mixxx hinzufügen
- Benutzerhandbuch
- Das Mixxx Benutzerhandbuch im PDF-Format, auch verfügbar auf http://mixxx.org/manual/
- Übersetzungen
- Ressource-Dateien um Mixxx außer in US-Englisch in alternativen Sprachen anzeigen lassen
-
-
- [WixBundleName] Setup
- [WixBundleName]
- Sind Sie sicher, dass Sie abbrechen möchten?
- Vorherige Version
-
- /install | /repair | /uninstall | /layout [Verzeichnis] - Installiert, repariert, deinstalliert
oder erstellt eine komplette lokale Kopie des Pakets im Verzeichnis
Installation ist die Standardeinstellung.
/passive | /quiet - Zeigt minimale Benutzeroberfläche ohne Eingabeaufforderungen an oder
zeigt keine Benutzeroberfläche und keine Eingabeaufforderungen. Standardmäßig werden Benutzeroberfläche und alle Eingabeaufforderungen angezeigt.
/norestart - Unterdrückt Versuche neu zu starten. Standardmäßig wird die Benutzeroberfläche zum Neustart auffordern.
/log log.txt - Protokolliert in eine bestimmte Datei. Standardmäßig wird eine Protokolldatei in % TEMP% erstellt.
- &Schließen
-
- Setup installiert Mixxx auf Ihrem Computer.
Es wird zuerst benötigte Drittanbieter-Bibliotheken, dann Mixxx selbst installieren
Klicken Sie auf Installieren um fortzufahren, oder auf Schliessen um zu beenden.
- Version [WixBundleVersion]
- &Optionen
- &Installieren
- &Schließen
-
- Installationsverzeichnis:
- &Durchsuchen
- &OK
- &Abbrechen
-
- Die folgenden Anwendungen verwenden Dateien, die aktualisiert werden müssen:
- Die &Anwendungen schliessen, und versuchen sie neu zu starten.
- &Schließe keine Anwendungen. Ein Neustart ist erforderlich.
- &OK
- &Abbrechen
-
- Wird bearbeitet:
- Initialisiere...
- &Abbrechen
-
- &Reparieren
- &Deinstallieren
- &Schließen
-
-
-
-
- &Start
- Sie müssen Ihren Computer neu starten, bevor Sie die Software verwenden können.
- &Neustart
- &Schließen
-
-
-
-
- Wegen einem oder mehrerer Probleme ist das Setup fehlgeschlagen. Bitte beheben Sie die Probleme und wiederholen das Setup. Weitere Informationen finden Sie in der <a href="#">Protokolldatei</a>.
- Sie müssen Ihren Computer neu starten, um die Zurücknahme der Softwareinstallation abzuschliessen.
- &Neustart
- &Schließen
-
diff --git a/build/wix/Localization/mixxx_en-us.wxl b/build/wix/Localization/mixxx_en-us.wxl
deleted file mode 100644
index 3e93fa790e1..00000000000
--- a/build/wix/Localization/mixxx_en-us.wxl
+++ /dev/null
@@ -1,108 +0,0 @@
-
-
-
- 1033
-
-
- Mixxx
- Mixxx
- The Mixxx Development Team
- Open-source Digital DJ software
-
-
-
-
- This product requires Windows 7 or above.
- The same or a newer version of this product is already installed.
- You need to install the 64-bit version of this product on 64-bit Windows.
- You need to install the 32-bit version of this product on 32-bit Windows.
- You are about to install the 32-bit version on a 64-bit operating system. We recommend using the 64-bit version for better performance. You can download the 64-bit installation package from http://mixxx.org/download/
- You are installing Mixxx on an outdated operating system. Some functions may not work well or at all. We recommend upgrading your operating system.
- You are about to install the 32-bit version but a 64-bit one is already installed. This can lead to undesired behavior. Please un-install the existing Mixxx first, or download the 64-bit installation package to upgrade (unless you know exactly what you are doing.)
- You are about to install the 64-bit version but a 32-bit one is already installed. This can lead to undesired behavior. Please un-install the existing Mixxx first, or download the 32-bit installation package to upgrade (unless you know exactly what you are doing.)
- An older version of Mixxx has been detected. As we changed installer, we can not smoothly upgrade. Please uninstall older version before installing this one.
- Installer was not able to find Microsoft Visual C++ 2015 Redistributable on this system. This is likely an installer bug that should be reported to Mixxx developers.
-
-
- {\WixUI_Font_Title}Warning
-
-
- Launch Mixxx when setup exits.
-
-
- The complete package.
- Core application
- The core Mixxx application including controller presets.
- PDB debug files
- Install Mixxx PDB files to use with a debugger. This is useful to debug Mixxx and provide readable backtraces to the development team.
- Desktop Shortcut
- Add a shortcut to Mixxx on your desktop
- User Manual
- The Mixxx user manual in PDF form, also available at http://mixxx.org/manual/
- Translations
- Resource files that allow Mixxx to display in alternate languages, other than US english
-
-
- [WixBundleName] Setup
- [WixBundleName]
- Are you sure you want to cancel?
- Previous version
-
- /install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or
- creates a complete local copy of the bundle in directory.
- Install is the default.
-
- /passive | /quiet - displays minimal user interface with no prompts or displays no user interface
- and no prompts. By default user interface and all prompts are displayed.
-
- /norestart - suppress any attempts to restart. By default user interface will prompt before restart.
-
- /log log.txt - logs to a specific file. By default a log file is created in %TEMP%.
- &Close
-
- Setup will install Mixxx on your computer.
-It will first install required third party libraries, then Mixxx itself.
-Click Install to continue or Close to exit.
- Version [WixBundleVersion]
- &Options
- &Install
- &Close
-
- Install location:
- &Browse
- &OK
- &Cancel
-
- The following applications are using files that need to be updated:
- Close the &applications and attempt to restart them.
- &Do not close applications. A reboot will be required.
- &OK
- &Cancel
-
- Processing:
- Initializing...
- &Cancel
-
- &Repair
- &Uninstall
- &Close
-
-
-
-
- &Launch
- You must restart your computer before you can use the software.
- &Restart
- &Close
-
-
-
-
- One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the <a href="#">log file</a>.
- You must restart your computer to complete the rollback of the software.
- &Restart
- &Close
-
diff --git a/build/wix/Localization/mixxx_es-ES.wxl b/build/wix/Localization/mixxx_es-ES.wxl
deleted file mode 100644
index 2b598f6eee2..00000000000
--- a/build/wix/Localization/mixxx_es-ES.wxl
+++ /dev/null
@@ -1,104 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- 1034
-
-
-
- Mixxx
- Mixxx
- El Equipo de Desarrollo de Mixxx
- Software de DJ digital de código abierto
-
-
-
-
- Este producto requiere Windows 7 o superior.
- La misma versión o una más reciente de este producto está ya instalada.
- Necesita instalar la versión de 64 bits de este producto en una versión de Windows de 64 bits.
- Necesita instalar la versión de 32 bits de este producto en una versión de Windows de 32 bits.
- Está a punto de instalar la versión de 32 bits en un sistema operativo de 64 bits. Recomendamos utilizar la versión de 64 bits para un mejor rendimiento. Puede descargar el paquete de instalación de 64 bits desde http://mixxx.org/download/
- Está instalando Mixxx en un sistema operativo obsoleto. Algunas funciones pueden no funcionar correctamente. Recomendamos actualizar su sistema operativo.
- Está a punto de instalar la versión de 32 bits pero la versión de 64 bits está instalada. Esto puede llevar a un comportamiento indeseado del programa. Por favor, desinstale primero la versión existente, o descargue el instalador de 64 bits (a no ser que sepa exactamente lo que está haciendo).
- Está a punto de instalar la versión de 64 bits pero la versión de 32 bits está instalada. Esto puede llevar a un comportamiento indeseado del programa. Por favor, desinstale primero la versión existente, o descargue el instalador de 32 bits (a no ser que sepa exactamente lo que está haciendo).
- Una versión anterior de Mixxx ha sido detectada. Dado que hemos cambiado de instalador, no podemos hacer una actualización limpia. Por favor, desinstale la versión anterior antes de instalar esta.
- La instalación no ha podido encontrar las librerías de Microsoft Visual C++ 2015 en el sistema. Es posible que se trate de un error del instalador que debería ser reportado a los desarrolladores de Mixxx.
-
-
- {\WixUI_Font_Title}Advertencia
-
-
- Ejecutar Mixxx una vez termine la instalación.
-
-
- El paquete completo.
- El núcleo de la aplicación.
- El núcleo de la aplicación, incluyendo las plantillas para los controladores.
- Ficheros PDB de depuración
- Instalar los ficheros PDB de Mixxx para uso con un depurador. Esto es útil para depurar Mixxx y enviar trazas de error comprensibles al equipo de desarrollo.
- Acceso Directo
- Añadir un acceso directo a Mixxx en su escritorio
- Manual de Usuario
- El manual de usuario en formato PDF, también disponible en http://mixxx.org/manual/
- Traducciones
- Archivos de recursos que permiten la visualización de Mixxx en otros idiomas aparte del Inglés americano
-
-
- Instalador de [WixBundleName]
- [WixBundleName]
- ¿Seguro que quiere cancelar la instalación?
- Versión anterior
-
- /install | /repair | /uninstall | /layout [directory] - instala, repara, desinstala o
genera una copia local en el directorio indicado.
La opción por defecte es instalar.
/passive | /quiet - muestra una interfaz mínima sin preguntas, o bien no muestra ni pregunta nada.
Por defecto se muestra la interfaz y se pide confirmación.
/norestart - descarta el reinicio del ordenador. Por defecto la interfaz pregunta al usuario si quiere reiniciar.
/log log.txt - Escribe el log de instalación en el fichero indicado. Por defecto, el log se escribe en el directorio %TEMP%.
- &Cerrar
-
- La aplicación instalará Mixxx en su ordenador.
Primero instalará las librerías de terceros necesarias, y luego Mixxx.
Pulse Instalar para continuar o Cerrar para salir.
- Versión [WixBundleVersion]
- &Opciones
- &Instalar
- &Cerrar
-
- Directorio de destino:
- &Examinar
- &Aceptar
- &Cancelar
-
- Las siguientes aplicaciones usan ficheros que necesitan ser actualizados:
- Cierra las &aplicaciones e intenta reiniciarlas después.
- &Deja las aplicaciones en ejecución. Será necesario reiniciar.
- &Aceptar
- &Cancelar
-
- Procesando:
- Inicializando...
- &Cancelar
-
- &Reparar
- &Desinstalar
- &Cerrar
-
-
-
-
- &Ejecutar
- Es necesario reiniciar el ordenador antes de usar la aplicación.
- &Reiniciar
- &Cerrar
-
-
-
-
- Se han producido uno o más errores durante la instalación. Intente corregirlos y ejecute de nuevo la instalación. Para más información consulte el <a href="#">fichero de log</a>.
- Es necesario reiniciar el ordenador para restaurar el sistema a antes de la instalación.
- &Reiniciar
- &Cerrar
-
diff --git a/build/wix/Localization/mixxx_et-EE.wxl b/build/wix/Localization/mixxx_et-EE.wxl
deleted file mode 100644
index ff4f81a5421..00000000000
--- a/build/wix/Localization/mixxx_et-EE.wxl
+++ /dev/null
@@ -1,104 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- 1061
-
-
-
- Mixxx
- Mixxx
- Mixxx Arendusmeeskond
- Avatud lähtekoodiga digitaalne DJ tarkvara
-
-
-
-
- See toode nõuab Windows 7-d või uuemat op. süsteemi.
- Sama või uuem versioon sellest tootest on juba paigaldatud.
- Sul tuleb paigaldada 64-bitine versioon sellest tootest 64-bitisele Windowsile.
- Sul tuleb paigaldada 32-bitine versioon sellest tootest 32-bitisele Windowsile.
- Sa soovid paigaldada 32-bitist versiooni 64-bitisele operatsioonisüsteemile. Soovitame kasutada 64-bitist versiooni parema jõudluse jaoks. Saate 64-bitise paigalduspaketi alla laadida aadressilt http://mixxx.org/download/
- Te paigaldate Mixxxi vananenud operatsioonisüsteemile. Mõned funktsioonid ei pruugi normaalselt või üldse töödata. Soovitame teil uuendada oma operatsioonisüsteem.
- Sa proovid paigaldada 32-bitist versiooni, kuid 64-bitine on juba paigaldatud. See võib viia soovimatu käitumiseni. Palun eemaldage olemasolev Mixxx kõigepealt või laadige 64-bitine paigalduspakett uuendamiseks alla (kui sa just ei tea mida sa täpselt teed)
- Sa proovid paigaldada 64-bitist versiooni aga 32-bitine on juba paigaldatud. See võib viia soovimatu käitumiseni. Palun eemaldage olemasolev Mixxx kõigepealt või laadige 32-bitine paigalduspakett uuendamiseks alla (kui sa just ei tea mida sa täpselt teed)
- Tuvastati vanem versioo Mixxxist. Kuna me vahetasime paigaldajat, ei saa me tõrgeteta uuendada. Palun eemaldage vanem versioon enne selle paigaldamist.
- Installer was not able to find Microsoft Visual C++ 2015 Redistributable on this system. This is likely an installer bug that should be reported to Mixxx developers.
-
-
- {\WixUI_Font_Title}Hoiatus
-
-
- Launch Mixxx when setup exits.
-
-
- Kogu pakett.
- Põhi rakendus
- Põhirakendus Mixxx koos kontrollerite eelseadistustega.
- PDB debug files
- Install Mixxx PDB files to use with a debugger. This is useful to debug Mixxx and provide readable backtraces to the development team.
- Töölaua otsetee
- Lisa Mixxxi otsetee oma töölauale
- Kasutusjuhend
- Mixxxi kasutusjuhend on PDF failis, lisaks saadaval http://mixxx.org/manual/
- Tõlked
- Ressursifailid mis lubavad Mixxxil kuvada teisi alternatiivkeeli peale Ameerika Ühendriikide inglise keele
-
-
- [WixBundleName] Setup
- [WixBundleName]
- Are you sure you want to cancel?
- Previous version
-
- /install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or
creates a complete local copy of the bundle in directory.
Install is the default.
/passive | /quiet - displays minimal user interface with no prompts or displays no user interface
and no prompts. By default user interface and all prompts are displayed.
/norestart - suppress any attempts to restart. By default user interface will prompt before restart.
/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.
- &Close
-
- Setup will install Mixxx on your computer.
It will first install required third party libraries, then Mixxx itself.
Click Install to continue or Close to exit.
- Version [WixBundleVersion]
- &Options
- &Install
- &Close
-
- Install location:
- &Browse
- &OK
- &Cancel
-
- The following applications are using files that need to be updated:
- Close the &applications and attempt to restart them.
- &Do not close applications. A reboot will be required.
- &OK
- &Cancel
-
- Processing:
- Initializing...
- &Cancel
-
- &Repair
- &Uninstall
- &Close
-
-
-
-
- &Launch
- You must restart your computer before you can use the software.
- &Restart
- &Close
-
-
-
-
- One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the <a href="#">log file</a>.
- You must restart your computer to complete the rollback of the software.
- &Restart
- &Close
-
diff --git a/build/wix/Localization/mixxx_fr-FR.wxl b/build/wix/Localization/mixxx_fr-FR.wxl
deleted file mode 100644
index afc6a9e73a1..00000000000
--- a/build/wix/Localization/mixxx_fr-FR.wxl
+++ /dev/null
@@ -1,104 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- 1036
-
-
-
- Mixxx
- Mixxx
- L'équipe de développement de Mixxx
- Logiciel libre de mixage numérique
-
-
-
-
- Ce produit nécessite au moins Windows 7.
- Une version plus récente ou identique de ce produit est déjà installée.
- Vous devez installer la version 64-bits de ce produit sur un Windows 64-bits.
- Vous devez installer la version 32-bits de ce produit sur un Windows 32-bits.
- Vous installez une version 32 bits sur un système 64 bits. Nous vous recommandons d'utiliser une version 64 bits pour de meilleures performances. Vous pouvez télécharger l'installeur 64 bits ici : http://mixxx.org/download/
- Vous installez Mixxx sur un système obsolète. Certaines fonctions pourraient ne pas fonctionner. Nous vous recommandons de mettre à jour votre système d'exploitation.
- Vous installez une version 32 bits de Mixxx, mais il existe déjà une version 64 bits installée. Ceci peut conduire à un comportement imprévisible. SVP, désinstallez d'abord ou téléchargez l'installeur correspondant pour mettre à jour, à moins de savoir exactement ce que vous faites.
- Vous installez une version 64 bits de Mixxx, mais il existe déjà une version 32 bits installée. Ceci peut conduire à un comportement imprévisible. SVP, désinstallez d'abord ou téléchargez l'installeur correspondant pour mettre à jour, à moins de savoir exactement ce que vous faites.
- Une ancienne version de Mixxx a été détectée. Comme nous avons changé d'installeur, nous ne pouvons pas mettre à jour de manière transparente. Merci de désinstaller l'ancienne version avant d'installer celle-ci.
- L'installeur n'a pas pu trouver "Microsoft Visual C++ 2015 Redistribuable" sur votre système. Il s'agit probablement d'un bug de l'installer qui doit être rapporté aux développeurs de Mixxx.
-
-
- {\WixUI_Font_Title}Attention
-
-
- Démarrer Mixxx en quittant l'installeur.
-
-
- Installation complète.
- Programme principal
- Le programme et l'ensemble de ses dépendances.
- Fichiers PDB de debug
- Installe les fichiers PDB de Mixxx, à utiliser avec un debuggueur. Utile pour débugguer Mixxx et fournir à l'équipe de développement des backtraces exploitables.
- Raccourci sur le bureau
- Ajoute un raccourci "Mixxx" sur le bureau
- Manuel Mixxx
- Le manuel de Mixxx en PDF
- Traductions
- Fichiers de ressources contenant les traductions de Mixxx autres que l'anglais (US)
-
-
- Installeur de [WixBundleName]
- [WixBundleName]
- Êtes-vous sûr de vouloir annuler ?
- Version précédente
-
- /install | /repair | /uninstall | /layout [directory] - installe, répare, désinstalle ou
crée une copie locale complète du bundle dans ce répertoire.
install est la valeur par défaut.
/passive | /quiet - afiche une interface minimale sans question ou
n'affiche aucune interface ni question.
Par défaut, l'interface et toutes les questions sont affichés.
/norestart - ne tente pas de redémarrer.
Par défaut, l'interface demandera avant de redémarrer.
/log log.txt - fichier spécifique de journal. Par défaut, les journaux
sont créés dans %TEMP%.
- &Fermer
-
- L'installeur installera Mixxx sur votre ordinateur.
Il installera d'abord les librairies tierces, puis Mixxx lui-même.
Cliquez sur Installer pour continuer ou Fermer pour quitter.
- Version [WixBundleVersion]
- &Options
- &Installer
- &Fermer
-
- Emplacement d'installation :
- &Parcourir
- &OK
- &Annuler
-
- Les applications suivantes utilisent les fichiers à mettre à jour :
- Fermer les &applications et tenter de les redémarrer.
- &Ne pas fermer les applications. Un reboot sera nécessaire.
- &OK
- &Annuler
-
- En cours :
- Initialisation...
- &Annuler
-
- &Réparer
- &Désinstaller
- &Fermer
-
-
-
-
- &Lancer
- Vous devez redémarrer votre ordinateur avant de pouvoir utiliser le logiciel.
- &Redémarrer
- &Fermer
-
-
-
-
- Une ou plusieurs erreurs ont fait échoué l'installation. Corrigez-les et réessayez. Pour de plus amples informations, consultez le <a href="#">fichier journal</a>.
- Vous devez redémarrer votre ordinateur pour terminer le retour-arrière du logiciel.
- &Redémarrer
- &Fermer
-
diff --git a/build/wix/Localization/mixxx_it-IT.wxl b/build/wix/Localization/mixxx_it-IT.wxl
deleted file mode 100644
index a834ba40527..00000000000
--- a/build/wix/Localization/mixxx_it-IT.wxl
+++ /dev/null
@@ -1,104 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- 1040
-
-
-
- Mixxx
- Mixxx
- Il Team Sviluppo di Mixxx
- Software per DJing Open-Source
-
-
-
-
- Questo prodotto richiede Windows 7 o superiori.
- La stessa o una versione più recente di questo prodotto è già installata.
- Devi installare la versione a 64-bit di questo prodotto su Windows a 64-bit.
- Devi installare la versione a 32-bit di questo prodotto su Windows a 32-bit.
- Stai per installare la versione a 32-bit su un sistema operativo a 64-bit. Raccomandiamo di usare la versione a 64-bit per ottenere prestazioni migliori. Puoi scaricare il pacchetto di installazione a 64-bit da http://mixxx.org/download/
- Stai per installare Mixxx su un sistema operativo vecchio. Alcune funzioni potrebbero non funzionare bene o completamente. Raccomandiamo di aggiornare il tuo sistema operativo.
- Stai per installare la versione a 32-bit ma è già installata una versione a 64-bit. Ciò può portare a comportamenti indesiderati. Disinstallare prima l'esistente Mixxx per favore, oppure scaricare il pacchetto di installazione a 64-bit per eseguire l'aggiornamento (a meno che tu non conosca esattamente quello che stai facendo).
- Stai per installare la versione a 64-bit ma è già installata una versione a 32-bit. Ciò può portare a comportamenti indesiderati. Disinstallare prima l'esistente Mixxx per favore, oppure scaricare il pacchetto di installazione a 32-bit per eseguire l'aggiornamento (a meno che tu non conosca esattamente quello che stai facendo).
- È stata rilevata una versione precedente di Mixxx. Si come abbiamo cambiato l'installatore, non possiamo aggiornare senza problemi. Disinstallare la versione precedente per favore, prima di installare questa.
- Installer non è riuscito a trovare Microsoft Visual C ++ 2015 Redistributable in questo sistema. Questo è probabilmente un bug di installazione che dovrebbe essere segnalato agli sviluppatori Mixxx.
-
-
- {\WixUI_Font_Title}Attenzione
-
-
- Avvia Mixxx quando l'installazione esce.
-
-
- Il pacchetto software completo.
- Applicazione principale
- L'applicazione Mixxx principale compreso i preset del controller.
- PDB debug files
- Installare i file Mixxx PDB da utilizzare con un debugger. Questo è utile per eseguire il debug di Mixxx e fornire backtraces leggibili al team di sviluppo.
- Collegamento sul Desktop
- Aggiunge un collegamento a Mixxx sul tuo desktop
- Manuale Utente
- Il manuale di Mixxx in formato PDF, disponibile anche su http://mixxx.org/manual/
- Traduzioni
- File di risorse che permettono a Mixxx di visualizzare in lingue alternate, oltre che l'inglese US
-
-
- [WixBundleName] Impostazione
- [WixBundleName]
- È sicuro/a di voler annullare?
- Versione precedente
-
- /install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or
creates a complete local copy of the bundle in directory.
Install is the default.
/passive | /quiet - displays minimal user interface with no prompts or displays no user interface
and no prompts. By default user interface and all prompts are displayed.
/norestart - suppress any attempts to restart. By default user interface will prompt before restart.
/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.
- &Close
-
- Setup will install Mixxx on your computer.
It will first install required third party libraries, then Mixxx itself.
Click Install to continue or Close to exit.
- Versione [WixBundleVersion]
- &Options
- &Install
- &Close
-
- Install location:
- &Browse
- &OK
- &Cancel
-
- The following applications are using files that need to be updated:
- Close the &applications and attempt to restart them.
- &Do not close applications. A reboot will be required.
- &OK
- &Cancel
-
- Processing:
- Initializing...
- &Cancel
-
- &Repair
- &Uninstall
- &Close
-
-
-
-
- &Launch
- You must restart your computer before you can use the software.
- &Restart
- &Close
-
-
-
-
- One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the <a href="#">log file</a>.
- You must restart your computer to complete the rollback of the software.
- &Restart
- &Close
-
diff --git a/build/wix/Localization/mixxx_nl-NL.wxl b/build/wix/Localization/mixxx_nl-NL.wxl
deleted file mode 100644
index 080fe7f38ce..00000000000
--- a/build/wix/Localization/mixxx_nl-NL.wxl
+++ /dev/null
@@ -1,104 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- 1043
-
-
-
- Mixxx
- Mixxx
- Het Mixxx ontwikkellingsteam
- Open-source Digitale DJ software
-
-
-
-
- Dit product vereist Windows 7 of hoger.
- Dezelfde of een nieuwere versie van dit product is reeds geïnstalleerd.
- Je moet de 64-bits versie van dit product installeren op een 64-bits versie van Windows.
- Je moet de 32-bits versie van dit product installeren op een 32-bits versie van Windows.
- Je staat op het punt om de 32-bits versie te installeren op een 64-bits besturingssysteem. We raden aan om de 64-bits versie te gebruiken voor betere prestaties. Je kunt het 64-bits installatiepakket downloaden van http://mixxx.org/download/
- Je wilt Mixxx installeren op een verouderd besturingssysteem. Sommige functies werken mogelijk niet goed of helemaal niet. We raden je aan om je besturingssysteem te upgraden.
- Je wilt de 32-bits versie installeren maar een 64-bits is reeds geïnstalleerd. Dit kan leiden tot ongewenste effecten. Gelieve eerst de bestaande Mixxx te verwijderen, of het 64-bits installatiepakket te downloaden en te upgraden (Tenzij je exact weet waar je aan begint)
- Je wilt de 64-bits versie installeren maar een 32-bits is reeds geïnstalleerd. Dit kan leiden tot ongewenste effecten. Gelieve eerst de bestaande Mixxx te verwijderen, of het 32-bits installatiepakket te downloaden en te upgraden (Tenzij je exact weet waar je aan begint)
- Een oudere versie van Mixxx is gedetecteerd. Door wijziging van de installer is een vlotte bijwerking niet mogelijk. Verwijder de oudere versie voordat u deze versie installeert.
- De installatie heeft Microsoft Visual C++ 2015 Redistributable niet kunnen vinden op uw computer. Dit zou kunnen wijzen op een fout in het installatie bestand. Wilt u dit even doorgeven aan de makers van Mixxx, dat hun dit probleem kunnen oplossen voor u.
-
-
- {\WixUI_Font_Title}Waarschuwing
-
-
- Start Mixxx na de installatie.
-
-
- Het volledige pakket.
- Kerntoepassing
- De Mixxx-kerntoepassing inclusief voorinstellingen voor controllers.
- PDB debug-bestanden
- Installeer Mixxx PDB-bestanden om te gebruiken met een debugger. Dit is nuttig om Mixxx te debuggen en het ontwikkelingsteam een leesbare backtrace te bieden.
- Snelkoppeling op het bureaublad
- Voeg een snelkoppeling naar Mixxx toe op je bureaublad
- Gebruikershandleiding
- De Mixxx gebruikershandleiding in PDF-formaat, ook beschikbaar op http://mixxx.org/manual/
- Vertalingen
- Hulpbestanden die Mixxx toelaten om te werken met andere talen dan Amerikaans Engels
-
-
- [WixBundleName] Setup
- [WixBundleName]
- Are you sure you want to cancel?
- Previous version
-
- /install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or
creates a complete local copy of the bundle in directory.
Install is the default.
/passive | /quiet - displays minimal user interface with no prompts or displays no user interface
and no prompts. By default user interface and all prompts are displayed.
/norestart - suppress any attempts to restart. By default user interface will prompt before restart.
/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.
- &Close
-
- Setup will install Mixxx on your computer.
It will first install required third party libraries, then Mixxx itself.
Click Install to continue or Close to exit.
- Version [WixBundleVersion]
- &Options
- &Install
- &Close
-
- Install location:
- &Browse
- &OK
- &Cancel
-
- The following applications are using files that need to be updated:
- Close the &applications and attempt to restart them.
- &Do not close applications. A reboot will be required.
- &OK
- &Cancel
-
- Processing:
- Initializing...
- &Cancel
-
- &Repair
- &Uninstall
- &Close
-
-
-
-
- &Launch
- You must restart your computer before you can use the software.
- &Restart
- &Close
-
-
-
-
- One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the <a href="#">log file</a>.
- You must restart your computer to complete the rollback of the software.
- &Restart
- &Close
-
diff --git a/build/wix/Localization/mixxx_pl-PL.wxl b/build/wix/Localization/mixxx_pl-PL.wxl
deleted file mode 100644
index f133619d215..00000000000
--- a/build/wix/Localization/mixxx_pl-PL.wxl
+++ /dev/null
@@ -1,104 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- 1045
-
-
-
- Mixxx
- Mixxx
- Drużyna Deweloperska Mixxx'a
- Oprogramowanie DJ Open-source
-
-
-
-
- Ten produkt wymaga Windowsa 7 lub wyżsego
- Ta lub nowsza wersja tego produktu jest juź zainstalowana.
- Musisz zainstalować 64-bitową wersję na 64-bitowym Windowsie.
- Musisz zainstalować 32-bitową wersję na 32-bitowym Windowsie.
- Masz zamiar zainstalować wersję 32-bitową w 64-bitowym systemie operacyjnym. Zalecane jest użycie 64-bitowej wersji dla lepszej wydajności. Pakiet instalacji 64-bitowej można pobrać z http://mixxx.org/download/
- Instalujesz Mixxx'a na przestarzałym systemie operacyjnym. Niektóre funkcje mogą nie działac prawidłowo lub wcale. Rekomendujemy zaktualizować swój system operacyjny.
- Masz zamiar zainstalować 32-bitową wersje, ale już jest zainstalowana wersja 64-bitowa. Może to prowadzić do niepożądanego działania. Najpierw należy odinstalować istniejącego Mixxx'a, lub Pobrać pakiet instalacji 64-bitowej do uaktualnienia (chyba, że wiesz, co robisz.)
- Masz zamiar zainstalować 64-bitową wersję, ale już jest zainstalowana wersja 32-bitowa. Może to prowadzić do niepożądanego działania. Najpierw należy odinstalować istniejącego Mixxx'a, lub Pobrać pakiet instalacji 32-bitowe do uaktualnienia (chyba, że wiesz, co robisz.)
- Wykryto starszą wersję Mixxx. Zmieniliśy Instalator, nie można płynnie uaktualnić programu. Proszę odinstalować starszą wersję przed zainstalowaniem tej.
- Installer was not able to find Microsoft Visual C++ 2015 Redistributable on this system. This is likely an installer bug that should be reported to Mixxx developers.
-
-
- {\WixUI_Font_Title}Ostrzeżenie
-
-
- Włącz Mixxx'a kiedy skończy się instalacja.
-
-
- Kompletny pakiet.
- Główna aplikacja
- Mixxx posiada zapisane ustawienia do różnych kontrolerów.
- PDB debug files
- Install Mixxx PDB files to use with a debugger. This is useful to debug Mixxx and provide readable backtraces to the development team.
- Skrót na pulpicie
- Dodaj skrót do Mixxx'a na twoim pulpicie
- Instrukcja obsługi
- Instrukcja obsługi Mixxx'a jest również dostępna jako PDF na http://mixxx.org/manual/
- Translacje
- Pliki zasobów, które pozwalają Mixxx'owi do wyświetlania w alternatywnych językach innych niż Angielski US
-
-
- [WixBundleName] Setup
- [WixBundleName]
- Are you sure you want to cancel?
- Previous version
-
- /install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or
creates a complete local copy of the bundle in directory.
Install is the default.
/passive | /quiet - displays minimal user interface with no prompts or displays no user interface
and no prompts. By default user interface and all prompts are displayed.
/norestart - suppress any attempts to restart. By default user interface will prompt before restart.
/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.
- &Close
-
- Setup will install Mixxx on your computer.
It will first install required third party libraries, then Mixxx itself.
Click Install to continue or Close to exit.
- Version [WixBundleVersion]
- &Options
- &Install
- &Close
-
- Install location:
- &Browse
- &OK
- &Cancel
-
- The following applications are using files that need to be updated:
- Close the &applications and attempt to restart them.
- &Do not close applications. A reboot will be required.
- &OK
- &Cancel
-
- Processing:
- Initializing...
- &Cancel
-
- &Repair
- &Uninstall
- &Close
-
-
-
-
- &Launch
- You must restart your computer before you can use the software.
- &Restart
- &Close
-
-
-
-
- One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the <a href="#">log file</a>.
- You must restart your computer to complete the rollback of the software.
- &Restart
- &Close
-
diff --git a/build/wix/Localization/mixxx_pt-BR.wxl b/build/wix/Localization/mixxx_pt-BR.wxl
deleted file mode 100644
index c9066b59b31..00000000000
--- a/build/wix/Localization/mixxx_pt-BR.wxl
+++ /dev/null
@@ -1,104 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- 1046
-
-
-
- Mixxx
- Mixxx
- A Equipe de Desenvolvimento do Mixxx
- Software de DJ digital de código-aberto
-
-
-
-
- Esse produto requer Windows 7 ou melhor.
- A mesma ou melhor versão deste produto já está instalada.
- Você precisa instalar a versão 64-bit desse produto no Windows 64-bit.
- Você precisa instalar a versão 32-bit desse produto no Windows 32-bit.
- Você está prestes a instalar a versão 32-bit em um sistema operacional 64-bit. Nós recomendamos usar uma versão 64-bit para melhor performance. Você pode baixar o pacote de instalação 64-bit de http://mixxx.org/download/
- Você está instalando o Mixxx em um sistema operacional desatualizado. Algumas funções podem não funcionar corretamente ou nem funcionar. Nós recomendamos atualizar o seu sistema operacional.
- Você está prestes a instalar a versão 32-bit mas uma versão 64-bit já está instalada. Isso pode levar a comportamento indesejado. Por favor desinstale a versão existente do Mixxx primeiro, ou baixe o pacote de instalação 64-bit para atualizar (a menos que você saiba exatamente o que você está fazendo.)
- Você está prestes a instalar a versão 64-bit mas uma versão 32-bit já está instalada. Isso pode levar a comportamento indesejado. Por favor desinstale a versão existente do Mixxx primeiro, ou baixe o pacote de instalação 32-bit para atualizar (a menos que você saiba exatamente o que você está fazendo.)
- Uma versão antiga do Mixxx foi detectada. Como nós mudamos de instalador, não podemos atualizá-la de forma adequada. Por favor desinstale a versão antiga antes de instalar esta.
- O instalador não conseguiu encontrar o Microsoft Visual C ++ 2015 Redistributable neste sistema. Provavelmente, é um erro do instalador que deve ser relatado aos desenvolvedores do Mixxx.
-
-
- {\WixUI_Font_Title}Atenção
-
-
- Executar o Mixxx quando a instalação acabar.
-
-
- O pacote inteiro.
- Núcleo da aplicação
- O núcleo da aplicação MIxxx incluindo pré-definições de controlador.
- Arquivos PDB para debugar
- Instalar os arquivos PDB do Mixxx para usar com um debugger. isso é útil para debugar o Mixxx e fornece backtraces legíveis para a equipe de desenvolvimento.
- Atalho na Área de Trabalho
- Cria um atalho do Mixxx na sua área de trabalho
- Manual do Usuário
- O manual do usuário do Mixxx em formato PDF, também disponível em http://mixxx.org/manual/
- Traduções
- Arquivos de recursos que premitem o Mixxx mostrar outras linguagens além do inglês.
-
-
- Configuração
- [WixBundleName]
- Você tem certeza que deseja cancelar?
- Versão anterior
-
- /instalar | /reparar | /desinstalar | /layout [diretório] - instala, repara, desinstala ou
cria uma cópia local completa do pacote configurável no diretório.
Instalar é o padrão.
/passivo | /silencioso - exibe uma interface de usuário mínima sem prompts ou nenhuma interface de usuário
e sem avisos. Por padrão, a interface do usuário e todos os prompts são exibidos.
/sem reinício - suprime qualquer tentativa de reiniciar. Por padrão, a interface do usuário solicitará antes de reiniciar.
/log log.txt - registra em um arquivo específico. Por padrão, um arquivo de log é criado em %TEMP%.
- &Fechar
-
- O instalador instalará o Mixxx no seu computador.
Primeiro ele instala as bibliotecas de terceiros necessárias e depois o próprio Mixxx.
Clique em Instalar para continuar ou Fechar para sair.
- Versão [WixBundleVersion]
- &Opções
- &Instalar
- &Fechar
-
- Local de instalação:
- &Navegador
- &OK
- &Cancelar
-
- Os seguintes aplicativos estão usando arquivos que precisam ser atualizados:
- Feche os &aplicativos e tente reiniciá-los.
- &Não feche as aplicações. Uma reinicialização será necessária.
- &OK
- &Cancelar
-
- Processando:
- Inicializando...
- &Cancelar
-
- &Reparar
- &Desinstalar
- &Fechar
-
-
-
-
- &Iniciar o Mixxx
- Você deve reiniciar o computador antes de poder usar o software.
- &Reiniciar
- &Fechar
-
-
-
-
- Um ou mais problemas causaram falha na instalação. Corrija os problemas e tente novamente a instalação. Para mais informações, consulte o <a href="#">arquivo de log</a>.
- Você deve reiniciar o computador para concluir a reversão do software.
- &Reiniciar
- &Fechar
-
diff --git a/build/wix/Localization/mixxx_pt-PT.wxl b/build/wix/Localization/mixxx_pt-PT.wxl
deleted file mode 100644
index bae1f5b17ac..00000000000
--- a/build/wix/Localization/mixxx_pt-PT.wxl
+++ /dev/null
@@ -1,104 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- 2070
-
-
-
- Mixxx
- Mixxx
- A equipa de desenvolvimento do Mixxx
- Programa de DJ Digital de código aberto
-
-
-
-
- Este produto necessita do Windows 7 ou superior.
- Já está instalada esta versão ou uma mais recente deste programa.
- Tem de instalar a versão 64-bit deste produto no Windows de 64-bit.
- Tem de instalar a versão 32-bit deste produto no Windows de 32-bit.
- Está prestes a instalar a versão 32-bit num sistema operativo de 64-bit. Recomendamos a utilização da versão de 64-bit para um melhor desempenho. Pode descarregar o pacote de instalação de 64-bit em http://mixxx.org/download/
- Está a instalar o Mixxx num sistema operativo desatualizado. Algumas funcionalidade poderão não funcionar corretamente. É recomendável atualizar o seu sistema operativo.
- Está prestes a instalar a versão de 32-bit mas a de 64-bit já está instalada. Isto pode resultar num comportamento indesejado. Por favor, desinstale a versão do Mixxx existente primeiro, ou transfira a versão de 64-bit para atualizar (a não ser que realmente saiba o que está a fazer.)
- Está prestes a instalar a versão de 64-bit mas a de 32-bit já está instalada. Isto pode resultar num comportamento indesejado. Por favor, desinstale a versão do Mixxx existente primeiro, ou transfira a versão de 32-bit para atualizar (a não ser que realmente saiba o que está a fazer.)
- Foi detetada uma versão anterior do Mixxx. Como o instalador foi alterado, não podemos fazer a atualização facilmente. Por favor desinstale a versão antiga antes de instalar esta.
- O instalador não conseguiu encontrar o Microsoft Visual C++ 2015 Redistributable neste sistema. Provavelmente isto deve-se a um erro do instalador que deve ser reportado aos programadores do Mixxx.
-
-
- {\WixUI_Font_Title}Aviso
-
-
- Iniciar o Mixxx após sair da instalação.
-
-
- O pacote completo.
- Aplicação principal
- A aplicação principal Mixxx inclui predefinições de controladores.
- Ficheiros PDB de depuração de erros
- Instala ficheiros PDB do Mixxx para usar com um depurador de erros. Isto é bastante útil para permitir o retorno de indícios legíveis à equipa de desenvolvimento e depurar o Mixxx.
- Atalho no ambiente de trabalho
- Adiciona um atalho do Mixxx no ambiente de trabalho
- Manual do Utilizador
- O manual do Mixxx em PDF, está disponível também em http://mixxx.org/manual/
- Traduções
- Ficheiros de recurso que permitem ao Mixxx mostrar outros idiomas, diferentes do inglês - EUA
-
-
- Instalação do [WixBundleName]
- [WixBundleName]
- Tem a certeza que quer cancelar?
- Versão anterior
-
- /install | /repair | /uninstall | /layout [directory] - instala, repara, desinstala ou
cria uma cópia local do pacote no diretório.
A instalação é o padrão.
/passive | /quiet - mostra uma interface mínima sem perguntas ou não mostra nenhuma interface
nem perguntas. Por padrão, a interface e as perguntas são mostradas.
/norestart - suprime qualquer tentativa de reiniciar. Por padrão, a interface irá perguntar antes de reiniciar.
/log log.txt - faz o registo para um ficheiro específico. Por defeito, é criado um registo em %TEMP%.
- &Fechar
-
- O instalador irá instalar o Mixxx ne sou computador
Primeiro irá instalar bibliotecas externas necessárias e só depois o Mixxx.
Clique Instalar para continuar ou Fechar para sair.
- Versão [WixBundleVersion]
- &Opções
- &Instalar
- &Fechar
-
- Local de instalação:
- &Navegar
- &OK
- &Cancelar
-
- Os seguintes programas estão a usar ficheiros que têm de ser atualizados:
- Feche os _programas e tente reiniciá-los.
- &Não feche os programas. É necessário reiniciar o computador.
- &OK
- &Cancelar
-
- A processar:
- A inicializar...
- &Cancelar
-
- &Reparar
- &Desinstalar
- &Fechar
-
-
-
-
- &Lançar
- Tem de reiniciar o computador antes de poder utilizar o programa.
- &Reiniciar
- &Fechar
-
-
-
-
- Um ou mais problemas impediram a instalação correta. Por favor corrija os problemas e tente novamente. Para mais informações veja o <a href="#">ficheiro de registos</a>.
- Tem de reiniciar o computador para terminar a desinstalação do programa
- &Reiniciar
- &Fechar
-
diff --git a/build/wix/Localization/mixxx_ro-RO.wxl b/build/wix/Localization/mixxx_ro-RO.wxl
deleted file mode 100644
index 12c783ab05c..00000000000
--- a/build/wix/Localization/mixxx_ro-RO.wxl
+++ /dev/null
@@ -1,104 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- 1048
-
-
-
- Mixxx
- Mixxx
- Echipa de dezvoltare Mixxx
- Aplicaţie DJ Digital Opesource
-
-
-
-
- Acest produs necesită Windows 7 sau ulterior.
- Aceiaşi sau o versiune mai nouă a acestui produs este deja instalată.
- Trebuie să instalaţi versiunea produsului pe 64-biţi pentru Windows.
- Trebuie să instalaţi versiunea pe 32-biţi a acestui produs pentru Windows.
- You are about to install the 32-bit version on a 64-bit operating system. We recommend using the 64-bit version for better performance. You can download the 64-bit installation package from http://mixxx.org/download/
- Instalaţi Mixxx pe un sistem de operare expirat. Unele funcţii este posibil să nu funcţioneze corect sau deloc. Vă recomandăm să actualizaţi sistemul de operare.
- You are about to install the 32-bit version but a 64-bit one is already installed. This can lead to undesired behavior. Please un-install the existing Mixxx first, or download the 64-bit installation package to upgrade (unless you know exactly what you are doing.)
- You are about to install the 64-bit version but a 32-bit one is already installed. This can lead to undesired behavior. Please un-install the existing Mixxx first, or download the 32-bit installation package to upgrade (unless you know exactly what you are doing.)
- O versiune veche Mixxx a fost detectată. Deoarece am schimbat instalatorul, nu putem actualiza facil. Dezinstalaţi versiunea veche înaintea instalării acesteia.
- Installer was not able to find Microsoft Visual C++ 2015 Redistributable on this system. This is likely an installer bug that should be reported to Mixxx developers.
-
-
- {\WixUI_Font_Title}Atenţie
-
-
- Launch Mixxx when setup exits.
-
-
- Pachetul complet.
- Aplicaţia de bază
- Aplicaţia de bază Mixxx include preconfigurări controllere.
- PDB debug files
- Install Mixxx PDB files to use with a debugger. This is useful to debug Mixxx and provide readable backtraces to the development team.
- Scurtătură birou
- Adaugă o scurtătură pentru Mixxx pe birou
- Manual utilizator
- Manualul utilizatorului Mixxx în format PDF, este disponibil la
- Traduceri
- Fişierele resursă care permit Mixxx să afişeze în alte limbi, altele decât Engleza US
-
-
- [WixBundleName] Setup
- [WixBundleName]
- Are you sure you want to cancel?
- Previous version
-
- /install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or
creates a complete local copy of the bundle in directory.
Install is the default.
/passive | /quiet - displays minimal user interface with no prompts or displays no user interface
and no prompts. By default user interface and all prompts are displayed.
/norestart - suppress any attempts to restart. By default user interface will prompt before restart.
/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.
- &Close
-
- Setup will install Mixxx on your computer.
It will first install required third party libraries, then Mixxx itself.
Click Install to continue or Close to exit.
- Version [WixBundleVersion]
- &Options
- &Install
- &Close
-
- Install location:
- &Browse
- &OK
- &Cancel
-
- The following applications are using files that need to be updated:
- Close the &applications and attempt to restart them.
- &Do not close applications. A reboot will be required.
- &OK
- &Cancel
-
- Processing:
- Initializing...
- &Cancel
-
- &Repair
- &Uninstall
- &Close
-
-
-
-
- &Launch
- You must restart your computer before you can use the software.
- &Restart
- &Close
-
-
-
-
- One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the <a href="#">log file</a>.
- You must restart your computer to complete the rollback of the software.
- &Restart
- &Close
-
diff --git a/build/wix/Localization/mixxx_ru-RU.wxl b/build/wix/Localization/mixxx_ru-RU.wxl
deleted file mode 100644
index e77796831aa..00000000000
--- a/build/wix/Localization/mixxx_ru-RU.wxl
+++ /dev/null
@@ -1,104 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- 1049
-
-
-
- Mixxx
- Mixxx
- Команда разработчиков The Mixxx
- Программа с открытым исходным кодом для ди-джеев
-
-
-
-
- Этот продукт поддерживается на Windows 7 и выше.
- Данная или выше версия продукта уже установлена.
- Вам необходимо установить 64-битную версию продукта на 64-битную версию Windows.
- Вам необходимо установить 32-битную версию продукта на 32-битную версию Windows.
- Вы пытаетесь установить 32-битную версию на 64-битную версию операционной системы. Мы рекомендуем использовать 64-битную версию для увеличения производительности.Вы можете скачать 64-битную версию программы на http://mixxx.org/download/.
- Вы установили Mixxx на операционную систему, которая более не поддерживается. Некоторые функции могут не работать или работать некорректно. Рекомендуем Вам обновить операционную систему.
- Вы пытаетесь установить 32-битную версию, но у вас уже установлена 64-битная версия. Это может привести к нежелательным последствиям. Пожалуйста, удалите сначала установленную версию, или скачайте 64-битную версию установщика для обновления текущей версии ПО (если вы уверены в том, что делаете.)
- Вы пытаетесь установить 64-битную версию, но у вас уже установлена 32-битная версия. Это может привести к нежелательным последствиям. Пожалуйста, удалите сначала установленную версию, или скачайте 32-битную версию установщика для обновления текущей версии ПО (если вы уверены в том, что делаете.)
- Обнаружена страя версия Mixxx. Так как установщик был изменен, нет возможности обновения версии ПО. Пожалуйста, удалите старую версию перед запуском данного установщика.
- Установщик не нашел Microsoft Visual C++ 2015 Redistributable в данной системе. Судя по всему это баг установщика, о котором стоит сообщить создателям Mixxx
-
-
- {\WixUI_Font_Title}Предупреждение
-
-
- Запуск Mixxx, и выход из режима настройки
-
-
- Полный пакет.
- Основная программа
- Основная программа Mixxx включает настройки контроллера.
- PDB файлы отладки
- Установите Mixxx PDB файлы для использования с помощью отладчика. Это полезно для отладки Mixxx и обеспечит считывание у цепочек вызова команды разработчиков.
- Ярлык на Рабочем столе
- Добавляет ярлык Mixxx на Рабочий стол
- Руководство пользователя
- Руквоводство пользователя Mixxx в формате PDF, так же доступно на http://mixxx.org/manual/
- Переводы
- Файлы, позволяющие Mixxx отображать интерфейс на альтернативных языках, нежели US английский.
-
-
- [WixBundleName] Установка
- [WixBundleName]
- Вы уверены, что хотите отменить?
- Предыдущая версия
-
- /install | /repair | /uninstall | /layout [directory] - устанавливает, восстанавливает, удаляет или
создает полную локальную копию пакета в каталог.
Установка (/install) включена по умолчанию.
/passive | /quiet - показывает минималистичный пользовательский интерфейс без запросов параметров или не показывает пользовательский интерфейс вообще
и без параметров. По умолчанию интерфейс и параметры включены.
/norestart - подавляет попытки перезапуска. По умолчанию будет выводиться окно информирования перед перезагрузкой.
/log log.txt - лог в отдельный файл. По умолчанию лог пишется по пути %TEMP%.
- &Закрыть
-
- Программа установки установит Mixxx на ваш компьютер.
Сначала он установит необходимые сторонние библиотеки, а затем сам Mixxx.
Нажмите кнопку Установить для продолжения или закрыть для выхода.
- Версия [WixBundleVersion]
- &Параметры
- &Установить
- &Закрыть
-
- Место установки:
- &Просмотреть
- &ОК
- &Отмена
-
- Следующие приложения используют файлы, которые необходимо обновить:
- Закройте &приложения и попытайтесь перезапустить их.
- &Не закрывайте приложение. Потребуется перезагрузка.
- &ОК
- &Отмена
-
- Обработка:
- Инициализация...
- &Отмена
-
- &Восстановление
- &Удалить
- &Закрыть
-
-
-
-
- &Запуск
- Перед использованием программного обеспечения необходимо перезагрузить компьютер.
- &Перезапуск
- &Закрыть
-
-
-
-
- Одна или несколько проблем вызвали сбой установки. Устраните неполадки и повторите попытку установки. Для получения дополнительной информации см. <a href="#"> файл лога</a>.
- Необходимо перезагрузить компьютер для завершения возврата программного обеспечения.
- &Перезапуск
- &Закрыть
-
diff --git a/build/wix/Localization/mixxx_sv-SE.wxl b/build/wix/Localization/mixxx_sv-SE.wxl
deleted file mode 100644
index abbe2ebaf20..00000000000
--- a/build/wix/Localization/mixxx_sv-SE.wxl
+++ /dev/null
@@ -1,104 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- 1053
-
-
-
- Mixxx
- Mixxx
- Mixxx-utvecklingsteamet
- Open-source digital DJ-mjukvara
-
-
-
-
- Denna produkt kräver Windows 7 eller högre.
- Samma eller en nyare version av denna produkt är redan installerad.
- Du behöver installera 64-bitars-versionen utav denna produkt på 64-bitars Windows.
- Du behöver installera 32-bitars-versionen utav denna produkt på 32-bitars Windows.
- You are about to install the 32-bit version on a 64-bit operating system. We recommend using the 64-bit version for better performance. You can download the 64-bit installation package from http://mixxx.org/download/
- You are installing Mixxx on an outdated operating system. Some functions may not work well or at all. We recommend upgrading your operating system.
- You are about to install the 32-bit version but a 64-bit one is already installed. This can lead to undesired behavior. Please un-install the existing Mixxx first, or download the 64-bit installation package to upgrade (unless you know exactly what you are doing.)
- You are about to install the 64-bit version but a 32-bit one is already installed. This can lead to undesired behavior. Please un-install the existing Mixxx first, or download the 32-bit installation package to upgrade (unless you know exactly what you are doing.)
- An older version of Mixxx has been detected. As we changed installer, we can not smoothly upgrade. Please uninstall older version before installing this one.
- Installer was not able to find Microsoft Visual C++ 2015 Redistributable on this system. This is likely an installer bug that should be reported to Mixxx developers.
-
-
- {\WixUI_Font_Title}Varning
-
-
- Starta Mixxx när installationen avslutar.
-
-
- Hela paketet.
- Kärnapplikation
- Kärn-Mixxx-applikationen inklusive controller-förval.
- PDB-debugfiler
- Install Mixxx PDB files to use with a debugger. This is useful to debug Mixxx and provide readable backtraces to the development team.
- Skrivbordsgenväg
- Lägg till en genväg till Mixxx på ditt skrivbord
- Användarmanual
- Mixxx användarmanual i PDF-format, även tillgänglig på http://mixxx.org/manual/
- Översättningar
- Resursfiler som tillåter Mixxx att visas i alternativa språk, andra än amerikansk engelska
-
-
- [WixBundleName] Setup
- [WixBundleName]
- Are you sure you want to cancel?
- Föregående version
-
- /install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or
creates a complete local copy of the bundle in directory.
Install is the default.
/passive | /quiet - displays minimal user interface with no prompts or displays no user interface
and no prompts. By default user interface and all prompts are displayed.
/norestart - suppress any attempts to restart. By default user interface will prompt before restart.
/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.
- &Close
-
- Setup will install Mixxx on your computer.
It will first install required third party libraries, then Mixxx itself.
Click Install to continue or Close to exit.
- Version [WixBundleVersion]
- &Options
- &Installera
- &Close
-
- Install location:
- &Bläddra
- &OK
- &Cancel
-
- The following applications are using files that need to be updated:
- Close the &applications and attempt to restart them.
- &Do not close applications. A reboot will be required.
- &OK
- &Cancel
-
- Bearbetar:
- Initializing...
- &Cancel
-
- &Reparera
- &Uninstall
- &Close
-
-
-
-
- &Launch
- You must restart your computer before you can use the software.
- &Restart
- &Close
-
-
-
-
- One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the <a href="#">log file</a>.
- You must restart your computer to complete the rollback of the software.
- &Restart
- &Close
-
diff --git a/build/wix/Localization/mixxx_tr-TR.wxl b/build/wix/Localization/mixxx_tr-TR.wxl
deleted file mode 100644
index e920ec3cc81..00000000000
--- a/build/wix/Localization/mixxx_tr-TR.wxl
+++ /dev/null
@@ -1,104 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- 1055
-
-
-
- Mixxx
- Mixxx
- Mixxx Geliştirici Takımı
- Açık-kaynak Dijital DJ yazılımı
-
-
-
-
- Bu ürün Windows 7 ve üzerini gerektirir.
- Bu ürünün aynı veya daha yeni bir sürümü zaten yüklü.
- 64-bit Windows üzerine bu ürünün 64-bit sürümünü yüklemeniz gerekmektedir.
- 32-bit Windows üzerine bu ürünün 32-bit sürümünü yüklemeniz gerekmektedir.
- 64-bit bir işletim sistemine 32-bit sürümü yüklemek üzeresiniz. Daha iyi bir performans için 64-bit sürümü kullanmanızı öneririz. 64-bit Yükleme paketini http://mixxx.org/download/ adresinden edinebilirsiniz.
- Mixxx'i eski bir işletim sistemine yüklemek üzeresiniz. Bazı özellikler istendiği gibi veya hiç çalışmayabilir. İşletim sisteminizi yükseltmenizi öneririz.
- 32-bit sürümü yüklemek üzeresiniz ancak bir 64-bit sürüm zaten yüklü. Devam etmek istenmeyen sonuçlar doğurabilir. Lütfen önce mevcut Mixxx'i kaldırın, veya güncellemek için 64-bit yükleme paketini indirin (ne yaptığınızı tam olarak bilmiyorsanız).
- 64-bit sürümü yüklemek üzeresiniz ancak bir 32-bit versiyon zaten yüklü. Devam etmek istenmeyen sonuçlar doğurabilir. Lütfen önce Mixxx'i kaldırın, veya güncellemek için 32-bit yükleme paketini indirin (ne yaptığınızı tam olarak bilmiyorsanız).
- Mixxx'in daha eski bir sürümü tespit edildi. Yükleyici'yi değiştirdiğimiz için pürüzsüz bir güncelleme deneyimi sunamıyoruz. Lütfen yüklemeden önce eski sürümü kaldırın.
- Installer was not able to find Microsoft Visual C++ 2015 Redistributable on this system. This is likely an installer bug that should be reported to Mixxx developers.
-
-
- {\WixUI_Font_Title} Uyarı
-
-
- Kurulumdan çıktıktan sonra Mixxx'i çalıştır.
-
-
- Tam paket.
- Çekirdek uygulama
- Çekirdek Mixxx uygulaması, kontrolör önayarları dahil
- PDB debug files
- Install Mixxx PDB files to use with a debugger. This is useful to debug Mixxx and provide readable backtraces to the development team.
- Masaüstü Kısayolu
- Masaüstüne Mixxx'e bir kısayol ekle
- Kullanım Kılavuzu
- Mixxx kullanım kılavuzu PDF formunda, ayrıca http://mixxx.org/manual/ adresinde mevcut.
- Çeviriler
- Mixxx'in ABD dili dışındaki alternatif dillerde görüntülenmesine izin veren kaynak dosyaları
-
-
- [WixBundleName] Setup
- [WixBundleName]
- Are you sure you want to cancel?
- Önceki Uyarlama
-
- /install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or
creates a complete local copy of the bundle in directory.
Install is the default.
/passive | /quiet - displays minimal user interface with no prompts or displays no user interface
and no prompts. By default user interface and all prompts are displayed.
/norestart - suppress any attempts to restart. By default user interface will prompt before restart.
/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.
- &Close
-
- Setup will install Mixxx on your computer.
It will first install required third party libraries, then Mixxx itself.
Click Install to continue or Close to exit.
- Version [WixBundleVersion]
- &Options
- &Install
- &Close
-
- Install location:
- &Browse
- &OK
- &Cancel
-
- The following applications are using files that need to be updated:
- Close the &applications and attempt to restart them.
- &Do not close applications. A reboot will be required.
- &OK
- &Cancel
-
- Processing:
- Initializing...
- &Cancel
-
- &Repair
- &Uninstall
- &Close
-
-
-
-
- &Launch
- You must restart your computer before you can use the software.
- &Restart
- &Close
-
-
-
-
- One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the <a href="#">log file</a>.
- You must restart your computer to complete the rollback of the software.
- &Restart
- &Close
-
diff --git a/build/wix/Localization/mixxx_zh-CN.wxl b/build/wix/Localization/mixxx_zh-CN.wxl
deleted file mode 100644
index 11440ac39ba..00000000000
--- a/build/wix/Localization/mixxx_zh-CN.wxl
+++ /dev/null
@@ -1,104 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- 2052
-
-
-
- Mixxx
- Mixxx
- Mixxx开发团队
- 开源数字DJ软件
-
-
-
-
- 此产品要求Windows 7或更高版本。
- 已安装此产品相同或更高版本。
- 您需要在64位Windows上安装本产品的64位版本。
- 您需要在32位Windows上安装本产品的32位版本。
- 您将要在64位操作系统上安装32位版本的Mixxx。我们建议使用64位版本以获取更好的性能。您可以从http://mixxx.org/download/ 下载64位的安装包。
- 您正在一个过时的操作系统上安装Mixxx。部分甚至全部功能可能无法正常工作,我们建议您升级操作系统。
- 您将要安装Mixxx的32位版本,但64位版本已经安装,这可能会导致超乎您意料的结果。请先卸载现有的Mixxx,或下载64位的安装包进行升级 (除非您知道自己在做什么。)
- 您将要安装Mixxx的64位版本,但32位版本已经安装,这可能会导致超乎您意料的结果。请先卸载现有的Mixxx,或下载64位的安装包进行升级 (除非您知道自己在做什么。)
- 已检测到旧版本的Mixxx。我们现已更换安装程序,这将导致不能直接进行升级。安装此版本之前请先卸载旧版本。
- 安装器找不到必须的组件 Microsoft Visual C++ 2015 Redistributable。这可能是安装器的软件缺陷,请向 Mixxx 的开发者报告此问题。
-
-
- {\WixUI_Font_Title}警告
-
-
- 退出安装程序后,启动Mixxx
-
-
- 完整软件包
- 核心程序
- 核心Mixxx程序包含控制器预设
- PDB 调试符号文件
- 安装用于辅助调试的 PDB 文件。这些文件在调试 Mixxx 时会非常有用,有了这些文件就能向开发团队提供人类可读的回溯信息。
- 桌面快捷方式
- 添加Mixxx的快捷方式到您的桌面
- 用户手册
- Mixxx用户手册为PDF格式,您也可在http://mixxx.org/manual/ 上查看。
- 翻译
- 资源文件将允许Mixxx显示英语(美国)以外的语言
-
-
- [WixBundleName] 安装
- [WixBundleName]
- 您确定要取消吗?
- 上一版本
-
- /install | /repair | /uninstall | /layout [directory] - 安装、修复、卸载或创建已安装软件的副本。默认操作为“安装”。
/passive | /quiet - 显示最小化的安装界面且不提示安装选项,或者完全不显示用户界面。默认选项为显示完整的安装界面。
/norestart - 安装过程中不重启电脑。默认情况下,程序将提示用户是否重启系统。
/log log.txt - 将安装日志输出到指定文件。默认情况下,将日志输出到目录 %TEMP% 下。
- 关闭(&C)
-
- 安装程序将在您的电脑上安装Mixxx。
系统将先安装所需的第三方组件,然后再安装Mixxx。
点击“安装”以继续,或点击“关闭”以退出安装。
- 版本 [WixBundleVersion]
- 选项(&O)
- 安装(&I)
- 关闭(&C)
-
- 安装路径:
- 浏览(&B)
- 确定(&O)
- 取消(&C)
-
- 下列程序正在占用安装程序需要更新的文件:
- 关闭这些程序并尝试重启它们((&A)。
- 不要关闭这些程序。您稍后需要重启系统。(&D)
- 确定(&O)
- 取消(&C)
-
- 进度:
- 初始化……
- 取消(&C)
-
- 修复(&R)
- 卸载(&U)
- 关闭(&C)
-
-
-
-
- 启动Mixxx(&L)
- 您需要重启电脑才能使用Mixxx。
- 重启(&R)
- quanti(&C)
-
-
-
-
- Mixxx安装失败。请先修复可能存在的问题,然后重试。有关更多信息,请参考<a href="#">日志文件</a>。
- 您必须重启电脑才能完成撤销操作。
- 重启(&R)
- 关闭(&C)
-
diff --git a/build/wix/Localization/mixxx_zh-TW.wxl b/build/wix/Localization/mixxx_zh-TW.wxl
deleted file mode 100644
index 78c91ed2b59..00000000000
--- a/build/wix/Localization/mixxx_zh-TW.wxl
+++ /dev/null
@@ -1,104 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- 1028
-
-
-
- Mixxx
- Mixxx
- Mixxx 開發團隊
- 開放源碼數位 DJ 軟體
-
-
-
-
- 此產品需要 Windows 7 或以上。
- 已安裝相同版本或更新版本的這種產品。
- 您需要在 64 位 Windows 上安裝此產品的 64 位版本。
- 您需要在 32 位 Windows 上安裝 32 位版本的這種產品。
- 您將要在 64 位作業系統上安裝 32 位版本。我們推薦使用 64 位版本的更好的性能。你可以從 http://mixxx.org/download/ 下載 64 位安裝包
- 你過時的作業系統上安裝 Mixxx。好或根本,某些功能可能無法工作。我們建議升級您的作業系統。
- 您將要安裝的 32 位版本,但已經安裝了一個 64 位。這可能導致意外的行為。首先,請卸載現有的 Mixxx 首先,請卸載現有的 Mixxx 或下載 64 位安裝套裝軟體來升級 (除非你知道你在做什麼)。
- 您將要安裝 64 位版本,但已經安裝了一個 32 位。這可能導致意外的行為。首先,請卸載現有的 Mixxx 首先,請卸載現有的 Mixxx 或下載 32 位安裝套裝軟體來升級 (除非你知道你在做什麼)。
- 檢測到舊版本的 Mixxx。當我們改變了安裝程式,我們不能順利升級。請安裝這個之前,卸載舊版本。
- 安裝程式在作業系統裏找不到Microsoft Visual C++ 2015 Redistributable。有可能是安裝程式的錯誤,請回報給Mixxx開發者。
-
-
- {\WixUI_Font_Title}警告
-
-
- 當離開設定時,請登入Mixxx.
-
-
- 完整的包。
- 核心應用程式
- 核心 Mixxx 應用程式包括控制器預設。
- PDB 除錯訊息檔
- 安裝Mixxx PDB 檔好讓除錯器使用。這工具對於除錯及提供開發團隊可讀性的追蹤報告非常有幫助。
- 桌面快捷方式
- 添加 Mixxx 在您的桌面上的快捷方式
- 使用者手冊
- MIxxx使用者操作手冊採PDF格式,在官網http://mixxx.org/manual/上也有放。
- 翻譯
- 資源檔可允許Mixxx呈現其他的語言,有別於US 英文
-
-
- [WixBundleName] 設定
- [WixBundleName]
- 你確定將要取消嗎?
- 之前的版本
-
- /install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or
creates a complete local copy of the bundle in directory.
Install is the default.
/passive | /quiet - displays minimal user interface with no prompts or displays no user interface
and no prompts. By default user interface and all prompts are displayed.
/norestart - suppress any attempts to restart. By default user interface will prompt before restart.
/log log.txt - logs to a specific file. By default a log file is created in %TEMP%.
- &關閉
-
- Setup will install Mixxx on your computer.
It will first install required third party libraries, then Mixxx itself.
Click Install to continue or Close to exit.
- Version [WixBundleVersion]
- &選項
- &Install
- &關閉
-
- 安裝位址:
- &瀏灠
- &OK
- &取消
-
- The following applications are using files that need to be updated:
- Close the &applications and attempt to restart them.
- &Do not close applications. A reboot will be required.
- &OK
- &取消
-
- Processing:
- 初始化...
- &取消
-
- &修復
- &解除安裝
- &關閉
-
-
-
-
- &登入程式
- 您必須要在使用軟體前重新啟動電腦
- &重新啟動
- &關閉
-
-
-
-
- One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the <a href="#">log file</a>.
- You must restart your computer to complete the rollback of the software.
- &重新啟動
- &關閉
-
diff --git a/build/wix/Localization/po/ast-ES.po b/build/wix/Localization/po/ast-ES.po
deleted file mode 100644
index b24b06fc7f5..00000000000
--- a/build/wix/Localization/po/ast-ES.po
+++ /dev/null
@@ -1,368 +0,0 @@
-#
-# Translators:
-# enolp , 2020
-msgid ""
-msgstr ""
-"Project-Id-Version: Mixxx DJ Windows installer\n"
-"PO-Revision-Date: 2020-05-17 19:15+0000\n"
-"Last-Translator: enolp \n"
-"Language-Team: Asturian (Spain) (http://www.transifex.com/mixxx-dj-software/mixxxdj-windows-installer/language/ast_ES/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ast_ES\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#. Programm informations
-msgctxt "ApplicationName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerFullName"
-msgid "The Mixxx Development Team"
-msgstr "L'equipu de desendolcu de Mixxx"
-
-msgctxt "ProductDescription"
-msgid "Open-source Digital DJ software"
-msgstr "Software de códigu abiertu pa DJs"
-
-msgctxt "Comments"
-msgid "Installs Mixxx"
-msgstr "Instala Mixxx"
-
-#. Error messages
-#. DO NOT BREAK LINES BECAUSE LINE BREAKS WILL SHOW UP AS-IS IN THE INTERFACE
-msgctxt "OS2Old"
-msgid "This product requires Windows 7 or above."
-msgstr "Esti productu rique Windows 7 o mayor."
-
-msgctxt "NewerInstalled"
-msgid "The same or a newer version of this product is already installed."
-msgstr "Ta yá ta instalada la mesma versión u otra nueva."
-
-msgctxt "x64VersionRequired"
-msgid ""
-"You need to install the 64-bit version of this product on 64-bit Windows."
-msgstr "Precises instalar la versión de 64 bits d'esti productu en Windows de 64 bits."
-
-msgctxt "x86VersionRequired"
-msgid ""
-"You need to install the 32-bit version of this product on 32-bit Windows."
-msgstr "Precises instalar la versión de 32 bits d'esti productu en Windows de 32 bits."
-
-msgctxt "x86VersionWarning"
-msgid ""
-"You are about to install the 32-bit version on a 64-bit operating system. We"
-" recommend using the 64-bit version for better performance. You can download"
-" the 64-bit installation package from http://mixxx.org/download/"
-msgstr "Tas a piques d'instalar la versión de 32 bits nun sistema operativu de 64 bits. Aconseyamos l'usu de la versión de 64 bits pa un rindimientu meyor. Pues baxar el paquetes d'instalación en 64 bits dende http://mixxx.org/download/"
-
-msgctxt "XPWarning"
-msgid ""
-"You are installing Mixxx on an outdated operating system. Some functions may"
-" not work well or at all. We recommend upgrading your operating system."
-msgstr "Tas instalando Mixxx nun sistema operativu ensin anovar. Dalgunes funciones quiciabes nun funcionen bien n'absoluto. Acoseyamos qu'anueves el sistema operativu."
-
-msgctxt "bitWidthMismatch32"
-msgid ""
-"You are about to install the 32-bit version but a 64-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 64-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "Tas a piques d'instalar la versión de 32 bits pero la de 64 bits yá ta instalada. Esto pue orixinar un comportamientu indeseáu. Desinstala Mixxx primero o baxa'l paquete d'instalación en 64 bits p'anovar (a nun ser que sepas exautamente lo que tas faciendo)."
-
-msgctxt "bitWidthMismatch64"
-msgid ""
-"You are about to install the 64-bit version but a 32-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 32-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "Tas a piques d'instalar la versión de 64 bits pero la de 32 bits yá ta instalada. Esto pue orixinar un comportamientu indeseáu. Desinstala Mixxx primero o baxa'l paquete d'instalación en 32 bits p'anovar (a nun ser que sepas exautamente lo que tas faciendo)."
-
-msgctxt "OlderVersionFound"
-msgid ""
-"An older version of Mixxx has been detected. As we changed installer, we can"
-" not smoothly upgrade. Please uninstall older version before installing this"
-" one."
-msgstr "Deteutóse una versión vieya de Mixxx. Darréu que camudemos l'instalador, nun podemos anovar bien. Desinstala la versión vieya enantes d'instalar esta, por favor."
-
-msgctxt "VCredistNotFound"
-msgid ""
-"Installer was not able to find Microsoft Visual C++ 2015 Redistributable on "
-"this system. This is likely an installer bug that should be reported to "
-"Mixxx developers."
-msgstr "L'instalador nun foi a alcontrar Microsoft Visual C++ 2015 Redistributable nesti sistema. Ye perprobable qu'esto seya un fallu del instalador que debería informase a los desendolcadores de Mixxx."
-
-#. Custom Warning Dialog
-msgctxt "WarningDlgTitle"
-msgid "{\\WixUI_Font_Title}Warning"
-msgstr "{\\WixUI_Font_Title}Alvertencia"
-
-#. Custom exit dialog
-msgctxt "StartOnExit"
-msgid "Launch Mixxx when setup exits."
-msgstr "Llanzar Mixxx cuando l'instaldor cole."
-
-#. Features translations
-msgctxt "FeatureCompleteDescription"
-msgid "The complete package."
-msgstr "El paquete completu"
-
-msgctxt "FeatureMainProgramTitle"
-msgid "Core application"
-msgstr "L'aplicación principal"
-
-msgctxt "FeatureMainProgramDescription"
-msgid "The core Mixxx application including controller presets."
-msgstr ""
-
-msgctxt "FeaturePDBTitle"
-msgid "PDB debug files"
-msgstr ""
-
-msgctxt "FeaturePDBDescription"
-msgid ""
-"Install Mixxx PDB files to use with a debugger. This is useful to debug "
-"Mixxx and provide readable backtraces to the development team."
-msgstr ""
-
-msgctxt "FeatureDesktopShortcutTitle"
-msgid "Desktop Shortcut"
-msgstr "Atayu nel escritoriu"
-
-msgctxt "FeatureDesktopShortcutDescription"
-msgid "Add a shortcut to Mixxx on your desktop"
-msgstr "Amiesta un atayu a Mixxx nel escritoriu"
-
-msgctxt "FeatureManualTitle"
-msgid "User Manual"
-msgstr "Manual d'usuariu"
-
-msgctxt "FeatureManualDescription"
-msgid ""
-"The Mixxx user manual in PDF form, also available at "
-"http://mixxx.org/manual/"
-msgstr "El manual d'usuariu en formatu PDF, tamién disponible en http://mixxx.org/manual/"
-
-msgctxt "FeatureTranslationsTitle"
-msgid "Translations"
-msgstr "Traducciones"
-
-msgctxt "FeatureTranslationsDescription"
-msgid ""
-"Resource files that allow Mixxx to display in alternate languages, other "
-"than US english"
-msgstr "Los ficheros de recursos que permite a Mixxx amosar llingües alternatives y distintes a Inglés d'EE.XX."
-
-#. Bootstrapper
-msgctxt "Caption"
-msgid "[WixBundleName] Setup"
-msgstr ""
-
-msgctxt "Title"
-msgid "[WixBundleName]"
-msgstr "[WixBundleName]"
-
-msgctxt "ConfirmCancelMessage"
-msgid "Are you sure you want to cancel?"
-msgstr "¿De xuru que quies encaboxar?"
-
-msgctxt "ExecuteUpgradeRelatedBundleMessage"
-msgid "Previous version"
-msgstr "Versión anterior"
-
-msgctxt "HelpHeader"
-msgid "Setup Help"
-msgstr ""
-
-msgctxt "HelpText"
-msgid ""
-"/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or\n"
-" creates a complete local copy of the bundle in directory.\n"
-" Install is the default.\n"
-"\n"
-" /passive | /quiet - displays minimal user interface with no prompts or displays no user interface\n"
-" and no prompts. By default user interface and all prompts are displayed.\n"
-"\n"
-" /norestart - suppress any attempts to restart. By default user interface will prompt before restart.\n"
-"\n"
-" /log log.txt - logs to a specific file. By default a log file is created in %TEMP%."
-msgstr ""
-
-msgctxt "HelpCloseButton"
-msgid "&Close"
-msgstr "&Zarrar"
-
-msgctxt "InstallHeader"
-msgid "Welcome"
-msgstr "Afáyate"
-
-msgctxt "InstallMessage"
-msgid ""
-"Setup will install Mixxx on your computer.\n"
-"It will first install required third party libraries, then Mixxx itself.\n"
-"Click Install to continue or Close to exit."
-msgstr ""
-
-msgctxt "InstallVersion"
-msgid "Version [WixBundleVersion]"
-msgstr "Versión [WixBundleVersion]"
-
-msgctxt "InstallOptionsButton"
-msgid "&Options"
-msgstr "&Opciones"
-
-msgctxt "InstallInstallButton"
-msgid "&Install"
-msgstr "&Instalar"
-
-msgctxt "InstallCloseButton"
-msgid "&Close"
-msgstr "&Zarrar"
-
-msgctxt "OptionsHeader"
-msgid "Setup Options"
-msgstr ""
-
-msgctxt "OptionsLocationLabel"
-msgid "Install location:"
-msgstr "Allugamientu de la instalación:"
-
-msgctxt "OptionsBrowseButton"
-msgid "&Browse"
-msgstr "&Restolar"
-
-msgctxt "OptionsOkButton"
-msgid "&OK"
-msgstr "&Aceutar"
-
-msgctxt "OptionsCancelButton"
-msgid "&Cancel"
-msgstr "&Encaboxar"
-
-msgctxt "FilesInUseHeader"
-msgid "Files In Use"
-msgstr "Ficheros n'usu"
-
-msgctxt "FilesInUseLabel"
-msgid "The following applications are using files that need to be updated:"
-msgstr ""
-
-msgctxt "FilesInUseCloseRadioButton"
-msgid "Close the &applications and attempt to restart them."
-msgstr "Zarrar les &aplicaciones y tentar de reaniciales."
-
-msgctxt "FilesInUseDontCloseRadioButton"
-msgid "&Do not close applications. A reboot will be required."
-msgstr "&Nun zarrar les aplicaciones. Va riquise un reaniciu."
-
-msgctxt "FilesInUseOkButton"
-msgid "&OK"
-msgstr "&Aceutar"
-
-msgctxt "FilesInUseCancelButton"
-msgid "&Cancel"
-msgstr "&Encaboxar"
-
-msgctxt "ProgressHeader"
-msgid "Setup Progress"
-msgstr "Progresu de la instalación"
-
-msgctxt "ProgressLabel"
-msgid "Processing:"
-msgstr "Procesando:"
-
-msgctxt "OverallProgressPackageText"
-msgid "Initializing..."
-msgstr "Aniciando..."
-
-msgctxt "ProgressCancelButton"
-msgid "&Cancel"
-msgstr "&Encaboxar"
-
-msgctxt "ModifyHeader"
-msgid "Modify Setup"
-msgstr ""
-
-msgctxt "ModifyRepairButton"
-msgid "&Repair"
-msgstr "&Iguar"
-
-msgctxt "ModifyUninstallButton"
-msgid "&Uninstall"
-msgstr "&Desinstalar"
-
-msgctxt "ModifyCloseButton"
-msgid "&Close"
-msgstr "&Zarrar"
-
-msgctxt "SuccessHeader"
-msgid "Setup Successful"
-msgstr ""
-
-msgctxt "SuccessInstallHeader"
-msgid "Mixxx installation has been successful"
-msgstr ""
-
-msgctxt "SuccessRepairHeader"
-msgid "Mixxx repair has been successful"
-msgstr ""
-
-msgctxt "SuccessUninstallHeader"
-msgid "Mixxx uninstall has been successful"
-msgstr ""
-
-msgctxt "SuccessLaunchButton"
-msgid "&Launch"
-msgstr ""
-
-msgctxt "SuccessRestartText"
-msgid "You must restart your computer before you can use the software."
-msgstr "Has reaniciar l'ordenador enantes de que pueas usar el software."
-
-msgctxt "SuccessRestartButton"
-msgid "&Restart"
-msgstr "&Reaniciar"
-
-msgctxt "SuccessCloseButton"
-msgid "&Close"
-msgstr "&Zarrar"
-
-msgctxt "FailureHeader"
-msgid "Setup Failed"
-msgstr ""
-
-msgctxt "FailureInstallHeader"
-msgid "Mixxx installation failed"
-msgstr ""
-
-msgctxt "FailureRepairHeader"
-msgid "Mixxx repair failed"
-msgstr ""
-
-msgctxt "FailureUninstallHeader"
-msgid "Mixxx uninstall failed"
-msgstr ""
-
-msgctxt "FailureHyperlinkLogText"
-msgid ""
-"One or more issues caused the setup to fail. Please fix the issues and then "
-"retry setup. For more information see the log file."
-msgstr ""
-
-msgctxt "FailureRestartText"
-msgid ""
-"You must restart your computer to complete the rollback of the software."
-msgstr "Has reaniciar l'ordenador pa completar la baxada de versión del software."
-
-msgctxt "FailureRestartButton"
-msgid "&Restart"
-msgstr "&Reaniciar"
-
-msgctxt "FailureCloseButton"
-msgid "&Close"
-msgstr "&Zarrar"
diff --git a/build/wix/Localization/po/br.po b/build/wix/Localization/po/br.po
deleted file mode 100644
index 7a1fba51734..00000000000
--- a/build/wix/Localization/po/br.po
+++ /dev/null
@@ -1,368 +0,0 @@
-#
-# Translators:
-# Irriep Nala Novram , 2019
-msgid ""
-msgstr ""
-"Project-Id-Version: Mixxx DJ Windows installer\n"
-"PO-Revision-Date: 2019-04-17 21:53+0000\n"
-"Last-Translator: daschuer2 \n"
-"Language-Team: Breton (http://www.transifex.com/mixxx-dj-software/mixxxdj-windows-installer/language/br/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: br\n"
-"Plural-Forms: nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);\n"
-
-#. Programm informations
-msgctxt "ApplicationName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerFullName"
-msgid "The Mixxx Development Team"
-msgstr ""
-
-msgctxt "ProductDescription"
-msgid "Open-source Digital DJ software"
-msgstr "Meziant DJ niverel en Open-source"
-
-msgctxt "Comments"
-msgid "Installs Mixxx"
-msgstr "Staliañ Mixxx"
-
-#. Error messages
-#. DO NOT BREAK LINES BECAUSE LINE BREAKS WILL SHOW UP AS-IS IN THE INTERFACE
-msgctxt "OS2Old"
-msgid "This product requires Windows 7 or above."
-msgstr ""
-
-msgctxt "NewerInstalled"
-msgid "The same or a newer version of this product is already installed."
-msgstr ""
-
-msgctxt "x64VersionRequired"
-msgid ""
-"You need to install the 64-bit version of this product on 64-bit Windows."
-msgstr ""
-
-msgctxt "x86VersionRequired"
-msgid ""
-"You need to install the 32-bit version of this product on 32-bit Windows."
-msgstr ""
-
-msgctxt "x86VersionWarning"
-msgid ""
-"You are about to install the 32-bit version on a 64-bit operating system. We"
-" recommend using the 64-bit version for better performance. You can download"
-" the 64-bit installation package from http://mixxx.org/download/"
-msgstr ""
-
-msgctxt "XPWarning"
-msgid ""
-"You are installing Mixxx on an outdated operating system. Some functions may"
-" not work well or at all. We recommend upgrading your operating system."
-msgstr ""
-
-msgctxt "bitWidthMismatch32"
-msgid ""
-"You are about to install the 32-bit version but a 64-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 64-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr ""
-
-msgctxt "bitWidthMismatch64"
-msgid ""
-"You are about to install the 64-bit version but a 32-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 32-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr ""
-
-msgctxt "OlderVersionFound"
-msgid ""
-"An older version of Mixxx has been detected. As we changed installer, we can"
-" not smoothly upgrade. Please uninstall older version before installing this"
-" one."
-msgstr ""
-
-msgctxt "VCredistNotFound"
-msgid ""
-"Installer was not able to find Microsoft Visual C++ 2015 Redistributable on "
-"this system. This is likely an installer bug that should be reported to "
-"Mixxx developers."
-msgstr ""
-
-#. Custom Warning Dialog
-msgctxt "WarningDlgTitle"
-msgid "{\\WixUI_Font_Title}Warning"
-msgstr ""
-
-#. Custom exit dialog
-msgctxt "StartOnExit"
-msgid "Launch Mixxx when setup exits."
-msgstr ""
-
-#. Features translations
-msgctxt "FeatureCompleteDescription"
-msgid "The complete package."
-msgstr ""
-
-msgctxt "FeatureMainProgramTitle"
-msgid "Core application"
-msgstr ""
-
-msgctxt "FeatureMainProgramDescription"
-msgid "The core Mixxx application including controller presets."
-msgstr ""
-
-msgctxt "FeaturePDBTitle"
-msgid "PDB debug files"
-msgstr ""
-
-msgctxt "FeaturePDBDescription"
-msgid ""
-"Install Mixxx PDB files to use with a debugger. This is useful to debug "
-"Mixxx and provide readable backtraces to the development team."
-msgstr ""
-
-msgctxt "FeatureDesktopShortcutTitle"
-msgid "Desktop Shortcut"
-msgstr ""
-
-msgctxt "FeatureDesktopShortcutDescription"
-msgid "Add a shortcut to Mixxx on your desktop"
-msgstr ""
-
-msgctxt "FeatureManualTitle"
-msgid "User Manual"
-msgstr ""
-
-msgctxt "FeatureManualDescription"
-msgid ""
-"The Mixxx user manual in PDF form, also available at "
-"http://mixxx.org/manual/"
-msgstr ""
-
-msgctxt "FeatureTranslationsTitle"
-msgid "Translations"
-msgstr ""
-
-msgctxt "FeatureTranslationsDescription"
-msgid ""
-"Resource files that allow Mixxx to display in alternate languages, other "
-"than US english"
-msgstr ""
-
-#. Bootstrapper
-msgctxt "Caption"
-msgid "[WixBundleName] Setup"
-msgstr ""
-
-msgctxt "Title"
-msgid "[WixBundleName]"
-msgstr ""
-
-msgctxt "ConfirmCancelMessage"
-msgid "Are you sure you want to cancel?"
-msgstr ""
-
-msgctxt "ExecuteUpgradeRelatedBundleMessage"
-msgid "Previous version"
-msgstr ""
-
-msgctxt "HelpHeader"
-msgid "Setup Help"
-msgstr ""
-
-msgctxt "HelpText"
-msgid ""
-"/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or\n"
-" creates a complete local copy of the bundle in directory.\n"
-" Install is the default.\n"
-"\n"
-" /passive | /quiet - displays minimal user interface with no prompts or displays no user interface\n"
-" and no prompts. By default user interface and all prompts are displayed.\n"
-"\n"
-" /norestart - suppress any attempts to restart. By default user interface will prompt before restart.\n"
-"\n"
-" /log log.txt - logs to a specific file. By default a log file is created in %TEMP%."
-msgstr ""
-
-msgctxt "HelpCloseButton"
-msgid "&Close"
-msgstr "Serriñ"
-
-msgctxt "InstallHeader"
-msgid "Welcome"
-msgstr "Degemer mat"
-
-msgctxt "InstallMessage"
-msgid ""
-"Setup will install Mixxx on your computer.\n"
-"It will first install required third party libraries, then Mixxx itself.\n"
-"Click Install to continue or Close to exit."
-msgstr ""
-
-msgctxt "InstallVersion"
-msgid "Version [WixBundleVersion]"
-msgstr ""
-
-msgctxt "InstallOptionsButton"
-msgid "&Options"
-msgstr ""
-
-msgctxt "InstallInstallButton"
-msgid "&Install"
-msgstr ""
-
-msgctxt "InstallCloseButton"
-msgid "&Close"
-msgstr "Serriñ"
-
-msgctxt "OptionsHeader"
-msgid "Setup Options"
-msgstr ""
-
-msgctxt "OptionsLocationLabel"
-msgid "Install location:"
-msgstr ""
-
-msgctxt "OptionsBrowseButton"
-msgid "&Browse"
-msgstr ""
-
-msgctxt "OptionsOkButton"
-msgid "&OK"
-msgstr "Mat eo"
-
-msgctxt "OptionsCancelButton"
-msgid "&Cancel"
-msgstr "Nullañ"
-
-msgctxt "FilesInUseHeader"
-msgid "Files In Use"
-msgstr ""
-
-msgctxt "FilesInUseLabel"
-msgid "The following applications are using files that need to be updated:"
-msgstr ""
-
-msgctxt "FilesInUseCloseRadioButton"
-msgid "Close the &applications and attempt to restart them."
-msgstr ""
-
-msgctxt "FilesInUseDontCloseRadioButton"
-msgid "&Do not close applications. A reboot will be required."
-msgstr ""
-
-msgctxt "FilesInUseOkButton"
-msgid "&OK"
-msgstr "Mat eo"
-
-msgctxt "FilesInUseCancelButton"
-msgid "&Cancel"
-msgstr "Nullañ"
-
-msgctxt "ProgressHeader"
-msgid "Setup Progress"
-msgstr ""
-
-msgctxt "ProgressLabel"
-msgid "Processing:"
-msgstr ""
-
-msgctxt "OverallProgressPackageText"
-msgid "Initializing..."
-msgstr ""
-
-msgctxt "ProgressCancelButton"
-msgid "&Cancel"
-msgstr "Nullañ"
-
-msgctxt "ModifyHeader"
-msgid "Modify Setup"
-msgstr ""
-
-msgctxt "ModifyRepairButton"
-msgid "&Repair"
-msgstr "Kempenn"
-
-msgctxt "ModifyUninstallButton"
-msgid "&Uninstall"
-msgstr "Distaliañ"
-
-msgctxt "ModifyCloseButton"
-msgid "&Close"
-msgstr "Serriñ"
-
-msgctxt "SuccessHeader"
-msgid "Setup Successful"
-msgstr ""
-
-msgctxt "SuccessInstallHeader"
-msgid "Mixxx installation has been successful"
-msgstr ""
-
-msgctxt "SuccessRepairHeader"
-msgid "Mixxx repair has been successful"
-msgstr ""
-
-msgctxt "SuccessUninstallHeader"
-msgid "Mixxx uninstall has been successful"
-msgstr ""
-
-msgctxt "SuccessLaunchButton"
-msgid "&Launch"
-msgstr "Loc'hañ"
-
-msgctxt "SuccessRestartText"
-msgid "You must restart your computer before you can use the software."
-msgstr ""
-
-msgctxt "SuccessRestartButton"
-msgid "&Restart"
-msgstr "Adloc'hañ"
-
-msgctxt "SuccessCloseButton"
-msgid "&Close"
-msgstr "Serriñ"
-
-msgctxt "FailureHeader"
-msgid "Setup Failed"
-msgstr ""
-
-msgctxt "FailureInstallHeader"
-msgid "Mixxx installation failed"
-msgstr ""
-
-msgctxt "FailureRepairHeader"
-msgid "Mixxx repair failed"
-msgstr ""
-
-msgctxt "FailureUninstallHeader"
-msgid "Mixxx uninstall failed"
-msgstr ""
-
-msgctxt "FailureHyperlinkLogText"
-msgid ""
-"One or more issues caused the setup to fail. Please fix the issues and then "
-"retry setup. For more information see the log file."
-msgstr ""
-
-msgctxt "FailureRestartText"
-msgid ""
-"You must restart your computer to complete the rollback of the software."
-msgstr ""
-
-msgctxt "FailureRestartButton"
-msgid "&Restart"
-msgstr "Adloc'hañ"
-
-msgctxt "FailureCloseButton"
-msgid "&Close"
-msgstr "Serriñ"
diff --git a/build/wix/Localization/po/ca-ES.po b/build/wix/Localization/po/ca-ES.po
deleted file mode 100644
index 389b979be72..00000000000
--- a/build/wix/Localization/po/ca-ES.po
+++ /dev/null
@@ -1,372 +0,0 @@
-#
-# Translators:
-# Benny Beat , 2016
-# Ferran Pujol Camins , 2016
-# Josep Maria Antolin , 2016-2017
-# Josep Maria Antolin , 2016
-# S.Brandt , 2016,2018
-msgid ""
-msgstr ""
-"Project-Id-Version: Mixxx DJ Windows installer\n"
-"PO-Revision-Date: 2019-04-17 21:53+0000\n"
-"Last-Translator: S.Brandt \n"
-"Language-Team: Catalan (Spain) (http://www.transifex.com/mixxx-dj-software/mixxxdj-windows-installer/language/ca_ES/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ca_ES\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#. Programm informations
-msgctxt "ApplicationName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerFullName"
-msgid "The Mixxx Development Team"
-msgstr "L'equip de desenvolupadors del Mixxx"
-
-msgctxt "ProductDescription"
-msgid "Open-source Digital DJ software"
-msgstr "Programari de DJ digital de codi obert"
-
-msgctxt "Comments"
-msgid "Installs Mixxx"
-msgstr "Instal·la el Mixxx"
-
-#. Error messages
-#. DO NOT BREAK LINES BECAUSE LINE BREAKS WILL SHOW UP AS-IS IN THE INTERFACE
-msgctxt "OS2Old"
-msgid "This product requires Windows 7 or above."
-msgstr "Aquesta aplicació requereix Windows 7 o una versió més recent."
-
-msgctxt "NewerInstalled"
-msgid "The same or a newer version of this product is already installed."
-msgstr "Ja teniu instal·lada aquesta versió del Mixxx o una més recent."
-
-msgctxt "x64VersionRequired"
-msgid ""
-"You need to install the 64-bit version of this product on 64-bit Windows."
-msgstr "Heu d'instal·lar la versió de 64 bits d'aquest producte en un Windows de 64 bits."
-
-msgctxt "x86VersionRequired"
-msgid ""
-"You need to install the 32-bit version of this product on 32-bit Windows."
-msgstr "Heu d'instal·lar la versió de 32 bits d'aquest producte en un Windows de 32 bits."
-
-msgctxt "x86VersionWarning"
-msgid ""
-"You are about to install the 32-bit version on a 64-bit operating system. We"
-" recommend using the 64-bit version for better performance. You can download"
-" the 64-bit installation package from http://mixxx.org/download/"
-msgstr "Esteu a punt d'instal·lar la versió de 32 bits en un sistema operatiu de 64 bits. Recomanem utilitzar la versió de 64 bits per a un millor rendiment. Podeu baixar l'instal·lador de la versió de 64 bits des de http://mixxx.org/download/"
-
-msgctxt "XPWarning"
-msgid ""
-"You are installing Mixxx on an outdated operating system. Some functions may"
-" not work well or at all. We recommend upgrading your operating system."
-msgstr "Esteu instal·lant el Mixxx en un sistema operatiu obsolet. Algunes funcionalitats poden no funcionar correctament. Recomanem actualitzar el sistema operatiu."
-
-msgctxt "bitWidthMismatch32"
-msgid ""
-"You are about to install the 32-bit version but a 64-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 64-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "Esteu a punt d'instal·lar la versió de 32 bits tot i que teniu instal·lada una versió de 64 bits. Això pot provocar un comportament no desitjat. Desinstal·leu primer la versió existent del Mixxx o baixeu l'instal·lador de 64 bits per actualitzar la versió (a no ser que sapigueu exactament què esteu fent)."
-
-msgctxt "bitWidthMismatch64"
-msgid ""
-"You are about to install the 64-bit version but a 32-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 32-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "Esteu a punt d'instal·lar la versió de 64 bits tot i que teniu instal·lada una versió de 32 bits. Això pot provocar un comportament no desitjat. Desinstal·leu primer la versió existent del Mixxx o baixeu l'instal·lador de 32 bits per a actualitzar la versió (a no ser que sapigueu exactament què esteu fent)."
-
-msgctxt "OlderVersionFound"
-msgid ""
-"An older version of Mixxx has been detected. As we changed installer, we can"
-" not smoothly upgrade. Please uninstall older version before installing this"
-" one."
-msgstr "S'ha detectat una versió anterior del Mixxx. Atès la limitació de l'instal·lador, no és possible actualitzar automàticament. Desinstal·leu la versió existent abans d'instal·lar aquesta versió."
-
-msgctxt "VCredistNotFound"
-msgid ""
-"Installer was not able to find Microsoft Visual C++ 2015 Redistributable on "
-"this system. This is likely an installer bug that should be reported to "
-"Mixxx developers."
-msgstr "L'instal·lador no ha trobat les llibreries de Microsoft Visual C++ 2015 en aquest ordinador. Probablement es tracta d'un error de l'instal·lador que hauríeu de reportar als desenvolupadors del Mixxx."
-
-#. Custom Warning Dialog
-msgctxt "WarningDlgTitle"
-msgid "{\\WixUI_Font_Title}Warning"
-msgstr "{\\WixUI_Font_Title}Avís"
-
-#. Custom exit dialog
-msgctxt "StartOnExit"
-msgid "Launch Mixxx when setup exits."
-msgstr "Inicia el Mixxx en acabar la instal·lació."
-
-#. Features translations
-msgctxt "FeatureCompleteDescription"
-msgid "The complete package."
-msgstr "El paquet complet."
-
-msgctxt "FeatureMainProgramTitle"
-msgid "Core application"
-msgstr "L'aplicació."
-
-msgctxt "FeatureMainProgramDescription"
-msgid "The core Mixxx application including controller presets."
-msgstr "L'aplicació Mixxx incloent les configuracions per defecte de diversos controladors."
-
-msgctxt "FeaturePDBTitle"
-msgid "PDB debug files"
-msgstr "Fitxers PDB de depuració"
-
-msgctxt "FeaturePDBDescription"
-msgid ""
-"Install Mixxx PDB files to use with a debugger. This is useful to debug "
-"Mixxx and provide readable backtraces to the development team."
-msgstr "Instal·la els fitxers PDB del Mixxx per utilitzar-los amb un depurador. Això és útil per depurar el Mixxx i poder enviar traces entenedores a l'equip de desenvolupadors."
-
-msgctxt "FeatureDesktopShortcutTitle"
-msgid "Desktop Shortcut"
-msgstr "Crea una icona a l'escriptori"
-
-msgctxt "FeatureDesktopShortcutDescription"
-msgid "Add a shortcut to Mixxx on your desktop"
-msgstr "Afegeix un accés directe al Mixxx a l'escriptori"
-
-msgctxt "FeatureManualTitle"
-msgid "User Manual"
-msgstr "Manual d'usuari"
-
-msgctxt "FeatureManualDescription"
-msgid ""
-"The Mixxx user manual in PDF form, also available at "
-"http://mixxx.org/manual/"
-msgstr "El Manual d'usuari del Mixxx en format PDF i disponible a http://mixxx.org/manual/"
-
-msgctxt "FeatureTranslationsTitle"
-msgid "Translations"
-msgstr "Traduccions"
-
-msgctxt "FeatureTranslationsDescription"
-msgid ""
-"Resource files that allow Mixxx to display in alternate languages, other "
-"than US english"
-msgstr "Fitxers de recursos addicionals que permeten mostrar el Mixxx en idiomes alternatius a l'anglès."
-
-#. Bootstrapper
-msgctxt "Caption"
-msgid "[WixBundleName] Setup"
-msgstr "[WixBundleName] Configuració"
-
-msgctxt "Title"
-msgid "[WixBundleName]"
-msgstr "[WixBundleName]"
-
-msgctxt "ConfirmCancelMessage"
-msgid "Are you sure you want to cancel?"
-msgstr "Confirmeu que voleu cancel·lar?"
-
-msgctxt "ExecuteUpgradeRelatedBundleMessage"
-msgid "Previous version"
-msgstr "Versió prèvia"
-
-msgctxt "HelpHeader"
-msgid "Setup Help"
-msgstr "Ajuda sobre la configuració"
-
-msgctxt "HelpText"
-msgid ""
-"/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or\n"
-" creates a complete local copy of the bundle in directory.\n"
-" Install is the default.\n"
-"\n"
-" /passive | /quiet - displays minimal user interface with no prompts or displays no user interface\n"
-" and no prompts. By default user interface and all prompts are displayed.\n"
-"\n"
-" /norestart - suppress any attempts to restart. By default user interface will prompt before restart.\n"
-"\n"
-" /log log.txt - logs to a specific file. By default a log file is created in %TEMP%."
-msgstr "/install | /repair | /uninstall | /layout [directory] - instal·la, repara, desinstal·la or\n genera una copia completa en el directori indicat.\n La opció per defectes és instal·la.\n\n /passive | /quiet - mostra una interfície mínima sense preguntes, o bé no mostra ni pregunta res.\n Per defecte, es mostra la interfície i es demana confirmació.\n\n /norestart - descarta els intents de reiniciar per part de l'instal·lador. Per defecte, es demana a l'usuari si vol reiniciar.\n\n /log log.txt - Escriu el log de la instal·lació en el fitxer indicat. Per defecte es crea en el directori %TEMP%."
-
-msgctxt "HelpCloseButton"
-msgid "&Close"
-msgstr "&Tanca"
-
-msgctxt "InstallHeader"
-msgid "Welcome"
-msgstr "Benvinguts"
-
-msgctxt "InstallMessage"
-msgid ""
-"Setup will install Mixxx on your computer.\n"
-"It will first install required third party libraries, then Mixxx itself.\n"
-"Click Install to continue or Close to exit."
-msgstr "Aquesta aplicació instal·larà el Mixxx en el vostre ordinador.\nPrimer instal·larà les llibreries de tercers necessaries, i després el Mixxx.\nFeu clic a Instal·la per continuar o Tanca per sortir."
-
-msgctxt "InstallVersion"
-msgid "Version [WixBundleVersion]"
-msgstr "Versió [WixBundleVersion]"
-
-msgctxt "InstallOptionsButton"
-msgid "&Options"
-msgstr "&Opcions"
-
-msgctxt "InstallInstallButton"
-msgid "&Install"
-msgstr "&Instal·la"
-
-msgctxt "InstallCloseButton"
-msgid "&Close"
-msgstr "&Tanca"
-
-msgctxt "OptionsHeader"
-msgid "Setup Options"
-msgstr "Opcions de configuració"
-
-msgctxt "OptionsLocationLabel"
-msgid "Install location:"
-msgstr "Carpeta de destinació:"
-
-msgctxt "OptionsBrowseButton"
-msgid "&Browse"
-msgstr "&Navega"
-
-msgctxt "OptionsOkButton"
-msgid "&OK"
-msgstr "&Accepta"
-
-msgctxt "OptionsCancelButton"
-msgid "&Cancel"
-msgstr "&Cancel·la"
-
-msgctxt "FilesInUseHeader"
-msgid "Files In Use"
-msgstr "Fitxers en ús"
-
-msgctxt "FilesInUseLabel"
-msgid "The following applications are using files that need to be updated:"
-msgstr "Les següents aplicacions estan utilitzant fitxers que cal actualitzar:"
-
-msgctxt "FilesInUseCloseRadioButton"
-msgid "Close the &applications and attempt to restart them."
-msgstr "Tanca les &aplicacions i intenta reiniciar-les després."
-
-msgctxt "FilesInUseDontCloseRadioButton"
-msgid "&Do not close applications. A reboot will be required."
-msgstr "&No tanquis les aplicacions. Serà necessari reiniciar."
-
-msgctxt "FilesInUseOkButton"
-msgid "&OK"
-msgstr "Accepta"
-
-msgctxt "FilesInUseCancelButton"
-msgid "&Cancel"
-msgstr "&Cancel·la"
-
-msgctxt "ProgressHeader"
-msgid "Setup Progress"
-msgstr "Progrés de la instal·lació"
-
-msgctxt "ProgressLabel"
-msgid "Processing:"
-msgstr "Processant:"
-
-msgctxt "OverallProgressPackageText"
-msgid "Initializing..."
-msgstr "Inicialitzant..."
-
-msgctxt "ProgressCancelButton"
-msgid "&Cancel"
-msgstr "&Cancel·la"
-
-msgctxt "ModifyHeader"
-msgid "Modify Setup"
-msgstr "Canvia la configuració"
-
-msgctxt "ModifyRepairButton"
-msgid "&Repair"
-msgstr "&Repara"
-
-msgctxt "ModifyUninstallButton"
-msgid "&Uninstall"
-msgstr "&Desinstal·la"
-
-msgctxt "ModifyCloseButton"
-msgid "&Close"
-msgstr "&Tanca"
-
-msgctxt "SuccessHeader"
-msgid "Setup Successful"
-msgstr "Configuració correcta"
-
-msgctxt "SuccessInstallHeader"
-msgid "Mixxx installation has been successful"
-msgstr "La instal·lació del Mixxx s'ha realitzat correctament"
-
-msgctxt "SuccessRepairHeader"
-msgid "Mixxx repair has been successful"
-msgstr "La reparació del Mixxx s'ha realitzat correctament"
-
-msgctxt "SuccessUninstallHeader"
-msgid "Mixxx uninstall has been successful"
-msgstr "La desinstal·lació del Mixxx s'ha realitzat correctament"
-
-msgctxt "SuccessLaunchButton"
-msgid "&Launch"
-msgstr "&Inicia"
-
-msgctxt "SuccessRestartText"
-msgid "You must restart your computer before you can use the software."
-msgstr "Heu de reiniciar l'ordinador abans de poder utilitzar l'aplicació."
-
-msgctxt "SuccessRestartButton"
-msgid "&Restart"
-msgstr "&Reinicia"
-
-msgctxt "SuccessCloseButton"
-msgid "&Close"
-msgstr "&Tanca"
-
-msgctxt "FailureHeader"
-msgid "Setup Failed"
-msgstr "Configuració fallida"
-
-msgctxt "FailureInstallHeader"
-msgid "Mixxx installation failed"
-msgstr "La instal·lació del Mixxx ha fallat"
-
-msgctxt "FailureRepairHeader"
-msgid "Mixxx repair failed"
-msgstr "La reparació del Mixxx ha fallat"
-
-msgctxt "FailureUninstallHeader"
-msgid "Mixxx uninstall failed"
-msgstr "La desinstal·lació del Mixxx ha fallat"
-
-msgctxt "FailureHyperlinkLogText"
-msgid ""
-"One or more issues caused the setup to fail. Please fix the issues and then "
-"retry setup. For more information see the log file."
-msgstr "Hi ha hagut un o més problemes durant la instal·lació. Si us plau, corregiu-los i intenteu-ho de nou. Per a més informació consulteu el fitxer de log."
-
-msgctxt "FailureRestartText"
-msgid ""
-"You must restart your computer to complete the rollback of the software."
-msgstr "Heu de reiniciar l'ordinador per acabar de restaurar el sistema a abans de la instal·lació."
-
-msgctxt "FailureRestartButton"
-msgid "&Restart"
-msgstr "&Reinicia"
-
-msgctxt "FailureCloseButton"
-msgid "&Close"
-msgstr "&Tanca"
diff --git a/build/wix/Localization/po/cs-CZ.po b/build/wix/Localization/po/cs-CZ.po
deleted file mode 100644
index 1cc73f90ad0..00000000000
--- a/build/wix/Localization/po/cs-CZ.po
+++ /dev/null
@@ -1,372 +0,0 @@
-#
-# Translators:
-# Filip Klačanský , 2018
-# fri, 2016-2017
-# S.Brandt , 2018
-# Sebastien BLAISOT , 2016
-# Sebastien BLAISOT , 2016
-msgid ""
-msgstr ""
-"Project-Id-Version: Mixxx DJ Windows installer\n"
-"PO-Revision-Date: 2019-04-17 21:53+0000\n"
-"Last-Translator: S.Brandt \n"
-"Language-Team: Czech (Czech Republic) (http://www.transifex.com/mixxx-dj-software/mixxxdj-windows-installer/language/cs_CZ/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: cs_CZ\n"
-"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
-
-#. Programm informations
-msgctxt "ApplicationName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerFullName"
-msgid "The Mixxx Development Team"
-msgstr "Vývojáři Mixxxu"
-
-msgctxt "ProductDescription"
-msgid "Open-source Digital DJ software"
-msgstr "Program s otevřeným zdrojovým kódem pro diskžokeje"
-
-msgctxt "Comments"
-msgid "Installs Mixxx"
-msgstr "Nainstaluje Mixxx"
-
-#. Error messages
-#. DO NOT BREAK LINES BECAUSE LINE BREAKS WILL SHOW UP AS-IS IN THE INTERFACE
-msgctxt "OS2Old"
-msgid "This product requires Windows 7 or above."
-msgstr "Tento výrobek vyžaduje Windows 7 nebo vyšší."
-
-msgctxt "NewerInstalled"
-msgid "The same or a newer version of this product is already installed."
-msgstr "Již je nainstalována stejná nebo novější verze tohoto výrobku."
-
-msgctxt "x64VersionRequired"
-msgid ""
-"You need to install the 64-bit version of this product on 64-bit Windows."
-msgstr "Do 64bitových Windows musíte nainstalovat 64bitovou verzi tohoto výrobku."
-
-msgctxt "x86VersionRequired"
-msgid ""
-"You need to install the 32-bit version of this product on 32-bit Windows."
-msgstr "Do 32bitových Windows musíte nainstalovat 32bitovou verzi tohoto výrobku."
-
-msgctxt "x86VersionWarning"
-msgid ""
-"You are about to install the 32-bit version on a 64-bit operating system. We"
-" recommend using the 64-bit version for better performance. You can download"
-" the 64-bit installation package from http://mixxx.org/download/"
-msgstr "Chystáte se nainstalovat 32bitovou verzi do 64bitového operačního systému. Doporučujeme použít 64bitovou verzi kvůli lepšímu výkonu. Instalační balíček pro 64bitový systém můžete stáhnout z http://mixxx.org/download/"
-
-msgctxt "XPWarning"
-msgid ""
-"You are installing Mixxx on an outdated operating system. Some functions may"
-" not work well or at all. We recommend upgrading your operating system."
-msgstr "Instalujete Mixxx do zastaralého operačního systému. Některé funkce nemusí pracovat dobře, nebo nebudou pracovat vůbec. Doporučujeme vám povýšení operačního sytému."
-
-msgctxt "bitWidthMismatch32"
-msgid ""
-"You are about to install the 32-bit version but a 64-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 64-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "Chystáte se nainstalovat 32bitovou verzi, ale již je nainstalována 64bitová verze.\nTo může vést k neobvyklému chování. Odinstalujte, prosím, nejprve stávající verzi Mixxxu, nebo pro povýšení verze stáhněte instalační balíček pro 64bitový systém (pokud přesně nevíte, co děláte)."
-
-msgctxt "bitWidthMismatch64"
-msgid ""
-"You are about to install the 64-bit version but a 32-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 32-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "Chystáte se nainstalovat 64bitovou verzi, ale již je nainstalována 32bitová verze.\nTo může vést k neobvyklému chování. Odinstalujte, prosím, nejprve stávající verzi Mixxxu, nebo pro povýšení verze stáhněte instalační balíček pro 32bitový systém (pokud přesně nevíte, co děláte)."
-
-msgctxt "OlderVersionFound"
-msgid ""
-"An older version of Mixxx has been detected. As we changed installer, we can"
-" not smoothly upgrade. Please uninstall older version before installing this"
-" one."
-msgstr "Byla zjištěna starší verze Mixxxu. Protože byl změněn instalátor, není možné povýšení provést hladce. Odinstalujte, prosím, starší verzi, předtím než začnete instalovat tuto."
-
-msgctxt "VCredistNotFound"
-msgid ""
-"Installer was not able to find Microsoft Visual C++ 2015 Redistributable on "
-"this system. This is likely an installer bug that should be reported to "
-"Mixxx developers."
-msgstr ""
-
-#. Custom Warning Dialog
-msgctxt "WarningDlgTitle"
-msgid "{\\WixUI_Font_Title}Warning"
-msgstr "{\\WixUI_Font_Title}Varování"
-
-#. Custom exit dialog
-msgctxt "StartOnExit"
-msgid "Launch Mixxx when setup exits."
-msgstr "Spustit Mixxx, když existuje nastavení."
-
-#. Features translations
-msgctxt "FeatureCompleteDescription"
-msgid "The complete package."
-msgstr "Úplný balíček."
-
-msgctxt "FeatureMainProgramTitle"
-msgid "Core application"
-msgstr "Hlavní aplikace"
-
-msgctxt "FeatureMainProgramDescription"
-msgid "The core Mixxx application including controller presets."
-msgstr "Hlavní aplikace Mixxxu včetně přednastavení ovladačů."
-
-msgctxt "FeaturePDBTitle"
-msgid "PDB debug files"
-msgstr "Soubory ladění PDB"
-
-msgctxt "FeaturePDBDescription"
-msgid ""
-"Install Mixxx PDB files to use with a debugger. This is useful to debug "
-"Mixxx and provide readable backtraces to the development team."
-msgstr "Nainstalujte soubory PDB Mixxxu k použití s ladičem. Toto je užitečné na ladění Mixxxu a poskytuje vývojářskému družstvu čitelné stopy."
-
-msgctxt "FeatureDesktopShortcutTitle"
-msgid "Desktop Shortcut"
-msgstr "Klávesová zkratka"
-
-msgctxt "FeatureDesktopShortcutDescription"
-msgid "Add a shortcut to Mixxx on your desktop"
-msgstr "Přidat klávesovou zkratku pro Mixxx na pracovní plochu"
-
-msgctxt "FeatureManualTitle"
-msgid "User Manual"
-msgstr "Uživatelská příručka"
-
-msgctxt "FeatureManualDescription"
-msgid ""
-"The Mixxx user manual in PDF form, also available at "
-"http://mixxx.org/manual/"
-msgstr "Uživatelská příručka Mixxxu v podobě PDF, dostupná též na http://mixxx.org/manual/"
-
-msgctxt "FeatureTranslationsTitle"
-msgid "Translations"
-msgstr "Překlady"
-
-msgctxt "FeatureTranslationsDescription"
-msgid ""
-"Resource files that allow Mixxx to display in alternate languages, other "
-"than US english"
-msgstr "Zdrojové soubory, které Mixxx umožní provedení instalace Mixxxu v jiných jazycích, než je americká angličtina"
-
-#. Bootstrapper
-msgctxt "Caption"
-msgid "[WixBundleName] Setup"
-msgstr "[wixBundleName]Instalace"
-
-msgctxt "Title"
-msgid "[WixBundleName]"
-msgstr ""
-
-msgctxt "ConfirmCancelMessage"
-msgid "Are you sure you want to cancel?"
-msgstr "Chcete opravdu ukončit instalaci ? "
-
-msgctxt "ExecuteUpgradeRelatedBundleMessage"
-msgid "Previous version"
-msgstr "Předchozí verze"
-
-msgctxt "HelpHeader"
-msgid "Setup Help"
-msgstr "Nápověda k instalaci."
-
-msgctxt "HelpText"
-msgid ""
-"/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or\n"
-" creates a complete local copy of the bundle in directory.\n"
-" Install is the default.\n"
-"\n"
-" /passive | /quiet - displays minimal user interface with no prompts or displays no user interface\n"
-" and no prompts. By default user interface and all prompts are displayed.\n"
-"\n"
-" /norestart - suppress any attempts to restart. By default user interface will prompt before restart.\n"
-"\n"
-" /log log.txt - logs to a specific file. By default a log file is created in %TEMP%."
-msgstr ""
-
-msgctxt "HelpCloseButton"
-msgid "&Close"
-msgstr "Zavřít."
-
-msgctxt "InstallHeader"
-msgid "Welcome"
-msgstr "Vítejte."
-
-msgctxt "InstallMessage"
-msgid ""
-"Setup will install Mixxx on your computer.\n"
-"It will first install required third party libraries, then Mixxx itself.\n"
-"Click Install to continue or Close to exit."
-msgstr "Mixx bude nainstalován na váš počítač.\nNejprve nainstaluje požadované knihovny, potom samotní Mixx.\nKliknete Instalovat pro pokračování nebo Zavřít pro ukončení."
-
-msgctxt "InstallVersion"
-msgid "Version [WixBundleVersion]"
-msgstr "Verze [WixBundleVersion]"
-
-msgctxt "InstallOptionsButton"
-msgid "&Options"
-msgstr "Možnosti"
-
-msgctxt "InstallInstallButton"
-msgid "&Install"
-msgstr "Instalovat"
-
-msgctxt "InstallCloseButton"
-msgid "&Close"
-msgstr "Ukončit"
-
-msgctxt "OptionsHeader"
-msgid "Setup Options"
-msgstr "Nastavení instalace"
-
-msgctxt "OptionsLocationLabel"
-msgid "Install location:"
-msgstr "Umístnení instalace"
-
-msgctxt "OptionsBrowseButton"
-msgid "&Browse"
-msgstr "Prohledávat"
-
-msgctxt "OptionsOkButton"
-msgid "&OK"
-msgstr "OK"
-
-msgctxt "OptionsCancelButton"
-msgid "&Cancel"
-msgstr "Ukončit"
-
-msgctxt "FilesInUseHeader"
-msgid "Files In Use"
-msgstr "Používané soubory"
-
-msgctxt "FilesInUseLabel"
-msgid "The following applications are using files that need to be updated:"
-msgstr "Tyto aplikace používají soubory, které je třeba aktualizovat:"
-
-msgctxt "FilesInUseCloseRadioButton"
-msgid "Close the &applications and attempt to restart them."
-msgstr "Zavřít aplikace a pokusit se je restartovat. "
-
-msgctxt "FilesInUseDontCloseRadioButton"
-msgid "&Do not close applications. A reboot will be required."
-msgstr "Nezavírejte tyto aplikace. Požaduje se restart. "
-
-msgctxt "FilesInUseOkButton"
-msgid "&OK"
-msgstr "OK"
-
-msgctxt "FilesInUseCancelButton"
-msgid "&Cancel"
-msgstr "Ukončit"
-
-msgctxt "ProgressHeader"
-msgid "Setup Progress"
-msgstr "Průběh instalace"
-
-msgctxt "ProgressLabel"
-msgid "Processing:"
-msgstr "Spracováva se: "
-
-msgctxt "OverallProgressPackageText"
-msgid "Initializing..."
-msgstr "Načítávam..."
-
-msgctxt "ProgressCancelButton"
-msgid "&Cancel"
-msgstr "Ukončit"
-
-msgctxt "ModifyHeader"
-msgid "Modify Setup"
-msgstr "Upravit Instalaci"
-
-msgctxt "ModifyRepairButton"
-msgid "&Repair"
-msgstr "Opravit"
-
-msgctxt "ModifyUninstallButton"
-msgid "&Uninstall"
-msgstr "Odinstalovat"
-
-msgctxt "ModifyCloseButton"
-msgid "&Close"
-msgstr "Ukončit"
-
-msgctxt "SuccessHeader"
-msgid "Setup Successful"
-msgstr "Instalace úspěšná"
-
-msgctxt "SuccessInstallHeader"
-msgid "Mixxx installation has been successful"
-msgstr "Mixxx byl úspěšne nainstalován"
-
-msgctxt "SuccessRepairHeader"
-msgid "Mixxx repair has been successful"
-msgstr "Mixxx byl úspěšne nainstalován"
-
-msgctxt "SuccessUninstallHeader"
-msgid "Mixxx uninstall has been successful"
-msgstr "Mixx byl úspěšne odinstalován"
-
-msgctxt "SuccessLaunchButton"
-msgid "&Launch"
-msgstr "Spustit"
-
-msgctxt "SuccessRestartText"
-msgid "You must restart your computer before you can use the software."
-msgstr "Prosím restartujte počítač pro bezchybný chod softwaru. "
-
-msgctxt "SuccessRestartButton"
-msgid "&Restart"
-msgstr "Restartovat"
-
-msgctxt "SuccessCloseButton"
-msgid "&Close"
-msgstr "Ukončit"
-
-msgctxt "FailureHeader"
-msgid "Setup Failed"
-msgstr "Instalace se nezdařila"
-
-msgctxt "FailureInstallHeader"
-msgid "Mixxx installation failed"
-msgstr "Mixxx instalace zlyhala"
-
-msgctxt "FailureRepairHeader"
-msgid "Mixxx repair failed"
-msgstr "Mixxx oprava zlyhala"
-
-msgctxt "FailureUninstallHeader"
-msgid "Mixxx uninstall failed"
-msgstr "Mixxx odinstalování zlyhalo"
-
-msgctxt "FailureHyperlinkLogText"
-msgid ""
-"One or more issues caused the setup to fail. Please fix the issues and then "
-"retry setup. For more information see the log file."
-msgstr ""
-
-msgctxt "FailureRestartText"
-msgid ""
-"You must restart your computer to complete the rollback of the software."
-msgstr "Je potřebné restartovat počítač pro dokončení vrácení instalace."
-
-msgctxt "FailureRestartButton"
-msgid "&Restart"
-msgstr "Restartovat"
-
-msgctxt "FailureCloseButton"
-msgid "&Close"
-msgstr "Ukončit"
diff --git a/build/wix/Localization/po/de-DE.po b/build/wix/Localization/po/de-DE.po
deleted file mode 100644
index 4501946c0dd..00000000000
--- a/build/wix/Localization/po/de-DE.po
+++ /dev/null
@@ -1,372 +0,0 @@
-#
-# Translators:
-# Klaus Michael Bredt , 2016
-# Klaus Michael Bredt , 2016
-# S.Brandt , 2017-2018
-# Sebastien BLAISOT , 2016-2017
-# Sebastien BLAISOT , 2016
-msgid ""
-msgstr ""
-"Project-Id-Version: Mixxx DJ Windows installer\n"
-"PO-Revision-Date: 2019-04-28 06:05+0000\n"
-"Last-Translator: S.Brandt \n"
-"Language-Team: German (Germany) (http://www.transifex.com/mixxx-dj-software/mixxxdj-windows-installer/language/de_DE/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de_DE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#. Programm informations
-msgctxt "ApplicationName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerFullName"
-msgid "The Mixxx Development Team"
-msgstr "Das Mixxx-Entwicklungsteam"
-
-msgctxt "ProductDescription"
-msgid "Open-source Digital DJ software"
-msgstr "Open-Source Digital DJ-Software"
-
-msgctxt "Comments"
-msgid "Installs Mixxx"
-msgstr "Installiert Mixxx"
-
-#. Error messages
-#. DO NOT BREAK LINES BECAUSE LINE BREAKS WILL SHOW UP AS-IS IN THE INTERFACE
-msgctxt "OS2Old"
-msgid "This product requires Windows 7 or above."
-msgstr "Dieses Produkt erfordert Windows 7 oder höher."
-
-msgctxt "NewerInstalled"
-msgid "The same or a newer version of this product is already installed."
-msgstr "Die gleiche oder eine neuere Version dieses Produkts ist bereits installiert."
-
-msgctxt "x64VersionRequired"
-msgid ""
-"You need to install the 64-bit version of this product on 64-bit Windows."
-msgstr "Sie müssen die 64-Bit-Version dieses Produkts auf 64-Bit-Windows installieren."
-
-msgctxt "x86VersionRequired"
-msgid ""
-"You need to install the 32-bit version of this product on 32-bit Windows."
-msgstr "Sie müssen die 32-Bit-Version dieses Produkts auf 32-Bit-Windows installieren."
-
-msgctxt "x86VersionWarning"
-msgid ""
-"You are about to install the 32-bit version on a 64-bit operating system. We"
-" recommend using the 64-bit version for better performance. You can download"
-" the 64-bit installation package from http://mixxx.org/download/"
-msgstr "Sie installieren gerade die 32-Bit-Version auf einem 64-Bit-Betriebssystem. Wir empfehlen stattdessen die 64-Bit-Version für eine bessere Performance zu installieren. Sie können das 64-Bit-Installationspaket hier herunterladen: http://mixxx.org/download/"
-
-msgctxt "XPWarning"
-msgid ""
-"You are installing Mixxx on an outdated operating system. Some functions may"
-" not work well or at all. We recommend upgrading your operating system."
-msgstr "Sie installieren Mixxx auf einem veralteten Betriebssystem. Einige Funktionen arbeiten möglicherweise nicht korrekt oder überhaupt nicht. Wir empfehlen die Aktualisierung Ihres Betriebssystems."
-
-msgctxt "bitWidthMismatch32"
-msgid ""
-"You are about to install the 32-bit version but a 64-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 64-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "Sie sind dabei, die 32-Bit-Version zu installieren, aber eine 64-Bit-Version ist bereits installiert. Dies kann zu unerwünschtem Verhalten führen. Bitte deinstallieren Sie zuerst die vorhandene Mixxx Version oder laden Sie das 64-Bit-Installationspaket zum Aktualisieren (es sei denn, Sie wissen genau was Sie tun.)"
-
-msgctxt "bitWidthMismatch64"
-msgid ""
-"You are about to install the 64-bit version but a 32-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 32-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "Sie sind dabei, die 64-Bit-Version zu installieren, aber eine 32-Bit-Version ist bereits installiert. Dies kann zu unerwünschtem Verhalten führen. Bitte deinstallieren Sie zuerst die vorhandene Mixxx Version oder laden Sie das 32-Bit-Installationspaket zum Aktualisieren (es sei denn, Sie wissen genau was Sie tun.)"
-
-msgctxt "OlderVersionFound"
-msgid ""
-"An older version of Mixxx has been detected. As we changed installer, we can"
-" not smoothly upgrade. Please uninstall older version before installing this"
-" one."
-msgstr "Eine ältere Version von Mixxx wurde erkannt. Da wir die Installer-Software geändert haben, können wir nicht problemlos aktualisieren. Bitte deinstallieren Sie die ältere Version vor der Installation dieser neuen Version."
-
-msgctxt "VCredistNotFound"
-msgid ""
-"Installer was not able to find Microsoft Visual C++ 2015 Redistributable on "
-"this system. This is likely an installer bug that should be reported to "
-"Mixxx developers."
-msgstr "Das Installationsprogramm war nicht in der Lage Microsoft Visual C ++ 2015 Redistributable auf diesem System zu finden. Dies ist wahrscheinlich ein Bug des Installationsprogramms, der an Mixxx-Entwickler gemeldet werden sollte."
-
-#. Custom Warning Dialog
-msgctxt "WarningDlgTitle"
-msgid "{\\WixUI_Font_Title}Warning"
-msgstr "{\\WixUI_Font_Title}Warnung"
-
-#. Custom exit dialog
-msgctxt "StartOnExit"
-msgid "Launch Mixxx when setup exits."
-msgstr "Mixxx starten wenn das Setup abgeschlossen ist."
-
-#. Features translations
-msgctxt "FeatureCompleteDescription"
-msgid "The complete package."
-msgstr "Das Komplettpaket."
-
-msgctxt "FeatureMainProgramTitle"
-msgid "Core application"
-msgstr "Kernanwendung"
-
-msgctxt "FeatureMainProgramDescription"
-msgid "The core Mixxx application including controller presets."
-msgstr "Die Mixxx Kernanwendung einschließlich Controller-Voreinstellungen."
-
-msgctxt "FeaturePDBTitle"
-msgid "PDB debug files"
-msgstr "PDB-Debug-Dateien"
-
-msgctxt "FeaturePDBDescription"
-msgid ""
-"Install Mixxx PDB files to use with a debugger. This is useful to debug "
-"Mixxx and provide readable backtraces to the development team."
-msgstr "Installiere Mixxx PDB-Dateien für die Verwendung mit einem Debugger. Dies ist nützlich, um Mixxx zu debuggen und dem Entwicklungsteam lesbare Backtraces zur Verfügung zu stellen."
-
-msgctxt "FeatureDesktopShortcutTitle"
-msgid "Desktop Shortcut"
-msgstr "Desktop-Verknüpfung"
-
-msgctxt "FeatureDesktopShortcutDescription"
-msgid "Add a shortcut to Mixxx on your desktop"
-msgstr "Auf Ihrem Desktop eine Verknüpfung zu Mixxx hinzufügen"
-
-msgctxt "FeatureManualTitle"
-msgid "User Manual"
-msgstr "Benutzerhandbuch"
-
-msgctxt "FeatureManualDescription"
-msgid ""
-"The Mixxx user manual in PDF form, also available at "
-"http://mixxx.org/manual/"
-msgstr "Das Mixxx Benutzerhandbuch im PDF-Format, auch verfügbar auf http://mixxx.org/manual/"
-
-msgctxt "FeatureTranslationsTitle"
-msgid "Translations"
-msgstr "Übersetzungen"
-
-msgctxt "FeatureTranslationsDescription"
-msgid ""
-"Resource files that allow Mixxx to display in alternate languages, other "
-"than US english"
-msgstr "Ressource-Dateien um Mixxx außer in US-Englisch in alternativen Sprachen anzeigen lassen"
-
-#. Bootstrapper
-msgctxt "Caption"
-msgid "[WixBundleName] Setup"
-msgstr "[WixBundleName] Setup"
-
-msgctxt "Title"
-msgid "[WixBundleName]"
-msgstr "[WixBundleName]"
-
-msgctxt "ConfirmCancelMessage"
-msgid "Are you sure you want to cancel?"
-msgstr "Sind Sie sicher, dass Sie abbrechen möchten?"
-
-msgctxt "ExecuteUpgradeRelatedBundleMessage"
-msgid "Previous version"
-msgstr "Vorherige Version"
-
-msgctxt "HelpHeader"
-msgid "Setup Help"
-msgstr "Setup-Hilfe"
-
-msgctxt "HelpText"
-msgid ""
-"/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or\n"
-" creates a complete local copy of the bundle in directory.\n"
-" Install is the default.\n"
-"\n"
-" /passive | /quiet - displays minimal user interface with no prompts or displays no user interface\n"
-" and no prompts. By default user interface and all prompts are displayed.\n"
-"\n"
-" /norestart - suppress any attempts to restart. By default user interface will prompt before restart.\n"
-"\n"
-" /log log.txt - logs to a specific file. By default a log file is created in %TEMP%."
-msgstr "/install | /repair | /uninstall | /layout [Verzeichnis] - Installiert, repariert, deinstalliert\noder erstellt eine komplette lokale Kopie des Pakets im Verzeichnis\nInstallation ist die Standardeinstellung.\n\n /passive | /quiet - Zeigt minimale Benutzeroberfläche ohne Eingabeaufforderungen an oder\nzeigt keine Benutzeroberfläche und keine Eingabeaufforderungen. Standardmäßig werden Benutzeroberfläche und alle Eingabeaufforderungen angezeigt.\n\n /norestart - Unterdrückt Versuche neu zu starten. Standardmäßig wird die Benutzeroberfläche zum Neustart auffordern.\n\n /log log.txt - Protokolliert in eine bestimmte Datei. Standardmäßig wird eine Protokolldatei in % TEMP% erstellt."
-
-msgctxt "HelpCloseButton"
-msgid "&Close"
-msgstr "&Schließen"
-
-msgctxt "InstallHeader"
-msgid "Welcome"
-msgstr "Willkommen"
-
-msgctxt "InstallMessage"
-msgid ""
-"Setup will install Mixxx on your computer.\n"
-"It will first install required third party libraries, then Mixxx itself.\n"
-"Click Install to continue or Close to exit."
-msgstr "Setup installiert Mixxx auf Ihrem Computer.\nEs wird zuerst benötigte Drittanbieter-Bibliotheken, dann Mixxx selbst installieren\nKlicken Sie auf Installieren um fortzufahren, oder auf Schliessen um zu beenden."
-
-msgctxt "InstallVersion"
-msgid "Version [WixBundleVersion]"
-msgstr "Version [WixBundleVersion]"
-
-msgctxt "InstallOptionsButton"
-msgid "&Options"
-msgstr "&Optionen"
-
-msgctxt "InstallInstallButton"
-msgid "&Install"
-msgstr "&Installieren"
-
-msgctxt "InstallCloseButton"
-msgid "&Close"
-msgstr "&Schließen"
-
-msgctxt "OptionsHeader"
-msgid "Setup Options"
-msgstr "Setup-Optionen"
-
-msgctxt "OptionsLocationLabel"
-msgid "Install location:"
-msgstr "Installationsverzeichnis:"
-
-msgctxt "OptionsBrowseButton"
-msgid "&Browse"
-msgstr "&Durchsuchen"
-
-msgctxt "OptionsOkButton"
-msgid "&OK"
-msgstr "&OK"
-
-msgctxt "OptionsCancelButton"
-msgid "&Cancel"
-msgstr "&Abbrechen"
-
-msgctxt "FilesInUseHeader"
-msgid "Files In Use"
-msgstr "Dateien in Benutzung"
-
-msgctxt "FilesInUseLabel"
-msgid "The following applications are using files that need to be updated:"
-msgstr "Die folgenden Anwendungen verwenden Dateien, die aktualisiert werden müssen:"
-
-msgctxt "FilesInUseCloseRadioButton"
-msgid "Close the &applications and attempt to restart them."
-msgstr "Die &Anwendungen schliessen, und versuchen sie neu zu starten."
-
-msgctxt "FilesInUseDontCloseRadioButton"
-msgid "&Do not close applications. A reboot will be required."
-msgstr "&Schließe keine Anwendungen. Ein Neustart ist erforderlich."
-
-msgctxt "FilesInUseOkButton"
-msgid "&OK"
-msgstr "&OK"
-
-msgctxt "FilesInUseCancelButton"
-msgid "&Cancel"
-msgstr "&Abbrechen"
-
-msgctxt "ProgressHeader"
-msgid "Setup Progress"
-msgstr "Setup-Fortschritt"
-
-msgctxt "ProgressLabel"
-msgid "Processing:"
-msgstr "Wird bearbeitet:"
-
-msgctxt "OverallProgressPackageText"
-msgid "Initializing..."
-msgstr "Initialisiere..."
-
-msgctxt "ProgressCancelButton"
-msgid "&Cancel"
-msgstr "&Abbrechen"
-
-msgctxt "ModifyHeader"
-msgid "Modify Setup"
-msgstr "Setup ändern"
-
-msgctxt "ModifyRepairButton"
-msgid "&Repair"
-msgstr "&Reparieren"
-
-msgctxt "ModifyUninstallButton"
-msgid "&Uninstall"
-msgstr "&Deinstallieren"
-
-msgctxt "ModifyCloseButton"
-msgid "&Close"
-msgstr "&Schließen"
-
-msgctxt "SuccessHeader"
-msgid "Setup Successful"
-msgstr "Setup erfolgreich"
-
-msgctxt "SuccessInstallHeader"
-msgid "Mixxx installation has been successful"
-msgstr "Installation von Mixxx war erfolgreich"
-
-msgctxt "SuccessRepairHeader"
-msgid "Mixxx repair has been successful"
-msgstr "Reparatur von Mixxx war erfolgreich"
-
-msgctxt "SuccessUninstallHeader"
-msgid "Mixxx uninstall has been successful"
-msgstr "Deinstallation von Mixxx war erfolgreich"
-
-msgctxt "SuccessLaunchButton"
-msgid "&Launch"
-msgstr "&Start"
-
-msgctxt "SuccessRestartText"
-msgid "You must restart your computer before you can use the software."
-msgstr "Sie müssen Ihren Computer neu starten, bevor Sie die Software verwenden können."
-
-msgctxt "SuccessRestartButton"
-msgid "&Restart"
-msgstr "&Neustart"
-
-msgctxt "SuccessCloseButton"
-msgid "&Close"
-msgstr "&Schließen"
-
-msgctxt "FailureHeader"
-msgid "Setup Failed"
-msgstr "Setup fehlgeschlagen"
-
-msgctxt "FailureInstallHeader"
-msgid "Mixxx installation failed"
-msgstr "Installation von Mixxx ist fehlgeschlagen"
-
-msgctxt "FailureRepairHeader"
-msgid "Mixxx repair failed"
-msgstr "Reparatur von Mixxx ist fehlgeschlagen"
-
-msgctxt "FailureUninstallHeader"
-msgid "Mixxx uninstall failed"
-msgstr "Deinstallation von Mixxx ist fehlgeschlagen"
-
-msgctxt "FailureHyperlinkLogText"
-msgid ""
-"One or more issues caused the setup to fail. Please fix the issues and then "
-"retry setup. For more information see the log file."
-msgstr "Wegen einem oder mehrerer Probleme ist das Setup fehlgeschlagen. Bitte beheben Sie die Probleme und wiederholen das Setup. Weitere Informationen finden Sie in der Protokolldatei."
-
-msgctxt "FailureRestartText"
-msgid ""
-"You must restart your computer to complete the rollback of the software."
-msgstr "Sie müssen Ihren Computer neu starten, um die Zurücknahme der Softwareinstallation abzuschliessen."
-
-msgctxt "FailureRestartButton"
-msgid "&Restart"
-msgstr "&Neustart"
-
-msgctxt "FailureCloseButton"
-msgid "&Close"
-msgstr "&Schließen"
diff --git a/build/wix/Localization/po/es-ES.po b/build/wix/Localization/po/es-ES.po
deleted file mode 100644
index ff1fdb22889..00000000000
--- a/build/wix/Localization/po/es-ES.po
+++ /dev/null
@@ -1,376 +0,0 @@
-#
-# Translators:
-# b947144a8dd3152e9cb943537a1dc7c4_533b046 <8439d1991f1056217a14f50fcf0a67ef_372648>, 2016
-# b947144a8dd3152e9cb943537a1dc7c4_533b046 <8439d1991f1056217a14f50fcf0a67ef_372648>, 2016
-# Jose Manuel López , 2018
-# Josep Maria Antolin , 2016-2017
-# Josep Maria Antolin , 2016
-# Michael , 2017
-# S.Brandt , 2018
-# Sebastien BLAISOT , 2016
-# Sebastien BLAISOT , 2016
-msgid ""
-msgstr ""
-"Project-Id-Version: Mixxx DJ Windows installer\n"
-"PO-Revision-Date: 2019-04-17 21:53+0000\n"
-"Last-Translator: S.Brandt \n"
-"Language-Team: Spanish (Spain) (http://www.transifex.com/mixxx-dj-software/mixxxdj-windows-installer/language/es_ES/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_ES\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#. Programm informations
-msgctxt "ApplicationName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerFullName"
-msgid "The Mixxx Development Team"
-msgstr "El Equipo de Desarrollo de Mixxx"
-
-msgctxt "ProductDescription"
-msgid "Open-source Digital DJ software"
-msgstr "Software de DJ digital de código abierto"
-
-msgctxt "Comments"
-msgid "Installs Mixxx"
-msgstr "Instala Mixxx"
-
-#. Error messages
-#. DO NOT BREAK LINES BECAUSE LINE BREAKS WILL SHOW UP AS-IS IN THE INTERFACE
-msgctxt "OS2Old"
-msgid "This product requires Windows 7 or above."
-msgstr "Este producto requiere Windows 7 o superior."
-
-msgctxt "NewerInstalled"
-msgid "The same or a newer version of this product is already installed."
-msgstr "La misma versión o una más reciente de este producto está ya instalada."
-
-msgctxt "x64VersionRequired"
-msgid ""
-"You need to install the 64-bit version of this product on 64-bit Windows."
-msgstr "Necesita instalar la versión de 64 bits de este producto en una versión de Windows de 64 bits."
-
-msgctxt "x86VersionRequired"
-msgid ""
-"You need to install the 32-bit version of this product on 32-bit Windows."
-msgstr "Necesita instalar la versión de 32 bits de este producto en una versión de Windows de 32 bits."
-
-msgctxt "x86VersionWarning"
-msgid ""
-"You are about to install the 32-bit version on a 64-bit operating system. We"
-" recommend using the 64-bit version for better performance. You can download"
-" the 64-bit installation package from http://mixxx.org/download/"
-msgstr "Está a punto de instalar la versión de 32 bits en un sistema operativo de 64 bits. Recomendamos utilizar la versión de 64 bits para un mejor rendimiento. Puede descargar el paquete de instalación de 64 bits desde http://mixxx.org/download/"
-
-msgctxt "XPWarning"
-msgid ""
-"You are installing Mixxx on an outdated operating system. Some functions may"
-" not work well or at all. We recommend upgrading your operating system."
-msgstr "Está instalando Mixxx en un sistema operativo obsoleto. Algunas funciones pueden no funcionar correctamente. Recomendamos actualizar su sistema operativo."
-
-msgctxt "bitWidthMismatch32"
-msgid ""
-"You are about to install the 32-bit version but a 64-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 64-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "Está a punto de instalar la versión de 32 bits pero la versión de 64 bits está instalada. Esto puede llevar a un comportamiento indeseado del programa. Por favor, desinstale primero la versión existente, o descargue el instalador de 64 bits (a no ser que sepa exactamente lo que está haciendo)."
-
-msgctxt "bitWidthMismatch64"
-msgid ""
-"You are about to install the 64-bit version but a 32-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 32-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "Está a punto de instalar la versión de 64 bits pero la versión de 32 bits está instalada. Esto puede llevar a un comportamiento indeseado del programa. Por favor, desinstale primero la versión existente, o descargue el instalador de 32 bits (a no ser que sepa exactamente lo que está haciendo)."
-
-msgctxt "OlderVersionFound"
-msgid ""
-"An older version of Mixxx has been detected. As we changed installer, we can"
-" not smoothly upgrade. Please uninstall older version before installing this"
-" one."
-msgstr "Una versión anterior de Mixxx ha sido detectada. Dado que hemos cambiado de instalador, no podemos hacer una actualización limpia. Por favor, desinstale la versión anterior antes de instalar esta."
-
-msgctxt "VCredistNotFound"
-msgid ""
-"Installer was not able to find Microsoft Visual C++ 2015 Redistributable on "
-"this system. This is likely an installer bug that should be reported to "
-"Mixxx developers."
-msgstr "La instalación no ha podido encontrar las librerías de Microsoft Visual C++ 2015 en el sistema. Es posible que se trate de un error del instalador que debería ser reportado a los desarrolladores de Mixxx."
-
-#. Custom Warning Dialog
-msgctxt "WarningDlgTitle"
-msgid "{\\WixUI_Font_Title}Warning"
-msgstr "{\\WixUI_Font_Title}Advertencia"
-
-#. Custom exit dialog
-msgctxt "StartOnExit"
-msgid "Launch Mixxx when setup exits."
-msgstr "Ejecutar Mixxx una vez termine la instalación."
-
-#. Features translations
-msgctxt "FeatureCompleteDescription"
-msgid "The complete package."
-msgstr "El paquete completo."
-
-msgctxt "FeatureMainProgramTitle"
-msgid "Core application"
-msgstr "El núcleo de la aplicación."
-
-msgctxt "FeatureMainProgramDescription"
-msgid "The core Mixxx application including controller presets."
-msgstr "El núcleo de la aplicación, incluyendo las plantillas para los controladores."
-
-msgctxt "FeaturePDBTitle"
-msgid "PDB debug files"
-msgstr "Ficheros PDB de depuración"
-
-msgctxt "FeaturePDBDescription"
-msgid ""
-"Install Mixxx PDB files to use with a debugger. This is useful to debug "
-"Mixxx and provide readable backtraces to the development team."
-msgstr "Instalar los ficheros PDB de Mixxx para uso con un depurador. Esto es útil para depurar Mixxx y enviar trazas de error comprensibles al equipo de desarrollo."
-
-msgctxt "FeatureDesktopShortcutTitle"
-msgid "Desktop Shortcut"
-msgstr "Acceso Directo"
-
-msgctxt "FeatureDesktopShortcutDescription"
-msgid "Add a shortcut to Mixxx on your desktop"
-msgstr "Añadir un acceso directo a Mixxx en su escritorio"
-
-msgctxt "FeatureManualTitle"
-msgid "User Manual"
-msgstr "Manual de Usuario"
-
-msgctxt "FeatureManualDescription"
-msgid ""
-"The Mixxx user manual in PDF form, also available at "
-"http://mixxx.org/manual/"
-msgstr "El manual de usuario en formato PDF, también disponible en http://mixxx.org/manual/"
-
-msgctxt "FeatureTranslationsTitle"
-msgid "Translations"
-msgstr "Traducciones"
-
-msgctxt "FeatureTranslationsDescription"
-msgid ""
-"Resource files that allow Mixxx to display in alternate languages, other "
-"than US english"
-msgstr "Archivos de recursos que permiten la visualización de Mixxx en otros idiomas aparte del Inglés americano"
-
-#. Bootstrapper
-msgctxt "Caption"
-msgid "[WixBundleName] Setup"
-msgstr "Instalador de [WixBundleName]"
-
-msgctxt "Title"
-msgid "[WixBundleName]"
-msgstr "[WixBundleName]"
-
-msgctxt "ConfirmCancelMessage"
-msgid "Are you sure you want to cancel?"
-msgstr "¿Seguro que quiere cancelar la instalación?"
-
-msgctxt "ExecuteUpgradeRelatedBundleMessage"
-msgid "Previous version"
-msgstr "Versión anterior"
-
-msgctxt "HelpHeader"
-msgid "Setup Help"
-msgstr "Ayuda de la instalación"
-
-msgctxt "HelpText"
-msgid ""
-"/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or\n"
-" creates a complete local copy of the bundle in directory.\n"
-" Install is the default.\n"
-"\n"
-" /passive | /quiet - displays minimal user interface with no prompts or displays no user interface\n"
-" and no prompts. By default user interface and all prompts are displayed.\n"
-"\n"
-" /norestart - suppress any attempts to restart. By default user interface will prompt before restart.\n"
-"\n"
-" /log log.txt - logs to a specific file. By default a log file is created in %TEMP%."
-msgstr "/install | /repair | /uninstall | /layout [directory] - instala, repara, desinstala o\n genera una copia local en el directorio indicado.\n La opción por defecte es instalar.\n\n /passive | /quiet - muestra una interfaz mínima sin preguntas, o bien no muestra ni pregunta nada.\n Por defecto se muestra la interfaz y se pide confirmación.\n\n /norestart - descarta el reinicio del ordenador. Por defecto la interfaz pregunta al usuario si quiere reiniciar.\n\n /log log.txt - Escribe el log de instalación en el fichero indicado. Por defecto, el log se escribe en el directorio %TEMP%."
-
-msgctxt "HelpCloseButton"
-msgid "&Close"
-msgstr "&Cerrar"
-
-msgctxt "InstallHeader"
-msgid "Welcome"
-msgstr "Bienvenido"
-
-msgctxt "InstallMessage"
-msgid ""
-"Setup will install Mixxx on your computer.\n"
-"It will first install required third party libraries, then Mixxx itself.\n"
-"Click Install to continue or Close to exit."
-msgstr "La aplicación instalará Mixxx en su ordenador.\nPrimero instalará las librerías de terceros necesarias, y luego Mixxx.\nPulse Instalar para continuar o Cerrar para salir."
-
-msgctxt "InstallVersion"
-msgid "Version [WixBundleVersion]"
-msgstr "Versión [WixBundleVersion]"
-
-msgctxt "InstallOptionsButton"
-msgid "&Options"
-msgstr "&Opciones"
-
-msgctxt "InstallInstallButton"
-msgid "&Install"
-msgstr "&Instalar"
-
-msgctxt "InstallCloseButton"
-msgid "&Close"
-msgstr "&Cerrar"
-
-msgctxt "OptionsHeader"
-msgid "Setup Options"
-msgstr "Opciones de configuración"
-
-msgctxt "OptionsLocationLabel"
-msgid "Install location:"
-msgstr "Directorio de destino:"
-
-msgctxt "OptionsBrowseButton"
-msgid "&Browse"
-msgstr "&Examinar"
-
-msgctxt "OptionsOkButton"
-msgid "&OK"
-msgstr "&Aceptar"
-
-msgctxt "OptionsCancelButton"
-msgid "&Cancel"
-msgstr "&Cancelar"
-
-msgctxt "FilesInUseHeader"
-msgid "Files In Use"
-msgstr "Ficheros en uso"
-
-msgctxt "FilesInUseLabel"
-msgid "The following applications are using files that need to be updated:"
-msgstr "Las siguientes aplicaciones usan ficheros que necesitan ser actualizados:"
-
-msgctxt "FilesInUseCloseRadioButton"
-msgid "Close the &applications and attempt to restart them."
-msgstr "Cierra las &aplicaciones e intenta reiniciarlas después."
-
-msgctxt "FilesInUseDontCloseRadioButton"
-msgid "&Do not close applications. A reboot will be required."
-msgstr "&Deja las aplicaciones en ejecución. Será necesario reiniciar."
-
-msgctxt "FilesInUseOkButton"
-msgid "&OK"
-msgstr "&Aceptar"
-
-msgctxt "FilesInUseCancelButton"
-msgid "&Cancel"
-msgstr "&Cancelar"
-
-msgctxt "ProgressHeader"
-msgid "Setup Progress"
-msgstr "Progreso de la instalación"
-
-msgctxt "ProgressLabel"
-msgid "Processing:"
-msgstr "Procesando:"
-
-msgctxt "OverallProgressPackageText"
-msgid "Initializing..."
-msgstr "Inicializando..."
-
-msgctxt "ProgressCancelButton"
-msgid "&Cancel"
-msgstr "&Cancelar"
-
-msgctxt "ModifyHeader"
-msgid "Modify Setup"
-msgstr "Cambiar la configuración"
-
-msgctxt "ModifyRepairButton"
-msgid "&Repair"
-msgstr "&Reparar"
-
-msgctxt "ModifyUninstallButton"
-msgid "&Uninstall"
-msgstr "&Desinstalar"
-
-msgctxt "ModifyCloseButton"
-msgid "&Close"
-msgstr "&Cerrar"
-
-msgctxt "SuccessHeader"
-msgid "Setup Successful"
-msgstr "Configuración exitosa"
-
-msgctxt "SuccessInstallHeader"
-msgid "Mixxx installation has been successful"
-msgstr "La instalación de Mixxx ha terminado correctamente"
-
-msgctxt "SuccessRepairHeader"
-msgid "Mixxx repair has been successful"
-msgstr "La reparación de Mixxx ha terminado correctamente"
-
-msgctxt "SuccessUninstallHeader"
-msgid "Mixxx uninstall has been successful"
-msgstr "La desinstalación de Mixxx ha terminado correctamente"
-
-msgctxt "SuccessLaunchButton"
-msgid "&Launch"
-msgstr "&Ejecutar"
-
-msgctxt "SuccessRestartText"
-msgid "You must restart your computer before you can use the software."
-msgstr "Es necesario reiniciar el ordenador antes de usar la aplicación."
-
-msgctxt "SuccessRestartButton"
-msgid "&Restart"
-msgstr "&Reiniciar"
-
-msgctxt "SuccessCloseButton"
-msgid "&Close"
-msgstr "&Cerrar"
-
-msgctxt "FailureHeader"
-msgid "Setup Failed"
-msgstr "Configuración errónea"
-
-msgctxt "FailureInstallHeader"
-msgid "Mixxx installation failed"
-msgstr "La instalación de Mixxx ha fallado"
-
-msgctxt "FailureRepairHeader"
-msgid "Mixxx repair failed"
-msgstr "La reparación de Mixxx ha fallado"
-
-msgctxt "FailureUninstallHeader"
-msgid "Mixxx uninstall failed"
-msgstr "La desinstalación de Mixxx ha fallado"
-
-msgctxt "FailureHyperlinkLogText"
-msgid ""
-"One or more issues caused the setup to fail. Please fix the issues and then "
-"retry setup. For more information see the log file."
-msgstr "Se han producido uno o más errores durante la instalación. Intente corregirlos y ejecute de nuevo la instalación. Para más información consulte el fichero de log."
-
-msgctxt "FailureRestartText"
-msgid ""
-"You must restart your computer to complete the rollback of the software."
-msgstr "Es necesario reiniciar el ordenador para restaurar el sistema a antes de la instalación."
-
-msgctxt "FailureRestartButton"
-msgid "&Restart"
-msgstr "&Reiniciar"
-
-msgctxt "FailureCloseButton"
-msgid "&Close"
-msgstr "&Cerrar"
diff --git a/build/wix/Localization/po/et-EE.po b/build/wix/Localization/po/et-EE.po
deleted file mode 100644
index 973e6f3ed83..00000000000
--- a/build/wix/Localization/po/et-EE.po
+++ /dev/null
@@ -1,371 +0,0 @@
-#
-# Translators:
-# Laur Pärn , 2016
-# S.Brandt , 2016,2018
-# Sebastien BLAISOT , 2016
-# Sebastien BLAISOT , 2016
-msgid ""
-msgstr ""
-"Project-Id-Version: Mixxx DJ Windows installer\n"
-"PO-Revision-Date: 2019-04-17 21:53+0000\n"
-"Last-Translator: S.Brandt \n"
-"Language-Team: Estonian (Estonia) (http://www.transifex.com/mixxx-dj-software/mixxxdj-windows-installer/language/et_EE/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: et_EE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#. Programm informations
-msgctxt "ApplicationName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerFullName"
-msgid "The Mixxx Development Team"
-msgstr "Mixxx Arendusmeeskond"
-
-msgctxt "ProductDescription"
-msgid "Open-source Digital DJ software"
-msgstr "Avatud lähtekoodiga digitaalne DJ tarkvara"
-
-msgctxt "Comments"
-msgid "Installs Mixxx"
-msgstr "Paigaldab Mixxxi"
-
-#. Error messages
-#. DO NOT BREAK LINES BECAUSE LINE BREAKS WILL SHOW UP AS-IS IN THE INTERFACE
-msgctxt "OS2Old"
-msgid "This product requires Windows 7 or above."
-msgstr "See toode nõuab Windows 7-d või uuemat op. süsteemi."
-
-msgctxt "NewerInstalled"
-msgid "The same or a newer version of this product is already installed."
-msgstr "Sama või uuem versioon sellest tootest on juba paigaldatud."
-
-msgctxt "x64VersionRequired"
-msgid ""
-"You need to install the 64-bit version of this product on 64-bit Windows."
-msgstr "Sul tuleb paigaldada 64-bitine versioon sellest tootest 64-bitisele Windowsile."
-
-msgctxt "x86VersionRequired"
-msgid ""
-"You need to install the 32-bit version of this product on 32-bit Windows."
-msgstr "Sul tuleb paigaldada 32-bitine versioon sellest tootest 32-bitisele Windowsile."
-
-msgctxt "x86VersionWarning"
-msgid ""
-"You are about to install the 32-bit version on a 64-bit operating system. We"
-" recommend using the 64-bit version for better performance. You can download"
-" the 64-bit installation package from http://mixxx.org/download/"
-msgstr "Sa soovid paigaldada 32-bitist versiooni 64-bitisele operatsioonisüsteemile. Soovitame kasutada 64-bitist versiooni parema jõudluse jaoks. Saate 64-bitise paigalduspaketi alla laadida aadressilt http://mixxx.org/download/"
-
-msgctxt "XPWarning"
-msgid ""
-"You are installing Mixxx on an outdated operating system. Some functions may"
-" not work well or at all. We recommend upgrading your operating system."
-msgstr "Te paigaldate Mixxxi vananenud operatsioonisüsteemile. Mõned funktsioonid ei pruugi normaalselt või üldse töödata. Soovitame teil uuendada oma operatsioonisüsteem."
-
-msgctxt "bitWidthMismatch32"
-msgid ""
-"You are about to install the 32-bit version but a 64-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 64-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "Sa proovid paigaldada 32-bitist versiooni, kuid 64-bitine on juba paigaldatud. See võib viia soovimatu käitumiseni. Palun eemaldage olemasolev Mixxx kõigepealt või laadige 64-bitine paigalduspakett uuendamiseks alla (kui sa just ei tea mida sa täpselt teed)"
-
-msgctxt "bitWidthMismatch64"
-msgid ""
-"You are about to install the 64-bit version but a 32-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 32-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "Sa proovid paigaldada 64-bitist versiooni aga 32-bitine on juba paigaldatud. See võib viia soovimatu käitumiseni. Palun eemaldage olemasolev Mixxx kõigepealt või laadige 32-bitine paigalduspakett uuendamiseks alla (kui sa just ei tea mida sa täpselt teed)"
-
-msgctxt "OlderVersionFound"
-msgid ""
-"An older version of Mixxx has been detected. As we changed installer, we can"
-" not smoothly upgrade. Please uninstall older version before installing this"
-" one."
-msgstr "Tuvastati vanem versioo Mixxxist. Kuna me vahetasime paigaldajat, ei saa me tõrgeteta uuendada. Palun eemaldage vanem versioon enne selle paigaldamist."
-
-msgctxt "VCredistNotFound"
-msgid ""
-"Installer was not able to find Microsoft Visual C++ 2015 Redistributable on "
-"this system. This is likely an installer bug that should be reported to "
-"Mixxx developers."
-msgstr ""
-
-#. Custom Warning Dialog
-msgctxt "WarningDlgTitle"
-msgid "{\\WixUI_Font_Title}Warning"
-msgstr "{\\WixUI_Font_Title}Hoiatus"
-
-#. Custom exit dialog
-msgctxt "StartOnExit"
-msgid "Launch Mixxx when setup exits."
-msgstr ""
-
-#. Features translations
-msgctxt "FeatureCompleteDescription"
-msgid "The complete package."
-msgstr "Kogu pakett."
-
-msgctxt "FeatureMainProgramTitle"
-msgid "Core application"
-msgstr "Põhi rakendus"
-
-msgctxt "FeatureMainProgramDescription"
-msgid "The core Mixxx application including controller presets."
-msgstr "Põhirakendus Mixxx koos kontrollerite eelseadistustega."
-
-msgctxt "FeaturePDBTitle"
-msgid "PDB debug files"
-msgstr ""
-
-msgctxt "FeaturePDBDescription"
-msgid ""
-"Install Mixxx PDB files to use with a debugger. This is useful to debug "
-"Mixxx and provide readable backtraces to the development team."
-msgstr ""
-
-msgctxt "FeatureDesktopShortcutTitle"
-msgid "Desktop Shortcut"
-msgstr "Töölaua otsetee"
-
-msgctxt "FeatureDesktopShortcutDescription"
-msgid "Add a shortcut to Mixxx on your desktop"
-msgstr "Lisa Mixxxi otsetee oma töölauale"
-
-msgctxt "FeatureManualTitle"
-msgid "User Manual"
-msgstr "Kasutusjuhend"
-
-msgctxt "FeatureManualDescription"
-msgid ""
-"The Mixxx user manual in PDF form, also available at "
-"http://mixxx.org/manual/"
-msgstr "Mixxxi kasutusjuhend on PDF failis, lisaks saadaval http://mixxx.org/manual/"
-
-msgctxt "FeatureTranslationsTitle"
-msgid "Translations"
-msgstr "Tõlked"
-
-msgctxt "FeatureTranslationsDescription"
-msgid ""
-"Resource files that allow Mixxx to display in alternate languages, other "
-"than US english"
-msgstr "Ressursifailid mis lubavad Mixxxil kuvada teisi alternatiivkeeli peale Ameerika Ühendriikide inglise keele"
-
-#. Bootstrapper
-msgctxt "Caption"
-msgid "[WixBundleName] Setup"
-msgstr ""
-
-msgctxt "Title"
-msgid "[WixBundleName]"
-msgstr ""
-
-msgctxt "ConfirmCancelMessage"
-msgid "Are you sure you want to cancel?"
-msgstr ""
-
-msgctxt "ExecuteUpgradeRelatedBundleMessage"
-msgid "Previous version"
-msgstr ""
-
-msgctxt "HelpHeader"
-msgid "Setup Help"
-msgstr ""
-
-msgctxt "HelpText"
-msgid ""
-"/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or\n"
-" creates a complete local copy of the bundle in directory.\n"
-" Install is the default.\n"
-"\n"
-" /passive | /quiet - displays minimal user interface with no prompts or displays no user interface\n"
-" and no prompts. By default user interface and all prompts are displayed.\n"
-"\n"
-" /norestart - suppress any attempts to restart. By default user interface will prompt before restart.\n"
-"\n"
-" /log log.txt - logs to a specific file. By default a log file is created in %TEMP%."
-msgstr ""
-
-msgctxt "HelpCloseButton"
-msgid "&Close"
-msgstr ""
-
-msgctxt "InstallHeader"
-msgid "Welcome"
-msgstr ""
-
-msgctxt "InstallMessage"
-msgid ""
-"Setup will install Mixxx on your computer.\n"
-"It will first install required third party libraries, then Mixxx itself.\n"
-"Click Install to continue or Close to exit."
-msgstr ""
-
-msgctxt "InstallVersion"
-msgid "Version [WixBundleVersion]"
-msgstr ""
-
-msgctxt "InstallOptionsButton"
-msgid "&Options"
-msgstr ""
-
-msgctxt "InstallInstallButton"
-msgid "&Install"
-msgstr ""
-
-msgctxt "InstallCloseButton"
-msgid "&Close"
-msgstr ""
-
-msgctxt "OptionsHeader"
-msgid "Setup Options"
-msgstr ""
-
-msgctxt "OptionsLocationLabel"
-msgid "Install location:"
-msgstr ""
-
-msgctxt "OptionsBrowseButton"
-msgid "&Browse"
-msgstr ""
-
-msgctxt "OptionsOkButton"
-msgid "&OK"
-msgstr ""
-
-msgctxt "OptionsCancelButton"
-msgid "&Cancel"
-msgstr ""
-
-msgctxt "FilesInUseHeader"
-msgid "Files In Use"
-msgstr ""
-
-msgctxt "FilesInUseLabel"
-msgid "The following applications are using files that need to be updated:"
-msgstr ""
-
-msgctxt "FilesInUseCloseRadioButton"
-msgid "Close the &applications and attempt to restart them."
-msgstr ""
-
-msgctxt "FilesInUseDontCloseRadioButton"
-msgid "&Do not close applications. A reboot will be required."
-msgstr ""
-
-msgctxt "FilesInUseOkButton"
-msgid "&OK"
-msgstr ""
-
-msgctxt "FilesInUseCancelButton"
-msgid "&Cancel"
-msgstr ""
-
-msgctxt "ProgressHeader"
-msgid "Setup Progress"
-msgstr ""
-
-msgctxt "ProgressLabel"
-msgid "Processing:"
-msgstr ""
-
-msgctxt "OverallProgressPackageText"
-msgid "Initializing..."
-msgstr ""
-
-msgctxt "ProgressCancelButton"
-msgid "&Cancel"
-msgstr ""
-
-msgctxt "ModifyHeader"
-msgid "Modify Setup"
-msgstr ""
-
-msgctxt "ModifyRepairButton"
-msgid "&Repair"
-msgstr ""
-
-msgctxt "ModifyUninstallButton"
-msgid "&Uninstall"
-msgstr ""
-
-msgctxt "ModifyCloseButton"
-msgid "&Close"
-msgstr ""
-
-msgctxt "SuccessHeader"
-msgid "Setup Successful"
-msgstr ""
-
-msgctxt "SuccessInstallHeader"
-msgid "Mixxx installation has been successful"
-msgstr ""
-
-msgctxt "SuccessRepairHeader"
-msgid "Mixxx repair has been successful"
-msgstr ""
-
-msgctxt "SuccessUninstallHeader"
-msgid "Mixxx uninstall has been successful"
-msgstr ""
-
-msgctxt "SuccessLaunchButton"
-msgid "&Launch"
-msgstr ""
-
-msgctxt "SuccessRestartText"
-msgid "You must restart your computer before you can use the software."
-msgstr ""
-
-msgctxt "SuccessRestartButton"
-msgid "&Restart"
-msgstr ""
-
-msgctxt "SuccessCloseButton"
-msgid "&Close"
-msgstr ""
-
-msgctxt "FailureHeader"
-msgid "Setup Failed"
-msgstr ""
-
-msgctxt "FailureInstallHeader"
-msgid "Mixxx installation failed"
-msgstr ""
-
-msgctxt "FailureRepairHeader"
-msgid "Mixxx repair failed"
-msgstr ""
-
-msgctxt "FailureUninstallHeader"
-msgid "Mixxx uninstall failed"
-msgstr ""
-
-msgctxt "FailureHyperlinkLogText"
-msgid ""
-"One or more issues caused the setup to fail. Please fix the issues and then "
-"retry setup. For more information see the log file."
-msgstr ""
-
-msgctxt "FailureRestartText"
-msgid ""
-"You must restart your computer to complete the rollback of the software."
-msgstr ""
-
-msgctxt "FailureRestartButton"
-msgid "&Restart"
-msgstr ""
-
-msgctxt "FailureCloseButton"
-msgid "&Close"
-msgstr ""
diff --git a/build/wix/Localization/po/fr-FR.po b/build/wix/Localization/po/fr-FR.po
deleted file mode 100644
index 2af9e5515a1..00000000000
--- a/build/wix/Localization/po/fr-FR.po
+++ /dev/null
@@ -1,370 +0,0 @@
-#
-# Translators:
-# S.Brandt , 2018
-# Sebastien BLAISOT , 2016-2017
-# Sebastien BLAISOT , 2016
-msgid ""
-msgstr ""
-"Project-Id-Version: Mixxx DJ Windows installer\n"
-"PO-Revision-Date: 2019-04-17 21:53+0000\n"
-"Last-Translator: S.Brandt \n"
-"Language-Team: French (France) (http://www.transifex.com/mixxx-dj-software/mixxxdj-windows-installer/language/fr_FR/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr_FR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#. Programm informations
-msgctxt "ApplicationName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerFullName"
-msgid "The Mixxx Development Team"
-msgstr "L'équipe de développement de Mixxx"
-
-msgctxt "ProductDescription"
-msgid "Open-source Digital DJ software"
-msgstr "Logiciel libre de mixage numérique"
-
-msgctxt "Comments"
-msgid "Installs Mixxx"
-msgstr "Installe Mixxx"
-
-#. Error messages
-#. DO NOT BREAK LINES BECAUSE LINE BREAKS WILL SHOW UP AS-IS IN THE INTERFACE
-msgctxt "OS2Old"
-msgid "This product requires Windows 7 or above."
-msgstr "Ce produit nécessite au moins Windows 7."
-
-msgctxt "NewerInstalled"
-msgid "The same or a newer version of this product is already installed."
-msgstr "Une version plus récente ou identique de ce produit est déjà installée."
-
-msgctxt "x64VersionRequired"
-msgid ""
-"You need to install the 64-bit version of this product on 64-bit Windows."
-msgstr "Vous devez installer la version 64-bits de ce produit sur un Windows 64-bits."
-
-msgctxt "x86VersionRequired"
-msgid ""
-"You need to install the 32-bit version of this product on 32-bit Windows."
-msgstr "Vous devez installer la version 32-bits de ce produit sur un Windows 32-bits."
-
-msgctxt "x86VersionWarning"
-msgid ""
-"You are about to install the 32-bit version on a 64-bit operating system. We"
-" recommend using the 64-bit version for better performance. You can download"
-" the 64-bit installation package from http://mixxx.org/download/"
-msgstr "Vous installez une version 32 bits sur un système 64 bits. Nous vous recommandons d'utiliser une version 64 bits pour de meilleures performances. Vous pouvez télécharger l'installeur 64 bits ici : http://mixxx.org/download/"
-
-msgctxt "XPWarning"
-msgid ""
-"You are installing Mixxx on an outdated operating system. Some functions may"
-" not work well or at all. We recommend upgrading your operating system."
-msgstr "Vous installez Mixxx sur un système obsolète. Certaines fonctions pourraient ne pas fonctionner. Nous vous recommandons de mettre à jour votre système d'exploitation."
-
-msgctxt "bitWidthMismatch32"
-msgid ""
-"You are about to install the 32-bit version but a 64-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 64-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "Vous installez une version 32 bits de Mixxx, mais il existe déjà une version 64 bits installée. Ceci peut conduire à un comportement imprévisible. SVP, désinstallez d'abord ou téléchargez l'installeur correspondant pour mettre à jour, à moins de savoir exactement ce que vous faites."
-
-msgctxt "bitWidthMismatch64"
-msgid ""
-"You are about to install the 64-bit version but a 32-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 32-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "Vous installez une version 64 bits de Mixxx, mais il existe déjà une version 32 bits installée. Ceci peut conduire à un comportement imprévisible. SVP, désinstallez d'abord ou téléchargez l'installeur correspondant pour mettre à jour, à moins de savoir exactement ce que vous faites."
-
-msgctxt "OlderVersionFound"
-msgid ""
-"An older version of Mixxx has been detected. As we changed installer, we can"
-" not smoothly upgrade. Please uninstall older version before installing this"
-" one."
-msgstr "Une ancienne version de Mixxx a été détectée. Comme nous avons changé d'installeur, nous ne pouvons pas mettre à jour de manière transparente. Merci de désinstaller l'ancienne version avant d'installer celle-ci."
-
-msgctxt "VCredistNotFound"
-msgid ""
-"Installer was not able to find Microsoft Visual C++ 2015 Redistributable on "
-"this system. This is likely an installer bug that should be reported to "
-"Mixxx developers."
-msgstr "L'installeur n'a pas pu trouver \"Microsoft Visual C++ 2015 Redistribuable\" sur votre système. Il s'agit probablement d'un bug de l'installer qui doit être rapporté aux développeurs de Mixxx."
-
-#. Custom Warning Dialog
-msgctxt "WarningDlgTitle"
-msgid "{\\WixUI_Font_Title}Warning"
-msgstr "{\\WixUI_Font_Title}Attention"
-
-#. Custom exit dialog
-msgctxt "StartOnExit"
-msgid "Launch Mixxx when setup exits."
-msgstr "Démarrer Mixxx en quittant l'installeur."
-
-#. Features translations
-msgctxt "FeatureCompleteDescription"
-msgid "The complete package."
-msgstr "Installation complète."
-
-msgctxt "FeatureMainProgramTitle"
-msgid "Core application"
-msgstr "Programme principal"
-
-msgctxt "FeatureMainProgramDescription"
-msgid "The core Mixxx application including controller presets."
-msgstr "Le programme et l'ensemble de ses dépendances."
-
-msgctxt "FeaturePDBTitle"
-msgid "PDB debug files"
-msgstr "Fichiers PDB de debug "
-
-msgctxt "FeaturePDBDescription"
-msgid ""
-"Install Mixxx PDB files to use with a debugger. This is useful to debug "
-"Mixxx and provide readable backtraces to the development team."
-msgstr "Installe les fichiers PDB de Mixxx, à utiliser avec un debuggueur. Utile pour débugguer Mixxx et fournir à l'équipe de développement des backtraces exploitables."
-
-msgctxt "FeatureDesktopShortcutTitle"
-msgid "Desktop Shortcut"
-msgstr "Raccourci sur le bureau"
-
-msgctxt "FeatureDesktopShortcutDescription"
-msgid "Add a shortcut to Mixxx on your desktop"
-msgstr "Ajoute un raccourci \"Mixxx\" sur le bureau"
-
-msgctxt "FeatureManualTitle"
-msgid "User Manual"
-msgstr "Manuel Mixxx"
-
-msgctxt "FeatureManualDescription"
-msgid ""
-"The Mixxx user manual in PDF form, also available at "
-"http://mixxx.org/manual/"
-msgstr "Le manuel de Mixxx en PDF"
-
-msgctxt "FeatureTranslationsTitle"
-msgid "Translations"
-msgstr "Traductions"
-
-msgctxt "FeatureTranslationsDescription"
-msgid ""
-"Resource files that allow Mixxx to display in alternate languages, other "
-"than US english"
-msgstr "Fichiers de ressources contenant les traductions de Mixxx autres que l'anglais (US)"
-
-#. Bootstrapper
-msgctxt "Caption"
-msgid "[WixBundleName] Setup"
-msgstr "Installeur de [WixBundleName]"
-
-msgctxt "Title"
-msgid "[WixBundleName]"
-msgstr "[WixBundleName]"
-
-msgctxt "ConfirmCancelMessage"
-msgid "Are you sure you want to cancel?"
-msgstr "Êtes-vous sûr de vouloir annuler ?"
-
-msgctxt "ExecuteUpgradeRelatedBundleMessage"
-msgid "Previous version"
-msgstr "Version précédente"
-
-msgctxt "HelpHeader"
-msgid "Setup Help"
-msgstr "Aide de l'installeur"
-
-msgctxt "HelpText"
-msgid ""
-"/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or\n"
-" creates a complete local copy of the bundle in directory.\n"
-" Install is the default.\n"
-"\n"
-" /passive | /quiet - displays minimal user interface with no prompts or displays no user interface\n"
-" and no prompts. By default user interface and all prompts are displayed.\n"
-"\n"
-" /norestart - suppress any attempts to restart. By default user interface will prompt before restart.\n"
-"\n"
-" /log log.txt - logs to a specific file. By default a log file is created in %TEMP%."
-msgstr "/install | /repair | /uninstall | /layout [directory] - installe, répare, désinstalle ou\n crée une copie locale complète du bundle dans ce répertoire.\n install est la valeur par défaut.\n\n/passive | /quiet - afiche une interface minimale sans question ou\n n'affiche aucune interface ni question.\n Par défaut, l'interface et toutes les questions sont affichés.\n\n/norestart - ne tente pas de redémarrer.\n Par défaut, l'interface demandera avant de redémarrer.\n\n/log log.txt - fichier spécifique de journal. Par défaut, les journaux\n sont créés dans %TEMP%."
-
-msgctxt "HelpCloseButton"
-msgid "&Close"
-msgstr "&Fermer"
-
-msgctxt "InstallHeader"
-msgid "Welcome"
-msgstr "Bienvenue"
-
-msgctxt "InstallMessage"
-msgid ""
-"Setup will install Mixxx on your computer.\n"
-"It will first install required third party libraries, then Mixxx itself.\n"
-"Click Install to continue or Close to exit."
-msgstr "L'installeur installera Mixxx sur votre ordinateur.\nIl installera d'abord les librairies tierces, puis Mixxx lui-même.\nCliquez sur Installer pour continuer ou Fermer pour quitter."
-
-msgctxt "InstallVersion"
-msgid "Version [WixBundleVersion]"
-msgstr "Version [WixBundleVersion]"
-
-msgctxt "InstallOptionsButton"
-msgid "&Options"
-msgstr "&Options"
-
-msgctxt "InstallInstallButton"
-msgid "&Install"
-msgstr "&Installer"
-
-msgctxt "InstallCloseButton"
-msgid "&Close"
-msgstr "&Fermer"
-
-msgctxt "OptionsHeader"
-msgid "Setup Options"
-msgstr "Options d'installation"
-
-msgctxt "OptionsLocationLabel"
-msgid "Install location:"
-msgstr "Emplacement d'installation :"
-
-msgctxt "OptionsBrowseButton"
-msgid "&Browse"
-msgstr "&Parcourir"
-
-msgctxt "OptionsOkButton"
-msgid "&OK"
-msgstr "&OK"
-
-msgctxt "OptionsCancelButton"
-msgid "&Cancel"
-msgstr "&Annuler"
-
-msgctxt "FilesInUseHeader"
-msgid "Files In Use"
-msgstr "Fichiers en cours d'utilisation"
-
-msgctxt "FilesInUseLabel"
-msgid "The following applications are using files that need to be updated:"
-msgstr "Les applications suivantes utilisent les fichiers à mettre à jour :"
-
-msgctxt "FilesInUseCloseRadioButton"
-msgid "Close the &applications and attempt to restart them."
-msgstr "Fermer les &applications et tenter de les redémarrer."
-
-msgctxt "FilesInUseDontCloseRadioButton"
-msgid "&Do not close applications. A reboot will be required."
-msgstr "&Ne pas fermer les applications. Un reboot sera nécessaire."
-
-msgctxt "FilesInUseOkButton"
-msgid "&OK"
-msgstr "&OK"
-
-msgctxt "FilesInUseCancelButton"
-msgid "&Cancel"
-msgstr "&Annuler"
-
-msgctxt "ProgressHeader"
-msgid "Setup Progress"
-msgstr "Progression de l'installation"
-
-msgctxt "ProgressLabel"
-msgid "Processing:"
-msgstr "En cours :"
-
-msgctxt "OverallProgressPackageText"
-msgid "Initializing..."
-msgstr "Initialisation..."
-
-msgctxt "ProgressCancelButton"
-msgid "&Cancel"
-msgstr "&Annuler"
-
-msgctxt "ModifyHeader"
-msgid "Modify Setup"
-msgstr "Modifier l'installation"
-
-msgctxt "ModifyRepairButton"
-msgid "&Repair"
-msgstr "&Réparer"
-
-msgctxt "ModifyUninstallButton"
-msgid "&Uninstall"
-msgstr "&Désinstaller"
-
-msgctxt "ModifyCloseButton"
-msgid "&Close"
-msgstr "&Fermer"
-
-msgctxt "SuccessHeader"
-msgid "Setup Successful"
-msgstr "Installation réussie"
-
-msgctxt "SuccessInstallHeader"
-msgid "Mixxx installation has been successful"
-msgstr "Mixxx a été installé avec succès"
-
-msgctxt "SuccessRepairHeader"
-msgid "Mixxx repair has been successful"
-msgstr "Mixxx a été réparé avec succès"
-
-msgctxt "SuccessUninstallHeader"
-msgid "Mixxx uninstall has been successful"
-msgstr "Mixxx a été désinstallé avec succès"
-
-msgctxt "SuccessLaunchButton"
-msgid "&Launch"
-msgstr "&Lancer"
-
-msgctxt "SuccessRestartText"
-msgid "You must restart your computer before you can use the software."
-msgstr "Vous devez redémarrer votre ordinateur avant de pouvoir utiliser le logiciel."
-
-msgctxt "SuccessRestartButton"
-msgid "&Restart"
-msgstr "&Redémarrer"
-
-msgctxt "SuccessCloseButton"
-msgid "&Close"
-msgstr "&Fermer"
-
-msgctxt "FailureHeader"
-msgid "Setup Failed"
-msgstr "Installation échouée"
-
-msgctxt "FailureInstallHeader"
-msgid "Mixxx installation failed"
-msgstr "L'installation de Mixxx a échoué"
-
-msgctxt "FailureRepairHeader"
-msgid "Mixxx repair failed"
-msgstr "La réparation de Mixxx a échoué"
-
-msgctxt "FailureUninstallHeader"
-msgid "Mixxx uninstall failed"
-msgstr "La désinstallation de Mixxx a échoué"
-
-msgctxt "FailureHyperlinkLogText"
-msgid ""
-"One or more issues caused the setup to fail. Please fix the issues and then "
-"retry setup. For more information see the log file."
-msgstr "Une ou plusieurs erreurs ont fait échoué l'installation. Corrigez-les et réessayez. Pour de plus amples informations, consultez le fichier journal."
-
-msgctxt "FailureRestartText"
-msgid ""
-"You must restart your computer to complete the rollback of the software."
-msgstr "Vous devez redémarrer votre ordinateur pour terminer le retour-arrière du logiciel."
-
-msgctxt "FailureRestartButton"
-msgid "&Restart"
-msgstr "&Redémarrer"
-
-msgctxt "FailureCloseButton"
-msgid "&Close"
-msgstr "&Fermer"
diff --git a/build/wix/Localization/po/it-IT.po b/build/wix/Localization/po/it-IT.po
deleted file mode 100644
index 1421d2f549b..00000000000
--- a/build/wix/Localization/po/it-IT.po
+++ /dev/null
@@ -1,375 +0,0 @@
-#
-# Translators:
-# Damtux, 2016
-# da66b1496cff6f8c09de27090160b16b_bdb5d2a <1e358f8ec157acea8eff85e60e2ae5b4_94956>, 2016
-# marcobra , 2020
-# Roberto Ekesi , 2017
-# S.Brandt , 2018
-# Sebastien BLAISOT , 2016
-# Sebastien BLAISOT , 2016
-# Damtux, 2016
-msgid ""
-msgstr ""
-"Project-Id-Version: Mixxx DJ Windows installer\n"
-"PO-Revision-Date: 2020-07-16 19:48+0000\n"
-"Last-Translator: marcobra \n"
-"Language-Team: Italian (Italy) (http://www.transifex.com/mixxx-dj-software/mixxxdj-windows-installer/language/it_IT/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: it_IT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#. Programm informations
-msgctxt "ApplicationName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerFullName"
-msgid "The Mixxx Development Team"
-msgstr "Il Team Sviluppo di Mixxx"
-
-msgctxt "ProductDescription"
-msgid "Open-source Digital DJ software"
-msgstr "Software per DJ digitali open-source"
-
-msgctxt "Comments"
-msgid "Installs Mixxx"
-msgstr "Installa Mixxx"
-
-#. Error messages
-#. DO NOT BREAK LINES BECAUSE LINE BREAKS WILL SHOW UP AS-IS IN THE INTERFACE
-msgctxt "OS2Old"
-msgid "This product requires Windows 7 or above."
-msgstr "Questo prodotto richiede Windows 7 o successivo."
-
-msgctxt "NewerInstalled"
-msgid "The same or a newer version of this product is already installed."
-msgstr "La stessa o una versione più recente di questo prodotto è già installata."
-
-msgctxt "x64VersionRequired"
-msgid ""
-"You need to install the 64-bit version of this product on 64-bit Windows."
-msgstr "Devi installare la versione a 64-bit di questo prodotto su Windows a 64-bit."
-
-msgctxt "x86VersionRequired"
-msgid ""
-"You need to install the 32-bit version of this product on 32-bit Windows."
-msgstr "Devi installare la versione a 32-bit di questo prodotto su Windows a 32-bit."
-
-msgctxt "x86VersionWarning"
-msgid ""
-"You are about to install the 32-bit version on a 64-bit operating system. We"
-" recommend using the 64-bit version for better performance. You can download"
-" the 64-bit installation package from http://mixxx.org/download/"
-msgstr "Stai per installare la versione a 32-bit su un sistema operativo a 64-bit. Raccomandiamo di usare la versione a 64-bit per ottenere prestazioni migliori. Puoi scaricare il pacchetto di installazione a 64-bit da http://mixxx.org/download/"
-
-msgctxt "XPWarning"
-msgid ""
-"You are installing Mixxx on an outdated operating system. Some functions may"
-" not work well or at all. We recommend upgrading your operating system."
-msgstr "Stai per installare Mixxx su un sistema operativo sorpassato. Alcune funzioni potrebbero non funzionare bene o completamente. Raccomandiamo di aggiornare il tuo sistema operativo."
-
-msgctxt "bitWidthMismatch32"
-msgid ""
-"You are about to install the 32-bit version but a 64-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 64-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "Stai per installare la versione a 32-bit ma è già installata una versione a 64-bit. Ciò può portare a comportamenti indesiderati. Disinstallare prima l'esistente Mixxx per favore, oppure scaricare il pacchetto di installazione a 64-bit per eseguire l'aggiornamento (a meno che tu non conosca esattamente quello che stai facendo)."
-
-msgctxt "bitWidthMismatch64"
-msgid ""
-"You are about to install the 64-bit version but a 32-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 32-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "Stai per installare la versione a 64-bit ma è già installata una versione a 32-bit. Ciò può portare a comportamenti indesiderati. Disinstallare prima l'esistente Mixxx per favore, oppure scaricare il pacchetto di installazione a 32-bit per eseguire l'aggiornamento (a meno che tu non conosca esattamente quello che stai facendo)."
-
-msgctxt "OlderVersionFound"
-msgid ""
-"An older version of Mixxx has been detected. As we changed installer, we can"
-" not smoothly upgrade. Please uninstall older version before installing this"
-" one."
-msgstr "È stata rilevata una versione precedente di Mixxx. Si come abbiamo cambiato l'installatore, non possiamo aggiornare senza problemi. Disinstallare la versione precedente per favore, prima di installare questa."
-
-msgctxt "VCredistNotFound"
-msgid ""
-"Installer was not able to find Microsoft Visual C++ 2015 Redistributable on "
-"this system. This is likely an installer bug that should be reported to "
-"Mixxx developers."
-msgstr "Installer non è riuscito a trovare Microsoft Visual C ++ 2015 Redistributable in questo sistema. Questo è probabilmente un bug di installazione che dovrebbe essere segnalato agli sviluppatori Mixxx."
-
-#. Custom Warning Dialog
-msgctxt "WarningDlgTitle"
-msgid "{\\WixUI_Font_Title}Warning"
-msgstr "{\\WixUI_Font_Title}Attenzione"
-
-#. Custom exit dialog
-msgctxt "StartOnExit"
-msgid "Launch Mixxx when setup exits."
-msgstr "Avvia Mixxx quando l'installazione termina."
-
-#. Features translations
-msgctxt "FeatureCompleteDescription"
-msgid "The complete package."
-msgstr "Il pacchetto software completo."
-
-msgctxt "FeatureMainProgramTitle"
-msgid "Core application"
-msgstr "Applicazione principale"
-
-msgctxt "FeatureMainProgramDescription"
-msgid "The core Mixxx application including controller presets."
-msgstr "L'applicazione Mixxx principale compreso i preset del controller."
-
-msgctxt "FeaturePDBTitle"
-msgid "PDB debug files"
-msgstr "PDB debug files"
-
-msgctxt "FeaturePDBDescription"
-msgid ""
-"Install Mixxx PDB files to use with a debugger. This is useful to debug "
-"Mixxx and provide readable backtraces to the development team."
-msgstr "Installare i file Mixxx PDB da utilizzare con un debugger. Questo è utile per eseguire il debug di Mixxx e fornire backtraces leggibili al team di sviluppo."
-
-msgctxt "FeatureDesktopShortcutTitle"
-msgid "Desktop Shortcut"
-msgstr "Collegamento sul Desktop"
-
-msgctxt "FeatureDesktopShortcutDescription"
-msgid "Add a shortcut to Mixxx on your desktop"
-msgstr "Aggiunge un collegamento a Mixxx sul tuo desktop"
-
-msgctxt "FeatureManualTitle"
-msgid "User Manual"
-msgstr "Manuale Utente"
-
-msgctxt "FeatureManualDescription"
-msgid ""
-"The Mixxx user manual in PDF form, also available at "
-"http://mixxx.org/manual/"
-msgstr "Il manuale di Mixxx in formato PDF, disponibile anche su http://mixxx.org/manual/"
-
-msgctxt "FeatureTranslationsTitle"
-msgid "Translations"
-msgstr "Traduzioni"
-
-msgctxt "FeatureTranslationsDescription"
-msgid ""
-"Resource files that allow Mixxx to display in alternate languages, other "
-"than US english"
-msgstr "File di risorse che permettono a Mixxx di visualizzare in lingue alternate, oltre che l'inglese US"
-
-#. Bootstrapper
-msgctxt "Caption"
-msgid "[WixBundleName] Setup"
-msgstr "[WixBundleName] Impostazione"
-
-msgctxt "Title"
-msgid "[WixBundleName]"
-msgstr "[WixBundleName]"
-
-msgctxt "ConfirmCancelMessage"
-msgid "Are you sure you want to cancel?"
-msgstr "Sei sicuro/a di voler annullare?"
-
-msgctxt "ExecuteUpgradeRelatedBundleMessage"
-msgid "Previous version"
-msgstr "Versione precedente"
-
-msgctxt "HelpHeader"
-msgid "Setup Help"
-msgstr "Guida di Installazione"
-
-msgctxt "HelpText"
-msgid ""
-"/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or\n"
-" creates a complete local copy of the bundle in directory.\n"
-" Install is the default.\n"
-"\n"
-" /passive | /quiet - displays minimal user interface with no prompts or displays no user interface\n"
-" and no prompts. By default user interface and all prompts are displayed.\n"
-"\n"
-" /norestart - suppress any attempts to restart. By default user interface will prompt before restart.\n"
-"\n"
-" /log log.txt - logs to a specific file. By default a log file is created in %TEMP%."
-msgstr "/install | /repair | /uninstall | /layout [directory] - installa, ripara, disinstalla o\n crea una copia locale completa della cartella bundle.\n Installa è l'opzione predefinita.\n\n /passive | /quiet - mostra una interfaccia utente minimale senza richieste e senza mostrare nessuna interfaccia utente\n e nessuna richiesta. In modo predefinito viene mostrata interfaccia utente e tutte le richieste vengono mostrate.\n\n /norestart - sopprime ogni tentativo di riavvio. In modo predefinito una interfaccia utente viene mostrata prima di riavviare.\n\n /log log.txt - scrive log su un file specifico. In modo predefinito un file log viene creato in %TEMP%."
-
-msgctxt "HelpCloseButton"
-msgid "&Close"
-msgstr "&Chiudi"
-
-msgctxt "InstallHeader"
-msgid "Welcome"
-msgstr "Benvenuto"
-
-msgctxt "InstallMessage"
-msgid ""
-"Setup will install Mixxx on your computer.\n"
-"It will first install required third party libraries, then Mixxx itself.\n"
-"Click Install to continue or Close to exit."
-msgstr "Il Setup installerà Mixxx sul tuo computer.\nPrima installerà le librerie di terze parti richieste, poi Mixxx vero e proprio.\nClicca Installa per continuare o Chiudi per uscire."
-
-msgctxt "InstallVersion"
-msgid "Version [WixBundleVersion]"
-msgstr "Versione [WixBundleVersion]"
-
-msgctxt "InstallOptionsButton"
-msgid "&Options"
-msgstr "&Opzioni"
-
-msgctxt "InstallInstallButton"
-msgid "&Install"
-msgstr "&Installa"
-
-msgctxt "InstallCloseButton"
-msgid "&Close"
-msgstr "&Chiudi"
-
-msgctxt "OptionsHeader"
-msgid "Setup Options"
-msgstr "Opzioni di installazione"
-
-msgctxt "OptionsLocationLabel"
-msgid "Install location:"
-msgstr "Posizione di installazione:"
-
-msgctxt "OptionsBrowseButton"
-msgid "&Browse"
-msgstr "&Sfoglia"
-
-msgctxt "OptionsOkButton"
-msgid "&OK"
-msgstr "&OK"
-
-msgctxt "OptionsCancelButton"
-msgid "&Cancel"
-msgstr "&Annulla"
-
-msgctxt "FilesInUseHeader"
-msgid "Files In Use"
-msgstr "Files In Uso"
-
-msgctxt "FilesInUseLabel"
-msgid "The following applications are using files that need to be updated:"
-msgstr "Le seguenti applicazioni stanno usando files che devono essere aggiornati:"
-
-msgctxt "FilesInUseCloseRadioButton"
-msgid "Close the &applications and attempt to restart them."
-msgstr "Chiudi le &applicazioni e prova a farle ripartire."
-
-msgctxt "FilesInUseDontCloseRadioButton"
-msgid "&Do not close applications. A reboot will be required."
-msgstr "Non chiu&dere le applicazioni. Sarà necessario un riavvio."
-
-msgctxt "FilesInUseOkButton"
-msgid "&OK"
-msgstr "&OK"
-
-msgctxt "FilesInUseCancelButton"
-msgid "&Cancel"
-msgstr "&Annulla"
-
-msgctxt "ProgressHeader"
-msgid "Setup Progress"
-msgstr "Progresso Setup"
-
-msgctxt "ProgressLabel"
-msgid "Processing:"
-msgstr "Elaborazione:"
-
-msgctxt "OverallProgressPackageText"
-msgid "Initializing..."
-msgstr "Inizializzazione..."
-
-msgctxt "ProgressCancelButton"
-msgid "&Cancel"
-msgstr "&Annulla"
-
-msgctxt "ModifyHeader"
-msgid "Modify Setup"
-msgstr "Modifica Installazione"
-
-msgctxt "ModifyRepairButton"
-msgid "&Repair"
-msgstr "&Ripara"
-
-msgctxt "ModifyUninstallButton"
-msgid "&Uninstall"
-msgstr "&Disinstalla"
-
-msgctxt "ModifyCloseButton"
-msgid "&Close"
-msgstr "&Chiudi"
-
-msgctxt "SuccessHeader"
-msgid "Setup Successful"
-msgstr "Installazione Riuscita"
-
-msgctxt "SuccessInstallHeader"
-msgid "Mixxx installation has been successful"
-msgstr "Mixxx e' stato installato con successo"
-
-msgctxt "SuccessRepairHeader"
-msgid "Mixxx repair has been successful"
-msgstr "Mixxx e' stato riparato con successo"
-
-msgctxt "SuccessUninstallHeader"
-msgid "Mixxx uninstall has been successful"
-msgstr "Mixxx e' stato disinstallato con successo"
-
-msgctxt "SuccessLaunchButton"
-msgid "&Launch"
-msgstr "&Avvia"
-
-msgctxt "SuccessRestartText"
-msgid "You must restart your computer before you can use the software."
-msgstr "Devi riavviare il tuo computer prima di poter usare il software."
-
-msgctxt "SuccessRestartButton"
-msgid "&Restart"
-msgstr "&Riavvia"
-
-msgctxt "SuccessCloseButton"
-msgid "&Close"
-msgstr "&Chiudi"
-
-msgctxt "FailureHeader"
-msgid "Setup Failed"
-msgstr "Impostazione fallita"
-
-msgctxt "FailureInstallHeader"
-msgid "Mixxx installation failed"
-msgstr "Installazione Mixxx fallita"
-
-msgctxt "FailureRepairHeader"
-msgid "Mixxx repair failed"
-msgstr "Riparazione Mixxx fallita"
-
-msgctxt "FailureUninstallHeader"
-msgid "Mixxx uninstall failed"
-msgstr "Disinstallazione Mixxx fallita"
-
-msgctxt "FailureHyperlinkLogText"
-msgid ""
-"One or more issues caused the setup to fail. Please fix the issues and then "
-"retry setup. For more information see the log file."
-msgstr "Uno o più problemi hanno causato il fallimento dell'installazione. Aggiustare questi problemi e riprovare l'installazione. Per maggiori informazioni vedi il file log."
-
-msgctxt "FailureRestartText"
-msgid ""
-"You must restart your computer to complete the rollback of the software."
-msgstr "Devi riavviare il computer per completare l'annullamento del software."
-
-msgctxt "FailureRestartButton"
-msgid "&Restart"
-msgstr "&Riavvia"
-
-msgctxt "FailureCloseButton"
-msgid "&Close"
-msgstr "&Chiudi"
diff --git a/build/wix/Localization/po/mixxx.pot b/build/wix/Localization/po/mixxx.pot
deleted file mode 100644
index 046bc65561c..00000000000
--- a/build/wix/Localization/po/mixxx.pot
+++ /dev/null
@@ -1,330 +0,0 @@
-#
-msgid ""
-msgstr ""
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#. Programm informations
-msgctxt "ApplicationName"
-msgid "Mixxx"
-msgstr ""
-
-msgctxt "ManufacturerName"
-msgid "Mixxx"
-msgstr ""
-
-msgctxt "ManufacturerFullName"
-msgid "The Mixxx Development Team"
-msgstr ""
-
-msgctxt "ProductDescription"
-msgid "Open-source Digital DJ software"
-msgstr ""
-
-msgctxt "Comments"
-msgid "Installs Mixxx"
-msgstr ""
-
-#. Error messages
-#. DO NOT BREAK LINES BECAUSE LINE BREAKS WILL SHOW UP AS-IS IN THE INTERFACE
-msgctxt "OS2Old"
-msgid "This product requires Windows 7 or above."
-msgstr ""
-
-msgctxt "NewerInstalled"
-msgid "The same or a newer version of this product is already installed."
-msgstr ""
-
-msgctxt "x64VersionRequired"
-msgid "You need to install the 64-bit version of this product on 64-bit Windows."
-msgstr ""
-
-msgctxt "x86VersionRequired"
-msgid "You need to install the 32-bit version of this product on 32-bit Windows."
-msgstr ""
-
-msgctxt "x86VersionWarning"
-msgid "You are about to install the 32-bit version on a 64-bit operating system. We recommend using the 64-bit version for better performance. You can download the 64-bit installation package from http://mixxx.org/download/"
-msgstr ""
-
-msgctxt "XPWarning"
-msgid "You are installing Mixxx on an outdated operating system. Some functions may not work well or at all. We recommend upgrading your operating system."
-msgstr ""
-
-msgctxt "bitWidthMismatch32"
-msgid "You are about to install the 32-bit version but a 64-bit one is already installed. This can lead to undesired behavior. Please un-install the existing Mixxx first, or download the 64-bit installation package to upgrade (unless you know exactly what you are doing.)"
-msgstr ""
-
-msgctxt "bitWidthMismatch64"
-msgid "You are about to install the 64-bit version but a 32-bit one is already installed. This can lead to undesired behavior. Please un-install the existing Mixxx first, or download the 32-bit installation package to upgrade (unless you know exactly what you are doing.)"
-msgstr ""
-
-msgctxt "OlderVersionFound"
-msgid "An older version of Mixxx has been detected. As we changed installer, we can not smoothly upgrade. Please uninstall older version before installing this one."
-msgstr ""
-
-msgctxt "VCredistNotFound"
-msgid "Installer was not able to find Microsoft Visual C++ 2015 Redistributable on this system. This is likely an installer bug that should be reported to Mixxx developers."
-msgstr ""
-
-#. Custom Warning Dialog
-msgctxt "WarningDlgTitle"
-msgid "{\\WixUI_Font_Title}Warning"
-msgstr ""
-
-#. Custom exit dialog
-msgctxt "StartOnExit"
-msgid "Launch Mixxx when setup exits."
-msgstr ""
-
-#. Features translations
-msgctxt "FeatureCompleteDescription"
-msgid "The complete package."
-msgstr ""
-
-msgctxt "FeatureMainProgramTitle"
-msgid "Core application"
-msgstr ""
-
-msgctxt "FeatureMainProgramDescription"
-msgid "The core Mixxx application including controller presets."
-msgstr ""
-
-msgctxt "FeaturePDBTitle"
-msgid "PDB debug files"
-msgstr ""
-
-msgctxt "FeaturePDBDescription"
-msgid "Install Mixxx PDB files to use with a debugger. This is useful to debug Mixxx and provide readable backtraces to the development team."
-msgstr ""
-
-msgctxt "FeatureDesktopShortcutTitle"
-msgid "Desktop Shortcut"
-msgstr ""
-
-msgctxt "FeatureDesktopShortcutDescription"
-msgid "Add a shortcut to Mixxx on your desktop"
-msgstr ""
-
-msgctxt "FeatureManualTitle"
-msgid "User Manual"
-msgstr ""
-
-msgctxt "FeatureManualDescription"
-msgid "The Mixxx user manual in PDF form, also available at http://mixxx.org/manual/"
-msgstr ""
-
-msgctxt "FeatureTranslationsTitle"
-msgid "Translations"
-msgstr ""
-
-msgctxt "FeatureTranslationsDescription"
-msgid "Resource files that allow Mixxx to display in alternate languages, other than US english"
-msgstr ""
-
-#. Bootstrapper
-msgctxt "Caption"
-msgid "[WixBundleName] Setup"
-msgstr ""
-
-msgctxt "Title"
-msgid "[WixBundleName]"
-msgstr ""
-
-msgctxt "ConfirmCancelMessage"
-msgid "Are you sure you want to cancel?"
-msgstr ""
-
-msgctxt "ExecuteUpgradeRelatedBundleMessage"
-msgid "Previous version"
-msgstr ""
-
-msgctxt "HelpHeader"
-msgid "Setup Help"
-msgstr ""
-
-msgctxt "HelpText"
-msgid ""
-"/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or\n"
-" creates a complete local copy of the bundle in directory.\n"
-" Install is the default.\n"
-"\n"
-" /passive | /quiet - displays minimal user interface with no prompts or displays no user interface\n"
-" and no prompts. By default user interface and all prompts are displayed.\n"
-"\n"
-" /norestart - suppress any attempts to restart. By default user interface will prompt before restart.\n"
-"\n"
-" /log log.txt - logs to a specific file. By default a log file is created in %TEMP%."
-msgstr ""
-
-msgctxt "HelpCloseButton"
-msgid "&Close"
-msgstr ""
-
-msgctxt "InstallHeader"
-msgid "Welcome"
-msgstr ""
-
-msgctxt "InstallMessage"
-msgid ""
-"Setup will install Mixxx on your computer.\n"
-"It will first install required third party libraries, then Mixxx itself.\n"
-"Click Install to continue or Close to exit."
-msgstr ""
-
-msgctxt "InstallVersion"
-msgid "Version [WixBundleVersion]"
-msgstr ""
-
-msgctxt "InstallOptionsButton"
-msgid "&Options"
-msgstr ""
-
-msgctxt "InstallInstallButton"
-msgid "&Install"
-msgstr ""
-
-msgctxt "InstallCloseButton"
-msgid "&Close"
-msgstr ""
-
-msgctxt "OptionsHeader"
-msgid "Setup Options"
-msgstr ""
-
-msgctxt "OptionsLocationLabel"
-msgid "Install location:"
-msgstr ""
-
-msgctxt "OptionsBrowseButton"
-msgid "&Browse"
-msgstr ""
-
-msgctxt "OptionsOkButton"
-msgid "&OK"
-msgstr ""
-
-msgctxt "OptionsCancelButton"
-msgid "&Cancel"
-msgstr ""
-
-msgctxt "FilesInUseHeader"
-msgid "Files In Use"
-msgstr ""
-
-msgctxt "FilesInUseLabel"
-msgid "The following applications are using files that need to be updated:"
-msgstr ""
-
-msgctxt "FilesInUseCloseRadioButton"
-msgid "Close the &applications and attempt to restart them."
-msgstr ""
-
-msgctxt "FilesInUseDontCloseRadioButton"
-msgid "&Do not close applications. A reboot will be required."
-msgstr ""
-
-msgctxt "FilesInUseOkButton"
-msgid "&OK"
-msgstr ""
-
-msgctxt "FilesInUseCancelButton"
-msgid "&Cancel"
-msgstr ""
-
-msgctxt "ProgressHeader"
-msgid "Setup Progress"
-msgstr ""
-
-msgctxt "ProgressLabel"
-msgid "Processing:"
-msgstr ""
-
-msgctxt "OverallProgressPackageText"
-msgid "Initializing..."
-msgstr ""
-
-msgctxt "ProgressCancelButton"
-msgid "&Cancel"
-msgstr ""
-
-msgctxt "ModifyHeader"
-msgid "Modify Setup"
-msgstr ""
-
-msgctxt "ModifyRepairButton"
-msgid "&Repair"
-msgstr ""
-
-msgctxt "ModifyUninstallButton"
-msgid "&Uninstall"
-msgstr ""
-
-msgctxt "ModifyCloseButton"
-msgid "&Close"
-msgstr ""
-
-msgctxt "SuccessHeader"
-msgid "Setup Successful"
-msgstr ""
-
-msgctxt "SuccessInstallHeader"
-msgid "Mixxx installation has been successful"
-msgstr ""
-
-msgctxt "SuccessRepairHeader"
-msgid "Mixxx repair has been successful"
-msgstr ""
-
-msgctxt "SuccessUninstallHeader"
-msgid "Mixxx uninstall has been successful"
-msgstr ""
-
-msgctxt "SuccessLaunchButton"
-msgid "&Launch"
-msgstr ""
-
-msgctxt "SuccessRestartText"
-msgid "You must restart your computer before you can use the software."
-msgstr ""
-
-msgctxt "SuccessRestartButton"
-msgid "&Restart"
-msgstr ""
-
-msgctxt "SuccessCloseButton"
-msgid "&Close"
-msgstr ""
-
-msgctxt "FailureHeader"
-msgid "Setup Failed"
-msgstr ""
-
-msgctxt "FailureInstallHeader"
-msgid "Mixxx installation failed"
-msgstr ""
-
-msgctxt "FailureRepairHeader"
-msgid "Mixxx repair failed"
-msgstr ""
-
-msgctxt "FailureUninstallHeader"
-msgid "Mixxx uninstall failed"
-msgstr ""
-
-msgctxt "FailureHyperlinkLogText"
-msgid "One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the log file."
-msgstr ""
-
-msgctxt "FailureRestartText"
-msgid "You must restart your computer to complete the rollback of the software."
-msgstr ""
-
-msgctxt "FailureRestartButton"
-msgid "&Restart"
-msgstr ""
-
-msgctxt "FailureCloseButton"
-msgid "&Close"
-msgstr ""
diff --git a/build/wix/Localization/po/nl-NL.po b/build/wix/Localization/po/nl-NL.po
deleted file mode 100644
index 8b6be073bd6..00000000000
--- a/build/wix/Localization/po/nl-NL.po
+++ /dev/null
@@ -1,374 +0,0 @@
-#
-# Translators:
-# Henk Gordebeke , 2017
-# Mario Moens , 2020
-# Raf Van De Meirssche , 2016
-# Raf Van De Meirssche , 2016
-# S.Brandt , 2018
-# Sebastien BLAISOT , 2016-2017
-# Sebastien BLAISOT , 2016
-msgid ""
-msgstr ""
-"Project-Id-Version: Mixxx DJ Windows installer\n"
-"PO-Revision-Date: 2020-06-08 12:31+0000\n"
-"Last-Translator: Mario Moens \n"
-"Language-Team: Dutch (Netherlands) (http://www.transifex.com/mixxx-dj-software/mixxxdj-windows-installer/language/nl_NL/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nl_NL\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#. Programm informations
-msgctxt "ApplicationName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerFullName"
-msgid "The Mixxx Development Team"
-msgstr "Het Mixxx ontwikkellingsteam"
-
-msgctxt "ProductDescription"
-msgid "Open-source Digital DJ software"
-msgstr "Open-source Digitale DJ software"
-
-msgctxt "Comments"
-msgid "Installs Mixxx"
-msgstr "Installeert Mixxx"
-
-#. Error messages
-#. DO NOT BREAK LINES BECAUSE LINE BREAKS WILL SHOW UP AS-IS IN THE INTERFACE
-msgctxt "OS2Old"
-msgid "This product requires Windows 7 or above."
-msgstr "Dit product vereist Windows 7 of hoger."
-
-msgctxt "NewerInstalled"
-msgid "The same or a newer version of this product is already installed."
-msgstr "Dezelfde of een nieuwere versie van dit product is reeds geïnstalleerd."
-
-msgctxt "x64VersionRequired"
-msgid ""
-"You need to install the 64-bit version of this product on 64-bit Windows."
-msgstr "Je moet de 64-bits versie van dit product installeren op een 64-bits versie van Windows."
-
-msgctxt "x86VersionRequired"
-msgid ""
-"You need to install the 32-bit version of this product on 32-bit Windows."
-msgstr "Je moet de 32-bits versie van dit product installeren op een 32-bits versie van Windows."
-
-msgctxt "x86VersionWarning"
-msgid ""
-"You are about to install the 32-bit version on a 64-bit operating system. We"
-" recommend using the 64-bit version for better performance. You can download"
-" the 64-bit installation package from http://mixxx.org/download/"
-msgstr "Je staat op het punt om de 32-bits versie te installeren op een 64-bits besturingssysteem. We raden aan om de 64-bits versie te gebruiken voor betere prestaties. Je kunt het 64-bits installatiepakket downloaden van http://mixxx.org/download/"
-
-msgctxt "XPWarning"
-msgid ""
-"You are installing Mixxx on an outdated operating system. Some functions may"
-" not work well or at all. We recommend upgrading your operating system."
-msgstr "Je wilt Mixxx installeren op een verouderd besturingssysteem. Sommige functies werken mogelijk niet goed of helemaal niet. We raden je aan om je besturingssysteem te upgraden."
-
-msgctxt "bitWidthMismatch32"
-msgid ""
-"You are about to install the 32-bit version but a 64-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 64-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "Je wilt de 32-bits versie installeren maar een 64-bits is reeds geïnstalleerd. Dit kan leiden tot ongewenste effecten. Gelieve eerst de bestaande Mixxx te verwijderen, of het 64-bits installatiepakket te downloaden en te upgraden (Tenzij je exact weet waar je aan begint)"
-
-msgctxt "bitWidthMismatch64"
-msgid ""
-"You are about to install the 64-bit version but a 32-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 32-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "Je wilt de 64-bits versie installeren maar een 32-bits is reeds geïnstalleerd. Dit kan leiden tot ongewenste effecten. Gelieve eerst de bestaande Mixxx te verwijderen, of het 32-bits installatiepakket te downloaden en te upgraden (Tenzij je exact weet waar je aan begint)"
-
-msgctxt "OlderVersionFound"
-msgid ""
-"An older version of Mixxx has been detected. As we changed installer, we can"
-" not smoothly upgrade. Please uninstall older version before installing this"
-" one."
-msgstr "Een oudere versie van Mixxx is gedetecteerd. Door wijziging van de installer is een vlotte bijwerking niet mogelijk. Verwijder de oudere versie voordat u deze versie installeert."
-
-msgctxt "VCredistNotFound"
-msgid ""
-"Installer was not able to find Microsoft Visual C++ 2015 Redistributable on "
-"this system. This is likely an installer bug that should be reported to "
-"Mixxx developers."
-msgstr "De installatie heeft Microsoft Visual C++ 2015 Redistributable niet kunnen vinden op uw computer. Dit zou kunnen wijzen op een fout in het installatie bestand. Wilt u dit even doorgeven aan de makers van Mixxx, dat hun dit probleem kunnen oplossen voor u."
-
-#. Custom Warning Dialog
-msgctxt "WarningDlgTitle"
-msgid "{\\WixUI_Font_Title}Warning"
-msgstr "{\\WixUI_Font_Title}Waarschuwing"
-
-#. Custom exit dialog
-msgctxt "StartOnExit"
-msgid "Launch Mixxx when setup exits."
-msgstr "Start Mixxx na de installatie."
-
-#. Features translations
-msgctxt "FeatureCompleteDescription"
-msgid "The complete package."
-msgstr "Het volledige pakket."
-
-msgctxt "FeatureMainProgramTitle"
-msgid "Core application"
-msgstr "Kerntoepassing"
-
-msgctxt "FeatureMainProgramDescription"
-msgid "The core Mixxx application including controller presets."
-msgstr "De Mixxx-kerntoepassing inclusief voorinstellingen voor controllers."
-
-msgctxt "FeaturePDBTitle"
-msgid "PDB debug files"
-msgstr "PDB debug-bestanden"
-
-msgctxt "FeaturePDBDescription"
-msgid ""
-"Install Mixxx PDB files to use with a debugger. This is useful to debug "
-"Mixxx and provide readable backtraces to the development team."
-msgstr "Installeer Mixxx PDB-bestanden om te gebruiken met een debugger. Dit is nuttig om Mixxx te debuggen en het ontwikkelingsteam een leesbare backtrace te bieden."
-
-msgctxt "FeatureDesktopShortcutTitle"
-msgid "Desktop Shortcut"
-msgstr "Snelkoppeling op het bureaublad"
-
-msgctxt "FeatureDesktopShortcutDescription"
-msgid "Add a shortcut to Mixxx on your desktop"
-msgstr "Voeg een snelkoppeling naar Mixxx toe op je bureaublad"
-
-msgctxt "FeatureManualTitle"
-msgid "User Manual"
-msgstr "Gebruikershandleiding"
-
-msgctxt "FeatureManualDescription"
-msgid ""
-"The Mixxx user manual in PDF form, also available at "
-"http://mixxx.org/manual/"
-msgstr "De Mixxx gebruikershandleiding in PDF-formaat, ook beschikbaar op http://mixxx.org/manual/"
-
-msgctxt "FeatureTranslationsTitle"
-msgid "Translations"
-msgstr "Vertalingen"
-
-msgctxt "FeatureTranslationsDescription"
-msgid ""
-"Resource files that allow Mixxx to display in alternate languages, other "
-"than US english"
-msgstr "Hulpbestanden die Mixxx toelaten om te werken met andere talen dan Amerikaans Engels"
-
-#. Bootstrapper
-msgctxt "Caption"
-msgid "[WixBundleName] Setup"
-msgstr "[WixBundleName] Setup"
-
-msgctxt "Title"
-msgid "[WixBundleName]"
-msgstr "[WixBundleName]"
-
-msgctxt "ConfirmCancelMessage"
-msgid "Are you sure you want to cancel?"
-msgstr "Weet je zeker dat je dit wilt annuleren?"
-
-msgctxt "ExecuteUpgradeRelatedBundleMessage"
-msgid "Previous version"
-msgstr "Vorige versie"
-
-msgctxt "HelpHeader"
-msgid "Setup Help"
-msgstr "Setup Help"
-
-msgctxt "HelpText"
-msgid ""
-"/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or\n"
-" creates a complete local copy of the bundle in directory.\n"
-" Install is the default.\n"
-"\n"
-" /passive | /quiet - displays minimal user interface with no prompts or displays no user interface\n"
-" and no prompts. By default user interface and all prompts are displayed.\n"
-"\n"
-" /norestart - suppress any attempts to restart. By default user interface will prompt before restart.\n"
-"\n"
-" /log log.txt - logs to a specific file. By default a log file is created in %TEMP%."
-msgstr "/installeren | /herstellen | /verwijderen | /layout [directory] - installeert, repareert, verwijdert of\n maakt een complete lokale kopie van de bundel in de directory.\n Installeren is de standaard.\n\n /passief | /stil - geeft een minimale gebruikersinterface weer zonder prompts of geeft geen gebruikersinterface weer\n en geen prompts. Standaard worden de gebruikersinterface en alle prompts weergegeven.\n\n /norestart - onderdruk pogingen om opnieuw op te starten. Standaard vraagt de gebruikersinterface om opnieuw op te starten.\n\n /log log.txt - logt in op een specifiek bestand. Standaard wordt een logbestand gemaakt in% TEMP%."
-
-msgctxt "HelpCloseButton"
-msgid "&Close"
-msgstr "&Sluiten"
-
-msgctxt "InstallHeader"
-msgid "Welcome"
-msgstr "Welkom"
-
-msgctxt "InstallMessage"
-msgid ""
-"Setup will install Mixxx on your computer.\n"
-"It will first install required third party libraries, then Mixxx itself.\n"
-"Click Install to continue or Close to exit."
-msgstr "Setup installeert Mixxx op uw computer.\nHet zal eerst de vereiste bibliotheken van derden installeren en vervolgens Mixxx zelf.\nKlik op Installeren om door te gaan of op Sluiten om af te sluiten."
-
-msgctxt "InstallVersion"
-msgid "Version [WixBundleVersion]"
-msgstr "[WixBundleVersion] Versie"
-
-msgctxt "InstallOptionsButton"
-msgid "&Options"
-msgstr "&Opties"
-
-msgctxt "InstallInstallButton"
-msgid "&Install"
-msgstr "&Installeer"
-
-msgctxt "InstallCloseButton"
-msgid "&Close"
-msgstr "&Sluiten"
-
-msgctxt "OptionsHeader"
-msgid "Setup Options"
-msgstr "Setup Opties"
-
-msgctxt "OptionsLocationLabel"
-msgid "Install location:"
-msgstr "Installatielocatie:"
-
-msgctxt "OptionsBrowseButton"
-msgid "&Browse"
-msgstr "&Bladeren"
-
-msgctxt "OptionsOkButton"
-msgid "&OK"
-msgstr "&OK"
-
-msgctxt "OptionsCancelButton"
-msgid "&Cancel"
-msgstr "&Anulleren"
-
-msgctxt "FilesInUseHeader"
-msgid "Files In Use"
-msgstr "Bestanden in gebruik"
-
-msgctxt "FilesInUseLabel"
-msgid "The following applications are using files that need to be updated:"
-msgstr "De volgende toepassingen maken gebruik van bestanden die moeten worden bijgewerkt:"
-
-msgctxt "FilesInUseCloseRadioButton"
-msgid "Close the &applications and attempt to restart them."
-msgstr "Sluit de &applicaties en probeer ze opnieuw op te starten."
-
-msgctxt "FilesInUseDontCloseRadioButton"
-msgid "&Do not close applications. A reboot will be required."
-msgstr "&Sluit applicaties niet. Opnieuw opstarten is vereist."
-
-msgctxt "FilesInUseOkButton"
-msgid "&OK"
-msgstr "&OK"
-
-msgctxt "FilesInUseCancelButton"
-msgid "&Cancel"
-msgstr "&Anulleren"
-
-msgctxt "ProgressHeader"
-msgid "Setup Progress"
-msgstr "Setup Voortgang"
-
-msgctxt "ProgressLabel"
-msgid "Processing:"
-msgstr "Verwerken:"
-
-msgctxt "OverallProgressPackageText"
-msgid "Initializing..."
-msgstr "Initialiseren..."
-
-msgctxt "ProgressCancelButton"
-msgid "&Cancel"
-msgstr "&Anulleren"
-
-msgctxt "ModifyHeader"
-msgid "Modify Setup"
-msgstr "Setup wijzigen"
-
-msgctxt "ModifyRepairButton"
-msgid "&Repair"
-msgstr "&Herstellen"
-
-msgctxt "ModifyUninstallButton"
-msgid "&Uninstall"
-msgstr "&Verwijderen"
-
-msgctxt "ModifyCloseButton"
-msgid "&Close"
-msgstr "&Sluiten"
-
-msgctxt "SuccessHeader"
-msgid "Setup Successful"
-msgstr "Setup succesvol"
-
-msgctxt "SuccessInstallHeader"
-msgid "Mixxx installation has been successful"
-msgstr "Mixxx-installatie is geslaagd"
-
-msgctxt "SuccessRepairHeader"
-msgid "Mixxx repair has been successful"
-msgstr "Mixxx-herstel is geslaagd"
-
-msgctxt "SuccessUninstallHeader"
-msgid "Mixxx uninstall has been successful"
-msgstr "Mixxx verwijderen is geslaagd"
-
-msgctxt "SuccessLaunchButton"
-msgid "&Launch"
-msgstr "&Opstarten"
-
-msgctxt "SuccessRestartText"
-msgid "You must restart your computer before you can use the software."
-msgstr "U moet uw computer opnieuw opstarten voordat u de software kunt gebruiken."
-
-msgctxt "SuccessRestartButton"
-msgid "&Restart"
-msgstr "&Herstarten"
-
-msgctxt "SuccessCloseButton"
-msgid "&Close"
-msgstr "&Sluiten"
-
-msgctxt "FailureHeader"
-msgid "Setup Failed"
-msgstr "Installatie mislukt"
-
-msgctxt "FailureInstallHeader"
-msgid "Mixxx installation failed"
-msgstr "Mixxx-installatie mislukt"
-
-msgctxt "FailureRepairHeader"
-msgid "Mixxx repair failed"
-msgstr "Mixxx-herstel mislukt"
-
-msgctxt "FailureUninstallHeader"
-msgid "Mixxx uninstall failed"
-msgstr "Mixxx verwijderen is mislukt"
-
-msgctxt "FailureHyperlinkLogText"
-msgid ""
-"One or more issues caused the setup to fail. Please fix the issues and then "
-"retry setup. For more information see the log file."
-msgstr "Door een of meer problemen is de installatie mislukt. Los de problemen op en probeer het opnieuw. Zie het logbestand voor meer informatie."
-
-msgctxt "FailureRestartText"
-msgid ""
-"You must restart your computer to complete the rollback of the software."
-msgstr "U moet uw computer opnieuw opstarten om het terugdraaien van de software te voltooien."
-
-msgctxt "FailureRestartButton"
-msgid "&Restart"
-msgstr "&Herstarten"
-
-msgctxt "FailureCloseButton"
-msgid "&Close"
-msgstr "&Sluiten"
diff --git a/build/wix/Localization/po/pl-PL.po b/build/wix/Localization/po/pl-PL.po
deleted file mode 100644
index f8f2c6d0773..00000000000
--- a/build/wix/Localization/po/pl-PL.po
+++ /dev/null
@@ -1,370 +0,0 @@
-#
-# Translators:
-# Jakub Fabijan , 2018
-# Jan Ochwat , 2016
-# S.Brandt , 2018
-msgid ""
-msgstr ""
-"Project-Id-Version: Mixxx DJ Windows installer\n"
-"PO-Revision-Date: 2019-04-17 21:53+0000\n"
-"Last-Translator: S.Brandt \n"
-"Language-Team: Polish (Poland) (http://www.transifex.com/mixxx-dj-software/mixxxdj-windows-installer/language/pl_PL/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: pl_PL\n"
-"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
-
-#. Programm informations
-msgctxt "ApplicationName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerFullName"
-msgid "The Mixxx Development Team"
-msgstr "Drużyna Deweloperska Mixxx'a"
-
-msgctxt "ProductDescription"
-msgid "Open-source Digital DJ software"
-msgstr "Oprogramowanie DJ Open-source"
-
-msgctxt "Comments"
-msgid "Installs Mixxx"
-msgstr "Instaluje Mixxx"
-
-#. Error messages
-#. DO NOT BREAK LINES BECAUSE LINE BREAKS WILL SHOW UP AS-IS IN THE INTERFACE
-msgctxt "OS2Old"
-msgid "This product requires Windows 7 or above."
-msgstr "Ten produkt wymaga Windowsa 7 lub wyżsego"
-
-msgctxt "NewerInstalled"
-msgid "The same or a newer version of this product is already installed."
-msgstr "Ta lub nowsza wersja tego produktu jest juź zainstalowana."
-
-msgctxt "x64VersionRequired"
-msgid ""
-"You need to install the 64-bit version of this product on 64-bit Windows."
-msgstr "Musisz zainstalować 64-bitową wersję na 64-bitowym Windowsie."
-
-msgctxt "x86VersionRequired"
-msgid ""
-"You need to install the 32-bit version of this product on 32-bit Windows."
-msgstr "Musisz zainstalować 32-bitową wersję na 32-bitowym Windowsie."
-
-msgctxt "x86VersionWarning"
-msgid ""
-"You are about to install the 32-bit version on a 64-bit operating system. We"
-" recommend using the 64-bit version for better performance. You can download"
-" the 64-bit installation package from http://mixxx.org/download/"
-msgstr "Masz zamiar zainstalować wersję 32-bitową w 64-bitowym systemie operacyjnym. Zalecane jest użycie 64-bitowej wersji dla lepszej wydajności. Pakiet instalacji 64-bitowej można pobrać z http://mixxx.org/download/"
-
-msgctxt "XPWarning"
-msgid ""
-"You are installing Mixxx on an outdated operating system. Some functions may"
-" not work well or at all. We recommend upgrading your operating system."
-msgstr "Instalujesz Mixxx'a na przestarzałym systemie operacyjnym. Niektóre funkcje mogą nie działac prawidłowo lub wcale. Rekomendujemy zaktualizować swój system operacyjny."
-
-msgctxt "bitWidthMismatch32"
-msgid ""
-"You are about to install the 32-bit version but a 64-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 64-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "Masz zamiar zainstalować 32-bitową wersje, ale już jest zainstalowana wersja 64-bitowa. Może to prowadzić do niepożądanego działania. Najpierw należy odinstalować istniejącego Mixxx'a, lub Pobrać pakiet instalacji 64-bitowej do uaktualnienia (chyba, że wiesz, co robisz.)"
-
-msgctxt "bitWidthMismatch64"
-msgid ""
-"You are about to install the 64-bit version but a 32-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 32-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "Masz zamiar zainstalować 64-bitową wersję, ale już jest zainstalowana wersja 32-bitowa. Może to prowadzić do niepożądanego działania. Najpierw należy odinstalować istniejącego Mixxx'a, lub Pobrać pakiet instalacji 32-bitowe do uaktualnienia (chyba, że wiesz, co robisz.)"
-
-msgctxt "OlderVersionFound"
-msgid ""
-"An older version of Mixxx has been detected. As we changed installer, we can"
-" not smoothly upgrade. Please uninstall older version before installing this"
-" one."
-msgstr "Wykryto starszą wersję Mixxx. Zmieniliśy Instalator, nie można płynnie uaktualnić programu. Proszę odinstalować starszą wersję przed zainstalowaniem tej."
-
-msgctxt "VCredistNotFound"
-msgid ""
-"Installer was not able to find Microsoft Visual C++ 2015 Redistributable on "
-"this system. This is likely an installer bug that should be reported to "
-"Mixxx developers."
-msgstr ""
-
-#. Custom Warning Dialog
-msgctxt "WarningDlgTitle"
-msgid "{\\WixUI_Font_Title}Warning"
-msgstr "{\\WixUI_Font_Title}Ostrzeżenie"
-
-#. Custom exit dialog
-msgctxt "StartOnExit"
-msgid "Launch Mixxx when setup exits."
-msgstr "Włącz Mixxx'a kiedy skończy się instalacja."
-
-#. Features translations
-msgctxt "FeatureCompleteDescription"
-msgid "The complete package."
-msgstr "Kompletny pakiet."
-
-msgctxt "FeatureMainProgramTitle"
-msgid "Core application"
-msgstr "Główna aplikacja"
-
-msgctxt "FeatureMainProgramDescription"
-msgid "The core Mixxx application including controller presets."
-msgstr "Mixxx posiada zapisane ustawienia do różnych kontrolerów."
-
-msgctxt "FeaturePDBTitle"
-msgid "PDB debug files"
-msgstr ""
-
-msgctxt "FeaturePDBDescription"
-msgid ""
-"Install Mixxx PDB files to use with a debugger. This is useful to debug "
-"Mixxx and provide readable backtraces to the development team."
-msgstr ""
-
-msgctxt "FeatureDesktopShortcutTitle"
-msgid "Desktop Shortcut"
-msgstr "Skrót na pulpicie"
-
-msgctxt "FeatureDesktopShortcutDescription"
-msgid "Add a shortcut to Mixxx on your desktop"
-msgstr "Dodaj skrót do Mixxx'a na twoim pulpicie"
-
-msgctxt "FeatureManualTitle"
-msgid "User Manual"
-msgstr "Instrukcja obsługi"
-
-msgctxt "FeatureManualDescription"
-msgid ""
-"The Mixxx user manual in PDF form, also available at "
-"http://mixxx.org/manual/"
-msgstr "Instrukcja obsługi Mixxx'a jest również dostępna jako PDF na http://mixxx.org/manual/"
-
-msgctxt "FeatureTranslationsTitle"
-msgid "Translations"
-msgstr "Translacje"
-
-msgctxt "FeatureTranslationsDescription"
-msgid ""
-"Resource files that allow Mixxx to display in alternate languages, other "
-"than US english"
-msgstr "Pliki zasobów, które pozwalają Mixxx'owi do wyświetlania w alternatywnych językach innych niż Angielski US"
-
-#. Bootstrapper
-msgctxt "Caption"
-msgid "[WixBundleName] Setup"
-msgstr ""
-
-msgctxt "Title"
-msgid "[WixBundleName]"
-msgstr ""
-
-msgctxt "ConfirmCancelMessage"
-msgid "Are you sure you want to cancel?"
-msgstr ""
-
-msgctxt "ExecuteUpgradeRelatedBundleMessage"
-msgid "Previous version"
-msgstr ""
-
-msgctxt "HelpHeader"
-msgid "Setup Help"
-msgstr "Pomoc instalacji"
-
-msgctxt "HelpText"
-msgid ""
-"/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or\n"
-" creates a complete local copy of the bundle in directory.\n"
-" Install is the default.\n"
-"\n"
-" /passive | /quiet - displays minimal user interface with no prompts or displays no user interface\n"
-" and no prompts. By default user interface and all prompts are displayed.\n"
-"\n"
-" /norestart - suppress any attempts to restart. By default user interface will prompt before restart.\n"
-"\n"
-" /log log.txt - logs to a specific file. By default a log file is created in %TEMP%."
-msgstr ""
-
-msgctxt "HelpCloseButton"
-msgid "&Close"
-msgstr ""
-
-msgctxt "InstallHeader"
-msgid "Welcome"
-msgstr "Witaj"
-
-msgctxt "InstallMessage"
-msgid ""
-"Setup will install Mixxx on your computer.\n"
-"It will first install required third party libraries, then Mixxx itself.\n"
-"Click Install to continue or Close to exit."
-msgstr ""
-
-msgctxt "InstallVersion"
-msgid "Version [WixBundleVersion]"
-msgstr ""
-
-msgctxt "InstallOptionsButton"
-msgid "&Options"
-msgstr ""
-
-msgctxt "InstallInstallButton"
-msgid "&Install"
-msgstr ""
-
-msgctxt "InstallCloseButton"
-msgid "&Close"
-msgstr ""
-
-msgctxt "OptionsHeader"
-msgid "Setup Options"
-msgstr ""
-
-msgctxt "OptionsLocationLabel"
-msgid "Install location:"
-msgstr ""
-
-msgctxt "OptionsBrowseButton"
-msgid "&Browse"
-msgstr ""
-
-msgctxt "OptionsOkButton"
-msgid "&OK"
-msgstr ""
-
-msgctxt "OptionsCancelButton"
-msgid "&Cancel"
-msgstr ""
-
-msgctxt "FilesInUseHeader"
-msgid "Files In Use"
-msgstr ""
-
-msgctxt "FilesInUseLabel"
-msgid "The following applications are using files that need to be updated:"
-msgstr ""
-
-msgctxt "FilesInUseCloseRadioButton"
-msgid "Close the &applications and attempt to restart them."
-msgstr ""
-
-msgctxt "FilesInUseDontCloseRadioButton"
-msgid "&Do not close applications. A reboot will be required."
-msgstr ""
-
-msgctxt "FilesInUseOkButton"
-msgid "&OK"
-msgstr ""
-
-msgctxt "FilesInUseCancelButton"
-msgid "&Cancel"
-msgstr ""
-
-msgctxt "ProgressHeader"
-msgid "Setup Progress"
-msgstr ""
-
-msgctxt "ProgressLabel"
-msgid "Processing:"
-msgstr ""
-
-msgctxt "OverallProgressPackageText"
-msgid "Initializing..."
-msgstr ""
-
-msgctxt "ProgressCancelButton"
-msgid "&Cancel"
-msgstr ""
-
-msgctxt "ModifyHeader"
-msgid "Modify Setup"
-msgstr ""
-
-msgctxt "ModifyRepairButton"
-msgid "&Repair"
-msgstr ""
-
-msgctxt "ModifyUninstallButton"
-msgid "&Uninstall"
-msgstr ""
-
-msgctxt "ModifyCloseButton"
-msgid "&Close"
-msgstr ""
-
-msgctxt "SuccessHeader"
-msgid "Setup Successful"
-msgstr ""
-
-msgctxt "SuccessInstallHeader"
-msgid "Mixxx installation has been successful"
-msgstr ""
-
-msgctxt "SuccessRepairHeader"
-msgid "Mixxx repair has been successful"
-msgstr ""
-
-msgctxt "SuccessUninstallHeader"
-msgid "Mixxx uninstall has been successful"
-msgstr ""
-
-msgctxt "SuccessLaunchButton"
-msgid "&Launch"
-msgstr ""
-
-msgctxt "SuccessRestartText"
-msgid "You must restart your computer before you can use the software."
-msgstr ""
-
-msgctxt "SuccessRestartButton"
-msgid "&Restart"
-msgstr ""
-
-msgctxt "SuccessCloseButton"
-msgid "&Close"
-msgstr ""
-
-msgctxt "FailureHeader"
-msgid "Setup Failed"
-msgstr ""
-
-msgctxt "FailureInstallHeader"
-msgid "Mixxx installation failed"
-msgstr ""
-
-msgctxt "FailureRepairHeader"
-msgid "Mixxx repair failed"
-msgstr ""
-
-msgctxt "FailureUninstallHeader"
-msgid "Mixxx uninstall failed"
-msgstr ""
-
-msgctxt "FailureHyperlinkLogText"
-msgid ""
-"One or more issues caused the setup to fail. Please fix the issues and then "
-"retry setup. For more information see the log file."
-msgstr ""
-
-msgctxt "FailureRestartText"
-msgid ""
-"You must restart your computer to complete the rollback of the software."
-msgstr ""
-
-msgctxt "FailureRestartButton"
-msgid "&Restart"
-msgstr ""
-
-msgctxt "FailureCloseButton"
-msgid "&Close"
-msgstr ""
diff --git a/build/wix/Localization/po/pt-BR.po b/build/wix/Localization/po/pt-BR.po
deleted file mode 100644
index 83e27e67503..00000000000
--- a/build/wix/Localization/po/pt-BR.po
+++ /dev/null
@@ -1,375 +0,0 @@
-#
-# Translators:
-# Felipe Morato , 2017
-# Fer22f , 2016
-# Radagásio Fernandes , 2020
-# Rui , 2018
-# S.Brandt , 2018
-# Sebastien BLAISOT , 2016
-# Sebastien BLAISOT , 2016
-# Seila Oxe , 2020
-msgid ""
-msgstr ""
-"Project-Id-Version: Mixxx DJ Windows installer\n"
-"PO-Revision-Date: 2020-04-11 18:29+0000\n"
-"Last-Translator: Radagásio Fernandes \n"
-"Language-Team: Portuguese (Brazil) (http://www.transifex.com/mixxx-dj-software/mixxxdj-windows-installer/language/pt_BR/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#. Programm informations
-msgctxt "ApplicationName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerFullName"
-msgid "The Mixxx Development Team"
-msgstr "A Equipe de Desenvolvimento do Mixxx"
-
-msgctxt "ProductDescription"
-msgid "Open-source Digital DJ software"
-msgstr "Software de DJ digital de código-aberto"
-
-msgctxt "Comments"
-msgid "Installs Mixxx"
-msgstr "Instala o Mixx"
-
-#. Error messages
-#. DO NOT BREAK LINES BECAUSE LINE BREAKS WILL SHOW UP AS-IS IN THE INTERFACE
-msgctxt "OS2Old"
-msgid "This product requires Windows 7 or above."
-msgstr "Esse produto requer Windows 7 ou melhor."
-
-msgctxt "NewerInstalled"
-msgid "The same or a newer version of this product is already installed."
-msgstr "A mesma ou melhor versão deste produto já está instalada."
-
-msgctxt "x64VersionRequired"
-msgid ""
-"You need to install the 64-bit version of this product on 64-bit Windows."
-msgstr "Você precisa instalar a versão 64-bit desse produto no Windows 64-bit."
-
-msgctxt "x86VersionRequired"
-msgid ""
-"You need to install the 32-bit version of this product on 32-bit Windows."
-msgstr "Você precisa instalar a versão 32-bit desse produto no Windows 32-bit."
-
-msgctxt "x86VersionWarning"
-msgid ""
-"You are about to install the 32-bit version on a 64-bit operating system. We"
-" recommend using the 64-bit version for better performance. You can download"
-" the 64-bit installation package from http://mixxx.org/download/"
-msgstr "Você está prestes a instalar a versão 32-bit em um sistema operacional 64-bit. Nós recomendamos usar uma versão 64-bit para melhor performance. Você pode baixar o pacote de instalação 64-bit de http://mixxx.org/download/"
-
-msgctxt "XPWarning"
-msgid ""
-"You are installing Mixxx on an outdated operating system. Some functions may"
-" not work well or at all. We recommend upgrading your operating system."
-msgstr "Você está instalando o Mixxx em um sistema operacional desatualizado. Algumas funções podem não funcionar corretamente ou nem funcionar. Nós recomendamos atualizar o seu sistema operacional."
-
-msgctxt "bitWidthMismatch32"
-msgid ""
-"You are about to install the 32-bit version but a 64-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 64-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "Você está prestes a instalar a versão 32-bit mas uma versão 64-bit já está instalada. Isso pode levar a comportamento indesejado. Por favor desinstale a versão existente do Mixxx primeiro, ou baixe o pacote de instalação 64-bit para atualizar (a menos que você saiba exatamente o que você está fazendo.)"
-
-msgctxt "bitWidthMismatch64"
-msgid ""
-"You are about to install the 64-bit version but a 32-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 32-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "Você está prestes a instalar a versão 64-bit mas uma versão 32-bit já está instalada. Isso pode levar a comportamento indesejado. Por favor desinstale a versão existente do Mixxx primeiro, ou baixe o pacote de instalação 32-bit para atualizar (a menos que você saiba exatamente o que você está fazendo.)"
-
-msgctxt "OlderVersionFound"
-msgid ""
-"An older version of Mixxx has been detected. As we changed installer, we can"
-" not smoothly upgrade. Please uninstall older version before installing this"
-" one."
-msgstr "Uma versão antiga do Mixxx foi detectada. Como nós mudamos de instalador, não podemos atualizá-la de forma adequada. Por favor desinstale a versão antiga antes de instalar esta."
-
-msgctxt "VCredistNotFound"
-msgid ""
-"Installer was not able to find Microsoft Visual C++ 2015 Redistributable on "
-"this system. This is likely an installer bug that should be reported to "
-"Mixxx developers."
-msgstr "O instalador não conseguiu encontrar o Microsoft Visual C ++ 2015 Redistributable neste sistema. Provavelmente, é um erro do instalador que deve ser relatado aos desenvolvedores do Mixxx."
-
-#. Custom Warning Dialog
-msgctxt "WarningDlgTitle"
-msgid "{\\WixUI_Font_Title}Warning"
-msgstr "{\\WixUI_Font_Title}Atenção"
-
-#. Custom exit dialog
-msgctxt "StartOnExit"
-msgid "Launch Mixxx when setup exits."
-msgstr "Executar o Mixxx quando a instalação acabar."
-
-#. Features translations
-msgctxt "FeatureCompleteDescription"
-msgid "The complete package."
-msgstr "O pacote inteiro."
-
-msgctxt "FeatureMainProgramTitle"
-msgid "Core application"
-msgstr "Núcleo da aplicação"
-
-msgctxt "FeatureMainProgramDescription"
-msgid "The core Mixxx application including controller presets."
-msgstr "O núcleo da aplicação MIxxx incluindo pré-definições de controlador."
-
-msgctxt "FeaturePDBTitle"
-msgid "PDB debug files"
-msgstr "Arquivos PDB para debugar"
-
-msgctxt "FeaturePDBDescription"
-msgid ""
-"Install Mixxx PDB files to use with a debugger. This is useful to debug "
-"Mixxx and provide readable backtraces to the development team."
-msgstr "Instalar os arquivos PDB do Mixxx para usar com um debugger. isso é útil para debugar o Mixxx e fornece backtraces legíveis para a equipe de desenvolvimento."
-
-msgctxt "FeatureDesktopShortcutTitle"
-msgid "Desktop Shortcut"
-msgstr "Atalho na Área de Trabalho"
-
-msgctxt "FeatureDesktopShortcutDescription"
-msgid "Add a shortcut to Mixxx on your desktop"
-msgstr "Cria um atalho do Mixxx na sua área de trabalho"
-
-msgctxt "FeatureManualTitle"
-msgid "User Manual"
-msgstr "Manual do Usuário"
-
-msgctxt "FeatureManualDescription"
-msgid ""
-"The Mixxx user manual in PDF form, also available at "
-"http://mixxx.org/manual/"
-msgstr "O manual do usuário do Mixxx em formato PDF, também disponível em http://mixxx.org/manual/"
-
-msgctxt "FeatureTranslationsTitle"
-msgid "Translations"
-msgstr "Traduções"
-
-msgctxt "FeatureTranslationsDescription"
-msgid ""
-"Resource files that allow Mixxx to display in alternate languages, other "
-"than US english"
-msgstr "Arquivos de recursos que premitem o Mixxx mostrar outras linguagens além do inglês."
-
-#. Bootstrapper
-msgctxt "Caption"
-msgid "[WixBundleName] Setup"
-msgstr "Configuração"
-
-msgctxt "Title"
-msgid "[WixBundleName]"
-msgstr ""
-
-msgctxt "ConfirmCancelMessage"
-msgid "Are you sure you want to cancel?"
-msgstr "Você tem certeza que deseja cancelar?"
-
-msgctxt "ExecuteUpgradeRelatedBundleMessage"
-msgid "Previous version"
-msgstr "Versão anterior"
-
-msgctxt "HelpHeader"
-msgid "Setup Help"
-msgstr "Ajuda de configuração"
-
-msgctxt "HelpText"
-msgid ""
-"/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or\n"
-" creates a complete local copy of the bundle in directory.\n"
-" Install is the default.\n"
-"\n"
-" /passive | /quiet - displays minimal user interface with no prompts or displays no user interface\n"
-" and no prompts. By default user interface and all prompts are displayed.\n"
-"\n"
-" /norestart - suppress any attempts to restart. By default user interface will prompt before restart.\n"
-"\n"
-" /log log.txt - logs to a specific file. By default a log file is created in %TEMP%."
-msgstr "/instalar | /reparar | /desinstalar | /layout [diretório] - instala, repara, desinstala ou\ncria uma cópia local completa do pacote configurável no diretório.\nInstalar é o padrão.\n\n/passivo | /silencioso - exibe uma interface de usuário mínima sem prompts ou nenhuma interface de usuário\n e sem avisos. Por padrão, a interface do usuário e todos os prompts são exibidos.\n\n/sem reinício - suprime qualquer tentativa de reiniciar. Por padrão, a interface do usuário solicitará antes de reiniciar.\n/log log.txt - registra em um arquivo específico. Por padrão, um arquivo de log é criado em %TEMP%."
-
-msgctxt "HelpCloseButton"
-msgid "&Close"
-msgstr "&Fechar"
-
-msgctxt "InstallHeader"
-msgid "Welcome"
-msgstr "Bem-vindo"
-
-msgctxt "InstallMessage"
-msgid ""
-"Setup will install Mixxx on your computer.\n"
-"It will first install required third party libraries, then Mixxx itself.\n"
-"Click Install to continue or Close to exit."
-msgstr "O instalador instalará o Mixxx no seu computador.\nPrimeiro ele instala as bibliotecas de terceiros necessárias e depois o próprio Mixxx.\nClique em Instalar para continuar ou Fechar para sair."
-
-msgctxt "InstallVersion"
-msgid "Version [WixBundleVersion]"
-msgstr "Versão [WixBundleVersion]"
-
-msgctxt "InstallOptionsButton"
-msgid "&Options"
-msgstr "&Opções"
-
-msgctxt "InstallInstallButton"
-msgid "&Install"
-msgstr "&Instalar"
-
-msgctxt "InstallCloseButton"
-msgid "&Close"
-msgstr "&Fechar"
-
-msgctxt "OptionsHeader"
-msgid "Setup Options"
-msgstr "Opções de Configuração"
-
-msgctxt "OptionsLocationLabel"
-msgid "Install location:"
-msgstr "Local de instalação:"
-
-msgctxt "OptionsBrowseButton"
-msgid "&Browse"
-msgstr "&Navegador"
-
-msgctxt "OptionsOkButton"
-msgid "&OK"
-msgstr "&OK"
-
-msgctxt "OptionsCancelButton"
-msgid "&Cancel"
-msgstr "&Cancelar"
-
-msgctxt "FilesInUseHeader"
-msgid "Files In Use"
-msgstr "Arquivos em Uso"
-
-msgctxt "FilesInUseLabel"
-msgid "The following applications are using files that need to be updated:"
-msgstr "Os seguintes aplicativos estão usando arquivos que precisam ser atualizados:"
-
-msgctxt "FilesInUseCloseRadioButton"
-msgid "Close the &applications and attempt to restart them."
-msgstr "Feche os &aplicativos e tente reiniciá-los."
-
-msgctxt "FilesInUseDontCloseRadioButton"
-msgid "&Do not close applications. A reboot will be required."
-msgstr "&Não feche as aplicações. Uma reinicialização será necessária."
-
-msgctxt "FilesInUseOkButton"
-msgid "&OK"
-msgstr "&OK"
-
-msgctxt "FilesInUseCancelButton"
-msgid "&Cancel"
-msgstr "&Cancelar"
-
-msgctxt "ProgressHeader"
-msgid "Setup Progress"
-msgstr "Progresso da instalação"
-
-msgctxt "ProgressLabel"
-msgid "Processing:"
-msgstr "Processando:"
-
-msgctxt "OverallProgressPackageText"
-msgid "Initializing..."
-msgstr "Inicializando..."
-
-msgctxt "ProgressCancelButton"
-msgid "&Cancel"
-msgstr "&Cancelar"
-
-msgctxt "ModifyHeader"
-msgid "Modify Setup"
-msgstr "Modificar a instalação"
-
-msgctxt "ModifyRepairButton"
-msgid "&Repair"
-msgstr "&Reparar"
-
-msgctxt "ModifyUninstallButton"
-msgid "&Uninstall"
-msgstr "&Desinstalar"
-
-msgctxt "ModifyCloseButton"
-msgid "&Close"
-msgstr "&Fechar"
-
-msgctxt "SuccessHeader"
-msgid "Setup Successful"
-msgstr "Instalação bem sucedida"
-
-msgctxt "SuccessInstallHeader"
-msgid "Mixxx installation has been successful"
-msgstr "A instalação do Mixxx foi bem-sucedida"
-
-msgctxt "SuccessRepairHeader"
-msgid "Mixxx repair has been successful"
-msgstr "O reparo do Mixxx foi bem sucedido"
-
-msgctxt "SuccessUninstallHeader"
-msgid "Mixxx uninstall has been successful"
-msgstr "A desinstalação do Mixxx foi bem sucedida"
-
-msgctxt "SuccessLaunchButton"
-msgid "&Launch"
-msgstr "&Iniciar o Mixxx"
-
-msgctxt "SuccessRestartText"
-msgid "You must restart your computer before you can use the software."
-msgstr "Você deve reiniciar o computador antes de poder usar o software."
-
-msgctxt "SuccessRestartButton"
-msgid "&Restart"
-msgstr "&Reiniciar"
-
-msgctxt "SuccessCloseButton"
-msgid "&Close"
-msgstr "&Fechar"
-
-msgctxt "FailureHeader"
-msgid "Setup Failed"
-msgstr "Falha na instalação"
-
-msgctxt "FailureInstallHeader"
-msgid "Mixxx installation failed"
-msgstr "Falha na instalação do Mixxx"
-
-msgctxt "FailureRepairHeader"
-msgid "Mixxx repair failed"
-msgstr "Falha no reparo do MIxxx"
-
-msgctxt "FailureUninstallHeader"
-msgid "Mixxx uninstall failed"
-msgstr "Falha na desinstalação do Mixxx"
-
-msgctxt "FailureHyperlinkLogText"
-msgid ""
-"One or more issues caused the setup to fail. Please fix the issues and then "
-"retry setup. For more information see the log file."
-msgstr "Um ou mais problemas causaram falha na instalação. Corrija os problemas e tente novamente a instalação. Para mais informações, consulte o arquivo de log."
-
-msgctxt "FailureRestartText"
-msgid ""
-"You must restart your computer to complete the rollback of the software."
-msgstr "Você deve reiniciar o computador para concluir a reversão do software."
-
-msgctxt "FailureRestartButton"
-msgid "&Restart"
-msgstr "&Reiniciar"
-
-msgctxt "FailureCloseButton"
-msgid "&Close"
-msgstr "&Fechar"
diff --git a/build/wix/Localization/po/pt-PT.po b/build/wix/Localization/po/pt-PT.po
deleted file mode 100644
index 068a14ad5a0..00000000000
--- a/build/wix/Localization/po/pt-PT.po
+++ /dev/null
@@ -1,372 +0,0 @@
-#
-# Translators:
-# Diogo Oliveira , 2016
-# Joaquim Carvalho , 2016
-# Rui , 2018
-# Sebastien BLAISOT , 2016
-# Sebastien BLAISOT , 2016
-msgid ""
-msgstr ""
-"Project-Id-Version: Mixxx DJ Windows installer\n"
-"PO-Revision-Date: 2019-04-17 21:53+0000\n"
-"Last-Translator: Rui \n"
-"Language-Team: Portuguese (Portugal) (http://www.transifex.com/mixxx-dj-software/mixxxdj-windows-installer/language/pt_PT/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: pt_PT\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#. Programm informations
-msgctxt "ApplicationName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerFullName"
-msgid "The Mixxx Development Team"
-msgstr "A equipa de desenvolvimento do Mixxx"
-
-msgctxt "ProductDescription"
-msgid "Open-source Digital DJ software"
-msgstr "Programa de DJ Digital de código aberto"
-
-msgctxt "Comments"
-msgid "Installs Mixxx"
-msgstr "Instala o Mixxx"
-
-#. Error messages
-#. DO NOT BREAK LINES BECAUSE LINE BREAKS WILL SHOW UP AS-IS IN THE INTERFACE
-msgctxt "OS2Old"
-msgid "This product requires Windows 7 or above."
-msgstr "Este produto necessita do Windows 7 ou superior."
-
-msgctxt "NewerInstalled"
-msgid "The same or a newer version of this product is already installed."
-msgstr "Já está instalada esta versão ou uma mais recente deste programa."
-
-msgctxt "x64VersionRequired"
-msgid ""
-"You need to install the 64-bit version of this product on 64-bit Windows."
-msgstr "Tem de instalar a versão 64-bit deste produto no Windows de 64-bit."
-
-msgctxt "x86VersionRequired"
-msgid ""
-"You need to install the 32-bit version of this product on 32-bit Windows."
-msgstr "Tem de instalar a versão 32-bit deste produto no Windows de 32-bit."
-
-msgctxt "x86VersionWarning"
-msgid ""
-"You are about to install the 32-bit version on a 64-bit operating system. We"
-" recommend using the 64-bit version for better performance. You can download"
-" the 64-bit installation package from http://mixxx.org/download/"
-msgstr "Está prestes a instalar a versão 32-bit num sistema operativo de 64-bit. Recomendamos a utilização da versão de 64-bit para um melhor desempenho. Pode descarregar o pacote de instalação de 64-bit em http://mixxx.org/download/"
-
-msgctxt "XPWarning"
-msgid ""
-"You are installing Mixxx on an outdated operating system. Some functions may"
-" not work well or at all. We recommend upgrading your operating system."
-msgstr "Está a instalar o Mixxx num sistema operativo desatualizado. Algumas funcionalidade poderão não funcionar corretamente. É recomendável atualizar o seu sistema operativo."
-
-msgctxt "bitWidthMismatch32"
-msgid ""
-"You are about to install the 32-bit version but a 64-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 64-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "Está prestes a instalar a versão de 32-bit mas a de 64-bit já está instalada. Isto pode resultar num comportamento indesejado. Por favor, desinstale a versão do Mixxx existente primeiro, ou transfira a versão de 64-bit para atualizar (a não ser que realmente saiba o que está a fazer.)"
-
-msgctxt "bitWidthMismatch64"
-msgid ""
-"You are about to install the 64-bit version but a 32-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 32-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "Está prestes a instalar a versão de 64-bit mas a de 32-bit já está instalada. Isto pode resultar num comportamento indesejado. Por favor, desinstale a versão do Mixxx existente primeiro, ou transfira a versão de 32-bit para atualizar (a não ser que realmente saiba o que está a fazer.)"
-
-msgctxt "OlderVersionFound"
-msgid ""
-"An older version of Mixxx has been detected. As we changed installer, we can"
-" not smoothly upgrade. Please uninstall older version before installing this"
-" one."
-msgstr "Foi detetada uma versão anterior do Mixxx. Como o instalador foi alterado, não podemos fazer a atualização facilmente. Por favor desinstale a versão antiga antes de instalar esta."
-
-msgctxt "VCredistNotFound"
-msgid ""
-"Installer was not able to find Microsoft Visual C++ 2015 Redistributable on "
-"this system. This is likely an installer bug that should be reported to "
-"Mixxx developers."
-msgstr "O instalador não conseguiu encontrar o Microsoft Visual C++ 2015 Redistributable neste sistema. Provavelmente isto deve-se a um erro do instalador que deve ser reportado aos programadores do Mixxx."
-
-#. Custom Warning Dialog
-msgctxt "WarningDlgTitle"
-msgid "{\\WixUI_Font_Title}Warning"
-msgstr "{\\WixUI_Font_Title}Aviso"
-
-#. Custom exit dialog
-msgctxt "StartOnExit"
-msgid "Launch Mixxx when setup exits."
-msgstr "Iniciar o Mixxx após sair da instalação."
-
-#. Features translations
-msgctxt "FeatureCompleteDescription"
-msgid "The complete package."
-msgstr "O pacote completo."
-
-msgctxt "FeatureMainProgramTitle"
-msgid "Core application"
-msgstr "Aplicação principal"
-
-msgctxt "FeatureMainProgramDescription"
-msgid "The core Mixxx application including controller presets."
-msgstr "A aplicação principal Mixxx inclui predefinições de controladores."
-
-msgctxt "FeaturePDBTitle"
-msgid "PDB debug files"
-msgstr "Ficheiros PDB de depuração de erros"
-
-msgctxt "FeaturePDBDescription"
-msgid ""
-"Install Mixxx PDB files to use with a debugger. This is useful to debug "
-"Mixxx and provide readable backtraces to the development team."
-msgstr "Instala ficheiros PDB do Mixxx para usar com um depurador de erros. Isto é bastante útil para permitir o retorno de indícios legíveis à equipa de desenvolvimento e depurar o Mixxx."
-
-msgctxt "FeatureDesktopShortcutTitle"
-msgid "Desktop Shortcut"
-msgstr "Atalho no ambiente de trabalho"
-
-msgctxt "FeatureDesktopShortcutDescription"
-msgid "Add a shortcut to Mixxx on your desktop"
-msgstr "Adiciona um atalho do Mixxx no ambiente de trabalho"
-
-msgctxt "FeatureManualTitle"
-msgid "User Manual"
-msgstr "Manual do Utilizador"
-
-msgctxt "FeatureManualDescription"
-msgid ""
-"The Mixxx user manual in PDF form, also available at "
-"http://mixxx.org/manual/"
-msgstr "O manual do Mixxx em PDF, está disponível também em http://mixxx.org/manual/"
-
-msgctxt "FeatureTranslationsTitle"
-msgid "Translations"
-msgstr "Traduções"
-
-msgctxt "FeatureTranslationsDescription"
-msgid ""
-"Resource files that allow Mixxx to display in alternate languages, other "
-"than US english"
-msgstr "Ficheiros de recurso que permitem ao Mixxx mostrar outros idiomas, diferentes do inglês - EUA"
-
-#. Bootstrapper
-msgctxt "Caption"
-msgid "[WixBundleName] Setup"
-msgstr "Instalação do [WixBundleName]"
-
-msgctxt "Title"
-msgid "[WixBundleName]"
-msgstr "[WixBundleName]"
-
-msgctxt "ConfirmCancelMessage"
-msgid "Are you sure you want to cancel?"
-msgstr "Tem a certeza que quer cancelar?"
-
-msgctxt "ExecuteUpgradeRelatedBundleMessage"
-msgid "Previous version"
-msgstr "Versão anterior"
-
-msgctxt "HelpHeader"
-msgid "Setup Help"
-msgstr "Ajuda do Instalador"
-
-msgctxt "HelpText"
-msgid ""
-"/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or\n"
-" creates a complete local copy of the bundle in directory.\n"
-" Install is the default.\n"
-"\n"
-" /passive | /quiet - displays minimal user interface with no prompts or displays no user interface\n"
-" and no prompts. By default user interface and all prompts are displayed.\n"
-"\n"
-" /norestart - suppress any attempts to restart. By default user interface will prompt before restart.\n"
-"\n"
-" /log log.txt - logs to a specific file. By default a log file is created in %TEMP%."
-msgstr "/install | /repair | /uninstall | /layout [directory] - instala, repara, desinstala ou\n cria uma cópia local do pacote no diretório.\n A instalação é o padrão.\n\n /passive | /quiet - mostra uma interface mínima sem perguntas ou não mostra nenhuma interface\n nem perguntas. Por padrão, a interface e as perguntas são mostradas.\n\n /norestart - suprime qualquer tentativa de reiniciar. Por padrão, a interface irá perguntar antes de reiniciar.\n\n /log log.txt - faz o registo para um ficheiro específico. Por defeito, é criado um registo em %TEMP%."
-
-msgctxt "HelpCloseButton"
-msgid "&Close"
-msgstr "&Fechar"
-
-msgctxt "InstallHeader"
-msgid "Welcome"
-msgstr "Bem-vindo(a)"
-
-msgctxt "InstallMessage"
-msgid ""
-"Setup will install Mixxx on your computer.\n"
-"It will first install required third party libraries, then Mixxx itself.\n"
-"Click Install to continue or Close to exit."
-msgstr "O instalador irá instalar o Mixxx ne sou computador\nPrimeiro irá instalar bibliotecas externas necessárias e só depois o Mixxx.\nClique Instalar para continuar ou Fechar para sair."
-
-msgctxt "InstallVersion"
-msgid "Version [WixBundleVersion]"
-msgstr "Versão [WixBundleVersion]"
-
-msgctxt "InstallOptionsButton"
-msgid "&Options"
-msgstr "&Opções"
-
-msgctxt "InstallInstallButton"
-msgid "&Install"
-msgstr "&Instalar"
-
-msgctxt "InstallCloseButton"
-msgid "&Close"
-msgstr "&Fechar"
-
-msgctxt "OptionsHeader"
-msgid "Setup Options"
-msgstr "Opções de Instalação"
-
-msgctxt "OptionsLocationLabel"
-msgid "Install location:"
-msgstr "Local de instalação:"
-
-msgctxt "OptionsBrowseButton"
-msgid "&Browse"
-msgstr "&Navegar"
-
-msgctxt "OptionsOkButton"
-msgid "&OK"
-msgstr "&OK"
-
-msgctxt "OptionsCancelButton"
-msgid "&Cancel"
-msgstr "&Cancelar"
-
-msgctxt "FilesInUseHeader"
-msgid "Files In Use"
-msgstr "Ficheiro a Serem Utilizados"
-
-msgctxt "FilesInUseLabel"
-msgid "The following applications are using files that need to be updated:"
-msgstr "Os seguintes programas estão a usar ficheiros que têm de ser atualizados:"
-
-msgctxt "FilesInUseCloseRadioButton"
-msgid "Close the &applications and attempt to restart them."
-msgstr "Feche os _programas e tente reiniciá-los."
-
-msgctxt "FilesInUseDontCloseRadioButton"
-msgid "&Do not close applications. A reboot will be required."
-msgstr "&Não feche os programas. É necessário reiniciar o computador."
-
-msgctxt "FilesInUseOkButton"
-msgid "&OK"
-msgstr "&OK"
-
-msgctxt "FilesInUseCancelButton"
-msgid "&Cancel"
-msgstr "&Cancelar"
-
-msgctxt "ProgressHeader"
-msgid "Setup Progress"
-msgstr "Progresso da Instalação"
-
-msgctxt "ProgressLabel"
-msgid "Processing:"
-msgstr "A processar:"
-
-msgctxt "OverallProgressPackageText"
-msgid "Initializing..."
-msgstr "A inicializar..."
-
-msgctxt "ProgressCancelButton"
-msgid "&Cancel"
-msgstr "&Cancelar"
-
-msgctxt "ModifyHeader"
-msgid "Modify Setup"
-msgstr "Alterar Instalador"
-
-msgctxt "ModifyRepairButton"
-msgid "&Repair"
-msgstr "&Reparar"
-
-msgctxt "ModifyUninstallButton"
-msgid "&Uninstall"
-msgstr "&Desinstalar"
-
-msgctxt "ModifyCloseButton"
-msgid "&Close"
-msgstr "&Fechar"
-
-msgctxt "SuccessHeader"
-msgid "Setup Successful"
-msgstr "Instalação Bem Sucedida"
-
-msgctxt "SuccessInstallHeader"
-msgid "Mixxx installation has been successful"
-msgstr "O Mixxx foi instalado com sucesso"
-
-msgctxt "SuccessRepairHeader"
-msgid "Mixxx repair has been successful"
-msgstr "O Mixxx foi reparado com sucesso"
-
-msgctxt "SuccessUninstallHeader"
-msgid "Mixxx uninstall has been successful"
-msgstr "O Mixxx foi desinstalado com sucesso"
-
-msgctxt "SuccessLaunchButton"
-msgid "&Launch"
-msgstr "&Lançar"
-
-msgctxt "SuccessRestartText"
-msgid "You must restart your computer before you can use the software."
-msgstr "Tem de reiniciar o computador antes de poder utilizar o programa."
-
-msgctxt "SuccessRestartButton"
-msgid "&Restart"
-msgstr "&Reiniciar"
-
-msgctxt "SuccessCloseButton"
-msgid "&Close"
-msgstr "&Fechar"
-
-msgctxt "FailureHeader"
-msgid "Setup Failed"
-msgstr "Falhou a Instalação"
-
-msgctxt "FailureInstallHeader"
-msgid "Mixxx installation failed"
-msgstr "A instalação do Mixxx falhou"
-
-msgctxt "FailureRepairHeader"
-msgid "Mixxx repair failed"
-msgstr "A reparação do Mixxx falhou"
-
-msgctxt "FailureUninstallHeader"
-msgid "Mixxx uninstall failed"
-msgstr "A desinstalação do Mixxx falhou"
-
-msgctxt "FailureHyperlinkLogText"
-msgid ""
-"One or more issues caused the setup to fail. Please fix the issues and then "
-"retry setup. For more information see the log file."
-msgstr "Um ou mais problemas impediram a instalação correta. Por favor corrija os problemas e tente novamente. Para mais informações veja o ficheiro de registos."
-
-msgctxt "FailureRestartText"
-msgid ""
-"You must restart your computer to complete the rollback of the software."
-msgstr "Tem de reiniciar o computador para terminar a desinstalação do programa"
-
-msgctxt "FailureRestartButton"
-msgid "&Restart"
-msgstr "&Reiniciar"
-
-msgctxt "FailureCloseButton"
-msgid "&Close"
-msgstr "&Fechar"
diff --git a/build/wix/Localization/po/ro-RO.po b/build/wix/Localization/po/ro-RO.po
deleted file mode 100644
index a15f204654a..00000000000
--- a/build/wix/Localization/po/ro-RO.po
+++ /dev/null
@@ -1,372 +0,0 @@
-#
-# Translators:
-# S.Brandt , 2018
-# Sebastien BLAISOT , 2016
-# Sebastien BLAISOT , 2016
-# titus , 2016
-# titus , 2016
-msgid ""
-msgstr ""
-"Project-Id-Version: Mixxx DJ Windows installer\n"
-"PO-Revision-Date: 2019-04-17 21:53+0000\n"
-"Last-Translator: S.Brandt \n"
-"Language-Team: Romanian (Romania) (http://www.transifex.com/mixxx-dj-software/mixxxdj-windows-installer/language/ro_RO/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ro_RO\n"
-"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
-
-#. Programm informations
-msgctxt "ApplicationName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerFullName"
-msgid "The Mixxx Development Team"
-msgstr "Echipa de dezvoltare Mixxx"
-
-msgctxt "ProductDescription"
-msgid "Open-source Digital DJ software"
-msgstr "Aplicaţie DJ Digital Opesource"
-
-msgctxt "Comments"
-msgid "Installs Mixxx"
-msgstr "Instalare Mixxx"
-
-#. Error messages
-#. DO NOT BREAK LINES BECAUSE LINE BREAKS WILL SHOW UP AS-IS IN THE INTERFACE
-msgctxt "OS2Old"
-msgid "This product requires Windows 7 or above."
-msgstr "Acest produs necesită Windows 7 sau ulterior."
-
-msgctxt "NewerInstalled"
-msgid "The same or a newer version of this product is already installed."
-msgstr "Aceiaşi sau o versiune mai nouă a acestui produs este deja instalată."
-
-msgctxt "x64VersionRequired"
-msgid ""
-"You need to install the 64-bit version of this product on 64-bit Windows."
-msgstr "Trebuie să instalaţi versiunea produsului pe 64-biţi pentru Windows."
-
-msgctxt "x86VersionRequired"
-msgid ""
-"You need to install the 32-bit version of this product on 32-bit Windows."
-msgstr "Trebuie să instalaţi versiunea pe 32-biţi a acestui produs pentru Windows."
-
-msgctxt "x86VersionWarning"
-msgid ""
-"You are about to install the 32-bit version on a 64-bit operating system. We"
-" recommend using the 64-bit version for better performance. You can download"
-" the 64-bit installation package from http://mixxx.org/download/"
-msgstr ""
-
-msgctxt "XPWarning"
-msgid ""
-"You are installing Mixxx on an outdated operating system. Some functions may"
-" not work well or at all. We recommend upgrading your operating system."
-msgstr "Instalaţi Mixxx pe un sistem de operare expirat. Unele funcţii este posibil să nu funcţioneze corect sau deloc. Vă recomandăm să actualizaţi sistemul de operare."
-
-msgctxt "bitWidthMismatch32"
-msgid ""
-"You are about to install the 32-bit version but a 64-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 64-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr ""
-
-msgctxt "bitWidthMismatch64"
-msgid ""
-"You are about to install the 64-bit version but a 32-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 32-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr ""
-
-msgctxt "OlderVersionFound"
-msgid ""
-"An older version of Mixxx has been detected. As we changed installer, we can"
-" not smoothly upgrade. Please uninstall older version before installing this"
-" one."
-msgstr "O versiune veche Mixxx a fost detectată. Deoarece am schimbat instalatorul, nu putem actualiza facil. Dezinstalaţi versiunea veche înaintea instalării acesteia."
-
-msgctxt "VCredistNotFound"
-msgid ""
-"Installer was not able to find Microsoft Visual C++ 2015 Redistributable on "
-"this system. This is likely an installer bug that should be reported to "
-"Mixxx developers."
-msgstr ""
-
-#. Custom Warning Dialog
-msgctxt "WarningDlgTitle"
-msgid "{\\WixUI_Font_Title}Warning"
-msgstr "{\\WixUI_Font_Title}Atenţie"
-
-#. Custom exit dialog
-msgctxt "StartOnExit"
-msgid "Launch Mixxx when setup exits."
-msgstr ""
-
-#. Features translations
-msgctxt "FeatureCompleteDescription"
-msgid "The complete package."
-msgstr "Pachetul complet."
-
-msgctxt "FeatureMainProgramTitle"
-msgid "Core application"
-msgstr "Aplicaţia de bază"
-
-msgctxt "FeatureMainProgramDescription"
-msgid "The core Mixxx application including controller presets."
-msgstr "Aplicaţia de bază Mixxx include preconfigurări controllere."
-
-msgctxt "FeaturePDBTitle"
-msgid "PDB debug files"
-msgstr ""
-
-msgctxt "FeaturePDBDescription"
-msgid ""
-"Install Mixxx PDB files to use with a debugger. This is useful to debug "
-"Mixxx and provide readable backtraces to the development team."
-msgstr ""
-
-msgctxt "FeatureDesktopShortcutTitle"
-msgid "Desktop Shortcut"
-msgstr "Scurtătură birou"
-
-msgctxt "FeatureDesktopShortcutDescription"
-msgid "Add a shortcut to Mixxx on your desktop"
-msgstr "Adaugă o scurtătură pentru Mixxx pe birou"
-
-msgctxt "FeatureManualTitle"
-msgid "User Manual"
-msgstr "Manual utilizator"
-
-msgctxt "FeatureManualDescription"
-msgid ""
-"The Mixxx user manual in PDF form, also available at "
-"http://mixxx.org/manual/"
-msgstr "Manualul utilizatorului Mixxx în format PDF, este disponibil la "
-
-msgctxt "FeatureTranslationsTitle"
-msgid "Translations"
-msgstr "Traduceri"
-
-msgctxt "FeatureTranslationsDescription"
-msgid ""
-"Resource files that allow Mixxx to display in alternate languages, other "
-"than US english"
-msgstr "Fişierele resursă care permit Mixxx să afişeze în alte limbi, altele decât Engleza US"
-
-#. Bootstrapper
-msgctxt "Caption"
-msgid "[WixBundleName] Setup"
-msgstr ""
-
-msgctxt "Title"
-msgid "[WixBundleName]"
-msgstr ""
-
-msgctxt "ConfirmCancelMessage"
-msgid "Are you sure you want to cancel?"
-msgstr ""
-
-msgctxt "ExecuteUpgradeRelatedBundleMessage"
-msgid "Previous version"
-msgstr ""
-
-msgctxt "HelpHeader"
-msgid "Setup Help"
-msgstr ""
-
-msgctxt "HelpText"
-msgid ""
-"/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or\n"
-" creates a complete local copy of the bundle in directory.\n"
-" Install is the default.\n"
-"\n"
-" /passive | /quiet - displays minimal user interface with no prompts or displays no user interface\n"
-" and no prompts. By default user interface and all prompts are displayed.\n"
-"\n"
-" /norestart - suppress any attempts to restart. By default user interface will prompt before restart.\n"
-"\n"
-" /log log.txt - logs to a specific file. By default a log file is created in %TEMP%."
-msgstr ""
-
-msgctxt "HelpCloseButton"
-msgid "&Close"
-msgstr ""
-
-msgctxt "InstallHeader"
-msgid "Welcome"
-msgstr ""
-
-msgctxt "InstallMessage"
-msgid ""
-"Setup will install Mixxx on your computer.\n"
-"It will first install required third party libraries, then Mixxx itself.\n"
-"Click Install to continue or Close to exit."
-msgstr ""
-
-msgctxt "InstallVersion"
-msgid "Version [WixBundleVersion]"
-msgstr ""
-
-msgctxt "InstallOptionsButton"
-msgid "&Options"
-msgstr ""
-
-msgctxt "InstallInstallButton"
-msgid "&Install"
-msgstr ""
-
-msgctxt "InstallCloseButton"
-msgid "&Close"
-msgstr ""
-
-msgctxt "OptionsHeader"
-msgid "Setup Options"
-msgstr ""
-
-msgctxt "OptionsLocationLabel"
-msgid "Install location:"
-msgstr ""
-
-msgctxt "OptionsBrowseButton"
-msgid "&Browse"
-msgstr ""
-
-msgctxt "OptionsOkButton"
-msgid "&OK"
-msgstr ""
-
-msgctxt "OptionsCancelButton"
-msgid "&Cancel"
-msgstr ""
-
-msgctxt "FilesInUseHeader"
-msgid "Files In Use"
-msgstr ""
-
-msgctxt "FilesInUseLabel"
-msgid "The following applications are using files that need to be updated:"
-msgstr ""
-
-msgctxt "FilesInUseCloseRadioButton"
-msgid "Close the &applications and attempt to restart them."
-msgstr ""
-
-msgctxt "FilesInUseDontCloseRadioButton"
-msgid "&Do not close applications. A reboot will be required."
-msgstr ""
-
-msgctxt "FilesInUseOkButton"
-msgid "&OK"
-msgstr ""
-
-msgctxt "FilesInUseCancelButton"
-msgid "&Cancel"
-msgstr ""
-
-msgctxt "ProgressHeader"
-msgid "Setup Progress"
-msgstr ""
-
-msgctxt "ProgressLabel"
-msgid "Processing:"
-msgstr ""
-
-msgctxt "OverallProgressPackageText"
-msgid "Initializing..."
-msgstr ""
-
-msgctxt "ProgressCancelButton"
-msgid "&Cancel"
-msgstr ""
-
-msgctxt "ModifyHeader"
-msgid "Modify Setup"
-msgstr ""
-
-msgctxt "ModifyRepairButton"
-msgid "&Repair"
-msgstr ""
-
-msgctxt "ModifyUninstallButton"
-msgid "&Uninstall"
-msgstr ""
-
-msgctxt "ModifyCloseButton"
-msgid "&Close"
-msgstr ""
-
-msgctxt "SuccessHeader"
-msgid "Setup Successful"
-msgstr ""
-
-msgctxt "SuccessInstallHeader"
-msgid "Mixxx installation has been successful"
-msgstr ""
-
-msgctxt "SuccessRepairHeader"
-msgid "Mixxx repair has been successful"
-msgstr ""
-
-msgctxt "SuccessUninstallHeader"
-msgid "Mixxx uninstall has been successful"
-msgstr ""
-
-msgctxt "SuccessLaunchButton"
-msgid "&Launch"
-msgstr ""
-
-msgctxt "SuccessRestartText"
-msgid "You must restart your computer before you can use the software."
-msgstr ""
-
-msgctxt "SuccessRestartButton"
-msgid "&Restart"
-msgstr ""
-
-msgctxt "SuccessCloseButton"
-msgid "&Close"
-msgstr ""
-
-msgctxt "FailureHeader"
-msgid "Setup Failed"
-msgstr ""
-
-msgctxt "FailureInstallHeader"
-msgid "Mixxx installation failed"
-msgstr ""
-
-msgctxt "FailureRepairHeader"
-msgid "Mixxx repair failed"
-msgstr ""
-
-msgctxt "FailureUninstallHeader"
-msgid "Mixxx uninstall failed"
-msgstr ""
-
-msgctxt "FailureHyperlinkLogText"
-msgid ""
-"One or more issues caused the setup to fail. Please fix the issues and then "
-"retry setup. For more information see the log file."
-msgstr ""
-
-msgctxt "FailureRestartText"
-msgid ""
-"You must restart your computer to complete the rollback of the software."
-msgstr ""
-
-msgctxt "FailureRestartButton"
-msgid "&Restart"
-msgstr ""
-
-msgctxt "FailureCloseButton"
-msgid "&Close"
-msgstr ""
diff --git a/build/wix/Localization/po/ru-RU.po b/build/wix/Localization/po/ru-RU.po
deleted file mode 100644
index fa559e4d98d..00000000000
--- a/build/wix/Localization/po/ru-RU.po
+++ /dev/null
@@ -1,375 +0,0 @@
-#
-# Translators:
-# Artem, 2018
-# Irina Fedulova , 2020
-# S.Brandt , 2018
-# Sebastien BLAISOT , 2016
-# Sebastien BLAISOT , 2016
-# Владимир Новиков , 2016
-# Андрей Фролов , 2017
-# Владимир Новиков , 2017
-msgid ""
-msgstr ""
-"Project-Id-Version: Mixxx DJ Windows installer\n"
-"PO-Revision-Date: 2020-08-14 15:06+0000\n"
-"Last-Translator: Irina Fedulova \n"
-"Language-Team: Russian (Russia) (http://www.transifex.com/mixxx-dj-software/mixxxdj-windows-installer/language/ru_RU/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ru_RU\n"
-"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
-
-#. Programm informations
-msgctxt "ApplicationName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerFullName"
-msgid "The Mixxx Development Team"
-msgstr "Команда разработчиков The Mixxx"
-
-msgctxt "ProductDescription"
-msgid "Open-source Digital DJ software"
-msgstr "Программа с открытым исходным кодом для ди-джеев"
-
-msgctxt "Comments"
-msgid "Installs Mixxx"
-msgstr "Установите Mixxx"
-
-#. Error messages
-#. DO NOT BREAK LINES BECAUSE LINE BREAKS WILL SHOW UP AS-IS IN THE INTERFACE
-msgctxt "OS2Old"
-msgid "This product requires Windows 7 or above."
-msgstr "Этот продукт поддерживается на Windows 7 и выше."
-
-msgctxt "NewerInstalled"
-msgid "The same or a newer version of this product is already installed."
-msgstr "Данная или выше версия продукта уже установлена."
-
-msgctxt "x64VersionRequired"
-msgid ""
-"You need to install the 64-bit version of this product on 64-bit Windows."
-msgstr "Вам необходимо установить 64-битную версию продукта на 64-битную версию Windows."
-
-msgctxt "x86VersionRequired"
-msgid ""
-"You need to install the 32-bit version of this product on 32-bit Windows."
-msgstr "Вам необходимо установить 32-битную версию продукта на 32-битную версию Windows."
-
-msgctxt "x86VersionWarning"
-msgid ""
-"You are about to install the 32-bit version on a 64-bit operating system. We"
-" recommend using the 64-bit version for better performance. You can download"
-" the 64-bit installation package from http://mixxx.org/download/"
-msgstr "Вы пытаетесь установить 32-битную версию на 64-битную версию операционной системы. Мы рекомендуем использовать 64-битную версию для увеличения производительности. Вы можете скачать 64-битную версию программы на http://mixxx.org/download/."
-
-msgctxt "XPWarning"
-msgid ""
-"You are installing Mixxx on an outdated operating system. Some functions may"
-" not work well or at all. We recommend upgrading your operating system."
-msgstr "Вы установили Mixxx на операционную систему, которая более не поддерживается. Некоторые функции могут не работать или работать некорректно. Рекомендуем вам обновить операционную систему."
-
-msgctxt "bitWidthMismatch32"
-msgid ""
-"You are about to install the 32-bit version but a 64-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 64-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "Вы пытаетесь установить 32-битную версию, но у вас уже установлена 64-битная версия. Это может привести к нежелательным последствиям. Пожалуйста, удалите сначала установленную версию, или скачайте 64-битную версию установщика для обновления текущей версии ПО (если вы уверены в том, что делаете.)"
-
-msgctxt "bitWidthMismatch64"
-msgid ""
-"You are about to install the 64-bit version but a 32-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 32-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "Вы пытаетесь установить 64-битную версию, но у вас уже установлена 32-битная версия. Это может привести к нежелательным последствиям. Пожалуйста, удалите сначала установленную версию, или скачайте 32-битную версию установщика для обновления текущей версии ПО (если вы уверены в том, что делаете.)"
-
-msgctxt "OlderVersionFound"
-msgid ""
-"An older version of Mixxx has been detected. As we changed installer, we can"
-" not smoothly upgrade. Please uninstall older version before installing this"
-" one."
-msgstr "Обнаружена старая версия Mixxx. Так как установщик был изменен, нет возможности обновления версии ПО. Пожалуйста, удалите старую версию перед запуском данного установщика."
-
-msgctxt "VCredistNotFound"
-msgid ""
-"Installer was not able to find Microsoft Visual C++ 2015 Redistributable on "
-"this system. This is likely an installer bug that should be reported to "
-"Mixxx developers."
-msgstr "Установщик не нашел Microsoft Visual C++ 2015 Redistributable в данной системе. Судя по всему, это баг установщика, о котором стоит сообщить создателям Mixxx."
-
-#. Custom Warning Dialog
-msgctxt "WarningDlgTitle"
-msgid "{\\WixUI_Font_Title}Warning"
-msgstr "{\\WixUI_Font_Title}Предупреждение"
-
-#. Custom exit dialog
-msgctxt "StartOnExit"
-msgid "Launch Mixxx when setup exits."
-msgstr "Запуск Mixxx и выход из режима настройки"
-
-#. Features translations
-msgctxt "FeatureCompleteDescription"
-msgid "The complete package."
-msgstr "Полный пакет."
-
-msgctxt "FeatureMainProgramTitle"
-msgid "Core application"
-msgstr "Основная программа"
-
-msgctxt "FeatureMainProgramDescription"
-msgid "The core Mixxx application including controller presets."
-msgstr "Основная программа Mixxx включает настройки контроллера."
-
-msgctxt "FeaturePDBTitle"
-msgid "PDB debug files"
-msgstr "PDB файлы отладки"
-
-msgctxt "FeaturePDBDescription"
-msgid ""
-"Install Mixxx PDB files to use with a debugger. This is useful to debug "
-"Mixxx and provide readable backtraces to the development team."
-msgstr "Установите Mixxx PDB файлы для использования с помощью отладчика. Это полезно для отладки Mixxx и обеспечит считывание у цепочек вызова команды разработчиков."
-
-msgctxt "FeatureDesktopShortcutTitle"
-msgid "Desktop Shortcut"
-msgstr "Ярлык на Рабочем столе"
-
-msgctxt "FeatureDesktopShortcutDescription"
-msgid "Add a shortcut to Mixxx on your desktop"
-msgstr "Добавляет ярлык Mixxx на Рабочий стол"
-
-msgctxt "FeatureManualTitle"
-msgid "User Manual"
-msgstr "Руководство пользователя"
-
-msgctxt "FeatureManualDescription"
-msgid ""
-"The Mixxx user manual in PDF form, also available at "
-"http://mixxx.org/manual/"
-msgstr "Руководство пользователя Mixxx в формате PDF также доступно на http://mixxx.org/manual/"
-
-msgctxt "FeatureTranslationsTitle"
-msgid "Translations"
-msgstr "Переводы"
-
-msgctxt "FeatureTranslationsDescription"
-msgid ""
-"Resource files that allow Mixxx to display in alternate languages, other "
-"than US english"
-msgstr "Файлы, позволяющие Mixxx отображать интерфейс на альтернативных языках, нежели US английский."
-
-#. Bootstrapper
-msgctxt "Caption"
-msgid "[WixBundleName] Setup"
-msgstr "[WixBundleName] Установка"
-
-msgctxt "Title"
-msgid "[WixBundleName]"
-msgstr "[WixBundleName]"
-
-msgctxt "ConfirmCancelMessage"
-msgid "Are you sure you want to cancel?"
-msgstr "Вы уверены, что хотите отменить?"
-
-msgctxt "ExecuteUpgradeRelatedBundleMessage"
-msgid "Previous version"
-msgstr "Предыдущая версия"
-
-msgctxt "HelpHeader"
-msgid "Setup Help"
-msgstr "Помощь в установке"
-
-msgctxt "HelpText"
-msgid ""
-"/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or\n"
-" creates a complete local copy of the bundle in directory.\n"
-" Install is the default.\n"
-"\n"
-" /passive | /quiet - displays minimal user interface with no prompts or displays no user interface\n"
-" and no prompts. By default user interface and all prompts are displayed.\n"
-"\n"
-" /norestart - suppress any attempts to restart. By default user interface will prompt before restart.\n"
-"\n"
-" /log log.txt - logs to a specific file. By default a log file is created in %TEMP%."
-msgstr "/install | /repair | /uninstall | /layout [directory] - устанавливает, восстанавливает, удаляет или\n создает полную локальную копию пакета в каталог.\n Установка (/install) включена по умолчанию.\n\n /passive | /quiet - показывает минималистичный пользовательский интерфейс без запросов параметров или не показывает пользовательский интерфейс вообще\n и без параметров. По умолчанию интерфейс и параметры включены.\n\n /norestart - подавляет попытки перезапуска. По умолчанию будет выводиться окно информирования перед перезагрузкой.\n\n /log log.txt - лог в отдельный файл. По умолчанию лог пишется по пути %TEMP%."
-
-msgctxt "HelpCloseButton"
-msgid "&Close"
-msgstr "&Закрыть"
-
-msgctxt "InstallHeader"
-msgid "Welcome"
-msgstr "Добро пожаловать"
-
-msgctxt "InstallMessage"
-msgid ""
-"Setup will install Mixxx on your computer.\n"
-"It will first install required third party libraries, then Mixxx itself.\n"
-"Click Install to continue or Close to exit."
-msgstr "Программа установки установит Mixxx на ваш компьютер.\nСначала он установит необходимые сторонние библиотеки, а затем сам Mixxx.\nНажмите кнопку Установить для продолжения или закрыть для выхода."
-
-msgctxt "InstallVersion"
-msgid "Version [WixBundleVersion]"
-msgstr "Версия [WixBundleVersion]"
-
-msgctxt "InstallOptionsButton"
-msgid "&Options"
-msgstr "&Параметры"
-
-msgctxt "InstallInstallButton"
-msgid "&Install"
-msgstr "&Установить"
-
-msgctxt "InstallCloseButton"
-msgid "&Close"
-msgstr "&Закрыть"
-
-msgctxt "OptionsHeader"
-msgid "Setup Options"
-msgstr "Параметры установки"
-
-msgctxt "OptionsLocationLabel"
-msgid "Install location:"
-msgstr "Место установки:"
-
-msgctxt "OptionsBrowseButton"
-msgid "&Browse"
-msgstr "&Просмотреть"
-
-msgctxt "OptionsOkButton"
-msgid "&OK"
-msgstr "&ОК"
-
-msgctxt "OptionsCancelButton"
-msgid "&Cancel"
-msgstr "&Отмена"
-
-msgctxt "FilesInUseHeader"
-msgid "Files In Use"
-msgstr "Используемые файлы"
-
-msgctxt "FilesInUseLabel"
-msgid "The following applications are using files that need to be updated:"
-msgstr "Следующие приложения используют файлы, которые необходимо обновить:"
-
-msgctxt "FilesInUseCloseRadioButton"
-msgid "Close the &applications and attempt to restart them."
-msgstr "Закройте &приложения и попытайтесь перезапустить их."
-
-msgctxt "FilesInUseDontCloseRadioButton"
-msgid "&Do not close applications. A reboot will be required."
-msgstr "&Не закрывайте приложение. Потребуется перезагрузка."
-
-msgctxt "FilesInUseOkButton"
-msgid "&OK"
-msgstr "&ОК"
-
-msgctxt "FilesInUseCancelButton"
-msgid "&Cancel"
-msgstr "&Отмена"
-
-msgctxt "ProgressHeader"
-msgid "Setup Progress"
-msgstr "Процесс установки"
-
-msgctxt "ProgressLabel"
-msgid "Processing:"
-msgstr "Обработка:"
-
-msgctxt "OverallProgressPackageText"
-msgid "Initializing..."
-msgstr "Инициализация..."
-
-msgctxt "ProgressCancelButton"
-msgid "&Cancel"
-msgstr "&Отмена"
-
-msgctxt "ModifyHeader"
-msgid "Modify Setup"
-msgstr "Изменить установку"
-
-msgctxt "ModifyRepairButton"
-msgid "&Repair"
-msgstr "&Восстановление "
-
-msgctxt "ModifyUninstallButton"
-msgid "&Uninstall"
-msgstr "&Удалить"
-
-msgctxt "ModifyCloseButton"
-msgid "&Close"
-msgstr "&Закрыть"
-
-msgctxt "SuccessHeader"
-msgid "Setup Successful"
-msgstr "Успешная установка"
-
-msgctxt "SuccessInstallHeader"
-msgid "Mixxx installation has been successful"
-msgstr "Установка Mixxx прошла успешно"
-
-msgctxt "SuccessRepairHeader"
-msgid "Mixxx repair has been successful"
-msgstr "Восстановление Mixxx прошло успешно"
-
-msgctxt "SuccessUninstallHeader"
-msgid "Mixxx uninstall has been successful"
-msgstr "Удаление Mixxx прошло успешно"
-
-msgctxt "SuccessLaunchButton"
-msgid "&Launch"
-msgstr "&Запуск"
-
-msgctxt "SuccessRestartText"
-msgid "You must restart your computer before you can use the software."
-msgstr "Перед использованием программного обеспечения необходимо перезагрузить компьютер."
-
-msgctxt "SuccessRestartButton"
-msgid "&Restart"
-msgstr "&Перезапуск"
-
-msgctxt "SuccessCloseButton"
-msgid "&Close"
-msgstr "&Закрыть"
-
-msgctxt "FailureHeader"
-msgid "Setup Failed"
-msgstr "Ошибка установки"
-
-msgctxt "FailureInstallHeader"
-msgid "Mixxx installation failed"
-msgstr "Установка программы Mixxx не удалась"
-
-msgctxt "FailureRepairHeader"
-msgid "Mixxx repair failed"
-msgstr "Восстановление программы Mixxx не удалось"
-
-msgctxt "FailureUninstallHeader"
-msgid "Mixxx uninstall failed"
-msgstr "Удалить программу Mixxx не удалось"
-
-msgctxt "FailureHyperlinkLogText"
-msgid ""
-"One or more issues caused the setup to fail. Please fix the issues and then "
-"retry setup. For more information see the log file."
-msgstr "Одна или несколько проблем вызвали сбой установки. Устраните неполадки и повторите попытку установки. Для получения дополнительной информации см. файл лога."
-
-msgctxt "FailureRestartText"
-msgid ""
-"You must restart your computer to complete the rollback of the software."
-msgstr "Необходимо перезагрузить компьютер для завершения отката программного обеспечения."
-
-msgctxt "FailureRestartButton"
-msgid "&Restart"
-msgstr "&Перезапуск"
-
-msgctxt "FailureCloseButton"
-msgid "&Close"
-msgstr "&Закрыть"
diff --git a/build/wix/Localization/po/sl.po b/build/wix/Localization/po/sl.po
deleted file mode 100644
index 3bbc0e7e43c..00000000000
--- a/build/wix/Localization/po/sl.po
+++ /dev/null
@@ -1,368 +0,0 @@
-#
-# Translators:
-# Arnold Marko , 2019
-msgid ""
-msgstr ""
-"Project-Id-Version: Mixxx DJ Windows installer\n"
-"PO-Revision-Date: 2019-04-17 21:53+0000\n"
-"Last-Translator: Arnold Marko \n"
-"Language-Team: Slovenian (http://www.transifex.com/mixxx-dj-software/mixxxdj-windows-installer/language/sl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sl\n"
-"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
-
-#. Programm informations
-msgctxt "ApplicationName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerFullName"
-msgid "The Mixxx Development Team"
-msgstr "Mixxx razvojna skupina "
-
-msgctxt "ProductDescription"
-msgid "Open-source Digital DJ software"
-msgstr "Odprtokodni program za digitalno didžejanje"
-
-msgctxt "Comments"
-msgid "Installs Mixxx"
-msgstr "Namesti Mixxx"
-
-#. Error messages
-#. DO NOT BREAK LINES BECAUSE LINE BREAKS WILL SHOW UP AS-IS IN THE INTERFACE
-msgctxt "OS2Old"
-msgid "This product requires Windows 7 or above."
-msgstr "Ta izdelek potrebuje Windows 7 ali novejše."
-
-msgctxt "NewerInstalled"
-msgid "The same or a newer version of this product is already installed."
-msgstr "Ista ali novejša različica tega izdelka je že nameščena."
-
-msgctxt "x64VersionRequired"
-msgid ""
-"You need to install the 64-bit version of this product on 64-bit Windows."
-msgstr "Na 64-bitnih Windowsih je potrebno namestiti 64-bitno različico tega izdelka."
-
-msgctxt "x86VersionRequired"
-msgid ""
-"You need to install the 32-bit version of this product on 32-bit Windows."
-msgstr "Na 32-bitnih Windowsih je potrebno namestiti 32-bitno različico tega izdelka."
-
-msgctxt "x86VersionWarning"
-msgid ""
-"You are about to install the 32-bit version on a 64-bit operating system. We"
-" recommend using the 64-bit version for better performance. You can download"
-" the 64-bit installation package from http://mixxx.org/download/"
-msgstr "Na 64-bitni operacijski sistem želite namestiti 32-bitno različico. Za boljši izkoristek priporočamo uporabo 64-bitne različice. 64-bitni namestiveni program lahko prenesete iz http://mixxx.org/download/"
-
-msgctxt "XPWarning"
-msgid ""
-"You are installing Mixxx on an outdated operating system. Some functions may"
-" not work well or at all. We recommend upgrading your operating system."
-msgstr "Mixxx želite namestiti na prestar operacijski sistem. Nekatere funkcije morda ne bodo dobro delovale ali sploh ne. Priporočamo nadgradnjo operacijskega sistema."
-
-msgctxt "bitWidthMismatch32"
-msgid ""
-"You are about to install the 32-bit version but a 64-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 64-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "Namestiti želite 32-bitno različico, a je že nameščena 64-bitna različica. To lahko ima neželjene posledice v delovanju programa. Prosimo, najprej odstranite obstoječi Mixxx ali prenesite 64-bitni namestitveni program (razen v primeru, da točno veste, kaj delate)."
-
-msgctxt "bitWidthMismatch64"
-msgid ""
-"You are about to install the 64-bit version but a 32-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 32-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "Namestiti želite 64-bitno različico, a je že nameščena 32-bitna različica. To lahko ima neželjene posledice v delovanju programa. Prosimo, najprej odstranite obstoječi Mixxx ali prenesite 32-bitni namestitveni program (razen v primeru, da točno veste, kaj delate)."
-
-msgctxt "OlderVersionFound"
-msgid ""
-"An older version of Mixxx has been detected. As we changed installer, we can"
-" not smoothly upgrade. Please uninstall older version before installing this"
-" one."
-msgstr "Nameščena je starejša različica Mixxx. Ker smo spremenili namestitveni program, preprosta nadgradnja ni več mogoča. Prosimo, odstranite starejšo različico, preden namestite to novejšo."
-
-msgctxt "VCredistNotFound"
-msgid ""
-"Installer was not able to find Microsoft Visual C++ 2015 Redistributable on "
-"this system. This is likely an installer bug that should be reported to "
-"Mixxx developers."
-msgstr "Namestitveni program na tem sistemu ni uspel najti Microsoft Visual C++ 2015 Redistributable. Verjetno gre za hrošč v namestitvenem programu, ki bi ga bilo dobro prijaviti razvijalcem programa Mixxx."
-
-#. Custom Warning Dialog
-msgctxt "WarningDlgTitle"
-msgid "{\\WixUI_Font_Title}Warning"
-msgstr "{\\WixUI_Font_Title}Opozorilo"
-
-#. Custom exit dialog
-msgctxt "StartOnExit"
-msgid "Launch Mixxx when setup exits."
-msgstr "Po končani namestitvi zaženi Mixxx."
-
-#. Features translations
-msgctxt "FeatureCompleteDescription"
-msgid "The complete package."
-msgstr "Celoten paket."
-
-msgctxt "FeatureMainProgramTitle"
-msgid "Core application"
-msgstr "Jedro aplikacije"
-
-msgctxt "FeatureMainProgramDescription"
-msgid "The core Mixxx application including controller presets."
-msgstr "Jedro aplikacije Mixxx, vključno z predlogami za kontrolerje."
-
-msgctxt "FeaturePDBTitle"
-msgid "PDB debug files"
-msgstr "PDB datoteke za razhroščevanje"
-
-msgctxt "FeaturePDBDescription"
-msgid ""
-"Install Mixxx PDB files to use with a debugger. This is useful to debug "
-"Mixxx and provide readable backtraces to the development team."
-msgstr "Za uporabo z razhroščevalnikom, namestite Mixxx PDB datoteke. To je uporabno za razhroščevanju Mixxx in omogoča razvojni skupini razumljivo sledenje delovanju programa."
-
-msgctxt "FeatureDesktopShortcutTitle"
-msgid "Desktop Shortcut"
-msgstr "Bližnjica na namizju"
-
-msgctxt "FeatureDesktopShortcutDescription"
-msgid "Add a shortcut to Mixxx on your desktop"
-msgstr "Doda Mixxx bližnjico na namizje."
-
-msgctxt "FeatureManualTitle"
-msgid "User Manual"
-msgstr "Uporabniški priročnik"
-
-msgctxt "FeatureManualDescription"
-msgid ""
-"The Mixxx user manual in PDF form, also available at "
-"http://mixxx.org/manual/"
-msgstr "Mixxx uporabniški priročnik v PDF obliki. Na voljo tudi na http://mixxx.org/manual/"
-
-msgctxt "FeatureTranslationsTitle"
-msgid "Translations"
-msgstr "Prevodi"
-
-msgctxt "FeatureTranslationsDescription"
-msgid ""
-"Resource files that allow Mixxx to display in alternate languages, other "
-"than US english"
-msgstr "Datoteke, ki omogočajo, da Mixxx prikazuje tudi druge jezike in ne le ameriško angleščino."
-
-#. Bootstrapper
-msgctxt "Caption"
-msgid "[WixBundleName] Setup"
-msgstr "[WixBundleName] Namestitev"
-
-msgctxt "Title"
-msgid "[WixBundleName]"
-msgstr "[WixBundleName]"
-
-msgctxt "ConfirmCancelMessage"
-msgid "Are you sure you want to cancel?"
-msgstr "Ste prepričani, da želite prekiniti?"
-
-msgctxt "ExecuteUpgradeRelatedBundleMessage"
-msgid "Previous version"
-msgstr "Prejšnja različica"
-
-msgctxt "HelpHeader"
-msgid "Setup Help"
-msgstr "Pomoč za namestitev"
-
-msgctxt "HelpText"
-msgid ""
-"/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or\n"
-" creates a complete local copy of the bundle in directory.\n"
-" Install is the default.\n"
-"\n"
-" /passive | /quiet - displays minimal user interface with no prompts or displays no user interface\n"
-" and no prompts. By default user interface and all prompts are displayed.\n"
-"\n"
-" /norestart - suppress any attempts to restart. By default user interface will prompt before restart.\n"
-"\n"
-" /log log.txt - logs to a specific file. By default a log file is created in %TEMP%."
-msgstr "/install | /repair | /uninstall | /layout [directory] - namesti, popravi, odstrani ali\n ustvari popolnoma lokalno kopijo paketa v direktoriju.\n Install je privzeto\n\n /passive | /quiet - prikaže minimalni uporabniški vmesnik brez opozoril ali sploh ne prikaže vmesnika in opozoril.\nPrivzet je prikaz celotnega vmesnika in opozoril.\n\n /norestart - onemogoči vsak poskus ponovnega zagona. privzeto je, da vmesnik uporabnika opozori pred ponovnim zagonom\n\n /log log.txt - izpiše dnevnik na specifično lokacijio. Privzeta lokacija je %TEMP%."
-
-msgctxt "HelpCloseButton"
-msgid "&Close"
-msgstr "&Zapri"
-
-msgctxt "InstallHeader"
-msgid "Welcome"
-msgstr "Dobrodošli"
-
-msgctxt "InstallMessage"
-msgid ""
-"Setup will install Mixxx on your computer.\n"
-"It will first install required third party libraries, then Mixxx itself.\n"
-"Click Install to continue or Close to exit."
-msgstr "Namestitveni program bo na vaš računalnik namestil Mixxx.\nNajprej bodo nameščene potrebne knjižnice drugih razvijalcev, potem pa še sam Mixxx.\nKliknite na Namesti, če želite nadaljevati ali na Zapri za izhod iz namestitve."
-
-msgctxt "InstallVersion"
-msgid "Version [WixBundleVersion]"
-msgstr "Različica [WixBundleVersion]"
-
-msgctxt "InstallOptionsButton"
-msgid "&Options"
-msgstr "&Možnosti"
-
-msgctxt "InstallInstallButton"
-msgid "&Install"
-msgstr "&Namesti"
-
-msgctxt "InstallCloseButton"
-msgid "&Close"
-msgstr "&Zapri"
-
-msgctxt "OptionsHeader"
-msgid "Setup Options"
-msgstr "Možnosti namestitve"
-
-msgctxt "OptionsLocationLabel"
-msgid "Install location:"
-msgstr "Lokacija namestitve:"
-
-msgctxt "OptionsBrowseButton"
-msgid "&Browse"
-msgstr "&Brskaj"
-
-msgctxt "OptionsOkButton"
-msgid "&OK"
-msgstr "&V redu"
-
-msgctxt "OptionsCancelButton"
-msgid "&Cancel"
-msgstr "&Prekini"
-
-msgctxt "FilesInUseHeader"
-msgid "Files In Use"
-msgstr "Datoteke v rabi"
-
-msgctxt "FilesInUseLabel"
-msgid "The following applications are using files that need to be updated:"
-msgstr "Naslednje aplikacije uporabljajo datoteke, ki morajo biti nadgrajene: "
-
-msgctxt "FilesInUseCloseRadioButton"
-msgid "Close the &applications and attempt to restart them."
-msgstr "Zaprite &aplikacije in jih poskusite ponovno zagnati."
-
-msgctxt "FilesInUseDontCloseRadioButton"
-msgid "&Do not close applications. A reboot will be required."
-msgstr "&Ne zapirajte Aplikaciji. Potreben bo ponoven zagon."
-
-msgctxt "FilesInUseOkButton"
-msgid "&OK"
-msgstr "&V redu"
-
-msgctxt "FilesInUseCancelButton"
-msgid "&Cancel"
-msgstr "&Prekini"
-
-msgctxt "ProgressHeader"
-msgid "Setup Progress"
-msgstr "Potek nameščanja:"
-
-msgctxt "ProgressLabel"
-msgid "Processing:"
-msgstr "Procesiranje: "
-
-msgctxt "OverallProgressPackageText"
-msgid "Initializing..."
-msgstr "Inicializacija..."
-
-msgctxt "ProgressCancelButton"
-msgid "&Cancel"
-msgstr "&Prekini"
-
-msgctxt "ModifyHeader"
-msgid "Modify Setup"
-msgstr "Prilagodi namestitev"
-
-msgctxt "ModifyRepairButton"
-msgid "&Repair"
-msgstr "Pop&ravi"
-
-msgctxt "ModifyUninstallButton"
-msgid "&Uninstall"
-msgstr "&Odstrani"
-
-msgctxt "ModifyCloseButton"
-msgid "&Close"
-msgstr "&Zapri"
-
-msgctxt "SuccessHeader"
-msgid "Setup Successful"
-msgstr "Uspešna namestitev"
-
-msgctxt "SuccessInstallHeader"
-msgid "Mixxx installation has been successful"
-msgstr "Nameščanje programa Mixxx je bilo uspešno zaključeno"
-
-msgctxt "SuccessRepairHeader"
-msgid "Mixxx repair has been successful"
-msgstr "Popravljanje programa Mixxx je bilo uspešno zaključeno"
-
-msgctxt "SuccessUninstallHeader"
-msgid "Mixxx uninstall has been successful"
-msgstr "Odstranjanje programa Mixxx je bilo uspešno zaključeno"
-
-msgctxt "SuccessLaunchButton"
-msgid "&Launch"
-msgstr "&Zaženi"
-
-msgctxt "SuccessRestartText"
-msgid "You must restart your computer before you can use the software."
-msgstr "Pred uporabo progrma je potreben ponovni zagon računalnika."
-
-msgctxt "SuccessRestartButton"
-msgid "&Restart"
-msgstr "&Ponovni zagon"
-
-msgctxt "SuccessCloseButton"
-msgid "&Close"
-msgstr "&Zapri"
-
-msgctxt "FailureHeader"
-msgid "Setup Failed"
-msgstr "Neuspešna namestitev"
-
-msgctxt "FailureInstallHeader"
-msgid "Mixxx installation failed"
-msgstr "Namestitev programa Mixxx ni uspela."
-
-msgctxt "FailureRepairHeader"
-msgid "Mixxx repair failed"
-msgstr "Popravljanje programa Mixxx ni uspelo."
-
-msgctxt "FailureUninstallHeader"
-msgid "Mixxx uninstall failed"
-msgstr "Odstranitev programa Mixxx ni uspela."
-
-msgctxt "FailureHyperlinkLogText"
-msgid ""
-"One or more issues caused the setup to fail. Please fix the issues and then "
-"retry setup. For more information see the log file."
-msgstr "Pri nameščanju programa se je pojavila ena ali več težav. Prosimo, odpravite težavo in potem znova poskusite. Za več informacij glej dnevniško datoteko."
-
-msgctxt "FailureRestartText"
-msgid ""
-"You must restart your computer to complete the rollback of the software."
-msgstr "Za vrnitev na starejšo različico je potreben ponoven zagon računalnika."
-
-msgctxt "FailureRestartButton"
-msgid "&Restart"
-msgstr "&Ponovni zagon"
-
-msgctxt "FailureCloseButton"
-msgid "&Close"
-msgstr "&Zapri"
diff --git a/build/wix/Localization/po/sv-SE.po b/build/wix/Localization/po/sv-SE.po
deleted file mode 100644
index 555f1ad8d87..00000000000
--- a/build/wix/Localization/po/sv-SE.po
+++ /dev/null
@@ -1,369 +0,0 @@
-#
-# Translators:
-# Henrik Mattsson-Mårn , 2017
-# S.Brandt , 2018
-msgid ""
-msgstr ""
-"Project-Id-Version: Mixxx DJ Windows installer\n"
-"PO-Revision-Date: 2019-04-17 21:53+0000\n"
-"Last-Translator: S.Brandt \n"
-"Language-Team: Swedish (Sweden) (http://www.transifex.com/mixxx-dj-software/mixxxdj-windows-installer/language/sv_SE/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sv_SE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#. Programm informations
-msgctxt "ApplicationName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerFullName"
-msgid "The Mixxx Development Team"
-msgstr "Mixxx-utvecklingsteamet"
-
-msgctxt "ProductDescription"
-msgid "Open-source Digital DJ software"
-msgstr "Open-source digital DJ-mjukvara"
-
-msgctxt "Comments"
-msgid "Installs Mixxx"
-msgstr "Installerar Mixxx"
-
-#. Error messages
-#. DO NOT BREAK LINES BECAUSE LINE BREAKS WILL SHOW UP AS-IS IN THE INTERFACE
-msgctxt "OS2Old"
-msgid "This product requires Windows 7 or above."
-msgstr "Denna produkt kräver Windows 7 eller högre."
-
-msgctxt "NewerInstalled"
-msgid "The same or a newer version of this product is already installed."
-msgstr "Samma eller en nyare version av denna produkt är redan installerad."
-
-msgctxt "x64VersionRequired"
-msgid ""
-"You need to install the 64-bit version of this product on 64-bit Windows."
-msgstr "Du behöver installera 64-bitars-versionen utav denna produkt på 64-bitars Windows."
-
-msgctxt "x86VersionRequired"
-msgid ""
-"You need to install the 32-bit version of this product on 32-bit Windows."
-msgstr "Du behöver installera 32-bitars-versionen utav denna produkt på 32-bitars Windows."
-
-msgctxt "x86VersionWarning"
-msgid ""
-"You are about to install the 32-bit version on a 64-bit operating system. We"
-" recommend using the 64-bit version for better performance. You can download"
-" the 64-bit installation package from http://mixxx.org/download/"
-msgstr ""
-
-msgctxt "XPWarning"
-msgid ""
-"You are installing Mixxx on an outdated operating system. Some functions may"
-" not work well or at all. We recommend upgrading your operating system."
-msgstr ""
-
-msgctxt "bitWidthMismatch32"
-msgid ""
-"You are about to install the 32-bit version but a 64-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 64-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr ""
-
-msgctxt "bitWidthMismatch64"
-msgid ""
-"You are about to install the 64-bit version but a 32-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 32-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr ""
-
-msgctxt "OlderVersionFound"
-msgid ""
-"An older version of Mixxx has been detected. As we changed installer, we can"
-" not smoothly upgrade. Please uninstall older version before installing this"
-" one."
-msgstr ""
-
-msgctxt "VCredistNotFound"
-msgid ""
-"Installer was not able to find Microsoft Visual C++ 2015 Redistributable on "
-"this system. This is likely an installer bug that should be reported to "
-"Mixxx developers."
-msgstr ""
-
-#. Custom Warning Dialog
-msgctxt "WarningDlgTitle"
-msgid "{\\WixUI_Font_Title}Warning"
-msgstr "{\\WixUI_Font_Title}Varning"
-
-#. Custom exit dialog
-msgctxt "StartOnExit"
-msgid "Launch Mixxx when setup exits."
-msgstr "Starta Mixxx när installationen avslutar."
-
-#. Features translations
-msgctxt "FeatureCompleteDescription"
-msgid "The complete package."
-msgstr "Hela paketet."
-
-msgctxt "FeatureMainProgramTitle"
-msgid "Core application"
-msgstr "Kärnapplikation"
-
-msgctxt "FeatureMainProgramDescription"
-msgid "The core Mixxx application including controller presets."
-msgstr "Kärn-Mixxx-applikationen inklusive controller-förval."
-
-msgctxt "FeaturePDBTitle"
-msgid "PDB debug files"
-msgstr "PDB-debugfiler"
-
-msgctxt "FeaturePDBDescription"
-msgid ""
-"Install Mixxx PDB files to use with a debugger. This is useful to debug "
-"Mixxx and provide readable backtraces to the development team."
-msgstr ""
-
-msgctxt "FeatureDesktopShortcutTitle"
-msgid "Desktop Shortcut"
-msgstr "Skrivbordsgenväg"
-
-msgctxt "FeatureDesktopShortcutDescription"
-msgid "Add a shortcut to Mixxx on your desktop"
-msgstr "Lägg till en genväg till Mixxx på ditt skrivbord"
-
-msgctxt "FeatureManualTitle"
-msgid "User Manual"
-msgstr "Användarmanual"
-
-msgctxt "FeatureManualDescription"
-msgid ""
-"The Mixxx user manual in PDF form, also available at "
-"http://mixxx.org/manual/"
-msgstr "Mixxx användarmanual i PDF-format, även tillgänglig på http://mixxx.org/manual/"
-
-msgctxt "FeatureTranslationsTitle"
-msgid "Translations"
-msgstr "Översättningar"
-
-msgctxt "FeatureTranslationsDescription"
-msgid ""
-"Resource files that allow Mixxx to display in alternate languages, other "
-"than US english"
-msgstr "Resursfiler som tillåter Mixxx att visas i alternativa språk, andra än amerikansk engelska"
-
-#. Bootstrapper
-msgctxt "Caption"
-msgid "[WixBundleName] Setup"
-msgstr ""
-
-msgctxt "Title"
-msgid "[WixBundleName]"
-msgstr "[WixBundleName]"
-
-msgctxt "ConfirmCancelMessage"
-msgid "Are you sure you want to cancel?"
-msgstr ""
-
-msgctxt "ExecuteUpgradeRelatedBundleMessage"
-msgid "Previous version"
-msgstr "Föregående version"
-
-msgctxt "HelpHeader"
-msgid "Setup Help"
-msgstr ""
-
-msgctxt "HelpText"
-msgid ""
-"/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or\n"
-" creates a complete local copy of the bundle in directory.\n"
-" Install is the default.\n"
-"\n"
-" /passive | /quiet - displays minimal user interface with no prompts or displays no user interface\n"
-" and no prompts. By default user interface and all prompts are displayed.\n"
-"\n"
-" /norestart - suppress any attempts to restart. By default user interface will prompt before restart.\n"
-"\n"
-" /log log.txt - logs to a specific file. By default a log file is created in %TEMP%."
-msgstr ""
-
-msgctxt "HelpCloseButton"
-msgid "&Close"
-msgstr ""
-
-msgctxt "InstallHeader"
-msgid "Welcome"
-msgstr "Välkommen"
-
-msgctxt "InstallMessage"
-msgid ""
-"Setup will install Mixxx on your computer.\n"
-"It will first install required third party libraries, then Mixxx itself.\n"
-"Click Install to continue or Close to exit."
-msgstr ""
-
-msgctxt "InstallVersion"
-msgid "Version [WixBundleVersion]"
-msgstr "Version [WixBundleVersion]"
-
-msgctxt "InstallOptionsButton"
-msgid "&Options"
-msgstr ""
-
-msgctxt "InstallInstallButton"
-msgid "&Install"
-msgstr "&Installera"
-
-msgctxt "InstallCloseButton"
-msgid "&Close"
-msgstr ""
-
-msgctxt "OptionsHeader"
-msgid "Setup Options"
-msgstr ""
-
-msgctxt "OptionsLocationLabel"
-msgid "Install location:"
-msgstr ""
-
-msgctxt "OptionsBrowseButton"
-msgid "&Browse"
-msgstr "&Bläddra"
-
-msgctxt "OptionsOkButton"
-msgid "&OK"
-msgstr "&OK"
-
-msgctxt "OptionsCancelButton"
-msgid "&Cancel"
-msgstr ""
-
-msgctxt "FilesInUseHeader"
-msgid "Files In Use"
-msgstr ""
-
-msgctxt "FilesInUseLabel"
-msgid "The following applications are using files that need to be updated:"
-msgstr ""
-
-msgctxt "FilesInUseCloseRadioButton"
-msgid "Close the &applications and attempt to restart them."
-msgstr ""
-
-msgctxt "FilesInUseDontCloseRadioButton"
-msgid "&Do not close applications. A reboot will be required."
-msgstr ""
-
-msgctxt "FilesInUseOkButton"
-msgid "&OK"
-msgstr "&OK"
-
-msgctxt "FilesInUseCancelButton"
-msgid "&Cancel"
-msgstr ""
-
-msgctxt "ProgressHeader"
-msgid "Setup Progress"
-msgstr ""
-
-msgctxt "ProgressLabel"
-msgid "Processing:"
-msgstr "Bearbetar:"
-
-msgctxt "OverallProgressPackageText"
-msgid "Initializing..."
-msgstr ""
-
-msgctxt "ProgressCancelButton"
-msgid "&Cancel"
-msgstr ""
-
-msgctxt "ModifyHeader"
-msgid "Modify Setup"
-msgstr ""
-
-msgctxt "ModifyRepairButton"
-msgid "&Repair"
-msgstr "&Reparera"
-
-msgctxt "ModifyUninstallButton"
-msgid "&Uninstall"
-msgstr ""
-
-msgctxt "ModifyCloseButton"
-msgid "&Close"
-msgstr ""
-
-msgctxt "SuccessHeader"
-msgid "Setup Successful"
-msgstr ""
-
-msgctxt "SuccessInstallHeader"
-msgid "Mixxx installation has been successful"
-msgstr ""
-
-msgctxt "SuccessRepairHeader"
-msgid "Mixxx repair has been successful"
-msgstr ""
-
-msgctxt "SuccessUninstallHeader"
-msgid "Mixxx uninstall has been successful"
-msgstr ""
-
-msgctxt "SuccessLaunchButton"
-msgid "&Launch"
-msgstr ""
-
-msgctxt "SuccessRestartText"
-msgid "You must restart your computer before you can use the software."
-msgstr ""
-
-msgctxt "SuccessRestartButton"
-msgid "&Restart"
-msgstr ""
-
-msgctxt "SuccessCloseButton"
-msgid "&Close"
-msgstr ""
-
-msgctxt "FailureHeader"
-msgid "Setup Failed"
-msgstr ""
-
-msgctxt "FailureInstallHeader"
-msgid "Mixxx installation failed"
-msgstr ""
-
-msgctxt "FailureRepairHeader"
-msgid "Mixxx repair failed"
-msgstr ""
-
-msgctxt "FailureUninstallHeader"
-msgid "Mixxx uninstall failed"
-msgstr ""
-
-msgctxt "FailureHyperlinkLogText"
-msgid ""
-"One or more issues caused the setup to fail. Please fix the issues and then "
-"retry setup. For more information see the log file."
-msgstr ""
-
-msgctxt "FailureRestartText"
-msgid ""
-"You must restart your computer to complete the rollback of the software."
-msgstr ""
-
-msgctxt "FailureRestartButton"
-msgid "&Restart"
-msgstr ""
-
-msgctxt "FailureCloseButton"
-msgid "&Close"
-msgstr ""
diff --git a/build/wix/Localization/po/tr-TR.po b/build/wix/Localization/po/tr-TR.po
deleted file mode 100644
index ed418fca3d9..00000000000
--- a/build/wix/Localization/po/tr-TR.po
+++ /dev/null
@@ -1,371 +0,0 @@
-#
-# Translators:
-# abc Def , 2020
-# Salih Tekin , 2017
-# Salih Tekin , 2017
-# S.Brandt , 2018
-msgid ""
-msgstr ""
-"Project-Id-Version: Mixxx DJ Windows installer\n"
-"PO-Revision-Date: 2020-03-29 00:15+0000\n"
-"Last-Translator: abc Def \n"
-"Language-Team: Turkish (Turkey) (http://www.transifex.com/mixxx-dj-software/mixxxdj-windows-installer/language/tr_TR/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tr_TR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#. Programm informations
-msgctxt "ApplicationName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerFullName"
-msgid "The Mixxx Development Team"
-msgstr "Mixxx Geliştirici Takımı"
-
-msgctxt "ProductDescription"
-msgid "Open-source Digital DJ software"
-msgstr "Açık-kaynak Dijital DJ yazılımı"
-
-msgctxt "Comments"
-msgid "Installs Mixxx"
-msgstr "Mixxx'i Yükler"
-
-#. Error messages
-#. DO NOT BREAK LINES BECAUSE LINE BREAKS WILL SHOW UP AS-IS IN THE INTERFACE
-msgctxt "OS2Old"
-msgid "This product requires Windows 7 or above."
-msgstr "Bu ürün Windows 7 ve üzerini gerektirir."
-
-msgctxt "NewerInstalled"
-msgid "The same or a newer version of this product is already installed."
-msgstr "Bu ürünün aynı veya daha yeni bir sürümü zaten yüklü."
-
-msgctxt "x64VersionRequired"
-msgid ""
-"You need to install the 64-bit version of this product on 64-bit Windows."
-msgstr "64-bit Windows üzerine bu ürünün 64-bit sürümünü yüklemeniz gerekmektedir."
-
-msgctxt "x86VersionRequired"
-msgid ""
-"You need to install the 32-bit version of this product on 32-bit Windows."
-msgstr "32-bit Windows üzerine bu ürünün 32-bit sürümünü yüklemeniz gerekmektedir."
-
-msgctxt "x86VersionWarning"
-msgid ""
-"You are about to install the 32-bit version on a 64-bit operating system. We"
-" recommend using the 64-bit version for better performance. You can download"
-" the 64-bit installation package from http://mixxx.org/download/"
-msgstr "64-bit bir işletim sistemine 32-bit sürümü yüklemek üzeresiniz. Daha iyi bir performans için 64-bit sürümü kullanmanızı öneririz. 64-bit Yükleme paketini http://mixxx.org/download/ adresinden edinebilirsiniz."
-
-msgctxt "XPWarning"
-msgid ""
-"You are installing Mixxx on an outdated operating system. Some functions may"
-" not work well or at all. We recommend upgrading your operating system."
-msgstr "Mixxx'i eski bir işletim sistemine yüklemek üzeresiniz. Bazı özellikler istendiği gibi veya hiç çalışmayabilir. İşletim sisteminizi yükseltmenizi öneririz."
-
-msgctxt "bitWidthMismatch32"
-msgid ""
-"You are about to install the 32-bit version but a 64-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 64-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "32-bit sürümü yüklemek üzeresiniz ancak bir 64-bit sürüm zaten yüklü. Devam etmek istenmeyen sonuçlar doğurabilir. Lütfen önce mevcut Mixxx'i kaldırın, veya güncellemek için 64-bit yükleme paketini indirin (ne yaptığınızı tam olarak bilmiyorsanız)."
-
-msgctxt "bitWidthMismatch64"
-msgid ""
-"You are about to install the 64-bit version but a 32-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 32-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "64-bit sürümü yüklemek üzeresiniz ancak bir 32-bit versiyon zaten yüklü. Devam etmek istenmeyen sonuçlar doğurabilir. Lütfen önce Mixxx'i kaldırın, veya güncellemek için 32-bit yükleme paketini indirin (ne yaptığınızı tam olarak bilmiyorsanız)."
-
-msgctxt "OlderVersionFound"
-msgid ""
-"An older version of Mixxx has been detected. As we changed installer, we can"
-" not smoothly upgrade. Please uninstall older version before installing this"
-" one."
-msgstr "Mixxx'in daha eski bir sürümü tespit edildi. Yükleyici'yi değiştirdiğimiz için pürüzsüz bir güncelleme deneyimi sunamıyoruz. Lütfen yüklemeden önce eski sürümü kaldırın."
-
-msgctxt "VCredistNotFound"
-msgid ""
-"Installer was not able to find Microsoft Visual C++ 2015 Redistributable on "
-"this system. This is likely an installer bug that should be reported to "
-"Mixxx developers."
-msgstr ""
-
-#. Custom Warning Dialog
-msgctxt "WarningDlgTitle"
-msgid "{\\WixUI_Font_Title}Warning"
-msgstr "{\\WixUI_Font_Title} Uyarı"
-
-#. Custom exit dialog
-msgctxt "StartOnExit"
-msgid "Launch Mixxx when setup exits."
-msgstr "Kurulumdan çıktıktan sonra Mixxx'i çalıştır."
-
-#. Features translations
-msgctxt "FeatureCompleteDescription"
-msgid "The complete package."
-msgstr "Tam paket."
-
-msgctxt "FeatureMainProgramTitle"
-msgid "Core application"
-msgstr "Çekirdek uygulama"
-
-msgctxt "FeatureMainProgramDescription"
-msgid "The core Mixxx application including controller presets."
-msgstr "Çekirdek Mixxx uygulaması, kontrolör önayarları dahil"
-
-msgctxt "FeaturePDBTitle"
-msgid "PDB debug files"
-msgstr ""
-
-msgctxt "FeaturePDBDescription"
-msgid ""
-"Install Mixxx PDB files to use with a debugger. This is useful to debug "
-"Mixxx and provide readable backtraces to the development team."
-msgstr ""
-
-msgctxt "FeatureDesktopShortcutTitle"
-msgid "Desktop Shortcut"
-msgstr "Masaüstü Kısayolu"
-
-msgctxt "FeatureDesktopShortcutDescription"
-msgid "Add a shortcut to Mixxx on your desktop"
-msgstr "Masaüstüne Mixxx'e bir kısayol ekle"
-
-msgctxt "FeatureManualTitle"
-msgid "User Manual"
-msgstr "Kullanım Kılavuzu"
-
-msgctxt "FeatureManualDescription"
-msgid ""
-"The Mixxx user manual in PDF form, also available at "
-"http://mixxx.org/manual/"
-msgstr "Mixxx kullanım kılavuzu PDF formunda, ayrıca http://mixxx.org/manual/ adresinde mevcut."
-
-msgctxt "FeatureTranslationsTitle"
-msgid "Translations"
-msgstr "Çeviriler"
-
-msgctxt "FeatureTranslationsDescription"
-msgid ""
-"Resource files that allow Mixxx to display in alternate languages, other "
-"than US english"
-msgstr "Mixxx'in ABD dili dışındaki alternatif dillerde görüntülenmesine izin veren kaynak dosyaları"
-
-#. Bootstrapper
-msgctxt "Caption"
-msgid "[WixBundleName] Setup"
-msgstr ""
-
-msgctxt "Title"
-msgid "[WixBundleName]"
-msgstr ""
-
-msgctxt "ConfirmCancelMessage"
-msgid "Are you sure you want to cancel?"
-msgstr ""
-
-msgctxt "ExecuteUpgradeRelatedBundleMessage"
-msgid "Previous version"
-msgstr "Önceki Uyarlama"
-
-msgctxt "HelpHeader"
-msgid "Setup Help"
-msgstr ""
-
-msgctxt "HelpText"
-msgid ""
-"/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or\n"
-" creates a complete local copy of the bundle in directory.\n"
-" Install is the default.\n"
-"\n"
-" /passive | /quiet - displays minimal user interface with no prompts or displays no user interface\n"
-" and no prompts. By default user interface and all prompts are displayed.\n"
-"\n"
-" /norestart - suppress any attempts to restart. By default user interface will prompt before restart.\n"
-"\n"
-" /log log.txt - logs to a specific file. By default a log file is created in %TEMP%."
-msgstr ""
-
-msgctxt "HelpCloseButton"
-msgid "&Close"
-msgstr ""
-
-msgctxt "InstallHeader"
-msgid "Welcome"
-msgstr ""
-
-msgctxt "InstallMessage"
-msgid ""
-"Setup will install Mixxx on your computer.\n"
-"It will first install required third party libraries, then Mixxx itself.\n"
-"Click Install to continue or Close to exit."
-msgstr ""
-
-msgctxt "InstallVersion"
-msgid "Version [WixBundleVersion]"
-msgstr ""
-
-msgctxt "InstallOptionsButton"
-msgid "&Options"
-msgstr ""
-
-msgctxt "InstallInstallButton"
-msgid "&Install"
-msgstr ""
-
-msgctxt "InstallCloseButton"
-msgid "&Close"
-msgstr ""
-
-msgctxt "OptionsHeader"
-msgid "Setup Options"
-msgstr ""
-
-msgctxt "OptionsLocationLabel"
-msgid "Install location:"
-msgstr ""
-
-msgctxt "OptionsBrowseButton"
-msgid "&Browse"
-msgstr ""
-
-msgctxt "OptionsOkButton"
-msgid "&OK"
-msgstr ""
-
-msgctxt "OptionsCancelButton"
-msgid "&Cancel"
-msgstr ""
-
-msgctxt "FilesInUseHeader"
-msgid "Files In Use"
-msgstr ""
-
-msgctxt "FilesInUseLabel"
-msgid "The following applications are using files that need to be updated:"
-msgstr ""
-
-msgctxt "FilesInUseCloseRadioButton"
-msgid "Close the &applications and attempt to restart them."
-msgstr ""
-
-msgctxt "FilesInUseDontCloseRadioButton"
-msgid "&Do not close applications. A reboot will be required."
-msgstr ""
-
-msgctxt "FilesInUseOkButton"
-msgid "&OK"
-msgstr ""
-
-msgctxt "FilesInUseCancelButton"
-msgid "&Cancel"
-msgstr ""
-
-msgctxt "ProgressHeader"
-msgid "Setup Progress"
-msgstr ""
-
-msgctxt "ProgressLabel"
-msgid "Processing:"
-msgstr ""
-
-msgctxt "OverallProgressPackageText"
-msgid "Initializing..."
-msgstr ""
-
-msgctxt "ProgressCancelButton"
-msgid "&Cancel"
-msgstr ""
-
-msgctxt "ModifyHeader"
-msgid "Modify Setup"
-msgstr ""
-
-msgctxt "ModifyRepairButton"
-msgid "&Repair"
-msgstr ""
-
-msgctxt "ModifyUninstallButton"
-msgid "&Uninstall"
-msgstr ""
-
-msgctxt "ModifyCloseButton"
-msgid "&Close"
-msgstr ""
-
-msgctxt "SuccessHeader"
-msgid "Setup Successful"
-msgstr ""
-
-msgctxt "SuccessInstallHeader"
-msgid "Mixxx installation has been successful"
-msgstr ""
-
-msgctxt "SuccessRepairHeader"
-msgid "Mixxx repair has been successful"
-msgstr ""
-
-msgctxt "SuccessUninstallHeader"
-msgid "Mixxx uninstall has been successful"
-msgstr ""
-
-msgctxt "SuccessLaunchButton"
-msgid "&Launch"
-msgstr ""
-
-msgctxt "SuccessRestartText"
-msgid "You must restart your computer before you can use the software."
-msgstr ""
-
-msgctxt "SuccessRestartButton"
-msgid "&Restart"
-msgstr ""
-
-msgctxt "SuccessCloseButton"
-msgid "&Close"
-msgstr ""
-
-msgctxt "FailureHeader"
-msgid "Setup Failed"
-msgstr ""
-
-msgctxt "FailureInstallHeader"
-msgid "Mixxx installation failed"
-msgstr ""
-
-msgctxt "FailureRepairHeader"
-msgid "Mixxx repair failed"
-msgstr ""
-
-msgctxt "FailureUninstallHeader"
-msgid "Mixxx uninstall failed"
-msgstr ""
-
-msgctxt "FailureHyperlinkLogText"
-msgid ""
-"One or more issues caused the setup to fail. Please fix the issues and then "
-"retry setup. For more information see the log file."
-msgstr ""
-
-msgctxt "FailureRestartText"
-msgid ""
-"You must restart your computer to complete the rollback of the software."
-msgstr ""
-
-msgctxt "FailureRestartButton"
-msgid "&Restart"
-msgstr ""
-
-msgctxt "FailureCloseButton"
-msgid "&Close"
-msgstr ""
diff --git a/build/wix/Localization/po/zh-CN.po b/build/wix/Localization/po/zh-CN.po
deleted file mode 100644
index ed9a0dcbbf8..00000000000
--- a/build/wix/Localization/po/zh-CN.po
+++ /dev/null
@@ -1,375 +0,0 @@
-#
-# Translators:
-# Chee Kin Weng , 2016
-# liushuyu011 , 2017
-# liushuyu011 , 2017
-# Nya Chan (喵酱) , 2016
-# S.Brandt , 2018
-# Sebastien BLAISOT , 2016
-# Sebastien BLAISOT , 2016
-# zwpwjwtz , 2017
-msgid ""
-msgstr ""
-"Project-Id-Version: Mixxx DJ Windows installer\n"
-"PO-Revision-Date: 2019-04-17 21:53+0000\n"
-"Last-Translator: S.Brandt \n"
-"Language-Team: Chinese (China) (http://www.transifex.com/mixxx-dj-software/mixxxdj-windows-installer/language/zh_CN/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: zh_CN\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#. Programm informations
-msgctxt "ApplicationName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerFullName"
-msgid "The Mixxx Development Team"
-msgstr "Mixxx开发团队"
-
-msgctxt "ProductDescription"
-msgid "Open-source Digital DJ software"
-msgstr "开源数字DJ软件"
-
-msgctxt "Comments"
-msgid "Installs Mixxx"
-msgstr "安装Mixxx"
-
-#. Error messages
-#. DO NOT BREAK LINES BECAUSE LINE BREAKS WILL SHOW UP AS-IS IN THE INTERFACE
-msgctxt "OS2Old"
-msgid "This product requires Windows 7 or above."
-msgstr "此产品要求Windows 7或更高版本。"
-
-msgctxt "NewerInstalled"
-msgid "The same or a newer version of this product is already installed."
-msgstr "已安装此产品相同或更高版本。"
-
-msgctxt "x64VersionRequired"
-msgid ""
-"You need to install the 64-bit version of this product on 64-bit Windows."
-msgstr "您需要在64位Windows上安装本产品的64位版本。"
-
-msgctxt "x86VersionRequired"
-msgid ""
-"You need to install the 32-bit version of this product on 32-bit Windows."
-msgstr "您需要在32位Windows上安装本产品的32位版本。"
-
-msgctxt "x86VersionWarning"
-msgid ""
-"You are about to install the 32-bit version on a 64-bit operating system. We"
-" recommend using the 64-bit version for better performance. You can download"
-" the 64-bit installation package from http://mixxx.org/download/"
-msgstr "您将要在64位操作系统上安装32位版本的Mixxx。我们建议使用64位版本以获取更好的性能。您可以从http://mixxx.org/download/ 下载64位的安装包。"
-
-msgctxt "XPWarning"
-msgid ""
-"You are installing Mixxx on an outdated operating system. Some functions may"
-" not work well or at all. We recommend upgrading your operating system."
-msgstr "您正在一个过时的操作系统上安装Mixxx。部分甚至全部功能可能无法正常工作,我们建议您升级操作系统。"
-
-msgctxt "bitWidthMismatch32"
-msgid ""
-"You are about to install the 32-bit version but a 64-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 64-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "您将要安装Mixxx的32位版本,但64位版本已经安装,这可能会导致超乎您意料的结果。请先卸载现有的Mixxx,或下载64位的安装包进行升级 (除非您知道自己在做什么。)"
-
-msgctxt "bitWidthMismatch64"
-msgid ""
-"You are about to install the 64-bit version but a 32-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 32-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "您将要安装Mixxx的64位版本,但32位版本已经安装,这可能会导致超乎您意料的结果。请先卸载现有的Mixxx,或下载64位的安装包进行升级 (除非您知道自己在做什么。)"
-
-msgctxt "OlderVersionFound"
-msgid ""
-"An older version of Mixxx has been detected. As we changed installer, we can"
-" not smoothly upgrade. Please uninstall older version before installing this"
-" one."
-msgstr "已检测到旧版本的Mixxx。我们现已更换安装程序,这将导致不能直接进行升级。安装此版本之前请先卸载旧版本。"
-
-msgctxt "VCredistNotFound"
-msgid ""
-"Installer was not able to find Microsoft Visual C++ 2015 Redistributable on "
-"this system. This is likely an installer bug that should be reported to "
-"Mixxx developers."
-msgstr "安装器找不到必须的组件 Microsoft Visual C++ 2015 Redistributable。这可能是安装器的软件缺陷,请向 Mixxx 的开发者报告此问题。"
-
-#. Custom Warning Dialog
-msgctxt "WarningDlgTitle"
-msgid "{\\WixUI_Font_Title}Warning"
-msgstr "{\\WixUI_Font_Title}警告"
-
-#. Custom exit dialog
-msgctxt "StartOnExit"
-msgid "Launch Mixxx when setup exits."
-msgstr "退出安装程序后,启动Mixxx"
-
-#. Features translations
-msgctxt "FeatureCompleteDescription"
-msgid "The complete package."
-msgstr "完整软件包"
-
-msgctxt "FeatureMainProgramTitle"
-msgid "Core application"
-msgstr "核心程序"
-
-msgctxt "FeatureMainProgramDescription"
-msgid "The core Mixxx application including controller presets."
-msgstr "核心Mixxx程序包含控制器预设"
-
-msgctxt "FeaturePDBTitle"
-msgid "PDB debug files"
-msgstr "PDB 调试符号文件"
-
-msgctxt "FeaturePDBDescription"
-msgid ""
-"Install Mixxx PDB files to use with a debugger. This is useful to debug "
-"Mixxx and provide readable backtraces to the development team."
-msgstr "安装用于辅助调试的 PDB 文件。这些文件在调试 Mixxx 时会非常有用,有了这些文件就能向开发团队提供人类可读的回溯信息。"
-
-msgctxt "FeatureDesktopShortcutTitle"
-msgid "Desktop Shortcut"
-msgstr "桌面快捷方式"
-
-msgctxt "FeatureDesktopShortcutDescription"
-msgid "Add a shortcut to Mixxx on your desktop"
-msgstr "添加Mixxx的快捷方式到您的桌面"
-
-msgctxt "FeatureManualTitle"
-msgid "User Manual"
-msgstr "用户手册"
-
-msgctxt "FeatureManualDescription"
-msgid ""
-"The Mixxx user manual in PDF form, also available at "
-"http://mixxx.org/manual/"
-msgstr "Mixxx用户手册为PDF格式,您也可在http://mixxx.org/manual/ 上查看。"
-
-msgctxt "FeatureTranslationsTitle"
-msgid "Translations"
-msgstr "翻译"
-
-msgctxt "FeatureTranslationsDescription"
-msgid ""
-"Resource files that allow Mixxx to display in alternate languages, other "
-"than US english"
-msgstr "资源文件将允许Mixxx显示英语(美国)以外的语言"
-
-#. Bootstrapper
-msgctxt "Caption"
-msgid "[WixBundleName] Setup"
-msgstr "[WixBundleName] 安装"
-
-msgctxt "Title"
-msgid "[WixBundleName]"
-msgstr "[WixBundleName]"
-
-msgctxt "ConfirmCancelMessage"
-msgid "Are you sure you want to cancel?"
-msgstr "您确定要取消吗?"
-
-msgctxt "ExecuteUpgradeRelatedBundleMessage"
-msgid "Previous version"
-msgstr "上一版本"
-
-msgctxt "HelpHeader"
-msgid "Setup Help"
-msgstr "安装帮助"
-
-msgctxt "HelpText"
-msgid ""
-"/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or\n"
-" creates a complete local copy of the bundle in directory.\n"
-" Install is the default.\n"
-"\n"
-" /passive | /quiet - displays minimal user interface with no prompts or displays no user interface\n"
-" and no prompts. By default user interface and all prompts are displayed.\n"
-"\n"
-" /norestart - suppress any attempts to restart. By default user interface will prompt before restart.\n"
-"\n"
-" /log log.txt - logs to a specific file. By default a log file is created in %TEMP%."
-msgstr "/install | /repair | /uninstall | /layout [directory] - 安装、修复、卸载或创建已安装软件的副本。默认操作为“安装”。\n\n/passive | /quiet - 显示最小化的安装界面且不提示安装选项,或者完全不显示用户界面。默认选项为显示完整的安装界面。\n\n/norestart - 安装过程中不重启电脑。默认情况下,程序将提示用户是否重启系统。\n\n/log log.txt - 将安装日志输出到指定文件。默认情况下,将日志输出到目录 %TEMP% 下。"
-
-msgctxt "HelpCloseButton"
-msgid "&Close"
-msgstr "关闭(&C)"
-
-msgctxt "InstallHeader"
-msgid "Welcome"
-msgstr "欢迎"
-
-msgctxt "InstallMessage"
-msgid ""
-"Setup will install Mixxx on your computer.\n"
-"It will first install required third party libraries, then Mixxx itself.\n"
-"Click Install to continue or Close to exit."
-msgstr "安装程序将在您的电脑上安装Mixxx。\n系统将先安装所需的第三方组件,然后再安装Mixxx。\n点击“安装”以继续,或点击“关闭”以退出安装。"
-
-msgctxt "InstallVersion"
-msgid "Version [WixBundleVersion]"
-msgstr "版本 [WixBundleVersion]"
-
-msgctxt "InstallOptionsButton"
-msgid "&Options"
-msgstr "选项(&O)"
-
-msgctxt "InstallInstallButton"
-msgid "&Install"
-msgstr "安装(&I)"
-
-msgctxt "InstallCloseButton"
-msgid "&Close"
-msgstr "关闭(&C)"
-
-msgctxt "OptionsHeader"
-msgid "Setup Options"
-msgstr "安装选项"
-
-msgctxt "OptionsLocationLabel"
-msgid "Install location:"
-msgstr "安装路径:"
-
-msgctxt "OptionsBrowseButton"
-msgid "&Browse"
-msgstr "浏览(&B)"
-
-msgctxt "OptionsOkButton"
-msgid "&OK"
-msgstr "确定(&O)"
-
-msgctxt "OptionsCancelButton"
-msgid "&Cancel"
-msgstr "取消(&C)"
-
-msgctxt "FilesInUseHeader"
-msgid "Files In Use"
-msgstr "文件被占用"
-
-msgctxt "FilesInUseLabel"
-msgid "The following applications are using files that need to be updated:"
-msgstr "下列程序正在占用安装程序需要更新的文件:"
-
-msgctxt "FilesInUseCloseRadioButton"
-msgid "Close the &applications and attempt to restart them."
-msgstr "关闭这些程序并尝试重启它们((&A)。"
-
-msgctxt "FilesInUseDontCloseRadioButton"
-msgid "&Do not close applications. A reboot will be required."
-msgstr "不要关闭这些程序。您稍后需要重启系统。(&D)"
-
-msgctxt "FilesInUseOkButton"
-msgid "&OK"
-msgstr "确定(&O)"
-
-msgctxt "FilesInUseCancelButton"
-msgid "&Cancel"
-msgstr "取消(&C)"
-
-msgctxt "ProgressHeader"
-msgid "Setup Progress"
-msgstr "安装进度"
-
-msgctxt "ProgressLabel"
-msgid "Processing:"
-msgstr "进度:"
-
-msgctxt "OverallProgressPackageText"
-msgid "Initializing..."
-msgstr "初始化……"
-
-msgctxt "ProgressCancelButton"
-msgid "&Cancel"
-msgstr "取消(&C)"
-
-msgctxt "ModifyHeader"
-msgid "Modify Setup"
-msgstr "更改安装类型"
-
-msgctxt "ModifyRepairButton"
-msgid "&Repair"
-msgstr "修复(&R)"
-
-msgctxt "ModifyUninstallButton"
-msgid "&Uninstall"
-msgstr "卸载(&U)"
-
-msgctxt "ModifyCloseButton"
-msgid "&Close"
-msgstr "关闭(&C)"
-
-msgctxt "SuccessHeader"
-msgid "Setup Successful"
-msgstr "安装成功"
-
-msgctxt "SuccessInstallHeader"
-msgid "Mixxx installation has been successful"
-msgstr "安装Mixxx成功"
-
-msgctxt "SuccessRepairHeader"
-msgid "Mixxx repair has been successful"
-msgstr "修复Mixxx成功"
-
-msgctxt "SuccessUninstallHeader"
-msgid "Mixxx uninstall has been successful"
-msgstr "卸载Mixxx成功"
-
-msgctxt "SuccessLaunchButton"
-msgid "&Launch"
-msgstr "启动Mixxx(&L)"
-
-msgctxt "SuccessRestartText"
-msgid "You must restart your computer before you can use the software."
-msgstr "您需要重启电脑才能使用Mixxx。"
-
-msgctxt "SuccessRestartButton"
-msgid "&Restart"
-msgstr "重启(&R)"
-
-msgctxt "SuccessCloseButton"
-msgid "&Close"
-msgstr "quanti(&C)"
-
-msgctxt "FailureHeader"
-msgid "Setup Failed"
-msgstr "安装失败"
-
-msgctxt "FailureInstallHeader"
-msgid "Mixxx installation failed"
-msgstr "Mixxx安装失败"
-
-msgctxt "FailureRepairHeader"
-msgid "Mixxx repair failed"
-msgstr "Mixxx修复失败"
-
-msgctxt "FailureUninstallHeader"
-msgid "Mixxx uninstall failed"
-msgstr "Mixxx卸载失败"
-
-msgctxt "FailureHyperlinkLogText"
-msgid ""
-"One or more issues caused the setup to fail. Please fix the issues and then "
-"retry setup. For more information see the log file."
-msgstr "Mixxx安装失败。请先修复可能存在的问题,然后重试。有关更多信息,请参考日志文件。"
-
-msgctxt "FailureRestartText"
-msgid ""
-"You must restart your computer to complete the rollback of the software."
-msgstr "您必须重启电脑才能完成撤销操作。"
-
-msgctxt "FailureRestartButton"
-msgid "&Restart"
-msgstr "重启(&R)"
-
-msgctxt "FailureCloseButton"
-msgid "&Close"
-msgstr "关闭(&C)"
diff --git a/build/wix/Localization/po/zh-TW.po b/build/wix/Localization/po/zh-TW.po
deleted file mode 100644
index 74e8d19f2ab..00000000000
--- a/build/wix/Localization/po/zh-TW.po
+++ /dev/null
@@ -1,373 +0,0 @@
-#
-# Translators:
-# S.Brandt , 2018
-# Sebastien BLAISOT , 2016
-# Sebastien BLAISOT , 2016
-# 尚齊 吳, 2018
-# 羅廷中 , 2017
-# 鬼迪 陳 , 2016
-msgid ""
-msgstr ""
-"Project-Id-Version: Mixxx DJ Windows installer\n"
-"PO-Revision-Date: 2019-04-17 21:53+0000\n"
-"Last-Translator: S.Brandt \n"
-"Language-Team: Chinese (Taiwan) (http://www.transifex.com/mixxx-dj-software/mixxxdj-windows-installer/language/zh_TW/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: zh_TW\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#. Programm informations
-msgctxt "ApplicationName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerName"
-msgid "Mixxx"
-msgstr "Mixxx"
-
-msgctxt "ManufacturerFullName"
-msgid "The Mixxx Development Team"
-msgstr "Mixxx 開發團隊"
-
-msgctxt "ProductDescription"
-msgid "Open-source Digital DJ software"
-msgstr "開放源碼數位 DJ 軟體"
-
-msgctxt "Comments"
-msgid "Installs Mixxx"
-msgstr "安裝 Mixxx"
-
-#. Error messages
-#. DO NOT BREAK LINES BECAUSE LINE BREAKS WILL SHOW UP AS-IS IN THE INTERFACE
-msgctxt "OS2Old"
-msgid "This product requires Windows 7 or above."
-msgstr "此產品需要 Windows 7 或以上。"
-
-msgctxt "NewerInstalled"
-msgid "The same or a newer version of this product is already installed."
-msgstr "已安裝相同版本或更新版本的這種產品。"
-
-msgctxt "x64VersionRequired"
-msgid ""
-"You need to install the 64-bit version of this product on 64-bit Windows."
-msgstr "您需要在 64 位 Windows 上安裝此產品的 64 位版本。"
-
-msgctxt "x86VersionRequired"
-msgid ""
-"You need to install the 32-bit version of this product on 32-bit Windows."
-msgstr "您需要在 32 位 Windows 上安裝 32 位版本的這種產品。"
-
-msgctxt "x86VersionWarning"
-msgid ""
-"You are about to install the 32-bit version on a 64-bit operating system. We"
-" recommend using the 64-bit version for better performance. You can download"
-" the 64-bit installation package from http://mixxx.org/download/"
-msgstr "您將要在 64 位作業系統上安裝 32 位版本。我們推薦使用 64 位版本的更好的性能。你可以從 http://mixxx.org/download/ 下載 64 位安裝包"
-
-msgctxt "XPWarning"
-msgid ""
-"You are installing Mixxx on an outdated operating system. Some functions may"
-" not work well or at all. We recommend upgrading your operating system."
-msgstr "你過時的作業系統上安裝 Mixxx。好或根本,某些功能可能無法工作。我們建議升級您的作業系統。"
-
-msgctxt "bitWidthMismatch32"
-msgid ""
-"You are about to install the 32-bit version but a 64-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 64-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "您將要安裝的 32 位版本,但已經安裝了一個 64 位。這可能導致意外的行為。首先,請卸載現有的 Mixxx 首先,請卸載現有的 Mixxx 或下載 64 位安裝套裝軟體來升級 (除非你知道你在做什麼)。"
-
-msgctxt "bitWidthMismatch64"
-msgid ""
-"You are about to install the 64-bit version but a 32-bit one is already "
-"installed. This can lead to undesired behavior. Please un-install the "
-"existing Mixxx first, or download the 32-bit installation package to upgrade"
-" (unless you know exactly what you are doing.)"
-msgstr "您將要安裝 64 位版本,但已經安裝了一個 32 位。這可能導致意外的行為。首先,請卸載現有的 Mixxx 首先,請卸載現有的 Mixxx 或下載 32 位安裝套裝軟體來升級 (除非你知道你在做什麼)。"
-
-msgctxt "OlderVersionFound"
-msgid ""
-"An older version of Mixxx has been detected. As we changed installer, we can"
-" not smoothly upgrade. Please uninstall older version before installing this"
-" one."
-msgstr "檢測到舊版本的 Mixxx。當我們改變了安裝程式,我們不能順利升級。請安裝這個之前,卸載舊版本。"
-
-msgctxt "VCredistNotFound"
-msgid ""
-"Installer was not able to find Microsoft Visual C++ 2015 Redistributable on "
-"this system. This is likely an installer bug that should be reported to "
-"Mixxx developers."
-msgstr "安裝程式在作業系統裏找不到Microsoft Visual C++ 2015 Redistributable。有可能是安裝程式的錯誤,請回報給Mixxx開發者。 "
-
-#. Custom Warning Dialog
-msgctxt "WarningDlgTitle"
-msgid "{\\WixUI_Font_Title}Warning"
-msgstr "{\\WixUI_Font_Title}警告"
-
-#. Custom exit dialog
-msgctxt "StartOnExit"
-msgid "Launch Mixxx when setup exits."
-msgstr "當離開設定時,請登入Mixxx. "
-
-#. Features translations
-msgctxt "FeatureCompleteDescription"
-msgid "The complete package."
-msgstr "完整的包。"
-
-msgctxt "FeatureMainProgramTitle"
-msgid "Core application"
-msgstr "核心應用程式"
-
-msgctxt "FeatureMainProgramDescription"
-msgid "The core Mixxx application including controller presets."
-msgstr "核心 Mixxx 應用程式包括控制器預設。"
-
-msgctxt "FeaturePDBTitle"
-msgid "PDB debug files"
-msgstr "PDB 除錯訊息檔"
-
-msgctxt "FeaturePDBDescription"
-msgid ""
-"Install Mixxx PDB files to use with a debugger. This is useful to debug "
-"Mixxx and provide readable backtraces to the development team."
-msgstr "安裝Mixxx PDB 檔好讓除錯器使用。這工具對於除錯及提供開發團隊可讀性的追蹤報告非常有幫助。"
-
-msgctxt "FeatureDesktopShortcutTitle"
-msgid "Desktop Shortcut"
-msgstr "桌面快捷方式"
-
-msgctxt "FeatureDesktopShortcutDescription"
-msgid "Add a shortcut to Mixxx on your desktop"
-msgstr "添加 Mixxx 在您的桌面上的快捷方式"
-
-msgctxt "FeatureManualTitle"
-msgid "User Manual"
-msgstr "使用者手冊"
-
-msgctxt "FeatureManualDescription"
-msgid ""
-"The Mixxx user manual in PDF form, also available at "
-"http://mixxx.org/manual/"
-msgstr "MIxxx使用者操作手冊採PDF格式,在官網http://mixxx.org/manual/上也有放。"
-
-msgctxt "FeatureTranslationsTitle"
-msgid "Translations"
-msgstr "翻譯"
-
-msgctxt "FeatureTranslationsDescription"
-msgid ""
-"Resource files that allow Mixxx to display in alternate languages, other "
-"than US english"
-msgstr "資源檔可允許Mixxx呈現其他的語言,有別於US 英文"
-
-#. Bootstrapper
-msgctxt "Caption"
-msgid "[WixBundleName] Setup"
-msgstr "[WixBundleName] 設定"
-
-msgctxt "Title"
-msgid "[WixBundleName]"
-msgstr "[WixBundleName]"
-
-msgctxt "ConfirmCancelMessage"
-msgid "Are you sure you want to cancel?"
-msgstr "你確定將要取消嗎?"
-
-msgctxt "ExecuteUpgradeRelatedBundleMessage"
-msgid "Previous version"
-msgstr "之前的版本"
-
-msgctxt "HelpHeader"
-msgid "Setup Help"
-msgstr "設定的輔助說明"
-
-msgctxt "HelpText"
-msgid ""
-"/install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or\n"
-" creates a complete local copy of the bundle in directory.\n"
-" Install is the default.\n"
-"\n"
-" /passive | /quiet - displays minimal user interface with no prompts or displays no user interface\n"
-" and no prompts. By default user interface and all prompts are displayed.\n"
-"\n"
-" /norestart - suppress any attempts to restart. By default user interface will prompt before restart.\n"
-"\n"
-" /log log.txt - logs to a specific file. By default a log file is created in %TEMP%."
-msgstr ""
-
-msgctxt "HelpCloseButton"
-msgid "&Close"
-msgstr "&關閉"
-
-msgctxt "InstallHeader"
-msgid "Welcome"
-msgstr "歡迎"
-
-msgctxt "InstallMessage"
-msgid ""
-"Setup will install Mixxx on your computer.\n"
-"It will first install required third party libraries, then Mixxx itself.\n"
-"Click Install to continue or Close to exit."
-msgstr ""
-
-msgctxt "InstallVersion"
-msgid "Version [WixBundleVersion]"
-msgstr ""
-
-msgctxt "InstallOptionsButton"
-msgid "&Options"
-msgstr "&選項"
-
-msgctxt "InstallInstallButton"
-msgid "&Install"
-msgstr ""
-
-msgctxt "InstallCloseButton"
-msgid "&Close"
-msgstr "&關閉"
-
-msgctxt "OptionsHeader"
-msgid "Setup Options"
-msgstr "安裝選項"
-
-msgctxt "OptionsLocationLabel"
-msgid "Install location:"
-msgstr "安裝位址:"
-
-msgctxt "OptionsBrowseButton"
-msgid "&Browse"
-msgstr "&瀏灠"
-
-msgctxt "OptionsOkButton"
-msgid "&OK"
-msgstr "&OK"
-
-msgctxt "OptionsCancelButton"
-msgid "&Cancel"
-msgstr "&取消"
-
-msgctxt "FilesInUseHeader"
-msgid "Files In Use"
-msgstr ""
-
-msgctxt "FilesInUseLabel"
-msgid "The following applications are using files that need to be updated:"
-msgstr ""
-
-msgctxt "FilesInUseCloseRadioButton"
-msgid "Close the &applications and attempt to restart them."
-msgstr ""
-
-msgctxt "FilesInUseDontCloseRadioButton"
-msgid "&Do not close applications. A reboot will be required."
-msgstr ""
-
-msgctxt "FilesInUseOkButton"
-msgid "&OK"
-msgstr "&OK"
-
-msgctxt "FilesInUseCancelButton"
-msgid "&Cancel"
-msgstr "&取消"
-
-msgctxt "ProgressHeader"
-msgid "Setup Progress"
-msgstr ""
-
-msgctxt "ProgressLabel"
-msgid "Processing:"
-msgstr ""
-
-msgctxt "OverallProgressPackageText"
-msgid "Initializing..."
-msgstr "初始化..."
-
-msgctxt "ProgressCancelButton"
-msgid "&Cancel"
-msgstr "&取消"
-
-msgctxt "ModifyHeader"
-msgid "Modify Setup"
-msgstr ""
-
-msgctxt "ModifyRepairButton"
-msgid "&Repair"
-msgstr "&修復"
-
-msgctxt "ModifyUninstallButton"
-msgid "&Uninstall"
-msgstr "&解除安裝"
-
-msgctxt "ModifyCloseButton"
-msgid "&Close"
-msgstr "&關閉"
-
-msgctxt "SuccessHeader"
-msgid "Setup Successful"
-msgstr ""
-
-msgctxt "SuccessInstallHeader"
-msgid "Mixxx installation has been successful"
-msgstr "Mixxx 已成功安裝"
-
-msgctxt "SuccessRepairHeader"
-msgid "Mixxx repair has been successful"
-msgstr "Mixxx 已成功修復"
-
-msgctxt "SuccessUninstallHeader"
-msgid "Mixxx uninstall has been successful"
-msgstr "Mixxx 已成功解除安裝"
-
-msgctxt "SuccessLaunchButton"
-msgid "&Launch"
-msgstr "&登入程式"
-
-msgctxt "SuccessRestartText"
-msgid "You must restart your computer before you can use the software."
-msgstr "您必須要在使用軟體前重新啟動電腦"
-
-msgctxt "SuccessRestartButton"
-msgid "&Restart"
-msgstr "&重新啟動"
-
-msgctxt "SuccessCloseButton"
-msgid "&Close"
-msgstr "&關閉"
-
-msgctxt "FailureHeader"
-msgid "Setup Failed"
-msgstr ""
-
-msgctxt "FailureInstallHeader"
-msgid "Mixxx installation failed"
-msgstr "Mixxx 安裝失敗"
-
-msgctxt "FailureRepairHeader"
-msgid "Mixxx repair failed"
-msgstr "Mixxx 修復失敗"
-
-msgctxt "FailureUninstallHeader"
-msgid "Mixxx uninstall failed"
-msgstr "Mixxx 解除安裝失敗"
-
-msgctxt "FailureHyperlinkLogText"
-msgid ""
-"One or more issues caused the setup to fail. Please fix the issues and then "
-"retry setup. For more information see the log file."
-msgstr ""
-
-msgctxt "FailureRestartText"
-msgid ""
-"You must restart your computer to complete the rollback of the software."
-msgstr ""
-
-msgctxt "FailureRestartButton"
-msgid "&Restart"
-msgstr "&重新啟動"
-
-msgctxt "FailureCloseButton"
-msgid "&Close"
-msgstr "&關閉"
diff --git a/build/wix/ProductID.wxi.in b/build/wix/ProductID.wxi.in
deleted file mode 100644
index 216e182e0a5..00000000000
--- a/build/wix/ProductID.wxi.in
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/build/wix/README.md b/build/wix/README.md
deleted file mode 100644
index 5e52a51d9b2..00000000000
--- a/build/wix/README.md
+++ /dev/null
@@ -1,33 +0,0 @@
-To build the windows installer package
-==========================================
-
-Mixxx installation package is built with Wix Toolset v3.9+
-All the build logic is called from Sconscript, which calls Wix Toolset executables
-to first build a multilingual MSI package for Mixxx, then create an executable
-bundle embedding Visual Studio C++ redistributables and Mixxx's MSI.
-
-`scons mixxx makerelease`
-
-To test your multilingual package
-=================================
-
-* MSI package: `msiexec /i mixxx-full-name.msi ProductLanguage=xxxx`
-* EXE bundle: `mixxx-full-name.exe -lang xxxx`
-
-where xxxx is a LCID in decimal notation taken from http://www.science.co.il/Language/Locale-codes.asp and available as a translation in build/wix/Localization
-
-Bootstrapper (bundle) command line options
-==========================================
-```
--q, -quiet, -s, -silent = silent install
--passive = progress bar only install
--norestart = suppress any restarts
--forcerestart = restart no matter what (I don't know why this is still around)
--promptrestart = prompt if a restart is required (default)
--layout = create a local image of the bootstrapper (i.e. download files so they can be burned to DVD)
--l, -log = log to a specific file (default is controlled by bundle developer)
--uninstall = uninstall
--repair = repair (or install if not installed)
--package,-update = install (default if no -uninstall or -repair)
--lang xxxx = apply language with lcid xxxx to bootstrapper
-```
diff --git a/build/wix/WiLangId.vbs b/build/wix/WiLangId.vbs
deleted file mode 100644
index 582f6dbf6ba..00000000000
--- a/build/wix/WiLangId.vbs
+++ /dev/null
@@ -1,164 +0,0 @@
-' Windows Installer utility to report the language and codepage for a package
-' For use with Windows Scripting Host, CScript.exe or WScript.exe
-' Copyright (c) Microsoft Corporation. All rights reserved.
-' Demonstrates the access of language and codepage values
-'
-Option Explicit
-
-Const msiOpenDatabaseModeReadOnly = 0
-Const msiOpenDatabaseModeTransact = 1
-Const ForReading = 1
-Const ForWriting = 2
-Const TristateFalse = 0
-
-Const msiViewModifyInsert = 1
-Const msiViewModifyUpdate = 2
-Const msiViewModifyAssign = 3
-Const msiViewModifyReplace = 4
-Const msiViewModifyDelete = 6
-
-Dim argCount:argCount = Wscript.Arguments.Count
-If argCount > 0 Then If InStr(1, Wscript.Arguments(0), "?", vbTextCompare) > 0 Then argCount = 0
-If (argCount = 0) Then
- message = "Windows Installer utility to manage language and codepage values for a package." &_
- vbNewLine & "The package language is a summary information property that designates the" &_
- vbNewLine & " primary language and any language transforms that are available, comma delim." &_
- vbNewLine & "The ProductLanguage in the database Property table is the language that is" &_
- vbNewLine & " registered for the product and determines the language used to load resources." &_
- vbNewLine & "The codepage is the ANSI codepage of the database strings, 0 if all ASCII data," &_
- vbNewLine & " and must represent the text data to avoid loss when persisting the database." &_
- vbNewLine & "The 1st argument is the path to MSI database (installer package)" &_
- vbNewLine & "To update a value, the 2nd argument contains the keyword and the 3rd the value:" &_
- vbNewLine & " Package {base LangId optionally followed by list of language transforms}" &_
- vbNewLine & " Product {LangId of the product (could be updated by language transforms)}" &_
- vbNewLine & " Codepage {ANSI codepage of text data (use with caution when text exists!)}" &_
- vbNewLine &_
- vbNewLine & "Copyright (C) Microsoft Corporation. All rights reserved."
- Wscript.Echo message
- Wscript.Quit 1
-End If
-
-' Connect to Windows Installer object
-On Error Resume Next
-Dim installer : Set installer = Nothing
-Set installer = Wscript.CreateObject("WindowsInstaller.Installer") : CheckError
-
-
-' Open database
-Dim databasePath:databasePath = Wscript.Arguments(0)
-Dim openMode : If argCount >= 3 Then openMode = msiOpenDatabaseModeTransact Else openMode = msiOpenDatabaseModeReadOnly
-Dim database : Set database = installer.OpenDatabase(databasePath, openMode) : CheckError
-
-' Update value if supplied
-If argCount >= 3 Then
- Dim value:value = Wscript.Arguments(2)
- Select Case UCase(Wscript.Arguments(1))
- Case "PACKAGE" : SetPackageLanguage database, value
- Case "PRODUCT" : SetProductLanguage database, value
- Case "CODEPAGE" : SetDatabaseCodepage database, value
- Case Else : Fail "Invalid value keyword"
- End Select
- CheckError
-End If
-
-' Extract language info and compose report message
-Dim message:message = "Package language = " & PackageLanguage(database) &_
- ", ProductLanguage = " & ProductLanguage(database) &_
- ", Database codepage = " & DatabaseCodepage(database)
-database.Commit : CheckError ' no effect if opened ReadOnly
-Set database = nothing
-Wscript.Echo message
-Wscript.Quit 0
-
-' Get language list from summary information
-Function PackageLanguage(database)
- On Error Resume Next
- Dim sumInfo : Set sumInfo = database.SummaryInformation(0) : CheckError
- Dim template : template = sumInfo.Property(7) : CheckError
- Dim iDelim:iDelim = InStr(1, template, ";", vbTextCompare)
- If iDelim = 0 Then template = "Not specified!"
- PackageLanguage = Right(template, Len(template) - iDelim)
- If Len(PackageLanguage) = 0 Then PackageLanguage = "0"
-End Function
-
-' Get ProductLanguge property from Property table
-Function ProductLanguage(database)
- On Error Resume Next
- Dim view : Set view = database.OpenView("SELECT `Value` FROM `Property` WHERE `Property` = 'ProductLanguage'")
- view.Execute : CheckError
- Dim record : Set record = view.Fetch : CheckError
- If record Is Nothing Then ProductLanguage = "Not specified!" Else ProductLanguage = record.IntegerData(1)
-End Function
-
-' Get ANSI codepage of database text data
-Function DatabaseCodepage(database)
- On Error Resume Next
- Dim WshShell : Set WshShell = Wscript.CreateObject("Wscript.Shell") : CheckError
- Dim tempPath:tempPath = WshShell.ExpandEnvironmentStrings("%TEMP%") : CheckError
- database.Export "_ForceCodepage", tempPath, "codepage.idt" : CheckError
- Dim fileSys : Set fileSys = CreateObject("Scripting.FileSystemObject") : CheckError
- Dim file : Set file = fileSys.OpenTextFile(tempPath & "\codepage.idt", ForReading, False, TristateFalse) : CheckError
- file.ReadLine ' skip column name record
- file.ReadLine ' skip column defn record
- DatabaseCodepage = file.ReadLine
- file.Close
- Dim iDelim:iDelim = InStr(1, DatabaseCodepage, vbTab, vbTextCompare)
- If iDelim = 0 Then Fail "Failure in codepage export file"
- DatabaseCodepage = Left(DatabaseCodepage, iDelim - 1)
- fileSys.DeleteFile(tempPath & "\codepage.idt")
-End Function
-
-' Set ProductLanguge property in Property table
-Sub SetProductLanguage(database, language)
- On Error Resume Next
- If Not IsNumeric(language) Then Fail "ProductLanguage must be numeric"
- Dim view : Set view = database.OpenView("SELECT `Property`,`Value` FROM `Property`")
- view.Execute : CheckError
- Dim record : Set record = installer.CreateRecord(2)
- record.StringData(1) = "ProductLanguage"
- record.StringData(2) = CStr(language)
- view.Modify msiViewModifyAssign, record : CheckError
-End Sub
-
-' Set ANSI codepage of database text data
-Sub SetDatabaseCodepage(database, codepage)
- On Error Resume Next
- If Not IsNumeric(codepage) Then Fail "Codepage must be numeric"
- Dim WshShell : Set WshShell = Wscript.CreateObject("Wscript.Shell") : CheckError
- Dim tempPath:tempPath = WshShell.ExpandEnvironmentStrings("%TEMP%") : CheckError
- Dim fileSys : Set fileSys = CreateObject("Scripting.FileSystemObject") : CheckError
- Dim file : Set file = fileSys.OpenTextFile(tempPath & "\codepage.idt", ForWriting, True, TristateFalse) : CheckError
- file.WriteLine ' dummy column name record
- file.WriteLine ' dummy column defn record
- file.WriteLine codepage & vbTab & "_ForceCodepage"
- file.Close : CheckError
- database.Import tempPath, "codepage.idt" : CheckError
- fileSys.DeleteFile(tempPath & "\codepage.idt")
-End Sub
-
-' Set language list in summary information
-Sub SetPackageLanguage(database, language)
- On Error Resume Next
- Dim sumInfo : Set sumInfo = database.SummaryInformation(1) : CheckError
- Dim template : template = sumInfo.Property(7) : CheckError
- Dim iDelim:iDelim = InStr(1, template, ";", vbTextCompare)
- Dim platform : If iDelim = 0 Then platform = ";" Else platform = Left(template, iDelim)
- sumInfo.Property(7) = platform & language
- sumInfo.Persist : CheckError
-End Sub
-
-Sub CheckError
- Dim message, errRec
- If Err = 0 Then Exit Sub
- message = Err.Source & " " & Hex(Err) & ": " & Err.Description
- If Not installer Is Nothing Then
- Set errRec = installer.LastErrorRecord
- If Not errRec Is Nothing Then message = message & vbNewLine & errRec.FormatText
- End If
- Fail message
-End Sub
-
-Sub Fail(message)
- Wscript.Echo message
- Wscript.Quit 2
-End Sub
diff --git a/build/wix/WiSubStg.vbs b/build/wix/WiSubStg.vbs
deleted file mode 100644
index f7ed6988a17..00000000000
--- a/build/wix/WiSubStg.vbs
+++ /dev/null
@@ -1,101 +0,0 @@
-' Windows Installer utility to add a transform or nested database as a substorage
-' For use with Windows Scripting Host, CScript.exe or WScript.exe
-' Copyright (c) Microsoft Corporation. All rights reserved.
-' Demonstrates the use of the database _Storages table
-'
-Option Explicit
-
-Const msiOpenDatabaseModeReadOnly = 0
-Const msiOpenDatabaseModeTransact = 1
-Const msiOpenDatabaseModeCreate = 3
-
-Const msiViewModifyInsert = 1
-Const msiViewModifyUpdate = 2
-Const msiViewModifyAssign = 3
-Const msiViewModifyReplace = 4
-Const msiViewModifyDelete = 6
-
-Const ForAppending = 8
-Const ForReading = 1
-Const ForWriting = 2
-Const TristateTrue = -1
-
-' Check arg count, and display help if argument not present or contains ?
-Dim argCount:argCount = Wscript.Arguments.Count
-If argCount > 0 Then If InStr(1, Wscript.Arguments(0), "?", vbTextCompare) > 0 Then argCount = 0
-If (argCount = 0) Then
- Wscript.Echo "Windows Installer database substorage management utility" &_
- vbNewLine & " 1st argument is the path to MSI database (installer package)" &_
- vbNewLine & " 2nd argument is the path to a transform or database to import" &_
- vbNewLine & " If the 2nd argument is missing, substorages will be listed" &_
- vbNewLine & " 3rd argument is optional, the name used for the substorage" &_
- vbNewLine & " If the 3rd argument is missing, the file name is used" &_
- vbNewLine & " To remove a substorage, use /D or -D as the 2nd argument" &_
- vbNewLine & " followed by the name of the substorage to remove" &_
- vbNewLine &_
- vbNewLine & "Copyright (C) Microsoft Corporation. All rights reserved."
- Wscript.Quit 1
-End If
-
-' Connect to Windows Installer object
-On Error Resume Next
-Dim installer : Set installer = Nothing
-Set installer = Wscript.CreateObject("WindowsInstaller.Installer") : CheckError
-
-' Evaluate command-line arguments and set open and update modes
-Dim databasePath:databasePath = Wscript.Arguments(0)
-Dim openMode : If argCount = 1 Then openMode = msiOpenDatabaseModeReadOnly Else openMode = msiOpenDatabaseModeTransact
-Dim updateMode : If argCount > 1 Then updateMode = msiViewModifyAssign 'Either insert or replace existing row
-Dim importPath : If argCount > 1 Then importPath = Wscript.Arguments(1)
-Dim storageName : If argCount > 2 Then storageName = Wscript.Arguments(2)
-If storageName = Empty And importPath <> Empty Then storageName = Right(importPath, Len(importPath) - InStrRev(importPath, "\",-1,vbTextCompare))
-If UCase(importPath) = "/D" Or UCase(importPath) = "-D" Then updateMode = msiViewModifyDelete : importPath = Empty 'substorage will be deleted if no input data
-
-' Open database and create a view on the _Storages table
-Dim sqlQuery : Select Case updateMode
- Case msiOpenDatabaseModeReadOnly: sqlQuery = "SELECT `Name` FROM _Storages"
- Case msiViewModifyAssign: sqlQuery = "SELECT `Name`,`Data` FROM _Storages"
- Case msiViewModifyDelete: sqlQuery = "SELECT `Name` FROM _Storages WHERE `Name` = ?"
-End Select
-Dim database : Set database = installer.OpenDatabase(databasePath, openMode) : CheckError
-Dim view : Set view = database.OpenView(sqlQuery)
-Dim record
-
-If openMode = msiOpenDatabaseModeReadOnly Then 'If listing storages, simply fetch all records
- Dim message, name
- view.Execute : CheckError
- Do
- Set record = view.Fetch
- If record Is Nothing Then Exit Do
- name = record.StringData(1)
- If message = Empty Then message = name Else message = message & vbNewLine & name
- Loop
- Wscript.Echo message
-Else 'If adding a storage, insert a row, else if removing a storage, delete the row
- Set record = installer.CreateRecord(2)
- record.StringData(1) = storageName
- view.Execute record : CheckError
- If importPath <> Empty Then 'Insert storage - copy data into stream
- record.SetStream 2, importPath : CheckError
- Else 'Delete storage, fetch first to provide better error message if missing
- Set record = view.Fetch
- If record Is Nothing Then Wscript.Echo "Storage not present:", storageName : Wscript.Quit 2
- End If
- view.Modify updateMode, record : CheckError
- database.Commit : CheckError
- Set view = Nothing
- Set database = Nothing
- CheckError
-End If
-
-Sub CheckError
- Dim message, errRec
- If Err = 0 Then Exit Sub
- message = Err.Source & " " & Hex(Err) & ": " & Err.Description
- If Not installer Is Nothing Then
- Set errRec = installer.LastErrorRecord
- If Not errRec Is Nothing Then message = message & vbNewLine & errRec.FormatText
- End If
- Wscript.Echo message
- Wscript.Quit 2
-End Sub
diff --git a/build/wix/bundle/bundle.wxs b/build/wix/bundle/bundle.wxs
deleted file mode 100644
index 21d101b587b..00000000000
--- a/build/wix/bundle/bundle.wxs
+++ /dev/null
@@ -1,118 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
- VersionNT64
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/build/wix/bundle/bundletheme.xml b/build/wix/bundle/bundletheme.xml
deleted file mode 100644
index 6418108eabc..00000000000
--- a/build/wix/bundle/bundletheme.xml
+++ /dev/null
@@ -1,82 +0,0 @@
-
-
- #(loc.Caption)
- Segoe UI
- Segoe UI
- Segoe UI
- Segoe UI
- Segoe UI
-
-
- #(loc.HelpHeader)
- #(loc.HelpText)
-
-
-
-
- #(loc.InstallHeader)
- #(loc.InstallMessage)
- #(loc.InstallVersion)
-
-
-
-
-
-
- #(loc.OptionsHeader)
- #(loc.OptionsLocationLabel)
-
-
-
-
-
-
-
- #(loc.FilesInUseHeader)
- #(loc.FilesInUseLabel)
-
-
-
-
-
-
-
-
- #(loc.ProgressHeader)
- #(loc.ProgressLabel)
- #(loc.OverallProgressPackageText)
-
-
-
-
-
-
- #(loc.ModifyHeader)
-
-
-
-
-
-
- #(loc.SuccessHeader)
- #(loc.SuccessInstallHeader)
- #(loc.SuccessRepairHeader)
- #(loc.SuccessUninstallHeader)
-
- #(loc.SuccessRestartText)
-
-
-
-
-
- #(loc.FailureHeader)
- #(loc.FailureInstallHeader)
- #(loc.FailureRepairHeader)
- #(loc.FailureUninstallHeader)
- #(loc.FailureHyperlinkLogText)
-
- #(loc.FailureRestartText)
-
-
-
-
diff --git a/build/wix/mixxx.wxs b/build/wix/mixxx.wxs
deleted file mode 100644
index 6931b591ac6..00000000000
--- a/build/wix/mixxx.wxs
+++ /dev/null
@@ -1,469 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- = 601)]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- NOT OLDERINSTALLEXISTS
-
-
- VCREDISTINSTALLED
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- OTHERBITWIDTHINSTALLED
- 1
-
-
-
-
-
diff --git a/build/wix/only-dll.xslt b/build/wix/only-dll.xslt
deleted file mode 100644
index e130251216f..00000000000
--- a/build/wix/only-dll.xslt
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/build/wix/only-pdb.xslt b/build/wix/only-pdb.xslt
deleted file mode 100644
index 8dabc4e0aa8..00000000000
--- a/build/wix/only-pdb.xslt
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/build/wix/subdirs/_EMPTY_ b/build/wix/subdirs/_EMPTY_
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/build/certificates/README.md b/packaging/certificates/README.md
similarity index 100%
rename from build/certificates/README.md
rename to packaging/certificates/README.md
diff --git a/build/certificates/downloads-hostgator.mixxx.org.key b/packaging/certificates/downloads-hostgator.mixxx.org.key
similarity index 100%
rename from build/certificates/downloads-hostgator.mixxx.org.key
rename to packaging/certificates/downloads-hostgator.mixxx.org.key
diff --git a/build/certificates/downloads-hostgator.mixxx.org.key.pub b/packaging/certificates/downloads-hostgator.mixxx.org.key.pub
similarity index 100%
rename from build/certificates/downloads-hostgator.mixxx.org.key.pub
rename to packaging/certificates/downloads-hostgator.mixxx.org.key.pub
diff --git a/cmake/macos_developer_id_codesign_certificate.p12.enc b/packaging/certificates/macos_developer_id_codesign_certificate.p12.enc
similarity index 100%
rename from cmake/macos_developer_id_codesign_certificate.p12.enc
rename to packaging/certificates/macos_developer_id_codesign_certificate.p12.enc
diff --git a/build/certificates/windows_sectigo_codesign_certificate.pfx.enc b/packaging/certificates/windows_sectigo_codesign_certificate.pfx.enc
similarity index 100%
rename from build/certificates/windows_sectigo_codesign_certificate.pfx.enc
rename to packaging/certificates/windows_sectigo_codesign_certificate.pfx.enc
diff --git a/cmake/macos_build_environment b/packaging/macos/build_environment
similarity index 100%
rename from cmake/macos_build_environment
rename to packaging/macos/build_environment
diff --git a/cmake/macos_bundle.plist.in b/packaging/macos/bundle.plist.in
similarity index 100%
rename from cmake/macos_bundle.plist.in
rename to packaging/macos/bundle.plist.in
diff --git a/build/osx/entitlements.plist b/packaging/macos/entitlements.plist
similarity index 100%
rename from build/osx/entitlements.plist
rename to packaging/macos/entitlements.plist
diff --git a/cmake/windows_build_environment_name b/packaging/windows/build_environment
similarity index 100%
rename from cmake/windows_build_environment_name
rename to packaging/windows/build_environment
diff --git a/build/wix/LICENSE.rtf b/packaging/wix/LICENSE.rtf
similarity index 98%
rename from build/wix/LICENSE.rtf
rename to packaging/wix/LICENSE.rtf
index be932790aa2..4d8ae1dd204 100644
--- a/build/wix/LICENSE.rtf
+++ b/packaging/wix/LICENSE.rtf
@@ -2073,4 +2073,4 @@ Moreover, you may apply this exception to a modified version of the Library, pro
Furthermore, you are not required to apply this additional permission to a modified version of the Library.\par
\par
}
-
\ No newline at end of file
+
diff --git a/build/wix/images/banner.bmp b/packaging/wix/images/banner.bmp
similarity index 100%
rename from build/wix/images/banner.bmp
rename to packaging/wix/images/banner.bmp
diff --git a/build/wix/images/banner.xcf b/packaging/wix/images/banner.xcf
similarity index 100%
rename from build/wix/images/banner.xcf
rename to packaging/wix/images/banner.xcf
diff --git a/build/wix/images/bundle-sidebar.png b/packaging/wix/images/bundle-sidebar.png
similarity index 100%
rename from build/wix/images/bundle-sidebar.png
rename to packaging/wix/images/bundle-sidebar.png
diff --git a/build/wix/images/bundle-sidebar.xcf b/packaging/wix/images/bundle-sidebar.xcf
similarity index 100%
rename from build/wix/images/bundle-sidebar.xcf
rename to packaging/wix/images/bundle-sidebar.xcf
diff --git a/build/wix/images/bundle_background_black.png b/packaging/wix/images/bundle_background_black.png
similarity index 100%
rename from build/wix/images/bundle_background_black.png
rename to packaging/wix/images/bundle_background_black.png
diff --git a/build/wix/images/bundle_background_black.xcf b/packaging/wix/images/bundle_background_black.xcf
similarity index 100%
rename from build/wix/images/bundle_background_black.xcf
rename to packaging/wix/images/bundle_background_black.xcf
diff --git a/build/wix/images/dialog.bmp b/packaging/wix/images/dialog.bmp
similarity index 100%
rename from build/wix/images/dialog.bmp
rename to packaging/wix/images/dialog.bmp
diff --git a/build/wix/images/dialog.xcf b/packaging/wix/images/dialog.xcf
similarity index 100%
rename from build/wix/images/dialog.xcf
rename to packaging/wix/images/dialog.xcf
diff --git a/build/wix/images/manual.ico b/packaging/wix/images/manual.ico
similarity index 100%
rename from build/wix/images/manual.ico
rename to packaging/wix/images/manual.ico
diff --git a/build/wix/images/warning.ico b/packaging/wix/images/warning.ico
similarity index 100%
rename from build/wix/images/warning.ico
rename to packaging/wix/images/warning.ico
diff --git a/tools/macos_buildenv.sh b/tools/macos_buildenv.sh
index 5991ab08df5..d077362eea6 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
diff --git a/tools/windows_buildenv.bat b/tools/windows_buildenv.bat
index af9e7050267..e27ff8bfd66 100644
--- a/tools/windows_buildenv.bat
+++ b/tools/windows_buildenv.bat
@@ -92,7 +92,7 @@ EXIT /B 0
:READ_ENVNAME
- SET /P BUILDENV_NAME=<%MIXXX_ROOT%\cmake\windows_build_environment_name
+ 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%