diff --git a/src/libcretonne/Cargo.toml b/lib/cretonne/Cargo.toml similarity index 91% rename from src/libcretonne/Cargo.toml rename to lib/cretonne/Cargo.toml index 174fb2e0bf..60e8eb2be9 100644 --- a/src/libcretonne/Cargo.toml +++ b/lib/cretonne/Cargo.toml @@ -3,6 +3,7 @@ authors = ["The Cretonne Project Developers"] name = "cretonne" version = "0.0.0" description = "Low-level code generator library" +license = "Apache-2.0" documentation = "https://cretonne.readthedocs.io/" repository = "https://github.com/stoklund/cretonne" publish = false @@ -10,10 +11,9 @@ build = "build.rs" [lib] name = "cretonne" -path = "lib.rs" [dependencies] # It is a goal of the cretonne crate to have minimal external dependencies. # Please don't add any unless they are essential to the task of creating binary # machine code. Integration tests that need external dependencies can be -# accomodated in src/tools/tests. +# accomodated in `tests`. diff --git a/lib/cretonne/build.rs b/lib/cretonne/build.rs new file mode 100644 index 0000000000..47e2890217 --- /dev/null +++ b/lib/cretonne/build.rs @@ -0,0 +1,41 @@ +// Build script. +// +// This program is run by Cargo when building lib/cretonne. It is used to generate Rust code from +// the language definitions in the lib/cretonne/meta directory. +// +// Environment: +// +// OUT_DIR +// Directory where generated files should be placed. +// +// The build script expects to be run from the directory where this build.rs file lives. The +// current directory is used to find the sources. + + +use std::env; +use std::process; + +fn main() { + let out_dir = env::var("OUT_DIR").expect("The OUT_DIR environment variable must be set"); + + println!("Build script generating files in {}", out_dir); + + let cur_dir = env::current_dir().expect("Can't access current working directory"); + let crate_dir = cur_dir.as_path(); + + // Scripts are in `$crate_dir/meta`. + let meta_dir = crate_dir.join("meta"); + let build_script = meta_dir.join("build.py"); + + // Launch build script with Python. We'll just find python in the path. + let status = process::Command::new("python") + .current_dir(crate_dir) + .arg(build_script) + .arg("--out-dir") + .arg(out_dir) + .status() + .expect("Failed to launch second-level build script"); + if !status.success() { + process::exit(status.code().unwrap()); + } +} diff --git a/src/libcretonne/cfg.rs b/lib/cretonne/src/cfg.rs similarity index 100% rename from src/libcretonne/cfg.rs rename to lib/cretonne/src/cfg.rs diff --git a/src/libcretonne/constant_hash.rs b/lib/cretonne/src/constant_hash.rs similarity index 100% rename from src/libcretonne/constant_hash.rs rename to lib/cretonne/src/constant_hash.rs diff --git a/src/libcretonne/dominator_tree.rs b/lib/cretonne/src/dominator_tree.rs similarity index 100% rename from src/libcretonne/dominator_tree.rs rename to lib/cretonne/src/dominator_tree.rs diff --git a/src/libcretonne/entity_map.rs b/lib/cretonne/src/entity_map.rs similarity index 100% rename from src/libcretonne/entity_map.rs rename to lib/cretonne/src/entity_map.rs diff --git a/src/libcretonne/ir/builder.rs b/lib/cretonne/src/ir/builder.rs similarity index 100% rename from src/libcretonne/ir/builder.rs rename to lib/cretonne/src/ir/builder.rs diff --git a/src/libcretonne/ir/condcodes.rs b/lib/cretonne/src/ir/condcodes.rs similarity index 100% rename from src/libcretonne/ir/condcodes.rs rename to lib/cretonne/src/ir/condcodes.rs diff --git a/src/libcretonne/ir/dfg.rs b/lib/cretonne/src/ir/dfg.rs similarity index 100% rename from src/libcretonne/ir/dfg.rs rename to lib/cretonne/src/ir/dfg.rs diff --git a/src/libcretonne/ir/entities.rs b/lib/cretonne/src/ir/entities.rs similarity index 100% rename from src/libcretonne/ir/entities.rs rename to lib/cretonne/src/ir/entities.rs diff --git a/src/libcretonne/ir/extfunc.rs b/lib/cretonne/src/ir/extfunc.rs similarity index 100% rename from src/libcretonne/ir/extfunc.rs rename to lib/cretonne/src/ir/extfunc.rs diff --git a/src/libcretonne/ir/funcname.rs b/lib/cretonne/src/ir/funcname.rs similarity index 100% rename from src/libcretonne/ir/funcname.rs rename to lib/cretonne/src/ir/funcname.rs diff --git a/src/libcretonne/ir/function.rs b/lib/cretonne/src/ir/function.rs similarity index 100% rename from src/libcretonne/ir/function.rs rename to lib/cretonne/src/ir/function.rs diff --git a/src/libcretonne/ir/immediates.rs b/lib/cretonne/src/ir/immediates.rs similarity index 100% rename from src/libcretonne/ir/immediates.rs rename to lib/cretonne/src/ir/immediates.rs diff --git a/src/libcretonne/ir/instructions.rs b/lib/cretonne/src/ir/instructions.rs similarity index 100% rename from src/libcretonne/ir/instructions.rs rename to lib/cretonne/src/ir/instructions.rs diff --git a/src/libcretonne/ir/jumptable.rs b/lib/cretonne/src/ir/jumptable.rs similarity index 100% rename from src/libcretonne/ir/jumptable.rs rename to lib/cretonne/src/ir/jumptable.rs diff --git a/src/libcretonne/ir/layout.rs b/lib/cretonne/src/ir/layout.rs similarity index 100% rename from src/libcretonne/ir/layout.rs rename to lib/cretonne/src/ir/layout.rs diff --git a/src/libcretonne/ir/mod.rs b/lib/cretonne/src/ir/mod.rs similarity index 100% rename from src/libcretonne/ir/mod.rs rename to lib/cretonne/src/ir/mod.rs diff --git a/src/libcretonne/ir/stackslot.rs b/lib/cretonne/src/ir/stackslot.rs similarity index 100% rename from src/libcretonne/ir/stackslot.rs rename to lib/cretonne/src/ir/stackslot.rs diff --git a/src/libcretonne/ir/types.rs b/lib/cretonne/src/ir/types.rs similarity index 100% rename from src/libcretonne/ir/types.rs rename to lib/cretonne/src/ir/types.rs diff --git a/src/libcretonne/isa/enc_tables.rs b/lib/cretonne/src/isa/enc_tables.rs similarity index 100% rename from src/libcretonne/isa/enc_tables.rs rename to lib/cretonne/src/isa/enc_tables.rs diff --git a/src/libcretonne/isa/encoding.rs b/lib/cretonne/src/isa/encoding.rs similarity index 100% rename from src/libcretonne/isa/encoding.rs rename to lib/cretonne/src/isa/encoding.rs diff --git a/src/libcretonne/isa/mod.rs b/lib/cretonne/src/isa/mod.rs similarity index 100% rename from src/libcretonne/isa/mod.rs rename to lib/cretonne/src/isa/mod.rs diff --git a/src/libcretonne/isa/riscv/enc_tables.rs b/lib/cretonne/src/isa/riscv/enc_tables.rs similarity index 100% rename from src/libcretonne/isa/riscv/enc_tables.rs rename to lib/cretonne/src/isa/riscv/enc_tables.rs diff --git a/src/libcretonne/isa/riscv/mod.rs b/lib/cretonne/src/isa/riscv/mod.rs similarity index 100% rename from src/libcretonne/isa/riscv/mod.rs rename to lib/cretonne/src/isa/riscv/mod.rs diff --git a/src/libcretonne/isa/riscv/settings.rs b/lib/cretonne/src/isa/riscv/settings.rs similarity index 100% rename from src/libcretonne/isa/riscv/settings.rs rename to lib/cretonne/src/isa/riscv/settings.rs diff --git a/src/libcretonne/legalizer.rs b/lib/cretonne/src/legalizer.rs similarity index 100% rename from src/libcretonne/legalizer.rs rename to lib/cretonne/src/legalizer.rs diff --git a/src/libcretonne/lib.rs b/lib/cretonne/src/lib.rs similarity index 100% rename from src/libcretonne/lib.rs rename to lib/cretonne/src/lib.rs diff --git a/src/libcretonne/predicates.rs b/lib/cretonne/src/predicates.rs similarity index 100% rename from src/libcretonne/predicates.rs rename to lib/cretonne/src/predicates.rs diff --git a/src/libcretonne/settings.rs b/lib/cretonne/src/settings.rs similarity index 100% rename from src/libcretonne/settings.rs rename to lib/cretonne/src/settings.rs diff --git a/src/libcretonne/verifier.rs b/lib/cretonne/src/verifier.rs similarity index 100% rename from src/libcretonne/verifier.rs rename to lib/cretonne/src/verifier.rs diff --git a/src/libcretonne/write.rs b/lib/cretonne/src/write.rs similarity index 100% rename from src/libcretonne/write.rs rename to lib/cretonne/src/write.rs diff --git a/src/libfilecheck/Cargo.toml b/lib/filecheck/Cargo.toml similarity index 52% rename from src/libfilecheck/Cargo.toml rename to lib/filecheck/Cargo.toml index 4f85778d92..f7cfa926e8 100644 --- a/src/libfilecheck/Cargo.toml +++ b/lib/filecheck/Cargo.toml @@ -2,11 +2,13 @@ authors = ["The Cretonne Project Developers"] name = "filecheck" version = "0.0.0" +description = "Library for matching test outputs against filecheck directives" +license = "Apache-2.0" +repository = "https://github.com/stoklund/cretonne" publish = false [lib] name = "filecheck" -path = "lib.rs" [dependencies] regex = "0.1.71" diff --git a/src/libfilecheck/checker.rs b/lib/filecheck/src/checker.rs similarity index 100% rename from src/libfilecheck/checker.rs rename to lib/filecheck/src/checker.rs diff --git a/src/libfilecheck/error.rs b/lib/filecheck/src/error.rs similarity index 100% rename from src/libfilecheck/error.rs rename to lib/filecheck/src/error.rs diff --git a/src/libfilecheck/explain.rs b/lib/filecheck/src/explain.rs similarity index 100% rename from src/libfilecheck/explain.rs rename to lib/filecheck/src/explain.rs diff --git a/src/libfilecheck/lib.rs b/lib/filecheck/src/lib.rs similarity index 100% rename from src/libfilecheck/lib.rs rename to lib/filecheck/src/lib.rs diff --git a/src/libfilecheck/pattern.rs b/lib/filecheck/src/pattern.rs similarity index 100% rename from src/libfilecheck/pattern.rs rename to lib/filecheck/src/pattern.rs diff --git a/src/libfilecheck/tests/basic.rs b/lib/filecheck/src/tests/basic.rs similarity index 100% rename from src/libfilecheck/tests/basic.rs rename to lib/filecheck/src/tests/basic.rs diff --git a/src/libfilecheck/variable.rs b/lib/filecheck/src/variable.rs similarity index 100% rename from src/libfilecheck/variable.rs rename to lib/filecheck/src/variable.rs diff --git a/lib/reader/Cargo.toml b/lib/reader/Cargo.toml new file mode 100644 index 0000000000..030d20ff9f --- /dev/null +++ b/lib/reader/Cargo.toml @@ -0,0 +1,15 @@ +[package] +authors = ["The Cretonne Project Developers"] +name = "cretonne-reader" +version = "0.0.0" +description = "Cretonne textual IL reader" +license = "Apache-2.0" +documentation = "https://cretonne.readthedocs.io/" +repository = "https://github.com/stoklund/cretonne" +publish = false + +[lib] +name = "cton_reader" + +[dependencies] +cretonne = { path = "../cretonne" } diff --git a/src/libreader/error.rs b/lib/reader/src/error.rs similarity index 100% rename from src/libreader/error.rs rename to lib/reader/src/error.rs diff --git a/src/libreader/isaspec.rs b/lib/reader/src/isaspec.rs similarity index 100% rename from src/libreader/isaspec.rs rename to lib/reader/src/isaspec.rs diff --git a/src/libreader/lexer.rs b/lib/reader/src/lexer.rs similarity index 100% rename from src/libreader/lexer.rs rename to lib/reader/src/lexer.rs diff --git a/src/libreader/lib.rs b/lib/reader/src/lib.rs similarity index 100% rename from src/libreader/lib.rs rename to lib/reader/src/lib.rs diff --git a/src/libreader/parser.rs b/lib/reader/src/parser.rs similarity index 100% rename from src/libreader/parser.rs rename to lib/reader/src/parser.rs diff --git a/src/libreader/sourcemap.rs b/lib/reader/src/sourcemap.rs similarity index 100% rename from src/libreader/sourcemap.rs rename to lib/reader/src/sourcemap.rs diff --git a/src/libreader/testcommand.rs b/lib/reader/src/testcommand.rs similarity index 100% rename from src/libreader/testcommand.rs rename to lib/reader/src/testcommand.rs diff --git a/src/libreader/testfile.rs b/lib/reader/src/testfile.rs similarity index 100% rename from src/libreader/testfile.rs rename to lib/reader/src/testfile.rs diff --git a/src/libcretonne/build.rs b/src/libcretonne/build.rs deleted file mode 100644 index 2cb13ac959..0000000000 --- a/src/libcretonne/build.rs +++ /dev/null @@ -1,46 +0,0 @@ - -// Build script. -// -// This program is run by Cargo when building libcretonne. It is used to generate Rust code from -// the language definitions in the meta directory. -// -// Environment: -// -// OUT_DIR -// Directory where generated files should be placed. -// -// The build script expects to be run from the directory where this build.rs file lives. The -// current directory is used to find the sources. - - -use std::env; -use std::process; - -fn main() { - let out_dir = env::var("OUT_DIR").expect("The OUT_DIR environment variable must be set"); - - println!("Build script generating files in {}", out_dir); - - let mut cur_dir = env::current_dir().expect("Can't access current working directory"); - - // We're in src/libcretonne. Find the top-level directory. - assert!(cur_dir.pop(), "No parent 'src' directory"); - assert!(cur_dir.pop(), "No top-level directory"); - let top_dir = cur_dir.as_path(); - - // Scripts are in $top_dir/meta. - let meta_dir = top_dir.join("lib/cretonne/meta"); - let build_script = meta_dir.join("build.py"); - - // Launch build script with Python. We'll just find python in the path. - let status = process::Command::new("python") - .current_dir(top_dir) - .arg(build_script) - .arg("--out-dir") - .arg(out_dir) - .status() - .expect("Failed to launch second-level build script"); - if !status.success() { - process::exit(status.code().unwrap()); - } -} diff --git a/src/libreader/Cargo.toml b/src/libreader/Cargo.toml deleted file mode 100644 index 478ee3b586..0000000000 --- a/src/libreader/Cargo.toml +++ /dev/null @@ -1,12 +0,0 @@ -[package] -authors = ["The Cretonne Project Developers"] -name = "cretonne-reader" -version = "0.0.0" -publish = false - -[lib] -name = "cton_reader" -path = "lib.rs" - -[dependencies] -cretonne = { path = "../libcretonne" } diff --git a/src/tools/Cargo.toml b/src/tools/Cargo.toml index 3a1a8979a7..930256d8bb 100644 --- a/src/tools/Cargo.toml +++ b/src/tools/Cargo.toml @@ -10,9 +10,9 @@ name = "cton-util" path = "main.rs" [dependencies] -cretonne = { path = "../libcretonne" } -cretonne-reader = { path = "../libreader" } -filecheck = { path = "../libfilecheck" } +cretonne = { path = "../../lib/cretonne" } +cretonne-reader = { path = "../../lib/reader" } +filecheck = { path = "../../lib/filecheck" } docopt = "0.6.80" rustc-serialize = "0.3.19" num_cpus = "1.1.0"