FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
python/SConstruct at develop · res2k/python · GitHub
res2k
/
python
Public
forked from
boostorg/python
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
python
/
SConstruct
Copy path
More file actions
More file actions
Latest commit
History
History
History
101 lines (90 loc) · 3.5 KB
Breadcrumbs
python
/
SConstruct
Copy path
File metadata and controls
101 lines (90 loc) · 3.5 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
99
100
101
# -*- python -*-
#
# Copyright (c) 2016 Stefan Seefeld
# All rights reserved.
#
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)
import
SCons
.
Script
.
Main
import
config
import
config
.
ui
import
platform
import
os
import
subprocess
import
re
#
# We try to mimic the typical autotools-workflow.
#
# * In a 'configure' step all the essential build parameters are established
# (either by explicit command-line arguments or from configure checks)
# * A subsequent build step can then simply read the cached variables, so
# users don't have to memorize and re-issue the arguments on each subsequent
# invocation, and neither do the config checks need to be re-run.
#
# The essential part here is to define a 'config' target, which removes any
# caches that may still be lingering around, then runs the checks.
if
'config'
in
COMMAND_LINE_TARGETS
:
# Clear the cache
try
:
os
.
remove
(
'bin.SCons/config.py'
)
except
:
pass
if
not
os
.
path
.
exists
(
'bin.SCons/'
):
os
.
mkdir
(
'bin.SCons/'
)
vars
=
Variables
(
'bin.SCons/config.py'
,
ARGUMENTS
)
config
.
add_options
(
vars
)
arch
=
ARGUMENTS
.
get
(
'arch'
,
platform
.
machine
())
env_vars
=
{}
if
'CXX'
in
os
.
environ
:
env_vars
[
'CXX'
]
=
os
.
environ
[
'CXX'
]
if
'CXXFLAGS'
in
os
.
environ
:
env_vars
[
'CXXFLAGS'
]
=
os
.
environ
[
'CXXFLAGS'
].
split
()
env_vars
[
'ENV'
]
=
os
.
environ
#{'PATH': os.environ['PATH'], 'TMP' : os.environ['TMP']}
env
=
Environment
(
toolpath
=
[
'config/tools'
],
tools
=
[
'default'
,
'libs'
,
'tests'
,
'doc'
,
'sphinx4scons'
],
variables
=
vars
,
TARGET_ARCH
=
arch
,
**
env_vars
)
if
'gcc'
in
env
[
'TOOLS'
]:
# Earlier SCons versions (~ 2.3.0) can't handle CXX=clang++.
version
=
subprocess
.
check_output
([
env
[
'CXX'
],
'--version'
])
match
=
re
.
search
(
r'[0-9]+(\.[0-9]+)+'
,
version
)
if
match
:
version
=
match
.
group
(
0
)
else
:
version
=
'unknown'
env
[
'CXXVERSION'
]
=
version
Help
(
config
.
ui
.
help
(
vars
,
env
)
+
"""
Variables are saved in bin.SCons/config.py and persist between scons invocations.
"""
)
if
GetOption
(
'help'
):
Return
()
build_dir
=
config
.
prepare_build_dir
(
env
)
config_log
=
'{}/config.log'
.
format
(
build_dir
)
# configure
SConsignFile
(
'{}/.sconsign'
.
format
(
build_dir
))
#env.Decider('MD5-timestamp')
env
.
Decider
(
'timestamp-newer'
)
checks
=
config
.
get_checks
(
env
)
if
'config'
in
COMMAND_LINE_TARGETS
:
conf
=
env
.
Configure
(
custom_tests
=
checks
,
log_file
=
config_log
,
conf_dir
=
build_dir
)
if
False
in
(
getattr
(
conf
,
c
)()
for
c
in
checks
):
Exit
(
1
)
env
=
conf
.
Finish
()
vars
.
Save
(
'bin.SCons/config.py'
,
env
)
if
not
os
.
path
.
exists
(
config_log
):
print
(
'Please run `scons config` first. (See `scons -h` for available options.)'
)
Exit
(
1
)
if
not
GetOption
(
'verbose'
):
config
.
ui
.
pretty_output
(
env
)
# build
env
[
'BPL_VERSION'
]
=
'1.65'
for
e
in
config
.
variants
(
env
):
variant_dir
=
e
.
subst
(
"$BOOST_CURRENT_VARIANT_DIR"
)
e
.
SConscript
(
'src/SConscript'
,
variant_dir
=
variant_dir
+
'/src'
,
exports
=
{
'env'
:
e
.
Clone
(
BOOST_LIB
=
'python'
) })
if
'test'
in
COMMAND_LINE_TARGETS
:
test_env
=
e
.
Clone
(
BOOST_LIB
=
'python'
,
BOOST_TEST
=
True
)
test_env
.
BoostUseLib
(
'python'
)
e
.
SConscript
(
'test/SConscript'
,
variant_dir
=
variant_dir
+
'/test'
,
exports
=
{
'env'
:
test_env
})
if
'doc'
in
COMMAND_LINE_TARGETS
:
env
.
SConscript
(
'doc/SConscript'
,
variant_dir
=
'bin.SCons/doc'
,
exports
=
{
'env'
:
e
.
Clone
(
BOOST_LIB
=
'python'
) })
Back
|
FazBrowse Home
|
New Git URL