Browse Source
Cargo doesn't scan a directory for changed dependencies recursively, so do that as part of the build.py script.pull/1019/head
Jakob Stoklund Olesen
9 years ago
3 changed files with 38 additions and 3 deletions
@ -0,0 +1,36 @@ |
|||
""" |
|||
Generate build dependencies for Cargo. |
|||
|
|||
The `build.py` script is invoked by cargo when building libcretonne to |
|||
generate Rust code from the instruction descriptions. Cargo needs to know when |
|||
it is necessary to rerun the build script. |
|||
|
|||
If the build script outputs lines of the form: |
|||
|
|||
cargo:rerun-if-changed=/path/to/file |
|||
|
|||
cargo will rerun the build script when those files have changed since the last |
|||
build. |
|||
""" |
|||
|
|||
import os |
|||
from os.path import dirname, abspath, join |
|||
|
|||
|
|||
def source_files(top): |
|||
""" |
|||
Recursively find all interesting source files and directories in the |
|||
directory tree starting at top. Yield a path to each file. |
|||
""" |
|||
for (dirpath, dirnames, filenames) in os.walk(top): |
|||
yield dirpath |
|||
for f in filenames: |
|||
if f.endswith('.py'): |
|||
yield join(dirpath, f) |
|||
|
|||
|
|||
def generate(): |
|||
print "Dependencies from meta language directory:" |
|||
meta = dirname(abspath(__file__)) |
|||
for path in source_files(meta): |
|||
print "cargo:rerun-if-changed=" + path |
Loading…
Reference in new issue