aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rwxr-xr-xci/boost/build_travis.py2
-rwxr-xr-xci/build.py26
-rwxr-xr-xci/build_appveyor.py34
-rwxr-xr-xci/build_travis.py12
4 files changed, 47 insertions, 27 deletions
diff --git a/ci/boost/build_travis.py b/ci/boost/build_travis.py
index bfdccc0..de8c957 100755
--- a/ci/boost/build_travis.py
+++ b/ci/boost/build_travis.py
@@ -54,6 +54,7 @@ def build_travis(argv=None):
argv = sys.argv[1:]
logging.info('Command line arguments: %s', argv)
_check_travis()
+
version = BoostVersion.from_string(_get_boost_version())
travis_argv = [
'download',
@@ -61,6 +62,7 @@ def build_travis(argv=None):
'--', str(version)
]
build_main(travis_argv)
+
travis_argv = [
'build',
'--configuration', _get_configuration(),
diff --git a/ci/build.py b/ci/build.py
index 0fb4478..c77216a 100755
--- a/ci/build.py
+++ b/ci/build.py
@@ -91,20 +91,10 @@ class GenerationPhase:
@staticmethod
def _to_cmake_args(build_dir, args):
result = []
- if args.generator is not None:
- result += ['-G', args.generator]
- if args.platform is not None:
- result += ['-A', args.platform]
if args.install_dir is not None:
result.append(f'-DCMAKE_INSTALL_PREFIX={args.install_dir}')
if args.configuration is not None:
result.append(f'-DCMAKE_BUILD_TYPE={args.configuration}')
- if args.toolchain_path is not None:
- result.append(f'-DCMAKE_TOOLCHAIN_FILE={args.toolchain_path}')
- if args.boost_root is not None:
- result.append(f'-DBOOST_ROOT={args.boost_root}')
- if args.boost_librarydir is not None:
- result.append(f'-DBOOST_LIBRARYDIR={args.boost_librarydir}')
if args.cmake_args is not None:
result += args.cmake_args
result += [f'-B{build_dir.path}']
@@ -126,8 +116,6 @@ class BuildPhase:
@staticmethod
def _to_cmake_args(build_dir, args):
result = ['--build', build_dir.path]
- if args.clean_build_dir:
- result.append('--clean-first')
if args.configuration is not None:
result += ['--config', str(args.configuration)]
if args.install_dir is not None:
@@ -163,9 +151,9 @@ def _parse_args(argv=None):
if argv is None:
argv = sys.argv[1:]
logging.info('Command line arguments: %s', argv)
+
parser = argparse.ArgumentParser(description='Build a CMake project')
- parser.add_argument('--src', required=True, dest='src_dir',
- type=os.path.abspath, metavar='DIR',
+ parser.add_argument('--src', required=True, metavar='DIR', dest='src_dir',
help='source directory')
parser.add_argument('--build', metavar='DIR', dest='build_dir',
help='build directory (temporary directory if not specified)')
@@ -173,17 +161,9 @@ def _parse_args(argv=None):
help='install directory')
parser.add_argument('--clean', action='store_true', dest='clean_build_dir',
help='clean the build directory (temporary directory will be removed)')
- parser.add_argument('--generator', help='build system to use')
- parser.add_argument('--platform', help='target platform (i.e. Win32/x64)')
parser.add_argument('--configuration', metavar='CONFIG',
- type=_parse_configuration,
+ type=_parse_configuration, default=Configuration.DEBUG,
help='build configuration (i.e. Debug/Release)')
- parser.add_argument('--toolchain', metavar='PATH', dest='toolchain_path',
- help='CMake toolchain file path')
- parser.add_argument('--boost', metavar='DIR', dest='boost_root',
- help='set Boost directory')
- parser.add_argument('--boost-librarydir', metavar='DIR',
- help='set Boost library directory (stage/lib by default)')
parser.add_argument('cmake_args', nargs='*', metavar='CMAKE_ARG',
help='additional CMake arguments, to be passed verbatim')
args = parser.parse_args(argv)
diff --git a/ci/build_appveyor.py b/ci/build_appveyor.py
index 2d2ee65..56b4d4b 100755
--- a/ci/build_appveyor.py
+++ b/ci/build_appveyor.py
@@ -9,6 +9,7 @@
# the AppVeyor-defined environment variables.
# The project is built in C:\Projects\build.
+import argparse
from enum import Enum
import logging
import os
@@ -77,6 +78,11 @@ def _env(name):
return os.environ[name]
+def _check_appveyor():
+ if 'APPVEYOR' not in os.environ:
+ raise RuntimeError('not running on AppVeyor')
+
+
def _get_src_dir():
return _env('APPVEYOR_BUILD_FOLDER')
@@ -104,18 +110,38 @@ def _setup_logging():
level=logging.INFO)
-def build_appveyor(argv=None):
+def _parse_args(argv=None):
if argv is None:
argv = sys.argv[1:]
logging.info('Command line arguments: %s', argv)
+
+ parser = argparse.ArgumentParser(description='Build a CMake project on AppVeyor')
+ parser.add_argument('--install', metavar='DIR', dest='install_dir',
+ help='install directory')
+ parser.add_argument('cmake_args', nargs='*', metavar='CMAKE_ARG',
+ help='additional CMake arguments, to be passed verbatim')
+ return parser.parse_args(argv)
+
+
+def build_appveyor(argv=None):
+ args = _parse_args(argv)
+ _check_appveyor()
+
appveyor_argv = [
'--src', _get_src_dir(),
'--build', _get_build_dir(),
- '--generator', _get_generator(),
- '--platform', _get_platform(),
'--configuration', _get_configuration(),
]
- build(appveyor_argv + argv)
+ if args.install_dir is not None:
+ appveyor_argv += [
+ '--install', args.install_dir,
+ ]
+ appveyor_argv += [
+ '--',
+ '-G', _get_generator(),
+ '-A', _get_platform(),
+ ]
+ build(appveyor_argv + args.cmake_args)
def main(argv=None):
diff --git a/ci/build_travis.py b/ci/build_travis.py
index dce7fd7..564f964 100755
--- a/ci/build_travis.py
+++ b/ci/build_travis.py
@@ -23,6 +23,11 @@ def _env(name):
return os.environ[name]
+def _check_travis():
+ if 'TRAVIS' not in os.environ:
+ raise RuntimeError('not running on Travis')
+
+
def _get_src_dir():
return _env('TRAVIS_BUILD_DIR')
@@ -31,6 +36,10 @@ def _get_build_dir():
return os.path.join(_env('HOME'), 'build')
+def _get_configuration():
+ return _env('configuration')
+
+
def _setup_logging():
logging.basicConfig(
format='%(asctime)s | %(levelname)s | %(message)s',
@@ -41,9 +50,12 @@ def build_travis(argv=None):
if argv is None:
argv = sys.argv[1:]
logging.info('Command line arguments: %s', argv)
+ _check_travis()
+
travis_argv = [
'--src', _get_src_dir(),
'--build', _get_build_dir(),
+ '--configuration', _get_configuration(),
]
build(travis_argv + argv)