Generate recursive meta language dependencies.
Cargo doesn't scan a directory for changed dependencies recursively, so do that as part of the build.py script.
This commit is contained in:
36
meta/gen_build_deps.py
Normal file
36
meta/gen_build_deps.py
Normal file
@@ -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
|
||||
Reference in New Issue
Block a user