aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorOndřej Čertík <ondrej@certik.us>2020-01-12 22:40:51 +0000
committerOndřej Čertík <ondrej@certik.us>2020-01-12 22:40:51 +0000
commitee89a3e3dfeae3881065a81646c43d8ac07824a5 (patch)
tree51bce302f5a412f3ab9759d4a23ddc087d5fd6a5 /src/main.rs
parent66971b3a4b0d06925aee05a772bb61233e54ac2f (diff)
parent434213681dc74d8d6fae62e34917dfe4c9efb086 (diff)
downloadfpm-ee89a3e3dfeae3881065a81646c43d8ac07824a5.tar.gz
fpm-ee89a3e3dfeae3881065a81646c43d8ac07824a5.zip
Merge branch 'cmake' into 'master'
Call CMake See merge request certik/fpm!5
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs
index 85ba64a..ddcb335 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -30,6 +30,51 @@ fn build() {
println!("File: {}", file.to_str().unwrap());
}
println!("Files: {:?}", files);
+ let s = "\
+cmake_minimum_required(VERSION 3.5.0 FATAL_ERROR)
+
+enable_language(Fortran)
+
+project(p1)
+
+set(SRC
+ a.f90
+ b.f90
+)
+
+add_executable(p1 main.f90 ${SRC})
+";
+ std::fs::write("CMakeLists.txt", s).unwrap();
+ let output = std::process::Command::new("cmake")
+ .args(&["-B", "build", "."])
+ .output().unwrap();
+ println!("status: {}", output.status);
+ println!("stdout: {}", String::from_utf8_lossy(&output.stdout));
+ println!("stderr: {}", String::from_utf8_lossy(&output.stderr));
+ if !output.status.success() {
+ panic!("Command failed.")
+ }
+
+ let output = std::process::Command::new("cmake")
+ .args(&["--build", "build"])
+ .output().unwrap();
+ println!("status: {}", output.status);
+ println!("stdout: {}", String::from_utf8_lossy(&output.stdout));
+ println!("stderr: {}", String::from_utf8_lossy(&output.stderr));
+ if !output.status.success() {
+ panic!("Command failed.")
+ }
+}
+
+fn run() {
+ let output = std::process::Command::new("build/p1")
+ .output().unwrap();
+ println!("status: {}", output.status);
+ println!("stdout: {}", String::from_utf8_lossy(&output.stdout));
+ println!("stderr: {}", String::from_utf8_lossy(&output.stderr));
+ if !output.status.success() {
+ panic!("Command failed.")
+ }
}
fn main() {
@@ -38,6 +83,10 @@ fn main() {
if args.command == "build" {
println!("Command: build");
build();
+ } else if args.command == "run" {
+ println!("Command: run");
+ build();
+ run();
} else {
panic!("Unknown command");
}