blob: 69dfe105233a7eacb7ac3378d17b722eb6733c50 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
# Copyright (c) 2020 Egor Tensin <egor@tensin.name>
# This file is part of the "cmake-common" project.
# For details, see https://github.com/egor-tensin/cmake-common
# Distributed under the MIT License.
import argparse
from enum import auto, StrEnum
class Configuration(StrEnum):
"""Correspond to CMake's default CMAKE_BUILD_TYPE values."""
DEBUG = auto()
MINSIZEREL = auto()
RELWITHDEBINFO = auto()
RELEASE = auto()
@staticmethod
def all():
return tuple(Configuration)
@staticmethod
def parse(s):
try:
return Configuration(s)
except ValueError as e:
raise argparse.ArgumentTypeError(f"invalid configuration: {s}") from e
def b2_variant(self):
"""Roughly maps CMake's CMAKE_BUILD_TYPE to Boost's variant.
AFAIK, Boost only supports debug/release, MinSizeRel and RelWithDebInfo
are hence mapped to "release". The libraries will still reside in
install_dir/PLATFORM/CONFIGURATION/lib, if CONFIGURATION is
MinSizeRel/RelWithDebInfo.
"""
if self in (Configuration.MINSIZEREL, Configuration.RELWITHDEBINFO):
return Configuration.RELEASE.b2_variant()
return str(self).lower()
def b2_args(self):
return [f"variant={self.b2_variant()}"]
def cmake_args(self):
return [f"-DCMAKE_BUILD_TYPE={self}"]
|