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
4 years ago
by
Sartika Aritonang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Upload New File
parent
a89397bb
Hide 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
)
This diff is collapsed.
Click to expand it.
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