Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
news
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Sartika Aritonang
news
Commits
6b5f16ac
Commit
6b5f16ac
authored
May 29, 2020
by
Sartika Aritonang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Upload New File
parent
a89397bb
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
98 additions
and
0 deletions
+98
-0
build_clib.py
stbi/Lib/site-packages/setuptools/command/build_clib.py
+98
-0
No files found.
stbi/Lib/site-packages/setuptools/command/build_clib.py
0 → 100644
View file @
6b5f16ac
import
distutils.command.build_clib
as
orig
from
distutils.errors
import
DistutilsSetupError
from
distutils
import
log
from
setuptools.dep_util
import
newer_pairwise_group
class
build_clib
(
orig
.
build_clib
):
"""
Override the default build_clib behaviour to do the following:
1. Implement a rudimentary timestamp-based dependency system
so 'compile()' doesn't run every time.
2. Add more keys to the 'build_info' dictionary:
* obj_deps - specify dependencies for each object compiled.
this should be a dictionary mapping a key
with the source filename to a list of
dependencies. Use an empty string for global
dependencies.
* cflags - specify a list of additional flags to pass to
the compiler.
"""
def
build_libraries
(
self
,
libraries
):
for
(
lib_name
,
build_info
)
in
libraries
:
sources
=
build_info
.
get
(
'sources'
)
if
sources
is
None
or
not
isinstance
(
sources
,
(
list
,
tuple
)):
raise
DistutilsSetupError
(
"in 'libraries' option (library '
%
s'), "
"'sources' must be present and must be "
"a list of source filenames"
%
lib_name
)
sources
=
list
(
sources
)
log
.
info
(
"building '
%
s' library"
,
lib_name
)
# Make sure everything is the correct type.
# obj_deps should be a dictionary of keys as sources
# and a list/tuple of files that are its dependencies.
obj_deps
=
build_info
.
get
(
'obj_deps'
,
dict
())
if
not
isinstance
(
obj_deps
,
dict
):
raise
DistutilsSetupError
(
"in 'libraries' option (library '
%
s'), "
"'obj_deps' must be a dictionary of "
"type 'source: list'"
%
lib_name
)
dependencies
=
[]
# Get the global dependencies that are specified by the '' key.
# These will go into every source's dependency list.
global_deps
=
obj_deps
.
get
(
''
,
list
())
if
not
isinstance
(
global_deps
,
(
list
,
tuple
)):
raise
DistutilsSetupError
(
"in 'libraries' option (library '
%
s'), "
"'obj_deps' must be a dictionary of "
"type 'source: list'"
%
lib_name
)
# Build the list to be used by newer_pairwise_group
# each source will be auto-added to its dependencies.
for
source
in
sources
:
src_deps
=
[
source
]
src_deps
.
extend
(
global_deps
)
extra_deps
=
obj_deps
.
get
(
source
,
list
())
if
not
isinstance
(
extra_deps
,
(
list
,
tuple
)):
raise
DistutilsSetupError
(
"in 'libraries' option (library '
%
s'), "
"'obj_deps' must be a dictionary of "
"type 'source: list'"
%
lib_name
)
src_deps
.
extend
(
extra_deps
)
dependencies
.
append
(
src_deps
)
expected_objects
=
self
.
compiler
.
object_filenames
(
sources
,
output_dir
=
self
.
build_temp
)
if
newer_pairwise_group
(
dependencies
,
expected_objects
)
!=
([],
[]):
# First, compile the source code to object files in the library
# directory. (This should probably change to putting object
# files in a temporary build directory.)
macros
=
build_info
.
get
(
'macros'
)
include_dirs
=
build_info
.
get
(
'include_dirs'
)
cflags
=
build_info
.
get
(
'cflags'
)
objects
=
self
.
compiler
.
compile
(
sources
,
output_dir
=
self
.
build_temp
,
macros
=
macros
,
include_dirs
=
include_dirs
,
extra_postargs
=
cflags
,
debug
=
self
.
debug
)
# Now "link" the object files together into a static library.
# (On Unix at least, this isn't really linking -- it just
# builds an archive. Whatever.)
self
.
compiler
.
create_static_lib
(
expected_objects
,
lib_name
,
output_dir
=
self
.
build_clib
,
debug
=
self
.
debug
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment