-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy pathwscript
98 lines (73 loc) · 2.9 KB
/
wscript
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#! /usr/bin/env python
# encoding: utf-8
from waflib.Build import BuildContext
import os
APPNAME = "cpuid"
VERSION = "9.0.1"
def configure(conf):
conf.set_cxx_std(11)
def build(bld):
# Build static library if this is top-level otherwise just .o files
features = ["cxx"]
if bld.is_toplevel():
features += ["cxxstlib"]
bld(
features=features,
source=bld.path.ant_glob("src/**/*.cpp"),
target="cpuid",
export_includes=["src"],
use=["platform_includes"],
install_path="${PREFIX}/lib",
)
# Add a manual dependency to rebuild cpuinfo.cpp if a header file changes.
# waf cannot detect this dependency, because the headers are included
# conditionally based on the platform
bld.add_manual_dependency(
bld.path.find_node("src/cpuid/cpuinfo.cpp"),
bld.path.ant_glob("src/cpuid/**/*.hpp"),
)
if bld.is_toplevel():
# Only build tests when executed from the top-level wscript,
# i.e. not when included as a dependency
bld.recurse("test")
bld.recurse("examples/print_cpuinfo")
sourcepath = bld.path.find_node("src")
bld.install_files(
dest="${PREFIX}/include",
files=sourcepath.ant_glob("**/*.hpp", excl=["**/detail/**"]),
cwd=sourcepath,
relative_trick=True,
)
bld.install_files(dest="${PREFIX}/", files=bld.path.ant_glob("NEWS.rst"))
class ReleaseContext(BuildContext):
cmd = "prepare_release"
fun = "prepare_release"
def prepare_release(ctx):
"""Prepare a release."""
# Rewrite versions
with ctx.rewrite_file(filename="src/cpuid/version.hpp") as f:
pattern = r"#define STEINWURF_CPUID_VERSION v\d+_\d+_\d+"
replacement = "#define STEINWURF_CPUID_VERSION v{}".format(
VERSION.replace(".", "_")
)
f.regex_replace(pattern=pattern, replacement=replacement)
with ctx.rewrite_file(filename="src/cpuid/version.cpp") as f:
pattern = r'return "\d+\.\d+\.\d+"'
replacement = 'return "{}"'.format(VERSION)
f.regex_replace(pattern=pattern, replacement=replacement)
def docs(ctx):
"""Build the documentation in a virtualenv"""
with ctx.create_virtualenv() as venv:
# To update the requirements.txt just delete it - a fresh one
# will be generated from test/requirements.in
if not os.path.isfile("docs/requirements.txt"):
venv.run("python -m pip install pip-tools")
venv.run("pip-compile docs/requirements.in")
venv.run("python -m pip install -r docs/requirements.txt")
build_path = os.path.join(ctx.path.abspath(), "build", "site", "docs")
venv.run(
"giit clean . --build_path {}".format(build_path), cwd=ctx.path.abspath()
)
venv.run(
"giit sphinx . --build_path {}".format(build_path), cwd=ctx.path.abspath()
)