| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- # This file is part of Desktop App Toolkit,
- # a set of libraries for developing nice desktop applications.
- #
- # For license and copyright information please follow this link:
- # https://github.com/desktop-app/legal/blob/master/LEGAL
- import sys, os, shutil, subprocess
- def run(project, arguments, buildType=''):
- scriptPath = os.path.dirname(os.path.realpath(__file__))
- basePath = scriptPath + '/../out/' + buildType
- cmake = ['cmake']
- vsArch = ''
- explicitGenerator = False
- for arg in arguments:
- if arg == 'debug':
- cmake.append('-DCMAKE_BUILD_TYPE=Debug')
- elif arg == 'x86' or arg == 'x64' or arg == 'arm':
- vsArch = arg
- elif arg != 'force':
- if arg.startswith('-G'):
- explicitGenerator = True
- cmake.append(arg)
- if sys.platform == 'win32' and not explicitGenerator:
- if vsArch == 'x64':
- cmake.append('-Ax64')
- elif vsArch == 'arm':
- cmake.append('-AARM64')
- else:
- cmake.append('-AWin32') # default
- elif vsArch != '':
- print("[ERROR] x86/x64/arm switch is supported only with Visual Studio.")
- return 1
- elif sys.platform == 'darwin':
- if not explicitGenerator:
- cmake.append('-GXcode')
- else:
- if not explicitGenerator:
- cmake.append('-GNinja Multi-Config')
- elif buildType:
- cmake.append('-DCMAKE_BUILD_TYPE=' + buildType)
- elif not '-DCMAKE_BUILD_TYPE=Debug' in cmake:
- cmake.append('-DCMAKE_BUILD_TYPE=Release')
- specialTarget = ''
- specialTargetFile = scriptPath + '/../' + project + '/build/target'
- if os.path.isfile(specialTargetFile):
- with open(specialTargetFile, 'r') as f:
- for line in f:
- target = line.strip()
- if len(target) > 0:
- cmake.append('-DDESKTOP_APP_SPECIAL_TARGET=' + target)
- cmake.extend(['-Werror=dev', '-Werror=deprecated', '--warn-uninitialized', '..' if not buildType else '../..'])
- command = '"' + '" "'.join(cmake) + '"'
- if not os.path.exists(basePath):
- os.makedirs(basePath)
- elif 'force' in arguments:
- paths = os.listdir(basePath)
- for path in paths:
- low = path.lower();
- if not low.startswith('debug') and not low.startswith('release'):
- full = basePath + '/' + path
- if os.path.isdir(full):
- shutil.rmtree(full, ignore_errors=False)
- else:
- os.remove(full)
- print('Cleared previous.')
- os.chdir(basePath)
- return subprocess.call(command, shell=True)
|