diff options
Diffstat (limited to 'scripts/build.py')
-rwxr-xr-x | scripts/build.py | 51 |
1 files changed, 37 insertions, 14 deletions
diff --git a/scripts/build.py b/scripts/build.py index 11b7e0a387..6fd8d976b2 100755 --- a/scripts/build.py +++ b/scripts/build.py @@ -89,21 +89,29 @@ def get_arguments(): action='store_true', default=False) parser.add_argument('--no-zip', help='Skip creation of 7zip files for install and developer package', action='store_true', default=False) + parser.add_argument('--with-tests', help='Enable building of tests', + action='store_true', default=False) parser.add_argument('--add-make-arg', help='Passes the argument to the make tool.', action='append', dest='make_args', default=[]) + parser.add_argument('--add-config', help=('Adds the argument to the CMake configuration call. ' + 'Use "--add-config=-DSOMEVAR=SOMEVALUE" if the argument begins with a dash.'), + action='append', dest='config_args', default=[]) + parser.add_argument('--zip-infix', help='Adds an infix to generated zip files, use e.g. for a build number.', + default='') return parser.parse_args() def build_qtcreator(args, paths): if not os.path.exists(paths.build): os.makedirs(paths.build) prefix_paths = [paths.qt] - if args.llvm_path: - prefix_paths += [args.llvm_path] + if paths.llvm: + prefix_paths += [paths.llvm] if paths.elfutils: prefix_paths += [paths.elfutils] build_type = 'Debug' if args.debug else 'Release' with_docs_str = 'OFF' if args.no_docs else 'ON' build_date_option = 'OFF' if args.no_build_date else 'ON' + test_option = 'ON' if args.with_tests else 'OFF' cmake_args = ['cmake', '-DCMAKE_PREFIX_PATH=' + ';'.join(prefix_paths), '-DCMAKE_BUILD_TYPE=' + build_type, @@ -112,7 +120,7 @@ def build_qtcreator(args, paths): '-DBUILD_DEVELOPER_DOCS=' + with_docs_str, '-DBUILD_EXECUTABLE_SDKTOOL=OFF', '-DCMAKE_INSTALL_PREFIX=' + paths.install, - '-DWITH_TESTS=OFF', + '-DWITH_TESTS=' + test_option, '-G', 'Ninja'] if args.python3: @@ -122,9 +130,10 @@ def build_qtcreator(args, paths): # even if MSVC is first mentioned in the PATH... # TODO would be nicer if we only did this if cl.exe is indeed first in the PATH if common.is_windows_platform(): - cmake_args += ['-DCMAKE_C_COMPILER=cl', - '-DCMAKE_CXX_COMPILER=cl', - '-DBUILD_EXECUTABLE_WIN32INTERRUPT=OFF', + if not os.environ.get('CC') and not os.environ.get('CXX'): + cmake_args += ['-DCMAKE_C_COMPILER=cl', + '-DCMAKE_CXX_COMPILER=cl'] + cmake_args += ['-DBUILD_EXECUTABLE_WIN32INTERRUPT=OFF', '-DBUILD_EXECUTABLE_WIN64INTERRUPT=OFF', '-DBUILD_LIBRARY_QTCREATORCDBEXT=OFF'] if args.python_path: @@ -142,6 +151,8 @@ def build_qtcreator(args, paths): '-DIDE_REVISION_STR=' + ide_revision, '-DIDE_REVISION_URL=https://code.qt.io/cgit/qt-creator/qt-creator.git/log/?id=' + ide_revision] + cmake_args += args.config_args + common.check_print_call(cmake_args + [paths.src], paths.build) build_args = ['cmake', '--build', '.'] if args.make_args: @@ -200,31 +211,42 @@ def deploy_qt(args, paths): qt_plugins = os.path.join(paths.qt, 'plugins') qt_imports = os.path.join(paths.qt, 'imports') qt_qml = os.path.join(paths.qt, 'qml') + env = dict(os.environ) + if paths.llvm: + env['LLVM_INSTALL_DIR'] = paths.llvm common.check_print_call([script, app, qt_bins, qt_translations, qt_plugins, qt_imports, qt_qml], - paths.build) + paths.build, + env=env) else: cmd_args = ['python', '-u', os.path.join(paths.src, 'scripts', 'deployqt.py'), '-i'] if paths.elfutils: cmd_args.extend(['--elfutils-path', paths.elfutils]) + if paths.llvm: + cmd_args.extend(['--llvm-path', paths.llvm]) exe = os.path.join(paths.install, 'bin', args.app_target) common.check_print_call(cmd_args + [exe, os.path.join(paths.qt, 'bin', 'qmake')], paths.build) def package_qtcreator(args, paths): if not args.no_zip: - common.check_print_call(['7z', 'a', '-mmt2', os.path.join(paths.result, 'qtcreator.7z'), '*'], + common.check_print_call(['7z', 'a', '-mmt2', + os.path.join(paths.result, 'qtcreator' + args.zip_infix + '.7z'), + '*'], paths.install) common.check_print_call(['7z', 'a', '-mmt2', - os.path.join(paths.result, 'qtcreator_dev.7z'), '*'], + os.path.join(paths.result, 'qtcreator' + args.zip_infix + '_dev.7z'), + '*'], paths.dev_install) if common.is_windows_platform(): common.check_print_call(['7z', 'a', '-mmt2', - os.path.join(paths.result, 'wininterrupt.7z'), '*'], + os.path.join(paths.result, 'wininterrupt' + args.zip_infix + '.7z'), + '*'], paths.wininterrupt_install) if not args.no_cdb: common.check_print_call(['7z', 'a', '-mmt2', - os.path.join(paths.result, 'qtcreatorcdbext.7z'), '*'], + os.path.join(paths.result, 'qtcreatorcdbext' + args.zip_infix + '.7z'), + '*'], paths.qtcreatorcdbext_install) if common.is_mac_platform(): @@ -233,7 +255,7 @@ def package_qtcreator(args, paths): if not args.no_dmg: common.check_print_call(['python', '-u', os.path.join(paths.src, 'scripts', 'makedmg.py'), - 'qt-creator.dmg', + 'qt-creator' + args.zip_infix + '.dmg', 'Qt Creator', paths.src, paths.install], @@ -244,7 +266,7 @@ def get_paths(args): ['qt', 'src', 'build', 'install', 'dev_install', 'wininterrupt_install', 'qtcreatorcdbext_install', 'result', - 'elfutils']) + 'elfutils', 'llvm']) build_path = os.path.abspath(args.build) install_path = os.path.join(build_path, 'install') return Paths(qt=os.path.abspath(args.qt_path), @@ -255,7 +277,8 @@ def get_paths(args): wininterrupt_install=os.path.join(install_path, 'wininterrupt'), qtcreatorcdbext_install=os.path.join(install_path, 'qtcreatorcdbext'), result=build_path, - elfutils=os.path.abspath(args.elfutils_path) if args.elfutils_path else None) + elfutils=os.path.abspath(args.elfutils_path) if args.elfutils_path else None, + llvm=os.path.abspath(args.llvm_path) if args.llvm_path else None) def main(): args = get_arguments() |